On tarkvaratĂŒĂŒpe, milleta mĂ”ned inimesed ei saa elada, teised aga ei suuda isegi ette kujutada, et selline asi on olemas vĂ”i et kellelgi seda ĂŒldse vaja on. Minu jaoks oli see programm palju aastaid , mis vĂ”imaldas teil Interneti-lehti salvestada, lugeda ja korraldada omamoodi vĂ”rguĂŒhenduseta teeki. Olen kindel, et paljud meie lugejad saavad suurepĂ€raselt hakkama lingikogu vĂ”i brauseri ja salvestatud dokumentide komplektiga kausta kombinatsiooniga. Soovin, et saaksin vĂ€hemalt dokumendid "loetud" vĂ”i "lemmikuteks" mĂ€rkida, liikuda kiiresti ĂŒhest tekstist teise ja mitte sĂ”ltuda Interneti vĂ”i konkreetse saidi kĂ€ttesaadavusest. Juhtub, et aega on tĂ€pselt lugeda siis, kui Internetti pole (nĂ€iteks teel olles) ja lingid osutuvad kahjuks sageli lĂŒhiajalisteks.
Ilmselt lootsid WebResearchi autorid ligikaudu nendele inimestele. See programm oli tÀis laias valikus funktsioone: kataloogimine jaotiste ja siltide jÀrgi, mÀrkmete redigeerimine, igasugune eksport/import ja nii edasi. Kuid umbes 2013. aastal lÔpetati projekti vÀrskendamine ja seejÀrel lakkas ka arendaja veebisait olemast. Veel mitu aastat Ônnestus mul selle hobusega ratsutada, kuid kÔigepealt kukkusid Àra brauseri pluginad (saadaval ainult toonastele IE ja FireFoxi versioonidele) ning siis lakkasid tÀnapÀevased saidid vanal IE mootoril pÔhinevas vaatajas normaalselt kuvamast.

WebResearchi peaaken,
Pettumuste tee
Niipea kui sai selgeks, et asendust pole vÔimalik vÀltida, hakkasin taustal otsima korralikku analoogi. Mulle tundus, et siin ei teki erilisi raskusi, kuna mu soovid on ÀÀrmiselt tagasihoidlikud. Olin valmis hakkama saama vaid vÀikese WebResearchi tööriistade alamhulgaga, sealhulgas:
- HTML-lehe salvestamine brauserist laienduse abil;
- vĂ€hemalt minimaalsed kataloogimisvahendid (ĂŒmbernimetamine, kataloogide korrastamine, sildid);
- (soovitavalt) PDF-dokumentide tugi;
- mis tahes korralik viis oma kogu teiste seadmetega sĂŒnkroonimiseks.
Endalegi ĂŒllatuseks ei Ă”nnestunud mul midagi sarnast leida, kuigi uurisin ausalt Internetti kaugelt ja uurisin hoolikalt tosinat programmi, mis vastavad annotatsioonidele (erandiks on Evernote, kus kirjelduses sarnane funktsionaalsus on saadaval ainult tellimisel). TĂ€napĂ€eval on ainsad asjad, mis vĂ€hemalt kuidagi minu soove rahuldavad, projektid Đž . Nende uurimine pakub ĂŒldiselt teatud kultuurilist huvi.
TagSpaces on Electronis selline "stiilne-moekas-noorte" korraldaja, millel on ilus veebisait, kohanduv kujundus ja loomulikult tume teema, kus me ilma selleta oleksime. Samas vĂ”tab kogu moekate ĂŒmarate ikoonidega Ă”nnetu sisukord enda alla poole ekraani, mahutades samas maksimaalselt paarkĂŒmmend elementi ning kirjas on elementaarsed asjad nagu kiirklahvide tugi vĂ”i vaadatava dokumendi renderdamine. jÀÀkpĂ”himĂ”tte jĂ€rgi. Selle tulemusena kuvatakse dokumendid viltu ning koguga töötamine muutub hiirega igavaks ja aeganĂ”udvaks harjutuste komplektiks.
Selle antipood myBase pĂ€rineb ĂŒheksakĂŒmnendate lĂ”pust: siin lisaks puhtalt funktsionaalne liides meil on ÀÀrmiselt rikkalik seadete ja funktsioonide komplekt. Siin on aga vaateaknaks sama vana IE baasil pĂ”hinev brauser (mis teeb lugemise juba keeruliseks) ja kĂ”ik dokumendid on salvestatud monoliitsesse andmebaasi. Kui panna see nĂ€iteks Dropboxi kausta (muid vĂ”imalusi teiste seadmetega sĂŒnkroonimiseks ikka veel ei ole), siis vĂ€himagi muudatusega kogus tuleb oodata, kuni serverisse laetakse sadu megabaite infot.
Pöördepunkt
TĂ”enĂ€oliselt tundub noodi edasine sisu lugejale enesestmĂ”istetav: nĂŒĂŒd pakutakse meile oma jalgratast, mis on loomulikult pea ja Ă”lgadest kĂ”rgemal kui igast olemasolevast analoogist. Omamoodi jah, aga mitte pĂ€ris. Ma tĂ”esti ei talunud seda katsumust myBase'i ja TagSpacesiga ning visandasin vĂ€lja oma dokumendihalduri, mille lingi annan lĂ”pus. Kuid see vĂ€ike isiklik projekt ei vÀÀriks eraldi artiklit; Kirjutan suuresti seetĂ”ttu, et arvasin, et oleks huvitav jagada oma töö kĂ€igus saadud kogemusi ja mitmeid ebameeldivaid ĂŒllatusi, mida poleks oodanudki.
EesmÀrgid ja eesmÀrgid
Alustan sellest, et mul on praegu ĂŒsna kiire elu ja mul pole lihtsalt aega tĂ€isvÀÀrtuslikeks hobiprojektideks. SeetĂ”ttu otsustasin algusest peale, et olen valmis oma pilli vormima kĂ”igist kĂ€epĂ€rast olevatest komponentidest, kui see asja kiirendaks. Lisaks vĂ”tan praegu endale kohustuse rakendada ainult absoluutset miinimumi funktsionaalsust, ilma milleta on tĂ€iesti vĂ”imatu hakkama saada.
Andmevorming ja lehe salvestamine
Millisel kujul tuleks veebilehti kettale salvestada? Varem sĂ”nastatud nĂ”udeid arvesse vĂ”ttes tundus mulle, et valik oli vĂ€ike: kas salvestusformaat âkogu veebilehtâ ehk siis pĂ”hiline HTML-fail ja kaust koos seotud ressurssidega vĂ”i MHTML-vorming. Esimene variant tundus mulle kohe vĂ€hem eelistatav: pole suurt rÔÔmu sellest, et teie kettal on prĂŒgihunnik faile, millest peate vĂ€lja vĂ”tma olulised dokumendid, otsides mittevajalikud vĂ€lja filtreerima ja kopeerimisel jĂ€lgima terviklikkust. Kui proovisin TagSpacesiga töötada, pidin kĂ”ik oma dokumendid uuesti salvestama nii, et ressursikausta nimi algaks punktiga: siis tuvastas sĂŒsteem need kui "peidetud" ega kuvanud neid.
See probleem on myBase'is varjatud, kuna kĂ”ik on andmebaasis salvestatud, kuid minu puhul valitses lihtsuse pĂ”himĂ”te: tahtsin tĂ”esti salvestada kĂ”ik tavaliste failidena kettale, et ma ei peaks tegelema rakenduse juurutamisega. rutiinsed toimingud, nagu kopeerimine, ĂŒmbernimetamine, kustutamine ja sĂŒnkroonimine.
MHTML-vorming elab lĂ€bi raskeid aegu. Lihtne viis MHTML-i salvestamiseks , ja ma isegi ei tea, kus neid lehti nĂŒĂŒd hoitakse? Selge on see, et vĂ”imalus pole veel kuhugi kadunud, on ka kolmandate osapoolte laiendusi, kuid ĂŒldiselt on see mingi halb mĂ€rk. Lisaks salvestamine MHTML-vormingus , mis samuti optimismi ei lisa.
Samal ajal hakkasin otsima lihtsat viisi lehtede salvestamiseks brauserist mÀÀratud kausta. Selle tulemusel lahenesid mĂ”lemad probleemid vĂ€ikese kahjuga: jĂ”udsin suurepĂ€rase projektini , mis suudab salvestada veebilehe sisu eraldi sĂ”ltumatusse HTML-faili. Selleks teisendatakse kĂ”ik seotud ressursid base64-vormingusse ja manustatakse need otse HTML-i. Muidugi kasvab faili suurus ja sisu tundub veidi segane, kuid ĂŒldiselt tundus see lĂ€henemine mulle usaldusvÀÀrne ja lihtne ning ma jĂ€in selle juurde.
SingleFile on saadaval nii brauseri laiendusena kui ka kĂ€surearakendusena. NĂŒĂŒd kasutan lihtsalt laiendust: see on ĂŒsna mugav, vĂ€lja arvatud asjaolu, et peate salvestamiseks sihtkausta kĂ€sitsi valima. TĂ”enĂ€oliselt proovin tulevikus rakendust selle protsessi lihtsustamiseks tĂ€iustada. Chrome'ist kolmanda osapoole rakendusele helistamiseks saate kasutada laiendust - see on minu jĂ€rjekordne kasulik avastus. Muide, rakendus on juba kasulik olnud: selle abiga teisendasin TagSpacesist kogumi kaustu ja faile iseseisvate HTML-dokumentide komplektiks.
Probleem GUI ja brauseriga
Leidsin, et Python sobib hĂ€sti igasuguste lihtsate faili- ja stringoperatsioonide jaoks ning kuna ĂŒks minu tööprojekt kasutab , valik tundus peamise raamistikuna loogiline.
Lisaks, olles nÀinud piisavalt probleeme lehtede kuvamisega teistes programmides, jÔudsin jÀreldusele, et ainus usaldusvÀÀrne viis nendega toime tulla on lisada programmi visualiseerija, mis pÔhineb kaasaegsel brauseril, see tÀhendab Chrome'il vÔi Firefoxil.
Pean tunnistama, et viimati pidin midagi sellist tegema umbes 15 aastat tagasi ja ma ei oodanud mingeid lĂ”kse. Selgus, et "lihtsalt brauserile vormile löömine" on vĂ”imatu: millegipĂ€rast pole inimkond selle ĂŒlesandega usaldusvÀÀrselt ja universaalselt hakkama saanud. Mingi listbox vĂ”i vormil olev nupp vĂ”ib olla paigutatud mistahes GUI raamistikku ja genereerida isegi platvormiĂŒlest koodi ja mulle tundus, et 2019. aastal oleks pidanud ka HTML-ekraan olema universaalselt lahendatud probleem.
Selgus, et nĂ€iteks wxWidgetsis on standardne "brauseri" komponent platvormideĂŒlene mĂ€his sĂŒsteemist sĂ”ltuva "brauseri" kohal, mis antud juhul WindowsnĂ€iteks tĂ€hendab ja olukord Windows Forms pole parem ja IE9-st uuematele versioonidele pÀÀseb ligi ainult mittetriviaalsete kanalite kaudu. . Nagu nĂ€ete, pole ma ainuke, kes on viimased 15 aastat muid asju teinud â ka siin pole midagi liikuma hakanud.
Siis seisin valiku ees: muuta raamistikku vÔi otsida brauserile alternatiivset komponenti. PÀrast kÔhklemist otsustasin esmalt teist teed proovida ja jÔudsin kiiresti projektini , mis on loodud spetsiaalselt Chromiumi Pythoni rakendustesse manustamiseks.
Hinnake olukorda: Python on ĂŒks populaarsemaid programmeerimiskeeli maailmas, Chrome on sisuliselt brauseriturul monopolist. Samal ajal toetab CEF Python tegelikult energiat , jĂ”udu ja tervist talle. Kas tĂ”esti pole seda enam kellelgi vaja?...
CEF Python mind aga lĂ”puks ei aidanud: kuigi isegi pĂ”hiline nĂ€ide projektihoidlast wxWidgetsiga integreerimisest on ausalt öeldes lollakas, proovisin sellega rohkem nokitseda, kuid ei suutnud kĂ”iki tekkinud probleeme lahendada. Ma isegi ei lĂ€he teemasse sĂŒgavamale;
Uurisin Chromium Embedded Frameworkil pĂ”hinevaid komponente ĂŒksikasjalikumalt ja otsustasin lĂ”puks proovida Kuna ma töötan peaaegu kogu aeg koos Windows, platvormideĂŒlese toe loobumise vĂ€ljavaade mind eriti ei hĂ€irinud.
PÀrast alguses paratamatut kÀra lÀksid asjad palju kiiremini: CefSharpi ja Windows Forms osutus vÔitjaks ja suutsin enamiku tehnilistest vÀljakutsetest probleemideta lahendada.
Proovimata kohta
Samuti vÔite proovida selle komponendi abil FireFoxi C#-rakendusse juurutada , aga ma ei oska tema kohta midagi öelda. Qt raamistiku standardne brauseri komponent nn pÔhineb , seega töötab see tÔenÀoliselt sama hÀsti kui CefSharp.
Qt fÀnnidel vÔib tekkida kiusatus kommenteerida: kui nad oleks Qt vÔtnud, poleks neil probleeme olnud. See vÔib tÔsi olla, kuid Pythoni vÔi C++ rakenduste jaoks GUI raamistiku valimisel vÔib wxWidgetsi pidada kui mitte esimeseks, siis teiseks vÔimaluseks. Ja minu tagasihoidliku arvamuse kohaselt peaks selline asi nagu brauser olema igasse enam-vÀhem arendatud GUI raamistikku sisse ehitatud ilma tamburiiniga tantsimata.
Veebiraamatukogu
Tuleme aga tagasi minu tööpealkirjaga avalduse juurde . TÀna nÀeb see vÀlja (trummipÔrin) selline:

peale puhas ja lĂŒhike liides Siin rakendatakse ainult kĂ”ige elementaarsemaid funktsioone:
- Kuvab mis tahes mÀÀratud kataloogi sĂŒsteemis dokumenditeegina.
- Vaadake dokumente brauseriaknas. Liikuge loendis tavalisel viisil (kursoriklahvid, PgUp, PgDn, Home, End), sirvige brauserit, kasutades klahve TĂŒhik ja Shift+TĂŒhik.
- Dokumentide ĂŒmbernimetamine.
- Kiirklahvide abil mÀrkige dokumendid loetuks vÔi lemmikuteks.
- Dokumentide sorteerimine mis tahes valdkonna jÀrgi.
- VĂ€rskendab rakenduse akent, kui teegi kaustas on muudatusi.
- VÀljumisel salvestage akna sÀtted.
KĂ”ik see vĂ”ib tunduda triviaalse funktsionaalsusena, kuid nĂ€iteks veergude suuruste salvestamist TagSpacesis siiski ei toetata â ilmselt on autoritel teised prioriteedid.
Olek (loe/lemmik) salvestatakse lihtsalt failinimesse (loe faili doc.html ĂŒmber nimetatud doc{R,S}.html). SĂŒnkroonimist kui sellist ei toimu, aga ma lihtsalt hoian raamatukogu Dropboxis - lĂ”ppude lĂ”puks on see lihtsalt failidega kaust.
Endiselt on kavas tÀiustada lihtsaid asju, nagu failide teisaldamine ja kustutamine, samuti suvaliste siltidega sildistamise rakendamist. Kui keegi soovib aidata, siis mul on ainult hea meel.
JĂ€reldused
Mitmekesisus. Nagu ma algusest peale ĂŒtlesin, on hĂ€mmastav, kui erinev vĂ”ib ĂŒhe inimese tööriistakomplekt teise omast erineda. Sellise tööriista nagu WebResearch kasutamine on mulle loomulik ja tundsin selle puudumise tĂ”ttu peaaegu fĂŒĂŒsilist ebamugavust. Samas ilmselt on mul mĂ”ttekaaslasi vĂ€he, muidu poleks analoogide leidmisega probleeme. Teisalt tuleb sarnaseid juhtumeid ette mĂ€rksa tavatarkvaraga: nĂ€iteks Microsoft ei kavatse OneNoteâi töölauaversiooni uuendada, mistĂ”ttu olen sunnitud kasutama 2016. aasta versiooni ning varem vĂ”i hiljem pean ka sealt Ă€ra kolima. see kuskil.
Ăllatav on ka see, kui raske on praegusel raamatukogude ja raamistike maastikul navigeerida. Oma töövaldkonnas pean harva kirjutama töölauarakendusi algusest lĂ”puni ja eeldasin, et sĂ”na otseses mĂ”ttes sobib minu ĂŒlesandeks iga tööriist mis tahes programmeerimiskeele jaoks (ĂŒks aken, kolm komponenti, triviaalsed interaktsioonid). Nii et me lihtsalt vĂ”tame kĂ”ike ja teeme seda mĂ”ne pĂ€eva jooksul.
Selgus, et tegelikkus on palju vĂ€hem heatahtlik ja sa vĂ”id lihtsalt ootamatult probleemi otsa sattuda. Oletame, et mul on kaks jaoturit, mida saab kasutada brauseriakna venitamiseks. Seega on nende positsioonide taastamine pĂ€rast wxWidgetsi laadimist ÀÀrmiselt keeruline, kuna sĂŒsteem seab need vaikepositsioonidesse pĂ€rast peaaegu kĂ”iki mulle kĂ€ttesaadavaid sĂŒndmusi ja ma pean tegema kĂ”ikvĂ”imalikke hĂ€kkimisi, et saavutada seda, mida vajan. Kes oleks arvanud?
Teisest kĂŒljest on selge, et aastal Windows Forms on loodud Ă€riliideste jaoks. Peaaegu kĂ”ik vajalik oli kohe karbist vĂ”ttes saadaval: rakenduse sĂ€tete salvestamine ja taastamine, kasutajasĂ”bralik komponentide liides (nĂ€iteks ma ei oodanud, et TreeView komponendilt saab pĂ€ringu esitada kogu tee juurest mis tahes alamelemendini stringina) ja keerukad funktsioonid, nĂ€iteks kausta sisu muutuste jĂ€lgija.
Aega igatahes raisatud ei olnud ja tulemust vÔib lugeda rahuldavaks, nii et mida muud elult tahta, eks?
Allikas: www.habr.com
