Python vs Perl — продолжение

Доисторические времена
Perl появился в 1988 году (строго говоря, в декабре 1987-го).
Какие основные идеи легли в основу Perl?

Основная объективная идея состояла в объединении возможностей различных средств для манипулирования текстовыми файлами: sh, awk, sed, tr. На тот момент такого единого средства не существовало, а необходимость в нём была.
Прочитать остальную часть записи »

Python vs Perl: Python против Perl

Читатель спросит: «Зачем сравнивать два таких несравнимых языка?» Отвечу. Perl и Python, будучи очень разными языками, всё же имеют много общего. Они универсальны (в отличии от, скажем, PHP), очень развиты (в отличии от shell, awk и подобных) и они оба являются скриптовыми языками (в отличии от не менее мощных C/C++, Pascal и других). Таким образом, они часто соперничают на одной территории и сравнивать их приходится.
Прочитать остальную часть записи »

Проблема остановки: доказательство неразрешимости

Последнее время (начало 2009 года) мне довелось принять участие в обсуждении различных способов организации грамматического разбора (спасибо habrahabr). Эти обсуждения натолкнули меня на мысль о том, что очень многие программисты склонны разделять существующие задачи на сложные и простые. Они (программисты) находятся во власти наивных иллюзий, что любую задачу можно решить, надо только найти алгоритм. Из-за этого большинству даже не приходит в голову, что задачи можно (и нужно!) систематизировать; очень часто безосновательно делаются очень общие высказывания; неуместно используются слова «всегда», «никогда», «любой»; используются наивные характеристики типа «достаточно сложный». Всё это подтолкнуло меня к написанию заметки о неразрешимых задачах.
Прочитать остальную часть записи »

О пользе рекурсии: примеры использования рекурсии

Эту заметку о пользе рекурсии я написал после прочтения соответствующей части книги С. Макконнелла «Совершенный код». Книга прекрасная, но, на мой взгляд, автор совершенно напрасно обещает уволить сотрудника, использующего рекурсию. Мне рекурсия помогала много раз, и я видел множество превосходных примеров её использования.
Прочитать остальную часть записи »

C++: Памятка C++, конструкторы, копирование, присвоение, деструкторы

Очень долго собирался написать памятку по разным приёмам программирования на C++. Но никак не мог выбрать достаточно компактный способ изложения. Получалось либо непонятно, либо очень длинно. В конце концов, я решил написать небольшой пример, снабжённый комментариями. Здесь, конечно, представлено далеко не всё, что стоило бы включить в памятку, но за-то то, что есть, изложено очень сжато, компактно и, мне кажется, что понятно. Я не планирую останавливаться на этом примере, для других аспектов программирования на C++ я постараюсь придумать другие примеры. Пока же, жду замечаний, предложений и критики этой первой заметки.
Прочитать остальную часть записи »

Алгебра логики : правила построения и преобразования логических выражений

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

Обозначения
Я буду придерживаться обозначений, ясных большинству людей и привычных для программистов.
• «Истина» — true
• «Ложь» — false
• Логическое «и» — and
• Логическое «или» — or
• Логическое отрицание — not
Прочитать остальную часть записи »

Настройка редактора vi: макросы, русификация, настройки

Настройка редактора vi

Привожу здесь свой файл настроек vi — ~/.exrc

Но обратите внимание на то, что если его просто скопипаситить, то работать будет не всё(!) Читайте ниже о том, как правильно создать свой .exrc.

" ————— setup
set autoindent
set backup="vi.bak"
set showmode
set exrc
set extended
set ruler
set verbose
set sw=2
" ————— macro
" F1 sh
map OPsh 1Gi#!/bin/sh^M^M^[«
" F1 py
map OPpy 1Gi#!/usr/local/bin/python^M^M^[«
" F1 pl
map OPpl 1Gi#!/usr/local/bin/perl^M^M^[«
" F2
map OQ :w^M
" F3
map OR :wq^M
" esc-esc
map ^[^[ :q^M
" ————— ru
map й q
map ц w
map у e
map к r
map е t
map н y
map г u
map ш i
map щ o
map з p
map х [
map ъ ]
map ф a
map ы s
map в d
map а f
map п g
map р h
map о j
map л k
map д l
map ж ;
map э '
map я z
map ч x
map с c
map м v
map и b
map т n
map ь m
map Й Q
map Ц W
map У E
map К R
map Е T
map Н Y
map Г U
map Ш I
map Щ O
map З P
map Х {
map Ъ }
map Ф A
map Ы S
map В D
map А F
map П G
map Р H
map О J
map Л K
map Д L
map Ж :
map Э "
map Я Z
map Ч X
map С C
map М V
map И B
map Т N
map Ь M
map Б <
map Ю >
" эти две пары конфликтуют
" можно оставить либо одну, либо другую
"map б ,
"map ю .
map . /
map , ?

Прочитать остальную часть записи »

Команды vi: Краткая справка по командам редактора vi

Несколько слов об этом руководстве. При его создании я руководствовался следующими целями: На первом месте должна быть компактность. Руководство описывает только суть команд. Детали можно прочитать в полном руководстве или просто попробовать, запустив vi. Во-вторых, руководство должно быть полным. Это не краткое руководство «как выйти из vi», а полное описание всех возможностей. Пока описано не всё, но те аспекты работы в vi, которые затронуты в этом руководстве, освещены с максимальной детальностью.
Прочитать остальную часть записи »

Сборка evilwm: Xorg, оконный менеджер, панель управления

evilwm — лучший оконный менеджер
За десять лет использования X Window System я перепробовал множество оконных менеджеров. Под какими-то работал годами, какие-то просто попробовал на один зуб. И общее направление моей «эволюции» практически всегда шло к упрощению оформления рабочего стола. В конце концов, я фактически сделал свой собственный оконный менеджер. Сделан он из evilwm 0.99.25 (http://www.6809.org.uk/evilwm/).
Прочитать остальную часть записи »

Сборка PHP: PHP, MySQL, графическая библиотека GD, jpeg, png, ttf

Общие замечания
Эти советы не годятся для настройки рабочего сервера. Они написаны для создания Apache/PHP-среды на локальной машине для разработки и тестирования. Больше того, PHP устанавливается в максимально «гостевом» режиме — так, чтобы (i) он не вступил в конфликт ни с одним проектом, из тех, что уже есть на машине; и (ii) его можно было безболезненно удалить как только в нём пропадёт необходимость.
Прочитать остальную часть записи »

Сборка Perl и mod_perl: Сборка Perl и mod_perl, утечки памяти, настройка

Общие замечания
Эта заметка относится к Apache 1.3. Версия 2.0 заметно отличается.

При установке ПО из исходников, я предпочитаю не «портить» систему. На большинстве серверов вы обнаружите ПО, собранное именно с общепринятыми опциями.

Поэтому я собираю ПО из-под пользователя (не root) и устанавливаю в домашней папке этого пользователя.
Прочитать остальную часть записи »

Сборка mod_python: связка Python — Apache

Общие замечания
Современный mod_python не поддерживает Apache 1.3. Вам понадобится Apache старше 2.0.

Сборка mod_python
В сборке mod_python очень прост.

Наиболее ценными являются две опции конфигурирования:

./configure —prefix=$inst_pref \
—with-apxs=$ap_pref/bin/apxs

Прочитать остальную часть записи »

Сборка Python 2.6 под FreeBSD : Установка Python из исходных кодов

Решил я тут установить себе Python 2.6. В портах его нет, а из исходных текстов Python под FreeBSD всегда ставился не охотно. Пришлось разобраться.

Проблема
При сборке Python под FreeBSD make выдаёт сообщение:

gcc -shared build/[…]/Modules/_cursesmodule.o \
-L/usr/local/lib -lncursesw -o build/[…]/_curses.so
Segmentation fault (core dumped)
*** Error code 139

Прочитать остальную часть записи »

Qemu: Windows под UNIX: виртуальная машина qemu (kqemu) под FreeBSD

Какие задачи решаем (запуск Winodws под FreeBSD)
Qemu — универсальное средство (официальный сайт Qemu). Он создаёт виртуальные машину, на которой можно запустить любую ОС. Я его использую для запуска Windows (XP) на FreeBSD. Как это сделать я и собираюсь вкратце рассказать.
Установка qemu под FreeBSD
Прочитать остальную часть записи »

Загрузочный CD/DVD с GRUB : boot CD/DVD disk, GRUB

Здесь я расскажу только как сделать диск загрузочным. Мы не будем размещать на диске никакую ОС — это не LiveCD, но используя этот диск можно загрузить любую ОС, если загрузчик этой ОС утрачен. Например Windows, при установке, всегда переписывает MBR под себя.
Прочитать остальную часть записи »

FreeBSD: звук : FreeBSD запись wav, mp3, CD

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

Кстати, эта же программа позволяет регулировать и другие каналы, включая такую полезную вещь, как миксер. Вы можете подать сигнал с микрофона сразу на колонки или на линейный выход. Здесь же вы можете отрегулировать баланс левого и правого канала и многое другое. Кроме того, программа aumix может работать не только в интерактивном режиме, загляните в man 1 aumix.
Прочитать остальную часть записи »

Работа с CD/DVD : Записать, прочитать, стереть, дописать под FreeBSD CD, DVD, boot, bootable, GRUB, eltorito

Информация рассчитана в первую очередь на пользователей FreeBSD, но большая её часть справедлива и для других UNIX.

Монтируем диски и образы
Монтируем CD и DVD одинаково:

mount_cd9660 -o ro /mnt /dev/acd0

Смонтировать образ можно в две команды:

mdconfig -a -t vnode -f file.iso -u 0 -o readonly
mount -t cd9660 /dev/md0 /mnt/iso

Прочитать остальную часть записи »

ftpd через rc.d : Настройка демона ftpd во FreeBSD

rc.d-скрипт для запуска ftpd
Те, кто интересовался вопросом запуска ftpd под FreeBSD 6.0 и ниже, конечно знают, что для этого демона не предусмотрено запускающего скрипта (он появился в версии 6.1). Предполагается, что служба FTP может запускаться только через inetd. На сколько это разумно — судить не мне, но лично я не понимаю, почему я должен запускать и настраивать inetd+ftpd, если мне нужен только ftpd.
Прочитать остальную часть записи »

Элементарная безопасность : FreeBSD безопасность syslogd, lpd, xorg, mysql

Эта информация может быть полезна всем пользователям FreeBSD и других UNIX-подобных систем. Проще всего обезопасить свою систему, просто запретив демонам «слушать» внешний мир. Если в вашей системе много демонов, то вы можете воспользоваться более сложным, но и более гибким решением — настроить FireWall.
Прочитать остальную часть записи »

Различные UNIX-утилиты: ssh-инструменты, генерация md5, subshell.c-ошибки на консоли, ntpdate – синхронизация времени

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

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

FreeBSD и bluetooth : приём и передача файлов через USB-bluetooth-адаптер

Про работу с bluetooth-устройствами под FreeBSD сказано очень много… я бы сказал: очень много лишнего. На самом деле всё гораздо проще, чем пишут в блогах и даже в handbook. Я думаю, это связано с тем, что информация устаревает. Я опишу как работать с USB-bluetooth адаптером под FreeBSD 6.1, возможно на более старых версиях этих действий будет недостаточно.
Прочитать остальную часть записи »

Subversion: svn+ssh : Доступ к SVN по ssh-туннелю

Существует множество развитых средств работы с Subversion. Но иногда необходимо поднять хранилище так чтобы: это не заняло много времени, не требовало бы сложного администрирования, хранилище было бы доступно удалённо и доступ это был бы надёжно защищён. Это совсем не сложно.
Прочитать остальную часть записи »

Настройка OpenVPN : OpenVPN, ключ, key, firewall

В большинстве Internet-источников рассказано, как настроить OpenVPN с X.509. Это процедура, сложность которой далеко не всегда оправдана. Но есть и более простой способ, который нигде толком не описан (я нашёл хорошее HOWTO только на английском языке). Вот его-то я и хочу описать.
Прочитать остальную часть записи »

Настройка ipfw (FireWall) : firewall на FreeBSD, включая dummynet

В Интернете есть много пространных рассказов про то как настроить межсетевые фильтры, экраны, объединить сети и прочие сложности. Я про это писать не буду. Я напишу несколько простых рецептов и примеров, вполне готовых к использованию и рассчитанных на рядового пользователя, которые помогут ему защититься от внешнего вторжения.
Прочитать остальную часть записи »

FreeBSD: начальная настройка

Здесь вы найдёте некоторые рецепты, выработанные мною. Учтите, это просто памятка, а не руководство. Я просто цитирую куски своих настроечных файлов и даю минимальные комментарии.

Права на устройства в devfs
Права на устройства проще всего настроить в /etc/devfs.conf. Там есть примеры на все случаи жизни. Но devfs.conf не может влиять на устройства, которые появляются уже после загрузки системы. Это обычно USB-устройства.
Прочитать остальную часть записи »

Настройка Xorg : Графический интерфейс, Xnest, xterm, кодировка

Начальная настройка Xorg

Конфигурационный файл составляется автоматически по команде

Xorg -configure

Далее прописываем определённую моду в секцию "Screen", например так:

Modes "1280×1024"

Прочитать остальную часть записи »

Кодировка в MySQL 4.1 : русские кодировки koi8r, windows 1251

Несколько слов о кодировках в MySQL 4.1 (но не 4.0).

Самое приятное в версии 4.1 то, что кодировки в которых работают клиент и сервер можно указывать отдельно. Поэтому для смены кодировки пересобирать сервер совсем не обязательно.
Настройка клиентов через my.cnf
Прочитать остальную часть записи »

Протоколирование SQL-запросов : log-file, протокол, MySQL запросы, отладка

Иногда, при отладке, очень хочется посмотреть, какие запросы получает MySQL-сервер. Узнать это очень просто: надо включить режим протоколирования.
Включаем протоколирование SQL-запросов

Пишем в /etc/my.cnf в секцию mysqld строчку:

[mysqld]
log = /var/log/MySQL.log

Прочитать остальную часть записи »

Брошюруем djvu – как сделать djvu книгу

Есть места (например, трамвай), где очень кстати бывает почитать книжку, но читать с экрана в таких местах так же невозможно, как и с листов А4. В конце концов, я решил преобразовать djvu в удобную брошюру. Процесс это достаточно творческий, зависит от качества книги, от её объёма и размера листов… поэтому универсального инструмента я так пока и не нашёл (не сделал). Здесь я описываю набор приёмов, комбинируя которые можно быстро добиться желаемого результата.
djvu книга
Прочитать остальную часть записи »

Преобразование pod в pdf, perl old documentation, text, latex, postscript, pdf

Для преобразование pod в pdf понадобятся некоторые системы. Проще всего воспользоваться системой LaTeX.

Сперва делаем PostScript:

#!/bin/sh
f=DBI
pod2latex -out $f.t $f.pm
( cat doc-head-12pt.tex
perl -pe 's/section\*/section/g' $f.t.tex
cat doc-tail.tex ) > $f.tex
latex $f.tex
latex $f.tex
dvips -o $f.ps $f.dvi

Прочитать остальную часть записи »




Статистика