воскресенье, 14 октября 2012 г.

Домашний GIT сервер

Недавно озадачился GIT сервером для свои маленьких проектиков и всяких там экспериментов.

Во первых, пришлось выбрать между уже существующим Git хостингом (GITHub, Assemble и т.д.) и попыткой поднять что то свое в домашних условиях. Заверения знакомых о безопасности, стабильности и бескорыстности крупных online сервисов как то не убедили.

Далее было увлекательное знакомство с кучей поделок разной степени зрелости и работоспособности.
Все испытанные серверы можно разделить на две большие группы - а) надстройки над нативным пакетом git и б) надстройки над EGit. В первом случае мы имеем нечто, что работает под управлением Apache и для выполнения действий использует пакет git. Как правило эти умеет отображать историю комитов, изменения и списки репозиториев. Во втором это java решения которые используют EGit для работы с репозиторием (нативный пакет git не требуется). Эти сервера, как правило, по мимо всего прочего, умеют создавать/удалять ропозитории и нормально поддерживает http/https протоколы.
В итоге очень понравилось два продукта:
  • SCM-Manager (http://www.scm-manager.org/). Поддерживает git, svn и Mercurial репозитории. Авторизацию, визуализацию истории коммитов и др.
  • Gitblit (http://gitblit.com/). Работает только с git репозитариями, визуализация истории/коммитов и др.
Оба продукта вполне работоспособны (все заявленные функции работаю), требуют минимум телодвижений для запуска и настройки. А также довольно легко переносятся с Win на Linux и обратно.

пятница, 3 августа 2012 г.

Миграция на .NET платформу: Начальные сведения о платформе

Чтобы начать хоть что то писать, при переходе с Java, мне потребовалось узнать:

Синтаксис

В большинстве случаев, синтаксис Java и C# похожи. Из незнакомого (и того, что нужно знать "уже сейчас"):
  • out параметры - такого в java нету, а в C# используется довольно часто;
  • Область видимости internal;
  • static class - для любителей "Tools" и "Utils" классов :);
  • виртуальные методы и overriding - это по началу вызвало особые недоумения;
  • индексатор([]) и перегрузка операторов - такого тоже нету в Java, но эти механизмы часто используются;
  • делегаты и events - для меня, это оказались самыми непривычными и непонятными темамию (полезная статья и еще одна);
  • Структуры (structure) - очень похожи на классы, но ведут себя по особенному:) (очень рекомендую почитать).

Коллекции

Структура коллекций и их интерфейсы очень отличается от java collections. Особенно "доставляет" класс Dictionary :) (линк).
Также есть интересная библиотека Power Collections - "типа" commons-collections.

Assembly и зависимости

Принципе, ничего сложного и нового. Просто надо знать что это такое, как его создать и настроить.

Resources (строки, файлы, иконки)

Очень полезная штука. В java вопрос хранения и доступа к внутренним строкам, иконкам и др. файлов решался как попало и чем попало. В .NET у assembly есть контейнер, в котором можно хранить именованные ресурсы. Также есть механизм удобного программного доступа к ним. Особенно это радует при разработке UI модулей и иногда, при написании тестов.

четверг, 2 августа 2012 г.

Миграция на .NET платформу: Базовый инструментарий

Просто читать книги по языку не интересно - хочется надо что то пробовать писать. Для этого необходимо понять:
  • в чем писать (IDE)
  • как это запустить
  • где это все хранить

... в чем писать (IDE)?

Альтернатив как бы особо то и нету. Конечно же, кроме Visual Studio есть сторонние IDE для работы с C# кодом, но больше напоминают поделки студентов.

... как это запустить?

есть нечто напоминающее JDK - .NET framework. Включает в себя виртуальную машину, базовый набор библиотек и инструментарии для отладки и разработки. Похоже, что есть 4 основные (переломные редакции):
  • .NET 1.0 - самая первая и самая убогая версия. В данное время практически не используется.
  • .NET 2.0 - первая доведенная до юзабельного состояния версия. Вылечили многие детские болезни 1.0. Начали интересные синтаксические отличия от Java :)
  • .NET 3.5 - не только язык, но и платформу перекопали на столько, что у многих библиотек появились версии до 3.5, и после 3.5. Также, полным ходом внедряется элементы из функциональных языков.
  • .NET 4.0 - уже не самая новая, но вполне свежая и актуальная версия. "Типа" много усовершенствований, новая версия виртуальной машины CLR, доработан UI фреймверк и т.д.

... где это все хранить?

По поводу кода - у VS есть вполне достойные плагины для работы с SVN и Git репозиториями.
По поводу настроек - тут все немножко сложнее (по сравнению с Eclipse). Настройки проектов и солюшенов хранятся в файлах sln и csproj. Как правило, эти файлы вместе с исходниками находятся под контролем версий. А вот глобальные настройки IDE (горячие клавиши, окна и др.) хранятся в "Мои Документы/Visual Studio XXXX" и об этом желательно не забывать, чтобы после перестановки ОС не было "мучительно больно":)

Миграция на .NET платформу

После долгого писания на Java, выдалась возможность вплотную познакомится с MS .NET. В начале, незнание платформы вызывало чувство раздраженности и полной беспомощности, но позже, начал вырисовываться круг того, что надо выучить, понять и выполнить.
Далее мои основные впечатление о том, как перестроиться на .NET платформу в смысле обустройства рабочего пространства и налаживание эффективной работы.
У меня получилось следующие группы того, что срочно необходимо сделать или узнать, для того, чтобы начать эффективно работать:
  1. Базовый инструментарий - в случае с .NET надо разобраться а) какие .NET Frmaework -и бывают. как их ставить; б) определиться с IDE
  2. Начальные сведения о платформе - а) основы синтаксиса C# б) минимум знаний чтобы создать, скомпилировать и запустить проект
  3. Эффективный локальный инструментарий - инструменты на локальном компе
  4. Основная информация о платформе - а) минимальный набор знаний чтобы начать работать б) места, где можно найти нужную информацию
  5. Базовые фреймверки - xUnit, Mock, UI (RCP, Forms), XML (DOM, SAX, serialization etc)
  6. Инструментарий для жизни проекта - Build tool, CI server etc
Чет дофига получается... поэтому буду вставлять ссылки по мере написания сообщений.

суббота, 28 июля 2012 г.

Java Decompiler

Был замечательный проект JD (Java Decompiler). Но, судя по всему, автор забросил этот проект - обновлений нет уже очень давно, eclispe update site не работает...
Но нашелся добрый человек, который взялся поддержать и допилить этот проект - Mchr3k - JDEclipse-Realign (eclipse update site - http://mchr3k-eclipse.appspot.com/).