Как стать автором
Обновить
0
ilya @bontaread⁠-⁠only

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

Отправить сообщение

OpenConnect: недетектируемый VPN, который вам понравится

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров222K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Всего голосов 325: ↑324 и ↓1+323
Комментарии342

BASHUI

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров21K

BASHUI - это BASH + UI, а не то что вы подумали.

Начиная работать над sshto я решил не переизобретать велосипед, вернее не переизобретать велосипед целиком а только некоторые его части и в качестве "рамы с педалями" использовал dialog. Это значительно ускорило разработку, но идея написать свой UI на баше с блекджеком и всем остальным ни на секунду не покидала мой воспалённый мозг. Звёзды сошлись, и я решил воплотить этот проект в жизнь(в bash). Втречайте BASHUI!

нажми на кнопку
Всего голосов 86: ↑85 и ↓1+84
Комментарии44

Основные принципы C++: Правила выражений и операторов

Время на прочтение5 мин
Количество просмотров19K
Бобра!

Что ж, мы плавно выходим на старт второго потока группы «Разработчик С++» и разбираем интересные материалы, которые накопились у преподавателя в свободное от работы и преподавания время. Сегодня рассмотрим (а потом и продолжим) серию материалов, где разбираются отдельные пункты С++ Core Guidelines.

Поехали.

В C++ Core Guidelines много правил, посвященных выражениям и операторам. Если быть точным, то более 50 правил посвящено объявлениям, выражениям, операторам и арифметическим выражениям.



*перевод
Информативные названия

Оптимальная длина переменных

  • Не должны быть слишком длинными (maximimNumberOfPointsInModernOlympics.) или слишком короткими (например, x, x1)
  • Длинные названия сложно печатать, короткие названия недостаточно информативны..
  • Дебажить программы с названиями от 8 до 20 символов гораздо проще
  • Гайдлайны не заставляют вас срочно менять названия переменных на имена из 9-15 или 10-16 символов. Но если вы найдете в своем коде более короткие названия, убедитесь, что они достаточно информативны.

Слишком длинные: numberOfPeopleOnTheUsOlympicTeam; numberOfSeatsInTheStadium; maximumNumberOfPointsInModernOlympics
Слишком короткие: n; np; ntmn; ns; nslsd; m; mp; max; points
В самый раз: numTeamMembers, teamMembersCount

Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии32

Наблюдения программиста в возрасте

Время на прочтение3 мин
Количество просмотров70K
В колледже люди говорили мне, что я начну карьеру с написания кода, но в конечном счете приду к тому, что буду просить других писать код под свои идеи. В честь того, что это предсказание оказалось полностью неверным, вот некоторые произвольные соображения от сорокалетнего программиста, который размышляет над ходом своей карьеры.
Читать дальше →
Всего голосов 157: ↑147 и ↓10+137
Комментарии161

Multithreading

Время на прочтение77 мин
Количество просмотров177K

Разработчики часто сталкиваются с необходимостью разработки многопоточных приложений, поэтому вопросы многопоточности требуют детального изучения. Давайте познакомимся с основными терминами, используемыми в источниках информации о многопоточности, рассмотрим задачи и проблемы многопоточности и изучим средства стандартной библиотеки C++, которые помогут создавать многопоточные приложения.

Читать далее
Всего голосов 22: ↑20 и ↓2+18
Комментарии3

Почему ИИ в F.E.A.R. по-прежнему остается лучшим в шутерах от первого лица

Время на прочтение4 мин
Количество просмотров54K

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

Этот эпизод многое говорит о внимании к деталям в F.E.A.R. — игре 12-летней давности с искусственным интеллектом, которому могут позавидовать многие современные шутеры. Его армия солдат-клонов выглядит умнее любых врагов, с которыми я сталкивался в FPS впоследствии, и остается такой и по сей день.

Читать далее
Всего голосов 80: ↑74 и ↓6+68
Комментарии132

Почему линукс использует swap-файл

Время на прочтение8 мин
Количество просмотров98K

Жажда тюнинга может завести в неведомые дебри. И, пожалуй, едва ли не самая частая неправильная оптимизация - отключение swap-файла. Если прикинуть частоту, с которой эта ошибка встречается, то, наверное, она входит в негласный top-10 (а может и top-5) самых распространенных, самых бесполезных и самых вредных оптимизаций - потому что swap-файл это одна из самых интересных, сложно понимаемых и недооцененных  сущностей в подсистеме управления виртуальной памятью.

Читать далее
Всего голосов 110: ↑100 и ↓10+90
Комментарии409

В защиту swap'а [в Linux]: распространенные заблуждения

Время на прочтение14 мин
Количество просмотров151K
Прим. перев.: Эта увлекательная статья, в подробностях раскрывающая предназначение swap в Linux и отвечающая на распространённое заблуждение на этот счёт, написана Chris Down — SRE из Facebook, который, в частности, занимается разработкой новых метрик в ядре, помогающих анализировать нагрузку на оперативную память. И начинает он своё повествование с лаконичного TL;DR…

Читать дальше →
Всего голосов 74: ↑74 и ↓0+74
Комментарии153

Почему линукс использует swap-файл, часть 2

Время на прочтение7 мин
Количество просмотров23K
Первая часть маленького «срывания покрова» о работе подсистемы виртуальной памяти, связи механизмов mmap, разделяемых библиотек и кэшей вызвало такое бурное обсуждение, что я не смог удержаться от того, чтобы не продолжить исследование на практике

Поэтому, сегодня мы сделаем… Крошечную лабораторную работу. В виде крошечной же программы на C, которую мы напишем, скомпилируем и проверим в деле — со свапом и без свапа.

Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии102

Организация виртуальной памяти

