Обновить
26
0
Maksim@MuLLtiQ

Software engineer

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

Базе данных по фильмам IMDb исполнилось 25 лет

Время на прочтение2 мин
Охват и читатели12K
image
Скриншот сайта

Интернет существует уже так давно, что у некоторых сайтов случаются «серебряные» юбилеи. 17 октября исполнилось 25 лет со дня основания Internet Movie Database. Этот любимый киноманами сайт начал свой путь в usenet-группах, и сейчас остаётся самой полной базой данных по фильмам и одним из самых посещаемых интернет-ресурсов в мире.

В 1990-м году всё началось с поста в одну из групп usenet'а «rec.arts.movies» под названием «Ах, эти глаза», в котором программист Колин Нидхэм [Colin Needham] собрал свой списочек из актрис с красивыми глазами. Люди подхватили идею и начали постить свои списки фильмов и актёров, составленные по своим предпочтениям. Постепенно затея начала превращаться в подобие базы данных, где разные люди вели разные списки (список актёров, список режиссёров, и т.п.).

К концу года в списках уже числилось более 10000 фильмов и сериалов, с перекрёстными ссылками на занятых в них актёров и режиссёров. 17 октября 1990 года Нидхэм запостил в группу разработанный им набор скриптов, позволяющий искать информацию в набранных списках. И хотя это был не сайт, и называлась эта коллекция «rec.arts.movies movie database» эту дату принято считать началом деятельности IMDb.
Читать дальше →

Перевод: Один год с Go

Время на прочтение6 мин
Охват и читатели51K
Под катом — перевод статьи опытного разработчика о его опыте практического применения Go. Важно — мнение переводчика может не совпадать с мнением автора статьи.



почитать что он там пишет

Metaballs без шейдеров + физика жидкостей

Время на прочтение7 мин
Охват и читатели20K
Как-то раз возник у меня диспут с хабраюзером ZimM по поводу безшейдерного 2D движка: я утверждал, что для простых 2D игр шейдеры не обязательны, почти все эффекты можно сделать спрайтами, его же позиция была обратной. Я не раз в уме возвращался к этому спору и придумывал задачи, не реализуемые на первый взгляд без шейдеров, и именно решение одной такой задачи и привело к созданию игры, где игрок управляет жидкостью наклоном телефона.
Читать дальше →

Романтика дальних инженерных выездов (а наша крыса выжила)

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

"— Да ладно тебе, чё, правда нельзя так? Удобно же, кабель многожильный, мягкий. В одножильный так не завернёшь..."

Заказчик — большая компания — объявляет тендер на ИБП и кондиционирование для инфраструктуры своих дата-центров по всей стране. Объектов чуть меньше 30 штук, причём включая города, где нет железной дороги. В основном. В августе стартует конкурс, в ноябре только-только заканчивается оформление всей документации. Соответственно, наши инженеры приезжают уже в тот момент, когда «снаружи» от -30 до -40 наружного воздуха. А по условиям контракта нужно мыть наружный блок кондиционера.

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

В такие выезды мы всегда отправляем хотя бы одного инженера с опытом подобных работ, потому что подводных камней много. Начиная от того, что за святотатство могут банально побить, и заканчивая тем, что ящик водки потом «дома» надо как-то провести по бухгалтерии. А вопросы будут. Ещё одна опасность — при распрыскивании на внешний блок кондиционера можно крайне быстро надышаться парами спирта. Как шутят бывалые — в инструментальном наборе обязательно нужно иметь отсек для огурчиков, чтобы снимать последствия ингаляций такого типа. Следующая проблема — всё надо делать быстро, потому что при -35 и ниже с учётом температуры конденсатора около 60 градусов в плюсе — запах водки стремительно распространяется по району в направлении ветра. Или всенаправленно, если ветра нет. Местные жители реально начинают очень странно себя вести и искать источник беспокойства.

Заходите, буду делиться другими историями.
Читать дальше →

Германия сталкивается с проблемой утилизации устаревающих ветряков

Время на прочтение2 мин
Охват и читатели22K
image
Развитие добычи энергии из возобновляемых источников в Германии. Жёлтый — солнечные панели, зелёный — биомасса, голубой — ветряки, синий — ГЭС.

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

Германия начала активно устанавливать ветряные турбины в середине 90-х годов. После событий на АЭС Фукусима-1 в 2011 году и появления связанной с ней очередной волны паники перед атомной энергией, переход на «экологически чистую» энергию пошёл усиленными темпами.

В данный момент в стране действуют более 25000 ветряков. С 2011 года закрыто уже девять АЭС, и в настоящее время в Германии всего 16% от всей потребляемой энергии производится на атомных электростанциях. Но и у «экологической» энергии есть свои трудности.
Читать дальше →

40 ключевых концепций информационных технологий доступно и понятно

Время на прочтение16 мин
Охват и читатели162K
Представляю вашему вниманию перевод очень ёмкой, и в то же время достаточно краткой (для такого масштаба проблемы) статьи Карла Чео. Я решил, что очень хочу сделать её перевод практически сразу, как только начал читать, и очень рад, что в итоге сделал это.
Для того, чтобы сделать обучение более веселым и интересным, представляю вам перечень важных теорий и концепций информатики, объяснённых с помощью аналогий с минимальным количеством технических деталей. Это будет похоже на очень быстрый курс информатики для всех с целью просто дать вам общее представление об основных концепциях.

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

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

Неконстантные константные выражения

Время на прочтение24 мин
Охват и читатели40K
// <какой-то код>
 
int main ()
{
        constexpr int a = f ();
        constexpr int b = f ();
 
        static_assert (!= b, "fail");
}

Можно ли в приведенном выше фрагменте вместо комментария вставить такое определение f (), чтобы a получила значение, отличное от b?

“Разумеется, нет!” — скажете вы, немного подумав. Действительно, обе переменные объявлены со спецификатором constexpr, а значит, f () тоже должна быть constexpr-функцией. Всем известно, что constexpr-функции могут выполняться во время компиляции, и, как следствие, не должны зависеть от глобального состояния программы или изменять его (иными словами, должны быть чистыми). Чистота означает, что функция при каждом вызове с одними и теми же аргументами должна возвращать одно и то же значение. f () оба раза вызывается без аргументов, поэтому должна оба раза вернуть одно и то же значение, которое и будет присвоено переменным a и b… правильно?

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

Я ошибался.
Увиденное под катом уже не развидеть

Пятничный формат: Как писать код, который никто не сможет сопровождать

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


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

Создание синтезатора на JavaScript

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


Идея сделать браузерный синтезатор у меня появилась достаточно давно, ещё когда Audio API был в весьма зачаточном состоянии и практически единственным шансом извлечь звук из браузера (кроме воспроизведения готовых файлов) была генерация WAV с его последующей кодировкой в base64 и записью в аудио-тег. И если синтез и кодирование удавались без проблем (WAV формат довольно прост), то с потоковым аудио для музицирования в реальном времени всё было хуже и никакими ухищрениями не удавалось добиться бесшовной буферизации, в связи с чем идея и заглохла, так не успев родиться. За прошедшие годы браузеры в поддержке Audio API заметно прибавили, что в свою очередь вдохновило меня на новые эксперименты в этой области. В данной статье шаг за шагом описывается процесс создания браузерного синтезатора средствами HTML5, начиная с генерации простой синусоиды, продолжая коммутацией и модуляцией сигналов и заканчивая аудиоэффектами.
Читать дальше →

19 принципов разработки по БЭМ, или что должен знать каждый разработчик библиотек

Время на прочтение11 мин
Охват и читатели43K
БЭМ набирает популярность и становится актуальнее — например, недавно Google выпустил новую библиотеку блоков под названием Material Design Lite, реализованную по БЭМ-методологии. Команда БЭМ тоже не сидела без дела — мы выпустили новую версию библиотеки bem-components, на базе которой построены сайты и проекты не только Яндекса, но и других разработчиков.

Эти события натолкнули нас на мысль ещё раз вспомнить и рассказать вам, как сформировались принципы разработки библиотек в БЭМ-методологии. Надеемся, что многим это будет интересно и полезно. Итак, поехали.

image

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

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

Радиационная опасность: реакторы деления против реакторов синтеза

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

Это симпатичное синее свечение Вавилова-Черенкова — единственная возможность для человека напрямую ощутить (в данном случае — увидеть) радиацию. К сожалению, наши органы чувств ничего не скажут нам, даже если мы попадем под удар ионизирующего излучения, которое убивает за минуту. Радиационная опасность АЭС стала частью современной культуры, на которой играет множество конкурентов ядерной энергетики — и идеологи термоядерных программ не остаются в стороне, обещая “чистую”, лишенную радиации, энергетику.

Так ли это?

PostgreSQL 9.5: что нового? Часть 2. TABLESAMPLE

Время на прочтение9 мин
Охват и читатели31K
Продолжаем обзор нововведений в PostgreSQL 9.5.
Часть 1. INSERT… ON CONFLICT DO NOTHING/UPDATE и ROW LEVEL SECURITY.
Часть 3. GROUPING SETS, CUBE, ROLLUP
От автора
Приношу свои извинения за задержку с выпуском второй части. Изначально я планировал выпустить вторую часть статьи через неделю после первой, но, в связи с большой занятостью, не смог этого сделать. Поэтому я решил, что буду публиковать не большие статьи, а небольшими порциями, но чаще.
Читать дальше →

