Pull to refresh
0
ilya @bontaread⁠-⁠only

User

Send message

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

Level of difficultyMedium
Reading time15 min
Views222K

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

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

Читать далее
Total votes 325: ↑324 and ↓1+323
Comments342

BASHUI

Level of difficultyMedium
Reading time8 min
Views21K

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

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

нажми на кнопку
Total votes 86: ↑85 and ↓1+84
Comments44

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

Reading time5 min
Views19K
Бобра!

Что ж, мы плавно выходим на старт второго потока группы «Разработчик С++» и разбираем интересные материалы, которые накопились у преподавателя в свободное от работы и преподавания время. Сегодня рассмотрим (а потом и продолжим) серию материалов, где разбираются отдельные пункты С++ 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

Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments32

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

Reading time3 min
Views70K
В колледже люди говорили мне, что я начну карьеру с написания кода, но в конечном счете приду к тому, что буду просить других писать код под свои идеи. В честь того, что это предсказание оказалось полностью неверным, вот некоторые произвольные соображения от сорокалетнего программиста, который размышляет над ходом своей карьеры.
Читать дальше →
Total votes 157: ↑147 and ↓10+137
Comments161

Multithreading

Reading time77 min
Views176K

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

Читать далее
Total votes 22: ↑20 and ↓2+18
Comments3

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

Reading time4 min
Views54K

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

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

Читать далее
Total votes 80: ↑74 and ↓6+68
Comments132

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

Reading time8 min
Views98K

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

Читать далее
Total votes 110: ↑100 and ↓10+90
Comments409

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

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

Читать дальше →
Total votes 74: ↑74 and ↓0+74
Comments153

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

Reading time7 min
Views23K
Первая часть маленького «срывания покрова» о работе подсистемы виртуальной памяти, связи механизмов mmap, разделяемых библиотек и кэшей вызвало такое бурное обсуждение, что я не смог удержаться от того, чтобы не продолжить исследование на практике

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

Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments102

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

Reading time14 min
Views73K
Привет, Хабрахабр!

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

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

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

Reading time7 min
Views92K


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

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

Reading time15 min
Views25K

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

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

Читать далее
Total votes 46: ↑46 and ↓0+46
Comments39

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

Reading time34 min
Views31K

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

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

Читать далее
Total votes 148: ↑148 and ↓0+148
Comments18

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

Reading time22 min
Views40K
image

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

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

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

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

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

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

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

Reading time12 min
Views14K

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

Читать далее
Total votes 63: ↑58 and ↓5+53
Comments14

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

Reading time7 min
Views9.2K

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

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

Reading time3 min
Views5.8K
– Ты кто такой???
– Я новый русский.
– А я тогда кто?!


Предисловие

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

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

PROSPECTOR изнутри

Reading time6 min
Views12K
Если есть возможность, лучше не разрабатывать экспертные системы (с)

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

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

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

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

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


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

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

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



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

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

Information

Rating
Does not participate
Registered
Activity