Jump to content
php.lv forumi

bubu

Administratori
  • Posts

    8,897
  • Joined

  • Last visited

Everything posted by bubu

  1. bubu

    CMS Admin

    Tas ir tikai kaut kāds nosaukums, kas neko īpašu nenozīmē. Tāpat kā "Virtuve" vai "Ceturtais stāvs". Vajag kontekstu, kurā tas teikts. Tas var nozīmēt gan lietotājvārdu, gan lapas sadaļu, gan apzīmēt personu.
  2. Nav vienkārša koka apstaigāšana? Pseidokodā: draugi getDraugus(level, persona) { if (level == 0) return persona.getDraugus() draugi = [] for draugs in persona.getDraugus() { draugi += getDraugus(level-1, draugs) } return draugi; } cetrutaa_liimenja_draugi = getDraugus(4, es) Līdzīgi arī otrā punkta algoritms - dabū visus vajadzīgos draugus un meklē kopu šķēlumu.
  3. __autoload imho tieši ir labi lietot, jo palielina performanci - neinklūdē visus iespējamos failus, bet gan tikai tos, kuri patiešām vajadzīgi. Tb ja kāda klase instancēsies tikai vienā gadījumā (if nosacījumā kautkādā, piemēram, pie kļūdu paziņošanas), tad tā ielādēsies tikai tai vienā gadījumā, nevis katru reizi, kad lapas skripts izpildās.
  4. Nu vienā gadījumā - uzraksti pats savu serializēšanas funkciju, kas paņem javaskripta asociatīvo "masīvu" un uztaisa no tā stringu, piemēram, formā "key1==value1::key2==value2::key3==value3...." (vai kā citādāk - pēc tavas brīvas izvēles). Un uzraksti analoģisku funkciju php galā, kas šo stringu pārtaisa atpakaļ par asociatīvu masīvu. Līdzīgā veidā arī izdaries uz otru pusi - php serializē un js'ā atserializē. Lielāku performanci droši vien var iegūt, ja jau uzreiz vienā galā taisa asociatīvo masīvu otra gala valodas sintaksē un tai otrā galā izsauc vienkārši evil (kurš dabiski ir evil :) T.i. php pusē piemēram "masīvu" formē formā {"key1": "value1", "key2": "value2", ... }. Un JS pusē saņemtajam stringam izsauc eval fju. Līdzīgi daries arī uz otru pusi. Btw, lai varētu rakstīt šādi: var js_array['id'] = 'ajax_main_content'; var js_array['param_str'] = ''; var js_array['sender_id'] = ''; var js_array['script_url'] = 'ajax_request.php'; tad pirmajai rindiņai ir jābūt nevis var js_array = []; //jauns dinamisks massīvs bet gan var js_array = {}; Pacenties iemācīties pagaidīt. Nevienam te nemaksā par 24h uzturēšānos onlainā. Tāpēc pagaidi vairāk kā pusstundu pirms atkārtoti help-help rakstīt.
  5. Tas arī ir aptuveni tas pats, ko uzrakstīju augstāk.
  6. A domāt negribās? Dabū tekošo datumu. Atņem septiņas dienas. Noskaidro dabūtā datuma nedēļas dienas numuru (pirmdiena=0, otrdiena=1, trešdiena=2, ...). Atņem šo numuru no dabūtā datuma - te arī dabūsi nedēļas sākumu. Nedēļas beigas dabū kā sākums+6.
  7. Ja nav konkrēti noteikts, tad tādā gadījumā kas ir &ltblah? entīte vai ne-entīte? Es šķiet ņemtu Alekseja variantu.
  8. Grey_Wolf: tas ir vienmēr tā. Un JS tur ir ņipričom. Arī C un C++ gan floati, gan doubļi uzvedās tāpat . Vienīgā atšķirība ir tāda, ka, piemēram, tajā pašā C/C++ floatu konvertēšana uz stringu pēc noklusējuma apaļojas ar 6 (ja nemaldos) zīmīgajiem cipariem. Respektīvi 3.30000000000003 = 3.30000 = 3.3 Bet ja paprasīsi izvadīt 20 zīmīgus ciparus, arī dabūsi daudz nuļļu (vai devītnieku) un galā kautkādus ciparus - jebkurā valodā un OS. Un Windows tur galīgi nav vainīgs (gan teorētiski, gan praktiski). Viss ir IEEE 754 standartā pateikts. Pat skaitli 0.1 jebkurā valodā nevarēs precīzi saglabāt pēc IEEE standarta (un atkal - WIN tur ir ņipričom). Paņemsi linuxi - arī 0.1 nevarēsi precīzi saglabāt. Reku ļoti valīds standarta C++ kods: #include <iostream> #include <iomanip> int main() { float a = 2.85f; float b = 0.45f; float c = a + b; std::cout << c << std::endl; std::cout << std::setprecision(50) << c << std::endl; } To palaižot iegūsi šādu outputu: 3.3 3.2999999523162841796875 Nav gluži tas pats, kas JS (jo visdrīzāk atšķirās underflow/overflow situāciju handlošanas režīma uzstādījums), taču nezkāpēc tavuprāt otrā rinda neizvada 3.3? Tiem, kuri grib saprast kāpēc tā notiek - lūdzu lasīt šo: http://docs.sun.com/source/806-3568/ncg_goldberg.html Īsi paskaidrojot kāpēc - tas notiek tāpēc, ka dators skaiļus neglabā atmiņā decimāli. Tas tos glabā bināri. Respektīvi skaitlis 12 glabājās atmiņā kā 1100. Skaitlis 0.5 kā 0.1. Skaitlis 0.75 kā 0.11. Bet ja tu paņemsi, piemēram, skaitli 0.1, to nevarēs precīzi izteikt ar 1/(2^n) skaitļu summām, ja n (bitu skaits) ir ierobežots (floatam tas ir līdz 23). Un vēl par andrisp teikto - "Tie nekad nav 100% precīzi." Tas gan nav tiesa :) Float tipa skaitļi ir precīzi, tad ja to nozīmīgo bitu skaits salien 23 bitos (floatam) vai 52 bitos (doublim), un vēl eksponente ielien attiecīgi 8 vai 11 bitos. Piemēram, skaitlis 0.0 vienmēr ir precīzs. Tāpat kā skaitļi 1234, 58878822, 111111, 0.25, 0.4375, 3.5, utml.
  9. Nu ja pieņem, ka ; vietā tekstam jābeidz, piemēram, jāseko atstarpei, tad repleiso &[sazinkas][atstarpe] par &[sazinkas]; un tad lieto parastu php funkciju, kas dekodē entītes. Kur problēma?
  10. 777 ir vienkārši gudrus vārdus samācījies un domā, ka visu zin. DOM ir Document Object Model, kas reprezentē interfeisu operācijām ar xml-veidīgiem kokiem (HTML/XHTML piemēram). JS savukārt ir Javascript - klienta puses browsera skriptošanas valoda. Nezinu kam tas tev būtu vajadzīgs. Taču, ja vajag flašu, tad prasi gūglei: http://www.google.lv/search?q=flash+photo+gallery
  11. Izlasi kļūdas, pārbaudi kodu, padebugo kodu.
  12. Nesaprotu, kur cilvēkiem prāts mainīgajam piešķirt integeru, bet to salīdzināt ar stringu...
  13. Īstiem vīriem nav cerību, jo īsti vīri backupu netaisa.
  14. bubu

    Neskaidrība ar error

    Vajag nevis iespaidoties, bet saprast kā un kāpēc tas strādā. function php_color($date) { $result = array(); foreach($date as $value) { if ( preg_match("/^(\/\/ ){1,1}/", $value) == '1' ) { $pattern = '/(\/\/.*)/'; $replacement = "<span class=\"coment\">$1</span>"; $value = preg_replace($pattern, $replacement, $value); } else { $pattern = '/("{1,1}([^"]*[a-zA-Z0-9 <>\\?$_\-\/.;:]*)*("){1,1}){1,5}/'; $replacement = '<span style="color: red">$1</span>'; $value = preg_replace($pattern, $replacement, $value); $pattern = '/([^\/])((\'{1,1})([^\'][0-9a-zA-Z\/-_\;\: \.\*\=]*)(\'{1,1}))/'; $replacement = '$1<span style="color: red">$2</span>'; $value = preg_replace($pattern, $replacement, $value); } $result[] = $value; } return $result; }
  15. bubu

    Neskaidrība ar error

    Ar foreach tam visam ir tikai otršķirīgis sakars. Svarīgāk, atkārtojos, ir tas, ko un kā tu dari ar $value mainīgo.
  16. bubu

    Neskaidrība ar error

    Atkarībā no tā, ko tu ar to $value tur dari. Vai pats vispār saproti, ko tas & tajā vietā dara? Ja nē, tad iesaku atvērt foreach manuāļa lapu un saprast.
  17. bubu

    Neskaidrība ar error

    Visdrīzāk uz servera ir php4, bet tev ir php5. Uzliec sev tieši tādu pašu versiju kā tādu, kāda ir uz servera. Būs mazāk problēmu.
  18. bubu

    Help

    Sāc ar to, ka izdomā sakarīgāku topika nosaukumu un izvēlies pareizas sadaļas, kur postēt savus jautājumus. Citādi topiks ceļos uz Drazu.
  19. Saglabā nospiestos burtus kautvai globālā string mainīgā, ja tā tev vienkāršāk. Un tad uz katru reizi pārbaudi vai tas strings neveido kādu vajadzīgo kombināciju.
  20. Nē, šo funkciju var pielietot tikai string tipam. Atver manuālī šo funkciju un apskaties piemērus.
  21. Pie datu izvadīšanas pielieto htmlspecialchars funkciju.
  22. Saproti, ka rakstot "return X;" tu X vietā vari likt jebkādu izteiksmi. Un tam nav nekāda sakara ar returnu, ko tu tur liec. Liec tādu vērtību kādu vien tev vajag.
  23. return nevar atgriezties pie kādas funkcijas. Return vienmēr atgriežās no tekošās funkcijas. Koda piemērs: function fun() { A; return 123; B; } C; var x = fun(); D; Vispirms tiks izpildīts tas, kas ir C daļā, pēc tam tiks izsaukta fun funkcija. Tiks izpildīta A daļa. Pēc tam tiks izpildīts return steitments, kas iziet no fun funkcijas. Tātad x mainīgajam globālā apgabalā (scope) tiks piešķirta vērtība 123. Pēc tam tiks izpildīa D daļa un skripts beigsies. Rakstot return Foo(); netiek domāts, ka notiek kautkāda atgriešanās pie/no Foo funkcijas. Notiek Foo funkcijas izsaukšana un funkcijas Foo atgriežamā vērtība (kuru norāda arī ar return steitmentu) tiek atgriezta kā tekošās funkcijas rezultāts: function Foo() { return 233; } function Bar() { return Foo(); } var x = Bar(); x vērtība šajā piemērā būs 233. Tavā piemērā, kur gribi cikloties, ir jālieto while konstrukcija. Palasi vairāk dokumentācijā, kas tas tāds while ir un ko tas dara.
×
×
  • Create New...