Pull to refresh
23
0
Андрей Александрович @xorbot

Программист

Send message

Исследуем баг iOS с помощью Hopper

Reading time 8 min
Views 9K
Привет! Меня зовут Александр Никишин, я занимаюсь разработкой iOS-приложений в компании Badoo. В статье я расскажу о том, как мы исследовали баг в UIKit, который Apple не хотела исправлять на протяжении полугода.



Всё началось в августе 2019 года с первых бета-версий iOS 13. Тогда мы впервые столкнулись с проблемой. В приложениях Badoo и Bumble мы постоянно работаем над улучшением интерфейсов и, например, стараемся максимально оптимизировать нудный и не любимый пользователями процесс регистрации. Системные предиктивные подсказки над клавиатурой — отличный способ сокращения количества кликов пользователя при вводе данных. Однако в новой версии iOS мы с удивлением обнаружили, что подсказки при вводе номера телефона пропали.
Читать дальше →
Total votes 69: ↑68 and ↓1 +67
Comments 12

Памятки по искусственному интеллекту, машинному обучению, глубокому обучению и большим данным

Reading time 4 min
Views 36K


В течение нескольких месяцев мы собирали памятки по искусственному интеллекту, которыми периодически делились с друзьями и коллегами. В последнее время сложилась целая коллекция, и мы добавили к памяткам описания и/или цитаты, чтобы было интереснее читать. А в конце вас ждёт подборка по сложности «О большое» (Big-O). Наслаждайтесь.

UPD. Многие картинки будут читабельнее, если открыть их в отдельных вкладках или сохранить на диск.
Читать дальше →
Total votes 51: ↑47 and ↓4 +43
Comments 9

История одного SSL рукопожатия

Reading time 5 min
Views 17K
Привет, Хабр!

Недавно мне пришлось прикручивать SSL с двухсторонней аутентификацией (mutual authentication) к Spring Reactive Webclient. Казалось бы, дело нехитрое, но вылилось оно в блуждание в исходниках JDK с неожиданным финалом. Опыта набралось на целую статью, которая может оказаться полезной инженерам в повседневных задачах или при подготовке к собеседованию.

Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 13

Как устроена депрессия?

Reading time 23 min
Views 151K
Классификация депрессивных расстройств; роль моноаминов (дофамина, норадреналина и серотонина); механизмы действия антидепрессантов; депрессия, стресс и нейропластичность.

image

Депрессия (от лат. Deprimo — подавить) — психическое заболевание, характеризующееся «депрессивной триадой», включающей в себя следующие нарушения:

1. В эмоциональной сфере. Подавленное настроение и ангедония — невозможность извлечь удовольствие из естественных вещей: еды, алкоголя, общения, секса и т.д.

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

3. В двигательной сфере. Как правило, двигательная заторможенность, но может наблюдаться и обратная реакция — ажитированное возбуждение: больной в спокойной обстановке может постоянно вскакивать, размахивать руками, постоянно менять позу, или, например, встать и уйти посредине разговора.

image
Психиатрия: национальное руководство. М.: ГЭОТАР-Медиа, 2009. 1000 с.
Есть еще дополнительные симптомы: потеря или усиление аппетита (потеря или набор веса), нарушения сна (сонливость или бессонница), чувство усталости, повышенная утомляемость и т.д.

По данным ВОЗ (Информационный бюллетень №369) от депрессии страдает более 300 миллионов человек, и этот показатель имеет тенденцию к росту. Депрессия отличается от обычных изменений настроения и кратковременных эмоциональных реакций на проблемы в повседневной жизни. Она может привести к серьезным нарушениям здоровья, социальной дезадаптации, снижению работоспособности и обучения. В худших случаях может приводить к самоубийству.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 75

Перевод отрывков из книги Роберта Хайнлайна «Заберите себе правительство» — часть 23

Reading time 23 min
Views 5.8K

Как составить список тех избирателей, которых нужно посетить обязательно.


Предположим, в вашем избирательном округе живет 320 000 постоянных жителей в 100 000 домах. Сомневаюсь, что у вас достаточно волонтеров, чтобы зайти в каждый из этих домов. К тому же, только 70 000 из всех этих жителей – члены вашей партии, и только от 25 000 из них можно ожидать голосования на праймериз. Эти 25 000 живут примерно в 15 000 отдельных домах (цифры не высосаны из пальца, а основаны на статистических исследованиях). Имеющиеся у вас 100 волонтеров и один неутомимый кандидат смогут обойти эти 15 000 домов только в том случае, если будут знать точно, какие дома нужно посетить обязательно. К счастью, существуют способы, позволяющие это узнать.

Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 0

Как работает Git

Reading time 19 min
Views 148K
В этом эссе описана схема работы Git. Предполагается, что вы знакомы с Git достаточно, чтобы использовать его для контроля версий своих проектов.

Эссе концентрируется на структуре графа, на которой основан Git, и на том, как свойства этого графа определяют поведение Git. Изучая основы, вы строите своё представление на достоверной информации, а не на гипотезах, полученных из экспериментов с API. Правильная модель позволит вам лучше понять, что сделал Git, что он делает и что он собирается сделать.

Текст разбит на серии команд, работающих с единым проектом. Иногда встречаются наблюдения по поводу структуры данных графа, лежащего в основе Git. Наблюдения иллюстрируют свойство графа и поведение, основанное на нём.

После прочтения для ещё более глубокого погружения можно обратиться к обильно комментируемому исходному коду моей реализации Git на JavaScript.
Читать дальше →
Total votes 110: ↑99 and ↓11 +88
Comments 38

Параллельное программирование с CUDA. Часть 1: Введение

Reading time 11 min
Views 126K

Еще одна статья о CUDA — зачем?


На Хабре было уже немало хороших статей по CUDA — раз, два и другие. Однако, поиск комбинации «CUDA scan» выдал всего 2 статьи никак не связанные с, собственно, алгоритмом scan на GPU — а это один из самых базовых алгоритмов. Поэтому, вдохновившись только что просмотренным курсом на Udacity — Intro to Parallel Programming, я и решился написать более полную серию статей о CUDA. Сразу скажу, что серия будет основываться именно на этом курсе, и если у вас есть время — намного полезнее будет пройти его.
Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Comments 36

[LibGDX] Создаем клон Flappy Bird — Zombie Bird

Reading time 127 min
Views 197K
Доброго времени суток %username%. Не давно наткнулся на хороший туториал по созданию клона игры Flappy Bird используя LibGDX и этот туториал мне понравился своей простотой и детализацией.

Я отдаю себе отчет, что тема создания клонов данной игрушки изъела себя, но возможно кому-то пригодится еще один хороший туториал.

Туториал разбит на 12 дней, содержит множество картинок, полотен кода и исходный код разбит по дням. Кому интересно, добро пожаловать под кат.
Подробнее
Total votes 111: ↑102 and ↓9 +93
Comments 29

Советы и рецепты начинающему Android программисту

Reading time 12 min
Views 78K
Добрый день, уважаемые хабраюзеры.

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

Поэтому в данном посте я предлагаю вашему вниманию сборник рецептов и советов, которые помогут быстрей и правильней создать Ваше приложение.
В бой!
Total votes 46: ↑35 and ↓11 +24
Comments 60

Шпаргалка по HTTP-библиотекам для С++

Reading time 12 min
Views 107K
К сожалению, в стандартной библиотеке языка С++ нет никаких средств для работы с протоколом HTTP. Возможно, в будущем появятся, но на данный момент каждый раз при необходимости дёрнуть какой-нибудь REST-сервис, пропарсить веб-страничку, написать простенького бота или краулера приходится задаваться вопросами «А какую же библиотеку взять, так чтобы побыстрее и попроще?». Иногда проект уже использует какой-то фреймворк (а иногда даже несколько) и тогда приходится вспоминать «А как же сделать HTTP-запрос имеющимися средствами?». Чтобы не путаться я решил написать для себя шпаргалку с примерами HTTP-запросов на С++ с применением разных библиотек. А самое удобное место для хранения подобных шпаргалок — Хабр: и сам не потеряешь, и другим может пригодиться.

Будут рассмотрены:
  • WinInet
  • WinHttp
  • Casablanca
  • Qt
  • POCO
  • wxWidgets
  • Boost.Asio
  • libcurl
  • neon
  • .NET (С++/CLI)
  • IXMLHTTPRequest
  • HappyHttp
  • cpp-netlib


Читать дальше →
Total votes 96: ↑89 and ↓7 +82
Comments 38

[кейс] Как навести порядок снизу: за 90 дней от бардака к проектному офису

Reading time 2 min
Views 32K
Не так давно мы проводили опрос по проблемам в проектах для нашей новой программы “Формула управления проектами”. Получили более 600 ответов, которые распределились в темы работы с заказчиком, оценок работ, сроков, коммуникаций и прочих безусловно нужных проектных вещей.

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

Мы пригласили в студию нашего эксперта по управлению проектами Ивана Селиховкина (selikhovkin) и попросили поделиться историей наведения порядка. В итоге Иван рассказал историю о том, как он с коллегами по шагам за 90 дней привел компанию от хаоса к работающему проектному офису. Находясь при этом не на должности ТОП-менеджера. Все изменения шли СНИЗУ.



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

Если это видео придаст правильный заряд, будем категорически рады. Хороших выходных!

P.S. Если поможете нам с опросом по проблемам проектов — будем отдельно благодарны.

P.P.S. Краткое содержание истории по шагам — под катом:

По шагам: за 90 дней от хаоса к порядку
Total votes 36: ↑27 and ↓9 +18
Comments 9

Почему в России почти нет гражданского/коммерческого высокотехнологичного производства?

Reading time 27 min
Views 407K
Статью с обзором ситуации с микроэлектроникой в России я закончил утверждением, что сейчас в России есть технические возможности для создания любых военных микросхем (если не считаться с ценой). Однако и в комментариях к той статье, и во многих других — всех больше волновал вопрос отсутствия (на уровне погрешности измерений) производства чисто-коммерческих (гражданских) высокотехнологичных продуктов. Этот вопрос волновал и меня, потому я постоянно мучил вопросами всех, кто так или иначе связан с высокими технологиями и бизнесом в России.

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

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

Сразу нужно отметить, что в связи с многогранностью проблемы объем статьи получился довольно большой, так что можно начать читать с резюме в конце, и затем прочитать лишь те разделы, которые вызовут интерес. Сразу хочу предупредить — повествование «нелинейное», соседние заголовки могут описывать разные аспекты проблемы и быть друг с другом практически не связанными.
Читать дальше →
Total votes 389: ↑380 and ↓9 +371
Comments 304

Логика мышления. Часть 1. Нейрон

Reading time 10 min
Views 313K


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

В настоящем цикле статей планируется рассказать о той концепции интеллекта над которой мы сейчас работаем и продемонстрировать некоторые решения, являющиеся принципиально новыми в сфере моделирования работы мозга. Но чтобы повествование было понятным и последовательным оно будет содержать не только описание новых идей, но и рассказ о работе мозга вообще. Какие-то вещи, особенно в начале, возможно покажутся простыми и общеизвестными, но я бы советовал не пропускать их, так как они во многом определяют общую доказательность повествования.
Читать дальше →
Total votes 62: ↑53 and ↓9 +44
Comments 23

CRTP. Static polymorphism. MixIn. Размышления на тему

Reading time 9 min
Views 38K
В этом посте я поразмышляю на тему статического полиморфизма в С++, архитектурных решениях, строящихся на его основе. Рассмотрю интересную идиому — CRTP. Приведу несколько примеров ее использования. В частности, рассмотрю концепцию MixIn классов. Пишу, чтобы систематизировать собственные знания, но может быть и вы сможете найти что-то интересное для себя.
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 6

Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть 3)

Reading time 6 min
Views 84K

Подолжаю публиковать авторскую переработку Understanding EXPLAIN от Guillaume Lelarge.
Ещё раз обращу внимание, что часть информации для краткости опущено, так что настоятельно рекомендую ознакомиться с оригиналом.
Предыдущие части:

Часть 1
Часть 2
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Comments 2

Верстка для самых маленьких. Верстаем страницу по БЭМу

Reading time 14 min
Views 386K
Недавно хабраюзер Mirantus написал статью «Как сверстать веб-страницу», в которой рассказывал о том, как же сверстать веб-страничку. В его статье было подробно рассмотрено, как выделить отдельные элементы из заданного шаблона, подобрать шрифты и т.п. Однако его подход к написанию, собственно, веб-страницы мне показался не очень хорошим, о чем я написал в комментариях.

В данной статье я хочу рассказать, о том, как можно сверстать «хорошо» (по крайней мере структурировано ;), а заодно рассказать и о методологии, которая может «упростить жизнь» при верстке. Структура поста будет следующей:

  • BEM
  • Собственно пример — как сверстать страницу

Читать дальше →
Total votes 154: ↑133 and ↓21 +112
Comments 172

Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть 2)

Reading time 4 min
Views 136K

Подолжаю публиковать авторскую переработку Understanding EXPLAIN от Guillaume Lelarge.
Ещё раз обращу внимание, что часть информации для краткости опущено, так что настоятельно рекомендую ознакомиться с оригиналом.
Предыдущие части:

Часть 1
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 4

Оптимизация запросов. Основы EXPLAIN в PostgreSQL

Reading time 3 min
Views 189K

Почему запрос выполняется так долго? Почему не используются индексы?
Наверное, все слышали об EXPLAIN в PostgreSQL. Но не так много тех, кто понимает, как его использовать. Сам длительное время не мог найти доступного для понимания учебника (плохо искал?).
Надеюсь, эта статья поможет желающим разобраться с этим замечательным инструментом.
Читать дальше →
Total votes 35: ↑24 and ↓11 +13
Comments 14

Уроки по электрическим цепям — линии передачи

Reading time 10 min
Views 233K
Ещё не начав читать статью, попробуйте подумать над вопросом: побежит ли ток, если подключить к батарейке очень длинный провод(более чем 300 тысяч километров, сверхпроводник), если противоположные концы провода никуда не подключены? Сколько Ампер?

Прочитав эту статью, вы поймёте в чём смысл волнового сопротивления. Из лекций по теории волн я вынес только то, что волновое сопротивление — это сопротивление волнам. Большая часть студентов, кажется, поняла ровно то же самое. То есть ничего.

Эта статья — весьма вольный перевод этой книги: Lessons In Electric Circuits
Статьи по теме: На Хабре: Контакт есть, сигнала нет
Трэш в Википедии: Длинная линия

Читать дальше →
Total votes 99: ↑97 and ↓2 +95
Comments 61

Окрашивание изображений

Reading time 2 min
Views 57K

Здравствуй, Хабрахабр. Сегодня мы будем раскрашивать.
Что здесь будет? Будет поиск цветного изображения со схожими цветами по черно-белому и метод переноса цвета с первого на второе.
Читать дальше →
Total votes 120: ↑120 and ↓0 +120
Comments 60
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity