Посты с тэгом bug


os.urandom, CPython, Linux и грабли




Хочу поведать поучительную историю ошибки в реализации функции urandom из модуля os в CPython на UNIX-подобных ОС (Linux, Mac OS X, etc.).

Цитата из документации по тройке:
Return a string of n random bytes suitable for cryptographic use.

This function returns random bytes from an OS-specific randomness source. The returned data should be unpredictable enough for cryptographic applications, though its exact quality depends on the OS implementation. On a Unix-like system this will query /dev/urandom, and on Windows it will use CryptGenRandom().
Документация по двойке добавляет:
New in version 2.4.
Другими словами, к примеру, под Linux, urandom читает и возвра


Очередной конфуз, regexp, или за что я не люблю java

Нужно было мне намедни расширить Tokenizer для одного известного поисковика на джаве. Всяческие стандартные токенайзеры ну никак не хотели делать то, что нужно было, даже с включением разных токен фильтров типа WordDelimiter и ко. Кто в теме, знает какой с этим бывает геморрой, особенно если используем мультиязычные фильтры — токенайзер то один.

Так вот, на java крутить тест-кейсы довольно муторно (длинный код, вечный ескейп, долгий деплой, и т.д. и т.п.), я пытаюсь это делать как можно меньше, поэтому отрабатывал регулярки на тестах в tcl (ну люблю я этот язык).

Так вот накидал такое вот в тикле, даволен как слон все работает как хотел:

% join [regexp -inline -all {[\w][\w\-&]+|[\d\-][\d\-*.,/]+} \
    "US-Währung, C&A, VW-Bus. 1.2.3 -23.456,78 12,345.00 12/01/2012"] " | "
US-Währung | C&A | VW-Bus | 1.2.3 | -23.456,78 | 12,345.00 | 12/01/2012

Немного поясню: нужно вырвать слова из текста


Магический "py"

Хочу поведать историю с участием werkzeug (0.6 и ниже) и py (1.4 и выше). То, что py у меня установлен я не знал.

Началось все с обычной задачи по работе. Открываю консоль, запускаю dev сервер с веб проектом и получаю вот такое:

Traceback (most recent call last):
  File "./manage.py", line 89, in 
    script.run()
  File "/Users/riffm/proj/third-party/werkzeug/script.py", line 168, in run
    return func(**arguments)
  File "/Users/riffm/proj/third-party/werkzeug/script.py", line 298, in action
    static_files=static_files)
  File "/Users/riffm/proj/third-party/werkzeug/serving.py", line 390, in run_simple
    run_with_reloader(inner, extra_files, reloader_interval)
  File "/Users/riffm/proj/third-party/werkzeug/serving.py", line 319, in run_with_reloader
    reloader_loop(extra_files, interval)
  File "/Users/riffm/proj/third-party/werkze