fejlesztés - 2006 március - 19 megfelelő bejegyzés

Mutass mindent

Jelöld be, hogy főbb mely kategóriákat akarod olvasni, vagy ha csak egyet: kattints a nevére.


Haszprus

Fejlett url-konvertálás

©   Haszprus   |   fejlesztés howto

Ír az olvasó egy hosszú url-t. Nem szeretjük, mert megtörik, elcseszi a designt, akármi. Szeretnénk, ha a plain text url-ből egy link lenne.

Namost amit nem láttam még máshol, persze ettől még létezhet, hogy ugyan ne az url kerüljön már az

<a></a> jelek közé, hanem a hivatkozott oldal neve, azaz a title tag…

Így fordulhat elő, hogy ha mostantól beírjátok plain textként a hozzászólásotokba pl. azt, hogy

https://blog.haszprus.hu/komment.php?k=2350
, akkor erre az fog megjelenni, hogy
Haszprus überblog - Generikus konténer, objektumorientált hozzászólások

A dolog természetesen nemcsak a blogon belüli címekre működik, így pl. elő tudja állítani az alábbi linket is szimplán az url-ből:

keresek a google-ben jóóóól - Google keresés

És lássátok, hogy ez jó, mert az esetek 99%-ában még az [url] bbcode használatát is feleslegessé teszi.

Haszprus

Mennyi ideig generálja a szerver a lapodat?

©   Haszprus   |   fejlesztés howto php

Ha le akarod mérni, tedd be a lapod elejére ezt:

ob_start();

