Последнее время достал спам в блоге - валится и валится. Поставил премодерацию для постов старше 2 недель, стало намного проще жить.
Но вот, что интересно - в пост про сортировку фотографий с каким-то нечеловеческим упорством бот пытается засунуть своё сообщение. Почему именно в этот пост я не могу понять, но где-то раз в неделю туда сваливается рекламный коментарий, само-собой я его не пущаю, и через неделю всё повторяется. o_O
пятница, 23 апреля 2010 г.
Купил передний щиток
Я сдался. Щитки безусловно портят вид велосипеда, но ехать в случае чего 15 километров по лужам, получая порцию бодрости грязи в лицо на каждом мокром пятне не очень приятно. Оно конечно возможно ехать со скоростью 10 км/ч - тогда брызги не достают до морды лица и благополучно оседают на груди, но тогда придётся ехать 1.5 часа, и скорее всего по мокрому дождю.
Я это уже начал понимать, но разум противился и не давал купить щитки - то деньги забудет, то голову отвернёт, проезжая мимо магазина. Вредина.
Ну а вчера погода "способствовала" - днём обещали дождь и снег, а с утра было относительно сухо. И вот, пока дражайшая половина сопела, повернувшись к стеночке, я собрался и поехал на велосипеде (за что потом от неё и получил нагоняй).
Вечером деваться было некуда - собирались тучи, временами шёл дождь и град(или такой крепенький снег), пришлось ехать в магазин, выбирать.
Изначально я задумал купить лучшее, что есть - SKS Shockblade в перёд + SKS X-Blade назад. Но стоит всё это добро 190 тыс (примерно 63$). Жаба начала возмущаться и пинать меня лапками. Подумав хорошенько, я решил пока что обойтись только передним щитком - он важнее: ведь главное, что мешает ехать это брызги грязи в рот и глаза - замаешься утираться. А вот спина может и потерпеть, к тому же на рюкзак у меня есть чехол болоньевый, он закрывает всю спину, остаётся только задница и ноги. Но в конце концов, проехать 15 км вполне можно. Ну, а потом можно будет докупить и задний щиток.
В магазине оказалось 3 версии щитков SKS: медленносъёмный за 40 тыр, такой же но быстросъёмный за 60, и продвинутая версия последнего - более широкий за счёт каких-то накладок (собственно это и был SKS Shockblade) за 90 тыс.
Я выбрал первый. И вот из каких соображений:
1. Быстросъёмность это недостаток - любой проходящий мимо урод снимет их из любопытства или с корыстными целями. Да и есть сомнения в прочности этого крепления... Более того, это самое медленносъёмное крепление очень даже быстросъёмное по сравнению со стелсовскими щитками жены: нужно открутить пластмассовую гайку(руками) и стянуть щиток. И всё. 2 минуты. Я явно не готов переплачивать 20 тысяч за мгновенный съём.
2. Расширить щиток можно и самому с помощью куска пластиковой бутылки - будет не сильно хуже.
Так что я выбрал Crossboard за 40. Тут же на месте поставил, натянул на рюкзак чехол и поехал. А погода к этому моменту как раз испортилась - начался дождь местами переходящий в крупный и твёрдый снег.
Ну, вобщем, я уже утомил всех подробностями, перехожу к выводам. Щиток работает отлично, ни одной капли грязи я не ощутил на лице, хотя гнал как умалишённый(хотелось поскорее домой). На ноги брызгает немного, но не страшно. А вот задница ощутимо забрызгалась грязью, штаны и куртку пришлось стирать. Надо подумать о заднем щитке.
З.Ы. Сегодня ехать было немного прохладно...
Я это уже начал понимать, но разум противился и не давал купить щитки - то деньги забудет, то голову отвернёт, проезжая мимо магазина. Вредина.
Ну а вчера погода "способствовала" - днём обещали дождь и снег, а с утра было относительно сухо. И вот, пока дражайшая половина сопела, повернувшись к стеночке, я собрался и поехал на велосипеде (за что потом от неё и получил нагоняй).
Вечером деваться было некуда - собирались тучи, временами шёл дождь и град(или такой крепенький снег), пришлось ехать в магазин, выбирать.
Изначально я задумал купить лучшее, что есть - SKS Shockblade в перёд + SKS X-Blade назад. Но стоит всё это добро 190 тыс (примерно 63$). Жаба начала возмущаться и пинать меня лапками. Подумав хорошенько, я решил пока что обойтись только передним щитком - он важнее: ведь главное, что мешает ехать это брызги грязи в рот и глаза - замаешься утираться. А вот спина может и потерпеть, к тому же на рюкзак у меня есть чехол болоньевый, он закрывает всю спину, остаётся только задница и ноги. Но в конце концов, проехать 15 км вполне можно. Ну, а потом можно будет докупить и задний щиток.
В магазине оказалось 3 версии щитков SKS: медленносъёмный за 40 тыр, такой же но быстросъёмный за 60, и продвинутая версия последнего - более широкий за счёт каких-то накладок (собственно это и был SKS Shockblade) за 90 тыс.
Я выбрал первый. И вот из каких соображений:
1. Быстросъёмность это недостаток - любой проходящий мимо урод снимет их из любопытства или с корыстными целями. Да и есть сомнения в прочности этого крепления... Более того, это самое медленносъёмное крепление очень даже быстросъёмное по сравнению со стелсовскими щитками жены: нужно открутить пластмассовую гайку(руками) и стянуть щиток. И всё. 2 минуты. Я явно не готов переплачивать 20 тысяч за мгновенный съём.
2. Расширить щиток можно и самому с помощью куска пластиковой бутылки - будет не сильно хуже.
Так что я выбрал Crossboard за 40. Тут же на месте поставил, натянул на рюкзак чехол и поехал. А погода к этому моменту как раз испортилась - начался дождь местами переходящий в крупный и твёрдый снег.
Ну, вобщем, я уже утомил всех подробностями, перехожу к выводам. Щиток работает отлично, ни одной капли грязи я не ощутил на лице, хотя гнал как умалишённый(хотелось поскорее домой). На ноги брызгает немного, но не страшно. А вот задница ощутимо забрызгалась грязью, штаны и куртку пришлось стирать. Надо подумать о заднем щитке.
З.Ы. Сегодня ехать было немного прохладно...
Ярлыки:
вело
среда, 21 апреля 2010 г.
+1
Вчера убрался через руль, так что +1 к полётам.
Еду я значит, еду, и тут бац, полетел через руль. Ну, сгруппировался, перекатился, вскочил на ноги, подхватил падающий велосипед и не сбавляя темпа прыгнул на него и поехал дальше. Вот. Это официальная версия для жены.
Для родителей будет ещё более укороченная версия: "ехал, поцарапался"
Ну а в действительности... Ехал по трассе в Боровляны, и тут стукнуло в голову переместится на велодорожку, проходящую параллельно, но чуть ниже. Решил на скорости проскочить разделяющий их кусок травы. Ну а чтобы было веселее решил это сделать не просто с дороги, а с насыпи, на которой стоит какой-то путевой знак. Крутовата оказалась та насыпь... Мне бы переднее колёсико-то приподнять, может чего и вышло бы, но я как ехал, так и клюнул в низ. А там песочек, переднее колесо в него уткнулось и дальше решило не ехать. А я всё ещё ехал, вернее уже летел.
Ну, приземлился. Отдышался. Покрутил головой - вроде шея целая. Потрогал рёбра - вроде болят не сильно. Пару ссадин и царапин. Голова в песке.
Велосипед к счастью не пострадал :) Дальше поехал зело медленно и сугубо аккуратно - мало ли, посттравматический шок, может у меня там ногу оторвало, а я ещё не чувствую.
На утро подсчитал потери - растянул правую трапециевидную мышцу когда приземлялся на голову, синяк на рёбрах с лева, синяки на коленях (руль наверное задел, в следующий раз надо аккуратнее).
На работу ехал сегодня целый час :)
Еду я значит, еду, и тут бац, полетел через руль. Ну, сгруппировался, перекатился, вскочил на ноги, подхватил падающий велосипед и не сбавляя темпа прыгнул на него и поехал дальше. Вот. Это официальная версия для жены.
Для родителей будет ещё более укороченная версия: "ехал, поцарапался"
Ну а в действительности... Ехал по трассе в Боровляны, и тут стукнуло в голову переместится на велодорожку, проходящую параллельно, но чуть ниже. Решил на скорости проскочить разделяющий их кусок травы. Ну а чтобы было веселее решил это сделать не просто с дороги, а с насыпи, на которой стоит какой-то путевой знак. Крутовата оказалась та насыпь... Мне бы переднее колёсико-то приподнять, может чего и вышло бы, но я как ехал, так и клюнул в низ. А там песочек, переднее колесо в него уткнулось и дальше решило не ехать. А я всё ещё ехал, вернее уже летел.
Ну, приземлился. Отдышался. Покрутил головой - вроде шея целая. Потрогал рёбра - вроде болят не сильно. Пару ссадин и царапин. Голова в песке.
Велосипед к счастью не пострадал :) Дальше поехал зело медленно и сугубо аккуратно - мало ли, посттравматический шок, может у меня там ногу оторвало, а я ещё не чувствую.
На утро подсчитал потери - растянул правую трапециевидную мышцу когда приземлялся на голову, синяк на рёбрах с лева, синяки на коленях (руль наверное задел, в следующий раз надо аккуратнее).
На работу ехал сегодня целый час :)
Ярлыки:
вело
вторник, 20 апреля 2010 г.
Штрафики-то подросли
Сегодня наткнулся на сообщение на форуме poehali.net. Человека оштрафовали за езду по проезжей части на велосипеде. Ну, бывает... Но вот размер штрафа не порадовал - 70 тысяч. Раньше 3.500 и свободен, если признал свою вину.
Что-то мне немножко расхотелось кататься по проезжей части с таким-то ценником. Я и раньше-то не злоупотреблял ПЧ, а сейчас вообще придётся отказаться :( Здравствуйте долбаные тротуары.
Чувствуется какой-то топографический кретинизм: страна - гондурас, а название - Беларусь.
З.Ы. Вчера впилил на полную катушку домой. 40 минут. Что-то я наверное погорячился, рассчитывая уложиться в 35 :)
Что-то мне немножко расхотелось кататься по проезжей части с таким-то ценником. Я и раньше-то не злоупотреблял ПЧ, а сейчас вообще придётся отказаться :( Здравствуйте долбаные тротуары.
Чувствуется какой-то топографический кретинизм: страна - гондурас, а название - Беларусь.
З.Ы. Вчера впилил на полную катушку домой. 40 минут. Что-то я наверное погорячился, рассчитывая уложиться в 35 :)
Ярлыки:
вело
понедельник, 19 апреля 2010 г.
На работу на велосипеде
Наконец поборол свою природную скромность, которая шептала "сопрут, ой сопрут" и приехал на работу на велосипеде.
По пути с трудом сдерживался от желания припустить во всю - хотелось приехать не вспотев. Но вообще-то это не дело: так все нервы можно растерять - ну невозможно же так медленно ехать! :) Нужно будет что-то придумать с обмытием тушки в туалете - скорее всего внедрю вариант обтирания мокрым полотенцем.
По приезду встретился с трудностью пристегнуть велосипед - целевой столбик стоит за сеткой-рабицей и обернуть цепь не просто - руки сквозь сетку не пролазят. Спасибо коллеге, помог. В следующий раз нужно привезти кусок загнутой проволоки.
До работы 15 км и 50 минут если не спешить.
По пути с трудом сдерживался от желания припустить во всю - хотелось приехать не вспотев. Но вообще-то это не дело: так все нервы можно растерять - ну невозможно же так медленно ехать! :) Нужно будет что-то придумать с обмытием тушки в туалете - скорее всего внедрю вариант обтирания мокрым полотенцем.
По приезду встретился с трудностью пристегнуть велосипед - целевой столбик стоит за сеткой-рабицей и обернуть цепь не просто - руки сквозь сетку не пролазят. Спасибо коллеге, помог. В следующий раз нужно привезти кусок загнутой проволоки.
До работы 15 км и 50 минут если не спешить.
Ярлыки:
вело
суббота, 10 апреля 2010 г.
Открытие сезона. Пролог.
Сегодня, на кануне открытия велосезона, решил проехаться на велике в целях тренировки и развлечения :)
Первым делом съездил на работу, получилось 42 минуты. Вполне хороший результат, если учесть, что на автобусе поездка занимает в среднем 1 час 10 минут. Ещё потренеруюсь, изучу оптимальные маршруты и думаю уложусь в 35 минут. До работы около 14 км.
Затем решил прокатиться по велобану -туда-сюда-обратно, о боже как приятно вначале в сторону Ждановичей, а потом в Серебрянку. Туда домчался приятственно, обгоняя всех попутных велосипедистов и мамаш с колясками. Развернулся и... меня встретил мягкий вмордувинд, который с непривычки меня весьма растроил.
Пока доехал до точки вброса на велодорожку(парк Горького) понял, что нет, не судьба. Ноги не едут, денег на покушать нет, а задница так вообще отказалась учавствовать в веселье и обиженно заныла: "домой, домой...". Я и поехал, не отказывать же ей?
Домой добрался в четвертьобморочном состоянии: ко всему прочему правое колено подключилось к попо и начало ныть.
Сижу вот и думаю, не переборщил ли для кануна открытия сезона? Смогул и завтра вообще двигаться? :)
Итого за сегодня 60. "Мало молодые люди. Молодые люди зарделись.". Ничего, "в лучшие времена дам больше" :)
Первым делом съездил на работу, получилось 42 минуты. Вполне хороший результат, если учесть, что на автобусе поездка занимает в среднем 1 час 10 минут. Ещё потренеруюсь, изучу оптимальные маршруты и думаю уложусь в 35 минут. До работы около 14 км.
Затем решил прокатиться по велобану -
Пока доехал до точки вброса на велодорожку(парк Горького) понял, что нет, не судьба. Ноги не едут, денег на покушать нет, а задница так вообще отказалась учавствовать в веселье и обиженно заныла: "домой, домой...". Я и поехал, не отказывать же ей?
Домой добрался в четвертьобморочном состоянии: ко всему прочему правое колено подключилось к попо и начало ныть.
Сижу вот и думаю, не переборщил ли для кануна открытия сезона? Смогул и завтра вообще двигаться? :)
Итого за сегодня 60. "Мало молодые люди. Молодые люди зарделись.". Ничего, "в лучшие времена дам больше" :)
Ярлыки:
вело
четверг, 8 апреля 2010 г.
bash functions
Недавно выяснил одну интересную штуку. Оказывается функции в bash-скриптах являются как-бы аналогами консольных утилит: их можно вызывать с параметрами и даже перенаправлять ввод-вывод! Всё как оказывается в высшей степени логично.
Приведу небольшой пример:
В данном скриптике(который я использую для форматирования расписания с одного сайта) определено 2 функции: source и nice_fmt
source выдаёт в stdout текст из буфера обмена(дело происходит в cygwin),
а nice_fmt принимает на stdin текст и добавляет лидирующий 0 где необходимо.
И действуют они как обычные программы. Выход source я обрабатываю gawk-ом, и потом форматирую вывод.
Я бы сказал, что это по гиковски прекрасно :)
Приведу небольшой пример:
#!/bin/bash
function source
{
cat /dev/clipboard
}
function nice_fmt
{
sed -re 's/^([0-9]) /0\1 /'
}
source | gawk -F "\t" '{ print $1, $2 }' | nice_fmt
source | gawk -F "\t" '{ print $3, $4 }' | nice_fmt
В данном скриптике(который я использую для форматирования расписания с одного сайта) определено 2 функции: source и nice_fmt
source выдаёт в stdout текст из буфера обмена(дело происходит в cygwin),
а nice_fmt принимает на stdin текст и добавляет лидирующий 0 где необходимо.
И действуют они как обычные программы. Выход source я обрабатываю gawk-ом, и потом форматирую вывод.
Я бы сказал, что это по гиковски прекрасно :)
Ярлыки:
linux
среда, 7 апреля 2010 г.
Windows+Ext4
Уря, наконец-то нашлась простая утилитка для чтения ext4 разделов из под винды.
Из достоинств - отсутствие необходимости установки и собственно чтение ext4.
Недостатков впрочем куча - read only режим, нет возможности открыть файл не скачав его полностью на хост, невозможно выделить несколько файлов сразу - скачать можно или один файл или всю папку.
В общем для быстрого доступа сгодится, но если нужно что-то посерьёзнее, всё равно придётся устанавливать VMWare, настраивать и запускать виртуалку...
Из достоинств - отсутствие необходимости установки и собственно чтение ext4.
Недостатков впрочем куча - read only режим, нет возможности открыть файл не скачав его полностью на хост, невозможно выделить несколько файлов сразу - скачать можно или один файл или всю папку.
В общем для быстрого доступа сгодится, но если нужно что-то посерьёзнее, всё равно придётся устанавливать VMWare, настраивать и запускать виртуалку...
Ярлыки:
linux
понедельник, 5 апреля 2010 г.
Киви
С удивлением узнал, что киви это вообще-то птица такая. А фрукт назван в её честь. Вот вам ссылка на википедию. Мда...
Выглядит эта птичка где-то так:

Кстати, есть замечательный клип на тему киви (разумеется птицы, а не фрукта). Грустный.
Клип существует с различными звуковыми дорожками, но самая тру - Gary Jules / Mad World
З.Ы. Предыдущее сообщение о переходе на винду прошу официально считать шуткой :) Ну кто же в здравом уме обратно перейдёт? ;)
Выглядит эта птичка где-то так:

Кстати, есть замечательный клип на тему киви (разумеется птицы, а не фрукта). Грустный.
Клип существует с различными звуковыми дорожками, но самая тру - Gary Jules / Mad World
З.Ы. Предыдущее сообщение о переходе на винду прошу официально считать шуткой :) Ну кто же в здравом уме обратно перейдёт? ;)
Ярлыки:
о жизни
четверг, 1 апреля 2010 г.
понедельник, 29 марта 2010 г.
Life -> MTS
Вчера усилием воли мы с женой заставили себя переключится с лайфа на MTS. Всё-таки лайф штука сугубо глючная. Сколько раз я не мог дозвониться, потому-что "нет сети"? А хронические обрывы разговора на 15 секундах? А постоянные изменения тарифного плана?
В общем, лайф пошёл лесом, тестирую MTC.
В общем, лайф пошёл лесом, тестирую MTC.
Ярлыки:
о жизни
Сезон лисапетный: 2010
Открыл наконец-то велосезон на выходных. В субботу сел, вкрутил 3 км за автобусом и сдулся - дыхалка уже не та, нужно растренировывать заново. Дальше поехал более прогулочным темпом, но через 20 км уже запротестовала моя мягчайшая часть тела, пришлось рулить домой.
В воскресенье навернул ещё 20 км, итого за выходные - стыдно сказать - 43 км.
С этого сезона решил сбросить общий счётчик километров в 0, что бы видеть суммарный пробег за сезон. Ну а суммарно-суммарный пробег за всё время буду считать в OO Calc.
З.Ы. Купил наконец-то вело-перчатки, а то уже стыдно кататься в лохмотьях :) На очереди очки.
З.З.Ы. Пробег за прошлый сезон - 3825. Суммарный пробег за прошлые сезоны - 6881.
В воскресенье навернул ещё 20 км, итого за выходные - стыдно сказать - 43 км.
С этого сезона решил сбросить общий счётчик километров в 0, что бы видеть суммарный пробег за сезон. Ну а суммарно-суммарный пробег за всё время буду считать в OO Calc.
З.Ы. Купил наконец-то вело-перчатки, а то уже стыдно кататься в лохмотьях :) На очереди очки.
З.З.Ы. Пробег за прошлый сезон - 3825. Суммарный пробег за прошлые сезоны - 6881.
Ярлыки:
вело
суббота, 13 марта 2010 г.
Debian/sid + CityInfo 2.7
Сегодня решил поставить CityInfo на debian. Версия 2.6 довольно просто ставится под wine, но я захотел 2.7. Поискал намного и сразу же наткнулся на статью, описывающую установку. Однако этот мануал не сработал полностью, пришлось допиливать напильником. Для заинтересованных расписываю.
1. Первым делом я установил wine поновее. В стандартном дереве sid была только версия 1.0.1, но рекомендовали 1.1.5 и выше. Оказалось, нужно добавить новый источник
в файл /etc/apt/sources.list и становится доступными версии 1.1.37, 1.1.38, 1.1.40
Установил последнюю. При этом aptitude немного ругается на неизвестный публичный ключ, но это не смертельно. А если хочется, можно убрать и эту проблему
2. Установил cabextract
3. Скачал IEs4Linux http://www.tatanka.com.br/ies4linux/
Это небольшой скриптик, который копирует существующую инфраструктуру WINE из ~/.wine в ~/.ies4linux/ie6, скачивает IE6 с сайта майкрософта и устанавливает его туда.
4. Теперь дело за CityInfo. Нашёл где-то инсталляцию, скачал с официального сайта обновления программы и транспорта. Итого имеем 3 файла(на текущий момент):
5. Устанавливаем CityInfo в директорию ~/.ies4linux/ie6. Тут нужна консоль:
WINEPREFIX указывает, где находится корневая папка wine. Устанавливать в ~/.wine (т.е. по умолчанию) не стоит - у меня после этого ничего не завелось, как я не бился.
Ну вот собственно и всё. Запускать надо так:
Лучше всего засунуть это в скриптик какой
В общем, основное отличие от вышеуказанного мануала в том, что устанавливать надо туда, где лежит нормальный IE, это по умолчанию ~/.ies4linux/ie6
З.Ы. Слава боевым роботам!
1. Первым делом я установил wine поновее. В стандартном дереве sid была только версия 1.0.1, но рекомендовали 1.1.5 и выше. Оказалось, нужно добавить новый источник
deb http://www.lamaresh.net/apt sid main
в файл /etc/apt/sources.list и становится доступными версии 1.1.37, 1.1.38, 1.1.40
Установил последнюю. При этом aptitude немного ругается на неизвестный публичный ключ, но это не смертельно. А если хочется, можно убрать и эту проблему
2. Установил cabextract
3. Скачал IEs4Linux http://www.tatanka.com.br/ies4linux/
Это небольшой скриптик, который копирует существующую инфраструктуру WINE из ~/.wine в ~/.ies4linux/ie6, скачивает IE6 с сайта майкрософта и устанавливает его туда.
4. Теперь дело за CityInfo. Нашёл где-то инсталляцию, скачал с официального сайта обновления программы и транспорта. Итого имеем 3 файла(на текущий момент):
CityInfo2.7.exe
ci27p3v3.exe
trupdate27_41.exe
5. Устанавливаем CityInfo в директорию ~/.ies4linux/ie6. Тут нужна консоль:
$ WINEPREFIX=~/.ies4linux/ie6 wine CityInfo2.7.exe
$ WINEPREFIX=~/.ies4linux/ie6 wine ci27p3v3.exe
$ WINEPREFIX=~/.ies4linux/ie6 wine trupdate27_41.exe
WINEPREFIX указывает, где находится корневая папка wine. Устанавливать в ~/.wine (т.е. по умолчанию) не стоит - у меня после этого ничего не завелось, как я не бился.
Ну вот собственно и всё. Запускать надо так:
$ WINEPREFIX=~/.ies4linux/ie6 wine ~/.ies4linux/ie6/drive_c/Program\ Files/ESMA\ Ltd/CityInfo/CityInfo.exe
Лучше всего засунуть это в скриптик какой
В общем, основное отличие от вышеуказанного мануала в том, что устанавливать надо туда, где лежит нормальный IE, это по умолчанию ~/.ies4linux/ie6
З.Ы. Слава боевым роботам!
суббота, 27 февраля 2010 г.
Debian/sid
Потренировавшись на кошках виртуалках и выкачав при этом 3-4 гига гостевого трафика я наконец решился на установку debian-а на реальном компе. Под раздачу попал мой домашний комп, на котором я иногда работаю, а ноутбук пока что остался с гентой.
Целью всего этого безобразия было не только поставить линукс на десктопе, но и мягко потрогать за вымя другие дистрибутивы. Выбор пал на debian, поскольку он доступен по гостевому соединению. Для пущего эффекта "новизны" выл выбран Gnome вместо KDE, и нестабильная ветка - sid.
В принципе никаких сложностей с базовой установкой не возникло - скачал netinst CD, запёк на болванку, проинсталировал. В итоге без проблем запустился неродной гном.
Дальше я начал обновляться до sid-а. Не самая простая вещь, как оказалось. Ничего не подозревая, я выбрал для обновления ядро, саму утилитку aptitude и ещё пару вещей. Проинсталировал, без проблем, перегрузился на новое ядро и.... X-ы не стартанули.
Щьёрт, подумал я и решил проверить что там говорит aptitude. Оно молчало. И не просто молчало - его нигде не было. Не знаю, ошибка это или я где-то напорол, но старая версия была удалена, а новая не проинсталлировалась :) dselect тоже отсутствовал, dpkg показалось какой-то мутной шнягой, и я уже почти решился всё переинсталлировать начисто, но вовремя вспомнил про свои эксперименты с apt-get.
apt-get install aptitude
помогло, и а снова начал безбожно всё обновлять до sid-а. В конце концов я сумел запустить X-ы и gnome.
Ну а дальше всё просто - я инсталлировал и инсталлировал. Затем в один непрекрасный момент я перегрузился и обнаружил, что gnome не стартует, а вместо него почему-то красуется богомерзкий twm.
Через некоторое время я снова обнаружил, что старая версия гнома была снесена, а новая не установлена. Пришлось доустанавливать.
Итого, инсталляция, апгрейды и настройка заняли у меня около 12 часов :) Большую часть времени правда скачивание пакетов - 1.7 гига, как я сейчас подсчитал.
Целью всего этого безобразия было не только поставить линукс на десктопе, но и мягко потрогать за вымя другие дистрибутивы. Выбор пал на debian, поскольку он доступен по гостевому соединению. Для пущего эффекта "новизны" выл выбран Gnome вместо KDE, и нестабильная ветка - sid.
В принципе никаких сложностей с базовой установкой не возникло - скачал netinst CD, запёк на болванку, проинсталировал. В итоге без проблем запустился неродной гном.
Дальше я начал обновляться до sid-а. Не самая простая вещь, как оказалось. Ничего не подозревая, я выбрал для обновления ядро, саму утилитку aptitude и ещё пару вещей. Проинсталировал, без проблем, перегрузился на новое ядро и.... X-ы не стартанули.
Щьёрт, подумал я и решил проверить что там говорит aptitude. Оно молчало. И не просто молчало - его нигде не было. Не знаю, ошибка это или я где-то напорол, но старая версия была удалена, а новая не проинсталлировалась :) dselect тоже отсутствовал, dpkg показалось какой-то мутной шнягой, и я уже почти решился всё переинсталлировать начисто, но вовремя вспомнил про свои эксперименты с apt-get.
apt-get install aptitude
помогло, и а снова начал безбожно всё обновлять до sid-а. В конце концов я сумел запустить X-ы и gnome.
Ну а дальше всё просто - я инсталлировал и инсталлировал. Затем в один непрекрасный момент я перегрузился и обнаружил, что gnome не стартует, а вместо него почему-то красуется богомерзкий twm.
Через некоторое время я снова обнаружил, что старая версия гнома была снесена, а новая не установлена. Пришлось доустанавливать.
Итого, инсталляция, апгрейды и настройка заняли у меня около 12 часов :) Большую часть времени правда скачивание пакетов - 1.7 гига, как я сейчас подсчитал.
Ярлыки:
linux
Heroes I
Просмотрел первый сезон сабжевого сериала... Не впечатлился - сюжет какой-то мутный, диалоги дурацкие, а на слова "судьба" и "спасти мир" у меня вообще образовался рвотный рефлекс. Такое ощущение, что для них даже овсянку на завтрак съесть - это судьба, предназначение и вообще способ спасти мир. Но они её есть не хотят, потому что стремятся быть как все, но при этом едят, потому что они герои, но ... И, да, помочь может только Питер Петрелли.
В общем смотрел его только потому, что уже сконвертировал все серии под мобильник, и смотрел по пути на работу. Теперь ищу что ещё можно смотреть на маленьком экране, склоняюсь к "Разрушителям легенд".
В общем смотрел его только потому, что уже сконвертировал все серии под мобильник, и смотрел по пути на работу. Теперь ищу что ещё можно смотреть на маленьком экране, склоняюсь к "Разрушителям легенд".
воскресенье, 14 февраля 2010 г.
Gentoo и лицензии
Как я недавно узнал, некоторые пакеты в Gentoo теперь маскированы из-за лицензии. Это например virtualbox-bin с лицензией PUEL, jdk с какой-то ещё лицензией.
Есть один простой способ пресечь это безобразие - добавить строку в make.conf
ACCEPT_LICENSE="*"
Теперь все лицензии будут "приняты", что хорошо для таких разгильдяев, как я.
Если же вы человек строгих моральных принципов - читайте лицензию и размаскируйте пакет, добавив его в файл
/etc/portage/package.license
такую строку:
app-emulation/virtualbox-bin PUEL
Есть один простой способ пресечь это безобразие - добавить строку в make.conf
ACCEPT_LICENSE="*"
Теперь все лицензии будут "приняты", что хорошо для таких разгильдяев, как я.
Если же вы человек строгих моральных принципов - читайте лицензию и размаскируйте пакет, добавив его в файл
/etc/portage/package.license
такую строку:
app-emulation/virtualbox-bin PUEL
суббота, 13 февраля 2010 г.
Купил принтер
... пару дней назад. Жене срочно нужно было распечатать страниц 30 на следующий день. Ехать с самого утра по всяким шарашкам ей не хотелось, да и вообще, принтер в хозяйстве необходим. Вот и решили - сейчас принтер, чуть позже сканер.
Выбрал простой лазерный - HP LaserJet P1005, проверил на совместимость с Linux, бегло просмотрел, как проинсталлировать модель 1005, и какие вооще отличия от 1018, который раньше был у меня.
Отличий в общем-то никаких - только прошивку надо скачать новую, а так у меня уже всё готово.
Купили. Привезли, распаковали, подключили. Дело за драйвером. Вписал в FOO2JZS_DEVICES новую модель - hp1005, перекомпилировал foo2jzs. Смотрю - прошивка на месте:
/lib/firmware/sihp1005.dl
Ну, думаю, всё пучком. Запускаю - никакой реакции. Принтер не печатает, да и вообще, прошивку похоже не грузит: по своему старому 1018 помню, что дело это вполне заметное - принтер начинает шевелится, шуршать и всячески говорить "хозяин, прошивка что надо!" А тут - молчит зараза.
Ну, взял и залил прошивку руками
cat /lib/firmware/sihp1005.dl > /dev/usb/lp0
Не шевелится.
Всё, думаю, капут. Жена думает тоже самое, только ещё капутестее. Ей же в пять утра вставть и ехать печатать эти доки.
Раскопал где-то из запасов виртуалку с виндой. Поставил дрова - принтер не виден. Ну, думаю, шнурок, гады подогнали хреновый. А шнурок и впрямь не фешенебельный - тоненький и длинный. Всё, говорю жене, приехали, ничего не попишешь. На завтра жена утром(совсем утром) уехала, а я купил нурок, чуть потолще.
Ну, рассовал его по разьёмам, и с надеждой включил принтер. Молчит, зараза. Не печатает.
Совсем я тут расстроился, и решил поставить винду. Если уж и там не заработает, то... надо менять лазерник. Расчистил место на одном из разделов - поставил винду. Проверяю - печатает! Жена смотрит недобро, мол у всех винда и никаких проблем, а у тебясрам... ну то есть, линукс.
А винда, добрая душа, конечно перезаписала mbr с моим grub и перетасовала разделы. Кто её собственно просил? Пришлось восстанавливать загрузчик, и править fstab. Хотя нет худа без добра - теперь у меня /dev/hda1 это и есть первый, бутовый раздел. Раньше он был /dev/hda2, а второй был первым. Короче катавасия та ещё.
Ну а вчера вечером я полез копаться, что же случилось то? Почему не пашет прошивка в линуксе, а в винде очень даже пашет. Нашёл буквально через 10 минут. Оказывается я просто весьма не внимательный товарищ :) Принтеры HP LaserJet 1005 и HP LaserJet P1005 это два разных человека! Скачал прошивку sihpp1005.dl - всё работает. Жена меня чуть не придушила, но к счатью обошлось.
Повозившись ещё часик я настроил и CUPS и hotplug и всё что надо. Теперь P1005 работает, как и полагается честному принтеру. А что делать с виндой пока не знаю... Пересоздать раздел? Отформатировать? Жестоко стирать файлы по одному?...
Выбрал простой лазерный - HP LaserJet P1005, проверил на совместимость с Linux, бегло просмотрел, как проинсталлировать модель 1005, и какие вооще отличия от 1018, который раньше был у меня.
Отличий в общем-то никаких - только прошивку надо скачать новую, а так у меня уже всё готово.
Купили. Привезли, распаковали, подключили. Дело за драйвером. Вписал в FOO2JZS_DEVICES новую модель - hp1005, перекомпилировал foo2jzs. Смотрю - прошивка на месте:
/lib/firmware/sihp1005.dl
Ну, думаю, всё пучком. Запускаю - никакой реакции. Принтер не печатает, да и вообще, прошивку похоже не грузит: по своему старому 1018 помню, что дело это вполне заметное - принтер начинает шевелится, шуршать и всячески говорить "хозяин, прошивка что надо!" А тут - молчит зараза.
Ну, взял и залил прошивку руками
cat /lib/firmware/sihp1005.dl > /dev/usb/lp0
Не шевелится.
Всё, думаю, капут. Жена думает тоже самое, только ещё капутестее. Ей же в пять утра вставть и ехать печатать эти доки.
Раскопал где-то из запасов виртуалку с виндой. Поставил дрова - принтер не виден. Ну, думаю, шнурок, гады подогнали хреновый. А шнурок и впрямь не фешенебельный - тоненький и длинный. Всё, говорю жене, приехали, ничего не попишешь. На завтра жена утром(совсем утром) уехала, а я купил нурок, чуть потолще.
Ну, рассовал его по разьёмам, и с надеждой включил принтер. Молчит, зараза. Не печатает.
Совсем я тут расстроился, и решил поставить винду. Если уж и там не заработает, то... надо менять лазерник. Расчистил место на одном из разделов - поставил винду. Проверяю - печатает! Жена смотрит недобро, мол у всех винда и никаких проблем, а у тебя
А винда, добрая душа, конечно перезаписала mbr с моим grub и перетасовала разделы. Кто её собственно просил? Пришлось восстанавливать загрузчик, и править fstab. Хотя нет худа без добра - теперь у меня /dev/hda1 это и есть первый, бутовый раздел. Раньше он был /dev/hda2, а второй был первым. Короче катавасия та ещё.
Ну а вчера вечером я полез копаться, что же случилось то? Почему не пашет прошивка в линуксе, а в винде очень даже пашет. Нашёл буквально через 10 минут. Оказывается я просто весьма не внимательный товарищ :) Принтеры HP LaserJet 1005 и HP LaserJet P1005 это два разных человека! Скачал прошивку sihpp1005.dl - всё работает. Жена меня чуть не придушила, но к счатью обошлось.
Повозившись ещё часик я настроил и CUPS и hotplug и всё что надо. Теперь P1005 работает, как и полагается честному принтеру. А что делать с виндой пока не знаю... Пересоздать раздел? Отформатировать? Жестоко стирать файлы по одному?...
среда, 3 февраля 2010 г.
Меняю работу.
Собственно сабж. Возвращаюсь на старую работу, с которой в своё время ушёл. Давно у меня такие мысли бродили - сменить работу на более масштабную, сложную и ответственную. А тут позвонили, я и согласился.
Согласился правда не сразу - мучался пару дней, прикидывал плюсы и минусы, где что и как. Плюсов было с обоих сторон, что делало выбор тяжёлым. Да. Но в конце концов перевесило желание профессионального роста, каковой я надеюсь будет. Это конечно не сервера гугля разрабатывать, но уже и не внутренний софт.
Согласился правда не сразу - мучался пару дней, прикидывал плюсы и минусы, где что и как. Плюсов было с обоих сторон, что делало выбор тяжёлым. Да. Но в конце концов перевесило желание профессионального роста, каковой я надеюсь будет. Это конечно не сервера гугля разрабатывать, но уже и не внутренний софт.
Ярлыки:
о жизни
понедельник, 1 февраля 2010 г.
Покатался на лыжах
Вчера первый раз катался на горных лыжах в Силичах. В общем, впечатления от катания сугубо положительные, не смотря на то, что новые штаны были порваны в первые же 10 минут, а одно ребро что-то болит и довольно неприятственно. Собственно и то и другое произошло исключительно по моей глупости - выйдя первый раз на склон(тренировочный, к тому же), я не присмотрелся что к чему, а сразу попёр. В результате я быстро понял, что поворачивать и тормозить я не умею. Пришлось падать, больно падать. :) Только через некоторое время я проникся что к чему, и довольно сносно поворачивал. И пошёл на нормальные трассы. Успел скатиться только один раз с пологой трассы, зато не упал :)
В общем, здорово. Можно подумать о покупке лыж.
Вот. А вот впечатления от организации сугубо отрицательные. Полтора часа мы как идиоты торчали в зале и ждали, когда заработает наконец-то комп. Это какой-то писец. Самое интересное, что мы практически больше всех ждали. Парень перед нами проскочил, а мы - зависли. Пожалуй больше чем нам не повезло сноубордистам: оказывается система к ним не так лояльна, как к лыжникам. Нас пропустило, а их - нет. Говорит, оборудование уже выдано o_O.
Но, как только один из наших товарищей начал спрашивать, где же тут лежит книга жалоб и предложений, компьютер заработал. Честно говоря похоже на совпадение, но как-то странно.
После того, как наше оборудование(ака лыжи) вбили в комп, мы попытались всё это дело оплатить. И мать, их, касса висела! Ещё пять минут мы ждали, пока заведётся комп на кассе.
Да, ещё занятный момент. У одного товарища поломалось крепление на лыжах - болтик какой-то выскочил, или раскрутился. При сдаче нам предложили оплатить 25 тыр за починку, или чинить самим. Взялись сами - просто вкрутили болтик обратно и отдали. Но такая починка мне как-то доверия не внушает, в следующий раз буду всё проверять и дёргать. Не хватало лишиться лыж на склоне...
З.Ы. А всё-таки понравилось, надо будет ещё съездить :)
В общем, здорово. Можно подумать о покупке лыж.
Вот. А вот впечатления от организации сугубо отрицательные. Полтора часа мы как идиоты торчали в зале и ждали, когда заработает наконец-то комп. Это какой-то писец. Самое интересное, что мы практически больше всех ждали. Парень перед нами проскочил, а мы - зависли. Пожалуй больше чем нам не повезло сноубордистам: оказывается система к ним не так лояльна, как к лыжникам. Нас пропустило, а их - нет. Говорит, оборудование уже выдано o_O.
Но, как только один из наших товарищей начал спрашивать, где же тут лежит книга жалоб и предложений, компьютер заработал. Честно говоря похоже на совпадение, но как-то странно.
После того, как наше оборудование(ака лыжи) вбили в комп, мы попытались всё это дело оплатить. И мать, их, касса висела! Ещё пять минут мы ждали, пока заведётся комп на кассе.
Да, ещё занятный момент. У одного товарища поломалось крепление на лыжах - болтик какой-то выскочил, или раскрутился. При сдаче нам предложили оплатить 25 тыр за починку, или чинить самим. Взялись сами - просто вкрутили болтик обратно и отдали. Но такая починка мне как-то доверия не внушает, в следующий раз буду всё проверять и дёргать. Не хватало лишиться лыж на склоне...
З.Ы. А всё-таки понравилось, надо будет ещё съездить :)
Ярлыки:
о жизни
пятница, 29 января 2010 г.
Просто о xargs
Долгими зимними вечерами я сидел и думал "вот придёт светлое время, я сяду и как следует разберусь с этой загадочной утилиткой xarg". Ну вот время похоже и пришло - я сел разбираться. Первое, что мне бросилось в глаза, это то, что man к ней довольно загадочный, и с первого раза не просветляет. Статья на википедии понимания тоже не добавила, а скорее даже запутала, поэтому я решил провести своё собственное расследование, и написать по этому поводу небольшой мануальчик. Как известно, пока объясняешь и сам поймёшь :)
Итак, xargs.
xargs это такая утилита командной строки, позволяющая вызвать любую команду с аргументами, взятыми из стандартного входа. Причём аргументы можно передать все сразу, а можно группировать по несколько штук. Изучать мы будем xargs версии 4.4.0, при чём по рекомендации man-а будем использовать только новые аргументы, не помеченные как deprecated(лучше сразу привыкать работать правильно).
Итак первое, что стоит понять, это то, как xargs обрабатывает входящий поток и делит его на аргументы. Есть несколько режимов, зависящих от опций:
1. Обычный. По умолчанию разделителем аргументов считается любой пробельный символ: пробел, табуляция, вертикальная табуляция или перевод строки. Но как и в командной оболочке можно использовать "" или \ что бы предотвратить разбиение аргумента.
2. Обычный, с группировкой. Режим, включающийся параметром -L. Практически идентичен предыдущему, за исключением того, что xargs запоминает, какой аргумент на какой строке находится. Более того, если строка оканчивается пробелом или табуляцией, следующая строка считается продолжением текущей.
3. По строкам. Включается при использовании опции -I или -0. При этом вся строка считается одним целым аргументом, несмотря на пробелы и табуляции внутри. Для -I концом строки является символ '\n' а для -0 символ '\0'
Проведём пару испытаний, что бы лучше понять всё это. Создадим файл test с следующим содержимым(== в файл заносить не надо):
==
arg1
arg2 space
"arg3 quoted"
arg4\ escaped
arg5 with
continue
==
(После 'arg5 with' должен быть пробел)
А так-же напишем небольшой скрипт tp, который будет выводить свои аргументы разделяя их символом ':' и количество:
==
#!/bin/bash
echo -n "@$#"
while [[ $1 != "" ]]; do echo -n ":$1"; shift; done
echo
==
Обычный режим(выделение аргументов по пробельным символам):
x $ cat test | xargs ./tp
@8:arg1:arg2:space:arg3 quoted:arg4 escaped:arg5:with:continue
Файл был разбит на аргументы по пробельным символам, но строки взятые в кавычки и экранированные символом '\' остались целыми.
Обычный режим с группировкой по строкам не отличается от предыдущего на этом этапе.
Разбиение по строкам. Создадим второй тестовый файл следующей командой:
x $ cp test testz && printf "\0arg6" >> testz
Проверим
x $ cat testz | xargs -0 ./tp
@2:arg1
arg2 space
"arg3 quoted"
arg4\ escaped
arg5 with
continue
:arg6
Как можно видеть аргумента всего 2. Первый длинный, сохранивший переводы строк, кавычки и \, а второй arg6. В файле они разделены нулевым символом.
По поводу разделения параметров можно ещё сказать о опции -d, которая указывает новый разделитель. Например попробуем использовать '3' как разделитель.
x $ cat test | xargs -d 3 ./tp
@2:arg1
arg2 space
"arg: quoted"
arg4\ escaped
arg5 with
continue
Произошло разделение файла на 2 части на месте символа '3'. Что примечательно, таким образом можно эмулировать опцию -0
x $ cat testz | xargs -d "\x00" ./tp
@2:arg1
arg2 space
"arg3 quoted"
arg4\ escaped
arg5 with
continue
:arg6
С деление входного потока на аргументы кажется разобрались, переходим к подстановке параметров.
Итак, xarg после своих опций ждёт команду, которую и будет выполнять. Все входящие аргументы разбиваются на группы, после чего заданная команда вызывается для каждой группы, и в неё передаются все аргументы из этой группы.
Теперь рассмотрим, как формируются группы.
1. Если опций нет, то группа одна, в неё попадают все аргументы из потока ввода. Группа бесконечного размера, так сказать :)
2. Опция -L n задаёт группировку по строкам. В команду передаются аргументы находящиеся на n строках. Продемонстрирую на примерах.
Группировка по 1 строке:
x $ cat test | xargs -L 1 ./tp
@1:arg1
@2:arg2:space
@1:arg3 quoted
@1:arg4 escaped
@3:arg5:with:continue
Видно, что вторая строка содержит 2 аргумента, потому как они оба на одной строке. А а последняя вообще 3, так как предпоследняя строка "удлинняется" за счёт пробела в конце.
Теперь группировка по 2 строки. В команду попадают строки 1 и 2; 3 и 4; и сиротка 5-ая:
x $ cat test | xargs -L 2 ./tp
@3:arg1:arg2:space
@2:arg3 quoted:arg4 escaped
@3:arg5:with:continue
3. Группировка по аргументам, задаваемая опцией -n x. Тут всё прозрачно: аргументы группируются по x штук и передаются в команду.
По одному аргументу:
x $ cat test | xargs -n 1 ./tp
@1:arg1
@1:arg2
@1:space
@1:arg3 quoted
@1:arg4 escaped
@1:arg5
@1:with
@1:continue
По 2 аргумента:
x $ cat test | xargs -n 2 ./tp
@2:arg1:arg2
@2:space:arg3 quoted
@2:arg4 escaped:arg5
@2:with:continue
3. Режим с подстановкой - опция -I. Для начала надо напомнить, что в данном режиме аргументы из потока ввода разбираются по особому. Каждая строка это один целый аргумент, склеивание строк не производится. Во вторых, у опции -I имеется параметр - строка, которая заменяется в команде на аргумент:
x $ echo -e "A B\nC D" | xargs -I _ ./tp =_+_=
@1:=A B+A B=
@1:=C D+C D=
Легко заметить, что символ _ задан как строка подстановки аргумента, которая используется в команде 2 раза. Так же видно, что аргументы выделяются целыми строками, и пробел не влияет на разбор. Команда вызывается для каждого аргумента.
С подстановкой всё. Рассмотрим оставшиеся важные опции
-r - не выполнять команду, если нет аргументов:
x $ cat /dev/null | xargs ./tp
@0
x $ cat /dev/null | xargs -r ./tp
x $
Как видим, во втором случае команда не выполнилась.
-p - xargs будет запрашивать подтверждение на выполнение каждой команды.
На этом небольшой мануал завершён. Он оказался не совсем кратеньким, зато надеюсь понятненьким ;)
Итак, xargs.
xargs это такая утилита командной строки, позволяющая вызвать любую команду с аргументами, взятыми из стандартного входа. Причём аргументы можно передать все сразу, а можно группировать по несколько штук. Изучать мы будем xargs версии 4.4.0, при чём по рекомендации man-а будем использовать только новые аргументы, не помеченные как deprecated(лучше сразу привыкать работать правильно).
Итак первое, что стоит понять, это то, как xargs обрабатывает входящий поток и делит его на аргументы. Есть несколько режимов, зависящих от опций:
1. Обычный. По умолчанию разделителем аргументов считается любой пробельный символ: пробел, табуляция, вертикальная табуляция или перевод строки. Но как и в командной оболочке можно использовать "" или \ что бы предотвратить разбиение аргумента.
2. Обычный, с группировкой. Режим, включающийся параметром -L. Практически идентичен предыдущему, за исключением того, что xargs запоминает, какой аргумент на какой строке находится. Более того, если строка оканчивается пробелом или табуляцией, следующая строка считается продолжением текущей.
3. По строкам. Включается при использовании опции -I или -0. При этом вся строка считается одним целым аргументом, несмотря на пробелы и табуляции внутри. Для -I концом строки является символ '\n' а для -0 символ '\0'
Проведём пару испытаний, что бы лучше понять всё это. Создадим файл test с следующим содержимым(== в файл заносить не надо):
==
arg1
arg2 space
"arg3 quoted"
arg4\ escaped
arg5 with
continue
==
(После 'arg5 with' должен быть пробел)
А так-же напишем небольшой скрипт tp, который будет выводить свои аргументы разделяя их символом ':' и количество:
==
#!/bin/bash
echo -n "@$#"
while [[ $1 != "" ]]; do echo -n ":$1"; shift; done
echo
==
Обычный режим(выделение аргументов по пробельным символам):
x $ cat test | xargs ./tp
@8:arg1:arg2:space:arg3 quoted:arg4 escaped:arg5:with:continue
Файл был разбит на аргументы по пробельным символам, но строки взятые в кавычки и экранированные символом '\' остались целыми.
Обычный режим с группировкой по строкам не отличается от предыдущего на этом этапе.
Разбиение по строкам. Создадим второй тестовый файл следующей командой:
x $ cp test testz && printf "\0arg6" >> testz
Проверим
x $ cat testz | xargs -0 ./tp
@2:arg1
arg2 space
"arg3 quoted"
arg4\ escaped
arg5 with
continue
:arg6
Как можно видеть аргумента всего 2. Первый длинный, сохранивший переводы строк, кавычки и \, а второй arg6. В файле они разделены нулевым символом.
По поводу разделения параметров можно ещё сказать о опции -d, которая указывает новый разделитель. Например попробуем использовать '3' как разделитель.
x $ cat test | xargs -d 3 ./tp
@2:arg1
arg2 space
"arg: quoted"
arg4\ escaped
arg5 with
continue
Произошло разделение файла на 2 части на месте символа '3'. Что примечательно, таким образом можно эмулировать опцию -0
x $ cat testz | xargs -d "\x00" ./tp
@2:arg1
arg2 space
"arg3 quoted"
arg4\ escaped
arg5 with
continue
:arg6
С деление входного потока на аргументы кажется разобрались, переходим к подстановке параметров.
Итак, xarg после своих опций ждёт команду, которую и будет выполнять. Все входящие аргументы разбиваются на группы, после чего заданная команда вызывается для каждой группы, и в неё передаются все аргументы из этой группы.
Теперь рассмотрим, как формируются группы.
1. Если опций нет, то группа одна, в неё попадают все аргументы из потока ввода. Группа бесконечного размера, так сказать :)
2. Опция -L n задаёт группировку по строкам. В команду передаются аргументы находящиеся на n строках. Продемонстрирую на примерах.
Группировка по 1 строке:
x $ cat test | xargs -L 1 ./tp
@1:arg1
@2:arg2:space
@1:arg3 quoted
@1:arg4 escaped
@3:arg5:with:continue
Видно, что вторая строка содержит 2 аргумента, потому как они оба на одной строке. А а последняя вообще 3, так как предпоследняя строка "удлинняется" за счёт пробела в конце.
Теперь группировка по 2 строки. В команду попадают строки 1 и 2; 3 и 4; и сиротка 5-ая:
x $ cat test | xargs -L 2 ./tp
@3:arg1:arg2:space
@2:arg3 quoted:arg4 escaped
@3:arg5:with:continue
3. Группировка по аргументам, задаваемая опцией -n x. Тут всё прозрачно: аргументы группируются по x штук и передаются в команду.
По одному аргументу:
x $ cat test | xargs -n 1 ./tp
@1:arg1
@1:arg2
@1:space
@1:arg3 quoted
@1:arg4 escaped
@1:arg5
@1:with
@1:continue
По 2 аргумента:
x $ cat test | xargs -n 2 ./tp
@2:arg1:arg2
@2:space:arg3 quoted
@2:arg4 escaped:arg5
@2:with:continue
3. Режим с подстановкой - опция -I. Для начала надо напомнить, что в данном режиме аргументы из потока ввода разбираются по особому. Каждая строка это один целый аргумент, склеивание строк не производится. Во вторых, у опции -I имеется параметр - строка, которая заменяется в команде на аргумент:
x $ echo -e "A B\nC D" | xargs -I _ ./tp =_+_=
@1:=A B+A B=
@1:=C D+C D=
Легко заметить, что символ _ задан как строка подстановки аргумента, которая используется в команде 2 раза. Так же видно, что аргументы выделяются целыми строками, и пробел не влияет на разбор. Команда вызывается для каждого аргумента.
С подстановкой всё. Рассмотрим оставшиеся важные опции
-r - не выполнять команду, если нет аргументов:
x $ cat /dev/null | xargs ./tp
@0
x $ cat /dev/null | xargs -r ./tp
x $
Как видим, во втором случае команда не выполнилась.
-p - xargs будет запрашивать подтверждение на выполнение каждой команды.
На этом небольшой мануал завершён. Он оказался не совсем кратеньким, зато надеюсь понятненьким ;)
Подписаться на:
Сообщения (Atom)
