Pull to refresh
41
0
Влад @quantum

User

Send message

Переход на PHP 5.5 и юнит-тесты

Reading time4 min
Views19K
С момента перехода с PHP 4.4 на PHP 5.3 в Badoo прошло уже 4 года, пришла пора обновлять PHP, на этот раз сразу на версию PHP 5.5. Помимо новых фич, новая версия PHP в очередной раз принесла нам существенное увеличение производительности, поэтому у нас было много причин для апгрейда. В этой статье мы расскажем о том, как мы переходили на PHP 5.5, какие «грабли» собрали, и зачем в очередной раз переписывали нашу систему для запуска юнит-тестов на основе PHPUnit.


Рис 1. Общая архитектура

«Грабли» при переходе с PHP 5.3 на PHP 5.5


В прошлый раз мы переходили с четвертой версии PHP на пятую, причём наша версия PHP 5.3 содержала патчи, чтобы работал «старый» синтаксис PHP, например, $a = &new ClassName();, и чтобы наша кодовая база могла работать на PHP4 и PHP5 одновременно. На этот раз у нас таких ограничений не было, поэтому при переходе мы просто нашли и заменили все устаревшие конструкции на более актуальные, и на этом переписывание кода было закончено.

Основные проблемы, которые у нас возникли:
  • часть deprecated-фич языка была убрана;
  • расширение mysql стало deprecated;
  • низкая производительность расширения runkit, которое мы используем при написании юнит-тестов.


После перехода на PHP 5.5 наши юнит-тесты начали проходить значительно дольше (в несколько раз), поэтому мы решили в очередной раз доработать нашу «пускалку», чтобы решить эту проблему.

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

Свет и освещение

Reading time7 min
Views165K
Часто (в том числе и на хабре) всплывает вопрос освещения, особенно «нанотехнологиченого» светодиодного и зачастую говны священных войн «светодиод» против люминисцентных ламп начинают подбурливать. Больше года я уже собирался написать статью о свете, и оно наконец свершилось.
Из этой статьи вы узнаете почему в фотостудиях не снимают с люминесцентными лампами, почему светодиоды до сих пор не захватили мир и стоит ли ими освещать улицы. Поехали!
Читать дальше →

Часть первая, а вторую часть всё равно никто не читает

Reading time5 min
Views33K

О чем собственно речь


Как-то раз одним поздним декабрьским вечером завершился сбор материала для хабра-статьи, посвященной SAT. Материала оказалось слишком много и передо мной встал выбор: разделить статью на две части или собрать весь материал вместе в одной статье. Выбор был сделан в пользу разделения на части (первая и вторая). К моему удивлению, вторая часть получила значительно меньше внимания, чем первая — фактически её прочитали в два раза меньше человек.

Время шло, и я стал замечать, что это происходило не только с моими статьями, но и со многими другими статьями в нескольких частях. Тогда у меня возник вопрос, а верно ли в общем, что вторая часть получает меньше внимания (просмотров, плюсов, и записей избранного)?

(сделано на основе хабра-статьи Как лгать с помощью статистики)

Структура статьи
  1. О чем собственно речь
  2. Данные
  3. Сравниваем части
  4. Серии статей
  5. Заключение
  6. Дальнейшее чтение

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

Часть 4.1 Возвращаем зрение. От очков до эксимерного лазера

Reading time9 min
Views372K

Прошу прощения у всех, кто долго ждал этой статьи. Подготовка материалов требует массы времени и труда. В этой статье я постараюсь рассказать обо всех методиках коррекции зрения, которые существуют на данный момент. Мы пройдем путь от первых очков XIII века до современных лазерных методов коррекции, таких как femto-LASIK и ФРК.

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

Остальные части


Часть 1. Unboxing VisuMax — фемто-лазера для коррекции зрения
Часть 2. Сколько мегабит/с можно пропустить через зрительный нерв и какое разрешение у сетчатки? Немного теории
Часть 3. Знакомьтесь — лазер по имени Amaris. Переезды и первое пробуждение VisuMax
Часть 4.2 Возвращаем зрение. От очков до эксимерного лазера
Читать дальше →

Вспомнить всё: нейропрограммирование для дошкольников

Reading time2 min
Views41K


Для ребёнка, внимание к собственной памяти также важно как и для взрослого человека. Фокус в том, как показать человеку, который ещё не умеет толком считать до 5, что у него есть такая вещь как память и что она делает.

Поделюсь собственным опытом, который некоторые знакомые назвали опасными экспериментами с детской психикой. Что ж, в этом и есть фишка родительства — ты можешь экспериментировать с детской психикой, тем более, это в любом случае происходит.

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

Яндекс открыл регистрацию на свой чемпионат по программированию

Reading time3 min
Views28K
Зарегистрироваться на контест можно будет до 26 мая. Алгоритм 2014 проводится по правилам TCM/Time и состоит из нескольких раундов: разминочного, квалификационного, трёх отборочных и финального. В этом году финальная игра Яндекс.Алгоритма состоится в Берлине в нашем новом офисе. Квалификационные и отборочные туры будут проходить онлайн на платформе Яндекс.Contest в июле.

Впервые Яндекс.Алгоритм прошел в 2011 году и получился очень камерным — он проходил в рамках Летней школы Яндекса по распределённым вычислениям. В прошлом году в нем участвовали уже 3 000 программистов из 84 стран. Среди них были разработчики ВКонтакте, Фейсбука, Google. А победителем стал Геннадий Короткевич, который в тот же год в составе команды НИУ ИТМО победил на чемпионате ACM ICPC.


Офис Яндекса в Берлине

Яндекс проводит свой чемпионат, чтобы поддержать спортивное программирование в России, создать площадку, где бы наши программисты могли учиться, общаться и обмениваться опытом с коллегами из других стран. Над заданиями Алгоритма снова работает международная команда. В прошлом году авторы разобрали для Хабра все задачи, написанные ими для финала.
Читать дальше →

Проба железа для HD FPV *

Reading time10 min
Views46K
* ох, чую, холиворы сейчас начнутся


Первый полёт Виртурилки в качестве транслирующей HD камеры


Вступление


Про FPV уже много на Хабре писали, но, дабы минимизировать количество бурления в комментариях, сразу давайте договоримся:

  • FPV — First Person View, вид от первого лица. Это может быть как управление летающим/ездящим/плавающим/прямоходящим аппаратом с одновременным наблюдением через установленную на нём камеру, так и независимые управление и наблюдение.
  • В случае полётов — они бывают «далеко и высоко» и «низко и близко». Само собой, есть много вариаций, но это основные параметры.
  • Полёты бывают быстрые (самолёты) и медленные (мультикоптеры). Опять же, и самолёт может медленно парить, а коптер вжарить по-полной, вариантов много.


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

Предыстория


Когда я первый раз надел очки FatShark, которые показывали картинку с аналогового видеопередатчика, то поразился насколько всё плохо. Углы обзора, разрешение, цена. Аналоговый видеосигнал — помехи, помехи и ещё раз помехи. Куча ухищрений для минимизации этих самых помех, а также для предотвращения наводок на канал управления. Само собой, многим такое положение дел не нравится и хочется улучшений. Хочется цифровой канал связи, цифровое видео, желательно один общий канал связи для видео и для управления, очки/шлем с HD разрешением…

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

Кстати, рекомендую — обширное обсуждение темы на rcdesign.ru

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

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

Программирование на MegaBloks

Reading time2 min
Views27K
image

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

Расскажу о том, как мы играли в программистов, что использовали и каких результатов достигли.
Читать дальше →

Чему российский e-Commerce может научиться у американского

Reading time9 min
Views21K


Распространено мнение о том, что практически все, что есть хорошего в Рунете, само пришло или было скопировано с Запада. Область электронной коммерции в этом случае не является исключением. Мы в Аудиомании с подобными тезисами не всегда согласны, но стоит признать, что иногда поучиться у зарубежных коллег есть чему.

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

[видео] Как поставить человека на место: 10 реальных вопросов про давление в переговорах

Reading time2 min
Views229K
Видео про 8 способов противостояния формуле нужды оказалось неожиданно популярным, набрав 8,000 просмотров за два дня. Мы решили продолжить тему.

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

Мы отобрали 10 самых любопытных, на наш взгляд, вопросов в этой теме и снова заперли в студии Дмитрия Коткина, руководителя Санкт-Петербургской школы переговорщиков ШиП и нашего хорошего друга, чтобы он рассказал, что конкретно делать:



10 реальных ситуаций, которые удалось осветить — под катом:

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

Психологическая составляющая скорости взаимодействия в мобильных интерфейсах

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

Так как сделать ваше приложение более быстрым? Вот несколько интересных техник, понимая которые вы сможете сделать ваше приложение более быстрым.

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

Как правильно лгать с помощью статистики

Reading time7 min
Views242K

Существуют три вида лжи: ложь, наглая ложь и статистика (источник)

Есть такой замечательный жанр — "вредные советы", в котором детям дают советы, а дети, как известно, всё делают наоборот и получается всё как раз правильно. Может быть и со всем остальным так получится?

Статистика, инфографика, big data, анализ данных и data science — этим сейчас кто только не занят. Все знают как правильно всем этим заниматься, осталось только кому-то написать как НЕ нужно этого делать. В данной статье мы именно этим и займемся.


Hazen Robert "Curve fitting". 1978, Science.

Структура статьи:
  1. Введение
  2. Предвзятая выборка (Sampling bias)
  3. Правильно выбираем среднее (Well-chosen average)
  4. И еще 10 неудачных экспериментов, про которые мы не написали
  5. Играем со шкалой
  6. Выбираем 100%
  7. Скрываем нужные числа
  8. Визуальная метафора
  9. Пример качественной визуализации
  10. Заключение и дальнейшее чтение

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

Лёгкий способ писать iOS приложения на вебе

Reading time9 min
Views84K
Всем привет. Не так давно Габриель подарил нам игру 2048. Это тот самый удивительный случай, когда клон игры становится более популярный, чем оригинал. Не малая часть успеха Габриеля — открытый код и, вуаля, MIT лицензия. Набрав чуть больше 20к очков, захотелось поделиться результатом с друзьями, кроме как сделать скриншот не получилось. Глянул аппстор на наличие клона с геймцентром или чем-то подобным — пусто. И тут подумал, почему бы нет?
Забегая вперёд, на создание приложения и всех «ништяков» к нему ушло 4 дня. На выходе универсальный код, который от части работает и в вебе и легко портируется на иос/андроид. Однако, давайте по порядку.


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

Квадрокоптер на базе AeroQuad Open Source project

Reading time3 min
Views74K
image

Добрый день!
Хотелось бы немного рассказать о проекте AeroQuad Open Source и о своем опыте сборки квадрокоптера.

Проект AeroQuad поддерживает:
1. В перспективе возможность подключения gps, полета по путевым точкам, которые можно загрузить через AeroQuad Configurator.
2. Стабилизация камеры. Для компенсации движений квадрокоптера можно использовать 3 сервопривода.
3. On-Screen-Display. Наложение графики на видеопоток.
4. Помимо подключения гироскопа акселерометра и магнитометра есть возможность подключения других датчиков, таких как ультразвуковой дальномер и барометр.

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

С камерой в облака. Часть 1

Reading time6 min
Views242K


Многие из нас размышляли об установке камеры на летательный аппарат. Вот я и прошел этот путь. Углубившись в тонкости видеополетов от первого лица (FPV), делюсь полученными знаниями с теми, кто тоже хочет испытать новые ощущения.

Пост состоит из 2 частей. В первой — ответы на основные вопросы. Их легко найти в интернете по-отдельности, но сложно вместе: дальность полета (чем ограничивается и какая максимальная), качество картинки, грузоподъемность, стоимость и сроки (от выделения бюджета до первого полета).

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

Ну что же, перейдем сразу к делу.
Читать дальше →

Gremlins.js — monkey testing библиотека для веб приложений

Reading time6 min
Views37K
NPM version

Это первая из двух статей, рассказывающая о тестировании с помощью gremlins.js и grunt-gremlins. Первая статья — перевод официальной документации gremlins.js. Вторая — опыт внедрения gremlins.js в реальный проект при помощи grunt-gremlins.

Gremlins.js это monkey testing библиотека написанная на JavaScript, для Node.js и браузеров. С ее помощью проверяется надежность веб-приложений под полчищем гремлинов.

Kate: What are they, Billy?
Billy Peltzer: They're gremlins, Kate, just like Mr. Futterman said.


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

Управление репутацией рассыльщика, или Кто виноват и что делать, если ваша рассылка попадает в спам?

Reading time7 min
Views58K


Email – это важный канал связи с пользователем, а для многих сервисов (например, для купонаторов) работа через email становится основой бизнес-модели. При этом как активные пользователи мы испытываем огромное раздражение, когда почтовый ящик начинает заваливать рассылками, информационными письмами, приглашениями от странных сервисов, т.е. тем, что в обиходе мы называем попросту «спам». Реалии нашей жизни таковы, что спам составляет 80-90% входящего потока писем на любой почтовый сервер. Поэтому для современного почтового сервиса фильтрация спама – это must have.

Точные алгоритмы фильтрации по понятным причинам обычно скрываются. Однако мы готовы приоткрыть завесу тайны над одним из аспектов работы антиспам-системы Mail.Ru, чтобы помочь коллегам из разных интернет-компаний грамотно и эффективно производить email-рассылки для наших общих пользователей. Фактически это набор рекомендаций, как не отправиться в спам и увеличить процент доставки писем до конечного получателя. Надеюсь, многим они будут полезны.
Читать дальше →

Разбираем внешние аккумуляторы Gmini

Reading time5 min
Views77K
Месяц назад мне написали из компании Gmini с предложением попробовать новые модели внешних аккумуляторов. Я сначала отказался, потому что не было понятно – о чем, собственно, писать? Если не покупать китайские безымянные шедевры на eBay, столкнуться с чем-то заведомо некачественным трудно. По крайней мере мне за три года эксплуатации разных моделей внешних батарей сделать это не удалось. А в остальном надо просто исходить из собственных потребностей по емкости батареи, силе тока при зарядке и дополнительным возможностям. Последних может быть довольно много – от батарейки и ридера для флэш-карт до встроенного мобильного роутера.



Но в Gmini заявили, что их внешние аккумуляторы отличаются от аналогов не только дизайном, но и особо надежными промышленными батареями Samsung внутри. Услышав слово «внутри», я тут же подумал, что, наверное, здорово будет не только попробовать продукцию марки в работе, но и разобрать на предмет выявления подлинной емкости аккумуляторов и надежности конструкции. Сказано – сделано. И три модели Gmini были подвергнуты разбору до основания.
Читать дальше →

Группировка с условием

Reading time3 min
Views61K
Периодически возникает задача, которая требует сгруппировать набор данных с условием, что для атрибутов, не участвующих в группировке, нужно взять кортеж с максимальным значением по одному из полей.

Давайте рассмотрим простой пример.
Есть таблица:
CREATE TABLE IF NOT EXISTS shop (
  id INT NOT NULL AUTO_INCREMENT,
  article INT(4) ZEROFILL NOT NULL,
  dealer VARCHAR(45) NOT NULL,
  price DECIMAL(8,2) NOT NULL,
  PRIMARY KEY (id))
ENGINE = InnoDB;

Необходимо для всех article найти dealer с максимальной ценой.

Для этой задачи существует несколько очевидных и простых решений, но я знаю одно из них, которое значительно превосходит все остальные.
Сталкивались с этой задачей? Хотите увидеть новый способ ее решения? Прошу под кат.
Читать дальше →

Machine Learning. Курс от Яндекса для тех, кто хочет провести новогодние каникулы с пользой

Reading time8 min
Views266K
Новогодние каникулы – хорошее время не только для отдыха, но и для самообразования. Можно отвлечься от повседневных задач и посвятить несколько дней тому, чтобы научиться чему-нибудь новому, что будет помогать вам весь год (а может и не один). Поэтому мы решили в эти выходные опубликовать серию постов с лекциями курсов первого семестра Школы анализа данных.

Сегодня — о самом важном. Современный анализ данных без него представить невозможно. В рамках курса рассматриваются основные задачи обучения по прецедентам: классификация, кластеризация, регрессия, понижение размерности. Изучаются методы их решения, как классические, так и новые, созданные за последние 10–15 лет. Упор делается на глубокое понимание математических основ, взаимосвязей, достоинств и ограничений рассматриваемых методов. Отдельные теоремы приводятся с доказательствами.



Читает курс лекций Константин Вячеславович Воронцов, старший научный сотрудник Вычислительного центра РАН. Заместитель директора по науке ЗАО «Форексис». Заместитель заведующего кафедрой «Интеллектуальные системы» ФУПМ МФТИ. Доцент кафедры «Математические методы прогнозирования» ВМиК МГУ. Эксперт компании «Яндекс». Доктор физико-математических наук.
Содержание и видео всех лекций курса

Information

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