Grinnie: ты не ездил в романтик?
art: ездил
Grinnie: я хотел заказать у тебя мамаджек -_-
art: ну я туда ещё поеду
art: я хотел купить ещё какую-то фигню
art: забыл какую
Grinnie: когда поедешь?
art: в выходные вероятно
art: а тебе зачем мамаджек?
Grinnie: куда-то хотел впаять
Grinnie: забыл куда, но он мне нужен
суббота, 16 октября 2010 г.
Наш товарищ Гринни
Проба пера
Прошедшим летом я решил подарить моей девушке на д/р её книгу. Говорят, книга — лучший подарок. Ещё лучше, если книга — твоя собственная. Подарок был благополучно изготовлен за время отпуска и Светланке очень понравился. Немного погодя, уже при непосредственном участии автора, книжка выросла в полноценный сборник рассказов и стихов, который мы и выпустили ультраограниченным (на данный момент) тиражом!
Пара слов о технической стороне. В процессе подготовки макета я здорово освежил мои знания LaTeX. В дистрибутиве TeX Live есть три TeX-процессора: pdfTeX, LuaTeX, XeTeX, которые совместимы с латехом, и загадочная штука под названием ConTeXt (пакет TeX-макросов вроде LaTeX, ориентированный на типографику). Опробовав эти варианты, я решил остановиться на XeLaTeX, о чём и не пожалел. Во-первых, исходник набирается в UTF-8, что позволяет напрямую загружать «чистый» ввод с правильными кавычками, тире и многоточиями. Очень удобно, если текст необходимо править на лету и/или повторно использовать после. Во-вторых, XeTeX работает с truetype/opentype-шрифтами. Наконец, так любимая Кибероном висячая пунктуация (ради которой я и связался с латехом) поддерживается и в XeTeX.
Прозу и поэзию с одной стороны проще верстать, чем, скажем, научную литературу. С другой стороны есть и свои приколы. К примеру, неудачные переносы окончаний в конце строк с прямой речью способны сильно испортить общий вид страницы. Работа осложняется ещё больше, если следовать стандартам отечественной типографики (приводка, запрет висячих строк и т. д.), но к счастью нерешаемых проблем тут нет. Верстать в латехе очень просто, однако есть несколько моментов, которые я предпочёл бы знать прежде, чем начинать:
Первые копии |
Пара слов о технической стороне. В процессе подготовки макета я здорово освежил мои знания LaTeX. В дистрибутиве TeX Live есть три TeX-процессора: pdfTeX, LuaTeX, XeTeX, которые совместимы с латехом, и загадочная штука под названием ConTeXt (пакет TeX-макросов вроде LaTeX, ориентированный на типографику). Опробовав эти варианты, я решил остановиться на XeLaTeX, о чём и не пожалел. Во-первых, исходник набирается в UTF-8, что позволяет напрямую загружать «чистый» ввод с правильными кавычками, тире и многоточиями. Очень удобно, если текст необходимо править на лету и/или повторно использовать после. Во-вторых, XeTeX работает с truetype/opentype-шрифтами. Наконец, так любимая Кибероном висячая пунктуация (ради которой я и связался с латехом) поддерживается и в XeTeX.
Прозу и поэзию с одной стороны проще верстать, чем, скажем, научную литературу. С другой стороны есть и свои приколы. К примеру, неудачные переносы окончаний в конце строк с прямой речью способны сильно испортить общий вид страницы. Работа осложняется ещё больше, если следовать стандартам отечественной типографики (приводка, запрет висячих строк и т. д.), но к счастью нерешаемых проблем тут нет. Верстать в латехе очень просто, однако есть несколько моментов, которые я предпочёл бы знать прежде, чем начинать:
- TeX Live лучше ставить не из дистрибутивных пакетов, а родным инсталлером. Скачивать придётся много и долго, но установку можно в любой момент прервать и продолжить, когда захочется. Поддерживается установка в режиме portable.
- Класс memoir — мощный и гибкий стилевой пакет с длинным руководством, которое я очень рекомендую к прочтению.
- Нужно иметь ввиду, что при высоких \clubpenalty и \widowpenalty в сочетании с \flushbottom, латех будет растягивать межабзацный отступ (\parskip), что устраняет висячие строки, но нарушает совмещение строк на просвет. Установка \parskip в нерастяжимое значение приводит к большому количеству пустых строк внизу страниц и миллиону ошибок в логе. Впрочем, если не лениться, их можно вручную поправить вгонкой и выгонкой строк на предшествующей полосе.
- Вгонка и выгонка строк в LaTeX (XeLaTeX) легко делается (бажной) командой \addfontfeatures из пакета fontspec. Например: \addfontfeatures{WordSpace={0.95,1,1}}. Сбрасывать WordSpace после проблемного участка текста приходится вручную, группировка фрагмента в фигурные скобки не срабатывает. Вообще, для хранения этих параметров очень пригодился бы внутренний стек.
- Длинные тире в XeTeX по умолчанию переносятся в начало следующей строки и вообще ведут себя нечестно. Для нормальной их расстановки можно воспользоваться параметром babelshorthands при загрузке polyglossia, но результат не особенно радует — в документе на выходе длинные тире заменяются двумя короткими с небольшим наложением, которые копируются в буфер как «--». Более правильным решением мне кажется определение тире как активного символа или окружение его в исходнике двумя активными символами с присвоенными командами \allowbreak (\nobreak) и \thinspace.
- Висячие предлоги (а также стоящее в начале предложений «Я» и т. п.) перестают быть висячими, если вставить после них неразрывный пробел (~) при помощи простейшего регулярного выражения.
- Регулярные выражения — совершенно незаменимый инструмент на любой стадии обработки текста.
четверг, 24 декабря 2009 г.
Оксюморон
У нас на работе сегодня пьют монгольский чай «Хаан». На вкус как солёный чай с молоком, непривычный, но говорят, у алтайцев вроде бы даже так принято... Что удивляет, так это дизайн продукции. Спрашивается, какого хрена на упаковке с монгольским чаем (который, к слову сказать, производится в Сингапуре) делает американский флаг!? Судите сами:
среда, 16 декабря 2009 г.
Привет, трафарет!
Только что, в поиске трафаретных шрифтов для плоттерной резки, я наткнулся на суперский, потрясающий шрифт:
Шрифт бесплатный и доступен для скачивания на сайте gimpstuff.org или на сайте автора. Советский трафарет — сила!
Шрифт бесплатный и доступен для скачивания на сайте gimpstuff.org или на сайте автора. Советский трафарет — сила!
пятница, 11 декабря 2009 г.
Стеммер от Hunspell
Да, совсем забыл. Я давно уже хотел попробовать стеммер Hunspell (то есть такую штуку, которая приводит слова к канонической форме) на основе орфографических словарей, но руки не доходили, в том числе и потому, что существующие интерфейсы к питону не слишком хорошо обращались с юникодными строками.
В конечном счёте я отказался от второго питона совсем, и решил написать модуль на ctypes под третьим во избежание проблем с преобразованием юникода. Получившийся модуль можно скачать здесь, а искать им леммы можно следущим образом:
Словарь я скопировал из пакета myspell-ru, но следует иметь в виду, что при всей своей полноте и выверенности он не лишён недостатков:
Тем не менее, стеммер Hunspell показал куда лучшие результаты, чем, например, алгоритм Портера (Snowball). Он очень быстрый и вполне пригоден для индексирования незамороченных документов, логов и тому подобных задач, но его возможности, понятное дело, ограничиваются объёмом и структурой словаря.
А поэтому, для более продвинутого анализа лучше использовать комбинированный (словарно-алгоритмический) метод, который реализован, например, в библиотеке pymorphy, плюсом которой также является отсутствие привязки к системным библиотекам.
В конечном счёте я отказался от второго питона совсем, и решил написать модуль на ctypes под третьим во избежание проблем с преобразованием юникода. Получившийся модуль можно скачать здесь, а искать им леммы можно следущим образом:
>>> from hunspell import Hunspell >>> h = Hunspell("ru_RU.aff", "ru_RU.dic") >>> h.stem("ищет") ['искать'] >>> h.stem("суши") ['сушить', 'суша', 'сушь']
Словарь я скопировал из пакета myspell-ru, но следует иметь в виду, что при всей своей полноте и выверенности он не лишён недостатков:
>>> h.stem("лжёт") ['лжёт']
Тем не менее, стеммер Hunspell показал куда лучшие результаты, чем, например, алгоритм Портера (Snowball). Он очень быстрый и вполне пригоден для индексирования незамороченных документов, логов и тому подобных задач, но его возможности, понятное дело, ограничиваются объёмом и структурой словаря.
А поэтому, для более продвинутого анализа лучше использовать комбинированный (словарно-алгоритмический) метод, который реализован, например, в библиотеке pymorphy, плюсом которой также является отсутствие привязки к системным библиотекам.
Имбирное пиво...
...это, оказывается, совсем не пиво; оно вообще не содержит сколько-нибудь ощутимых доз алкоголя. При этом его не только легко и приятно делать, но ещё и легко и приятно пить! А делается оно следующим образом:
Перед вскрытием интернет рекомендует как следует охладить пиво в холодильнике, чтобы не произошло взрыва тары (газ под давлением), но мы не стали дожидаться тотального охлаждения и употребили напиток как был.
В разных способах приготовления также встречается совет увеличивать количество сахара и времени брожения с целью повышения содержания спирта. Опциональным компонентом также является измельчённая цедра использованного лимона. Впрочем и без неё напиток получился офигенно вкусным, а главное — он прост, как и всё гениальное!
- Стакан сахара перемешиваем с чайной ложкой дрожжей и засыпаем в пустую пластиковую бутыль (2л) через воронку.
- Небольшой очищенный кусок имбирного корня натираем на мелкой тёрке и смешиваем с соком лимона.
- Получившуюся смесь добавляем к сахару и оперативно заливаем водой (так, чтобы заполнить посудину примерно на 95%).
- Бутыль закручивается, встряхивается и несколько раз переворачивается, чтобы растворился сахар.
Перед вскрытием интернет рекомендует как следует охладить пиво в холодильнике, чтобы не произошло взрыва тары (газ под давлением), но мы не стали дожидаться тотального охлаждения и употребили напиток как был.
В разных способах приготовления также встречается совет увеличивать количество сахара и времени брожения с целью повышения содержания спирта. Опциональным компонентом также является измельчённая цедра использованного лимона. Впрочем и без неё напиток получился офигенно вкусным, а главное — он прост, как и всё гениальное!
четверг, 27 августа 2009 г.
Пакет дня
Совет от Ubuntu Server: Если вы выполнили команду и забыли про 'sudo', вы можете набрать 'sudo !!' для вторичного запуска предыдущей команды с использованием 'sudo'.Сегодня утром в репозиториях Кармика появился крутейший пакет под названием «fortunes-ubuntu-server». Как можно догадаться, в пакете — фортунки с разными хинтами по использованию Ubuntu Server (и не только). А ещё он автоматически добавляет эти хинты в motd и показывает их при входе с консоли. Очень приятная и полезная штука. Люблю, когда день начинается с таких вот маленьких и симпатичных радостей!
Подписаться на:
Сообщения (Atom)