Как стать автором
Обновить
59
0
John Smith @swh

Overcome!

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

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

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

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Всего голосов 506: ↑498 и ↓8+490
Комментарии351

Два мира виртуальных машин

Время на прочтение18 мин
Количество просмотров38K
Виртуальный. В отличие от большинства модных компьютерных словечек, это понятие обычно соответствует своему словарному определению в тех случаях, когда речь идёт об аппаратуре или программах. Словарь «Random House College Dictionary» определяет «virtual» как «проявляющий свойства и эффекты чего-либо, но не являющийся таковым на самом деле».
Оригинал
Virtual. Unlike most computer buzzwords, this one usually holds true to its dictionary definition when it refers to hardware or software. The Random House College Dictionary defines «virtual» as «being such in force or effect, though not actually or expressly such.» [4]
Последние несколько лет в начале каждого семестра я даю студентам определения основных терминов, используемых в моём курсе: симуляция, эмуляция и виртуализация. И каждый раз я говорю, чтобы мои слова не принимали за стопроцентную правду. Дело в том, что в одних областях технического знания эти термины зачастую трактуются противоположно тому, что принято использовать в других. Нелёгкое это дело — давать определения.

Видимо, эту проблему заметил не только я. В своей книге Software and System Development using Virtual Platforms, вышедшей в прошлом году, мои коллеги Jakob Engblom и Daniel Aarno в первой главе вводят понятия simulation и emulation и отмечают неоднозначность их толкования в областях разработки программного обеспечения и проектирования аппаратуры.

С беспорядком в толковании этих двух терминов я для себя разобрался и вроде бы смирился. Осталось ещё одно понятие, уже более десяти (на самом деле пятидесяти) лет не теряющее популярности — это «виртуализация». За время своего бытия в категории «buzzword» оно стало сочетаться со множеством других слов. Недавно я осознал, что термин «виртуальная машина» (ВМ) на самом деле используется для обозначения двух хоть и связанных, но различных сущностей. В этой статье я расскажу о двух классах: языковые и системные виртуальные машины. Я покажу сходства и различия между ними, их назначение, классификацию, общие и частные черты в их практической реализации.


Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии5

Байт-машина для форта (и не только) по-индейски

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

Да-да, именно «байт» и именно по индейски (не по индийски). Начну по порядку. В последнее время тут, на Хабре, стали появляться статьи о байт-коде. А когда-то давным-давно я развлекался тем, что писал форт-системы. Конечно, на ассемблере. Они были 16-ти разрядными. На x86-64 никогда не программировал. Даже с 32 поиграться не удалось. Вот и пришла такая мысль — а почему бы нет? Почему бы не замутить 64х разрядный форт, да ещё с байт-кодом? Да еще и на Linux, где я тоже ничего системного не писал.

У меня есть домашний сервер с Linux. В общем, я немного погуглил и узнал, что ассемблер на Linux называется GAS, а команда as. Подключаюсь по SSH к серверу, набираю as — есть! Он у меня уже установлен. Ещё нужен компоновщик, набираю ld — есть! Вот так, и попробуем написать что-нибудь интересное на ассемблере. Без цивилизации, только лес, как у настоящих индейцев :) Без среды разработки, только командная строка и Midnight Commander. Редактор будет Nano, который висит у меня на F4 в mc. Как там поет группа «Ноль»? Настоящему индейцу нужно только одного… Что еще нужно настоящему индейцу? Конечно, отладчик. Набираем gdb — есть! Ну что же, нажмем Shift+F4, и вперед!
Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии45

Разработка стековой виртуальной машины и компилятора под неё (часть I)

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

Так сложилось, что за последние 18 лет, не приходилось писать на C/C++. На работе использовалась Java, да и ввиду должностей деятельность больше была связана с предпринимательством - переговоры, корпоративные продажи, выстраивание производственных операций и структурирование инвестиционных сделок. Захотелось в свободное от работы время восстановить навыки, размять часть мозга которую не напрягал все 18 лет и, естественно, начать с самых основ. Осталось придумать себе задачу.

В универе преподаватели, молодость которых приходилась на 70-80е годы, до объектно-ориентированного программирования убивались по теме разработке собственных языков (интерпретаторов, компиляторов) под предметные области. Всё это казалось мне невостребованным "старьём", но появление новых языков за последнее десятилетие (Go, Kotlin и множества других) повысили мой интерес к этой теме.

Решил в качестве хобби написать 32-bit стековую виртуальную машину и компилятор C подобного языка под неё, чтобы восстановить базовые навыки. Такая классическая Computer Science задачка для заполнения вечеров с пивом. Как предприниматель, я четко понимаю, что она никому не нужна, но такая практика нужна мне для эстетического инженерного удовольствия. Плюс когда об этом рассказываешь сам понимаешь глубже. С целью и мотивами определился. Начнём.

Так как это виртуальная машина, мне нужно определиться с её характеристиками:

CPU: 32-bitный набор команд, так как машина стековая, в основном операнды команд храним в стеке, из регистров только IP (Instruction Pointer) и SP (Stack Pointer), пока работаем с целыми числами со знаком (__int32), позже добавим остальные типы данных.

RAM: пусть памяти пока будет 65536 ячеек по 32-bit`а. Которую организуем просто. С нижних адресов в верх будут идти код (code/text) и данные (data, heap), а с верхних адресов вниз будет расти стек (stack). Дёшево и сердито.

Читать далее
Всего голосов 20: ↑17 и ↓3+14
Комментарии15

Гигатрон — самодельный микрокомпьютер без процессора

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


Микрокомпьютер Gigatron — это минималистичный 8-битный ретро-компьютер построенный по необычному дизайну: в нём нет никаких сложных логических интегральных схем, нет даже микропроцессора! Его CPU построен на классических логических элементах серии 7400, также известных как микросхемы на ТТЛ-логике. По сути все элементы компьютера разом и есть процессор. Эти простые чипы не только формируют CPU, но ещё и выполняют все задачи, которые обычно требуют дополнительной периферии. Несмотря на простую и компактную конструкцию, Gigatron работает как 8-битный одноплатный микрокомпьютер, на котором можно играть в видеоигры.

Гигатрон — хобби-проект Уолтера Белгера, хакера, специалиста по информационной безопасности и ныне директора по информационной безопасности компании Philips. В этот понедельник 9 сентября Уолтер приезжает в наш Хакспейс, где будет рассказывать об устройстве Гигатрона, истории создания проекта и покажет его живьем.

Под катом подробнее про Гигатрон и анонс встречи с создателем в Москве.
Всего голосов 56: ↑55 и ↓1+54
Комментарии52

Работа с СКЗИ и аппаратными ключевыми носителями в Linux

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

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

Сегодня я расскажу, как мы защищаем ключи шифрования и электронной подписи в наших информационных системах, и сделаю это в подробном, хорошо проиллюстрированном руководстве по настройке SUSE Linux Enterprise Server 12 SP3 для работы с токеном Aladdin JaCarta PKI и КриптоПро CSP KC2 4.0.9944.

Опубликовать данное руководство побудило несколько причин:
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии20

Earth Engine от Google — уникальная платформа для анализа больших геоданных

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


Earth Engine — это облачная платформа для геопространственного анализа данных в планетарных масштабах. Она позволяет использовать огромные вычислительные мощности компании Google для изучения самых разнообразных проблем: потерь лесов, засухи, стихийных бедствий, эпидемий, продовольственной безопасности, управления водными ресурсами, изменения климата и защиты окружающей среды. Чтобы избежать путаницы в названиях, сразу определим, что Google Earth (он же — Google Планета Земля) и Google Earth Engine — это два разных продукта. Первый, не требуя от пользователей особых компьютерных навыков, предназначен для визуализации спутниковых снимков и позволяет путешествовать и исследовать мир, взаимодействуя с виртуальным глобусом. Второй, которому посвящена эта статья, — это прежде всего инструмент для анализа данных. Использование Earth Engine предполагает знание прикладной области и умение писать программный код. Ссылка на официальный сайт проекта.

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии7

Ломаем простую «крякми» при помощи Ghidra — Часть 1

Время на прочтение9 мин
Количество просмотров81K
О том, что это за зверь такой — Ghidra («Гидра») — и с чем его едят она ест программки, многие уже, наверняка, знают не понаслышке, хотя в открытый доступ сей инструмент попал совсем недавно — в марте этого года. Не буду докучать читателям описанием Гидры, ее функциональности и т.д. Те, кто в теме, уже, уверен, всё это сами изучили, а кто еще не в теме — могут это сделать в любое время, благо на просторах веба сейчас найти подробную информацию не составит труда. Кстати, один из аспектов Гидры (разработку плагинов к ней) уже освещался на Хабре (отличная статья!) Я же дам только основные ссылки:


Итак, Гидра — это бесплатный кроссплатформенный интерактивный дизассемблер и декомпилятор с модульной структурой, с поддержкой почти всех основных архитектур ЦПУ и гибким графическим интерфейсом для работы с дизассемблированным кодом, памятью, восстановленным (декомпилированным) кодом, отладочными символами и многое-многое другое.

Давайте попробуем уже что-нибудь сломать этой Гидрой!
Читать дальше →
Всего голосов 58: ↑57 и ↓1+56
Комментарии32

SwiftUI — Custom NavigationView

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

В публикации мы рассмотрим альтернативу NavigationView т.к. он переодически выкобенивается и отказывается работать надлежащим образом.

Альтернатива кастомная, не использует UIKit, подача материала простая (насколько смог упростить), каждый момент постарался разобрать максимально подробно.

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

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

Раскладываю Swift Runtime на детали

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

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

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

Привет, меня зовут Александр Пахомов, я работаю в Альфа-Банке на проекте для юридических лиц Альфа Бизнес Мобайл. В статье расскажу про Runtime:

— покопаемся в исходниках: узнаем на каком языке написан и что делает;
— напишем простой код, скомпилируем и посмотрим как он выглядит на уровне SIL и IR;
— добавлю в мой исходный код функцию swift_releaseи посмотрю результат;
— узнаю, что будет, если не учесть ‘name mangling’;
— и покажу ненастоящую функцию.

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

Свое мобильное приложение: от идеи до разработки, продвижения и развития

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

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

Я пройдусь по основным этапам разработки мобильного приложения:

Проработка идеи
Проектирование UX/UI
Разработка
Аналитика
Продвижение
Дальнейшее развитие приложения

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

Читать далее
Всего голосов 12: ↑9 и ↓3+6
Комментарии10

А давайте убьем все фреймворки?

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

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

Технологии эволюционируют и функционируют, а новые технологии их полностью заменяют. Считаю, что сейчас наступает эпоха, когда технологии фреймворков и Электрона могут быть вытеснены генеративными AI. Рассмотрим несколько примеров.

Нажимайте вот эту вот кнопотуленку
Всего голосов 134: ↑108 и ↓26+82
Комментарии274

В {n} раз быстрее Си

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров38K

Иногда человек может обнаружить такие возможности оптимизации, которые не видит компилятор. В этой статье мы начнём с цикла, сгенерированного из кода Си с помощью clang, и скорректируем его разными способами, попутно измеряя прирост в скорости.

Эта статья публиковалась на главной странице HackerNews, и к её обсуждению вы можете присоединиться здесь.
Читать дальше →
Всего голосов 161: ↑157 и ↓4+153
Комментарии300

Tarantool Data Grid + Java = …

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

В последнее время всё большую популярность набирает Tarantool — платформа in-memory вычислений с гибкой схемой данных, включающая в себя NoSQL-базу данных и сервер приложений. В этой статье я хочу рассказать об одной из его реализаций — Tarantool Data Grid (TDG).

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

Apple TV 1st generation. Вторая жизнь 15 лет спустя

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

В моем распоряжении оказалось достаточно раритетное устройство родом из Купертино. Этот представитель технологической истории не имел широкого распространения и популярности на наших просторах в те годы, оттого желание прикоснуться к нему было еще больше. Немного поностальгируем, рассмотрим, чем являлось Apple TV в 2007 и попробуем найти применение в 2021 году.

Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии16

KODI: собираем удобный и функциональный медиацентр для дома. Часть 1

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

Поговорим о том, как при наличии небольшого количества времени и навыков построить мультимедийный комбайн с дополнительными возможностями домашнего сервера на базе Kubuntu 20.04 и KODI, способного работать 24/7/365.

Читать дальше →
Всего голосов 70: ↑69 и ↓1+68
Комментарии189

Что для вас Linux? Или как устроен запуск процессов

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

Как бы вы ответили на вопрос, что такое операционная система?

Скорее всего, вы легко сможете ответить на этот вопрос человеку далекому от IT, но подобный вопрос вам может задать, например, HR - в попытке переманить вас в какой-нибудь Facebook или Google. С одной стороны, ответить на этот вопрос очень легко и в интернете можно найти много определений, но относится ли, например, конфигурация DNS и файл /etc/resolv.conf к ОС ? Или в какой области памяти работает ОС - в памяти с безграничными возможностями для кода, называемой kernel space, или все же в лимитированной user space?

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

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

Расследуем фантомные чтения с диска в Linux

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров18K
Не так давно один из наших пользователей сообщил нам о случае странного использования оборудования. Он при помощи нашего клиента ILP (InfluxDB Line Protocol) вставлял строки в свою базу данных QuestDB, но вместе с операциями записи на диск также наблюдались существенные объёмы чтения с диска. Этого никак не ожидаешь от нагрузки, рассчитанной только на запись, поэтому нам нужно было докопаться до причины этой проблемы. Сегодня мы поделимся этой историей, полной взлётов и падений, а также магии ядра Linux.

Читать дальше →
Всего голосов 102: ↑98 и ↓4+94
Комментарии27

Как самому за один вечер собрать минимальную ОС Linux из исходного кода

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

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

Ещё больше не даёт покоя мне тот факт, что все ядра операционной системы Linux, которые работают на различных устройствах и серверах, собраны из исходного кода, находящегося в репозитории на сайте kernel.org.

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

Мне всегда хотелось собрать операционную систему Linux самому из исходного кода, но процесс этот всегда казался сложным и запутанным, да и многого я не понимал. Но всё-таки в определённый момент времени я накопил достаточное количество знаний, чтобы осуществить свою мечту. В этой статье я хочу рассказать вам, как собрать минимальную Linux из исходного кода и запустить её у себя на компьютере.
Читать дальше →
Всего голосов 110: ↑109 и ↓1+108
Комментарии77

Руководство по CI/CD в GitLab для (почти) абсолютного новичка

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

Или как обзавестись красивыми бейджиками для своего проекта за один вечер ненапряжного кодинга


Наверное, у каждого разработчика, имеющего хотя бы один пет-проект, в определённый момент возникает зуд на тему красивых бейджиков со статусами, покрытием кода, версиями пакетов в nuget… И меня этот зуд привёл к написанию этой статьи. В процессе подготовки к её написанию я обзавёлся вот такой красотой в одном из своих проектов:


результаты


В статье будет рассмотрена базовая настройка непрерывной интеграции и поставки для проекта библиотеки классов на .Net Core в GitLab, с публикацией документации в GitLab Pages и отправкой собранных пакетов в приватный фид в Azure DevOps.


В качестве среды разработки использовалась VS Code c расширением GitLab Workflow (для валидации файла настроек прямо из среды разработки).

Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии9
1
23 ...

Информация

В рейтинге
4 361-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Chief Executive Officer