Pull to refresh
36
0
Алексей Савченко @Extremum

Web developer

Send message

Неочевидная причина, почему 90% ваших начинаний проваливаются, толком не начавшись

Level of difficulty Easy
Reading time 5 min
Views 44K

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

Читать далее
Total votes 99: ↑75 and ↓24 +51
Comments 111

Уволился и уехал на «раннюю пенсию» в Португалию два года назад. Что было дальше?

Level of difficulty Easy
Reading time 16 min
Views 55K

"Reduce the complexity of life by eliminating the needless wants of life, and the labors of life reduce themselves." - Edwin Way Teale

Примерно два года назад в декабре 2020 года я ушел с работы и решил попробовать пожить на доход с капитала следуя "правилу 4%". Как-то незаметно прошло два года и у меня появилось желание подвести какие-то промежуточные итоги. Далее я в не очень структурированном виде изложу некоторые промежуточные итоги после первых двух лет "жизни на доход с капитала" или "ранней пенсии".

Читать далее
Total votes 122: ↑106 and ↓16 +90
Comments 156

В микроволновой печи скрывается мощное и опасное СВЧ оружие

Reading time 4 min
Views 616K
Добрый день, уважаемые хабровчане.

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

В микроволновке находится генератор СВЧ волн огромной мощности


Мощность волн, которые используются в микроволновке, уже давно будоражит моё сознание. Её магнетрон (генератор СВЧ) выдаёт электромагнитные волны мощностью около 800 Вт и частотой 2450 МГц. Только представьте, одна микроволновка вырабатывает столько излучения, как 10 000 wi-fi роутеров, 5 000 мобильных телефонов или 30 базовых вышек мобильной связи! Для того, что бы эта мощь не вырвалась наружу в микроволновке используется двойной защитный экран из стали.
Читать дальше →
Total votes 467: ↑426 and ↓41 +385
Comments 398

TypeScript: паттерны проектирования. Часть 1

Reading time 10 min
Views 22K


Привет, друзья!


Представляю вашему вниманию перевод первой части серии статей, посвященных паттернам проектирования в TypeScript.


Спасибо Денису Улесову за помощь в переводе материала.


Паттерны (или шаблоны) проектирования (design patterns) описывают типичные способы решения часто встречающихся проблем при проектировании программ.


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

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

Эксплойтинг браузера Chrome, часть 1: введение в V8 и внутреннее устройство JavaScript

Reading time 29 min
Views 20K


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

Работая дверями в Интернет, браузеры в то же время создают существенные угрозы целостности персональных вычислительных устройств. Почти ежедневно мы слышим новости наподобие "баг Google Chrome активно используется как Zero-Day" или "Google подтвердила четвёртый эксплойт Zero-Day Chrome за 2022 год". На самом деле, эксплойты браузеров не представляют собой ничего нового, их находят уже долгие годы, начиная с первого эксплойта для удалённого исполнения кода, задокументированного как CVE-1999-0280. Первым потенциально публичным раскрытием браузерного эксплойта, используемого в реальных условиях, стал эксплойт Aurora браузера Internet Explorer, который атаковал Google в декабре 2010 года.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 3

Sass: разрабатываем дизайн-систему

Reading time 9 min
Views 11K


Привет, друзья!


В данной статье мы разработаем простую, но относительно полноценную дизайн-систему для веб-приложения средствами Sass.


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


При разработке дизайн-системы в части терминологии, названий, значений переменных и т.п. я буду ориентироваться, в основном, на Bootstrap и немного на Tailwind.


Код проекта на GitHub.


Если вам это интересно, прошу под кат.

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

10 лучших алгоритмов 20 века

Reading time 7 min
Views 44K
Прим. Эта статья была опубликована в майском номере 2000 года журнала SIAM. На рубеже веков появилась «мода» на подведение итогов уходящего столетия. И алгоритмы этой участи не избежали. В этой статье авторы делают обзор 10 лучших алгоритмов 20 века. Возможно, вам будет интересно узнать, какие алгоритмы, по мнению авторов списка, внесли наибольший вклад в развитие науки.

Algos — греческое слово, означающее боль. Algor — латинское слово, означающее холод. Но ни то, ни другое не является корнем слова «алгоритм», которое происходит от имени Аль-Хорезми – арабского ученого девятого века – чья книга «al-jabr wa’l muqabalah» (Китаб аль-джебр ва-ль-мукабала) переросла современные учебники по алгебре для средней школы. Аль-Хорезми подчеркивал важность методических процедур для решения задач. Будь он сегодня здесь, то, несомненно, был бы впечатлен вершинами математического метода, названного в его честь.

Часть из лучших алгоритмов компьютерной эры были освещены в январско-февральском выпуске 2000 года журнала Computing in Science & Engineering — совместном издании Американского института физики и Компьютерного общества IEEE. Приглашенные редакторы Jack Dongarra (Джек Донгарра) из Университета Теннесси и Francis Sullivan (Фрэнсис Салливан) из Института оборонного анализа составили список из 10 алгоритмов, который они назвали «Top Ten Algorithms of the Century».

«Мы попытались собрать 10 алгоритмов, оказавших наибольшее влияние на развитие и практику науки и техники в 20 веке», — пишут Донгарра и Салливан. По признанию авторов, как и в любом рейтинге, их выборы неизбежно будут спорными. Когда дело доходит до выбора лучшего алгоритма, кажется, что он и вовсе не существует.

Итак, вот список 10 лучших алгоритмов в хронологическом порядке. (Все даты и имена стоит воспринимать как аппроксимацию первого порядка. Большинство алгоритмов формируются в течение времени при участии многих ученых).
Читать дальше →
Total votes 48: ↑47 and ↓1 +46
Comments 44

Используем клиентский процессор по максимуму. Часть 1: Rust + WebAssembly

Reading time 19 min
Views 10K

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

В этой части мы поговорим о том, как, используя Rust в связке с WebAssembly, можно ускорить тяжёлые вычисления на примере программы для рендеринга фрактала Ньютона. В следующей части будет подробно рассказано о векторных командах и мультипоточных вычислениях в браузере.

Прирост производительности при использовании всех техник оптимизации по сравнению с реализацией на чистом JS может составлять ~1000%: от 8–9 до 100–110 фпс. Это можно проверить на интерактивном онлайн-демо, позволяющем также поиграться с числом потоков, способом вычислений и формой фрактала.
Читать дальше →
Total votes 64: ↑64 and ↓0 +64
Comments 9

Мимо наборной кассы: феерическая профанация шрифтового дела от компании «Паратайп»

Reading time 11 min
Views 26K

Это история о том, как я разочаровался в компании «Паратайп» и шрифтах, которые она производит.

Я делал PDF⁠-⁠презентацию, чтобы показать европейским иностранцам. И что⁠-⁠то меня пробило на гиперкачественную вёрстку с образцовым типографингом. Пускай, думаю, у иностранцев сорвёт шаблон: они⁠-⁠то привыкли, что все русские верстают по⁠-⁠колхозному, особенно если думают, что нет.

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

Я выбрал PT Sans, потому что графика этого шрифта — вполне на мировом уровне. Однако…

Читать далее
Total votes 262: ↑248 and ↓14 +234
Comments 129

Опыт коррекции зрения под общим наркозом по методике ReLEx Smile или Крайне мучительное восстановление

Reading time 16 min
Views 107K

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

Поэтому решил собрать короткий обзор методик с результатами исследований, которые мало кто упоминает, а также поделиться опытом лазерной коррекции в клинике Татьяны Шиловой под общим наркозом. После операции я лишился нормального зрения на один глаз, а работа перед монитором ассоциируется теперь только с жутким дискомфортом и постоянными мигренями.

Читать далее
Total votes 276: ↑275 and ↓1 +274
Comments 311

Как я работал в Дубае

Reading time 19 min
Views 107K


Предисловие


Здравствуйте, меня зовут Александр Зеленин, и я инженер-программист. В 2018 году я получил приглашение в Дубай в компанию Careem (поглощён Uber’ом за 3.1ккк$) архитектором/тимлидом в команду по финансовому взаимодействию с водителями.


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

Как там, в Дубае?
Total votes 110: ↑109 and ↓1 +108
Comments 152

Практика лечебного дыхания в цифрах и мобильных приложениях

Reading time 7 min
Views 23K

Недавно Google, Apple, Xiaomi и иже с ними добавили во многие свои устройства уже готовые к употреблению или встроенные в прошивку упражнения с дыханием. Одно это прекрасно показывает уже теперь международное признание этого вида лечебной физкультуры. Буду далее стараться по мере возможности избегать соответствующей теории и расскажу практику, исходя из своего многолетнего опыта, личного и профессионального (как бывшего врача ЛФК и спортивной медицины).

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

Более точно этот параметр организма покажет т.н. проба Штанге, она несложная. Нужно в спокойном состоянии (не сразу после драки или секса, например) включить секундомер в смартфоне или часах, максимально вдохнуть, задержать дыхание, насколько сможете и измерить это время, вплоть до конца выдоха накопленного. По сути, происходит подсчёт срока имитации ныряния под воду. Можно сделать ради интереса ещё пробу Генче – это время задержки на выдохе. Они почти одинаково показывают устойчивость данного человека к смешанной гиперкапнии и гипоксии. Для индивидуального расчёта упражнений достаточно цифр штанги.

В этой таблице показаны нормы проб для здоровых и молодых людей.

Читать далее
Total votes 15: ↑11 and ↓4 +7
Comments 41

Разгоняем JS-парсер с помощью WebAssembly (часть 3: SIMD)

Reading time 19 min
Views 3K

В предыдущей статье мы остановились на варианте, который с помощью SWAR-хинта превращает 8 последовательных цифр в одно числовое 32bit-значение. Но что если мы предположим, что все значения у нас, в основном, невелики - до 3 цифр? Тогда нам вполне достаточно использовать всего лишь 32bit-инструкции, а SWAR будет выполнен за 2 операции вместо 3 - сплошной выигрыш!

Давайте перепишем наш код так, чтобы первый блок из 4 символов обрабатывался 32bit-инструкциями, а второй блок из 8 символов, если понадобится - уже 64bit-инструкциями.

И... вместо 29ms получаем 31ms! Значит, наше предположение относительно длины чисел не оправдалось, и в первом блоке выгоднее обрабатывать сразу побольше символов.

То есть больше размерность регистра - лучше? И такие регистры есть - это 128-битные SSE-регистры XMM - в WebAssembly они доступны нам как переменные с типом v128 и суперскалярные операции над ними.

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

Руководство по Node.js, часть 3: хостинг, REPL, работа с консолью, модули

Reading time 14 min
Views 80K
Перед вами третья часть перевода руководства по Node.js. Сегодня мы поговорим о выборе хостинга для Node.js-проектов, о том, как работать с Node.js в режиме REPL и как запускать скрипты с аргументами, о взаимодействии с консолью и о модулях.



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

Как создать тему для Magento 2 с нуля

Reading time 10 min
Views 31K


Здравствуйте, уважаемые хабрапользователи! В этой публикации хочу описать процесс создания темы для Magento 2 с нуля. Magento 2 имеет достаточно большое количество нововведений и улучшений по сравнению с первой версией. По большей части они относятся к клиентской части.

Вот некоторые из них:

  1. Полная поддержка HTML5 и CSS3;
  2. Встроенный препроцессор LESS;
  3. Асинхронная загрузка модулей с помощью RequireJS (без ручного добавления скриптов в cекцию head);
  4. jQuery/jQuery UI вместо библиотеки Prototype;
  5. Magento UI библиотека (набор компонентов для простого и гибкого рендеринга пользовательского интерфейса).

Самое интересное – под катом!
Читать дальше →
Total votes 16: ↑12 and ↓4 +8
Comments 1

История ещё одного 3д-куба 10х10х10

Reading time 6 min
Views 33K
В последнее время на портале появлялись статьи о создании светодиодных кубов. Это своего рода игрушки, которые могут формировать трёхмерную картинку, но сделать большое разрешение очень проблематично и трудоёмко. Большинство работ ограничивается форматом 3х3х3, или в лучшем случае 5х5х5. Спустя время я нашёл свой старый 10 “этажный” куб, немного восстановил его и решил написать о своём опыте создания устройства.

Первый куб я спаял где-то в 2012 году, на подарок, с разрешением 4x4x4, в нем использовалась готовая схемотехника и программа, найденная в интернете. Увлёкшись, решил сделать такой же себе, но, увеличив разрешение до 5x5x5. Схемотехнику, опираясь на готовое решение, сделал сам, полностью скопировав саму логику подачи напряжения на ноги светодиодов.
Читать дальше →
Total votes 58: ↑58 and ↓0 +58
Comments 39

Пример модуля для Magento 2 другимъ манеромъ

Reading time 4 min
Views 9.4K
Осенью прошлого года, когда вышла Magento 2.0, я написал статью "Пример модуля для Magento 2", в которой обрисовал один из возможных вариантов формирования окружения для разработки модуля под вторую версию Magento. Совсем недавно вышли обновления (v 2.0.1 и v 2.0.2), судя по которым разработчики Magento уходят от схемы развертывания с использованием Magento Composer Installer (при помощи которого разворачивается Magento 1 и разворачивалась в моем предыдущем примере Magento 2.0.0), По крайней мере, простое изменение версии Magento c 2.0.0 на 2.0.1 приводило к тому, что то, что разворачивалось, работать как Magento-приложение совершенно не хотело.

Под катом — новый пример развертывания окружения, адаптированный под изменившиеся условия.
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 6

Несколько вещей, о которых стоит помнить программисту в возрасте

Reading time 11 min
Views 128K
Если вы из тех, кто «работал ещё Там-То!» и «делал ещё То-То!», а сейчас счастливо отдыхаете на пенсии — эта статья не для вас. Просто спасибо за труд и примите мои поздравления. Но если же вы, как и я, даже став немного старше всё ещё ощущаете страсть к программированию, радуетесь виду кода и не можете устоять перед желанием написать ещё что-нибудь, тогда продолжайте читать.

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

Я смирился с мыслью, что мой лучший код уже написан — в прошлом. Мне было уже 54 года (немало!) и я, вероятно, уже не мог писать код так же хорошо, как и раньше. Кто знает — может быть у меня уже начала отказывать память, ну или я просто выучил всё, что был способен в жизни выучить. Мой настрой подкреплялся наблюдениями окружающей меня реальности. Все новые технологии выглядели для меня чудаковато. Я ненавидел Node.js. Я считал все фреймворки для веб-разработки ужасными. И я сетовал на то, что классические способы разработки ПО разрушились и превратились в набор клише, которые нынче впариваются под умными названиями типа Agile или «экстремальное программирование». Я скучал за днями, когда люди писали спецификацию на будущее ПО, программировали, а затем тщательно тестировали его. И когда в каждой статье не было тысячи жаргонных словечек.
Читать дальше →
Total votes 121: ↑117 and ↓4 +113
Comments 134

Вы неправильно пишете животных

Reading time 5 min
Views 357K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

Не знаю, кто писал большую часть птиц, но я хочу обратить внимание на особенность, позволяющую провести инъекцию произвольного яйца в гнездо. Дело в том, что птица проверяет только расположение и количество яиц, но не их хэши. В 20% случаев кукушка, эксплуатирующая этот баг, может внести яйцо с сохранением контрольной суммы, чего вполне достаточно для повышения прав в гнезде.

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →
Total votes 442: ↑438 and ↓4 +434
Comments 350

Почему научиться программировать так чертовски тяжело?

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

Взявшись за работу над образовательным проектом Хекслет, мы понимали, что на нас ложится большая ответственность. К нам приходит огромное количество новичков с вопросами и комментариями, такими как:

  • С чего начать обучение программированию?
  • У вас есть курс по Java для новичков, но я слышал, что нужно изучать Python, правда ли это?
  • На других сайтах все просто и понятно, а у вас какие-то компиляции и тесты!
  • Непонятно зачем нужен этот ваш курс по алгоритмам, в реальной жизни все алгоритмы уже реализованы в стандартных библиотеках

Но сложнее всего объяснить новичку, грубо говоря, во что он ввязывается. Благодаря очень простым, игровым образовательным проектам многие считают, что программирование это очень легко, а наши виртуальные машины, где нужно запускать тесты и компилировать код – это надуманная сложность. Давно хотелось найти такой материал, который бы подготовил новичка к длинному и сложному пути к карьере программиста. И недавно наши коллеги из Viking Code School такой материал написали! А мы его перевели для вас.




Квинси Ларсон был просто “офисным парнем в костюме”. Он решил научиться программировать. Начал спрашивать людей вокруг. Изучил немного Руби, потом быстренько посмотрел на другие языки вроде Scala, Clojure и Go. Он изучил Emacs, а потом Vim, а потом раскладку Dvorak. Он втыкал в Линукс, копался с Лиспом и кодил на Питоне, и жил при этом в командной строке больше полутора лет.

Его швыряло туда-сюда как листочек в торнадо. Каждый совет, который он слышал, тащил его то в одну, то в другую сторону, до тех пор пока он не прошел “каждый онлайн-курс по программированию во вселенной”. В конце концов, не смотря на то, что он получил работу разработчика ПО, Квинси:

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

Ох. Звучит знакомо?
Читать дальше →
Total votes 65: ↑55 and ↓10 +45
Comments 44

Information

Rating
Does not participate
Location
Montreal, Quebec, Канада
Date of birth
Registered
Activity