Pull to refresh
15
0

C++ разработчик

Send message

Неожиданные причины торможения программ и систем

Reading time29 min
Views48K

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

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

Разделы поста чаще всего никак не связаны друг с другом, поэтому можете выбирать самые интересные для вас.
Читать дальше →
Total votes 112: ↑111 and ↓1+110
Comments88

Как запускается сервер: UEFI

Reading time9 min
Views29K

Ранее мы уже разбирали последовательность запуска сервера на примере устаревшего Legacy. Настало время познакомиться с UEFI поближе.

Первая версия того, что сейчас известно как Unified Extensive Firmware Interface (UEFI), разрабатывалась в 90-е годы прошлого тысячелетия специально под системы на Intel® Itanium® и называлась Intel Boot Initiative, а позже — EFI.

Желание «обновить» процесс загрузки было ожидаемо. PC-BIOS, именуемый ныне Legacy, предлагает работать в 16-битном real mode, адресует всего 1 МБ оперативной памяти, а загрузчик вместе с таблицей разделов должен размещаться в первых 512 байтах накопителя. Более того, PC-BIOS передает управление первому найденному загрузчику без возможности возврата назад. При этом обработку случаев с несколькими операционными системами возлагают на плечи загрузчика.
Читать дальше →
Total votes 57: ↑57 and ↓0+57
Comments16

Zip-файлы: история, объяснение и реализация

Reading time76 min
Views92K


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

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →
Total votes 176: ↑175 and ↓1+174
Comments45

О работе ПК на примере Windows 10 и клавиатуры ч. 1

Reading time16 min
Views108K
image

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Читать дальше →
Total votes 85: ↑78 and ↓7+71
Comments412

CreateRemoteThread для Linux

Reading time46 min
Views14K

Мицуха несёт новые потокиВ WinAPI есть функция CreateRemoteThread, позволяющая запустить новый поток в адресном пространстве другого процесса. Её можно использовать для разнообразных DLL-инъекций как с нехорошими целями (читы в играх, кража паролей, и т. д.), так и для того, чтобы на лету исправить баг в работающей программе, или добавить плагины туда, где они не были предусмотрены.


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


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


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

Читать дальше →
Total votes 76: ↑75 and ↓1+74
Comments27

Привет, люди с аутистическими нарушениями

Reading time16 min
Views76K


В смысле, привет, Хабр! Если вы можете сказать про себя слово «интроверт» (как и я) то вас, скорее всего, можно заносить в эту категорию. Другое дело, что категория, мягко говоря, размыта. И в неё от души навалено сразу несколько синдромов.

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

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

А теперь давайте разбираться в деталях.
Читать дальше →
Total votes 198: ↑182 and ↓16+166
Comments425

Доступно о криптографии на эллиптических кривых

Reading time37 min
Views242K
image


Тем, кто знаком с криптографией с открытым ключом, наверно известны аббревиатуры ECC, ECDH и ECDSA. Первая — это сокращение от Elliptic Curve Cryptography (криптография на эллиптических кривых), остальные — это названия основанных на ней алгоритмов.

Сегодня криптосистемы на эллиптических кривых используются в TLS, PGP и SSH, важнейших технологиях, на которых базируются современный веб и мир ИТ. Я уже не говорю о Bitcoin и других криптовалютах.

До того, как ECC стала популярной, почти все алгоритмы с открытым ключом основывались на RSA, DSA и DH, альтернативных криптосистемах на основе модулярной арифметики. RSA и компания по-прежнему популярны, и часто используются вместе с ECC. Однако несмотря на то, что магия, лежащая в фундаменте RSA и подобных ей алгоритмов легко объяснима и понятна многим, а грубые реализации пишутся довольно просто, основы ECC всё ещё являются для большинства людей загадкой.

В этой серии статей я познакомлю вас с основами мира криптографии на эллиптических кривых. Моя цель — не создание полного и подробного руководства по ECC (в Интернете полно информации по этой теме), а простой обзор ECC и объяснение того, почему её считают безопасной. Я не буду тратить время на долгие математические доказательства или скучные подробности реализации. Также я представлю полезные примеры с визуальными интерактивными инструментами и скриптами.
Читать дальше →
Total votes 127: ↑125 and ↓2+123
Comments72

Евангелие от аутиста

Reading time9 min
Views9.6K
Прочитав историю tanenn, решил рассказать и о себе: я аутист. Если быть точнее, то у меня Синдром Аспергера.

Так уж «повезло», что с рождения диагноз поставить мне не могли: тогда распался СССР и нашей семье пришлось бежать.
13 переездов сделали свое: диагностировать было сложно. Однако к 18-летию я решил-таки сходить в военкомат, где был тут же отправлен к психологам, которые и поставили данный диагноз.

