вторник, ноября 25, 2014

Yosemite is not responding

Всегда устанавливаю операционные системы с нуля, чтобы избежать побочных эффектов. С Yosemite все не заладилось с самого начала, потому что инсталлер в самом конце подзавис. Но самый ад начался потом, когда каждый раз при загрузке не запускался Google Chrome, Adium. Процессы просто зависали, писали Not Responding. Приходилось их многократно снимать и запускать заново до приведения в работоспособное состояние. При этом Safari и Firefox запускались отлично. В какой-то момент я начал думать что так выглядит грязная борьба Apple против Google.
В общем сегодня меня это достало окончательно, и методом проб и ошибок решение было найдено. Необходимо отключить рассылку приглашений Bonjour без отключения службы DNS. Для этого в Yosemite надо добавить параметр --no-multicast для com.apple.networking.discoveryd в файле /System/Library/LaunchDaemons/com.apple.discoveryd.plist
Ссылки по теме:
http://apple.stackexchange.com/questions/151485/how-do-i-disable-bonjour-visibility-after-yosemite-install?answertab=active#tab-top
http://blog.spikie.info/osx-10-10-yosemite-how-to-disable-bonjour-service-advertising-without-disabling-dns/
Неужели Apple после ухода Джобса постепенно превращается в нечто унылое?

ЗЫ: на самом деле трюк не сработал. Переустановка сверху тоже не помогла. Что интересно, когда подключаешь второй монитор, глюка нет.

четверг, ноября 13, 2014

Печать в pdf в Mac OS X в терминале 2X RDP

Если:
- Вы используете Mac OS X
- Вынуждены пользоваться RDP
- Программы в этом RDP печатают на принтер по умолчанию
- Но Вам нужен pdf
То устанавливайте PDFWriter и ищите свои pdf в private/var/spool/pdfwriter или в Macintosh HD/Users/Shared/PDFwriter
Победитель номинации Костыли-2014.

среда, октября 22, 2014

четверг, октября 16, 2014

Конкантенация файлов в scala

В spray.io надо было склеить чанки, каждый из которых сливался в отдельный файл и родилась такая вот конструкция для конкантенации нескольких файлов. Мне кажется красиво и функциональщина в тему.

import java.io.{ FileInputStream, FileOutputStream }

val newFileChannel = new FileOutputStream("result.txt") getChannel ()
List("a.txt","b.txt", "c.txt").foldLeft(0L)((offset, f) => offset + (newFileChannel transferFrom (new FileInputStream(f) getChannel, offset, Long.MaxValue)))


вторник, сентября 09, 2014

Русифицируем asciidoctor-pdf

Очередной раз поднялся вопрос в чем писать документацию, чтобы:
1) была простая разметка, которую можно было редактировать в простом текстовом редакторе
2) можно было получить diff в версиях, как следствие текстового представления сырца
3) была генерация html
4) была генерация pdf без всяких docbook, latex и прочего

Если под первые три пункта подходит тот же markdown, то по последнему мною было обнаружено только одно хоть как-то работающее решение - https://github.com/asciidoctor/asciidoctor-pdf. И то в состоянии альфы.
Вообще, конечно, странно в 2014 году не иметь нормальных прямых решений генерации pdf из разметки. Видимо, это никому особо не надо - взяли ворд и вперед вместе с pdf-принтерами.

В asciidoctor-pdf тоже вылезла проблема - с русским языком. По крайней мере у меня на Mac OS X. Причина, как ожидаемо, в шрифтах.
Для лечения в Mac OS X нужно закачать правильные шрифты в папку /Library/Ruby/Gems/2.0.0/gems/asciidoctor-pdf-1.5.0.alpha.4/data/fonts, которые позаимствовать из папки системных шрифтов /Library/Fonts/
Затем решить как прописываем установки шрифтов - глобально или локально. Если глобально - работаем с файлом конфигурации asciidoctor-pdf /Library/Ruby/Gems/2.0.0/gems/asciidoctor-pdf-1.5.0.alpha.4/data/themes/default-theme.yml. Если локально - переписываем эту конфигурацию в папку со своим документом.
В конфигурации добавляем еще одну секцию font:catalog:
и указываем новый шрифт в секции base:font_family:

Будет выглядеть как-то так:

font:
  catalog:
    Arial:
      normal: Arial.ttf
      bold: Arial Bold.ttf
      italic: Arial Italic.ttf
      bold_italic: Arial Bold Italic.ttf
base:
  font_family: Arial

если используете русский язык в коде, которые вставляется директивой source, не забудьте в секции code/font_family указать шрифт, поддерживающий кириллицу:
code:
     font_family: Arial

Далее, русификация наименования секций Chapter -> Глава
https://github.com/asciidoctor/asciidoctor-pdf/commit/43584be1cae1853c6e8479c76c6d7ba561782b34
после этого можно писать в заголовке
:chapter-label: Глава
 и все получится

Для переименования Table of context -> Оглавление
можно просто переопределить переменную toc-title.
Для этого прямо в документе пишем
:toc-title: Оглавление

Для перевода Version -> Версия добавь
:version-label: Версия

При формировании нумерованных списков может потребоваться настройка размера отступа текста от номера, что можно сделать через переменную outline_list indent в конфигурации темы:
outline_list:
  indent: $horizontal_rhythm * 2.25

Как верно подсказали в комментариях - не стоит портить дефолтную тему, имеет смысл закачать в папку /Library/Ruby/Gems/2.0.0/gems/asciidoctor-pdf-1.5.0.alpha.4/data/fonts нужны шрифты, а определения стилей хранить прямо около документа, запуская генерацию командой
asciidoctor-pdf -a pdf-style=path/to/*-theme.yml *.adoc

среда, июля 30, 2014

Запись синтезированного голоса в Mac OS X

Мне кажется что неплохой синтезатор голоса сделан на ivona.com. Голос гуглопереводчика показался каким-то тормозным.
В Mac нет звукового loopback, поэтому для записи проигрываемого звука надо ставить отдельные программные инструменты. Вполне адекватно работает soundflower. После его установки необходимо выставить soundflower как input и output source. Теперь можно писать звук с звуковой карты. Обрезать лишнее можно с помощью audacity, для поддержки им сохранения в mp3 надо установить lame.

Мой список блогов