среда, 5 декабря 2012 г.

Idea dark scheme

С приближением релиза 12 Idea в ней нормально заработала под ubuntu встроенная темная схема dracula (включается File -> Settings -> Appearance).

Доставляет невероятно! Color Ide + Patch Ide снесены за ненадобностью.


понедельник, 12 ноября 2012 г.

Scala && Idea Ant command line build

С недавнего времени начал переползать с Java на Scala. Писать под виртуальную машину приходится, но уж больно Java уныла как язык программирования, чудесно совмещая в себе отсутствие плюсовых возможностей в управлении (ссылки, указатели, scoped lifetime, ...) и громоздкой вербозностью.

Что до Scala - то она пока радует. Чему способствует хорошая книжка, а так же полезные ресурсы, например, вот.
И так-же хорошая интеграция в Idea при помощи plugin'ов, позволяя совершенно без проблем совмещать scala & lrgacy java код с первых минут использования.

Единственный `затык`, встреченный на данный момент, оказалась сборка из командной строки. Сама сборка была построена на Scons, в связи с большим объемом кода плюсового, и некоторой генерации. А Java код собирался вызываемым из Scons ant'ом, по сгенерированной идеей 'build.xml'.

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

Ставились требования разработки в Idea и поддержания скрипта сборки в валидном состоянии простыми автоматическими действиями. Были попробованы SBT и Maven, но я не понял, как после генерации ими проектов по простому получить параллельно работающие ветви и в Ide и для command line (а SBT так просто повеселила своим названием, так как она для вхождения вовсе не simple - по прочтению ~ 8 страниц мануала у меня не было четкого понимания, как нужно описывать проекты, их структуру и т.д. .. да банально не мог сходу написать простой рабочий проект где не все по умолчанию).

В результате немного подсмотрев, как по простому собирать ant для сборки scala,  был допилен модификатор Idea'вских ant'овых скриптов, собственно который и решил данную задачу (на данный момент).

Питоновский код (в виде Scons билдера) под 'катом' (python converter for idea ant build xml):

вторник, 17 апреля 2012 г.

Перенаправление ввода\ввывода в embedded Python

Потребовалось перехватывать вывод питона, очень простой способ нашёлся тут - http://python-dev.info/redirecting-embedded-pythons-io/

Простой рабочий пример:

    Py_Initialize();

    PyObject *sys = PyImport_ImportModule("sys");
    PyObject *out = PyFile_FromString("python_out", "w+");
    PyObject_SetAttrString(sys, "stdout", out);

    PyRun_SimpleString("print 'hello'");

    FILE *output = PyFile_AsFile(out);
    fflush(output);
    fclose(output);

    Py_Finalize();

вторник, 10 апреля 2012 г.

Python 2.x и русские строки

Локализованный Windows, зараза, выплёвывает локализованные результаты работы утилит.
Потратил два часа на то, чтобы найти вхождение строкового литерала в этом результате.
Постфактум - все элементарно, но матов успел сложить стопочку...

Итак - пометки на полях:

1) Чтобы объявить строковой литерал кириллицей надо указать кодировку файла, иначе питончик падает с синтаксической ошибкой: SyntaxError: Non-ASCII character '\xcf' in file
Лечится добавлением в заголовок следующих строчек:
#!/usr/bin/python
# -*- coding: utf-8 -*-


2) Для сравнения строк необходимо их привести к одной кодировке:
В случае строкового литерала делаем так:
cyrillic_literal = 'Печатаемое имя:'.decode('cp1251')

А для внешних данных:
line = line.decode(sys.stdin.encoding)