В продолжении предыдущей статьи я решил разобраться - что вообще представлено на рынке "отечественных" операционных систем общего назначения. Ну то есть таких, которые можно использовать в широком спектре задач и оборудования - рабочих мест и серверов. Сразу отмечу - меня интересовали вопросы массового "корпоративного" использования, я мало времени уделил тонкостям сертификации и дополнительным встроенным средствам защиты. А вот что из чего сделано было очень интересно!
*nix *
Хаб про UNIX-подобные операционные системы
Новости
Как я разрабатывал игру fly bird 2
Это гифка, которую я сделал, чтобы показать вступление и как началась история путешествия птички. У меня есть друг, который не боится рисовать, даже если он не обучался рисованию профессионально. Я общаясь с ним как то вдохновился желанием рисовать и не бояться. В google play у меня есть старая игра, которую я делал на unity, когда только начинал работать с движком.
https://play.google.com/store/apps/details?id=com.xverizex.fly_bird&hl=ru&gl=US
Два комментария к старой игре дали мне желание сделать новую версию, но уже на C++ + SDL2 + OPENGL ES 3.2 + OPENSLES + glm. То есть я даже рад хотя бы двум комментариям о том что людям нравиться моё творчество, чтобы чувствовать себя прекрасно и продолжать делать игры.
Так как у меня нормального опыта не было делать игры полноценные на sdl2, то я использовал разные виды кода, которые как я думал, что они правильные. Но поработав на работе и изучая код, я увидел что есть помимо того что я знаю (я про очереди сообщений), есть ещё mqueue. И только потом я додумался, что можно с помощью очередей сообщений отправлять из одного потока в другой что-нибудь. Вот пример как выглядела реализация.
Недружественные почтовые сервера
Всем привет. Долго думал, о чём здесь написать — к сожалению, редко находится на это время и желание. Но недавно случилась одна не очень хорошая история, из которой я сделал выводы и решил, что эта информация может быть кому-то полезна, поэтому хочу рассказать о том, что произошло. История эта связана с электронной почтой, а если быть более точным — с отказом сетевой инфраструктуры РЖД в обслуживании персонального почтового сервера из-за его «недружественности».
Я старался не углубляться сильно в технические моменты, так как посчитал, что для понимания ситуации они не очень важны. Но если кому-то будет интересно, могу попробовать рассказать более подробно о технической стороне вопроса в следующих публикациях.
Синхронизируем данные с yarsync
yarsync - Yet Another Rsync - предназначен для синхронизации данных между несколькими устройствами, более точно - между файловыми системами в Unix-подобных средах. yarsync обладает интерфейсом, похожим на git, и является Python-обёрткой вокруг программы rsync. Программа доступна под свободной лицензией GPL v3.0 на github (я автор).
yarsync работает там, где есть Питон и rsync.
Данные могут синхронизироваться локально или между разными компьютерами (в таком случае на удалённой машине также должен быть установлен rsync). Кроме того, файловые системы должны поддерживать жёсткие ссылки (hard links). Популярные системы, поддерживающие жёсткие ссылки - ext2-ext4, HFS+, а также NTFS. Не поддерживают жёсткие ссылки FAT, exFAT (часто используемые на флеш-накопителях).
Говоря простыми словами, допустим, что у вас есть компьютеры дома и на даче. У вас есть папка с книгами и статьями по программированию, которые вы собирали долгие годы, и которой регулярно пользуетесь (её копиями на разных машинах). Вы хотите, чтобы эти копии были одинаковы - то есть в идеале чтобы можно было работать с данными на разных компьютерах (добавлять новые статьи, удалять ненужные, переименовывать и перемещать файлы и папки), а затем эти изменения легко переносились на другие копии. Это и делает yarsync, отслеживая изменения и позволяя эффективно синхронизировать данные через доступный сервер или внешний накопитель (жёсткий диск).
Мониторинг СУБД Firebird с помощью Zabbix
Примерно 20 лет назад была установлена СУБД Firebird, если не ошибаюсь, версии 1.0.3, на сегодняшний день база все еще жива и нужна, размер ее перевалил за 30ГБ, что по сегодняшним меркам очень мало, но и основной рост базы пришелся на начало века.
С повсеместным внедрением средств мониторинга захотелось снимать минимальную статистику и определять работоспособность СУБД и самой БД. Для мониторинга использую Zabbix установленный на Ubuntu 20.04 LTS, а сама СУБД находится на виртуальной машине с Windows 2008 Server. Версии на которых был использован метод мониторинга описанный ниже для СУБД Firebird 2.5.9, версия Zabbix 6.0. Но думаю что и с другими версиями проблем быть не должно.
Как я переходил с Windows на Linux 10 лет назад
Come back to school!
В Linux есть что-то неполноценное, и нет ничего лучше, чем Windows или, например, MacOS. Вы наверняка слышали такое мнение много раз. Я же считаю, что подобная оценка возникает из-за человеческих привычек.
Однажды научившись работать с одной операционной системой, тяжело перейти на новую, или просто не хочется, ведь изучение ОС - долгий процесс. Нельзя просто так лишь в порыве страсти или минутного желания перейти на новую систему полностью, по-настоящему, так чтобы не ставить свою прошлую операционную систему на виртуальную машину, или как вторую (запасную) систему на своем ПК.
Если вы готовы почувствовать себя студентом снова, я расскажу, что нужно сделать….
Open Source для образования — взгляд через 10 лет
10 лет назад для меня закончился проект внедрения Open Source в образовании. Закончился “официально” как автора-разработчика, так как я свернул разработку своего школьного дистрибутива и ушел работать в ИТ, далекий от образования и переключился на настольные игры. Но я не перестал пользоваться решениями с открытым кодом (GIMP и Inkscape до сих пор мои любимые инструменты), не забыл Linux (Ubunta в WSL живет у меня постоянно, и я предпочитаю ее при работе с удаленными серверами и сервисами), но я перестал досконально следить за тем, что творится в школах, ВУЗах и ССУЗах.
Последние события в мире и стране заставили меня вернуться и таки посмотреть, что будет если нам “отключат Windows” и можно ли будет в образовании продолжать работать легально, а не переключаться назад “на торренты”.
Про VPN на выделенном «сервере»
Вроде данная тема довольно сильно заезжена, в интернете 1001 инструкция по настройке своего виртуально сервера за 5$, но я хотел рассказать немного о другом. А именно – об аренде выделенного «сервера» в России.
Разработка процессорного модуля на базе микросхемы 1892ВА018 СнК «СКИФ» и его первый запуск
Версия данной статьи для "off-line прочтения" в формате PDF доступна по адресу: ссылка на статью.
В первой половине 2021 года в РФ резко обострились дебаты на тему импортозамещения, инициированные рядом изменений внесенных ранее в декабре 2020г в постановление N719 относительно закупок вычислительной техники, и бурно обсуждаемых на различных площадках и IT-форумах, таких как Elbrus Tech Day, YADRO Лекторий, а так же у ряда популярных блогеров. Основной посыл нововведений состоял в том, что вся вычислительная техника, закупаемая за бюджетные средства, должна иметь в основе микропроцессор, разработанный или произведенный в России или имеющий статус такового. Насколько такое решение Правительства годное и исполнимое — тема отдельного разговора, которую я не хотел бы сейчас затрагивать. Так или иначе, мы, в нашей небольшой компании, пришли к выводу, что данное решение Правительства может приоткрыть пусть не окно, но хотя бы форточку возможностей для мелких разработчиков электроники, которым является наша компания. Имея за плечами опыт разработки изделий на основе импортных (в основном китайских) систем-на-кристалле, мы решили, что на рынке могут быть востребованы одноплатные ПК, аналогичные Raspberry Pi и выполненные на отечественном СнК, по возможности близкие по габаритам и pin-to-pin совместимые с «малиной», а также процессорные модули, устанавливаемые на несущую плату, позволяющие упростить разработку конечного изделия и вынести сложную топологию за его границы.
Введение в k3s: познакомимся с младшим братом k8s
Вводная часть
Kubernetes, также известный как k8s — это портативная расширяемая платформа с открытым исходным кодом для управления контейнеризованными рабочими нагрузками и сервисами, которая облегчает как декларативную настройку, так и автоматизацию. Kubernetes можно настроить как в локальной, так и в облачной инфраструктуре. Однако, кластер Kubernetes немного сложен в настройке и требует значительных ресурсов, что затрудняет развертывание на локальной машине для обучения или разработки. Это приводит к тому, что не для каждого бизнеса перейти на полноценный k8s представляется возможным. К счастью, на этот случай есть более легкое решение в виде k3s.
CLD — Open source проект для ИТ компаний и SRE/DevOps инженеров
CLD это система для обеспечения комплексной информационной безопасности и организации разграничения доступа к серверам и скриптам с возможностью оперативно внедрять пользовательские модули и инструменты автоматизации.
Мы высоко ценим автоматизацию процессов и унификацию инфраструктуры, проект призван объединить все используемые технологии в одном централизованном и само документируемом месте, с безопасным, прозрачным и логируемым доступом к любому серверу и инструменту сразу через несколько пользовательских интерфейсов (CLI, Web, API, Telegram, Discord, Mattermost, Slack).
Весёлая консоль
Сегодня 1 апреля и ежегодно в этот день разные Интернет-ресурсы публикуют вымышленные курьёзные "новости" а также просто всякие несерьёзные статьи. Вот и я решил в сей пятничный день немного приобщиться к этому весёлому многообразию. Сегодня мы обратимся к разным забавным, хотя и бесполезным программам, работающим в консоли эмулятора терминала. Видимо — ввиду несколько неформального начала UNIX (как известно, Кен Томпсон написал игру Space Travel для компьютера PDP-7) — различные "бестолковые" программки писались буквально с первых дней существования операционных систем. Что ж, давайте последуем за героем замечательных комиксов Дэниеля Стори и разнообразим жизнь в "скучной" консоли.
Теневые стеки для пользовательского пространства
Стек вызовов (call stack) является излюбленной целью злоумышленников, пытающихся скомпрометировать запущенный процесс; если злоумышленник найдет способ перезаписать адрес возврата в стеке, то он сможет перенаправить управление на код по своему выбору, что приведет к ситуации, которую лучше всего можно описать фразой "game over". Именно поэтому для защиты стека прикладывается очень много усилий. Одним из самых многообещающих методов является “теневой стек” (shadow stack); как следствие, множество различных процессоров должным образом поддерживают теневые стеки. С поддержкой защиты программ пользовательского пространства (user-space) с помощью теневых стеков дела обстоят не так хорошо; в настоящий момент она является предметом обсуждения в сообществе разработчиков ядра, но добавить эту функцию сложнее, чем может показаться на первый взгляд. Среди прочего, подобные патчи существуют уже достаточно долго, чтобы у них самих появились собственные проблемы с обратной совместимостью.
Локальные репозитории пакетов
Всем привет! Сегодня хочу поделиться нашими мыслями относительно того, как защититься от санкций палок в колёсах в современных условиях. Собственно, что мы имеем ввиду? Речь идёт о том, что в крупных проектах часто есть единые точки отказа в процессах CI/CD, это может быть как простой репозиторий кодом, так и различные конвеерные системы сборки кода и доставки его в рабочие окружения. Если мы говорим про системный софт, то его можно просто перестать обновлять, запретить ему ходить "наружу", но в данной статье мы поговорим про внешние репозитории с кодом.
Баг в ядре Linux и как правильно жаловаться
Я работаю системным программистом в компании КриптоПро. Нередко мои задачи связаны с ошибками, которые лежат на самом нижнем уровне современных операционных систем, под которые мы пишем ПО. Я хочу поведать тебе, Хабр, об одной из таких ошибок и о том, как я жаловался на неё разработчикам.
Я отвечаю за поддержку одной из наших библиотек с C-интерфейсом, написанной на C и C++. Мой коллега из другого отдела сообщил, что его нагрузочный тест нашей библиотеки на C# в Linux выдаёт ошибку в хитром сценарии: нужно иметь два процесса по пять потоков, делающих некоторые идентичные вызовы. Если процесс один, а потоков много, то проблема не проявляется. Если процессов два, но в каждом по одному потоку, то проблема не проявляется. Путём просмотра исходников нагрузочного теста и логов работы библиотеки удалось перенести проблему в маленький юнит-тест на C++ с использованием нашего API.
Надёжная и воспроизводимая установка Linux с NixOS
NixOS — это дистрибутив Linux, обеспечивающий надёжность и позволяющий легко воспроизводить состояния системы. Знакомим с Nix и развёртыванием NixOS на вашей машине к старту курса по Fullstack-разработке на Python.
Установка и настройка Charles 4.6.2 на Ubuntu 20.04
Статей и видео актуальных на эту тему нет , поэтому коротко и по шагам опишу свои действия:
1. Для начала последовательно вводим данные команды в терминал:
установка ключа от репозитория:
wget -q -O - https://www.charlesproxy.com/packages/apt/PublicKey | sudo apt-key add -
Кунг-фу стиля Linux: простые конвейеры
Проблема тут в том, что компьютеры, особенно — тогда, были дорогим удовольствием. И, в случае с обработкой типичной программы, компьютеры тратят много времени, ожидая чего-то вроде помещения в них следующей перфокарты, или момента, когда магнитная лента дойдёт до нужного места. В таких случаях компьютер, фигурально выражаясь, в нетерпении стучит ногами, ожидая следующего события.
Как начать писать программный код Си в ОС Linux (Руководство для совсем начинающих)
Этот материал рассчитан на людей, будущих программистов, которые только начинают разбираться в программировании под ОС Linux, или может быть долго были пользователями ОС Windows. Я попробую здесь показать прямое руководство к действию на примере ОС Ubuntu и тех простых инструментов, которые использовал некогда сам при изучении Си в процессе знакомства с Linux.
Вклад авторов
-
Gim6626 1015.6 -
simpleadmin 944.0 -
Vorb 764.0 -
temujin 665.8 -
m1rko 604.4 -
ru_vds 593.4 -
dlinyj 525.0 -
Oxyd 520.0 -
ob1 497.4 -
keklick1337 481.0