← All posts tagged programming

есть 2 парсера на спирите. Один работает с >= 1.46, второй < 1.46
Стоит ли сделать в коде #ifdef для каждого парсера по версии или оставить старый парсер, а потом, когда релизнется 1.46, если не забуду, удалить старый парсер и вставить новый?

мне пришла идея сделать пол линь аналог программы Mars Notebook (http://www.mars-soft.net/rus/notebook.htm). На C++ с использованием Qt. Я готов выслушать аргументированную критику по моей идее и буду рад тем, кто согласится мне помочь.
Сразу скажу, что за комментарии в стиле: "не нужно", или в стиле: "не нужно: используй емакс + что-то + что-то" буду сразу блеклистить. Ваше мнение на счет того, чем мне лучше пользоваться меня не интересует ни грамма.

как обратиться в std::find_if к значению текущей итерации? Поясняю:
QMap<IrcAccount*, QHash<QString, IrcServer*> >::iterator iter;
iter = std::find_if (Account2Server_.begin (), Account2Server_.end (), boost::bind (&IrcServerManager::ServerExists, this, <здесь нужно значение key текущего итератора>, <тут значение value текущего итератора>, key));

ПРобовал через boost::bind вот так pastebin.com . Ошибка выдается. Пробовал заменить все IrcServer_ptr — это IrcServer* обернутый в shared_ptr — на IrcServer*. Ошибка осталась точно такая же.

\4. Главная цель отпуска — релизнуть Acetamide не достигнута. Я смотрю на себя как на неосилятора. Так я растрачу послднее самоуважение к себе, которого и так практически не осталось :-(

Натолкнулся на просторах жесткого на скаченную в самом начале пиления личкрафтов у дедфуда книжку — ФП (Функциональное программировани). Решил посмотреть...Блин...интересная да еще и затягивает. Неужто я теперь тоже захочу упопроться функциональщиной. \4

Вот смотрю на код, на который я потратил всю прошлую неделю и понимаю, что если я его не перепишу сейчас, то заебусь потом подгонять под новую часть, а сейчас заебусь лепить костыли, что бы работала новая часть...Надо переписывать...С нуля...как раз нахуй убрать все ненужное, а то сейчас там пиздец — даже я не разбираюсь что и где

Приятно порадовало, что при работе с кутешными классами, при записи параметров он автоматом выводит на верх нужные. Например:
QString str;
str.spli (' '.<тут жмем Alt+Space> и самые первые в списке автодополнений это QString::KeepEmptyParts и QString::SkipEmptyParts. Приятны даже такие мелочи при разработке

Вот по личкрафтам я могу отслеживать свое развитие в плане программирования на Qt. Начинал с таких простых вещей как реализация full screen. Потом был импорт из FireFox закладок, истории и rss. Потом я написал свой первый плагин, используя наработки @zetoke, Kinotify. Далее был маленький плагин для Poshuku для работы с сервисом хранения закладок (ReadItLater (www.readitlaterlist.com)) и сделал этот плагин так, что не составляет особой сложности добавить свой сервис. Этот плагин я полностью написал сам. Параллельно влез даже немного во внутренности личкрафтов — в XmlSeettingsManager — добавил свой хендлер для QListView. И теперь я пошел еще дальше — теперь пишу плагин для Azoth: Acetamide — это будет irc-клиент. И в планах полноценный плагин для работы с web-блогами а-ля livejournal.com. Очень приятно смотреть на dev.leechcraft.org таски решенные тобой. Повышает ЧСВ =). А вообще — это классно на примере одного проекта видеть как ты развиваешься. Видеть как меньше приходится переписывать после проверки дедфудом. Это офигенно. Да. Вот так. Жаль только, что когда ты повышаешь свой уровень и начинаешь работать над более-менее серьезными вещами, то уже нету времени на исправление мелких багов или запиливание мелких фич. И очень не хватает таких каким был я : еще не погрузившимся в Qt очень глубоко и которому были даже простые таски сложны и интересны. Было бы вообще годно, если бы личкрафты пилило еще парочку человек с разным уровнем. Что бы были высокого уровня — для организации взаимодействия с xorg. Низкого — для мелких задач, типа добавления контекстного меню в Tab++ и среднего — что бы реализоваывать плагины, плагины для плагинов ии плагины для плагинов для плагинов.

Рано или поздно каждый программист понимает, что каждый день он занимается только тем, что применяет уже ранее полученные знания. Он перестает развиваться, а стоит на одном и том же уровне. Никто и никогда в проекте, который он делает на заказ, не будет экспериментировать: у нас с вами нету шанса на ошибку и времени на попытки. А как же тогда изучать что-то новое?
У новичков здесь возникает в чем-то похожая проблема: изучать языки и библиотеки по сухой документации, какой бы она прекрасной ни была, после некоторого этапа уже не так здорово и увлекательно, как при написании собственного проекта, желательно, хоть как-то полезного и используемого в реальной жизни.
(продолжение в комментах)

Есть репозитории на гитхабе, полученный путем форка личкрафтов. Есть домашний комп. Есть рабочий комп. К домашнему есть доступ по ssh. Часто дома что-то находится в процессе разработки и не годно для коммита. На работе хочу это доделать и потом пушнуть. Либо на работе что-то не доделал, надо пушнуть, что бы из дома забрать и доделать. Собственно нужен совет как это организовать грамотно. Не хочу пушить в основную ветку, потому что в ней тогда получается много говно-коммитов, которым там вообще не место. Как вариант рассматривается схема следующая: master branch, devel branch, transfer branch. devel используется для текущей разработки. transfer — что бы переносить говнокоммиты из дома на работу. в master попадают коммиты, которые проверены лиддевом. тоесть чистый и правильный кот. Жду аргументов и советов как организовать. ВСе должно быть через инет — никаких флешек и прочее

как порой бесишься, когда не получается реализовать что-то. Обещаешь бросить это дело, появляется желание уебать ноут об стену. И как это все оплачивается сторицей когда ты все таки справляешься с проблемой. Теперь тебе кажется, что тебе все по плечу...до первой проблемы. И опять все по новой-вот как выглядит программирование, имхо

Жуйк, почему QTabWidget tabwidget = wnd->findChild<QTabWidget> ("MainTabWidget_"); все время выдает NULL, хотя на форме объект есть. Пробовал даже LeechCraft::TabWidget tabwidget = wnd->findChild<LeechCraft::TabWidget> ("MainTabWidget_"); , потому что таб виджет наследован от QTabWidget но толку никакого. Все равно NULL.