psilogic: (Default)
psilogic ([personal profile] psilogic) wrote2010-07-30 01:08 am
Entry tags:

Bard 0.1.3

Долгими зимними вечерами продолжаю ваять "Bard". Готова очередная бета: версия 0.1.3.

Учтены многие пожелания и нарекания френдов. Те, что еще не учтены, можете не повторять, у меня все записано и распланировано до версии 0.2. Но, если найдете новые баги - очень хорошо.

Эта версия - серьезный шаг, поскольку полностью переработано "ядро" - хранение промежуточных редактируемых данных. Переработка позволила сделать операции Undo/Redo практически мгновенными, понаделать легко и просто "preview" - но ценой отказа от немедленного save после каждой операции. Как следствие, autosave и autobackup убраны, теперь работа с файлом выглядит совершенно "стандартно": можно закрыть без сохранения и т.п.

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

На очереди две большие проблемы. Первая - приручение Wine. Вторая - возможность работать с плагинами VST (нашел документацию, буду делать). Пожелайте мне удачи - наступает трудный лично для меня этап: мне всегда было проще и приятнее писать своё, чем разбираться в чужих интерфейсах и прикручивать их.

Что касается испытаний для Wine, то пока все плохо. Первая попытка поставить убунту провалилась - инсталлятор линукса сначала показал 731% прогресса исполнения, а потом заявил, что отсутствует root file system или что-то в этом роде и предложил исправить дело в "partitioning menu", которое вызвать никак нельзя. На этом все и зависло. Я воспользовался инсталлятором убунты поверх винды (wubi.exe) и сказал ставить ее на свободный диск F. Там NTFS, подозреваю, что проблема в этом - хотя я надеялся, что инсталляшка по крайней мере сформатирует тот диск. Ан нет. Интересно, FAT32 ее устроит?

- Полный список изменений на странице загрузки
- Прямая ссылка для скачивания инсталлятора (11 Мб)
- Список возможностей редактора

[personal profile] no1u1w1w6c 2010-08-04 05:00 pm (UTC)(link)
>в студии есть свой valrind :)
к сожалению, нет. то ублюдство, что там дают, даже на самокат не тянет, а ты его с «ламборджини» сравниваешь.

>основной плюс отладчика с GUI — минимальное время для ловли багов
неа. основной плюс отладчика с гуями — это помощь в имитации работы.
— чо делаешь?
— да вот, отлаживаю.
— а, ну-ну, молодец, работай дальше.

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

[identity profile] psilogic.livejournal.com 2010-08-04 05:13 pm (UTC)(link)
[ то ублюдство, что там дают, даже на самокат не тянет, а ты его с «ламборджини» сравниваешь. ]

неужели у "ламборджини" есть удобный GUI?
(кажется, я знаю ответ...)

[ а время, затраченое на поиск ошибок, только увеличивается ]

докажи =)

[personal profile] no1u1w1w6c 2010-08-04 06:06 pm (UTC)(link)
у «ламборджини» есть всё. потому что она — «ламборджини». %-)

>докажи
интересно, как ты это представляешь? %-)

[identity profile] psilogic.livejournal.com 2010-08-04 05:46 pm (UTC)(link)
по поводу отладчиков, кстати, вспоминается эпический срач у зомбиватора :)

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

а про тупое тыцанье по брякпоинтам - это из разряда "зелен виноград" в басне Крылова :)

[personal profile] no1u1w1w6c 2010-08-04 06:11 pm (UTC)(link)
да нихрена оно не экономит. я ж тоже уже не первый десяток лет софт ваяю, и к идее «отладчик нахер не нужен» пришёл не сразу. отладчик — в традиционном понимании — это инструмент тупой обезьяны: обезьяна сидит и тупо пялится в долбаггер, ожидая Божественного Вдохновения. это заместо чтобы:
а) сразу делать много вкусных логов в софте (очень полезная привычка, кстати сказать; вообще, любой софт сложнее «привета» должен, ящитаю, иметь командную консоль a-la Quake, куда активно и срать);
б) при помощи оных логов быстро локализовать место ошибки и прибить оную путём чтения-правки исходника.

вот честно: сколько у меня было ошибок — отладчик мне помогал только наиболее продуктивно просрать время, тупо трассируя говнокод. но отучался я от него с матом, конечно, ибо пялиться в отладчик очень увлекательное занятие (как и многая другая бессмыслица).

[identity profile] psilogic.livejournal.com 2010-08-04 07:03 pm (UTC)(link)
Ты берешь худший случай и доказываешь, что он худший :) Трассировка - самое бестолковое использование отладчика, какое только есть. Для этого и GUI не надо.

А вот, скажем, отлов исключения ДО момента его выброса без перекомпиляции. Или edit-and-continue для ситуации, которую трудно воспроизвести. Или отлов момента переполнения буфера непонятно кем и непонятно, когда - после того, как тот же отладчик уведомил о переполнении и сказал ГДЕ.

[personal profile] no1u1w1w6c 2010-08-04 07:17 pm (UTC)(link)
>А вот, скажем, отлов исключения ДО момента его выброса без перекомпиляции
как я давно говорю, исключения не надо отлавливать, их надо логировать и сразу падать нахуй. натурально, если софтина ведёт аккуратный лог, то по нему вполне себе понятно, что произошло. отладчик снова не нужен.

>Или edit-and-continue для ситуации, которую трудно воспроизвести
а для этого у меня есть командная консоль и встроеный скриптовый язык. на котором я и стараюсь писать максимальную часть софта. опять отладчик не нужен.

>Или отлов момента переполнения буфера непонятно кем и непонятно, когда — после
>того, как тот же отладчик уведомил о переполнении и сказал ГДЕ.

как же вам тяжко-то без valgrind'а. а у нас этим занимается именно он. в том числе он умеет сообщать и про использование непроиниченых переменных (с чем компилятор справляется далеко не всегда), и про то, куда память проебалась и где она была выделена, и строить профили cache miss, и ещё over 9000 гитик. и всё это, заметим, без перекомпиляции или линковки специальных «отладочных» библиотек. достаточно догадаться не стрипать символы — и всё будет в лучшем виде. и снова — да — отладчик не нужен.

отладчик — это такой инструмент, который издалека кажется полезным, а вблизи оказывается гибридом ёжика и бензопилы: смешно, забавно, бесполезно и неудобно.

[identity profile] psilogic.livejournal.com 2010-08-04 07:26 pm (UTC)(link)
[ как я давно говорю, исключения не надо отлавливать, их надо логировать и сразу падать нахуй. ]

зачем нахуй? хую больно =) ты так весь код себе "излоггируешь" - получатся та же самая отладка по брекпоинтам, только через жопу

[ а для этого у меня есть командная консоль и встроеный скриптовый язык. на котором я и стараюсь писать максимальную часть софта. опять отладчик не нужен. ]

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

[ как же вам тяжко-то без valgrind'а. а у нас этим занимается именно он. ]

"у нас" этим отладчик студии занимается - "именно он!" (C)

ежиком тоже надо уметь пользоваться :) а если в молодости был травмирующий опыт ... тогда канэшна, "все бабы бляди!" :)

[personal profile] no1u1w1w6c 2010-08-04 07:46 pm (UTC)(link)
>ты так весь код себе "излоггируешь" — получатся та же самая отладка по
>брекпоинтам, только через жопу

не весь, а ключевые места. их не так много, на самом деле. у тебя виндовз головного мозга (не в обиду): там не принято, чтобы программы рассказывали военные секреты. а у меня юникс головного мозга: я считаю, что программа должна срать в логи как можно больше. причём юникс головного мозга у меня случился задолго до того, как я первую *nix-систему увидел. %-) отчасти это наследие DOS, где мелкий жоп часто приводил к весёлому ребуту.

>"у нас" этим отладчик студии занимается — "именно он!"
это опять ВГМ. у больных ЮГМ мнение другое: один инструмент для одной задачи. поэтому тот же valgrind состоит из нескольких программ, например.

кстати: не подскажешь, как мне у студии добыть хотя бы инфу по cache misses? нененене, покупать 3rd-party тулзы не предлагай, ты сказал, что оно это умеет.

[identity profile] psilogic.livejournal.com 2010-08-04 08:23 pm (UTC)(link)
ты про какие еще cache misses?

когда в 1 инструменте 10 функций - это значит, что ты 10 раз не отвлекаешься на то, чтобы лезть я ящик с инструментами. на 11-й раз таки лезешь, но 10 минут - сэкономил.

[personal profile] no1u1w1w6c 2010-08-04 08:33 pm (UTC)(link)
>ты про какие еще cache misses?
а про те самые, когда программа промахивается мимо процессорного кэша. valgrind мне это покажет и расскажет, и я пойму, что надо делать с данными и прочей ерундой (и кодом тоже, хихикс), чтобы промахивалось оно реже. такой себе кусочек профайлера.

>когда в 1 инструменте 10 функций — это значит…
…что он удобен так же, как молоток, привареный к микроскопу. а также то, что его нельзя разломать на элементарные инструменты и построить всё заново, но чуть-чуть по другому. фича никсового «один инструмент для одного действия» именно в том, что инструменты можно соединять при необходимости, получая такой себе «метаинструмент». например, для того же gdb есть kdbg — гуя. всё, что они делают — рулят gdb. но выглядит — как гуёвый дебаггер. или для valgrind — kcachegrind, визуализатор, потому что сам valgrind не умеет ни хрена рисовать (да и не должен). а если бы всё было напихано в gdb, пришлось бы делать одни большие универсальные гуя, которые и сложнее, и памяти жрут больше.

[identity profile] psilogic.livejournal.com 2010-08-04 08:52 pm (UTC)(link)
[ а про те самые, когда программа промахивается мимо процессорного кэша ]

а, хз, никогда такого не попадалось. да и на хуя непонятно :)

[ …что он удобен так же, как молоток, привареный к микроскопу. ]

нет, в том то и дело. до такой степени аналогия не работает. когда брекпоинт ставится прямо на текст сорца - это совмещение отладчика и редактора. но это удобнее, чем просмотр сорца в самом крутом редакторе а потом ввод имени функции в самом крутом отладчике.

в юниксах роль таких инструментов играют всякие bash-ы/шеллы - на них висит миллион разных разномастных функций

[ но выглядит — как гуёвый дебаггер ]

опечатка: хуёвый дебаггер :)

[personal profile] no1u1w1w6c 2010-08-05 07:42 am (UTC)(link)
>да и на хуя непонятно
чтобы структуры данных, например, покрасивше уложить. ибо кэшэвая память шустрей. и, поскольку ты сказал, что у вас этим занимается студия, то моя хотеть знать, как там это сделать.

вопрос номер два будет — как мне от студии получить список потеряной памяти (с местом, где конкретно выделили и разворотом вызовов) и такой же список мест, где программа читала из неинициализированной памяти (то бишь, умудрилась взять значение непроиниченой переменной). только костыли с линковкой каких-то отладочных библиотек и прочего не предлагать. в релиз-версии софта, пожалуйста.

>но это удобнее, чем просмотр сорца в самом крутом редакторе а потом ввод имени
>функции в самом крутом отладчике.

достаточно спорное утверждение. ну и, конечно, Emacs никто не отменял.

>всякие bash-ы/шеллы — на них висит миллион разных разномастных функций
you are terribly wrong. видишь ли, у нас очень дешёвый запуск процесса. поэтому шеллу достаточно уметь примитивнейший язык -- условие там, цикл, переменные, запуск процесса. всё остальное делается как раз внешними командами.

bash, конечно, тот ещё монстрик, но это гнутая болезнь. в оригинале sh (да и сейчас такие есть) даже математики ни фига не умел, зато имелась внешняя команда expr. так же, как внешняя команда [ (да-да, скобочка), которая умела вычислять всякие условия (а sh не умел). это вот и называется unix way, тащемта.

>опечатка: хуёвый дебаггер
это характеристика абсолютно любого долбагера. %-)

(no subject)

[identity profile] psilogic.livejournal.com - 2010-08-05 10:16 (UTC) - Expand

(no subject)

[personal profile] no1u1w1w6c - 2010-08-05 10:32 (UTC) - Expand

(no subject)

[identity profile] psilogic.livejournal.com - 2010-08-05 11:08 (UTC) - Expand

(no subject)

[personal profile] no1u1w1w6c - 2010-08-05 11:29 (UTC) - Expand

(no subject)

[identity profile] psilogic.livejournal.com - 2010-08-05 11:42 (UTC) - Expand

(no subject)

[personal profile] no1u1w1w6c - 2010-08-05 12:01 (UTC) - Expand

(no subject)

[identity profile] psilogic.livejournal.com - 2010-08-05 13:02 (UTC) - Expand

(no subject)

[personal profile] no1u1w1w6c - 2010-08-05 13:16 (UTC) - Expand

(no subject)

[identity profile] psilogic.livejournal.com - 2010-08-05 15:53 (UTC) - Expand

(no subject)

[personal profile] no1u1w1w6c - 2010-08-05 16:08 (UTC) - Expand

[personal profile] no1u1w1w6c 2010-08-04 07:48 pm (UTC)(link)
ах, да, забыл:

>это надо писать консоль, скриптовый йэзыг...
ровно один раз. и потом спокойно таскать из проекта в проект. как я и делаю, тащемта.

[personal profile] no1u1w1w6c 2010-08-04 07:18 pm (UTC)(link)
ах, да, чуть не забыл: в настоящих ОС core dump — возможность штатная. мне кажется, иметь слепок упавшей программы намного удобней, чем пыриццо в отладчик, зная, что она сейчас всенепременно наебнётся.

[identity profile] psilogic.livejournal.com 2010-08-04 07:28 pm (UTC)(link)
ну ты же наверное фкурсе что в винде есть своя разновидность коредампа - подъем отладчика на ассерт или падение

которая не засирает диск мусором :)

[personal profile] no1u1w1w6c 2010-08-04 07:37 pm (UTC)(link)
ага. при условии, что оный отладчик там ваще есть. в нормальной же ОС я могу получить от человека корку и спокойно её посмотреть у себя. и человеку при этом не надо ставить какие-то непонятные инструменты, всё уже есть из коробки.

проще говоря: в игрозапускалке тупо на одну возможность меньше. причём на возможность удобную: кородампов мне в ней охуеть, как не хватает.

[identity profile] psilogic.livejournal.com 2010-08-04 07:05 pm (UTC)(link)
любые логи - это трата времени на их подготовку. отладчик не запрещает делать логи, но, блЯгодаря ему, логи делаются только когда реально необходимы.

и, кстати, логи в окно отладчика - очень полезная штука :)

[personal profile] no1u1w1w6c 2010-08-04 07:11 pm (UTC)(link)
>любые логи — это трата времени на их подготовку
а любой код — это трата времени на его набор, ага.

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

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

[identity profile] psilogic.livejournal.com 2010-08-04 07:15 pm (UTC)(link)
[ а любой код — это трата времени на его набор, ага ]

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

[ что забавно — я с годами пришёл ко мнению, что логи необходимы всегда. ]

дык, если без отладчика жить - куда деваться? только аналогами студенческих printf-ов восполнять пробелы, так сказать :)

[ особенно когда программа работает хуй знает где, да ]

особенно когда программа работает чуть ли не у меня на хуе =)

[personal profile] no1u1w1w6c 2010-08-04 07:22 pm (UTC)(link)
>а логи — с каким-то другим методом для той же цели.
сначала полезно цель определить. как я написал, я не рассматриваю логи как «отладочный инструмент».

>студенческих printf
отчего же «студенческих»? думаешь, если у тебя watch window, это не тот же самый printf? да тот же самый, тащемта.

хотя да — я, конечно, использую gdb. как post mortem debugger.

[identity profile] psilogic.livejournal.com 2010-08-04 07:30 pm (UTC)(link)
[ сначала полезно цель определить. как я написал, я не рассматриваю логи как «отладочный инструмент». ]

ну мы же рассматриваем замену отладчику - так? смотрим на кору в gdb, смотрим на аналогичную кору в студии - в студии в 10 раз меньше движений пальцами надо сделать, чтбы получить ту же инфу

[personal profile] no1u1w1w6c 2010-08-04 07:39 pm (UTC)(link)
>ну мы же рассматриваем замену отладчику — так?
ничего подобного. мы обсуждаем необходимость отладчика. если получится, что он не нужен — тогда глупо же будет заменять что-то ненужное, нес па?

>смотрим на кору в gdb, смотрим на аналогичную кору в студии - в студии в 10 раз меньше
>движений пальцами надо сделать, чтбы получить ту же инфу

да? O_O

а впрочем, да: там надо мышой возить. лично мне удобней набрать gdb

[identity profile] psilogic.livejournal.com 2010-08-04 08:19 pm (UTC)(link)
[ ничего подобного. мы обсуждаем необходимость отладчика ]

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

[ да? O_O ]

да-а :) стек уже виден сразу. один клик - и показывается код, относящийся к этому уровню стека. в gdb понадобится 10 тыканий в клавиши, чтобы добраться до сорцов.

в gdb ты пишешь: print ... - а тут просто наводишь мышь на нужную переменную, всплывает ее значение - одно движение

чисто эргономически выгодно получается

[personal profile] no1u1w1w6c 2010-08-04 08:26 pm (UTC)(link)
>в конечном счете вообще ничего не нужно
натурально. однако же я веду к тому, что некоторые инструменты, предназначеные жизнь упрощать, как раз её усложняют. и поэтому их надо не заменять, а просто выкидывать.

>наводишь мышь
вот это и есть офигенно неудобно, как по мне. надо рукой тащиться до мыши, елозить, потом назад… а в gdb есть автодополнение. pr . в итоге, как не смешно, получается быстрее. по крайней мере, у меня. и целиться никуда не надо.

я, в принципе, вообще мышь стараюсь по минимуму использовать, она только темп сбивает.

(no subject)

[identity profile] psilogic.livejournal.com - 2010-08-04 20:30 (UTC) - Expand

(no subject)

[personal profile] no1u1w1w6c - 2010-08-04 20:35 (UTC) - Expand

(no subject)

[identity profile] psilogic.livejournal.com - 2010-08-04 20:53 (UTC) - Expand

(no subject)

[personal profile] no1u1w1w6c - 2010-08-05 07:31 (UTC) - Expand