Pull to refresh

Второе знакомство с OS Inferno

Software
Когда не работается, многие читают bash.org.ru или anekdot.ru… а я этой зимой полез от скуки перечитывать сайт OS Inferno. Полез с тоской, потому что хотя меня к Inferno давно тянуло, практической пользы я от чтения доки по Inferno ожидал сколько же, сколько и от вышеупомянутых сайтов.

Но произошло нечто неожиданное — в процессе чтения на меня снизошло озарение: я понял, что OS Inferno это не операционная система, а среда разработки!
Читать дальше →
Total votes 21: ↑17 and ↓4 +13
Views 4.7K
Comments 27

Поверхностный обзор OS Inferno

Software
OS Inferno
Итак, начнём с главного — где же место под Солнцем для Inferno, где и как имеет смысл применять Inferno. Нет, на роль десктопа или сервера я Inferno не предлагаю, эти теплые места в данный момент заняты. :) Но есть минимум три задачи, с которыми Inferno справится лучше других.
Читать дальше →
Total votes 26: ↑22 and ↓4 +18
Views 5.2K
Comments 14

Limbo

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

По большому счёту мне давным давно пофиг, на каком языке писать (я программирую с 1989 года, и за это время перепробовал кучу языков). Но… всё таки на одних языках работать приятнее, чем на других — и здесь дело не в том, что одни языки лучше других, а в том, что для разных стилей мышления лучше подходят разные языки.

Переход от Perl к Limbo — очень контрастный. Языки совершенно разные: Perl — не типизированный вообще, Limbo — сильно типизированный; в Perl нет нормальной поддержки нитей и асинхронности приходится добиваться через мультиплексирование, Limbo — чуть ли не вынуждает писать именно многопоточные программы (если вы смотрели презентацию Роба Пайка, то там был прикольный пример с многопоточным поиском простых чисел); etc. И, тем не менее, Limbo мне очень понравился и писать работающий код я на нём начал практически сразу.

Я уже не очень хорошо помню C, но попробую описать Limbo именно в плане отличий от C — думаю, так будет проще для большей части аудитории (и ни слова про PHP! :)).
Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Views 2.9K
Comments 31

Syntax Highlight Considered Harmful

Software
Вы думали, что "настоящие мужчины используют Windows"? Вы крупно ошибались. Они используют IDE Acme. Которую среди прочего отличает отсутствие подсветки синтаксиса.

Причём это не потому, что Acme ещё молода, и просто не успела обзавестись такой, критически важной для IDE, фичей. (Не знаю точно, сколько лет Acme, но Пайк ещё в 1994 выпустил статью "Acme — A User Interface for Programmers".) Нет, дело в другом! Эта «фича» считается ненужной, и даже вредной.
Читать дальше →
Total votes 19: ↑8 and ↓11 -3
Views 792
Comments 21

Подготовка ваших приложений Inferno к standalone установке

Software
Tutorial
Итак, вы написали некое приложение на Limbo, и хотите установить его на другую машину, или распространять через интернет. Скорее всего, там где будет устанавливаться это приложение OS Inferno не установлена. Это горько, но более чем вероятно. :) Что же делать? Обучать пользователей вашего приложения устанавливать и настраивать у себя OS Inferno? Включать полную инсталляцию Inferno (до 250 MB) в архив с каждым вашим приложением? Нет, всё гораздо проще!

Давайте посмотрим, как можно урезать Inferno до минимума, необходимого для работы вашего приложения. Для этого надо разобраться, что происходит при запуске emu — как загружается OS Inferno.
Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Views 1.3K
Comments 35

Open Source побеждает на рынке троянского ПО

Open source *
По мнению некоторых специалистов по безопасности, на рынке троянов доля Open Source достигла 10% и продолжает расти. Открытый софт имеет преимущество перед закрытым, ибо здесь легче модифицировать программу и добавлять новые фичи, что очень важно в этом специфическом программном обеспечении.

Некоторые троянские программы с открытыми исходниками де-факто превращаются в коллективные проекты: одна хакерская группировка добавит туда модуль криптографии, другая — функционал видеотрансляций с удалённого ПК и т.д. Авторы троянов при этом зарабатывают привычным для Open Source способом — они получают широкую известность за счёт открытия исходников, и делают платную версию программы с расширенным функционалом.
Читать дальше →
Total votes 19: ↑12 and ↓7 +5
Views 3.4K
Comments 3

Deployment вашего софта для OS Inferno

Software
Tutorial
К сожалению, встроенного механизма для распространения и установки дополнительного софта в OS Inferno нет. Если вы написали модуль для Limbo или полноценное приложение, и хотите им поделиться, то вариантов его распространения немного:
  1. просто выложить ваши файлы на любом сайте, и предоставить пользователям вручную устанавливать их в свою систему куда и как угодно
  2. использовать такие же mkfile/mkconfig файлы какие используются стандартными модулями и приложениями в /appl/

Как вы понимаете, первый вариант — это, фактически, не вариант. :) Это возврат назад, в пещеры. Второй вариант используется, например, для всего софта в репозитории mjl. Но и у этого подхода есть неприятные ограничения, вызванные тем, что ваши файлы в результате просто копируются в системные каталоги /dis/, /module/, etc. (точно так же, как стандартные модули и приложения из /appl/):
  • если используется *nix как host OS, и Inferno установлена общесистемно root-ом или менеджером пакетов вашего дистрибутива, то для установки дополнительных модулей/приложений потребуются права root (либо sudo mk в host OS, либо sudo emu и нативный mk)
  • глобальная установка неудобна, если хочется для своего приложения использовать модифицированную версию этих модулей/приложений
  • глобальная установка неудобна, если разным приложениям нужны разные версии одного и того же модуля (mjl решает эту проблему традиционным для *nix способом добавляя номер major версии к имени модуля, что не очень элегантно и приводит к именам вроде «util0.m»)
  • деинсталляция превращается в нетривиальную операцию, что в конечном итоге приводит к замусориванию системных каталогов
  • имена модулей/приложений разных разработчиков могут конфликтовать (впрочем, эта проблема есть и в *nix/win, и её можно обойти используя подкаталоги в /dis/ и /module/ с именем разработчика или его сайта)

Я хочу предложить альтернативный подход, разработанный по мотивам DJB'шного slashpackage. Update: этот подход был недавно принят разработчиками инферно, так что его уже можно считать не альтернативным, а официальным. :)
Читать дальше →
Total votes 11: ↑7 and ↓4 +3
Views 758
Comments 1

Async в C# и SynchronizationContext

.NET *
Продолжение: часть III.

Прошлая заметка о async (часть I) была введением. В этой я продолжу начатую тему: я расскажу о том, что async взаимодействует с SynchronizationContext, и как это влияет на разработку асинхронных графических приложений.

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

image
Читать дальше →
Total votes 58: ↑47 and ↓11 +36
Views 43K
Comments 3

Разработка модулей для Limbo на C (часть 1)

Software
Tutorial
Модули для Limbo написанные на C так же иногда называют драйверами OS Inferno т.к. они встроены в ядро OS. Необходимость в таких модулях обычно вызвана либо желанием добавить к Limbo отсутствующую в Inferno функциональность (подключить существующие 3rd-party C/C++ библиотеки, дать доступ к специфичным для конкретной host OS syscall-ам) либо желанием выжать максимально возможную производительность (по моим наблюдениям разница в скорости между Limbo с включенным JIT и C примерно 1.3-1.5 раза, но иногда и это может оказаться критичным).
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Views 1.5K
Comments 9

Разработка модулей для Limbo на C (часть 2)

Software
Tutorial
Часть 1

Содержание



Heap


Чтобы на C корректно создавать и уничтожать сложные структуры, с которыми будет работать код на Limbo, необходимо представлять себе как они хранятся в памяти, т.е. как организован heap в Inferno. Все упомянутые ниже функции для работы с heap описаны в libinterp/heap.c, а структуры в include/interp.h.
Читать дальше →
Total votes 13: ↑10 and ↓3 +7
Views 1K
Comments 0

Введение в теорию взаимодействующих последовательных процессов (Communicating Sequential Processes — CSP)

Cloud computing *
Sandbox

Предисловие


Данный текст является переводом и сокращённым пересказом начальных глав книги Чарльза Э. Хоара. Целью является ознакомление русскоязычной аудитории с данной алгеброй исчисления процессов, коя нашла достаточно широкое применение в современной вычислительной науке в связи с большим распространением параллельных систем. Наиболее близкими и понятными практическими применениями CSP, думаю, будут являться следующие языки программирования:

CSP является формальным математическим языком, позволяющим описывать взаимодействие параллельных систем, основным его применением является формальная спецификация параллельной работы систем, например таких как Транспьютер, кроме того он применяется при разработке высоконадёжных площадок электронной торговли.
В данной статье будут рассказаны основы данной алгебры, без которой невозможно её дальнейшее изучение, в основном это базовое описание процесса, что покрывает первую половину первой главы книги.
Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views 13K
Comments 9

Стартовал Humble Indie Bundle V — заплати столько, сколько хочешь, за инди-игры

Game development *
На сайте Humble Indie Bundle началась новая акция. Вы сами определяете цену, которую готовы заплатить за четыре отличных инди-игры:

Заплатившие не менее 1$ получат ключи для активации в Steam. Те, кто заплатил больше средней цены (на данный момент это 7.50$), получат пятую игру — Bastion. Также купленные игры будут доступны через Ubuntu Software Center (на данный момент там доступны Amnesia, Superbrothers и LIMBO — увы, порт выполнен через wine). Для всех купленных игр доступны саундтреки в MP3 и FLAC.
Читать дальше →
Total votes 46: ↑40 and ↓6 +34
Views 2.3K
Comments 41

Каталог статей по OS Inferno

Software
Практически каждая статья по OS Inferno вызывает вопросы из серии «что это такое и для чего оно нужно». Эти вопросы вполне уместны, но начинать каждую статью с ответа на этот вопрос невозможно — по крайней мере я не готов ответить на этот вопрос одним абзацем, а на развёрнутый ответ и целой статьи мало. Поэтому в данной статье будет поддерживаться полный каталог всех статей об ОС Инферно на хабре, и в новых статьях можно будет просто ссылаться на этот каталог.

Обзоры OS Inferno


Первое знакомство с OS Inferno … закончилось ничем, т.к. сработал стереотип «раз это ОС, значит она должна быть полноценной альтернативой традиционным десктопным или серверным ОС». Стыдно.

Второе знакомство с OS Inferno … прошло намного удачнее — удалось избавиться от стереотипов и понять, как и для чего можно начинать использовать эту ОС.

Поверхностный обзор OS Inferno … ну очень поверхностный, скорее просто список фич а не обзор.

Архитектура OS Inferno — 1,
Архитектура OS Inferno — 2,
Графика в Inferno,
Limbo,
3 сущности! … этот цикл из 5-ти статей и есть обзор системы.
Читать дальше →
Total votes 25: ↑18 and ↓7 +11
Views 11K
Comments 11

Удобная разработка для OS Inferno в Vim

VIM *
FAQ: Что такое OS Inferno и зачем она нужна?

Под инферно писать софт можно как внутри самой инферно (используя Acme IDE, компилятор limbo и mk для сборки), так и снаружи, в host os (используя любой редактор/IDE, и host os -версии limbo и mk) — при этом запускать инферно понадобится только для запуска тестов или отладки. Я подготовил несколько проектов/скриптов, которые предназначены упростить разработку под инферно вообще, и разработку используя Vim запущенный в host os в частности.
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 5.3K
Comments 2