DateTimeImmutable
. Ниже мы увидим, что если делать простые объекты неизменяемыми, то это поможет избежать определённых ошибок и сэкономить немало времени.Golang и распределенные системы
Панамские документы. С миру по нитке
Как многим известно из прессы, международный консорциум журналистов-расследователей (ICIJ) выложил в свободный доступ, так называемый «Панамский архив»: сведения о лицах, связанных с офшорными компаниями по всему миру, полученные неизвестными лицами из панамской юридической фирмы Mossack Fonseca.
Можно по разному относиться и к самим этим данным, к способу их получения и публикации в открытом доступе. Но, если абстрагироваться от этих вопросов, то это просто информация, которую можно обработать и на которую можно посмотреть с разных углов (в прямом смысле).
Многопоточные вычисления в PHP: pthreads
Недавно я попробовал pthreads и был приятно удивлен — это расширение, которое добавляет в PHP возможность работать с несколькими самыми настоящими потоками. Никакой эмуляции, никакой магии, никаких фейков — все по-настоящему.
Я рассматриваю такую задачу. Есть пул заданий, которые надо побыстрее выполнить. В PHP есть и другие инструменты для решения этой задачи, тут они не упоминаются, статья именно про pthreads.
Стоит отметить, что автор расширения, Joe Watkins, в своих статьях предупреждает, что многопоточность — это всегда не просто и надо быть к этому готовым.
Кто не испугался, идем далее.
R: обработка пропущенных значений
Давайте соберем клеща-мозгоеда под микроскопом или focus-stacking фотографий из консоли

Надеюсь, данный пост не станет причиной ночных кошмаров у особо чувствительных хабрачитателей. В этом посте я постараюсь рассказать о простом способе увеличения ГРИП. Это весьма актуальная проблема для тех, кто работает с микроскопом и занимается макрофотографией. Суть проблемы в том, что на больших увеличениях размытие удаленных от точки фокуса предметов становится большой проблемой. Это в традиционной портретной съемке размытие фона позволяет подчеркнуть объект. В научной микрофотографии это чаще всего негативный эффект. Радует, что есть методика focus-stacking, которая позволяет сшить в единую резкую картинку стопку фотографий с разной точкой фокусировки. Но хватит рассуждать об абстрактном. Внесите клеща в студию!
Приводим данные и код в порядок: данные и разметка, часть 2

В этой серии из двух статей о производительности и памяти описываются базовые принципы и приводятся советы для разработчиков по повышению производительности программного обеспечения. Эти статьи затрагивают, в частности, работу памяти и компоновку. В первой части было рассказано об использовании регистров и о применении алгоритмов блокирования для повышения многократного использования данных. В этой части статьи сначала описывается компоновка данных для обычного распараллеливания — программирования для общей памяти с потоками, а затем распределенные вычисления по сетям MPI. В статье описываются понятия, связанные с распараллеливанием: векторизация (инструкции SIMD) и работа с общей памятью (многопоточная архитектура), а также вычисления с распределенной памятью. И наконец, в этой статье сравниваются компоновки данных «массив структур» (AOS) и «структура массивов» (SOA).
Как я год работал на CoreOS
Первый раз о CoreOS я услышал от Петра Леменкова на Yandex конференции “Дорога в облака” в сентябре 2013 года. Тогда я даже подумать не мог, что буду участвовать в разработке этой ОС.
Второй раз о CoreOS я вспомнил в октябре 2014, когда поступила задача о переводе микросервисов, написанных на Ruby (которые использовали, как это ни странно разные версии Ruby), в более благоприятную среду для continuous integration. Тогда я первый раз запустил CoreOS, и мне она показалось ужасно неудобной в использовании. Документация к ней была поверхностная. Сервисы, которые превращали CoreOS в кластерную ОС, имели множество недоработок и вызывали только чувство раздражения из-за постоянных ошибок. О переводе даже части инфраструктуры на CoreOS не было и речи.
В третий же раз, в марте 2015, поступила задача о предоставлении услуги поддержки в рамках community support для CoreOS. О том, как я справлялся, и пойдет речь.
Dagger 2. Лечим зависимости по методике Google

Автор: Константин Марс
Senior Developer @ DataArt,
Co-Organizer @ GDG Dnipro
Dependency Injection
Что, зачем и когда это нужно
Сегодня мы поговорим об инструменте, который помогает улучшить качество разработки для Android. Решить эту задачу можно с помощью Dependency Injection (DI). Обычно этот термин ассоциируется с инъекциями, шприцами и немножко с «зависимостями». На самом деле, Dependency Injection — паттерн проектирования, обеспечивающий реализацию принципа инверсии зависимостей и реализующий правила создания объектов и независимость реализаций.
Итак, у нас есть класс, у класса есть конструктор, и есть несколько членов класса. Когда вы создаете сущность этого класса, вам необходимо обеспечить класс инстансами тех самых типов, которые объявлены для его членов класса. В данном случае, это имя машины и тип двигателя Engine. Вы будете использовать ссылки на объекты, соответственно, ссылки внутри вашего класса не будут пустовать.
Таким образом, вы реализуете ОOП и можете создавать объекты.
Александрийская и григорианская пасхалии
Не вдаваясь в историю, приведу основной принцип расчета христианской Пасхи. Пасха празднуется в первое воскресенье после первого весеннего полнолуния, т. е. первого полнолуния, бывшего не раньше дня весеннего равноденствия. И у православных, и у католиков используется не астрономическое, а расчетное весеннее полнолуние. Разница только в этом самом расчете.
Приводим данные и код в порядок: оптимизация и память, часть 1

О полезности индексов по выражениям
Заметки с MBC Symposium: еще о седловых точках
Напоследок, о второй части доклада Surya Ganguli — как теоретическое понимание процесса оптимизации может помочь на практике, а именно, какую роль играют седловые точки (первая часть вот тут, и она совершенно необязательна для чтения дальше).
ELK на Docker
Здесь я хочу рассказать о быстром старте с помощью Docker.
Разработка на PC и производительность — Memory Latency
Я наконец-то на одну такую попал, и очень радовался. На умных мужиков всегда радостно поглядеть и послушать.
Для отчета — кроме Херба, видел живого Олександреску и живого Walter Bright (который "D").
Лекция называлась «Machine Architecture: Things Your Programming Language Never Told You» (здесь можно скачать презентацию и видео) и была про конкретную часть abstraction penalty — Memory Latency.
Я попытаюсь коротко рассказать о ключевой мысли лекции. Она простая, очевидная и тысячу раз сказанная. Думаю, еще раз повторить азбуку — никогда не повредит.
Design Review vs Design by Committee
Одного из совершенно замечательных зовут Дэвид Блайс (David Blythe), и он архитект в Windows в области графики. Дядька раньше дизайнил OpenGL в SGI, писал по нему книжку, а сейчас вот работает в том числе над Direct3D. Дядька совершенно монструозный и замечательный. Я с ним говорил минут 20 и просветлился больше, чем за два предыдущих месяца. Читал его гуидлайны про API design и опять же радовался.
Отрывок на сегодня:
«DESIGN BY COMMITTEE. Avoid design by committee. There should be a single person with final say in the design… and this person should have good architectural experience and instincts.»
AlphaGo на пальцах
Deep Reinforcement Learning (или за что купили DeepMind)
Вот, собственно, главный артефакт (если вы это видео не видели, посмотрите обязательно, оно взрывает мозг)
Вот столько примерно публично известно про компанию, когда ее покупают за полмиллиарда долларов.
Задачка про парные числа
Есть большой массив из N 32-битных чисел. Каждое число встречается два раза, а два числа -- по одному. Найти эти два числа за один проход по массиву с константными затратами памяти (то есть не зависящими от размера массива).
Не забывайте использовать тег <spoiler> для решений в комментариях!
Нейросети vs вычисления на глазок
Сегодня я узнал, что люди могут на глаз прикидывать ранг матрицы!
(напомню, ранг — это количество линейно независимых строк или столбцов)
Типа, вот смотрят на вот это и говорят, что ранг —
3
Как же устоять и не попробовать обучить это делать нейросеть, подумали укурки cтуденты из Carnegie Mellon?
Заметки с MBC Symposium: применение deep learning в моделировании мозга
Посетил Стенфордский симпозиум, посвященный пересечению deep learning и neurosciencе, получил массу удовольствия.
Рассказываю про интересное — например, доклад Дэна Яминса о применении нейросетей для моделирования работы зрительной коры головного мозга.
Information
- Rating
- 10,998-th
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity