Telegram láni fyrir sérsniðið úrval greina frá Habr

Fyrir spurningar eins og "af hverju?" það er eldri grein - Natural Geektimes - gera rýmið hreinna.

Það eru margar greinar, af huglægum ástæðum líkar mér sumt þeirra ekki og sumum, þvert á móti, er leitt að sleppa. Mig langar að hagræða þessu ferli og spara tíma.

Greinin hér að ofan lagði til forskriftaraðferð í vafra, en mér líkaði það ekki (jafnvel þó ég hafi notað það áður) af eftirfarandi ástæðum:

  • Fyrir mismunandi vafra á tölvunni þinni/símanum þarftu að stilla það aftur, ef það er mögulegt.
  • Strangar síun eftir höfundum er ekki alltaf þægileg.
  • Vandamálið með höfunda sem þú vilt ekki missa af greinum, jafnvel þó að þær séu birtar einu sinni á ári, hefur ekki verið leyst.

Sía innbyggð inn á síðuna út frá einkunnagjöf greina er ekki alltaf þægileg, þar sem mjög sérhæfðar greinar geta, þrátt fyrir gildi þeirra, fengið frekar hóflega einkunn.

Upphaflega vildi ég búa til RSS straum (eða jafnvel nokkra) og skilja aðeins eftir áhugaverða hluti þar. En á endanum kom í ljós að lestur RSS virtist ekki mjög þægilegur: í öllu falli, til að skrifa athugasemdir/kjósa grein/bæta henni við eftirlæti þitt, verður þú að fara í gegnum vafrann. Þess vegna skrifaði ég símskeyti sem sendir mér áhugaverðar greinar í persónulegum skilaboðum. Telegram gerir sjálft fallegar forsýningar úr þeim, sem ásamt upplýsingum um höfundinn/einkunnina/skoðanir lítur nokkuð fræðandi út.

Telegram láni fyrir sérsniðið úrval greina frá Habr

Fyrir neðan klippuna eru smáatriði eins og eiginleikar verksins, ritunarferlið og tæknilegar lausnir.

Stuttlega um botninn

Geymsla: https://github.com/Kright/habrahabr_reader

Bot í símskeyti: https://t.me/HabraFilterBot

Notandinn setur viðbótareinkunn fyrir merki og höfunda. Eftir það er sía sett á greinarnar - einkunn greinarinnar á Habré, notendaeinkunn höfundar og meðaltal notendaeinkunna eftir merki eru lögð saman. Ef magnið er hærra en notandi tilgreint þröskuld, þá stenst greinin síuna.

Hliðarmarkmið við að skrifa vélmenni var að öðlast gaman og reynslu. Auk þess minnti ég mig reglulega á það Ég er ekki Google, og því er margt gert eins einfaldlega og jafnvel frumstætt og hægt er. Hins vegar kom þetta ekki í veg fyrir að ferlið við að skrifa botninn tók þrjá mánuði.

Það var sumar úti

Júlí var á enda og ég ákvað að skrifa bot. Og ekki einn, heldur með vinkonu sem var að ná tökum á scala og vildi skrifa eitthvað um það. Byrjunin lofaði góðu - kóðinn yrði klipptur af teymi, verkefnið virtist auðvelt og ég hélt að eftir nokkrar vikur eða mánuð yrði botninn tilbúinn.

Þrátt fyrir að ég hafi sjálfur verið að skrifa kóða á steininn af og til undanfarin ár, þá sér eða lítur yfirleitt enginn á þennan kóða: gæludýraverkefni, prófa hugmyndir, forvinna gögn, ná tökum á sumum hugtökum úr FP. Ég hafði mikinn áhuga á því hvernig ritun kóða í teymi lítur út, því kóða á steini er hægt að skrifa á mjög mismunandi vegu.

Hvað hefði getað farið svo? Hins vegar skulum við ekki flýta okkur.
Allt sem gerist er hægt að rekja með því að nota skuldbindingarsöguna.

Kunningi bjó til geymslu 27. júlí en gerði ekkert annað, svo ég byrjaði að skrifa kóða.

30 júlí

Í stuttu máli: Ég skrifaði greiningu á rss straumi Habr.

  • com.github.pureconfig til að lesa typesafe stillingar beint inn í málaflokka (það reyndist mjög þægilegt)
  • scala-xml til að lesa xml: þar sem ég ætlaði upphaflega að skrifa mína eigin útfærslu fyrir rss strauminn og rss straumurinn er á xml sniði, notaði ég þetta bókasafn til að flokka. Reyndar birtist RSS þáttun líka.
  • scalatest fyrir próf. Jafnvel fyrir örsmá verkefni sparar það tíma að skrifa próf - til dæmis þegar kembiforritið er í xml-greiningu er miklu auðveldara að hlaða því niður í skrá, skrifa próf og leiðrétta villur. Þegar síðan kom upp galli með að flokka eitthvað undarlegt HTML með ógildum utf-8 stöfum, þá reyndist þægilegra að setja það í skrá og bæta við prófi.
  • leikarar frá Akka. Hlutlægt var alls ekki þörf á þeim, en verkefnið var skrifað til gamans, mig langaði að prófa þau. Þar af leiðandi er ég tilbúinn að segja að mér líkaði það. Hugmyndina um OOP er hægt að skoða frá hinni hliðinni - það eru leikarar sem skiptast á skilaboðum. Það sem er meira áhugavert er að þú getur (og ættir) að skrifa kóða á þann hátt að skilaboðin berist ekki eða verði ekki unnin (almennt talað, þegar reikningurinn er í gangi á einni tölvu, ættu skilaboð ekki að tapast). Í fyrstu var ég að klóra mér í hausnum og það var rusl í kóðanum þar sem leikarar voru áskrifendur hver að öðrum, en á endanum tókst mér að koma með frekar einfaldan og glæsilegan arkitektúr. Kóðinn inni í hverjum leikara getur talist einþráður; þegar leikari hrapar, endurræsir acca hann - niðurstaðan er nokkuð bilanaþolið kerfi.

9 ágúst

Ég bætti við verkefnið scala-scrapper til að flokka html síður úr Habr (til að draga út upplýsingar eins og einkunnagjöf greina, fjölda bókamerkja osfrv.).

Og Kettir. Þeir sem eru í berginu.

Telegram láni fyrir sérsniðið úrval greina frá Habr

Ég las síðan bók um dreifða gagnagrunna, mér líkaði hugmyndin um CRDT (átakalaus endurtekin gagnategund, https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type, habr), þannig að ég setti inn tegundaflokk af commutative hálfhópi til að fá upplýsingar um greinina um Habré.

Í raun er hugmyndin mjög einföld - við höfum teljara sem breytast eintóna. Fjöldi kynninga er smám saman að aukast, sem og fjöldi plúsa (sem og fjöldi mínus). Ef ég er með tvær útgáfur af upplýsingum um grein, þá get ég „sameinað þær í eina“ - ástand teljarans sem er stærri er talið viðeigandi.

Hálfhópur þýðir að hægt er að sameina tvo hluti með upplýsingum um grein í einn. Commutative þýðir að þú getur sameinað bæði A + B og B + A, niðurstaðan fer ekki eftir röðinni og á endanum verður nýjasta útgáfan áfram. Við the vegur, það er líka félagsskapur hér.

Til dæmis, eins og áætlað var, gaf rss eftir þáttun örlítið veikar upplýsingar um greinina - án mælikvarða eins og fjölda skoðana. Sérstakur leikari tók síðan upplýsingar um greinarnar og hljóp á html síðurnar til að uppfæra þær og sameina þær gömlu útgáfunni.

Almennt talað, eins og í akka, þá var engin þörf á þessu, þú gætir einfaldlega geymt updateDate fyrir greinina og tekið nýrri án samruna, en ævintýraleiðin leiddi mig.

12 ágúst

Mér fór að líða frjálsari og til gamans gerði ég hvert spjall að sérstökum leikara. Fræðilega séð vegur leikari sjálfur um 300 bæti og hægt er að búa þau til í milljónum, þannig að þetta er alveg eðlileg nálgun. Mér sýnist að lausnin hafi reynst nokkuð áhugaverð:

Einn leikarinn var brú á milli símskeytaþjónsins og skilaboðakerfisins á Akka. Hann fékk einfaldlega skilaboð og sendi þau til viðkomandi spjallleikara. Spjallleikarinn gæti sent eitthvað til baka sem svar - og það yrði sent aftur í símskeyti. Það sem var mjög þægilegt er að þessi leikari reyndist vera eins einfaldur og hægt var og innihélt aðeins rökfræði til að svara skilaboðum. Við the vegur, upplýsingar um nýjar greinar komu í hvert spjall, en aftur ég sé engin vandamál í þessu.

Almennt séð var botninn þegar að vinna, svaraði skilaboðum, geymdi lista yfir greinar sem sendar voru til notandans og ég var þegar að hugsa um að botninn væri næstum tilbúinn. Ég bætti hægt og rólega við litlum eiginleikum eins og að staðla höfundanöfn og merki (að skipta út „sd f“ fyrir „s_d_f“).

Það var aðeins eitt eftir lítið en — ríkinu var hvergi bjargað.

Allt varð vitlaust

Þú hefur kannski tekið eftir því að ég skrifaði botninn að mestu ein. Svo tók annar þátttakandinn þátt í þróuninni og eftirfarandi breytingar birtust í kóðanum:

  • MongoDB virtist geyma ástand. Á sama tíma voru loggarnir í verkefninu brotnir, því af einhverjum ástæðum byrjaði Monga að spamma þá og sumir slökktu einfaldlega á þeim á heimsvísu.
  • Brúarleikarinn í Telegram var umbreytt óþekkjanlega og byrjaði sjálfur að flokka skilaboð.
  • Leikarar fyrir spjall voru miskunnarlaust skornir út og í staðinn var skipt út fyrir leikara sem faldi allar upplýsingar um öll spjall í einu. Fyrir hvert hnerra fór þessi leikari í vandræði. Jæja, já, eins og þegar þú uppfærir upplýsingar um grein, er erfitt að senda þær til allra spjallspilara (við erum eins og Google, milljónir notenda bíða eftir milljón greina í spjallinu fyrir hvern), en í hvert skipti sem spjallið er uppfært, það er eðlilegt að fara inn í Monga. Eins og ég áttaði mig á löngu seinna var vinnurökfræði spjallanna líka alveg skorin út og í staðinn birtist eitthvað sem virkaði ekki.
  • Það er engin ummerki eftir af tegundaflokkunum.
  • Einhver óholl rökfræði hefur birst í leikarunum með áskrift þeirra að hvor öðrum, sem leiðir til keppnisástands.
  • Gagnaskipulag með tegundarsviðum Option[Int] breytt í Int með töfrandi sjálfgefnum gildum eins og -1. Seinna áttaði ég mig á því að mongoDB geymir json og það er ekkert að því að geyma það þar Option jæja, eða að minnsta kosti flokka -1 sem Enginn, en á þeim tíma vissi ég þetta ekki og tók orð mín fyrir það að "svona ætti það að vera." Ég skrifaði ekki þennan kóða og ég nennti ekki að breyta honum í bili.
  • Ég komst að því að opinbera IP tölu mín hefur tilhneigingu til að breytast og í hvert skipti sem ég þurfti að bæta því við hvíta listann yfir Mongo. Ég setti botninn af stað á staðnum, Monga var einhvers staðar á netþjónum Monga sem fyrirtækis.
  • Skyndilega hvarf staðlað merkja og skilaboðasniðs fyrir símskeyti. (Hmm, af hverju ætti það að vera?)
  • Mér líkaði að ástand botnsins er geymt í ytri gagnagrunni og þegar það er endurræst heldur það áfram að virka eins og ekkert hafi í skorist. Hins vegar var þetta eini plúsinn.

Annar maðurinn var ekkert að flýta sér og allar þessar breytingar birtust í einum stórum hrúgu þegar í byrjun september. Ég gerði mér ekki strax grein fyrir umfangi eyðileggingarinnar sem af þessu leiddi og fór að skilja vinnu gagnagrunnsins, vegna þess að... Ég hef aldrei tekist á við þá áður. Aðeins seinna áttaði ég mig á hversu mikill vinnukóði var skorinn og hversu mörgum villum var bætt við í staðinn.

September

Í fyrstu hélt ég að það væri gagnlegt að ná tökum á Monga og gera það vel. Svo fór ég hægt og rólega að skilja að það að skipuleggja samskipti við gagnagrunninn er líka list þar sem hægt er að gera fullt af hlaupum og gera bara mistök. Til dæmis, ef notandinn fær tvö skilaboð eins og /subscribe - og til að bregðast við hverjum og einum munum við búa til færslu í töflunni, vegna þess að þegar þessi skilaboð eru unnin er notandinn ekki áskrifandi. Ég hef grun um að samskipti við Monga í núverandi mynd séu ekki skrifuð á besta hátt. Til dæmis voru stillingar notandans búnar til þegar hann skráði sig. Ef hann reyndi að breyta þeim áður en áskriftin gerðist... svaraði botninn engu, því kóðinn í leikaranum fór inn í gagnagrunninn fyrir stillingarnar, fann hann ekki og hrundi. Þegar ég var spurður hvers vegna ekki væri búið að búa til stillingar eftir þörfum, komst ég að því að það er engin þörf á að breyta þeim ef notandinn hefur ekki gerst áskrifandi... Skilaboðasíunarkerfið var gert einhvern veginn óljóst og jafnvel eftir að hafa skoðað kóðann vel skil ekki hvort það hafi verið ætlað svona upphaflega eða það er villa þarna.

Það var enginn listi yfir greinar sem sendar voru á spjallið, í staðinn var lagt til að ég skrifaði þær sjálfur. Þetta kom mér á óvart - almennt séð var ég ekki á móti því að draga alls konar hluti inn í verkefnið, en það væri rökrétt fyrir þann sem kom með þessa hluti inn og klúðraði þeim. En nei, seinni þátttakandinn virtist gefast upp á öllu, en sagði að listinn inni í spjallinu væri álitinn slæm lausn og það væri nauðsynlegt að gera skilti með viðburðum eins og „grein y var send til notanda x.“ Síðan, ef notandi óskaði eftir því að senda nýjar greinar, var nauðsynlegt að senda beiðni í gagnagrunninn, sem myndi velja atburði tengda notandanum úr viðburðunum, einnig fá lista yfir nýjar greinar, sía þær, senda til notandans og henda atburðum um þetta aftur inn í gagnagrunninn.

Annar þátttakandinn var fluttur einhvers staðar í átt að abstraktum, þegar botninn mun ekki aðeins fá greinar frá Habr og verða sendar ekki aðeins í símskeyti.

Ég útfærði einhvern veginn atburði í formi sérstakt skilti fyrir seinni hluta september. Það er ekki ákjósanlegt, en að minnsta kosti byrjaði botninn að virka og byrjaði að senda mér greinar aftur, og ég fann hægt út hvað var að gerast í kóðanum.

Nú geturðu farið aftur til upphafsins og muna að geymslan var ekki upphaflega búin til af mér. Hvað gæti hafa farið svona? Beiðni minni um aðdraganda var hafnað. Það kom í ljós að ég var með redneck kóða, að ég vissi ekki hvernig á að vinna í teymi og ég þurfti að laga villur í núverandi útfærsluferil, en ekki betrumbæta hann í nothæft ástand.

Ég varð í uppnámi og horfði á skuldbindingarferilinn og magn kóðans sem skrifaður var. Ég horfði á augnablik sem voru upphaflega vel skrifuð og síðan brotin aftur...

F*rk það

Ég mundi eftir greininni Þú ert ekki Google.

Ég hélt að enginn þyrfti í raun hugmynd án útfærslu. Ég hugsaði með mér að ég vilji hafa virkan botn, sem mun virka í einu eintaki á einni tölvu sem einfalt Java forrit. Ég veit að vélmenni minn mun virka í marga mánuði án endurræsingar, þar sem ég hef þegar skrifað slíka vélmenni áður. Ef það dettur skyndilega og sendir notandanum ekki aðra grein mun himinninn ekki falla til jarðar og ekkert skelfilegt gerist.

Af hverju þarf ég Docker, mongoDB og annan farmdýrkun „alvarlegra“ hugbúnaðar ef kóðinn einfaldlega virkar ekki eða virkar skakkt?

Ég gaf mér verkefnið og gerði allt eins og ég vildi.

Telegram láni fyrir sérsniðið úrval greina frá Habr

Um svipað leyti skipti ég um vinnu og frítímanum vantaði sárlega. Um morguninn vaknaði ég strax í lestinni, á kvöldin kom ég seint til baka og vildi ekkert gera lengur. Ég gerði ekkert í smá stund, þá barst löngunin til að klára botninn yfir mig og ég byrjaði að endurskrifa kóðann hægt og rólega á meðan ég var að keyra í vinnuna á morgnana. Ég segi ekki að það hafi verið afkastamikið: að sitja í hristandi lest með fartölvu í kjöltunni og horfa á flæði stafla úr símanum þínum er ekki mjög þægilegt. Tíminn sem fór í að skrifa kóða flaug hins vegar fram hjá algjörlega óséður og verkefnið fór hægt og rólega að færast í átt að vinnuástandi.

Einhvers staðar aftan í huga mér var ormur efasemdar sem vildi nota mongoDB, en ég hélt að til viðbótar við kosti „áreiðanlegrar“ ríkisgeymslu væru áberandi ókostir:

  • Gagnagrunnurinn verður enn einn bilunarstaðurinn.
  • Kóðinn er að verða flóknari og það mun taka mig lengri tíma að skrifa hann.
  • Kóðinn verður hægur og óhagkvæmur; í stað þess að breyta hlut í minni eru breytingarnar sendar í gagnagrunninn og, ef nauðsyn krefur, dregnar til baka.
  • Það eru takmarkanir á tegund geymslu atburða í sérstakri töflu, sem tengjast sérkenni gagnagrunnsins.
  • Reynsluútgáfan af Monga hefur nokkrar takmarkanir og ef þú lendir í þeim verður þú að ræsa og stilla Monga á eitthvað.

Ég klippti út mongann, nú er ástand botnsins einfaldlega vistað í minni forritsins og af og til vistað í skrá í formi json. Kannski skrifa þeir í athugasemdirnar að ég hafi rangt fyrir mér, að þarna eigi að nota gagnagrunninn o.s.frv. En þetta er mitt verkefni, nálgunin með skránni er eins einföld og hægt er og hún virkar á gagnsæjan hátt.

Kasta út töfragildum eins og -1 og skilaði venjulegum Option, bætti við geymslu á kjötkássatöflu með sendum greinum aftur í hlutinn með spjallupplýsingum. Bætt við eyðingu upplýsinga um greinar eldri en fimm daga, til að geyma ekki allt. Ég færði skógarhögg í virkt ástand - annálar eru skrifaðar í hæfilegu magni bæði í skrána og stjórnborðið. Bætti við nokkrum stjórnandaskipunum eins og að vista ástand eða fá tölfræði eins og fjölda notenda og greina.

Lagað fullt af litlum hlutum: til dæmis fyrir greinar er fjöldi skoðana, líkar við, mislíkar og athugasemdir þegar sía notandans var gefin framhjá. Almennt séð kemur það á óvart hversu mörg smáatriði þurfti að leiðrétta. Ég hélt lista, skráði allar „óreglurnar“ þar og leiðrétti þær eins og ég gat.

Til dæmis bætti ég við möguleikanum á að stilla allar stillingar beint í einum skilaboðum:

/subscribe
/rating +20
/author a -30
/author s -20
/author p +9000
/tag scala 20
/tag akka 50

Og annað lið /settings sýnir þær nákvæmlega á þessu formi geturðu tekið textann úr því og sent allar stillingar til vinar.
Það virðist vera lítill hlutur, en það eru heilmikið af svipuðum blæbrigðum.

Innleidd greinasíun í formi einfalds línulegs líkans - notandinn getur sett viðbótareinkunn fyrir höfunda og merki, sem og þröskuldsgildi. Ef summan af einkunn höfundar, meðaleinkunn fyrir merki og raunveruleg einkunn greinarinnar er hærri en viðmiðunargildið, þá er greinin sýnd notandanum. Þú getur annað hvort beðið botninn um greinar með skipuninni /new, eða gerst áskrifandi að botninum og hann mun senda greinar í persónulegum skilaboðum hvenær sem er dagsins.

Almennt séð hafði ég hugmynd fyrir hverja grein til að draga fram fleiri eiginleika (hubs, fjölda athugasemda, bókamerki, gangverki einkunnabreytinga, magn texta, mynda og kóða í greininni, lykilorð), og sýna notandanum allt í lagi/ ekki í lagi að kjósa undir hverja grein og þjálfa módel fyrir hvern notanda, en ég var of latur.

Auk þess verður rökfræði verksins ekki svo augljós. Nú get ég stillt einkunnina +9000 handvirkt fyrir patientZero og með þröskuldseinkunnina +20 mun ég vera tryggð að fá allar greinar hans (nema ég setji auðvitað -100500 fyrir sum merki).

Endanleg arkitektúr reyndist vera frekar einföld:

  1. Leikari sem geymir stöðu allra spjalla og greina. Það hleður stöðu sinni úr skrá á disknum og vistar það aftur af og til, í hvert skipti í nýja skrá.
  2. Leikari sem heimsækir RSS strauminn af og til, lærir um nýjar greinar, skoðar tenglana, greinir og sendir þessar greinar til fyrsta leikarans. Auk þess biður það stundum um lista yfir greinar frá fyrsta leikaranum, velur þær sem eru ekki eldri en þriggja daga, en hafa ekki verið uppfærðar í langan tíma, og uppfærir þær.
  3. Leikari sem hefur samskipti með símskeyti. Ég kom samt með skilaboðaþáttunina alveg hingað. Á vinsamlegan hátt vil ég skipta því í tvennt - þannig að annar flokkar skilaboð sem berast, og sú seinni fjallar um flutningsvandamál eins og endursendur ósend skilaboð. Nú er engin endursending og skilaboð sem ekki komu vegna villu munu einfaldlega glatast (nema það sé tekið fram í logs) en hingað til hefur þetta ekki valdið neinum vandræðum. Kannski koma upp vandamál ef fullt af fólki gerist áskrifandi að botni og ég nái mörkunum fyrir að senda skilaboð).

Það sem mér líkaði er að þökk sé akka hafa fall leikara 2 og 3 almennt ekki áhrif á frammistöðu botnsins. Kannski eru sumar greinar ekki uppfærðar á réttum tíma eða sum skilaboð berast ekki símskeyti, en reikningurinn endurræsir leikarann ​​og allt heldur áfram að virka. Ég geymi upplýsingarnar um að greinin sé aðeins sýnd notandanum þegar símskeyti leikarinn svarar að honum hafi tekist að koma skilaboðunum til skila. Það versta sem ógnar mér er að senda skilaboðin nokkrum sinnum (ef þau eru afhent, en staðfestingin er einhvern veginn týnd). Í grundvallaratriðum, ef fyrsti leikarinn geymdi ekki ríkið í sjálfum sér, heldur átti samskipti við einhvern gagnagrunn, þá gæti hann líka fallið ómerkjanlega og farið aftur til lífsins. Ég gæti líka reynt akka þrautseigju til að endurheimta ástand leikara, en núverandi útfærsla hentar mér með einfaldleika sínum. Það er ekki það að kóðinn minn hafi hrunið oft - þvert á móti lagði ég töluvert mikið á mig til að gera það ómögulegt. En skítkast gerist og hæfileikinn til að skipta prógramminu niður í einangruð stykki - leikarar fannst mér mjög þægilegt og hagnýt.

Ég bætti við circle-ci þannig að ef kóðinn bilar muntu strax komast að því. Að minnsta kosti þýðir það að kóðinn er hætt að safna saman. Upphaflega vildi ég bæta Travis við, en það sýndi aðeins verkefnin mín án gaffla. Almennt séð er hægt að nota báða þessa hluti frjálslega í opnum geymslum.

Niðurstöður

Það er nú þegar kominn nóvember. Botninn er skrifaður, ég hef notað það síðustu tvær vikur og líkaði það. Ef þú hefur hugmyndir til úrbóta skaltu skrifa. Ég sé ekki tilganginn í því að afla tekna - láttu það bara virka og sendu áhugaverðar greinar.

Bot tengill: https://t.me/HabraFilterBot
Github: https://github.com/Kright/habrahabr_reader

Lítil ályktun:

  • Jafnvel lítið verkefni getur tekið mikinn tíma.
  • Þú ert ekki Google. Það þýðir ekkert að skjóta spörva úr fallbyssu. Einföld lausn gæti virkað eins vel.
  • Gæludýraverkefni eru mjög góð til að gera tilraunir með nýja tækni.
  • Telegram vélmenni eru skrifuð einfaldlega. Ef það væri ekki fyrir "teymisvinnu" og tilraunir með tækni, hefði botninn verið skrifaður eftir viku eða tvær.
  • Leikarafyrirmyndin er áhugaverður hlutur sem fer vel með fjölþráðum og bilunarþolnum kóða.
  • Ég held að ég hafi fengið að smakka á því hvers vegna opinn uppspretta samfélagið elskar gaffla.
  • Gagnagrunnar eru góðir vegna þess að umsóknarástand er ekki lengur háð því að forrit hrynji/endurræsir, en vinna með gagnagrunn flækir kóðann og setur takmarkanir á gagnaskipulagið.

Heimild: www.habr.com

Bæta við athugasemd