Bot telegraphum personale lectio articulorum ex Habr

Nam sicut quaestiones "quare?" maior est articulus - Natural Geektimes - spatium mundius.

Articuli multum sunt, ob rationes subjectivas quarum quaedam mihi non placet, quaedam e contrario miseratio est praeterire. Hoc processus optimize velim et tempori conservandum.

Articulus superior suggessit accessionem in- scriptionis pascendi, sed non vere amo (quamvis ante usus sum) ob has causas:

  • Pro diversis navigatoribus in computatrum/phone tuum, debes iterum configurare, si fieri potest.
  • Stricte ab auctoribus eliquare non semper convenit.
  • Problema cum auctoribus quorum articulis desiderare non vis, etiamsi semel in anno eduntur, solutum non est.

Filtrum aedificatum in locum secundum aestimationes articuli non semper opportunum est, cum articulis specialioribus, licet eorum pretii, modestius recipere possint aestimationem.

Initio volui generare RSS feed (vel etiam plures), tantum interesting res ibi relinquens. Sed in fine, accidit ut lectio RSS non videatur commodissima: certe, ad comment/suffragium pro articulum/addendo favoribus tuis, ire per pasco debes. Quam ob rem scripsi telegraphum automati quod mihi misit articulos iucundos in nuntio personali. Ipsum Telegram speciosam praevium ex iis facit, quae, coniuncta cum informationibus de auctor/rating/sententiarum, satis informativum spectat.

Bot telegraphum personale lectio articulorum ex Habr

Infra incisa singula sunt qualia sunt lineamenta operis, processus scripturae et solutiones technicae.

Bot breviter de

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

Bot in telegrapho: https://t.me/HabraFilterBot

Usor addit aestimationem pro tags et auctoribus addit. Post hoc, filtrum ad articulos applicatur - in HabrΓ© aestimationem articuli auctoris usoris et mediocris pro user ratings per tag additae sunt. Si moles maior est quam limen utentis-certum, articulus colum transit.

Finis inde a scribendo automaton erat ut iocum et experientiam haberem. Praeterea semper me commonefeci Non sum Googleet ideo multa simpliciter et primo modo possibilia fiunt. Sed hoc non impedivit processus scribendi per tres menses sumere.

Erat aestas extra

Iulio desinente, et decrevi bot scribere. Et non solum, sed cum amico, qui scalam domabat et aliquid in ea scribere cupiebat. Initium spectavi promittens - codicem a team secabitur, negotium facile videbatur et putabam in duobus hebdomadibus vel mense autocinetum paratum fore.

Quamquam memet ipsum codicem in Petram scripsisse subinde his annis paucis, nemo hunc codicem videri solet aut spectat: pet incepta quaedam notiones tentans, notitias praeprocessionales, notiones aliquas e prima parte compescens. Ego vere quaero quid in codice scribendo in turma simile sit, nam signum super petram longe aliter scribi potest.

Quid potuit? ita? Sed non ruamus omnia.
Omnia, quae fiunt, pervestigari possunt ad historiam faciendam.

Notus repositorium creavit die 27 mensis Iulii, sed nihil aliud fecit, ut codicem scribere coepi.

Iulii 30

Breviter: Scripsi parsing pascendi Habr.

  • com.github.pureconfig nam legere typesafe configs recta in classes (commodum commodum evasit)
  • scala-xml pro xml legendo: ex quo initio volui scribere meam exsecutionem pro rss feed, et rss feed in xml forma, hac bibliotheca ad parsing usus sum. Profecto RSS parsing etiam apparuit.
  • scalatest ad probat. Etiam pro minimis inceptis, scribens probat tempus servat - exempli gratia, cum debugging xml parsing, multo facilius est eam limam extrahere, scribere probationes et errores corrigere. Cum cimex postea apparuit cum HTML parsing extranea cum characteribus utf-8 invalidis, hoc commodius evasit ut in lima poneret et experimentum adderet.
  • actores ab Akka. Objective, omnino non erant necessariae, sed consilium scriptum est pro ioco, ea experiri volui. Quam ob rem paratus sum dicere me id amasse. Idea OOP ex altera parte spectari potest - actores sunt qui nuntios commutant. Quid plus interesting est quod codicem scribere potes (et debet) ita scribere ut nuntius non veniat aut non possit (vulgo loquendo, cum ratio currit in uno computato, epistulae non amittendae sunt). Primum caput scalpebam et nugas erat in codice cum histriones inter se scribentes, sed in fine simplicius et elegantius architecturae ascendere potui. Codex intra unumquemque actorem solus liciatus considerari potest: cum histrio inruerit, acca sileo eum - effectus est satis culpae tolerantior.

August 9

Et addidit ad project scala-scrapper ad HTML paginas dividendas ab Habr (ut informationes trahas sicut articuli aestimationem, numerum notarum, etc.).

et Caes. Isti in petra.

Bot telegraphum personale lectio articulorum ex Habr

Librum deinde de databases distributum lego, notionem CRDT (Conflict-liberae datae speciei replicatae); https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type, habr) itaque genus semigroupi commutativae pro informatione de articulo in Habre posuimus.

Revera, idea valde simplex est - contraria habemus quae monotonice mutantur. Numerus promotionum paulatim crescit, sicut numerus pluses (tum numerus minusuum). Si duae versiones informationum circa articulum habeo, tunc "in unum confundere possum" - status calculi qui maior est magis ad rem pertinet.

Semigroup significat duo obiecta cum informatione circa articulum in unum mergi possunt. Significationes commutativae ut utrumque A + B et B + A confundi possis, effectus non ex ordine pendet, et in fine novissima versio manebit. Obiter etiam hic est societas.

Exempli gratia, ut institutum est, rss post parsing informationes de articulo - sine metri tali numero sententiarum leviter debilitatas praebebat. Specialis actor tunc informationes circa articulos accepit et ad paginas html cucurrit ut eam renovaret et cum veteri versione confunderet.

Generaliter, ut in akka, hoc opus non erat, tu simpliciter reponere renovationem pro articulo et noviorem sine ullis mergis capere, sed itineris casus me ducebat.

August 12

Liberius sentire coepi et, sicut pro ioco, singulas chat seorsum histriones feci. Actor ipse theoretice circiter CCC bytes ponderat et in decies centena milia creari possunt, haec est omnino normalis accessus. Mihi videtur solutionem evasisse satis interesting;

Unus actor pons erat inter telegraphum server et nuntius systematis in Akka. Ille nuntios accepit simpliciter et misit ad chat actor optati. Actor chat aliquid remittere potuit respondens - et ad telegraphum remitti posset. Quod valde commodum est, hunc actorem evasit quam simplex et solum logicam ad nuntiis respondendi contineri. Obiter informationes de articulis novis ad omnes chat pervenerunt, sed iterum difficultates in hoc non video.

In universum bot iam laborabat, nuntiis respondens, indicem rerum ad utentem missos recondens, et iam ratus autocinetum prope paratum esse. Tarde paulatim lineamenta addidi sicut nomina et tags normalizing auctoris (reposuit "sd f" cum "s_d_f").

Unus tantum fuit residuum parvum autem β€” neque usquam respublica servata est.

Omnia abiit iniuriam

