Pull to refresh
16
0

Senior Frontend Developer

Send message

Как я неделю просидел над десятью строками кода

Reading time4 min
Views27K


Недавно я столкнулся с серьезным препятствием, когда работал над возможностью перетаскивать вкладки в приложении Warp: если попытаться передвинуть конкретную вкладку, она потянет за собой всё окно. Понадобилась целая неделя изысканий и экспериментов, чтобы установить, откуда берет начало этот баг. Но в конечном итоге я исправил это в pull request-е, который состоял менее чем из десяти строк кода! Это несоответствие усилий выхлопу также заставило меня проникнуться сознанием того, что создание ПО включает в себя гораздо больше, чем просто написание кода. В этой статье я расскажу, как всё происходило.

Немного контекста: Warp – это терминал для разработчиков на базе Rust. При его создании мы использовали собственный кастомный UI-фреймворк, так что всё, что касается вкладок и перетаскивания, пришлось разрабатывать с нуля.
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments41

Kotlin. Ключевые слова in и out. А так же что такое ковариантность и контрвариантность

Level of difficultyMedium
Reading time12 min
Views11K

Здравствуйте!

В этой статье речь пойдет про вариантность параметризованных типов в Котлин.

Цель данной статьи дать первичное понимание работы ковариантности и контрвариантности в Котлин. Здесь будет рассмотрено использование ключевых слов in и out в параметризованных типах.

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

История Мэла, настоящего программиста

Reading time7 min
Views21K

Эта заметка была впервые опубликована в Usenet автором, Эдом Натером (utastro! Nather) 21 мая 1983 года. Вполне вероятно, что на момент публикации вы еще даже не родились на свет. Полагаем, эту историю необходимо сохранить — хотя бы потому что теперь от настоящего «железа» мы отделены толстым слоем абстракций.

Читайте и получайте удовольствие!

Читать далее
Total votes 69: ↑64 and ↓5+59
Comments20

Про злые угри и чёрные точки и добрые сальные нити (не путайте их)

Reading time8 min
Views70K
Чёрные точки = что-то не так с обменом в коже. Это устья волосяных фолликулов, закупоренные окислившейся смесью отмерших частиц эпидермиса и кожного сала. Чёрными они становятся из-за контакта сала с кислородом и последующего окисления. Чаще всего пациенты не воспринимают чёрные точки как что-то серьёзное, ищут себе простую косметическую линейку, которая им за неделю поможет, и очень расстраиваются, когда выясняется, что это не так.

image
Так выглядит механизм образования комедонов изнутри

Потому что это симптом, а проблема начинается чуть раньше. Например, с ДНК или неправильного питания. Обычно чёрные точки появляются из-за избыточной секреции сальных желёз, закупорки фолликулов секретом сальных желёз и кератиноцитами или колонизации фолликулов Propionibacterium acnes (этот анаэроб, кстати, входит в состав нормальной микрофлоры человека (сейчас cutibacterium acnes)). Упрощённо говоря, когда в волосяной фолликул набивается всякое типа мёртвой кожи, сала и грязи, начинается закупорка пор изнутри. А гигиена и косметика действуют снаружи. И сразу развею пару мифов: это не из-за сладкого и не из-за молока.

А вот сальные нити — обязательный и полезный элемент нашей кожи. Выглядят они иногда страшнее, но решение очень и очень простое.
Читать дальше →
Total votes 77: ↑56 and ↓21+35
Comments24

7 ложных предположений о том, как устроены строки

Reading time10 min
Views24K

Как Unicode уничтожает большинство ваших предположений о том, как на самом деле работают строки



Когда речь идет о написании чего-то простого, мы, программисты, обычно действуем интуитивно. В случае с простыми вещами мы полагаемся на четкий набор предположений вместо конкретных знаний о том, как эти вещи работают. Например, мы предполагаем, что если b = a + 1, то b больше a, или что если мы применим функцию malloc для какого-то буфера, то получим необходимое количество памяти для записи. Мы не заглядываем в документацию всякий раз, когда имеем дело с мелочами.


Мы делаем так, потому что тотальная проверка замедлит работу. Однако если бы мы все-таки провели проверку, мы бы обнаружили, что обычно ошибаемся в своих предположениях. Существует арифметическое переполнение, в результате которого a + 1 может быть значительно меньше, чем a. Иногда malloc дает нам null вместо буфера и мы оказываемся в пролете.


Нам обычно приходится обжечься на таких вещах, чтобы хотя бы немного изменить свои предположения. И даже тогда мы обычно исправляем их весьма условно.
Столкнувшись с досадной ошибкой переполнения, мы можем скорректировать свое предположение о целых числах в виде «a + 1 больше a, если отсутствует вероятность, при которой a представляет собой очень большое число». И мы действуем исходя из этого, вместо того, чтобы обдумать четкие правила, по которым работает переполнение.


Уточненные предположения – это опыт. Чаще всего они позволяют нам работать быстрее и правильнее. Однако мы можем вообще переместить некоторые вещи, например, правильную обработку malloc, из нашей внутренней категории «простые вещи» во внутреннюю категорию «сложные вещи». И тогда мы действительно можем пойти и уточнить, как они работают.

Читать дальше →
Total votes 89: ↑87 and ↓2+85
Comments40

Super Duper Secure Mode

Reading time6 min
Views2.3K

Команда VR (Vulnerability Research) экспериментирует с новой функцией, которая бросает вызов некоторым общепринятым предположениям, которых придерживаются многие в коммюнити браузеров. Мы надеемся создать что-то, что изменит современные эксплойты и значительно повысит трудозатраты для злоумышленников. Меры по смягчению последствий издавна обходятся без внимания, поэтому мы стремимся получить отзывы от сообщества, чтобы создать что-то ценное и долговременное.

Самое главное, что мы планируем получать - удовольствие от этого проекта. Это включает в себя присвоение эксперименту немного провокационного названия, так как мы думаем, что оно забавное, и еще слишком рано для чего-то официального.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments0

Фантастические книги, которые вы могли пропустить в 2020 году

Reading time7 min
Views65K

Что делать, когда хочется писать о книгах, но рубеж года уже пройден, а 2021 пока не радует новинками? Можно еще раз вспомнить достойные фантастические романы, которые вышли на русском в 2020, и заслуживают внимания, хотя их авторы, по крайней мере пока, не могут похвастаться большой популярностью в России. Поэтому хочу рассказать о нескольких фантастических книгах прошлого года, которые произвели на меня хорошее впечатление. 

Буду рад, если в комментариях поделитесь своими фантастическими находками.

Читать далее
Total votes 57: ↑54 and ↓3+51
Comments63

История Dizzy

Reading time7 min
Views13K

image


Оставленный без внимания профильными изданиями, но любимый игроками, Диззи был феноменом среди блокбастеров в Великобритании середины 80-х. А история о том, как улыбающееся яйцо три года доминировало в топах программного обеспечения, — это наглядный пример «программирования в спальне», доведённого до абсолюта.


Близнецы Оливеры, только что освоившие новенький BBC Micro (один из ранних домашних компьютеров), приняли участие в конкурсе детской телепередачи The Saturday Show по созданию видеоигры. Они победили, оказавшись единственными, кто прислал настоящую игру, а не набросок, нарисованный мелком. Позже братья продали свою Gambit компании Acornsoft за 200 фунтов.


Обнаружив, что видеоигры могут приносить деньги, Эндрю и Филип Оливеры потратили следующий год на написание программ для различных издателей — сначала на своём BBC, а затем перешли на Amstrad (другой домашний компьютер). Затем, в сентябре 1985 года, братья посетили первую в истории ECTS (Европейскую компьютерную выставку), где познакомились с Ричардом и Дэвидом Дарлингами. Будущим основателям Codemasters требовались программисты-фрилансеры. «Их предложение заключалась в том, что если мы напишем для них игру, то получим 10 тысяч фунтов», — вспоминает Филип Оливер. — Но было одно условие: игра должна выйти к Рождеству». Поэтому братья поспешили домой и за шесть недель написали платформер Super Robin Hood. А продано было 100 тысяч копий игры.

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

Светодиодное враньё невиданных масштабов

Reading time3 min
Views260K
В магазинах можно встретить множество мощных светодиодных ламп, например «свечки» и «шарики» 9 и 11 Вт.

Вот только свечек и шариков такой мощности сегодня существовать не может.
Читать дальше →
Total votes 365: ↑364 and ↓1+363
Comments569

Vulkan-tutorial. Урок 1.1 — Вступление

Reading time5 min
Views45K

В связи с тем, что у меня не так много времени для ресерча каких-то новых штук и написания статей о них, я решил перевести серию уроков по Vulkan. Надеюсь, что мои переводы будут кому-то полезны и не очень плохого качества. Для начала обучения — прошу под кат.


Автор оригинала дал свое согласие на перевод. Также, когда я доперевожу все статьи и у меня будет время отформатировать их для github, он добавит русский перевод на свой сайт.

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

Базы данных: большой обзор типов и подходов. Доклад Яндекса

Reading time28 min
Views79K
Это конспект лекции Татьяны Денисовой tdenisova — бэкенд-разработчика в Яндекс.Учебнике. Вы узнаете, какие бывают базы данных, какие их особенности важно помнить, как в работе с данными учитывать характеристики системы и планы масштабирования, в какую из тем нужно углубиться для решения конкретной задачи. А также как при возникновении багов определить, является ли работа с БД источником проблемы (и если да, то в какую сторону копать).



— О чем именно мы будем говорить? Не о примитивных селектах и джойнах — о них, я думаю, большинство из вас уже знает.
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments15

Как Microsoft из монстра эпохи доткомов превратилась в корпорацию-мечтателя

Reading time11 min
Views20K
Многие не любят Microsoft за ее непростое прошлое и решения, которые принимались Гейтсом, Балмером и даже Наделлой, когда они руководили компанией в разные годы. Microsoft сделала много ошибок за десятилетия своего существования, но в отличие от большинства людей, причастных к IT-индустрии, я никогда по-настоящему не испытывал ненависти к этой компании. Ну все ненавидят Microsoft, да и я буду ненавидеть, что уж тут, отбиваться от коллектива?



В этот момент многие олдовые фанаты Linux потянулись за ружьем, но давайте будем объективны: в последнее десятилетие Microsoft дает все меньше поводов для ненависти. Да, Windows 10 с каждым патчем все больше и больше выводит из себя. Да, Microsoft бросила на произвол судьбы малое, но крайне преданное сообщество фанатов их мобильной платформы.

Но при этом я, как человек, внимательно наблюдающий за новыми продуктами и вообще, за новостями компании, понимаю, что руководство Сатьи Наделлы войдет в историю Microsoft, как эпоха мечтателей и визионеров. И сейчас я постараюсь объяснить, почему я пришел к подобным выводам.
Total votes 67: ↑63 and ↓4+59
Comments33

Опенсорсные альтернативы Google Analytics на своём хостинге

Reading time5 min
Views22K

Веб-интерфейс опенсорсного сервиса аналитики Matomo

Дегуглификация онлайновой жизни требует внедрения свободных альтернатив во всех областях. Защитники приватности ведут списки таких продуктов по категориям.

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

К счастью, есть ряд свободных, опенсорсных альтернатив Google Analytics, которые к тому же работают быстрее, поскольку скрипты меньше по размеру и загружаются с вашего собственного хостинга, а не со стороннего сервера. Информация о пользователях никуда не отправляется, а многие сервисы не используют куки и соответствуют законодательству GDPR о защите личных данных.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments18

Зачем процессорам нужен кэш и чем отличаются уровни L1, L2, L3

Reading time10 min
Views117K


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

Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)?
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments40

Удалёнка за доллары: а меня возьмут?

Reading time6 min
Views68K

Удалёнка за доллары: а меня возьмут?


Удалёнка в хорошей зарубежной компании — крутая штука. Сидя даже где-то далеко в провинции, можно зарабатывать большие деньги: от $3,000 в месяц на средненькой позиции в неизвестной компании до $186,000 в год на позиции senior programmer в Basecamp.


Работая из дома, вы можете развиваться в международной среде: заводить полезные знакомства и практиковать английский с людьми со всего света. При этом семья и друзья по-прежнему рядом. А если в будущем вы захотите переехать за границу, у вас уже будет релевантный опыт и критически важные навыки коммуникации.


У меня получилось так же: спустя почти два года тимлидерства в американской компании, я уехал в другую страну — но по-прежнему считаю удалёнку «за доллары» очень крутым вариантом занятости, по многим пунктам даже существенно лучше переезда за границу.


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

Читать дальше →
Total votes 52: ↑46 and ↓6+40
Comments80

Как устроена нейросеть

Reading time3 min
Views9.5K
Всем привет! Меня зовут Константин Берлинский, я фуллстек-разработчик в компании БКС. Недавно я самостоятельно изучал нейросети и по итогам написал книгу. Ниже я расскажу как устроена простейшая нейросеть.


Читать дальше →
Total votes 26: ↑14 and ↓12+2
Comments23

Подозрительные типы

Reading time8 min
Views12K

В их внешнем облике ничто не вызывает подозрений. Более того, они даже кажутся тебе хорошо и давно знакомыми. Но это только до тех пор, пока ты их не проверишь. Вот тут-то они и проявят свою коварную сущность, сработав совсем не так, как ты ожидал. А иногда выкидывают такое, от чего волосы просто встают дыбом — к примеру, теряют доверенные им секретные данные. Когда ты делаешь им очную ставку, они утверждают, что не знают друг друга, хотя в тени усердно трудятся под одним колпаком. Пора уже наконец-то вывести их на чистую воду. Давайте же и мы разберемся с этими подозрительными типами.


Типизация данных в PostgreSQL, при всей своей логичности, действительно преподносит порой очень странные сюрпризы. В этой статье мы постараемся прояснить некоторые их причуды, разобраться в причине их странного поведения и понять, как не столкнуться с проблемами в повседневной практике. Сказать по правде, я составил эту статью в том числе и в качестве некоего справочника для самого себя, справочника, к которому можно было бы легко обратиться в спорных случаях. Поэтому он будет пополняться по мере обнаружения новых сюрпризов от подозрительных типов. Итак, в путь, о неутомимые следопыты баз данных!

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

Про перевод слов «выбор»/«выбирать» без choose/choice/select

Reading time4 min
Views5.3K


Новая подборка по переводческим решениям для еще одного популярного слова в ИТ- и бизнес-литературе. Смотрите, пользуйтесь.


Синонимы


decide


Начнется все с самого простого, например с выбора фильма для просмотра.
It starts with simple things, like deciding which movie to watch.

Когда Великобритания оказалась перед выбором, выходить из ЕС или нет…
… when Britain needed to decide whether it should leave the EU…
Читать дальше →
Total votes 14: ↑9 and ↓5+4
Comments5

Имитируем функционал зависимых типов в системе типов Rust

Reading time30 min
Views7.4K

Системы типов — это настоящее безумие.


КДПВ в подражание XKCD


Некоторое время назад я уже отметился здесь со статьёй, в которой пытался разобрать, какие гарантии в compile-time может дать система типов Rust. Кое-какие интересные моменты удалось выловить уже тогда, однако больше всего меня зацепил весьма развёрнутый комментарий, описывающий некоторые вещи, доступные в зависимо-типизированном Idris.
Разумеется, я не мог остаться в стороне. Результат исследований доступен на github, а детальный разбор — под катом.

Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments24
1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity