gentoo.ru
python
python@conference.gentoo.ru
Вторник, 11 октября 2011< ^ >
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
[03:42:59] krigstask вышел(а) из комнаты: Replaced by new connection
[03:43:09] krigstask вошёл(а) в комнату
[09:15:47] krigstask вышел(а) из комнаты
[10:22:08] LK4D4 вышел(а) из комнаты
[10:41:52] krigstask вошёл(а) в комнату
[11:10:54] <lk4d4> krigstask: то есть говоришь solarized тащит?
[11:11:03] <krigstask> Мне нравится
[11:11:12] <lk4d4> сейчас попробую
[11:11:50] <lk4d4> блин, а как ее использовать? что-то там много файлов
[11:12:17] <krigstask> Тебе в gvim?
[11:12:23] <lk4d4> нет, в vim
[11:13:08] <krigstask> Надо цвета терминала тогда настраивать
[11:15:39] <krigstask> http://ethanschoonover.com/solarized/vim-colors-solarized
[11:15:48] <krigstask> (IMPORTANT NOTE FOR TERMINAL USERS)
[11:18:16] <lk4d4> блин, у меня ЖИТ не работает :E
[11:21:13] <krigstask> git по верёвочке бежит
[11:21:57] <lk4d4> mv vim-colors-solarized ~/.vim/bundle/ вот это мне неясно
[11:22:00] <lk4d4> ерунда какая-то
[11:22:29] <krigstask> Я только solarized.vim копировал в .colors
[11:22:47] <lk4d4> во, пошло дело
[11:24:20] <lk4d4> круто смотрится
[11:28:10] <krigstask> В консольном?
[11:28:17] <lk4d4> да
[11:28:19] <lk4d4> вообще шик
[11:28:26] <krigstask> Ну-ка покажи
[11:29:06] <lk4d4> http://ompldr.org/vYXI4NA
[11:29:39] <krigstask> Фу, это же konsole
[11:29:53] <lk4d4> ага
[11:30:10] <krigstask> Нормально, в общем, хотя и совсем на solarized непохоже (-:Е
[11:30:31] <krigstask> А ты в курсе, что неправильно функции называешь?
[11:30:48] <lk4d4> нет
[11:31:00] <krigstask> getHash -> get_hash
[11:31:23] <lk4d4> ну это бомба
[11:31:23] <krigstask> И jsonClass -> JsonClass
[11:31:59] <lk4d4> get_hash это только методы?
[11:32:18] <lk4d4> или вообще все функции предлагаешь так называть?
[11:32:32] <krigstask> Не я предлагаю, а в питоне так принято
[11:32:38] <krigstask> Все функции
[11:33:47] <krigstask> http://www.python.org/dev/peps/pep-0008/
[11:37:11] <krigstask> А ты выглядишь как плюсач!
[11:53:14] <lk4d4> темное прошлое дает о себе знать
[11:55:41] <lk4d4> а напомни как колонку покрасить
[11:55:45] <lk4d4> в виме
[11:58:28] <lk4d4> нашел
[12:30:50] <lk4d4> krigstask: здесь?
[12:31:19] <krigstask> Ага, если звать. Если не звать — то нечасто заглядываю
[12:31:29] <krigstask> У меня тут борьба с собственным творением
[12:31:33] <lk4d4> ааа
[12:31:39] <lk4d4> ну тогда я пока сам помучаюсь
[12:32:00] <krigstask> Можешь спросить и мучиться в процессе
[12:32:31] <lk4d4> да у меня тут все битва с списко-словарями
[12:32:39] <lk4d4> думаю как круче их обходить
[12:37:06] <lk4d4> рекурсия вообще бесит
[12:37:15] <lk4d4> в питоне же стек не бесконечный?
[12:47:04] <krigstask> Нет
[12:47:09] <lk4d4> так отож
[12:47:10] <krigstask> А он где-то бесконечный?
[12:47:18] <lk4d4> в эрланге
[12:47:23] <lk4d4> может и в хаскеле
[12:52:20] <krigstask> Она просто железом ограничена
[12:52:39] <lk4d4> да кто его знает как там внутри устроено
[12:52:46] <lk4d4> это же высокий уровень
[12:52:56] <lk4d4> может там внутри сплошные циклы на Си
[12:53:06] <lk4d4> вообще на эрланге с конечным стеком-то не забалуешь
[13:20:11] <lk4d4> а можно какой-то список например завести который будет виден всем функциям в рекурсии?
[13:20:18] <lk4d4> или только передавать его вариант?
[13:53:49] <krigstask> Это уже не рекурсия, а шляпа
[13:54:15] <krigstask> Можно, конечно, передавать аргументом кортеж
[14:17:56] <lk4d4> хохо, а толку-то что?
[14:18:07] <lk4d4> какая разница кортеж, али не кортеж?
[14:18:58] <lk4d4> к тому же у меня и так не рекурсия, а шляпа
[14:22:17] <krigstask> Ну, кортеж неизменяем, в отличие от списка
[14:22:48] <lk4d4> в том-то и бомба, что я собираюсь в этот список накапливать
[14:24:59] <krigstask> Не думаю, что идея хороша
[14:28:56] <lk4d4> в цикол придется разворачивать
[14:35:44] <krigstask> Цыкыл
[14:35:53] <krigstask> Рекурсия круче
[14:36:51] <lk4d4> ну мне она тоже нравится
[14:36:55] <lk4d4> но надо накапливать
[14:37:03] <lk4d4> я же дифф для json пишу
[14:38:19] <krigstask> Вот ты какой
[14:56:12] <lk4d4> и эти древовидные дивы совсем не забавляют
[14:56:22] <lk4d4> дифы*
[15:12:30] <lk4d4> krigstask: а если функция что-то печатала, то можно это увидеть?
[15:12:42] <krigstask> В смысле?
[15:15:45] <lk4d4> ну в смысле у меня функция ничего не возвращает, только выводит на экран
[15:16:01] <krigstask> И?
[15:16:11] <krigstask> sleepsort пишешь, что ли?
[15:16:15] <lk4d4> и можно ли узнать выводила она что-то или нет?
[15:16:16] <lk4d4> хаха
[15:16:21] <lk4d4> ну похоже на то кстати
[15:16:25] <krigstask> Не думаю
[15:16:42] <krigstask> Разве что за sys.stdout следить
[15:26:18] <lk4d4> krigstask: вот как бог программирования скажи мне
[15:26:31] <krigstask> Полубог
[15:26:41] <lk4d4> http://paste.pocoo.org/show/490957/
[15:27:11] <lk4d4> из функции compare_json надо вернуть нуль, если я не был в ифе с различиями
[15:27:20] <lk4d4> или -1, если был
[15:28:25] <krigstask> Который в строке 40?
[15:28:32] <lk4d4> да
[15:29:07] <krigstask> Ты хреново выровнял условие, кстати: оно смешивается с телом цикла
[15:29:20] <krigstask> В смысле, с print'ами
[15:29:30] <lk4d4> табов накидать?
[15:29:51] <krigstask> Ага
[15:29:56] <lk4d4> накидал
[15:30:08] <krigstask> И вроде лучше с or начинать перенос условия
[15:30:17] <krigstask> Ну это так, к слову
[15:30:25] <lk4d4> то есть вниз его?
[15:30:35] <krigstask> Ага, pep8 почитай
[15:30:39] <krigstask> Там умное пишут
[15:31:08] <krigstask> Так а что тебе мешает ввести переменную returncode?
[15:31:42] <krigstask> В начале функции 0, а вместе с print'ами вставь `retcode = -1`
[15:31:45] <lk4d4> ну а как я ее между уровнями рекурсии буду передавать?
[15:31:48] <krigstask> И возвращай его
[15:31:57] <lk4d4> рекурсия же
[15:32:04] <lk4d4> а если в последнем листке совпадает?
[15:32:08] <lk4d4> тогда 0 вернется
[15:33:18] <lk4d4> нужен аналог статик в С
[15:33:34] <krigstask> Не нужен, это не функциональный стиль
[15:34:04] <krigstask> Сейчас покажу пример
[15:35:20] <krigstask> Только придумаю что-нибудь
[15:37:03] <lk4d4> если только отдельно бомбануть класс, который будет хранить различались или нет
[15:37:40] <krigstask> Не-е-е
[15:38:44] <lk4d4> ну тогда я не знаю
[15:38:58] <krigstask> Да сейчас покажу
[15:39:08] <lk4d4> ну довай
[15:39:30] <krigstask> Я только не могу пример придумать, чтоб простой, но подходящий
[15:39:42] <lk4d4> ха
[15:39:47] <lk4d4> ну рекурсия с условием
[15:40:05] <lk4d4> мне бы подошла
[15:41:04] <krigstask> Ладно, придумал что-то сферическое в вакууме
[15:51:44] <lk4d4> ох, чтоже ты там такое придумал
[15:52:44] <krigstask> Pasted #490971 to http://paste.pocoo.org/show/490971
[15:53:59] <lk4d4> ну ты как-то хитер
[15:54:18] <lk4d4> из последнего листка просто возвращаешь
[15:54:35] <krigstask> Не-а
[15:54:57] <krigstask> Считает сумму элементов списка кортежей и находит, есть ли среди них кортежи, сумма элементов которого кратна трём
[15:55:45] <lk4d4> а сами кортежи выведет?
[15:58:37] <krigstask> А зачем
[15:59:15] <lk4d4> а вот все он пройдет до конца?
[15:59:28] <lk4d4> или как только встретит так раскрутит?
[16:12:55] <krigstask> Всё пройдёт
[16:13:12] <krigstask> Сумму-то посчитать надо
[16:13:20] <krigstask> Да ты погоняй, оно работает
[16:26:30] <krigstask> Сечёшь?
[16:43:04] <lk4d4> нет
[16:45:47] <lk4d4> у меня похоже так не выгорит
[16:54:43] <krigstask> Поцчему?
[16:55:51] maksbotan вошёл(а) в комнату
[17:10:04] <lk4d4> потому что я все равно ничего не понимаю
[17:10:10] <lk4d4> и у меня несколько ветвей рекурсии
[17:17:39] <krigstask> Так пусть у тебя функция возвращает строку (или что там у тебя) и True/False
[17:18:19] <krigstask> И «родительская» функция объединяет это булево значение с её личным через and/or
[17:21:26] <lk4d4> ничего не возвращает
[17:21:36] <lk4d4> только побочный эффект в виде вывода
[17:22:07] <krigstask> Пусть возвращает тогда
[17:22:31] <lk4d4> вот посмотри я сделал убого как
[17:22:48] <lk4d4> http://paste.pocoo.org/show/491012/
[17:22:57] <lk4d4> и все оказалось неправильно :E
[17:23:06] <krigstask> Даже подсветки нет )-:Е
[17:23:44] <krigstask> Ну понятно дело
[17:23:57] <krigstask> Сделай True/False
[17:25:40] <lk4d4> я не понимаю что это значит вообще
[17:27:00] <krigstask> Ладно, щас
[17:34:35] <lk4d4> все вообще оказалось не так :E
[17:35:28] <krigstask> В смысле? (-:Е
[17:36:33] <lk4d4> вообще оказывается пути надо было указать
[17:38:35] <krigstask> Пути? Какие пути?
[17:38:45] <krigstask> А ты в vim этот код пишешь?
[17:41:57] <lk4d4> ну в json пути
[17:42:03] <lk4d4> ага, в vim
[17:42:11] <lk4d4> и сравнение у меня тухлое
[17:42:13] <krigstask> lodgeit установил?
[17:42:18] <lk4d4> оказывается ключи одинаковые
[17:42:29] <lk4d4> у меня прокся, а lodgeit не умеет
[17:42:34] <lk4d4> надо кстати допилить
[17:42:34] <krigstask> А-а-а
[17:42:39] <lk4d4> там строк 10 наверное
[17:42:40] <krigstask> Да, было бы неплохо
[17:48:37] <lk4d4> в общем надо еще пути запоминать когда по дереву иду
[17:49:57] <krigstask> Хо-хо, да
[17:50:10] <lk4d4> это такая пушка, что даже пушка
[17:50:19] <krigstask> А с чего ты вдруг это делаешь? Неужто по работе?
[17:50:23] <lk4d4> ага
[17:50:29] <krigstask> Прикольно
[17:50:38] <krigstask> Тесты нафигачил?
[17:50:54] <lk4d4> ну вот это и будут тесты
[17:51:07] <krigstask> Вахъ
[17:51:13] <krigstask> А на функцию diff'а?
[17:51:16] <krigstask> Тесты тестов
[17:51:19] <lk4d4> ага
[17:51:28] <krigstask> Хе-хе
[17:51:30] <lk4d4> вообще все переписывать надо
[17:51:35] <lk4d4> куда уж тут тесты
[17:52:40] <lk4d4> вот смотри
[17:52:44] <lk4d4> есть список ключей
[17:52:53] <lk4d4> как мне элемент по этому путю получить?
[17:54:57] <krigstask> Какой такой список ключей?
[17:55:12] <lk4d4> ну вот есть словарь вложенный
[17:55:51] <lk4d4> надо например удалить элемент js['root']['db']['capture_date']
[17:56:12] <lk4d4> есть список ['root', 'db', 'capture_date']
[17:58:51] <lk4d4> то есть по сути надо сделать js['root'
[17:58:56] <lk4d4> тьфу
[17:59:19] <lk4d4> js['root']['db'].pop('capture_date')
[17:59:36] <krigstask> Ну и в чём проблема?
[18:00:00] <krigstask> Разрезаешь список на путь и имя элемента
[18:00:10] <lk4d4> разрезал
[18:00:13] <krigstask> (['root', 'db'], 'capture_date')
[18:00:26] <lk4d4> как список-то в ключи превратить?
[18:00:26] <krigstask> Идёшь по пути и делаешь get
[18:00:41] <krigstask> Рекурсивно
[18:01:12] <maksbotan> >>> js['root']['db']['capture_data']
1
[18:01:16] <maksbotan> >>> reduce(lambda x,y: x[y], [js, 'root', 'db', 'capture_data'])
1
[18:01:20] <maksbotan> вот как-то так
[18:01:50] <krigstask> Во, функционально мыслит
[18:02:05] <krigstask> А я вряд ли бы вспомнил
[18:02:36] <maksbotan> =)
[18:03:43] <lk4d4> спасибо
[20:07:28] maksbotan вышел(а) из комнаты
[20:07:55] maksbotan вошёл(а) в комнату
[20:23:18] LK4D4 вошёл(а) в комнату
[20:53:04] krigstask вышел(а) из комнаты: Logged out
[22:12:50] krigstask вошёл(а) в комнату
[22:30:17] <LK4D4> вот погань, прихожу я домой, захожу по ssh и что же
[22:30:25] <LK4D4> и правда solarized не так выглядит
[22:30:56] <maksbotan> хаха
[22:31:04] <maksbotan> LK4D4: а та штука с редус прокатила?
[22:31:10] <LK4D4> да, вообще нормалян
[22:31:12] <krigstask> Такова природа вещей
[22:54:26] <LK4D4> а можно ли универсально как-то бомбануть for ... in для списков и словарей?
[22:58:18] <krigstask> То есть?
[22:59:27] <krigstask> Можно прямо так
[22:59:30] <LK4D4> сейчас покажу
[22:59:35] <krigstask> Но это будут ключи
[22:59:53] <LK4D4> http://paste.pocoo.org/show/491153/
[23:00:00] <LK4D4> в том-то и оно
[23:00:20] <LK4D4> вот у меня там в compare есть два ветвления, которые почти не отличаются
[23:00:47] <krigstask> "for ind in xrange(len(json1)):"
[23:00:57] <krigstask> По-моему, кому-то пора узнать про enumerate
[23:01:15] <maksbotan> ха-ха
[23:01:16] <maksbotan> ;)
[23:01:21] <maksbotan> я вот про него знаю
[23:01:26] <krigstask> s/-//
[23:01:30] <maksbotan> LK4D4: куда дел подсветку?
[23:01:33] <maksbotan> krigstask: не суть важно
[23:01:38] <LK4D4> ох блин
[23:01:43] <krigstask> Ещё как важно, цитируй правильно
[23:02:18] <LK4D4> wgetpaste подсветку не дает мне
[23:02:29] <maksbotan> ну лоджит поставь
[23:02:30] <maksbotan> а
[23:02:31] <maksbotan> прокси
[23:03:50] <krigstask> lk4d4: if isinstance(json1, list): iterable = enumerate(list); else: iterable = json1.iteritems()
[23:04:33] <LK4D4> ну это пушка
[23:05:16] <krigstask> Ну хоть не бомба
[23:08:23] <LK4D4> надо теперь к ботанову редьюсу еще прикрутить индексы спискоты
[23:08:29] <LK4D4> и тогда будет бомба
[23:08:33] <maksbotan> индексы спискоты?
[23:09:07] <LK4D4> а, я еще не все рассказал
[23:09:25] <LK4D4> ключи словаря я парсю из строки вида 'key1/key2/key3'
[23:09:51] <LK4D4> а, ну это уже проблемы парсинга
[23:10:20] <maksbotan> парсить надо регвырами
[23:10:54] <krigstask> .split() уже не торт?
[23:10:57] <LK4D4> да тут-то я и split обойдусь
[23:11:10] <LK4D4> вот в pqlop кстати я парсил регвырами
[23:11:15] <LK4D4> и было медленно
[23:11:19] <maksbotan> хаха
[23:11:22] <maksbotan> а ты их компилял?
[23:11:27] <LK4D4> конечно
[23:11:41] <maksbotan> а все почему?
[23:11:46] <maksbotan> потому что на перле надо было делать!
[23:12:02] <LK4D4> вообще конечно на C круто у вапиера получилось
[23:12:30] <maksbotan> и не работает ничерта
[23:12:33] <LK4D4> самая первая версия была в 40 раз медленней qlop
[23:12:57] <maksbotan> ну ты крутой оптемезатор
[23:13:01] <maksbotan> LK4D4: а теперь?
[23:13:07] <krigstask> На cython перепиши
[23:13:10] <LK4D4> в 12 чтоле
[23:13:14] <maksbotan> +1 кстати
[23:17:42] <maksbotan> krigstask: а ты сам этот цитон пробовал?
[23:18:09] <krigstask> Только смотрел
[23:26:39] <maksbotan> ясно
[23:26:43] <maksbotan> ну, спокойной ночи
[23:26:52] maksbotan вышел(а) из комнаты
[23:36:55] <LK4D4> ну по ходу хватит на сегодня божественного вмешательства
[23:38:10] <LK4D4> еще до черта надо писать :E
[23:38:17] <LK4D4> целый xpath
[23:43:43] <krigstask> Ботанственного вмешательства
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!