RuNIX.org — планета блогов о *NIX на русском языке

22.11.2008

PhoeniX, гикнутый птиц

Цена линуксов

Вот тут наши горячие головы и чистые сердца спорят на тему того, что негоже брать за срезы обновлений линукса бабло.
Опаментайтес, пан! (ц) Во-первых, любой труд должен быть оплачен. Во-вторых - это же мечта всех опенсорщиков и им сочувствующих - на этом самом опенсорсе хоть шерсти клок.
Был со мной аналогичный случай. Обратился ко мне как-то человек, и попросил закачать что-то из линуксов. Выходила пара DVD или около. Я их засунул в торрент клиент, назначил время. Взял денег ровно за то время, пока канал был занят закачкой этих торрентов, как за аренду. Не думаю, что был неправ в этом случае. И человек, ко мне обратившийся, тоже так не думал. Потому что - какая у него могла быть альтернатива? Пойти в магазин и заплатить за прошлогодный дистр рублей 300-500 (есть у нас магазин такой - выбор достаточно большой но не совсем свежий). Долго и нудно клянчить на форуме местного LUG'а (дистр был какой-то непопулярный). Купить бюджетный анлим и тянуть неделю. Человек предпочёл получить комплексную услугу (о как загнул :) ) - поиск, закачку, прожиг и доставку до места встречи - за что и проголосовал кошельком, вполне разумной суммой. Кажется, в те же самые 200 руб.
А вы бы согласились оплатить такую услугу, буде она бы вам была нужна?

by PhoeniX (noreply@blogger.com) at 22.11.2008 06:31:00

Линукс штуки!

Krusader не показывыает русские буквы через fish

Обнаружил такую вот, ранее не замечаемую, ошибку. Оказывается, что krusader отображает файлы с русскими именами через ssh, используя неверную кодировку. И соответственно он их неправильно записывает. Из консоли ssh отлично все показывает и копирует.

P.S. Все оказалось более интереснее... Konqueror тоже показывает подобную фигню! Значит дело в Кедах?

P.P.S. Уря! Решилась проблема! Нашел все таки меню Select Remote Charset!

by puzan (noreply@blogger.com) at 22.11.2008 01:22:45

21.11.2008

заметки на манжетах

Updates

/*

'23Oz' Enlightenment-DR17 theme is updated to the 0.16.999.050 version of the Desktop Shell. Please grab it here:

Download page
Download theme file.

'2Be' theme also updated. Version to match the look of 'Sedation' is added. Please proceed to the download page and choose the one you like.

Regards,
sda

********

господа и дамы, мадамы и мусьё!

выложил на ваше растерзание обновлённые темки для E17-го. ссылки даны выше. пишите, коли чего не так.

удачи.


*/

by sda (noreply@blogger.com) at 21.11.2008 20:27:51

kernel panic in userspace » Runix

slow squid shutdown

  • belarusian
  • russian

Я бедный студент и не могу себе позволить сорить деньгами и купить точку доступа, чтобы с камрадом ходить в интернет нормально, посему мой ноутбук зачастую используется через ad-hoc wifi как прозрачно проксирующий шлюз.

Совсем уж нехорошо так жить, но что делать, со временем всё изменится. Я знаю. Тем не менее, на пути к решению всякой проблемы лежит куча трудностей. В этот раз трудность была кроме всего прочего со squid, который при остановке или перезагрузке довольно долго печатал точки в конце фразы

* Stopping squid …
* Waiting for squid to shutdown ..

Знаю, компьютер и сервисы перезапускать и выключать вообще не стоит. Но во-первых это ноутбук, а во-вторых, не те условия, чтобы он работал круглосуточно. А вся эта прелюдия к тому, что таймаут ожидания выставляется в конфиге squid как

shutdown_lifetime 5 second

Указанное значение (по умолчанию 3 секунды!) выставляет время ожидания закрытия уже открытых сокетов. Т.е. всё это время после остановки сервиса уже подключенные клиенты ещё будут получать данные. Для моего случая это вообще бесполезное значение, да и вообще всё это время новые запросы сервер принимать не будет, а это - лишний простой.

p.s.: расписал кучу туфты на строчку конфига, кошмар

by bobrik at 21.11.2008 19:20:16

librarian@blog:~$ » linux

О хостинге, суппорте и вообще о жизни по второму разу.

Сегодня пока ехал домой думал о недостатках спейсвебовского суппорта и нашего хостинга вообще, после этого поста на Хабре решил написать свои мысли достаточно открыто. У Спейсвеба недавно была отменена поддержка по icq, и суппорт дружно переехал в разработанный Live-chat. Его бета тестирование началось где то ещё в сентябре-октябре. Тогда он представлял ...

21.11.2008 19:15:49

Записки о Linux

День рождения Russian Fedora и судьба Tedora

Вчера, 20 ноября в МИФИ состоялось выступление одного из лидеров проекта Fedora Макса Спевака. В последнее время Red Hat крайне заинтересован российским рынком, поэтому на данном мероприятии присутствовал и директор Red Hat по Восточной и Центральной Европе Dirk-Peter van Leeuwen. Официальное мероприятие носило название “День рождения Russian Fedora”.

Russian Fedora

Я не буду описывать выступление, о нем уже много сказано у Миши Конника и Андрея Маркелова. Да и сам Макс тоже упомянул. Я поведаю о другом. Мы получили официальное согласие на выпуск нормального установочного диска с Fedora, который будет содержать кодеки, коммерческие видео драйверы, флеш, наконец.

Условий практически не было. Одним из них было не нарушать местное законодательство (до свидания шрифты и словари (по крайней мере до тех пор, пока не будет доказано обратное) на установочном диске. Только через сетевой репозиторий, правда тоже в процессе инсталляции их можно подхватить) и показать пользователю, что он сейчас ставит не истинную Fedora, а её респин. Так что мы изменим целых два логотипа в Anaconda и один сплеш и назовём установочный диск RussianFedora (пробел он то есть, а то его нет).

Вышесказанное означает, что Tedora переименовывается в Russian Fedora и выпускается с ведома Fedora.

Что касается других наших планов, то они рано или не рано будут опубликованы на сайте RussianFedora.ru. А планы это серьёзные, работа с ВУЗами, переводы различных документов (FAQ, Fedora Weekly News, Release Notes) , русский man-pages, статьи, Wiki, рассылка дисков и атрибутики, поддержка российских разработчиков, центр разработки Red Hat на базе ВНИИНС и др.

21.11.2008 19:01:37

Adept of a cult UBUNTU ©

Ubuntu? Arch!

После очередного обновления, Ubuntu стала ещё тяжелее и неповоротливее. На домашнем компутере (p4 2.6 ghz, 1024 ddr ram) это ещё не так заметно, но вот на рабочем (p4 2 ghz, 512 ddr 266) обновленная 8.10 еле ворочалась. Недовольным новым релизом убунты оказался не я один, на планете блогов runix проходили сообщения таких же недовольных, как и я. Среди такого рода сообщений, я прочитал заметку vonderer`а про Archlinux. Чем больше росло мое недовольство и разочарование очередным релизом убунты, тем больше мне хотелось попробовать arch. Попробовал. Понравилось!

На домашнем компьютере я обнаружил свободный винчестер, объем которого составил 750 Gb (бывает же :)), на этот винт я и поставил Arch. Полностью отказываться от Ubuntu в тот момент было рисковано, я не знал чего ждать от Arch. Заодно, имея одновременно две работающие системы на одном железе, я имел бы возможность сравнить их производительность.
Arch поставился легко и быстро, без иксов и DE. Затем, руководствуясь замечательным вики, я, спустя пару часов поставил все, что мне было нужно. А именно: alsa, xorg и шрифты, gnome c gdm, firefox, vlc, mplayer, ssh, pptpclient, rhythmbox, pidgin, gajim, темы и прочее.
Сразу вспомнились старые добрые времена ковыряния конфигов :) Справедливости ради, стоит отметить, что ковырять конфиги приходилось не сильно много, строго по делу и только на начальном этапе установки системы. Зато теперь в моем Arch есть только то, что нужно мне: никаких лишних сервисов, демонов, библиотек и пакетов. pacman также прост и удобен, как и apt-get.

Скорость работы и отзывчивости по субъективной оценке "на глаз" возросла на 20-30% ! Все стало шустрее, быстрее, резче, без задержек и задумчивости! То, что я ожидал от Arch, - получил сполна. Надежды оправдались и первые строки на http://archlinux.org.ru "Arch - Легкий, простой и гибкий дистрибутив." полностью подтвердились!

Спустя пару дней, я установил Arch на рабочем компьютере. Вместо gnome, я поставил lxde. Работает и не тормозит. Полностью установленная система с LXDE в качетсве DE, c alsa, с firefox, psi, gajim, pidgin, sshd, ntp, gedit, leafpad, mplayer, vlc, apache, php... занимает 2 Gb:
df -H
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/sda3 11G 2,0G 7,7G 21% /
none 260M 0 260M 0% /dev/shm
/dev/sda1 40M 8,8M 29M 24% /boot
/dev/sda4 9,5G 331M 8,7G 4% /home


Итого.
В плюсах:
- гибкость, легкость и скорость;
- менеджер пакетов с разрешением зависимостей и обновление системы одной командой;
- очень информативные и удобные вики, как на русском, так и на английском;
- отзывчивые и оперативные участники на форуме, как на нашем, так и на английском (проверено ;));
- многое другое :)
Минусы тоже есть, но они как-то формируются в отдельные пункты в силу того, что они несущественны и больше связаны с привычками.
Вполне возможно, что минусы обнаружатся (не бывает же идеальных систем, правда?) со временем. Во всяком случае, Ubuntu пока что остается на втором винте, на всякий случай. С Arch я ещё буду экспериментировать и изучать её.

p.s. а если мне так сильно понравится Arch, то что же делать с названием блога? о_0

by fabiaN (noreply@blogger.com) at 21.11.2008 18:01:02

Прикладная дебианавтика

Перенос почты из одного аккаунта Gmail в другой

Нужно было перенести почту из одного ящика Gmail в другой. Один из них на самом деле в домене на Google Applications, но принципиально это дела не меняет. Метод переноса предельно прост: подключаемся к обоим аккаунтам по IMAP4 и из аккаунта-источника копируем все сообщения, лежащие в папке download в папку upload аккаунта-получателя. На малых объёмах почты процедуру наверное можно произвести

by uptimebox (noreply@blogger.com) at 21.11.2008 17:00:00

Kir Kolyshkin

антиспам

Ламерский вопрос, наверное, но вдруг есть простые решения, которых я не знаю, а вы знаете...

Как сделать в sendmail, чтобы почта от несуществующих локальных юзеров не принималась? Ну, то есть, у меня есть домен blabla.com, на сервере стоит sendmail и принимает письма с заголовками типа From: nonexistent@blabla.com. Хочу, чтобы не принимал.

21.11.2008 15:46:34

советы.блогспот.ком

XPDF для предварительного просмотра LaTeX

При редактировании документов LaTeX я обычно пользуюсь для предварительного просмотра xpdf. Несмотря на его спартанский интерфейс, тому есть пара весомых причин:
  • он запускается быстрее всех других PDF-смотрелок, это удобно при использовании из командной строки;
  • он умеет принудительно перезагружать документ (клавиша R).
В общем-то это главное, что нужно для предварительного просмотра.

Вот ещё несколько менее известных, но полезных при таком использовании xpdf возможностей:
  • у xpdf есть удобные клавишы для быстрого переключения масштаба (Z — чтобы уместить страницу, W — уместить по ширине);
  • включить полноэкранный режим можно сочетанием ALT-F;
  • указать желаемый масштаб можно прямо из командной строки:
    xpdf -z page myfile.pdf
    или
    xpdf -z width myfile.pdf

  • и самое главное, можно открыть документ сразу на нужной странице:
    xpdf myfile.pdf номерстраницы

by jetxee@gmail.com (jetxee) at 21.11.2008 14:40:00

Unix pin

Как в Solaris изменить uid запущеного процесса

Как процессу в Solaris 10 “на ходу” изменить пользовательский UID?
Используйте команду pcred:

# ps -ef | grep sleep
vasya 4088 4081 0 09:50:53 pts/11 0:00 sleep 10000000
# pcred -u 123 4088
# ps -ef | grep sleep
kolya 4088 4081 0 09:50:53 pts/11 0:00 sleep 10000000

PS. Эта команда была и в предыдущих версиях Solaris, но раньше она только выводила информацию о процессе, а начиная с Solaris 10 - может устанавливать.

by ikorolev at 21.11.2008 14:31:21

Online заметки о Linux и не только...

Nero Linux 3.5.2.0

Компания Nero выпустила новую версию своего пакета программ для работы с мультимедиа Nero для Linux.

Релиз 3.5.2.0 исправляет ряд ошибок, а также добавляет новые возможности для работы из командной строки.

Пакет Nero Linux доступен в виде коробочной версии, а также есть версия для скачивания.

Источник

by noreply@blogger.com (Eugene) at 21.11.2008 09:12:00

dive.journal

Mobile Software Forum (Форум разработчиков ПО для мобильной связи)

 Уважаемые коллеги - разработчики программного обеспечения! 

16 декабря 2008 года в Санкт-Петербурге Ассоциация «РУССОФТ» совместно смаркетинговым агентством «Форт Росс» и при поддержке целого ряда мировых лидеров в сфере программных и аппаратных средств для мобильной связи - ForumNokia, Microsoft, NavTeq, Intel — проводят

Mobile Software Forum (Форум разработчиков ПО для мобильной связи)

Форум предназначен для организации прямого общения между производителями средств мобильной связи, платформ программирования для мобильных устройств, производителей контента — и разработчиками программного обеспечения.

Организаторы намерены сделать Форум наиболее массовым и значимым событием для всего сообщества разработчиков ПО для мобильных устройств связи, для чего приглашают разработчиков ПО и преподавателей ВУЗов принять участие в Форуме бесплатно.

Вы сможете пообщаться с предствителями компаний и обсудить потенциальные возможности бизнеса непосредственно на Форуме, в течение всего дня.

 

Вы можете зарегистрироваться для участия в мероприятии прямо сейчас на сайте:

http://fort-ross.ru/msf


С наилучшими пожеланиями,

 

ForumNokia

21.11.2008 08:25:18

20.11.2008

kernel panic in userspace » Runix

injustice

  • belarusian
  • russian

Сегодня хотел сходить на открытую лекцию Red Graphic в Университет культуры и искусств. Хотел, потому что не вышло. А не вышло, потому что я не могу уследить за всеми своими делами и встречами. Буквально через час после начала лекции я дороворился со своим солнцем на вокзале купить билеты. Надо сказать, что я не забыл об этом и, чтобы не расстраивать человека, решил всё же уйти с лекции за 2 минуты до начала. В конце концов, лучше кто-нибудь отсидит лекцию целиком, чем я просижу там час. При этом на вокзале мы всё равно не встретились. Несправедливость.

В том же Университете культуры и искусств сама лекция должна была пройти в отличной по меркам этой страны аудитории с мягкими креслами (а не деревянными скамьями), у которых в спинке встроен удобный выдвижной мини-столик для записей. Огромное полотно проектора, которое явно редко простаивало, недурное освещение. К тому же в аудитории бесплатный WiFi с выходом в интернет. Культуры и искусств, ага. В Университете информатики и радиоэлектроники ничего подобного даже близко нету. Несправедливость.

Кстати, неоправданно много девушек было на лекции. Не знаю, правда, загнали их туда или они сами пришли.

К тому же сегодня до меня наконец дозвонилась девушка из ITransition (кстати, очень неуверенная девушка, скажу я вам). Вчерашний звонок у неё не удался: я был в кино. Признатья честно, я уж было начал нервничать, что обо мне забыли. Конечно, не всё так радужно, как могло быть, мне предложили не работу со свободным графиком и личной секретаршей, а лишь собеседование на курсы. Конечно, курсы - это хорошо, это задаток и большая (куда ни ставь ударение) вероятность потом получить работу, но всё же в тот же день я планировал сходить на Детидетей. Не вышло. Несправедливость

Миллион разочарований и обломов за одну неделю. Капелька понимания (?) взамен. Несправедливость?

Только что звонила старая (в смысле я её знаю давно, а не как можно подумать) подруга. Чуть не назначил с ней встречу на воскресенье, когда сам собирался в театр. Если бы у неё получилось, то опять бы не вышло. Заговор?

by bobrik at 20.11.2008 21:15:10

Всё о Vim

One month with Emacs and counting - размышления одного виммера - 2

История получала продолжение в группе новостей vim_use и к её обсуждению подключился даже сам Брэм :)

by Pento (noreply@blogger.com) at 20.11.2008 15:27:13

Unix pin

Как в Solaris вычислить хэш по алгоритму md5?

Как в Solaris вычислить md5 файлика, если не установлена утилитка md5sum (обычно идет в состве gnu textutils)?
На это есть стандартная утилитка digest:

$ digest -v -a md5 /usr/bin/vi
md5 (/usr/bin/vi) = e4e3588c5212903847c66d36b1a828a5

Также доступны и другие алгоритмы:

$ digest -l
sha1
md5
sha256
sha385
sha512

by ikorolev at 20.11.2008 15:06:34

kernel.kz 2.0

Проблема с вводом кириллицы во flash-ролик под *nix

Господа, я понимаю что это очень старый и до сих пор не пофиксенный баг. Но тем не менее, может кто-то придумал как с этим бороться?

Ниже приводится скриншот одного нашего сервиса, своего рода классическая монетка, позволяющая принимать решения случайным образом. Сайт выполнен на флэше, и под линуксом совершенно не получается ввести русский текст, вводятся кракозябры. В связи с этим у меня два вопроса — кто виноват в этом? (adobe, или еще кто-то), и можно ли что-нибудь с этим сделать?

decide.kz — сервис принятия решений

Заранее благодарю.

by Революционный Матрос Железняк at 20.11.2008 14:51:38

FlyCat.Info КОТорый летает ,,,^o o^,,, » linux

30 баксов + 30 минут = 1 прэлэстный файл-сервер

Товарищ из далёкой страны рассказывает о том, как потратив немного денег (30 канадских долларов) и полчаса времени, он сделал из старенькой IBM Aptiva домашний файл- (SAMBA) а также Apache-PHP-MySQL сервер, на который также взгромоздил Torrent-клиент.(...)
Read the rest of 30 баксов + 30 минут = 1 прэлэстный файл-сервер (59 words)


© flycat for FlyCat.Info КОТорый летает ,,,^o o^,,,, 2008. | Permalink | 3 comments | Add to del.icio.us
Post tags: , , ,

Feed enhanced by Better Feed from Ozh

by flycat at 20.11.2008 11:41:25

Тема Gmail для Linux-гиков

Сегодня на Gmail появилась новая фишка: темы. И не сказать, что событие это имеет какое-то отношение к , если бы там не было темы “Терминал”. Внешний вид вашей почты будет таким, словно работаешь в телнете или ssh. Ну, или на худой конец, в :-). Всем любителям зелёных буковок на чёрном фоне, всем ностальгирующим по “ЕС-1841″ или Z-modem посвящается. Ещё бы добавить мигающий курсор и тормозов — и назад в 90-е!

Устанавлинваем: “Настройки” — “Темы” — последняя тема в самом нижнем ряду. Наслаждаемся!


© flycat for FlyCat.Info КОТорый летает ,,,^o o^,,,, 2008. | Permalink | 4 comments | Add to del.icio.us
Post tags: , , ,

Feed enhanced by Better Feed from Ozh

by flycat at 20.11.2008 07:46:41

19.11.2008

Журнал Витуса.

Killer application

Сапгрейдил сегодня домашнюю машину на lenny.
Угадайте что было последней соломинкой, сломавшей спину верблюда, killer application, наличие которого в lenny таки заставило меня сделать dist-upgrade еще до стабилизации.

Нет, это не Firefox 3, не OpenOffice 3.0 (который, к слову есть только в experimental).

Это
игра rocksndiamond.

Потом что она умеет имитировать старый добрый Supaplex. Правда, почему-то уровни там явно не в том порядке, в котором они были в оригинальном Supaplex для DOS. Там они были аккуратно расположены по возрастанию сложности, а здесь - перемешаны.


Так что killer application меня разочаровал. Но апгрейд уже сделан. И вообще есть много других полезных вещей, ради которых стоило обновиться.

19.11.2008 21:01:10

Tuxedo Live

Crosstool - сборка и тестирование Toolchains

Вот такую матрицу-отчет сгенерила crosstool, полная её версия здесь.

Сборка кросс-toolchain'а gcc/glibc для встраеваемых систем есть пэйнфул процесс. Программа (набор скриптов) Crosstool, написанная Dan Kegel, поможет найти рабочие комбинации различных версий gcc, glibc, binutils и заголовочных файлов ядра(см. рисунок выше).
  • Домашняя страница проекта: http://kegel.com/crosstool/
  • Также смотреть: uClibc chaintools http://free-electrons.com/community/tools/uclibc
  • Have fun! http://www.aleph1.co.uk/armlinux/docs/toolchain/toolchHOWTO.pdf

Под ARM:
  • http://www.codesourcery.com/gnu_toolchains/arm/
  • ftp://ftp.handhelds.org/projects/toolchain/
Под MIPS:
  • http://www.linux-mips.org/wiki/Toolchains

Tools list:

  • Crosstool­-ng
  • Buildroot
  • Scratchbox
  • OpenEmbedded
  • PTXdist
  • LTIB
  • Home made tools
  • Firmware Linux
  • Gentoo embedded
  • ELDK
  • другие? коммент.


Спасибо.

by vig (noreply@blogger.com) at 19.11.2008 19:01:17

FlyCat.Info КОТорый летает ,,,^o o^,,, » linux

Спасение Gentoo

По многим дневникам уже пробегало это интересное видео: пингвин марки породы Gentoo (от названия этой породы и произошло наименование популярного дистрибутива ) спасся от касаток, запрыгнув в лодку к людям.

“Пограничники приютили слона…” (с)


© flycat for FlyCat.Info КОТорый летает ,,,^o o^,,,, 2008. | Permalink | No comment | Add to del.icio.us
Post tags: , , ,

Feed enhanced by Better Feed from Ozh

by flycat at 19.11.2008 11:42:13

muhas.ru - Заметки аскетичного гика

Логотип ArchLinux: видео

Илембитов выложил забавный четырехсекундный ролик с логотипом ArchLinux.

Автор видео Rio6000

19.11.2008 08:50:00

18.11.2008

FlyCat.Info КОТорый летает ,,,^o o^,,, » linux

Записки о Debian/Ubuntu

Мысли вслух

Я тут подумал… ведь, наверное, это хорошо, когда в дистрибутиве нет (по умолчанию) графической оболочки для менеджера пакетов (ну или ебилдов, или подставте нужное). Ведь если иксы вдруг накроются, пользователь не будет в состоянии “паника, близкая к инфаркту”, а (теоретически) сможет хотя бы восстановить конфиги по умолчанию (или сделать еще что-нибудь не сильно продвинутое, на уровне менеджера чего-то-там-типа-пакетов).

by Livid at 18.11.2008 22:09:01

Unix pin

Быстрые ссылки Sun / Solaris

Быстрые ссылки для быстрой навигации:

Скачать бесплатные программные продукты:

by ikorolev at 18.11.2008 21:37:04

GQ's blog » Linux

Еще немножко про git

Перевели крупнейший наш проект с CVS на git. В связи с этим возникло много непониманий и вопросов о том, как теперь делать правильно. Никита разродился большим описанием предлагаемого workflow:


(Да, я заметил, что моноширинный текст в этом блоге выглядит странно, поправлю, когда дойдут руки.)

[В данном письме используется ascii-art, так что включите фиксированный шрифт]

Прежде чем расписывать вам сценарии, хотелось бы ещё раз обратить ваше
внимание на базовые свойства GIT:

*) Коммит ВСЕГДА делается только в ЛОКАЛЬНЫЙ репозиторий.

*) За исключением несущественных сейчас особых случаев, коммит ВСЕГДА делается
на ЛОКАЛЬНУЮ ветку. Напоминаю, что ветка - это фактически указатель на коммит;
в результате создания нового коммита текущая ветка начинает указывать на вновь
созданный коммит.

Это означает, что в git разработка делается на ветке ВСЕГДА. “Разработка на
trunk” (где под trunk понимается ветка в удалённом репозитории, например в
находящемся на git.lvk.cs.msu.su) физически невозможна.

Поэтому, правильно говорить не о “разработке на trunk” или на ещё какой-то
ветке в удалённом репозитории, а о синхронизации локальных веток с удалёнными.

Тут уже можно ставить вопросы:
- с какой удалённой веткой вы синхронизируетесь (с master или с какой-то ещё),
- когда вы это делаете.

То же самое, другими словами.

В CVS/SVN вы работали с двумя сущностями:

[рабочий каталог]  -> [общий репозиторий]

Всякое изменение в рабочем каталоге сохранить некуда, кроме как в общий
репозиторий. Если изменился общий репозиторий, то сохранить изменение вообще
нельзя, предварительно не выполнив операцию update (и не выполнив слияние при
необходимости).
Вопросы Макса явно предполагают именно эту схему.

Но в GIT схема другая, там три сущности:

[рабочий каталог]  -> [локальный репозиторий]  -> [удалённые репозитории]

Операции “сохранить текущую работу в виде коммита” и “синхронизироваться с
внешними изменениями” оказываются полностью независимыми друг от друга.

В локальном репозитории можно создавать любое количество коммитов,
расположенных на любом количестве веток, не оглядываясь на какие бы то ни было
изменения удалённых репозиториев.

Независимо от этого, любую из локальных веток можно различным образом
синхронизировать с какой-нибудь веткой в каком-нибудь удалённом репозитории.

А теперь попробую ответить на вопросы.

> Прежде всего, “основной сценарий” разработки некоторого модуля  

Отталкиваться лучше не от начала дня, а от начала решения некоторой задачи (не
важно, 5 минут это займёт или месяц; неважно, сколько задач решается в
параллель).

Решение задачи лучше начинать с чистого рабочего каталога (то есть, в рабочем
каталоге не должно быть изменений, не сохранённых в локальном репозитории).
Проверить это можно командой ‘git status’.

Возможно, рабочий каталог не чистый. То есть, в нём содержится частичное или
полное решение другой задачи. Обращаю внимание, что одной - смешивать в
рабочем каталоге решение нескольких задач абсолютно противопоказано.

Тогда есть варианты:

- не браться за новую задачу, не закончив старую
  - это не всегда возможно

- “cvs-стиль 1″: смешать в рабочем каталоге решение старой задачи с решением
  новой
  - иногда прокатывает, но часто приводит приводит к проблемам - например,
    если решение разных задач потребует модифицировать один и тот же файл

- “cvs-стиль 2″: слить неготовое решение в “общий репозиторий”
  - и тогда остальные разработчики будут это расхлёбывать

- “cvs-стиль 3″: заводить отдельный рабочий каталог на каждую задачу
  - неэффективно (долгая сборка, перерасход дискового пространства, куча
    мусора в каталогах со временем и т.д.)

- правильное решение: сохранить незаконченное решение в локальном репозитории,
  чтобы позже к нему вернуться.

Для реализации этого “правильного решения” git предоставляет целых два средства.

- Для простых случаев - git stash. Эта команда позволяет сохранить все
  изменения рабочего каталога в некоторый буфер, и откатить рабочий каталог к
  последнему коммиту. Позже изменения можно вернуть из буфера командой
  git stash apply. Буфера можно именовать, их может быть сколько угодно.

- Для более сложных случаев - например, когда ваше частичное решение уже
  содержит несколько коммитов в локальный репозиторий - лучше использовать
  обычный git commit. При этом изменения окажутся сохранены в ещё один коммит
  в локальный репозиторий. Что совершенно не страшно - позже, когда вы
  вернётесь к прерыванной задаче, этот локальный коммит можно будет заменить
  или удалить.

Итак, получили чистый рабочий каталог.

Дальше надо решить, на какой локальной ветке будет решение новой задачи:
- если вы не использовали git commit для сохранения частичных решений (то есть,
  если ваша текущая ветка не содержит “неопубликованных” коммитов, то можно её
  и использовать,
- если же у вас на текущей ветке есть “неопубликованные” коммиты, то придётся
  завести новую локальную веткуб
- а можно и всегда заводить новую локальную ветку, именуя её по решаемой
  задаче - так порядку будет больше.

Также, надо решить, с какой базы будет начинаться решение новой задачи.
Во многих случаях базой логично сделать текущее положение ветки master
репозитория на git.lvk.cs.msu.su - но, например, если делается фикс для
кода, поставленного заказчику, то база будет соответствующей.

Новая ветка, указывающая на текущее положение ветки master репозитория на
git.lvk.cs.msu.su, создаётся например так:

git fetch origin/master
git branch new_task origin/master
git checkout new_task

Первая команда загружает в ваш локальный репозиторий возможные изменения ветки
master удалённого репозитория origin.
Вторая - создаёт локальную ветку new_task, указывающую на верхний коммит ветки
origin/master.
Третья - делает ветку new_task текущей (в частности, извлекает соответствубщее
этой ветке дерево файлов из локального репозитория в рабочий каталог).

Если же:

- у вас “однозадачный режим”, то есть вся работа ведётся на локальной
  ветке master,
- это именно та локальная ветка master, которая образовалась в результате
  первоначально операции git clone, создавшей ваш репозиторий (то есть, вы её
  явно не переконфигурировали, не удаляли/пересоздавали и т.п.),

то достаточно [при чистом рабочем каталоге!] выполнить команду

git pull

При этом результат будет тот же самый - в ваш локальный репозиторий будут
загружены возможные изменения ветки master удалённого репозитория origin,
локальная ветка master станет указывать на текущее значение origin/master, и
рабочий каталог будет содержать текущее дерево файлов, соответствующее этой
ветке.

После этого можно работать - решать задачу.

В процессе решения задачи возможно придётся переключиться на другие задачи -
об этом см. выше.

Результатом решения задачи должен стать один или несколько коммитов на
локальной ветке, соответствующей этой задаче (или на локальной ветке master -
см. выше).

Теперь эти коммиты надо “опубликовать” - например, на ветку master репозитоиия
на git.lvk.cs.msu.su.

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

Публикация осуществляется командой

git push

(более полный синтаксис - git push remote_name local_branch:remote_branch - но
в описываемом сценарии все параметры должны быть подставлены по умолчанию)

При этом на уданённый репозиторий из локального репозитория (не из рабочего
каталога, а именно из локального репозитория) будут загружены объекты,
появившиеся в результате вашей работы. А затем будет сделана попытка
продвинуть удалённую ветку.

Вот тут возможны два варианта.

Если с момента начала решения вами вашей задачи удалённую ветку никто не
продвинул, то операция закончится успехом.

А если нет, то будет сообщение об ошибке “not fast-forward”.

НИ В КОЕМ СЛУЧАЕ нельзя в ответ передавать команде git push ключ -f (force) -
ЭТО ПРИВЕДЁТ К ПОТЕРЕ КОММИТОВ между вашей базой и текущим состоянием ветки.
Физически данные не потеряются, но без специальных мер они не будут
видны.
Видимо, правильно будет запретить force на важных ветках на уровне pre-receive
hook - подумаем над этим.

Правильных решений при ошибке “not fast-forward” в ответ на git push может
быть два - rebase и merge.
В большинстве случаев из них нужно выбрать rebase.
Смысл этой операции вот в чём.

Когда вы начали решение задачи, состояние дерева коммитов было таким:

… - (*) - (M)

В результате вашей работы оно стало таким:

… - (*) - (M)
              \
              (1) - … - (K)

Внизу - несколько коммитов, составляющих решение вашей задачи.

А в результате действий кого-то другого оно стало таким:

… - (*) - (M) - … - (N)
              \
              (1) - … - (K)

Эти схемы изображают именно деревья коммитов. Одно и то же дерево коммитов
хранится в разных репозиториях.

Операция rebase - это ЗАМЕНА созданной вами последовательности коммитов на
ДРУГУЮ, в которой патчи будут по возможности те же, а родительские отношения -
другие. Цель - получить вот это:

… - (*) - (M) - … - (N)
                          \
                          (1) - … - (K)

Если это проделать, то последующая операция git push закончится без ошибки, и
приведёт к

… - (*) - (M) - … - (N) - (1) - … - (K)

Теперь - как проделать операцию rebase.
В этой операции задействован рабочий каталог. Соответвенно, начинать её надо с
“чистого” состояния рабочего каталога. Впрочем, нет причин начинать публикацию
не с чистого.

Операция выполняется так (если удалённая ветка - именно origin/master):

git fetch origin/master
git rebase origin/master

Первая команда загрузит в локальный репозиторий новые коммиты, появившиеся в
ветке master репозитория origin. Эта операция абсолютно недеструктивна - она
только помещает новые объекты в локальный репозиторий и продвигает сохранённую
в локальном репозитории ссылку origin/master.

Вторая команда пытается выполнить требуемую замену последовательности
коммитов. При этом делается следующее:
- создаётся временная локальная ветка, указывающая на точку M,
- эта временная ветка извлекается в рабочий каталог,
- на временную ветку последовательно применяются (cherry-pick) коммиты из
  заменяемой последовательности
- после этого ваша локальная ветка (как ссылка) подменяется вновь созданной.

В процессе rebase-а возможны конфликты. В этом случае их надо разрешить
вручную, после чего продолжить rebase командой git rebase –continue.
Если на каком-то этапе разрешить конфликт не получается, можно отменить всю
операцию rebase при помощи git rebase –abort. Краткая подсказка выдаётся
вместе с сообщением о конфликте. Полностью все возможности можно посмотреть в
посмотреть через git help rebase.

Вот в общем-то и всё.

Чтобы вернуться к старой задаче, которую вы прервали, начав эту, достаточно
выполнить операцию git checkout соответствующей локальной ветки (если другая
задача на ветке), или же операции git pull; git stash apply (если другая
задача на stash)

Если кому-то ну очень не хочется работать в терминах задач, как я тут
расписал, а хочется “тесного взаимодействия” с удалённым репозиторием, то
этого можно достичь так:

- ограничиться работой только на локальной ветке master,
- перед каждым commit делать pull и разрешать конфликты [это фактически
  извращённая форма rebase, когда локальных коммитов нет, а рабочий каталог
  грязный],
- после каждого commit делать push

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

Честно говоря, я не вижу рациональных причин так поступать.

> Команд update/revert нет.
> checkout делает явно что-то “другое”  

См. ‘git-svn crash course, http://git.or.cz/course/svn.html’
Это простая сводная таблица команд svn и их аналогов в git.

> 1. Захожу в каталог своего модуля (…/src/XXX/)
>     (в случае, если ночевал в чужом каталоге).
> 2. Делаю команду svn status или svn status -rHEAD.
>     (этот шаг делается если “давно не был” или забыл, есть
>      ли несохраненные изменения).
> 2′. Если trunc для моего модуля “ушел”, смотрю svn log/svn diff.
> 3. Делаю svn up. В случае конфликтов разрешаю их.
>
> …
>
> Например, что (и когда) я должен делать _вместо_ шагов 1.-3. ?  

Мне кажется, расписанный выше workflow содержит исчерпывающий ответ на этот
вопрос? Если нет, то что именно непонятно?

> Что я должен делать вместо revert ?  

git checkout path/to/file

> Например, git status/diff/commit без аргументов “действуют” не на
> текущий модуль, а на весь Проект :(. В некоторых случаях флаг –force
> существенно изменяет логику операциию.  

Команда status описывает состояние всего рабочего каталога - такова
её семантика. Это не должно как-либо мешать в “ориентированном на задачи”
workflow.

Команда commit без аргументов создаёт коммит из текущего содержимого git
index, куда изменения заносятся командой git add.
Команда commit -a перед выполнением коммита заносит в git index все изменения
рабочего каталога. Использовать её надо с осторожностью.

Я лично всегда перед коммитом - даже временным/локальным - делаю git status,
чтобы понять, что произойдёт. Если это не соответствует моим пожеланиям, я
выполняю команды, которые тот же git status показывавет в качестве подсказки.

git diff по умолчанию действительно действует на весь рабочий каталог. Но
опять же, в “ориентированном на задачи” workflow он покажет тебе только
изменения, сделанные в рамках текущей задачи.

Флаг –force использовать не надо, если ты только не представляешь очень
хорошо, что делаешь.

> Добавлю, что _после_ расписывания сценария работы с транком следует
> расписать:
> 1. Сценарий разработки функциональности “в отдельной ветке”
> (в терминах CVS) с последующей заливкой на транк.  

При использовании “ориентированного на задачи” workflow разницы практически не
будет. Пока ветка локальная - так вообще не будет.

Если по любой причине необходимо или хочется публиковать промежуточные
результаты в удалённом репозитории, можно создать там ветку

git fetch origin
git branch my_cool_branch origin/master
git push origin my_cool_branch:my_cool_branch
git branch -D my_cool_branch

после чего использовать в описанном workflow ветку origin/my_cool_branch в
качестве базы.

Дальнейшее слияние может быть через rebase или через merge.

Rebase делается примерно так (предполагаю, что в локальном репозитории ветка
my_cool_branch уже есть):

git fetch origin
git checkout my_cool_branch
git rebase origin/master

В результате в локальном репозитории ветка my_cool_branch будет заменена
на новую, построенную относительно текущего положения origin/master

git push origin my_cool_branch:master

Это разместит всю историю my_cool_branch поверх текущего положения master

git push -f origin my_cool_branch:my_cool_branch

Это переставит указатель ветки my_cool_branch в репозитории origin на её новое
положение. Тут используется -f, так как это по сути non-fast-forward операция.

Но если с веткой my_cool_branch работали другие люди, то после этого у них
могут быть трудности. Так что если ожидается какая-либо новая работа в
my_cool_branch, то вместо rebase можно использовать merge.

Тогда “ветвление и слияние” останется в имтории ветки master, но зато
ветка my_cool_branch сможет продолжить своё развитие.

Когда в репозитории есть локальные ветки master и my_cool_branch, merge
делается так:

git checkout master
git merge my_cool_branch
git push

При merge возможны конфликты. Их придётся разрешить.

> 2. Сценарий формирования релиз-ветки. В том числе перетаскивания на неё
> отдельных коммитов (критических багфиксов итд) с транка.  

Самое тупое - это просто создать релиз-ветку, и потом в рамках описанного выше
“ориентированного на задачи” workflow работать с этой веткой как с базой.

В частности, “перетаскивание коммита” - это выполнение операции
git cherry-pick в том месте workflow, где сказано “решать задачу”.

> Также не лишне было бы понять, как _автоматически_ поддерживать в gitk
> отображение _текущего_ состояния репозитория. Делать каждый раз (а)
> обновление текущего клона репозитория и (б) нажатие каких-то кнопок в
> gitk — очень напряжно.  

gitk всегда показывает состояние локального репозитория.
Чтобы увидеть изменения в удалённом репозитории, сначала надо скопировать их в
локальный репозиторий командой git fetch.

Основной сценарий работы с gitk - запускать его, посмотреть что надо и
закрывать. У него довольно многое можно задать в командной строке (чтобы он
показал именно “что надо”) - он принимает все параметры git rev-list.

“Долгоживущий” gitk - это нестандартный сценарий. Под это он не оптимизирован.
Хотя команда refresh в меню у него есть.

(cc) Nikita Youschenko

by GQ at 18.11.2008 20:07:43

helicopter.net.ru

moosplash - usplash тема для убунты

заменяем стандартный ubuntu usplash на moosplash

для установки нужно отредактировать sources.list

sudo gedit /etc/apt/sources.list

и добавить следующие строки
для 8.10

deb http://ppa.launchpad.net/corenominal/ubuntu intrepid main
deb-src http://ppa.launchpad.net/corenominal/ubuntu intrepid main

для 8.04

deb http://ppa.launchpad.net/corenominal/ubuntu hardy main
deb-src http://ppa.launchpad.net/corenominal/ubuntu hardy main

и обновить списки пакетов

sudo aptitude update

устанавливаем moosplash и StartUp Manager

sudo aptitude install moosplash startupmanager

теперь заходим в “Систему - Администрирование - StartUp Manager”. вторая вкладка - “Внешний вид”. меняем usplash тему на moosplash. выходим. перезагружаемся.

теперь при включении и выключении компа можно видеть вот такую забавную коровку

by vanoc at 18.11.2008 19:23:02

Tuxedo Live

vi основные команды

vi основные команды

Оригинал: .pdf .odt

Перевод: .pdf .odt


Условия распространения Creative Commons Attribution-ShareAlike 2.5 license
©Copyright 2006-2005, Free Electrons.

by vig (noreply@blogger.com) at 18.11.2008 18:02:55

FlyCat.Info КОТорый летает ,,,^o o^,,, » linux

Обои для десктопного Linux

А что? Вполне приличная картинка — вполне в духе зелёных холмов Windows XP. Только холмы гораздо круче. И пара сурьёзных пингвинов на переднем плане. Жаль, разрешение подкачало, я бы себе поставил.


© flycat for FlyCat.Info КОТорый летает ,,,^o o^,,,, 2008. | Permalink | 4 comments | Add to del.icio.us
Post tags: , ,

Feed enhanced by Better Feed from Ozh

by flycat at 18.11.2008 14:23:44

советы.блогспот.ком

Встраиваем субтитры в AVI (hardsubs)

Как сделать субтитры? Очень просто: ставим gaupol, запускаем, выбираем File→New, сохраняем в пустой файл mysubs.srt, подключаем видео (File→Select Video, этот пункт недоступен, пока мы не сохраним проект), после этого аккуратно вписываем все субтитры, иногда нажимая кнопку Play, чтобы посмотреть на результат и заметить время. Спустя некоторое время у нас окажется готовый файл с субтитрами mysubs.srt.

В идеале, так их и надо распространять. Отдельным файлом. Однако зрителю придётся озаботится установкой правильных шрифтов, указать правильную кодировку субтитров в своём плеере, и вообще, пользоваться плеером, который умеет показывать субтитры.

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

Чтобы встроить субтитры в видео, вначале подбираем нужные параметры их воспроизведения, например, так:
$ mplayer -subwidth 75 -subcp utf8 -subfont-text-scale 3 -sub mysubs.srt myvideo.avi
Опции показа — см. man mplayer. После этого перекодируем видеофайл:
$ mencoder -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2000 myvideo.avi -subwidth 75 -subcp utf8 -subfont-text-scale 3 -sub mysubs.srt -o myvideo-with-hardsubs.avi
Понятно, что выбор кодеков и параметров кодирования можно изменять по усмотрению. И ура! — у нас теперь есть файл со встроенными субтитрами.

by jetxee@gmail.com (jetxee) at 18.11.2008 13:48:00

До стабильного релиза Debian осталось…

Помню, как накануне выхода Intrepid Ibex весь инет пестрел картинками: осталось столько-то дней. Но мы-то ждём безглючного Lenny! А он будет готов тогда, когда будет готов, т.е. когда будут закрыты все баги. Итак, веселья ради, мой счётчик*:


Debian: bugs to fix before stable


Вставляется так:



Пример здесь: Debian RC-bugs countdown

Кстати, говорят, уже первый релиз-кандидат инсталлятора вышел…

* В RSS-аггрегаторах может не показываться, вставляется IFRAME-ом.

by jetxee@gmail.com (jetxee) at 18.11.2008 10:16:00

muhas.ru - Заметки аскетичного гика

Копипаст файлов для консоли.

Сегодня с утра добавил себе в .zshrc (в bash тоже будет работать)
ccopy(){ cp $1 /tmp/ccopy.$1; }
alias cpaste="ls /tmp/ccopy.* | sed 's|/tmp/ccopy.||' | xargs -I % mv /tmp/ccopy.% ./%" 

Теперь ccopy файл копирует файл из текущей директори в /tmp а cpaste перемещает все скопированные ранее в текущую.

18.11.2008 06:43:00

17.11.2008

helicopter.net.ru

установка psi из git-a

сделал краткую заметку для себя. надеюсь Erik не против.

ставим дополнительные пакеты

sudo aptitude install git-core libqt4-dev libqca2 libqca2-dev libqca2-plugin-ossl g++

установка

git clone git://git.psi-im.org/psi.git
cd psi
git submodule init
git submodule update
./configure
make
sudo make install

обновление

cd psi
make distclean
git pull
git submodule update
./configure
make
sudo make install

by vanoc at 17.11.2008 19:07:24

LamerNotes

не было печали

Сегодня получил от https://shipit.ubuntu.com диск с убунтой 8.10. Кроме диска в пакете лежали ещё и 4 аккуратных наклейки. Последний раз получал убунту нахаляву версии 6.06 и там таких ничтяков не было )))
Теперь вот думаю, куда бы их приспособить. Как говорится, не было печали ... )))

by noreply@blogger.com (AWWAKUM) at 17.11.2008 18:53:00

HRAFNTOFTIR

LinuxFormat

Отдам безвоздмездно журналы LinuxFormat русского издания в печатном виде ))) Номера практически все (или все), непомню… В Питере, разумеется, поскольку я именно из этого славного города ))) Кстати, имется и диски, прилагающиеся к ним. Но диски вроде не все в наличии. Желающих приглашаю отписываться в комменты или в джаббер: hrafn@jabber.no.

Так же, если у кого-то будет вариант передать журналы в какую-либо школу - буду только рад.

Все уточнения по поводу наличия журналов и дисков можно получить по тем же контактам.

by hrafn at 17.11.2008 14:18:47

Записки о Linux

Adobe выпустила альфа-версию 64-битного Flash

Даже не знаю чудо это или нет, но сегодня Adobe после (вероятно) тяжёлых месяцев испытаний выпустила альфу Флеша для 64-х битных систем.

Вот анонс, вот ссылка.

17.11.2008 12:31:48

Take World

AVR32 и встраиваемый Linux

<img src="http://feeds.feedburner.com/~r/TakeWorld/~4/458350273" height="1" width="1"/>

by noreply@blogger.com (nagos) at 17.11.2008 09:00:00

muhas.ru - Заметки аскетичного гика

NRG2ISO: Конвертируем образы Nero в обычные iso

Оказывается образы nrg от небезызвестной программы Nero это те же самые iso только с лишними трехсот килобайтами в начале файла в которых свой заголовок писанный на iso. Посему конвертирование nrg образов в iso становиться тривиальной задачей.
dd bs=1k if=bla.nrg of=bla.iso skip=300

17.11.2008 06:36:00

Bappoy's blog » Linux

Угадывание мыслей и выполнение несуществующих команд средствами bash

В Debian в bash был добавлен патч, благодаря которому пользователь может написать свою функцию, выполняемую в случае, если введённая пользователем команда отсутствует. В Ubuntu эту фичу использует подсказка command-not-found, заметно тормозящая работу, в то время как можно найти более интересные и полезные возможности применения этого механизма, оставив поиск пакета специализированным программам. Поделюсь своим опытом.

У нашего подразделения есть специальная сеть для тестовых серверов и виртуальных машин: 192.168.20.0/24, и очень часто приходится набирать команды типа ssh user@192.168.20.xx, причем в командах различается только последняя цифра. У ограниченного числа серверов нужно указывать другой username. Реже приходится ходить на сервера в других подсетях (в пределах 192.168.0.0/16); также иногда клиенты открывают нам доступ к своим системам, чтобы мы смогли продиагностировать их проблему и решить ее на месте.

Как следует из предыдущего абзаца, очень часто набираются команды вида:

ssh ordinary_user@192.168.20.xx
ssh special_user@192.168.xx.yy
ssh third_user@ww.xx.yy.zz

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

alias 123='ssh user@192.168.20.123'

Однако вскоре я понял, что поддерживать список из полусотни alias’ов — не true unix way, и задумался об альтернативах. Вспомнил об опытах вебмастеров эпохи web 1.0 по использованию 404 ошибки для отображения страницы с нужным содержанием, задумался о том, каким образом bash перехватывает вызов неизвестной команды и подменяет её командой поиска нужного пакета… В результате беглого изучения состава пакета command-not-found было выяснено, что используется функция command_not_found_handle. Она принимает в качестве аргумента введённую пользователем команду, выполняет некие действия и возвращает 127, если ничего нельзя сделать (в таком случае bash выводит стандартное сообщение об ошибке), или любое другое число, если что-то получилось.

Остальное оказалось делом техники. В ~/.bashrc была добавлена функция:

command_not_found_handle () {
    if [[ ! "$1" ]] ; then
        return 127
    fi

    n="$1"

    if echo $n| perl -ne 'exit(/^([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/ ? 0:1)' ; then
        ip=192.168.20.$n
    elif echo $n| perl -ne 'exit (/^([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/ ? 0:1)' ; then
        ip=192.168.$n
    elif echo $n| perl -ne 'exit (/^([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/ ? 0:1)' ; then
        ip=$n
    else
        return 127
    fi

    ssh $ip
}

Любое введённое число от 1 до 255 преобразуется в команду ssh 192.168.20.число; два числа — в ssh 192.168.число.число; любой введённый IP-адрес превращается в ssh IP-адрес. Во всех остальных случаях просто выводится сообщение "command not found".

Поскольку используется довольно сложное регулярное выражение, то для его обработки пришлось использовать perl. Ещё был вариант с grep -qP, но эксперименальная опция -P (расширенная поддержка perl-овых регулярных выражений) включена в grep не во всех дистрибутивах (например, в Ubuntu 8.04 её нет, а в 8.10 уже есть).

Чтобы для всех хостов в 20 сети подставлялось общее имя пользователя ordinary_user, а для избранных хостов — специальные имена, в ~/.ssh/config я добавил строчки (общие параметры для всех хостов, предваряемые конструкцией Host *, должны находиться в конце списка):

Host 192.168.20.251
User special_user1

Host 192.168.20.252
User special_user2

Host 192.168.20.254
User special_user3

Host *
User ordinary_user

К сожалению, мне не удалось заставить эту функцию обрабатывать также и параметры командной строки: функции command_not_found_handle передаётся только первый позиционный параметр, остальные недоступны. Поэтому для каждого нестандартного хоста придётся либо писать полный вариант команды со всеми параметрами, либо указывать настройки сервера в ~/.ssh/config, подобно указанным выше. Имеются и прочие недостатки в реализации, обсуждаемые, в частности, на сайте smylers hates software.

Однако даже с такими ограничениями открываются новые потрясающие возможности. Думаю, что предложенное мной применение не единственное, и этот пост — не последний на данную тему.

P.S. бонус для дочитавших до этого места: библиотека регулярных выражений perl, где я нашел регэксп для проверки строки на соответствие IP-адресу.

by bappoy at 17.11.2008 06:33:44

16.11.2008

Unix pin

Как использовать ram-диск для увеличения производительности дисков?

Недавно я затрагивал темы загруженности устройств ввода-вывода Oracle и создания Ram-дисков.
Итак, в системе есть достаточно свободной памяти, менеджер томов - vxvm и есть приложение с высокой нагрузкой по вводу-выводу (например Oracle). А если у нас современный сервер, а Oracle standard edition, то так оно и будет (так как standard edition не может использовать более 2Гб памяти). Такая ситуация часто возникает, например на SAP серверах, когда используются 32-разрядные приложения.
Итак, идея такая:

Попробуем это реализовать (в теории).


ramdiskadm -a mydisk 8g
ln /dev/ramdisk/mydisk /dev/dsk/mydisk
ln /dev/rramdisk/mydisk /dev/rdsk/mydisk
vxdisk define mydisk type=nopriv volatile
vxdg -g DG01 adddisk RAMDSK01=mydisk
vxassist -g DG01 mirror volume VOL01 RAMDSK01
vxvol -g DG01 rdpol prefer VOL01 VOL01-02

Что нам дает такая схема:

  • при чтении с тома - данные читаются из ram-диска (значительно поднимается скорость операций ввода-вывода, снижается количество обращений к физическим дискам)
  • при записи - пишутся одновременно на оба зеркала (надежность записи не уменьшается)
  • более эффективное использование оборудования и ПО

Можно использовать данное решение не для Oracle, а для любого тома с высокой загрузкой.

PS. так как сейчас нет возможности проверить самому - был бы рад, если кто-нибудь решит попробовать это решение и напишет в комментарии о результатах ;)

by ikorolev at 16.11.2008 17:19:31

Propheta

Как отключить автоопределение типа сетевого подключения в Ubuntu

Например из-за плохого сетевого кабеля, который весьма затруднительно быстро поменять, после автоопределения типа подключения не удается добиться стабильной работы с сетью. В таких случаях обычно помогает принудительное указание типа. Узнаем подробности про сетевой интерфейс etho$ sudo ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full

by Князь (noreply@blogger.com) at 16.11.2008 10:31:00

Skystar3: Спутниковый интернет в Ubuntu (hardy)

Описывается настройка спутникового интернета провайдера «Радуга Интернет» через openvpn. После установки спутниковой карты в свободный слот PCI и загрузки ОС создаем файл «/etc/modprobe.d/dvb_core.modprobe»options dvb_core dvb_shutdown_timeout=915360000Этим мы препятствуем «засыпанию» карты. В новых ядрах, в отличие от старых, установка параметра «dvb_shutdown_timeout» в «0» не помогает и потому

by Князь (noreply@blogger.com) at 16.11.2008 10:28:18

Операционная система Линукс (inf.by/linux)

Что новый Windows 7 нам готовит

http://blog.inf.by:8686/ui/pst/75/22607_1.png | Включен Superbar Врага, как говорится, надо знать как в лицо, так и в ж... ну со всех сторон в общем. У меня на ноутбуке имеется официальная Windows Vista (на всякий случай) и те два раза, когда я ее запускал оставили у меня не очень хорошее впечатление. Для Core2Duo 2Ггц с 2Гб памяти с отключенным Aero система должна работать явно быстрее. ...

16.11.2008 08:21:00

Tuxedo Live

Как пропатчить Linux - Linux patch

Делается это очень просто. Допустим, Вы уже имеете исходники ядра, скачанные с kernel.org. Теперь будем накладывать патч на ядро.

Определите нужную версию ядра и патча с помощью браузера на kernel.org.
http://kernel.org/pub/linux/kernel/v2.6/patch­2.6.27.bz2 (с 2.6.26 на 2.6.27)
http://kernel.org/pub/linux/kernel/v2.6/patch­2.6.27.6.bz2 (с 2.6.27 на 2.6.27.6)

Далее скачиваем патч, сверяем подпись:
wget http://kernel.org/pub/linux/kernel/v2.6/patch-­2.6.27.6.bz2
wget http://kernel.org/pub/linux/kernel/v2.6/patch-­2.6.27.6.bz2.sign
gpg ­­--verify patch-­2.6.27.6.bz2.sign

Накладываем патч:
bzcat patch­-2.6.27.6.bz2 | patch ­p1

Патч наложен.
Откатить патч можно с помощью patch с параметром -R.
Файл patch-2.6.27.6 - это вывод комманды diff. Вот так он выглядит:

diff --git a/Makefile b/Makefile
index 16e3fbb..1ea4453 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@ -номера строк в файле
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 27
-EXTRAVERSION = - удаленная строку
-NAME = Rotary Wombat - удаленная строка
+EXTRAVERSION = .6 - добавленная строка
+NAME = Trembling Tortoise - добавленная строка

# *DOCUMENTATION*

Спасибо.

by vig (noreply@blogger.com) at 16.11.2008 04:06:22

Propheta

Доступ к серверу, прикрытому неподконтрольным брандмауером.

Вызвался настроить школьный сервер своему другу. В сельскую школу, где он работает, в рамках общероссийской программы провели интернет и там встал вопрос, как проконтролировать сетевую активность новоявленных интернет-пользователей (в лице школьников). Заодно привести в порядок локальную сеть школы. Под сервер оперативно выделили компьютер. В выборе операционной системы остановились на Ubuntu. Но

b