Archive for the ‘install’ Category

Конфиги для bash

Июнь 16, 2010

Практически у каждого гуманоида, обреченного возиться с консолью, есть набор конфигурационных файлов, который собирается годами и содержит мудрость предков и пыль веков. И каждый неофит, постигший необходимость настройки bash под свои нужды, прежде всего стучится в гугл и тратит достаточно большое количество времени на чтение чужих конфигов.
Огромное число их можно откопать на GitHub. Есть даже специальный сайт, где сложено 1474 (на данный момент) конфиг-файла (там правда все в кучу .vimrc, .bashrc, .zshrc и т.д.).
Но в хранении конфигов есть один тонкий момент, с которым приходится сталкиваться любому, кто растит их некоторое время. Во-первых, они становятся довольно объемными и, следовательно, трудно поддерживаемыми, а во-вторых, часты бывают нужны разные настройки для разных машин.
Если обратиться к интернетам в поисках мудрости, то довольно часто рекомендуют простейший расклад, когда создается три файла:


aliases - разные удобные сокращения (alias lsa='ls -lha')
config  - настройки самого bash (export HISTSIZE=10000)
env     - настройки среды окружения (export LANG=en_EN.UTF-8)

Плюс еще пара файлов, которые это все загружают: bashrc и bash_profile
Данное решение нацелено на структуризацию и просто предлагает не сваливать все в кучу, а как-то разнести по темам. В принципе, это лучше, чем один .bashrc на 1500 строк.
Но проблема того, что на linux-сервере нам совершенно невозможно иметь TextMate, который стоит редактором по-умолчанию на mac-машине остается в силе, не говоря уже о различных PATH-переменных окружения, которые могут внести некоторую путаницу.
При этом я предполагаю, что мы храним все где-то в системе контроля версий на удаленном сервере (я храню на GitHub) и используем на каждой машине, где нам выдают шелл. Можно поколдовать с .gitignore и не пушить в репозиторий host-specific файлы, но не хочется их разом потерять вместе с внезапно сгоревшим хардом. Поэтому я решил немного допилить напильником изначальный расклад и вот, что получилось:


aliases         - общие aliases
config          - общий config 
hostname        - директория для host-specific файлов
    server-1    - очень боевой сервер
    dev-1       - сильно разработческая машина
platform        - директория для platform-specific файлов
    darwin      - все, что относится к миру mac
    linux       - все, что относится к миру суровых linux
scripts         - директория со вспомогательными скриптами
bashrc          - файл, который подгружает весь этот зоопарк

В самом bashrc есть только загрузка нужных файлов, выглядит это так:


droot=~/.dotfiles/bash

# Load common files
. ${droot}/config
. ${droot}/aliases

# Load platform-specific shortcuts
platform=`uname | awk '{print tolower($0)}'`
if [ -f ${droot}/platform/${platform} ]; then
    . ${droot}/platform/${platform}
fi

# Load machine-specific files, if presented
hostname=`hostname -s`
if [ -f ${droot}/hostname/${hostname} ]; then
    . ${droot}/hostname/${hostname}
fi

Теперь можно продолжать наращивать парк серверов и не бояться, что конфиги для bash распухнут до полной неюзабельности. А я, тем временем, все еще посматриваю в сторону zsh и все надеюсь как-нибудь перебраться на него в качестве каждодневного шелла.

Реклама

Vim на Mac Os X 10.6

Март 18, 2010

Если не сильно заморачиваться, то в поставке Os X уже есть вим. Но он там сильно урезанный и работать в нем подолгу просто не реально. Хотя бы потому, что он собран без поддержки GUI, а значит никакие красивые темки (с помощью CSApprox) вам установить не удастся. Ну а без темок жизнь не жизнь и работа не работа.

Добрые люди собирают приложение под нехитрым названием MacVim, которое представляет собой обычное GUI-Vim типа GVim. Но, к сожалению, вы не можете использовать его в коммандной строке (можете, конечно, но об этом позже), но самое главное, что вам не дают свободы при конфигурировании, например включить интерпретаторы питона и руби. Поэтому все приходится делать самому, благо на сайте приведена подробная инструкция по сборке, так что ошибиться особо не получится. Для ленивых вот ее краткое содержание


