Pull to refresh
0
0
Кирилл @khlopko

Пользователь

Send message

Краткое введение в цепи Маркова

Reading time16 min
Views199K
image

В 1998 году Лоуренс Пейдж, Сергей Брин, Раджив Мотвани и Терри Виноград опубликовали статью «The PageRank Citation Ranking: Bringing Order to the Web», в которой описали знаменитый теперь алгоритм PageRank, ставший фундаментом Google. Спустя чуть менее двух десятков лет Google стал гигантом, и даже несмотря на то, что его алгоритм сильно эволюционировал, PageRank по-прежнему является «символом» алгоритмов ранжирования Google (хотя только немногие люди могут действительно сказать, какой вес он сегодня занимает в алгоритме).

С теоретической точки зрения интересно заметить, что одна из стандартных интерпретаций алгоритма PageRank основывается на простом, но фундаментальном понятии цепей Маркова. Из статьи мы увидим, что цепи Маркова — это мощные инструменты стохастического моделирования, которые могут быть полезны любому эксперту по аналитическим данным (data scientist). В частности, мы ответим на такие базовые вопросы: что такое цепи Маркова, какими хорошими свойствами они обладают, и что с их помощью можно делать?
Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments11

5 ошибок начинающего лида

Reading time6 min
Views34K

У каждого тимлида есть своё кладбище сотрудников управленческих ошибок. Каждый день публикуются новые статьи «5 ошибок начинающего разработчика», «7 примеров того, как не надо управлять процессами», «100 и 1 способ укладываться в сроки». И это круто!


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


Читать дальше →
Total votes 51: ↑45 and ↓6+39
Comments400

Уже не концепт: Samsung представила складной телефон Galaxy Fold за $1980

Reading time3 min
Views50K


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

Сейчас, похоже, то самое недалекое будущее уже наступило. Корпорация Samsung представила вполне рабочий складной телефон, который вышел на потребительский рынок. Называется он Galaxy Fold, а стоимость его… скажем, несколько выше средней цены по рынку — $1980.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments299

ООП мертво, да здравствует ООП

Reading time18 min
Views59K
image

Источники вдохновения


Этот пост возник благодаря недавней публикации Араса Пранцкевичуса о докладе, предназначенном для программистов-джуниоров. В нём рассказывается о том, как адаптироваться к новым ECS-архитектурам. Арас следует привычной схеме (объяснения ниже): показывает примеры ужасного ООП-кода, а затем демонстрирует, что отличным альтернативным решением является реляционная модель (но называет её «ECS», а не реляционной). Я ни в коем случае не критикую Араса — я большой фанат его работ и хвалю его за отличную презентацию! Я выбрал именно его презентацию вместо сотен других постов про ECS из Интернета потому, что он приложил дополнительные усилия и опубликовал git-репозиторий для изучения параллельно с презентацией. В нём содержится небольшая простая «игра», используемая в качестве примера выбора разных архитектурных решений. Этот небольшой проект позволил мне на конкретном материале продемонстрировать свои замечания, так что спасибо, Арас!

Слайды Араса выложены здесь: http://aras-p.info/texts/files/2018Academy — ECS-DoD.pdf, а код находится на github: https://github.com/aras-p/dod-playground.

Я не буду (пока?) анализировать получившуюся ECS-архитектуру из этого доклада, но сосредоточусь на коде «плохого ООП» (похожего на уловку «чучело») из его начала. Я покажу, как бы он выглядел на самом деле, если бы правильно исправили все нарушения принципов OOD (object-oriented design, объектно-ориентированного проектирования).

Спойлер: устранение всех нарушений OOD приводит к улучшениям производительности, аналогичным преобразованиям Араса в ECS, к тому же использует меньше ОЗУ и требует меньше строк кода, чем ECS-версия!

TL;DR: Прежде чем прийти к выводу, что ООП отстой, а ECS рулит, сделайте паузу и изучите OOD (чтобы знать, как правильно использовать ООП), а также разберитесь в реляционной модели (чтобы знать, как правильно применять ECS).
Читать дальше →
Total votes 55: ↑50 and ↓5+45
Comments48

Не потеряли ли на Большом адронном коллайдере свидетельства наличия новой физики?

Reading time7 min
Views21K


Детектор частиц ATLAS на БАК в Европейском центре ядерных исследований (ЦЕРН) в Женеве, Швейцария. БАК, построенный внутри подземного туннеля окружностью в 27 км, является крупнейшим и мощнейшим ускорителем частиц и крупнейшей машиной в мире. Но он способен записывать лишь малую долю собираемых им данных.

В Большом адронном коллайдере протоны одновременно кружатся по часовой и против часовой стрелки, и сталкиваются друг с другом, двигаясь при этом со скоростью, составляющей 99,9999991% от скорости света. В двух точках, где по схеме должно происходить наибольшее количество столкновений, построены огромные детекторы частиц: CMS и ATLAS. После миллиардов и миллиардов столкновений, произошедших на таких огромных энергиях, БАК позволил нам продвинуться дальше в нашей охоте за фундаментальной природой Вселенной и пониманием элементарных строительных блоков материи.

В сентябре прошлого года БАК отметил 10 лет своей работы, открыв бозон Хиггса, что стало его главным достижением. Но, несмотря на эти успехи, на нём не было обнаружено никаких новых частиц, взаимодействий, распадов или новой фундаментальной физики. А что хуже всего – большая часть данных, полученных с БАК, навсегда теряется.
Читать дальше →
Total votes 32: ↑24 and ↓8+16
Comments80

Анахронизмы, кранчи, дурная оргструктура: три боли тимлида в корпорации

Reading time7 min
Views4.2K
Роль тимлида в корпорации — это (относительная) стабильность. Можно быть уверенным, что через месяц руководство не растворится в тумане вместе с деньгами инвесторов, оставив вашу фотографию украшать сайт скандально обанкротившегося стартапа. Вы попадаете в респектабельную компанию с понятным продуктом и прозрачными условиями по ТК РФ. Но не стоит ждать, что вы окажетесь в сказке.

image

Александр Поломодов, руководитель разработки в управлении привлечением в Tinkoff.ru, продолжает срывать покровы с граблей, которые могут ждать тимлида на новом рабочем месте. В прошлой статье он рассказывал о работе в стартапах; сегодня речь про боли тимлидов в большой компании. Что делать, если компания работает, как в прошлом веке, о чем спрашивать на собеседовании, чтобы на работе не было мучительно больно, как (и стоит ли) бороться с ригидной оргструктурой — обо всем этом под катом.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Как разобраться в «иностранном» коде и влиться в новую команду?

Reading time4 min
Views13K


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

Любой код имеет собственную логику, основан на определенных принципах, в нем встречаются паттерны и технологии, характерные для команды, к которой присоединился программист. Но как начать быстро понимать чужой проект, при том что он вряд ли небольшой, а документации часто либо вообще нет, либо она недостаточна и неточна?
Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments1

Первый взгляд на FoundationDB, открытую Apple

Reading time9 min
Views18K
В прошлой статье мы рассматривали ограничения и препятствия, которые возникают, когда нужно горизонтально масштабировать данные и иметь гарантию ACID-свойств транзакций. В этой статье рассказываем о технологии FoundationDB и разбираемся, как она помогает преодолеть эти ограничения при разработке mission-critical приложений.

FoundationDB — это распределенная NoSQL база данных с ACID-транзакциями уровня Serializable, хранящая отсортированные пары ключ-значение (ordered key-value store). Ключами и значениями могут быть произвольные последовательности байт. У неё нет единой точки падения — все машины кластера равноправны. Она сама распределяет данные по серверам кластера и  масштабируется на лету: когда в кластер нужно добавить ресурсов, ты просто добавляешь адрес новой машины на конфигурационных серверах и база сама подхватывает ее.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments15

Исследователи из Google: для защиты от Spectre требуется изменение архитектуры процессоров, программные патчи не помогут

Reading time3 min
Views31K
В январе 2018 года исследователи Google раскрыли в публичном доступе информацию о фундаментальной аппаратной уязвимости в большинстве современных процессоров, имеющих спекулятивное выполнение команд. Уязвимость Spectre (и смежная Meltdown) эксплуатирует механизм предсказания ветвлений в CPU и позволяет проводить чтение данных через сторонний канал в виде общей иерархии кэш-памяти. Другими словами, любое приложение на компьютере может получить доступ на чтение к произвольным местам памяти, что нарушает изоляцию программ, провоцирует утечку данных, отказ в обслуживании и прочие неприятности.

Хуже всего, что уязвимости подвержены практически все современные процессоры (кроме RISC и российского «Эльбруса»), потому что предсказание ветвлений стало фундаментальной частью архитектуры современных CPU, от которой невозможно отказаться без значительной потери производительности.
Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments138

Дайджест интересных материалов для мобильного разработчика #285 (4 — 10 февраля)

Reading time3 min
Views5.3K
В новом выпуске мы рассказываем про серверные анимации, «плохой» Google, ускорение изображений и инструменты локализации, феерическое приложение для знакомств для холодильника и культуру роста в компаниях. Подключайтесь!

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments1

Практическое применение трансформации AST-деревьев на примере Putout

Reading time10 min
Views16K

Введение


Каждый день при работе над кодом, на пути к реализации полезного для пользователя функционала, становятся вынужденные (неизбежные, либо же просто желательные) изменения кода. Это может быть рефакторинг, обновление библиотеки или фреймворка до новой мажорной версии, обновление синтаксиса JavaScript (что в последнее время совсем не редкость). Даже если библиотека является частью рабочего проекта — изменения неизбежны. Большинство таких изменений — это рутина. В них нет ничего интересного для разработчика с одной стороны, с другой это не приносит ничего бизнесу, а с третьей, в процессе обновления нужно быть очень внимательным чтобы не наломать дров и не поломать функционал. Таким образом мы приходим к тому, что такую рутину лучше переложить на плечи программ, что бы они все делали сами, а человек, в свою очередь, контролировал все ли правильно сделано. Вот об этом и пойдет речь в сегодняшней статье.

Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments5

Устройство компилятора Swift. Часть 3

Reading time6 min
Views7.4K

Продолжаем изучать компилятор Swift. Эта часть посвящена Swift Intermediate Language.


Если вы не видели предыдущие, рекомендую перейти по ссылке и прочитать:


Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments1

Холиварный рассказ про линтеры 

Reading time20 min
Views66K
Все мы пишем код. Много кода. Само собой, бывают ошибки. Иногда это просто кривой код, а иногда цена ошибки — взорванный космический корабль. Конечно, никто не делает намеренных косяков, все в меру возможностей стараются следить за качеством, но без инструментов статического анализа вряд ли можно быть уверенным, что всё идеально.

Линтеры помогают приводить код к единому стилю и избегать ошибок. Правда, только в том случае, если вы готовы к страданиям, а не отмахиваетесь в конце концов «pylint: disable», только чтобы оно отстало. Какой должен быть линтер, и почему таки не обойтись Pylint, знает Никита Соболев (sobolevn), который понимает и любит линтеры настолько, что даже свою компанию назвал так, чтобы их не расстраивать — wemake.services.

image

Ниже текстовая версия доклада на Moscow Python Conf++ про линтеры, как их делать правильно и как не нужно. В выступлении было много интерактива, онлайна и общения с аудиторией. Спикер по ходу дела проводил опросы и старался переубедить слушателей: смотрел на тренд, и как в дебатах, пытался выровнять соотношение и поменять общественное мнение. Какая-то часть с опросами попала в расшифровку, но не вся, поэтому для полноты картины прилагается видео.
Total votes 30: ↑26 and ↓4+22
Comments19

Собеседуем работодателя или как не уволиться в первый месяц

Reading time2 min
Views74K
Первый рабочий день и… о боже, что я тут делаю?! Нет, ну серьезно кто вообще так пишет код?
Дружный коллектив? Мои коллеги вообще заметили, что я вышел на работу?

Древний SVN, шумный опен спейс и «типа SCRUM», и это лишь малая часть из тех «приятных» сюрпризов, которые вас могут поджидать в первый рабочий день.
Знакомая ситуация?
Читать дальше →
Total votes 155: ↑134 and ↓21+113
Comments176

Устройство компилятора Swift. Часть 4

Reading time9 min
Views6.4K

Это последняя часть моего обзора компилятора Swift. Я покажу, как можно осуществить генерацию LLVM IR из AST и что выдаёт настоящий фронтенд. Если вы не читали предыдущие части, то переходите по ссылкам:


Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments2

О линтерах, качестве кода, качестве вообще и управлении качеством

Reading time7 min
Views19K
Бойтесь своих желаний, они могут исполниться.
Народная мудрость.

Одна пара пожелала пожениться и обрести вечное счастье. Я взорвал их машину у церкви сразу после венчания.
One Wish Grant, фильм Трасса 60.

image

Ещё одна философская заметка про управление, а данном случае качеством, состоит из трёх частей: очень абстрактной, в меру абстрактной, конкретной и отдельного вывода. Содержит критику существующей практики применения линтеров.
Читать дальше →
Total votes 43: ↑34 and ↓9+25
Comments23

Как я получил работу с зарплатой 300 000 долларов в Кремниевой долине

Reading time17 min
Views63K
В конце января мы публиковали перевод на тему «Как я успешно прошел шесть собеседований в Кремниевой долине». Пришло время поделиться продолжением, где речь пойдет о более животрепещущей теме — о деньгах и о том, как получить больше.

«В течение недели мне предложили должность инженера-программиста в Google, Facebook, Amazon, Apple, LinkedIn и Yelp. Вот как я проходил у них собеседование.


Что если я скажу вам… что собеседования не так страшны, как кажется?
Читать дальше →
Total votes 67: ↑51 and ↓16+35
Comments92

Как Project Infer от Facebook помогает искать баги в мобильных приложениях перед деплоем

Reading time4 min
Views4K


Несколько дней назад команда инженеров Facebook отличилась — ее удостоили награды Most Influential POPL Paper Award. В среде специалистов по машинному обучению это весьма почетно. Награду вручили за работу Compositional Shape Analysis by Means of Bi-abduction, которая раскрывает нюансы Project Infer. Сам проект предназначен для обнаружения и ликвидации багов в коде мобильного приложения перед его деплоем.

Баги в программном обеспечении для мобильных устройств обходятся очень дорого как разработчикам, так и пользователям. Что касается первых, то обнаружение проблемы в уже размещенном в каталогах приложении — ночной кошмар для любого специалиста. Конечно, софт тестируется, работу программ проверяют по определенным шаблонам. Но чаще разработчики не могут предусмотреть всего, и баги в приложении обнаруживаются уже после деплоя.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments2

Так ли в Европе, как о ней пишут?

Reading time4 min
Views85K
image

На Хабре очень много статей, связанных с жизнью в Европе и переездом, которые могут помочь людям найти ответ на вопрос «а стоит ли, собственно, в Европу переезжать?».

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

Но буквально вчера вышла статья о Люксембурге и Европе, вызвавшая довольно большой резонанс и затронувшая много неоднозначных тем. И, скажем так, не подкреплённая никакими пруфами, кроме мнения автора.
Прочитав эту статью, мне захотелось написать о некоторых поднятых в ней вопросах не только с точки зрения личного восприятия автора, но и с точки зрения фактов и цифр.
Читать дальше →
Total votes 116: ↑86 and ↓30+56
Comments733

Производительность в iOS — Core Animation, Offscreen Rendering и System Trace. Часть 2

Reading time7 min
Views12K



Как избежать проблем с производительностью с помощью пресета Core Animation, что использовать для трассировки участков кода и с помощью каких функций сократить долю вычислительных операций в приложении с 26% до 0.6% — читай во второй части статьи по материалам доклада Люка Пархэма на прошлогодней конференции MBLT DEV. Первая часть статьи доступна здесь.


Под катом не только полезные советы, но и последние early bird билеты на MBLT DEV 2018 — купить их можно только сегодня.

Total votes 17: ↑16 and ↓1+15
Comments1

Information

Rating
Does not participate
Location
Николаев, Николаевская обл., Украина
Date of birth
Registered
Activity