Jump to content
php.lv forumi

F3llony

Reģistrētie lietotāji
  • Posts

    1,353
  • Joined

  • Last visited

Everything posted by F3llony

  1. Tā pat kā tev nekādu testu tur nav, vismaz legacy nodaļā. "Lokāli notestēja". Lokāli erroru nebija. Izmeta produkcijā, noteikts procents noteiktu eventu ko "lokāli nenotestēja" aizgāja pa pieskari. Atšķirība tikai tā, ka koda bāze savas 5000x lielāka...
  2. :DDD lai dies' nogrābstās... Redz kur man viens Jurchiks arī, notestēja lokāli... un produkcijā. Skaisti, ne? :D
  3. ... ??? ??? ??? Jā, rly. Tavi tabi atgādina wordpress skinu sources. php-cs-fixer smthn? Defaultais idea formatējums arī ir ok. Nafig maini? Ko nevajag? Tu uzrakstīji savu autoloaderi nafig, ja tev jau ir autoloaderis no composer, kuru tu jau izmanto dependencijām? Nafig divus? https://getcomposer.org/doc/04-schema.md#autoload Tu saproti, ka interfeisus lieto nevis tāpēc, ka smuki, bet tāpēc, lai es varētu aizstāt tavu sūdu ar savu sūdu...? Ja? Nu un plus vēl tāda nianse, ka tev ir nulle ekosistēmas. Un ja es nevaru rejūzot libas no kaut kurienes tāpēc, ka tu neseko vismaz kaut kādam standartam, tad nafig tevi un tavu freimworku. Pats arī lietosi līdz pensijai. Ko tu tur runā? Kāds load everything? Kurš konteineris tad to dara mmm? Neredzu tev tur nekādu DI, viena statika (fuj mlje, static access is source vomit) un klases ražojas kur pagadās. https://en.wikipedia.org/wiki/SOLID_(object-oriented_design).Un nevajag arī Guice level of wiring, paņem Pimple, SY konteineri. Uzreiz dzīve labāka. Last but not least, KUR IR TESTI UN/VAI SPEC/BDD?!... ko tu te centies iesmērēt, zemas kvalitātes sourcīti bez testiņiem, lops tāds mhhh???
  4. Sāc ar to, ka freimworka kodu ieliec atsevišķā repā no aplikācijas standarta distas. Savādāk apgreidot kā? Ctrl+C/Ctrl+V? Pēc tam visu kodu saliec vendora neimspeisā. Nav jāpiesārņo globālais namespace ar savām klasēm. Loggerim ir PSR interfeiss. De-facto standarts. http://stackphp.com Dafuq with the tabs all over the place? O.O Kāpēc nelieto composer autoloader? Visur programmē pret konkrētām implementācijām. Izmanto Interfeisus ffsck. Vai vismaz izliecies. DependencyInjection? Tālāk apnika lasīt...
  5. https://www.npmjs.com/package/is-online#isonlinecallback Kas ir pirmais arguments?
  6. Es lietoju apple un ja godīgi tavs jautājums mani aizskar līdz sirds dziļumiem.. kā vispār var salīdzināt Stīva (Dieva) radīto ar kaut kādu plebejisku PHP mēslu. Zini cik daudz vienlaidus alumīnija izmantots Laravel? Necik! Es skatījos! Redzēji tagad iOS force touch? Neko tik ģeniālu tu Laravel neatradīsi. Es domāju, ka esam draugi. Bet pēc šī, es vispār tevi vairs nepazīstu. Kā cilvēks tu man esi miris.
  7. Pirmkārt tas, otrkārt vecā versija no githuba ir dzēsta, eksistē tikai kaut kādi forki. Trīdā un twiterī bija vairākas pretenzijas, galvenās - kamdēļ dzēst repo, kamdēļ sasmelties idejas open-source-`iski` lai pēc tam uztaisītu privātu produktu. Nudge jau šeit bija, ka uztaisīja open-source, cilvēki adaptēja un pēc tam Otwells paziņoja ka party ir beidzies un tagad produkts ar to pašu name ir closed.
  8. Nu tas arī gluži nav arguments. Varbūt tad labāk kešot pašu uzrenderēto view, vai tas ir html vai jebkas cits. Taču no otras puses, man ir kaudzīte ar klonnām (*_proc un *_raw). Ja nu mainās algoritms kā no _raw nonāk līdz _proc. Citi iemesli gan - piemēram, tā pati eskeipošana on input jo dati tiek ekspozēti vēl pārdesmit dažādām sistēmām, no tām kaudzīte vendor ones, pār kurām nav nekādas kontroles praktiski.
  9. Nē, es iesaku vispirms validēt un datus, kas neatbilst validācijai vispār sistēmā nepieņemt. Un gadījumos, kur nav iespējas reāli validēt (man gan ir grūti tādus gadījumus pat iedomāties), eskeipot un glabāt - tieši tā. Vai sliktakajā gadījumā, glabāt tā, ka pie izvades tie ir jātransformē obligāti un savādāk tos vispār nevar izvadīt, vai arī tas ir acīmredzams, ka konkrētie dati ir "raw" un potenciāli satur bīstamus datus.
  10. Pilnīgi normāli dati/chari, saki. Kādā tieši gadījumā tevis minētie ir normāli čari, piemēram, username? Vai datumā. Vai epasta adresē. Vai jebkurā citā ne-free-input lauka tipā, kādu vien vari iedomāties.
  11. Ko? Kas pie...? Labi es vispār nemaz nemēģināšu saprast tavu domu gājienu... Kāpēc? Es nesaprotu vispār kāpēc panesies ir šāds interesants topiks. Jo vai kāds vispār var pateikt kaut vienu normālu piemēru izņemot kaut kādus komentārus un forumus + wysiwyg inputus CMSos utml, kur jebkāda HTML/JS/whatever koda-alike inputa klātbūtne ir reālistisks variants pieņemamiem datiem ievadē? Visu problēmu sākuma punkts ir tas, ka sistēmas pieļauj ievadīt jebko un jebkur - skat. punktu 3. vēlreiz. P.S. Lai mani nepārprastu, es nerunāju par aklu un tizlu "visa inputa barošanu htmlspecialchars" :D Apply common sense.
  12. Skat. Nr. 3 Jo es esmu tāds puicisks un agresīvs. Ko padarīsi. Tieši tā - šis vienkāršais veids ir nepieļaut sūdīgus datus sistēmā. Tā pat kā rakstīt sūdīgu kodu - sākumā viegli un "ērti", pēc tam...
  13. Nav laika lasīt to blobu, bet es pieņemu, ka autors ir nejēga. Tas, nekas, ka kaut kur core devs. Jā, tas ir slikts username, un šis posts drīkst saturēt šo tekstu. Now what? SIA un M&K ir 2 fieldi, btw. Nu tā, runājot par bērnudārzā veidotām sistēmām. Un tagad, par general ņaudienu par "escape-on-input", pieņemsim sekojošu scenāriju: Eksistē sistēma A un B, kuru izveidoja developeris X un abas darbojas pret datasourci R (mysql for example). A domāta datu ievadei, B domāta izvadei. Es esmu ļāūņš hax0rz11 un ievadu sistēmā A <evilscript> kas izpildītos UI sistēmā B, bet... Sistēmas B autors domā, ka nav cirvis un šos datus eskeipo (vienmēr un visur kur tie tiek izvadīti, jayy, katru reizi, because feasability) Mans <evilscript> neizdodas. Taču... Atnāk developeris Y un pie datasources R piekabina frontendu C, kas šos datus eskeipot aizmirst (one time is enough). Vai atnāk developeris Z un izeksportē šos datus no R iekš kaut kāda HTML reporta. Vai PDF. Vai Excel. Es zinu, ka tas var notikt, therefore es var izjāt visu iepriekš minēto un vēl nedaudz. <evilscript> tiek izpildīts un es nežēlīgi izjāju sistēmu C, tad B un A, un tad arī pašus developerus X un Y. ... Profit Praktisku piemēru netrūkst. Log failu rīderis ar SQL injekcijām, jo kāds lohs izdomāja, ka ir okei logus glabāt SQL un aggregators piemirsa eskeipot "User ';DROP TABLE users;' logged in 1985-01-01 LOLOLOL" utt. utjp. Šeit daži bulletpointi: Whitelist, not blacklist. Garbage in - garbage out, the quality of output is determined by the quality of the input. Softs, kas labprātīgi pieņem sūdīgus datus tad arī saturēs sūdīgus datus un izvadīs sūdīgus datus. Ar puslīdz precīzu validāciju eskeipot vispār nav ko, jo validācija pieņems tikai datus, kurus tā sagaida saņemt - nevis close enough. Vārds / Uzvārds satur UTF8 "vārdiskos" simbolus un dažus special characters. Neko tur īsti neinjicēsi. Tu pieļauj savu aplikāciju piesūdot ar ko pagadās? Skat. 7. punktu. Epasts ir epasts, tam ir noteikts formāts. Neko tur diži neinjicēsi. HTML inputi? Tags whitelist. Visu pārējo HTML eskeipot/enkodēt. Atļauj pievienot jebko, kas atgādina kodu savam output HTML? Tu esi vājš. Tava dzimta ir vāja. Jūs neizdzīvosiet ziemu. Tu esi 100% pārliecināts, ka to fieldu pareizi eskeipoji visur, kur to izvadi? TIEŠĀM? Lieki piebilst, kas notiek ar sistēmām, kuras raksta escape-on-output'isti...
  14. Garbage in, garbage out. Ja tu vispār pieļauj kaut kam XSSīgam nonākt līdz templeitiem, tev jau ir problēma.
  15. Nu tad par realitāti: PHP => Twig un/vai native PHP. JS/Node => Depends. Visbiežāk Handlebars. Python => Jinja2 Java => JTwig. Kaut kur vēl arī Velocity Swift => Stencil C#.NET => Cottle
  16. Piemēra pēc, es lietoju DataGrip. Produkcijas DB vienmēr stāv "read-only" mode, just in case. Nav jau runa par aizliegt, ir runa par kaut necik inteliģentu sistēmu, kas vismaz brīdina par to, ka tu grasies izdarīt kaut ko reāli stulbu.
  17. Nē. Tev nav pareiza frontent flux kapacitora konfigurācija.
  18. I wish. Nevis tikai servera pusē, bet kur to ir loģiski darīt. Tā pat, kā frontendā visu nevajag bāzt, tā pat arī backendā.
  19. Bet tu saproti, ka diskusija ir pilnīgi par kaut ko citu? E.g. keisu, kad dati JAU ir uz servera, nevis ka tu datus ielādē no failu sistēmas lokāli? Seriously, cik tādu keisu ir webā? Preview bildes? Vēl kaut kas? Tas ir suņam saprotams, ka ielādēt failu no failu api ir pamatā instant deal. Bet kāds šim specifiskajam keisam ir sakars ar "visu nu bāzīs un renderēs frontendā" es galīgi nesaprotu. Tajā pašā laikā, ko tu darīsi ja uploads ir diezgan komplekss binary report no kaut kādas citas legacy sistēmas (viens no maniem real world case - vienā dumpā sajāts XML un custom binary, eksporta reports pāris reizes mēnesī un sver ap 400M) un pirmo pārdesmit baitu vietā tev jaizvada gigantiska tabula analīzei? T.i. tu darīsi to frontendā vai tomēr ielādēsi failu uz servera (ar skaistu uploaderīti) kur ar smuku async procesu to izmalsi, ielādēsi DB un tad attēlosi cilvēkiem gatavu rezultātu? Tavs keiss ir edge keiss. Edge keisi kā likums pārējiem ir maz relevanti.
  20. Acīmredzot ne pietiekami dziļi. :D Ā, tad sanāk ka jams ielādē kaut kādu usera failu pārlūkā, tad palaiž kaut kādu JS pret to failu un pēc tam rezultātu nosūta uz serveri? :D Ja tā, tad es vispār nekomentēšu. Tas pamatā automātiski nozīmēs banu, jo bez betona stila rupjībām te īsti vairs neiztikt... Edit: Kavacky, nu neesmu tomēr dzēris. Jams teica, ka nav atšķirības starp atmiņas lietojumu starp datiem kas tiek apstrādāti un renderēti frontend + backend, vai frontend only. Which is sort of bullshit. Also, ātrums ir paralēls client side resursiem. Planned scaleability yayy!
  21. https://github.com/Addvilz/rendering_test Hīps ir gandrīz x2, 11289% uz scripting un ja nolevelo loading (kā tas normāli būtu, nevis katru reizi lasa džeisonu = fuck this, nav man vaļas optimizēt te), tad vispār viss ir acīmredzams. Case closed. Ko? No localhosta? Ar optiku 400? :P How about https://github.com/tylertreat/comcastun/vai https://developers.google.com/web/tools/chrome-devtools/profile/network-performance/network-conditions?hl=en uz aDSL 10/1 LOL?! Ko tu piedāvā? Nogāzt visu info frontendā? Tu saproti, ka ne visi te blogus taisa? Javascripts neko neglabā, glabā un menedžē dzinis + GC. Un viņam ir vismaz daļēja taisnība, jo viena lieka reference un tavs 100mb fails ko tu tur ielādēji nekad netiks līdz nākamajam GC ciklam. Vai arī 100 mazi failiņi, katrs pa 1mb vien...
×
×
  • Create New...