Search
Write a publication
Pull to refresh
143
0
Mikhail @host_m

Хостинг серверов

Send message

Три примера багов, которые ни от кого не прячутся

Reading time7 min
Views14K


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

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

Моментальная загрузка с instant.page

Reading time3 min
Views5.4K


instant.page — это небольшой скрипт, позволяющий ускорять навигацию по сайту с помощью just-in-time предзагрузки. Когда пользователь наводит курсор на ссылку, страница предзагружается в фоне, и при переходе по ссылке открывается моментально. По тому же принципу работает InstantClick, но он предоставляется уже как отдельная библиотека на pushState и Ajax, с дополнительными модулями вроде прогресс-бара предзагрузки.
Читать дальше →

Организация эффективных атак по времени с помощью HTTP/2 и WPA3

Reading time5 min
Views4.3K
Новая методика взлома преодолевает проблему «джиттера сети», которая может влиять на успешность атак по сторонним каналам



Новая методика, разработанная исследователями Левенского университета (Бельгия) и Нью-Йоркского университета в Абу-Даби, показала, что злоумышленники могут использовать особенности сетевых протоколов для организации утечек конфиденциальной информации.

Эта методика под названием Timeless Timing Attacks, продемонстрированная в этом году на конференции Usenix, использует особенности обработки сетевыми протоколами одновременно выполняемых запросов для устранения одной из проблем удалённых атак по времени по сторонним каналам.

Компилируем Microsoft Word 1989 года

Reading time13 min
Views21K


Собираем Opus


Opus — это кодовое имя, которое разработчики компании Microsoft дали пакету Microsoft Word for Windows v1.1a. Давайте скомпилируем его из исходного кода и посмотрим, удастся ли его запустить!

1. Введение


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

Примечание: в этой статье я буду часто упоминать DOS. Под этим обозначением подразумевается Microsoft MS-DOS, хотя большая часть информации также применима к IBM PC-DOS и большинству других разновидностей DOS.

Если вы новичок в пользовании операционной системой DOS, то рекомендую повторять мои действия в копии Microsoft MS-DOS v6.22, версии DOS от июня 1994 года (последней выпущенной версии), содержащей все необходимые нам инструменты (об единственном исключении я расскажу ниже).
Читать дальше →

Становится ли веб медленнее со временем?

Reading time7 min
Views11K


В недавней истории на Hacker News утверждалось, что скорости веб-страниц не повышаются даже с увеличением скоростей Интернета.

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

Также мы рассмотрим изменения, произошедшие с устройствами и вебом на протяжении предыдущих десяти лет, и расскажем, как повлияли эти измерения на скорость веба.
Читать дальше →

Движок, который смог: как Chromium удалось захватить 90% рынка браузеров

Reading time14 min
Views62K

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

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

У веб-сообщества есть достаточно причин опасаться отсутствия браузерного разнообразия. После того, как Internet Explorer захватил в начале 2000-х долю 90% от рынка браузеров, для выпуска нового браузера его разработчикам потребовалась добрая половина десятилетия. В тот период развитие веба остановилось, и начали возникать проблемы с безопасностью. Из-за этого веб стал хуже, поэтому мы часто стремимся к тому, чтобы браузеры конкурировали, а не монополизировали веб.
Читать дальше →

Картинка, которая одновременно является кодом на Javascript

Reading time6 min
Views63K

Изображения обычно хранятся как двоичные файлы, а файл Javascript по сути является обычным текстом. Оба типа файлов должны следовать собственным правилам: изображения имеют конкретный формат файла, определённым образом кодирующий данные. Для того, чтобы файлы Javascript можно было исполнять, они должны следовать определённому синтаксису. Я задался вопросом: можно ли создать файл изображения, одновременно являющийся допустимым синтаксисом Javascript, чтобы его можно было исполнять?

Прежде чем вы продолжите чтение, крайне рекомендую изучить эту песочницу кода с результатами моих экспериментов:

https://codesandbox.io/s/executable-gif-8yq0j?file=/index.html

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

https://executable-gif.glitch.me/image.gif
Читать дальше →

Как игры стали движущей силой двух школ исследований ИИ

Reading time15 min
Views5.8K
Сегодня мир штурмом захватывает ИИ, основанный на глубоком обучении и нейронных сетях. Однако многие алгоритмы, управляющие поиском в вебе и построением автомобильных маршрутов, гораздо старше, они уходят корнями в так называемый «старый добрый ИИ», также известный как «символический» искусственный интеллект, являвшийся основным видом ИИ с 1950-х до конца 1990-х. Затмевание символического ИИ глубинным обучением иллюстрируется двумя важнейшими вехами в истории искусственного интеллекта, каждая из которых связана с победой ИИ-системы над лучшим игроком-человеком.


Чемпион мира Гарри Каспаров победил компьютер IBM Deep Blue в 1996 году, но потерпел поражение в 1997 году, проиграв со счётом 4:2.

Некоторые аспекты управления VDS-сервером под Linux

Reading time9 min
Views15K
VDS (Virtual Dedicated Server) — услуга, в рамках которой пользователь получает виртуальный выделенный сервер с максимальными привилегиями. Это эмуляция реального физического сервера, у него есть рутовый доступ, возможность установки произвольных операционных систем и любого софта. При этом он обходится значительно дешевле аренды сопоставимого по мощности физического сервера.

На сервер можно поставить ОС со своего образа или воспользоваться готовым образом в панели управления.



Предположим, мы поставили Debian 10 и веб-сервер Nginx, который идёт в стандартном репозитории (apt install nginx). Давайте посмотрим, какие полезные утилиты и команды помогут в управлении сервером под Linux. Рассмотрим и отдельно Nginx, и сам VDS-сервер в целом.
Читать дальше →

Визуализация данных при отладке в Visual Studio Code

Reading time2 min
Views17K


Вообще Debugger Visualizers для обычного Visual Studio — это очень старая тема (статья 2009 года), но не очень популярная. В большинстве случаев принято учить сразу дебажить, представляя процессы в голове, а штуки вроде сортировок и списков показываются на доске. В вебе часто визуальную часть предоставляет браузер, и все всем довольны. Но бывает, что списки или деревья в голове уже не умещаются, таблицы хочется отсортировать, а графики строить не выходя из среды отладки. Для всего этого и был создан плагин для VS Code — Debug Visualizer.
Читать дальше →

Как использовать простую утилиту для поиска уязвимостей в программном коде

Reading time4 min
Views9.3K
Graudit поддерживает множество языков программирования и позволяет интегрировать тестирование безопасности кодовой базы непосредственно в процесс разработки.


Источник: Unsplash (Markus Spiske)

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

Очевидно, что в современных реалиях разработки программного обеспечения важно обеспечить безопасность процессов. В своё время был даже введён специальный термин DevSecOps. Под этим термином понимают ряд процедур, направленных на выявление и устранение уязвимостей в приложении. Существуют специализированные open source решения для проверки уязвимостей в соответствии со стандартами OWASP, которые описывают различные типы и поведение уязвимостей в исходном коде.
Читать дальше →

Одна из функций Chromium создаёт огромную нагрузку на корневые DNS-серверы

Reading time6 min
Views18K


Браузер Chromium, активно развивающийся open-source-родитель Google Chrome и нового Microsoft Edge, обратил на себя серьёзное негативное внимание из-за функции, которая задумывалась с благими намерениями: она проверяет, не «похищает» ли провайдер пользователя несуществующие результаты запросов доменов.

Intranet Redirect Detector, создающий поддельные запросы случайных «доменов», существование которых статистически маловероятно, ответственен примерно за половину общего трафика, получаемого корневыми DNS-серверами по всему миру. Инженер Verisign Мэтт Томас написал пространный пост в блоге APNIC с описанием проблемы и оценкой её масштаба.
Читать дальше →

Как защитить Python-приложения от внедрения вредоносных скриптов

Reading time7 min
Views8K


Python-приложения используют множество скриптов. Этим и пользуются злоумышленники, чтобы подложить нам «свинью» — туда, где мы меньше всего ожидаем её увидеть.

Одним из достоинств Python считается простота использования: чтобы запустить скрипт, нужно просто сохранить его в .py-файле и выполнить команду python с этим файлом (например, python my_file.py). Так же легко разбить наш файл, например, на модули my_app.py и my_lib.py и далее для подключения модулей использовать конструкцию import...from: import my_lib from my_app.py.

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

Нам надо создать веб с чистого листа

Reading time11 min
Views27K
image


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

Этот кризис влияет на платформы, творцов и потребителей.
Читать дальше →

Airport — маркетплейс для приложений в TestFlight

Reading time3 min
Views14K


У пользователей iOS сейчас непростые времена: App Store теряет крупные приложения и блокирует успешные стартапы, многие компании обвиняют Apple в монополизме, а Epic Games вообще в открытую нарушает ToS. В этой ситуации всё больше разработчиков и юзеров начинает пользоваться TestFlight — официальной платформой Apple для тестирования приложений под iOS.
Читать дальше →

Пора переходить в красный лагерь: выбираем лучший AMD EPYC для сервера

Reading time9 min
Views24K
Сложно поверить, но последний серьезный успех AMD на рынке серверных микропроцессоров датирован далеким 2004 годом. Более 15 лет назад компания представила 64-битные Opteron, которые удачно конкурировали с интеловскими Xeon на ядрах Gallatin, обеспечивая требуемую производительность при умеренном на то время тепловом пакете. Дальнейшие годы прошли в полной доминации «синих», а отсутствие прямого конкурента позволило им занять лидирующие места в большинстве сегментов рынка. Но с выходом линеек Ryzen (для настольных ПК) и EPYC (для серверных станций) AMD не просто наверстывает упущенное, а всерьёз претендует на звание единоличного короля. Какие сильные стороны «красных» камней и что взять для создания недорогой и производительной серверной станции? Об этом и не только расскажем далее.


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

Зачем процессорам нужен кэш и чем отличаются уровни L1, L2, L3

Reading time10 min
Views139K


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

Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)?
Читать дальше →

Переход с Windows Server 2008 на Windows Server 2019, лёгкая прогулка или восхождение на гору?

Reading time9 min
Views40K


Windows Server уже 27 лет и с каждым новым обновлением компания Microsoft всё больше совершенствует свое детище. С момента выхода Windows Server 2016 прошло уже 4 года, но с этим обновлением — компанией был выбран новый курс обновления, разделенный на 2 канала.
Читать дальше →

Автоматизируем обработку изображений с помощью Jupyter и Python

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


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

Пишем интерпретатор BASIC в стиле 80-х

Reading time22 min
Views10K


В течение нескольких лет я работала над личным проектом создания (а на самом деле исследования) «фальшивого эмулятора», то есть написанного на JavaScript эмулятора никогда не существовавшего компьютера. Эта машина должна была стать данью памяти восьми- и шестнадцатибитным компьютерам 1980-х и 90-х.

Однако мне нравятся сложности: в этой машине ещё и использовался новый набор инструкций. Он похож на наборы, применявшиеся в ту эпоху, но немного проще в работе. Так родился Retroputer. В течение нескольких лет эмулятор расширял свои возможности и совершенствовался, но, скорее всего, он никогда не будет «закончен» (в конце концов, это ведь личный проект-исследование).

Когда появился @bbcmicrobot, я захотела создать нечто подобное для Retroputer. Мои навыки разработки на JS в основном ограничивались фронтендом, поэтому это будет отличным поводом получить опыт бэкенда. Только есть одна проблема: Retroputer может понимать только собственный язык ассемблера. Пока у него нет поддержки BASIC.

Так я и пришла к созданию интерпретатора BASIC в стиле 80-х, то есть полностью на языке ассемблера, как его тогда и писали. Я решила, что стоит поделиться своей работой, потому что нам не часто приходится погружаться в области, столь далёкие от привычных абстракций. Мой повседневный инструмент (JavaScript) делает многие аспекты тривиальными, и иногда это даже кажется магией. Понимание самого нижнего уровня процессов часто помогает в понимании этих абстракций.

Итак, давайте приступим.
Читать дальше →

Information

Rating
Does not participate
Location
Meppel, Drenthe, Нидерланды
Registered
Activity