
Пользователь
Modest — разработка открытого движка HTML рендера на «голом» Си

После моей последней публикации прошло немало времени. За это время многое изменилось и я хочу поделиться с вами достижениями в разработке.
30 легковесных JavaScript плагинов и библиотек
Как и следовало ожидать ниже вы найдете много плагинов для создания ползунков, галерей с изображениями, адаптивных меню, а также много других полезных плагинов и библиотек. Также в списке представлены плагины, которые предлагают действительно уникальные функциональные возможности. Давайте взглянем на список!
Цифровой героин: как экраны превращают детей в психотических наркоманов

Сюзан [все имена изменены] купила своему шестилетнему сыну Джону iPad, когда тот был в первом классе. «Я подумала, почему бы ему не обучиться таким вещам?» — рассказала она мне во время сеанса терапии. В школе у Джона используют цифровые устройства во всё младших и младших классах – и учитель по современным технологиям восторгался обучающими преимуществами устройств – поэтому Сюзан хотела сделать так, как будет лучше для её светловолосого сына, любившего читать и играть в бейсбол.
Она начала разрешать Джону играть в обучающие игры на iPad. В какой-то момент он открыл для себя Minecraft, который, по словам учителя по технологиям, представлял собой «нечто вроде электронного Lego». Вспомнив, как здорово в детстве было играть с пластиковыми детальками, Сюзан позволила своему сыну играть в Minecraft каждый день.
Преобразование обычного класса в странно повторяющийся шаблон
Давайте вспомним, как работают виртуальные методы. Если класс содержит один или более виртуальный метод, компилятор для такого класса создает таблицу виртуальных методов, а в сам класс добавляет виртуальный табличный указатель. Компилятор также генерирует код в конструкторе класса для инициализации виртуального табличного указателя. Выбор вызываемого виртуального метода производится на этапе выполнения программы при помощи выбора адреса метода из созданной таблицы.
Итого имеем следующие дополнительные затраты:
1) Дополнительный указатель в классе (указатель на таблицу виртуальных методов);
2) Дополнительный код в конструкторе класса (для инициализации виртуального табличного указателя);
3) Дополнительный код при каждом вызове виртуального метода (разыменование указателя на таблицу виртуальных методов и поиск по таблице нужного адреса виртуального метода).
Трёхпозиционный checkbox (aka tristate) без скриптов и смс

Как по маслу, или анимируем со скоростью 60 FPS на CSS 3
Изображения и текст принадлежат их авторам.
Анимация элементов в мобильных приложениях — это просто. Правильная анимация тоже может быть простой… если вы последуете представленным в статье советам.
Сегодня кто только не использует CSS 3 анимацию в своих проектах, тем не менее не только лишь все, но мало кто может делать это правильно. Даже описаны так называемые «лучшие практики», но люди продолжают делать всё по-своему. Скорее всего потому, что просто не понимают, почему всё устроено именно так, а не иначе.
Разбираемся с построением мультирегиональных сайтов
Варианты построения URL-ов
Конечно, в жизни существует больше групп, например, часть сайтов хранят региональные настройки в cookie-файлах, другие передают параметром ?lang=ru, однако это непопулярные решения и основными являются:
1. Версия сайта на другом домене:
example.com, example.ru
Самый кардинальный способ. Этот вариант может быть удобен компаниям, имеющим локальные представительства в разных странах и работающих относительно независимо от главного офиса, например, на другом движке сайта.2. Версия сайта на поддомене:
ru.example.com, ua.example.com
Очень похож на предыдущий вариант, но легче в администрировании. Эти два варианта легко реализуются на физически разных хостах, поэтому могут быть размещены в разных странах.Недооценённые итераторы
Уведомления в браузере и пример того, как их можно использовать с пользой
Вероятно, вы все уже слышали про технологию «Веб-push» в составе Push API и Notifications API. Я уверен, что среди вас есть те, кто возлагает надежды на эту технологию, как на новый канал коммуникации с пользователем. И я не исключаю возможность, что данную статью будут читать основатели тех немногочисленных стартапов, которые всерьёз занялись окучиванием технологии «Веб-push» для рекламы и маркетинга. Сегодня я вам расскажу, о том как можно использовать данную технологию.
Библиотека, облегчающая разработку форм на сайтах (v3)
Привет, Хабр!
Как-то, год назад я писал о своей небольшой библиотеке, которая облегчает разработку форм на сайтах. Недавно я выпустил 3-ю версию, которая, по-сути, была переписана с нуля, чтобы стать правильней и удобней. Но в своей статье я не буду повторять README и ДЕМО, а лучше покажу на практике, каким образом она помогает писать меньше кода.
Последние новости о развитии C++

Во время поездки мы обедали с Бьярне Строуструпом, катались в лифте с Гербом Саттером, жали руку Беману Дейвсу, выходили «подышать воздухом» с Винцентом Боте, обсуждали онлайн-игры с Гором Нишановым, были на приёме в мэрии Оулу и общались с мэром. А ещё мы вместе со всеми с 8:30 до 17:30 работали над новым стандартом C++, зачастую собираясь в 20:00, чтобы ещё четыре часика поработать и успеть добавить пару хороших вещей.
Теперь мы готовы поделиться с вами «вкусностями» нового стандарта. Всех желающих поглядеть на многопоточные алгоритмы, новые контейнеры, необычные возможности старых контейнеров, «синтаксический сахар» нового чудесного C++, прошу под кат.
Поразрядная сортировка с человеческим лицом
Основная ошибка в том, что авторы пытаются навернуть универсальность там, где это не нужно, и не обеспечивают универсальность там, где это действительно необходимо. В результате получается нечто, что работает медленно и чем невозможно пользоваться.
Возможно, именно поэтому многие люди до сих пор считают поразрядку алгоритмом, представляющим исключительно академический интерес, и малоприменимым в реальности. Однако, это заблуждение.
Баги в программном обеспечении для МРТ-сканеров ставят под сомнение 40 000 научных исследований

Тщательное изучение методологии проведения исследований с помощью магнитно-резонансной томографии делает недействительными результаты целой отрасли науки. В течение нескольких десятилетий нейробиологи и когнитивные психологи использовали для анализа данных фМРТ статистические программы AFNI, SPM и FSL. Как выяснилось, из-за некорректных алгоритмов эти программы могут возвращать до 70% ложноположительных результатов вместо предполагаемых 5%.
Таким образом, примерно 40 000 научных работ, опубликованных в последние десятилетия на основе данных фМРТ, одночасно поставлены под сомнение. Кроме того, новая оценка валидности может оказать сильное влияние на интерпретацию результатов нейровизуализации.
Концепты для отчаявшихся
Всё началось с того, что мне понадобилось написать функцию, принимающую на себя владение произвольным объектом. Казалось бы, что может быть проще:
template <typename T>
void f (T t)
{
// Завладели экземпляром `t` типа `T`.
...
// Хочешь — переноси.
g(std::move(t));
// Не хочешь — не переноси.
...
}
Но есть один нюанс: требуется, чтобы принимаемый объект был строго rvalue
. Следовательно, нужно:
- Сообщать об ошибке компиляции при попытке передать
lvalue
. - Избежать лишнего вызова конструктора при создании объекта на стеке.
А вот это уже сложнее сделать.
Поясню.
Эффект Доплера помог физику из Казани успешно оспорить штраф ГИБДД

Тот самый комплекс, который и фиксирует скорость проезжающих мимо автомобилей
В России, в частности, в Казани, ГИБДД стала использовать передвижные комплексы видеофиксации «КРИС-П» для определения скорости проезжающих мимо автомобилей. Многие автомобилисты считают, что точность таких комплексов невысока, и некоторым удается успешно оспорить штрафы ГИБДД, доказав тем либо иным образом свою правоту.
Смог сделать это и кандидат физико-математических наук Юрий Горюнов, который получил штраф в размере 500 рублей за превышение скорости на 22 километра в час. Его «Лада-Гранта» попала в объектив передвижного фоторадарного комплекса «КРИС-П» в августе прошлого года в Высокогорском районе Татарстана.
База свободных репозиториев Github доступна через интерфейс BigQuery
2,8 млн репозиториев, 3 ТБ исходного кода и метаданных

Google в сотрудничестве с Github выложила для общественного пользования полную актуальную базу всех open-source репозиториев через интерфейс BigQuery. (Проверка свободной лицензии осуществляется через API.)
Наборы данных Google BigQuery Public Datasets содержат информацию о более чем 2,8 млн свободных репозиториев, о более чем 2 млрд файлов (исходный код последних версий 163 млн файлов), 145 млн коммитов и т.д. Общий размер базы — около 3 терабайт.
Раньше архивы Github выкладывались на Github Archive. Теперь всё это богатство доступно для полнотекстового поиска и анализа через простые SQL-запросы. Github обещает обновлять наборы данных еженедельно.
std::shared_ptr и кастомный аллокатор
Кто из нас не любит рефакторинг? Думаю, что неоднократно каждый из нас при рефакторинге старого кода открывал для себя что-то новое или вспоминал что-то важное, но хорошо забытое. Совсем недавно, несколько освежив свои знания работы std::shared_ptr при использовании пользовательского аллокатора, я решил что больше забывать их не стоит. Всё что удалось освежилось собрал в этой статье.
Об относительной яркости, или насколько живучим бывает легаси
А уж тот, кто плотно работал с графикой, знает эти цифры буквально наизусть — как в былые времена эникейщики запоминали серийники Windows. Иногда коэффициенты округляют до второго знака, иногда уточняют до четвертого, но каноническая форма именно такая.
Вычисляет она относительную яркость цвета (relative luminance или в некоторых контекстах luma; не путать с lightness и brightness) и широко применяется для преобразования цветного RGB-изображения в Grayscale и связанных с этим задач.
Формула растиражирована и процитирована в тысячах статей, форумных обсуждений и ответов на StackOverflow… Но дело в том, что единственно-правильное её место — на свалке истории. Использовать её нельзя. Однако же используют.
Но почему нельзя? И откуда же взялись именно такие коэффициенты?
Анализ потокобезопасности в С++
Предисловие
Писать многопоточные приложения нелегко, поскольку разработчикам приходится представлять себе все многочисленные варианты взаимодействия потоков и использования ими ресурсов. Опыт показывает, что программистам не помешал бы для этого некоторый инструментарий. Многие библиотеки и фреймворки налагают на программиста некоторые требования по потокобезопасности при их использовании, однако далеко не всегда эти требования чётко указаны. И даже в тех случаях, когда всё хорошо задокументировано — это всего лишь выраженная в тексте документации просьба, а не строгая автоматическая проверка.
Средства статического анализа кода помогают разработчикам определить политики потокобезопасности и проверять их при сборке проекта. Примером таких политик могут быть утверждения «мьютекс mu всегда должен использоваться при доступе к переменной accountBalance» или «метод draw() должен вызываться только из GUI-потока». Формальное определение политик даёт два основных преимущества:
- Компилятор может показывать предупреждения в случае обнаружения нарушений политик. Нахождение ошибки на этапе компиляции значительно дешевле, чем отладка упавших юнит-тестов или, что ещё хуже, появление «плавающих» багов в продакшн-коде.
- Явно выраженные в коде спецификации потокобезопасности играют роль документации. Подобная документация очень важна для библиотек и SDK, поскольку программистам нужно знать, как их корректно использовать. Данную информацию, конечно, можно поместить в комментарии, однако практика показывает, что подобные комментарии имеют свойство устаревать, поскольку при обновлении кода они не всегда меняются синхронно.
Данная статья рассказывает о применении данного подхода в Clang, хотя изначально он был разработан для GCC, однако версия для GCC более не поддерживается. В Clang данная возможность реализована как предупреждение компилятора. В Google на данный момент вся кодовая база C++ компилируется с включенным по умолчанию анализом потокобезопасности.
Information
- Rating
- Does not participate
- Location
- Уфа, Башкортостан(Башкирия), Россия
- Date of birth
- Registered
- Activity