До недавних времен первым делом после создания git-репозитария я добавлял в .gitignore разнообразные служебные и резервные файлы, которыми IDE и редакторы засоряют проект.
Так вот, сделать это можно раз и навсегда, поскольку git поддерживает глобальный .gitignore.
Сотоварищей он не спасет. По-моему это вполне законно – инструментарий у каждого свой, поэтому и резервные копии у каждого свои.
Так вот, сначала сообщаем гиту о наличии глобального файла .gitignore:
git config --global core.excludesfile ~/.gitignore
…а потом отправляем в ~/.gitignore список ненавистных файлов. У меня такой:
*.*.sw*
*~
*.log
Thumbs.db
nbproject
Подробнее о gitignore
Если бы я знал, что программы для Symbian можно писать на таком удобном API к такому простому языку, как Python, я бы вообще никогда не задумывался о выборе телефона, а сразу брал Нокию (любую Нокию на Symbian S60, а то и SE на UIQ). Короче, взялся пробовать.
Все нижеописанное проверялось на Nokia 5800 + Ubuntu Karmic. С Питоном я никогда дел не имел, кроме разве что недолгого колупания в Django, так что про него могу говорить глупости. Поправляйте, пожалуйста.
читать дальше →
-if @we_decide_to_implement_some_feature
%div markup related to the feature
Или же, на менее человечном языке
<% if @we_decide_to_implement_some_feature %>
markup goes here
<% end %>
Само собой, неопределенная инстанс-переменная возвращает nil и условие не проходит.
Через пару лет открываем код, видим переменную, внедряем функционал.
Что касается непосредственно разработки на Rails:
- zsh – осваиваю понемногу;
- Vim – универсальный редактор;
- Ruby Enterprise Edition – тешу себя мыслью, что он быстрее обычного руби;
- Apache + Passenger – очень удобно, подхватывает (почти все) изменения автоматически, гораздо удобнее монгрела/вебрика, которые надо перезапускать;
- Firefox – потому что нет альтернатив;
- Firebug – удобно аякс отлаживать, ибо и json-, и html- ответы можно смотреть «на месте»;
- meld – моя любимая диффалка/мерджилка, прописана в git mergetool.
Остальное:
- Gnome – хотя бы потому, что Firefox;
- Gnome-Do – вместо панели задач, дока, горячих клавиш и ярлыков;
- del.icio.us – например, чтобы синхронизироваться с Firefox под Windows;
- VLC – играет любые фильмы;
- mocp – играет музыку, не навязывая какой-то библиотеки и всяких умных плейлистов;
- Picasa – просто умница.
Бывает такое, что путаешь свою версию сайта с той, что работает в миру? Например, если они открыты в соседних вкладках браузера? Эта проблема решается ровно одной строчкой в конфиге Apache:
AliasMatch ^/favicon\.ico$ "/location/of/dev_favicon.ico"
После этого (и при включенном mod_alias, как это обычно бывает) у всех локальных сайтов будет одна и та же фавиконка. Я ее сделал красной:
.
Еще можно подменять им стили с помощью Stylish, типа:
@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("localhost")
{
html {border: solid 5px red !important} /* сложно не заметить толстую красную рамку */
}
Тоже работает. Но придется для каждого сайта (домена) прописывать отдельно. Если только ты не размещаешь все dev-сайты в какой-нибудь особенной доменной зоне – я, например, привык класть их в .dev. Тогда вообще все просто – заменяешь в стиле localhost на dev и стиль подхватывается на всех сайтах.
В общем, понадобится sshfs – штука для монтирования ssh-каталогов в локальные. Конечно, она есть в репозитариях Ubuntu.
В смонтированном таким образом каталоге можно выполнять практически любые утилиты, имеющиеся на локальной машине. Например, git pull.
# Монтируем каталог
mkdir ssh-export
sshfs -o workaround=rename the.deploy.server:/the/deploy/path ssh-export
cd ssh-export
# Обновляем
git pull
# Отмонтировываем
cd ..
fusermount -u ssh-export
rm -rf ssh-export
Причина использования workaround=rename описана в Git FAQ.
Замечу, что скорость этого способа все же меньше, чем у rsync, потому что rsync сжимает данные. Зато он гораздо удобнее и позволяет выкладывать код на сервер любым душе угодным образом.
Еще я пробовал использовать git через FTP с помощью curlftpfs, но, увы, git не хочет работать без возможности залочить файл.
Другие способы обойтись без системы контроля версий – в статье «Грамотное разворачивание сайта без VCS».
Начинаю цикл обзора моих рабочих инструментов. На это меня натолкнул пост Джеймиса Бака про то, что свои инструменты надо не просто знать – в них нужно разбираться.
Будет ли это оффтопиком? Да нет, конечно! Я же о веб-разработке буду писать. Думаю, коллегам понравится.
Обзор будет из четырех частей: 1) преимущества предмета; 2) недостатки; 3) почему я использую именно его; 4) как узнать о нем что-то новое. Естественно, все это субъективно, прошу комментировать, критиковать и подвергать сомнению.
Начну я с операционки, то есть с Linux (клиентской операционки). Я работаю на Ubuntu Linux 9.04.
читать дальше →
Захотелось мне написать нечто непосредственно полезное.
Немного логики
Если несколько твоих знакомых знакомы с Васей Пупкиным, то с большой вероятностью ты тоже с ним знаком. Логично?
Реализация
На «Моем круге», например есть такое понятие, как «второй круг» – друзья твоих друзей. На Вконтакте «второй круг» просто так не посмотришь. То есть можно, конечно, лазить по друзьям и высматривать знакомые лица (если Лицо не поставило идиотскую аватарку) и имена (если Лицо не пытается анонимизироваться). У меня на это нет времени.
Задача: написать скрипт, который собирает «второй круг» автоматически и сортирует по числу общих знакомых.
Много букoв?
Можешь просто скачать работающий скрипт с Github. В него только нужно дописать свои собственные логин/пароль. Кроме того, пригодятся гемы: mechanize, json, haml.
Я бы сделал онлайн-версию, но, боюсь, паранойя помешает тебе им воспользоваться.
читать дальше →
Специально для всех сомневающихся и режущих мой слух словом «рАби»:
Спасибо Яндексу за это.
Ситуация: есть сервер с доступом по SSH и без каких-либо дополнительных программных средств. Есть код в git-репозитарии (даже не важно, что в git, главное, что под системой контроля версий). Задача: поместить код на сервер и периодически его обновлять, да так, чтоб не руками, чтоб не стыдно было, чтоб не гонять полную копию каждый раз. Займемся.
читать дальше →