Pull to refresh
75
0.1
Александр Щепановский @Suor

User

Send message

Не ещё одна статья о функциональном программировании

Reading time 6 min
Views 19K
Вот уже несколько лет функциональное программирование набирает популярность. Это, конечно, не значит, что люди забрасывают свои старые языки и ООП и массово переходят на Haskell, Lisp или Erlang. Нет. Функциональная парадигма проникает в наш код через лазейки мультипарадигменных языков, а вышеупомянутые языки чаще служат флагами в этом наступлении, чем используются непосредственно.

Я собирался продолжить в том же духе и во второй части статьи представить свою библиотеку, добавляющую пару функциональных трюков в python, но потом понял, что фокус моей библиотеки не на функциональном программировании, а на практичности. На этом я и сосредоточюсь, приведу несколько жизненных примеров полезности funcy.
Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Comments 15

Цифровые ремесленники в эпоху изобилия

Reading time 3 min
Views 32K
За последнее время мне попалась на глаза пара статей о том, что новые технологии уничтожают рабочие места и это касается не только уже привычной автоматизации заводов, но и белых воротничков. «Ничего нового» — скажете вы — «мы такое уже видели во время промышленных революций, они потом найдут себе новую работу». Но что если на этот раз всё иначе и технологии уничтожают вакансии быстрее, чем создают новые?

Вообще, в перспективе, это хорошо, роботы и ПО дешевле людей, а значит, производимые товары и услуги станут дешевле, а всё человечество богаче. Некоторые горячие головы даже предположили, что мы движемся к экономике изобилия, в которой привычное для нас понятие «работа» и вовсе теряет смысл.

Но неужто людям не найдётся полезного занятия?
Читать дальше →
Total votes 97: ↑80 and ↓17 +63
Comments 88

Абстрагирование потока управления

Reading time 4 min
Views 15K
Любой программист, даже если не смотрит на свою работу в таком ключе, постоянно занимается построением абстракций. Чаще всего мы абстрагируем вычисления (пишем функции) или поведение (процедуры и классы), но кроме этих двух случаев в нашей работе возникает множество повторяющихся шаблонов особенно при обработке ошибок, управлении ресурсами, написании стандартных обработчиков и оптимизаций.

Что значит абстрагирование потока управления или «control flow», как выражаются наши заморские друзья? В случае, когда никто не выпендривается, потоком занимаются управляющие конструкции. Иногда этих управляющих конструкций недостаточно и мы дописываем свои, абстрагирующие нужное нам поведение программы. Это просто в языках вроде lisp, ruby или perl, но и в других языках это возможно, например, с помощью функций высшего порядка.
Читать дальше →
Total votes 44: ↑40 and ↓4 +36
Comments 10

Упрощая жизнь c Django

Reading time 2 min
Views 9.9K
За время использования Django я накопил множество небольших инструментов: декораторов, шорткатов, кастомных полей и просто утилит, которые кочевали со мной из проекта в проект в виде сборного пакета handy. В конце концов, я решил поделится своим опытом, потому как такой код — это и есть материализованный опыт (даже лучше — код можно исполнить), и открыть наиболее полезные куски handy для всех желающих.

Пакет направлен на уменьшение необходимого boilerplate при использовании фреймворка джанго. На то, чтобы избавить от необходимости писать одно и то же раз за разом, сделать код короче и выразительней.
Читать дальше →
Total votes 53: ↑48 and ↓5 +43
Comments 78

Пещерные технологии будущего

Reading time 7 min
Views 2.6K
Никогда не обращали внимание, как часто старые интерфейсы, старый код и вообще старые решения выглядят странными и уродливыми? Причём всё это может стать старым за считанные годы. Когда приходится очень быстро бежать только, чтобы оставаться на месте, возникает желание как-нибудь срезать, заглянуть немного в будущее, перепрыгнуть через пару пунктов.

Давайте попробуем. Для этого нам необходимо понять по каким принципам идет развитие: внимательно рассмотреть те пещерные технологии, что мы использовали пару лет назад и то, как они превращались в “технологии будущего”, что мы используем сегодня.
Читать дальше →
Total votes 102: ↑88 and ↓14 +74
Comments 41

Redis: лёгкие яблоки

Reading time 3 min
Views 10K
NoSQL обычно воспринимается как альтернатива реляционным БД, однако, многие из них, особенно, те, что попроще, могут не только заменять, но и отлично дополнять их. На самом деле, чтобы использовать какое-то NoSQL-решение вместо привычной БД, нужен либо новый проект, либо возможность переписать старый практически полностью. Редкие случаи, в повседневной разработке. В то же время можно легко сорвать множество низко висящих плодов.
Читать дальше →
Total votes 58: ↑56 and ↓2 +54
Comments 33

Cacheops

Reading time 3 min
Views 7.9K
Некоторое время назад я писал о системе кеширования. Помнится, я обещал продолжение, но сейчас решил, что строка кода лучше сотни комментариев, теорию оставим на потом. Поэтому сегодня у нас своего рода анонс с парой советов по использованию в одном флаконе. Встречайте, cacheops — система кеширования и автоматической инвалидации кеша для Django ORM.
Читать дальше →
Total votes 47: ↑47 and ↓0 +47
Comments 32

О вреде синтаксического сахара

Reading time 5 min
Views 30K
О чём речь? Конечно, использование синтаксического сахара не приводит к синтаксическому диабету, но он может мешать вам думать. Это может звучать странно, учитывая, что синтаксический сахар призван облегчить нам жизнь: обернуть в интуитивные обёртки операции над абстракциями, сделать программы легко читаемыми, да и просто симпатичными. Однако, всякий инструмент, который направляет нашу мысль одновременно удерживает её на этом направлении.
Ситуация здесь как в анекдоте о дорогах,...
Total votes 135: ↑88 and ↓47 +41
Comments 106

К вопросу об инвалидации кеша

Reading time 7 min
Views 38K
Инвалидация кеша, возможно, одна из самых запутанных вещей в программировании. Тонкость вопроса состоит в компромиссе между полнотой, избыточностью и сложностью этой процедуры. Так о чём же эта статья? Хотелось бы не привязываясь к какой-либо платформе, языку или фреймворку, подумать о том как следует реализовывать систему инвалидации. Ну а чтобы не писать обо всём и ни о чём, сконцентрируемся на кешировании результатов SQL-запросов построенных с помощью ORM, которые в наше время встречаются нередко.
Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Comments 15

Именованные кортежи из выборок

Reading time 5 min
Views 11K
В Django для ускорения запросов, возвращающих большое количество данных, существуют методы QuerySetvalues() и values_list(). Первый вместо моделей возвращает словари, второй кортежи. Работать и с теми, и с другими не так удобно как с экземплярами моделей, дескать, платите ребята за скорость удобством. А я вот не хочу, и благодаря именнованым кортежам из стандартного модуля collections, не буду.
Дело за малым...
Total votes 50: ↑45 and ↓5 +40
Comments 34

Генератор миниатюрок из Nginx-а

Reading time 3 min
Views 27K
Итак, сегодня мы соберём генератор миниатюрок на базе любимого народом веб-сервера — nginx-а. Что примечательно, сделаем мы это без единого гвоздя, т.е. без единой строчки кода, не считая конфигурации.
Что ж приступим...
Total votes 81: ↑76 and ↓5 +71
Comments 42

Django и часовые пояса

Reading time 8 min
Views 20K
Есть несколько обыденных вещей, которые время от времени портят кровь нашему брату: падежи, числительные и часовые пояса, с проклятым переходом на летнее/зимнее время. Невольно позавидуешь китайцам у которых на всю страну всего один часовой пояс, а падежей нет и в помине. Будет совсем неплохо раз и навсегда разобраться с часовыми поясами и преобразованиями между ними хотя бы для Django-приложений.
Читать дальше →
Total votes 49: ↑44 and ↓5 +39
Comments 11

Information

Rating
2,938-th
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity