Jump to content
php.lv forumi

black

Reģistrētie lietotāji
  • Posts

    421
  • Joined

  • Last visited

Posts posted by black

  1. Koko paldies par kveriju. Tā problēma ir, ka viņš neatbalsta n-līmeņu kategorijas - šis varētu strādāt, ja kategorijas būtu tikai 1-2 līmeņos. Ti, tagad viņš atgrieztu produktu skaitu zemākā līmeņa kategorijās, bet man vajag listu, kas satur augstākā līmeņa kategorijas.

     

    Cucumber domu īsti nesapratu.

  2. Hello,

     

    Es nevaru izdomāt, ko lai iesāk ar kategoriju strukūru. Man ir interneta veikals, kurā ir n līmeņu kategorijas. Ir arī produkti, 1-N links uz kategoriju tabulu. Problēma ir uztaisīt kategoriju browseri, kas katrā kategorijā parādītu produktu skaitu, ieskaitot arī apakškategorijās esošos produktus.

     

    Rezultātam vajadzētu izskatīties šādi:

     

    Velosipēdi (20)

    Datori (12)

     

    Skaitlis iekavās nozīmē visu produktu skaiti apakškategorijās.

     

     

    Kādreiz taisīju to visu Oraclē un MaxDB, tur nebija problēmu uzrakstīt rekursīvu SQL kveriju, kas saskaita apakškategorijās esošos produktus, taču tagad es taisu projektu, kurā vienīgā datubāze ir MySQL 4.1.

     

    Tabulas (man, protams, ir vairāk lauku, bet piemēra pēc):

     

    categories(

    category_id int not null auto_increment,

    parent_id int,

    name varchar(50),

    primary key(category_id));

     

    products(

    product_id int not null auto_increment,

    category_id int not null,

    name varchar(50),

    expires datetime,

    primary key(product_id));

     

     

     

    Vai ir kādi ieteikumi, par to, kādu db struktūru izmantot? Es mēģināju katrai kategorijai pievienot size lauku, un pie katra produkta ievietošanas, palielinātu to par 1, bet produktiem ir noteikts derīguma termiņš, un size lauks kategorijā tāpēc, diemžēl, neder.

  3. Tieši ar LMT gan neesmu strādājis, bet šķiet, ka tas stāsts nav pat pāris alu vērts. Ir tāda lieta kā SMS gateway, kas ir vienkārša web lapa/web forma. Sūtot SMS, tu tai lapai padod savu lietotāja vārdu/paroli (to, jādomā, LMT iedos pēc līguma noslēgšanas), un SMS tekstu/adresāta numuru. Atkarībā no tā, kāds tur ir gateway, var nākties nodot tos parametrus vai nu ar GET requestu, vai arī POST. Ja gribi POSTot, paskaties par CURL funkcijām PHP manuālī, ja pietiek ar GETu, tad tas pat ir vienkāršāk.

     

    P.S.

    Toreiz manam gateway vēl varēja [brīvi] norādīt SMS sūtītāja numuru. Jauks veids, kā 'iznest cauri' draugus vai sariebt konkurējošajam politiķim :D

  4. Uztaisi neredzamu formu (nosleep ar css, un ieliec vienu neredzamu lauku, ti, <input type="hidden" name="delete_id"/> utt), un tad, kad shis noklikskina uz linka, palaid javascripta funkciju, kas nomaina formā variabli, un nosubmito to formu uz vajadzīgo URLu. Easy.

  5. black, tu reklamē smarty, vai ko a? tev maksā $ par to?

     

    Nē :D Bet es varu mēģināt paskaidrot... Patiesībā es pats vairs nelietoju PHP, nerunājot par Smartijiem un citiem zvēriem, taču esmu daudz, daaaudz gadus ar PHP nostrādājis , tādēl vienkārši nolēmu mazliet padalīties savā pieredzē par Singletoniem, templeitēm, utt.

     

    Nejauši pieminēju Smartiju, un izcēlās lielais flame. Tā kā atbildēs dominēja viedoklis, ka 'Smarty sucks', jutu vajadzību kaut ko atbildēt. Jau trešo reizi šodien - es nebūt nesaku, ka es zinu pareizo atbildi - katrs pats var izlemt, ko (ne)lietot. Laba, argumentēta diskusija ir daudz svarīgāka nekā tas, kam patreiz ir taisnība. (Ja nevar noprast - TAISNĪBA IR MAN :) :) :)

  6. Protams, pirmajā reizē Smarty nokompilē to templeitu, ieraksta kompilēto versiju failā, izveido nepieciešamos direktorijus, utt., tāpēc arī ir krietni lēnāk, nekā parasts PHP. Pamēģini kaut vai laist tos pašus regexpus, būs, protams, ātrāk, nekā Smarty, taču arī, cerams, redzēsi atšķirību. Taču pēc tam Smartijs izmanto jau kompilēto versiju un atšķirība ir tikai tā, ka jāielādē/jāapstrādā Smartija klase/konfigurācija/etc.

     

    un tad nafig mums tāds smarty vajadzīgs?

     

    Smart, but without brains? gy... ;)

     

    Nafig PHP, rakstām visu asemblerī. Ātrdarbība palielināsies x reizes!

  7. nenocietos..

    reku testa faili

    http://paste.php.lv/2885

     

    Tas ir vidējais laiks no 1000 mēģinājumiem, vai arī Tu laidi tikai vienu reizi? Kas notiek, ja atslēdz templeišu kompilāciju? Un galu galā, ko Tu gribēji pierādīt - ka uz 'paveca kompja' paiet tieši 0.03 sekundes, lai nokompilētu Smartija klases? Un ja atslēdz visas Smartija papildus fīčas, pluginus, utt.?

     

    The scary thing about microbenchmarks is that they always produce a number, even if that number is meaningless. They measure something, we're just not sure what. Very often, they only measure the performance of the specific microbenchmark, and nothing more. But it is very easy to convince yourself that your benchmark measures the performance of a specific construct, and erroneously conclude something about the performance of that construct.

     

    Even when you write an excellent benchmark, your results may be only valid on the system you ran it on. If you run your tests on a single-processor laptop system with a small amount of memory, you may not be able to conclude anything about the performance on a server system.

  8. Tiem, kas saka, ka templeišu 'performance ir zem katras kritikas'... Padomāsim, ko tad dara tas pats Smarty! Katru reizi, kad kaut kas tiek mainīts template, Smarty nokompilē mainīto failu, pārveidojot templates kodu tīrā PHP kodā. Tālāk, katru katru reizi, kad tiek pieprasīts templates kods, Smarty vienkārši nočeko datumus templātei un nokompiplētajai versijai, un ja templāte nav mainīta, izpilda kompilēto versiju. Performance zudumi? Datumu pārbaude 2 failiem. Starp citu, šo pārbaudi var arī atslēgt, gadījumā ja PATIEŠĀM nepieciešama maksimāla ātrdarbība. Rezultātā iegūstam tieši tādu pašu kodu, kā tad, ja būtu rakstīts ar roku. Vai tad izklausās tik drūmi?

     

    <?php print $foo ?>
    un
    {$foo}

     

    <?php print $foo['bar'][0] ?>

    un

    {$foo.bar.0}
  9. {if $smarty.session.user and ( $user_type eq "editor" or $user_type eq "admin" )}
    <input type=checkbox name=edit value="y"> edit <br>
    {/if}

     

    Manuprāt, piemērs nav padevies īpaši labs. Cik es saprotu, kāds cenšas templeitē noteikt access tiesības resursiem :) Templeites ir domātas datu prezentācijai, nevis loģikai. Ja nepieciešams pārbaudīt, vai lietotājam ir šādas vai tādas tiesības, tad to būtu jādara business loģikai. Tie, kas grib templeitēs izmantot ifus un loopus (ja neskaita atsevišķās vietas tabulas izdrukāšanai, piemēram), neatdala prezentāciju no biznesa loģikas, attiecīgi zūd jēga no templeišu izmantošanas vispār. OK, 100% to izdarīt tāpat nav iespējams, taču Smarty templātēs nebūtu jāmočī iekšā ifi un elsi.

     

    Kā jau teicu iepriekš - katra paša ziņā tas, vai izmantot Smarty, phpTemplate, rakstī kaut ko pašam, vai kā te viens gudrenieks nesen ieteica - rakstīt visu outputu ar "echo".

  10. Man kaut kā sanāca doties otrā virzienā - sāku ar PHP templātēm, tad sāku izmantot dažādus citus variantus, līdz beidzot apstājos pie Smarty. Var jau būt, ka kādu dienu sapratīšu, ka tas viss ir priekš kaķiem, un sākšu lietot kaut ko citu :D

     

    Par iemesliem, kāpēc Smarty - lasi šeit. Taču runa jau nav par to, vai lietot vai nelietot tieši Smarty. Katrs jau var izmantot to, kas pašam vislabāk patīk, un kurā kods rakstās visātrāk un vislabāk. Man nav nekas arī pret regexpiem kā tādiem, pieņemu, ka ir reizes, kad labāk rakstīt pašam savu kodu (piem., ja ir nepieciešama super-duper ātrdarbība, un Smarty šķiet pārāk lēns), taču 99 gadījumos no 100 - kāda jēga vēlreiz pārrakstīt to, ko kāds jau ir uzrakstījis?

  11. Iepriekš saņēmu komentāru par to, ka 'cērtas acīs' valoda. Šoreiz centos references saukt par atsaucēm, aplikāciju par lietojumprogrammu, lielas jēgas, acīmredzot, no tā nebija.

     

    Par ātrdarbības zudumiem - es jau nesaku, ka, izmantojot templates, programma strādās ĀTRĀK. Taču, ņemot vērā manu pieredzi, ātrdarbība nesamazinās tik ievērojami, lai neatmaksātos visas templeišu labās īpašības (koda lasāmība, utt). Galu galā, datori paliek arvien ātrāki un tagad lētāk sāk palikt nopirkt pāris papildus kastes, nevis algot papildus programmētājus.

     

    Laacz raksta: “kālab vēlreiz jāizgudro velospiēds”. Tieši tā arī ir galvenā doma par regexpiem un citām pašu būvētām template sistēmām.

×
×
  • Create New...