- Na! Ez egy JÓ utólagos autós fejegység - Minix CP89-HD
- Telekom mobilszolgáltatások
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Mobil flották
- Okosóra és okoskiegészítő topik
- Google Pixel 9 Pro XL - hét szűk esztendő
- Akciófigyelő: Jelentősen olcsóbban nyit az Ulefone új mindenese
- India felől közelít egy 7550 mAh-s Redmi
- VoLTE/VoWiFi
- One mobilszolgáltatások
Új hozzászólás Aktív témák
-
Soak
veterán
válasz
Speeedfire #10703 üzenetére
Ez azt jelenti, hogy ha lesz 10 képem , mindegyik 10 tag-el akkor lesz 100 sorom abban a táblában. Nem fog ez elszállni egy idő után? Nem tudom mi számít soknak, de ha 5.000 user feltölt csak 5 képet és mindegyiken van 5 tag az 125.000 sor. És 5.000 user az nagyon kevés.
Sk8erPeter : És az összekapcsoló táblában úgy gondolod, hogy a két id az foregin key lenne, updatelve? Tehát ha törlök egy taget akkor tölődik a kapcsolat, plusz ha egy képet akkor is. Kicsit jobban rendbe tartja magát.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #10703 üzenetére
Ennél még egy fokkal szebben kellene (de ez még így is egy egyszerű megoldás):
lehetne egy tag tábla, egy képeket nyilvántartó tábla, plusz egy összekapcsoló tábla;
tag táblában: tag id, tag neve
kép táblában: kép id, kép elérési útja, stb.
összekapcsoló táblában: tag id, kép id
Ahhoz meg persze megint külön összekapcsoló táblák kellenek, hogy jelezzük, hogy milyen cikkekhez kapcsolódnak a tagek. Hasonló módon mondjuk cikk id, tag id.
Inkább érdemes több táblát létrehozni, hogy szét legyen választva az, ami logika szerint nem feltétlenül kapcsolódik egymáshoz szorosan.Ennek megvan az az előnye, hogy akár több kép is tartozhat egy taghez. Meg így lazább kapcsolatot teremt a kettő között.
Ezenkívül olyan elképzelés is szóba jöhet, hogy minden tagnek van egy "szülője", ami azt jelzi, hogy milyen kategórián belüli tagekről van szó. Ilyenkor a hierarchia nyilvántartásához össze kell kapcsolni az id-kat egy külön táblában (tag id, parent tag id).
Többnyelvűségnél kicsit tovább is érdemes bonyolítani, hogy magát a fordításokat ismét külön táblában tároljuk, és a taghez legfeljebb fordítási "csomópontot" tárolunk (pl. Drupal is így csinálja).=============
(#10702) Soak :
soha ne tárolj vesszővel elválasztott módon különálló kifejezéseket, mert iszonyatosan kényelmetlen lesz módosítani, törölni is, a query-k is lassúak lesznek, plusz nagyon nehéz a táblákban így keresni. Inkább a fentiekhez hasonló megoldást alkalmazz.
A query-k megírásában meg segítünk, ha elakadtál! -
Sk8erPeter
nagyúr
válasz
Speeedfire #10693 üzenetére
Szívesen!
-
Sk8erPeter
nagyúr
válasz
Speeedfire #10689 üzenetére
Pakold zárójelbe a kivonásokat:
$kor18 = Hirdetes::model()->count('szul_nap >= '.($date-18).'-'.date('m-d').' and szul_nap <= '.($date-24).'-'.date('m-d'));
-
Soak
veterán
válasz
Speeedfire #10689 üzenetére
Most nincs időm átbogarászni, de a DW szintaktikai hibát dobott rá.
-
Peter Kiss
őstag
válasz
Speeedfire #9918 üzenetére
A felsoroltak közül az átláthatóság és a továbbfejleszthetőség a fontos, de már említettem azt is, hogy nem tesztelhető a logika, valamint felborítja az OO elveket némileg*.
*Attól, hogy valaki osztályokat ír, még nem feltétlenül fejleszt objektum-orientált módon. Tudom, én is bejártam az utat.
-
PazsitZ
addikt
válasz
Speeedfire #9905 üzenetére
Ha már bejelntkezett userről van szó miért nem állítod be belépéskor a setState-el hogy a user isAdmin true vagy false. Bár ekkor még implicit nincs lekezelve a belépett kilépett kérdés, de jobb esetben ezt önmagában rbac szabályokkal gondolom lekezeled a controller hívás előtt.
Jah most olvasom csak végig, hogy gyakorlatilag Athlon64+ is ezt javasolja.
(#9911) Athlon64+:
Azért a singleton se ördögtől való dolog. -
Peter Kiss
őstag
válasz
Speeedfire #9910 üzenetére
Static dolgok használata könnyen gyorsan spagetti kódot eredményez, fogalmad sem lesz, mi zajlik a rendszerben, tesztelhetőségről ne is beszéljünk.
A másik, hogy ha ezt a kérés során folyamatosan használod mondjuk 5 alkalommal, akkor ötször fog ez így lefutni?
Kódírás folyamán mindig érdemes lefektetni pár szabályt, amit betartasz, pl.:
static változóba nem rakok semmit, ami állapotot tárol (singleton is kinyírva)
static csak olyan lehet, ami valamilyen service-szel kapcsolatos (nálam ilyen a Path osztály, ez csak a mappák, fájlok neveit machinálja string-ként, az IsAdmin cuccod ilyesmi, de rossz a megközelítés*)Ezeket igyekszem mindig betartani, de a saját kis reflection kiegészítésem miatt én is tárolok dolgokat static változóban, de azok nem is változnak, amíg az osztály maga nem változik meg. Érdemes úgy tekinteni a static elemekre ilyen szempontból, mintha a PHP nem shared nothing elveket vallana.
---
Static cuccokkal van olyan gond, hogy simán keresztülhúzod az OO elveket. Most egy felhasználóról akarod megmondani, hogy admin avagy nem admin úgy, hogy gyakorlatilag kiszeded az egészet a rendeltetési helyéről, hiszen maga a User meg tudja mondani magáról az-e, ahogyan ez látszik is.
A kereted ad hozzáférést egy user nevű field-hez, az mi? Nem tudod egész véletlenül megmondani a rendszernek, hogy oda egy profibb objektumot toljon be? Mert akkor ennyi lenne: Yii::app()->user->admin; és nincs ez a static borzalom benne a rendszerben.Maga a design is lehet rossz: nem egy bit kell arra, hogy admin-e, hanem hegeszteni kell olyan Role rendszert, amibe ezt szépen bele lehet kódolni.
---
Én is használtam Singleton-t, de utána alig bírtam kiírtani a rendszerből, nagyon rossz ötlet. Nem tudom, mennyire jött át a dolog, de ha most nem, majd rájössz.
-
Peter Kiss
őstag
válasz
Speeedfire #9905 üzenetére
Ha már a kód szépségéről volt szó:
<?php
class Auth{
public static function isAdmin() {
if(Yii::app()->isGuest) {
return false;
}
$user = User::model()->findByPk(Yii::app()->user->id);
return $user->admin == 1;
}
}Persze ez a statikus összehányás nem jó ötlet.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9907 üzenetére
Na jó, befejeztem, amúgy nincs mit, és én is köszi.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9905 üzenetére
http://the-echoplex.net/log/php-case-sensitivity
class constructors - ez is case insensitive. Régebben meg ugye az volt a módi, hogy a konstruktor neve egyezik az adott osztály nevével. Most már a "mágikus" __construct()-ot érdemes ugye használni. Na de ettől függetlenül működik a régi módszer is.
Röviden: konstruktornak minősül, mert azonos a neve az osztályéval (case insensitivity), konstruktor meg nem lehet statikus (ahogy a hibaüzenet is elmondja).
Megoldás: adj más nevet a metódusnak, és annyi.Szerk.: jé, most lettem "PH! nagyúr".
Ezt is megértem. Mindenki vendégem egy virtuális sörre.
-
Peter Kiss
őstag
válasz
Speeedfire #9897 üzenetére
A ternary operator nagy királyság, az egyszerűsített még jobb. Persze vigyázni kell, mire használjuk, a tömbös mutatványt már említettem régebben.
-
PazsitZ
addikt
válasz
Speeedfire #9897 üzenetére
Nem hiszem, hogy bármiféle performasz jelentősége lenne, mármint amit bármilyen szinten képes vagy érzékelni.
Most az, hogy tegyük fel egy millás iterációban egy ezreddel lassabb hagyjuk.
Bizonyos esetekben teljesen praktikus dolog. Persze agyatlanul felhalmozni, komplex kifejezéseket közé sűríteni értelmetlen, csak arra jó, hogy olvashatatlanná teszi a kódot.A tömör formája kiváltképp megnyerő szvsz. Bár ez csak 5.3+ feature.
$var = $value ? : $otherValue; -
Sk8erPeter
nagyúr
válasz
Speeedfire #9894 üzenetére
Ez olyan fejlesztőnek az idióta agyalmánya, aki azt hiszi, az a jó programozó, aki minél tömörebben, helyspórolósabban ír minél átláthatatlanabb és követhetetlenebb kódot.
Orbitális nagy sallert érdemel.
-
PazsitZ
addikt
válasz
Speeedfire #9894 üzenetére
Hát, hogy pontosan mi akar lenni az jó kérdés, de minimum erre jó a kód törés indentálás.
De mondjuk ilyen szintű dolgot, már sokkal értelmesebb lenne normál if szerkezetre bontani, De talán leginkább máshogy kezelni a problémát szvsz.(($field->widgetView($profile))
? $field->widgetView($profile)
: CHtml::encode(
(($field->range)
? Profile::range(
$field->range,
$profile->getAttribute($field->varname)
)
: $profile->getAttribute($field->varname)
)
)
) -
Speeedfire
félisten
válasz
Speeedfire #9893 üzenetére
Semmi, megoldva.
Kis érdekesség. Ezt valami nem tudom milyen dev csinálta egyik mondulban, de ez mi akar lenni?
Van itt annyi ? meg :, hogy...(($field->widgetView($profile))?$field->widgetView($profile):CHtml::encode((($field->range)?Profile::range($field->range,$profile->getAttribute($field->varname)):$profile->getAttribute($field->varname))))
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9884 üzenetére
Nem, nem akartam belekötni, de annak semmi értelme nincs, hogy "BOM-olva", mivel pont, hogy a BOM nélküli változat a megfelelő webes használatra...
-
PazsitZ
addikt
válasz
Speeedfire #9876 üzenetére
Szerintem csak egy utf-8 header kellene.
header('Content-type: text/plain; charset=utf-8'); -
Sk8erPeter
nagyúr
válasz
Speeedfire #9835 üzenetére
Ez nem jó? >>> [link] (meg a köv. hsz.)
-
Peter Kiss
őstag
válasz
Speeedfire #9831 üzenetére
A Yii nem tud semmilyen routingos megoldást erre? Degáz...
Gondolok ilyenre:
login route engedélyezve van
minden más route elmegy a maintance oldalra. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9831 üzenetére
"De belépni már nem tudom így"
Pedig ott van a belinkelt függvénynél az erre való megoldás is.lásd ezt:
if (user_is_anonymous()) {
switch ($path) {
case 'user':
// Forward anonymous user to login page.
drupal_goto('user/login');
case 'user/login':
case 'user/password':
// Disable offline mode.
$menu_site_status = MENU_SITE_ONLINE;
break;
default:
if (strpos($path, 'user/reset/') === 0) {
// Disable offline mode.
$menu_site_status = MENU_SITE_ONLINE;
}
break;
}
}Szóval ha az elérési út épp a belépésre szolgáló formé, akkor úgy viselkedik, mintha a site "online" módban lenne.
Persze ezzel óvatosan, figyelj oda, hogy ez esetben ne nyúlkálhasson olyan dologhoz a bejelentkeztető oldalon, amihez nem kellene tudni hozzányúlni offline esetben.===
Szerk.:
"Szerk:
No para, a logincontrollerbe ezt írtam (most már jó):
public function init() {
}"Ezt mind?
És ez miért is megoldás?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9821 üzenetére
"Amúgy van arra mód, hogy ilyenkor minden aktív felhasználót kidobjak az oldalról?"
A legegyszerűbb, ha lecsekkolod, a site "offline" állapotban van-e, ha igen, akkor nyomatsz egy session_destroy()-t.
Szóval konkrétan akkor jelentkezteted ki a felhasználót, amikor ráfrissít az oldalra.
Hogy a Drupal példáját vegyük elő megint, itt egy elég érthető kódrészlet, rögtön a függvény elején, a 7-es verzióból:
user_menu_site_status_alter()if ($menu_site_status == MENU_SITE_OFFLINE) {
// If the site is offline, log out unprivileged users.
if (user_is_logged_in() && !user_access('access site in maintenance mode')) {
module_load_include('pages.inc', 'user', 'user');
user_logout();
}
..............
}Regex:
Szerintem azért, mert a kifejezések közé szóközt tettél, és a kifejezésben a szóköz is releváns karakter. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9819 üzenetére
Admin mindent lát ugyanúgy, akkor is, ha site maintenance mode-ban van.
Ha módosítottad a szöveget, és adminként be vagy jelentkezve, akkor egy éppen aktív sessionöd van, tehát a probléma megoldva, ugyanúgy mindent látsz továbbra is.
Ha mondjuk törlöd a session cookie-t, akkor nyilván újból be kell jelentkezni, tehát a bejelentkező oldalt site maintenance mode ellenére ugyanúgy mutatod, admin vagy egyéb tartalommódosító szerepkörben lévő felhasználó meg is tudja ezt tenni, átlagfelhasználó nem.A Drupal is így működik.
-
válasz
Speeedfire #9812 üzenetére
Továbbá nagyon erősen javasolt a teszelés Phpunit -tal. Tényleg! Valakinek van valami jóféle tutorialja hozzá?
-
válasz
Speeedfire #9809 üzenetére
Nem csak pubon tudod letesztelni. [link]
-
ArchElf
addikt
válasz
Speeedfire #9809 üzenetére
Itt nézz körül.
AE
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9807 üzenetére
Kérj meg 3-400 embert, hogy nézzék már meg egyszerre az oldaladat most.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9804 üzenetére
Hát mittudomén, úgy, hogy "közben módosítottam, nézzed má megfele".
"Érdekes, hogy elég gyorsan lefut az egész itt a gépemen, ahogy beírom a kérést egyből berakja a vízjelet is."
Ez viszont már sokszáz egyszerre aktív felhasználónál már nem biztos, hogy így lesz. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9802 üzenetére
Vazze, a "Szerk2."-t csak most látom, hát szóhattá' vóóna, hogy módosítottad közben még egyszer a hsz.-edet.
Na, hát akkor ezek szerint ez megoldódott. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9800 üzenetére
RewriteRule ^kepek/(.*)$ index.php?r=watermark/watermark&file=$1 [L,QSA]
Ha megnézed a végét:
[L,QSA]==
Nyomatsz az elején RewriteEngine on -t?
Nincs másik RewriteRule, ami előbb illeszkedik, és "elnyomja" ezt?
Mivel írtad, hogy "manuálisan" beírva a címet, tehát RewriteRule nélkül működik, ergo mintha nem lenne hatásos a címátírás. Nem azt kapja meg a Yii, amire átalakítod. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9796 üzenetére
Jó, de a RewriteRule-od is egyezik azzal, amit írtam...?
A Yii-nek a már átalakított request URI-t kéne megkapnia, nem az eredetit.
Ott van a végéről az a két flag is?
Itt még tök más RewriteRule-t írtál, ezért feltételeztem, hogy nem is másoltad át próbaképp, amit írtam. -
válasz
Speeedfire #9796 üzenetére
Routolás ok?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9794 üzenetére
Most nem tudom kipróbálni, de szerintem (most így elsőre ez ugrik be):
http://example.com/index.php?r=watermark/watermark&file=valami.jpg
Erre:RewriteRule ^kepek/(.*)$ index.php?r=watermark/watermark&file=$1 [L,QSA]
Persze az sem mindegy, hogy hívod meg.
Gondolom ilyen:
http://example.com/kepek/valami.jpg -
Sk8erPeter
nagyúr
válasz
Speeedfire #9792 üzenetére
Tudom, csak gondoltam bedobok ilyet is.
Szerk.: amúgy ott vóót a gonosz köcsög smiley ().
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9790 üzenetére
Nem elég, ha IIS-ről van szó.
Egy web.config-os példa:<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" users="" roles="Administrators" />
<add accessType="Deny" users="*" />
</authorization>
</security>
</system.webServer>
</configuration> -
válasz
Speeedfire #9788 üzenetére
Mondom... akkor az eredetit dugd el egy védett mappába. Mondjuk public_html "fölé".
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9786 üzenetére
És az adminnak mi a francnak lenne szüksége a vízjel nélküli képekre?
Előbb szerintem azt gondold át, érdemes-e egyáltalán tökölni vele. Vagy ez a megrendelő kifejezett kérése, vagy mi?Gondolod például, hogy a Vaterán minden képnek megvan a vízjel nélküli és vízjelezett változata is? Nem hiszem, hogy erre erőforrást pazarolnának, és bárkinek is szüksége lenne a vízjel nélküli változatra a Vatera crew-ból...
-
válasz
Speeedfire #9784 üzenetére
Az eredeti fájlokat, szerintem eredeti állapotba "dugd el", a generáltat meg csapd bele a public mappába. Bár gondold át, minek kell később az eredeti kép, hiszen aki feltölti annak meglesz, és valószínű admin.
Szerk.: én a képnek egy uniqid -vel generálnék nevet.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9780 üzenetére
Ja, szerintem mindenképp egyszerűbb lenne előre legenerálni.
De akkor lehet, hogy ügyelned kéne arra is, hogy valami egyedi generált nevet kapjanak a fájlok, ne legyen könnyen megnézhető a kép mondjuk vízjel nélkül is (pl. leegyszerűsítve ne olyan legyen a neve, hogy kep_123_watermarked.png és kep_123.png).
-
Korcsii
őstag
válasz
Speeedfire #9780 üzenetére
Ez már csak ilyen, mindig mérlegelni kell, hogy sebesség vagy tárhely... adatbázisnál is, stb...
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9776 üzenetére
Ezt próbáltam ki még egy-két éve, és ez nagyon jól bevált akkor vízjelezésre:
Asido PHP Image Processing Solution
OOP-s kódja van, szerintem egész jónak tűnik (mondjuk jó rég láttam a kódját, de akkor asszem korrektnek találtam). -
Coyot
őstag
válasz
Speeedfire #9776 üzenetére
Jo
Pont akkor kesseled ha mindegyiket tárolod vagy már feltöltéskor teszel rá vízjelet. Sőt szerintem méret szerint is kötelező kesselni,ne a szerver dolgozzon már vele minden egyes letöltéskor.
-
Coyot
őstag
válasz
Speeedfire #9759 üzenetére
De még mindig nem derült ki hogy vízjelezel htaccess-el, ezt akarom látni
Ezért igazából nincs értelme a kérdésnek. Vízjelhez mindenképp kell php, ahhoz hogy normális linkek legyenek ahhoz meg a htaccess.
Én írtam már pár ilyen cuccot, nekem mindig egy php adja ki a képet, htaccess meg lekezeli a kép eléréseket és dobja a php nak, php eldönti van e jogod a képre, megvan e a kért méretben stb stb.
-
DeltaPower
addikt
válasz
Speeedfire #9771 üzenetére
Ez a linkelt oldal is php-val dolgozik, mindössze megspórol annyi overheadet, hogy nem php-n belül vizsgálja, hogy létezik-e a vízjelezett változat a képből, hanem htaccess-ben. Ha viszont nincs vízjeles változat mentve, akkor ugyanúgy php-vel dolgozza fel.
A vízjel nélküli változat szintén egyszerűen megoldható, kell egy plusz rewriterule az eredeti képek könyvtárába, ami egy php-ra irányít, amiben le tudod csekkolni, hogy be van-e lépve az admin. Ha igen, akkor megy outputra a kép, ha nem akkor 403.
modal szerintem arra gondol, hogy feltöltésnél egy nem publikus könyvtárba rakja a képeket, onnan feldolgozza (átméretezés stb.) és a vízjelezett képeket teszi be a publikus könyvtárba, így megmaradnak az eredetik is.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9771 üzenetére
RewriteRule-lal az is megoldható, hogy a DeltaPower által itt említett ocsmány cím problémája ne merüljön fel, úgy, hogy csak PHP-vel oldod meg.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9769 üzenetére
Ha hirdetéshez megy, miért ne lehetne "ráégetni" a vízjelet?
Minek tök más képet mutatni szerepkör szerint? -
válasz
Speeedfire #9767 üzenetére
Mondjuk ha nem képfeltöltőt csinálsz célszerű kategorizálni? De csak egy "ötlet" volt, rá se ránts.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9764 üzenetére
Jé, pedig korábban ezt a cikket már láttam pár éve.
DE báázeg, ezek szerint "a következő kérésnél már a webszerver szolgálja ki a fájlt, anélkül, hogy a php egyáltalán betöltődne".
Akkor bocsánatot kerék.Most hirtelen nem vágom, hogy ez hogyan is működik, még nem használtam, úgyhogy visszahúzódom a teknőspáncélomba, és utánaolvasok.
-
válasz
Speeedfire #9764 üzenetére
Idézek: "feltöltés után csak egy Galériát készítenék, amiben mind a thumb, mind a normál kép vízjelezett."
Tehát nem. Betenném egy mappába, lehetőleg olyanba ami nem publikus. Majd galériát készítenék belőle. Bár ha csak galériának kell akár, aztán mehet a levesbe.
-
válasz
Speeedfire #9759 üzenetére
Szerintem PHP. Bár én ha megoldanám, feltöltés után csak egy Galériát készítenék, amiben mind a thumb, mind a normál kép vízjelezett.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9759 üzenetére
.htaccess-szel vízjelezni? Hogy mi van? Fejtsd már ki bővebben kérlek.
-
válasz
Speeedfire #9757 üzenetére
Ez esetben fogalmam sincs mit akarsz. A tömb pedig csak egy példa volt.
-
válasz
Speeedfire #9755 üzenetére
Nem értem. Itt most legenerálod a változókat tartalmazó tömböt a nézetnek? Na de hogy értsél: én a nézetben - sablon - szoktam eldönteni, hogy minek mi lesz az "értéke" példának okán rádiógomb és jelölőválasztó doboz esetében. Úgy gondolom - de lehet nincs igazam -, hogy a nézet esetén már nem a legjobb hívogatni függvényeket, oldd meg modelből. Ha nem akkor nem értelek
-
válasz
Speeedfire #9753 üzenetére
Miért ne lenne jobb view -ból? Feleslegesen meghívni egy funkciót. Átadod az adatokat a nézetnek, majd ott eldöntöd mi a sorsa.
Szerintem nem túl jó, ha nézetből vezérlő függvényeket hívogatsz. A nézetet csak "generáld". Az én elképzelésem.
-
válasz
Speeedfire #9750 üzenetére
Ez most a kontrollered egy funkciója? Nem ésszerűbb ha a nézetben lövöd be? Csinálsz rá három variációt, és azt nyomod ki ami kell.
return '<input type="radio" name="Profil" '.$checked.' value="'.$data->id.'">';
ez így nagyon buta[ Módosította: Ndruu ]
-
Speeedfire
félisten
válasz
Speeedfire #9750 üzenetére
Nem téma, így is jó.
-
PazsitZ
addikt
válasz
Speeedfire #9725 üzenetére
Mondjuk tegyük fel egy postot akarsz törölni.
Akkor mondjuk főleg ha külön van bontva a post kezelés modulra, tökéletesen jól megvalósítható a post module-ban a törlés funkció, amit azután a modul betöltésével (ami behúzza a szükséges modulokat is automatikusan)Vagy másik megoldás lehet, hogy pl. a post module delete metódusát felülírod. Így a post törlés elintézi a járulékos adat törlését is. Ez akár tranzakcióba is rakható természetesen.
public function delete()
{
$postInfo = PostInfo::model()->findByPk($this->post_id);
if ($postInfo->delete()) {
parent::delete();
}
} -
Peter Kiss
őstag
válasz
Speeedfire #9725 üzenetére
Közös ős Controller?
-
válasz
Speeedfire #9725 üzenetére
HMVC?! Igaz nem Yii hanem Kohana de itt egy példa: [link]. Szerintem ugyan úgy működik, csak mások az osztály és metódus nevek. A lényeg, hogy meghívod a törlés kérelmet
(Ha jól értem.)
class Controller_Static extends Controller
{
/**
* The following action loads page.
* A sub request is called to load a dynamic menu
*/
public function action_page()
{
$page_name = Request::instance()->param('page');
$this->request->response = View::factory('page/'.$page_name)
->bind('menu', $menu);
$menu = Request::factory('static/menu')->execute();
}
public function action_menu()
{
$page_name = Request::instance()->param('page');
$this->request->response = View::factory('page/menu')
->bind('links', $links);
$links = Kohana::config('menu')->$page_name;
}
}Itt most a $menu = Request::factory('static/menu')->execute(); rész az érdekes. Meghívja a static vezérlő menu akcióját
Más: rajtam kívül más is foglalkozik a Kohanával?
Szerk.: itt van még egy érdekes olvasmány [link]
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9719 üzenetére
Hátha segít a hivatalos oldal doksija azontúl, amiket PazsitZ az imént leírt:
NetBeans IDE and Yii projects -
PazsitZ
addikt
válasz
Speeedfire #9719 üzenetére
Igen, a Yii sajnos nem úgy van megírva, hogy eléggé támogassa az autocomplete lehetőségeket.
Kommentezéssel tudsz segíteni pl. query-k esetében pl. a find-os fgv-ek ugye csak CActiveRecord-al térnek vissza, nem a konkrét modellel. Így az ősosztály CActiveRecord fgv-eket ki tudja egészíteni, de a konkrét model tagokat viszont nem.
A Yii::app()->getModule('module'); is csak általános CModule-al tér vissza.Az ilyen változók esetén a kommentelés segíthet.
$user = User::model()->findByPk(1); /* @var $user User */
$userModule = Yii::app()->getModule('user'); /* @var $userModule UserModule */
Ezután már ki fogja tudni egészíteni, ha a függvényeket is annotációs phpdoc-al látod el.Fontos, hogy az értékadás után legyen (ha elé teszed ki a változó deklarálás ugye felülírja a komment változó hint-et) és csak /* -al kezd az ilyen kommenteket.
Ha osztályt, osztályváltozót, metódus akarsz kommenttel ellátni, ott már a /** alakkal kezdődő komment kell! -
Peter Kiss
őstag
válasz
Speeedfire #9717 üzenetére
Mi az, amire nem megy?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9714 üzenetére
"Remélem a jövőben a php is jelezni fog majd, ha ilyen hibákat vétek."
Megoldás: fejlesztés közben:PHP < 5.4.0:
php.ini:
error_reporting = E_ALL | E_STRICT
display_errors = On
display_startup_errors = OnPHP >= 5.4.0 ("5.4.0: E_STRICT became part of E_ALL.", [link]):
php.ini:
error_reporting = E_ALL
display_errors = On
display_startup_errors = OnPersze mindezt kódból is lehet vezérelni, akár egy index.php elejére vagy konfigfájlba rakott megfelelő error_reporting(), meg ini_set() hívásokkal: display_errors, display_startup_errors. Így akár feltételtől is függővé teheted a beállításokat, pl. egy booleannel jelezve, hogy épp fejlesztési fázisban vagy-e vagy sem.
-
PazsitZ
addikt
válasz
Speeedfire #9712 üzenetére
Persze
A Yii-nél a model() egy static osztálypéldáyosítás.
lásd pl. singleton pattern esetén. is static hívással pédányosítod az osztályt (persze ott a lényeg, hogy mindig csak egy objektum példány létezik).Lényegében ez egy shortcut. a példádban is első eset 2 sor második egy sor és rögtön fűzhető a query. sőt, mivel mindegyik query építő AR model fgv. az objektummal önmagával tér vissza így szépen fűzhetőek a hívások.
Modelnev::model()
->with('masikTabla')
-> ...
->findbypk(2);PHP 5.4-től viszont már lehet többek között majd ezt is:
(new Modelnev)->findbypk(2);De végiggondolva a static fgv. hívás valahol jogosan megengedhető akár példánycontext felől is.
$keresendo_elem = new Modelnev;
$keresendo_elem->model();
Modelnev::model();Mivel a static fgv nem függ az objektumtól miért ne lehetne hívni objektumból?
Visszafele nem igaz, mert egy objektum állapotától adattagjaitól függő metódust meghívsz egy osztályra, ami nem példány, akkor ugye mit kezdjen a method a nem létező példánytagok nélkül? -
PazsitZ
addikt
válasz
Speeedfire #9709 üzenetére
Nem static függvényt nem hívhatsz static-ként.
Ha nem használsz semmi onjektum adattagot vagy nem static hívást, akkor viszont nyugodtan static-ra teheted a fgv-t.Fordítva működik a dolog úgy rémlik.
Példányosított onjektumpéldányból hívhatsz static fgv.-t.class Bar{
public static function staticfgv(){}
public function objMethod(){}
}
$foo = new Bar();
$foo->objMethod();
$foo->staticfgv();
// vagy
Bar::staticfgv();De végiggondolva a static fgv. hívás valahol jogosan megengedhető akár példánycontext felől is.
Míg fordítva nem, mivel optimális esetben a fgv. igényel objektumadattagokat. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9709 üzenetére
Akkor az az összes kód egy szar.
Ne hallgass rájuk. Ilyenért egy normális nyelvben alapból egy ordas nagy hibát kapnál az orcádba.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9707 üzenetére
Akkor ez van:
Strict Standards: Non-static method AngolClass::angol() should not be called statically in ... on line ...
Fatal error: Using $this when not in object context in ... on line ...A nem statikus függvényt ne akard statikusként meghívni...
Elég logikus.
Ez a szar a PHP-ben, hogy enged mindenféle gányolást, itt mondjuk pont nem működik a $this miatt, és kapsz egy fatal errort, de egyébként ha a $this nem lenne benne, nem szállna el... -
Sk8erPeter
nagyúr
válasz
Speeedfire #9705 üzenetére
Azt kitaláltam, hogy arra akarsz célozni kissé pongyolán fogalmazva, hogy valamiért nem működnek a címek azzal, hogy "nem lehet", de épp azért kérdeztem vissza, mert ez ebben a formában értelmetlen - nem is derül ki, hogy pl. nálad szóköz használata esetén milyen hibajelenség fordult elő.
Vagy a böngésző, vagy a szerver kódolja/dekódolja rosszul a whitespace karaktereket. De egy normális böngészővel+normális szerverrel nem kellene, hogy ilyen gond legyen."És ha mind a 2 esetet használom?"
Milyen 2 "esetet"....? Látom szereted, ha visszakérdeznek a kérdéseidre. -
Alukard
senior tag
válasz
Speeedfire #9688 üzenetére
Használd egészséggel -> [link]
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9695 üzenetére
Legalább következetesen Karektert írtál.
Amúgy nem válaszoltál, mit értesz azalatt, hogy "nem lehet" szóköz...Ja, még egy a kódoddal kapcs.:
echo AngolClass::angol("sztring");
ebben az esetben, ha így hívod meg, az angol() metódusnak statikusnak kéne lennie... -
varydave
tag
válasz
Speeedfire #9692 üzenetére
Én még mindig inkább a spec. karakterek "kivételét" preferálom. Ha netán valakinek szüksége lenne ilyesmire:
/**
*
* $url = new url("helló világ ez az első szép url-em");
* var_dump($url->_output);
*
* string(34) "hello-vilag-ez-az-elso-szep-url-em"
*/class url {
public $_output;
private $_str;
private $_separator;/**
*
* @param string $str - nyers url
* @param string $separator - szoelvalaszto karakter
*/
public function __construct($str, $separator = "dash") {
$this->_str = $str;
$this->_separator = $separator;$this->url_title();
}/**
* szep url generalas
* @return string
*/
protected function url_title() {if ($this->_separator == 'dash')
{
$search = '_';
$replace = '-';
} else {
$search = '-';
$replace = '_';
}$str = strtolower($this->_str);
$before = array( "á", "é", "ő", "ö", "ó", "ú", "ű", "ü", "í" );
$after = array( "a", "e", "o", "o", "o", "u", "u", "u", "i" );$str = str_replace( $before, $after, $str );
$trans = array(
'&\#\d+?;' => '',
'&\S+?;' => '',
'\s+' => $replace,
'[^a-z0-9\-\._]' => '',
$replace . '+' => $replace,
$replace . '$' => $replace,
'^' . $replace => $replace,
'\.+$' => ''
);$str = strip_tags($str);
foreach ( $trans as $key => $val )
{
$str = preg_replace( "#" . $key . "#i", $val, $str );
}return $this->_output = strtolower( trim ( trim ( stripslashes ( $str ) ), $replace ) );
}
}
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9692 üzenetére
Mi az, hogy "nem lehet" szóköz?
Szerintem egyébként speckó karaktereket azért is érdemes helyettesíteni, mert régebbi böngészőknek parája lehet vele, meg vannak programok, amik az átalakított URL-eket az ékezetek vagy más karakterek mentén "csapják le" (még mai napig), de persze az is igaz, hogy az ékezetes karakterek egyre elfogadottabbak. Itt van egy téma róla: [link]
Van egy ilyen felvetés még 2009-ből:
"Considering URLs with accents often tend to end up looking like this :
http://fr.wikipedia.org/wiki/%C3%89l%C3%A9phant
...which is not that nice... I think we'll still be using de-accented URLs for some time.Though, things should get better, as accented URLs are now accepted by web browsers, it seems."
A böngésző átalakítja a címeket - pl. ha ezt böngészed, és kimásolod a címsorból az URL-t, akkor ezt a randaságot kapod meg - DE azt nézem, hogy Google-ben, amennyiben tartalmaz a találatban az URL ékezeteket, akkor tök normálisan látszik az URL (a megfelelő ékezetekkel), szóval SEO szempontjából lehet, hogy még jobb is, ezt nem tudom...Mindenesetre a szóköz és ehhez hasonló speckó karakterek (kivétel az ékezeteket, kötőjeleket, alulvonásokat, pluszjelet) biztos, hogy a helyettesítendőek közé tartoznak (szvsz még a pont is, amennyiben nem valós fájl kiterjesztése kezdődik ennek mentén).
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9690 üzenetére
Mi az oka, hogy engedélyezve van speciális karaktereket tartalmazó címek/fájlnevek használata (a végleges URL-ben)?
-
Jim-Y
veterán
válasz
Speeedfire #9688 üzenetére
Nincs, a konvertálást a böngésző végzi, szóközökkel nem tudná értelmezni a címet. üdv
De, ha pl kódból nyitsz meg egy oldalt, akkor kódban megadhatod szóközökkel is, azt neked automatikusan át fogja konvertálni. üdvHa visszafelé akarod a dolgot csinálni, tehát egy olyan url-t akarsz olvashatóvá tenni amiben speckó jelek vannak, akkor stringhelyettesítés, szerintem tuti van olyan kód, vagy program ami megcsinálja, de akár te is megírhatod.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9665 üzenetére
Milyen "AR"?
-
Alukard
senior tag
válasz
Speeedfire #9659 üzenetére
Nem PHP, de nekem ez megoldotta a tábla rendezési nyűgjeimet...
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9659 üzenetére
Hogy itt meg tudjuk mondani, mi a gond, látnunk kéne a query-t.
-
PazsitZ
addikt
válasz
Speeedfire #9643 üzenetére
A tortoisesvn verziód amúgy milyen, nem lehet, hogy az a túl régi?
-
válasz
Speeedfire #9641 üzenetére
Hatalmas biztonsági rész
, akkor nem tudom, lehet szimplán béna az updatere a NetBeans -nek, vagy nem néz csak főverziót. Passz. Eclipse & PhpStorm ftw!
-
válasz
Speeedfire #9639 üzenetére
Megoldottam!
Próbáld meg Rendszergazdaként, lehet az akaszt be, a kalapom teszem rá, hogy a Programfájlok (x86) mappába telepítetted!
-
Siriusb
veterán
válasz
Speeedfire #9635 üzenetére
Windowst vagy linux-ot használsz? Nekem tegnap frissült 711-ről 712-re. Persze linuxon.
Szerintem annyit piszkáltad már az svn miatt, teljesen megkergült.
-
ArchElf
addikt
válasz
Speeedfire #9635 üzenetére
Ha nem megy IDE-ből, esetleg próbáld meg kézzel (Tortoise)...
AE
-
ArchElf
addikt
válasz
Speeedfire #9632 üzenetére
Mármint NetBeans tudja alapból az SVN checkout-ot, vagy valami kézikus módon?
AE
-
válasz
Speeedfire #9632 üzenetére
Itt rögtön 7.1.2 -t ír
-
válasz
Speeedfire #9627 üzenetére
Butus kérdés, de a NetBeans -t frissítetted már?
-
ArchElf
addikt
válasz
Speeedfire #9627 üzenetére
Mivel akarod feltlteni?
AE
-
InfiniteReality
őstag
válasz
Speeedfire #9615 üzenetére
hmailserver-t? Igen jó (ingyenes) levelezőszerver Windowsra, ha valaki normális (nem spamelő) szolgáltatást akar, és szeretné is megvédeni magát a spamtől.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9615 üzenetére
Örülök, hogy végül csak megértetted, csak előtte gyorsan belekötöttél, ha már ott voltál.
Most már ezek szerint nem "a tömbön kívül fog lenni". -
InfiniteReality
őstag
válasz
Speeedfire #9607 üzenetére
Na igen, de a hmailservernek nem tetszett ez a WAMP-os dolog. Hiába mutattam rá a wampmysql service-re, adtam meg usernevet jelszót, nem működött. Érdekes módon AppServ-vel megy (az nem túr össze semmit, nem nevez át feleslegesen semmit, csak felteszi az Apache, php, mysql triumvirátust a gépre. Egyetlen hátránya, hogy úgytűnik 2010 óta discontinued
)
Elvileg az apache-ot (2.2 -> 2.2.22) és a php-t (5.2 -> 5.3) problémamentesen fel lehet frissiteni a VC6 helyett a VC9 verzióra, csupán a file-ok felülírásával). A Mysql-t nem szándékozom egyelőre bántani. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9612 üzenetére
Nem tudom, mit nem értesz...
A name-nek egyeznie kell radio esetén, ha azt akarod, hogy összetartozzanak az elemek, és közöttük lehessen váltogatni, ne szeparálva legyenek (hogy mindegyik külön kiválasztható legyen, pont ami a problémád...).
Azzal meg nem értem, mi bajod van, hogy ha egyetlen elemet szeretnél választani úgyis a sok közül, akkor a value attribútumba adod át a megfelelő azonosító értékét, ezt pedig megkapod szerveroldalon..."Ja én a checked-et használtam."
Kár, hogy attól még szerveroldalra nem megy át a value, ha nincs megadva lószar sem. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9610 üzenetére
Hát akkor tedd azonossá a name attribútumot...
Csak egy példa a sok lehetséges közül a kódod alapján (value amúgy is lemaradt nálad):
<input type="radio" name="elemek[allapot]" value="'.$data->id.'" />Ha csekkolni akarod az értékét pl. jQuery-vel, akkor példa:
$('button').click(function() {
var checked_val = $('input:radio[name="elemek[allapot]"]:checked').val();
alert("Checked value: "+checked_val);
}); -
Sk8erPeter
nagyúr
válasz
Speeedfire #9608 üzenetére
A lényeg, hogy a végeredményben látszó name attribútum egyezzen, ha azt szeretnéd, hogy "összetartozzanak" az elemek.
Példa:http://jsfiddle.net/Sk8erPeter/U6zUA/
Az alsó sorban más a name attribútum, így mindegyik külön-külön kiválasztható. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9604 üzenetére
"Service nevek alatt mit értesz?"
Win+R - services.msc
Itt a Name oszlopban elég sok service-nek a nevét láthatod...
Ha beleklattyogsz a service-ekbe, akkor van egy "Service name" meg egy "Display name". A services.msc oszlopaiban nyilván az utóbbit láthatod. -
InfiniteReality
őstag
válasz
Speeedfire #9583 üzenetére
Ja, csak a programok egy része valahogy inkompatibilis vele. Pl a hmailserver-rel sehogy nem sikerült összehozni. Ennek ellenére a már nem folytatott AppServ cuccal simán megy. Úgyhogy az AppServ alapon fogom kézzel felfrissiteni a php-t és az apache-ot, de a WAMPServer nekem nagy csalódás.
Egyáltalán minek kell a service-ek neveit megváltoztatni?! -
PazsitZ
addikt
válasz
Speeedfire #9592 üzenetére
Egyébként ott van a link a megoldáshoz.
Egy script, amit le kellene futattnod a mivel az új verzióban megváltozott a metadata fájl. -
Siriusb
veterán
válasz
Speeedfire #9597 üzenetére
És ez segíthet: [link] ?
-
Siriusb
veterán
válasz
Speeedfire #9595 üzenetére
Esetleg próbáld meg törölni a .svn könyvtárat.
Szerk: itt egy link is.
-
Tele von Zsinór
őstag
válasz
Speeedfire #9592 üzenetére
A pluginek közt tudod letiltani vagy eltávolítani.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9560 üzenetére
^\+\d{2}-\d{2}-\d{3}-\d{4}$
Tesztelheted itt:
Regex Tester Online -
Lacces
őstag
válasz
Speeedfire #9550 üzenetére
amúgy a kettő nem ekvivalens egymással?
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! Gigabyte B450 R7 5700X 32GB DDR4 512GB SSD RX 6700XT 12GB Rampage SHIVA be quiet! 650W
- Honor 9X Lite 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- RAKTÁRSÖPRÉS!!! - Videókártyák, Monitorok, Notebookok, Stb. - Szaküzletből! Számlával!
- Samsung Galaxy A13 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged