четверг, 10 ноября 2016 г.

VPN, виртуальное государство

В одном физическом сетевом кабеле может одновременно сосуществовать множество виртуальных сетей (VPN). На одной территории может одновременно сосуществовать несколько виртуальных государств. Часть людей подчиняется правилам одного виртуального государства, часть людей - правилам другого. Будут ещё люди, которые одновременно участвуют в жизни нескольких государств. Представьте, что в вашем городе есть пять государств и вы можете получить их гражданство, никуда не перезжая.

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

Виртуальное сообщество ценно тем, что информация о происходящих в нём процессах, доступна каждому участнику. Нет анонимности, нет утаивания информации, которой располагает какая-то отдельная группа людей, чтобы получить преимущества в социуме. Конечно, такая открытость возможно только потому, что виртуальное государство - это прежде всего отбор. Граждане сами определяют с кем они хотят иметь дело. Отсутствует возможность, скажем, завоза тысяч иммигрантов с чуждой культурой, которым вы будете оплачивать безбедную жизнь, подрывая будущее своих собственных детей. Есть процедуры принятия и исключения граждан из виртуального государства, который обеспечивают это. В виртуальном государстве практически нет бюрократии, потому что часть задач выполняет специализированное программное обеспечение, другая часть, которую невозможно автоматизировать, распределена между гражданами на основе принципа равных прав и обязанностей. Виртуальное государство - это прерогатива людей с высоким уровнем сознания и одновременно это единственный сбособ выживания для них в современном мире.

воскресенье, 6 ноября 2016 г.

Вовлечение в новую валюту

Вовлекаем несколько человек. Объясняем суть предстоящей игры. Даём первому тысячу рублей в долг на месяц и с возможностью вернуть любым способом на выбор:
1) в рублях с процентом (скажем 1100р.);
2) в новой валюте без процента (1000у.е.).
Этот человек выдаёт эту сумму следующему с теми же условиями и так по цепочке. Последний в цепочке выдаёт эту сумму нам с теми же условиями.
Получаем кольцо взаимных обязательств. Любой участник цепочки делает что-либо для любого другого, в результате чего создаётся виртуальный эквивалент в новой валюте, который используется для возврата долга. Кто не успел ничего сделать, возвращает в рублях с процентами. Как?

Электронное государство. Кто не успел, тот опоздал.

Внимайте тому, что вам уготовано свыше. Электронные государства, новые языки, информационные деньги, другое общество.

Кхм...

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

Человечество устало от существующего миропорядка и в то же время располагает достаточным потенциалом для перехода к новой экономической формации. Да, наша жизнь превращается в компьютерную игру. Не получится стоять в стороне. Просто нужно сделать эту игру интересной и полезной.

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

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

Кхм...

Принцип выборов изменился. Голосуем на за партию, не за депутата, а за образ жизни, организацию которого берут на себя криптогосударства. Они будут соревноваться за ваше внимание. Вы будете выбирать те, которые позволяют организовать вам свою жизнь в соответствии с вашими взглядами. Но граждане существующих криптогосударств будут предъявлять определённые требования к новым иммигрантам.



среда, 12 октября 2016 г.

Quatro: формат линейного представления графа

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

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


Значения хранятся в отдельных файлах. В качестве имени файла берётся идентификатор соответствующего узла.

Идентификатор узла определяется по хэшу значения.

Новые узлы и связи записываются в конец файла.  Добавление связи состоит из нескольких этапов:
1) последняя связь проверяется на возможность записи (ноль - в качастве ссылки на следующую связь)
2) связь блокируется (единица - в качастве ссылки на следующую связь)
3) в конец файла дописывается связь с другим узлом (и ноль - в качастве ссылки на следующую связь)
4) в последнюю связь записывается вместо единицы порядковый номер добавленной ссылки, после чего добавленная ссылка считается последней





вторник, 4 октября 2016 г.

Гонки

Старт

Здесь шумно. У линии старта толпятся болельщики. В воздухе запах жжёной резины. Покрышки моего автомобиля ещё горячие. Скоро начнётся второй заезд. Он определит победителя соревнований.

