Обновить
4

Программист

1
Подписчики
Отправить сообщение

Сравнение библиотек логирования

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


В сети огромное количество площадок формата Q&A где задаются вопросы из разряда:

  • Предложите С++ логер? (C++ logging framework suggestions)
  • Какой наиболее эффективный потоко-безопасный С++ логер? (What is the most efficient thread-safe C++ logger)
  • Библиотека логирования для игр (Logging library for c games)
  • Асинхронный потоко-безопасный С++ логер? (Asynchronous thread-safe logging in C++)

Люди делятся своим опытом и знаниями, но формат таких площадок позволяет лишь показать личные предпочтения отвечающего. К примеру, одним из самых производительных логеров чаще всего называют Pantheios, который даже по тестам производителя тратит больше 100 секунд на запись 1M строк лога, на современном железе это около 30 секунд, быстро ли это?

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

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

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

UPD: До 15 ноября 2026 идет соревнование по машинному обучению от Wunder Fund:

🌱 Alfa Connectome ML Competition 🌱

Задача: Вы будете изучать исторические торговые данные для двух связанных инструментов. Нужно создать модель, которая предсказывает индикаторы движения цены одного из них по информации об ордербуке, сделках и кое-чем еще.

По сути, классическая работа кванта. Вы будете работать с реальными биржевыми данными.

Когда: 11 сентября — 15 ноября
Призовой фонд: $13,600

Победители получат денежные призы, приглашение побеседовать в Wunder Fund, а главное — большое интеллектуальное удовольствие. Сам Wunder Fund с 2014 года занимается высокочастотным трейдингом с дневным оборотом более $10 млрд.

>> Участвовать





Это первая часть, вот вторая.
За всеми архитектурами нейронных сетей, которые то и дело возникают последнее время, уследить непросто. Даже понимание всех аббревиатур, которыми бросаются профессионалы, поначалу может показаться невыполнимой задачей.

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

Как стать супер-мега-про машинного обучения за 15 минут

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

Недавно на Хабре проскакивал пост vfdev-5 о DIGITS. Давайте поподробнее разберёмся что это такое и с чём его едят. Если в двух словах. Это среда, которая позволяет решить 30-50% задачек машинного обучения на коленке в течении 5 минут. Без умения программировать. Ну, при наличии базы, конечно. И более-менее адекватной карточки от NVIDIA.
Читать дальше →

Создавайте хорошие таблицы

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

Таблица


Бедные таблицы. Ну что с ними не так?


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

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

Оптимизация кода: память

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели98K
Большинство программистов представляют вычислительную систему как процессор, который выполняет инструкции, и память, которая хранит инструкции и данные для процессора. В этой простой модели память представляется линейным массивом байтов и процессор может обратиться к любому месту в памяти за константное время. Хотя это эффективная модель для большинства ситуаций, она не отражает того, как в действительности работают современные системы.

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

image

Иерархия памяти работает, потому что хорошо написанные программы имеют тенденцию обращаться к хранилищу на каком-то конкретном уровне более часто, чем к хранилищу на более низком уровне. Так что хранилище на более низком уровне может быть медленнее, больше и дешевле. В итоге мы получаем большой объём памяти, который имеет стоимость хранилища в самом низу иерархии, но доставляет данные программе со скоростью быстрого хранилища в самом верху иерархии.
Читать дальше →

Dynamic DNS на C# и Яндекс.API

Время на прочтение4 мин
Охват и читатели12K
Сегодня, помимо моего любимого занятия (возиться с Arduino в моем кружке детского творчества), решил я поставить себе сервер (Windows 2012 r2) и использовать его для различных манипуляций. Изучив тонну информации, всё прошло гладко.

Когда, закончил экспериментировать в локальной сети, у меня появился вопрос: «Как можно увидеть свой сервер из внешней сети, если у меня динамический IP». Снова помогла всемирная книга знаний и были найдены такие сервисы, как DynDNS, no-ip и т.п.

После регистрации увидел, что нужно качать прогу (в роутере настроек под dyndns нет), а как добросовестный параноик, я не люблю ставить сторонний софт. Вспомнив, что имею при себе домен второго уровня делегированный на Яндексе, принялся изучать сторону вопроса, для написания своего софта на C#.
Читать дальше →

Не так-то просто обнулять массивы в VC++ 2015

Время на прочтение5 мин
Охват и читатели21K
В чем разница между двумя этими определениями инициализированных локальных переменных С/С++?

char buffer[32] = { 0 };
char buffer[32] = {};

Одно отличие состоит в том, что первое допустимо в языках С и С++, а второе — только в С++.

Что ж, давайте тогда сосредоточимся на С++. Что означают эти два определения?

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

Эти определения несколько различаются, но по факту результат один — весь массив должен быть инициализирован нулями. Поэтому согласно правилу «as-if» в С++ они одинаковы. То есть любой достаточно современный оптимизатор должен генерировать идентичный код для каждого из этих фрагментов. Верно?
Читать дальше →

Как лучше разбираться в людях

Время на прочтение31 мин
Охват и читатели115K
Рассказывать айтишникам про психологию то еще дело, некоторые читатели скажут: «Bullshit!», и вообще не поверят, потому что психологию, даже прикладную, нельзя назвать точной наукой. Тем не менее, задача этой статьи — показать и доказать вам, что некоторые модели действительно работают. В основе доклад Сергея Котырева из UMI на РИТ++ 2017, от его лица дальше и пойдет повествование.



Я — IT-предприниматель с 20 летним стажем. Так получилось, что с самого начала карьеры мне пришлось управлять людьми. Как выпускник технического вуза и айтишник, я изначально понял, что люди сложно поддаются алгоритмизации, и вообще осознанию, пониманию и прогнозированию.

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

Мне кажется, о поведении и предсказании поведения спиральных галактик мы знаем больше, чем о том, как поведет себя человек, например, моя жена, сотрудник, или особенно сотрудница моего отдела маркетинга, не говоря уже о пиарщицах. О том, что ближайшая к нам Галактика летит, и через сколько-то миллиардов лет столкнется с нашей, мы уже знаем точно.

How to: Правильно называем методы-свойства класса

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

  • Как вы называете парные методы Get/Set? Допускается ли делать их несимметричными? А если для свойства используется глагол Is? А если какой-нибудь модальный глагол вроде Can?
  • Допускается ли вместо Get/Set использовать пары Is/Set?
  • И если есть ограничения, то это ваш сознательный выбор или корпоративный стандарт?
Читать дальше →

Имена людей и интерфейс

Время на прочтение13 мин
Охват и читатели52K
Пространство рассуждения статьи затрагивает вопросы различия имен людей во всем мире, и то, как это влияет на дизайн форм ввода, баз данных, онтологий информатики и др. в контексте Всемирной Паутины.

image

Заинтересованная аудитория: авторы HTML-контента, разработчики скриптов серверных приложений (PHP, JSP и т.д.), менеджеры веб-проектов и любые другие люди, так или иначе связанные с дизайном форм ввода данных, дизайна баз данных и онтологий, которые затрагивают личные имена людей.

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

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

Корпорация Samsung начала массовое производство корпоративных SSD объемом в 30 ТБ

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


Южнокорейская компания Samsung объявила о запуске производства самого емкого в мире твердотельного накопителя — 30 ТБ модель SSD PM1643. Основа этой системы — память 512Gb V-NAND. По словам представителей корпорации, накопители такого типа необходимы для корпоративных систем следующего поколения, обычные пользовательские модели выпускаться пока не будут.

V-NAND технология, использованная при создании твердотельника, характеризуется 64-слоями, 3-битовой ячейкой и 512 гигабитными чипами. По сравнению с предыдущими моделями новые накопители в два раза более емкие. Кстати, SSD с объемом в 15 ТБ корпорация начала выпускать в марте 2016 года. На тот момент это были рекордные по емкости модели.
Читать дальше →

Путеводитель по полиномам и сплайнам для программиста

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


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

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

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



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

Флаги в аргументах функций

Время на прочтение9 мин
Охват и читатели31K
Вы когда-нибудь сталкивались с таким кодом?

process(true, false);

Эта функция, судя по названию, что-то обрабатывает (process). Но что означают параметры? Какой параметр здесь true, а какой false? По вызывающему коду об этом нельзя судить.

Нам придется заглянуть в объявление функции, которое дает подсказку:

void process(bool withValidation,
             bool withNewEngine);

Очевидно, автор использует два параметра типа bool как флаги (toggles). Реализация функции может быть похожа на это:

void process(bool withValidation,
             bool withNewEngine)
{
  if (withValidation)  // используется 1-й флаг
    validate(); // % подтвердить
 
  do_something_toggle_independent_1
 
  if (withNewEngine)   // используется 2-й флаг
    do_something_new();
  else
    do_something_old();
 
  do_something_toggle_independent_2();
}

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

3D-движок, написанный на формулах MS Excel

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

Скриншот экрана игры

Эта статья посвящена тому, как я смог написать 3D-движок только на формулах Excel. Я реализовал следующий функционал:

  • бесконечная процедурно генерируемая карта лабиринта
  • рендеринг трассировкой лучей в реальном времени
  • вычисление окклюзии
  • рендеринг простейшего освещения
  • шейдер освещения и вычислений
  • движок естественного движения
  • в 3D-движке не используются макросы

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

Можете скачать файл и протестировать его самостоятельно!

ДНК глазами программиста

Время на прочтение15 мин
Охват и читатели98K
От переводчика: Так как я не являюсь биологом, возможны неточности в переводе терминов (и не только :). Оригинал находится здесь.

Если ты – молоток, то во всём увидишь гвоздь


Это всего лишь размышления программиста о ДНК. Я не являюсь молекулярным генетиком.

Исходный код


Находится здесь. Это не шутка. Исходники можно просмотреть с использованием замечательного набора скриптов Perl под названием "Ensembl". Геном человека занимает приблизительно 3 гигабайта, которые можно сократить до 750 мегабайт, если отбросить шелуху. Немного печалит, что это всего лишь 2.8 браузеров Mozilla Firefox.

ДНК похожа скорее не на исходники на языке C, а на байт-код для виртуальной машины под названием «ядро клетки». Крайне сомнительно, что существуют исходники, которые можно скомпилировать в этот байт-код: то, что мы видим, – это всё, что у нас есть.
Читать дальше →

Поговорим о юзернеймах

Время на прочтение12 мин
Охват и читатели15K
Пару недель назад я выпустил django-registration 2.4.1. Сборки 2.4.x станут последними в версии django-registration 2.x, дальше будут выходить только исправления багов. Основная ветка сейчас готовится к версии 3.0, откуда планируется удалить кучу устаревшего хлама, накопившегося за последнее десятилетие поддержки, и я постараюсь учесть лучшие практики современных приложений Django.

В ближайшее время напишу подробнее о новой версии, но именно сейчас хочу немного поговорить об обманчиво простой проблеме, с которой приходится иметь дело. Это имена пользователей. Да, я мог бы написать одну из популярных статеек типа «Заблуждения программистов об X», но всё-таки предпочитаю реально объяснить, почему это сложнее, чем кажется, и предложить некоторые советы, как решить проблему. А не просто стебаться без полезного контекста.
Читать дальше →

Яндекс.Алгоритм 2018: оптимизационный трек и ML-задача от разработчиков Алисы

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

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




А теперь по порядку. Открывает соревнование этого года алгоритмический трек. Он пройдет в классическом варианте с правилами tcm/time и системой «гран-при 30». Квалификационный раунд стартует уже 17 февраля. Каждый, кто решит минимум одну задачу, пройдет в отборочный тур и сможет побороться за стильные футболки, которые достанутся ТОП-256 и денежные призы для трех победителей трека. Ссылка на регистрацию.
Читать дальше →

Почему зарплаты в ИТ скоро начнут падать?

Время на прочтение5 мин
Охват и читатели39K
В последние годы вокруг ИТ поднялся настоящий хайп, как модно сейчас говорить. ВУЗы открывают новые специальности для восполнения “дефицита кадров” в этом сегменте рынка труда, эксперты различного уровня прогнозируют увеличение спроса на программистов и рассказывают про “информационный век”, а по просторам интернета гуляют “истории успеха” людей, которые решили все свои проблемы после переквалификации. При этом зарплаты ИТ-специалистов в разы выше зарплат специалистов других сфер экономики со схожим уровнем сложности задач, что только подогревает интерес к этому направлению. Не слишком ли это хорошо, чтобы быть правдой?
Читать дальше →

Информация

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