"Би үүнийг дараа унших болно": Интернет хуудасны офлайн цуглуулгын хэцүү хувь тавилан

Зарим хүмүүс түүнгүйгээр амьдарч чадахгүй байхад зарим нь ийм зүйл байдаг, хэнд ч хэрэгтэй гэж төсөөлж ч чадахгүй ийм төрлийн программ хангамж байдаг. Миний хувьд олон жилийн турш энэ хөтөлбөр байсан Macropool WebResearch, энэ нь танд интернетийн хуудсыг нэг төрлийн офлайн номын сан болгон хадгалах, унших, цэгцлэх боломжийг олгосон. Манай уншигчдын олонх нь холбоосуудын цуглуулга эсвэл хадгалсан баримт бичгийн багц бүхий хөтөч, хавтас зэргийг хослуулан хэрэглэхэд зүгээр байх болно гэдэгт би итгэлтэй байна. Би ядаж баримт бичгүүдийг "уншсан" эсвэл "дуртай" гэж тэмдэглэж, нэг текстээс нөгөө рүү хурдан шилжиж, интернет эсвэл тодорхой сайтаас хамаарахгүй байхыг хүсч байна. Интернет байхгүй үед (жишээ нь зам дээр) яг унших цаг гардаг бөгөөд холбоосууд нь харамсалтай нь ихэвчлэн богино настай байдаг.

WebResearch-ийн зохиогчид ойролцоогоор эдгээр хүмүүст найдаж байсан бололтой. Энэ програм нь олон төрлийн функцээр дүүрэн байсан: хэсэг, шошгогоор каталоглох, тэмдэглэл засварлах, бүх төрлийн экспорт/импорт хийх гэх мэт. Гэсэн хэдий ч 2013 онд төсөл шинэчлэгдэхээ больсон бөгөөд дараа нь хөгжүүлэгчийн вэбсайт ажиллахаа больсон. Дахин хэдэн жилийн турш би энэ морийг унаж чадсан боловч эхлээд хөтчийн залгаасууд уналтад орсон (зөвхөн IE болон FireFox-ийн тэр үеийн хувилбаруудад боломжтой), дараа нь орчин үеийн сайтууд хуучин IE хөдөлгүүр дээр суурилсан үзэгчдэд хэвийн харагдахаа больсон.

"Би үүнийг дараа унших болно": Интернет хуудасны офлайн цуглуулгын хэцүү хувь тавилан
WebResearch үндсэн цонх, PC Week/RE No. 17 (575)

Сэтгэл дундуур байх зам

Орлуулахаас зайлсхийх боломжгүй нь тодорхой болмогц би ар талдаа зохистой аналог хайж эхэлсэн. Миний хүсэл маш даруухан тул энд ямар ч онцгой бэрхшээл гарахгүй байх шиг санагдсан. Би WebResearch хэрэгслүүдийн зөвхөн багахан хэсгийг ашиглахад бэлэн байсан бөгөөд үүнд:

  • өргөтгөл ашиглан хөтөчөөс HTML хуудсыг хадгалах;
  • наад зах нь хамгийн бага каталогийн хэрэгсэл (каталогийн нэрийг өөрчлөх, зохион байгуулах, шошго);
  • (илүү зохимжтой) PDF баримт бичгийг дэмжих;
  • цуглуулгаа бусад төхөөрөмжтэй синхрончлох ямар ч зохистой арга.

Би үүнтэй төстэй зүйл олж чадаагүй нь гайхшралыг төрүүлэв, гэхдээ би Интернетийг холоос хайж, тайлбартай тохирох хэдэн арван програмыг сайтар судалж үзсэн (Evernote-ээс бусад нь тайлбартай төстэй функцийг зөвхөн захиалгаар авах боломжтой). Өнөөдөр миний хүслийг ямар нэгэн байдлаар хангаж байгаа цорын ганц зүйл бол төслүүд юм TagSpaces и myBase. Тэдний судалгаа нь ерөнхийдөө тодорхой соёлын сонирхолтой байдаг.

TagSpaces бол үзэсгэлэнтэй вэбсайттай, дасан зохицох загвартай, мэдээжийн хэрэг харанхуй сэдэвтэй, Electron дээрх "загварлаг, загварлаг-залуучуудын" зохион байгуулагч бөгөөд үүнгүйгээр бид хаана байх байсан бэ. Үүний зэрэгцээ загварлаг бөөрөнхий дүрс бүхий цуглуулгын агуулгыг дэлгэцийн хагасыг эзэлдэг бөгөөд хамгийн ихдээ хорин элементийг багтаасан бөгөөд халуун товчлууруудыг дэмжих эсвэл үзэж буй баримт бичгийн дүрслэл зэрэг үндсэн зүйлсийг бичсэн болно. үлдэгдэл зарчмын дагуу. Үүний үр дүнд баримт бичгийг муруй харагдуулж, цуглуулгатай ажиллах нь хулганаар хийх уйтгартай, цаг хугацаа шаардсан дасгал болж хувирдаг.

Түүний myBase антипод нь ерээд оны сүүлээс гаралтай: эндээс гадна цэвэр функциональ интерфейс Бидэнд маш баялаг тохиргоо, функцууд бий. Гэсэн хэдий ч энд үзэх цонх нь хуучин IE дээр суурилсан ижил хөтөч юм (энэ нь аль хэдийн уншихад хэцүү болгодог) бөгөөд бүх баримт бичгийг цул мэдээллийн санд хадгалдаг. Хэрэв та үүнийг Dropbox хавтсанд хийвэл (бусад төхөөрөмжтэй синхрончлох өөр арга байхгүй хэвээр байгаа бол) цуглуулгад өчүүхэн өөрчлөлт хийснээр та хэдэн зуун мегабайт мэдээллийг серверт байршуулах хүртэл хүлээх хэрэгтэй болно.

Эргэлтийн цэг

Магадгүй, тэмдэглэлийн цаашдын агуулга нь уншигчдад ойлгомжтой мэт санагдаж магадгүй юм: одоо бидэнд өөрсдийнхөө унадаг дугуйг санал болгох болно, энэ нь мэдээжийн хэрэг, одоо байгаа бүх аналогиас дээгүүр байх болно. Тийм ээ, гэхдээ тийм биш. Би myBase болон TagSpaces-ийн сорилтыг үнэхээр тэвчиж чадаагүй бөгөөд өөрийн баримт бичгийн менежерийг зурсан бөгөөд энэ холбоосыг төгсгөлд нь өгөх болно. Гэсэн хэдий ч, энэ жижиг хувийн төсөл нь дангаараа өөрийн нийтлэлийг хүртэх ёсгүй; Ажиллаж байхдаа олж авсан туршлага, хэзээ ч төсөөлж байгаагүй хэд хэдэн таагүй гэнэтийн зүйлсээ хуваалцах нь сонирхолтой байх гэж бодсон учраас л бичиж байна.

Зорилго, зорилтууд

Би одоо нэлээд завгүй амьдралтай, хоббитой холбоотой төслүүдээ хэрэгжүүлэх цаг завгүй байгаагаас эхэлье. Тиймээс би анхнаасаа л гарт ирсэн бүх эд ангиудыг, хэрэв энэ нь ажлыг хурдасгах юм бол зэмсгээ урлахад бэлэн байна гэж шийдсэн. Нэмж дурдахад, би одоохондоо зөвхөн үнэмлэхүй хамгийн бага функцийг хэрэгжүүлэх үүрэг хүлээсэн бөгөөд үүнийг хийх боломжгүй юм.

Өгөгдлийн формат ба хуудас хадгалах

Вэб хуудсыг дискэнд ямар хэлбэрээр хадгалах вэ? Өмнө нь боловсруулсан шаардлагуудыг харгалзан үзэхэд сонголт нь жижиг юм шиг санагдаж байсан: "бүхэл бүтэн вэб хуудас" хадгалах формат, өөрөөр хэлбэл үндсэн HTML файл ба холбогдох нөөц бүхий хавтас эсвэл MHTML формат. Эхний сонголт нь надад тийм ч таатай санагдсангүй: диск дээрээ хогийн савтай файлууд байх нь тийм ч таатай биш бөгөөд үүнээс та чухал баримт бичгүүдийг гаргаж авах, хайхдаа шаардлагагүйг нь шүүж, хуулбарлахдаа бүрэн бүтэн байдлыг хянах шаардлагатай болно. Би TagSpaces-тэй ажиллахыг оролдохдоо нөөцийн хавтасны нэр цэгээр эхлэхийн тулд бүх баримтаа дахин хадгалах шаардлагатай болсон: дараа нь систем тэдгээрийг "далд" гэж хүлээн зөвшөөрч, харуулахгүй байв.

Бүх зүйл мэдээллийн санд хадгалагддаг тул энэ асуудал myBase-д харагдахаас нуугдаж байгаа боловч миний хувьд энгийн байх зарчим давамгайлж байсан: Би бүх зүйлийг дискэн дээр ердийн файл болгон хадгалахыг үнэхээр хүсч байсан бөгөөд ингэснээр би үүнийг хэрэгжүүлэхтэй тулгарах шаардлагагүй болно. хуулах, нэрийг өөрчлөх, устгах, синхрончлох зэрэг ердийн үйлдлүүд.

MHTML формат хэцүү үеийг туулж байна. MHTML хадгалах хялбар арга энэ зун Chrome-оос хасагдсан, мөн би одоо хуудсуудыг хаана хадгалах ёстойг мэдэхгүй байна уу? Энэ боломж хараахан алга болоогүй байгаа нь тодорхой байна, гуравдагч этгээдийн өргөтгөлүүд байгаа боловч ерөнхийдөө энэ нь ямар нэгэн муу шинж тэмдэг юм. Мөн MHTML форматаар хадгална Chromium Embedded Framework-д дэмжигдээгүй, энэ нь бас өөдрөг үзлийг нэмдэггүй.

Үүний зэрэгцээ би хөтчөөс хуудсуудыг заасан хавтас руу хадгалах энгийн аргыг хайж эхэлсэн. Үүний үр дүнд хоёр асуудал бага зэрэг алдагдалтай шийдэгдсэн: Би гайхалтай төсөлтэй танилцсан SingleFile, вэб хуудасны агуулгыг тусдаа бие даасан HTML файлд хадгалах боломжтой. Энэ нь холбогдох бүх нөөцийг base64 формат руу хөрвүүлж, HTML рүү шууд оруулах замаар хийгддэг. Мэдээжийн хэрэг, файлын хэмжээ нэмэгдэж, агуулга нь бага зэрэг эмх замбараагүй харагдаж байна, гэхдээ ерөнхийдөө арга нь надад найдвартай, энгийн мэт санагдаж, би үүнийг шийдсэн.

SingleFile нь хөтчийн өргөтгөл болон тушаалын мөрийн програмын аль алинд нь ирдэг. Одоо би зүгээр л өргөтгөлийг ашиглаж байна: хадгалахын тулд зорилтот хавтсыг гараар сонгох шаардлагатайг эс тооцвол энэ нь маш тохиромжтой. Ирээдүйд би энэ үйл явцыг хялбарчлахын тулд програмыг сайжруулахыг хичээх болно. Chrome-оос гуравдагч талын програм руу залгахын тулд та өргөтгөлийг ашиглаж болно Гадаад програмын товчлуур - Энэ бол миний бас нэг ашигтай нээлт юм. Дашрамд хэлэхэд, програм нь аль хэдийн хэрэг болсон: түүний тусламжтайгаар би TagSpaces-аас хавтас, файлуудын цуглуулгыг бие даасан HTML баримт бичгийн багц болгон хөрвүүлсэн.

GUI болон хөтөчтэй холбоотой асуудал

Би Python нь бүх төрлийн энгийн файл, мөрт үйлдлийн хувьд сайн гэдгийг олж мэдсэн бөгөөд миний ажлын нэг төсөл ашигладаг болохоор wxWidgets, сонголт wxPython үндсэн хүрээ гэж логик санагдав.

Цаашилбал, бусад програмууд дахь хуудсыг харуулахтай холбоотой хангалттай асуудлуудыг олж харсны дараа би тэдгээрийг шийдвэрлэх цорын ганц найдвартай арга бол орчин үеийн хөтөч, өөрөөр хэлбэл Chrome эсвэл Firefox дээр суурилсан визуализаторыг програмд ​​нэвтрүүлэх явдал юм гэсэн дүгнэлтэд хүрсэн.

Би хамгийн сүүлд 15 жилийн өмнө ийм зүйл хийх шаардлагатай болсон гэдгийг хүлээн зөвшөөрөх ёстой бөгөөд би ямар ч бэрхшээлийг хүлээж байгаагүй. "Зүгээр л хөтчийг маягт дээр алгадах" боломжгүй болох нь тогтоогдсон: ямар нэгэн байдлаар хүн төрөлхтөн энэ ажлыг найдвартай, нийтээр даван туулж чадаагүй юм. Маягт дээрх зарим төрлийн жагсаалтын хайрцаг эсвэл товчлуурыг дурын GUI системд байрлуулж, тэр ч байтугай платформ хоорондын код үүсгэж болох ба 2019 онд HTML дэлгэц нь нийтээр шийдэгдсэн асуудал байх ёстой юм шиг надад санагдсан.

Жишээлбэл, wxWidgets-ийн стандарт "хөтөч" бүрэлдэхүүн хэсэг нь системээс хамааралтай "хөтөч" дээрх хөндлөн платформ боодол юм. Internet Explorer 7, мөн Windows Forms-ийн нөхцөл байдал тийм ч сайн биш бөгөөд IE9-ээс шинэ хувилбаруудыг зөвхөн энгийн бус ашиглах боломжтой. бүртгэлийн манипуляци. Таны харж байгаагаар сүүлийн 15 жилийн турш өөр зүйл хийж байсан цорын ганц би биш бөгөөд энд бас юу ч хөдлөөгүй.

Дараа нь би сонголттой тулгарсан: хүрээг өөрчлөх эсвэл хөтөчийн өөр бүрэлдэхүүн хэсгийг хайх. Би эргэлзсэний эцэст эхлээд хоёр дахь замыг туршиж үзэхээр шийдэж, төсөлтэй хурдан таарав CEF Python: Chromium Embedded Framework-д зориулсан Python холболтууд, тусгайлан Chromium-ийг Python програмуудад суулгахад зориулагдсан.

Нөхцөл байдлыг үнэлнэ үү: Python бол дэлхийн хамгийн алдартай програмчлалын хэлнүүдийн нэг бөгөөд Chrome нь үндсэндээ хөтөчийн зах зээлд монополист юм. Үүний зэрэгцээ CEF Python нь үнэндээ эрчим хүчээр дэмжигддэг нэг залуу, түүнд хүч чадал, эрүүл мэнд. Энэ үнэхээр хэнд ч хэрэггүй гэж үү?..

Гэсэн хэдий ч CEF Python эцэст нь надад тусалсангүй: төслийн репозитороос wxWidgets-тэй нэгтгэх үндсэн жишээ ч гэсэн илэн далангүй алдаатай байсан ч би үүнийг илүү их хийх гэж оролдсон боловч үүссэн бүх асуудлыг шийдэж чадаагүй. Би энэ сэдвийг илүү гүнзгийрүүлэхгүй, энэ нь тийм ч тохиромжтой биш юм.

Би Chromium Embedded Framework дээр суурилсан бүрэлдэхүүн хэсгүүдийг нарийвчлан судалж үзээд эцэст нь туршиж үзэхээр шийдсэн. C#-д зориулсан хувилбар. Би Windows-тэй бараг үргэлж ажилладаг тул платформ хоорондын функцээс татгалзах нь надад тийм ч их санаа зовсонгүй.

Эхэндээ зайлшгүй шуугиан дэгдээсний дараа бүх зүйл илүү хурдан болсон: CefSharp болон Windows Forms-ийн хослол нь ялагч болж, би ихэнх техникийн асуудлуудыг ямар ч асуудалгүйгээр шийдэж чадсан.

Туршаагүй хүмүүсийн тухай

Та мөн бүрэлдэхүүн хэсгийг ашиглан FireFox-ийг C# програмд ​​суулгахыг оролдож болно Geckofx, гэхдээ би түүний талаар юу ч хэлж чадахгүй. Qt хүрээний стандарт хөтөч бүрэлдэхүүн хэсэг гэж нэрлэдэг QWebEngineView суурилсан Chromium дээр, тиймээс энэ нь магадгүй CefSharp шиг сайн ажиллах болно.

Qt-ийн шүтэн бишрэгчид сэтгэгдэл бичихийг хүсч магадгүй: хэрэв тэд Qt-г авсан бол ямар ч асуудал гарахгүй байх байсан. Энэ нь үнэн байж болох ч, wxWidgets-ийг Python эсвэл C++ дээрх програмуудад зориулсан GUI хүрээг сонгохдоо эхнийх биш бол хоёрдахь хувилбар гэж үзэж болно. Миний даруухан бодлоор хөтөч гэх мэт зүйлийг хэнгэрэг барин бүжиглэхгүйгээр их бага хөгжсөн GUI системд суулгаж өгөх хэрэгтэй.

Вэб номын сан

Гэсэн хэдий ч ажлын гарчигтай миний өргөдөл рүү буцъя Вэб номын сан. Өнөөдөр (бөмбөр өнхрөх) иймэрхүү харагдаж байна:

"Би үүнийг дараа унших болно": Интернет хуудасны офлайн цуглуулгын хэцүү хувь тавилан

Түүнээс гадна цэвэр бөгөөд товч интерфэйс Энд зөвхөн хамгийн үндсэн функцуудыг хэрэгжүүлдэг:

  • Системд заасан дурын санг баримт бичгийн сан болгон харуулах.
  • Баримт бичгийг хөтчийн цонхноос харах. Жагсаалтыг ердийн аргаар (курсор товчлуурууд, PgUp, PgDn, Home, End) гүйлгэж, Space болон Shift+Space товчлууруудыг ашиглан хөтчөөр гүйлгэ.
  • Баримт бичгийн нэрийг өөрчлөх.
  • Баримт бичгүүдийг уншсан эсвэл дуртай гэж тэмдэглэнэ үү.
  • Баримт бичгийг аль ч талбараар эрэмбэлэх.
  • Номын сангийн хавтсанд өөрчлөлт орсон үед програмын цонхыг сэргээнэ.
  • Гарах үед цонхны тохиргоог хадгал.

Энэ бүхэн нь өчүүхэн функцтэй мэт санагдаж болох ч, TagSpaces-д баганын хэмжээг хадгалах нь дэмжигдээгүй хэвээр байгаа тул зохиогчид өөр тэргүүлэх чиглэлтэй байгаа бололтой.

Төлөв (уншсан/дуртай) нь зүгээр л файлын нэрэнд хадгалагддаг (файл унших doc.html гэж өөрчилсөн doc{R,S}.html). Ийм синхрончлол байхгүй, гэхдээ би зүгээр л номын санг Dropbox-д хадгалдаг - энэ нь зүгээр л файлтай хавтас юм.

Файл зөөх, устгах гэх мэт энгийн зүйлсийг сайжруулах, дурын шошготой тэмдэглэгээг хэрэгжүүлэх төлөвлөгөө хэвээр байна. Хэрэв хэн нэгэн нь туслахыг хүсвэл би зөвхөн баяртай байх болно.

үр дүн нь

Янз бүрийн. Би анхнаасаа хэлсэнчлэн нэг хүний ​​хэрэглүүр нөгөө хүнийхээс ямар ялгаатай байж болох нь үнэхээр гайхалтай. WebResearch гэх мэт хэрэгслийг ашиглах нь надад аяндаа ирдэг бөгөөд энэ нь байхгүйгээс би бараг бие махбодийн таагүй мэдрэмжийг мэдэрсэн. Үүний зэрэгцээ, надад ижил төстэй хүмүүс цөөхөн байдаг, эс тэгвээс аналогийг олоход асуудал гарахгүй. Нөгөөтэйгүүр, ижил төстэй тохиолдлууд илүү нийтлэг програм хангамжид тохиолддог: жишээлбэл, Microsoft OneNote-ийн ширээний хувилбарыг шинэчлэхгүй байгаа тул би 2016 оны хувилбарыг ашиглахаас өөр аргагүй болсон бөгөөд эрт орой хэзээ нэгэн цагт би мөн үүнээс шилжих шаардлагатай болно. хаа нэгтээ.

Гайхалтай нь одоогийн номын сан, фреймворкуудын ландшафтыг чиглүүлэхэд хичнээн хэцүү байдаг вэ? Ажлынхаа хүрээнд би эхнээс нь дуустал ширээний программ бичих нь ховор бөгөөд ямар ч програмчлалын хэлэнд зориулсан ямар ч хэрэгсэл миний даалгаварт (нэг цонх, гурван бүрэлдэхүүн хэсэг, өчүүхэн харилцан үйлчлэл) тохиромжтой байх болно гэж би боддог байсан. Тиймээс бид ямар ч зүйлийг аваад хэдхэн хоногийн дотор хийдэг.

Бодит байдал нь тийм ч сайн биш бөгөөд та зүгээр л гэнэтийн асуудалтай тулгарах боломжтой болсон. Би хөтчийн цонхыг сунгахад ашиглаж болох хоёр хуваагчтай гэж бодъё. Тиймээс, wxWidget-д ачаалсны дараа тэдний байрлалыг сэргээх нь маш хэцүү байдаг, учир нь систем нь надад боломжтой бараг бүх үйл явдлын дараа тэдгээрийг үндсэн байрлалд оруулдаг бөгөөд би хэрэгтэй зүйлдээ хүрэхийн тулд бүх төрлийн хакердах хэрэгтэй болдог. Хэн таамаглах байсан бэ?

Нөгөөтэйгүүр, Windows Forms-д бүх зүйл "бизнесийн интерфейс"-д зориулагдсан байдаг нь ойлгомжтой. Бараг л шаардлагатай бүх зүйл бэлэн байсан: програмын тохиргоог хадгалах/сэргээх, бүрэлдэхүүн хэсгүүдийн тохиромжтой интерфэйс (жишээлбэл, TreeView бүрэлдэхүүн хэсгээс эхээс ямар ч хүүхэд элемент хүртэлх замыг бүрэн асууж болно гэж би бодоогүй. мөр хэлбэрээр) болон хавтас контентын өөрчлөлтийг хянах хэрэгсэл гэх мэт чухал бус хэрэгслүүд.

Ямар ч байсан цаг хугацаа дэмий үрээгүй, үр дүн нь хангалттай гэж үзэж болох тул амьдралаас өөр юу хүсэх вэ?

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх