Архив рубрики: На заметку

Python: динамическая подмена класса

Юзкейс Есть функция-фабрика, возвращающая объект класса A. Функция из сторонней либы, менять ее нельзя (либо вообще ее код закрыт). А нам очень нужно сделать класс B, наследованный от A, и перекрыть magic-метод, скажем __exit__. Проблема в том, что объекты класса A … Читать далее

Рубрика: На заметку, Программирование, Решение проблем | Метки: , | Добавить комментарий

Умножение матриц

A x B = C Это, наверное, самая важная операция над матрицами, детали которой, к сожалению, иногда выветриваются из головы. Вот шпаргалка в виде тезисов: количество столбцов левой матрицы должно совпадать с количеством строк правой результирующая матрица имеет то-же количество … Читать далее

Рубрика: На заметку | Добавить комментарий

Манкипатчим поддержку decimal.Decimal в json

TypeError: Decimal('0.99') is not JSON serializable Вот, что заставляет людей гуглить, как добавить поддержку новых типов в стандартную либу json. Вообще, пост не об этом, вот просто парочка правильных решений: использовать simplejson создать свой энкодер, пронаследовавшись от стандартного, и передавать … Читать далее

Рубрика: На заметку, Решение проблем | Метки: , | 1 комментарий

Python: defaultdict с заданной структурой

collections.defaultdict defaultdict призван избавить ваш код от ужасных многострочных/длинных конструкций из if-else, has_key/in, обладающих, к тому же, дерьмовой производительностью, растущей из повторяющегося несколько раз поиска по словарю. Тем не менее, если значение по-умолчанию должно обладать собственной структурой из контейнеров, то … Читать далее

Рубрика: На заметку | Метки: , | 1 комментарий

Поиск как в админке Django

Снова привет! Осваивался с class-based views и заодно изобретал велосипед делал поиск «как в джанго-админке», то есть такой, чтобы конфигурировался максимально аналогично. Плюс, в частном случае нужно было еще ограничить поиск только «активными» документами. Вот такой маленький сниппет из этого … Читать далее

Рубрика: На заметку | Метки: , | Добавить комментарий

Python: Быстрое удаление из deque по индексу

Объект deque в python — это коллекция, представляющая собой нечто общее между стеком и очередью. deque (double-ended queue — двусторонняя очередь) позволяют потокобезопасно добавлять и «отщипывать» элементы только с начала и конца коллекции, зато за константное время O(1). Начиная с python … Читать далее

Рубрика: Алгоритмы, На заметку | Метки: , , | 1 комментарий

Python: Получение класса/функции по строке имени

В Django есть замечательная, по моему мнению, функциональность, позволяющая указывать view для url dispatcher‘а не импортируя ее явно, а в виде строки вроде ‘mysite.views.archive’, где mysite — это модуль application, views — это его подмодуль с view-объектами (функции или CBV … Читать далее

Рубрика: На заметку | Метки: , | Добавить комментарий

С++: Удаляем из std::vector по вектору индексов

Для того, чтобы удалить элементы из вектора, индексы которых находятся в другом векторе, может пригодиться этот небольшой хэлпер

Рубрика: На заметку | Метки: , , | 1 комментарий

Android: как прочитать файл в массив byte[]

Задача, конечно, тривиальная, но именно подобные задачи плодят тучу четырехколесных велосипедов. Ударим паттерном по велосипедам!

Рубрика: На заметку | Метки: , , , | Добавить комментарий

Python: Пул процессов — параллельные вычисления

Посчитаем сумму простых чисел в диапазоне от 5000000 до 6000000 загрузив все процессорные ядра. Так как GIL в обычном CPython делает паттерн пул потоков совершенно неэффективным, реализуем для наших параллельных вычислений пул из процессов, воспользовавшись стандартным модулем multiprocessing. 

Рубрика: На заметку | Метки: , , , | Добавить комментарий