Тег «UNIX»

Книга: «Программирование в стандарте POSIX. Часть 1»

Галатенко В.А. Программирование в стандарте POSIX. Часть 1Название: Программирование в стандарте POSIX. Курс лекций. Учебное пособие. Часть 1.
Автор: В.А. Галатенко
Год выхода: 2004
Издательство: Интернет-Университет Информационных Технологий
Тираж: 2000
Объем: 560 стр.
Обложка: твердая
Где покупал: нигде (подарок)

Книгу мне подарил лично Владимир Антонович, поэтому я посчитал себя обязанным ее всю прочитать и поделиться впечатлениями с «уважаемым all».

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

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

Лично я теперь пользуюсь этим курсом как прекрасно откомментированным и снабженным примерами man’ом. Программирую, например, что-то связанное со взаимодействием процессов — сразу лезу в соответствующий раздел (кстати, книга в плане поиска нужного места гораздо удобнее онлайн-версии), читаю все подряд и дальше уже с полнейшей уверенностью пишу все как надо. Что выгодно отличает книгу от man’а, так это комплексная подача материала: описываются не отдельные функции, а их работа в контексте общей проблемы. Да еще и примеры достаточно объемные.

Приятно, что книга не стала пересказом стандарта. Например, по главе про shell вполне можно научиться основам программирования командных сценариев. По каждой теме рассказано не только как, но и зачем.

Существует еще и вторая часть книги, в которой рассказывается о «продвинутых» возможностях: потоки, средства реального времени, асинхронный ввод-вывод, трассировка и т.д. Уже взялся ее читать, ждите обзор.

Минусы:

  • код набран слишком крупным шрифтом, ширины страницы часто не хватает, да и по вертикали на странице помещается мало строк.

Плюсы:

  • подробное, но при этом очень сжатое изложение; никакой воды, только информация;
  • рассматриваются многие неочевидные моменты — видно глубокое понимание материала;
  • отличное качество печати и переплета.
УжасноПлохоНормальноХорошоОтлично (1 голосов, средний: 3,00 из 5)
Loading ... Loading ...

Паттерны написания серверов

Нашел совершенно шикарнейший обзор методов написания высоконагруженных серверов в UNIX-подобных осях. Грамотно расписаны все плюсы, минусы и подводные камни. Есть еще даже более развернутая статья на ту же тему, но на английском.

УжасноПлохоНормальноХорошоОтлично (Еще не оценили)
Loading ... Loading ...

Цикл в Makefile

Возникла у меня такая задача: в действиях одной из целей Makefile выбрать из каталога файлы по маске *.eps и скормить их программе epstopdf. Проблема в том, что epstopdf принимает в командной строке только один файл. Нужен цикл. Я нашел два решения.

Первое — использовать шелловский for:

build:
    for epsfile in `ls *.eps`;\
    do\
        epstopdf $$epsfile;\
    done

Здесь две хитрости: экранирование концов строк (потому что for — фактически одна команда) и использование $$ перед именем переменной (потому что иначе она будет считаться макросом Make).

Второй способ использует возможности самого Make:

%.pdf: %.eps
    epstopdf $?
 
build: $(patsubst %.eps, %.pdf, $(wildcard *.eps))

Такой подход имеет большое преимущество: теперь epstopdf не будет вызываться для EPS-файлов, которые не изменились с момента последнего вызова. К тому же это короче, хотя и, как мне кажется, хуже воспринимается визуально.

К сожалению, все это не удастся сократить до такого:

build: $(wildcard *.eps)
    epstopdf $?

Здесь макрос $? развернется в строку, содержащую имена сразу всех EPS-файлов, что противоречит условию.

УжасноПлохоНормальноХорошоОтлично (1 голосов, средний: 5,00 из 5)
Loading ... Loading ...