Pull to refresh
2
0
Кирилл Пополов @ezhikov

User

Send message

Кроссворд из RegEx

Reading time1 min
Views22K
Crossword Наткнулся в интернете на очередную игру для программистов.
На этот раз объектом издевательств стали регулярные выражения — авторы сделали Regex Crossword, где вместо вопросов — набор регулярных выражений.
Описание и правила под катом

Комиксы по сетевому творчеству Юрия Нестеренко (aka YuN) — почему глючат программы

Reading time1 min
Views35K
Наткнулись недавно на винрарную подборку шуток про баги, авторства небезызвестного Юрия Нестеренко (который YuN). Подумали — а почему бы не нарисовать комиксы по ним? Пока осилили где-то половину, но выкладываем, что есть.


Читать дальше →

На выходных Google сменил свой логотип, а Вы даже не заметили

Reading time2 min
Views63K
image

Если на прошлых выходных Вы некоторое время просидели в Интернете — Вам, скорее всего, довелось встречаться с вездесущим логотипом Google во время Ваших странствий. Но, тем не менее, Вы вряд ли заметили, что Google немного скорректировал буквы на своем логотипе, и хотя изменения незначительны в «количественном» плане — они существенно изменяют качество.
Читать дальше →

Терминологию master/slave в фреймворке django заменили на leader/follower из соображений политкорректности

Reading time1 min
Views63K
Сегодня в мастер ветку Django приняли совершенно дикий с точки зрения логики pull request.

Во всем проекте, включая код, общепринятые термины master/slave были изменены на leader/follower.

Вот как обосновал это автор патча fcurella:
Документация и некоторые тесты содержат ссылки на master/slave конфигурацию БД.
Несмотря на то что эта терминология использовалась достаточно долгое время, эти термины могут нести расистcкую подоплеку для пользователей.
Этот патч заменяет все использования master и slave на leader и follower.

Видимо Мизулина это достаточно интернациональный термин, а не только российский.

Разгоняем JavaScript вместе (Внимание, конкурс!)

Reading time2 min
Views20K
Привет, друзья.

Так получилось, что мы пишем разные высоконагруженные вещи на JS. В отличие от простых сценариев в браузере, оптимизация производительности JS на сервере (речь в основном о Node.js) – тема очень интересная практически. Думаю, присутствующим не надо объяснять, почему быстрый код лучше, чем медленный.

Вообще оптимизация – это далеко не только переписывание на Си или ассемблере «горячих» участков кода. В нашей команде дискуссия о том, как заставить скрипт работать шустрее – явление перманентное. А поскольку существуют объективные критерии оценки (бенчмарк и юнит-тесты), не допускающие патологической ситуации «о вкусах не спорят» – в результате действительно получается быстрый код, снижение нагрузки на сервер, процветание, радость.
Читать дальше →

Как создать 3D-модель вируса человека. Часть первая: сбор и анализ научных данных

Reading time6 min
Views20K


В развязке фильма «Бегущий по лезвию» герой Рутгера Хауэра говорит, что видел многое, что люди не могут себе даже представить — космические битвы, пылающие боевые корабли — но разве так уж трудно вообразить всё это современному человеку, избалованному компьютерной графикой? В то же время, нас окружает множество вещей, которые мы никогда не сможем рассмотреть в деталях, в силу фундаментальных физических ограничений. Более того — мы и сами состоим из таких вещей. Впрочем, хорошая новость в том, что эти объекты можно смоделировать и визуализировать, используя развитый в настоящее время 3D-инструментарий. А если собрать команду, в которой будут не только трехмерные моделлеры, визуализаторы и дизайнеры, но и ученые, можно максимально приблизить результат к реальности.

Под катом первая часть рассказа о нашем опыте создания научно достверных моделей вирусов.
Читать дальше →

Путь жаворонка

Reading time7 min
Views146K
— Вы сова?
— Был когда-то. Потом пришлось приучить себя эффективно функционировать во всякое время суток. Но любить утро для этого необязательно. Я и не полюбил.
Макс Фрай — «Ключ из жёлтого металла»


