Existujú typy softvéru, bez ktorých niektorí ľudia nemôžu žiť, zatiaľ čo iní si nevedia ani predstaviť, že niečo také existuje alebo že to vôbec niekto potrebuje. Pre mňa bol tento program dlhé roky
S približne týmito ľuďmi zrejme autori WebResearch rátali. Tento program bol nabitý širokou škálou funkcií: katalogizácia podľa sekcií a značiek, úprava poznámok, všetky druhy exportu/importu atď. Okolo roku 2013 sa však projekt prestal aktualizovať a webová stránka vývojára potom prestala existovať. Ešte niekoľko rokov sa mi na tomto koni darilo jazdiť, no najskôr odpadli pluginy prehliadača (dostupné len pre vtedajšie verzie IE a FireFox) a potom sa moderné stránky prestali normálne zobrazovať v prehliadači založenom na starom IE engine.
Hlavné okno WebResearch,
Cesta sklamania
Hneď ako bolo jasné, že sa nedá vyhnúť náhrade, v pozadí som začal hľadať slušný analóg. Zdalo sa mi, že tu nebudú žiadne zvláštne ťažkosti, pretože moje túžby sú mimoriadne skromné. Bol som pripravený vystačiť si len s malou podskupinou nástrojov WebResearch, vrátane:
- uloženie stránky HTML z prehliadača pomocou rozšírenia;
- aspoň minimálne katalogizačné nástroje (premenovanie, organizovanie katalógov, štítky);
- (prednostne) podpora dokumentov PDF;
- akýkoľvek slušný spôsob synchronizácie zbierky s inými zariadeniami.
Na moje prekvapenie sa mi nič podobné nepodarilo nájsť, hoci som poctivo brázdil internet široko-ďaleko a pozorne som si preštudoval tucet programov, ktoré sa zhodovali s anotáciami (s výnimkou Evernote, kde je funkcionalita podobná popisom dostupná len na základe predplatného). Dnes jediné, čo aspoň ako-tak uspokojuje moje priania, sú projekty
TagSpaces je taký “štýlovo-módny-mládežnícky” organizér na Electrone s krásnou webstránkou, adaptívnym rozložením a samozrejme tmavou témou, kde by sme bez neho boli. Nešťastný obsah kolekcie s módnymi zaoblenými ikonami zároveň zaberá polovicu obrazovky, pričom pojme nanajvýš dvadsať prvkov a píšu sa základné veci ako podpora klávesových skratiek alebo vykreslenie prezeraného dokumentu. podľa zvyškového princípu. V dôsledku toho sa dokumenty zobrazujú krivo a práca s kolekciou sa mení na nudné a časovo náročné cvičenia s myšou.
Jeho antipód myBase pochádza z konca deväťdesiatych rokov: tu okrem čisto funkčné rozhranie máme mimoriadne bohatú sadu nastavení a funkcií. Zobrazovacím oknom je tu však rovnaký prehliadač založený na starom IE (ktorý už sťažuje čítanie) a všetky dokumenty sú uložené v monolitickej databáze. Ak ho vložíte napríklad do priečinka Dropbox (stále neexistujú žiadne iné spôsoby synchronizácie s inými zariadeniami), potom pri najmenšej zmene v kolekcii musíte počkať, kým sa na server nenahrajú stovky megabajtov informácií.
Moment otáčania
Pravdepodobne sa čitateľovi zdá ďalší obsah poznámky zrejmý: teraz nám ponúkneme vlastný bicykel, ktorý bude, samozrejme, hlavou a ramenami nad akýmkoľvek existujúcim analógom. Asi áno, ale nie celkom. Naozaj som nemohol vydržať utrpenie s myBase a TagSpaces a načrtol som si vlastného správcu dokumentov, odkaz na ktorý uvediem na konci. Tento malý osobný projekt by si však sám o sebe nezaslúžil vlastný článok; Píšem z veľkej časti preto, lebo som si myslel, že by bolo zaujímavé podeliť sa o skúsenosti, ktoré som počas svojej práce nadobudol, a množstvo nepríjemných prekvapení, ktoré som nikdy nečakal.
Ciele a ciele
Začnem tým, že teraz mám dosť zaneprázdnený život a na plnohodnotné hobby projekty jednoducho nemám čas. Preto som sa od samého začiatku rozhodol, že som pripravený vyrezať svoj nástroj z akýchkoľvek komponentov, ktoré mi prídu pod ruku, ak to urýchli veci. Navyše sa zatiaľ zaväzujem implementovať len absolútne minimum funkcionality, bez ktorej sa absolútne nedá.
Formát údajov a ukladanie stránky
V akej forme majú byť webové stránky uložené na disku? Vzhľadom na predtým formulované požiadavky sa mi zdalo, že výber bol malý: buď formát uloženia „celej webovej stránky“, teda hlavný súbor HTML a priečinok s pridruženými zdrojmi, alebo formát MHTML. Prvá možnosť sa mi hneď zdala menej výhodná: mať na disku kopu súborov, z ktorých budete musieť extrahovať významné dokumenty, odfiltrovať nepotrebné pri vyhľadávaní a sledovať integritu pri kopírovaní, je malá radosť. Keď som sa pokúšal pracovať s TagSpaces, musel som znova uložiť všetky svoje dokumenty tak, aby názov priečinka zdrojov začínal bodkou: potom ich systém rozpoznal ako „skryté“ a nezobrazil ich.
Tento problém je v myBase skrytý, keďže všetko je uložené v databáze, no v mojom prípade zvíťazil princíp jednoduchosti: naozaj som chcel všetko uložiť ako bežné súbory na disk, aby som sa nemusel zaoberať implementáciou rutinné operácie ako kopírovanie, premenovanie, mazanie a synchronizácia.
Formát MHTML prechádza ťažkými časmi. Jednoduchý spôsob, ako uložiť MHTML
Zároveň som začal hľadať jednoduchý spôsob, ako uložiť stránky z prehliadača do určeného priečinka. Výsledkom bolo, že oba problémy boli vyriešené s malými stratami: narazil som na úžasný projekt
SingleFile prichádza ako rozšírenie prehliadača aj ako aplikácia príkazového riadku. Teraz používam len rozšírenie: je to celkom pohodlné, s výnimkou skutočnosti, že musíte manuálne vybrať cieľový priečinok na uloženie. V budúcnosti sa pravdepodobne pokúsim aplikáciu vylepšiť, aby som tento proces zjednodušila. Ak chcete zavolať aplikáciu tretej strany z prehliadača Chrome, môžete použiť rozšírenie
Problémy s GUI a prehliadačom
Zistil som, že Python je dobrý na všetky druhy jednoduchých operácií so súbormi a reťazcami, a keďže jeden z mojich pracovných projektov používa
Ďalej, keď som videl dosť problémov so zobrazovaním stránok v iných programoch, dospel som k záveru, že jediný spoľahlivý spôsob, ako sa s nimi vysporiadať, je zaviesť do programu vizualizér založený na modernom prehliadači, teda Chrome alebo Firefox.
Musím sa priznať, že naposledy som niečo také musel urobiť asi pred 15 rokmi a nečakal som žiadne úskalia. Ukázalo sa, že nie je možné „len plácnuť prehliadač do formulára“: ľudstvo sa s touto úlohou nejako nedokázalo spoľahlivo a univerzálne vyrovnať. Nejaký zoznam alebo tlačidlo na formulári je možné umiestniť do ľubovoľného rámca GUI a dokonca generovať multiplatformový kód a zdalo sa mi, že v roku 2019 malo byť zobrazenie HTML tiež univerzálne vyriešeným problémom.
Ukázalo sa, že napríklad vo wxWidgets je štandardným komponentom „prehliadač“ multiplatformový obal nad systémovo závislým „prehliadačom“, čo v prípade Windows napr.
Potom som stál pred voľbou: zmeniť framework alebo hľadať alternatívny komponent pre prehliadač. Po váhaní som sa rozhodol najprv vyskúšať druhú cestu a rýchlo som natrafil na projekt
Posúďte situáciu: Python je jedným z najpopulárnejších programovacích jazykov na svete, Chrome je v podstate monopolistom na trhu prehliadačov. Zároveň je CEF Python v skutočnosti podporovaný energiou
CEF Python mi však nakoniec nepomohol: hoci aj základný príklad integrácie s wxWidgets z projektového repozitára je úprimne zabugovaný, snažil som sa v ňom pohrať viac, ale nepodarilo sa mi vyriešiť všetky problémy, ktoré sa vyskytli. Nebudem ani zachádzať hlbšie do témy, sotva si to zaslúži.
Pozrel som sa na komponenty založené na Chromium Embedded Framework podrobnejšie a nakoniec som sa rozhodol to vyskúšať
Po istom nevyhnutnom rozruchu na začiatku to išlo oveľa rýchlejšie: kombinácia CefSharp a Windows Forms sa ukázala ako víťazná a väčšinu technických problémov som dokázal vyriešiť bez problémov.
O nevyskúšanom
Môžete tiež skúsiť implementovať FireFox do aplikácie C# pomocou komponentu
Fanúšikovia Qt môžu byť v pokušení vyjadriť sa: keby si vzali Qt, nemali by žiadne problémy. To môže byť pravda, ale wxWidgets možno zvážiť, ak nie prvú, tak druhú možnosť pri výbere GUI frameworku pre aplikácie v Pythone alebo C++. A podľa môjho skromného názoru by taká vec, ako je prehliadač, mala byť zabudovaná do akéhokoľvek viac či menej vyvinutého GUI frameworku bez tancovania s tamburínou.
WebLibrary
Vráťme sa však k mojej žiadosti s pracovným názvom
Okrem čisté a stručné rozhranie Tu sú implementované iba najzákladnejšie funkcie:
- Zobrazte ľubovoľný zadaný adresár v systéme ako knižnicu dokumentov.
- Zobrazenie dokumentov v okne prehliadača. Prechádzajte zoznamom obvyklým spôsobom (kurzorové klávesy, PgUp, PgDn, Home, End), prechádzajte prehliadačom pomocou klávesov Space a Shift+Space.
- Premenovanie dokumentov.
- Označte dokumenty ako prečítané alebo obľúbené pomocou klávesových skratiek.
- Triedenie dokumentov podľa ľubovoľného poľa.
- Obnoví okno aplikácie, keď dôjde k zmenám v priečinku knižnice.
- Pri ukončení uložte nastavenia okna.
Toto všetko sa môže zdať ako triviálna funkcia, ale povedzme, že ukladanie veľkostí stĺpcov v TagSpaces stále nie je podporované - autori majú zrejme iné priority.
Stav (prečítané/obľúbené) sa jednoducho uloží do názvu súboru (prečítaný súbor doc.html
premenovaný na doc{R,S}.html
). Synchronizácia ako taká neexistuje, ale knižnicu jednoducho uchovávam v Dropboxe - je to predsa len priečinok so súbormi.
Stále existujú plány na zlepšenie jednoduchých vecí, ako je presúvanie a odstraňovanie súborov, ako aj implementácia označovania ľubovoľnými značkami. Ak chce niekto pomôcť, budem len rád.
Závery
Rozmanitosť. Ako som povedal na začiatku, je úžasné, ako odlišná môže byť súprava nástrojov jednej osoby od inej. Používanie nástroja ako WebResearch je pre mňa prirodzené a z jeho absencie som pociťoval takmer fyzické nepohodlie. Zároveň, zdá sa, mám málo podobne zmýšľajúcich ľudí, inak by neboli problémy s hľadaním analógov. Na druhej strane, podobné prípady sa vyskytujú pri oveľa bežnejšom softvéri: Microsoft sa napríklad nechystá aktualizovať desktopovú verziu OneNotu, takže som nútený používať verziu 2016 a skôr či neskôr budem musieť prejsť aj z to niekde.
Prekvapivé je aj to, aké ťažké je orientovať sa v súčasnej krajine knižníc a rámcov. V mojej práci som len zriedka musel písať desktopové aplikácie od začiatku do konca a predpokladal som, že pre moju úlohu bude vhodný doslova akýkoľvek nástroj pre akýkoľvek programovací jazyk (jedno okno, tri komponenty, triviálne interakcie). Takže vezmeme čokoľvek a urobíme to v priebehu niekoľkých dní.
Ukázalo sa, že realita je oveľa menej benevolentná a jednoducho z ničoho nič môžete naraziť na problém. Povedzme, že mám dva rozdeľovače, ktoré sa dajú použiť na roztiahnutie okna prehliadača. Obnovenie ich pozícií po načítaní do wxWidgets je teda mimoriadne náročné, keďže systém ich takmer po všetkých udalostiach, ktoré mám k dispozícii, umiestni do predvolených pozícií a ja musím robiť všemožné hackovanie, aby som dosiahol to, čo potrebujem. Kto by to tušil?
Na druhej strane je jasné, že vo Windows Forms je všetko navrhnuté pre „obchodné rozhrania“. Takmer všetko, čo bolo potrebné, bolo k dispozícii hneď po vybalení: uloženie/obnovenie nastavení aplikácie, pohodlné rozhranie komponentov (napríklad som nečakal, že komponent TreeView môže byť požiadaný o úplnú cestu od koreňového k akémukoľvek podradenému prvku vo forme reťazca) a netriviálne nástroje, ako je nástroj na sledovanie zmien obsahu priečinka.
V každom prípade, čas nebol stratený a výsledok možno považovať za uspokojivý, tak čo viac si od života priať, že?
Zdroj: hab.com