beldmit: (Программизм)
Сделал бету очередного микропроекта на python. Проект пока не публичный, если станет таковым — похвастаюсь.

Собственно, python там оказался (полу)случайно — альфу клиентской версии я сделал на Java, а когда мне заказчик сказал, что нужна серверная, я представил, как я бьюсь лбом о порог вхождения в экосистему Java на сервере и решил, что расшибу я тот лоб гораздо раньше. А со скриптовыми языками всё сравнительно просто, и пример того, что мне надо сделать, написанный на python, заработал с первого раза именно так, как мне требовалось. (На perl аналогичные модули работают несколько не так). Нина выбор тоже горячо одобрила. Я писал на python до того один раз 7 лет назад и воспоминания у меня были скорее положительные.

Некоторое время повозился с Django. Команд у manage.py больше, чем у git-а, документация в сети есть, но при гуглении есть шанс нарваться на какую-нибудь версию 1.4 (Cookbook-а для более новой версии я не нашёл, а удобнее всего для освоения с нуля именно он). Но типовые web-вещи там решаются просто и лучше, чем я бы написал с нуля, а учитывая, что мне нужно было всего-то пара страниц и раздача статики, то всё прошло идеально, хотя головой об стенку я побился. В Debian доступен 1.7.11, в upstream версия сейчас 1.10, а версия 1.7 значится на сайте как не поддерживаемая, я в итоге плюнул и поставил свежую версию через pip install. И прочие пакеты ставил так же, нарушая тем самым чистоту ленинских идей и отказываясь от менеджера пакетов.

Python я взял 2.7 (блин, посмотрел в предыдущие записи по тегу python — и осознал, что прошло 7 лет, а python 3 так и не завоевал мир). Из-за этого мне пришлось повоевать с указанием кодировок и, видимо, явной конвертацией в utf-8 в скрипте.

Финальным аккордом стала отладка cron-скрипта. То есть как нормальный скрипт он делал всё, что надо, а из cron-а он выдавал первое из серии диагностических сообщений, а затем падал с какой-то невнятицей. Через некоторое время нагуглилось, что надо выставлять переменную PYTHONIOENCODING=utf_8, и после этого всё заработало.

Вывод простой. Современные развитые скриптовые языки позволяют написать содержательный код без особого знания синтаксиса языка. Ну то есть я знал минимальные вещи, типа выравнивания пробелами и оформления циклов и управляющих конструкций, за чем-то сложнее лазил в учебник. И да, in stackoverflow we trust, но читать его надо очень внимательно и осмыслять, что же тебе посоветовали — просто копирование кода скорее всего не поможет.
beldmit: (Программизм)
Я выложил на GoogleCode свою реализацию игры "Акционер" на python, смотреть по адресу http://code.google.com/p/stockholder

Требуется модуль termcolor, который в сети находится. Закоммичено в варианте, позволяющем интерактивную игру.

Реализовано штук 5 алгоритмов различной мудрености. Единственное, чего не удалось - научить AI планировать за пределы текущего хода. Впрочем, алгоритм довольно эффективен.

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

[livejournal.com profile] shigin, [livejournal.com profile] phd - комментарии приветствуются.
beldmit: (Программизм)
Я выложил на GoogleCode свою реализацию игры "Акционер" на python, смотреть по адресу http://code.google.com/p/stockholder

Требуется модуль termcolor, который в сети находится. Закоммичено в варианте, позволяющем интерактивную игру.

Реализовано штук 5 алгоритмов различной мудрености. Единственное, чего не удалось - научить AI планировать за пределы текущего хода. Впрочем, алгоритм довольно эффективен.

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

[livejournal.com profile] shigin, [livejournal.com profile] phd - комментарии приветствуются.
beldmit: (Программизм)
А как в Debian обращаются с питоновыми пакетами, которые не удалось найти в дистрибутиве? То есть по-хорошему, конечно, их можно поставить куда-то локально на машине или собрать пакет. Какие телодвижения нужны для того и для другого?
beldmit: (Программизм)
А как в Debian обращаются с питоновыми пакетами, которые не удалось найти в дистрибутиве? То есть по-хорошему, конечно, их можно поставить куда-то локально на машине или собрать пакет. Какие телодвижения нужны для того и для другого?
beldmit: (Программизм)
Дописал интерактивный режим (текстовый, и не особо удобный, но при желании играемый). Вчера Студенов его обыграл, сегодня мне удалось подправить коэффициенты, так что теперь это стало сделать гораздо труднее.

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

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