1. git clone git://repo.or.cz/MacVim.git vim7
2. cd vim7/src
3. ./configure \
--with-macarchs=i386 \
--with-features=huge \
--enable-pythoninterp \
--enable-rubyinterp \
--enable-cscope \
--enable-multibyte \
--enable-gui \
--with-macsdk=10.6
4. make
5. open MacVim/build/Release/MacVim.app

Таким образом, мы получаем наш любимый Vim таким, каким мы хотим его видеть. В данном случае, это 32-битный билд, с питоном, руби, cscope и GUI. Что ж еще для счастья надо! А надо, чтобы можно было стартовать его из коммандной строки, причем иметь порядочный терминальный вим, а не окошечный =) Нет ничего проще. Для начала стоит скопировать MacVim.app в папку /Applications и в файл ~/.profile стоит добавить одну строчку:

alias vim=/Applications/MacVim.app/Contents/MacOS/Vim

Все, теперь ничто не помешает поставить все любимые плагины и темку RailsCast =)

Стоит добавить, что для корректной работы Vim его необходимо запускать не в стандартном Terminal, а в iTerm

RubyOnRails и MySQL на Mac Os X

Март 17, 2009

В поставке MacOsX уже идет Ruby 1.8.6 и Rails 1.2.3. Рельсы обновляются на раз sudo gem install rails. Если есть желание, всегда можно пересобрать и Ruby.

При установке MySQL gem я столкнулся с парой проблем. Во-первых, используя MAMP, я обрек себя на отсутствие библиотек MySQL, необходимых для сборки gem. Для исправления ситуации надо просто скачать MySQL, причем качать надо x86-версию, т.к. в противном случае можно получить вот такое:
dyld: lazy symbol binding failed: Symbol not found: mysqlinit
С чем вообще непонятно что делать =) Это конфликты Ruby_x86 и MySQL_x86_64, насколько я понял. Можно с этим побороться, но мне как-то не хотелось лишних телодвижений.

Во-вторых, после скачивания и установки правильного MySQL инсталлировать gem лучше коммандой
sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Так он сходу подхватывает все, что нужно и не выдает всякие глупости, типа

    checking for main() in m.lib... yes
    checking for mysql_query() in mysqlclient.lib... no
    checking for main() in z.lib... no
    checking for mysql_query() in mysqlclient.lib... no
    checking for main() in socket.lib... no
    checking for mysql_query() in mysqlclient.lib... no
    checking for main() in nsl.lib... no
    checking for mysql_query() in mysqlclient.lib... no

И, наконец, последний взмах. Если нет желания использовать установленный MySQL и есть желание продолжать использовать настроенный MAMP, то в /ruby_app/config/database.yml следует вписать socket: /Applications/MAMP/tmp/mysql/mysql.sock, тогда будет подхватываться нужный сокет rake db не будет жаловаться, что ему чего-то не хватает =)

MacOsX и весь нужный софт. Заметка свитчера.

Январь 24, 2009

Недолго побаловавшись с хакинтошем, я решил, что пора уже перестать быть латентным макофилом и выходить из тени =) По случаю собравшись в Испанию на каникулы, прикупил себе там отличный макБукПро. Причем, я заказывал его с сайта AppleStore со студенческой скидкой и амереканской клавиатурой, потому что не переношу любые другие раскладки на аплевских продуктах. Эти ужасные Г-образные enter’ы и короткие левые шифты внушают мне отвращение =)
По случаю, уже в мАскве прикупил себе Пога, чтобы почитывать его и набираться мудрости и по приезду сел обустраивать из мака рабочее место.
Надо сказать, что make fun на маке вообще феерично, он для этого просто создан. А вот для того, чтобы работать, надо поднапрячься =) Ниже я приведу список .app, которые я установил в процессе обустройства, чтобы не забыть. Мой блог — моя записная книжка, но может еще кому пригодится. Единственный вопрос, который меня очень волнует, как сделать так, чтобы на клавиатуре появилась буква «ё», которой мне очень не хватает =/

Уже пользуюсь:

Adium – почти безальтернативный icq-клиент.
AlarmClock — простой и бесплатный будильник, способный вывести ноут из слипа.
AppCleaner – просто ищет в системе «ошметки» программ для деинсталляции.
CyberDuck – отличный ftp-клиент, который умело интегрируется с TextMate и еще пачкой редакторов.
DEVONthink — программа для складирования текстов/картинок/etc. По заверению авторов обладает AI, который ничего не знает про русский язык и даже искать толком не умеет. Но вот для английских текстов очень удобна.
DropBox — недавно обнаружил этот сервис, позволяющий не таскать с собой флешку. Он создает папку на локальном компе и все время синхронизирует ее с сервером. Из этой папки прекрасно запускаются программы (например, qip, логи которого я предпочитаю всегда иметь под рукой). Плюс сохраняется версионность для файлов и синхронизация происходит инкрементальная.
Firefox – еще не стал моим браузером по-умолчанию, просто для него пока мало работы, а по скорости меня очень радует WebKit.
FSEventer — маленькая утилитка, единственная назначение которой показывать что в даныый момент происходит в файловой системе.
Eclipse – про него, вообще-то надо писать отдельно. Я начал очередной процесс схождения с этим редактором. Вот пара отличных ссылок для сомневающихся.
Glims – плагин для Safari, который, к сожалению, не работает в WebKit’е, но очень полезен.
iBank – мне, как человеку привыкшему каждую денежную транзакцию заносить в GnuCash программа для учета финансов была жизненно необходима. Эта оказалась хорошим кандидатом и прижилась. Хотя, жаль, что нет нативного GnuCash’а, я к нему уже привязался =)
iRedLite — неслучайно, а просто так купил себе Apple Remote, который сам по себе умеет управлять Front Row, iTunes и Keynote. Но с этой программкой количество поддерживаемых приложений заметно увеличивается. Хотя главное, что при помощи простейшего Apple Script она позволяет создавать свои профили.
KeePassX – программка-хранитель-паролей. Давно сижу на этой серии. Есть клиенты под винду/мак/линукс.
MAMP – сборка для ленивых, включающая в себя Apache, MySQL и PHP с удобной контрольной панелью.
Perian – незаменивый набор кодеков для QuickTimePlayer, позволяющая ему играть все форматы чуть менее, чем полностью.
QuickSilver – пожалуй, самый знаменитый launcher, способный на многое при умелом использовании.
Skype – ну тут все банально.
TextMate – editor of choice, сделанный в полной гармонии с unix-way. Для тех, кто не осилил Emacs и Vi =) Одна из двух программ, наравне с QuickSilver, ради которой стоит переходить на мак =)
ThinkingRock – мой незаменимый gtd-планнер для разгребания ежедневной рутины.
Things – gtd-планнер, на который я все же променял ThinkingRock. Пусть он меньше следует труЪGTD, но зато он умет экспортировать в iCal ToDo, использует тэги для всего и умеет хранить ссылки на письма, веб-страницы и файлы на компе. Еще посматриваю в сторону OmniFocus, но думаю, остановлюсь пока.
TimeLog — программа для учета рабочего времени. Из плюсов — синхронизация с iCal, которая проявляется в том, что TimeLog умеет забирать из iCal ToDo-записи (которые, к слову, туда умеет экспортировать Things) и заполнять календарики событиями, которые записывать. Описание немного сумбурное, но программа безусловно хороша =)
μTorrent – еще один любимиц с самой винды. Даже буковку μ не поленился скопировать =)
VirtualBox – бесплатный заменитель Parallels и VMWare, взятый под крыло компанией Sun и находящийся сейчас в активной разработке.
VLC – это я уже с линукса притащил. Гибок в настройке и открывает то, что не поддалось QuickTimePlayer.
XLD – отличный перекодировщик музыки. Прекрасно перегоняет чуждые маку flac и ape в более привычный Apple Lossless.

Еще не попробовал:

Butler – один из launcher’ов, которые хочется попробовать. Пока очень хватает Spotlight.
Delicious Library 2 – каталогизатор всего и вся. Умеет сканировать штрих-коды, чем меня просто феерично удивил. Русские книги почти не распознает, т.к. информацию берет с Amazon’а.
HandBrake – должен по слухам быть хорошим кодировщиком для фильмов.
MacPorts – для ностальгирующих по феерическому линукс-сексу. Пока не воспользовался, держу на случай дождливых дней =)

Попрообовал и отказался:

MacFreelance – что-то для контроля выполнения тасков и выставления счетов. Оказалась какой-то черезчур навороченой с одной стороны и ущербной с другой. Отказался, т.к. счетов мне выставлять не надо, а вот трекить там проекты неудобно.
SequelPro – манагер БД MySQL, может оказаться удобнее, чем консоль…вряд ли =) Так и случилось. К консоли я уже слишком привык. Но пусть будет, вдруг мне захочется мышкой повозить =)
WebKit – после выхода Safari 4 beta, как-то спокойно переполз на него.

Обновляемся до MacOsX 10.5.5

Сентябрь 29, 2008

Если, вдруг, кто не знает, то последняя версия макоси сейчас это 10.5.5 Став счастливым обладателем установленного хакинтоша версии 10.5.2, я обнаружил, что софт, ради которого я и затеял всё это безумие, требует минимум 10.5.4.
Это вселило в меня некоторую печаль. Особенно после того, как я узнал, что обновиться до нужной мне версии на AMD малореально.
Благо, буквально на позавчера был выпущен iDeneb v1.3, который я «бысто» слил с Demonoid’а, параллельно читая неутешительные комментарии о том, что всё плохо и на AMD он не ставиться и вообще нифига для них не предназначен.
Буквально потеряв всякую надежду, я всё-таки залил его на диск и начал уже приевшийся мне процесс установки =) Инсталлер отличается незначительно, зато вот при выборе дров ничего не было проставлено по-умолчанию, ну да я уже разбирался что к чему.
Поставилось всё со второго раза =) Я использовал:

  • sleep-kernel-9.2 (проверенное ядро)
  • AMD patch
  • Azalia Sound (2ch. sound)

Всё.  Никаких дров под видюху или сетевую я не ставил, зная, что они всё равно работать не будут. Установилось всё бодро, но вот загружаться не захотело. Залипало где-то посередине выдавая невразумительные сообщения. Спасла опция «-x», которая загружает систему в Safe Mode. Набирая при каждой загрузке этот флажок, я установил дрова на сетевуху и видеокарту. С помощью тех же танцев, которые я описывал в предыдущей заметке. После установки дров на видюху, MacOsX загрузилась нормально. И теперь нормально работает. Правда, в процессе загрузки драйвер сетевухи жалуется, что моя карта не поддерживается…но это не мешает ему работать =)
Теперь надо только перенакатить GRUB, чтобы всё вернулось на круги своя. А сделать это до безобразия просто =) Загружаемся с live-(cd|dvd) (я грузился с kubuntu), открываем консоль и пишем:

sudo grub
grub> find /boot/grub/stage2
(hd0,2) - ответ grub
grub> root (hd0,2)
grub> setup (hd0)
grub> quit

Тут я думаю, все смогут разобраться, что команды root и setup принимают те аргументы, которые выводит нам find.

Ubuntu 8.10, WinXP, MacOS X 10.5 на одном hdd.

Сентябрь 27, 2008

По ряду сложных причин мне понадобилось установить OS X. Учитывая, что Apple вот-вот должна обновить свою линейку ноутов, я решил подождать с покупкой и поэкспериментировать пока с хакинтошем. Благо информации в сети навалом и рапорты об успешных установках на системы подобные моей я встречал. Сама система представляет собой следующее скопление железок:

  • AMD Athlon 64 3800+
  • ASUS M2NPV-VM
  • OnBoard Video NVidia 6150
  • OnBoard Audio
  • 160GB IDE HDD
  • 1GB RAM

Такая довольно-таки старая и бюджетная конфигурация. Но довольно банальная, и это мне сильно помогло гуглить.

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

  1. WinXP
  2. MacOS X
  3. Ubuntu

Объясняется этот порядок порядочностью систем по отношению к MBR и возможностям их загрузчиков. Диск пришлось форматнуть начисто, для того, чтобы разбить его в соответствии с новыми смешными требованиями. Возможно, всё могло бы быть проще, но я поступил именно так. Диск разбивается следующим образом:

  1. Primary NTFS (WinXP)
  2. Primary FAT32 (MacOS X)
  3. Extended ext3, swap (Ubuntu etc.)

Т.е. для винды и макоси лучше создавать Primary партиции, тогда как Ubuntu фиолетово куда ставиться, и ему я отдал Extended. Причем хитро создал раздел /home в конце партиции, чтобы при желании можно было его без проблем отресайзить и выделить место под что-нибудь ещё =)

Винда ставиться первой, прописывает себя в MBR и живет спокойно. Здесь подводных камней, надеюсь ни у кого не возникало. Далее в ход идет dvd с Kalyway 10.5.2 (выбор совершен после анализа числа установок).

Грузимся с диска, запускается установщик. Лезем в меню и выбираем тулзу для работы с дисками (Utilities -> «Disk Utilities»). Выбираем наш второй раздел (Primary FAT32), выбираем Erase и выбираем «Mac OS Extended Journaled» в качестве файловой системы и называем партицию как-нибудь простенько, типа «macosx». Просим всё почистить (5 секунд) и закрываем приложение. Проваливаемся обратно в установщика и нажимая «далее» выбираем нашу недавно-созданную партицию. Теперь главное не нажать «установить», а ткнуть на кнопку «Customize». Здесь нашему вниманию представиться всеобразие драйверов/ядер/приложений/патчей. И именно от этих галочек зависит запуститься ли OS X =) Некоторые подбирают их по 15 установок. Мне понадобилось всего 5 (пять)! =)

Если вы являетесь счастливым обладателем процессора AMD, то надо очень внимательно просмотреть всё дерево и поставить галочки. Помимо тех, что были поставлены изначально, я выставил следующие:

  • NVinject (первый)
  • SSE2_Jas1048_ACPI_APIC (may or not work) (все)
  • AMD_1052_Patches (select patch 1 or patch 2)
    • AMD_1052_Patch_test_2
    • -legacy flag

Пока я нашел этот правильный список, дальнейшее желание экспериментировать у меня как-то пропало, поэтому всякие TimeMachine меня не привлекли =)

Всё. Теперь можно нажать «Установить» и отправляться пить чай где-то на полчаса. Только надо отследить и вовремя вытащить dvd, чтобы не грузиться в него по второму разу. OS X вежливо воткнет свой загрузчик в MBR, пропишет в него WinXP и вуаля, у нас есть 2 системы. Правда OS X надобно ещё попилить =)

А пилить есть что… Леопард, конечно запустился, но out of the box не работали следующие вещи:

  • Видео только 1024х768 и надпись «IGPU family not mathced» при загрузке
  • Интернета нет, ибо нет сетевой карты =)

Вот это и будем допиливать. Для начала разберемся с инетом, ибо без него жизнь не мила =)

Учитывая, что чипсет nForce как-то не сильно в почете у Apple, драйвера какбэ существуют, но их какбэ и нет. Начинаюстя танцы с бубном. Вообще надо отдать должное первопроходцам и искателям решений, ибо решения, мягко говоря, не очевидны =) Итак, по шагам:

  1. Идем на InsaneMac, если вы ещё не там =)
  2. Находим и качаем forcedeth_0.3_leopard.zip и nForceEthernetController.kext.zip
  3. Распаковываем (в OS X) их и пыщьнув правой кнопкой мыши выбираем «Show package content» или что-то вроде того. Пыщьать надо на файлах nForceEthernetController.kext и ./force.../build/release/forcedeath.kext
  4. Аккуратно просматривая состав пакета, находим файлик Info.plist Он встречается по два раза в каждом из пакетов. Открываем его в любом редакторе (TextEdit, TextMate).
  5. Это xml-файлы. Добавляем в элемент «IOPCIPrimaryMatch» строку «0x026910DE» (это ID нашего устройства, чтобы совпало). Сохраняем все 4 файла в этих же пакетах.
  6. Далее находим, скачиваем, устанавливаем Kext Helper, который повзолит нам просто и безболезенно устанавлить эти драйвера.
  7. Перетаскиваем на него сначала forcedeath.kext, вбиваем пароль и пыщьаем «установить». Он рапортует об установке и предлагает скрестить пальцы и перегрузиться. На этом счастливом моменте леопард обнаруживает нашу сетевуху, предлагает настроить её и зависает намертво. Ресетим его.
  8. Далее мы можем словить kernel panic. А можем и не словить (у меня не было =) Но всё ж лучше грузить леопард в Safe Mode (для этого при загрузке надо набрать «-x»)
  9. Загружаемся, и удаляем файлик forcedeath.kext из /System/Library/Extensions самым наглым образом =) Т.е. тащим в корзину.
  10. Опять грузим Kext Helper и перетаскиваем на него второй наш драйвер nForceEthernetController.kext Опять скрещиваем пальцы и вот тут (!!!) очень важный момент. Надо не просто перегрузиться. Надо…
  11. Выключить компьютер и отсоединить его от сети.
  12. Это настолько важный момент, что я его даже выделил. Потому что без этого может ничего не заработать. У меня, например, карточка какбэ в системе присутствовала, но по DHCP получала что-то непотребное и даже до роутера я не мог достучаться.
  13. Интернет появляется =)

Теперь начинаем пилить видео. Наши 1024х768 и надпись IGPU family not mathced какбэ говорят нам, что карта наша встроенная несчастная nVidia 6150 с шареной памятью маком была проигнорирована. И он перешел в наиболее безопасный и общий режим. А всё потому, что маки используют интеловские карты с шареной памятью, а не nVidia. И вообще, все пришли к выводу, что чтобы заставить эти видюхи функционировать правильно, надо свои дрова писать. Очень неприятный момент =) Но кто-то вновь изобрел танец, благодаря которому можно получить нормлаьное разрешение. Правда не будет никаких qe/ci (это такие штуки, чтобы было красиво), но работать вполне можно. Вот стенография танца:

  1. Грузим MacVidia 1.0.81 (разработка прекращена, поэтому рапидШара)
  2. Бэкапим всё из папки /System/Library/Extensions типа Geforce*.kext и NV*.kext
  3. Ставим MacVidia, но не перегружаемся.
  4. Открываем терминал, идем в /System/Library/Extensions, пишем sudo mkdir NVBack, sudo mv ./NV*.plugin ./NVBack, sudo mv ./NV*.bundle ./NVBack
  5. И вот теперь уже перегружаемся.

Таким образом, мы получаем в пользование разрешения выше 1024, и никаких больше IGPU family not mathced на загрузке. Правда резковато всё выглядит.

Теперь, когда OS X у нас функционирует почти в полном объеме, осталось доставить Ubuntu. Хотел я побаловаться с Kubuntu, да что-то раздумал. Ubuntu ставиться привычным образом и благополучно добавляет WinXP в menu.lst для grub’а (да, всё ж это самый лучший загрузчик =)

Ну а нам остается только дописать в это меню MacOS X:

title Mac OS X
rootnoverify (hd0,2)
makeactive
chainloader +1

Et voila! У нас есть три системы, которые вполне себе успешно грузятся и работают. И да, кстати, установив Ubuntu 8.04, я не удержался и вписал sudo update-manager -d, получив 8.10 Намного лучше, чем год назад, надо сказать. Всё работает и функционирует =)

Ну и напоследок пара ссылок на ресурсы, где все танцы уже описаны и запротоколированы, если, конечно, вы не являетесь обладателем самопального железа или каких-то экзотических комплектующих =)

ПКМГ. rsync по ssh для обновления сайта.

Сентябрь 14, 2008

В ноябре 2007 года я публиковал roadmap проекта-мечты. Прошел год, жизнь внесла свои коррективы, я узнал немного нового. Поэтому видиние того, как хотелось бы разрабатывать сайты чуть-чуть изменилось. Попробую его структурировать, чтобы и самому было понятнее =)

CIS — continuous integration server

Начинать придется с этой малопонятной штуки. Насколько я понял из русской и английской (лучше) Wiki эту штуку придумали незабвенные Фаулер с Беком. Где-то на рубеже веков. Придумали для всеяЫнтерпрайзЖавы, но идея ожила и распространилась дальше. Даже книга на русском есть.

Честно скажу, этой штукой я займусь не скоро, но уж больно интересна идея. Хорошие обсуждения можно найти на форуме по гибким методологиям, где идут очень интересные обсуждения, заставившие меня почувтсовать, что я работаю в детском саду, а не в девелоперской конторе 😉

Но для начала я вытащил из всей этой идеи Phing. Те, кто работал с всеяЫнтерпрайзЖабой, знают, что есть такая штука, как Ant. Это такой трудолюбивый муравей, которого создали люди, считающие, что xml намного понятнее, чем файлы make. В двух словах, он нужен для того, чтобы билдить из исходного кода то, что можно потом задеплоить. Вы ещё здесь? =)

Так вот меня этот Phing здорово зацепил, ибо я всегда любил всё автоматизировать. Ведь однажды обученный компьютер ошибается гораздо реже, чем человек. Надо просто объяснить ему что делать =) В принципе, у нас в пыхоРазработке не сильно много проблем, не то что в ынтырпрайзЖабе. Но тоже хватает. И среды dev/prd отличаются, и изменения в DB надо учитывать, короче, есть где развернуться автоматизатору. Можно держать все изменения в голове и обновлять только нужные файлики, а базы обновлять одновременно. Можно вообще на prd разрабатывать =) Но не зря же мы svn используем и вообще пытаемся отмыться от приставки «быдло» в слове кодинг =)

Временным решением пробдем с конфигами и прочими паролями к БД может быть привязка к рабочей директории. Об этом хорошо писал Кузьма Феськов в последнем PHPInside. Где-то год назад. Костыль, но всё ж лучше, чем каждый раз вспоминать, что не надо заливать разработческий конфиг на продуктивный сервер =)

Далеко меня уже занесло, постараемся вернуться назад. Итак. План теперь таков:

  1. Пишем код, тестируем, отлаживаем. Добиваемся работоспособности.
  2. Коммитим в svn
  3. В post-commit hook вызываем phing
  4. Phing пакует наш проект в продуктивный вид, заменяя файлики конфигов, убирая ненужные всякие фишки svn и Eclipse.
  5. Лезем (не сами, скриптом) на продуктив. Пакуем текущую версию сайта в архив. Сливаем себе.
  6. Заливаем изменения с помощью rsync over ssh.

По-моему неплохой план =) первые 2 пункта уже вроде как отлажены. Осталось разрбраться с остальными. Так как сегодня вечер воскресенья, пришлось взять самый маленький и скучный шестой пункт =)

Rsync over ssh

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

А дальше чистая bash-магия, которая выглядит вот так (подсмотрено здесь, одна строка!):
rsync -zrptL --delete-after -e "ssh" /local/folder/ remote-server.ru:/remote/folder

За разъяснениями — в man или источник. Только будте аккуратны. Оно удаляет без права переписки. Именно поэтому я хочу для начала бэкап наладить, а потом уже это использовать это заклинание =) Кстати, обращайте внимание на слэшики в конце путей. Они важнее, чем вы думаете.

Именно за это я люблю *nix. Весь вечер ты читаешь маны, бродишь по сайтам, читаешь чуть ли не китайские форумы. Зато потом одной строкой ты захватываешь мир. Продложение следует.

Клавиатуры Apple. Доработка напильником.

Сентябрь 14, 2008

Разумеется, сами клавиатуры я не допиливал =) Чуть пришлось повозиться с тем, чтобы они нормально работали. Но всемогущий гугл подбросил несколько полезных ссылок и всё было довольно просто.

Apple Wireless Keyboard и Windows

Для начала, я разобрался с беспроводной красавицей на работе. Для повторений моих действий стоит пройти ссылке.

Эта статья посвящена работе кнопочки Fn, которая совершенно не спешит работать под Windows. Для обеспечения её работоспособности, умные люди написали скрипт к хорошей программе и создали .dll-файлик. Вообще, работа проделана колоссальная. Видимо, не одному мне эти клавиатуры нравятся =)

Ещё один хороший человек попытался создать вариант для ленивых, но у меня он не завелся. Может, что-нибудь не так делал =)

После всех манипуляций, клавиатура отлично работает и понимает заданные hot-key’и.

Есть, правда, ещё один вариант. Думаю, многие знают про BootCamp. Т.е. Apple обеспечивает своему железу работоспособность под Windows. Следовательно, есть драйвера. Правда есть они только на дисках с Leopard и достать их просто так не получается. Но в очередной раз нашелся добрый человек, который всё сделал за нас. Только вот экспериментировать я с ними не стал. Во-первых русского языка почему-то нет (но это, я думаю, решаемо), а во-вторых если всё работает, то лучше не чинить =)

Apple Wired Keyboard и Ubuntu 8.04

С проводным вариантом под убунтой было ещё меньше проблем. Всё подхватилось и работает. Правда, кнопки F1-F19 работали в инвертированном режиме. Т.е. не как кнопки, а как замапленные на них медиаКоманды. Решение этой проблемы хорошо представленно даже в рунете. Правда медиаКлавиши после этих махинаций не работают, но они мне и не нужны =)

Apple Wireless Keyboard для PC.

Сентябрь 9, 2008

Давно являясь латентным маководом, сидя под убунтой дома и используя винду на работе (не по своей воле ;), я тем не менее давно раздумываю над покупкой MPB. Сегодня Стив, возможно представит нам новую линейку MPB или не представит, там посмотрим.

В силу стремления к покупке, частенько почитываю ru_macsale и буквально вчера наткнулся на выгодное предложение пары эпловских клавиатур, которые были привезены из Амереки и не понадобились. Т.к. печатаю я вслепую, русские буквы мне совершенно не принципиальны, поэтому сегодня, пробираясь под дождем, я притащил обе клавиатуры на работу.

