Monthly Archive for March, 2008

Запись сегодняшнего каста по shell programming

Как и обещал запись каста :)

Каст качаем здесь (3.5mb).

Отписываемся по задачам - что было бы интересно послушать :)

10 ошибок программиста на shell

Многие не любят писать скрипты на shell, объясняя тем, что это сложно, что это требует много времени, что shell — слишком тупой и на нем невозможно написать что-то сложное и так далее. В действительности это не так. Поэтому я собрал список наиболее часто встречающихся проблем, с которыми сталкиваются пользователи, только начавшие работать с shell и программировать на нем. Сказанное верно для /bin/sh и совместимых с ним.

  1. Непонимание механизма, как shell запускает команды, как происходит открытие и подстановка данных командной строки

  2. Непонимание того, как раскрываются переменные в одинарных кавычках, в двойных кавычках и без кавычек

  3. Непонимание механизма работы подстановка “

  4. Непонимание того, как работает перенаправление (>, >>, <, <<)

  5. Нечеткое понимание того, как работает pipe, как команды связываются в цепочки команд

  6. Как можно группировать команды друг с другом, как запускаются дочерние процессы в shell и когда они завершаются. Как при этом происходит присвоение переменных — и почему не всегда оно срабатывает?

  7. Плохое владение awk и sed, которые многократно расширяют возможности shell.

  8. Неуверенное владение командой test (она же [ ] ) для проверки условий

  9. Незнание всех тонкостей работы команд управления выполнением — if/case/while/for

  10. Отсутствие навыков по комбинированию команд shell друг с другом.

 

Это список тех ошибок, с которыми я сталкивался на своей практике.

Если у вас есть какие-то предложения, какие ошибки бывают у новичков в Unix — отписывайтесь, чтоб я мог бы включить их в программу своего тренинга по shell программированию. Тренинг начнется 24 марта, поэтому запись проблена со 24-го числа!

Кстати, именно с ними мы и будем бороться, пока будет идти тренинг.

Пишите свои предложения!

Программирование на Shell - самое самое начало тренинга :)

Я решил провести этот тренинг в более интерактивном формате, ем предыдущие :)
Поэтому

  • Вам нужны будут наушники/динамики, чтоб меня слушать ;)
  • Детали о вещании и обратной связи - читаем http://forum.gasparchilingarov.com/index.php/topic,52.0.html
  • Затягиваем пояса и морально готовимся к касту :)
  • Запись каста будет, после того, как я ее обработаю.
  • Начинаете регистрироваться на форуме! ( http://forum.gasparchilingarov.com/ )!
  • Вам нужно заготовить хоть какой-то вариант unix shell (не из семейства *csh, а что-то типа sh, bash, kzh, zsh)
    Основной упор будет делаться на FreeBSD /bin/sh, но в принципе с маленькими изменениями должно работать и в других оболочках.
  • Мазохисты могут попытаться работать с Cygwin эмулятором оболочки — и причем доволно успешно (там используется bash).

Все вопросы — задавайте в комментариях к этому посту :)

ПРОБНЫЙ КАСТ — в 21:00 по Москве 20 марта. Чем больше вас подключится — тем лучше :) Проверим мой канал связи :)

Программирование на Shell

Бесплатные материалы по FreeBSD Shell! Кликаем сюда и скачиваем!

Набор прекращен, НО - читайте дальше!

Освободилось 3 2 1 БЕСПЛАТНОЕ место. Можете вписаться, подробности здесь.


Как научится программировать на shell ?

  • Вы пользуетесь Unix системами?

  • Вы хотите получить лучше оплачиваемую работу unix админа?
  • Вы хотите сэкономить свое время и деньги?
  • Вы хотите работать эффективней в Unix среде?
  • Вы хотите научиться программировать на shell и использовать shell на все 100% процентов?

Если Ваш ответ - «Да, я хочу знать больше!» — Вы попали ТОЧНО по адресу! Программирование на shell - это в реальности ОЧЕНЬ просто!

Записывайтесь на БЕСПЛАТНЫЙ тренинг по программированию на /bin/sh в среде Unix!

Предложение в силе до 19 марта 2008 , после этого стоимость тренинга в коробочной версии будеет 6000р.

Бесплатно впишутся только ПЕРВЫЕ 20 человек!

Если не впишетесь до 19 марта - то тогда вы сумеете его купить только в коробочной версии вместе с другими тренингами за цену не ниже 6000р.
Тренинг закрытый и его материалы не будут выкладываться в публичном доступе. Я буду проводить этот тренинг ровно ОДИН раз.

На тренинге будут обязательные домашние задания. Те кто не успеет их выполнить — будут отчислены.

На кого рассчитан курс?

Если вы уже владеете хоть в какой-то степени Unix системой и оболочкой и хотите выучить программирование на shell — то этот курс для вас.

Вы должны хотя бы уметь:

  • запускать команды
  • знать, где искать команды в Unix
  • создавать/редактировать файлы
  • менять права доступа к файлам
  • умение читать man странички

Обязательно скачайте, прочитайте и послушайте бесплатные подкасты/материалы ОТСЮДА .

Программа курса

У вас должно быть базовое знакомство с шелл ! Предварительно скачайте бесплатные материалы по FreeBSD shell .

Что вы НАУЧИТЕСЬ делать:

  • перенаправление ввода-вывода
  • понимание как работает фоновый запуск команд
  • как группировать стандартный вывод нескольких команд
  • как писать скрипты shell, if/циклы/другие команды shell
  • как организовывать проверки
  • полезные приемы при написании скриптов
  • программирование на awk
  • программирование на sed

Будет много вкусных домашних заданий. КАКИЕ — не скажу, но буду отжигать ;)

Что нужно сделать, чтоб попасть на курс?

Для получения доступа на курс вам всего-лишь нужно разместить анонс этого тренинга у себя в журнале или на своем сайте. В тексте анонса не забудте поставить линк на этот пост! Если вы не успели попасть в список первых 20 счастливчиков и заплатили за курс - можете этого и не делать. Хотя пиар всячески приветствуется — чем больше нас будет, тем будет интереснее и тем больше будет интересных вопросов!

Далее, до 21:00 по московскому времени 19 марта 2008 вам нужно отписаться в комментариях К ЭТОЙ ЗАПИСИ (а не в ЖЖ или еще где-то), с указанием линка на ваш пост и вашего e-mail адреса. После того, как вы отпишитесь здесь, вам нужно зайти на форум и зарегистрироваться.

Также рекомендую подписаться на RSS Feed этого блога, чтоб следить за обновлениями и новостями. Ну или воспользоваться услугами сервиса rss2email , чтоб получать обновления к себе на почту.

БОНУСЫ!

Первые 5 участников, которые успешно закончат этот тренинг — получат БОНУСЫ:

  • бесплатную путевку на Гаваи,
  • доступ к обучающему аудиокурсу — по установке FreeBSD и настройки сети и безопасности. Суммарная стоимость этого курса — 39EUR + 49EUR+ 79EUR = 167EUR.

Вы можете получить это совершенно БЕСПЛАТНО! Записываетесь на курс, приходите к финишу первым и получаете причитающиеся вам бонусы.

ОПЛАТА!

  • при помощи Webmoney — переведите на рублевый кошелек R374057138343 с пометкой “программирование на shell” и ОБЯЗАТЕЛЬНО пишете в назначении платежа СВОЙ e-mail.
  • Yandex.Деньги — переведите на кошелек 4100xxxxxxxx необходимую сумму с пометкой “программирование на shell”   и ОБЯЗАТЕЛЬНО пишете в назначении платежа СВОЙ e-mail.

Как я планирую свое время или немного о time management

Последние 2 недели я провожу эскперимент с подробным протоколированием того, что я делаю и четким планированием дел.

Коротко о результатах

  • Если на день нет четко расписанного плана – то ВЕСЬ день вылетает в трубу. Удается сделать от силы 1-2 дела.
  • Если расписаны дела на где-то 6-10 рабочих часов – то в среднем получается поработать 6-8 часов. Именно продуктивно поработать, а не бить баклуши. Если писать дел на меньшее количество времени – то тоже начнете от них отлынивать, по принципу “успею еще сделать”.
  • Mail/LiveJournal/ICQ съедают до 50% от рабочего времени, если их включать даже периодически. Самым злостным потребителем времени является LiveJournal и YouTube.
  • Проверка статистики сайтов – это было проблемой, сейчас проверяю маскимум 1-2 раза в день.

График

В данный момент у меня выработался следующий распорядок дня

  • в 9 подъем, до 10 еда, приведение себя в порядок и так далее
  • первый блок работы с 10 утра до 2 дня – здесь производительность максимальная и можно планировать где-то 210 минут из суммарных 240 – реально удается столько работать
  • перерыв на еду и отдых 1 час
  • далее второй рабочий блок (с 14:00 до 19:00) – в него у меня обязательно входит физ. разминка на минут 15 и душ. В моем случае домашние приходят к 18:00, так что такой график не является оптимальным и этот блок разрушается – скорее всего нужно сдвинуть весь график на час раньше. Здесь чаще всего удается использовать где-то 180 минут из 240, даже в случае, если никто не мешает.
  • отдых/чтение книжки/еда – 1 час (с 19:00 до 20:00)
  • третий блок (с 20:00 до 24:00) – для деятельности, которая не треует сильной концентрации, например time management, подсчитать использованое за день время, расписать план на следующий день и так далее. В среднем можно планировать 120 минут из 240, а оставшееся время пускать на отдых.
  • Ну и конечно СОН

Конкретика

  • Весь time management происходит в excel файле, где для каждого дня сделан свой sheet. В нем я записываю – название дела, категорию/где его делать(@home, @work, и так далее) и длительность дела в минутах. Потом в отдельной колонке вечером подводится подсчет сколько же реально было сделано дел.
  • Утренний блок начинается с переписывания списка дел на сегодня из компа на бумажку (стандартные ~8×8см). На другой такой-же бумажке ведется запись времени – просто название дела, время начала и конца.
  • Очень важно определять переход от ДЕЛА, которым вы занимаетесь, к деланию ФИГНИ и это фиксировать в записях. То есть четко фиксировать – «я перестал заниматься полезным делом и начал страдать фигней».
  • Очень хороший стимул для работы и для того, чтоб не отвлекаться на посторонние дела – тикающий под ухом таймер, на котором вы выставили время отведенное на эту задачу. Если не удалось успеть за отведенный срок – лучше оставить задачу и потом к ней вернуться. Ну или если осталось совсем немного – то тогда доделать.
  • Планировать дела длительностью больше 1 часа не стоит – мне лично почти никогда не удается удержаться « в потоке » столько времени. Ну может кроме записи подкаста, когда он записывается просто за раз.
  • Если у вас есть много мелких дел – скажем, звонков, группируйте их друг с другом и делайте звонки друг за другом. Потом можно будет смело отложить телефон в сторону или выключить его – чтоб не беспокоил.
  • В момент, когда я понимаю, что я выпал из « потока » и начал заниматься фигней – мне очень хорошо помогает пойти и лениво покачать гантельку, без фанатизма. Где-то минуты 3-4 суммарно. Резко появляются силы что-либо делать.
  • Насчет сна. Если вдруг возникает желание поспать среди дня, я предпочитаю его не подавлять – иду и сплю. Сон – это святое. Самое важное потом – это мгновенно встать после просыпания, немного размяться и продолжить работу.
  • Еще я отвожу где-то минут 20 в вечернем блоке на отдых в позе Ваджрасана (поза Алмаза) http://www.sunhome.ru/religion/1619

Из оставшихся проблем

  • Очень быстро подходит к концу список дел, которые можно придумать и записать в time management. Скорее всего нужно выделять отдельное время на планирование более глобальных дел и разбиение их на 30-60 минутные курки. Придумать их при написании плана на следующий день почти невозможно. Видимо нужно подготавливать такие кирпичики для планирования времени заранее.
  • Пока не удается планировать время дальше чем на 2-3 дня вперед. Люди, которые утверждают, что у них время распланированно на 3-4 месяца вперед, меня очень удивляют – КАК они это ухитряются делать.

Ну и напоследок из любимого мною Сенеки, первое письмо к Луцилию.

Сенека приветствует Луцилия!

(1) Так и поступай, мой Луцилий! Отвоюй себя для себя самого, береги и копи время, которое прежде у тебя отнимали или крали, которое зря проходило. Сам убедись в том, что я пишу правду: часть времени у нас отбирают силой, часть похищают, часть утекает впустую. Но позорнее всех потеря по нашей собственной небрежности. Вглядись-ка пристальней: ведь наибольшую часть жизни тратим мы на дурные дела, немалую — на безделье, и всю жизнь — не на те дела, что нужно.

(2) Укажешь ли ты мне такого, кто ценил бы время, кто знал бы, чего стоит день, кто понимал бы, что умирает с каждым часом? В том-то и беда наша, что смерть мы видим впереди; а большая часть ее у нас за плечами, — ведь сколько лет жизни минуло, все принадлежат смерти. Поступай же так, мой Луцилий, как ты мне пишешь: не упускай ни часу. Удержишь в руках сегодняшний день — меньше будешь зависеть от завтрашнего. Не то, пока будешь откладывать, вся жизнь и промчится.

(3) Все у нас, Луцилий, чужое, одно лишь время наше. Только время, ускользающее и текучее, дала нам во владенье природа, но и его кто хочет, тот и отнимает. Смертные же глупы: получив что-нибудь ничтожное, дешевое и наверняка легко возместимое, они позволяют предъявлять себе счет; а вот те, кому уделили время, не считают себя должниками, хотя единственно времени и не возвратит даже знающий благодарность.

(4) Быть может, ты спросишь, как поступаю я, если смею тебя поучать? Признаюсь чистосердечно: как расточитель, тщательный в подсчетах, я знаю, сколько растратил. Не могу сказать, что не теряю ничего, но сколько теряю, и почему, и как, скажу и назову причины моей бедности. Дело со мною обстоит так же, как с большинством тех, кто не через собственный порок дошел до нищеты; все меня прощают, никто не помогает.

(5) Ну так что ж? По-моему, не беден тот, кому довольно и самого малого остатка. Но ты уж лучше береги свое достояние сейчас: ведь начать самое время! Как считали наши предки, поздно быть бережливым, когда осталось на донышке*. Да к тому же остается там не только мало, но и самое скверное.

Будь здоров.

* Ср. Гесиод. Работы и дни, 369: “У дна смешна бережливость” .




Анонс книги: Использование Shell с нуля и до профи!