С горя полез в математическую теорию. Выяснил, что по классификации это позиционная дифференциальная неантагонистическая игра с неполной информацией. На практике это означает, что теории по этому поводу практисчески не существует, а та, которая существует, мой мозг в нынешнем состоянии вынесет. [livejournal.com profile] smartnik, если ты подскажешь что-то разумное по этому поводу - буду благодарен.
beldmit: (Программизм)
Дописал интерактивный режим (текстовый, и не особо удобный, но при желании играемый). Вчера Студенов его обыграл, сегодня мне удалось подправить коэффициенты, так что теперь это стало сделать гораздо труднее.

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

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

С горя полез в математическую теорию. Выяснил, что по классификации это позиционная дифференциальная неантагонистическая игра с неполной информацией. На практике это означает, что теории по этому поводу практисчески не существует, а та, которая существует, мой мозг в нынешнем состоянии вынесет. [livejournal.com profile] smartnik, если ты подскажешь что-то разумное по этому поводу - буду благодарен.
beldmit: (Программизм)
Как и планировал, начал писать на питоне вот эту игру. Из правил осталось реализовать компенсацию и банкротство, и можно будет подсовывать AI разные целевые функции и сравнивать, какая лучше.

технические подробности )

Еще бы правила оригинальной версии найти.
beldmit: (Программизм)
Как и планировал, начал писать на питоне вот эту игру. Из правил осталось реализовать компенсацию и банкротство, и можно будет подсовывать AI разные целевые функции и сравнивать, какая лучше.

технические подробности )

Еще бы правила оригинальной версии найти.
beldmit: (Программизм)
http://dev.1c-bitrix.ru/community/forums/forum6/topic14898/ - чудный пример нормализации, доведенной до абсурда. Кстати, как такие задачи решать сравнительно честно на чистом SQL - я не знаю, а возникают они регулярно. То есть мне больше всего нравится вариант, когда в чистом SQL такое не решают, а аккуратно берут основные атрибуты из одной таблицы по ключу, дополнительные - по списку уникальных значений из другой, и склеивают в то, что подсовывают пользователю на экран, уже в языке - запросов при этом получается всего 2 компактных.

А еще сегодня мне удалась одна из вещей, за которые я очень люблю свою работу. Маленький патчик - забытый метод класса-потомка в 5 строк, написанный за 15 минут после часового анализа кода, решил одну нашу застарелую проблему. У клиентов жалоб должно поуменьшиться.

А вот в изучении питона пока застрял. Что, впрочем, естественно: возвращаюсь поздно и со съеденными мозгами. А в той задачке, которую я ковыряю, не придумал пока алгоритмов. Сам язык мне скорее понравился, причем именно выравниванием пробелами, которое у меня вызывало отторжение. Код выглядит воздушным. Странности у языка тоже есть, ну да ладно.
beldmit: (Программизм)
http://dev.1c-bitrix.ru/community/forums/forum6/topic14898/ - чудный пример нормализации, доведенной до абсурда. Кстати, как такие задачи решать сравнительно честно на чистом SQL - я не знаю, а возникают они регулярно. То есть мне больше всего нравится вариант, когда в чистом SQL такое не решают, а аккуратно берут основные атрибуты из одной таблицы по ключу, дополнительные - по списку уникальных значений из другой, и склеивают в то, что подсовывают пользователю на экран, уже в языке - запросов при этом получается всего 2 компактных.

А еще сегодня мне удалась одна из вещей, за которые я очень люблю свою работу. Маленький патчик - забытый метод класса-потомка в 5 строк, написанный за 15 минут после часового анализа кода, решил одну нашу застарелую проблему. У клиентов жалоб должно поуменьшиться.

А вот в изучении питона пока застрял. Что, впрочем, естественно: возвращаюсь поздно и со съеденными мозгами. А в той задачке, которую я ковыряю, не придумал пока алгоритмов. Сам язык мне скорее понравился, причем именно выравниванием пробелами, которое у меня вызывало отторжение. Код выглядит воздушным. Странности у языка тоже есть, ну да ладно.
beldmit: (Программизм)
Коллеги, а что является аналогом CPAN для Python?
beldmit: (Программизм)
Коллеги, а что является аналогом CPAN для Python?

Profile

beldmit: (Default)
beldmit

August 2017

S M T W T F S
  12345
678 9 101112
13 1415 1617 1819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 23rd, 2017 04:24 am
Powered by Dreamwidth Studios