Thursday, June 26, 2008

2. Мой друг - дерево.

Да, деревья - наши друзья. Они дают нам кислород, доски и яблоки. А еще они структурируют отображаемую информацию, позволяют погружаться по выбираемому направлению все глубже и глубже, деревья отображают иерархическое устройство мира. Именно благодаря свойству иеархичности деревья так популярны в области интерфейсостроительства. Любая среда разработки это прежде всего дерево проекта, где на верхнем этаже живут рабочие области или проекты а ниже объекты все мельче и детальне - пакеты, классы, методы... Тот же Эклипс это лес деревьев. Дерево проекта, дерево ресурсов, дерево иерархий, дерево вызовов, поиска, развернутого вида и т.д. и т.п. Что и говорить - тайга!

Ну раз их там так много, то добавление еще одного сильно дело не испортит. Итак, добавляем еще одно - гибкое, ЛЕГКО и ПРОСТО модифицируемое КОНФЕКС дерево. Для чего!? А хрен его знает, для всего. Изначально была мысль, и она реализована, сделать дерево для закладок по коду, т.е. стоите вы в каком-то месте кода, не важно на классе, методе или коментарии, главное, что бы было что выделить, выделяете это место в тексте и сажаете куда-нибудь на ветки конфекс-дерева (создаете в дереве новый узел Bookmark) . При этом автоматически создается и метка среды разработки, которая будет отслеживать все изменения в коде. Это происходит через стандартный механизм эклипсовских меток. Выделенная область должна быть по-возможности уникальна для данного файла, таким образом, можно будет впоследсвии восстановить метку, если букмарк среды разработки сотрется, или проект будет перенесен в другое рабочее пространство. Но это даже не важно. Главное что мы получаем возможность альтернативного иерархического гибкоизменяемого описания своего проекта.
Проблема стандартных эклипсовских деревьев в том, что они железные. Модифицировать и описать проект как тебе хочется в них нельзя. Кроме того, они строятся автоматически и имеют совершенно конкретное назначение а в конфекс-дереве вы можете расположить метку где угодно и сколько угодно раз, можете назвать ее по русски, по белорусски или украиски ну в общем уже хорошо. Главный минус конечно это затраты на ручное создание маркеров. Зато если не лениться в последствии все окупается сполна. Главное - выделить ключевые моменты, ключевые функциональности, а дальше, попав в нужную точку, в работу вступают замечательные эклипсовские Ctr-T и Alt-Ctrl-H иерархия определений и иерархия вызовов.

В эклипсе с недавних пор появился замечательный проект Mylar. Декларируется (и это кажется так!), что он сильно облегчает разработку путем создания неких контекстных фильтров на содержание проекта. Всеравно как если бы в лесу вы надели волшебные очки и вместо бурелома вдруг увидели отдельные кустики(пакеты) или веточки(классы), или даже листочки(методы!), именно те, которые нужны вам для конкретной задачи в данный момент. Причем, волшебные очки создаются полуавтоматически, плюс масса всякой удобной функциональности... Все классно! Но... вот как то не получается ЛЕГКО и ПРОСТО. Вот что плохо. Ну, по крайней мере для меня. Но проект супер.

Tuesday, June 17, 2008

1. Лень двигатель прогресса.

Как говаривал кот Матроскин "Чтобы что-нибудь продать, нужно сначала что-нибудь купить." Так и в нашем случае "Чтобы потом лениться, нужно сначала потрудиться".


Выбор среды.

Выбираем Eclipse RCP.

Еще в те годы когда я работал на M$ Visual Studio, и позже когда пришлось работать на Оракловом JDeveloper, меня всегда мучал вопрос - "Вот у нас в руках замечательная среда разработки, в ней все так хорошо и удобно, столько "прибамбасиков", такой богатый пользовательский интерфейс НУ ПОЧЕМУ Я ДОЛЖЕН МУЧАТЬСЯ, создавать свои библиотеки GUI с нуля, при помощи самого кошмарного кошмара всех времен и народов - MFC, или при помощи самого страшного ужаса всех народов и времен - Swing-a. Ну почему эти две БАРЫЖНЫЕ компашки - микрософт и оракул, так меня не любят?!"
Почему не любят то понятно, они любят не узеров а их денежки, денежки тех лопухов которые отваливают им за страшные кошмары. Но, наконец, случилось великое событие - случилось ЗАТМЕНИЕ (по нерусски Eclipse) и всем проприетарным барыгам наступил капец, ибо... Во-первых Эклипс опенсорсный и бесплатный, во-вторых он классно спроектирован с использованием OSGi сервера (сервер модульных структур), в третьих он как раз дал то, о чем я всегда мечтал - механизм построения клиентского приложения с богатым интерфейсом.


Выбор языка

Выбираем Groovy.

Ну язык выбирать особо не приходится. Java и точка. Раз Эклипс на джаве написан - да будет так. Единственное что смущает, это то, что как сказал один студент недавно - "Java не нормальный язык программирования". Уста молодежи, как известно, глаголют и не всегда они глаголют всякую хрень. Ну, раз нужен новомодный скриптовый язык, - да будет Groovy. Почему так? Потому, что груви замечательно заинтегрирован с джавой.
До предыдущей версии расхождение было только в синтаксических мелочах, например в
операторе for() но с версии 1.5 и эти мелочи устранены. Теперь можно куски кода прямо из джавы вставлять в Groovy скрипт. Кроме того, у груви на выходе получается тот же самый явский байт-код, как говорится - "не чувствуйте разницу!". А плюсов много. А минусы тоже есть, но оних позже.


Выбор графической библиотеки

Выбираем SWT,Groovy-swt.

Ну, графическую библию выбирать особо тоже не приходится. SWT и точка. Почему так? Да потому, что swt родная библиотека эклипса. А потом, она красивая. Вид эклипса до сих пор радует глаз, хотя уже несколько лет я каждый день на него пялюсь. Пришлось мне тут на днях поставить VS 2008, про этот кошмар летящий на крыльях ночи надо отдельно излагать, но, от гадостей человек отвыкает еще быстрее чем привыкает к хорошему. Всем рекомендую поставить. Я просто испытал ощущение счастья от того, что с этой мерзостью давно покончил и от того что скоро снесу ее к черту, навеки, тьфу-тьфу чтоб не сглазить, только вот комп загадил, но все равно, пора уж, давно пора, перебираться на линух со всеми манатками. Думал, ну имея перед глазами пример красоты эклипсовской, эти денежные курдюки выдадут что-то, хотя бы более-менее достойное. Какой там! Чтоб описать их страшненький интерфейс слишком много нехороших слов нужно употребить. Неохота. Да и грех. Всем настоятельно рекомендую - Ставьте VS! Не пожалее, такой кайф! Незабываемый.
А что по поводу swt, у груви сообщества нашлась замечательная разработка groovy-swt называется. Мало того, что код сам по себе на груви короче получается, так есть там такая фишка как билдеры и замыкания, swt-шные коды вообще в десять раз меньше получаются. И не просто кодить меньше, а главное, что структура кода становится похожей на структуру графической информации которую вы описываете. Вообще, в груви масса замечательных штучек, рекомендую сходить на их сайт посмотреть, скажем groovy-xml.

0. Что такое проект Confex.

Предисловие.

"Программизмом" я занимаюсь довольно давно, достаточно сказать, что начинал я еще на легендарной ЕС-1040, кто помнит тот знает, а кто не знает - то и ладно. В те времена, когда машины были большие, а слово "программист" звучало гордо, почти так же как слово "физик", само программирование было настоящим искусством, неким священнодействием, таинством. Но, фантасты предупреждали а мы не верили и случилось то, что случилось - компьютеры, высадив бесчисленный десант персоналок, захватили и поработили нашу планету, они проникли во все уголки и теперь требуют все новых и новых человеческих жизней, все больше и больше бедолаг "пашут" на них. Труд программиста перестал быть искусством, ха-ха, какое там искусство в лучшем случае - ремесло, а в худшем - рабский труд. Попытка сдачи безжалостным захватчикам миллиарда индусских мудрецов, способных писать процедуры длиной в тысячи строк, не спасла положение. Кодить приходится все больше, а аппетиты проклятых безмозглых все не уменьшаются. И многие из старой гвардии понимают, что так жить нельзя, тем более, вылупилось новое поколение работников "клавы" и мышки, поколение, которые уже и яву то не считают нормальным языком программирования не то что С, им видите ли подавай простоту и легкость новых не строго типизированных языков, типа питона или пхп. И я с ними согласен. Хочу чтобы все было ЛЕГКО и ПРОСТО!