gentoo.ru
python
python@conference.gentoo.ru
Суббота, 10 ноября 2012< ^ >
maksbotan установил(а) тему: ЯП Python || https://gist.github.com/289467 || Логи: http://tinyurl.com/gentoo-py-logs || "Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck." || Создан список рассылки python@lists.gentoo.org
Конфигурация комнаты
Участники комнаты

GMT+4
[00:00:09] <Deda_Zych> так. Задам вопрос иначе. Как мне сверху нужно будет вызвать route, чтобы провалиться именно в эту функцию?
[00:00:18] <Deda_Zych> @route('/recipes/<name>', method='PUT')
[00:00:51] <Deda_Zych> и почему именно в неё я провалюсь?
[00:02:44] <krigstask> Не route только, а что там вызывается при обработке HTTP-запроса
[00:03:27] <Deda_Zych> ну допустим при обработке HTTP-запроса вызвалось route
[00:03:41] <Deda_Zych> как оно вызовется, с какими аргументами?
[00:04:13] <Deda_Zych> чтобы я прям взял и провалился в это:
[00:04:19] <krigstask> route *не* будет вызываться при обработке запроса
[00:04:26] <Deda_Zych> @route('/recipes/<name>', method='PUT')
def recipe_save( name="Mystery Recipe" ):
    return "SAVE RECIPE " + name
[00:04:30] <krigstask> Она вызывается сразу при запуске
[00:05:50] <krigstask> И обработчик уже смотрит, если URL вида /recipes/CAKE и HTTP-метод — PUT
[00:06:05] <krigstask> …то вызывается recipe_name("CAKE")
[00:06:48] <Deda_Zych> вызывается при запуске, вытарчивает всё, что между < и > в переменную name и поджигает recipe_save
[00:06:56] <Deda_Zych> вот уже мне яснее
[00:07:08] <krigstask> Не-не-не
[00:07:18] <lk4d4> хехе
[00:08:05] <Deda_Zych> ладно, теперь по-колхозному
[00:08:08] <Deda_Zych> спрошу
[00:08:20] <Deda_Zych> @route('/recipes/<name>', method='PUT')
[00:08:23] <Deda_Zych> и
[00:08:35] <Deda_Zych> @route('/recipes/<name>', method='UPDATE')
[00:08:53] <Deda_Zych> это, тупо два "умных" кейса?
[00:09:21] <krigstask> Чего?
[00:09:44] <Deda_Zych> т.е. если я вторым аргументом передам в route PUT - вызовется первый обработчик
[00:09:56] <krigstask> А, ну это да
[00:09:57] <Deda_Zych> а если UPDATE - второй?
[00:09:59] <Deda_Zych> case
[00:10:09] <Deda_Zych> switch() же!
[00:10:23] <krigstask> Но это уже внутри обработчика HTTP-запросов реализовано, а декораторы ни при чём
[00:10:45] <Deda_Zych> ну это понятно
[00:11:05] <lk4d4> не самый лучший пример для понимания декораторов конечно
[00:11:42] <Deda_Zych> согласен, не помешал бы простенький примерчик
[00:11:55] <krigstask> Как в спецификации?
[00:11:57] <Deda_Zych> программа, которую просто запустил и увидел
[00:11:59] <Deda_Zych> неее
[00:12:02] <krigstask> Ну это для девочек же
[00:12:07] <Deda_Zych> там плохие примерчики
[00:12:10] <krigstask> Ты PEP не путай с доками
[00:12:53] <Deda_Zych> а, ну возможно
[00:13:01] <Deda_Zych> но сэмпл бы не помешал
[00:13:35] <lk4d4> http://stackoverflow.com/a/1594484
[00:13:44] <lk4d4> вот просто огромный пост про декораторы
[00:14:32] <krigstask> На хабре тоже есть
[00:17:32] <Deda_Zych> "Пацаны, прежде всего, осознайте, что функции - тоже объекты"
[00:17:41] <Deda_Zych> Капитаны, прям, везде
[00:19:16] <Deda_Zych> lk4d4: по твоей ссылке прям и рассказали, что такое функторы с точки зрения Питона.
[00:19:42] <Deda_Zych> krigstask: а залезу я, пожалуй, завтра в код бутылки и пошарюсь там
[00:20:26] <Deda_Zych> на словах я понял то, что надо было, но подебажиться, дабы окончательно рассеять туман, тоже не помешает.
[00:28:46] <krigstask> Рановато тебе ещё, разберись с декораторами
[00:28:55] <krigstask> А то там чёрная магия замыканий и всё такое
[00:29:03] <krigstask> Мы тут одно время по ним угорали все
[00:32:19] lk4d4 вышел(а) из комнаты
[01:59:18] <krigstask> BUF_SIZE if pos >= BUF_SIZE else pos
Придумал, как это гораздо лучше записать. Угадайте
[05:01:50] krigstask вышел(а) из комнаты: Replaced by new connection
[05:01:50] krigstask вошёл(а) в комнату
[13:40:47] lk4d4 вошёл(а) в комнату
[13:41:28] lk4d4 вышел(а) из комнаты
[13:41:56] lk4d4 вошёл(а) в комнату
[13:42:46] lk4d4 вышел(а) из комнаты
[13:45:46] lk4d4 вошёл(а) в комнату
[13:48:25] <lk4d4> krigstask: min(pos, BUF_SIZE) ?
[13:49:39] <krigstask> Точно
[13:49:56] <krigstask> Вчера придумал, пока ногу мыл
[14:08:37] <krigstask> Забавно мешать низкоуровненвую логику (прочитать 100 байт, вернуться на 100 байт назад) с высокоуровневым питонством (min(), str.split(), …)
[14:12:03] <krigstask> Надо будет это на Go переписать ещё
[14:35:42] <lk4d4> охота тебе писать на этом го
[14:35:45] <lk4d4> лучше на хаскеле
[14:36:59] <krigstask> Да хацкель как-то банален
[14:37:26] <krigstask> Как там с распараллеливанием?
[14:37:31] <lk4d4> отлично
[14:37:57] <lk4d4> для распараллеливания еще clojure говорят клевый
[14:38:01] <lk4d4> но это все-таки ява
[14:39:39] <krigstask> С Erlang никому не сравниться всё равно (-%Е
[14:41:13] <lk4d4> ну кроме Go видимо?
[14:41:27] <krigstask> Ну там похоже, да
[15:06:23] <lk4d4> вот почему в генте нет такой крутой штуки, как pdbpp
[15:06:30] <lk4d4> все принтами чтоли отлаживаются
[15:08:03] <krigstask> Это что такое?
[15:08:43] <lk4d4> http://pypi.python.org/pypi/pdbpp/0.7.2
[15:09:13] <krigstask> Прикольно
[15:09:23] <krigstask> Давай пнём ботана, пусть запилит
[15:09:38] <krigstask> pdbpp нам запили быстра блять
[15:09:52] <lk4d4> надо бы, может явится вечером
[15:16:08] <lk4d4> я кстати на работе поставил pypy компилять, в понедельник поиграюсь
[15:17:16] <krigstask> А я чего-то не придумал, как с ним играться
[15:17:40] <lk4d4> а у меня на работе прям норм можно поиграть
[15:17:49] <krigstask> Как это?
[15:17:54] <lk4d4> там же арифметика быстрее
[15:18:19] <lk4d4> ну там сейчас параллелю-ускоряю всякую шляпу
[15:18:30] <lk4d4> и вот есть идея на pypy все забомбить
[15:18:47] <krigstask> А-а-а, ну давай
[16:40:50] krigstask вышел(а) из комнаты: Replaced by new connection
[16:41:00] krigstask вошёл(а) в комнату
[16:55:08] <lk4d4> http://eao197.blogspot.ru/2011/12/progtesting-sqlite.html
[16:55:13] <lk4d4> вот это ребята тестируют
[16:57:49] <krigstask> Да уж
[16:58:35] <lk4d4> я вообще sqlite за базу-то не считал
[17:05:47] <krigstask> Ну у меня на работе начальник меня убеждает, что на наших задачах PostgreSQL слил SQLite'у
[17:06:20] <krigstask> http://sqlite.org/speed.html
[17:37:29] <krigstask> Ха-ха, моя читалка файла первую строку забывала
[17:39:57] <lk4d4> а потому что тестами не покрыта
[17:40:20] <krigstask> И не говори
[17:41:08] <krigstask> А вот ещё непонятно, что делать с \n в конце файла
[17:41:25] <krigstask> Из-за неё выплёвывается пустая строка лишняя
[17:42:11] <lk4d4> ну допиши проверочку
[17:42:21] <krigstask> Куда?
[17:42:29] <lk4d4> или вообще делай seek до end-1
[17:42:57] <krigstask> Хм-м-м, вот это мысль, пожалуй
[17:42:58] <lk4d4> и читай этот символ
[17:43:03] <krigstask> Ага
[17:47:37] <krigstask> Починил
[17:48:20] maksbotan вошёл(а) в комнату
[17:48:27] <krigstask> А вот и ботан
[17:49:28] <krigstask> Запили нам в дерево pdbpp
[17:50:14] <maksbotan> что это?
[17:50:44] <krigstask> Крашеный pdb
[17:50:46] <krigstask> http://pypi.python.org/pypi/pdbpp/0.7.2
[17:53:17] <maksbotan> а ебилд есть?
[17:55:07] <krigstask> Кто б тебя просил, если б ебилд был
[17:55:27] <maksbotan> хехе
[17:55:43] <krigstask> Но штука-то нужная народу
[17:55:49] <krigstask> Да и тебе пригодится
[17:56:39] <maksbotan> http://habrahabr.ru/post/158139/ а ты это читал?
[17:58:47] <krigstask> Да, но он мне не понравился, это раз. И он не умеет третий питон, это два
[17:58:53] <maksbotan> ладно
[17:59:04] <maksbotan> кстати мой самый любимый метод отладки до сих пор это print "here"
[17:59:08] <maksbotan> в нужных местах
[18:00:20] <krigstask> Ну он самый простой, но его далеко не всегда хватает
[18:00:53] <krigstask> А pudb заумел третий питон, гляньте-ка
[18:01:33] <krigstask> Надо потыкать
[18:03:34] <maksbotan> krigstask: а ты уже пробовал -r1 еклассы?
[18:03:58] <krigstask> Для чего?
[18:04:08] <maksbotan> в смысле для чего?
[18:04:18] <krigstask> Ну что мне делать с еклассами?
[18:04:41] <maksbotan> ебилды писать же
[18:05:17] <krigstask> Много я их пишу?
[18:05:22] <maksbotan> ну кто ж тебя знает
[18:05:26] <maksbotan> я тоже не много пишу
[18:05:27] <krigstask> И меня они всё ещё вымораживают
[18:06:05] <maksbotan>   File "usr/lib64/python3.2/site-packages/pdb.py", line 366
    except IOError, e:
[18:06:26] <maksbotan> krigstask: круто, правда?
[18:06:30] <krigstask> Ха-ха-ха
[18:06:32] <krigstask> Мн-да
[18:06:54] <krigstask> Вот кучу ебилдов на новых еклассах надо править, чтоб они хоть попробовали собираться для 3.3
[18:06:59] <krigstask> А я писал об этом
[18:07:05] <krigstask> Но всем же до лампады
[18:07:26] <maksbotan> там же пишут что это как KEYWORDS
[18:08:55] <maksbotan>     install_requires=["fancycompleter>=0.2",                                    
                      "wmctrl",                                                
                      "pygments"],  
[18:09:13] <maksbotan> на первое нет ебилда
[18:09:34] <krigstask> maksbotan: в смысле?
[18:09:38] <maksbotan> в прямом
[18:09:47] <krigstask> Я про KEYWORDS
[18:10:13] <maksbotan> krigstask: do not add anything w/o testing
[18:10:14] <krigstask> Ну, если он для 3-го не годится, то я не настаиваю
[18:10:36] <krigstask> maksbotan: ну и бред, замаскировать USE-флаг и всё
[18:10:46] <maksbotan> ну 2to3 его кажется переделает
[18:10:53] <maksbotan> проблема в том, что у него тестов нет
[18:11:08] <krigstask> Пусть тогда lk4d4 его перепиливает 3-:Е
[18:12:45] <krigstask> И тестами покрывает
[18:14:23] <maksbotan> не, 2to3 не в силах нам помочь
[18:14:49] <maksbotan> точнее в силах, но портит совместимость с 2.*, блин
[18:19:06] <krigstask> Ох ты
[18:19:47] <maksbotan> молодцы какие, бл*
[18:19:50] <maksbotan> проектировщики
[18:19:54] <maksbotan> # For each command being run, EPYTHON, PYTHON and BUILD_DIR are set            
# locally, and the former two are exported to the command environment.          
python_foreach_impl() {  
[18:20:02] <maksbotan> а PYTHON_ABI им влом было экспортить
[18:25:49] <maksbotan> fancycompleter is compatible with Python 3. However, by default colors don't work on Python 3, see the section How do I get colors? for details.
[18:25:51] <maksbotan> чудеса
[18:26:03] <krigstask> Мн-да
[18:26:37] <maksbotan> If you are using Python 3, pyrepl does not work, and thus is not installed. Your only option to get colors is to use a patched readline, as explained below.
[18:27:34] <krigstask> Ололо
[18:27:40] <krigstask> lk4d4, что ты нам подсунул?
[18:28:02] <maksbotan> >>> Compiling source in /var/tmp/portage/dev-python/fancycompleter-0.4/work/fancycompleter-0.4 ...
* python3.2: running distutils-r1_run_phase distutils-r1_python_compile
/usr/bin/python3.2 setup.py build --build-base /var/tmp/portage/dev-python/fancycompleter-0.4/work/fancycompleter-0.4-python3_2 --build-lib /var/tmp/portage/dev-python/fancycompleter-0.4/work/fancycompleter-0.4-python3_2/lib build
Traceback (most recent call last):
  File "setup.py", line 6, in <module>
    long_description = open(readme).read()
  File "/usr/lib64/python3.2/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 2347: ordinal not in range(128)
[18:28:08] <maksbotan> так, ну вас к черту с такими пакетами
[18:33:56] <Deda_Zych> трололо
[18:34:22] <maksbotan> о, а ты что тут делаешь
[18:34:35] <krigstask> Он тут декораторами упарывался вчера
[18:34:54] <maksbotan> аа)
[18:34:59] <Deda_Zych> а я тут вчера наводил порядок в голове
[18:35:03] <krigstask> Да-да
[18:35:10] <krigstask> Я почти так и сказал
[18:53:03] Deda_Zych вышел(а) из комнаты
[21:27:23] lk4d4 вышел(а) из комнаты
[21:29:18] lk4d4 вошёл(а) в комнату
[21:46:29] lk4d4 вышел(а) из комнаты: Replaced by new connection
[21:46:39] lk4d4 вошёл(а) в комнату
[22:19:26] <lk4d4> krigstask: это все потому что я угорел по сборочка
[22:19:28] <lk4d4> м
[22:20:07] <krigstask> Каким сборочкам?
[22:20:30] <lk4d4> virtualenv
[22:23:24] <lk4d4> но pudb гляну, раз уж с ipython интегрируется
[23:05:30] <maksbotan> krigstask: lk4d4: есть идеи как это сделать получше? http://bpaste.net/show/57116
[23:05:56] <maksbotan> функция приводит совместимые типы в моем компиляторе
[23:06:00] <krigstask> lk4d4: ipython не нужен
[23:18:43] <lk4d4> а кто нужен?
[23:20:04] <lk4d4> maksbotan: у тебя везде and, сравнивай туплами
[23:20:42] <maksbotan> lk4d4: а это эффективнее?
[23:20:54] <lk4d4> так же мне кажется
[23:21:05] <lk4d4> смотрите ка за эффективностью погнался
[23:21:17] <lk4d4> даже круче тебе скажу, сделай словарь, где ключами туплы
[23:21:36] <maksbotan> а значениями?
[23:21:45] <lk4d4> ну вот эта шляпа с self.builder
[23:24:37] <maksbotan> lk4d4: http://bpaste.net/show/57120 зацени как мощно
[23:26:22] <lk4d4> да, бомба
[23:26:37] <maksbotan> а все потому, что
[23:26:43] <maksbotan> >>> Type.int() > Type.double()
False
>>> Type.int() < Type.double()
True
[23:26:48] <maksbotan> создатели llvmpy все продумали
[23:33:51] <lk4d4> клево конечно
[23:34:03] <lk4d4> а в дерево не добавишь?
[23:34:30] <maksbotan> llvmpy?
[23:34:35] <maksbotan> там тесты надо починить
[23:34:55] <lk4d4> а
[23:35:05] <maksbotan> в смысле с тестами-то все хорошо
[23:35:12] <maksbotan> но я тут показывал какая магия происходит
[23:35:14] <krigstask> …но их надо починить
[23:35:17] <maksbotan> я потом с горным поговорю
[23:35:23] <maksbotan> может подскажет что
[23:37:02] <lk4d4> посоны, а у вас не интел случайно видюхи?
[23:37:25] <maksbotan> у меня интел
[23:38:48] <lk4d4> в месе какие флажки у тебя?
[23:39:09] <maksbotan>      Installed versions:  9.0(17:32:18 11.10.2012)(classic egl gallium llvm nptl shared-glapi -bindist -debug -g3dvl -gbm -gles1 -gles2 -openvg -osmesa -pax_kernel -pic -r600-llvm-compiler -selinux -vdpau -wayland -xa -xorg -xvmc KERNEL="-FreeBSD" VIDEO_CARDS="i915 i965 intel -nouveau -r100 -r200 -r300 -r600 -radeon -radeonsi -vmware")
[23:39:22] <lk4d4> а в eselect mesa?
[23:40:36] <maksbotan> 64bit i915 (Intel 915, 945)
  [1]   classic
  [2]   gallium *
64bit i965 (Intel 965, G/Q3x, G/Q4x)
  [1]   classic *
64bit r300 (Radeon R300-R500)
64bit r600 (Radeon R600-R700, Evergreen, Northern Islands)
64bit sw (Software renderer)
  [1]   classic
  [2]   gallium *
32bit i915 (Intel 915, 945)
  [1]   classic
  [2]   gallium *
32bit i965 (Intel 965, G/Q3x, G/Q4x)
  [1]   classic *
32bit r300 (Radeon R300-R500)
  [1]   gallium *
32bit r600 (Radeon R600-R700, Evergreen, Northern Islands)
  [1]   gallium *
32bit sw (Software renderer)
  [1]   classic
  [2]   gallium *
[23:41:15] <lk4d4> ага, ну значит все по-старому
[23:47:39] <lk4d4> maksbotan: а ты по virtualenv не угораешь?
[23:47:44] <maksbotan> не
[23:49:12] <lk4d4> а зря, гвидо даже угорает
[23:50:53] <maksbotan> уу
[23:59:22] <krigstask> А зачем по ней угорать?
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!