Pull to refresh
70
0
Alexander Komarov @izard

software optimization

Send message

О простых вещах-сложно. Возвращаем девочке птицелет или RTFM по определению пластмасс в домашних условиях

Reading time17 min
Views38K

Посвящается моей дорогой маме, по совместительству лучшему эксперту в раздельной сортировке пластмасс...


Если, дорогой читатель, у тебя никогда в жизни не возникал вопрос "что, черт побери, это за пластмасса такая?", то можешь статью не читать :) Вниманию же всех остальных — очередная статья из серии "положи в закладки!". Сегодня у нас тема — "Определение пластмасс в домашних условиях" и я продолжаю wikipedia-ровать Хабр полезной информацией, которая осталась у меня после выполнения моих научно-технических проектов. Сегодня под кат смело могут идти экологи, биотехнологи, мастера полимерных производств, инженеры по переработке пластмасс и все, кому приходилось сортировать пластики, клеить пластики, паять пластики — автолюбители, самодельщики и прочие заинтересованные лица. Традиционно — минимум FUN-а, максимум информации, полнее русскоязычную мануалку по пластикам просто не найти, "я гарантирую это" :)


… И наконец-то руки дошли вспомнить советский детский роман 1966 года, в котором практических рекомендаций ребенку "которому нравится химия" гораздо больше чем в современных белорусских учебниках химии вместе взятых.


Читать дальше →
Total votes 104: ↑102 and ↓2+100
Comments176

Я у мамы не инженер

Reading time14 min
Views65K
intro

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

Однажды я решил сделать небольшое устройство (“Security Access Tuner” из игры Alien: Isolation) — контроллер, экран, пара элементов управления, да упаковать это всё в небольшой корпус, который планировалось напечатать на 3d принтере. Тогда я ещё и подумать не мог, сколько же времени потребуется, чтобы все эти мелочи собрались в одно целое…
Читать дальше
Total votes 181: ↑181 and ↓0+181
Comments143

QEMU.js: теперь по-серьёзному и с WASM

Reading time13 min
Views13K

Когда-то давно я смеха ради решил доказать обратимость процесса и научиться генерировать JavaScript (а точнее, Asm.js) из машинного кода. Для эксперимента был выбран QEMU, некоторое время спустя была написана статья на Хабр. В комментариях мне посоветовали переделать проект на WebAssembly, да и самому бросать почти законченный проект как-то не хотелось… Работа шла, но уж очень медленно, и вот, недавно в той статье появился комментарий на тему «Так и чем всё закончилось?». На мой развёрнутый ответ я услышал «Это тянет на статью». Ну, раз тянет, то будет статья. Может, кому пригодится. Из неё читатель узнает некоторые факты про устройство бекендов кодогенерации QEMU, а также как написать Just-in-Time компилятор для веб-приложения.

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

Резистор в цепи затвора или как делать правильно

Reading time4 min
Views80K


Всем доброго времени суток!

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

Любому из этих случаев я буду очень рад.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments70

Мины под производительностью ждут своего часа

Reading time17 min
Views14K

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


Картинка для привлечения внимания

image

Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments21

Как я стал PMP и как это лучше не делать

Reading time11 min
Views16K
Я давно осознал, что делиться опытом — это полезно. Но только недавно я понял, что им можно делиться не только со знакомыми и близкими, но и со всеми.

Поэтому, я хочу рассказать, как я шел к сертификации, почему я это делал и чем это закончилось.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments20

Выбор школы при переезде в США

Reading time5 min
Views41K
Многие люди с детьми, планирующие переезд в США, слышали о необходимости тщательно выбирать район проживания. Особенно важно понять, какие школы относятся к выбранному адресу.

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

Ниже предлагается пошаговая инструкция по определению школ, привязанных к конкретному адресу и анализу этих школ.

image
Читать дальше →
Total votes 71: ↑62 and ↓9+53
Comments131

OS1: примитивное ядро на Rust для x86. Часть 3. Карта памяти, Page fault exception, куча и аллокации

Reading time18 min
Views4.7K

Первая часть
Вторая часть


Тема сегодняшнего разговора — работа с памятью. Я расскажу про инициализацию директории страниц, маппинг физической памяти, управление виртуальной и мою организацию кучи для аллокатора.


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

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

Мюонный катализ с точки зрения квантовой химии. Часть II: электронная vs. мюонная химическая связь

Reading time12 min
Views6.8K
Многабукафф о том, что квантовая химия думает о принципе работы мюонного катализа: как именно мюон понижает температуру требуемой плазмы. В двух частях (первую часть можно прочитать тут).

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

Но те, кто хочет посмотреть на формулки, графики, и узреть концептуальную суть квантовой химии в применении к наипростейшим (квази)молекулам, welcome под кат.

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

Уход инженера-электронщика из Apple вызвал волнение среди биржевых спекулянтов. Как стать таким как он?

Reading time5 min
Views53K
29 марта инженер по имени Жерард Вильямс Третий ушел из компании Apple. Это известие сразу опубликовал CNET и еще три десятка изданий во всем мире, не только технических, но и финансовых. Что же такого делал этот инженер, что его уход вызвал волнение среди биржевых спекулянтов? Он 9 лет проектировал процессоры в Apple iPhone, до этого 12 лет работал в ARM, до этого проектировал DSP в Texas Instruments, а до этого разрабатывал в Интеле схемы на ПЛИС. Во всех местах он использовал технологию проектирования на уровне регистровых передач, с использованием языков описания аппаратуры Verilog и VHDL.

Примеры поближе к России? На фото справа: 25-летний москвич Илья Неганов взял в 2011 году книжку Харрис & Харрис (последнюю версию которой можно скачать здесь или здесь), спроектировал простой процессор, сейчас работает в Apple, проектирует на верилоге GPU, по выходным летает на самолетике. Ниже пара молодоженов из Санкт-Петербурга, которые проектировали на верилоге и ПЛИС обработку изображений из камеры и получили приз на конкурсе Innovate FPGA. Они провели медовый месяц в штаб-квартире Интела в Санта-Кларе. Далее товарищи из Киева, двое из которые выиграли бронзу на европейском финале Innovate FPGA. И наконец два школьника, из 5 и 9 классов, которые делают свои первые упражнения с микросхемами малой степени интеграции на макетной плате, после чего приступают к упражнениям на верилоге и ПЛИС.

Это пять точек на траектории от школьника к Жерарду Вильямсу Третьему. Траектория довольно тяжелая, так как начальный барьер для входа в проектирование цифровых микросхем выше, чем для входа в программирование. В этом посте мы поговорим о том, как облегчить начальный участок траектории для российских и других школьников.


Total votes 90: ↑70 and ↓20+50
Comments224

Беседы о функциональном программировании на C++ Siberia 2019

Reading time11 min
Views9.6K

Всем привет!


Недавно в Новосибирске прошла очередная C++ Siberia 2019. На конференции была уютная атмосфера и много хороших докладов. Пользуясь случаем, я побеседовал с двумя нашими докладчиками, которых совсем скоро вы сможете увидеть и в Москве.


Иван Чукич — один из разработчиков KDE, преподаватель и исследователь дизайна языков программирования в Белградском университете.


Александр Гранин (graninas) — известный спикер и разработчик, специализирующийся на ФП, организатор новосибирского ФП-сообщества LambdaNsk.


Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments9

OS1: примитивное ядро на Rust для x86

Reading time9 min
Views18K

Я решил написать статью, а если получится — то и серию статей, чтобы поделиться своим опытом самостоятельного исследования как устройства Bare Bone x86, так и организации операционных систем. На данный момент мою поделку нельзя назвать даже операционной системой — это небольшое ядро, которое умеет загружаться из Multiboot (GRUB), управлять памятью реальной и виртуальной, а также выполнять несколько бесполезных функций в режиме многозадачности на одном процессоре.


При разработке я не ставил себе целей написать новый Linux (хотя, признаюсь, лет 5 назад мечтал об этом) или впечатлить кого-либо, поэтому особо впечатлительных прошу дальше не смотреть. Что мне на самом деле захотелось сделать — разобраться, как устроена архитектура i386 на самом базовом уровне, и как именно операционные системы делают свою магию, ну и покопать хайповый Rust.


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


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

Читать дальше →
Total votes 89: ↑88 and ↓1+87
Comments25

Вероятность выигрыша матча при известной вероятности выигрыша очка

Reading time4 min
Views7.5K
Надеюсь, среди читателей есть любители спорта. Если Вы играете в бадминтон или настольный теннис, то Вы возможно задавались вопросом: какова вероятность выиграть игру при известной вероятности выиграть очко? Допустим Вы проигрываете своему сопернику со счетом около 11:7. Казалось бы всего 4 очка разницы, но при этом никак не удается выиграть партию. Не везет? Предлагаю решить эту задачу и получить ответ на этот вопрос.

Имея косвенное отношение к финансовой математике я знаю, что именно для финансового математика такая задача покажется особенно несложной. Возможные методы ее решения очень напоминают методы расчета цены опциона. Но есть в этой задачи и нюансы, несколько нетипичные для финансов. Давайте рассмотрим варианты решения.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments13

Реализация горячей перезагрузки С++ кода в Linux

Reading time10 min
Views18K

image


* Ссылка на библиотеку в конце статьи. В самой статье изложены механизмы, реализованные в библиотеке, со средней детализацией. Реализация для macOS еще не закончена, но она мало чем отличается от реализации для Linux. Здесь в основном рассматривается реализация для Linux.


Гуляя по гитхабу одним субботним днем, я наткнулся на библиотеку, реализующую обновление c++ кода налету для windows. Сам я слез с windows несколько лет назад, ни капли не пожалел, и сейчас все программирование происходит либо на Linux (дома), либо на macOS (на работе). Немного погуглив, я обнаружил, что подход из библиотеки выше достаточно популярен, и msvc использует ту же технику для функции "Edit and continue" в Visual Studio. Проблема лишь в том, что я не нашел ни одной реализации под не-windows (плохо искал?). На вопрос автору библиотеки выше, будет ли он делать порт под другие платформы, ответ был отрицательный.


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


"Как так?" — подумал я, и принялся раскуривать фимиам.

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

Измерение времени с наносекундной точностью

Reading time19 min
Views23K
image

Пару месяцев назад для меня наступил исторический момент. Мне перестало хватать стандартных средств операционной системы для измерения времени. Понадобилось измерять время с наносекундной точностью и с наносекундными накладными расходами.

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

Так как на компьютере можно измерять много разных типов времени, сразу уточню, что здесь речь пойдет о «времени по секундомеру». Или wall-clock time. Оно же real time, elapsed time и т.п. То есть простое «человеческое» время, которое мы засекаем в начале исполнения задачи и останавливаем в конце.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments31

Создание 1k intro Chaos для ZX-Spectrum

Reading time7 min
Views14K

Изначально я не планировал делать демо на Chaos Constrictions 2018, однако за 2-3 недели до cc понял, что с пустыми руками идти на демопати никак нельзя, и решил написать небольшую демонстрацию для 386/EGA/DOS.

Скомпилировав в Turbo-C под DOS свою либу AnotherGraphicsLibrary, которая идеально ложиться в битплановую структуру EGA режима, я разочаровался, от тормозов, прежде всего тормозов EGA. Демо в том виде, в котором я хотел бы его видеть, за этот весьма ограниченный срок, сделать было невозможно.

Однако сдаваться и не делать что-либо, я уже не мог. И тут я вспомнил, что давно хотел принять участие в ZX-Spectrum конкурсах демо. А так, как за последний год у меня появилось целых два 48k реала, я мог получить определенное удовольствие от создания демо. К слову — для меня самое главное в написании демо это именно тестирование на реале, эмульгаторы не дают такого наслаждения от процесса, уж очень это замечательное чувство, когда после очередного изменения в коде ты закачиваешь демо на реал, и видишь как настоящая железка тасует байтики в памяти, отрисовывая эффект.

Поскольку из реалов у меня только 48k, то и демо я решил сделать для 48k. А из-за ограниченности сроков и отсутствия каких-либо наработок, выбор пал на создание 1k intro(демо объёмом всего 1 килобайт, или 1024 байта).
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments56

Vue.js tutorial: от jQuery к Vue.js

Reading time16 min
Views57K

Привет, Хабр! Представляю вашему вниманию перевод статьи Vue.js Tutorial: From jQuery to Vue.js автора Paul Redmond.


Что касается библиотек JavaScript, то никогда не было более популярной библиотеки, чем jQuery. Она создавалась для обхода DOM элементов с использованием CSS селекторов в то время, когда совместимость браузеров была важной проблемой для разработчиков.


Фактически jQuery настолько универсален, что я подумал что он отлично передаст то, почему я люблю писать UI с Vue, используя компонентный JavaScript. В этом руководстве мы сначала рассмотрим создание пользовательского интерфейса с jQuery, а затем перепишем его с помощью Vue.

Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments29

Рефакторинг программы на Go: ускорение в 23 раза

Reading time8 min
Views34K


Привет! Меня зовут Марко, я работаю в Badoo в отделе «Платформы». У нас довольно много всего написано на Go, и зачастую это критичные к производительности системы. Именно поэтому сегодня я предлагаю вашему вниманию перевод статьи, которая мне очень понравилась и, я уверен, будет вам очень полезна. Автор пошагово показывает, как он подходил к проблемам производительности и как их решал. В том числе вы познакомитесь с богатым инструментарием, доступным в Go для такой работы. Приятного чтения!

Несколько недель назад я прочитал статью «Хороший код против плохого кода в Go», где автор шаг за шагом демонстрирует рефакторинг реального приложения, решающего реальные бизнес-задачи. Она сфокусирована на превращении «плохого кода» в «хороший код»: более идиоматичный, более понятный, полноценно использующий специфику языка Go. Но автор также заявлял о важности производительности рассматриваемого приложения. Во мне взыграло любопытство: давайте попробуем её ускорить!
Total votes 94: ↑93 and ↓1+92
Comments26

Профессиональное выгорание: слово экспертам

Reading time5 min
Views33K
После статьи о профессиональном выгорании поступило много вопросов в личку и в комментарии про то, где больше почитать про матчасть, чем отличаются одни школы психотерапии от других и как выбрать специалиста.

Этим постом как раз постараемся на все и ответить. Пару месяцев назад для студентов нашей Школы мы запустили линейку мастер-классов про выгорание. Приглашали не просто тех, кто умеет бодро и зажигательно говорить (это мы и сами умеем), а, прежде всего, профессионалов психотерапии, кто уже много лет занимается тем, что успешно работает со счастливыми обладателями синдрома выгорания:

1. Дмитрий Ковпак, кандидат мед.наук, президент российской Ассоциации когнитивно-поведенческой психотерапии (КПТ), доцент кафедры психологии и педагогики СЗГМУ им. И.И. Мечникова.

2. Алексей Демьяненко, психотерапевт, заведующий Городским Психотерапевтическим Центром Санкт-Петербурга, руководитель регионального отделения Российской Психотерапевтической Ассоциации.

3. Наталия Дзеружинская, доктор мед.наук, врач-психиатр высшей квалификационной категории, профессор кафедры психиатрии и наркологии Национального медицинского университета имени А.А. Богомольца Украины. Более 30 лет работы в сфере психического здоровья.

4. Мария Берлин, организационный психолог, тренер, корпоративный психолог ЗАО РТК МТС(2015-2016), преподаватель института «Иматон», автор программы подготовки специалистов «Работа с эмоциональным выгоранием – комплексный подход».

В итоге у нас накопилось пять мастер-классов (видео под катом). Видео изначально были доступны только нашим студентам. Но раз тема оказалась актуальной для Хабра, решили все это выложить — пользуйтесь на здоровье.
Total votes 29: ↑24 and ↓5+19
Comments8

Объясняем современный JavaScript динозавру

Reading time15 min
Views264K


Если вы не изучали JavaScript с самого начала, то осваивать его современную версию сложно. Экосистема быстро растёт и меняется, так что трудно разобраться с проблемами, для решения которых придуманы разные инструменты. Я начал программировать в 1998-м, но начал понимать JavaScript только в 2014-м. Помню, как просматривал Browserify и смотрел на его слоган:


Browserify позволяет делать require («модули») в браузере, объединяя все ваши зависимости


Я не понял ни слова из предложения и стал разбираться, как это может помочь мне как разработчику.


Цель статьи — рассказать о контексте, в котором инструменты в JavaScript развивались вплоть до 2017-го. Начнём с самого начала и будем делать сайт, как это делали бы динозавры — безо всяких инструментов, на чистом HTML и JavaScript. Постепенно станем вводить разные инструменты, поочерёдно рассматривая решаемые ими проблемы. Благодаря историческому контексту вы сможете адаптироваться к постоянно меняющемуся ландшафту JavaScript и понять его.

Total votes 174: ↑171 and ↓3+168
Comments505

Information

Rating
Does not participate
Location
Portland, Oregon, США
Date of birth
Registered
Activity