Animadvertis licet me potissimum soli bot scripsisse. Ita, participem alterum in progressionem haesisse, et sequentes mutationes in codice apparuerunt;

  • Apparuit copia civitatis MongoDB. Eodem tempore, ligna in exertus confracta sunt, quod aliqua de causa Monga eos spamming incepit et aliqui simpliciter globally eos averterunt.
  • Actor pons in Telegram ultra recognitionem mutatus est et nuntios ipse parsing incepit.
  • Actores pro confabulationibus inclementer excisi sunt, et pro histrioni substituti sunt qui omnes nuntios de omnibus sermonibus simul absconderunt. Pro omni sternumenta, hic actor in malum abiit. Bene, ita, sicut cum adaequationis informationes circa articulum mittendo ad omnes actores chat difficile est (similis sumus Google, decies centena millia usorum exspectant decies centena millia articulorum in chat singulis), sed omne tempus chat renovatur; Monga ire in normalem est. Sicut multo post percepi, logica sermonum etiam omnino excidit et in eius loco aliquid apparuit quod non laboravit.
  • Nullum genus classium vestigium relictum est.
  • Logica quaedam pestilens apparuit in histrionibus cum subscriptionibus inter se ducens conditionem quandam.
  • Data structurae in agris generis Option[Int] vertitur in Int cum magicis default valores sicut -1. Postea intellexi mongoDB thesauros jsonum et nihil mali esse in ea reponenda Option bene, vel saltem parse -1 as None, sed tunc hoc nesciebam et verbum meum pro eo decepi quod "sicut fieri debet". Non scripsi codicem, et mutato tempore temporis non molestus sum.
  • Inveni meam IP oratio mea publica ad mutationem tendere, et quoties habui ad Mongo album album addere. Bot locale demisi, Monga alicubi erat in ministris Monga societas.
  • Repente ordinationem tags ac nuntium formatting pro telegraphis evanuit. (Hmm, cur hoc sit?)
  • Placuit statum bottae in datorum externa conditum esse, et cum restarted operari pergit quasi nihil accidisset. Sed id erat nisi.

Secunda persona minime festinabatur, et omnes hae mutationes in uno magno acervo iam ineunte Septembris apparuerunt. Non statim probavi scalam destructionis consequens et opus datorum intelligere coepi, quia... cum illis nunquam antea egimus. Tantum postea intellexi quantum opus incisum sit codicem et quot cimices suo loco adiciantur.

September

In primis utilem esse duxi Monga magistro et bene facere. Tunc sensim incepi intelligere communicationem cum datorum ordinandis esse etiam artem in qua multum curriculis facere potes et errare modo. Exempli gratia, si usor duas epistulas accipit /subscribe - et singulis responsionibus ingressum in mensa creabimus, quia tempore processus illas nuntios usor non subscripsit. Suspicor communicationem cum Monga in forma hodierna non optime scripta esse. Exempli gratia, occasus usoris creatus est momento signavit. Si ante subscriptionis factum mutare conatus est... automati nihil responderet, quia signum actorem in uncinis datorum introivit, non repperit et increpuit. Cum quaesitus cur non crearet occasus prout opus erat, didici quod non opus est eas mutare si usor non subscripsit... Nuntio ratio eliquandi aliquo modo non manifesto facta est, et etiam post inspiciendum codicem quem potui non intellego utrum hoc modo initio destinatum sit an illic error sit.

Nullus erat index articulorum in chato submissos, sed suggerebatur me ipsos scribere. Hoc me miratus sum, in universum, non contra omnium rerum in consilium traherem, sed consentaneum esset ei qui haec introduxit et veniam dedit. Sed non, secundus particeps in omnibus dare videbatur, sed album intra chat malam solutionem esse dixit, et necesse erat ut signum faceret sicut "articulus y usor x." Deinde, si utens postulavit ut novas articulos mitteret, rogationem datorum mittere oportuit, quae eventa ad usorem ex eventibus eligerent, etiam indicem novorum articulorum accipere, eos spargere, eos usore mittere. et res de hoc in datorum reditum mittent.

Secundus particeps alicubi ad abstractiones ablatus est, cum bot non solum vasa ab Habr recipiet et non solum ad telegraphum mittetur.

Nescio quomodo eventus effectus in specie signi separati pro secunda parte mensis Septembris. Non optimal est, sed saltem opus autocinetum incepit et iterum me mittere articulos coepit, et lente figuravi quid in codice fiebat.

Nunc ad initium redire potes et memento conditorium a me conditum non fuisse. Quid eo processit? Rogatio viverra repudiata est. Contigit quod codicem redneck habui, me nescire in quadrigis laborare, et cimices figere in curva exsecutione habui, nec excolere ad statum utibile.

Ego perturbatus sum et vidi historiam committere et quantitatem codicis scripsisse. Vidi momenta quae bene scripta erant, et postea fracta sunt.

F * rk it

Recordatus articulus Non es Google.

Putavi neminem vere ideam sine exsecutione indigere. Putavi me velle automatarium habere, quod in uno exemplari in uno uno computatrum sicut simplex Java progressionis operabitur. Scio me autocinetum meum mensibus sine restarts operari, cum iam antea tales automata scripsissem. Si subito ceciderit et non mittet alium articulum utentem, caelum non cadet in terram et nihil calamitosum fiet.

Cur mihi opus est Docker, mongoDB, aliaque oneraria cultui programmatis "gravis", si signum simpliciter non laborat vel prave operatur?

Inceptum trisulcum feci et omnia sicut volui feci.

Bot telegraphum personale lectio articulorum ex Habr

Per idem tempus, jobs mutavi et otium valde defuit. Mane evigilavi in ​​comitatu, sero sero redii et facere nihil volui. Nihil ad tempus egi, tum desiderium perficiendi automati me oppressit, et incepi lente rescribere codicem dum adigebat mane ad operandum. Non dixerim fructuosum esse: sedentem in tramine tremulo cum laptop in sinum tuum et spectans ACERVUS redundantiam e telephonico tuo non est valde commodum. Sed tempus scribendi codicem penitus ignorari volavit, et consilium coepit paulatim movere ad statum laborantem.

Alicubi in dorsum mentis meae vermis dubitationis erat, qui mongoDB uti volebat, sed praeter commoda status repositionis "fidelis" putavi notabiles esse incommoda;

  • Database aliud punctum deficiendi fit.
  • Codex magis implicatus est, et me iam scribere tollet.
  • Codex tardus et inhabilis fit, loco rei in memoriam mutando, mutationes datorum mittuntur et, si opus est, retractantur.
  • Reductiones rerum in mensa separata sunt restrictiones, quae cum proprietatibus datorum coniunguntur.
  • Monga versio iudicii aliquas limitationes habet, et si in eas incurras, Monga aliquid mittere et configurare debebis.

Monga excisi, nunc status bot in memoria curriculi conditus est et subinde ad limam in forma json servatus est. Fortassis in commentarios scribent quod fallor, hoc est ubi datorum utendum est, etc. Sed hoc consilium meum est, aditus tabella quam maxime simplex est et modo perspicuo operatur.

Eiecit valores magicos sicut -1 et reddidit normales Option, addita reposita de mensa detrahe cum articulis remissis ad rem per informationes chat. Addidit deletionem informationes de articulis quinque diebus vetustiores, ita ut non omnia recondant. Logicam ad statum laborantem attuli - tigna in rationabili quantitate tam tabellae quam console scripta sunt. Plures addidit admin imperata ut statum salvificum vel obtinendum statistica ut numerus utentium et articulorum.

Fasciculum rerum parvarum fixum: exempli gratia, pro articulis numerus sententiarum, amat, fastidiorum et commentorum tempore colum usoris transeundi nunc indicatur. In genere mirum est quot parvae res corrigendae sunt. Indicem servavi, omnes "irregularitates" ibi observavi et eas pro posse correximus.

Exempli causa, facultatem addidi omnes occasus directe in uno nuntio;

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

Et alius dolor /settings eas exacte in hac forma exhibet, textum ex eo capere potes et ad amicum omnia uncinis mittere.
Parum videtur, sed sunt similes nuances justo.

Articulus exsecutus eliquare in forma simplicis exemplaris linearis - utens potest additum aestimationem auctoribus et tags ponere, necnon valorem limen. Si summa ratings auctoris, mediocris rating pro tags et ipsa aestimatio articuli maior est quam valorem limen, tunc articulus usori ostenditur. Potes vel quaerere botones articulos cum imperio /novi, vel bot subscribere et mittere articulos in nuntio personali aliquo tempore diei.

Generaliter ideam habui de unoquoque articulo ad plura lineamenta extrahenda (ami, numeri commentationis, notae, motus aestimationerum mutationes, quantitatem textus, picturas et codicem in articulo, keywords), et usorem ok/ not ok vote under each article and train a model of each user, sed nimis piger eram.

Praeterea operis logica non tam manifesta erit. Nunc manually aestimationem +9000 pro patientZero ponere et cum limine rating of +20 spondebor ad omnes eius articulos recipiendos (nisi -100500 pro quibusdam tags posui).

Extremum architecturae satis simplex evasit;

  1. Actoris qui reponit rempublicam omnium confabulationum et articulorum. Statum suum e lima in disco onerat et eum subinde servat, quoties ad novum fasciculum.
  2. Actor qui Corpus pascuum subinde visitat, articulos novos discit, nexus, parses spectat, et hos articulos primo actori mittit. Praeterea, interdum indicem articulorum ab primo actore petit, qui triduo non antiquiores eligit, sed non diu renovatus est ac renovat.
  3. Actoris qui cum telegrapho communicat. Ego nuntium parsing omnino hic attuli. Amice modo eam in duas dividere velim, ut una parses nuntios ineuntes, altera de quaestionibus onerariis agit ut nuntiis tacitis re- mittendis. Nunc nulla est remissio, et nuntius qui ob errorem non pervenit, amittetur (nisi in tigna notatur), sed hucusque nullas difficultates attulit. Forsitan difficultates orientur si fasciculus hominum automati subscribat et terminum ad epistulas mittendas attingam).

Id quod probaverunt est gratias agere akka, casus histriones 2 et 3 plerumque non afficiunt actionis automati. Forsitan quaedam capitula in tempore vel aliqua nuntia non renovata telegraphum non attingunt, sed actoris ratio restitit et omnia operantur. Servo nuntios articulum usori demonstrari solum cum actor telegraphum respondet se nuntium feliciter tradidisse. Gravissimum, quod minitatur, pluries nuntium mittere (si traditur, at confirmatio quodammodo amissa est). In principio, si primus actor rempublicam intra se non condidit, sed cum aliquo datorum communicavit, tunc etiam insensibiliter cadere potest et ad vitam redire. Pervicacia akka etiam experiri potui ut actores statum restituerent, sed exsecutio hodierna me convenit sua simplicitate. Non est quod codex meus saepe ingruat - contra, multum operae pono ut impossibile sit. Sed cacas accidit, et facultas programmatis in separatim actores frangendi actores mihi vere opportunus et practicus videbatur.

Addidi cir- ci ut, si codicem proruperit, statim reperias. Ad minimum, significat ipsum codicem componendis desiisse. Initio volui travis addere, sed tantum incepta mea sine furcis ostendit. Fere utrumque libere in promptuariis apertis adhiberi potest.

results

November iam est. Bot scriptum est, eo per duas ebdomadas proximis adhibitus sum et eam probaverunt. Si ad emendationem notiones habes, scribe. Punctum in monetising non video - sit modo operari et articulos interesting mittere.

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

Conclusiones parvae:

  • Etiam parva project diu potest capere.
  • Non es Google. Nihil est in passeres ex tormento mittendo. Simplex solutio aeque bene operari potest.
  • Incepta pet valde bona sunt ad experiendas novas technologias.
  • Automata telegraphum simpliciter scripta sunt. Si non esset "lusionis" et experimentorum technologiae, automati in hebdomade vel duobus scripta fuissent.
  • Actor exemplar est an interesting res quae bene cum multi-thread et codice vitio tolerantior est.
  • Sentio me gustasse cur fons apertus communitas furcas amat.
  • Databases bonae sunt, quia applicationis status non iam ab applicatione ruinis/repressionibus pendet, sed operando cum codice datorum implicat et restrictiones in notitia structurae imponit.

Source: www.habr.com