↑↑↓↓←→←→ⒷⒶ Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

Был проект такой, [AnyGUI](https://wiki.python.org/moin/AnyGui), очень по-моему годный, но он сдох хрен знает сколько лет назад, не успев хорошенько родиться. Дети просили им рассказать про десктопные гуи. Цикл обработки событий и пр. это конечно хорошо, но и что-то работающее нужно. Кроме того, [в свете этого](https://www.linux.org.ru/news/opensource/15496459) хочется над конкретными реализациями воспарить. Потому AnyGUI и вспомнился. Вроде читал мельком, что сейчас что-то новое есть аналогичное AnyGUI, но найти не могу. Причём уже и к вебу и к мобилкам привязывается, не только к десктопным гуям. Что безусловно делает его в глазах детей, считающих, что комп нужен только для запуска браузера, актуальным.
#UYKBCZ (25) / @dluciv / 1756 дней назад
Нужен лексический анализатор Питона, который легко из этого самого Питона вызывать. Не совсем понятно, почему у самого интерпретатора таких API нет. Есть всякие монстры на ANTLR, которые сразу парсеры. Но на фига?.. Покамест использую Pygments, но это — так, замена. Где взять доступный нормальный?
#UPCH8D (11) / @dluciv / 2149 дней назад
https://mail.python.org/pipermail/python-committers/2018-July/005664.html Чо, Гвидо похоже собрался уехать из Москвы в Александровскую слободу и там молиться остаток жизни? А нас наконец ждут в Питоне нормальные лямбды, expression orientedness и монады?
#JIHB0R (0) / @dluciv / 2323 дня назад
Рассуждения касательно того, почему, кококо, в Питоне нету нормальных лямбд, в которых можно писать код, бывают очень многословны. По-моему нижеследующий рафинированный пример показывает, с одной стороны, что да, наверное таки они не нужны, а с другой — что заодно в Питоне, скорее всего, никогда не появится, например, оператор `let` с блочной областью видимости, хотя бы как в ES5+. Если конечно не извращаться, как в https://stackoverflow.com/a/12219552 ``` #!/usr/bin/env python3 import asyncio async def crappy_scope(): def intristic(): print(x) await asyncio.sleep(1) x = "Crappy python scope even spreads out through async callbacks!" intristic() asyncio.get_event_loop().run_until_complete(crappy_scope()) ```
#8FMCHB (8) / @dluciv / 2386 дней назад
Да этот [срач в комментах](https://habrahabr.ru/post/349624/?utm_campaign=349624#comment_10681376) (да и весь пост тоже) — прямо таки продолжение [моего вчерашнгего поста](/p/0UWIKT) каким-то физиком! @kuro перелогиниться забыл?..
#KNM6L8 (1) / @dluciv / 2464 дня назад
Хотя @hate-engine и [изволили досадовать](/p/3JQ3NK#B61), увидев у себя на экране упоминание Питона, а @anonymous и вовсе [высказались в пользу PowerShell](/p/3JQ3NK#9AD), я, тем не менее, предположу, что вот из этого https://pyos.github.io/dg/ вместе с этим https://pypi.python.org/pypi/plumbum командная оболочка могла бы получиться вполне годная. Вот смотрите сами: # Вот эти несколько строчек шеллу конечно не нужны, оно само должно import '/plumbum' pacman = plumbum.local !! 'pacman' grep = plumbum.local !! 'grep' # A теперь собственно командная строка () |> pacman !! ['-Ql', 'ipython'] | grep !! ['/bin/'] |> print Тут конечно напрашивается нечто более функциональное, чем предлагает пакет Plumbum. Ещё бы, он-то сам для Питона делался. Если бы писали сразу с оглядкой на Dg и делали бы оболочку, то получилось бы сразу что-то в духе такого (начало и конец стандартные, считаем, что мы уже забацали такой шелл, и не пишем =)): pacman '-Ql' 'ipython' | grep '/bin/' Пафос в том, что, как и в PowerShell, отдельные команды вполне могли бы гадить друг в друга не только текстом, но и коллекциями объектов. И функций, кстати. Типа без Дотнета, зато с Питоном, ага. Такие дела. P.S. Есть ещё такая дохлая штука https://github.com/adamwiggins/rush P.P.S. А ещё можно было бы на Тикле что-нибудь таки изобразить, преодолевая и превозмогая вот это: https://wiki.tcl.tk/3321
#YEDQWS (2+1) / @dluciv / 2494 дня назад
Питон впервые за несколько лет реально порадовал. Вот реально. На самом деле не сам Питон, сам Питон похоже порадовать не может, но не суть. Берёшь, значит, свой несчастный код, который уже вылизывал во всех местах, а он всё равно тормозит. Уже не потому что алгоритм плохой или реализация плохая, а именно потому что это Питон. Ставишь вот эту вот хрень: http://numba.pydata.org/. Ставишь перед критичными функциями `@numba.jit('и тут аннотация типов')`. И оно начинает работать в 15 раз быстрее. Само. Само, Карл.
#4RUSC7 (22+2) / @dluciv / 2640 дней назад
async/await в Питоне — хорошая иллюстрация готовности сделать всё через какую угодно непонятную жопу, только бы не использовать человеческие анонимные функции и `>>=`. Нет, ну правда. Даже в если Хаскелль с его `IO` и типами не брать, а взять только оператор `<-` из LiveScript, например — всё же ведь понятно и красиво. Да, модель `asyncio` в Питоне примиряет различные циклы обработки сообщений, и даже для PyQt сделали `quamash`, который запускает `asyncio` поверх Qt-шного цикла обработки сообщений. Все очень обрадовались её появлению, потому что сама модель действительно ничего, а главное — её очень долго ждали. Но зачем при этом было вместо более общих и более понятных примитивов тащить внутрь языка эту псевдоимперативную дребедень?..
#45EM35 (7+1) / @dluciv / 2693 дня назад
Питон в принципе довольно много чем (преимущественно библиотеками) хорош, только сам по себе туповат. Лично мне не хватает в нём expression-oriented синтаксиса. С ним функциональщина стала бы полноценной, да и вообще пришло бы немного остроты, которой из коробки в Питоне нету совсем. И плевать на то, что Ван Россум лопочет, что большие конструкции усложняют читаемость и что интрепретатор вообще не заточен под это дело. Нефиг не давать страдать тем, кто желает страдать. Ведь все мы знаем, что настоящие мужики пишут на Фортране, и только сопляк Вирт -- на Паскале... Немного разврата для тех, кто со мной согласен: https://github.com/vindarel/languages-that-compile-to-python
#RW3EPB (0) / @dluciv / 2936 дней назад
Вы полтора года назад забацали программу на Питоне. Все эти полтора года программа росла, и данные, которые она переваривает, тоже росли. И вот сейчас вы задумались о том, что так дальше продолжаться не может, и надо её распараллелить, т.к. больше ничего уже не сделать. Вы подключили multiprocessing, стали пытаться делать так, чтобы всё работало правильно (для начала чтобы хоть как-то работало), и... осознали, что как раз сейчас и есть очень хороший момент для того, чтобы своей любимой программе сказать «большое спасибо» и переписать её на чё-то другом, что, как минимум, распараллеливаться будет без адских мучений. Причём вполне вероятно, что новая программа будет работать с такой скоростью, что распараллеливание не будет актуально ещё года полтора. Но лучше сразу не обманываться, чтобы не страдать потом.
#I62G05 (19+1) / @dluciv / 3512 дней назад
Когда-то сравнительно давно, в #82SN7E, спрашивал я про точные координаты тегов в XML и как их достать из Питона. Я для этого использовал SAX, и @stiletto мне то же самое советовал, но SAX выдавал слишком мало информации о привязке по координатам к исходному тексту. Дык вот. Если хотите до хрена информации, то юзайте Pygments. Забавно, да? Он вообще-то совсем не для того нужен, но в итоге с задачей справляется лучше, чем специально предназначенные для XML парсеры (хотя по моим прикидкам работать он будет заметно медленнее, но меня почти любая `O(n)` устроит, а там она). В частности, Pygments позволяет очень хорошо различать `<тег></тег>` и `<тег/>`, с чем я при использовании SAX трахался до полусмерти.
#MGE3SS (0) / @dluciv / 3550 дней назад
А вопрос таков: есть ли для Питона парсеры XML, которые могли бы сохранять координаты XML-конструкций из исходного XML? SAX или DOM -- мне, по большому счёту, без разницы. Нужны координаты открывающих и закрывающих тегов, причём для каждого тега -- координаты начала и конца. xml.sax.handler.ContentHandler даёт, если от него наследоваться, только подмножество нужных событий. Куды податься?
#82SN7E (14+1) / @dluciv / 3635 дней назад
struct.unpack('<H2s', b'qwew') возвращает (30577, b'ew'), как надо. struct.unpack('2s<H', b'qwew') падает с bad char in struct format ЧЯДНТ?
#J6QC9N (12) / @dluciv / 3668 дней назад
Умная JIT-оптимизация смешанных вычислений http://m.habrahabr.ru/post/236689/ Достойный подход и достойная реализация. Хотя я по-старинке предпочёл бы делать такие вещи вручную. Чтобы оставаться нужным =).
#DXLXQ3 (1+2) / @dluciv / 3719 дней назад

/К сожалению, некоторые старые версии Python (в частности, интерпретатор) были утеряны вследствие повреждения репозитория, поэтому обратимся к чуть более поздним версиям, чтобы увидеть, как были реализованы объекты/
http://habrahabr.ru/company/mailru/blog/234747/
Году кажется в 2002, довольно скоро после того, как я практически познакомился с Питоном впервые, мне почему-то приснилось, что внезапно исходники интерпретатора (CVS по всей видимости, кто же ещё) остались у меня одного. Знаете, эдакий приятный сон о том, как спасаешь что-нибудь ценное, прямо как Аркадий Паровозов.
Мне этот сон показался неумным тогда, и кажется неумным до сих пор. Сейчас это звучит уже совсем невероятно: слишком большое сообщество и нормальный распределённый контроль версий. Да и в 2002 г. тоже уже не было реально, чего уж там.
Однако оговорка в статье заставила меня об этом сне вспомнить...
Старперский пост какой-то получился.
Компенсирую тем, что в 1990 г., когда Питон уже кое-как был, я ходил в начальную школу и компьютер, если не считать микрокалькуляторов, руками к тому моменту трогал раз пять (впервые я лет в 5 пытался мочить Space Invaders на болгарском клоне PDP-11 у папы на работе). Только через год у меня появился Спектрум и только ещё через год я ощутил кайф во время собственных попыток на нём что-то запрограммировать.

#BHM3LF (3+2) / @dluciv / 3738 дней назад

В Убунте штатный Питон по умолчанию до сих пор второй. Убунта такая Убунта.

#GTS85Y (3) / @dluciv / 3928 дней назад

python-mode не кажет брейкпойнты в исходнике. А желаемо. Можно конечно дать pdb команду 'l', и он тогда сам всё покажет, но тогда не нужен Emacs, что противоречит постановке задачи.

#I0KK3D (0) / @dluciv / 3931 день назад

Значит ECMAScript язык кривой, а Питон-нет?
http://habrahabr.ru/post/192098/
Ну ну.

#5VAXVD (6) / @dluciv / 4092 дня назад

Самый тупой способ генерировать случайные числа от нуля до нужной верхней границы (не включая), если у тебя есть [псевдо]случайные (устраивающего тебя качества) биты — взять остаток от деления на верхнюю границу. Проблема в том, что это не даст равномерного распределения. Так, например, если брать по 3 бита (минимально необходимое число), а нужно сгенерировать число в [0, 5), то очевидно результат будет вдвое чаще попадать в [0, 3), чем в [3, 5). Так что этот способ настолько тупой, что даже неправильный =).
Следующий — брать по 3 бита, пока не попадёт в нужный диапазон. Очень честный способ. Обеспечивает равномерность. Но выкидывает достаточно дорогие [псевдо]случайные биты. В принципе вероятность с первого раза попасть, куда надо, может быть около ½. Поэтому способ тоже тупой. Так, кстати, делает Питон (вот почему тут такой тег), можете посмотреть: http://hg.python.org/cpython/file/3.3/Lib/random.py функция _randbelow
Ок, хорошо, а кто скажет, как это делать нормально, чтобы распределение было равномерным, но чтобы при этом не выкидывать случайные биты?

#GJM4F9 (29+2) / @dluciv / 4193 дня назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.