Состоялся релиз каталогизатора домашней библиотеки MyLibrary 3.1. Код программы написан на языке программирования С++ и доступен (GitHub, GitFlic) под лицензией GPLv3. Графический интерфейс пользователя реализован с помощью библиотеки GTK4. Программа адаптирована для работы в операционных системах семейства Linux и Windows. Для пользователей Arch Linux в AUR доступен готовый пакет. Для пользователей Windows доступен экспериментальный инсталлятор...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62667
Интерфейс просто безумный
автор явно работает в промышленности, и давно
> автор явно работает в промышленности, и давноМимо. Я уже рассказывал, кем я работал. Если хотите - поищите.
Я очень сильно искал, но не нашёл, расскажите, пожалуйста, подробнее - где же вы работали?!
> Я очень сильно искал, но не нашёлНу значит не судьба. Помирайте теперь от любопытства))
Это в Приключениях Безработного? Оно вроде 2020й, устарело, не?
Я не читал, просто интересно в ту сторону погуглил или нет.
> Это в Приключениях Безработного? Оно вроде 2020й, устарело, не?Да, немного устарело. Не убираю из принципа "из песни слов не выкинешь". Что было, то было.
А по поводу работы - под другими новостями про MyLibrary посмотрите. Или тут например: https://www.opennet.dev/opennews/art.shtml?num=62437 В комментариях.
День добрый.
на попытке проиндексить библиотечку оно сложилось без каких либо сообщений. 2 попытки, одинаковый результат.вот на таком объёме
Found files: 2424, folders: 188
возможно там и есть какойто битенький fb2. но искать половинным делением, кто же именно, не очень хочется. архивов рар точно нет. вообще архивов нет. в основном fb2, немного pdf пара djvu, откудато затисались аудио в mp3, это врядли, пропустит скорее. несколько txt и какойто .ods.
> День добрый.
> на попытке проиндексить библиотечку оно сложилось без каких либо сообщений. 2 попытки,
> одинаковый результат.
> вот на таком объёме
> Found files: 2424, folders: 188
> возможно там и есть какойто битенький fb2. но искать половинным делением, кто
> же именно, не очень хочется. архивов рар точно нет. вообще архивов
> нет. в основном fb2, немного pdf пара djvu, откудато затисались аудио
> в mp3, это врядли, пропустит скорее. несколько txt и какойто .ods.А выхлоп консоли есть? По идее там должно быть видно, на чём валится. Ну и лучше не сюда, а на github/gitflic писать. Или на почту - есть в readme.
Почему вы не осилили Qt? Лицензия позволяет юзать!
> Почему вы не осилили Qt?Кто вам сказал, что я не "осилил" Qt? ;) Я примерно на одном уровне знаю и API gtkmm и API Qt.
> Кто вам сказал, что я не "осилил" Qt? ;) Я примерно на
> одном уровне знаю и API gtkmm и API Qt.Как говорится, я знаю у-шу, каратэ, джиу-джитсу и много других страшных слов!! :)
> Как говорится, я знаю у-шу, каратэ, джиу-джитсу и много других страшных слов!!
> :)Против лома нет приёма, если нет другого лома ;)
Нее, автор просто не программист. Это же явно тупо толстый клиент к БД без изысков) Я такое делал лет в 10 и думал, что обработчики SQL запросов на кнопках - это и есть клиент.
>>Я такое делалА результат где?
Да, интерфейс.. "самобытный", но автор поделился.
И похоже у него там FOXPRO и 286.
dBase
> И похоже у него там FOXPRO и 286.https://www.opennet.dev/openforum/vsluhforumID3/132916.html#36
Это Вы ИРБИС не видели. Типа для библиотек.
> Интерфейс просто безумныйЯ тоже такое делал. Когда мне было годиков 15. Потом до меня дошло что хардкорная кислота в интерфейсе - вовсе даже и не фича.
Ну, серьёзно говоря, иногда кислота необходима - я так делал когда софтинка затачивалась под high-contrast экран для слабовидящих и где подобное просто позволяло пользователю (и техподдержке - "нажмите оранжевую кнопку, затем зелёную, теперь снова оранжевую") работать. Но да, там специфические требования от людей со специфическим зрением.Тут же да, отсутствие вкуса в цветовой схеме - как оно есть.
У нас в столовой сотрудников на кассе установлена Oracle MICROS Simphony. Тоже сделали разноцветные кнопки, чтобы хорошо было видно куда тыкать чтобы не терялись и быстрее тыкали чтобы пробить чек.
Ты не шариш, нужно на функционал смотреть. И да - это отечественное, так-что всегда можно поучаствовать. Я лично попробую разобраться.
> Для пользователей Arch Linux в AUR доступен готовый пакет.Нет, там только PKGBUILD как обычно.
Уже обсуждалось. https://www.opennet.dev/openforum/vsluhforumID3/132377.html#21
> Уже обсуждалосьНа AUR нет и никогда не было "готовых пакетов". Хватит писать чушь.
> На AUR нет и никогда не было "готовых пакетов".Пройдите по ссылке уже наконец. И
> Хватит писать чушь.
> Пройдите по ссылке уже наконец.Я ходил по ссылке. И что? "Готовые пакеты в AUR" от этого не перестали быть чушью.
> И что?И ничего. Моё мнение по данному вопросу с тех пор не изменилось. А поскольку текст новости - мой (с редактурой администрации сайта), то так и будет продолжаться, нравится вам или нет. Вы можете меня убедить изменить текст, но пока я таких попыток не вижу. А по второму кругу обсуждать то, на что ответил ещё тогда - не вижу смысла.
Действительно, в AUR лежит не "готовый пакет", а "сценарий сборки пакета" - PKGBUILD. Но за тон, который выбрали некоторые братья-арчеводы, чтобы сообщить об этом, как-то даже неловко стало. Извините.
> Действительно, в AUR лежит не "готовый пакет", а "сценарий сборки пакета" - PKGBUILD.Вы это знаете. Я это знаю. Это знает каждый, кто хоть раз что-то устанавливал из AUR. А остальным оно всё равно. Ну и к чему тут разводить формалистику? Это я не к тому, что хочу на вас наехать, просто объясняю свою позицию. Тем более, что для получения готового пакета нужно на одну команду больше затратить, чем при обычной установке из "штатного" репозитория дистрибутива.
Просто может возникнуть ситуация, когда готовый пакет таки будет (например, есть третьесторонние бинарные репозитории, которые выборочно собирают пакеты из AUR, типа Chaotic AUR), и вы захотите дать на него ссылку. И возникнет путаница между готовым пакетом и неготовым сценарием сборки. Особенно, у новичков-арчеводов. Да что там, многие "старички" о существовании бинарных репозиториев не догадываются (https://wiki.archlinux.org/title/Unofficial_user_repositories). Тем более, что более "формальный", точный подход лишь одним словом больше. Но дело ваше, конечно.
> Просто может возникнуть ситуация, когда готовый пакет таки будет (например, есть третьесторонние
> бинарные репозитории, которые выборочно собирают пакеты из AUR, типа Chaotic AUR),
> и вы захотите дать на него ссылку. И возникнет путаница между
> готовым пакетом и неготовым сценарием сборки. Особенно, у новичков-арчеводов. Да что
> там, многие "старички" о существовании бинарных репозиториев не догадываются (https://wiki.archlinux.org/title/Unofficial_user_repositories).
> Тем более, что более "формальный", точный подход лишь одним словом больше.
> Но дело ваше, конечно.Я "отбрыкиваюсь" не по-этому, а потому, что спор идёт о словах. Формально - вы правы. Но в данном случае, как уже написал, все и так знают, о чём идёт речь.
>Вы это знаете. Я это знаю. Это знает каждый, кто хоть раз что-то устанавливал из AUR. А остальным оно всё равно. Ну и к чему тут разводить формалистику?Совершенно верно, ничего менять не нужно. Автор знает, что готовых пакетов в АУРе нет, но пишет, что они есть, споря с Анонимом, который тоже знает что их нет, потому, что их нет, но пишет так для пользователей, которые не знают, что их нет, чтобы ввести их в заблуждение, будьто бы они есть. Исключения только подтверждают правило!
> можете меня убедить изменить текст, но пока я таких попыток не вижу.Вам уже два раза сказали, что в AUR нет пакетов. Этого факта мало для убеждения?
Вы как ребенок, который упрямиться из принципа.
Интерфейс э-э "непривычный".А прога нужная, автор молодец!
Это я в основном про цвета.В целом с использованием проблем не возникает.
> Это я в основном про цвета.Если хотите - можете поэкспериментировать. В /usr/share/MyLibrary лежит файл MLStyles.css, все цвета прописаны в нём. Всё, что со словом "color".
> В /usr/share/MyLibrary лежит файл MLStyles.cssФич-реквест для будущей версии - плх, вынесите его в юзерспейс (~/.share/MYLibrary/ или ~/.config/MyLibrary) для более простого изменения пользователями. В иделае - через GUI в самой MyLibrary. Типа если в юзерспейсе есть данный файл, берем настройки из него, нет - из дефолтно-общесистемного.
Да, скорее всего так и сделаю в будущем. Тут просто была мысль графическую часть всего этого дела на Qt переписать, поэтому я пока особо внешним видом и не занимался.
>> Интерфейс э-э "непривычный".После Гнома почти любой другой интерфейс божественный. :)
Интересно, каким HIG руководствовался автор? Я что-то ни в одном известном такого не видел.
Я художник, я так вижу.
> Я художник, я так вижу.Да, примерно так.
> Интересно, каким HIG руководствовался автор?Никаким. Просто от дефолтных цветов GTK меня, честно говоря, воротит. Но я не настаиваю. Как уже написал выше - все цвета прописаны в MLStyles.css. Если хотите - корректируйте, как вам нужно. По расположению же элементов управления: если есть конкретика - предлагайте. Но сразу предупреждаю, рассматриваться будут предложения только вида: "Этой кнопкой пользоваться не удобно, потому что... Предлагаю переместить её в..." Всё остальное - игнорируется.
Завтра ищешь в интернете книжку "Ководство" Артемия Лебедева. Пофиг если ничего не поймёшь. Затем идешь на apple.org и изучаешь HIG'и от корки до корки. Потом зубришь, именно, с-а, вызубриваешь конвенции по разработке гуёвых интерфейсов у гнома, у майкрософт и вообще теорию построения интерфейса, чтобы от зубов отскакивало. Когда переделаешь гуй к своему примитивному поделию вида "очень толстая обёртка над скульной базой", по пути поняв, почему такой подход остался в прошлом, в мире древних формочек на дельфи7, скачиваешь и изучаешь любой встраиваемый вебсервер, но рекомендую писать его самому. Как переделаешь программу в клиент-серверный вариант, чтобы могло работать по крайней мере в локальной сети по http-api с полным стандартным набором по обслуживанию базы {clean, compact, import/export, recovery, регламентные maintenance}, можешь идти дальше - тебя ждёт увлекательный мир реальной разработки реально полезных программ. Локальные ML-модели для подсказок по хранимому содержимому, выкачивание и правка книг, сверхбыстрые асинхронные key-value хранилища, многонодные распределённые хранилища книг, MapReduce, поддержка читалок с синхронизацией файлов, списков и позиций чтения одной кнопкой. И вот тогда ты получишь положительный фидбек о реально полезной программе
> поделию вида "очень толстая обёртка над скульной базой", по пути поняв, почему такой подход остался в прошломНет, не остался. Это же локальный софт.
Тут вопрос в том, нафиг нужны вклосипеды при наличии Calibre.
> Как переделаешь программу в клиент-серверный вариант
Зачем?
А, я понял - это все тонкий троллинг, да? Ну, кроме советов по интерфейсу...
Пасту с минимальными переделками никто так и не признал...
Хотя тут все строго по делу. Даже на 1С 8.2 выглядело бы куда профессиональнее, там так не разойдешься
Ты ничего не понимаешь в современном искусстве.
> Тут вопрос в том, нафиг нужны вклосипеды при наличии Calibre.Ради интереса попробуйте скачать полный архив Флибусты и скормить его Calibre. Через пару лет, когда она (оно?) закончит, расскажете, что получилось. Или раньше - место на жёстком диске не бесконечное.
В целом же, если вас устраивает Calibre, то пользуйтесь ей. Я ни на чём не настаиваю.
Чел, ты уже ководство прочитал и эпл сайт вызубрил. Просто скажи что и куда перемещать чего ты пальцы то гнешь? Лучше нарисуй в фигме что надо.
> Просто скажи что и куда перемещать чего ты пальцы то гнешь?Для начала было неплохо бы просто не лезть в CSS и не трогать цвета...
Это ты в ководстве вычитал или на сайте эпл?
Не говорите, что мне делать, и я не скажу, куда вам пойти.Касательно же рекомендованной "литературы"... Я не буду трогать это даже трёхметровой палкой. И вам не советую. Прочитайте лучше одну из книг, что есть на скриншотах. Про обезьян. Вам полезно будет. Если же интересен "дизайн" (что это, кстати?;), то рекомендую начать с понятия "эргономика".
Вам дело говорят, причем в вежливой форме, а вы вкладываете агрессию в каждый ответ.
Не нравится, не пользуюсь и не буду и мимо прохожу, просто удивляет этот недосягаемый уровень отрицания критики )
> Вам дело говорят, причем в вежливой форме, а вы вкладываете агрессию в
> каждый ответ.
> Не нравится, не пользуюсь и не буду и мимо прохожу, просто удивляет
> этот недосягаемый уровень отрицания критики )Какой критики? "Пошёл выучил вот то, а потом сделал так, как я хочу", - это не критика. Про вежливость я вообще молчу. В общем "каков вопрос, таков и ответ".
> Какой критики? "Пошёл выучил вот то, а потом сделал так, как я
> хочу", - это не критика. Про вежливость я вообще молчу. В
> общем "каков вопрос, таков и ответ".Это можно и короче сказать - "нате на лопате" :)
> Это можно и короче сказать - "нате на лопате" :)Можно было бы. Если бы я этой программой не пользовался сам. А в целом - код открыт. У вас полный карт-бланш на улучшения. Правда, я почем-то уверен, что вы ничего делать не будете...
Ну, справедливости ради, ты сам принёс своё поделие сюда, новую версию на суд пользователей. Лови адекватный поделю фидбэк.
- Интерфейс - гуано.
- Код - непрофилированное спагетти-гуано. Выше и ниже подробно расписано почему. Мне влом объяснять это тому, кто даже не захочет понять даже половины моего поста.
Или ты ожидал восторженного "А-а-а-а! Какой же ты умный, я вся теку, сделай мне срочно десяток детей!11"? Ну так тут и не хабр, чтобы флюродросить за карму никто не будет.И да, афффтар, таки повзрослей. Это уже общий совет.
> И да, афффтар, таки повзрослей. Это уже общий совет.Это вы мне? Или всё же себе?))
Хех. И снова детское "говоришь на меня - переводишь на себя"?
Ну, видимо, тебе действительно надо повзрослеть
Интересно, нет ли у автора в планах OPDS.
> Интересно, нет ли у автора в планах OPDS.Автор вплотную занимается мессенджером в данный момент. А MyLibrary - то тут, то там "подшаманивал". В качестве отдыха. Вот за пару месяцев и набежало на релиз.
Автору бы лучше книжек почитать из своей библиотеки. Может там написано, что в ЯП есть другие семантические конструкции кроме if.
Интерфейс как интеррфейс. Не пофиг ли. Придраться можно ко всему. В целом GUI как то и не нужно даже.
А вот OPDS штука нужная. Отвязывает от интерфейса в пользу интерфейса конечного приложения да и в целом позволяет очень удобно получать текст сразу на нужное устройство. Ищу замену умершему проекту.
А вот сколько миллионов книг оно выдержит без тормозов? та же Calibre захлебывается моментально.
> А вот сколько миллионов книг оно выдержит без тормозов? та же Calibre
> захлебывается моментально.Смотря что имеется ввиду. У меня данная программа используется для библиотеки на 500+ тысяч fb2 книг, упакованных в zip архивы. Лежит на HDD (на SSD будет гораздо быстрее). Создание базы данных занимает часов 5 (на 8 потоках). Поиск по базе, если она уже прогружена в оперативную память - порядка секунды. Некоторые задержки в поиске могут возникать из-за того, что при переключении коллекций, база должна загрузиться в память (для 500 тысяч книг там почти 90 мегабайт получается). Парсинг базы при загрузке происходит быстро, основной "тормоз" - скорость чтения с жёсткого диска.
>Некоторые задержки в поиске могут возникать из-за того, что при переключении коллекций, база должна загрузиться в память (для 500 тысяч книг там почти 90 мегабайт получается)Только не говорите, что вместо встраиваемой базы данных вы написали свой велосипед, который эти 90 Мб на каждый запрос прочёсывает. Про 2-3-4 деревья знаете?
> Про 2-3-4 деревья знаете?У меня сразу встречный вопрос - вы хоть одну строчку кода в жизни написали? Не запросы в БД, а именно программного кода. Подозреваю, что нет. Ответ же на ваш вопрос - нет не знаю. Потому что незачем - я на эти вещи смотрю под другим углом.
>У меня сразу встречный вопрос - вы хоть одну строчку кода в жизни написали?Безусловно. Если бы не написал, то я не знал бы, какие вам вопросы задавать. По этому и спрашиваю, используете ли вы готовое решение, написалие своё нормальное, или же очередной кривой велосипед.
>Ответ же на ваш вопрос - нет не знаю. Потому что незачемЗачем погроммисту теория, вон смотрите какая у него кривая практика.
> Безусловно.Джентельменам верят на слово?)) А по остальному - скучно, право слово. Придумайте что ли ещё что-нибудь новое.
Тут автору лет 13. Ну или развитие, как у тринадцатилетки, что куда печальнее, ибо это не лечится.Я даже смысла не увидел задавать вопросы про качество кода - на вордскиллс такое (толстый клиент к скульной базе, только там она полноценная, на отдельной СУБД) на шарпее пишется в рамках соревнований за 2.5 часа, от создания таблиц до полноценной работы с семантикой - причём там код гораздо лучше, могу сравнить.
>500+ тысяч fb2 книг, упакованных в zip архивыЭто как раз основной паттерн пользователей.
Время индексации мало важно. Обновляется оно редко. Упирается в I/O. За ночь пройдет и ладненько. (можно подтюнить исключив парсинг не изменяемых по разным критериям)
В используемом мной каталогизаторе база в postgre, но действительно многим конечным пользователям она сложна, так что почему бы на 90 мегабайт не использовать что-то встраиваемое. Это копеечный объем. Но лично для себя каталогизаторы без OPDS не рассматриваю. Но альтернативы это всегда хорошо.
Поле «отчество» лишнее
Спокойно! Никакой русофобии в моих словах нет(хотя у меня самого в паспорте гражданина РФ отчества реально нет, просто пустая строка, но и это не русофобия)
Авторы имеющие это самое отчество составляют небольшой процент от авторов книг вообще и потому имеющаяся по дефолту строка «отчество» это явное излишество
Ее стоит сделать скрытой, что бы если действительно нужна(например в случае с парочкой Алексеев Толстых) можно было раскрыть и указать отчество, а в дефолте убрать, что бы не захламлять экранПро особенности цветового решения не буду, это личный взгляд автора и ему так комфортно, мне комфортно иначе, я если буду использовать сам поправлю
> Поле «отчество» лишнее
> Спокойно! Никакой русофобии в моих словах нет(хотя у меня самого в паспорте
> гражданина РФ отчества реально нет, просто пустая строка, но и это
> не русофобия)Не переживайте, про отсутствие отчеств я в курсе. У меня немало знакомых по миру.
> Авторы имеющие это самое отчество составляют небольшой процент от авторов книг вообще
> и потому имеющаяся по дефолту строка «отчество» это явное излишествоВ целом - да. Но мало ли. Кроме того, в США например есть т.н. second name (чем данная строка и является в английском варианте программы).
> Ее стоит сделать скрытой, что бы если действительно нужна(например в случае с
> парочкой Алексеев Толстых) можно было раскрыть и указать отчество, а в
> дефолте убрать, что бы не захламлять экранДа оно так-то особо и не захламляет. Есть и есть. Заполнять всё равно не обязательно.
> В целом - да. Но мало ли. Кроме того, в США например
> есть т.н. second name (чем данная строка и является в английском
> варианте программы).Ой, а вот это совсем плохая идея
И дело не в том, что Second name это совершенно не отчество, а в том, что у британских и американских авторов может быть еще и Third name. Например: John Ronald Reuel TolkienА уж про авторов с испанскими корнями я совсем молчу
Как какой-нибудь Simón José Antonio de la Santísima Trinidad Bolívar de la Concepción y Ponte Palacios y Blanco напишет «Манифест из Картахены», а ты потом под его количество имен поля рисуй :-DЛучше ориентироваться на связку имя-фамилия, а дальше по названиям книг пусть человек ищет
Да, я про всё это в курсе. Но пока что испаноговорящих пользователей я у своей программы не видел)) Как появятся - будем решать, как сделать так, чтобы было оптимально для всех. Программа - не памятник в граните. Код переделать можно в любой момент. Ну и, кстати говоря, у вас полный карт-бланш на форки и pull requests. Код для того и открыт.
Прсто признайся, что хочешб чтобы было как у англоязычных.
У тебя какие-то комплексы?
Англоязычные очень разные, у некоторых может быть второе-третье-четвертое имя и что?
Просто «отчество» это атавизм сохранившийся у маргинальных групп, не нужно его выпячивать и для поиска авторов оно бесполезно в 99% случаев
Какой жесткий апокалиптец на скриншоте. Автор, а ты не мог взять Qt нормальный и юзать нормальные контролы, которые выглядят - как деланые человеком, а не как будто вон тому, с скрина, дали - древний конструктор сайтов какой-то, и оно там - вошло во вкус и раскинуло кнопочки и формочки.
оно бы и на gtk нормально выглядело, если цвета не трогать, стилями gtk/qt тема должна заниматься
Поставить тёмную тему и жесткий апокалиптец превращается стандартную гном аппликаху.
Это как если заболит палец — отрубать руку.
> дали - древний конструктор сайтов какой-то, и оно там - вошло во вкус и раскинуло кнопочки и формочкиА кто сказал, что это плохо?))
Вот это красота! Вот так должен выглядеть настоящий компьютер. Хочешь это — зелёная кнопка, что-то другое — синяя, что-то особенное — жёлтая! Жаль мне не нужен каталог для электронных книжек.
Возможно в таком случае вас заинтересуют другие программы того же автора.
> Возможно в таком случае вас заинтересуют другие программы того же автора.хм, а у него есть еще и ДРУГАЯ программа?
Кстати, каталогизатор (видео)прона не помешал бы. Без конца в нем путаюсь.
Согласен даже на зеленый на розовеньком.
>> Возможно в таком случае вас заинтересуют другие программы того же автора.
> хм, а у него есть еще и ДРУГАЯ программа?Есть!
https://www.opennet.me/opennews/art.shtml?num=57734
Наверное это единственный случай, когда у мессенджера даже не два, а один пользователь :-D
А может и нуль, но разработка идет
тьфу ты... это с другим коммунистом в соседней камере перестукиваться. А нахрен же ж с ним перестукиваться-то вообще...
> Хочешь это — зелёная кнопка, что-то другое — синяя, что-то особенное — жёлтая!В целом так и задумывалось. Чтобы пользователь прочитал надписи на кнопках один раз, а потом ориентировался чисто по их местоположению и цвету.
Ух, код просто моё почтение. Десяток вложенных структур - это самое безобидное, что там есть. Забористые были книжки, видимо.
Пролистал дальше, в целом похоже на творение дешёвой нейросети, которая научилась только if else case и копипастить со стэковерфлоу. Чатгопота лучше код генерит)
> Ух, код просто моё почтение. Десяток вложенных структур - это самое безобидное,
> что там есть. Забористые были книжки, видимо.Как говорится, в структурном программировании главное - это знать когда остановиться :)
for(int i = 1; i <= 6; i++)
{
switch(i)
{
case 1:
{
parseBookEntry(book_e, bpe.book_path, lrb);
break;
}
case 2:
...До первого апреля ещё далеко но аФтор уже закинулся... Если тебе 10 лет тогда понять можно, если ты >=15 или, прости меня Талос, "про" то срочно нужно судебное дело и 100 лет запрета трогать любой компилятор или интерпретатор
Печально не то, что он раздул код в 5-7 раз, а что пишет на плюсах i++ и <=. То есть до глав "итераторы" и "конструктор копирования" не дочитал, сразу принявшись за "конечные автоматы".
Печально, что кексперты делают выводы на основе фрагмента, вырванного из контекста. Какие итераторы и причем тут конструктор копирования?https://github.com/ProfessorNavigator/mylibrary/blob/7986715...
> Печально, что кексперты делают выводы на основе фрагмента, вырванного из контекста.
> Какие итераторы и причем тут конструктор копирования?Напротив, отлично! Думали, нашли 1 гениального программиста, а оказывается двух! Итераторы и конструктор копирования органично впишутся в эту программу. И даже гитфлик у обоих авторов вроде есть. Скоро весь мир будет у их ног! Правда, есть некоторые нюансы в этом моменте.
>> То есть до глав "итераторы" и "конструктор копирования" не дочитал
> Какие итераторы и причем тут конструктор копирования?Так ты дочитай, там подробно объясняют, почему предпочтительно писать прединкремент, когда нет разницы с постикрементом.
> Так ты дочитай, там подробно объясняют, почему предпочтительно писать прединкремент,
> когда нет разницы с постикрементом.Не, ты лучше расскажи - где по твоему суперценному мнению в ЭТОМ надо было итераторы поюзать - и за каким они ТАМ вообще нужны?! Вот ответь хоть раз за свои слова - на кой дьявол в ЭТОМ блоке - итераторы? Там и цикл то - низачем не требуется. Автор уже и сам не знает зачем его сумеречный гений ЭТО породил :)
Глядя на весь этот код - я б сказал что это такой core dump мозга, чтоли, получился.
>> Так ты дочитай, там подробно объясняют, почему предпочтительно писать прединкремент,
>> когда нет разницы с постикрементом.
> Вот ответь хоть раз за свои слова - на кой
> дьявол в ЭТОМ блоке - итераторы? Там и цикл то -
> низачем не требуется. Автор уже и сам не знает зачем его
> сумеречный гений ЭТО породил :)Прежде всего, я напомню тебе мои слова:
"а что пишет на плюсах i++ и <=. То есть до глав "итераторы" и "конструктор копирования" не дочитал"
Как видно, я не писал, что в этом блоке _нужны_ итераторы -- ты это сам придумал, а теперь упорно хочешь, что бы я за _твои_ слова отвечал.
Вот когда ты начнёшь читать про итераторы, узнаешь, что это такая абстракция, которая "безопаснее" и гибче голых указателей и индексов, а потому желательно использовать итераторы. Специально для тебя: "желательно" означает "когда нет особых требований к коду", то есть не обязательно.
Потом окажется, что некоторые итераторы не имеют operator<= и могут создавать лишнюю копию. Соответственно, в тех случаях нужно писать прединкремент и !=. И когда ты начнёшь кодить и использовать итераторы (в других местах, не в случае из примера -- понятно, что так писали только в Индии 20 лет назад), ты привыкнешь и будешь писать прединкремент и !=. Везде, просто что бы лишний раз не задумываться. В том числе и в расчёте на то, что через год там вместо int окажется auto. А другой посмотрит твой код и скажет "вот это хоть и на Си, но писано знающим Си++".
> Не, ты лучше расскажи - где по твоему суперценному мнению в ЭТОМ
> надо было итераторы поюзать - и за каким они ТАМ вообще
> нужны?!Вот сейчас я даю тебе фору, поскольку мне лениво искать определения, и ты сможешь разгромить мою гипотезу.
Выше есть строка:
parseBookEntry(book_e, bpe.book_path, lrb);
в case 2 что-то такое же, но вторым аргументом передаётся ссылка на другой член bpe. Имя у него другое, но тип такой же. Соответственно, автор хотел сделать сначала массив. :)
book_path был бы членом enum. Но что-то пошло не так с итерацией.
> Глядя на весь этот код - я б сказал что это такой
> core dump мозга, чтоли, получился.Да он мог это с ПХП это срисовать, например.
> Как видно, я не писал, что в этом блоке _нужны_ итераторы --
> ты это сам придумал, а теперь упорно хочешь, что бы я
> за _твои_ слова отвечал.А, понятно, то-есть это был махровый офтопик про сферический бороздеж вакуума, вне контекста этого сегмента кода вообще. Спасибо, вопросов больше не имею.
> Вот когда ты начнёшь читать про итераторы, узнаешь, что это такая абстракция,
Вам бы неплохо почитать кое-что на тему "гордыня предшествует падению"
> которая "безопаснее" и гибче голых указателей и индексов,
Спасибо, Кэп. Но в конкретно этом блоке кода итерировать по логике просто нечего.
> Потом окажется, что некоторые итераторы не имеют operator<= и могут создавать лишнюю
> копию. Соответственно, в тех случаях нужно писать прединкремент и !=.А, логично, надо настроить абстракций, наступить на грабли, фигурно подкостылить, каким-то сакральным знанием... и за вот именно ЭТОТ антипаттерн вы и вписаны мной в гордое звание "ночной кошмар коллег".
Мне жутко интересно - вы когда-нибудь девелопали в команде, не по принуждению? На этом глобусе были люди которые в вашем коде хотят копаться без наставления на них пистолета?
> в случае из примера -- понятно, что так писали только в
> Индии 20 лет назад), ты привыкнешь и будешь писать прединкремент и
> !=. Везде, просто что бы лишний раз не задумываться.Это называется - профдеформация, при том очень плохой ее вид - подстраивать стиль кодинга под явный "костыль".
В этом месте я рад, что, к счастью, мне от вас ничего не нужно - и иметь дело с таким кодом мне к счастью - не грозит.
> int окажется auto. А другой посмотрит твой код и скажет "вот
> это хоть и на Си, но писано знающим Си++".Писать на си надо так чтобы это было - нормальным кодом на си. Выглядящим как ожидают сишники, понятным и простым для сишников. Как оно в плюсах при кодинге си - ортогонально. Это другой ЯП и другой выводок стандартов. Как стоит писать на плюсах вопрос сильно более интересный. Ибо сколько програмеров на C++ столько и мнений. Встречаются радикально интересные стили. Я встречал такие вещи от которых у вас кукуха бы отъехала, имхо. Вплоть до реимлементации половины вещей из хруста. Just because they can! Заоверлоадил operator [] и вот вам bounds check. И фиг забалуешь. И работает ведь, при том без патчинга тулчейна на каждый пшик как хрустики.
> parseBookEntry(book_e, bpe.book_path, lrb);
> в case 2 что-то такое же, но вторым аргументом передаётся ссылка на
> другой член bpe. Имя у него другое, но тип такой же.
> Соответственно, автор хотел сделать сначала массив. :)
> book_path был бы членом enum. Но что-то пошло не так с итерацией.Просто на вид тот код выглядит - абсолютно линейным и зачем там вообще цикл с case кроме того что это расширилось в 5 раз, как сознание автора - не понятно.
Видимо в процессе автор и сам не понял зачем все делать сложно, мучительно и криво если можно - просто и банально. Но забыл выпилить половину своей оверинженерии.
> Да он мог это с ПХП это срисовать, например.
Ни разу не встречал PHPшника который бы оформил несколько линейных вызовов - таким навороченным финтом с циклом и case в нем.
>> Как видно, я не писал, что в этом блоке _нужны_ итераторы --
>> ты это сам придумал, а теперь упорно хочешь, что бы я
>> за _твои_ слова отвечал.
> А, понятно, то-есть это был махровый офтопик про сферический бороздеж вакуума, вне
> контекста этого сегмента кода вообще.Да, понятно, что за свои слова -- приписанные мне фантазии -- ты отвечать не хочешь, и принялся забалтывать.
> Спасибо, вопросов больше не имею.
Я понимаю, что ловить тебя на слове нет смысла, ты будешь продолжать одарять меня приписываемыми мне своими глупостями по поводу и без.
Но в данном случае надеюсь, что если вопросы почему "надо писать ++i" у тебя остались, ты прочтёшь книжку, да? Ты ведь именно это мне и сообщил. ;)
Ничёсе эксперд. Код должен быть простым как лопата, с минимум вычуров.
Что цикл следует выкинуть - это и ежу понятно. А что циклы, которые выкинуть нельзя, написаны "в стиле Си" - оно понятно тем, кто при словах forward iterator не полезет в гугол.
А для того, чтобы код был простым как лопата, нам понадобятся эффекты, частичное применение, каррирование, Хиндли-Милнер, типизированное лямбда исчисление, жадное исполнение, модули первого класса, функции первого класса, алгебраические типы данных, кортежи, сопоставление с образом и деструктурирующее присваивание. Поскольку без всего этого дела в коде разобраться будет решительно невозможно, он будет как код школьника, который выучил только вызовы функций и условия.
>case 1:
> {
> parseBookEntry(book_e, bpe.book_path, lrb);Что за магический "1"? Почему это цикл? Как 1 связан с bpe.book_path? Зачем тут default? Никто этого не знает.
> for(int i = 1; i <= 6; i++)
> До первого апреля ещё далеко но аФтор уже закинулся...Реально интересно, чем руководствовался автор, когда влипил там for и switch.
Загуглил как упростить последовательный вызов функций.
> Реально интересно, чем руководствовался автор, когда влипил там for и switch.На самом деле там просто изначально планировалось кое-что другое, но не срослось. А потом просто забыл переделать. К следующему релизу поправлю. Если не забуду))
Очевидно же: i - это состояние "конечного автомата". ;)
А у тебя фиксация на конченных автоматах)
> А у тебя фиксация на конченных автоматах)Да, я понял, почему ты к КА приписал Л. ;) Перечитай внимательно мой ответ на твою ту выдачу - я тебе именно про "фиксацию" и написал.
Ты ничего не понимаешь это самодокументируемый код.
Там много всякой разной всячины наподобие этого вот
https://github.com/ProfessorNavigator/mylibrary/blob/7986715...std::thread *thr = new std::thread([this, p] {
this->archive_filenames = AddBook::archive_filenames(p);
this->finish_wait_disp->emit();
});
thr->detach();
delete thr;Ну, книжька пачитать по паттернам, Фаулера, может быть, Нестерюк по паттернам С++, может еще что то. Еще "Чистый код" и т п.
Парсер XML самодельный это нечто шедевр, тоже, если уж хочется свой парсер, для души - ну все понимают, тоже самое - книжька пачитать, Ахо Компиляторы подойдет, лекcс, якк, вот это все.
До самодельного ХМЛ парсера я даже в бытность студентом не додумался, я парсер JSON сделал :D
В общем годика через три после переработок можно будет еще раз выложить. Код таки да, раздут.
Лямбда функции понатыканные везде где надо и не надо просто превосходны.Но так как никто никого не заставляет насильно работать над этим кодом, стоны про код нра/не нра излишни - автор захотел и написал, наше дело пользоваться/не пользоваться.
Автору творческих успехов и пожеланий удачных переработок кода.
И вообще, инженерной необходимости в С++ для такого приложения нет, python, C#, Dart, что угодно, TypeScript + Electron, но C++ тут излишний.
> И вообще, инженерной необходимости в С++ для такого приложения нет, python, C#, Dart, что угодно, TypeScript + Electron, но C++ тут излишний.Можете лучше - делайте))
Да, код не без недостатков. Заполируем со временем. Главное, что работает.
Фон надо было розовым делать. Так не взлетит. Инфа - сотка.
Автор, ты зачем xml парсер свой писал?
Тренировался может. Я тоже по молодости свой xml-парсер для одной программки пилил, даже как-то работало. Потом узнал что в Qt есть SAX, ну и про разные tinyXML тоже :)
> Автор, ты зачем xml парсер свой писал?Why not?
>> Автор, ты зачем xml парсер свой писал?
> Why not?Это показывает уровень того, кто писал код. Зачем тогда свою графическую библиотеку не написали?
> Зачем тогда свою графическую библиотеку не написали?А я об этом подумываю)) Но пока руки не доходят нормально с Vulkan и OpenGL разобраться.
Зачем вообще такое писать на с++? На питоне можно было: было бы проще и короче, на производительность бы вообще не повлияло.
> На питоне можно было: было бы проще и короче, на производительность бы вообще не повлияло.Seriously, bro? Скормите MyLibrary библиотеку гигабайт на 400 архивов. А потом запустите какой-нибудь системный монитор и посмотрите, сколько это всё потребляет ресурсов. Во время создания коллекции, скажем, на 8 потоках.
А в целом - на чём умею, на том и пишу;)
>> На питоне можно было: было бы проще и короче, на производительность бы вообще не повлияло.
> Seriously, bro? Скормите MyLibrary библиотеку гигабайт на 400 архивов. А потом запустите
> какой-нибудь системный монитор и посмотрите, сколько это всё потребляет ресурсов. Во
> время создания коллекции, скажем, на 8 потоках.Дык это ваш код и не понятно, где там узкое место. Очень возможно, что дело не в языке.
В программах, где общее место - работа со строками (тем более, с текстами), дело всегда в языке.
> Дык это ваш код и не понятно, где там узкое место. Очень
> возможно, что дело не в языке.Узкое место там на самом деле одно - скорость чтения с жёсткого диска. Но оно везде так, в любой программе, которой требуется хранить данные на жёстком диске. А насчёт Питона... Любая программа - это в конечном итоге набор инструкций для процессора. И, как ни крутись, меньше их не станет. С Питоном же помимо всего прочего, вам придётся тратить такты процессора на парсинг кода интерпретатором. Поэтом программы на Питоне по определению не могут работать быстро. Питон уместен там, где вам нужно пару строчек накидать по-быстрому, для остального - нет. Да и зачем он мне, если уже знаю С++?))
> Узкое место там на самом деле одно - скорость чтения с жёсткого диска.Потенциально, в Linux, можно использовать Xattrs для кэширования часто используемой (например, при поиске и фильтрации) информации. Для инвалидации кэша - дату модификации файла, сохраненную там же. Инвалидация кэша и доступ к этим данным через таблицу ФС быстрее, чем к целым файлам, не требуется их открытие, (повторное, многократное) чтение и разбор. В отличие от базы данных (с индексом) этот метод хорош тем, что нет нужды сопоставлять файлы с их отображением в индексе, нет привязки к путям, нет нужды считать хэш-суммы, ведь атрибуты уже привязаны к ноде. А базу можно использовать только при миграции данных между платформами (при ручном импорте/экспорте).
> Потенциально, в Linux, можно использовать Xattrs для кэширования часто используемой (например,
> при поиске и фильтрации) информации. Для инвалидации кэша - дату модификации
> файла, сохраненную там же. Инвалидация кэша и доступ к этим данным
> через таблицу ФС быстрее, чем к целым файлам, не требуется их
> открытие, (повторное, многократное) чтение и разбор. В отличие от базы данных
> (с индексом) этот метод хорош тем, что нет нужды сопоставлять файлы
> с их отображением в индексе, нет привязки к путям, нет нужды
> считать хэш-суммы, ведь атрибуты уже привязаны к ноде. А базу можно
> использовать только при миграции данных между платформами (при ручном импорте/экспорте).Ну во-первых таки стояла задача не привязываться к ОС специфичному API. Потому что, кто знает, как оно дальше будет. Во-вторых, сложность там не с чтением базы - она читается один раз, при переключении коллекций, и потом хранится в памяти - а с чтением самих книг. Которые, как ни крути, будут лежать на диске. Да ещё и в архив какой-нибудь сжатые. В кеш они может попадут, может нет. Если бы речь шла о сервере, то там можно заморочиться - прокешировать всё это дело, если памяти хватает, а потом отдавать из кеша. Но программа то ну вот ни разу не серверная. Можно выиграть на том, чтобы читать те же архивы один раз, и при этом сразу их хешировать. Но для этого нужно тогда создавать свой полноценный архиватор. Потому что существующие решения могут архивы читать совершенно по-разному, в произвольном порядке.
> сложность там не с чтением базы - она читается один раз, при переключении коллекций, и потом хранится в памяти - а с чтением самих книг.Ну книги, положим, читаются один раз при добавлении.
А вот база - каждый раз при запуске программы. Причем, за время с последнего запуска, файлы могли быть переименованы/перемещены, и возникает задача при каждом запуске проверить все ли файлы из индекса на месте, а перемещенные переиндексировать. То есть открыть/прочитать/разобрать. Или, как минимум, чтобы этого не делать, посчитать хэш для сопоставления со старой записью (то есть прочитать файл с диска, но без разбора).
А вот атрибуты, привязанные к узлу ФС, не требуют такого сопоставления. А в некоторых случаях, они совсем обхода при старте программы не требуют, если мы не используем файловые пути ещё как-то, ведь изменение путей на атрибуты не влияет.И этот метод, как раз, для такого рода программ - локальных и однопользовательских.
Серверным программам, расчитанным на одновременный доступ множества клиентов, эффективнее и надежнее использовать базу. Тем более, серверная программа находится постоянно онлайн и изменения в ФС может отслеживать налету. А саму базу можно поместить целиком в RAM - с более быстрым доступом, чем к диску. Да и со специальным языком запросов на клиентах работать проще (ведь это готовый API), а её транзакции надежнее, чем произвольный доступ к диску.> Да ещё и в архив какой-нибудь сжатые.
Вот тут не понял. Если речь про архивы вида *.pdf.xz, где лежит один файл, то всё также, как с обычным файлом. Атрибут привязывается к архиву. Если в архиве множество разных файлов (книг), то атрибуты тогда применить будет затруднительно, но, разве, кто-то использует архивы для домашних библиотек? Обычно, для экономии, либо формат файла сам поддерживает сжатие, либо файлы сжимают каждый по-отдельности, либо используют файлы как есть, но на ФС со сжатием (вроде Btrfs). А единый архив с книгами - это же обычно для хранения/раздачи, а не для использования/чтения. К такому и софт обычно специальный прилагается, если требуется. Это ведь не библиотека, а, скорее, способ её резервирования - backup.
> Ну книги, положим, читаются один раз при добавлении.Да. А потом компьютер выключается, и всё - кеша нет.
> А вот база - каждый раз при запуске программы. Причем, за время
> с последнего запуска, файлы могли быть переименованы/перемещены, и возникает задача при
> каждом запуске проверить все ли файлы из индекса на месте, а
> перемещенные переиндексировать.Индексация происходит только по команде пользователя. На запуске/переключении коллекций лишь загружается база.
> И этот метод, как раз, для такого рода программ - локальных и
> однопользовательских.Увы - нет. У меня коллекция например, на которой всё это работает, больше 400 Гб. И такое не только у меня)) Где бы столько памяти взять? ;)
> Вот тут не понял. Если речь про архивы вида *.pdf.xz, где лежит
> один файл, то всё также, как с обычным файлом. Атрибут привязывается
> к архиву. Если в архиве множество разных файлов (книг), то атрибуты
> тогда применить будет затруднительно, но, разве, кто-то использует архивы для домашних
> библиотек? Обычно, для экономии, либо формат файла сам поддерживает сжатие, либо
> файлы сжимают каждый по-отдельности, либо используют файлы как есть, но на
> ФС со сжатием (вроде Btrfs). А единый архив с книгами -
> это же обычно для хранения/раздачи, а не для использования/чтения. К такому
> и софт обычно специальный прилагается, если требуется. Это ведь не библиотека,
> а, скорее, способ её резервирования - backup.Как раз про описываемые архивы и речь)) Где по 2-3 Гб fb2 файлов например (если повезёт). А то и вовсе просто куча всякого, в том числе архивы, вложенные в архив.
>> Узкое место там на самом деле одно - скорость чтения с жёсткого диска.
> Потенциально, в Linux, можно использовать Xattrs для кэширования часто используемой (например,
> при поиске и фильтрации) информации. Для инвалидации кэша - дату модификации
> файла, сохраненную там же. Инвалидация кэша и доступ к этим данным
> через таблицу ФС быстрее, чем к целым файлам, не требуется их
> открытие, (повторное, многократное) чтение и разбор. В отличие от базы данных
> (с индексом) этот метод хорош тем, что нет нужды сопоставлять файлы
> с их отображением в индексе, нет привязки к путям, нет нужды
> считать хэш-суммы, ведь атрибуты уже привязаны к ноде. А базу можно
> использовать только при миграции данных между платформами (при ручном импорте/экспорте).Есть ли предположения, почему так не делают? Кроме как "не во всех ФС такое есть". В последнем случае выходит, что разнообразие ФС является тормозом развития системы в целом.
База - универсальнее и, в случае серверных программ, эффективнее и надежнее.
Это решение сугубо для локальных однопользовательских программ под Линукс.
Да, это решение для встроенных в условные KDE или Gnome "индексаторов". При этом условный троян не отправит эффективно файл с базой на посторонний сервер. :)
>> Дык это ваш код и не понятно, где там узкое место. Очень
>> возможно, что дело не в языке.
> Узкое место там на самом деле одно - скорость чтения с жёсткого
> диска.А сколько времени от этого проходит в системном вызове?
> С Питоном же помимо всего прочего, вам
> придётся тратить такты процессора на парсинг кода интерпретатором.Вы можете найти пример программы на pygtk, которая создает просто окно и посчитать какой процент от времени запуска уходит на парсинг. К тому же, можно поставлять сразу байткод.
> А сколько времени от этого проходит в системном вызове?Да кто ж его считал. Думаете мне заняться больше нечем, только время вызовов замерять?)) Зачем бы мне это делать? Я вроде не прошивку для атомного реактора написал.
> Вы можете найти пример программы на pygtk, которая создает просто окно и
> посчитать какой процент от времени запуска уходит на парсинг. К тому
> же, можно поставлять сразу байткод.Оно мне надо? На Питоне я никогда и ничего писать не буду. Так зачем бы мне это делать? Писать не буду не потому, что язык "плохой". Он решает свои задачи, для моих он не подходит. Если вам для ваших задач нужен Питон - да пользуйтесь на здоровье. Если есть желание переписать MyLibrary на Питоне - флаг в руки. Я для того код и открывал - делайте с ним, что хотите.
>> А сколько времени от этого проходит в системном вызове?
> Да кто ж его считал. Думаете мне заняться больше нечем, только время
> вызовов замерять?)) Зачем бы мне это делать? Я вроде не прошивку
> для атомного реактора написал.Ну тогда и не надо говорить, где узкое место, раз ничего не замеряли.
>> Вы можете найти пример программы на pygtk, которая создает просто окно и
>> посчитать какой процент от времени запуска уходит на парсинг. К тому
>> же, можно поставлять сразу байткод.
> Оно мне надо? На Питоне я никогда и ничего писать не буду.
> Так зачем бы мне это делать? Писать не буду не потому,
> что язык "плохой". Он решает свои задачи, для моих он не
> подходит. Если вам для ваших задач нужен Питон - да пользуйтесь
> на здоровье. Если есть желание переписать MyLibrary на Питоне - флаг
> в руки. Я для того код и открывал - делайте с
> ним, что хотите.Не нужно тему менять. Если вы не готовы проверять свои слова, то не нужно нести чушь.
> Не нужно тему менять. Если вы не готовы проверять свои слова, то
> не нужно нести чушь.Ну т.е. вам заняться нечем, поэтому будем докапываться до столба. Понятно, так и запишем.
>Узкое место там на самом деле одно - скорость чтения с жёсткого дискаВы профилировали? Нет? Почему же я в этом так уверен?
>Любая программа - это в конечном итоге набор инструкций для процессораЗависит от алгоритма. Возьмите рам-диск, и создайте xml размером гигабайта три(можно и больше). И создайте там корневой элемент с кучей атрибутов с двойными кавычками. Замерьте скорость получения атрибута. Теперь замените двойные кавычки на одинарные, и повторите попытку. Тут уже на жёсткий диск не спишешь.
https://github.com/ProfessorNavigator/mylibrary/blob/7986715...
Нет, это точно любовь)) Увы, я вам взаимностью ответить не могу.
Вы не спрашиваете, каким образом я пришёл к данному выводу, скорее всего даже не попытались это проверить, и тем более, не спрашиваете, как это исправить. Мне всегда было интересно, как люди мыслят и почему. Удовлетворите моё любопытство, у вас нет гордости, вас не задевает, что ваше решение могло быть лучше? Вы не умеете?
> Вы не спрашиваете, каким образом я пришёл к данному выводуО чём мне спрашивать?)) Вы ходите за мной из темы в тему и пытаетесь доказать, что то, что нормально работает - не работает. Из раза в раз, одно и то же. Оно проверялось на 500+ тысячах книг (и это только у меня, были ведь и другие пользователи). Да, по скорости там наверняка что-то можно оптимизировать, но вряд ли принципиально - я просто не смотрел пока, мне не до того. Если есть желание что-то доказать - возьмите и сделайте, как считаете нужным. А потом пришлите pull request. А мы посмотрим, что выйдет.
>Вы ходите за мной из темы в тему и пытаетесь доказать, что то, что нормально работает - не работаетВы же уже признавали, в прошлых темах, что у вас нет парсера xml. То, что он работает сейчас - счатливая случайность. Зачем заново притворяться, что у вас нормальная реализация?
>Оно проверялось на 500+ тысячах книг (и это только у меня, были ведь и другие пользователи)Программирование - это не та сфера, где можно методом тыка проверять, работает или нет. Вот выше человек пишет
>День добрый.
>на попытке проиндексить библиотечку оно сложилось без каких либо сообщений. 2 попытки, одинаковый результатИ не важно, сколько книг вы таким образом обработали. Если оно падает на одной книге из миллиарда, из-за того, что не следует спецификации, то это исключительно ваша недоработка.
>Да, по скорости там наверняка что-то можно оптимизировать, но вряд ли принципиальноЭто не оптимизация, а сделать нормально. Вам говорят, что у вас сделано неправильно, но вы каждый раз отпираетесь. То про АУР, насчёт готовых пакетов, то про парсер, то про другой код, там где лишний for и switch, то про интерфейс.
> Если есть желание что-то доказать - возьмите и сделайте, как считаете нужнымВы предалагаете мне учить C++, чтобы прислать вам MR, который вы не факт, что примете?
> Вы же уже признавали, в прошлых темах, что у вас нет парсера
> xml.И что?)) Мой код перестал выполнять возложенные на него задачи?))
> То, что он работает сейчас - счатливая случайность. Зачем заново
> притворяться, что у вас нормальная реализация?А я где-то притворялся?)) Цитаты в студию.
> Программирование - это не та сфера, где можно методом тыка проверять, работает
> или нет.С каких это пор тестирование превратилось в "метод тыка"? Вы свой код не тестируете? Впрочем, я так подозреваю, вы в жизни ничего серьёзнее Hellow World и не написали (да и его - вряд ли).
> Вот выше человек пишет
>>День добрый.
>>на попытке проиндексить библиотечку оно сложилось без каких либо сообщений. 2 попытки, одинаковый результатА вы у нас экстрасенсом заделались? Знаете, что там случилось? Ну так просветите меня. С указанием на конкретные строчки кода: "Вот здесь падает". Потому что мне тот человек так больше ничего и не написал. Ни здесь, ни где-либо ещё. А я не ясновидящий, чтобы без каких-либо тех. данных (даже без типа ОС), угадывать, что там случилось. И случилось ли вообще.
> И не важно, сколько книг вы таким образом обработали. Если оно падает
> на одной книге из миллиарда, из-за того, что не следует спецификации,
> то это исключительно ваша недоработка.А я разве где-то это отрицал?))
> Это не оптимизация, а сделать нормально. Вам говорят, что у вас сделано
> неправильно, но вы каждый раз отпираетесь.Ну и смысл со мной спорить?)) Впрочем, понимаю - работодатель заставляет, никуда не денешься)) Забавно только, что на меня такие ресурсы тратятся - я в общем-то никто.
> То про АУР, насчёт готовых
> пакетов, то про парсер, то про другой код, там где лишний
> for и switch, то про интерфейс.В огороде - бузина, а в Киеве - дядька.
> Вы предалагаете мне учить C++, чтобы прислать вам MR, который вы не
> факт, что примете?Как вариант, но не обязательно. Я вам предлагаю заняться чем-то более полезным, чем написание бессмысленных комментариев здесь.
>И что?)) Мой код перестал выполнять возложенные на него задачи?))А он уже начал их выполнять?
>А я где-то притворялся?)) Цитаты в студию.А почему вы пишите, что он выполняет поставленные задачи? Ваша задача - получить мусор из xml?
>С каких это пор тестирование превратилось в "метод тыка"?С тех пор, как вы упомянули
>Оно проверялось на 500+ тысячах книг (и это только у меня, были ведь и другие пользователи)Хотя, если вы каждую книгу не сравинвали вручную, то вы даже этим числом похвастаться не можете. Оно может быть не упало, но не факт, что корректно обработало.
>А я разве где-то это отрицал?))Вы говорите, что у вас оно якобы работает. Что в корне неверно
>Это не оптимизация, а сделать нормально. Вам говорят, что у вас сделано неправильно, но вы каждый раз отпираетесь.Вы так и не поняли этот момент. Есть
<a b='c' d="e"/>
Теперь попробуйте своим кодом получить атрибут b и d.
>Впрочем, я так подозреваю, вы в жизни ничего серьёзнее Hellow World и не написали (да и его - вряд ли).Мне очевидно, почему ваш код не работает, мне его даже запускать не надо. Вы, даже после того, как вам привели строку, на которую нужно посмотреть, до сих пор не поняли, что не так, и как это поправить.
> А он уже начал их выполнять?И не переставал.
> А почему вы пишите, что он выполняет поставленные задачи? Ваша задача -
> получить мусор из xml?Т.е. цитат не будет. Т.е. вы - лжёте. Хорошо, с этим разобрались. Про задачи - я уже не один раз говорил, мне плевать на весь формат xml. Задача стояла, получить нужное из fb2 и epub. Задача выполнена.
И да, кстати, то, что вы сидите на зарплате, и строчите здесь платные комментарии - вы подтвердили. Своим молчанием. Так что на остальное можно было бы и не отвечать. Но из чистой вежливости - так и быть.
> С тех пор, как вы упомянули
>>Оно проверялось на 500+ тысячах книг (и это только у меня, были ведь и другие пользователи)
> Хотя, если вы каждую книгу не сравинвали вручную, то вы даже этим
> числом похвастаться не можете. Оно может быть не упало, но не
> факт, что корректно обработало.Да-да, конечно. Вы сначала запустите программу хотя бы, а потом уже пытайтесь мне что-то доказать. Впрочем от вас я всё равно никакой критики рассматривать не буду - то, что вы никогда ничего не писали, т.е. программистом не являетесь - вы тоже подтвердили.
> Вы говорите, что у вас оно якобы работает. Что в корне неверно
>>Это не оптимизация, а сделать нормально. Вам говорят, что у вас сделано неправильно, но вы каждый раз отпираетесь.И никаких доказательств, что "неверно", кроме собственного же утверждения. Т.е. вы снова лжёте.
> Вы так и не поняли этот момент. Есть
> <a b='c' d="e"/>
> Теперь попробуйте своим кодом получить атрибут b и d.
>>Впрочем, я так подозреваю, вы в жизни ничего серьёзнее Hellow World и не написали (да и его - вряд ли).
> Мне очевидно, почему ваш код не работает, мне его даже запускать не
> надо. Вы, даже после того, как вам привели строку, на которую
> нужно посмотреть, до сих пор не поняли, что не так, и
> как это поправить.Ну т.е. вы только что расписались в том, что даже не разобрались (точнее, не вы, а тот, кто вам подсказывает, вы совершенно очевидно, что никогда и ничего не писали вообще), как код на самом деле работает. Вы не поняли, что задача методов класса XMLParser - только извлечь из файла нужный тег. Его обработка происходит уже в других местах. И поэтому пишете здесь полнейшую чушь
про <a b='c' d="e"/>. Что опять же совершенно прекрасно обрабатывается (передайте привет тому, кто вам там код-ревью делал, пусть внимательно посмотрит на метод XMLParser::get_element_attribute, на то где и как он вызывается, и как работает, а потом идёт доучиваться - нечего с такими, как вы, водиться, даже ради подработки).В общем, вы - лжец. Что я готов доказывать в любом суде, если что.
Вполне вероятно, что вы на зарплате. Зачем вы прицепились ко мне - тоже понятно. Ни я, ни моё творчество вам абсолютно не интересны, ваш интерес - продвинуть свой ЯП. В том числе поиском мнимых недостатков в других ЯП. Что опять же конечной целью не является. Какова конечная цель - вопрос.
>И да, кстати, то, что вы сидите на зарплате, и строчите здесь платные комментарии - вы подтвердили. Своим молчаниемДаже если я вам и покажу свою трудовую, скажите что она подделана.
>то, что вы никогда ничего не писали, т.е. программистом не являетесь - вы тоже подтвердили.Можно подумать, что вы поверите, тому, кем я являюсь. Мне не интересно доказывать вам, кем являюсь я, мне интересно говорить о вашем коде.
>Вы не поняли, что задача методов класса XMLParser - только извлечь из файла нужный тегЗадачей парсера должен быть парсинг в соответствии со спецификацией. Даже если вы используете 1% от xml-а, то всё равно, то что вы реализуете, должно соответствовать спецификации. Если кто-то захочет взять ваш парсер, то использовать его по назначению он не сможет, поскольку именно парсера у вас до сих пор нет.
>Что опять же совершенно прекрасно обрабатываетсяВрать не хорошо, особенно, когда ваша ложь проверяется за пять минут, даже со смартфона. Открывается абсолютно любой сайт с онлайн компилятором. Копируем ваш исходиник, и удаляем у метода имя класса, а в main всатавляем вызов. Я не буду в это сообщение копипастить под пятьдесят строк вашего кода, интересует вот этот фрагмент https://github.com/ProfessorNavigator/mylibrary/blob/7986715... должно получится что-то вроде
#include <iostream>std::string
get_element_attribute(const std::string &element,
const std::string &attr_name)
// тело вашего метода
int main() {
std::cout
<< get_element_attribute("<a b='c' d=\"e\"/>", "b")
<< " "
<< get_element_attribute("<a b='c' d=\"e\"/>", "d")
<< "\n";return 0;
}
И нажимаем запустить. Программа выведет e e, хотя при правильной реализации должна вывести c e.
>на то где и как он вызывается, и как работаетВы претендуете на то, что написали парсер xml, а теперь призываете посмотреть на то как он вызывается. Это уже не парсер, если вызов его в другом месте поломает код
>Вполне вероятно, что вы на зарплатеВы уже сочинили теорию заговора, а теперь заговорили про суд. Вам так сложно признать, что ваш код не работает?
>В общем, вы - лжец. Что я готов доказывать в любом суде, если что.Я вам без суда привёл пример, который показывает, что парсера у вас нет. Кстати можете меня поздравить, поскольку выше уже написан код, и вы уже не можете сказать, что я не написал ни одной строчки. И ещё поздравить с тем, что я вначале отревьювил ваш код, и моё ревью совпало с реальностью.
> Даже если я вам и покажу свою трудовую, скажите что она подделана.Нет, не скажу. Если рядом будет лежать ваш паспорт))
> Задачей парсера должен быть парсинг в соответствии со спецификацией. Даже если вы
> используете 1% от xml-а, то всё равно, то что вы реализуете,
> должно соответствовать спецификации. Если кто-то захочет взять ваш парсер, то использовать
> его по назначению он не сможет, поскольку именно парсера у вас
> до сих пор нет.Да что вы говорите, правда?)) Интересно знать, как оно тогда работает? Без парсера то?))
> Врать не хорошо, особенно, когда ваша ложь проверяется за пять минут, даже
> со смартфона. Открывается абсолютно любой сайт с онлайн компилятором. Копируем ваш
> исходиник, и удаляем у метода имя класса, а в main всатавляем
> вызов. Я не буду в это сообщение копипастить под пятьдесят строк
> вашего кода, интересует вот этот фрагмент https://github.com/ProfessorNavigator/mylibrary/blob/7986715...Хорошо, нашли ошибку, нашли - признаю)) Хоть какая-то польза от вас))
Вот вам исправленная версия. Довольны?))
std::string
get_element_attribute(const std::string &element,
const std::string &attr_name)
{
std::string result;if(element.empty() || attr_name.empty())
{
return result;
}
std::string find_str = attr_name + "=";
std::string::size_type n = element.find(find_str);
if(n != std::string::npos)
{
find_str = "\"";
std::string::size_type n2 = element.find(find_str, n);
{
find_str = "'";
std::string::size_type n_single = element.find(find_str, n);
if(n_single != std::string::npos && n_single < n2)
{
n2 = n_single;
}
else
{
find_str = "\"";
}
}
if(n2 != std::string::npos)
{
n2 = n2 + find_str.size();
std::string::size_type n3 = element.find(find_str, n2);
if(n3 != std::string::npos)
{
result = std::string(element.begin() + n2, element.begin() + n3);
}
}
}return result;
}> Вы претендуете на то, что написали парсер xml, а теперь призываете посмотреть
> на то как он вызывается. Это уже не парсер, если вызов
> его в другом месте поломает кодХы, ну вот сочинять то не надо)) И выдавать желаемое за действительное. Всё как работало, так и продолжает. Несмотря даже на найденное вами.
> Вы уже сочинили теорию заговора, а теперь заговорили про суд. Вам так
> сложно признать, что ваш код не работает?Работает, он, работает. Вы изобрели искусственный случай, и радуетесь как младенец. Покажете в реальной книге такое?))
> Я вам без суда привёл пример, который показывает, что парсера у вас
> нет.Ладно, нет)) А парсится оно само, по щучьему велению, ага.
>Нет, не скажу. Если рядом будет лежать ваш паспорт))А откуда вы знаете, мой это паспорт или нет? Я же безликий Аноним, много нас, но я один.
>Хорошо, нашли ошибку, нашли - признаю)) Хоть какая-то польза от вас))
>Вот вам исправленная версия. Довольны?))Я надеюсь, исправленная версия не потеряется? Кстати, я у вас новый баг нашёл ^_~
std::cout << "\"" << get_element_attribute("<a b=\"d=\" d=\"e\"/>", "d") << "\"\n";
Выводит " d=", а должно "e". Игра в кошки мышки проложается
>Вы изобрели искусственный случай, и радуетесь как младенец. Покажете в реальной книге такое?))Ещё раз. Предположим, кто-то захотел взять уже готовый парсер, а не писать его с нуля. Смотрит, а у вас есть. Берёт его к себе, и получает этот баг. Нехорошо. Или вам самим понадобится парсер в новом проекте, не писать же его вам повторно?
> А откуда вы знаете, мой это паспорт или нет? Я же безликий
> Аноним, много нас, но я один.Да вы покажите, а мы проверим, не переживайте))
> Я надеюсь, исправленная версия не потеряется? Кстати, я у вас новый баг
> нашёл ^_~
> std::cout << "\"" << get_element_attribute("<a b=\"d=\" d=\"e\"/>", "d") << "\"\n";
> Выводит " d=", а должно "e". Игра в кошки мышки проложаетсяОна закончилась. Я и в прошлый то раз, исправил только потому, что как раз занимался оптимизацией. А так - ищите себе дрессированную обезьянку в другом месте. Будете ей из головы задачки давать. Или добро пожаловать в разработку. Присылайте pull request - а я посмотрю, что у вас там к чему.
> Ещё раз. Предположим, кто-то захотел взять уже готовый парсер, а не писать
> его с нуля. Смотрит, а у вас есть. Берёт его к
> себе, и получает этот баг. Нехорошо.А вот это уже точно не мои проблемы - читайте внимательно лицензию))
> Или вам самим понадобится парсер
> в новом проекте, не писать же его вам повторно?Да я разберусь))
>Я и в прошлый то раз, исправил только потому, что как раз занимался оптимизацией.В таком случае, вас будет ждать маленький сюрприз. Не все же мне баги вам находить, вам и самим нужно постараться. Просьба ко всем остальным - не спойлерите, пожалуйста, если я о чём-то умолчал, я это не пропустил, я это оставил на следующий раз.
> В таком случае, вас будет ждать маленький сюрприз. Не все же мне
> баги вам находить, вам и самим нужно постараться. Просьба ко всем
> остальным - не спойлерите, пожалуйста, если я о чём-то умолчал, я
> это не пропустил, я это оставил на следующий раз.Удачи и личного счастья.
> В таком случае, вас будет ждать маленький сюрприз. Не все же мне
> баги вам находить, вам и самим нужно постараться. Просьба ко всем
> остальным - не спойлерите, пожалуйста, если я о чём-то умолчал, я
> это не пропустил, я это оставил на следующий раз.Специально для вас и господина n00by.
std::string
get_element_attribute(const std::string &element, const std::string &attr_name)
{
std::string result;if(element.empty() || attr_name.empty())
{
return result;
}
std::string find_str = " " + attr_name + "='";
std::string::size_type n = element.find(find_str);
if(n != std::string::npos)
{
n += find_str.size();
find_str = "'";
std::string::size_type n2 = element.find(find_str, n);
if(n2 != std::string::npos)
{
result = element.substr(n, n2 - n);
n = result.find(find_str);
if(n != std::string::npos)
{
result.clear();
}
else
{
find_str = "=";
n = result.find(find_str);
if(n != std::string::npos)
{
result.clear();
}
}
}
}
else
{
find_str = " " + attr_name + "=\"";
n = element.find(find_str);
if(n != std::string::npos)
{
n += find_str.size();
find_str = "\"";
std::string::size_type n2 = element.find(find_str, n);
if(n2 != std::string::npos)
{
result = element.substr(n, n2 - n);
n = result.find(find_str);
if(n != std::string::npos)
{
result.clear();
}
else
{
find_str = "=";
n = result.find(find_str);
if(n != std::string::npos)
{
result.clear();
}
else
{
find_str = "'";
n = result.find(find_str);
if(n != std::string::npos)
{
result.clear();
}
}
}
}
}
}if(result.empty())
{
result = { 68, 111, 32, 115, 111, 109, 101, 116, 104, 105, 110,
103, 32, 121, 111, 117, 114, 115, 101, 108, 102, 44,
32, 108, 97, 122, 121, 32, 97, 114, 115, 101 };
}return result;
}
>std::string find_str = " " + attr_name + "='";Хорошо, вы закрыли один граничный случай. Но теперь вы внесли регрессию, когда не будет обрабатыватся корректный xml.
std::cout << "\"" << get_element_attribute("<a b=\"d=\" d=\n\"e\"/>", "d") << "\"\n";
> result = { 68, 111, 32, 115, 111, 109, 101, 116, 104, 105, 110,
> 103, 32, 121, 111, 117, 114, 115, 101, 108, 102, 44,
> 32, 108, 97, 122, 121, 32, 97, 114, 115, 101 };Таких вот магических строк в исходном коде быть не должно.
>> result = { 68, 111, 32, 115, 111, 109, 101, 116, 104, 105, 110,
>> 103, 32, 121, 111, 117, 114, 115, 101, 108, 102, 44,
>> 32, 108, 97, 122, 121, 32, 97, 114, 115, 101 };
> Таких вот магических строк в исходном коде быть не должно.А это специально для вас послание. Расшифруете - поймёте ;)
>>Нет, не скажу. Если рядом будет лежать ваш паспорт))
> А откуда вы знаете, мой это паспорт или нет? Я же безликий
> Аноним, много нас, но я один.
>>Хорошо, нашли ошибку, нашли - признаю)) Хоть какая-то польза от вас))
>>Вот вам исправленная версия. Довольны?))Вот потому и занёс его в ЧС. Я знаю достаточно людей, у кого "ЧСВ зашкаливает", но на то имеются основания. И каждый в таком случае написал бы "признаю, _я_ допустил ошибку".
> Я надеюсь, исправленная версия не потеряется?
Программист на плюсах вряд ли будет читать такой код.
Вот здесь на ровном месте вводится новая область видимости, а "основание" -- совет из книжки "не использовать магические числа", неверно понятный.
find_str = "\"";
std::string::size_type n2 = element.find(find_str, n);
{
find_str = "'";
std::string::size_type n_single = element.find(find_str, n);
Не соглашусь со многими насчет отвратного интерфейса. Он скорее странноватый, но в целом симпатичный.
Мне лично больше всего понравился мятный цвет(кнопка майколлекшн и другие), я бы попробовал посоветовать автору использовать этот цвет как основной, и уже строить палитру от него. Идея с розовым фоном хорошая, мне тоже понравилась.
Используй пастельные цвета, не используй некомплиментарные цвета(темно зеленый как раз про это) и будет хорошо. Ну и возможно разметку чуть подправить, и все, в принципе.
Удачи!)
Ты ещё гайды по дизайну скажи почитать майкрософтовские или гугловые.
По цветам - на самом деле у всех вкусы разные. Как уже писал выше - я ни на чём не настаиваю. В общем-то для того все настройки цветов вынесены в отдельный файл MLStyles.css, а не вшиты жёстко в код. Можете подправить в любом текстовом редакторе (например перед сборкой программы - лежит в папке MyLibrary в исходниках, или после установки - /usr/share/MyLibrary/MLStyles.css)> Удачи!)
Спасибо!
воу впервые за долгое время прога НЕ В чёрных тонах! однозначно плюсик к карме создателя))
Дезигн просто выжигает глаза.
Это же та программа которая вместе с архивом флибусты распространяется?
Та, вроде, MyHomeLib называется.
Нет
Сначала тоже про нее подумал, но, к счастью, нет
Ну, шрифтик то приятный, это не отнять.
Единственный местный активист "Свободного" ПО, кто сам что-то пишет, а не просто языком мелет, торгуя готовым. Впрочем, см. #28
> Единственный местный активист "Свободного" ПО, кто сам что-то пишет, а не просто
> языком мелет, торгуя готовым. Впрочем, см. #28Кто-то же должен показывать народу - как программы писать не нужно. С этой задачей программа справляется на все 200%. И по интерфейсу, и по коду.
И да, если бы я сделал такое - я бы постеснялся это выкладывать. Как говорится, хороший фотограф - не тот кто хорошо фоткает, а тот кто умеет жать DELETE.
> Как говорится, хороший фотограф - не тот кто хорошо фоткает, а тот кто умеет жать DELETE.Согласен. У хороших фотографов (в мою студенческую бытность занятий с корифеями в этой области), по их утверждению, пара достойных снимков из двух катушек пленки - нормальный результат.
> Как говорится, хороший фотограф - не тот кто хорошо фоткает, а тот кто умеет жать DELETE.Ну или хотя бы не показывать окружающим
> Кто-то же должен показывать народу - как программы писать не нужно.Например, вы? Понимаю - нет кода, нет вопросов. С какой-то стороны тоже положительный пример.
> Например, вы? Понимаю - нет кода, нет вопросов. С какой-то стороны тоже
> положительный пример.Да, вы знаете, у меня есть энное количество откровенно дерьмового кода для сугубо внутренних нужд. Зачем оказывать человечеству "услугу" показывая как генерить такие фекалии - я и правда не понимаю. В этом мире и так слишком много дерьмового софта, так что найти нормальную программу, не страдающую вопиющими дефектами, тормозами, вырвиглазом, странными контролами и чем там еще - становиться все сложнее.
Если я должен благодарить за что-то такое - тогда вы в свою очередь должны говорить спасибо всем спамерам которые почтили своим присутствием ваш мыльник. Как-то так, имхо.
> Если я должен благодарить за что-то такое - тогда вы в свою
> очередь должны говорить спасибо всем спамерам которые почтили своим присутствием ваш
> мыльник. Как-то так, имхо.А я разве где-то чего-то просил?)) Требовал благодарности?)) По-моему я только сделал программу, выложил код в открытый доступ и опубликовал об этом новость. Будет всё это кому-то полезным - хорошо, нет - на нет и суда нет.
Не "постеснялся", а струсил. Будем называть вещи своими именами.СПО - это не музей эталонного кода. Это способ коллективного решения проблем. Для чего код и должен быть открыт.
Автор всё делает верно. И людям помог, и сам у них чему-то научился. Надеюсь, ему помогут с разработкой. Очевидно, это будут не те, кто тут строит из себя гениальных фотографов.
Как говорится, умный - это не тот, кто без устали мелет языком с умным видом в интернетах, а тот, кто знает, когда следует говорить, а когда - промолчать.
> Не "постеснялся", а струсил. Будем называть вещи своими именами.В отличие от автора я все же могу объективнее оценить качество получившегося. Примерно как фотограф знающий когда пора жать DEL.
> СПО - это не музей эталонного кода. Это способ коллективного решения проблем.
> Для чего код и должен быть открыт.1) Иногда дерьмовое решение создает больше проблем чем решает. Например, остальные поленятся делать нормально - и будут юзать какаху. Мир надолго увязнет в этой какахе.
2) Некоторый код в безответственных руках может быть довольно деструктивным и создать немало проблем.> Автор всё делает верно. И людям помог, и сам у них чему-то
> научился. Надеюсь, ему помогут с разработкой. Очевидно, это будут не те,
> кто тут строит из себя гениальных фотографов.Вы все правильно поняли. И я даже не против чтобы кто-то учился готовить, но вот позволять раздавать результат на публику - вот тут уже большой вопрос. По каким-то таким причинам есть санэпиднормы.
> Как говорится, умный - это не тот, кто без устали мелет языком
> с умным видом в интернетах, а тот, кто знает, когда следует
> говорить, а когда - промолчать.Это же и релизов софта касается, внезапно. Не любой софт, не в любом его состоянии стоит релизить.
> Иногда дерьмовое решение создает больше проблем чем решает. Например, остальные поленятся делать нормально - и будут юзать какаху. Мир надолго увязнет в этой какахе.Мир, неспособный переплюнуть "дерьмовое" решение, готовый грызть кактус с лопаты, уже не спасти, не жалко. А может, это не решение плохое, а экспертиза.
> Не любой софт, не в любом его состоянии стоит релизить.
Открытие исходников - это одно. А релиз софта - это другое.
Первое - это необходимое условие для коллективной разработки. Второе - соглашение и способ контроля качества. Причем, если качество кода при открытии было невысоко (код написан "на коленке"), то для его улучшения, кроме прочего, частые релизы также необходимы.
>Впрочем, см. #28Уж лучше чем вонючая субстанция по ссылке https://github.com/STrusov/refal-machine/blob/598d423ee993a3...
>>Впрочем, см. #28
> Уж лучше чем вонючая субстанция по ссылке https://github.com/STrusov/refal-machine/blob/598d423ee993a3...Понятно, что объяснить суть проблемы ты не в состоянии, но очень хочется что-то пикнуть.
То есть бревна в виде `goto` ты в своем глазу не замечаешь?
И чем же плохи goto?
Если в двух словах, то это плохая практика. Такой код сложнее для восприятия и в нем проще наделать ошибок.
> И чем же плохи goto?На эту тему много писал Вирт в своё время, но в последствии признал ошибочность излишней категоричности и вернул оператор в язык.
В данном случае goto хорош, как минимум:
1) говорит мне, что вот тот эксперт вообще ни одной виртмашины (исполнителя байткода) не видел, потому возбудился.
2) говорит эксперту "не лезь, сломаешь".
Ответь как эксперт эксперту, зачем у тебя в коде `next_sentence` это и аргумент функции и метка внутри этой функции? Что бы порог входа забрать до небес или из-за скудной фантазии?
> Ответь как эксперт эксперту, зачем у тебя в коде `next_sentence` это и
> аргумент функции и метка внутри этой функции? Что бы порог входа
> забрать до небес или из-за скудной фантазии?По наблюдаемому результату очевидно: что бы вызвать проекции у анонимных экспертов.
> То есть бревна в виде `goto` ты в своем глазу не замечаешь?Там намного больше бревен. Большая простынка плохо структурированного кода, изобилующего трюками в control flow, декларациями по всем закоулкам, с чрезмерным размером/уровнем сложности. В общем упаси вас получить себе в тиму таких коллег.
>> То есть бревна в виде `goto` ты в своем глазу не замечаешь?
> Там намного больше бревен. Большая простынка плохо структурированного кода, изобилующего
> трюками в control flow, декларациями по всем закоулкам, с чрезмерным размером/уровнем
> сложности. В общем упаси вас получить себе в тиму таких коллег.А ты написал свой интерпретатор LISP, как всякий уважающий себя программист из США, или как всегда выдаёшь баззворды, не имея представления о предмете?
> То есть бревна в виде `goto` ты в своем глазу не замечаешь?Я вижу, что порог вхождения поднят достаточно, неспособные отсеиваются.
Советую тебе посмотреть ещё translator.c в теге v0.2.0 -- для полного разрыва всех шаблонов.
Я вижу, что ты начал юлить как уж на сковородке:- Чужой код: это просто ужас.
- Твой говнокод: это такая прекрасная фича.
Чужой код, очевидно (но не для тебя), может быть упрощён, посредством простого удаления for и switch.Ну а метку, в которую ты тыкал пальчиком, ты не то что удалить не сможешь, заменив воображаемым флагом, ты даже примерно такой КА не напишешь. Что так же очевидно, но не для всех.
>>Впрочем, см. #28
> Уж лучше чем вонючая субстанция по ссылке https://github.com/STrusov/refal-machine/blob/598d423ee993a3...Да они там нашли друг друга. Ща весь мир будет у их ног. Что он там будет делать - я уточнять не буду. Но им не понравится.
Короче, свой говнокод можно выкладывать только на хаскеле и окамле, чтоб его никто не понял, и не критиковал.
Так он и на Си не понял, но критикует.
Он и его код больше похожи на отлично продуманную попытку дискредитации открытого ПО.
В чем дискретизация? В том, что качество кода не соответствует высоким стандартам экспертов опеннета?
> В том, что качество кода не соответствует высоким стандартам экспертов опеннета?Хотя бы до приемлемого качества недотягивает
Автору тут уже полную панамку конструктивной и не очень критики написали, может со временем и сделает рефакторинг. А с другой стороны, пользователям глубоко фиолетово на качество кода, главное что бы работало и не падало.
То есть он предугадал (знал), что подавляющее большинство экспертов не видели подобного кода и потому случилась бурная реакция? У него вроде бы нет передачи vector<vector<string>> по значению, использует ссылки, в том числе и константные.Для приложения это вообще "норма". Пишет спец в предметной области, потом, если вдруг сильно надо, специально обученные люди переписывают.
Разве gtkmm ещё жив?
> Разве gtkmm ещё жив?А чего с ним будет? Там большая часть кода генерируется автоматически на базе кода GTK, насколько я знаю. Пару раз кнопкой мышки щёлкнуть для запуска генерации не особо сложно.
> Для пользователей Windows доступен экспериментальный инсталлятор.Экспериментальный? Что там экспериментировать ... Inno Setup взять. Несколько раз мышкой ткнуть.
> Inno Setup взять. Несколько раз мышкой ткнуть.И как я не догадался?...
А если серьёзно, экспериментальный он потому, что Windows у меня только на виртуалке. Программа в Windows тестируется тоже только на виртуалке. И в обозримом будущем так всё и останется. Что будет на реальной машине - я без понятия. Может вылезти всё, что угодно. Кроме того, адаптация для Windows осуществляется по остаточному принципу. Поэтому инсталлятор останется в состоянии вечной "беты".
В целом же рекомендую перейти на Linux. И далеко не из-за MyLibrary. Linux не без недостатков, но у него есть одно неоспоримое достоинство: с ним вы и только вы решаете, что и как будет происходить у вас на ПК. Это пытаются прекратить, но пока не особо успешно.
> Экспериментальный? Что там экспериментировать ... Inno Setup взять. Несколько раз мышкой
> ткнуть.Лучше NSIS. Его можно билдануть like a boss прямо из под линуха, нарулив кроссбилд виндовой версии mingw'ом (который как правило в приличных дистрах опакечен для линуха).
И вот так линухом - можно собрать и виндовую программу. И инсталер к ней.
А с точки инстала - обычный сетапер, ничем не отличимый на вид от 9000 других. Все потребне фичи умеет, им куча открытых проектов пользуется.
GUI - огонь! Сразу видно, что GTK4.
Боюсь представить, что будет с интерфейсом, когда выйдет GTK5
Такая будет родная тема у ГТК5шной адвайты.
Инфа от путешественника во времени
По факту это стандарт gtk4/gnome аппликах, только здесь палитра DOS игры начала 90х вместо модного "дарк фим".
Интерфейс ужас, да и код тоже ужас... Вообще кошмар... Такое чувство что автор пытается data poisoning ИИ микромягких
> Интерфейс ужас, да и код тоже ужас... Вообще кошмар...И вообще - страшно жить))
> Такое чувство что автор пытается data poisoning ИИ микромягких
Почему бы и нет)) Они мне ничего хорошего точно не сделали, скорее наоборот. Поэтому - на-а! Получи, фашист, гранату!))
>Код программы написан на языке программирования С++ и доступен (GitHub, GitFlic) под лицензией GPLv3.Вот так надо, господа.
Уточнение: "Код программы написан на языке программирования С++ и графическом тулките Qt, доступен (GitHub, GitFlic) под лицензией GPLv3."
Вот так надо.
Каталогизатор нормального юзера это файловая система.
И вот кстати да, ППКС.
+ поиск по файлам
Up to you. Удобней пользоваться файловой системой - пользуйтесь.
по метаданным - описание книги, оглавление не будет работать поиск.
Когда у тебя в «библиотеке» только букварь и «та оранжевая», то да, тебе хватит и файловой системы
Когда у тебя тысячи книг по которым нужен поиск становится иначе
Спасибо! ProfessorNavigator.
Хорошая прога, нравиться и дизайн и функционал, ничего лишнего.
Спасибо!
Самый винрарный из каталогизаторов!
Стараюсь. Не всё и не всегда получается. Но стараюсь.
Да норм прога, буду юзать! Автору спасибо! Чем больше прог, тем лучше! А Communist вообще заинтересовал, будем с сыном тестить этот мессенджер =)
> А Communist вообще заинтересовал, будем с сыном тестить этот мессенджер =)Сейчас в активной разработке новая версия. Переписывается с нуля. Концептуально, впрочем, будет то же самое. Основной упор на P2P.
Внимание, проект типичного профессионала с опеннета, тех, кто критикует современный софт. Я в плюсах не разбираюсь, но сумел оценить красоту парсерса.Рекомендую и вам причастится. https://github.com/ProfessorNavigator/mylibrary/blob/master/...
Итак, нужен парсер xml. Вместо того, чтобы взять нормальный, хорошо работающий парсер, написанный профессионалами, создаётся свой велосипед. Этот велосипед не соответствует спецификации xml. Автор долго отрицал проблемы, но впоследствии признал все недостатки, но оправдывается тем, что ему полноценный парсер не нужен, костылей хватит.
https://github.com/ProfessorNavigator/mylibrary/blob/7986715...
Гоняем парсер туда-сюда по строке. Токенизация не изобретена, какая разница сколько раз круги намотают
https://github.com/ProfessorNavigator/mylibrary/blob/7986715...
Атрибут ищется по совпаданию подстроки attr2="attr1" attr1="val1" если искать attr1, то будет неожиданный результат
https://github.com/ProfessorNavigator/mylibrary/blob/7986715...
Как насчёт того, чтобы обработать файл целиком до конца, в поисках нужной кавычки, хотя хватило бы одного токена?
https://github.com/ProfessorNavigator/mylibrary/blob/7986715...
Как насчёт того, чтобы экранированные данные так и остались экранированными и вместо R&D был R&D?
Короче, присоединяйтесь к бесплатному ревью.
>и вместо R&D был R&D?R&D , R&D
RnB!
А не пофигу ли? Здесь важно, что логика парсера инкапсулирована в отдельном классе, который при необходимости можно переписать.
> А не пофигу ли? Здесь важно, что логика парсера инкапсулирована в отдельном
> классе, который при необходимости можно переписать.Не обращайте внимания, это любовь)) Товарища немного приложили в теме про один ЯП, который тут усиленно пытаются "продвигать". Видимо, сильно задело за живое)) Как оно там на самом деле работает, его не интересует.
Какая разница, что в программе работающей с xml документами нет xml парсера? На машине тоже без тормозов ездите?
Как же оно парсит-то если нет XML-парсера?
Так же как и тормоза которые работают каждый второй раз.
Вы понимаете, что xml парсер, это то, что соответствет спецификации xml? А приведённая имитация парсера будет возвращать результат в зависимости от фазы луны.
>Внимание, проект типичного профессионала с опеннета, тех, кто критикует современный софт. Я в плюсах не разбираюсь, но сумел оценить красоту парсерса.Это выпад в сторону:
типичного профессионала с опеннета,
кто критикует современный софт
или плюсов?Примером отличного графического интерфейса не современного софта можно привести 1С 7 версии, IT-inventory.
Тут не идёт речь про современный или устаревший софт, тут речь идёт про уникальное видение автора. Уникальное видение не имеет отношение к современному или устаревшему софту, это просто своё уникальное видение автора, оно может быть просто удобно или нет. В данном случае оно явно не удобное для большинства.
>Это выпад в сторону:
>типичного профессионала с опеннета,
>кто критикует современный софтОно. А про плюсы написал, что не знаю, и могу пропустить какую-то нелепую ошибку. Типа копирования объёмной структуры, которую можно передать по значению, или порчи памяти.
Это нормально, что он пишет свой парсер. Как объяснял мне знакомый, у них в США каждый уважающий себя программист обязательно пишет интерпретатор LISP. С тех пор времени прошло много, курс CS MIT изменили, но желание быть программистами у людей никуда не делось. Откуда там O(n!) и лишние копирования - это вопрос второй.
>у них в США каждый уважающий себя программист обязательно пишет интерпретатор LISPА семантика у них там лисповая сохраняется, или там имитация ради имитации?
>Откуда там O(n!) и лишние копирования - это вопрос второйВ том то и дело, что автор даже не попытался что либо исправить, хотя эти строки ему уже подсвечивали
Из слов "уважающий себя" должно быть понятно. Там это делали ради получения диплома, то есть с халтурой на следующий курс было не проскочить. Подозреваю, что не все сами писали, кто-то выезжал на "организаторских способностях", но такие тоже нужны.Кстати, именно те люди и создали практически всё то ПО, что мы используем ныне. Зачем убрали из обязательной программы обучения, остаётся лишь гадать. ;)
> Итак, нужен парсер xml. Вместо того, чтобы взять нормальный, хорошо работающий парсер,
> написанный профессионаламиСТООООЙ, ГДЕ?!
ГДЕ ОН! Нормальный, хорошо работающий, написанный профессионалами парсер xml! Хатю, хатю, хатю! (/me бьется на полу, стуча кулачками об ковер)
вот ту х-ню 20летнего возраста с цифиркой 2 (была еще ж и 1!) в которой все двадцать лет при разборке xml раз в неделю да и выполнится какой-нибудь непрошенный кот - разумеется, не предлагать, ты обещал профессионалами и хорошо работающий.
Неуж-то в кресты не завезли ни одного нормального парсера? Неуж-то совсем всё плохо? Ради интереса посмотрел, что там в арчевских репозиториях есть, увидел libxml++, mxml(тут си), pugixml, xerces-c, говорят ещё в qt парсер есть. Неуж-то любой из них будет хуже того ужасаного велосипеда, что у автора?Ну если всё так плохо, то нужно взять yacc/bison, и делать по взрослому.
>> Итак, нужен парсер xml. Вместо того, чтобы взять нормальный, хорошо работающий парсер,
>> написанный профессионалами
> СТООООЙ, ГДЕ?!
> ГДЕ ОН! Нормальный, хорошо работающий, написанный профессионалами парсер xml! Хатю, хатю,
> хатю! (/me бьется на полу, стуча кулачками об ковер)Ну хоть тот же libxml. По сравнению с вон тем - он я б сказал довольно неплох. Хотя плюсеры могут взять pugixml или tinyxml. Они, поверь, тоже - сильно лучше вон того нечто, оно вообще спасибо если 50% существующих XML адекватно сжует. Это реально рандом будет.
> Ну хоть тот же libxml.АААААА!!!!! Это та самая хрень из-за которой мне чуть ли не раз в неделю чохом приходится апдейтить миллион сервисов под вопли менеджеров "нитрожь мы др-4им на аптайм!"
Потому что ну нельзя же ж просто так распарсить xml, не выполнив при этом какого-нибудь чужого кота?! ДВАДЦАТЬ ГРЕБАНЫХ ЛЕТ! Место проклято или вот что?> оно вообще спасибо если 50% существующих XML адекватно сжует.
да нахрена ж ему их жевать? Ему надо уметь сжевать один-единственный. Это вполне посильная задача даже для деда-программиста на коболе.
> АААААА!!!!! Это та самая хрень из-за которой мне чуть ли не раз
> в неделю чохом приходится апдейтить миллион сервисов под вопли менеджеров "нитрожь
> мы др-4им на аптайм!"Он, конечно, здоровый, но - таки - вот именно дыры в нем не то чтобы суперчасто. Я навскидку не назову когда он апдейтился. Может, ты его путаешь с чем-то типа openssl'я какого, где CVE по 1-2 в месяц стабильно? Конечно лишний раз с libxml лучше не связываться, здоровый шибко, но, ты вообще видел что автырь сделал?! На этом фоне libxml - неплохая штука. Ей куча программ пользуется, и никакого особого горя у них нет с этого. В отличие от самопала который половину 100% валидных XML - не сжует.
На плюсоте - может иметь смысл взять pugiXML или TinyXML. Менее жуткие в целом. Но вон тот таки бывает шустрее, и умеет странное, вплоть до извратов типа XSLT всяких. Если жевать надо хорошо и много...
> Потому что ну нельзя же ж просто так распарсить xml, не выполнив
> при этом какого-нибудь чужого кота?! ДВАДЦАТЬ ГРЕБАНЫХ ЛЕТ! Место проклято или
> вот что?Судьба у летающих энтерпрайзных макаронных монстров такая - по ночам пугать всех неудачников торчащими тeнтaклями. Но конкретно этот - вроде не особо этим и страдает, ты его с чем-то путаешь имхо. Хотя с учетом размера кода - совсем без CVE в таком макаронном монстре было бы странно.
>> оно вообще спасибо если 50% существующих XML адекватно сжует.
> да нахрена ж ему их жевать? Ему надо уметь сжевать один-единственный. Это
> вполне посильная задача даже для деда-программиста на коболе.Очень странная задача и выбор технологий и инструментов, имхо. Хотя глядя на программу, знаешь, ты бы органично вписался как Project Manager в этот Dream Team :D.
Могу даже название стартапа подсказать, во! WTF, Inc! Бери пока никто не отхапал, черный пиар - тоже пиар :P
> Я навскидку не назову когда он апдейтился.зато я назову: Jan 29
да, оно ВОТ, опять!
Тебе хихихаха, а мне миллион согласований и утверждений.
А openssl - jul31 24, и то как всегда - чтобы получить данную уязвимость, зайдите админом на уязвимый хост, поменяйте в настройках в четырех местах приложения которым никогда и не пользовались, теперь еще перданите в прыжке, одновременно высунув язык, и тогда с вероятностью 0.0001% утекут какие-то ненужные данные ненужной соседней сессии, но это неточна.
> Потому что ну нельзя же ж просто так распарсить xml, не выполнив
> при этом какого-нибудь чужого кота?! ДВАДЦАТЬ ГРЕБАНЫХ ЛЕТ! Место проклято или
> вот что?Очевидно, Турчин В.Ф. -- агент кейджиби, был заслан в США с Рефалом, научил их, что в <> может быть кот.
пользуясь случаем порекламирую нормальную хостилку для fb2 - https://github.com/porcula/porcula-rsвеб-морда, 1 бинарь, opds, нет зависимостей, кроссплатформенная, <s>кошерный яп</s>
Даже скринов нет, разве можно так выкладывать проекты?
ну там минималка действительно. поиск с регекспами, показ обложек, скачивание. что еще надо
Например, исправление кривого названия книги без редактирования файла. Вообще, много подобных вопросов.
А зачем вообще хейтить автора/дизайн/код в комментах? Создали бы гору конструктивных issues, а может и PR пару-тройку. Если такой софт вам в принципе не интересен — всегда можно молча пройти мимо. А если интересен, то хостинг кода на GitHub/GitFlic как бы намекает.Получается, что мастерства хватает только на изливание желчи?
Комментарии созданы для беспредметной, необъективное и неадекватной критики. Это способ выплеснуть недовольство в интернете. Это канализирования недовольства, способ регуляции общества.
да кто хейтит? Мы ж поржать зашли...
> Получается, что мастерства хватает только на изливание желчи?потому-что, голодны, да-да, в прямом смысле слова. Сытый человек использует ее по назначению.
> А зачем вообще хейтить автора/дизайн/код в комментах?Не обращайте внимания. Если поинтересуетесь возрастом комментаторов, то сразу многое станет понятно. Самоутверждение, все дела. Обычно годам к 25 проходит. Не у всех, но у большинства.
Большинство сюда как раз не заходит.
> Большинство сюда как раз не заходит.Поэтому тут и атмосфера такая... особенная. Большинство таки нормальное обычно, им или вовсе самоутверждаться не нужно, или они это делают другими методами.
> А зачем вообще хейтить автора/дизайн/код в комментах? Создали бы гору конструктивных issues,
> а может и PR пару-тройку. Если такой софт вам в принципе
> не интересен — всегда можно молча пройти мимо. А если интересен,
> то хостинг кода на GitHub/GitFlic как бы намекает.
> Получается, что мастерства хватает только на изливание желчи?Нет, нужно обязательно похаять, высказать свое мнение. Это национальная черта. Этим мы отличаемся от других национальностей. Они бы сказали "вау, как круто! Аффтор жги еще!". Но мы не такие, не улыбаемся как дураки без причины, а говорим автору, что код плохой и дизайн тоже.
Короче, боди позитив не для нас с нашим менталитетом. Если ты жырный, то надо сказать тебе об этом, чтобы ты работал над собой, а не думал, что ты красавец.
Жирная земля == превосходная земля.К слову, раз уж зашла речь о "менталитете национальностей". ;)
> К слову, раз уж зашла речь о "менталитете национальностей". ;)https://i07.fotocdn.net/s211/85288e568376fb4a/public_pin_l/2...
>> К слову, раз уж зашла речь о "менталитете национальностей". ;)
> https://i07.fotocdn.net/s211/85288e568376fb4a/public_pin_l/2...Осталось понять, как при такой разнице в менталитете, русские "эволюционировали" от создания IDA Pro "в одно рыло" к пафосной упаковке Болгеносов сотнями майнтайнеров.
>>> К слову, раз уж зашла речь о "менталитете национальностей". ;)
>> https://i07.fotocdn.net/s211/85288e568376fb4a/public_pin_l/2...
> Осталось понять, как при такой разнице в менталитете, русские "эволюционировали" от создания
> IDA Pro "в одно рыло" к пафосной упаковке Болгеносов сотнями майнтайнеров.Вы сознательно передергиваете тему, то ли специально, то ли от своей глупости. Возвращаясь к теме менталитета советую почитать исследования и научные статьи, или просто почитать тот же редит и увидеть то, о чем я говорю.
>>>> К слову, раз уж зашла речь о "менталитете национальностей". ;)
>>> https://i07.fotocdn.net/s211/85288e568376fb4a/public_pin_l/2...
>> Осталось понять, как при такой разнице в менталитете, русские "эволюционировали" от создания
>> IDA Pro "в одно рыло" к пафосной упаковке Болгеносов сотнями майнтайнеров.
> Вы сознательно передергиваете тему, то ли специально, то ли от своей глупости.Я сознательно перевожу тему в конструктив, поскольку когда виннипух идёт попрошайничает исходники, упаковывает и с пафосом продаёт, "за державу обидно".
> Возвращаясь к теме менталитета советую почитать исследования и научные статьи, или
> просто почитать тот же редит и увидеть то, о чем я
> говорю.Редит? Что бы вон то тянуло на совет, там должно быть хотя бы что-то вроде "мичиганский рыбный тест".
Автор вынес своё поделие на суд сообщества.
Сообщество даёт свою обратную связь.
Обратная связь обязана быть исключительно хвалебной?
Рубрикаторы стандартные используются для индексирования?
Если да, то какие?
> Рубрикаторы стандартные используются для индексирования?Не совсем понял, о чём вы. Так что видимо ответ на ваш вопрос - нет, не стандартные.
Автор, как вы извлекаете данные о названии, авторах и так далее? Метаданные не всегда могут присутствовать в книге
> Автор, как вы извлекаете данные о названии, авторах и так далее? Метаданные
> не всегда могут присутствовать в книгеВ fb2 и epub в том или ином виде обычно есть. По остальным форматам - MyLibrary пытается найти fbd файл (если оно всё в архиве, для epub тоже ищется fbd файл). Если находит, то читает из него. Если нет - для pdf там тоже кое-что можно извлечь из файла. Для djvu берётся название файла и дата его создания.
DjVu тоже может содержать метаданные (djvused -e print-meta -u file) - автор, заголовок и т.д. Почти как метаданные в PDF.
> DjVu тоже может содержать метаданные (djvused -e print-meta -u file) - автор,
> заголовок и т.д. Почти как метаданные в PDF.Я ориентировался на API djvulibre. И там такого, насколько я помню, не было. Может, конечно, плохо смотрел.
djvused от тех же авторов, а что и как внутри - не смотрел, просто слышал про фичу и видел такую таблицу https://github.com/j2969719/doublecmd-plugins/blob/4d688fa89...
> djvused от тех же авторов, а что и как внутри - не
> смотрел, просто слышал про фичу и видел такую таблицу https://github.com/j2969719/doublecmd-plugins/blob/4d688fa89...Да, спасибо за наводку - уже примерно понял, как это можно сделать. Теперь бы ещё хоть одну живую книгу с метаданными найти, чтобы поэкспериментировать. Всё, что есть у меня - без них.
Видел, но поискать нет возможности. Можно самому попробовать, судя по ману https://djvu.sourceforge.net/doc/man/djvused.html пишутся в форматеkey\t"value-in-utf8"
key - либо как в PDF принято, либо из BibTeX.
Кстати, насчёт
> Если нет - для pdf там тоже кое-что можно извлечь из файла.
Речь ведь идёт о вполне обычных метаданных PDF?
> Видел, но поискать нет возможности. Можно самому попробовать, судя по ману https://djvu.sourceforge.net/doc/man/djvused.html
> пишутся в формате
> key\t"value-in-utf8"Да, уже нашёл. Можно вот так https://ebooks.stackexchange.com/questions/8699/adding-metad...
> Речь ведь идёт о вполне обычных метаданных PDF?
Да. То, что вытаскивается с помощью poppler.
На StackExchange почему-то ключи тоже в кавычках О_о
Да вот. В том и проблема - пока не найду нормального описания стандарта, где бы всё это было описано.
В djvused.cpp нашёл функцию command_set_meta и в начале парсится текст с теми самыми метаданными: всё, игнорируя пробелы, читается в key, а как только попадается двойная кавычка - всё оставшееся читается в value.
В "djvulibre-3.5.28/doc/djvulibre-book-en.djvu" тоже key без кавычек (страница 44, кажется).А вот как всё это добро хранится в файле - непонятно, в спецификации формата ничего подходящего не попалось на глаза, хотя "metadata" в исходниках самой библиотеки попадается.
P.S. В ExifTool не заглядывал.
> А вот как всё это добро хранится в файле - непонятно, в
> спецификации формата ничего подходящего не попалось на глаза, хотя "metadata" в
> исходниках самой библиотеки попадается.Да, в этом вот и проблема - нет внятного описания формата. Так-то я уже сделал соответствующую функцию. Добавил метаданные в файл и посмотрел как они выводиться будут. Дальше будем поглядеть. djvu всё равно не особо популярный формат. И метаданные в эти файлы, насколько я понимаю, редко кто добавляет. Не то что бы я прям много книг в djvu видел, но сколько-то видел. И ни в одной никаких метаданных не было.
Классная штука. В кои-то веки что-то интересное опубликовали.
Обязательно попробую собрать это чудо!
>> Программа адаптирована для работы в операционных системах семейства Linux и WindowsДостаточно Linux. Из-за поддержки двух систем код становиться сильно переусложненным. Если размещать где-то на роутере, то Linux достаточно.
>> Реализован поиск книг по различным критериям (фамилия, имя, отчество автора, название книги, серия, жанр) и их чтение через программу, по умолчанию установленную в системе для открытия соответствующих форматов файлов. При выборе книги отображаются аннотация и обложка книги, если таковые доступны. Поддерживается отображение списка файлов, входящих в коллекцию, и списка книг, входящих в конкретный файл.
А база данных где? Файловая база данных для книг я так понимаю. А как насчёт описания? Где оно храниться? А стоп, это не веб-проект я так понимаю. Блин, а я уже подумал что вы сервер небольшой на С++ написали. Ладно, ясно - БД встроенная. Приложение стационарное.
> Достаточно Linux. Из-за поддержки двух систем код становиться сильно переусложненным.На самом деле мне удалось обойтись всего парой ifdef, так что в данном конкретном случае - нормально.
> Приложение
> стационарное.Да, стационарное. Насчёт сервера мысли есть. Пока руки просто не дошли. Там нужно код работы с файлами и базами в отдельную библиотеку вынести, тогда можно будет прикрутить сетевую часть нормально. Оно для этого в принципе почти готово - изначально проектировалось так, чтобы отделить графическую часть от всего остального. Но всё равно кое-что нужно подшлифовать.
Если кому интересно как сделать простой HTTP сервер:
- https://github.com/JeffreytheCoder/Simple-HTTP-Server
- https://github.com/gtungatkar/Simple-HTTP-server
На веб-гуи всё получится гораздо красивее и несколько проще, да и запустится где-то на роутере спокойно.
> Если кому интересно как сделать простой HTTP сервер:
> - https://github.com/JeffreytheCoder/Simple-HTTP-Server
> - https://github.com/gtungatkar/Simple-HTTP-server
> На веб-гуи всё получится гораздо красивее и несколько проще, да и запустится
> где-то на роутере спокойно.Можно на гошке в 3 строчки и закинуть бинарь на роутер.
Согласен, golang отличный выбор для этого. Но я просто его не знаю.
> Если кому интересно как сделать простой HTTP сервер:
> - https://github.com/JeffreytheCoder/Simple-HTTP-Server
> - https://github.com/gtungatkar/Simple-HTTP-server
> На веб-гуи всё получится гораздо красивее и несколько проще, да и запустится
> где-то на роутере спокойно.На https://lwan.ws он так то сильно проще чем это делается. И не надо самому писать парсеры HTTP и проч. Вас на этом пути ждет много горя, с выходом за границы wwwroot от факапов рюхания кодирования URL, обломов с парсингом креативно оформленных хидеров и много чего еще, подставляющего пользователя этого добра под удар по сети.
Нет, вы не напишете парсер HTTP с 1 раза правильно. И с пятого - тоже. И оно провалит тесты любого тематичного корпуса тестов в куче номинаций. Намного лучше брать стреляных воробьев, где за эн лет парсеры уже избавились от хотя-бы самых очевидных багов, и обложили свое добро тематичными корпусами тестов. Иначе окажется что будучи высунутым в сеть - такой сервак сервирует не только то что задумано, но и всю вашу систему наружу заодно.
А с чего бы это сайт в интранете домашней сети должен быть доступен в интернете? Или вы про атаки роутера со сторонних веб-сайтов загружаемые в браузере?
> А с чего бы это сайт в интранете домашней сети должен быть
> доступен в интернете?Во первых - то что оно именно интранет и никогда никому не доступно - ниоткуда не следует.
Во вторых - даже если это интранет, степень доверия к разным системам - разная.
В третьих - есть более 9000 способов попытаться сподвигнуть например вот этот ваш браузер запилить желаемый запрос на вон тот локалхост.> Или вы про атаки роутера со сторонних веб-сайтов загружаемые в браузере?
Да про все и сразу. Писать самому HTTP сервер с ноля - очень голимая идея, обрекающая донкихота на более чем 9000 тупых факапов на ровном месте.
Если вон тот не нравится, есть libmicrohttpd, дает больше низкоуровневого контроля, но апя значительно разлапистее. Вот этот весьма конкретно проверен в поле, на нем RPC интерфейсы всяких программ довольно часто деланы. Можно и еще кого найти - но стоит проявить придирчивость и плотно изучить что народ пишет про ту или иную штуку и секурити. Иначе, таки, можно получить много трабл, когда какие-то левые господа засабмитят левые RPC-запросы "потому что могут".
Для кучи роутеров, извините, есть даже "анлок" вендорских ограничений путем откровенно левых HTTP запросов с выполнением эвон каких команд - так что зальем-ка мы наш openwrt, забив на все ограничения. Только вот это технически - эксплойт. С заменой фирмвари роутера на совершенно постороннюю. Потому что какие-то господа - с HTTP и RPC облажались. Это даже фичой бывает - если для себя. Но если это ремота несанкционировано вфигачит - весьма такое себе!
Какой смысл в каталогизаторах, если есть банальный файловый менеджер наподобие Double Commander или <укажите ваш любимый ФМ>? Спрашиваю без иронии, просто интересно.Быстрый поиск книги по автору/году издания/названию/жанру? Но их всё равно нужно заносить в приложение вручную. Не проще ли назвать сразу должным образом файл: «Толстой Л.Н. – Война и мир (том 1, 1865, роман)»
> Какой смысл в каталогизаторах, если есть банальный файловый менеджер наподобие Double Commander
> или <укажите ваш любимый ФМ>? Спрашиваю без иронии, просто интересно.
> Быстрый поиск книги по автору/году издания/названию/жанру? Но их всё равно нужно заносить
> в приложение вручную. Не проще ли назвать сразу должным образом файл:
> «Толстой Л.Н. – Война и мир (том 1, 1865, роман)»могу предположить, что данная прога умеет считывать какинибудь метаданные файла и на их основе заполнять поля. если нет - то это неудобно. накачал штук надцамть разных и все файлы какпойми обозваны. потом сидеть разбирать переименовывать...
Логика понятна. Просто мне ничего не стоит вбить поиск документа по тексту:<last-name>Толстой</last-name>
> Какой смысл в каталогизаторах, если есть банальный файловый менеджер наподобие Double Commander
> или <укажите ваш любимый ФМ>? Спрашиваю без иронии, просто интересно.С одной стороны всё так (поэтому я уже неоднократно говорил - если удобно пользоваться ФС/ФМ - пользуйтесь). С другой - попадает к вам архив с книгами. На пару гигабайт. А внутри файлы с названиями вида "123456.fb2". Тысячи так три. Как говорится - удачи такое руками разобрать и переименовать. Нет, в конечном итоге сделаете. Но оно надо - столько времени на это тратить?
> Быстрый поиск книги по автору/году издания/названию/жанру? Но их всё равно нужно заносить
> в приложение вручную. Не проще ли назвать сразу должным образом файл:
> «Толстой Л.Н. – Война и мир (том 1, 1865, роман)»Почему вручную? Из fb2 и epub файлов вполне извлекаются метаданные. Epub, кстати, на самом деле - тоже не один файл. Это zip архив с набором всякого разного. Из pdf тоже можно кое-что достать, особенно если он нормально оформлен. Ну и есть также т.н. формат fbd. Это когда делается архив (обычно - zip), внутрь помещается тот же pdf например, а рядом с ним кладётся файл с расширением fbd. Fbd файл - это на самом деле просто "шапка" от fb2, в которой содержатся все данные по книге. В MyLibrary извлечение метаданных и заполнение базы данных автоматизировано (иначе зачем бы всё это было нужно).
Это аргумент.
С этого всё начинается. Файловая система в роли БД, в которой уже доступно всё необходимое.
Потом этого начинает не хватать и рождается экселевская таблица. Как БД, в которой есть всё нужное.
Потом таблички начинает не хватать. К ней бы форму, поиск, удобную работу с обложками. Табличка превращается в полноценную БД и к ней добавляется крудошлёпное приложение.Задача "каталогизировать что-нибудь", казалось бы, весьма общая, только поля формы переименовывай, но решают её каждый раз заново с нуля в разных сферах (книги, reference management, радиодетали, фотографии, имиджборды).
HDR 12 бит в 16К под 500Ггц поддерживает?
> HDR 12 бит в 16К под 500Ггц поддерживает?Попробуйте - расскажете. У меня монитор под рукой всего один, и тот ноутбучный.
Несмотря на мой личный скепсис, автор молодец! Не понимаю публику, которой не нравится концепт, интерфейс или программный код. У нас свободная страна, напишите своё.Автору – продолжать дело. Идеальный продукт суть результат бесчисленных итераций по улучшению.
Сам себя не похвалишь - никто не похвалит
Ты просто жмот на похвалу. А порой для человека, для его душевного состояния нужно просто сказать что-то приятное: что он правильно делает, что помогает обществу, что у него вообще такое желание есть, что в целом его идея интересная и нужная, т.е. он востребован. Ну хорошо, а что ты сделал во благо общества? Ядом брызгнул?
Абсолютно верно. В нашем мире не хватает некоторого участия, сдержанности во мнениях, аккуратности в словах. Не следует подобное приумножать и негативными комментариями на ресурсе. Доброе слово любят даже животные, а людям это жизненно необходимо.
Жизненно необходимо людям - кушать.Кто зарабатывает на покушать торговлей "международным" открытым ПО, тому жизненно необходимо, что бы торговля продолжалась. Отсюда растёт миф "писать своё долго и дорого".
Тут появляется ProfessorNavigator, пишет абы какой код, но это дело работает.
Отсюда возникает неудобный вопрос: а чем на самом деле заняты создатели мифа?
Соответственно, жизненно необходимо всякое такое рубить на корню. Что и наблюдается.
Конспирологии обчитались? Какая связь между тем, что писал я, и поиском заговоров в сфере открытого ПО?
> Конспирологии обчитались?Достаточно детально изучил обстоятельства печального факта: в России ничего не пишется из т.н. СПО.
Кстати, подобного вида риторика -- приписывание оппоненту глупостей -- идёт в разрез с предложенной выше "аккуратности в словах".
> Какая связь между тем, что писал я, и поиском заговоров
> в сфере открытого ПО?Очевидно же: вместо доброго слова мне в ответ посыпалось унылое г.
>Достаточно детально изучил обстоятельства печального факта: в России ничего не пишется из т.н. СПО.А вы откуда знаете? Если не размахивать на каждом шагу тем, что автор из России, то об этом никто не узнает. Я не знал, что nginx написан здесь, до тех пор, пока на автора не наехал рамблер.
>>Достаточно детально изучил обстоятельства печального факта: в России ничего не пишется из т.н. СПО.
> А вы откуда знаете? Если не размахивать на каждом шагу тем, что
> автор из России, то об этом никто не узнает. Я не
> знал, что nginx написан здесь, до тех пор, пока на автора
> не наехал рамблер.А я про автора nginx узнал по сарафанному радио, когда он создал одну из первых версий. И это как раз подтверждение "СПО не пишется" - лицензия BSD, то есть "открытое" ПО.
СПО - например, UnrealSpeccy, но "это было давно и неправда".
Автор себя указывает в исходниках. Если он уехал из России - это опять подтверждение "в России не пишется", то есть приходится уезжать, что бы писать.
> Достаточно детально изучил обстоятельства печального факта: в России ничего не пишется из т.н. СПО.А всё почему? А потому, что ты вместо написания программ строчишь комменты о глобальном заговоре.
>> Достаточно детально изучил обстоятельства печального факта: в России ничего не пишется из т.н. СПО.
> А всё почему? А потому, что ты вместо написания программ строчишь комменты
> о глобальном заговоре.Потому что в нулевых я опросил знакомых, что они думают про GPL, и с тех пор открывал код под лицензиями, где нет промывки мозга. За исключением одного драйвера на Си++. ;)
Не путай "сказать приятное", понятие флюродроса и вполне себе конструктивную критику, которую афффтар на протяжении дней здесь отряхивает и всячески отрицает. Ты - да, ты - требуешь от меня флюродроса, я не вижу в нем смысла, ибо он только усугибит проблемы аффтара.- Не за что тут пока говорить приятное - программа гуано, объективно. Примеров полон тред, причём гуй - наименьшее из зол. Нужны серьёзная переделка и переработка архитектурно. Аффтару нужно изучать язык, а не рисовать конченный (да, в его случае - конченный) автомат на if'ах.
- Флюродросить "О, нет, yet another book database collection software, ааааа, аффтар, зделой мне детейц!111" тоже не вижу смысла - это и тебе, и аффтару надо на западные форумы, там такой лицемерной гнили 80% содержимого, нормального фидбэка свежим, незамыленным взглядом там не дождёшься. Зато флюродросить будут ровно так, как ты и пишешь.
- Критику он наотрез отказывается принимать, даже ради шутки обёрнутую в классическую копипасту - или тринадцатилетка, или заболевание психическое и к доктору надо.
Да в том и фишка этой программы, что она так написана. Был же феномен "программа на Дельфи". Код подобного качества был "нормой", но оно работало и решало какие-то задачи в рамках конторы, не шибко пугая остальных. Таких программ было написано в России столько, что появилась конспирология: Микрософт из-за этого задавила Борланд. Ныне программистов тут хватает на написание сборочных сценариев "Российских ОС".
> феномен "программа на Дельфи".Феномен общий - где-то рядом идёт чисто западный "формочка на вижуал бейзик", у нас оно не прижилось. Причин много - главное, что сам подход уже лет 15 как отмер, оставив на нишу таким кривокодерам только поддержку легаси aka "глючное, тормозное, но выкинуть жалко, ибо работу кое-как, но делает; переписывать - это вкладываться в CapEX, девочки с новомодными МВА на должностях начнуть кидаться гуано, ибо у них просядут KPI".
Однако это не отменяет, что программа афффтара - такая как я и написал. Ну был такой феномен, когда RAD-шагнули в массы, критически снизив порог вхождения в профессию, да. Сейчас оно уже умерло и писать в таком стиле - ну... я писал выше про вордскиллс. Для соревнований "создать примитивную CRM с коннектом к эмэс-скульсерверу" - пойдет; для реальных, публичных, проектов - нет.
> Код подобного качества был "нормой", но оно работало и решало какие-то задачи в рамках конторы, не шибко
Да. Тут нужно вспомнить разницу между требованиями к софту "самописный на локалхосте" и "массовое общее ПО". Что прощается баш-портянке - не прощается даже самому гнилому ололопенсорцу. Что прощается "выложил уроки по кодингу на гитхаб" - то не прощается "посоны, зацените мой каталогизатор уровня выше калибре"
> Таких программ было написано в России столько, что появилась конспирология: Микрософт из-за этого задавила Борланд
Никакой конспирологии нет, все банально до отупения - майки задавили борланд только для того, чтобы продавать (и как продукт, и как привязку к вендору в "бесплатных" версиях, и как базу для "правильного" обучения играя на "синдроме утёнка") СВОЙ вижуал студио с целым спектром языков: от идейного продолжателя дельфи - бейзик и его потомка на дотнете, до "серьёзного" клона джавы - шарпея и "управляемого С++" - С++\CLI. Все. А борланд просто не сумел внятно ответить на такой финт от создателя платформы и фсе, эмбаркадеро теперь выдавлен на периферию.
Фишка в том, что других-то программ под GPL в России и нет. Показать в ответ автору критикам нечего. ;) Alterator 3-й версии и тот принялись переписывать, поскольку оно вдруг оказалось мертво - модули на Scheme писать некому.
> Фишка в том, что других-то программ под GPL в России и нет.Чего-чего? Вот тут поподробнее. Или ты имел ввиду "каталогизаторов ИЗ России"?
> Показать в ответ автору критикам нечего.
Не аргумент, на самом деле. Берется любой калибре и показывается.
В городе ходить в лаптях и тельняшке с ушанкой не следует, даже если в своей дЯрёвне нету того, кто может одеть хотя бы нормальные штаны, кроссовки и футболку - аналогия понятна?
>> Фишка в том, что других-то программ под GPL в России и нет.
> Чего-чего? Вот тут поподробнее. Или ты имел ввиду "каталогизаторов ИЗ России"?Другие программы под GPL -- очевидно, вообще любые программы под GPL. Таковых в России не создано за 30 лет, или сколько оно тут активно пропагандируется.
>> Показать в ответ автору критикам нечего.
> Не аргумент, на самом деле. Берется любой калибре и показывается."Любой калибре" это что? KolibriOS создал автор MenuetOS, Ville Turjanmaa. Все эти активисты не осилили отдизасмить 64-х разрядную версию, что само по себе позорно для кодеров на асме и намекает на их уровень.
> В городе ходить в лаптях и тельняшке с ушанкой не следует, даже
> если в своей дЯрёвне нету того, кто может одеть хотя бы
> нормальные штаны, кроссовки и футболку - аналогия понятна?Понятно, что доказательство по аналогии -- приём демагогии.
> Таковых в России не создано за 30 лет, или сколько оно тут активно пропагандируется.Гм. Ну да, такого гуано, как аффатрское поделие не сделано - оно тихо-мирно лежит себе на винтах у авторов (без эрратива), рядом с баш-портянками и "одноразовыми" скриптами на питоне; или допиливается и идёт в паблик.
Только вот на лоре и на опеннете авторы не пиарят свои программы - они делом занимаются.> "Любой калибре" это что?
Любой калибреподобный софт. Не прикидывайся юродивым.
> Понятно, что доказательство по аналогии -- приём демагогии.
Если нечего ответить - припиши оппоненту демагогию или прикопайся к опечатке/коряво построенной фразе, угу. Так и запишем, ответить на прямой аргумент нечем.
>> Таковых в России не создано за 30 лет, или сколько оно тут активно пропагандируется.
> Гм. Ну да, такого гуано, как аффатрское поделие не сделано - оно
> тихо-мирно лежит себе на винтах у авторов (без эрратива), рядом с
> баш-портянками и "одноразовыми" скриптами на питоне; или допиливается и идёт в
> паблик.Понимаю нестерпимое желание обгадить автора. Если оно "лежит", значит оно не открытое ПО, и уж тем более не Свободное.
Да, автор уделал всех активистов СПО своим кодом вот такого качества.
> Только вот на лоре и на опеннете авторы не пиарят свои программы
> - они делом занимаются.Пярят чужое СПО как своё, да?
>> "Любой калибре" это что?
> Любой калибреподобный софт. Не прикидывайся юродивым.Не прикидывайся что выдуманное тобою слово все известно.
>> Понятно, что доказательство по аналогии -- приём демагогии.
> Если нечего ответить - припиши оппоненту демагогию или прикопайся к опечатке/коряво построенной
> фразе, угу. Так и запишем, ответить на прямой аргумент нечем.Что бы я мог что-то ответить со существу отсутствующего в русском языке слово "калибре", я должен быть уверен, что оно не результат бреда, как минимум.
> Понимаю нестерпимое желание обгадить автора.Если сегодня незавуалированное указание на вполне конкретные недостатки уже есть "желание обгадить", то я горжусь тем, что обгаживаю аффтара
> Да, автор уделал всех активистов СПО своим кодом вот такого качества.
Ага. Обгадился перед всем народом и теперь отпихивает любую критику он, а испанский стыд испытываю я. Уделал так уделал, угу, прям в штаны себе уделал.
> Пярят чужое СПО как своё, да?
Не только. Еще и пишут, и используют. Но новости по мажорному "вышел ПисОфЩит версии 0.0.2" не лепят на каждый релиз.
> Не прикидывайся что выдуманное тобою слово все известно.
> Что бы я мог что-то ответить со существу отсутствующего в русском языке
> слово "калибре", я должен быть уверен, что оно не результат бреда,Ну вот я и сказал, прикидываешься юродивым и не замечаешь русскоязычную транслитерацию слова Calibre, вместо аргументации по-существу. А шороху-то, шороху.
>> Да, автор уделал всех активистов СПО своим кодом вот такого качества.
> Ага. Обгадился перед всем народом и теперь отпихивает любую критику он, а
> испанский стыд испытываю я. Уделал так уделал, угу, прям в штаны
> себе уделал.Ещё раз:
1. Он написал код и открыл.
2. Активисты не написали код, открывать им нечего.
3. Его код плох.
4. Поливая его код, активисты льют себе на голову бесконечность, поскольку там в пропорции - 0.
> Ещё раз:
> 1. Он написал код и открыл.
> 3. Его код плох.
> 4. Ему об этом аргументированно написали
> 5. Аффтар повел себя не как адекватный разработчик, а как тринадцатилетняя школьница
> 2. В комментариях на опеннете не выпячивают написанный ими код, не трясут регалиями и даже переросли возраст меряний длины.
> 4. СПИРВА ДАБЕЙССЯ!11 БИЗ СЕРТИФИКАТА НЕЩИТОВА!11 ЯСКОЗАЛ!!1Поправил
>> Ещё раз:
>> 1. Он написал код и открыл.
>> 3. Его код плох.
>> 4. Ему об этом аргументированно написалиНет причин верить критикам, поскольку их профпригодность ничем не подтверждена.
>> 5.
>> 2.Сбой счётчика.
>> 4. СПИРВА ДАБЕЙССЯ!11 БИЗ СЕРТИФИКАТА НЕЩИТОВА!11 ЯСКОЗАЛ!!1
Характерный набор шаблонов.
> Нет причин верить критикам, поскольку их профпригодность ничем не подтверждена.
> Характерный набор шаблонов.Не, просто переложение твоих последних постов на более краткие версии, почти на хэштеги -
#СПИРВАДАБЕЙСИЯ!11 #ТВОИАРУМЕНТЫНЕАРГУМЕНТЫ #ВЫВСИЁВРЕТИ
>> Нет причин верить критикам, поскольку их профпригодность ничем не подтверждена.
>> Характерный набор шаблонов.
> Не, просто переложение твоих последних постов на более краткие версии, почти на
> хэштеги -
> #СПИРВАДАБЕЙСИЯ!11 #ТВОИАРУМЕНТЫНЕАРГУМЕНТЫ #ВЫВСИЁВРЕТИЯ понимаю, что после промывки мозга возникает мнение, будто бы эти мантры чего-то стоят. Так что нет смысла их повторять -- складывается впечатление, что цикл написан криво. ;)
> Я понимаю, что после промывки мозга возникает мнение, будто бы эти мантры чего-то стоят. > Так что нет смысла их повторять -- складывается впечатление, что цикл написан криво. ;)Именно поэтому твой кривой цикл, Серёга, "ВЫ НЕ ИМЕИИИТИ ПРАВА ГАВАРИТЬ АФФФТАРУ, ПАКА НЕ ПРИНЁСЁТИ СВАЙ КОД!11" (как будто ты и кривокодер-аффтар сможете раскурить мои патчики к пингиньему ядру, взятые в майнлайн задолго до политических пертурбаций, лол) свёрнутый до однострочника #ШПИРВАДАБЕЙСА и тыкаю палочкой.
Ведь, как писал ранее, у тебя аргументов уже нет, а ответить хочется. Так бывает, могу подсказать мазь от этого недуга.
>> Я понимаю, что после промывки мозга возникает мнение, будто бы эти мантры чего-то стоят. > Так что нет смысла их повторять -- складывается впечатление, что цикл написан криво. ;)
> Именно поэтому твой кривой цикл, Серёга, "ВЫ НЕ ИМЕИИИТИ ПРАВА ГАВАРИТЬ АФФФТАРУ,
> ПАКА НЕ ПРИНЁСЁТИ СВАЙ КОД!11"Это не цикл, а чушь, которую ты придумал и приписал мне.
Аноним имеете право говорить автору всё, что в анонимную голову взбредёт. Другое дело, какой вес имеет это всё в глазах автора.
Например, Линус Торвальс отфутболивает даже тех анонимов, кто написал код. На том основании, что они боятся подписаться.
Например, я выбил из тебя признание, что ты писал какие-то скриптики, которые показать стесняешься, и не более.
Тебе довольно сложно убедить меня, что ты что-то смыслишь в вопросе, пока я не увижу твой код, или пока ты не выдашь претензии к чужому коду, выходящие за рамки избитых истин (типа "goto - плохо", как заявил эксперт, невидивший исходников ни одной ВМ). Я рассматриваю всё это как феномен, когда непонятно кто что-то из себя строит. Такое наблюдается только вокруг СПО.
Я не автор.
> Несмотря на мой личный скепсис, автор молодец! Не понимаю публику, которой не
> нравится концепт, интерфейс или программный код. У нас свободная страна, напишите
> своё.
> Автору – продолжать дело. Идеальный продукт суть результат бесчисленных итераций
> по улучшению.Спасибо на добром слове))
Хоспади, меня чуть не стошнило от этих розовых соплей
> Хоспади, меня чуть не стошнило от этих розовых соплейВы это, аккуратней там)) ПК и закоротить может. А потом пожар, все дела. Выскребать вашу обгорелую тушку из остатков квартиры - такое себе удовольствие.
А если серьёзно, чем ненавидеть меня, докажите всем, что я дурак, другим методом - сделайте лучше.
Профессор, а что за мессенджер ты сейчас создаёшь?И да, моё почтение, на одного "делателя" такого как ты приходится тысяча болтунов. Не обращай на них внимания, пустые люди не создающие ничего кроме пустых слов.
> Профессор, а что за мессенджер ты сейчас создаёшь?На github/giflic лежит. И тут новость была пару лет назад. Communist называется. Вот его переписываю с нуля. Основное назначение - P2P общение. Может также работать в локальных сетях, встроен TCP релей. Это в старой версии. В новой будет улучшен P2P режим. Будет обновлен режим работы в локальных сетях. Будет добавлен полноценный режим работы через централизованный сервер (планируется функционал как сервера, так и клиента, чтобы можно было "поднять" сервер в любой момент прямо на домашней машине например). Будет встроенный socks5 proxy (как клиент, так и сервер). И небольшое расширение, превращающее socks5 в полноценный vpn туннель. Постараюсь встроить групповые чаты и каналы по аналогии с телеграмм, только с упором на децентрализованный режим работы. Аудио и видео звонки - возможно в будущем, пока и так объём работы немаленький. Ну и поскольку интерфейс на Qt - попробую портировать на Андроид. На данный момент в общем-то полностью готов P2P режим и встроенный DHT клиент/сервер - проходят финальную отладку и тестирование. Реализован прокси клиент, STUN клиент и сервер. В стадии разработки режим локальных сетей.