четверг, сентября 23, 2010

Mac OS

Поставил макось. Понравилось оформление и юзабилити. Попробую пожить на ней пару дней

пятница, сентября 10, 2010

Mercurial, git, svn и прочая хрень

Наткнулся на сообщение Джоела Спольски:

Если вы все еще используете SVN – перестаньте. Mercurial и Git – это антибиотики. Теперь существуют технология лучше.
Думаю не спроста такая авторитетная личность как Джоел, будет так высказыватся. И тут я понял, что нужно менять свое отношение к меркуриалу, хотя стырый добрый свн уж как мне по душе. Да и в проект меня пригласили, в котором опять таки код лежит на меркурале.
Ну что же - начнем.

Mercurial -  кроссплатформенная  система управления версиями. Написана на Python со "вставками" С.  Стоит заметить, что сами разработчики питона с недавних пор начали юзать меркуриал - опять таки еще одит плюс.

Mercurial, в отличии от SVN, является распределенной системной. Более подробно о распределенности можно почитать здесь. Вкратце разницу межну централизованными и распределенными системами можно показать на схемах

 С данных схем можно понять, что фактически у кждого, кто работает с репозиторием меркуриала, на локалке есть своя копия репозитория - и комиты делаются именно в него. Если же нужно залить изменения на сервер - делается объединение веток репозиториев на сервере и на локальной машине. Такая архитектура более отказоустойчива и позволяет обмениваться изменениями даже при отсутствии связи с сервером.

Операции с Mercurial как и в SVN выполняются через консоль и опять таки как и в SVN у Mercurial есть свой юзер-интерфейсед клиент Mercurial tortoiseHg. К расмотрению клиента перейдем немного по позже, сейчас же остановимся на основных командах. Полный лист команд можно найти на оф. сайте http://www.selenic.com/mercurial/hg.1.html.

Вся работа с системой котроля версий Mercurial происходит с помощью команды hg.
Для начала создадим репозиторий. Для этого служит комманда Init
Вот ее описание:

  • hg init [-e CMD] [--remotecmd CMD] [DEST]

  • Initialize a new repository in the given directory. If the given directory does not exist, it will be created.If no directory is given, the current directory is used.

  • options:
  • -e, --ssh specify ssh command to use
  • --remotecmd specify hg command to run on the remote side
Переходим в наш каталог, в котором будет находится репозиторий и выполняем комманду
>hg init meRepos
В текущем каталоге будет создан репозиторий с папкой .hg - здесь то в и хранится вся история измениений (не напоминает SVN? -:) )

Мы создали главный репозиторий. В идеале репозиторий необходимо размещать на сервере, но в качестве ознакомления базовых принципов будем считать что наш ПК - это и сервер и клиент.

Следуюющее что необходимо сделать - создать локальную копию репозитория. Именно с этого действия начинается работа на клиенте. Для этого служит комманда clone
Вот ее описание:

  • clonehg clone [OPTION]... SOURCE [DEST]    
  • Create a copy of an existing repository in a new directory.
  • If no destination directory name is specified, it defaults to the basename of the source.
  • The location of the source is added to the new repository's .hg/hgrc file, as the default to be used for future pulls.
  • options:
  • -U, --noupdate the clone will include an empty working copy (only a repository)
    -u, --updaterevrevision, tag or branch to check out
    -r, --rev include the specified changeset
    -b, --branch clone only the specified branch--pull use pull protocol to copy metadata--uncompressed use uncompressed transfer (fast over LAN)
    -e, --ssh specify ssh command to use--remotecmd specify hg command to run on the remote side
По команде clone Mercurial создает локальную копию репозитория, расположенного по указанному адресу. При этом клонируется именно репозиторий. Таким образом, после всех действий  у нас уже имеется два репозитория - первый, который мы создали, и второй - его локальный клон.

При этом взаимодействовать можно абсолютно с любым репозиторием. Но как правило на предприятии выделяют какойто серверный репозиторий (центральный) - на которого завязывается все взаимодействие.






Mercurial: первые впечатления

среда, марта 17, 2010

Кроссплатформенное программное обеспечение

Задача

Написать модуль активации ПО.

Описание:

  • сервер активации находится на никсовой платформе (Debian)  
  • клиенты находятся на Win32
  • модуль активации должен по индификатору генирировать ответ
  • ответ должен проверятся на клиенте
  • модуль активации на сервере должен быть закрыт (бинарный файл)

Исходя с поставленной задачи и с того, что клиентское ПО было написано на Delphi был сделан выбор в сторону Free Pascal.

В ходе реализации написан модуль, поддержующий станданр Free Pascal и, соответственно, легко компилится на обеих платформах.

В качестве компилятора на никсовой платформе был взят  Free Pascal Compiler (FPC). Как среда разработки - Lazarus