Search
Write a publication
Pull to refresh
57
0.1
Alexander @speshuric

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

Send message

Краткий и бодрый обзор архитектуры компиляторов

Reading time19 min
Views37K

Большинство компиляторов имеют следующую архитектуру:



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

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

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

Почему WhatsApp никогда не станет безопасным

Reading time5 min
Views218K
Автор колонки — Павел Дуров, основатель мессенджера Telegram



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

Однако эта новость меня не удивила. В прошлом году WhatsApp пришлось признать очень похожую проблему — хакер мог получить доступ ко всем данным вашего телефона через один видеозвонок.
Читать дальше →

Security Week 18: атака ShadowHammer в деталях

Reading time5 min
Views3K
В конце марта издание Motherboard опубликовало статью о потенциальном взломе инфраструктуры компании Asus. Получив частичный доступ к ресурсам компании, злоумышленники смогли распространить среди клиентов, установивших утилиту Asus Live Update для своевременной загрузки новых драйверов, подписанную официальным сертификатом версию программы с вредоносной функциональностью. Про эту атаку, обнаруженную специалистами «Лаборатории Касперского», мы писали в начале апреля.


«Лаборатория Касперского» опубликовала расширенный отчет о ShadowHammer 23 апреля. Этот весьма увлекательный, хотя и совершенно технический документ рекомендуется к прочтению целиком, а в этом посте будет лишь краткое описание части находок. Самое интересное — это потенциальная связь ShadowHammer с зараженными копиями не самой лучшей компьютерной игры про зомби и скоординированная атака на разработчиков программного обеспечения.
Читать дальше →

Алгоритм Дугласа-Пекера

Reading time5 min
Views17K

Предисловие


Не так давно пришлось поработать с упрощением полигональной цепи (процесс, позволяющий уменьшить число точек полилинии). В целом, данный тип задач очень распространен при обработке векторной графики и при построении карт. В качестве примера можно взять цепь, несколько точек которой попадают в один и тот же пиксель – очевидно, что все эти точки можно упростить в одну. Некоторое время назад я практически ничего не знал об этом от слова «совсем», в связи с чем, пришлось в быстром темпе восполнять необходимый багаж знаний по этой теме. Но каково было мое удивление, когда в интернете я не нашел достаточно полных руководств по этому вопросу… Мне приходилось отрывками искать информацию с совершенно разных источников и, после проведенного анализа, выстраивать все в общую картину. Занятие не из самых приятных, если честно. Поэтому мне хотелось бы написать цикл статей, посвященных алгоритмам упрощения полигональной цепи. Как раз-таки начать я решил с наиболее популярного алгоритма Дугласа-Пекера.


Читать дальше →

Сети для самых маленьких. Часть ой, всё

Reading time4 min
Views191K
Дорогие мои друзья, отважные критики, тихие читатели и тайные почитатели, СДСМ заканчивается.



Я не могу похвастаться тем, что за 7 лет я затронул все темы сетевой сферы или тем, что хотя бы одну из них раскрыл полностью. Но это и не было целью. А целью этой серии статей было ввести юного студента за руку в этот мир и проводить его шаг за шагом по основной галерее, давая общее представление, и уберечь от болезненных скитаний по тёмным уголкам сознания Олифера и Олифера в мучительных попытках найти ответ на вопрос, как всё это применить в жизни.
СДСМ планировался коротким практическим курсом «как научиться в сети за месяц», а вылился в 16 (на самом деле 19) длинных выпусков, которые мы уже даже переименовали в «Сети Для Самых Суровых». Общее количество символов перевалило за 1 000 000.
Читать дальше →

Продуктивность связана не с управлением временем, а с управлением вниманием

Reading time7 min
Views33K

Управление временем – это на самом деле не решение, а часть проблемы



Автор статьи: Адам М. Грант, американский ученый-психолог и писатель; профессор Уортонской школы бизнеса; автор трёх бестселлеров Нью-Йорк Таймс, а также книги «В работу с головой. Паттерны успеха от IT-специалиста».

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

«Это прозвучит, как шутка, но на самом деле всё серьёзно, — признался он. – Единственное, что мне пришло в голову – пить меньше воды, чтобы не бегать так часто в туалет».
Читать дальше →

Интервью с Андреем Станкевичем про спортивное программирование

Reading time18 min
Views13K


В рамках проекта АйтиХайп мы записали видеоинтервью с Андреем Станкевичем, легендарным тренером команды университета ИТМО по спортивному программированию, которая стабильно из года в год побеждает всех подряд на международных соревнованиях.

А для тех, кому видеоверсия не очень интересна, под катом мы подготовили подробную расшифровку интервью, где Андрей рассказывает про нюансы спортивного программирования, подготовки школьников к олимпиадам, российское образование, зарплаты и встречи с президентами.
Читать дальше →

15 попугаев: выбираем хостинг-провайдера VPS/VDS-серверов

Reading time15 min
Views76K

Выборы, выборы, кандидаты — хостинги.


«Нам нужен новый хостинг», — осенило нашего шефа в начале весны. Это не было весенним обострением, это было объективной необходимостью, потому что старая кобра пережила свой яд предыдущий почему-то решил, что раз клиенты из-за 152-ФЗ идут сами, то можно предоставлять услуги кое-как и забить на SLA. И тут я узнал новое: хостингов очень много, а вот хостингов с приемлемыми характеристиками — поискать. И это я ещё не читал отзывы клиентов — вот где портал в ад!

Итак, я вооружился мозгом, Google, нашими требованиями и стал выбирать лучший VPS хостинг, с которым мы, вероятно, продолжим свою жизнь. В процессе выбора получилась неплохая аналитика, и я решил её частично выложить на Хабр — вдруг поможет такому же админу-страдальцу? Enjoy my work, как говорится.

Читать дальше →

Сказ о полукольцах

Reading time11 min
Views6.8K

Привет, Хабр! Предлагаю вашему вниманию перевод статьи "A tale on Semirings" автора Luka Jacobowitz.


Когда-нибудь задумывались, почему сумма типов называется суммой типов. Или, может, вы всегда хотели узнать, почему оператор <*> записывается именно так? И что это имеет общего с полукольцами? Заинтересовавшихся прошу под кат!

Читать дальше →

Операционная система на Rust. Страничная память: продвинутый уровень

Reading time21 min
Views9K
В этой статье объясняется, как ядру операционной системы получить доступ к фреймам физической памяти. Изучим функцию для преобразования виртуальных адресов в физические. Также разберёмся, как создавать новые сопоставления в таблицах страниц.

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

Введение


Из прошлой статьи мы узнали о принципах страничной организации памяти и о том, как работают четырёхуровневые страничные таблицы на x86_64. Мы также обнаружили, что загрузчик уже настроил иерархию таблиц страниц для нашего ядра, поэтому ядро работает на виртуальных адресах. Это повышает безопасность, но возникает проблема: как получить доступ к настоящим физическим адресам, которые хранятся в записях таблицы страниц или регистре CR3?
Читать дальше →

Лучший Способ Программирования (Better way To Code)

Reading time16 min
Views35K
От переводчика:
Я не являюсь ни профессиональным программистом ни профессиональным переводчиком, но появление описанного в статье инструмента от создателя популярной библиотеки D3.js произвело на меня сильное впечатление.

С удивлением обнаружил, что на Хабре, да и вообще в русскоязычном интернете, более года несправедливо игнорируют данный инструмент. Поэтому решил, что просто обязан внести свой вклад в развитие искусства программирования, в JavaScript в частности.

Знакомьтесь, d3.express, интегрированная исследовательская среда.
(с 31 января 2018г d3.express зовется Observable и живет на beta.observablehq.com)

Если вам когда-либо приходилось тупить над своим кодом или разбираться в чужом, тогда вы не одиноки. Эта статья для вас.

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

Предназначение инструмента визуализации — построение визуализаций. Но в чем же цель визуализации? Слово Бену Шнейдерману(Per Ben Shneiderman):
«Результат визуализации — это
Читать дальше →

Вся правда о linux epoll

Reading time10 min
Views60K

Ну или почти вся...



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


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


Anyone can wield an axe, but it takes a true warrior to make it sing melees melody.

Я предполагаю, что читатель знаком с epoll, по крайней мере прочел страницу man. О epoll, poll, select написано достаточно много, чтобы каждый кто разрабатывал под Linux, хоть раз о нем слышал.

Читать дальше →

Раздача халявы: нетормозящие треды в Java. Project Loom

Reading time18 min
Views41K

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


Объясняем работу Project Loom на коробках с пиццей! Налетай!


Всё это снимается и пишется специально для Хабра.




Читать дальше →

О фракталах, мартингалах и случайных интегралах. Часть первая

Reading time12 min
Views26K

На мой взгляд, стохастические исчисления — это один из тех великолепных разделов высшей математики (наряду с топологией и комплексным анализом), где формулы встречаются с поэзией; это место, где они обретают красоту, место где начинается простор для художественного творчества. Многие из тех, что прочли статью Винеровский хаос или Еще один способ подбросить монетку, даже если и мало, что поняли, всё же смогли оценить великолепие этой теории. Сегодня мы с вами продолжим наше математическое путешествие, мы погрузимся в мир случайных процессов, нетривиального интегрирования, финансовой математики и даже немного коснемся функционального программирования. Предупреждаю, держите наготове свои извилины, так как разговор у нас предстоит серьезный.
Читать дальше →

К вопросу о делении

Reading time4 min
Views16K

Нам подвернулась возможность провести небольшое, но крайне интересное тактическое учение


В процессе исследований нового МК от известной фирмы на основе архитектуры Cortex-М4 (я об этом обязательно еще напишу) возник вопрос, насколько быстро может работать операция целочисленного деления в аппаратной реализации. Натурный эксперимент дал несколько неожиданный результат: деление 32-разрядного числа на 32-разрядное выполняется за 3 такта частоты процессора — ну ни фига ж себе, как быстро. Выяснилось, что это имеет место только с определенными операндами, но дальнейшие исследования показали, что никогда время выполнения деления не превосходит 7 тактов. Полученные результаты вызвали легкую оторопь («и это не некая фигура речи, которая неизвестно что означает, а вполне конкретный глагол» — Дивов, как всегда, бесподобен).

Ну нельзя же просто так взять и быстро поделить такие длинные числа, странно как то, но факты — упрямая вещь. Представил себе картину, что вызывает меня завтра к себе Президент РФ и ставит передо мной задачу сделать МК не хуже, чем у ARM (согласен, что картина бредовая, но чего на свете не бывает), а я растеряно на него гляжу и понимаю, что не смогу сделать такое деление таких чисел за такое время, и не оправдаю ожиданий, на меня возлагаемых (ну на самом то деле я всегда смогу втихую купить лицензию у ARM, и сделать вид, будто бы придумал все сам, многие так и делают, но от меня то ВВП ждет совсем другого, да и потом — его то я обмануть смогу, а вот себя вряд ли).
Как же это сделать

Работаем в консоли быстро и эффективно

Reading time9 min
Views127K

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

Читать дальше →

Изучаем Go: подборка видеозаписей докладов

Reading time2 min
Views11K


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

Список видеозаписей:

  1. Go в production.
  2. Профилирование Go-приложений.
  3. Медиасервер трансляций на Go.
  4. Pipeline поиска по Почте на Go.
  5. Синхронизация данных в Go с помощью mysql binlog.
  6. Как мы начали использовать Go в Ответах Mail.ru.
  7. Pub/Sub и 1 миллион WebSocket’ов.
  8. Программирование на Go (курс).
  9. Кому нужен язык Go и микросервисы.

Откуда растут ноги у Java Memory Model

Reading time19 min
Views78K
Современное железо и компиляторы готовы перевернуть с ног на голову наш код, лишь бы он работал быстрее. А их производители тщательно скрывают свою внутреннюю кухню. И все прекрасно, пока код выполняется в одном потоке.

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

Но все уже осознали, ведь жить с этим как-то надо. А Java программисты даже неплохо живут. Потому что в Java есть модель памяти — Java Memory Model (JMM), которая предоставляет достаточно простые правила для написания корректного многопоточного кода.

И правил этих достаточно для большинства программ. Если вы их не знаете, но пишите или хотите писать многопоточные программы на Java, то лучше как можно скорее ознакомиться с ними. А если знаете, но вам не хватает контекста или интересно узнать откуда растут ноги у JMM, тогда статья может вам помочь.
Читать дальше →

«Галоп пикселя — часть пятая» — Анимация персонажей. Ходьба

Reading time30 min
Views44K


«Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
«Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
«Галоп пикселя», часть III — Анимация (линк)
«Галоп пикселя», часть IV — Анимация света и тени (линк)
«Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

Доброго времени суток, Хабр. Мы продолжаем цикл «Галоп Пикселя». Сейчас, находясь на старте 2019 года, можно с уверенностью говорить, что это не только цикл статей, но и многолетняя сага. Пространное повествование о пикселях, их жизни, способе их создания, приёмах и уловках в работе с ними. Мы не будем рассуждать о причинах первоначального «спринта», который затем превратился в многолетний марафон, ибо нет ничего более жизненного, чем сама жизнь. Кому нужны причины отсутствия или пауз, если можно просто вернуться к тому, что мы делали, в чём варились, и в чём, даст бог — будем наблюдаться и далее. В пикселях, конечно же!

Сегодняшняя публикация станет очередной, и возможно даже поворотной вехой в нашем повествовании. Наконец-то мы подошли к созданию полноценной анимации персонажей. Двумя предыдущими главами мы охватили анимацию света и тени, а также анимацию неподвижных персонажей (idle-animation) без ярко выраженных действий. Но сегодня наши персонажи пойдут, а в следующей части даже побегут, завоевав то, что уже давно их по праву рождения. Ещё один плодородный регион. И пройдут ещё одну точку, которая ознаменует окончание базового цикла. Наши пиксели наконец-то станут живыми.

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


Лопатить пиксели

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

Reading time18 min
Views14K


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

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

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

Вторая часть доступна по этой ссылке.
Читать дальше →

Information

Rating
5,014-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity