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

Интересные перводы

Наткнулся на блог с интересными переводами - http://factorized.tumblr.com/.

Домашний 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" и об этом желательно не забывать, чтобы после перестановки ОС не было "мучительно больно":)