"Akong basahon kini sa ulahi": ang lisud nga kapalaran sa usa ka offline nga koleksyon sa mga panid sa Internet

Adunay mga klase sa software nga ang uban dili mabuhi kung wala, samtang ang uban dili gani makahunahuna nga adunay ingon niana nga butang o nga adunay magkinahanglan niini. Para nako, sa daghang katuigan, ang ingon niana nga programa Panukiduki sa Web sa Macropool, nga nagtugot sa usa ka tawo sa pagtipig, pagbasa, ug pag-organisar sa mga panid sa internet ngadto sa usa ka matang sa offline library. Sigurado ko nga daghang mga magbabasa ang makalahutay nga maayo ra gamit ang usa ka koleksyon sa mga link o kombinasyon sa usa ka browser ug usa ka folder nga adunay koleksyon sa mga na-save nga dokumento. Gusto nako nga labing menos mamarkahan ang mga dokumento isip "nabasa" o "mga paborito," dali nga maka-navigate gikan sa usa ka teksto ngadto sa lain, ug dili magsalig sa internet access o usa ka piho nga website. Usahay naa ra kay panahon sa pagbasa kung walay internet (pananglitan sa dalan), ug subo lang, ang mga link kasagaran dili magdugay.

Dayag nga kini ang klase sa audience nga gisaligan sa mga tiglalang sa WebResearch. Ang programa puno sa lain-laing mga feature: pag-catalog pinaagi sa mga seksyon ug mga tag, pag-edit sa mga nota, tanang klase sa export/import, ug uban pa. Apan, mga 2013, ang proyekto mihunong sa pag-update, ug dayon ang website sa developer naguba. Nakasunod ko niini sulod sa pipila pa ka tuig, apan una ang mga browser plugin (nga magamit lamang alang sa kasamtangang mga bersyon sa IE ug Firefox niadtong panahona) mihunong sa pagtrabaho, ug dayon bisan ang mga modernong website mihunong sa pagpakita sa husto sa browser base sa daan nga IE engine.

"Akong basahon kini sa ulahi": ang lisud nga kapalaran sa usa ka offline nga koleksyon sa mga panid sa Internet
Pangunang bintana sa WebResearch, Semana sa PC/RE Num. 17 (575)

Ang Dalan sa Kapakyasan

Sa dihang naklaro na nga dili kalikayan ang pag-ilis, nagsugod ko sa pagpangita og maayong alternatibo. Naghunahuna ko nga walay bisan unsang partikular nga kalisud, kay gamay ra kaayo ang akong mga pangandoy. Andam ko nga mogamit lang og gamay nga subset sa mga himan sa WebResearch, lakip ang:

  • pagtipig sa usa ka panid sa HTML gikan sa usa ka browser gamit ang usa ka extension;
  • labing menos gamay nga mga himan sa katalogo (pag-ilis sa ngalan, pag-organisar sa katalogo, mga tag);
  • (gitinguha) nga suporta para sa mga dokumento sa PDF;
  • bisan unsang maayong paagi sa pag-sync sa imong koleksyon sa ubang mga device.

Sa akong katingala, wala gyud koy nakit-an nga parehas, bisan pa sa makugihong pagpangita sa internet ug maampingong pagsusi sa dose ka mga programa nga parehas sa deskripsyon (gawas sa Evernote, diin ang parehas nga gamit anaa ra kung adunay suskrisyon). Sa pagkakaron, ang mga proyekto lang nga bisan gamay ra ang nakatagbaw sa akong mga panginahanglan ang akong nakit-an. Mga TagSpace и akongBaseAng ilang pagtuon, sa kinatibuk-an, adunay piho nga kultural nga interes.

Ang TagSpaces usa ka istiloso, uso, ug batan-on nga tig-organisar para sa Electron nga adunay nindot nga website, responsive nga layout, ug, siyempre, usa ka ngitngit nga tema—unsa man kini kon wala kini? Bisan pa, ang wala’y swerte nga talaan sa mga sulod sa koleksyon uban ang uso nga lingin nga mga icon niini nag-okupar sa katunga sa screen, nga adunay labing taas nga baynte ka elemento, samtang ang mga batakang bahin sama sa suporta sa hotkey o pag-render sa dokumento gipatuman isip ulahi nga hunahuna. Ingon usa ka resulta, ang mga dokumento gipakita nga baliko, ug ang pagtrabaho sa koleksyon nahimo nga usa ka makalaay ug lisod nga serye sa mga ehersisyo sa mouse.

Ang antipode niini nga myBase gikan sa ulahing bahin sa dekada nubenta: dinhi, dugang pa sa puro nga magamit nga interface Daghan kaayo mig mga setting ug features. Apan, ang viewing window dinhi mao gihapon ang daan nga IE-based browser (nga nagpalisod sa pagbasa), ug ang tanang dokumento gitipigan sa usa ka monolithic database. Pananglitan, kon imong ibutang kini sa Dropbox folder (walay laing paagi sa pag-sync sa ubang device), matag higayon nga mausab ang koleksyon, kinahanglan kang maghulat nga ma-upload ang gatusan ka megabytes nga impormasyon sa server.

Usa ka punto sa pagbag-o

Ang nahabilin niining artikuloha daw klaro na sa magbabasa: hapit na kita hatagan sa atong kaugalingong talagsaon nga solusyon, usa nga siguradong molabaw sa bisan unsang kasamtangang alternatibo. Murag, apan dili gyud. Dili gyud nako maantos ang kahasol sa myBase ug TagSpaces ug naghimo ko sa akong kaugalingong document manager, usa ka link nga akong ihatag sa katapusan. Bisan pa, kini nga gamay ug personal nga proyekto dili angay sa usa ka lahi nga artikulo; Gisulat ko kini labi na tungod kay naghunahuna ko nga makapainteres nga ipaambit ang kasinatian nga akong nakuha sa proseso, uban ang daghang dili maayo nga mga sorpresa nga wala nako damha.

Mga katuyoan ug katuyoan

Sugdan nako pinaagi sa pag-ingon nga medyo busy kaayo ko karon, ug wala gyud koy panahon para sa mga proyekto sa kalingawan. Mao nga, gikan sa sinugdanan, nakahukom ko nga andam ko nga maghimo sa akong kaugalingong instrumento gikan sa bisan unsang mga sangkap nga akong makit-an, kung kana makapadali sa mga butang. Dugang pa, sa pagkakaron, gipatuman lang nako ang labing gamay nga mga gimbuhaton nga dili gyud malikayan.

Pormat sa datos ug pagtipig sa mga panid

Unsaon nako pagtipig sa mga web page sa disk? Tungod sa mga kinahanglanon nga akong gipormula kaniadto, gibati nako nga gamay ra ang akong mga kapilian: ang "full web page" format, nga nagpasabot sa main HTML file ug usa ka folder nga adunay mga kalambigit nga resources, o ang MHTML format. Ang una daw dili kaayo gusto: dili lingaw ang pagbaton og nagkagubot nga mga file sa disk diin kinahanglan nakong kuhaon ang mga may kalabutan nga dokumento, i-filter ang mga wala kinahanglana atol sa mga pagpangita, ug sigurohon ang ilang integridad sa pagkopya. Sa dihang gisulayan nako ang pagtrabaho sa TagSpaces, kinahanglan nakong i-save pag-usab ang tanan nakong mga dokumento aron ang ngalan sa resource folder magsugod sa usa ka tuldok; unya mailhan kini sa sistema nga "gitago" ug dili kini ipakita.

Kini nga problema natago gikan sa panan-aw sa myBase, tungod kay ang tanan gitipigan sa database, apan sa akong kaso, ang prinsipyo sa kayano ang mipatigbabaw: Gusto gyud nako nga tipigan ang tanan isip regular nga mga file sa disk, aron dili na ako kinahanglan nga mag-atubang sa mga rutina nga operasyon sama sa pagkopya, pag-ilis sa ngalan, pagtangtang, ug pag-synchronize.

Ang MHTML format nag-agi og lisod nga mga panahon. Usa ka sayon ​​nga paagi sa pagtipig sa MHTML gipapahawa sa Chrome karong ting-init, ug wala na gani ko kabalo asa ibutang ang mga panid karon? Klaro nga naa pa gihapon ang opsyon, ug naa pay mga third-party extension, pero sa kinatibuk-an, dili maayo nga senyales ni. Gawas pa, ang pag-save sa MHTML format wala gisuportahan sa Chromium Embedded Framework, nga wala usab makadugang ug optimismo.

Sa samang higayon, nangita kog simpleng paagi sa pag-save sa mga panid gikan sa browser ngadto sa usa ka gitakdang folder. Sa katapusan, nasulbad ang duha ka problema nga gamay ra ang paningkamot: Nakakita kog maayong proyekto. Usa ka File, nga makatipig sa mga sulod sa usa ka web page sa usa ka lahi ug independente nga HTML file. Gihimo kini pinaagi sa pag-convert sa tanang nalambigit nga mga kapanguhaan ngadto sa base64 format ug pag-embed niini direkta sa HTML. Siyempre, kini nagdugang sa gidak-on sa file, ug ang sulod morag medyo gubot, apan sa kinatibuk-an, akong nakita nga ang pamaagi kasaligan ug yano, mao nga nakahukom ko niini.

Ang SingleFile anaa isip browser extension ug command-line app. Karon, gigamit ra nako ang extension; sayon ​​ra kaayo, gawas lang sa kamatuoran nga kinahanglan nakong mano-manong pilion ang save destination folder. Sa umaabot, sulayan nako nga pauswagon ang app aron mapasimple kini nga proseso. Mahimo nimong gamiton ang extension aron tawagan ang usa ka third-party app gikan sa Chrome. Buton sa Panggawas nga Aplikasyon — kini usa pa ka mapuslanon nga nadiskobrehan nako. Ug laing butang, ang app nahimong mapuslanon na: sa tabang niini, akong gi-convert ang usa ka koleksyon sa mga folder ug mga file gikan sa TagSpaces ngadto sa usa ka hugpong sa mga standalone nga dokumento sa HTML.

Problema sa GUI ug browser

Nakita nako nga ang Python usa ka maayong kapilian para sa tanang matang sa simpleng manipulasyon sa file ug string, ug tungod kay usa sa akong mga proyekto sa trabaho naggamit wxWidgets, pagpili wxPython daw lohikal isip pangunang balangkas.

Dayon, human nako makita ang daghang mga problema sa pagpakita sa mga panid sa ubang mga programa, nakahinapos ko nga ang bugtong kasaligan nga paagi sa pag-atubang niini mao ang pagpatuman sa usa ka visualizer nga gibase sa usa ka modernong browser, nga mao ang Chrome o Firefox, ngadto sa programa.

Kinahanglan kong moangkon, ang katapusang higayon nga kinahanglan nakong buhaton ang bisan unsa nga sama niini mga 15 ka tuig na ang milabay, ug wala ako magdahom nga adunay mga lit-ag. Migawas nga ang "pagbutang lang og browser sa usa ka porma" dili usa ka kapilian: sa bisan unsang paagi, ang katawhan wala makahimo sa kasaligan ug unibersal nga pagsulbad niini nga problema. Ang bisan unsang GUI framework mahimong mag-embed og listbox o buton sa usa ka porma, ug gani makamugna og cross-platform code, mao nga naghunahuna ko nga ang HTML rendering kinahanglan nga usa ka unibersal nga masulbad nga problema sa 2019.

Nigawas nga sa wxWidgets, pananglitan, ang standard nga "browser" component kay usa ka cross-platform wrapper ibabaw sa system-dependent nga "browser", nga sa kaso Windows, pananglitan, nagpasabot Internet Explorer 7, ug ang sitwasyon sa Windows Dili mas maayo ang mga porma, ug ang mga bersyon nga mas bag-o kaysa IE9 ma-access ra pinaagi sa mga dili-trivial nga programa. mga manipulasyon sa rehistroSama sa imong nakita, dili lang ako ang busy sa ubang mga butang sulod sa miaging 15 ka tuig—wala usay miuswag dinhi.

Sunod, giatubang ko og kapilian: usbon ang framework o mangita og laing browser component. Human sa pipila ka pagduha-duha, nakahukom ko nga sulayan una ang ulahi nga opsyon ug dali ra nakong nakit-an ang proyekto. CEF Python: Mga pagbugkos sa Python para sa Chromium Embedded Framework, nga gidisenyo ilabi na alang sa buluhaton sa pag-embed sa Chromium ngadto sa mga aplikasyon sa Python.

Hunahunaa ang sitwasyon: Ang Python usa sa pinakasikat nga mga lengguwahe sa programming sa kalibutan, ug ang Chrome usa ka monopolyo sa merkado sa browser. Samtang, ang CEF Python gisuportahan sa usa ka lalaki, kusog ug kahimsog alang kaniya. Wala na bay lain nga nanginahanglan niini?..

Apan, sa katapusan, ang CEF Python wala makatabang nako: bisan ang batakang ehemplo sa wxWidgets integration gikan sa project repository kay bug gyud. Gisulayan nako kini og ayuhon sa makadiyot, apan wala nako masulbad ang tanang problema nga mitumaw. Dili na gani nako idetalye; dili gyud kini takos.

Gisusi nako pag-ayo ang mga component nga gibase sa Chromium Embedded Framework ug sa kadugayan nakahukom ko nga sulayan kini. bersyon para sa C#Kay halos tanan oras man ko nagtrabaho uban sa Windows, ang posibilidad nga biyaan ang cross-platform nga suporta wala gyud makahasol nako.

Human sa pipila ka dili kalikayan nga kagubot sa sinugdanan, mas paspas ang dagan sa mga butang: ang kombinasyon sa CefSharp ug Windows Ang mga porma milampos gyud, ug nasulbad nako ang kadaghanan sa mga teknikal nga hagit nga walay bisan unsang problema.

Mahitungod sa wala pa masulayi

Mahimo nimong sulayan ang pag-integrate sa FireFox sa imong C# application gamit ang component Geckofx, apan wala koy masulti bahin niini. Ang standard browser component sa Qt framework nga gitawag og QWebEngineView gitukod sa Chromium, mao nga lagmit mogana kini sama sa CefSharp.

Ang mga mahiligon sa Qt basin matintal sa pagkomento: "Kon Qt lang unta akong gigamit, wala unta koy problema." Tinuod tingali na, apan ang wxWidgets mahimo usab nga ikonsiderar, kon dili man ang una, nan labing menos ang ikaduha nga kapilian kon mopili og GUI framework para sa Python o C++ applications. Ug sa akong mapaubsanong opinyon, ang usa ka butang sama sa browser kinahanglan nga i-integrate sa bisan unsang mas naugmad o dili kaayo naugmad nga GUI framework nga walay bisan unsang kasamok.

WebLibrary

Balik ta sa akong app nga adunay working title WebLibraryMao kini ang hitsura karong adlawa (drum roll):

"Akong basahon kini sa ulahi": ang lisud nga kapalaran sa usa ka offline nga koleksyon sa mga panid sa Internet

labut pa sa limpyo ug mubo nga interface Ang labing sukaranan nga mga gimbuhaton lamang ang gipatuman dinhi:

  • Ipakita ang bisan unsang gitakdang direktoryo sa sistema isip usa ka librarya sa dokumento.
  • Tan-awa ang mga dokumento sa bintana sa browser. Bisitaha ang lista sama sa naandan (mga arrow key, PgUp, PgDn, Home, End), i-scroll sa browser gamit ang Space ug Shift+Space.
  • Pag-ilis sa ngalan sa mga dokumento.
  • Markahi ang mga dokumento isip nabasa o paborito gamit ang mga hotkey.
  • Pag-sort sa mga dokumento pinaagi sa bisan unsang field.
  • Mo-refresh sa bintana sa aplikasyon kon adunay mga pagbag-o sa folder sa librarya.
  • I-save ang mga setting sa bintana sa paggawas.

Kini tanan daw gamay ra nga gamit, apan, pananglitan, ang pagpreserbar sa gidak-on sa kolum sa TagSpaces wala gihapon gisuportahan—dayag nga ang mga tagsulat adunay ubang mga prayoridad.

Ang status (read/favorite) gitipigan lang sa ngalan sa file (read file doc.html giilisan og ngalan ngadto sa doc{R,S}.html). Walay synchronization, pero gibutang ra nako ang library sa Dropbox—kay, usa ra man ni ka folder nga adunay mga file.

Naa pa koy mga plano nga pauswagon ang mga simpleng butang sama sa pagbalhin ug pagtangtang sa mga file, ingon man ang pagpatuman sa mga custom tag. Kung adunay gusto nga motabang, malipayon ako nga motabang.

kaplag

Tanang klase sa butang. Sama sa akong giingon sa sinugdanan, katingalahan kon unsa ka lahi ang mga himan sa usa ka tawo gikan sa lain. Para nako, natural lang ang paggamit og himan sama sa WebResearch, ug halos gibati nako ang pisikal nga kahasol kung wala kini. Sa samang higayon, morag wala koy daghang mga tawo nga parehas og hunahuna, kung dili, dili unta ako maglisod sa pagpangita og mga alternatibo. Sa laing bahin, parehas nga mga sitwasyon ang mahitabo sa mas mainstream nga software: pananglitan, ang Microsoft wala nagplano nga i-update ang desktop nga bersyon sa OneNote, mao nga natanggong ko sa paggamit sa 2016 nga bersyon, ug sa madugay o madali kinahanglan ko nga mobalhin gikan niini.

Ang nakapakurat usab kay lisod kaayo ang pag-navigate sa kasamtangang kahimtang sa mga librarya ug framework. Talagsa ra ko kinahanglan nga magsulat og mga desktop application sa akong trabaho gikan sa sinugdanan hangtod sa katapusan, ug nagtuo ko nga bisan unsang himan sa bisan unsang programming language mogana para sa akong buluhaton (usa ka bintana, tulo ka component, gamay nga interaksyon). Mao nga, among kuhaon ang bisan unsa nga among mahimo ug himoon kini sulod lang sa pipila ka adlaw.

Migawas nga ang realidad dili kaayo maabiabihon, ug makasugat kag problema nga kalit lang. Pananglitan, naa koy duha ka splitter nga akong gigamit sa pag-inat sa browser window. Lisod kaayo ibalik ang ilang posisyon human kini ma-load sa wxWidgets, kay ang sistema mo-reset niini sa ilang default nga posisyon human sa halos tanang event nga akong magamit, nga nagkinahanglan og tanang matang sa hackery aron makab-ot ang gitinguha nga resulta. Kinsay magtag-an?

Sa laing bahin, klaro nga sa Windows Ang Forms gidisenyo para sa mga business interface. Halos tanan nakong gikinahanglan anaa na dayon: pag-save ug pag-restore sa mga setting sa aplikasyon, usa ka user-friendly nga component interface (pananglitan, wala ko magdahom nga ang TreeView component mahimong ma-query para sa tibuok path gikan sa root ngadto sa bisan unsang child element isip string), ug mga sopistikado nga feature sama sa folder content change tracker.

Sa bisan unsang kaso, ang oras wala mausik, ug ang resulta mahimong isipon nga makatagbaw, busa unsa pa ang imong gusto gikan sa kinabuhi, di ba?

Source: www.habr.com

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster