tag:blogger.com,1999:blog-46146518345617041682023-11-16T07:19:49.427-08:00Программирование в среде BlackBoxUnknownnoreply@blogger.comBlogger18125tag:blogger.com,1999:blog-4614651834561704168.post-87520389281560184552014-12-12T09:13:00.002-08:002014-12-12T09:13:41.513-08:00Проблема отсечения фреймов<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
И осталось-то всего ничего, воткнуть меню и радоваться работе новой оконной системы. Но, как говорится, джек-пот подкрался незаметно. Конечно, незаметность тут условная, причины затыка были очевидны с самого начала пиления буфера на OpenGL, только не было повода хорошенько разобраться с проблемой.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Итак, вот она, матрёшка. Тёмное отображение (оно ещё с зелёным перекрестьем) встроено в серое (синее перекрестье) со сдвигом, а серое врезано в белое (красный периметр) без сдвига. И результат отсечения на эталонном Блэкбоксе выглядит так, как и должен выглядеть:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD1YQ7beLE_22rbmru2k1ivBSKi8O11bPAzfmLf38eBZjF7g5XQ58PZ5wOmf38TDhoabniidtvAU_G0ZZIigzVzqeU3hwBDV-hgeCytwA4vGusKxCm7nTv_6mXPBVcXJYJphgo0ToIHAY/s1600/cut_winapi.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD1YQ7beLE_22rbmru2k1ivBSKi8O11bPAzfmLf38eBZjF7g5XQ58PZ5wOmf38TDhoabniidtvAU_G0ZZIigzVzqeU3hwBDV-hgeCytwA4vGusKxCm7nTv_6mXPBVcXJYJphgo0ToIHAY/s1600/cut_winapi.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Фрейм серого отображения отсекает нарисованное в тёмном автоматическим образом.</div>
<br />
А вот та же самая матрёшка на SDL-хосте. Как видим, отсечения не произошло и невидимые линии тёмного отображения отлично видны:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB-mhNuecYbhx5X5svJoAOK4nN7jEshhVZAkdRTlLxwyuXKGDWXHX7WwJFsyZiGEGAS72MW-3rs19Pv6G2UR698PHqLVT8NrCd2g0M9mgsWUI7QF5q32hkZrbyt1w6BE7cBbb2B0VOtKk/s1600/cut_sdl.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB-mhNuecYbhx5X5svJoAOK4nN7jEshhVZAkdRTlLxwyuXKGDWXHX7WwJFsyZiGEGAS72MW-3rs19Pv6G2UR698PHqLVT8NrCd2g0M9mgsWUI7QF5q32hkZrbyt1w6BE7cBbb2B0VOtKk/s1600/cut_sdl.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Фон тёмного отображения рисуется на системном уровне модуля Views, поэтому заполнение тёмным цветом делается автоматически и только в видимой части тёмного фрейма. А вот перекрестье рисуется клиентским компонентом, и вот тут уже должны работать платформенные механизмы, а они пока не работают :(</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Так что меню втыкать рано, надо сперва победить отсечение.</div>
<br /></div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4614651834561704168.post-52839407707191838472014-11-30T07:55:00.001-08:002014-11-30T12:57:10.843-08:00Оконный менеджер<div dir="ltr" style="text-align: left;" trbidi="on">
Прототип оконного менеджера задышал. Фишка в том, что он делается полностью средствами самого Блэкбокса. То есть, используются отображения - Views.View.<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6LZW_CcsIcOEQ6DMULLDoAr95UUe-jxo3YPb3X5WpMOtWVXz1Pv1B-JsvAhiwCsa0FqbNXvIGg3QAQLwEGCRtszHnvGKdy2Uj5Z7OJQ66ADeEcC3oiJllRiAiSxzp3EueG_6lP7IXV_M/s1600/window_proto_2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6LZW_CcsIcOEQ6DMULLDoAr95UUe-jxo3YPb3X5WpMOtWVXz1Pv1B-JsvAhiwCsa0FqbNXvIGg3QAQLwEGCRtszHnvGKdy2Uj5Z7OJQ66ADeEcC3oiJllRiAiSxzp3EueG_6lP7IXV_M/s1600/window_proto_2.PNG" height="213" width="320"></a></div>
Собственно, ничего военного тут нет. Главное, аккуратность и внимание к деталям. Тогда результат будет удобен в работе. На видео заметно, как меняется цвет бордюра, как работает изменение размеров, как окна передвигаются мышой:<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/NEoHAy1e9NA?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: left;">
Так что, движемся. Всё-таки решение отказаться от многооконности SDL было правильным. Чем мучаться с ограничениями SDL, так лучше заиметь полностью контролируемые окна. А ведь этот гуй можно будет втереть даже в игровой движок. Двойная выгода!</div>
<br></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-21752180178330327592014-11-12T07:21:00.001-08:002014-11-12T11:46:11.750-08:00Новый этап<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr">
Проект перешёл на новый этап. Достигнуты новые возможности, появились новые участники.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Итак, что сделано. Новый хост успешно открывает документы в окнах, текстовая подсистема спокойно рендерит текст, есть обработка шорткатов, перетаскивание, копипаст.</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibSW2mU2Irw1TOlwDbmfqYz4kBK162oD_2RV75bF9fGAD0YQDOmoSWTPjpSVwdeyuC6V9IXU_yp1AvLmjINpV_jY8amkcbOkGTQpGEuvX2Wq0AY422c6ubQ5k2zfMzxbgp-4f_iXSfDYM/s1600/bb_sdl_new_stage.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibSW2mU2Irw1TOlwDbmfqYz4kBK162oD_2RV75bF9fGAD0YQDOmoSWTPjpSVwdeyuC6V9IXU_yp1AvLmjINpV_jY8amkcbOkGTQpGEuvX2Wq0AY422c6ubQ5k2zfMzxbgp-4f_iXSfDYM/s320/bb_sdl_new_stage.PNG" width="320" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Главное меню открывается как отдельное отображение в окне, подменю в отдельном окне, но здесь-то и произошёл затык. SDL в качестве менеджера окон не годится в силу урезанной поддержки оконных возможностей (что, в общем-то, правильно, ведь задача небольшого SDL не в красивой и богатой оконной функциональности). Поэтому решено делать свою оконную подсистему.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Ну а репозиторий проекта переехал на <a href="http://gitlab.molpit.com/Ikuzmitsky/blackbox-sdl" target="_blank">gitlab.molpit.com</a>, там же открыт <a href="http://redmine.molpit.com/projects/blackbox-sdl" target="_blank">баг-трекер</a>.</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-53930913748711268972014-04-22T05:42:00.002-07:002014-04-22T05:44:45.533-07:00SDL + OpenGL. Начало<div dir="ltr" style="text-align: left;" trbidi="on">
Наша компонентная привязка к SDL получила возможность рисовать на контексте OpenGL. А это значит, что скоро SDL-хост сможет, наконец, выполнять весь контракт по рисованию на порте.<br />
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC1a51G9q8Mbgcs3Nd9nGgZ5v-0aKfRPRNu9hdSu55FFZ1xpGuU5V_V8uAxHBw70bSg1YQRTO1U4xn6ThaNuRKE5DGmNoiFau2LO6HcRHWF7rvbcvMIA-00rVj5vHzL1PchHNDWXrqu3w/s1600/bbsdl_ogl_test0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC1a51G9q8Mbgcs3Nd9nGgZ5v-0aKfRPRNu9hdSu55FFZ1xpGuU5V_V8uAxHBw70bSg1YQRTO1U4xn6ThaNuRKE5DGmNoiFau2LO6HcRHWF7rvbcvMIA-00rVj5vHzL1PchHNDWXrqu3w/s1600/bbsdl_ogl_test0.PNG" height="232" width="400" /></a></div>
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-6746953555263168082014-04-14T07:47:00.002-07:002014-04-14T07:47:16.637-07:00Проблема выбора интерфейса аппаратного ускорения<div dir="ltr" style="text-align: left;" trbidi="on">
Наш новый SDL-хост начал работу с команды Views.OpenView, которая открывает отображение в новом окне.<br />
На данный момент наше отображение успешно рисует прямоугольник и пару линий. Это всё, чему удалось научить HostPorts.Rider. Вроде бы, можно смело двигаться дальше, но тут нас поджидает подводный камень, в виде очень примитивного базового интерфейса SDL.<br />
<br />
Дело в том, что интерфейс Ports.Frame предоставляет функции рисования не только линий и прямоугольников. Фрейм способен нарисовать полигон, с заливкой и без. Можно рисовать окружности, с заливкой и без. Да и обычным линиям можно задавать толщину, а окончания линий рисуются в виде окружности (что улучшает вид ломаных). Прямоугольники тоже можно рисовать линиями разной толщины.<br />
<br />
Конечно, на SDL можно изобразить необходимые примитивы с помощью базовых возможностей, но рисоваться всё это будет медленно, к гадалке не ходи. Кстати, сам автор SDL, Сэм Лантинга, тоже <a href="http://forums.libsdl.org/viewtopic.php?t=5348&highlight=polygon" target="_blank">задавался </a>этим вопросом и пришёл к логичному выводу: зачем заниматься тормознутым самодельным рендерингом, когда давно есть OpenGL с Direct3D, умеющие рисовать с аппаратным ускорением.<br />
<br />
Поэтому нам надо выбирать, на какой интерфейс ориентировать BlackBox. Раньше я считал, что лучшим решением будет использование только средств SDL, но теперь становится очевидно - выбора не избежать. А выбор для нас тоже очевиден - OpenGL.<br />
<br />
Таким образом, наш SDL-хост уже нельзя будет считать чисто SDL-платформенным. Весь рендер в нём будет плотно завязан на возможности OpenGL. Но, кстати, в наших силах использовать компонентность так, чтобы это не мешало развитию хоста.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-44531000797462290052014-03-18T02:24:00.003-07:002014-04-22T05:43:39.692-07:00Что делать дальше?<div dir="ltr" style="text-align: left;" trbidi="on">
Итак, пускач для SDL-хоста работает. Средствами SDL мы окно успешно создали. В каком направлении двигаться дальше, как развивать новый хост?<br />
<br />
Ответ на этот вопрос может дать понимание документоориентированности каркаса BlackBox. Кроме этого, каркас поддерживает разделение на пространство отображения и пространство документа. Любое окно в нём связано с объектом документа. Стало быть, нам надо научить SDL-хост открывать документы.<br />
<br />
А как же открываются документы, и вообще отображения в эталонном BlackBox? Чтобы это понять, пришлось произвести небольшой <a href="http://obertone.ru/doku.php?id=bbdocuviews" target="_blank">анализ</a>, который может оказаться полезным всем, кто интересуется внутренним устройством каркаса.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-39854997438229972502014-03-15T21:11:00.000-07:002014-04-22T05:43:59.483-07:00SDL-хост. Первый шаг сделан.<div dir="ltr" style="text-align: left;" trbidi="on">
Отдельной подсистемой появился SDL-хост, согласно идеям <a href="http://obertone.ru/doku.php?id=bbnohost" target="_blank">герметичности</a>. Для него был собран отдельный пускач x86sdl.exe. Сейчас разработка идёт под Windows, когда каркас поднимется полностью, перенесём и на Linux.<br />
<br />
Третьего дня отладили инициализатор, который открывает окно SDL и запускает главный цикл (event loop).<br />
<br />
Первая демка успешно отрисовала примитивы:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSuZC4TP_vDYEAjZ_cIKo0NzRiDyLU7jPel18YXl8kFJWlqLkRxJycYWiERfTHqylC6Mpq_SslJe9IjEKJB8nAjVoSQNgTsiWEyx1jHe0l48hgkkp21TAz4tA9U5ncEdeY40j8luQzl8c/s1600/sdldemo1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSuZC4TP_vDYEAjZ_cIKo0NzRiDyLU7jPel18YXl8kFJWlqLkRxJycYWiERfTHqylC6Mpq_SslJe9IjEKJB8nAjVoSQNgTsiWEyx1jHe0l48hgkkp21TAz4tA9U5ncEdeY40j8luQzl8c/s1600/sdldemo1.PNG" /></a></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-79424819860295261132014-03-09T23:47:00.002-07:002014-04-22T05:44:21.922-07:00Идём на SDL<div dir="ltr" style="text-align: left;" trbidi="on">
Начал переделывать win32-хост в SDL-хост. Работа с окнами совершенно другая, алгоритмы из ключевых модулей типа HostMenus будут полностью переделаны или заменены новыми.<br />
<br />
Сейчас у нас есть компонентный биндинг к SDL2, очень минимальный, реализующий только самое необходимое для старта. Конечно, в процессе переноса хоста на SDL, биндинг тоже будет прокачиваться.<br />
<br />
Интересно, что в итоге получится и сколько времени займёт переход на SDL. </div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-71872617250421759022013-06-25T02:56:00.001-07:002013-06-25T02:56:14.515-07:00Как избавить свой модуль от опасных зависимостей<div dir="ltr" style="text-align: left;" trbidi="on">
Написал тут журнал рабочего времени. Он перехватывает сообщения, посылаемые каркасом в документы и собирает статистику, в которой, кроме подсчёта нажатий на клавиши и кликов мышкой, определяется ещё и итоговый размер текста.<br />
<br />
А у текстов (TextViews) есть некоторая зависимость от главнейшего модуля ядра Windows. Поскольку для перехвата сообщений журнал прямым образом встраивается в Windows, то при старте ядра происходят всякие нехорошие вещи, связанные с циклическим импортом.<br />
<br />
Решил проблему простым хуком, который устанавливается в журнал уже после того, как прогрузится всё ядро, с помощью скрипта System\Config. То есть, зависимости от TextViews перенесены из журнала в хук.<br />
<br />
Есть и другой способ избавления от зависимостей, это - межмодульная шина сообщений. Способ достаточно изящный и эффективный, но в данном случае не хотелось иметь никаких дополнительных привязок, ведь базовая функциональность журнала должна опираться исключительно на ядро.<br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-18413568204420934852013-02-26T05:08:00.003-08:002013-02-26T05:08:45.953-08:00Быстрота следует за подготовкой<div dir="ltr" style="text-align: left;" trbidi="on">
Самописный контрол Caption потребовал центровки надписи и отбивки от краёв. Код занял 4 строчки, а вот усилия по вспоминанию механизма настройки соответствующих свойств контрола и разборки с DevInspector заняли больше часа.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-28066831362523503072012-07-17T08:43:00.000-07:002012-07-17T08:43:01.354-07:00Паттерн Proxy на Files.<div dir="ltr" style="text-align: left;" trbidi="on">
Реализовал шаблон Заместитель, который встраивается в абстрактный интерфейс Files и обрабатывает обращения к некоторым каталогам. Остальные запросы передаются в HostFiles, и файловая система работает как обычно.<br />
<br />
Понадобилось это для создания портала в базу данных. Другими словами, всё, что пишешь в специальный каталог, автоматически падает в особую табличку в подключенной базе. А если обращаешься к такому каталогу, он выдаёт список файлов из базы данных или хэндлер файла.<br />
<br />
Удобство Заместителя в том, что остальные компоненты вообще не видят подмены. </div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-72078694748126100472012-07-02T09:05:00.000-07:002012-07-02T09:14:18.197-07:00Обертон<div dir="ltr" style="text-align: left;" trbidi="on">
Сегодня поднялся домен obertone.ru. Это будет наш небольшой портальчик со всякими интересностями по оберону и блэкбоксу в частности. Дизайн ишшо не придуман, а содержание планируется примерно такое:<br />
<br />
- блоги разработчиков,<br />
- презентации разработанного софта<br />
- видеоуроки.<br />
<br />
Как-то так. Попытаемся сделать максимально простую страничку, в суровом духе Оберона )<br />
<br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-89615625526204257582012-02-01T07:06:00.001-08:002012-02-01T07:06:49.720-08:00СтабильностьВообще-то, не так много факторов, которыми можно добиваться стабильности софта, созданного с помощью BlackBox.<br />
<br />
1)Не делать необоснованных предположений (в том числе избегать уверенности, что указатель не NIL), <br />
2) В непонятных точках ставить ассерты.<br />
<br />
Если чётко придерживаться подобного стиля, то вывести прогу в стабильный режим не так уж и сложно.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4614651834561704168.post-50995401686112159572010-05-22T02:36:00.000-07:002010-05-22T02:36:22.755-07:00Хранилища StoresОчень удачно использовал некоторые свойства хранилищ для организации персистентности разметки ресайзера.<br />
<br />
Расскажу попозже, как настроение будет.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-67328335185223743602008-12-22T22:31:00.001-08:002008-12-23T00:00:53.044-08:00Про раскрашивание исходного текстаСчитается, что выделение цветом ключевых слов улучшает восприятие исходного текста и повышает эргономичность работы.<br /><br /><span style="font-weight:bold;">Как обычно, BlackBox ломает стереотипы о колено.</span><br /><br />В начале работы с BlackBox я столкнулся с тем, что в нём отсутствовала общепринятое выделение цветом. Что сильно удручало попервоначалу, так как даже древний CREdit, которым я пользуюсь уже очень давно, позволяет настроить цветовые схемы автораскраски под любой вкус.<br /><br />Зато составной документ BB даёт возможность изменить цвет и стиль любого участка исходного текста.<br /><br />И сегодня я окончательно сформулировал разницу в подходах. Суть в том, что если у тебя перед глазами повесить аттрактор, привлекающий внимание, то через некоторое время твой мозг привыкает к раздражителю и перестаёт на него реагировать. То есть, глаз "замыливается".<br /><br /><span style="font-style:italic;">Этот факт хорошо известен людям, носящим очки. Если на линзу наклеить небольшой кусочек бумаги, то сначала он мешает, а со временем просто исчезает из поля зрения.</span><br /><br />Общепринятый подход автовыделения цветом ключевых слов работает точно так же. Выделяя цветом постоянные и повторяющиеся участки текста, на самом деле, мы их "выключаем" из локуса внимания. Тем самым, происходит концентрация на "рабочих" участках исходника.<br /><br />А вот подход, принятый в BlackBox - это "архитектурная" раскраска исходного текста программы. То есть, исходник в целом оформлен одним шрифтом, одним цветом, одним стилем. Другим цветом-стилем выделяются только самые важные места.<br /><br />О чём говорит такая диаметральная разница в стилях цветового выделения участков исходного текста? Я бы предложил следующую интерпретацию. <br /><br />Любое <span style="font-style:italic;">выделение</span> говорит о том, что человеку необходимо концентрироваться на самых значимых местах окружающей реальности.<br />Программист работает с текстом программы ежеминутно. Поэтому ему необходимо постоянно выделять самые значимые места и скрывать те, которые уже не будут меняться со временем.<br /><br />Нерегулярное раскрашивание цветом только самых важных участков текста говорит об исключительности именно выделенных точек и "выключает" основной, невыделенный текст. Это означает, что невыделенный текст программы не представляет ежеминутной ценности ("опасности"), и поэтому тратить на него драгоценное внимание просто расточительно.<br /><br />Ну а регулярное же раскрашивание цветом стандартных, постоянно повторяющихся участков исходника выключает их из сознания и выделяет именно рабочие куски текста и даёт сигнал о постоянной их значимости. Это говорит о том, что выделенный таким образом текст актуален всегда и в силу этого, на него постоянно необходимо тратить внимание.<br /><br />Подытожу. <br /><br />Добиваться <span style="font-style:italic;">эффективности</span> можно самыми простыми средствами, хотя иногда и неочевидными с первого взгляда.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-17131359211426065962008-11-26T10:58:00.000-08:002008-11-26T11:18:42.273-08:00Предусмотрительность никогда не помешает!Мой генератор настроек для nnBackup имел одну, не очень хорошую особенность. Он импортировал из текстового файла только те параметры, которые ему известны. <br /><br />А неизвестные оставлял "за кадром". <br /><br />Ну и генерировал финальную конфигурацию, естественно, только из известных параметров. А я ж включил в генератор далеко не все параметры — ведь nnBackup умеет очень многое в области резервного копирования.<br /><br />Ну и вот, глядючи на эту неохваченную тучу параметров, призадумался я. Добавишь ты вручную пару строчек в backup.cfg, а генератор настроек их не поймёт и выкинет при сохранении.<br /><br />Пришлось включить предусмотрительность и добавить блок "Нераспознанные опции". Там скапливаются все параметры, которые неизвестны генератору. И прямо в таком же виде они переливаются в конечный файл.<br /><br />Решил не делать редактирование этих параметров в генераторе. Надо будет - вручную исправишь.<br /><br />Так что теперь утилитка стала на шаг ближе к человеку :) А когда выпускать утилитку в люди - я ещё не придумал.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4614651834561704168.post-69606090964021778742008-11-12T00:02:00.000-08:002008-11-12T00:19:35.036-08:00Обустраиваемся с nnBackupПостоянно использую отличную утилиту nnBackup для архивирования, резервирования и синхронизации данных.<br /><br />Недостатком у nnBackup является отсутствие графической оболочки. Каждый раз, когда хочется что-то забэкапить, приходится вручную настраивать конфигурацию. <br />И вот, лень победила! Мне надоело постоянно вспоминать, какие опции для чего нужны.<br /><br />Взял и набросал подсистемку под названием Backup. Подсистемка простая, но достаточно удобная.<br /><br />Вчера провёл полевые испытания подсистемы. Да, скажу я вам, GUI рулит в походных условиях (когда башка забита текущими делами и нет возможности спокойно подумать). Тыцнул мышой туда-сюда, и конфигурация готова - пользуй.<br /><br />Как задокументирую подсистему, так и выложу её на components.oberoncore.ru.<br /><br />А пока что, хочется поблагодарить автора программы nnBackup за классный инструмент.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4614651834561704168.post-50779977776800956562008-11-07T01:22:00.000-08:002008-12-23T00:04:04.316-08:00СтартНачало, стало быть, положено. Здесь будет журналироваться жизнь разработчика, рискнувшего здоровьем ради освоения и использования в дальнейшем, особой премудрой программической инструментальной технологии. <br /><br />Премудрость эта зовётся <b>BlackBox Component Builder</b> (не абы что, да). <br />Сила этой штуки беспредельно велика, и не всякий смертный способен легко вынести непосредственное с ней соприкосновение.<br /><br />Поехали.Unknownnoreply@blogger.com1