Pull to refresh
8
0
Sergey Mutin @mutin_sa

System/network administrator

Send message
Для айтишника, погруженного в работу, идеальный мир – это когда все бытовые вопросы можно решить в несколько «кликов» – в приложениях или сервисах в сети. Реальность же заставляет интроверта вживую общаться с незнакомыми людьми. Например, при аренде жилья. Правда, прогресс добрался и сюда, позволяя обойтись без контактов с людьми и при этом быть уверенным в безопасности и комфорте. Вот он настал — момент, который ненавидит большинство интровертов: нужно найти и снять квартиру. И как бы ни был всесилен интернет, придется выходить из зоны комфорта. Через «не могу» общаться с большим количеством людей, ездить на просмотры, обговаривать условия с риелторами и владельцами. Задавать неудобные вопросы и формулировать ожидаемые ответы.
Читать далее
Total votes 36: ↑32 and ↓4+28
Comments31

Как может выглядеть XMPP в ОС Inferno(мысли в слух).

Reading time2 min
Views1.4K
Обычно, реализацию протокола на низком уровне, берут на себя библиотеки. Решил подумать(пофантазировать): как должна работать подобная «библиотека» в Inferno ОС, если все представить в виде файлов.
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments3

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

Reading time8 min
Views1.9K
Часть 1

Содержание



Heap


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

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

Reading time7 min
Views3.1K
Модули для 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
Comments9

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

Reading time5 min
Views1.5K
К сожалению, встроенного механизма для распространения и установки дополнительного софта в 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
Comments1

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

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

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

Установка OS Inferno New Edition (update)

Reading time8 min
Views18K
FAQ: Что такое OS Inferno и зачем она нужна?

Информация в предыдущем посте устарела почти на 4 года, и меня попросили её обновить. Так же попросили не смешивать в одном посте установку с настройкой, поэтому здесь будет только установка, а настройка инферно описана в отдельном посте. Update: Описание установки для Windows обновлено в июне 2014.

Итак, мы будем устанавливать распределённую ОС Inferno. На официальном сайте есть инструкции по установке, но они не совсем корректны и тоже немного устарели. Inferno может работать в двух режимах — native (на голом железе или в qemu/etc. как все обычные ОС) и hosted (как обычное приложение под *NIX/Win). Инструкции по установке native Inferno можно найти в русской вики. Помимо этого существуют и другие варианты — например, установка Inferno на Android (англ.). Лично я смысла в использовании native Inferno на обычных компах не вижу, поэтому буду описывать установку hosted Inferno под Gentoo, Ubuntu, FreeBSD, MacOSX и Windows.
Читать дальше →
Total votes 33: ↑25 and ↓8+17
Comments30

Установка OS Inferno New Edition

Reading time8 min
Views7.2K
OUTDATED: Эта статья устарела, для установки под современными OS см. новую статью.

Update: Добавлено описание установки под Windows XP SP2.
Update: Добавлено описание установки под Mac OS X 10.4.8 Tiger.
Update: Добавлено описание установки под Mac OS X 10.5.5 Leopard.

New Edition


Да, версия в svn называет себя именно так! Установите, запустите браузер (Charon) и сами убедитесь. (В принципе, последний релиз это "Fourth Edition", но на практике это уже давно тот же svn — «Fourth Edition» вышел примерно в 2004, а сейчас на офф.сайте под видом «Fourth Edition» выложен снапшот svn от 20071003.)

Версия в svn абсолютно стабильна, и, в отличие от инсталляшки «Fourth Edition», её значительно проще обновлять. Для установки на боевые сервера или выпуска вашего приложения она не менее удобна. В общем, минусом является только необходимость иметь subversion и компилятор для сборки системы, всё остальное плюсы.

Итак, ставим свеженькую OS Inferno из SVN, в hosted режиме (т.е. в виде эмулятора, работающего под другой OS).
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments84

Inferno Часть 0: пространства имён

Reading time10 min
Views5.4K
FAQ: Что такое OS Inferno и зачем она нужна?

Я обещал, но ещё не написал пост о том, как установить и запустить Inferno, и делать невероятные вещи; я раздул его до серии статей, из которых это первая, вводная часть. Я собираюсь немного рассказать о пространствах имён (namespaces). Это критическая часть ОС, и одна из тех вещей, которые сильно отличают Plan 9 и Inferno от того, что сейчас работает на вашем компе.

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

Мне придётся немного отклониться в сторону. Я собираюсь поговорить об эволюции пространств имён, не совсем в хронологическом порядке, скорее в порядке развития возможностей, и потом показать как использовать возможности Inferno.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments32

И всё-таки она многопользовательская!

Reading time3 min
Views2K
В OS Inferno очень необычно сделана работа с пользователями. Во-первых, когда запускается emu, вы получаете командную строку без необходимости вводить логин и пароль. При этом ваше имя пользователя выставляется таким же, как и в основной системе (host OS). Во-вторых, вы можете запустить, например, wm/wm wm/login, ввести имя другого пользователя (причём пароль у вас даже не спросят), и продолжить работу как этот пользователь. Аналогично можно воспользоваться командой runas ИМЯПОЛЬЗОВАТЕЛЯ sh, чтобы не запускать графическую оболочку.

В связи со всем этим возникает логичный вопрос: Inferno — многопользовательская система, или нет?
Читать дальше →
Total votes 53: ↑45 and ↓8+37
Comments21

Inferno Shell

Reading time12 min
Views18K
FAQ: Что такое OS Inferno и зачем она нужна?

Оболочка ОС Инферно много лет вызывала у меня исключительно отрицательные эмоции. И я никогда не понимал, что в Inferno sh вызывает восторг у некоторых людей. Но, как говорится, лучше поздно чем никогда — сегодня я решил таки тщательно разобраться с шеллом, и в результате меня тоже проняло — это таки действительно уникальная вещь! Невероятно элегантная и простая.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments30

3 сущности!

Reading time4 min
Views2.9K
Думаю, общей информации по Inferno уже достаточно, и можно перейти к главному вопросу: что из себя представляет Inferno изнутри, с точки зрения программиста? В чём заключается взаимодействие программиста со средой предоставляемой Inferno? Сколько нюансов поведения и разных видов сущностей должен держать в голове программист в Inferno?
Читать дальше →
Total votes 28: ↑20 and ↓8+12
Comments38

Limbo

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

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

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

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

Графика в Inferno

Reading time2 min
Views3.1K
Если писать распределённые приложения в стиле файловых серверов, то с графикой в Inferno вы столкнётесь не раньше, чем захотите запустить графический отладчик для отладки своего многопоточного приложения.
image

Но если вы пишете приложение с UI, которое должно работать на встроенных устройствах или как плагин в браузере (кстати, сейчас вроде разрабатывают аналог существующего Inferno-плагина для IE под Firefox), то сразу возникнет вопрос «а как в Inferno писать графические приложения?».
Читать дальше →
Total votes 21: ↑16 and ↓5+11
Comments17

Архитектура OS Inferno — 2

Reading time4 min
Views2.9K
Один из краеугольных камней архитектуры Inferno — юниксовая идея с файлами-устройствами доведена до предела: в Inferno файлами представлено абсолютно всё. Например, в Inferno нет понятия «сокет».
Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments42

Архитектура OS Inferno — 1

Reading time4 min
Views3.8K
Сразу предупреждаю, что делать полный обзор архитектуры я не собираюсь. Во-первых есть оригинальная документация где всё детально описано. А во-вторых я ещё не настолько хорошо знаю Inferno, чтобы браться за написание детального описания архитектуры. Но вот про «фишки» архитектуры я обязательно расскажу, это самое интересное.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments28

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

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

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

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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity