Обновить
1373.02

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

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

В поисках быстрого локального хранилища

Время на прочтение7 мин
Охват и читатели26K
Текст этой статьи также доступен на английском.

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

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

Тестирование параллельных процессов

Время на прочтение9 мин
Охват и читатели11K
image

Вы встречались с ошибками, которые возникают время от времени в продакшне, но никак не воспроизводятся локально? Бывает, изучаешь такой баг и вдруг понимаешь, что он проявляется только при одновременном параллельном выполнении скриптов. Изучив код, понимаешь как это исправить, чтобы такого больше не повторялось. Но на такое исправление хорошо бы написать тест…

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

Забегая вперед сразу скажу, что в конце статьи будет ссылка на github, куда я выложил готовое решение, позволяющее тестировать параллельные консольные процессы легко и просто.
Читать дальше →

Открываем доступ к видеозаписям HighLoad++ за последние пять лет

Время на прочтение1 мин
Охват и читатели29K
image

Мы выложили в открытый доступ видеозаписи последних пяти лет конференции разработчиков высоконагруженных систем HighLoad++. Смотрите, изучайте, делитесь и подписывайтесь на канал YouTube.

Более терабайта записей и 500 видеороликов! Это всё, под катом только реклама :)

Перейти в канал YouTube!

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

А ваша вебкамера работает в новом Firefox 53?

Время на прочтение2 мин
Охват и читатели6.6K

В недавнем апдейте Firefox 53, возможно пропала поддержка некоторых веб-камер либо произошли какие-то сдвиги в WebRTC API. Сейчас разбираемся. Мы заметили это на тестах. Если в Firefox 52 видео корректно захватывалось со всех вебкамер, участвующих в тестировании, то в FF 53 некоторые камеры выпали, а именно встроенные камеры. Стоит заметить, что баг воспроизводится только со встроенными камерами под Windows 7 и Windows 8. Не воспроизводится с USB-камерами на Windows 10 и совсем не воспроизводится на Mac OS.
Читать дальше →

GoTo Data Science Challenge 2: гранты на летнюю школу

Время на прочтение3 мин
Охват и читатели5.2K

Мы анонсируем конкурс для получения грантов в рамках направления по анализу данных и машинному обучению летних школ GoTo. К участию приглашаем школьников и младшекурсников. В качестве задания предлагается kaggle-соревнование от Quora, в котором необходимо построить модель для определения вопросов-дубликатов.


image


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


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

DeclarativeCOS — Декларативное программирование на Caché

Время на прочтение5 мин
Охват и читатели2.7K
Проект DeclarativeCOS — крик души по теме программирования на COS.

Цель проекта — обратить внимание сообщества к улучшению внутреннего ядра COS.

Идея проекта — поддержка лаконичного синтаксиса при работе с циклами и коллекциями.

image

Итак, что же лаконичного я придумал? Добро пожаловать в примеры!
Читать дальше →

Трансляция RTMP видеопотока из Live Encoder на WebRTC

Время на прочтение7 мин
Охват и читатели35K

HTTP протоколы доставки видеоконтента, такие как HLS и DASH давно потеснили Flash в нише воспроизведения онлайн-видео контента в браузерах.

Тем не менее, изначально флэшовый протокол RTMP, остается одним из самых популярных способов доставки Live видео от источника видео до сервера ретранслятора. RTMP продолжают использовать такие сервисы, как Facebook Live, Youtube Live, и другие, где требуется вещать живое видео и проводить трансляции. Таким образом, несмотря на предсказания и констатации скорой кончины Flash, протокол RTMP все еще на коне и не уступает своих позиций в нише видеотрансляций.
Читать дальше →

ZX Spectrum: 35-летний юбилей

Время на прочтение5 мин
Охват и читатели33K


35 лет назад, 23 апреля 1982, появился ZX Spectrum — замечательный домашний компьютер, который приобщил к программированию немало людей. В первой половине 1990-х эти 8-битные компактные устройства были очень популярны в России. По сути, ZX Spectrum’ы заполнили нишу бюджетных игровых приставок, но при этом позволяли писать полноценные программы на Basic (и не только). В честь очередной годовщины мы решили вспомнить наиболее яркие игры, покорившие сердца многих пользователей ZX Spectrum.

Как я писал предложение к стандарту С++

Время на прочтение4 мин
Охват и читатели25K
Это будет история младшего разработчика из Яндекс.Паспорта о появлении предложения в стандарт С++, разработанного в соавторстве с Антоном antoshkka Полухиным. Как часто бывает в жизни, что-то новое началось с боли, а точнее — с желания её прекратить.


Жила-была библиотека у меня на поддержке. Всё у неё было хорошо: собиралась под Linux, работала, не падала. Однажды пришли люди с просьбой (требованием) собрать её под Windows. Почему бы и нет? Но с первого раза не получилось. Корнем зла оказалась рукописная криптография, которая в какой-то момент умножала два 64-битных целых числа. Для сохранения результата такого умножения потребуется число на 128 бит, и в библиотеке использовался тип __int128. Он прекрасен: имеет естественный интерфейс, поддерживается несколькими компиляторами (gcc, clang), работает без аллокации памяти, но главное — он есть.

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

Исследование положения глаз у более 1000000 лиц: правило золотого сечения или правило третей?

Время на прочтение17 мин
Охват и читатели14K

Перевод поста Майкла Тротта (Michael Trott) "Profiling the Eyes: ϕaithful or ROTen? Or Both?".
Код, приведенный в статье, можно скачать здесь.

Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации




Содержание


Исследование проявления золотого сечения в положении человеческих лиц на картинах и фотографиях
Уровень линии глаз на старых картинах — скорее ROT, чем φaithful
Высота линии глаз в современных картинах
Высота линии глаз в работах профессиональных фотографов
Высота линии глаз в селфи
Фото из профилей LinkedIn
Лица с обложек еженедельных журналов последних трех десятилетий
Обложки комиксов
Ежедневные газеты и журналы мод
Знаменитости из киноиндустрии
Кино: линия глаз в движении
Выводы



Исследование проявления золотого сечения в положении человеческих лиц на картинах и фотографиях


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

LinqToSolr — используем LINQ для получения данных из Solr

Время на прочтение4 мин
Охват и читатели4.2K
image
В силу того, что в нашей компании в качестве платформы полнотекстового поиска выбор пал на Solr, возникло сильное желание упростить работу с запросами к Solr через использование LINQ выражений.

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

Результатом стала маленькая библиотека LinqToSolr (GitHub проект), которая содержит в себе реализацию интерфейса IQueriable<> с возможностью конвертации запросов в понятный Solr API и обратно.
Читать дальше →

…And Justice for All

Время на прочтение5 мин
Охват и читатели3.1K

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


image

Под катом мои субъективные соображения на этот счет.

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

GeekUniversity — первый в России онлайн-университет с гарантированным трудоустройством

Время на прочтение2 мин
Охват и читатели29K


Новость для тех, кто мечтает заниматься разработкой сайтов, веб- или мобильных приложений. Образовательный IT-портал GeekBrains и Mail.Ru Group запустили совместный проект — первый в России онлайн-университет, готовящий веб-разработчиков, Android- и iOS-программистов. Студенты GeekUniversity смогут пройти путь от новичка до middle-разработчика всего за год.
Читать дальше →

Ближайшие события

Все, что вам нужно знать об обнаружении изменений в Angular

Время на прочтение8 мин
Охват и читатели96K
Наткнулся на хорошую статью об устройстве Angular'овского механизма обнаружения изменений (change detection). Т.к. тема достаточна важна, но при этом недостаточно глубоко раскрыта даже на англоязычных ресурсах, а найти русскоязычные материалы на эту тему, вообще, не представляется возможным, решил перевести данную статью.
Перевод под катом

Как Reddit создал r/Place

Время на прочтение15 мин
Охват и читатели27K

enter image description here


Над проектом работали несколько команд — фронтенд, бэкенд, мобильная разработка. По большей части он был реализован на уже существовавших в Reddit технологиях. В этой статье мы рассмотрим, как с технической стороны создавался Place. Если хотите посмотреть код Place, то он здесь.

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

Универсальная работа с VCS/SCM в рамках автоматизации с FutoIn CID

Время на прочтение6 мин
Охват и читатели2.4K

use cases


Для некоторых современных программистов не существует систем контроля версий кроме Git, но на практике Subversion всё ещё востребован, а Mercurial имеет своих ярых сторонников. Быстрый поиск в подкрепление.


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

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

Передача намерений

Время на прочтение5 мин
Охват и читатели8.4K

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


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

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

Выбор MQ для высоконагруженного проекта

Время на прочтение5 мин
Охват и читатели183K
Современные масштабируемые системы состоят из микросервисов, каждый из которых отвечает за свою ограниченную задачу. Такая архитектура позволяет не допускать чрезмерного разрастания исходного кода и контролировать технический долг.

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

Если микросервис перестает отвечать на запросы в результате аварии, его клиенты должны быть мгновенно перенаправлены на резервный. Для управления потоком запросов часто используют так называемые очереди сообщений (message queues).

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

Как сделать свой С++ код кроссплатформенным?

Время на прочтение12 мин
Охват и читатели41K
Возможно, кто-то, прочитав заголовок, спросит: «Зачем что-то делать со своим кодом?! Ведь С++ кроссплатформенный язык!». В целом, это так… но только пока нигде нет завязок на специфичные возможности компилятора и целевой платформы…

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

В итоге получаем приложение, которое, в некоторой степени, «заточено» под конкретный компилятор (и даже под его конкретную версию!) и целевую ОС. Более того, из-за скудности стандартной библиотеки С++ некоторые вещи просто невозможно написать, не воспользовавшись специфичным API системы.

Так было и у нас в Тензоре. Мы писали на MS Visual Studio 2010. Наши продукты были 32-х битными Windows-приложениями. И, само собой, код был пронизан всевозможными завязками на технологии от Microsoft. Однажды мы решили, что пора осваивать новые горизонты: пора научить СБИС работать под Linux и другими ОС, пора попробовать перейти на другое «железо» (POWER).

В данном цикле статей я расскажу, как мы сделали свои продукты настоящими кроссплатформенными приложениями; как заставили их работать на Linux, MacOS и даже под iOS и Android; как запустили свои приложения на множестве аппаратных архитектур (x86-64, POWER, ARM и другие); как научили работать на big-endian машинах.

Нативные ECMAScript модули — первый обзор

Время на прочтение11 мин
Охват и читатели34K
Бандлеры и компайлеры против нативных модулей

В этой статье хочу поделиться переводом статьи о нативных ECMAScript модулях, которые все больше и больше обсуждаются среди фронтендеров. Javascript ранее никогда не поддерживал нативно работу с модулями, и нам, фронтендерам, всегда приходилось использовать дополнительные инструменты для работы с модулями. Но вы только представьте, что в скором времени не нужно будет использовать Webpack для создания бандлов модулей. Представьте мир, в котором браузер будет собирать все за вас. Подробнее об этих перспективах я и хочу рассказать.
Читать дальше →

Вклад авторов