Pull to refresh
0
0
innuendo @innuendo

User

Send message

Ненормальное функциональное программирование на python

Reading time7 min
Views45K

После просмотра курса Programming Languages и прочтения Functional JavaScript захотелось повторить все эти крутые штуки в python. Часть вещей получилось сделать красиво и легко, остальное вышло страшным и непригодным для использования.

Статья включает в себя:
  • немного непонятных слов;
  • каррирование;
  • pattern matching;
  • рекурсия (включая хвостовую).


Статья рассчитана на python 3.3+.
Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments18

Лучшие плагины для Sublime Text

Reading time5 min
Views641K

WebInspector


Мощный инструмент для дебаггинга JavaScript, полноценный инспектор кода для Sublime. Фичи: установка брейкпоинтов прямо в редакторе, показ интерактивной консоли с кликабельными объектами, остановка с показом стек трейса и управление шагами дебаггера. Все это работает на ура! А еще есть Fireplay от Mozilla, который позволяет подключаться к Firefox Developer tools и максимально простой дебаггер JSHint.



Читать дальше →
Total votes 116: ↑114 and ↓2+112
Comments101

TOX: Что произошло в проекте за полгода

Reading time4 min
Views62K


Многие наверно уже слышали о Tox — это мессенджер, который должен заменить Skype, предоставив такой же функционал, как и его проприетарный аналог, подарив такие полезные вещи, как: Шифрования всего и вся, отсутствие слежки, отсутствие рекламы, децентрализация.

Может показаться, что проект умер развивается слишком медленно, но на самом деле, у него под капотом (в ядре) произошли огромные изменения которые стоит осветить.
Читать дальше →
Total votes 70: ↑61 and ↓9+52
Comments72

Безопасность покупателя в рознице: что надо знать лично вам

Reading time6 min
Views252K


Ценник должен быть с печатью или подписью. Он является документом и обязательно должен быть на товаре. Если вы видите что-то с ценником (неважно, где и как оно стоит), вы имеете право купить его по цене на нём.

Пример: вам говорят, что товар по акции кончился. Вы видите один в витрине в герметичном ящике под потолком, но с ценником. Вам не имеют права отказать в его продаже.

Второй пример: когда обновляются цены, в торговом зале может остаться ценник со старой ценой ниже. Цена в базе другая? Ну и что, вот ваш же документ. Если же вдруг ценник без печати-подписи, и на таком товаре нет правильного ценника — регистрируйте нарушение. Ценники обязательно должны быть хотя бы на одном товаре из пачки.
Читать дальше →
Total votes 236: ↑225 and ↓11+214
Comments498

Пишем функциональные/интеграционные тесты для проекта на django

Reading time8 min
Views17K
В этой захватывающей статье я расскажу про инструменты, с помощью которых можно писать функциональные тесты для django-проекта. Есть куча разных других способов это делать, но я опишу один — тот, который, на мой взгляд, самый простой. Между делом создадим красивый отчет по code coverage (субъективно — приятнее тех, что делает coverage.py). И еще, в качестве приправы, будет немного болтовни про тестирование.

Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments19

Приглашаем разработчиков из Красноярска принять участие в хакатоне «Вперёд вместе с Google»

Reading time1 min
Views4.2K
Если вы живете в Красноярске или поблизости и никогда не участвовали в Google Хакатоне, пора это исправить. 7 и 8 июня в рамках программы «Вперед вместе с Google» мы совместно с Hackaphone организуем соревнование для разработчиков в крупнейшем из старинных городов Сибири.



Участие в Хакатоне бесплатное — достаточно оставить заявку на сайте vpered.withgoogle.com.
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments0

Определение модульного теста

Reading time7 min
Views17K
В наших с вами интернетах недавно поднялся нешуточный шум по поводу того, жив ли TDD сейчас, нужен ли он, и в каком виде. Все началось со статьи Дэвида Хансона «TDD is dead. Long living testing», после которой последовали статьи многих авторов и живые обсуждения этой проблемы включая hangout вместе с Дэвидом, Кентом Беком и Мартином Фаулером (кстати, очередной hangout будет завтра, 16 мая).

Но немногие знают, что за несколько дней до этого все тот же Мартин Фаулер постарался дать определение модульного теста (bliki:UnitTest), перевод которого представлен ниже. А после перевода идут кое-какие мои мысли по этому поводу.
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments16

Анти-паттерны Test Driven Development

Reading time4 min
Views19K
Я надеюсь, что как грамотный разрабочик, вы имеете представление о unit-тестировании и сделаете себе в голове пару мысленных отметок о том, чего надо избегать при написании тестов. Знакомьтесь:

Лжец (The Liar)

Unit-тест, который успешно выполняет все кейсы и выглядит работающим правильно, однако при более детальном рассмотрении обнаруживается, что он на самом деле не тестирует то, что должен.

Читать дальше →
Total votes 111: ↑109 and ↓2+107
Comments64

BDD-разработка на django

Reading time6 min
Views17K
Программисты очень по разному относятся к тестированию, и многие не любят писать тесты. Процесс TDD же для новичков не особенно понятен — ведь приходится вместо функционала программы писать вначале тест, который его проверяет, то есть количество работы увеличивается. Однако со временем приходит осознание того, что автоматическое тестирование необходимо. К примеру, возьмем процесс разработки даже несложного проекта на django, пока в проекте пара вьюх и моделек все просто. Когда приложение обрастает функциями, внезапно обнаруживается, что совершать такое тестирование все сложнее — кликов больше, надо вносить какие-то данные и т.д., вот тут-то и на помощь приходит behavior-driven development (BDD).

image

Я хочу рассказать о BDD на примере создания примитивного приложения — рейтинга сайтов. Идея тривиальна — на странице отображается список сайтов, пользователь голосует за сайт, сайт поднимается в рейтинге и соответственно изменяет положение на странице.
Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments41

Индексирование AJAX-сайтов

Reading time9 min
Views26K
При разработке интерфейса одного веб приложения возникла задача сделать странички, формируемые AJAX запросом, индексируемыми поисковиками. У Яндекса и Google есть механизм для индексации таких страниц (https://developers.google.com/webmasters/ajax-crawling/ http://help.yandex.ru/webmaster/robot-workings/ajax-indexing.xml). Суть довольно проста, чтобы сообщить роботу о HTML версии страницы, в тело нужно включить тег . Этот тег можно использовать на всех AJAX страницах. HTML версия должна быть доступна по адресу www.example.com/чтотоеще?_escaped_fragment_=. То есть, если у нас есть страница http://widjer.net/posts/posts-430033, то статическая версия должна иметь адрес http://widjer.net/posts/posts-430033?_escaped_fragment_=.
Чтобы не быть обвиненным в клоакинге, динамическая и статическая версии не должны отличаться, поэтому возникает необходимость создания слепков ajax страниц, о чем и хотелось бы рассказать.
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments5

Работа с ZeroMQ и PostgreSQL в asyncio

Reading time2 min
Views15K
Наверное, все уже слышали о чудесной библиотеке asyncio?

Если нет, то коротко: эта либа стала стандартом на асинхронное сетевое программирование на Python. tornado и twisted или научатся с ней работать или постепенно уйдут в маргиналы.

asyncio прекрасна, но это просто библиотека для работы с TCP, UDP, UNIX сокетами, PIPES и асинхронным запуском subprocess.

Чтобы всем было здорово нужны сторонние библиотеки, умеющие работать с asyncio. Кое-что уже есть, но мало.

Вот я с коллегами и сделал пару: одну для ZeroMQ и другую для PostgreSQL

Если вы прочно сидите на Python 2 и не интересуетесь Python 3 — не ходите под кат во избежание глупых вопросов и прочих недоразумений.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments36

Python-digest #20. Новости, интересные проекты, статьи и интервью [23 марта 2014 — 30 марта 2014]

Reading time3 min
Views9.1K
Очередной выпуск новостей о python и близлежайших технологиях, пусть и с суточным опозднаием — прибыл. Сегодня о REST, тестировании производительности, машинном обучении, внутренностях __del__ и еще много вего интересного

Традиционно благодарю owlman75 за иллюстрацию, тех кто присылает новости для создания дайджестов, а также периодически присылает мне отчеты об ошибках через Орфус

Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments3

«ZeroMQ».Глава 2: Знакомство с сокетами

Reading time17 min
Views30K
Всем привет!
Продолжаю вольный перевод книги «ZeroMQ.Use ZeroMQ and learn how to apply different message patterns». Заранее прошу прощения, что так долго не публиковал продолжение, но как говорится: «Лень вперед нас родилась...». Ну что же, лирику в сторону, продолжим.

Содержание


После того, как мы рассмотрели основные структуры ZeroMQ в предыдущей главе, в этой мы рассмотрим сокеты, а именно:
  • паттерн клиент-сервер(publish-subscribe)
  • паттерн pipeline

Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments4

Логика мышления. Часть 17. Реляционная модель данных

Reading time4 min
Views45K


Этот цикл статей описывает волновую модель мозга, серьезно отличающуюся от традиционных моделей. Настоятельно рекомендую тем, кто только присоединился, начинать чтение с первой части.

В 1970 году Эдгар Кодд опубликовал статью (Codd, 1970), в которой описал основы реляционной модели хранения данных. Практической реализацией этой модели стали все современные реляционные базы данных. Формализация модели привела к созданию реляционного исчисления и реляционной алгебры.

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

Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments6

Примеры использования asyncio: HTTPServer?!

Reading time8 min
Views51K
Не так давно зарелизилась новая версия Python 3.4 в changelog которой вошло много «вкусностей». Одна из таких — модуль asyncio, содержащий инфраструктуру пригодную для написания асинхронных сетевых приложений. Благодаря концепции сопрограмм (coroutines), код асинхронного приложения прост для понимания и поддержки.

В статье на примере простого TCP (Echo) сервера я постараюсь показать с чем едят asyncio, и рискну устранить «фатальный недостаток» этого модуля, а именно отсутствие реализации асинхронного HTTP сервера.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments9

Python-digest #19. Новости, интересные проекты, статьи и интервью [16 марта 2014 — 23 марта 2014]

Reading time2 min
Views10K
Продолжаем собирать новости о python и близлежащих технологиях. Сегодня анонс релиза Python 3.4.0 на русском, а также материалы по отладке, профилированию, дистрибутированию приложений. Статьи по asyncio, контекст менеджерах и django class based views, несколько интересных инструментов и библиотек и анонс митапа в Москве.

Спасибо owlman75 за иллюстрацию, а также всем кто присылает новости на инструмент для создания дайджестов.

Может кто-нибудь помочь с реализацией простенького отсекания спама? У меня совершенно не доходят руки, а автоматические заполнители форм уже начинают мешать. спасибо aduchi за быстрый pull-request. Теперь будет немного комфортнее.

Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments8

Что должен знать каждый участник крупного MMO-проекта

Reading time5 min
Views66K

Рядовые программисты обычно всё это прекрасно знают. А вот менеджерский состав нередко считает, что совершенно не обязательно разбираться в игровой экономике, клиент-серверной архитектуре и психологии игрового комьюнити. Ведь есть же крутая команда спецов, которые обо всём позаботятся.
Итог очевиден: трудно вспомнить хотя бы один крупный MMO-проект, выпущенный за последние два года, который избежал бы стандартного набора граблей. Такое ощущение, что MMO-индустрия не способна учиться на своих ошибках.
Итак, список вопросов, ответы на которые должен знать каждый, от топ-менеджера до работника техподдержки крупного MMO-проекта.
Читать дальше →
Total votes 102: ↑81 and ↓21+60
Comments114

Emacs как IDE для Python

Reading time3 min
Views39K
Как известно, существует множество решений которые позволяют сделать из «консольного» редактора (vim/emacs) более-менее удобную IDE для языка Python. Представляю Вашему вниманию наиболее успешную, на мой взгляд, реализацию среды разработкы в редакторе emacs на основе пакета python-jedi.el. Отмечу, что бандл заменяющий rope(*-jedi) есть так же для vim, инстукцию по его настройке можно найти здесь .
Читать дальше →
Total votes 17: ↑12 and ↓5+7
Comments7

Python-digest #17. Новости, интересные проекты, статьи и интервью [2 марта 2014 — 9 марта 2014]

Reading time4 min
Views9.9K
Сегодня новостей о python и близлежащих технологиях получилось вполне достаточно. Большое спасибо тем кто присылает новые статьи на инструмент для создания дайджестов. Похоже проект начинает двигаться в нужном направлении.

Иллюстрация от owlman75 сегодня эксклюзивная — ее пришлось рисовать из дома вручную. По-моему она от этого только выиграла. В любом случае, огромное спасибо за нее автору.

Хочу, также, поздравить всех девушек и женщин с прошедшим праздником. Пусть праздники проходят в календаре, а в душе остаются навсегда.

Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments4

Только разработчики 90-х помнят это

Reading time5 min
Views70K
Часто ли ты вставлял <blink> в <marquee> тег? Это сейчас Pixar получает все награды, а тогда в 90-х именно этот метод был наивысшим искусством в анимации. Ты был новатором, если совмещал эти теги; личностью, создающей инновацию; человеком, которому все подражали.

Ты был разработчиком в 1990-х.

Но с таким статусом ты понимал, что делал полную хрень, поскольку распространял ужасные стандарты по всему интернету, к которым мы не возвращались с тех самых пор.

Отложим jQuery в сторону, отвлечемся от нереляционных баз данных… У нас есть более важные вещи, о которых и пойдет разговор.
Читать дальше →
Total votes 219: ↑164 and ↓55+109
Comments188

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity