Pull to refresh
56
145

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

Send message

Как пытались (пере)программировать мозги, и что из этого получилось? Часть 1: проект «Артишок»

Level of difficulty Easy
Reading time 10 min
Views 10K

Во все века разведчики, шпионы и спецслужбы полагались в своей работе на разные вещества и психологические уловки. Тёмные рыцари плаща и кинжала травили врагов всевозможными ядами, усыпляли стражу, подсылали убийц-фанатиков с промытыми пропагандой и веществами мозгами — как легендарные ассасины времён Крестовых походов, чьё название происходит от неумеренного накачивания одноразовых киллеров гашишем. Развитие науки и техники в ХХ веке только подстегнуло энтузиазм шпионских ведомств. Если в СССР секретная токсикологическая лаборатория №12 при КГБ занималась в основном ядами для ликвидации врагов трудового народа, то в США к боевым токсинам из закрытого центра Форт-Детрик добавлялись безумные во всех смыслах эксперименты ЦРУ по взлому чужих (и даже своих!) мозгов посредством веществ и гипноза. Это привело к грандиозному скандалу в 70-е годы, породило немало теорий заговора, а также отсылок в массовой и не очень культуре. Впрочем — обо всём по порядку.
Читать дальше →
Total votes 81: ↑66 and ↓15 +51
Comments 19

Паяем классическую педаль Marshall Bluesbreaker

Level of difficulty Easy
Reading time 8 min
Views 5.4K


Привет, Хабр! 62 года назад англичанин Джим Маршалл скопировал гитарный усилитель Fender Bassman из США. Британские лампы зазвучали совсем не так, как американские. Различие в характеристиках громкоговорителей также ощутимо повлияло на звук.

Так появился мировой стандарт перегруженного электрогитарного звучания, благодаря которому, получило своё развитие множество стилей рока и металла.

К тридцатилетнему юбилею своего первого культового комбоусилителя компания «Маршалл» выпустила транзисторную педаль, повторяющую его звучание. А сегодня я соберу свой экземпляр этой педали.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 12

Готовимся к вопросам по вёрстке на интервью Frontend-разработчика: свойство display

Level of difficulty Medium
Reading time 7 min
Views 8.8K


За свою карьеру у меня было достаточно много собеседований. Конечно, одной из основных тем вопросов была вёрстка. Немного похвалюсь. Не было вопроса, на который я не ответил.


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


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


Сегодня я дам ответ на следующий вопрос: «Зачем нужно использовать свойство display

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

Советские игровые автоматы — ностальгический гейминг с запахом резины. Часть 2: «Городки» и электронные тиры

Level of difficulty Easy
Reading time 5 min
Views 7K

Советские игровые автоматы стали порождением сближения СССР и Запада в начале 70-х годов, при брежневско-никсоновской разрядке. Советский Минкульт выкупил большую часть игровых автоматов, которые появились в Москве на международной выставке «Аттракцион-71», и уже в 1974 году в серию пошёл самый знаменитый советский игровой автомат «Морской бой». О том, как он появился на свет, и какую роль в этом сыграли японские и американские разработки, мы поговорили в прошлой части. А теперь вспомним другие игровые автоматы СССР — менее культовые, но также дарившие множество ярких впечатлений до появления в нашей стране массовых компьютерных игр.
Читать дальше →
Total votes 57: ↑49 and ↓8 +41
Comments 11

Множество масок Persona 5

Level of difficulty Easy
Reading time 12 min
Views 3.8K
image

С выходом Persona 3 Reload, ремейка игры, которая коренным образом изменила облик серии и сделала её одной из самых важных японских RPG-франшиз в истории, шумиха вокруг пятой части поутихла. Появившись на западе в 2017 году, следом за родной Японией, игра захватила умы геймеров по всему миру, имея нестандартные для жанра сеттинг, темы и художественное оформление.

Японские разработчики всегда тяготели к более абстрактному повествованию, чем их западные собратья, делая упор на геймплейные механики, образность сюжетов и не особо стремясь разжёвывать для игрока каждую деталь. И сегодня мы поговорим об одном из самых ярких представителей жанра JRPG последних лет, который сочетает в себе уникальные нарративные и геймплейные приёмы с желанием авторов честно высказаться о своей родной культуре.
Читать дальше →
Total votes 40: ↑38 and ↓2 +36
Comments 3

Первое пришествие айтишниц: почему в 50-х годах в программировании женщин было больше, чем в нулевые?

Level of difficulty Easy
Reading time 12 min
Views 9.7K

В наши дни середины 2020-х женщинами в IT трудного кого-то удивить. Шутки насчёт девушек-программисток рубежа нулевых и десятых годов уже стали анахронизмом — но ещё не так давно компьютерная среда считалась делом суровых бородатых мужиков-гиков, а любая тян глубоко в компьютерной теме воспринималась в качестве удивительной аномалии. Казалось бы, в ещё более старые времена всё в сфере IT было ещё более однозначно. Ан нет: на заре компьютерной эпохи, в США 60-х годов, многие вакансии в сфере цифровых технологий считались едва ли не типично женскими, на уровне машинисток или телеграфисток. Как это случилось, и почему затем компьютеры на несколько десятилетий превратились в мужское царство?
Читать дальше →
Total votes 57: ↑51 and ↓6 +45
Comments 15

Эффект Ганна

Level of difficulty Medium
Reading time 8 min
Views 11K
Картинка Benzoix, Freepik

Среди физических эффектов особняком стоит один весьма интересный феномен, который получил название эффекта Ганна, по имени английского физика Джона Ганна, открывшего его в 1963 году…

Суть его заключается в том, что если к однородному образцу из специального материала с имеющимися электрическими контактами приложить электрическое поле, величина которого превышает некоторое пороговое значение (эффект наблюдался первооткрывателем на кристаллах арсенида галлия и фосфида индия; для первого напряжённость электрического поля должна составлять 3 кВ/см, а для второго — 6 кВ/см), то во внешней электрической цепи начинают наблюдаться колебания тока. Причём было обнаружено, что период этих колебаний примерно равен времени полёта электронов от катода к аноду, а частота колебаний была достаточно большой и находилась в области СВЧ-диапазона: $Т_{0}\approx L/u_{g}$, где: $L$ — длина экземпляра; $u_{g}$ — скорость дрейфа электронов.
Читать дальше →
Total votes 73: ↑72 and ↓1 +71
Comments 2

Взлом космоса — теперь и на STANDOFF 12

Level of difficulty Medium
Reading time 3 min
Views 1.8K


В ноябре в рамках конференции Moscow Hacking Week прошла ещё одна кибербитва STANDOFF — мероприятие проводится уже 12-й раз. Однако STANDOFF 12 запомнился не только присвоением звания пятикратного чемпиона команде Codeby, но и новыми отраслями — в разработке одной из них мы приняли непосредственное участие. И если вы следите за нашими новостями, то сможете без проблем ответить, что это была за отрасль… Правильно, космос!

Соревнование было поистине масштабным: 15 команд 4 дня нон-стопом взламывали все из представленных областей (не досталось только сборочной инфраструктуре Positive Technologies, за взлом наивысшего уровня которой организаторы пообещали 5 миллионов рублей). Мы также проводили собственные отборочные испытания, давшие возможность победителям отправиться покорять Государство F в составе команды bRedTeam.
Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Comments 1

Разработчик-универсал под видом специалиста

Level of difficulty Easy
Reading time 5 min
Views 16K

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

Ниже я опишу сложности, с которыми мне приходилось сталкиваться. Надеюсь, эта информация окажется полезной для других вольных авантюристов. Прошу учесть, что статья отражает преимущественно мой личный опыт, так что делайте на это скидку.
Читать дальше →
Total votes 70: ↑65 and ↓5 +60
Comments 11

Инструментальный усилитель для микрофона

Level of difficulty Medium
Reading time 8 min
Views 5K


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

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

Не хватит их и на аудиоинтерфейс с достаточным числом каналов, поэтому приходится использовать микшер, смешивающий несколько моно- и стереосигналов в один стереосигнал. Чтобы подключить качественный микрофон, микшеру необходим чувствительный балансный аудиовход. Сегодня мы изучим и соберём такой модуль.
Схема основана на операционных усилителях.
Total votes 58: ↑56 and ↓2 +54
Comments 14

Не стоит недооценивать HTML

Level of difficulty Easy
Reading time 6 min
Views 22K

«HTML – это просто», «Разрабатывать фронтенд проще, чем бэкенд», «После реализации бэкенда обновление UI не должно составлять труда», – за время работы в сфере веб-разработки вокруг меня то и дело звучали эти и другие аналогичные утверждения.

И очень часто они вызывали у меня грусть.

Дело в том, что бо́льшую часть времени я проводила за написанием фронтенда, включая работу с HTML, CSS и JavaScript (по факту в основном TypeScript). Когда кто-нибудь говорит мне о «простоте» моей работы, я начинаю думать, что мои навыки не представляют высокой ценности, и меня может легко заменить любой разработчик…

В статье же я решила описать свои размышления, которые рождались в течение последних двух лет во время работы с людьми из разных команд с разным опытом в HTML-разработке и фронтенд-технологиях в целом. Здесь я озвучу несколько основных своих вопросов «Почему?», сопроводив их возможными ответами.
Читать дальше →
Total votes 66: ↑63 and ↓3 +60
Comments 94

Создание PDF размером с Германию

Level of difficulty Easy
Reading time 7 min
Views 24K

Сегодня утром, пролистывая ленты социальных сетей, я уже в который раз встретила утверждение, что у PDF-документа есть максимально допустимый размер.

Подобное утверждение появилось на просторах интернета ещё в 2007 году. Этот твит является характерным примером постов с аналогичным заявлением, в которых оно преподносится как твёрдый факт без каких-либо подтверждающих свидетельств или объяснений. То есть мы должны просто принять, что один PDF может покрыть лишь около половины площади Германии, и нам никак не объясняют, почему его магический предел составляет 381 километр.

Тут мне стало интересно – а создавал ли кто-нибудь такой большой PDF? Насколько это сложно? А можно ли сделать документ ещё больше?

Несколько лет назад я из праздного любопытства немного поигралась с PostScript, предшественником PDF, и это оказалось очень увлекательным! Ранее мне не доводилось изучать внутреннее устройство PDF, так что здесь у меня возник для этого хороший повод.

Приступим!
Читать дальше →
Total votes 126: ↑123 and ↓3 +120
Comments 57

Как изучить Haskell всего за 15 лет

Level of difficulty Medium
Reading time 9 min
Views 14K

Haskell — это язык программирования, изобретённый в 20-м веке шотландскими логиками в качестве пранка (вероятно). Примерно пятнадцать лет назад я начал изучать Haskell по причинам, которые уже и не упомню. Сегодня я наконец написал полезную программу на Haskell и уверен, что смогу сделать это снова, если мне когда-нибудь понадобится ещё одна компьютерная программа.

Я не знаю, как изучал функциональное программирование в целом и Haskell в частности. В 2006-м я следил за проектами why the lucky stiff и читал передовой тамблелог Леа Нойкирхен Anarchaia, и какой-то из этих источников познакомил меня с миром за пределами ООП. В декабре 2006 года Леа опубликовала на Anarchaia ссылку на Pandoc, и тогда я впервые узнал о своём любимом ПО и языке, на котором оно было написано.
Читать дальше →
Total votes 63: ↑58 and ↓5 +53
Comments 9

К 30-летнему юбилею DOOM: как два садиста, психопат и мормон создали одну из величайших игр в истории? Часть 7

Level of difficulty Easy
Reading time 7 min
Views 17K

Итак, в прошлой части мы наконец добрались до того славного момента, когда Wolfenstein 3D был выпущен и стал суперхитом лета 1992 года. Компания единомышленников не стала почивать на лаврах и пачках долларов, полученных после выхода игры про массовой экстерминатус нацистов — и задумалась о создании нового 3D-шутера. Именно с этого момента начинается история разработки собственно великого и ужасного Doom.

Все части цикла статей о создании DOOM:
Читать дальше →
Total votes 75: ↑74 and ↓1 +73
Comments 3

Разобраться раз и навсегда: Task.WhenAll или Parallel.ForEachAsync в C#

Level of difficulty Medium
Reading time 6 min
Views 15K


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

Если быстро посмотреть на результаты, которые появляются в интернете при поиске советов по реализации подобных вещей, то можно увидеть, что есть как много похожих, так и различных предложений от различных программистов. В какой-то момент поиска вы, вероятно, столкнётесь с поиском идеей использования Task.WhenAll или Parallel.ForEachAsync.

При чтении некоторых из этих материалов будет видно много различных противоречивых ответов как на StackOverflow, так и по всему интернету. Сегодня я собираюсь сравнить эти два метода с помощью определённых бенчмарков, которые стравят их друг против друга, чтобы, наконец, выяснить применимость каждого из двух методов.
Читать дальше →
Total votes 58: ↑57 and ↓1 +56
Comments 18

Прокачиваем вёрстку ARIA-атрибутами. Атрибут role

Level of difficulty Medium
Reading time 8 min
Views 3.5K

В разговорах людей, интересующихся доступностью, часто можно услышать слово «Роль». Так, что это такое? Это специальная форма представления элемента для скринридера. Устанавливается она с помощью атрибута role. Сегодня поговорим о нем.


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


Давайте начнём!

Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Comments 10

Каково это, создавать язык программирования сегодня?

Level of difficulty Medium
Reading time 8 min
Views 16K

«Эта книга – классика. Относитесь к ней бережно».

Такую фразу произнёс архитектор из нашей команды, передавая мне The Dragon Book. Разработкой компиляторов я увлёкся где-то 15 лет назад ещё на заре своей карьеры. Как-то раз, читая эту книгу поздно вечером, я заснул, небрежно уронив её на пол. Надеюсь, владелец не заметил небольшую вмятину на обложке после того, как я ему её вернул.

Вышла эта книжка в 1986 году. В те времена создание компиляторов было крайне сложной задачей, требовавшей обладания различными навыками в области компьютерных наук в целом и программирования в частности. Теперь, почти четыре десятилетия спустя, этой задачей занимаюсь я. Насколько сложна она сегодня? Приглашаю вместе разобрать процесс создания языка и посмотреть, насколько современные инструменты его упростили.
Читать дальше →
Total votes 62: ↑59 and ↓3 +56
Comments 5

За чистое небо над головой

Level of difficulty Easy
Reading time 3 min
Views 6.9K

В прошлом году мы запустили на орбиту пикоспутник с самым настоящим сервером, и в честь этого сделали Telegram-игру «Спутник против мусора». Рекомендуем попробовать свои силы, если вдруг она прошла мимо вас. Мы уже рассказывали о том, как пришли к идее игры и каких персонажей придумали для неё, повторяться не будем. Здесь мы расскажем о разработке.
Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Comments 8

Обманчиво простой и интересный RSA

Level of difficulty Medium
Reading time 8 min
Views 8.1K

Недавно, читая книгу Real-World Cryptography, я узнала об атаке Блейхенбахера, иначе называемой атакой миллионом сообщений. Этот вид атаки Даниэль Блейхенбахер продемонстрировал в 1998 году, взломав RSA через функцию шифрования PKCS #1. В книге об этой атаке было сказано немного, поэтому я решила изучить её сама и в конечном итоге реализовать.

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

Вместо этого я решила реализовать RSA сама, чтобы иметь возможность развернуть слабую схему шифрования, позволяющую осуществить атаку Блейхенбахера. Пока что у меня готова реализация RSA и PKCS (уязвимой версии). На создание основы RSA ушло около часа, плюс несколько дней на отладку. И теперь она (кажется) работает. Вскоре, если звёзды сойдутся, можно будет развернуть саму атаку.
Читать дальше →
Total votes 42: ↑40 and ↓2 +38
Comments 19

Передавать пустые срезы между Rust и C/C++ на удивление сложно

Level of difficulty Medium
Reading time 11 min
Views 8.4K

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

В общих чертах она выглядит так:

  • В правила работы с указателями и memcpy в С не заложены грамотные способы представления пустого среза памяти.
  • В С++ с правилами указателей проблем нет, но поведение memcpy здесь аналогично её поведению в С.
  • Интерфейс внешних функций (Foreign Function Interface, FFI) в Rust не лишён накладных издержек. Rust использует несовместимое с C/C++ представление срезов, требуя их преобразования при передаче в обоих направлениях. При этом о преобразовании очень легко забыть.
  • Срезы в Rust также несовместимы с арифметикой указателей, что создаёт проблемы в работе итератора срезов стандартной библиотеки. (Обновление от 2024-01-16: похоже, над этой проблемой работают).

Поскольку проблемы FFI касаются нескольких языков, я писал статью в качестве общей справки, описывающей их несогласованность.
Читать дальше →
Total votes 64: ↑59 and ↓5 +54
Comments 53

Information

Rating
20-th
Location
Россия
Works in
Registered
Activity