Jump to content
php.lv forumi

des

Reģistrētie lietotāji
  • Content Count

    307
  • Joined

  • Last visited

About des

  • Rank
    Daudzsološais profiņš

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Man šķiet diezgan jocīgi sagaidīt, ka kandidāts zinās jaunākās PHP versijas nr. ar precizitāti lidz minoram.
  2. A no kurienes datus ņem šitā funkcija (lgsl_query): $player_list = lgsl_query($get_ip, $get_port, $get_type, "players"); ?
  3. :) es pa zemi. Pirmie 3 tagi viņu lapā vienkārši iefascinē: <body> <html> <head>
  4. Interesanta diskusija jums te izvērtusies :) Par izglītību runājot. Nezinu, kā ir RTU, neesmu mācījies. Tomēr LU DatZ bakalaurus esmu nolauzis. Pēc gada droši vien, ja nekas ekstrēms negadīsies, būs arī maģistri tur pat pabeigti. Par programmēšanu. To tiešām iemāca. Reāli pat tādiem, kas nav pirms tam programmējuši, bet grib mācīties. Tiem, kas vidusskolas laikā ir jau kaut kādās olimpiādēs paprogrammējuši, tas viss, protams, relatīvi ir nieks. Lai gan par dinamiskajām datu struktūrām man bija jaunums. Krutākais, ko pirms tam Paskālā zināju, bija record un vairākdimensiju masīvi. Par matemātiku. Matanalīze, algebra, diskrētā matemātika - tas viss principā paceļ domāšanu vienu meta līmeni augstāk. (lol, vajadzētu jau pamatskolā mācīt, ka visa matemātika pēc būtības sastāv no jēdzieniem "kopa" un "funkcija" :D ). Tie, kas vēl paspēja izbaudīt Detlovu (R.I.P.) zina, ka viņa priekšmetus gluži laižot muļķi vis nokārtot nevarēja. Tālāk, protams, ūdenskrituma un citas populārākas programmatūras izstrādes metodikas tiek izmaltas diezgan pamatīgi un vairākos kursos. Būtiskākais - liek saprast, ka laba plānošana un projektēšana (nevis maniakāla kodēšana "no viena stūra") ir ļoti svarīgi procesi, kas pašu koda rakstīšanu padara daudz vienkāršāku. Par testēšanu. No specifiskajiem testēšanas kursiem, principā var izsprukt. Tomēr vismaz Arnicāna testēšanas kurss atklāj, ka testēšana nav vis gluži tas pats, kas atklāt, ka, zomg, draugos ar java script:void(blablaba...) var pamodificēt mass msg sūtīšanas formu klienta pusē tā, lai varētu nosūtīt ziņojumu patvaļīgam lietotāju lokam, pietam, patvaļīgu skaitu reižu katram. Viens no visa šī kvesta galvenajiem bosiem, protams, ir Strods. Tie, kas ir tikuši cauri, zina, par ko es runāju :) Atliek vienu reizi atnākt piecas minūtes vēlāk uz lekciju, kad ir mazais kontroldarbs, un babāc - pēc viņa maģiskajām formulām no galējā vērtējuma stabili kādas 1-1.5 balles nost :) Principā nekārtojot šo kursu ar maksimālu uzmanību, diezgan liela varbūtība, ka galējais rezultāts būs negatīvs (jā <0, nevis nesekmīgs, tobiš tikai <4) :) Protams daudzi praktiskie uzdevumi nebija pārāk interesanti. Tomēr iemācīja vienu: piespiesties izdarīt arī to, kas nav pārāk patīkams. Zināmas permanentā slinkuma zāles. Jā, kaut kad 1.-2. kursā man vēl bija doma, ka visu var nokārtot neko nedarot tāpat kā vidusskolā... Tā kā galīgi nepiekritīšu viedoklim, ka augstākā izglītība - tas ir pilnīgs fufelis. Turklāt pēdējā laikā vairāki pasniedzēji ir stipri advancējuši plaģiātu ķeršanas tehnoloģijas. Līdz ar to daudzi "gudrīši" dēļ sava bezdomu copy/paste darbu cepšanas tiešām nenokārto atsevišķus kursus. Visas šīs manas pārdomas, protams, neizslēdz arī pašapmācības spēku :) Principā jāmācās klāt kaut kas ir visu laiku. Nepastāv tāda lieta kā stāvēšana uz vietas. Ja Tu neprogresē, tātad regresē.
  5. Pieļauju, ka ar VB domāts VB. NET nevis VB 6. Jebkurā gadījumā ir gadījies no malas pavērot, kā keksi cep webprojektu .NET tehnoloģijā. Valoda gan C#, bet tas būtību īpaši nemaina. Lielāks murgs nav redzēts. Pie tam jamajiem ir prasības, ka jāiet uz visiem modernajiem browseriem, ne tikai IE :) Cik "skaisti" .NET kontroļi izskatās, piemēram, iekš FF :D
  6. Nu vispār jau jebkurā darba vietā ir svarīga ne tikai alga, bet arī vadības attieksme un atmosfēra vispār. Savu mūžu man nav vajadzīgs, pirmēram, ka mani kāds natūrā emocionāli terorizē, lai arī maksā lielu piķi. Vēl jau laiku pa laikam gadās redzēt sludinājumus, kur grib dabūt php/mysql/html/css/js + flash/photoshop utt. pārzinošu cilvēku pa 150-200 ls :D Tobiš vienu, kas gan kodē, gan taisa dizainu.
  7. des

    klase klasē

    Labi. Principā piekrītu, ka diezgan labs tas singletons. Vienīgais gari katru reizi raksīt "$db = DB->getInstance()". Uzraksīt "global $db" tomēr ir stipri ātrāk. Bet tas, protams, ir arguments "no slinkuma". Var jau visādus macrosus priekš biežāk rakstāmajām konstrukcijām lietot. Būtībā es jau arī fanoju par "raksti vienreiz, izmanto daudzreiz". Organiski ienīstu copy-paste & replace stila kodēšanu.
  8. des

    klase klasē

    Nu paga.. Arī ar visu singletonu tāpat var kļūdīties. Var kaut vai aizmirst to instanci paprasīt, un tad brīnīties, kapēc kveriji neiet. Ir visādi "frukti". Ir tādi, kuri uzliks pilnīgu pofigu uz OOP vispār un taisīs paši savas konekcijas, kā sagribēsies. Manuprāt, ka tādiem, kas pamanās saveidot vairākas konekcijas/neizveidot ne vienu vispār nav ko lielos php projektos darīt.
  9. des

    klase klasē

    Nu ja pamanās DB klasi inicializēt vairākkārtīgi, tad jau visa projekta arhitektūra ir kaut kāda stipri kreisa...
  10. des

    Par phpbb

    Tevi interesē 4 tabulas: posts, posts_text, topics, forums (sākumā prefikss, ja esi uzlicis) Aptuvenā ideja ir pie posts pieleftjoinot posts_text, tad topics un tad forums. Sīkāk pētīt man nav tagad laika. Paskaties taču forma db šo tabulu laukus, un sajointo pēc attiecīgajiem idiem...
  11. Es drīzāk clients_ind un clients_jur taisītu kā vienu tabulu un to pazīmi client_type liktu tajā tabulā. Bet vismaz priekš 5. mysql risinājums ir tāds: SELECT CASE r.client_type WHEN 1 THEN CONCAT(i.id, ci.name) WHEN 2 THEN CONCAT(i.id, cj.name) END Klienc FROM items_clients_rel r LEFT JOIN items i ON (i.id = r.items_id) LEFT JOIN clients_ind ci ON (ci.id = r.client_id) LEFT JOIN clients_jur cj ON (cj.id = r.client_id)
  12. doma aptuveni taada: ajax.js: //the requests reqs = new Array(); //single request function AjaxRequest(req, func, id) { this.req = req; this.func = func; this.id = id; } function execRequests() { for (var i = 0; i < reqs.length; i++) { if (reqs[i].req.readyState == 4 && (reqs[i].req.status == 200 || reqs[i].req.status == 304)) { reqs[i].func(reqs[i].req.responseText, reqs[i].id); reqs[i].req = null; reqs.splice(i,1); } } } //ajax constructor function Ajax() { } Ajax.prototype.createRequest = function() { try{ // Opera 8.0+, Firefox, Safari return new XMLHttpRequest(); } catch (e) { // Internet Explorer Browsers try{ return ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { // Something went wrong alert("Your browser does not support Ajax. Get FireFox! www.mozilla.com"); return false; } } } } Ajax.prototype._rndsid = function(url) { if (url.indexOf('?') == -1) return url + "?___ajaxsid=" + Math.random(); return url + "&___ajaxsid=" + Math.random(); } Ajax.prototype.doreq = function(method, url, para, func, id, timer) { var request = this.createRequest(); if (!request) return false; request.onreadystatechange = execRequests; request.open(method, this._rndsid(url), true); if (method == "POST") { request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); request.setRequestHeader("Content-length", para.length); request.setRequestHeader("Connection", "close"); request.send(para); } else { request.send(null); } reqs.push(new AjaxRequest(request, func, id)); if (timer) { var _this = this; setTimeout(function(){_this.doreq(method, url, para, func, id, timer);}, timer); } } Ajax.prototype.get = function(url, func, id, timer) { this.doreq("GET", url, "", func, id, timer); } Ajax.prototype.post = function(url, para, func, id, timer) { this.doreq("POST", url, para, func, id, timer); } //fill Ajax.prototype.doFill = function(res, id) { document.getElementById(id).innerHTML = res; var js = new RegExp('(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)', 'img'); var matches = res.match(js); if (matches) for (i in matches) eval(matches[i].replace(/<script.*?>/g, "").replace(/<\/script>/g, "")); } Ajax.prototype.getFill = function(url, id, timer) { this.get(url, this.doFill, id, timer); } Ajax.prototype.postFill = function(url, para, id, timer) { this.post(url, para, this.doFill, id, timer); } //eval Ajax.prototype.doEval = function(res) { eval(res); } Ajax.prototype.getEval = function(url) { this.get(url, this.doEval); } Ajax.prototype.postEval = function(url, para) { this.post(url, para, this.doEval); } ajax = new Ajax(); testmyajax.html (jā, ne tuvu nav valīds :D): <html> <head> <script language="javascript" type="text/javascript" src = "ajax.js"></script> </head> <div id = "res"> </div> <div id = "a"> </div> <div id = "b"> </div> <script language="javascript" type="text/javascript"> ajax.getFill("rnd.php", "res", 1000); </script> </body> </html> un rnd.php: <?php echo rand(1, 5000); ?> <script> document.getElementById("a").innerHTML = "aa"; </script> <script language="javascript" type="text/javascript"> document.getElementById("b").innerHTML = "bb"; </script> Ajax.doFill metode noevalo visus skriptus arī, ja tādi ir.
  13. des

    SQL injekcijas

    Vēl varu piebilst, ka gadījumos, kur sagaidāmi veseli skaitļi (tipa visādi id), arī nokāstojam tos: $id = (int)$id;
  14. des

    Neiesaku hostingu.

    Kruta - 40kb webspace par Ls 0.02 meenesii :) Bet, ja nopietni, tad es neesmu lv saskaaries ar hostinga firmu, kurai viss riteetu bez jebkaadas aizkjershanaas. Ta jaa pashaa laikaa ar serveris.lv var daudz ko sarunaat, ja to dara mieriigi un paskaidrojot savu vajadziibu. Kaut vai, piemeeram, pieeju mysql no aarpuses no atsevishkjaam ip adreseem.
  15. des

    Neiesaku hostingu.

    exactly. Un ja maksaa Ls5 meen, tad galiigi nav ko iedomaaties, ka esi VIP.
×
×
  • Create New...