Данная статья — описание личного опыта. Сразу хочу сказать, кому будет НЕ интересно. Тем, у кого нет постоянной работы или иной производственной деятельности. Тем, кто может провести 4 и более часа в день за компьютерными играми, соц. сетями и прочими тайм-киллерами и ничуть не переживать по этому поводу. Фрилансерам, для которых ночь — лучшее время для работы, потому что минимум отвлекающих факторов. Большинству людей, не имеющих детей. И прочим не заморачивающимся быстротой течения времени.
С кем хотелось бы поделиться опытом: с теми, кто мечтает о лишнем часе в сутках, причём не ради того, чтобы его проспать.
Читать дальше →

«Flappy Bird» до 1КБ

Reading time6 min
Views21K
Неделя 30-ти строчных JS давно прошла, но воодушевлённый постами Разрабатываем Flappy Bird на Phaser (Часть I) и Как Минковский во Flappy Bird играл, я не смог удержаться не попробовать написать ASCII-версию игры «Flappy Bird» на JavaScript и уложиться при этом в 1024 символа.

Посмотреть, что из этого вышло (и поиграть) можно тут, а несжатый исходник увидеть здесь.
За деталями реализации прошу под кат.
Читать дальше →

Генетический алгоритм. Просто о сложном. Рассказ Марка Андреева

Reading time7 min
Views317K

В последнее время все больше «ходят» разговоры про новомодные алгоритмы, такие как нейронные сети и генетический алгоритм. Сегодня я расскажу про генетические алгоритмы, но давайте на этот раз постараемся обойтись без заумных определений и сложных терминах.
Как сказал один из великих ученных: «Если вы не можете объяснить свою теорию своей жене, ваша теория ничего не стоит!» Так давайте попытаемся во всем разобраться по порядку.
Читать дальше →

Опасное развлечение: простой для повторения генератор высокого напряжения

Reading time4 min
Views513K
image

Добрый день, уважаемые хабровчане.
Этот пост будет немного необычным.
В нём я расскажу, как сделать простой и достаточно мощный генератор высокого напряжения (280 000 вольт). За основу я взял схему Генератора Маркса. Особенность моей схемы в том, что я пересчитал её под доступные и недорогие детали. К тому же сама схема проста для повторения (у меня на её сборку ушло 15 минут), не требует настройки и запускается с первого раза. На мой взгляд намного проще чем трансформатор Теслы или умножитель напряжения Кокрофта-Уолтона.

Принцип работы


Сразу после включения начинают заряжаться конденсаторы. В моём случае до 35 киловольт. Как только напряжение достигнет порога пробоя одного из разрядников, конденсаторы через разрядник соединятся последовательно, что приведёт к удвоению напряжения на конденсаторах, подсоединённых к этому разряднику. Из-за этого практически мгновенно срабатывают остальные разрядники, и напряжение на конденсаторах складывается. Я использовал 12 ступеней, то есть напряжение должно умножиться на 12 (12 х 35 = 420). 420 киловольт — это почти полуметровые разряды. Но на практике, с учетом всех потерь, получились разряды длиной 28 см. Потери были вследствие коронных разрядов.

image
Читать дальше →

BDD с помощью Cucumber

Reading time3 min
Views105K
Если вы привыкли сначала писать код, а потом его тестировать, то с BDD такой подход совсем не уместен. Сила BDD в том, что он помогает вести разработку начиная со стадии оформления ТЗ. Для BDD это список свойств (фич), который уместно писать вместе с заказчиком.

Но самое главное, что по этому же списку происходит автоматическое тестирование проекта. Инструмент тестирования (в нашем случае это Cucumber) методично пройдет по вашему перечню и дотошно проверит реализацию каждой фичи.
Читать дальше →

Маленькие программы на Javascript: куда податься

Reading time4 min
Views44K
Да, я про лавинообразный поток статей про программы на javascript в 30 строк, охвативший Хабр. Честно сказать, я и сам ярый любитель (специальной?) дисциплины код-гольфа на js, и провел не один выходной, пытаясь втиснуть функцию в твит. И хотя мне нравится дух тридцатистрочников, мне не по духу этот формат.

