Jump to content
php.lv forumi

Kaklz

Moderatori
  • Posts

    1,401
  • Joined

  • Last visited

Posts posted by Kaklz

  1. ja nemaldos, tad flash iekļauj attiecīgo fonta failu pašā flash klipā, attiecīgi ir jādabū tādi fonti, ar kuriem var rakstīt normāli uz paša datora krievu valodā un tad tas pats fonts jāizmanto, lai rakstītu flash animācijā.

  2. Šādiem mērķiem man liekas visai labi noder triviālākais no patterniem - singleton patterns. Būtībā tas ir mehānisms, kā visur, kur tev vien ir nepieciešams, var darboties ar vienu klases instanci. Tavā gadījumā darbs ar db ir ļoti labs piemērs - tev ir nepieciešama viena konekcija, kuru tu izmanto visā savā programmā. Neatkarīgi no tā, vai tā ir kāda klase vai vienkārši parasts skripts.

     

    Singleton patterns izskatās apmēram šādi:

    http://paste.php.lv/1540

     

    Tagad visās vietās, kur tev ir nepieciešams savienojums ar datubāzi, tu nevis raksti $db = new MySQL(), bet $db = MySQL::instance() un darbojies ar vienu vienīgo DB objektu.

     

    Ja mazliet nav skaidrs, kā tas darbojas, tad izstāstīšu. Klases metodes var izsaukt arī tad, kad vēl neeksistē pati klases instance (izmantojot sintaksi KlasesVaards::MetodesVaards()). Attiecīgi vēl pirms DB objekta izveidošanas mēs izsaucam instance() metodi, kura pārbauda vai DB objekts jau ir uztaisīts vai nē. Ja objekts ir uztaisīts, tad tiek atgriezta norāde uz uztaisīto objektu. Ja objekts vēl nav uztaisīts, tad instance() metode to veiksmīgi izdara un atgriež norādi uz tikko izveidoto objektu. Tādā veidā tiek panākts, ka neskaitāmas reizes izsaucot MySQL::instance() visā skripta gaitā, tu vienalga iegūsi vienu konekciju.

     

    Tagad par to, kā sadarboties divām klasēm.

    Man jau liekas, ka tevis pieminētajam variantam par $this -> db nav nekādas vainas. Pats tā esmu darījis un nekādu problēmu nav bijis. Esmu darījis arī tā, ka tajās klases metodēs, kur ir nepieciešams savienojums ar datubāzi, izmantoju iepriekš aprakstīto singleton patternu.

     

    Nepretendēju uz vienīgo un pareizo risinājumu, bet tas man liekas tīri saprātīgs.

  3. Padomā par kaut ko līdzīgu šim:

    $news = array('news1' , 'news2', ' news3' , 'news4');
    $newsId = 0;
    echo '<table><tr>';
    foreach ($news as $newsItem){
      echo '<td>' . $newsItem . '</td>';
      if ($newsId % 2 == 0 && $newsId < count($news) - 1){
         echo '</tr><tr>';
      }
    }
    if ($newsId % 2 != 0){
    echo '<td> </td>';
    }
    echo '</tr></table>';

  4. Par daudz tu gribi :). Bildes ir faili, kuras aplūkot var tikai tad, ja tās atrodas uz servera. Nedomāju, ka atradīsi tādu CMS, kurš ar copy & paste varētu tev ievietot arī bildes un augšupielādēt uz serveri. Ja atrod, pastāsti par tādu arī pārējiem.

  5. Tu taču pats jau esi tēmas nosaukumā ielicis vajadzīgās funkcijas nosaukumu. Kur ir problēma? imagefttext tu vari iebarot jebkādu FreeType fontu, līdzīga ir arī imagettftext, kurai tu vari iebarot jebkādu TrueType fontu. Ar fontiem ir tā, ka tu vienkārši aizej uz savu C:/Windows/Fonts vai kāda viņa nu tur ir un savāc attiecīgi Arial Bold Italic fontu un iekopē blakus php skriptam, pēc tam font parametrā ieraksti faila nosaukumu.

    imagestring ir funkcija, kas izmanto tikai viena veida iebūvētos fontus, tie nav noformējami, ja neskaita izmēra un krāsas maiņu.

  6. Uz tavu jautājumu nevar viennozīmīgi atbildēt. Skatīsies to, kura ir pēdējā definēta.

     

    style.css:

    .klase{color: green}

     

    Variants numur 1:

     

    <html>

    <head>

    <style type="text/css">

    .klase{color: blue;}

    </style>

    <link rel="stylesheet" type="text/css" href="style.css" />

    </head>

    <body></body>

    </html>

     

    Rezultāts - ar attiecīgo klasi apzīmētie elementi ir zaļā krāsā

     

    Variants numur 2:

     

    <html>

    <head>

    <link rel="stylesheet" type="text/css" href="style.css" />

    <style type="text/css">

    .klase{color: blue;}

    </style>

     

    </head>

    <body></body>

    </html>

     

    Rezultāts - ar attiecīgo klasi apzīmētie elementi ir zilā krāsā.

     

    Tā kā nav nozīmes, kur tu kuru CSS definīciju liec - pašā dokumentā vai ārējā failā. Nozīme ir tam, kādā secībā tu šīs definīcijas izvieto.

  7. Ak tad taadi ir tie:
    Kvalificēti speciālisti

    Uzņēmumā darbojas kvalificēti speciālisti programminženierijas, dizaina, sistēmu administrēšanas, kā arī interneta mārketinga jomās.

    12632[/snapback]

     

    a kur problēma?

    Teiksim, 3. kursa datorzinātņu bakalaurs LU to visu pietiekami labi jau var pārzināt.

  8. Bilde glabāsies uz lietotāja datora un tā tiks izmantota tikai tad, kad lietotājs ieies tajā lapā un norādīs tās adresi (tā kā upload) un tā tiks izmantota tikai neilgam brīdim.

    Teiksim, ja tu taisi lapu un ieliec <img src=file:///C|/foto/FOTOGALERIJAS//help.jpg>

    uz tava datora šī bilde parādīsies, bet uzliekot uz servera ne.

    Es gribu, lai šis fails tiktu arī nolasīts no lietotāja datora tikai nezinu kā likt saprast, ka jānolasa nevis no server ,bet lietotāja datora :)

    12461[/snapback]

     

    Labāk aizmirsti par tādām muļķībām. Es labrpāt gribētu piekļūt visu savu lapas apmeklētāju My Documents mapei un savāk visus dokumentus, kas tur ir, lai pēc tam viņus varētu šantažēt un izspiest lielu naudu. :P

     

    Tev, puis, ir maza nojēga par to, kā vispār notiek bildīšu un mājas lapu parādīšana internetā. Lai tu kaut ko varētu parādīt no lietotāja datora, uz tā ir jābūt kādai programmai, kas tev to bildi piedāvā. Ar pliku Windows/Linux/kādu citu OS nepietiek. Tam ir nepieciešama servera programmatūra, teiksim tas pats Apache. Attiecīgi tad nu vienīgais variants, kā tu varētu bildi rādīt no apmeklētāja datora ir piespiest viņu uzstādīt savu web serveri, likt lai viņš bildes saliek web servera saknes direktorijā un pēc tam vienkārši ņem un bildes augšupielādes vietā raksta tavā formā kaut ko līdzīgu http://80.80.80.80/bilde.jpg, kur 80.80.80.80 būtu viņa datora IP adrese. Ja jāsaka godīgi, līkāku risinājumu ir grūti iedomāties.

     

    Attiecībā uz <img src="file:///" /> - labāk aizmirsti par tādām perversijām.

  9. Tu viņu katru reizi vienkārši ņem un pārraksti, tur arī ir tā problēma.

     

    Ja tu kaut ko ieliec sesijā, tad nākamajā lapā tev tas vairs nav viņā jāliek iekšā - tu jau vari ņemt ārā. Attiecīgi:

    <?if (!empty($_POST)){

    extract($_POST, EXTR_SKIP);}

    if (!empty($_GET)){extract($_GET, EXTR_SKIP);}

    if (!empty($_COOKIE)){extract($_COOKIE, EXTR_SKIP);}

     

    session_start();

    $_SESSION['vards']=$vards;

    $_SESSION['dators']=$dators;

    varētu izskatīties kā:

    <?php 
    if (!empty($_POST)){
    extract($_POST, EXTR_SKIP);}
    if (!empty($_GET)){extract($_GET, EXTR_SKIP);}
    if (!empty($_COOKIE)){extract($_COOKIE, EXTR_SKIP);}
    
    session_start();
    if (!empty($vards) && !empty($dators)){
    $_SESSION['vards']=$vards;
    $_SESSION['dators']=$dators;
    }

     

    Pēc tam skatāmies tālāk ;)

  10. Tagad varam te uzsākt bezgalīgu diskusiju ne par tēmu, bet (vismaz es) ja taisu funkcijas, tad tās tiek liktas atsevišķā failā, tad tiek šis fails vajadzīgajās vietās inklūdots un attiecīgi izsaukta funkcija. Līdz ar to tas pats vien ir...

    12519[/snapback]

     

    Netaisos uzsākt bezgalīgu un nejēdzīgu diskusiju, taču tas ir viens no momentiem, kas tomēr ir jāņem vērā - ja tu katru funkciju bāzīsi savā failā un galu galā tavam PHP skriptam dzīves laikā būs jāatver teiksim 30 faili, ar garantiju, ka tas būs stipri lēnāk, nekā tad, ja tam būs jāatver tikai 10 faili.

  11. un par to funkciju arhivs() ar var strīdēties, jo šaubos, ka tu viņu izsauksi vairāk kā vienu reizi. ja arī izsauksi, tad funkcijai bez parametriem nav īsti tolka, tad jau labāk likt kā include, bet nu tas jau ir vairāk piekasīšanās dēļ

    12516[/snapback]

     

    Tikko tu liec kaut ko kā include, tā ir uzreiz papildus faila atvēršanas, nolasīšanas un aizvēršanas operācija, kas attiecīgi nozīmē uzreiz papildus laiku pie scenārija izpildes. Bet nu pie tik sīkiem brīnumiem, kāds ir šis par to var neuztraukties :)

  12. Par php5 - viena nerazha ir taada, ka daudzas lietas, kas php4 uz E_ALL iet bez jebkaadas pljurksteeshanas, php5 tomeer meedz izmest visaadus nepatiikamus pazinjojumus. Ehh... backward compatibility.  :ph34r:

    12500[/snapback]

    Ja gribi progresu, kādā momentā ir jāatsakās no backward compability.

  13. Es ieteiktu izvēlēties visu taisīt UTF-8 kodējumā un tad būtībā problēmu vairs praktiski nebūs. Vienīgā problēma tev varētu būt Windows videi atrast labu redaktoru, kas atbalsta UTF-8.

  14. Gribēju uzjautāt gudrākiem cilvēkiem, cik labi/slikti ir izmantot masīvu formu apstrādei. piemēram: < input name="forma[vards]" > <input name="forma[adrese]" > ?

    datu apstrāde ir ļoti ērta pēc šādas sistēmas (ja ir piemēram virs 20 lauciņiem), bet vai tā ir labi? :)

    12442[/snapback]

     

    Ir labi tā, kā strādā un kā tu (citi) var saprast. Es tā nedaru, bet saprotu :P.

  15. nu bet tur jau slēpjas tā kodēšanas burvība, ka tu pats izdomā, uzraksti, saliec un viss strādā tā kā TU gribi nevis tā kā cits gribēja un tu tikai pielāgoji :)

    12398[/snapback]

     

    To sauc par burvību līdz brīdim, kamēr viss darbojas. Brīdī, kad tev ir jāsaprot un jāizlabo kāda cita rakstītie garadarbi tad nu drīzāk to sauc par čakarēšanos un kakla laušanu ..

  16. Bet tad kad es vairāk to projektu nesuportēšu, tad ļoti negribās lai viņš tiktu izsviests miskastē un pārrakstīts no nulles - kā tas notiek ar visiem webiem, kad nomainās programmeris/firma. It kā jau nav mana darīšana, bet anyway - šādā situācijā kaut vai ieraksts portfolio arī pazūd.

    12391[/snapback]

    Loģiski, jo katrs nākamais programmētājs grib pavicināt pirkstus \m/ formā un pateikt, ka iepriekšējais programmētājs ir bijis galīgs dunduks un visu sarakstījis greizi. Ja tev uzteiktu tāda projekta supportēšanu un paņemtu vietā kādu programmētāju bez teiksim 3 gadu pieredzes, tad ar garantiju, ka agrāk vai vēlāk viss tiktu aizlaists podā.

     

    Nelaime ir tā, ka PHP kā programmēšanas videi/valodai vairāku gadu garumā tā arī nav izveidojies nekāds puslīdz oficiāls "Best practices", kā vienu vai otru lietu vajadzētu veidot. Attiecīgi ir tā, ka gandrīz katrs PHP programmētājs izgudro savu programmēšanas pieeju, kurā tad nu viņš pats arī daudz maz normāli orientējas.

  17. Vispār jau MySQL 5.0.x skaitās development release un kā paši izstrādātāji norāda, tad tur vēl ir daudz kritisku kļūdu

     

    Note: The 5.0.2 build passes most of our test suite and fixes a lot of reported bugs found in the previous 5.0.1 release. However, please be aware that this is not a 'standard MySQL release' in the sense as there are still some open critical bugs in our bugs database that affect this release as well. Therefore this is more of a "snapshot release" of the current state of affairs. We are actively fixing these issues and will make a new release where these are fixed as soon as possible. However, this snapshot gives you an opportunity for testing and evaluating the new MySQL 5.0 features for future products.

  18. 1) pirms kādu stringu liekam iekšā SQL statementā, izpildam uz viņa addslashes()

    12384[/snapback]

    addslashes() vietā labāk izmantot atbilstošo DBVS funkciju, piemēram, mysql_real_escape_string(), sqlite_escape_string() vai vēl kādu citu. Vienkārši dažādām DBVS ir dažādi uzskati par to, kā ir jāizvairās no ', " un citiem jūtīgajiem simboliem ;)

    2) pirms kādu stringu (kas ir izselektēts no SQL) izvadīt HTMLā, izpildam uz viņa htmlspecialchars().

    12384[/snapback]

    atkarīgs no tā, vai tu gribi redzēt HTML, vai nē :P

  19. Neba nu tu būsi vienīgais, kas ir nonācis pie tāda secinājuma. Teikšu uzreiz, ka oficiālos MVC iemēģinājis neesmu. Liekas, ka iemesls ir viens - vienkāršu problēmu sarežģīšana ja ne kvadrātā, tad dubulti pilnīgi noteikti. Ja ir laba humora izjūta un interese palasīties, ir viens labs piemērs par "Hello world" tipa PHP programmu, izmantojot patternus:

    http://www.phppatterns.com/index.php/artic...leview/103/1/1/

     

    Attiecībā uz vajadzēja/nevajadzēja - domāju, ka par ļaunu nenāks ;)

  20. Ir stilīgi pacelt augšā vairāk kā pus gadu vecas tēmas ;)

     

    Atzīšos godīgi, tagad mana izpratne par OOP ir krietni vien savādāka, nekā tā bija to vairāk kā pus gadu atpakaļ, proti tā vairāk līdzinās tavam piedāvātajam variantam, taču man diez kā nesimpatizē tāda pieeja. Kaut kur lasīju vienu labu teicienu par visādiem frameworkiem .. 'izmantojot kādu no frameworkiem tu automātiski piekrīti visiem framework iebūvētajiem noteikumiem'. Attiecīgi tikko tu sāc izmantot kaut vai tevis paša slavēto MVC pieeju, tā tu gandrīz automātiski arī zaudē PHP kā dinamiskas programmēšanas valodas spēku.

     

    Kaut vai tā pati dinamiskā SQL ģenerēšana, ko tu liec priekšā - esmu izmēģinājis visvisādus piegājienus, taču vienā jaukā brīdī tu saproti, ka jebkurš automātiski ģenerēts SQL nav tikpat labs cik ar roku rakstīts, jo tieši ar roku rakstīto tu ideāli pielāgo katrai konkrētai situācijai, nevari paredzēt visas iespējamās nākotnes iespējas. Protams, Extend, override, bet tas manuprāt nav tas labākais risinājums, ja var to visu vienkāršot. Vecais labais KISS princips - Keep It Simple and Stupid :)

     

    Diskusija par PHP un MVC būtībā būtu atsevišķas tēmas vērta ;) Man ir radies priekšstats, ka ir lietas, ko var un vajag no tā izmantot, taču pilnīgs PHP MVC ir lieka laika šķiešana.

     

    Attiecībā uz PHP un OOP nevajag sākt skaldīt matus .. tikpat labi es tev varētu pārmest, ka tu XHTML lapu nebūvē ar XML rīkiem, nedefinē katru XHTML elementu kā jaunu klasi, utt.

  21. Ja tu glabātu sesijas nevis ar PHP iebūvētajiem līdzekļiem, bet ar MySQL vai kādas citas datubāzu vadības sistēmas palīdzību, tad varētu vienkārši izpildīt vienu SQL pieprasījumu, lai noskaidrotu pašlaik aktīvo sesiju skaitu.

×
×
  • Create New...