Уверен, что победа достанется мне. Почему я в этом уверен? Кто я такой? Я такой же гонщик, как и ты. Выгляни из окна. Мой жёлтый скоростной болид стоит слева от твоего автомобиля. Смотри, я машу тебе рукой.

Заметил, какой необычный корпус у моей машины? Обтекаемая форма позволяет мне нестись по трассе быстрее пули. Тебе будет трудно меня обогнать. Лучше закрой книгу и иди домой, посмотри мультики.

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

Школа гонщиков

Добро пожаловать в нашу школу. Я твой учитель. Мой предмет называется "подготовить гонщика". Почему тебе это название кажется странным? Название как название.

Я обучу тебя приёмам экстремального вождения автомобиля. Ты спрашиваешь, как меня зовут? Тебе знать этого не положено. Гонщики не должны знать, кто их обучил. Меньше знаешь -- быстрее едешь! Всё равно, когда ты покинешь здание школы, ты сразу забудешь о её существовании.

Главное запомни, что я тебе сейчас скажу: "В игре есть машины и на них можно ехать быстро или медленно." Почему ты говоришь, что это чепуха. Это не чепуха. Лучше запиши себе в тетрадь, чтобы не забыть. Записал? Молодец, что записал. Теперь ты настоящий гонщик и можешь принять участие в соревнованиях.

Не веришь? Хорошо. Вот тебе учебный автомобиль. У него на двери кнопка. Читай, что на ней написано. Да, верно. Написано: "посадить гонщика". Жми, не бойся.

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

Не буду спорить с тобой. Это и правда проще простого. По прямому участку трассы ты едешь быстро. На крутом вираже сбавляешь скорость и едешь медленно.

Ты спрашиваешь, где кнопка с надписью "остановиться"? Её нет. Это же спортивный автомобиль. Не беспокойся, в конце трассы компьютер остановит его автоматически. Ну, прощай! В добрый путь! Пока! Успехов!

Нет, отвечать на другие вопросы я не могу. У меня мало времени. Нужно успеть подготовить других гонщиков, а до началагонки осталось меньше секунды.

Ответы на вопросы

Скорее всего ты запутался, куда попал. Это не беда. Сейчас ты получишь ответы на все вопросы. Дело в том, что ты находишься внутри компьютерной игры. Прямо внутри микросхем компьютера, который исполняет программу. Программы пишут люди, а компьютеры их только исполняют.

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

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

Прочитав эту книгу, ты узнаешь из каких частей состоит программа и сможешь сам начать программировать. А начинать нужно с самого интересного. С программирования гоночной машины!

Гоночная машина



суббота, 30 января 2016 г.

Сетевая база в одном файле 2

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

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

четверг, 28 января 2016 г.

Сетевая база в одном файле

Размышляя над системой, написанной на PHP, пришёл к пониманию того, что лежащую в основе графовую базу данных нужно переработать. Порядок привязанных узлов нужно отслеживать на уровне базы данных. Желательно сократить список технологий, задействованных при реализации базы данных, и максимально всё упростить. В идеале описать формальные требования. Чем и займусь.

  1. Записи не удаляются.
  2. Связи могут только добавляться.
  3. Связи имеют направление.
  4. Одному строковому значению соответствует один узел.
  5. У всех узлов есть значение - NULL или хэш строки.
  6. Хранятся только цепочки связей.
  7. Звено ценпи состоит из порядкового номера звена, номера следующего звена и ссылки на звено-узел.
  8. Порядковый номер звена соответствует его расположению в файле.
  9. Узел - это первое звено в цепочке, которое не указывает на другие узлы.
  10. При каждом запросе узла, создаётся новый объект.
Пример: узел 3 связан с узлами 1 и 2.

address    next    link    комментарий
1          0       1       узел 1
2          0       2       узел 2
3          4       5       узел 3 (последнее звено 5)
4          5       1       связь узла 3 с узлом 1
5          0       2       связь узла 3 с узлом 2 (последняя в цепи)
6          0       6       узел 6

Поскольку приложение, использующее базу данных, отслеживает тип узла, нет необходимости помечать узлы, привязанные к значениям. Функция node.hasValue() не нужна.