Заранее извиняюсь за то, что рассказ может быть несколько странно изложен.
Читать дальше →
Total votes 142: ↑125 and ↓17+108
Comments188

Патч для гипервизора сознания

Reading time4 min
Views150K
image

Недавно в топе Хабра появился пост, заставивший меня вылезти из read-only: «Overclock мозга или внутрення виртуализация сознания».
Вводящее в заблуждение название и не менее спорное содержание. Неприятные ощущения вызывает еще и тот факт, что при всей неточности и искажении фактов автор осмелился прикрепить к нему метку tutorial.

Желающих взглянуть на осознанные сновидения без налета авторской фантазии, прошу под кат.
Читать дальше →
Total votes 135: ↑113 and ↓22+91
Comments168

Overclock мозга или Внутренняя виртуализация сознания

Reading time29 min
Views455K


Все помнят этот фильм? Какого черта он делает на Хабре? И вообще что тут делает подобный пост?
Наверное потому, что я считаю главным звеном в IT все таки человека, а точнее его мозги. Я попробую рассказать еще об одной возможности использовать свой мозг чуточку эффективнее. Одна из слабо задокументированных возможностей, которую мы используем каждый день, но не всегда даже об этом вспоминаем. Все описанное проверялось на мне. Если что-то я не пробовал, но рассказать об этом важно буду отмечать особо. Никаких наркотиков, аппаратов и издевательств над собой, только общедоступные легкие методики (короче, лег проспался и вперед, не вставая даже с кровати).
И да… Это до жути реалистично, на столько, что попробовав, вы не сможете не рассказать об этом.

Что бы не было лишних криков в комментах, попрошу всех кто ярых сторонников любой религии и конфессии, а так же убежденных эзотериков сразу поставить минус в карму и не читать дальше. Здесь не будет философии и великих вселенских тайн. А остальных прошу под кат — попробую рассказать о своей практике разгона мозга с помощью встроенных функций.
ночь как полигон для...
Total votes 224: ↑172 and ↓52+120
Comments292

Тульпа — карманная шизофрения для гиков или реальный воображаемый друг

Reading time9 min
Views1.5M
Скажите, вы бы хотели иметь друга? Любого человека или другое существо, которое будет вашим самым лучшим другом, обладая той внешностью, которая вам нравится, и тем характером который вам необходим, которое не надо будет делить с ее или его друзьями, родителями, собачкой, игрушками или учебой.
А секретаря, который всегда с вами, имеет прямой доступ к вашей памяти, напомнит, подскажет, и подаст нужную идею, напарника для мозгового штурма?
Тогда добро пожаловать под кат.



Тульпа — это стабильная самовнушенная осознанная визуализация, способная к самостоятельным мыслям и действиям, обладающая собственным сознанием. Что характерно, создается она совершенно осознанно, путем целенаправленных действий в течении долгого времени, и позволяет задавать начальный характер и форму по вашему усмотрению.
Это ты сейчас с кем разговаривал? Расшифруй определение.
Total votes 161: ↑83 and ↓78+5
Comments563

Шизофрения: взгляд изнутри

Reading time8 min
Views204K
Пишу сюда первый раз, и на русском пишу редко, так что если что не так, прошу о понимании.

Тема указанная в заголовке как мне показалось из комментариев к этой статье вызывает определённый интерес, и я решил поделиться своим небольшим опытом в надежде, что он поможет кому-то преодолеть жизненные трудности.
Читать дальше →
Total votes 133: ↑129 and ↓4+125
Comments497

Шизотипическое расстройство: взгляд изнутри

Reading time16 min
Views277K


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

Читать дальше →
Total votes 168: ↑165 and ↓3+162
Comments282

«Статья про минет»: ученые обработали 109 часов орального секса, чтобы разработать ИИ, который сосет член

Reading time6 min
Views330K
Привет, Хабр! Представляю вашему вниманию перевод статьи Саманты Коул (Samantha Cole) c motherboard.vice.com.

Анонимные специалисты по машинному обучению написали «статью про минет», чтобы сделать эту машинку для отсоса более реалистичной.


Autoblow AI, секс-игрушка для пользователей с пенисом, состоит из резинового рукава и расположенного внутри корпуса электродвигателя, и пытается имитировать оральный секс. Ее кампания на Indiegogo была запущена на прошлой неделе и быстро достигла своей цели в 50 000 $. Ее главное преимущество над предыдущей моделью, Autoblow 2, выпущенной в 2014 — это алгоритм машинного обучения, который «постоянно меняет технику», чтобы удовлетворить пользователя новыми способами.

Вместо повторяющихся, механических движений, этот «режим искусственного интеллекта» обещает воспроизвести сложные и непредсказуемые движения настоящего, человеческого минета. Чтобы сделать это, компания попросила команду из шести человек просмотреть и аннотировать 109 часов порно и наняла специалистов по машинному обучению, чтобы создать модель, обрабатывающую эти данные и транслирующую их в то, что делает игрушка. Вся работа заняла три года.
Читать дальше →
Total votes 321: ↑252 and ↓69+183
Comments395

(Не только) первокурснику: Вуз.Инструкция 2.0

Reading time15 min
Views20K
Часть 1 >>

Всем привет! Наш предыдущий пост про адаптацию на первом курсе «Первокурснику: Вуз.Инструкция 1.0» вызвал серьёзную ответную реакцию — шутка сказать, 290 комментариев суммарным объемом 153 000 знаков (это около 10 солидных хабропостов). И там же, в глубинах обсуждения пришло понимание, что релизу «Вуз.Инструкция 2.0» быть, т.к. во-первых, многие вопросы остались в стороне, во-вторых, нужен классный опрос, результаты которого будут полезны для всех нас и не только. Мы нашли время для того, чтобы написать вторую часть: о курсовиках, армии, первой работе, втором высшем. И снова призываем вас делиться опытом в комментариях — некоторыми историями можно зачитаться!


Конечно, нет :-) Всяких хватает.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments58

Первокурснику: Вуз.Инструкция 1.0

Reading time15 min
Views71K
Мне всегда казалось, что нет более уязвимого и потерянного в реальности человека, чем первокурсник в первом своём семестре. Точнее, казалось так не всегда, а начиная со своего первого курса. Потом были сессии, аспирантура, работа преподавателем на несчастном первом курсе и мнение только укреплялось. Представьте себе: человека выдернули из школы и поместили в абсолютно другую среду со странными чертами: группа похожа на класс, те же парты и доска, учебники и злой библиотекарь, те же пары, так похожие на уроки. Но, чёрт возьми, что происходит? Я вам расскажу, что.

То же самое, но про инженеров — ниже. 1:1, пацаны
Читать дальше →
Total votes 97: ↑83 and ↓14+69
Comments305

Epic fail resistance 1 или Лисец подкрался незаметно. Тестирование анонимности и безопасности + VPN для пользователя

Reading time17 min
Views9.6K
Доброго времени прочтения, уважаемые читатели Хабра.

В продолжение темы Big Data resistance 1. Прочитав комментарии к статье от dartraiden и YourChief, задумался на тему, а впрямь ли все хорошо и достаточно ли тестов анонимности и безопасности на 2ip и Whoer или раз все хорошо, значит что-то не заметил. К тому же, ряд проблем находил по интернету или сталкивался с ними сам в момент написания статьи.

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

Так же, в данной статье, предлагаю рассмотреть простую и бесплатную настройку VPN и защищенного DNS на уровне пользователя.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments10

Хаброквест в честь 20-летия Mail.Ru Group — 20 задачек

Reading time2 min
Views23K


Всем привет! Возможно, вы помните квесты-головоломки, которые я делал в 2010-м и 2016-м году. Версию 2016 проходят до сих пор, но настала пора обновить задания. Мы учли пожелания с прошлой игры: теперь призов будет больше, а проходить можно будет в спокойном темпе до конца недели. И новую версию выкатываем в честь дня рождения компании — Mail.Ru Group исполнилось 20 лет!

Как всегда, решать квест-головоломку тут: puzzle.mail.ru.
UPD 22.10.2018 Призеры и ответы
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments166

Неисчислимое: в поисках конечного числа

Reading time11 min
Views47K


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

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

В XX в. стала отчетливо проступать другая проблема. С бесконечностью мы можем разобраться при помощи одного символа (∞), но что делать с числами, которые меньше бесконечности, но при этом невообразимо огромны?

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

Добро пожаловать в кроличью нору без дна.
Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments18

Филиппины: как на малых островах живут люди, которым не особо нужны современные технологии

Reading time8 min
Views65K


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

На Филиппинах живёт 100 миллионов учтённых человек. Естественный прирост населения за прошлый год — плюс 1 779 566. В России живёт 146 миллионов человек, и естественный прирост за прошлый год — минус 168 тысяч человек.

Иллюстрация из диалога с «переговорщицей» племени одного из островов:
— У меня пять братьев и четыре сестры.
— А во сколько вы женитесь?
— В 18 лет примерно.
— А когда рожаете первого ребёнка?
— Около 14.

Итак, давайте пробежимся по маленьким островам — тем самым, где живёт до тысячи человек. Забегая вперёд, живут они очень счастливо, и я им отчасти завидую.
Читать дальше →
Total votes 91: ↑89 and ↓2+87
Comments141

Information

Rating
Does not participate
Registered
Activity