Как стать автором
Обновить
2
0
the_buddha @the_buddha

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

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

Основы движков JavaScript: общие формы и Inline кэширование. Часть 1

Время на прочтение9 мин
Количество просмотров20K
Привет, друзья. В конце апреля мы запускаем новый курс «Безопасность информационных систем». И уже сейчас хотим поделиться с вами переводом статьи, которая непременно будет очень полезной для курса. С оригиналом статьи можно ознакомиться тут.

В статье описаны ключевые основы, они являются общими для всех движков JavaScript, а не только для V8, над которым работают авторы движка (Бенедикт и Матиас). Как JavaScript разработчик могу сказать, что более глубокое понимание того, как работает движок JavaScript поможет разобраться в том, как писать эффективный код.


Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии2

Распределённый чат на Node.JS и Redis

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

Результат пошуку зображень за запитом "голубиная почта"


Небольшой вопрос/ответ:


Для кого это? Людям, которые мало или вообще не сталкивались с распределенными системами, и которым интересно увидеть как они могут строится, какие существуют паттерны и решения.


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


Постановка задачи


Как сделать чат? Это должно быть тривиальной задачей, наверное каждый второй бекендер пилил свой собственный, так же как игровые разработчики делают свои тетрисы/змейки и т. п. Я взялся за такой, но чтоб было интереснее он должен быть готов к захвату мира, чтоб мог выдерживать сотниллиарды активных пользователей и вообще был неимоверно крут. Из этого исходит ясная потребность в распределенной архитектуре, потому что вместить все воображаемое количество клиентов на одной машине — пока нереально с нынешними мощностями. Заместо того чтоб просто сидеть и ждать на появление квантовых компьютеров я решительно взялся за изучение темы распределенных систем.


Стоит отметить что быстрый отклик очень важен, пресловутый realtime, ведь это же чат! а не доставка почты голубями.


%рандомная шутка про почту россии%


Использовать будем Node.JS, он идеален для прототипирования. Для сокетов возьмем Socket.IO. Писать на TypeScript.


И так, что вообще мы хотим:


  1. Чтоб пользователи могли слать друг-другу сообщения
  2. Знать кто онлайн/оффлайн

Как мы это хотим:

Всего голосов 35: ↑32 и ↓3+29
Комментарии11

SMAA: улучшенное субпиксельное морфологическое сглаживание

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

Данная статья основана на журнале Хорхе Хименеса, Хосе Эчеварриа, Тиаго Соуса и Диего Гутьерреса.

Их демо реализации SMAA можно посмотреть здесь (файл .exe). На моём GTX 960 2GB оно работает вполне нормально.

Старые способы сглаживания (антиалиасинга)


Долгие годы стандартами для реализации сглаживания были методы MSAA (Multisampling Antialiasing) и SSAA (Supersampling Antialiasing). На самом деле, они и по-прежнему обеспечивают наивысшее качество среди всех современных методов сглаживания. Как мы знаем, алиасинг возникает из-за нехватки сэмплов, как на пространственном (ломаные линии), так и на временном уровне (мерцание), обычно рядом с гранями и областями изображения с высоким/низким контрастом. Для борьбы с ним у нас имеются два способа, которые когда-то были единственными решениями: Supersampling и Multisampling. При суперсэмплинге мы увеличиваем изображение, а затем снижаем его дискретизацию до нужного разрешения. Этот принцип отлично работает, потому что распространяется на все аспекты проблемы. При мультисемплинге используется похожее решение. В этом методе каждый сэмпл дублируется на основание определённого коэффициента. При современных больших разрешениях для этого требуются достаточно мощные графические карты. Поэтому нам нужны новые методы сглаживания, как на пространственном, так и на временном уровнях. Все эти методы используют в своей работе один алгоритм — распознавание краёв. Но они выполняют и другие операции.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии11

Разработчик SearchFace о возможностях алгоритма

Время на прочтение2 мин
Количество просмотров106K
Всем привет, я один из разработчиков сервиса SearchFace и готов поговорить о нём в комментариях.



Из-за шумихи с иском ВК на второй план отошло то важное, ради чего мы запустили сервис — чтобы протестировать возможности поиска. А раз уж теперь сервис доступен широкой публике, хочется продемонстрировать всем, на что способны наши алгоритмы распознавания.
Читать дальше →
Всего голосов 204: ↑200 и ↓4+196
Комментарии261

Кое-что нашли: доклады с Elasticsearch Moscow meetup в OZON

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

Для тех, кто досмотрел все сезоны новых и любимых сериалов, у нас есть кое-что поинтереснее — видео с Elasticsearch meetup в OZON.
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Видеореклама: must have успешного бизнеса

Время на прочтение13 мин
Количество просмотров40K
Нельзя забывать: бизнес успешен только тогда, когда его продукт вызывает в покупателях эмоциональный отклик. Но как рассказать о своих услугах максимальному количеству людей за ограниченный промежуток времени? Есть ли способ заставить покупателя «выслушать» вас до конца?

Почему видеоролики нравятся людям и как они помогают бизнесу


Рисованный видеоролик Spotify позволил новому музыкальному сервису обойти iTunes за 5 месяцев после запуска и принести Universal Music рекордную прибыль — более 30 млрд долларов.

Количество пользователей файлового хостинга DropBox за 1 месяц распространения ознакомительного видеоролика увеличилось на 10 %. За первые 5 лет после запуска число пользователей сервиса выросло с 0 до 300 млн, а его стоимость возросла до 400 млрд долларов благодаря короткому эксплейнеру.

СИБУР, крупнейшая нефтехимическая компания России, активно использует анимационную видеорекламу для привлечения новых клиентов. Сложные производственные процессы становятся понятны после просмотра рекламного ролика.
Читать дальше →
Всего голосов 33: ↑22 и ↓11+11
Комментарии0

Как масштабируется обучение искусственного интеллекта

Время на прочтение5 мин
Количество просмотров8.6K
Мы в OpenAI обнаружили, что масштаб градиентного шума [gradient noise scale], простой статистический метод, предсказывает параллелизуемость обучения нейтральной сети на широком спектре задач. Поскольку у более сложных задач градиент обычно становится более шумным, то увеличение размера пакетов, доступных для одновременной обработки, в будущем окажется полезным, и устранит одно из потенциальных ограничений ИИ-систем. В общем случае эти результаты показывают, что обучение нейросетей надо рассматривать не как загадочное искусство, и что ей можно придать точность и систематизировать.

За последние несколько лет исследователи ИИ достигали всё больше успеха в ускорении обучения нейросети при помощи распараллеливания данных, разбивающего большие пакеты данных на несколько компьютеров. Исследователи успешно использовали пакеты размером в десятки тысяч единиц для классификации изображений и моделирования языка, и даже в миллионы агентов обучения с подкреплением, игравших в Dota 2. Такие большие пакеты позволяют увеличивать объёмы вычислительных мощностей, которые эффективно участвуют в обучении одной модели, и являются одной из сил, движущих рост в области обучения ИИ. Однако со слишком большими пакетами данных происходит быстрое уменьшение алгоритмической отдачи, и непонятно, почему эти ограничения оказываются крупнее для одних задач и мельче для других.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии0

Способы применения и искажения меткости в играх. Наглядные графики для сравнения

Время на прочтение6 мин
Количество просмотров15K
Вычислять факт попадания в играх на основе полученной меткости можно по разному:

  • сравнивая с одним псевдослучайным числом (которое тоже можно получать по разному [1]);
  • сравнивая с наибольшим или наименьшим из двух псевдослучайных чисел;
  • сравнивая среднее из двух и более случайных чисел (среднее тоже можно считать по разному).


Бонусы к меткости тоже можно реализовать по разному, вызывая тем самым у игроков раздражение по разными причинам.

Точно также по разному можно рассчитывать наносимый урон, особенно на основе дайсов (кубиков).

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

В статье будут представлены наглядные графики изменения реальных вероятностей в разных подходах, что позволит быстрее в них сориентироваться и принять лучшее решение.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии33

Почему валидации email регуляркой недостаточно. Проверка MX-записей с примерами на PHP и Ruby

Время на прочтение3 мин
Количество просмотров9.5K
Уж сколько раз твердили Миру… Существует давний и, вероятно, нескончаемый спор о том, какой именно регуляркой правильно и нужно проверять поле email пользователя.

Да, проверять регуляркой действительно нужно. Но ведь наши продукты работают в Сети. Так почему бы не использовать её настоящую мощь?
Читать дальше →
Всего голосов 16: ↑11 и ↓5+6
Комментарии27

Detox и Appium: автоматизированный тест интерфейса в React Native

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


Незнакомая мобильная среда


Я, возможно, также как и вы, пришел к React Native как разработчик JavaScript нежели как разработчик нативных мобильных приложений. Абсолютно новый мир со своими нюансами и хитростями.

Одной из самых важных тем для изучения станет тестирование. Когда все более или менее понятно с модульными тестами (unit), что делать с тестами интерфейса и сквозными тестами (end-to-end)? iOS. Android. На рынке смесь разных типов устройств.

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

Я вкратце рассмотрю два фрэймворка, на которые стоит обратить внимания, чтобы облегчить себе жизнь как разработчику.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии5

Grasp2Vec: обучение представлению объектов через захват с самостоятельным обучением

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


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

Мы в Google, вдохновившись концепцией постоянства объектов, предлагаем систему Grasp2Vec – простой, но эффективный алгоритм построения представления объектов. Grasp2Vec основан на интуитивном понимании того, что попытка поднять любой объект выдаст нам некоторую информацию – если робот захватит объект и поднимет его, то объекту нужно находиться в этом месте до захвата. Кроме того, робот знает, что если захваченный объект находится в его захвате, то, значит, объекта уже нет на том месте, где он был. Используя такую форму самостоятельного обучения, робот может научиться распознавать объект благодаря визуальному изменению сцены после его захвата.
Всего голосов 21: ↑18 и ↓3+15
Комментарии1

Заметки фитохимика. Зеленый банан, или Не забудь покормить микробиоту

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

Как то уж так повелось со времен голодной студенческой юности, что я чаще на остатки денег покупал себе бананы, а не чипсы или гречку. Причин этому наверное может быть много, от "в Беларуси бананы дешевле картошки", до "банан как и шоколад способствует мозговой активности". Но факт остается фактом. Если хурма фрукт сезонный, то банан — это такая штука которая сопровождает нас по жизни постоянно. Как не отдать долг и не черкнуть заметку. Кроме того, про проведенному мной среди знакомых мини-опросу, одним из основных фруктов, которые с вероятностью 99% будут практически на каждом Новогоднем столе, также является банан. А ведь правильный банан еще нужно найти...


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



Ну а за ответом — традиционно, под кат.

Читать дальше →
Всего голосов 118: ↑117 и ↓1+116
Комментарии102

Руководство для модераторов Facebook: более 1400 страниц противоречивых слайдов

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

В руководстве объясняется какие смайлики могут рассматриваться как угрозы или, в контексте специфических групп, для разжигания ненависти

Находясь под огнём критики, Facebook вынужден принимать меры по модерации контента. Но эта задача не такая простая, как кажется. В СМИ попал внутренний мануал для модераторов Facebook: это более 1400 (!) страниц инструкций, в которых иногда очень сложно разобраться, пишет NY Times.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии38

Семь бесплатных автоматизированных платформ-задачников для прокачки навыков программирования

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

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


CheckiO


Проект из Украины «Чекио» сфокусирован на Python и JavaScript. Это сборник игровых задач по программированию для тех, кто уже не новичок. Большой упор на геймификацию, симпатичную графику и общение в сообществе. В самом решении задач игрового процесса нет, но есть общий сценарий для прохождения платформы. Полезная фича — смотреть другие решения и подсказывать студентам как их можно улучшить.


CheckiO


leetcode


Сборник задач по программированию на разных языках. Цель сервиса — готовить программистов к заданиям, которые встречаются на интервью. Платформа сразу даёт фидбэк на правильность и эффективность решения, показывает варианты решений и позволяет обсудить их с другими участниками. В платной версии можно пройти автоматизированное интервью в Google, Facebook или Amazon: робот подберёт вопросы, засечёт время и даже поможет оценить.


leetcode

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

Редактирование видео в MPC с помощью шейдеров

Время на прочтение2 мин
Количество просмотров15K
Есть задача: Изменить видео “на лету” при воспроизведении — поменять местами правую и левую часть. Не отразить, а именно поменять, т.е. разрезать картинку на две части и поменять их местами. Можно, конечно, сделать с помощью фреймсервера типа AviSynth'a, но это уже не совсем “на лету” — надо писать скрипт для каждого видео файла. Хочется сделать это быстро и без напрягов.

На фига? Чтобы сделать курс лекций по машинному обучению от Яндекса более удобным для просмотра. Лектор указывает на пункты презентации вживую, и приходится постоянно перескакивать через весь экран взглядом, чтобы понять, о чём речь:

image
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии5

Паттерны и антипаттерны обоснования задач

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

Содержание



Когда вы заводите задачу, ее нужно обосновать. Вы должны убедить разработчика, что:

  • это действительно баг;
  • его необходимо исправить;
  • его нужно исправить именно так, как мы сказали.

А то иногда читаешь баги (особенно баги новичков) и задаешься вопросом:

— Почему это баг??

Например, там написано: «Загружаем отчет, получаем 57,6. А должно быть — 57.9».



Если записать обоснование, это решит проблемы:

  • Коллеги отвлекают с вопросами «А почему это баг?», вырывая из контекста.
  • Спустя месяц ты сам забыл, а, собственно, почему это был баг…

См также:
Зачем нужно обоснование в баге — более подробно о том, зачем вообще обоснование.


Через меня прошли сотни начинающих тестировщиков (студентов). Вот как раз на их задачах я и начала задаваться вопросом «А почему это баг?»… Спрашиваешь ребят, а в ответ получаешь «Да это же очевидно!». Ну как-то не очень =))

Через кучу задач и вопросов «А почему?» стали вырисовываться паттерны ответов. Я выделила хорошие и плохие паттерны. О них и хочу рассказать.

Эта статья для:

  • начинающих тестировщиков — узнайте, как грамотно объяснять свою точку зрения;
  • тест-менеджеров — чтобы дать ссылку своим падаванам и потом ссылаться на антипаттерны без дополнительных объяснений.

1. Антипаттерны: плохое обоснование




Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии32

Преобразование Фурье. The Fast and the Furious

Время на прочтение6 мин
Количество просмотров24K
Зачастую при разработке алгоритмов мы упираемся в предел вычислительной сложности, который, казалось бы, преодолеть невозможно. Преобразование Фурье имеет сложность $O(n^2)$, а быстрый вариант, предложенный около 1805 года Гаусом1 (и переизобретенный в 1965 году Джеймсом Кули и Джоном Тьюки) $O(nlog(n))$. В данной статье хочу вам показать, что можно получить результаты преобразования за линейное время $O(n)$ или даже достичь константной сложности $O(1)$ при определенных условиях, которые встречаются в реальных задачах.

Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии16

Курс MIT «Безопасность компьютерных систем». Лекция 22: «Информационная безопасность MIT», часть 3

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

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Лекция 15: «Медицинское программное обеспечение» Часть 1 / Часть 2 / Часть 3
Лекция 16: «Атаки через побочный канал» Часть 1 / Часть 2 / Часть 3
Лекция 17: «Аутентификация пользователя» Часть 1 / Часть 2 / Часть 3
Лекция 18: «Частный просмотр интернета» Часть 1 / Часть 2 / Часть 3
Лекция 19: «Анонимные сети» Часть 1 / Часть 2 / Часть 3
Лекция 20: «Безопасность мобильных телефонов» Часть 1 / Часть 2 / Часть 3
Лекция 21: «Отслеживание данных» Часть 1 / Часть 2 / Часть 3
Всего голосов 19: ↑17 и ↓2+15
Комментарии0

Реализация простейшей стратегии инвестирования на базе API MOEX (Московской биржи)

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

Введение


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


Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии32

Компьютерное зрение и машинное обучение в PHP используя библиотеку opencv

Время на прочтение9 мин
Количество просмотров34K
Всем привет. Это моя юбилейная статья на Хабре. За почти 7 лет я написал 10 статей (включая эту), 8 из них — технические. Общее количество просмотров всех статей — около полумиллиона.
Основной вклад я внёс в два хаба: PHP и Серверное администрирование. Мне нравится работать на стыке этих двух областей, но сфера моих интересов гораздо шире.

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

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


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

Информация

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