jurchiks Posted November 12, 2014 Report Share Posted November 12, 2014 Vārdu kropļošana ir pamatskolas līmenis, bet ja jau tu tā gribi, tad tagad tava iesauka ir Kaspazma. Quote Link to comment Share on other sites More sharing options...
codez Posted November 12, 2014 Report Share Posted November 12, 2014 (edited) Felony, jūs ar jurčiku radinieki? Tu ar kā tāda maza meitene čīksti par to, ko raksta citi. Nu ja tev nepatīk, nelasi, ignorē, ej pameditē, nebojā sev nervus. P.S. Starp citu pats pirms kāda laika visur līdi ar savu falcon php. P.P.S. Hadoop ir krietni vecāks un nu jau kādu laiku par daudz labāku alternatīvu tiek uzskatīts Spark. Ai kāda sakritība, Spark ir rakstīts Scalā. Edit: Scala/Play sintakse tajos piemēros kļūst increasingly less readable, kamēr socket.io paliek tikpat loģiski saprotama. Ja arī Scala/Play sintakse ir "spēcīgāka", man vienalga, ja kods izskatās tik neloģisks. Tas visdrīzāk tāpēc, ka tu ar javascriptu esi darbojies daudz, bet ar skalu nē. Man abi ir vienlīdz lasāmi. Scalas piemērs pat ir nedaudz deklaratīvāks, jo gan validate, gan format metodes tiek pielietotas vienādā formā (kā Enumeratee). Uz lielāku koda bāzi tas noteikti padara kodu vieglāk lasāmu. Edited November 12, 2014 by codez Quote Link to comment Share on other sites More sharing options...
jurchiks Posted November 12, 2014 Report Share Posted November 12, 2014 Nemaz tik daudz neesmu darbojies. Fakts kā tāds, Play sintakse ir ievērojami sarežģītāka (nevis garāka, bet tieši sarežģītāka) un, manuprāt, vietumis galīgi nesaprotama, un es 100% neesmu vienīgais, kurš tā domā. Savukārt socket.io sintakse ir saprotama pat iesācējam. Ja gribās, lai tavā valodā programmē tikai elitisti, tad, protams, tā ir priekšrocība, bet es neesmu no tiem cilvēkiem. P.S. Ignorēšana nav risinājums. Problēma NAV mūsu galā. Varbūt atceries, kāds ir šī foruma domēns? Quote Link to comment Share on other sites More sharing options...
F3llony Posted November 12, 2014 Report Share Posted November 12, 2014 P.S. Starp citu pats pirms kāda laika visur līdi ar savu falcon php. P.P.S. Hadoop ir krietni vecāks un nu jau kādu laiku par daudz labāku alternatīvu tiek uzskatīts Spark. Ai kāda sakritība, Spark ir rakstīts Scalā. P.S Katrā topikā?! P.P.S Spark un Hadoop ir instrumenti, kas viens otru papildina, ne aizstāj. Also HAIl un LIAH. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted November 13, 2014 Report Share Posted November 13, 2014 Mani arī netraucē, ka kāds pastāsta par kādu citu tehnoloģiju un salīdzina to ar esošajām. Quote Link to comment Share on other sites More sharing options...
Kemito Posted November 13, 2014 Report Share Posted November 13, 2014 Dusmas ved uz spēka tumšo pusi. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted November 13, 2014 Report Share Posted November 13, 2014 You don't talk like Yoda! Imposter! Quote Link to comment Share on other sites More sharing options...
codez Posted November 13, 2014 Report Share Posted November 13, 2014 (edited) Nemaz tik daudz neesmu darbojies. Es šeit runāju nevis tikai par pliku socket.io, bet par javascript sintaksi un valodas konstrukcijām, kuras tev ir daudz pierastākas. Fakts kā tāds, Play sintakse ir ievērojami sarežģītāka (nevis garāka, bet tieši sarežģītāka) un, manuprāt, vietumis galīgi nesaprotama, un es 100% neesmu vienīgais, kurš tā domā. Savukārt socket.io sintakse ir saprotama pat iesācējam. Šajā gadījumā piekrītu, ka socket.io API ir vienkāršāks kā Play API, bet tas ir tāpēc, ka socket.io api ir ļoti specializēts un primitivizēts. Piemēram, ja tev lapā ir kūkiju bāzēta autentifikācija, tad socket.io gadījumā konkrētajā piemērā nav iespējams veikt konkrētās darbības autorizāciju, kamēr Play piemērā kontroliera actionā ir redzams request parametrs, no kura var piekļūt konkrētā requesta parametriem un veikt autentifikāciju un autorizāciju. Tāpat socket.io API strādā ar pilniem datu fragmentiem, kas, piemēram, neļauj ierobežot plūsmu datu apjoma limitu konkrētām konekcijām, vai invalidēt konkrētu konekciju pie daļēju datu saņemšanas. Un vēl daudz lietu, ko play API ļauj paveikt, bet ar socket.io api nav iespējams izdarīt. Piemēram, šijā topikā bija prasība sūtīt bildes starp lietotājiem. Ar play api ir iespējams sākt sūtīt bildi saņēmējam vēl kamēr tā pilnībā nav atsūtīta no sūtītāja, kamēr socket.io api var sākt sūtīt bildi tikai tad, kad to pilnībā saņēmis serveris. Tādā veidā Play api ļauj divreiz ātrāku bilžu sūtīšanu starp klientiem, ja bottlenecks ir klientu tīkls. Un, ja Skalā uzrakstītu kaut ko līdzīgu vienkāršotajam socket.io API, tad šis piemērs izskatītos aptuveni šādi: object Socket extends Controller { def isValidMessage(msg:String) = !msg.trim.isEmpty def formatMessage(msg:String) = "[echo]"+msg def connect = SimplifiedWebsocketAction { socket => Logger.info("Someone just connected!") socket.on("message", { msg => Logger.info("Got message: " + msg) if (isValidMessage(msg)) socket.emit(formatMessage(msg)) }) } } P.S. Skalas gadījumā gan izmantojot partial funkcijas un case class patern mačingu varētu api vienkāršot vēl un panākt šādu rezultātu: Teiksim SimplifiedWebsocketAction par parametru jāpadod partial funkcija, kura apstrādā dažādus socketa eventus, no kuriem viens ir Message, taču līdz ar šo eventu tiek padots arī sockets def connect = SimplifiedWebsocketAction { case Message(msg, socket) if isValidMessage(msg) => socket.emit(formatMessage(msg)) } Vai vēl vienkāršojot varam tikt vaļā no socket referneces, ja api paredz, ka Message eventa gadījumā funkcija atgriezīs atbildi: def connect = SimplifiedWebsocketAction { case Message(msg) if isValidMessage(msg) => formatMessage(msg) } Teiksim ar vairākiem eventiem, api izmantošana izskatītos šādi def connect = SimplifiedWebsocketAction { case Connect => Logger.info("user connected") case Message(msg) if isValidMessage(msg) => formatMessage(msg) case Message(msg) => "Invalid message" case Disconnect => Logger.info("user disconnected") } Pamēģini uzrakstīt tik skaisti izmantojamu api javascriptā. Izmantojot Play Action composition SimplifiedWebsocketAction Scalā būtu extendots Play WebSocket handleris ar kādām 10-20 rindiņām koda un dažas vienrindu case class vajadzīgajiem eventiem. Edited November 13, 2014 by codez Quote Link to comment Share on other sites More sharing options...
spainis Posted November 13, 2014 Report Share Posted November 13, 2014 socket.io var dabūt http request'u un līdz ar to arī cookies ir pieejami ja gribas izmantot raw websocket'us ar stream'ingu bez ping'iem, upgrade'iem/downgrade'iem un citām socket.io/engine.io fīčām, tad node.js var var izmanot ws package'u Quote Link to comment Share on other sites More sharing options...
yuppio Posted November 13, 2014 Report Share Posted November 13, 2014 Eh, lol. Šitās performances diskusijas ir so 2010, Who cares? Par performances problēmām domās tad, kad viņas būs, ja mēs ņemam konkrēto topicu, tad 30 cilvēku gadījumā performances starpība būs +/- nekāda starp dažādām valodām, viņš to softu var rakstīt pilnīgi jebkur pa lielam, drīzāk jādomā par tīkla performanci utt. Vienkārši ir jāņem valoda, kas pašam ir vispazīstamākā, kas vislabāk montainosies tuvākā nākotnē pašam - tajā arī rakstīt - JS, Scala, Java, C, whatever. Manuprāt līst tagad C vai citā nezināmā pasaulē, bez solid bāzes un rakstīt tur, "jo tā ir kompilēta valoda, tur viss būs labāk" ir vienkārši bezjēdzīgi un ilgtermiņā neatmaksāsies. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted November 14, 2014 Report Share Posted November 14, 2014 socket.io api ir ļoti specializēts un primitivizētsŠie divi jēdzieni nav tā kā pretrunā viens ar otru? Quote Link to comment Share on other sites More sharing options...
jurchiks Posted November 14, 2014 Report Share Posted November 14, 2014 @codez - nu tas jau izskatās daudz jaukāk, vienīgi šajā fragmentā: case Message(msg) if isValidMessage(msg) => formatMessage(msg) case Message(msg) => "Invalid message" Prasās if/else, duplicate case ir nesmuki. Quote Link to comment Share on other sites More sharing options...
codez Posted November 14, 2014 Report Share Posted November 14, 2014 Šie divi jēdzieni nav tā kā pretrunā viens ar otru? Specializēts ir pretstats universāls un nozīmē, ka dara kādu konkrētu uzdevumu. socket.io tika specializēts, lai varētu radīt primitīvāku api, kamēr play websockets api ir universālāks, tāpēc sarežģītāks. @codez - nu tas jau izskatās daudz jaukāk, vienīgi šajā fragmentā: case Message(msg) if isValidMessage(msg) => formatMessage(msg) case Message(msg) => "Invalid message" Prasās if/else, duplicate case ir nesmuki. Šijā vienkāršajā gadījumā jā - pliks if/else ir nedaudz uzskatāmāks, bet attīstot to tālāk case variants paliek uzskatāmāks : case JsonMessage(msg) => doSomeStuffWithJson(msg) case Message(msg) if isMessageA(msg) => doSomeStuffA(msg) case Message(msg) if isMessageB(msg) => doSomeStuffB(msg) case Message(msg) => "Invalid message" Quote Link to comment Share on other sites More sharing options...
jurchiks Posted November 14, 2014 Report Share Posted November 14, 2014 Acīmredzot tas ir subjektīvi, man tomēr labāk patiktu if/else. Tehniski zem apsega šeit ir uztaisīts kaut kas ļoti līdzīgs switch/case fall-through – ja IFs izpildās - break, ja nē - fall-through uz nākamo, tikai vēl lieka datu tipa pārbaude nāk klāt. Quote Link to comment Share on other sites More sharing options...
qwerty Posted November 14, 2014 Author Report Share Posted November 14, 2014 Mēs nevis rakstam projektu no nulles, bet pārrakstām esošu. Salīdzinot ar veco Symphony versiju, No 900ms esam ieguvuši 150ms. (Ar visu tīklu un DB) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.