function microtime_float() {
   list($usec, $sec) = explode(' ', microtime());
   return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

A végére pedig ezt:

$time_end = microtime_float();
$time = $time_end - $time_start;

echo 'Lapgenerálás: ' . $time . 'mp';

ob_end_flush();

Ez a kód azért jó, mert az ob_startnak köszönhetően nem számítja bele az időbe a lap letöltődését. Enélkül amit kapnál, az függne a szabad sávszélességedtől. És az nem lenne jó.

(A kód nagyrészt innen származik, de a dolog értelmét szerintem az ob_start - ob_end_flush kiegészítés adja, anélkül a script helyett szinte a saját sávszélességedet méred.)

Haszprus

Kommentkereső

©   Haszprus   |   fejlesztés

Nos van kommentkereső 0.01. Objektumorientáció & smarty rule. Most ezzel akár lehetne blog 2.6 is, de nem lesz

A cucc iszonyatosan prealpha egyébként, olyan értelemben hogy csak egyszavas kereséseket vesz be és nem kezeli rendesen az ékezeteket.

Hogy lehet megmondani a mysql4-nek, hogy ha a halál szóra keresek, akkor ne adja ki pl. a hálál-t?

Haszprus

Smarty bejegyzésobjektumok (halmozom az élvezeteket)

©   Haszprus   |   fejlesztés

Jesz, thatz true, a bejegyzések smartyból jönnek. A főoldalon, az archívumban, a komment.php-ben. Ja nemcsak ez igaz, hanem hogy bevezettem a Post objektumot, vmint a Posts konténert, persze a Containerből származtatva, de már napok óta, csak eddig békében pihentek a háttérben meghívatlanul.

Ha valami bugzik, szóljatok. Ezek megint nem kicsi változtatások, belül.

Viszont most már 115 sor az egy darab bejegyzéshez tartozó tpl… Igaz, lekezel egy csomó mindent amit eddig az index.php csinált, és kezeli a rövid valamint hosszú bejegyzésformátumot is (előbbire ld. archívum, csak címeket).

Ismét megköszönöm mindenkinek, akik segítettek a dolgokban. Thx 2 Tamás, nrg, Hedge, mefi, sorry ha valaki kimaradt

Ma 48 komment volt a blogon az enyémeken kívül.

Haszprus

Application logic vs megjelenítési réteg

©   Haszprus   |   fejlesztés

A főoldalon mindig annyi napon írt bejegyzés jelenik meg, ahányat kiválasztasz. Például március 21 van, 4 napot akarsz látni, de 19-20-án nem volt bejegyzés, akkor ezeket a dátumokat fogja megjeleníteni a blog: március 21, 18, 17, 16. Ez azért van, hogy ne kaphass üres főoldalt, mert az kurva hülyén néz ki.
(Ennek a megvalósítása egyébként annyiból áll hogy picit tágabb dátumhatárral hajtom végre a lekérdezést, és abbahagyom a megjelenítést ha már elértem a kellő napszámot. Szvsz nem különösebben erőforrásigényes, hiszen csak néhány plusz row sql-ből, amiknek nagyrésze nem jut el még egy mysql_fetch_array-ig sem.)

Namost ott tartok hogy smartyban már megvan a postok template-je, zsír ugyanúgy néz ki mint az onlyphp megoldás (leszámítva hogy pillanatnyilag elvetettem a kapcsolódó bejegyzések feature-t), de kezdjem a template-ben számolgatni hogy hány napi postot jelenítettem meg eddig? Ez nem a megjelenítési réteg feladata lenne szerintem…

Egyébként nem érzem a Smarty által nyújtott tiszta kódot. Pl. a bejegyzések tpl-je 50 sor, mert tele van mindenféle if-else-ekkel annak megfelelően hogy hány komment érkezett, trustedonly-e a bejegyzés, trusted-e a júzer, adminisztrátor-e a júzer, kategóriák ciklusa, van-e címe a bejegyzésnek, ki kell-e írni a dátumot (vagy már egyszer kiírtuk, amit ráadásul a megjelenítési rétegben kell assignolnom!)… És mindemellett a php-ben kőkeményen megvannak a háttérmunkálatok, smiley-konvertálás, magyar dátumformátum előállítása… Igen, a Smartyban is van valami dátumformátum stuff, de asszem az nem támogatja a hónapnevek szabad alakítását. Vagy igen? Ennek egyrészt utánanézek ha hazajöttem, másrészt ha valaki vágja akkor belökheti, ezzel időt spórolva nekem

Szóval nem érzem azt a tisztább szárazabb érzést amit egy template rendszer elvileg ígér. Túl sokat reméltem a külön megjelenítési rétegtől, vagy valami egyéb okozza a problémát?

A posts.tpl-t el lehet kérni tőlem tanulmányozásra, véleményezésre.

Haszprus

Smarty a blog alatt -> blog 2.5

©   Haszprus   |   blog fejlesztés version history

A kommentek (kizárólag maguk a hozzászólások) mostantól Smarty sablonból jelennek meg. Goodbye $comments->showHTML().

Asszem az utóbbi hetekben elég sokat mozdultam előre fejlesztés terén. Ezúton is thx azon személyeknek, akik ebben segítséget, vagy inspirációt nyújtottak

Ha valami bugot tapasztaltok, nyugodtan szóljatok, mert iszonyat sokmindent írtam át mostanság.

Update 14:33: ja tképpen a smarty bevezetése elég jelentős újítás, úgyhogy ez már a blog 2.5, miközben a 2.4-be kitűzött változtatásokat (oo) még be se fejeztem

Haszprus

Smarty

©   Haszprus   |   fejlesztés

Smarty megismerve. És csináltam is egy tesztlapot ahol a kommenteket már gyönyörűségesen az oo cuccaimból nyerem ki (két új getArray fv befigyelt), és smartyval formázom meg Nem publikus mert nem fejeztem be és mosmá megyek slp.

Update 12:34: hát nem tudom, vegyes érzelmeim vannak a smartyval kapcsolatban. Jobban mondva elég negatívak. Mert a kommentek megjelenítésének a kódja rondább lett, mint php-ben. Legalábbis az én szememnek. Meg a dreamweaverének is, mert egy helyen bele is zavarodott a színezésbe.

Azt jól érzékelem, hogy nem tudok olyan értéket assignolni egy változóhoz, amiben egyenlőségjel van? {assign var=... value=...}

Haszprus

Hozzászólások, és ami mögöttük van

©   Haszprus   |   fejlesztés howto php
A komment.php-ben a kommenteket immáron OO módon szolgálja ki a blog. Ami emögött van:
class Container {
   var $elements
   var $pointer
   var $length
   function Container()
   function addElement($element)
   function length()
   function getElement($i)
   function getLastElement()
   function getFirstElement()
   function getNextElement()
   function removeElement()
   function setPointer($i)
   function forAll($function)
}

class Comments extends Container {
   var $picOfUser
   function Comments()
   function getCommentsByPostId($post_id, $order, $from, $to)
   function showHTML()
}

class Comment {
   var $row
   function Comment($row)
   function showHTML()
}

A hajnal óta elkövetett változtatásokat jelöltem. Logikusan a showHTML mellé kerülni fog egy-egy showRSS function.

Haszprus

Generikus konténer, objektumorientált hozzászólások

©   Haszprus   |   fejlesztés howto php
ha igazán OO akarsz lenni, akkor egy komment egy class, aztán csinálsz egy generikus container vagy lista class-t, és származtatsz belőle egy olyan class-t, amely csak kommenteket tartalmazhat
Tamás - Obi kérdés

Megvalósítva mindhárom (Preview Release 1) A megjelenítést még nem írtam meg szépre, de ott már csak néhány változót kell lecserélni. Ami eddig kész:

class Container {
   var $elements
   var $pointer
   var $length
   function Container()
   function addElement($element)
   function length()
   function getElement($i)
   function getNextElement()
   function removeElement()
   function setPointer($i)
}

class Comments extends Container {
   function Comments()
   function getCommentsByPostId($post_id)
   function show()
}

class Comment {
   var $row
   function Comment($row)
   function show()
}

Ez utóbbi show() még tiszta bug, értelemszerűen.

Haszprus

Elfelejtett jelszó

©   Haszprus   |   fejlesztés

Igazából azért nincs a blogon olyan feature, hogy kiküldjük az elfelejtett jelszavadat, mert… nos ilyen nyilván nincs, mert a jelszavadat nem tároljuk, csak egy md5 hasht. Ha nem tudod mi az, de érdekel, akkor annyit elég tudnod, hogy ez egy olyan karaktersorozat amiből a jelszavad nem található ki, viszont ez bármikor származtatható a jelszavadból.

Lehetne viszont ugye új jelszót generáló cucc. Többlépcsős, hogy ne változtatgathassa mindenki mindenkinek a jelszavát. (Vagyis a kiküldött emailben még csak egy link vagy valami hasonló lenne, aminek a hatására változik meg a jelszó. Vagy amivel megváltoztathatja a júzer a jelszót. Ez részletkérdés.)

Egy dolgot nagyon utálok ezekben a dolgokban, éspedig azt, hogy lehet hogy nem emlékszem a felhasználói nevemre, lehet hogy nem emlékszem a megadott email címemre, és ez utóbbi eset elég kellemetlen tud lenni, ha azt a címet már nem is használom. Kiírni meg nem írhatjuk ki, hogy hova lett elküldve a levél, hiszen az privacy-sértő lenne.

Na mindegy, mindezen problémák ellenére valamikor csinálok egy fent vázolt, többlépcsős, elfelejtett jelszó esetén alkalmazható tréfát.

Update 20:35: Megszületett a megoldás: elfelejtetted a jelszavad?

Haszprus

Google Search Engine Optimization

©   Haszprus   |   fejlesztés howto

PHP-levlistáról egy gyöngyszem:

IRCQuote fight! In the ring:

QHogy lehetne előrébb kerülni a google találati listában? egyik ügyfelem ezt kéri tőlem... technikai megvalósítás érdekelne...
Avan PHP ugye?
set_google_pos($pos, $keyword);

LOL

Haszprus

Obi kérdés

©   Haszprus   |   fejlesztés howto

Milyen classt csináljak a kommentekhez? Class Comments, vagy Class Comment? Azaz minden egyes komment legyen egy class, vagy a komment.php alján található kommentlista legyen egy class?

Ezen filózok jóideje és nem tudom eldönteni. Experts, help plz.

nemtok aludni bazer

Haszprus

Születésnapos dumagépek

©   Haszprus   |   fejlesztés howto sql

Shamalt sajnos ehhez már túl öreg, de ha nem maradt volna le róla, akkor így indulna a Születésnapos dumagépek doboz, a szemléltetés kedvéért.

Ez a feature csak a nagyobb topicokban és a megfigyelőközpontban fog titeket rettegésben tartani.

A doboz mögött egyébként egy osztály, némi adatbázis, egy html fájl, és egy csodaszép 13 soros sql lekérdezés áll. Beágyazott lekérdezések rule! Istenem, mennyire jó hogy mysql verziót váltottunk + szglab5 rulez da world, akármekkora szopatás is!

select   u_id, u_pubnick, round(fage) as age, comment_count
from     (
         select   u_id, u_pubnick, u_regged, u_lastload,
                  (to_days(now()) - to_days(u_regged))/365 as fage,
                  count(k_id) as comment_count
         from     hb_users, hb_komment
         where    to_days(now()) - to_days(u_regged) between 355 and 370
              and k_uid = u_id
         group by k_uid
         ) as subquery
where    to_days(now()) - to_days(u_lastload) < 365 
      or comment_count >= 2
order by age desc

Egész biztos vagyok benne, hogy a fenti sql query több érdeklődő olvasómnak is rejteget újdonságokat, ezért remélem nem haragusztok, hogy beidéztem

Haszprus

Webconf 2006

©   Haszprus   |   fejlesztés

Egyelőre jelentkeztem (márc 18), de még erősen mérlegelési stádiumban van a dolog. (20-án ugye számelm szig, 24-én digit szig, és még ha valamit kihagyok, akkor is van elég teendőm.)

Update 16:10: nem, nem jövök, azt hiszem az egész hetemet inkább rászánom a hétfői számelm szigorlatra, mivel csak most kezdek neki.

Update 2006. már. 15. 16:05: no ezt lemondtam, nincs kedvem.

Haszprus

Kapcsolódó bejegyzések

©   Haszprus   |   fejlesztés

Igen. Ezt egy rendkívül advanced - 15 soros, ha érdekel valakit - mysql lekérdezés valósítja meg, aminek módját néhány napja az szglab5 adatbázisok jegyzetének sql fejezetéből merítettem. Nem utolsó sorban azért csak most, mert csak most vált lehetővé ezen sql elemek használata a szerveren (tudtommal). Emeletes csúcskirály. Fejlődünk

A lekérdezés csak akkor megy végbe, ha a bejegyzés úgy tudja magáról, hogy vannak hozzá kötődő egyéb bejegyzések. Máskülönben kicsit necces lenne.

Egyébként az sql fejezetet roppant hasznosnak és jónak (!) találtam.

Update 23:44: valószínűleg valamit majd optimalizálok ezen a témán. A lekérdezés jó, de az adatbázis-hátteret kicsit átszervezem, a 15 pedig egy másik funcionbe költözik, és helyébe kevesebb fog kerülni. Vagy mindebből semmi se lesz, hiszen ilyen kapcsolódó bejegyzéses dobozkákból se lesz sok.

Update 2006. már. 04. 16:04: átírva, másképp működik.

Haszprus

Badwords

©   Haszprus   |   fejlesztés

Vannak bizonyos stílusú hozzászólások, amiket nem szívesen olvasgatok. Első fázisban megjelentek a várakoztatott kommentek. Második fázisban a film-bejegyzésekhez már nem lehetett regisztrálatlanul hozzászólni (legalábbis első ránézésre). Kénytelen vagyok azonban egy harmadik fázist is létrehozni, mert úgy látszik a Pillangóhatás tévé-beli szereplése ide vonzotta a site-omra a magyar internet sötét söpredékét, akiknek azért arra mégis futotta, hogy másik topicban írják le véleményüket, illetve magukat.

Badwords lista - a harmadik fázis. Működése: ha a bejelentkezetlen felhasználók hozzászólásában legalább három szalonképtelen szót talál a script, a hozzászólás nem waiting, hanem deleted státuszba megy, anélkül hogy értesülnék róla. Mert egyszerűen nem akarok ilyen szennyet olvasgatni, nem véletlenül nem lehet - látszólag - a filmekhez hozzászólni regisztrálatlanul.