Беспроводную я планировал использовать с рабочим ноутом, ну а проводную использовать дома. И вот настал момент истины. Т.е. привязки эпловской клавы к рабочему ноуту HP. Накануне, поизучав форумы и гугль, я пришел к выводу, что проблемы будут, но всё разрешимо 😉

Собственно, так и случилось. Коннектиться она не хотела вообще никак. Точнее, это такой изысканный баг. Предлагает вводить ключ для создания пары, не показывает его и ни на что не реагирует. Так ведет себя встроенный HP’шный блутус с применением драйверов widcomm 5.1.0.2900.

Решений было предложено несколько (большой тред). Я перепробовал всё подряд, поэтому не знаю, что в итоге привело к победе =) Но куммулятивный эффект налицо.

Учитывая, что ноут у меня старый (compaq nx8220), обновлений HP для него не выпускает. Поэтому проблема решилась скачиванием драйвера версии 5.1.0.3400 с (sic!) рапидшары. Не смотря на все опасения, всё прошло гладко и сейчас на ней я и печатаю эту заметку. Если к тому времени, как до этой статьи доберется кто-нибудь страждущий, ссылка уйдет — пишите мне, я куда-нибудь залью это самый драйвер.

Самая магия, кстати, состоит в том, что, когда вам предлагают вводить циферки для сопряжения, вводить их надо на другой клавиатуре. А вот энтер жать на маковской. Вот это реально снесло мне башню =)

Oracle, JDeveloper и PL/SQL

Август 10, 2008

Так уж получилось, что я решил чуть-чуть сместить фокус своей девелоперской деятельности в сторону Oracle PL/SQL. Нет, мне совершенно не надоел веб, просто у меня есть свой проект Smart Masses, который представляет собой магазин для гиков и сочувствующих имени доктора Жаба, и мне его более чем достаточно для экспериментов.
А учитывая, что в конторе, где я работаю всегда есть возможность выбора проекта, я решил «прокачать» знания по sql и pl/sql, с которым до этого не работал. Для начала оформил себе оракловые курсы по банальному sql и уложил все знания в систему =) Учиться понравилось. Вчера съездил в Олимпийский и закупил литературы по Oracle PL/SQL и немного Тома Кайта для души =)

Сегодня уже установил себе Oracle 10g XE на Ubuntu 8.04 и начал вдумчиво читать литературу и выполнять примеры.

У оракла есть некая IDE с незамысловатым названием JDeveloper. Не то, чтобы я горю желанием изучить ещё одну IDE, но посмотреть на неё захотелось. Ставиться она не без бубна, но официального руководства вполне достаточно. Единственная проблема возникает, когда пытаешься законнектиться к базе из неё. Проблема выражается двумя ошибками:


ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

И ничего не признает. Выставление параметра NLS_LANG в профиле баша ничего не дает. После многочисленных расследований и поисков в гугле решение было найдено. В файл jdev.conf необходимо добавить пару строк:

AddVMOption -Duser.language=en
AddVMOption -Duser.region=us

Оказывается Ынтырпрайз Жава не очень признает всякие NLS_LANG и берет параметры прямо из среды обитания. И эти параметры оказываются неверными. Этот «хак» подходит для любых IDE, написанных на этом чудесном кросс-платформенном языке и использующихся для разработки под Oracle.

И вот ещё одна ссылка по которой можно почитать чуть более объемное описание проблемы и способы её решения. Отличный статья, рекомендую.

…тем же вечером…

Продолжая копать в нужном направлении, нарвался на SqlDeveloper, выпускаемый Oracle. Который не несет в себе столько уг, как jDeveloper. При установке был капризен и требовал путей к jvm, не смотря на то, что она была прописана в PATH. Ещё пытался (неудачно) создавать файл jdk в дирректории ~/.sqldeveloper/ и писать туда этот самый путь, чтобы не спрашивать каждый раз при старте. Но что-то у него не задавалось. Пришлось создать ему этот файлик, раздать на него 777 (на всякий случай =) и вот тогда, он туда уже всё написал.

Ну и баг NLS data files лечился тем же способом. В sqldeveloper.conf добавились те же магические строки =) Вот такой вот он…ЫнтЫрпрайз.