Как стать автором
Обновить
0
0
Доронин Станислав @mugisbrows

Пользователь

Отправить сообщение

Нумерация аргументов variadic template, или что скрывает скромный pair

Время на прочтение5 мин
Количество просмотров19K


Освоение стандарта C++11 — процесс, который не может происходить скачкообразно. Изучение новой языковой конструкции требует не только заучивания синтаксиса, но и осмысления её предназначения и типичных способов применения. Важным подспорьем в обучении является похорошевшая STL, которая зачастую может открыть глаза на существование весьма интересных и нужных возможностей. А уж зная, что какая-то вещь возможна и реализована в STL, докопаться до способа реализации нетрудно.

Об одном из любопытных примеров, связанном с обновлённым и улучшенным классом pair, и пойдёт речь в статье.
Новый стандарт добавил такой, казалось бы, простой вещи, как pair, удобства и универсальности. Если раньше к типам, входящим в состав пары, предъявлялись достаточно суровые требования, то сейчас слепить в пару можно практически что угодно. В частности, снято ограничение на конструирование таких типов. Теперь необязательно применять операции копирования или даже перемещения, возможно создание пары непосредственным конструированием членов (такая операция называется emplace, «размещение», и в C++11 поддерживается контейнерами STL), с применением нетривиальных конструкторов.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии14

Сервис Feedly запустил свой back-end для обработки подписок и отказался от плагина

Время на прочтение1 мин
Количество просмотров30K


Время отключения Google Reader все ближе, многие сервисы решили подсуетится и получить себе пользователей мигрирующих с Reader'a.

Один из таких сервисов — Feedly, сегодня они, как и обещали, запустили свой back-end который полностью независим от Google Reader.
Читать дальше →
Всего голосов 59: ↑58 и ↓1+57
Комментарии82

Не повторяйте моих ошибок на собеседовании

Время на прочтение5 мин
Количество просмотров357K
image
Я — разработчик с чуть более чем 10 годами опыта разработки и опытом прохождения нескольких раундов собеседований каждый год-два.
Пост написан под впечатлением двух предыдущих постов на смежную тему — Как я искал сотрудников или Как не надо проходить собеседования и Как я искал работу или Как не надо проводить собеседования. И хотя в этих постах освещены наиболее насущные проблемы соискателя и работодателя, рискну высказать свое мнение, которое основано на лично набитых шишках и помогает взглянуть на проблемы под другим углом.

Также рискну обрисовать пути решения проблем, состоящие в том, чтобы поменять то, что можно поменять (в основном — себя), а не то, чего изменить нельзя (скажем, рынок труда).

Ошибка №1
Соискатель получает столько приглашений на собеседование, что не в состоянии их обработать.
Логичный вывод соискателя: «на рынке острый дефицит кадров, так что могу отсеивать компании как хочу, отфутболив тех, кто заикнется о коде на бумажке, сортировках или гномиках». Возможна и менее скромная вариация того же вывода: «раз меня все хотят, значит, я классный профессионал, могу всем диктовать свои условия». Звучит, вроде, логично, но абсолютно бесполезно.

Я предлагаю взглянуть на корень ошибки (да-да, это ошибка). Если соискатель получает слишком много приглашений — значит, он неправильно составил резюме. Ведь именно резюме послужило причиной лавинообразного интереса.
Читать дальше →
Всего голосов 217: ↑177 и ↓40+137
Комментарии168

Wasted Dreams — еще немного истории одной забытой игры

Время на прочтение12 мин
Количество просмотров28K
Несколько недель назад, на Хабре освещалась одна очень хорошая, но незаслуженно забытая игра — Wasted Dreams. Тем, кто не знаком с ней, настойчиво рекомендую прочитать сначала ее обзор и описание начала этих исторических раскопок, а затем попробовать настроить эмулятор и самому в нее поиграть. Если вы неравнодушны к играм начала-середины 1990-х, цените красивую пиксельную графику и стиль таких игр, как Another World и Flashback — то есть вероятность, что и Wasted Dreams вам понравится.

В наших исторических изысканиях мы остановились на том, что выяснили, что WD разрабатывали всего два человека — программист Томас Цвиянович (Thomas Cvijanovic) и художник Реймонд Циндрич (Raymond Cindric). Weilard удалось найти Реймонда и сделать с ним короткое интервью, а я постарался восполнить пробел — найти второго героя этой истории и провести интервью с программистом этой замечательной команды.

Разговор получился несколько больше, чем планировался. Мы поговорили о прошлом, о настоящем и будущем. Выяснили (спойлер!), что отныне Wasted Dreams можно распространять свободно и без ограничений. Восстановили часть кусочков, пропущенных в этой истории. Итак, если есть желание — предлагаю…

Окунуться в события 15-летней давности
Всего голосов 89: ↑88 и ↓1+87
Комментарии26

Резюме программистов. Часть 2 (хорошие)

Время на прочтение3 мин
Количество просмотров283K
Я сполна получил п***й за первый пост. Самое время писать продолжение! Итак, чего же мне надо от резюме разработчика?

Все ниже в порядке приоритета.

Код


Я хочу видеть код, которым вы гордитесь. Я хочу знать, как вы называете переменные, как декомпозируете систему, как проверяете входные условия и насколько любите все усложнять. Очень желательно, если будет описание проблемы, иначе понимание кода и решения затруднено.
Читать дальше →
Всего голосов 201: ↑135 и ↓66+69
Комментарии341

Сети для самых маленьких. Часть восьмая. BGP и IP SLA

Время на прочтение43 мин
Количество просмотров633K


До сих пор мы варились в собственном соку – VLAN’ы, статические маршруты, OSPF. Плавно росли над собой из зелёных студентов в крепких инженеров.
Теперь отставим в сторону эти игрушки, пришло время BGP.

Сегодня мы
  • Разбираемся с протоколом BGP: виды, атрибуты, принципы работы, настройка
  • Подключаемся к провайдеру по BGP
  • Организуем резервирование и распределение нагрузки между несколькими линками
  • Рассмотрим вариант резервирования без использования BGP – IP SLA

Читать дальше →
Всего голосов 98: ↑98 и ↓0+98
Комментарии42

Эллиптический спирограф

Время на прочтение6 мин
Количество просмотров27K
В детстве у меня была игрушка под названием спирограф. Это такой пластмассовый лист с круглой дырой внутри, а к нему прилагались зубчатые шестеренки, тоже с дырочками, но маленькими. Ставишь ручку в дырочку, шестеренку в круг и катаешь. В результате получаются красивые кружевные узоры, которые руками ну никак не нарисуешь.

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

Однако взятые крепости уже не манят. Естественно теперь задачу обобщить — например, сделать, чтобы маленький круг ездил внутри не окружности, а фигуры посложнее, допустим, эллипса.
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии18

Задачи с красивыми решениями

Время на прочтение5 мин
Количество просмотров90K
Существует класс задачек, которые в основном передаются из уст в уста, можно сказать входят в математический фольклор. Иногда встречаются задачи с очень красивыми решениями. Ты смотришь на решение, вроде понимаешь каждый шаг в рассуждениях, но чувствуешь себя как будто обманутым. Ты все понимаешь и одновременно ничего не понимаешь. Аналогию, наверное, можно провести, например, с этой оптической иллюзией:

Тут видишь то большой куб с выпиленным куском, то маленький кубик, стоящий в углу.

В этом посте я собрал некоторые мои любимые задачи, решения которых, как мне кажется, вызывают этот неуловимый дуализм чувств: «понимаю — не понимаю».

Читать дальше →
Всего голосов 99: ↑85 и ↓14+71
Комментарии149

Хватит решать глобальные проблемы!

Время на прочтение2 мин
Количество просмотров27K
«Хотели бы вы зарабатывать больше денег?», «Сложно ли нанимать людей?», «Завалены почтой?», «Хотите улучшить свое здоровье и форму?»

Конечно же, большинство людей ответит на эти вопросы «да». Это прописные истины. Глобальные проблемы. И они не решаемы.

В очень многих стартапах путают глобальное видение (big vision) и попытки решить вселенские проблемы. Глобальное видение важно. Необходимо ставить высокие, благородные цели, направленные на то, чтобы изменить мир. Но, если вы утверждаете, что решаете глобальные проблемы, вы, скорее всего, не понимаете проблем реальных.
Читать дальше →
Всего голосов 36: ↑25 и ↓11+14
Комментарии17

Наш вариант теста на знание SQL

Время на прочтение2 мин
Количество просмотров466K
У нас, как и во многих других организациях, проводится тестирование соискателей при поступлении их на работу. Основу тестирования составляет устное собеседование, но в некоторых случаях, даются также практические задания. Несколько дней назад, Руководство попросило меня подготовить набор задач на знание SQL.
Читать дальше →
Всего голосов 47: ↑38 и ↓9+29
Комментарии125

Назад к природе. Почему бывалый веб-разработчик в итоге склонился к нативным приложениям

Время на прочтение1 мин
Количество просмотров29K
«Windows или Linux? iOS или Android? Какую систему предпочесть разработчику приложений?» — Подобные вопросы никогода не будут обсуждаться в постах блога Intel. Это непродуктивно, неэтично, да и вообще — оффтопик. Но есть одна тема, на первый взгляд «из той же серии», но на самом деле вполне достойная обсуждения. Именно поэтому я решила перевести статью о выборе между нативными и веб-приложениями, написанную Michael Mahemoff — бывшим сотрудником Google и основателем облачного сервиса подкастов player.fm. Давайте поговорим об этом. Или, хотя бы, почитаем.
UPD. К сожалению, правообладатель исходного текста запретил использование своих материалов даже в переводе без существенной платы. Поэтому перевод пришлось убрать, и все, что мы можем сделать, это отослать вас к оригиналу.
Всего голосов 50: ↑41 и ↓9+32
Комментарии92

Парадокс доказательства

Время на прочтение12 мин
Количество просмотров248K
31 августа 2012 года японский математик Cинъити Мотидзуки опубликовал в интернете четыре статьи.

Заголовки были непостижимы. Объём был пугающим: 512 страниц в сумме. Посыл был дерзким: он заявил, что доказал abc-гипотезу, знаменитую, соблазнительно лёгкую числовую теорию, которая десятилетиями заводила математиков в тупик.

Затем Мотидзуки просто ушёл. Он не отправил свою работу в Annals of Mathematics. Он не оставил сообщение ни на одном сетевом форуме, которые часто посещают математики со всего мира. Он просто опубликовал статьи и ждал.

Два дня спустя, Джордан Элленберг, профессор математики в Висконсинского университета в Мадисоне, получил почтовое оповещение от Google Scholar, сервиса, который сканирует интернет в поисках статей по указанным темам. Второго сентября Google Scholar отправил ему статьи Мотидзуки: «Это может заинтересовать вас».

«А я такой: „Да, Гугл, мне это как бы интересно!“» – вспоминает Элленберг, – «Я запостил их в Фэйсбуке и в моём блоге, с пометкой: „Между прочим, похоже, что Мотидзуки доказал abc-гипотезу“».

Интернет взорвался. В течение дней даже далёкие от математики СМИ подхватили историю. «Решена сложнейшая в мире математическая теория», – объявила Telegraph. «Возможный прорыв в abc-гипотезе», – немного скромнее писала New York Times.

На математическом форуме MathOverflow математики со всего мира стали оспаривать и обсуждать заявление Мотидзуки. Вопрос, который быстро стал самым популярным на форуме был прост: «Кто-нибудь может объяснить философию его работы и прокомментировать почему она может пролить свет на abc-гипотезу?» – спросил Энди Путман, ассистент профессора в Университете Райса. Или, если перефразировать: «Я ничего не понял. Кто-нибудь понял?»

Проблема, с которой столкнулись многие математики, сбежавшиеся к сайту Мотидзуки, была в том, что доказательство было невозможно прочесть. Первая статья под заголовком «Интер-универсальная теория Тейхмюллера 1: Построение театров Ходжа», начинается с утверждения, что цель работы в «разработке арифметической версии теории Тейхмюллера для цифровых полей ограниченных эллиптической кривой… с помощью применения теории полуграфов анабелиоидов, фробениоидов, эталь тета-функций и логарифмических оболочек».

Это похоже на тарабарщину не только для обывателя. Это было тарабарщиной и для математического сообщества.

«Смотря на неё, ты чувствуешь будто читаешь статью из будущего или далёкого космоса», – написал Элленберг в своём блоге.

«Она очень, очень странная», – говорит профессор Колумбийского университета Йохан де Йонг, работающий в близких сферах математики.

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

Как профессор Мун Дучин из университета Тафтса выразила это: «Он воистину создал свой собственный мир».

Должно пройти долгое время прежде чем кто-нибудь будет способен понять работу Мотидзуки, тем более оценить верность доказательства. В последующие месяцы статьи лежали камнем на плечах математического сообщества. Горстка людей подобралась к ним и начала изучать. Другие пытались, но быстро сдались. Некоторые полностью игнорировали их, предпочитая наблюдать издалека. Что же до виновника беспокойства, человека, который заявил, что решил одну из величайших проблем математики – от него не было ни звука.
Читать дальше →
Всего голосов 356: ↑345 и ↓11+334
Комментарии404

Нужны ли в JavaScript классы?

Время на прочтение6 мин
Количество просмотров104K
JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототипным ООП и особенностях его реализации на ECMA Script 5.
Читать дальше →
Всего голосов 164: ↑140 и ↓24+116
Комментарии60

Десять возможностей C++11, которые должен использовать каждый C++ разработчик

Время на прочтение12 мин
Количество просмотров533K
В данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.

Сегодня в программе:
  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Читать дальше →
Всего голосов 133: ↑125 и ↓8+117
Комментарии115

Энтропия и WinRAR

Время на прочтение5 мин
Количество просмотров51K
image
Понятие энтропии используется практически во всех областях науки и техники,
от проектирования котельных до моделей человеческого сознания.
Основные определения как для термодинамики, так и для динамических систем и способы вычисления понять не сложно. Но чем дальше в лес — тем больше дров. Например, недавно выяснил (благодаря Р. Пенроуз, «Путь к реальности», стр 592-593), что для жизни на Земле важна не просто солнечная энергия, а её низкая энтропия.

Если ограничится простыми динамическими системами или одномерными массивами данных (которые могут быть получены как «след» движения системы), то и тогда можно насчитать минимум три определения энтропии как меры хаотичности.
Самое глубокое и полное из них (Колмогорова-Синая) можно наглядно изучить,
используя программы — архиваторы файлов.
Читать дальше →
Всего голосов 68: ↑59 и ↓9+50
Комментарии28

Тайм-менеджмент и органайзеры

Время на прочтение9 мин
Количество просмотров256K
Тайм-менеджмент является весьма сложной задачей для многих современных и активных людей, однако умение управлять своим временем, как правило, является секретом успешности. Быстрота течения времени и развитие технологий делают грамотное распределение времени серьёзной проблемой. Множество различных курсов и семинаров могут научить вас как использовать своё время эффективнее, грамотно составлять план своей деятельности, ставить цели и достигать своих целей в рамках предусмотренного времени.

Совершенно не обязательно проходить какие-либо курсы, чтобы научиться управлять своим временем. Мы предлагаем простой и доступный способ, который поможет структурировать ваш график и освободит вам немного свободного времени.
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии11

Манга «Занимательная статистика», «Тайна катастроф» и другие похожие книги

Время на прочтение5 мин
Количество просмотров52K
Речь идет о необычных учебниках, которые стоят посередине между вузовскими учебниками и чисто научно-популярными брошюрами. Тем не менее между научпопом и такими учебниками есть четкий водораздел — последние нацелены именно на обучение, развлекательные фишки — лишь форма подачи серьезного материала. Общее для всех таких книг, как мне представляется — подача материала в виде комикса и\или в виде диалога двух или больше людей. Обычно два собеседника — ученик и учитель, один постоянно задает вопросы, часто глупые или смешные, второй пытается объяснить в игровой форме.

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

Я сделал что-то вроде ретроспективы: первая книга — свежий японский комикс-манга о матстатистики издания 2010 года, дальше — книга из 80-х о математике, теории катасроф. Последняя — учебник радиоэлектроники для начинающих, знакомый нескольким поколениям читателей по всему миру, начиная с 30-х годов.

В качестве иллюстрации поста приведу обложку другой манги из той же серии, что и книга о статистике:

image

Читать дальше →
Всего голосов 86: ↑75 и ↓11+64
Комментарии52

Wasted Dreams — история забытой игры (статья-пилот из цикла «Истории Игровой Индустрии»)

Время на прочтение16 мин
Количество просмотров72K


В поисках утраченного ковчега – часть I


Представим, что вы тертый в боях игрок. Старый. Опытный. Человек, которого трудно удивить. Человек, который многое повидал. Человек, который видел Истоки. Каждая новая игра сопровождается вашим скрипом, — «А вот раньше…», «Помню, были времена…», «Детки, то, что вы считаете новым, не более чем хорошо забытое старое, я это видел в 19..». Предположим также, что вы новый Индиана Джонс своего времени, боец невидимого археологического фронта, который каждый божий день пытается отыскать свой Грааль. Грядущее вас интересует мало, настоящее вызывает скепсис, цель ваших поисков – прошлое. Полагаю, что нам с вами, сегодня, по пути.

Почему прошлое? Потому что оттуда с завидным постоянством приходит то, что есть в настоящем и то, что грядет в будущем. Половина, если не большинство гениальных идей «озаряющих» разработчиков сегодня — уже давно сделанные кем-то игры. Все что нужно в этом случае – отряхнуть находку, заново раскрасить и сделать казуальный контроллер, добавив пару новшеств.
Не секрет, что во многих старых играх игроку нашего времени разобраться сложно, да и старый игрок частенько буксует. Общепринятые решения по части удобства использования интерфейсов, привычные схемы ставшие нормой сегодняшнего дня тогда не были реализованы даже в зачатках. Каждая новая игра была, по сути, полностью самостоятельным миром, зачастую без оглядки на других разработчиков. Это было великое время экспериментов, недооцененных потенциалов, игр которые многие до сих пор не могут воссоздать и до сих пор не могут переосмыслить.

Я часто гуляю с лопаткой по улицам и подземкам давно забытых городов. Именно с этой целью. Поиск хорошо забытого старого. Новое, безусловно, удивляет, но что может сравниться с покрытой пылью бутылкой хорошего старого скотча? Расскажу вам. Как археолог археологу.

На глубине временных пластов периода 1999 года моя лопата со звоном ударилась о неизвестный объект. По моим выкладкам в этом секторе не должно было находиться крупных и не изученных игр. Обкопав объект по периметру и сдув пыль там, где она мешала разглядеть символы я увидел… чудо. Это покажется невозможным, но в наш короткий игровой век мы до сих продолжаем находить неизвестные широкой публике работы древних зодчих. Можете представить мое удивление, изумление и благоговейный восторг, когда я увидел игру, созданную в стилистике…


Дать лопате шанс
Всего голосов 212: ↑199 и ↓13+186
Комментарии121

19 команд ffmpeg для любых нужд

Время на прочтение3 мин
Количество просмотров565K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →
Всего голосов 222: ↑214 и ↓8+206
Комментарии107

Потоковое видео средствами ffserver & ffmpeg

Время на прочтение2 мин
Количество просмотров146K

Для организации трансляции нам потребуется:


  • Linux
  • FFmpeg (включает в себя ffserver)

Теория


FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec, библиотеку кодирования и декодирования аудио и видео и libavformat, библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и «FF», означающего «fast forward».

© Wikipedia

ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера — получает видеопоток от ffmpeg, который может быть запущен на другой машине, и раздаёт его счастливым пользователям.
Каждый получаемый поток называется Feed’ом (далее будет просто фид). Таких потоков может быть несколько, так же как и отдаваемых (выходных).
FFmpeg у нас будет захватывать видео с веб-камеры или читать из файла.
Читать дальше →
Всего голосов 49: ↑41 и ↓8+33
Комментарии34

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность