вторник, 8 января 2008 г.

Миграция из C# в Java: Линкобзор

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

Для начала, конечно-же, Википедия:

Далее, что же приготовила для нас собственно Sun:

  • Java.sun.com - аналог "нашего" msdn.microsoft.com. Стартовая страница радует баннером "Run Desktop Apps Faster with Java" - faster than что? :)))
  • Без спецификации никуда: http://java.sun.com/docs/books/jls/ - довольно объемная книжка, читается сложновато - за один присест прочитываю не более 30 страниц. Но охват хороший.
  • Code Conventions лежат рядом. Датированы 1999 годом, так что если нужны рекомендации для современных фич вроде перечислений или дженериков - добор пожаловать в спецификацию, пунктом выше.
  • Альтернативные рекомендации, уже посвежее, здесь. Различия с официальными имеются, в чем-то я с ними согласен, в чем-то нет. Нужно будет их как-нибудь совместить и повесить получившееся на стенку :)
  • Скачать содержимое http://java.sun.com/docs/books/tutorial/ всем скопом можно здесь, ссылки "Online Tutorial" и, если нужно, "Swing Tutorial Examples".
  • Книги в электронном виде (вроде этой: Java Look and Feel Design Guidelines). Каталога не нашел, да и староваты они уже.
  • Блоги на weblogs.java.net

Далее IBM. Замечательный ресурс developerWorks (именно так, в сamelСase)

Русскоязычных комьюнити по Java сравнимых с RSDN не нашел (Juga.Ru не впечатлил), так что только тройка форумов:

К сожалению, эти два юзают движки для форума на ПХП:

  Ну и не забудем:

Миграция из C# в Java: Часть 4

Оригинал здесь http://software.ericsink.com/entries/java_eclipse_4.html.

Предыдущие части: 1, 2, 3


Как члены программы Microsoft VSIP, мы создавали плагины source control для линейки Visual Studio в течение восьми лет. Когда я начал свой прошлый набег на мир Eclipse, я был полон энергии чтобы изучить всю сферу плагинов по эту сторону "забора". До сих пор я впечатлен.

Source Control и Bug Tracking

Первым плагином, что я установил, был мой собственный. SourceGear Fortress включает плагин для Eclipse, но я никогда не пробовал его до этого.

Моя первая реакция - я действительно полюбил, как Eclipse оперирует установкой плагинов. Весь процесс управляется из самого Eclipse. В меню Help имеется подменю Software Updates. Все, что я должен сделать - указать URL сайта обновлений:

http://download.sourcegear.com/Fortress/latest/update

Оставшаяся часть процесса очень проста, и существенно автоматизирована.

После установки мне стали доступны несколько дополнительных представлений:  1731_image001_1975b410-31b6-46c6-92bc-07163628c4a7

И кое-что новое в меню Tools:  1731_image002_46884d5c-79ee-413d-900e-a35108e7a425 И несколько новых разделов в настройках:  1731_image003_0c755c2f-0a7c-4558-95ac-9e8669cd25a6

В итоге, использование средств source control в Eclipse показалось мне довольно приятным и простым. Если это похоже на хвастовство своим продуктом, то я это допускаю, за исключением пары смягчающих факторов:

  1. Я лично не имею никакого отношения к этому плагину, т.е. это не столько хвастовство, сколько комплимент достижениям своих коллег.
  2. По моему опыту, плагины source control во многом подобны детям. В большей степени, поведение детей (или плагинов) отражает качество структуры и руководства даваемых родителями (или IDE). Таким образом, говоря, что наш плагин работает очень хорошо, я хвалю Eclipse.

Однако скажу по правде, я нашел [я так думаю] баг в нашем плагине для Eclipse. К счастью, благодаря тому, что Fortress  имеет поддержку встроенного bug-tracking, я смог воспользоваться плагином, чтобы сообщить о баге прямо из Eclipse.

CheckStyle

В части 2 я жаловался на способ обработки сравнения объектов в Java (== для идентичности, .equals() для содержимого). Я получил довольно много комментариев и писем об этом, но признаюсь, что удалил все заметки от тех дураков, посчитавших, что я просто не понимаю указатели.

Хотя несколько человек предложили мне воспользоваться плагином под названием CheckStyle.

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

CheckStyle пожаловался примерно на 301 место, где я разместил фигурные скобки на новой строке. :-)

В общем, CheckStyle выглядит просто отлично. Я буду экспериментировать с ним далее и настрою на соответствие моему стилю. Я не исключаю что снова допущу ошибку с ==, уже понимая, как это сработает в Java, но это хорошо - осознавать, что в этом случае CheckStyle может указать мне на это.

Экосистема

Люди из VSIP всегда говорят об "экосистеме" Visual Studio, наборе организаций, создающих всевозможные типы плагинов для Visual Studio.

Соответствующая экосистема для Eclipse оказалась просто огромной. Когда я погуглил по словам "eclipse plugin", первые два результата оказались сайтами, предназначенными для помощи в поисках плагинов. Один из них - http://www.eclipseplugincentral.com/, который может похвастаться 991 плагинами в своем каталоге.

Но я-то знаю, что их как минимум 992, потому как плагина SourceGear Fortress там не оказалось. :-)

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

  • Здесь есть плагин для редактирования статей Википедии
  • Здесь есть VNC плагин, т.е. я могу управлять удаленными машинами не покидая Eclipse.
  • Здесь есть плагин, позволяющий сыграть в Сапера в Eclipse.

На самом деле, смотря на этот список плагинов, я начал понимать, что Eclipse по существу современный Emacs. Истинно консервативные пользователи Emacsжелают делать все в Emacs. Один мой коллега любит редактировать /etc/passwd и устанавливать Emacs как shell. Кажется, Eclipse движется в том же направлении.

В завершение.

На данный момент я попробовал 2 плагина Eclipse - на очереди еще 990. Думаю, это будет забавно.

понедельник, 7 января 2008 г.

Автоматизация сборки с помощью py2exe

Думаю, все питонщики знакомы с py2exe, позволяющем создавать exe для Windows. Однако работа с этим инструментом не тривиальна, так что уже довольно давно для самых простых задач (других с помощью питона мне решать пока не приходилось) имеется у меня батник, позволяющий за одно движение мыши превратить файл консольного приложения на Python в exe'шник. Конечно, возможности py2exe этим не ограничиваются, однако лично мне этого хватает, да и познания в bat'нике не велики.

@echo off
rem PY2EXE executable builder

if "%1" == "" (
echo Using: buildexe entry_point_path [-noopt]
echo entry_point_path - path to the .py file that contains program entry point
echo -noopt - disable Python compiler optimization

goto END
)

set DRIVE=%~d1
set OUTDIR=%~dp1
set OPTIONS=-OO

rem Disabling optimization
if "%2" == "-noopt" (
set OPTIONS=
)

%DRIVE%
cd %OUTDIR%

rem Creating setup file for PY2EXE
echo # setup.py > setup.py
echo from distutils.core import setup >> setup.py
echo import py2exe >> setup.py
echo setup(options = {"py2exe": { >> setup.py
echo "bundle_files": 1, >> setup.py
echo "optimize": 2, >> setup.py
echo "dist_dir": "bin"}}, >> setup.py
echo zipfile = "lib.zip", >> setup.py
echo console = ["%~n1.py"]) >> setup.py

rem Creating bat-file for rebuilding manually
echo @echo off > rebuild.bat
echo rem Made by 'PY2EXE executable builder'. >> rebuild.bat
echo %DRIVE% >> rebuild.bat
echo cd %OUTDIR% >> rebuild.bat
echo %~dp0python %OPTIONS% setup.py py2exe >> rebuild.bat

rem Calling PY2EXE
%~dp0python %OPTIONS% setup.py py2exe

:END


Для запуска нужно только перетащить в Проводнике файл .py на этот батник, после чего в папке с .py появятся:




  • rebuild.bat - батник для пересборки


  • setup.py - проект py2exe (что-то вроде build.xml для Ant, код на Python вообще вещь универсальная, достаточно посмотреть на питоновские ORM, где схема БД описывается... кодом на Python. Привет, Hibernate! :))


  • \bin - папка, содержащая выходные даннные


  • \build - папка с зависимостями, для дистрибуции не нужна