Время на прочтение14 мин
Количество просмотров73K
Привет, Хабрахабр!

В предыдущей статье я рассказал про vfork() и пообещал рассказать о реализации вызова fork() как с поддержкой MMU, так и без неё (последняя, само собой, со значительными ограничениями). Но прежде, чем перейти к подробностям, будет логичнее начать с устройства виртуальной памяти.

Конечно, многие слышали про MMU, страничные таблицы и TLB. К сожалению, материалы на эту тему обычно рассматривают аппаратную сторону этого механизма, упоминая механизмы ОС только в общих чертах. Я же хочу разобрать конкретную программную реализацию в проекте Embox. Это лишь один из возможных подходов, и он достаточно лёгок для понимания. Кроме того, это не музейный экспонат, и при желании можно залезть “под капот” ОС и попробовать что-нибудь поменять.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии4

Путешествие по Стеку. Часть 1

Время на прочтение7 мин
Количество просмотров92K


В предыдущих материалах мы рассмотрели размещение программы в памяти – одну из центральных концепций, касающихся выполнения программ на компьютерах. Теперь обратимся к стеку вызовов – рабочей лошадке большинства языков программирования и виртуальных машин. Нас ожидает знакомство с удивительными вещами вроде функций-замыканий, переполнений буфера и рекурсии. Однако всему свое время – в начале нужно составить базовое представление о том, как работает стек.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии15

Выбор графического движка (GUI) для встраиваемой электроники

Время на прочтение15 мин
Количество просмотров25K

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

В нашем полифункциональном заряднике есть небольшой графический дисплей. Разберём что тут можно подобрать. 

Читать далее
Всего голосов 46: ↑46 и ↓0+46
Комментарии39

Fuchsia OS глазами атакующего

Время на прочтение34 мин
Количество просмотров31K

Fuchsia — это операционная система общего назначения с открытым исходным кодом, разрабатываемая компанией Google. Эта операционная система построена на базе микроядра Zircon, код которого написан на C++. При проектировании Fuchsia приоритет был отдан безопасности, обновляемости и быстродействию.

Как исследователь безопасности ядра Linux я заинтересовался операционной системой Fuchsia и решил посмотреть на нее с точки зрения атакующего. В этой статье я поделюсь результатами своей работы.

Читать далее
Всего голосов 148: ↑148 и ↓0+148
Комментарии18

Тетрис: история одной игры

Время на прочтение22 мин
Количество просмотров40K
image

Сегодня «Тетрису» исполняется 38 лет, а потому неплохо будет вспомнить тот тернистый путь, через который прошла эта игра.

Я изобрел тетрис для собственного удовольствия. Только так и можно что-то изобрести, — Алексей Леонидович Пажитнов

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

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

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

В общем, об этой чудной игре и поговорим.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии9

Когти орла. Римские мечи, завоевавшие мир

Время на прочтение12 мин
Количество просмотров14K

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

Читать далее
Всего голосов 63: ↑58 и ↓5+53
Комментарии14

Детальный анализ вредоносного ПО, замаскированного под NOTEPAD++

Время на прочтение7 мин
Количество просмотров9.2K

Lazarus привлекала своих жертв при помощи документов о вакансиях в таких компаниях, как LockHeed Martin, BAE Systems и Boeing. В данном конкретном случае злоумышленники привлекали жертв, ищущих работу в Boeing, при помощи документа Boeing BDS MSE.docx ( твит ShadowChasing1). Вредоносное ПО извлекает имя хоста, имя пользователя, информацию о сети, список процессов и другую информацию, которая затем должна была передаваться на один из четырёх серверов C2. Предназначенные для передачи данные сжимались, шифровались XOR, кодировались Base64 и отправлялись на сервер C2. Троян реализует четыре действия, в том числе скачивает и исполняет файл .exe или .dll, загружает PE (Portable Executable) в память процессов и исполняет шелл-код.
Читать дальше →
Всего голосов 46: ↑37 и ↓9+28
Комментарии7

Шифрование трафика в Direct Connect, ч. 2

Время на прочтение3 мин
Количество просмотров5.8K
– Ты кто такой???
– Я новый русский.
– А я тогда кто?!


Предисловие

В первой части статьи мы рассуждали о Direct Connect в целом и обустраивали ADCs хаб.

Сегодня нам предстоит научиться использовать такой хаб по прямому назначению. Для этого мы поговорим об особенностях совместимых DC клиентов и подружим их с TLS.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

PROSPECTOR изнутри

Время на прочтение6 мин
Количество просмотров12K
Если есть возможность, лучше не разрабатывать экспертные системы (с)

В мире разработано множество экспертных систем, в данном посте хотелось бы рассмотреть структуру и логику работы одной из древних ЭС под названием «PROSPECTOR».
Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Погружение в систему — вот на что уходит основное время разработчика

Время на прочтение4 мин
Количество просмотров8.8K
Об авторе. Тудор Гриба — разработчик свободного редактора кода Glamorous Toolkit. Это программируемая MDE с движком визуализации и встроенной системой управления знаниями. В своей программной статье автор объясняет, с какой целью создана среда разработки Moldable Development Environment.

Давайте разберёмся, на что уходит время разработчиков. Самый старый из известных мне источников по этой теме — книга «Принципы разработки и проектирования программного обеспечения» Зелковица, Шоу и Гэннона (1979). Там написано, что две трети времени программиста уходит на сопровождение проектов.

Скан страницы:


Затраты на разработку программного обеспечения (1979)
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии5

Яндекс выложил в опенсорс YDB

Время на прочтение16 мин
Количество просмотров140K
Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой опубликованы на GitHub под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.



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

В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.
Читать дальше →
Всего голосов 335: ↑332 и ↓3+329
Комментарии135

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность