Состоялся релиз каталогизатора домашней библиотеки MyLibrary 1.0. Код программы написан на языке программирования С++ и доступен (GitHub, GitFlic) под лицензией GPLv3. Графический интерфейс пользователя реализован с помощью библиотеки GTK4. Программа адаптирована для работы в операционных системах семейства Linux и Windows. Для пользователей Arch Linux в AUR доступен готовый пакет...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=58362
Почему бы не хранить книги просто аккуратно рассортированными по папочкам? И искать с помощью find.
Скорее с помощью (rip)grep. Но всяк бывает, кому-то такой подход может быть удобнее
Есть locate, куда быстрее.
А ты был хоть раз в нормальной библиотеке? Там как минимум по 2 каталога: один по авторам, другой по рубрикам.
про команду ln(1) слыхал?
+ attr(1)
reboot не пробовал?
Имя Столлман вам о чем-нибудь говорит?
Собор/базар. Я прошёл не один холивар. Я желаю всем айтишникам пройти их.
rm -rf ~/ тебе ни о чём не говорит?
Представь себе библиотеку либрусека, которая сосотит из сотни тысяч книг. И прикинь, сколько нужно создать директорий, и сколько раз нужно набрать твой ln(1), чтобы получился аналог библиотеки? Каким-то образом заглядывая во все fb2, извлекая оттуда информацию о авторе и жанре. Сможешь?
Думаешь на либрусеке используют "каталогизатор __домашней__ библиотеки"? Для __дома__ большинству сойдет и обычный советский coreutils (сомневаюсь, что ты читаешь "сотни тысяч книг", хорошо, если хотя бы десять за год осилишь). А для работы с многочисленными источниками уже придумали Mendeley.
Ты, похоже, просто не понял, для чего нужна эта программа. Вот смотри: я скачал _себе домой_ архив либрусека. Там все книжки, которые есть на либрусеке. В формате fb2.zip. Скажем, сто тысяч. И мне нужен удобный локальный инструмент для поиска книжек в этой куче. Это не значит, что я все сто тысяч прочитаю, нет. Пусть десять за год (хотя и это вряд ли). Но я найду то, что мне по душе, и буду это читать. Выберу либо по автору, по жанру, по серии, по названию, либо по ещё каким-нибудь критериям. Твои ln(1) и сортировка по директориям этому никак помочь не могут.
Ты забыл уточнить, зачем скачивать архив либрусека и заводить на локалхосте поиск, когда уже есть... (барабанная дробь! зрители затаили дыхание)... либрусек.
Очень просто. Вы когда-нибудь бывали там, где нет интернета? Я вот до недавних пор очень даже часто в таких местах оказывался. В центре Атлантического океана например. Нет, через спутник в принципе можно и там до сети достучаться, но вы хотя бы приблизительно представляете - сколько это стоит? Да и не у всех есть такая возможность - иногда оставляют только доступ к корпоративному e-mail серверу и всё. А вот судовой сервер или жёсткие диски товарищей по несчастью со всяким разным имеются. С локальной копией того же либрусека или флибусты. И как, 300 гб архивов будете в ручную перебирать?
Перед тем, как уходить в оффлайн, скачиваешь всего десять книг. Вот прямо садишься и весь вечер тупо подбираешь книги, но ограничиваешь себя лишь десятью. Этого тебе должно хватить на многомесячное борозжение всяческих океанов. А такой проблемы, как "перебирать 300 гб архивов", нет. У тебя проблема в том, что ты не знаешь, чего хочешь, и надеешься, что поисковик тебе в чем-то поможет. Либо часто бросаешь чтение на пятой странице. Приучай себя к дисциплине: взял почитать - прочитай до конца.
> Перед тем, как уходить в оффлайн, скачиваешь всего десять книг.Ага-ага, вот только время на это есть далеко не всегда. Ну и типичная ситуация - по плану уехал на два месяца, а в реальности - почти на пять получилось. Два из которых - на якорной стоянке в западной Африке, где с интернетом даже на берегу... небольшие проблемы. А работы особой нет. Книги закончились - дальше что? Нет, можно за мухами например понаблюдать - о-очень увлекательное занятие. Только крыша съедет через неделю.
Ну давай посчитаем - 10 книг, ~ по 500 страниц в каждой ... За день читается ~50 страниц (и то если книга увлекательная то и все 100) ... (Это я беру где-то 2 часа на чтение. Я читаю ~30 страниц в час). Итого 100 дней. Даже полугода нет.А архивы нужны ... Прочитал ты какого-нибудь нового автора, и захотелось тебе именно его ещё, что-нибудь прочитать ... Вот тут и нужен "архив в 300гб архивов". А дисциплина "Читать только 50 том собрания В.И.Ленина" мне не надь, проходили уже ...
Ну вот, например, захотел я почитать что-нибудь по философии. Залез в инет, везде советуют Ильина и Дугина, скачал, уехал в тайгу... И там оказалось, что это не философы, а фашисты махровые! Продолжать читать эту помойку?
Или, опять же, скачал Анти-Дюринг, а в процессе захотелось прочитать критикуемый оригинал?
Ты это рассказываешь поколению "все есть и будет доступно в интернетиках" эдаким интернет детям. Это бесполезно. У них если нет интернета часть знаний если не все отрезает.
Затем, что сегодня либрусек есть, а завтра его может и не быть.
И чо, все книги на русском прям пропадут? У всех?
У меня — нет, не пропадут, потому что копия есть. А вы будете по крошкам собирать.
Плюшкины никогда не вымрут) Видимо торренты, фтп архивы и создавать сайты тоже запретят, ага.
Торренты, между прочим, не в астрале хранятся. А у плюшкиных.
как и любители халявы
Вот как только на нем появится кнопочка "скачать", тогда и поговорим.
Сейчас он есть ... А придёт министерство любви и опана (барабанная дробь! зрители затаили дыхание) ... его уже нет !
> когда ещё пока есть... (барабанная дробь! зрители затаили дыхание)... либрусекПоправил. Можешь не благодарить.
Действительно. Зачем все эти СУБД придумали. Раскидать по ФС и размазать симлинками!
ФС своего рода тоже СУБД.
Вы умеете ln на файл в архиве?
Нужды нет в линках на файлы в архиве, книги то сжаты и так.
Сжатие fb2 в 2 fb2.zip, это неотъемлимая часть, как у tar.gz.А напихать в о один архив десятки тысяч книг, это узкоспециализированная идея.
Казалось бы удобно записать на флешку для переноса. Но можно и сам образ из которых каталоги собираются не мене спокойно положить на флешку.
Отличный вопрос. Половина проблем у людей - то что книги прилетают в какой-то плохо читаемой и соответственно плохо ищущейся абракадабре, которую сначала нужно переименовать. Полное именование книги не всегда влезает в 128 знаков (которые в мультибайте дадут 256 байт, которые уже иногда и в ограничения ФС упираются). Причём с epub ещё норм, можно наскриптовать чтобы вся коллекция книг была переименована в соответствии с title в метаданных. С PDF/DJVU зато реальная бооооль.
Ну и отдельно категоризация... ну и если библиотечка не умеет в OPDS, то тоже некоторым будет неудобно...
А ещё некоторым хочется синкать прогресс чтения между устройствами и тут вдруг резко все эти библиотеки остаются ненужны
Следующий вопрос. А если люди не пираты и используют нормальные сервисы для чтения, а то и несколько за бабос. Как им может помочь эта балалайкой?
>нормальные сервисыодному чуваку на зоне нравилось. Он говорил, как могут люди на свободе жить - это же думать самому надо, решения принимать. Ненормальные какие-то.
Одному нравилось жить в перекосившемся бараке с туалетом не улице лишь бы ни за что не платить. Да и денег у него из-за этого и не было. А другой живет в приличном загородном доме и платит за всё. Ты свой путь с бараком уже выбрал.
> А другой живет в приличном загородном доме и платит за всё.То есть при прочих равных денег у него много меньше, чем у первого.
Т.е. ты даже не думаешь что для зарабатывания денег надо прикладывать усилия, даже иногда, ты не поверишь умственные! В твоём манямирке деньги с неба падают как мана небесная.Открою тебе тайну в бараке живет и ворует только тот кто хочет так жить.
"При прочих равных" предполагает, в том числе, аналогичный уровень дохода. Тебе даже это нужно объяснять? Особенно показательна фраза "Да и денег у него из-за этого и не было". Не надо путать доходы с расходами.
1. Воровать - это когда у кого-то что-то забрал без спросу. В данном случае, у источника ничего не изчезнет.2. Чтобы за что-то заплатить, нужно понимать, за что ты платишь. Понять можно только прочитав книгу.
А ты уже полностью отказался от сферы услуг и перешёл на полное самообеспечение? Нет? Ну тогда твоя смешная притча - про тебя.
> А если люди не пираты и используют нормальные сервисы для чтенияТо у них всего две книги на выбор, им каталогизатор не нужен.
Какую сам прочитаешь, какую матери закачаешь?
Если ты за жизнь накопил на две книги это не значит что все такие же бездельники как ты.
Учитывая, что сейчас из официальных магазинов и библиотек убирают неудобные книги и книги неудобных авторов, локальные хранилища становятся еще более оправданными в отличии от "нормальных" сервисов.
Никогда не устану давать текст этой песни, потому что она прикольнаяА соседи шумят - они не могут понять, когда хочется петь.
Соседи не любят твоих песен, они привыкли терпеть.
Они привыкли каждый день входить в этот тёмный подъезд.
Если есть запрещающий знак, они знают - где-то рядом объезд.Никогда для себя не сделают так чтобы свет был всегда и никто им ничего не запрещал, будут только терпеть. Строго говоря так им и надо.
К сожалению, автор этих строк тоже скурвился. Не стоит прогибаться под пластмассовый мир подебил, как говорится.
> А соседи шумят - они не могут понять, когда хочется петь.А какие-то "одарённые" не могут понять, когда хочется отдохнуть в тишине или поспать или выучить что-то новое (в тишине, ибо концентрация) или... Да тишина значительно чаще требуется, чем желание петь возникает.
И тут ты такой - бац и 5 примеров таких книг, которые ты искал и не нашёл.
А ты такой бац, и выкладываешь цитату где я писал, будто я что-то не нашел. Этот навык у меня неплохо прокачан, ибо востребован.
Ага
При чем все эти байки про убирание неугодных книг из электронных библиотек не имеют подтверждений
И все они восходят к байке какого-то безумного левака о том, как Амазон удалил у него «1984»
При этом ни у кого больше не удалили, да и он не смог подтвердить того, что у него удалилиВ реальности в библиотеки(бумажные) Москвы сегодня был спущен список авторов чьи книги необходимо не просто убрать с полок, но уничтожить
И вот как так?
Переживаешь ты за вымышленные электронные, а книги сжигают в реальных бумажных библиотеках
> Ага
> При чем все эти байки про убирание неугодных книг из электронных библиотек
> не имеют подтверждений
> И все они восходят к байке какого-то безумного левака о том, как
> Амазон удалил у него «1984»
> При этом ни у кого больше не удалили, да и он не
> смог подтвердить того, что у него удалилиНу отчего же. Вот, например: "Подразделение «Литреса», занимающееся электронным самиздатом, попросило авторов самостоятельно убрать с площадки тексты, подпадающие под действие закона о «гей-пропаганде», — или переписать их таким способом, чтобы их можно было безбоязненно вернуть в продажу."
Или вот: "В издательстве Ridero запустили нейросеть для проверки своих книг на наличие ЛГБТ-тематики — их снимут с продажи, чтобы не нарушать свежий закон, подписанный Владимиром Путиным."
Фикбук перенесут такие книги на другой сайт: https://slashbook.net/
Наверняка и АвторТудей, прости господи, подсуетился. Лень искать.
https://vk.com/ipmcmlxxxi?w=wall-202876924_267
Им поможет прочтение повести Столмана "Книга"
Абсолютно согласен. Можно еще тегировать и искать ввода/кликая теги.
Но если у вас не 15 папочек по 1 в глубину, удобство этих подходов близится к O(n).
Можно написать нейросеть которая сама за тебя выберет что читать. И каталог тогда не нужен.
.. а также сама за тебя почитает, посрётся в форумах, набухается пива.. и вообще будет жить на всю катушку пока ты шабашишь в офисе
Было бы не плохо.
И как вы будете использовать find если книги лежат в архивах?
Надо всю коллекцию сжать mksquashfs, при необходимости монтировать и потом find
Ничего ты не понимаешь в ляпих-вей - на каждый архив по симлинку на файл с названием. Ну и отдельно директории с сортировкой по годам и авторам - тоже симлинками.
Потому что теги. Предположим, у Вас есть папка "Категория А" и папка "Категория Б". Вот только книга относится к ОБОИМ категориям. Что будете делать, выбирать категорию произвольной? Или хранить две копии, каждую копию в свою папку? А что если в книгу введете какие-то изменения (например, заметку добавите с помощью Okular)?Проще просто присвоить книге два тега, "Категория А" и "Категория Б". И в случае надобности, искать книгу по одному из этих тегов.
Чел, hardlink даже в винде есть.
Не плоди лишние сущности.
Такой подход хорошо работает когда у вас 1, 2, 3, 5, 10 книг. А вот когда у вас от 100 Гб книг и больше, то оно тормозит сильно. И приходится использовать такие программы с базами данных.
Ты зачем на детку такую страшную информацию скидываешь? У него же психика не выдержит.
Вот чтобы не заниматься созданием миллионом папок, а потом думать куда сунуть книгу если она удовлетворяет сразу разным критериям (сортировка по автору это самый очевидный но дажеко не самый информативный метод категоризации) и были созданы метаданные. Автор, дата, жанры, субжанры.
Поиск по жанру, автору, циклу серии, названию книги, году? А если метаданные корректируются?
> Реализован поиск книг по различным критериям (фамилия, имя, отчество автора, название книги, серия, жанр) и их чтение через программуУ меня 100 тысяч источников. Сколько же времени я базу заполнять буду?
А сколько нужно тебе времени чтобы прочитать про форматы умеющие хранить метаданные?
Метаданные вида Unknown Author -- Unknown Book (unknown year) ?
Если fb2 заполнялся аккуратно изначально - не очень долго. ~500к fb2 в архивах на дохлой orange pi обрабатывается порядка дня (правда, у меня своё, ибо не десктоп, а домашний типа-сервер с opds и вебмордой)
На чем реализован OPDS?
> На чем реализован OPDS?При помощи питона и какой-то матери. Вообще, если бы нашел нормально работающую на том хранилище вебморду, которая умеет работать поверх кучки .zip, получаемых извне - писать не стал бы.
Но большинство - либо не умеют в кучку .zip, либо тормозят так, что обработка кучки зипов идёт сильно больше суток.
А можно полапать? Сейчас у себя кручу срез флибусты на sopds (sopds.ru), но он банально устарел и как бы я не пинал автора, он все не может найти время на доработку проекта под свежие версии приложений. Пока сам костыли прикручиваю, но надолго ли?
Если можно, с краткой редмишкой. Мне как раз гуя и веб-морда не нужна, лишь только возможность отдавать через opds на устройства через сеть
> А можно полапать? Сейчас у себя кручу срез флибусты на sopds (sopds.ru),
> но он банально устарел и как бы я не пинал автора,
> он все не может найти время на доработку проекта под свежие
> версии приложений. Пока сам костыли прикручиваю, но надолго ли?
> Если можно, с краткой редмишкой. Мне как раз гуя и веб-морда не
> нужна, лишь только возможность отдавать через opds на устройства через сетьПока ещё не выложил на гитхаб, дома забываю постоянно. В принципе, доступна предыдущая версия, где таки используется база, но её я вряд ли буду дорабатывать за неиспользованием: https://github.com/stanislavvv/fb2_srv
Заранее предупреждаю: не программист, а админ, соответственно, из всей красоты кода - прогон через flake8.
Вебморда, кстати, есть. Представляет собой трансляцию opds в html. Делалась для отладки, выглядит соответственно.
На Orange PI 3 LTS с данными на hdd, воткнутом в usb3, версия с базой значительно медленнее, чем версия с кучей файлов. Если вспомню - выложу в соседней репе на этой неделе.
Благодарю, буду на праздниках пробовать
Старая версия с гитхаба, как оказалось:
Не видит файлы вне архивов
Вообще не любит кириллические имена файлов.
И как-то странно работает. Свой архив с именем файла 12345.fb2 пихаю - на просмотр книгу открывает, на попытку скачать устраивает истерику TypeError: send_file() got an unexpected keyword argument 'attachment_filename'.
С другой стороны из флибустовского архива вроде нормально открываются и скачиваются.
К сожалению, не программист, докумекать что и куда не в силах. Но и на том спасибо!
Если что-то повкуснее появится - буду признателен
> Старая версия с гитхаба, как оказалось:
> Не видит файлы вне архивовТак и задумывал. У меня диск с архивами хоть и большой, но всё ж далеко не бесконечный.
> Вообще не любит кириллические имена файлов.
В .zip их вообще никто не любит - там хрен поймёшь, какая кодировка.
> И как-то странно работает. Свой архив с именем файла 12345.fb2 пихаю -
А можно его зааттачить к багу на гитхабе?
Не скажу, что сделаю в версии с sqlite, но, как минимум, проверю в той версии, что у меня не тормозит.> на просмотр книгу открывает, на попытку скачать устраивает истерику TypeError: send_file()
> got an unexpected keyword argument 'attachment_filename'.Странно... Впрочем, надо будет подумать на предмет virtualenv с указанием версий библиотек.
У меня сиё запускается под Debian 10 и Debian 11, причём библиотеки ставятся из дебиановского репозитория, так что версии не те же, что будут через pip3 install> С другой стороны из флибустовского архива вроде нормально открываются и скачиваются.
> К сожалению, не программист, докумекать что и куда не в силах. Но
> и на том спасибо!
> Если что-то повкуснее появится - буду признателен
> А можно его зааттачить к багу на гитхабе?Начал оформлять багу, но потом перепроверил на дебиане (10) - вроде бы нормально. Баг проявился на gentoo, но тут еще обновляться и наблюдать. Поэтому, будем считать, что это мой косяк.
> В .zip их вообще никто не любит - там хрен поймёшь, какая кодировка.Понял
> Странно... Впрочем, надо будет подумать на предмет virtualenv с указанием версий библиотек.Тоже об этом подумал. На новогодних праздниках более вдумчиво потыкаю проект, пока все на бегу, толком и не проверить
Дошли руки выложить ту версию, которая у меня сейчас работает:
https://github.com/stanislavvv/fb2_srv_pseudostaticПо форматам данных несовместима, добавляет несколько ГБ индексов в json/jsonl вместо базы, но на дохлом Orange Pi не тормозит до 502 в отличие от.
Рекомендую потыкать это, там достаточно сильно переделаны не только индексы.
> Дошли руки выложить ту версию, которая у меня сейчас работает:
> https://github.com/stanislavvv/fb2_srv_pseudostatic
> По форматам данных несовместима, добавляет несколько ГБ индексов в json/jsonl вместо базы,
> но на дохлом Orange Pi не тормозит до 502 в отличие
> от.
> Рекомендую потыкать это, там достаточно сильно переделаны не только индексы.Вот спасибо! Вот подарок!
А я наконец-то дождался от китайцев б/у хлам и мигрировал "сервачок" с Core2Duo e4500 2Gb DDR2 на Core i5-3570 16Gb DDR3. Как раз заканчиваю индексы добивать. Но, раз такая пьянка - все на переделку)
По прежней версии - да, косяк с разными версиями библиотек. На стационарнике у меня sid, на сервере 11.2 стоит. На 11.2 вылетела ошибка, при обработке одного архива, так скачал на стационарный - там идеально прошло, поэтому не стал оформлять как баг. Вобщем, мелочи.
Ну теперь попробуем что повкуснее, а то sopds окончательно меня огорчил, став запинаться на свежих архивах. В поле названия книги какой-то чудак иероглиф впихнул и обработчик на том стал вылетать. Решение вроде как есть (https://sebhastian.com/mysql-incorrect-string-value/), но чот я психанул и забил.
Ну а раз под одноплатники - так у меня апельсинки где-то лежали, как раз в дело пустить можно.
> Дошли руки выложить ту версию, которая у меня сейчас работает:
> https://github.com/stanislavvv/fb2_srv_pseudostatic
> По форматам данных несовместима, добавляет несколько ГБ индексов в json/jsonl вместо базы,
> но на дохлом Orange Pi не тормозит до 502 в отличие
> от.
> Рекомендую потыкать это, там достаточно сильно переделаны не только индексы.Великолепно!
Все как по часикам отсканировалось и заработало!
Приветствую!
Мануальчик бы по настройке и разворачиванию fb2_srv_pg
Чтоб не методом тыка :)
> Приветствую!
> Мануальчик бы по настройке и разворачиванию fb2_srv_pg
> Чтоб не методом тыка :)Лучше тикет создай... Так-то из разворачивания - создал базу, дал права, вписал в конфиг.
> У меня 100 тысяч источников. Сколько же времени я базу заполнять буду?Каталог с больше, чем 300 ГБ zip архивов с fb2 файлами (больше 500 тысяч книг), у меня добавил в базу где-то часов за 5. Процессор intel i5 и жёсткий диск HDD (для понимания скорости чтения).
Пока кофе попьёте, и заполнится база. Ну не вручную же заполнять собираетесь?В каталоге с книгой файл типа назнание.conf, в файле автор, название, ключевые слова...
И в самой книге, тоже есть подобная информация, но у conf приоритет.
Далее скрипт просматривает обновленные файлы и вносит изменения в базу, или перестраивает дерево симлинков.
PS:
~500 тысяч книг, за 5 ==> 36 mS книгу.
или 28 добавлений в секунду. Для 1 потока слабо, а для 4х плохо.
HDD тут не сильно влияет, в отличии от объёма ОЗУ и алгоритма.
Впрочем.. если добавление архива в базу заведомо не частая операция, для дома то, то и мудрить с софтом не оправданно, если работает правильно, то более чем годно.
Хоть кто-то хоть что-то пишет на единственном нормальном языке. А то в последнее время одна хипстотам.
так было бы нормаль но написано тоif(p.extension().u8string() == ".fb2")
{ fb2.push_back(p);
}
if(p.extension().u8string() == ".epub")
{ epub.push_back(p);}
if(p.extension().u8string() == ".zip")
Проверяя имя файла несколько раз находим его расширение.
Даже когда выяснили, что расширение .fb2. Проверяем ещё, а вдруг расширение ".epub"?А то что за такое вообще? Я заглянул в код на 30 секунд.
Чо, ваш компилятор не умеет такое оптимизировать? Раст умеет.
> Чо, ваш компилятор не умеет такое оптимизировать? Раст умеет.Возможно авторы компилятора раста сразу ориентировались на большинство, а авторы c++ были идеалистами.
Не скажу про компилятор.Но если бы кто-то так при мне сто раз копипастил какую-то ерунду с конкретной привязкой типа u8string.
Охота взять и какой-то книгой по хорошему коду по башке дать.
https://atsumeru.xyz/ru/
вот нормальный каталогизатор. так еще и читать можно с любого устройства
Сервер не умеет рендерить ePub и FB2. Для чтения контента в таких форматах, конечный клиент должен их поддерживать нативноСпасибо поорал.
Покажи хоть один аналог с рендером.
Это сделано для того чтобы народ не начинал размещать это счастье публично в сети - сразу правообладатели набегут. А так все беспалевно, есть странная приложуха и адрес в сети. В браузер вбиваем и видим "нихрена". Правообладатели люди простые, не заморачиваются в большинстве случаев и все довольны.
Посмотрел код сервера на житхабе.
Ллля. Оче плохо.
Чел не используй автовайр. Делай инжект через конструктор.Не используй статические конструкторы в бинах. Это отвратительно. Тем более если в них дергаешь синглтоны.
Что наркоманские GU* классы.
Дальше смотреть стало лень.
Мешанина какая-то
Есть гораздо интнреснее рроект и без джавы
https://github.com/getmango/Mango
Проорунькал.
Кристал.
Это потом руби чтоли?
Такой же тормозной?
Тут даже пхп пожалуй быстрее будет
прошу, компилируемый руби! сделан из того же теста, что и, прости Господи, раст!
А можно парочку скриншотов в репозиторий положить? А то вообще не понятно как оно выглядит и захочется ли им пользоваться вообще.
> А можно парочку скриншотов в репозиторий положить? А то вообще не понятно как оно выглядит и захочется ли им пользоваться вообще.
Спасибо поблевал.
Обращайтесь ещё, мы всегда вам рады))
Да ладно вам, примерно такое я и ожидал увидеть. Классический минималистично-утилитарный дизайн от погромиста.
Есть в планах изучить- https://developer.gnome.org/hig/guidelines.html
- https://developer.gnome.org/hig/patterns/containers.html?
> Есть в планах изучитьЗачем?
Чтобы потом забыть и применить нормальный интерфейс для нормальных людей KDE Human Interface Guidelines
Разработано по госзаказу для Минобороны? :)Ну можно же набрать рефы, как это делают другие разработчики.
Лишнее.
Функционал хуже чем в calibre, при этом для винды предлагают ставить через msys.
"You can build MyLibrary from source by MSYS2 project https://www.msys2.org/. "
> Лишнее.
> Функционал хуже чем в calibre, при этом для винды предлагают ставить через
> msys.
> "You can build MyLibrary from source by MSYS2 project https://www.msys2.org/. "Для винды есть ещё например MyHomeLibrary. Через msys - потому что так удобней, чем таскать за собой всю пачку библиотек GTK с зависимостями в нативном инсталляторе. Да ещё изобретать отдельную программу-пусковик, чтобы работал Pixbufer. Проще говоря, эта программа больше для пользователей линукс, винда - чисто потому что потирование особых усилий не требует (с точки зрения кода).
Касательно calibre - да функционал у неё шире. Но вы попробуйте в неё запихнуть стороннюю библиотеку гигабайт на сто в zip архивах. Вас ждёт сюрприз. Нет, calibre всё сделает. Когда-нибудь. Достав все файлы из архивов и скопировав их. Т.е. по объёму к тому, что было, добавится ещё раза три по столько же.
И опять же - никого не призываю бросать немедленно свой любимый каталогизатор и переходить на MyLibrary. Если кому-то нужно - пользуйтесь на здоровье, а если нет - на нет и суда нет.
А по функционалу добавим понемногу. Замечания по поводу "кому чего не хватает" только приветствуются.
Вы создатель этой проги?
А чем обусловлен выбор gtk, а не QT? Не срача ради, просто интересно
> Вы создатель этой проги?
> А чем обусловлен выбор gtk, а не QT? Не срача ради, просто
> интересноРациональных аргументов против Qt у меня нет. И даже больше вам скажу - предыдущая версия этой программы (публично не выкладывал, делалось только для себя) была на Qt5. Тут скорее инстинктивное, на уровне ощущений - в Qt всё красиво и просто на первый взгляд, и тебя туда прям заманивают: "Давай, будет кроссплатформенное приложение, классная документация, даже программировать уметь не обязательно!" И тут сразу возникает вопрос - кому и зачем это надо? Когда всё просто - это значит что над этим очень тщательно и много работали. Что сегодня под силу только большим корпорациям. А от этих людей лучше держаться как можно дальше - там про пользу никто особо не думает, только про деньги. Ну и чисто профессиональный аспект - я раза в два больше узнал про С++, пока работал с GTK, чем с Qt. Qt позволяет слишком небрежно работать с кодом, что на пользу отнюдь не идёт. Ну и по мелочи - с Qt без особых танцев с бубном можно работать только в QtCreator, а приложения бывают не только на Qt и С++.
>https://gitflic.ru/static/image/error/404.svgОни там прям петросяны.
Для epub и fb2 уже есть Calibre. Зачем ещё один?
> Для epub и fb2 уже есть Calibre. Зачем ещё один?https://www.opennet.dev/openforum/vsluhforumID3/129315.html#46
Calibre уже научился без gui opds-каталог из среза флибусты делать?
Коммунист изменил родине с капиталистами
> Коммунист изменил родине с капиталистамиБез паники, никто никому не изменял)) Коммунист в работе, в следующей версии планируется поддержка групповых чатов. Правда, когда будет - не знаю. Пока - просвещайтесь, MyLibrary в этом поможет. Знание - сила.
Оверпрайс. GTK4 в зависимостях заставляет использовать мощный комп. Лучшее решение - WEB-сайт LAMP. Использую Pentium 3 c 128 МБ оперативки как каталог, более 3000 позиций, полет нормальный.
Оверкилл. LAMP требует наличия ОС. Использую ламповую машину с механическими переключателями как каталог.
Оверкилл. Ламповая машина требует электричества. Использую классическую библиотеку с бумажными карточками.
Для музыки или фильмов похожего не изобрели?
Лучше структуры каталогов (по темам или как удобно) ничего нет.
Ламерский подход. Юзеру вообще необязательно знать, что такое каталог или файл.
Иерархическая файловая система из папок и файлов — примитивнейший способ организации данных. Лучше неё много чего есть.
Ведь всякие симлинки, файловые потоки и прочее не от хорошей жизни появились, это натуральные костыли, напрочь ломающие логику древовидной структуры.
Ложь. Очень плохо так делать. Один фильм может подпадать под множество разных критериев. Например, по жанру одновременно "исторический", "комедия", "военный". Выбери только один из трех каталогов и утрись. Ну или с симлинками любись. А еще режиссеры. А еще актеры в главных ролях. Ты соберешь все фильмы с Караченцевым или Мироновым в каталог "Караченцев" или "Миронов"? А в фильме других значимых актеров, достойных своего каталога, не было? И что, засунув "Бриллиантовую руку"в каталог "Миронов", папки "Никулин", "Папанов" или там "Советские комедии" оставишь пустыми? Как потом все фильмы с Папановым будешь искать? А еще годы выпуска. Качество видео/аудио/переводов. Рейтинги всякие. Да много чего. Удобнее как раз выделить значимые аттрибуты предметной области и впихнуть какую-нибудь систему тегов, которая будет проиндексирована.
Попробуй KDE.
Попробуй Plex или Jellyfin
А чем оно лучше Calibre?
> А чем оно лучше Calibre?https://www.opennet.dev/openforum/vsluhforumID3/129315.html#46
Если человек не пользуется сортировкой по папкам, то ему никакой софт не поможет.
Уровень английского в описании на гитхабе - 3-
> Уровень английского в описании на гитхабе - 3-Моя твоя не понимай. Если это единственный недостаток - то значит всё нормально.
Кто-то может судить о вашем коде по вашей документации. Даже гуглопереводчик справился лучше, только что проверил на первом предложении.
Рекомендую попробовать запихнуть текст на русском в deepl, он совсем не идеален, но хотя бы такого ужаса не будет. Просто большинство адекватных людей уже на этом этапе закроют страницу проекта и не станут с ним связываться. Для начала правда придётся подучить русский, иначе переводчик будет гнать такую же чепуху, как и в оригинале.
Зачем проверять хэши? Ты понимаешь вообще сколько времени надо на проверку хешей даже на моей скромной 10 тб коллекции литературы. А что делать тем, у кого литературы за сотни и тысячи терабайт? Вот и получается, что сабж ничего не решает.
> Зачем проверять хэши?Чтобы вы могли руками удалить или добавить что-то в папку коллекции, а потом нажать спокойно "Обновить коллекцию" и получить актуальную базу данных. Ну и если вы подскажете мне более надёжный способ контроля изменений содержимого файлов (не названий и расширений, а именно содержимого) - буду рад. Насчёт 10 терабайт - а вы уверены, что там есть хотя бы 1% литературы? Интуиция мне подсказывает, что вряд ли. В лучшем случае - потоки сознания и более менее связные наборы букв по большей части.
Но это лишено смысла. Файл не может внезапно оказаться другим файлом в том же месте или быть дописанным другими данными, или поменять авторство там (кто это будет делать, пользователь вручную залезет в теги файла? маловероятно), по этой же причине есть только повод проверять его наличие при обращении к нему. "Обновление" коллекции может подразумевать сканирование с нуля, в крайнем случае проверяют mtime хоть это и уже очень дорого. Даже проверка что все известные файлы на месте уже сопоставимо с индексацией с нуля.Мне не нравится эта идея, что коллекцию надо держать в той же программе, которая файлы индексирует. Просто оставьте файлы на диске и используйте индекс для локаций, неужели это так сложно? При этом "локация" может быть и архивом. Ну вот по примеру docfetcher, вполне неплохо. Надо будет, я пересканирую когда будут время и ресурсы.
Насчёт 10 тб, это всё же творчество определённых авторов (не все произведения всех авторов прямо шедевры, но всё же есть смысл держать в коллекции то, что захочется прочитать), и некоторая часть существует только в виде сканов, особенно обучающая и техническая литература. Это только кажется, что объём приличный, у меня даже чисто текстовых файлов около терабайта и в них можно найти что-нибудь интересное. Для поиска что почитать сегодня существуют такие вещи как recoll (хоть я и не совсем доволен их функциональностью, но лучше, чем ничего), в противном случае только выбирать из уже известных авторов. Бывает, открываешь для себя новое. О некоторых авторах узнаёшь по отзывам или отсылкам.
> Файл не может внезапно оказаться другим файлом в том же месте или быть дописанным другими данными, или поменять авторство тамЕщё как может. Я вот ни разу не IT-шник вообще, но такие чудеса видел... Особенно, когда файлами пользуется не один человек, и эти люди понятия не имеют о том, как работает компьютер. Результат обычно: "Оно само случилось". И переустановка системы в лучшем случае. А уж переименовать файл и засунуть его туда, где никто и искать не станет - это вообще без проблем.
> Мне не нравится эта идея, что коллекцию надо держать в той же программе, которая файлы индексирует.
В случае с MyLibrary - как раз не обязательно. Программа сделана специально, чтобы работать с "сырыми" файлами, ничего не меняя. Она лишь создаёт свою базу данных и всё. Причём в отдельной папке. Собственно база данных и есть тот же индекс.
> сканов, особенно обучающая и техническая литература
Так речь про электронные книги, сканы - это немного другое. Сканами можно и больше набрать, только вот сомневаюсь, что вы всё это прочитаете.
Почему вы использутете GCRY_MD_SHA256, если можно взять GCRY_MD_BLAKE2S_256 или GCRY_MD_BLAKE2B_512? BLAKE2 заметно пошустрее.
Да, версию libgcrypt придётся ограничить как >= 1.8.0, но, например, в Ubuntu 18.04 уже была 1.8.1.До кучи, возможно, покажется полезным: помимо .fb2 есть ещё .fbd, по сути это .fb2, в котором есть только тег <description> - т.е. все данные о книге и обложка. Можно использовать для каталогизации бинарных форматов (pdf, там, djvu), положив рядом одноимённый .fdb (вроде обычно эту пару кладут в zip-архив).
> BLAKE2 заметно пошустрее.Возможно. Но на практике сколько-нибудь существенного выигрыша в скорости не заметил. Видимо потому что основной лимитирующий фактор в данном случае - скорость чтения с диска.
> До кучи, возможно, покажется полезным: помимо .fb2 есть ещё .fbd, по сути
> это .fb2, в котором есть только тег <description> - т.е. все
> данные о книге и обложка. Можно использовать для каталогизации бинарных форматов
> (pdf, там, djvu), положив рядом одноимённый .fdb (вроде обычно эту пару
> кладут в zip-архив).Спасибо за наводку, посмотрю.
Коллекции книг на десятки терабайт знаю, хотя бы libgen. А у кого тысячи терабайт книг?
Каталагизатор - одно из возможных решений для облегчения поиска нужной информации - респект авторам.Когда требуется быстро найти нужную информацию, невольно задумываешься что там еще есть для эффективного поиска кроме grep...
Какие есть еще возможности? Хотя их не так много, но они есть: индексация, грануляция, ИИ, recent-списки, журналирование, "квантование", что-то полезное еще.
> Графический интерфейс пользователя реализован с помощью библиотеки GTK4.Сразу на помойку.
Всем кто "против" — идите мимо, сделайте своё или сделайте лучше, к тому же вы даже не критикуете, вы обсираете.
Есть замечание, а почему нет пояснения на русском языке, ну ладно github иностранная площадка, хотя и там пишут по русски, но ведь gitflic.ru , почему только ни инглише, АВТОР где русский текст???
Программа для международного использования, а язык международного общения у нас пока английский. Хотя на самом деле просто не люблю README писать)) Замечание принимается - сделаю README и на русском.
Может он уже уехал?
> Может он уже уехал?Куда и зачем? По роду своей предыдущей деятельности я достаточно много по миру помотался - везде одно и то же с некоторыми вариациями на тему. И люди везде плюс минус одинаковые. И война скоро будет не только здесь. Тут я хотя бы с вами на одном языке разговариваю, что уже немало.
> И война скоро будет не только здесьА где она здесь? Я и так знаю что в гейропах экономика рухнула, люди мерзнут и жрут еду у животных. А у меня хоть и 12 тыс зарплата, зато стабильно.
Зайдите к нам завтра, тут в одной бумажке не хватает вашей подписи. Ничего важного, только, пожалуйста, не откладывайте!
Повестки раздаёт военно-учётный стол, а не отдел кадров.
Программе не хватает многопоточности.
Во время построения каталога задействовано только одно ядро процессора.
Квалификации программисту не хватает.
Для курсового проекта нормально.
> Во время построения каталога задействовано только одно ядро процессораЭто сделано специально. Изначально планировалось "раскручивать на все ядра", однако при работе с большими коллекциями процесс так или иначе будет занимать достаточно длительное время. Если задействовать все ядра, то это затруднит использование компьютера в процессе индексации. А так вы можете запустить процесс, что называется, в фоне и заниматься чем-либо ещё.
А приоритеты для чего придумали? Я вот кодирую видео в фоне и тормозов не замечаю.
Я компилирую хромиум в фоне и тормозов не замечаю. И чтобы посмотреть ютуб в браузере мне надо 2 полные ядра загрузить, так что было бы заметно. Другое дело, что из-за IO будут лаги, но тут достаточно и 1 треда, чтобы выжрать всё. Только когда это рандомный доступ производительность на жёстких дисках падает раз в десятки раз, поэтому толку от многопоточности?
> А приоритеты для чего придумали? Я вот кодирую видео в фоне и
> тормозов не замечаю.Ну и какой в этом смысл? Возится с ОС специфическим API, отстраивать приоритеты потоков, чтобы получить в итоге то же самое. Т.е. замедление работы процесса, чтобы вы могли в это время заниматься своими делами. И всё это на каталогизаторе домашней библиотеки, который по сути своей выполняет довольно тривиальные задачи. Вам не кажется это слегка излишним? Может проще отдать программе один процессор? При этом система будет сама решать, какой именно, перебрасывая задачи с одного на другой. Ну и про чтение жёсткого диска вы не забыли? Если у вас например HDD, что будет с ним если, скажем, 8 потоков примутся одновременно читать с него нехилые объёмы данных? И как это скажется на остальных процессах, запущенных в системе?
На ссд можно получить кратное ускорение. "Специфические апи" на линуксе сводятся к запуску под nice/ionice и это проблема пользователя, у него есть для этого баш. На венде тоже что-то подобное. Аргументация в пользу отказа от многопоточности довольно странная.
> На ссд можно получить кратное ускорение.Замечательно. А сколько пользователей имеют SSD? Я имею доступ к 4 разным машинам (они не мои, а именно имею доступ). SSD стоит только на двух из них и при этом отданы только под размещение ОС, больше на них ничего нет. Информация хранится только HDD. Более того те, кто много читают книги далеко не всегда имеют новейшее железо, ибо оно им особо без надобности. Ну и вопрос не снимается - для чего насиловать машину и усложнять программу? Чтобы вы перестали ныть про многопоточность?
Если говорить серьёзно, то ssd уже лет 10 обязательное условие для использования виндоус и макос и очень облегчает жизнь с линуксом. Примерно 100% пользователей, можно брать такую оценку. Кроме того, можно параллелить доступ к нескольким hdd. И чем старее/слабее железо, тем более целесообразно приобретение ssd.
> Если говорить серьёзно, то ssd уже лет 10 обязательное условие для использования
> виндоус и макос и очень облегчает жизнь с линуксом. Примерно 100%
> пользователей, можно брать такую оценку. Кроме того, можно параллелить доступ к
> нескольким hdd. И чем старее/слабее железо, тем более целесообразно приобретение ssd.Вы это не мне рассказывайте, а людям. Которым на еду далеко не всегда хватает, а компьютер у них хорошо если с двухядерным процессором. И таких, представьте себе, не мало.
Ссд стоит куда меньше самого дешёвого двухядерного процессора и будет самым полезным приобретением из всех возможных. Есть деньги на дорогой двухядерный процессор, но нет денег на ссд? Я бы ещё понял, если сравнение было с одноядерными, хотя и одноядерные при наличии SMT позволяют получить выигрыш (т.е. процессорам времён 32-битных пентиум 4 уже профит). Только как много таких пользователей сегодня?
Двухядерный процессор - это CoreDuo может быть, в ноуте, выпущенном в 2008-году и когда-то бывшим топовым, купленным как бу за соответствующую бу цену.
На большинство юзерских задач его хватает и сейчас, включая "послушать ютуб".
Просто у людей другие приоритеты.
Ну дык можно дать пользователю выбор. По-умолчанию 1 ядро, но нужна возможность использовать все.
> Ну дык можно дать пользователю выбор. По-умолчанию 1 ядро, но нужна возможность
> использовать все.Вот это уже другой разговор. Посмотрим, скорее всего сделаю.
> Возится с ОС специфическим API, отстраивать приоритеты потоков, чтобы получить в итоге то же самое. Т.е. замедление работы процесса, чтобы вы могли в это время заниматься своими делами.Допустим, у меня восьмиядерный процессор. При раскидывании задачи на восемь ядер получаем (в идеале, конечно), восьмикратное ускорение. Допустим, повседневное использование ПК (браузер там, вот это всё) есть условные 10% процессорного времени. Да, совершенно то же самое.
Но с подходом «не хочу возиться», конечно, не поспоришь.
>Возится с ОС специфическим APIstd::thread - ОС-специфическое API, спешите видеть.
> std::thread - ОС-специфическое API, спешите видеть.Вы бы хоть на код взглянули, прежде чем глупости писать.
Помню у нас в Atsumeru прикрутили многопоток и вместо 5 часов вся коллекция сканилась за 40 минут.
Данных в тот момент было на 700 гб и мы в принципе не мечтали что быстрее будет полностью забита db всей инфой, но всегда можно оптимизировать. Сейчас для Atsu является слабым местом именно db.
В общем я фраппирован со всех ваших умозаключений
> В общем я фраппирован со всех ваших умозаключенийРад за вас))
>Изначально планировалось "раскручивать на все ядра"тогда уж все ядра минус одно, и приоритет процессам пониже
> тогда уж все ядра минус одно, и приоритет процессам понижеУже сделано. Думаю, на следующей неделе выйдет новая версия. Регулировка количества задействованных потоков ляжет на пользователя. С приоритетами заморачиваться не буду, поскольку главный принцип - максимальная универсальность, т.е. использование как можно меньшего количества ОС-специфических функций.
Можно же банальную обёртку сделать: если в системе можно понизить приоритет -- понижаем, если нет пускаем так как есть.
> Можно же банальную обёртку сделать: если в системе можно понизить приоритет --
> понижаем, если нет пускаем так как есть.Незачем, реально незачем. Я уже оттестировал на одном и том же железе с процессором на 4 физических ядра и 8 потоков. И с 1 потоком оттестировал, и с 8. На коллекции в 350 Гб. Какой-то принципиальной разницы в скорости нет. Может быть 5-7%% (по оптимистичным оценкам) - с секундомером не замерял. Потому что всё упирается в скорость чтения с жёсткого диска. Который один. И поток данных с него тоже один, 8 их не станет, хоть вы тресните. Скорость обработки данных (а значит и количество потоков) тут особой роли не играет: загрузка каждого из ядер во время теста не превышала 7-10%% в пике. Если у вас например RAID массив, то тогда, подозреваю, результат будет другой. Но тут не спец - я не сисадмин и с массивами носителей никогда дела не имел.
Ну во первых есть ssd со скоростью чтения до 7 гигабайт в сек, и с мультипоточностью чтения там всё ок.
А во вторых тут же речь не только про то чтобы быстрее, а ещё и про то чтобы отзывчивость системы при процессе сканирования не проседала.Впрочем если желания заниматься нет то забей, в конце концов ты никому ничего не должен ;)
> Ну во первых есть ssd со скоростью чтения до 7 гигабайт в
> сек, и с мультипоточностью чтения там всё ок.Если бы у меня ещё был под рукой нормальный SSD, чтобы тесты погонять... Впрочем, как уже сказал - многопоточность сделал. В следующей версии будет. Дальше - буду улучшать по возможности.
> Впрочем если желания заниматься нет то забей, в конце концов ты никому
> ничего не должен ;)Желание есть, времени на всё нет.
MyHomeLib версия 2.2.0.822 отлично работает.
Помню все эти программы неожиданно пропали, и коллекция стала чемоданом без ручки. Грепать не получилось из за winCP-1251. Перекодировка utf-8 заняла 5 суток, это вообще рекорд непрерывного процесса у меня. Так что замечательно, что выбор есть.
что значит "пропали"?
Вот я поглядел на свой архив - лежат спокойненько, куча версий, в Грузию не собираются..
Годная программа, спасибо.
> Графический интерфейс пользователя реализован с помощью библиотеки GTK4Не поторопились ли с переходом на четвёртую версию? Завезли ли туда биндинги GTK# для написания прог на дотнете?
> GTK# для написания прог на дотнете?А оно нужно? Что-то меня по этому поводу терзают смутные сомнения.