Почему? Ограничение в 30 sloc весьма и весьма размыто: a.pop();s+='foo' — скорее две строки, а a.pop(s+='foo') — скорее одна, хотя эти два куска кода делают абсолютно одно и то же. Да и практика показала, что даже 30 слоков не обязательное ограничение, а HTML и CSS вовсе не считаются. Иными словами, слоками померить крошечность невозможно, да и это никому не нужно.

Господа, это не серьёзно.

Но это не значит, что нужно прямо сейчас бросить недописанный к пятнице тридцатистрочник. Но когда наиграетесь, добро пожаловать в высшую лигу!
Читать дальше →

Хабраиндекс для статей по программированию под Android

Reading time2 min
Views95K
Читать дальше →

Магический круг: CSS головоломка

Reading time4 min
Views43K
Доброго времени суток, уважаемые хабравчане. Недавно Hugo Giraudel, он же CSS гоблин, SASS хакер и Margin псих опубликовал в своем блоге очень интересную CSS задачку на смышленость.

image

Сможете заверстать подобное учитывая следующие правила?

  • Круг в центре должен быть прозрачным, чтобы был виден background
  • Расстояние между левыми и правыми блоками, как между верхними и нижними должно быть одинаковое
  • При наличии потомков в блоке, содержимое должно отображаться
  • DOM должен выглядеть следующим образом: ul > li > section > header + footer
  • Нельзя использовать JavaScript и изображения
  • Дополню еще от себя: нельзя использовать CSS Shape и Clip Path

Чтобы не было очень лень — каркас уже есть.

Сделали?

А тремя способами?

Переходы наличности и переходы на личности

Reading time12 min
Views85K
Представьте, что мы живем в мире криптографии, электронной коммерции и свободных экономических отношений. Пользуемся электронными средствами платежей, где в корзине и кошельке операции осуществляет калькулятор, где микроскопические суммы и огромные средства проводятся в многочисленных транзакциях без каких-либо проблем за ничтожное количество времени, с автоматическим учетом налогов, сборов и отчислений, где нам привычны покупки в электронных супермаркетах и доставка до порога по одному прикосновению к экрану телефона или клику мышкой. И вот, в наш прекрасный, удобный и отлаженный мир электронных платежей, построенный на принципах безопасности и криптографии, со всеми присущими ему технологиями и образу мышления, впитанными с молоком матери, приходит причудливый и странный механизм, которым, как говорят средства массовой информации, пользуются только анархисты, конспираторы и преступники.
Любопытное нажатие для путешествия в этот мир

Жизнь как 8-битная игра: Руководство

Reading time5 min
Views263K
Press Start
Жизнь — игра, в которую играют буквально все. Эта статья — ваше руководство.

Основы

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

В мозге обнаружен механизм видеокомпрессии

Reading time2 min
Views66K


Оказывается, мозг осуществляет эффективную компрессию сигнала, который поступает от органов зрения. Учёные из института невральных вычислений при Рурском университете (Германия) доказали, что зрительная кора подавляет избыточную информацию и сохраняет энергию, передавая лишь изменения между картинками. Примерно такие же методы используются в современных видеокодеках.
Читать дальше →

Роскомнадзор заблокировал крупнейший порносайт

Reading time1 min
Views189K
Сегодня в реестр запрещенных сайтов был добавлен крупнейший мировой порно-ресурс redtube.com (96-й по популярности сайт сети).

Этот случай примечателен тем, что по информации от сайта antizapret.info, причиной блокировки стал ролик с изображением несовершеннолетних персонажей в порнографическом мультфильме (хентай). До конца не ясно, как определялся возраст нарисованных актеров и какие последствия это принесет другим художественным материалам, однако не так давно сообщалось о том, что Роскомнадзор собирается блокировать подобный контент.

На данный момент сайт уже заблокирован некоторыми провайдерами.
Читать дальше →

Понимание ООП на джаваскрипте (ES5), часть 2

Reading time12 min
Views45K


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

Для полноты статьи и единого стиля, перевод начинается с вопросов наследования, несмотря на то, что они уже были упомянуты в конце первой части. Далее рассматриваются разнообразные задачи наследования так, как их рассмотрел автор. Надо сказать, что автор широко использует новые конструкции ES5 (объяснив это в конце), которые работают не во всех браузерах и заслоняют от понимания реализацию их на низком уровне языка, на котором они изначально применялись. Для настоящего понимания наследования следует обратиться к более глубокому разбору реализаций или к реализациям методов-обёрток из ES5: Object.create, Object.defineProperty, Function.bind, get и set literals, Object.getOwnPropertyNames, Object.defineProperty, Object.getOwnPropertyDescriptor, Object.getPrototypeOf. Часть их разбирается в статье (Object.create, get и set, Object.defineProperty, bind), но не всегда в порядке появления. Таким образом, статья стремится преподнести не реализацию наследования вообще, а ту реализацию, которую успели формализовать в рабочем черновике стандарта EcmaScript 5. Это лучше, чем ничего, но несколько меньше, чем полное понимание реализаций наследования.

Зато, данная часть статьи в нескольких (4) крупных примерах кода демонстрирует чистейшее прототипное наследование, которому не требуется привлекать понятие конструктора (хотя он там, в .create(), незримо присутствует), о котором много говорят и которое исключительно редко в чистом виде встречается.
Краткое содержание первой части
1. Объекты
  1.1 Что есть объекты? (список свойств)
  1.2 Создание свойств (Object.defineProperty)
  1.3 Описатели свойств (Object.defineProperty)
  1.4 Разбор синтаксиса (bracket notation: object['property'])
  1.5 Доступ к свойствам (через скобочную нотацию)
  1.6 Удаление свойств (оператор delete)
  1.7 Геттеры и сеттеры (методы доступа и записи)
  1.8 Списки свойств (getOwnPropertyNames, keys)
  1.9 Литералы (базовые операторы) объекта
2. Методы
  2.1 Динамический this
  2.2 Как реализован this
    2.2.1 Если вызывается как метод объекта
    2.2.2 При обычном вызове функции (this === global)
    2.2.3 При явном указании контекста (.apply, .call)
  2.3 Привязывание методов к контексту (.bind)
Cодержание части 2
3. Прототипное наследование
  3.1 Прототипы
  3.2 Как работает [[Prototype]]
  3.3 Переопределение свойства
  3.4 Миксины (примеси)
  3.5 Доступ к экранированным ('перезаписанным') свойствам
План части 3
4. Конструкторы
  4.1 Магия оператора new
  4.2 Наследование с конструкторами
5. Соглашения и совместимость
  5.1 Создание объектов
  5.2 Определение свойств
  5.3 Списки свойств
  5.4 Методы связывания
  5.5 Получение [⁣[Prototype]⁣]
  5.6 Библиотеки обратной совместимости
6. Синтаксические обёртки
7. Что читать дальше
8. Благодарности
Примечания

3. Прототипное наследование


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

Далее в игру вступает наследование. Оно лучше разделяет понятия, когда объекты наделяются своими методами на основе методов других объектов.

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

Понимание ООП в JavaScript [Часть 1]

Reading time16 min
Views339K
— Прототипное наследование — это прекрасно
JavaScript — это объектно-ориентированный (ОО) язык, уходящий корнями в язык Self, несмотря на то, что внешне он выглядит как Java. Это обстоятельство делает язык действительно мощным благодаря некоторым приятным особенностям.

Одна из таких особенностей — это реализация прототипного наследования. Этот простой концепт является гибким и мощным. Он позволяет сделать наследование и поведение сущностями первого класса, также как и функции являются объектами первого класса в функциональных языках (включая JavaScript).

К счастью, в ECMAScript 5 появилось множество вещей, которые позволили поставить язык на правильный путь (некоторые из них раскрыты в этой статье). Также будет рассказано о недостатках дизайна JavaScript и будет произведено небольшое сравнение с классической моделью прототипного ОО (включая его достоинства и недостатки).
Читать дальше →

Information

Rating
Does not participate
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity