LINUX.ORG.RU

Напоминалка: BIRTHDAY! millennium и TheirBirthday

 ,


3

1

Подскажите, плиз, как запустить под Wine 4.0 хорошо известную в прошлом программу-напоминалку BIRTHDAY! millennium

https://4aynikam.ru/publ/kompjutery/obzory_programm/birthday_millennium/13-1-...
Скачать https://www.softportal.com/getsoft-150-birthday-millennium-1.html

При запуске этой проги на мгновение появляется окошко, и усё.
Может, каких-то DDL-ок не хватает, что ли.

PS. Только пожалуйста, не нужно предлагать альтернативы.
За десяток лет их не одну перебрал, и ни одна так и не прижилась.
Просто потому, что BIRTHDAY! millennium оказалась самая удобная в использовании, и здесь это самое главное.

P.P.S. https://github.com/KloinTiinn/TheirBirthday — обнаруженный аналог указанной выше программы.

★★★★★

Последнее исправление: hobbit (всего исправлений: 4)

Ответ на: комментарий от hobbit

Бустер, Бустер! Жду с нетерпением твой пакетик!
Только положи сразу в него нужные либы, чтобы он не тащил их из реп.
Получится некоторое подобие AppImage.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Только положи сразу в него нужные либы, чтобы он не тащил их из реп.

Эээ, вот с этим сложнее. Либо надо принимать какие-то спецмеры, чтобы они не конфликтовали с системными, либо делать статическую сборку Qt (можно, но геморройно).

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

А, ну и ладно, пусть будет как получается.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от tiinn

Я ещё потыкал сами исходники, и прежде, чем собрать пакет, про который просит @chukcha, хочу поправить кое-какие мелкие огрехи.

Глобально можно придраться к стилю кодирования (функциональность работы с файлом events.txt размазана по GUI-модулям, а само имя этого файла упоминается аж в 5 местах, я бы это выделил в отдельный класс), но для «наколеночного» проекта это, возможно, и не так страшно. Из более мелкого — «велосипедный» метод поиска пути к каталогу программы, в Qt есть специальные методы для этого, нет некоторых #include, из-за чего собираемость программы зависит от версии Qt и кое-что ещё.

Буду слать пуллреквесты, в общем.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Спасибо!
Чувствуется, за дело взялся заинтересованный профессионал :-)

Тогда может быть обратите внимание и на эту ремарку tiinn:

Да, «Календаря» там нет, да и события выбираются только на 14 дней, но можно всё переписать :)

14 дней это надо понимать, на экране появляются 14 строк грядущих событий?
Если так, то этого вполне достаточно - напоминать об этих событиях за полмесяца.
Впрочем, можно сделать и как настраиваемый юзером параметр.

А вот «Календарь».... уже подзабыл, что он изображает в этой напоминалке.
Если день недели («Понедельник», «Вторник» и т.д.) по числам месяца, то лично мне этот дубликат совершенно не нужен, поскольку он и так есть в часах в трее.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от tiinn

Послал небольшой PR для пробы, смотри.
Аналогично можно упростить открытие в MainWindow, но там я не совсем понял существующую логику пока…

hobbit ★★★★★
()
Ответ на: комментарий от chukcha

Пулл-реквест, очень грубо говоря, типа патча. Пока @tiinn его не принял, смотреть его смысла не имеет. Да и он больше влияет на внутреннюю логику программы, по сути первый шаг к устранению дублирования кода. На тот случай, если программу продвигать в репозитории и вообще, чтобы с кодом мог работать кто-то кроме автора.

Но если очень интересно, :) посмотреть можно по той самой ссылке «вот» на гитхаб, там есть раздел Pull requests.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

В смысле посмотреть код? Так я все равно ничего в нем не пойму, тем более на Си.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Не сомневайтесь - ваша напоминалка получит огромное распространение среди линуксоидов

Нет, это нахрен никому не нужно, кроме 1.5 человек.

Benis
()
Ответ на: комментарий от Benis

Benis, спасибо за содействие проекту, ваша помощь просто неоценима. Даже слов не хватает, кроме инх.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Ну вот ради интереса создай тут голосовалку «Будете ли вы пользоваться напоминалкой?»

Benis
()
Ответ на: комментарий от chukcha

Я бы предложил просто подождать. За этими правками я собираюсь сделать ещё несколько, а вот уже после этого буду делать пакет. Код можно не смотреть.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Хорошо, ждем-с! 15 лет ждал, подожду еще немного :-)

chukcha ★★★★★
() автор топика
Ответ на: комментарий от tiinn

И когда же я смогу заюзать этот чудо-проект? ;-)

chukcha ★★★★★
() автор топика
Ответ на: комментарий от tiinn

Добавил для унификации ещё один на ту же тему.

Только знаешь… С одной стороны, там по стилю можно править — не направить. Например, у тебя там есть сложная склейка строк и QString::number() там, где можно было сделать шаблонную строку и QString::arg(), намного компактнее было бы.

Есть и более принципиальные вопросы. В частности, у тебя в исходниках русский язык, а английский — в файле переводов. В серьёзных Qt-проектах обычно делают наоборот, иначе какой-нибудь француз словит фейспалм, обнаружив, что ему придётся переводить на французский не с английского, а с русского. И если продвигать проект в репозитории — этим придётся заняться, у любого потенциального мейнтейнера этот вопрос возникнет. Я могу прогнать исходники через linvert, я его для таких случаев и делал. Но решение тут должен принять ты, как автор, это вопрос принципиальный.

Но это всё с одной стороны. С другой — ТС вот нервничает и ждёт пакета (см. выше). Поэтому пакет, наверное, всё-таки пока буду делать из того, что есть. А если возникнут вопросы по допилингу программы — вернёмся к этому разговору.

hobbit ★★★★★
()
Ответ на: комментарий от chukcha

Впрочем, можно сделать и как настраиваемый юзером параметр.

Мне вот тоже показалось, что сделать настраиваемым — это логично. Впрочем… Я вот там в исходниках нашёл синтез русского текста по количеству дней: если меньше 4, программа пишет «дня», если больше — «дней». Очевидно, если допускать, что дней может быть 21 и более, этот алгоритм ломается, и его надо править. (А сейчас ещё набегут местные радикал-глобалисты и начнут кричать, что настройку вывода, привязанную к какому-то языку, вообще делать недопустимо, особенно если этот язык не английский.)

Поработать над этим вопросом (способ решения будет зависеть от того, что автор решит по переводам), или собирать из того, что есть?

Если день недели («Понедельник», «Вторник» и т.д.) по числам месяца, то лично мне этот дубликат совершенно не нужен, поскольку он и так есть в часах в трее.

Ну тут можно поспорить, то, что не нужно одному, пригодится другому. Тем более, времена сейчас суровые, в некоторых DE/WM понятия трея вообще может не быть. :)

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Например, у тебя там есть сложная склейка строк и QString::number() там, где можно было сделать шаблонную строку и QString::arg(), намного компактнее было бы.

Если ты про это

QString st = tr("Сегодня ") + fs.replace(sDate, "").trimmed() + " (" + QString::number(iy) + tr(" годовщина") + ")";

то, с моей точки зрения, так гораздо нагляднее, чем QString::arg(). Исторически сложилось, что программировать я начал на бейсике, и конкатенацию строк гораздо лучше воспринимаю через +, чем сишный printf. Так что здесь чисто моё восприятие.

Что касается языка. Стоит ли этим заниматься? На репозиторий я не замахиваюсь: кому нужна эта программа? Полутора анонимусам, причём русскоязычным. Это же замена BIRTHDAY! millennium. Там даже кодировка CP1251. Все остальные успешно освоили cron. Так что, ИМХО, заморачиваться не стоит.

tiinn ★★★★★
()
Ответ на: комментарий от hobbit

Мне вот тоже показалось, что сделать настраиваемым — это логично.

Сделаем!

Я вот там в исходниках нашёл синтез русского текста по количеству дней: если меньше 4, программа пишет «дня», если больше — «дней». Очевидно, если допускать, что дней может быть 21 и более, этот алгоритм ломается, и его надо править.

Значит, буду править

А сейчас ещё набегут местные радикал-глобалисты и начнут кричать, что настройку вывода, привязанную к какому-то языку, вообще делать недопустимо, особенно если этот язык не английский

Ага, упуская из вида, что, с вероятностью 99.9% эта программа будет использована только русскоязычными пользователями.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

На репозиторий я не замахиваюсь: кому нужна эта программа? Полутора анонимусам, причём русскоязычным. Это же замена BIRTHDAY! millennium. Там даже кодировка CP1251.

Ну вот тут я бы отделил мух от котлет. Да получается, что автор BIRTHDAY! millennium заточил своё творение только на русскоязычных, а ты, в том числе для совместимости с его файлами, воспроизвёл особенности его программы.

Но из этого не следует, что программа с аналогичной киллер-фичей (показывать события заранее, за несколько дней) не пригодилась бы носителям других языков. И с тем, что «Все остальные успешно освоили cron» я бы поспорил, сейчас линукс успешно осваивают люди, не склонные к залезанию в командную строку. Сами дистрибутивы линукса такую возможность дают, вот прикладной софт — не всегда.

Но твою позицию я понял, и тебе как автору виднее. Пока буду собирать пакет из того, что есть, постараюсь сделать это сегодня вечером. А там видно будет.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

С другой — ТС вот нервничает и ждёт пакета

Я не просто нервничаю - я ужасно переживаю, чтобы вы, авторы, так успешно начавшие развивать проект, не утратили к нему интерес и на забросили его.
Так ведь, к сожалению, бывает.

Ну тут можно поспорить, то, что не нужно одному, пригодится другому.

Разумеется. Я высказался о не особой нужности Календаря только потому, чтобы упростить вам задачу.
А так, конечно, на ваше усмотрение.

На репозиторий я не замахиваюсь: кому нужна эта программа? Полутора анонимусам, причём русскоязычным.

Не скажите. В этих напоминалках за 15 лет я уже стал просто гуру, и могу утверждать, что ни одна из них не построена на этом принципе, как эта.
И сколько не пытался привыкнуть к тем, которые работают по тривиальному принципу аля-крон, ни одна не прижилась из-за своей непрактичности, точнее говоря - бесполезности. Всё не то, кроме этой.
Мне банально лень расписывать их разницу для тех господ, которые напирают на кроноподобные напоминалки, тем более спорить с ними и что-то доказывать. Захотят - сами разберутся.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

На репозиторий я не замахиваюсь: кому нужна эта программа? Полутора анонимусам, причём русскоязычным.

Не скажите. В этих напоминалках за 15 лет я уже стал просто гуру, и могу утверждать, что ни одна из них не построена на этом принципе, как эта.

Логика так и прёт.

Benis
()
Ответ на: комментарий от Benis

Здравствуйте, Витька … Где пропадали? Как там ваш диплом на Джурии?

Владимир

anonymous
()
Ответ на: комментарий от chukcha

В данном случае у него не троллинг, он просто не понял, что две фразы, на которые он отвечал, принадлежат разным людям: про полтора анонимуса — фраза автора программы, про 15 лет — твоя. Получается, что ты ценишь потенциал программы гораздо выше, чем её автор. В этом действительно есть определённый парадокс.

hobbit ★★★★★
()
Ответ на: комментарий от tiinn

@tiinn: Вчера чуть не собрал пакет, но упустил ещё 1 момент. Я хоть и буду собирать из того, что есть, но всё-таки хочу, чтобы файлы клались в нужные места: бинарник - в /usr/bin, переводы — в /usr/shared. Я тогда пропатчу программу в этой части, хорошо? Сейчас она переводы ищет прямо рядом с бинарником, что для пакета не очень хорошо.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Получается, что ты ценишь потенциал программы гораздо выше, чем её автор.

Именно!!! Потому что я из этих дикарей :=)

chukcha ★★★★★
() автор топика
Ответ на: комментарий от tiinn

А помимо переводов, есть ещё файлы с данными.

Как я понимаю, dates.txt со всякими Днями российской науки — константный файл, его можно закинуть в /usr/share. А events.txt, собственно дни рождения, пополняется пользователем, его лучше в хомяке держать, где программа сможет его править. Это если совсем по канону.

Второй вариант — закинуть оба эти файла в /usr/share. Программа проверяет, запущена ли она впервые. Если в /home файлы данных есть, она оставляет всё как есть и работает с существующими, если нет — копирует их туда из /usr/share (events.txt можно было бы не копировать, он индивидуален для каждого, но можно скопировать или сгенерировать образец из одной строчки, чтобы пользователь ориентировался, где будут дни рождения).

Как, думаешь, лучше? Оставлять dates.txt прямо в /usr/share и читать его оттуда или всё же для единообразия тоже в хомяк копировать?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Тот случай, когда unix way не делает лучше.

Первый вариант - по канону, но как-то ублюдочно, с точки зрения обычной логики. Иногда же даже dates.txt надо править, бывает, и гос. праздники появляются. /usr/share - последнее место, где я бы искал этот файл, с точки зрения пользователя.

Второй вариант - вроде, ОК, всё логично, НО! Вопрос возникает: а зачем тогда вообще эти файлы в /usr/share? Эдакий эталон, на всякий случай, а работаем мы всё равно с хомяком? Ну если только так. Размножение ненужных сущностей какое-то.

И, да,

можно скопировать или сгенерировать образец из одной строчки, чтобы пользователь ориентировался, где будут дни рождения

На гитхабе лежит events.txt с днюхами всяких знаменитостей - с этой целью.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Второй вариант - вроде, ОК, всё логично, НО! Вопрос возникает: а зачем тогда вообще эти файлы в /usr/share?

Затем, чтобы было откуда копировать. Вот создаётся новый пользователь. И всё, в хомяке у него голяк.

Кстати, в принципе, для этого есть /etc/skel. Можно при установке образцы кидать туда вместо /usr. Тогда при создании нового пользователя система скопирует файлы сама, а для основного юзера — проверка на первый запуск, как я написал выше.

Пойдёт такое? На мой взгляд, это наиболее стандартный путь с минимумом велосипедизма.

На гитхабе лежит events.txt с днюхами всяких знаменитостей - с этой целью.

Да, я понял. Только с днюхами знаменитостей одна небольшая проблемка — по умолчанию программа показывает события в пределах 14 дней, и с наибольшей вероятностью при том самом первом запуске пользователь увидит пустой список и даже не поймёт, чего ему там предлагали. У меня, кстати, так и получилось.

Тут два варианта. Либо днюх знаменитостей ввалить побольше, чтобы ВСЕ интервалы были не более 2 недель, либо… наоборот, не тащить никаких знаменитостей, а генерить при первом запуске день рождения условного Сергея Кузнецова, который будет, допустим, через 2 дня после генерации. Мне второй вариант нравится больше. :)

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Затем, чтобы было откуда копировать. Вот создаётся новый пользователь. И всё, в хомяке у него голяк.

В этом случае создаётся пустой файл. Ну, да, можно генерить день рождения условного Сергея Кузнецова.

Кстати, в принципе, для этого есть /etc/skel. Можно при установке образцы кидать туда вместо /usr

Да, ИМХО, это более правильно.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Второй вариант — закинуть оба эти файла в /usr/share
Кстати, в принципе, для этого есть /etc/skel

Уважаемые творцы, позвольте категорически возразить против этих двух и подобных им вариантов размещения юзерских данных.

Первое - всякие праздничные дни у каждого юзера могут быть разными.
Одному нужны науки, другому космонавтика, третьему религиозные праздники, четвертому рецепты приготовления шашлыков и т.д.
Поэтому каждый юзер обязательно будет формировать эти дни по своему разумению, добавляя нужное и исключая лишнее - утверждаю это исходя из опыта компании, в которой когда-то установил виндовый «BIRTHDAY! millennium».

Т.е. dates.txt - это аж ни разу не константные дни дни, и размещая их в /usr... или /etc.., вы лишаете юзеров возможности формировать индивидуальные списки этих дат.

Второе. Переустановка ОС.
Сами знаете, это весьма геморойное занятие, поскольку как ни старайся сохранить свои пользовательские данные, всякий раз что-то да забываешь, и потом рвешь волоса в разных местах.
Особенно, когда эти данные находятся в /usr..., /etc и прочих системных каталогах.

И совсем другое, когда все пользовательские данные и конфиги находятся в хомяке - тут уж ничего не забудешь!
Кстати, в дальнейшем это облегчит переход на AppImage.

В-общем, у меня к вам большая просьба - разместите, пожалуйста, все, кроме бинарника, в /home...

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Т.е. dates.txt - это аж ни разу не константные дни дни, и размещая их в /usr… или /etc.., вы лишаете юзеров возможности формировать индивидуальные списки этих дат.

Вы не совсем поняли. Мы пользователя ничего не лишаем. dates.txt - вполне возможно редактировать, штатным текстовым редактором.

В-общем, у меня к вам большая просьба - разместите, пожалуйста, все, кроме бинарника, в /home…

Оно там в конечном итоге и окажется. Вся наша дискуссия с @hobbit - о том, если в системе заводится новый пользователь.

Как вы правильно отметили,

Одному нужны науки, другому космонавтика, третьему религиозные праздники, четвертому рецепты приготовления шашлыков и т.д.

и имеет смысл новому пользователю подложить эталонный dates.txt - со всеми праздниками, чтобы он впоследствии выбрал себе нужное. Но откуда этот эталонный dates.txt взять? Ну, вот мы и придумали.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

В общем, решили. Рабочие (пользовательские, ценные) файлы — в /home, образцы (из которых делаются рабочие, если их нет) — в /etc/skel, где им в общем, и место…

hobbit ★★★★★
()
Ответ на: комментарий от chukcha

Да, интересовался. Играться с вайном не стал, а достойной замены за все это время так и не нашел, поэтому написал свой скрипт на баше с уведомлением в телеграм.

vanoc
()
Ответ на: комментарий от chukcha

@chukcha, я посыпаю пеплом голову, но пакета пока нет. Всё, что я успел — это проанализировать код, обсудить с @tiinn пути к файлам и сделать скрипт на 5 строчек для теневой сборки программы без IDE, который заслал автору в качестве ещё одного пуллреквеста. Ещё надо для программы написать логику по управлению этими самыми путями и скрипты для сборки собственно пакета.

Да, писать-то особо нечего. :( Был бы я молодой, здоровый и несемейный — всё это бы сделал неспешно за 2 вечера. А тут то одно, то второе, и вот голова не варит, и пора спать. И в ближайшие 5-7 дней я к TheirBirthday, видимо, не вернусь, подоспели более авральные дела.

Ещё раз извиняюсь, планирую к этому делу вернуться, как только смогу.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.