PostgreSQL 9.5: что нового? Часть 1. INSERT… ON CONFLICT DO NOTHING/UPDATE и ROW LEVEL SECURITY

Время на прочтение9 мин
Охват и читатели134K
Часть 2. TABLESAMPLE
Часть 3. GROUPING SETS, CUBE, ROLLUP
В 4 квартале 2015 года ожидается релиз PostgreSQL 9.5. Как всегда, новая версия кроме новых багов приносит новые фичи и «плюшки». В данной статье будут рассмотрены две из них, а именно INSERT… ON CONFLICT DO NOTHING/UPDATE и Row-level security. Уже вышла вторая альфа-версия, поэтому самые нетерпеливые могут её установить и попробовать новый функционал.
Скачать можно тут
Читать дальше →

Создаём REST-сервис на Rust. Часть 2: читаем INI; multirust

Время на прочтение4 мин
Охват и читатели20K
Всем привет.

В первой части мы сделали простейший прототип, работающий с PostgreSQL.

При этом мы прописали все параметры соединения с базой прямо в коде. Давайте теперь вынесем их в конфигурационный файл.

В качестве формата конфигурации я выбрал INI — достаточно простой и известный формат.

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

Создаём REST-сервис на Rust. Часть 3: обновляем базу из консоли

Время на прочтение8 мин
Охват и читатели19K
В предыдущей части мы разобрали конфигурационный файл базы данных, чтобы считать из него параметры соединения.

Теперь давайте реализуем непосредственно операции обновления БД: создание, обновление, удаление наших записей и соответствующий им интерфейс командной строки.
Читать дальше →

Присоединяйте файлы к комментариям

Время на прочтение1 мин
Охват и читатели11K
Довольно давно вы можете присоединять картинки к описаниям проблем и запросов на слияние. Теперь мы расширили эту возможность, и она получает поддержку файлов:

  • Microsoft Word (.docx)
     
  • Microsoft Powerpoint (.pptx)
     
  • Microsoft Excel (.xlsx)
     
  • Текстовых (.txt)
     
  • Документов PDF (.pdf)

[скриншот присоединения файла]
Просто перетащите и бросьте файлы в рамку комментария — и они появятся у вас в комментарии.

«Книжная полка фронтендера» — как гугл, только лучше

Время на прочтение2 мин
Охват и читатели39K
Список книг — «Книжная полка фронтендера

Привет, читатель!

В этой публикации я расскажу тебе о «Книжной полке фронтендера».

Предыстория


К сожалению, в рунете очень мало по-настоящему качественных ресурсов для изучения фронтенда. Эти ресурсы можно буквально пересчитать по пальцам одной руки — это Frontender Magazine, HTML Academy, «Современный учебник JavaScript». Я благодарю авторов этих ресурсов за их неоценимый вклад в развитие и популяризацию фронтенда в рунете.

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

Утилиты командной строки могут быть в 235-раз быстрее вашего Hadoop кластера

Время на прочтение7 мин
Охват и читатели46K
Примечания tsafin:

Перед публикацией своего цикла статей по MapReduce в Caché, мне показалось важным озвучить данную прошлогоднюю точку зрения из статьи Адама Дрейка «Command-line tools can be 235x faster than your Hadoop cluster». К сожалению оригинальная статья Тома Хайдена, на которую он ссылается стала уже недоступна на сайте Тома, но её, по-прежнему, можно найти в архивах. Для полноты картины предлагаю ознакомиться и с ней тоже.

Введение


Посещая в очередной раз свои любимые сайты, я нашел крутую статью Тома Хайдена об использовании Amazon Elastic Map Reduce (EMR) и mrjob для вычисления статистики отношения выигрыш/проигрыш в наборе данных со статистикой по шахматным матчам, которую он скачал с сайта millionbase archive, и c которой он начал играться используя EMR. Так как объем данных был всего 1.75GB, описывающий 2 миллиона шахматных партий, то я скептически отнесся к использованию Hadoop для данной задачи, хотя были и понятны его намерения просто поиграться и изучить плотнее, на реальном примере, утилиту mrjob и инфраструктуру EMR.
Читать дальше →

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Уровень сложностиСредний
Время на прочтение40 мин
Охват и читатели85K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

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

Игра на голом HTML / CSS

Время на прочтение3 мин
Охват и читатели91K
Сегодня речь пойдет о том, как создать игру не используя js и прочих скриптов. Только HTML / CSS, только хейткор.


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

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность