LINUX.ORG.RU

Metaprog: выпуск прототипа (универсальная графическая среда программирования)

 , ,


1

2

Сегодня, как и было обещано, день выпуска LabVIEW-прототипа универсальной графической среды программирования Metaprog.

LabVIEW-прототип не является конечной целью. В дальнейшем с помощью прототипа Metaprog будет собран «сам на себе» и не будет зависеть от LabVIEW.

Приглашаю всех желающих стоять у истоков универсальной графической среды программирования присоединиться к работе над прототипом!

Видео-обзор ( VarfolomeyKote4ka)

https://youtu.be/EcQMgUAm0DE

Скачать: https://www86.zippyshare.com/v/pWggQ91b/file.html

Аннотация

Открывать и запускать !метапрог.vi и !метапрог онлайн.vi

В Метапрог онлайн интегрирован чат и хранилище пакетов с блок-диаграммами. Там идет разработка Метапрога и можно получить консультации.

В Метапрог и Метапрог онлайн встроена справочная система и интерактивные инструкции.

Требования:

1. Для запуска, просмотра и редактирования диаграмм - LabVIEW начиная с 2013.

2. Если не удалось достать линуксовую версию LabVIEW - виртуальная машина с Windows начиная с ХР с кириллической локализацией (иначе будут проблемы с кодировкой символов).

3. Tor Browser или Tor для подключения к серверу:

https://www.torproject.org/

или:

sudo apt-get install tor

4. Для компиляции сгенерированного кода:

sudo apt-get install clang libevent-dev libsdl2-dev

Адрес для добровольных пожертвований:

Bitcoin: 1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

Этот адрес действителен как ключ для электронной подписи от имени разработчика.

Код лицензирован под GNU GPL v3, подробности - по кнопке «Про программу» и в файле LICENSE.txt (на английском). Отдельные файлы могут быть лицензированы под MPL и другими лицензиями.

Описание конструктора диаграмм (часть справочной системы, лучше читать смотря на Метапрог)

В случае вопросов или проблем консультации можно получить в чате программы «Метапрог онлайн».

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

Блок-диаграмма состоит из блоков, линий с данными и особых линий - жестких последовательностей. Каждый блок может иметь входы и выходы.

При клике на терминал начнется рисование провода с данными. Клик на пустом месте при рисовании провода задает точку излома провода. При приближении курсора к терминалам провод автоматически подстраивается под ближайший терминал с совместимым типом (несовместимые типы подключить невозможно). Для окончательного подтверждения соединения кликни и связь будет установлена. Чтобы отменить рисование проводка, нажми Esc.

Подключаться дважды к одному терминалу нельзя - будут ошибки. Используй разветвления. Чтобы создать разветвление, кликни на квадратик, который появляется при приближении к проводу, и рисуй провод как обычно (только отенять кнопкой Esc не надо - будет баг).

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

Очередность выполнения также задается жесткими последовательностями. Это - особые линии, которые проводятся по кнопке блоки - последовательность. Первый клик на блоке - начало последовательности, следующие клики - изломы провода (на пустых местах) либо конец последовательности (на блоке). Места начала и конца провода имеют значение при работе с циклами, условными разветвлениями, переключателями.

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

Чтобы скопировать элемент на диаграмме, нажми на него колесом мыши. Чтобы вставить - жми колесом мыши на пустом месте.

При наведении мышью на элемент диаграммы отображается подробная информация о нем. Элементы подсказок кликабельные. Для дальнейшней справки кликай на "?" в подсказках к элементам.

Описание контейнера с данными и системы типов (часть справочной системы, лучше читать смотря на Метапрог)

В Метапроге есть три вида контейнеров с данными: константа, вход и выход. Константа имеет жестко заданное значение. Вход и выход связывают эту диаграмму с внешними диаграммами.

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

Типы в Метапроге имеют надтип. Может наследоваться интерфейс работы с данными, способ трансляции в Си и цвет (если тип не имеет своего цвета). При работе с диаграммой и ее трансляциями в Си данные разных типов обрабатываются зависимо от корневого типа. Метапрог имеет следующие корневые типы:

Данные - включает в себя числа (знаковые, беззнаковые и бробные разных разрядностей) и логический тип (зеленый). Логический тип совместим со всеми числовыми типами, так как в Си они могут выступать в качестве условия (если ноль - «нет», все другие значения - «да»). Есть типы число (все числа, коричневый), знаковое (голубой), беззнаковое (темно-синий), целое (объединяет знаковое и беззнаковое),дробь (оранжевый).

Неопределенное - аналог типа void в Си. Совместим со всеми типами.

Указатель - содержит адрес данных. Прямо транслируется в указатель на Си. Получается из данных блоком «указатель» (из меню блоков), вытягиваются данные из указателя блоком «вытягивание указателя».

Структура (последовательность и выбор) прямо транслируется в struct или union на Си. Формируется из контейнеров с данными другого типа путем из вытягивания на структуру. Достум к элементам структуры осуществляется через блок «операция над структурой».

Массив - тип, не имеющий прямого аналога в Си. Содержит указатель на первый элемент и длину массива. Доступ к этим переменным осуществляется через блок «операция над структурой». Чтобы задать тип массива, вытащи на него контейнер нужного типа. Массив можно подключить к типованному циклу (блоки - типованный цикл), в котором можно осуществить обработку каждого его элемента.

Структура условного выбора типа не имеет проямого аналога в Си. Состоит из числа-переключателя и структуры выбору (в Си - union) из данных разных типов. Тип данных зависит от значения переключателя. Задается и читается через операцию над структурой. Можно подключить к переключателю (блоки - переключатель), в котором обрабатывать данные зависимо от типа. Для добавления типа вытащи контейнер нужного типа на СУВТ.

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

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

------------------------------------------

При клике на пиктограмму перемещения объект можно передвинуть, при этом линии до его терминалов передвинутся за ним (но тут еще возможны баги).

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

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

Предыдущие темы, посвященные разработке Metaprog

Metaprog: универсальная графическая среда программирования [LabVIEW-прототип] часть 9

Там же ссылки на более ранние темы.

Ответ на: комментарий от metaprog

А ведь Метапрог-то разрабатывается

Сначала ты всё обставил так, что все тут подумали, что релиз «прототипа» будет содержать метапрог-сам-на-себе. Наверное, прямым текстом ты такого не писал, я не вчитывался. Но ты неоднократно заявлял, что после выпуска прототипа вплотную займёшься созданием метапрога-самого-на-себе. Выпустил прототип. И всё, что можно на прототипе — считать факториал. Даже без ввода значения с клавиатуры, тупо харкод входных значений. А теперь ещё выясняется, что метапрог-сам-на-себе можно будет начать делать только после следующей версии прототипа. Даже не сделать. Начать только.

Обычное vaporware.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Если тебя не устраивают темпы разработки - вливайся в проект и ускоряй ее.

metaprog ()
Ответ на: комментарий от liksys

На мнение нежелающих участвовать в проекте мне насрать.

metaprog ()
Ответ на: комментарий от metaprog

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

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

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

liksys ()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Сначала ты всё обставил так, что все тут подумали, что релиз «прототипа» будет содержать метапрог-сам-на-себе.

......

И всё, что можно на прототипе — считать факториал

................

Даже без ввода значения с клавиатуры, тупо харкод входных значений

.................................

А теперь ещё выясняется

.......................................................

VarfolomeyKote4ka ()
Ответ на: комментарий от liksys

Ошибки признать не способен в виду общей незрелости.

Какие еще ошибки? Самая большая ошибка за время разработки Метапрога - это трата времени на ответы тебе, в том числе этот.

все твои оппоненты оказались правы

В чем? В том, что прототипа не существует? Хахаха. В том, что программировать в тексте удобнее? Возможно, я когда-нибудь соглашусь с этим, но 1 апреля еще не скоро.

Сообщений все меньше, былого задора уже нет

Потому что незачем мне что-либо тебе доказывать. iluha16 тоже пытался что-то доказывать тете Ирине и бабе Ликсусе, но понял, что это - напрасная трата времени. Лучше потрачу его на разработку Метапрога.

Исчезну я или нет зависит от того сколько пользы проекту будет приносить здешняя публика. От тебя пользы ноль, будь здесь только ты - давно бы исчез.

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

metaprog ()
Ответ на: комментарий от metaprog

В чем?

Что графическое программирование общего назначения не нужно :)

Потому что незачем мне что-либо тебе доказывать

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

От тебя пользы ноль

Конечно, я же не собираюсь помогать этому цирку.

liksys ()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Особенно доставляют заявления вроде

Большая часть современого прогрммирования на текстовых языках — это и есть Ctrl+C/Ctrl+V.

(орфография цинично сохранена)

rebforce ()
Ответ на: комментарий от metaprog

Были бы ошибки - признал бы. Но я их не вижу.

Потому, что ты ещё не дошёл до того уровня, на котором они станут критичными.

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

В огороженном лАбВьЮчАтИкЕ с полутора анонимусами ты этих вопросов можешь и не получить, да.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

В огороженном лАбВьЮчАтИкЕ

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

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

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

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

Жаль что маловато нынче энтузиастов, готовых на такие «жертвы». Придется тебе ждать раскрутки.

metaprog ()
Ответ на: комментарий от metaprog

Ну я уже говорил, что вопрос не лично во мне. И что в наличии внятного описания, по идее, должен быть в первую очередь заинтересован ты сам, тоже говорил.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

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

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Тор все равно нужен. Другое дело, что его можно включать в архив с Метапрогом.

metaprog ()
Ответ на: комментарий от metaprog

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

Итак, ты ставишь задачу: создать графическую среду программирования общего назначения, которая была бы сделана сама на себе.

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

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

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

Вторая твоя ошибка - тор. Его необходимость диктуется твоим страхом перед NI, что тебя возьмут за жопу за пиратство; а также неумением общаться с людьми (и страхом деанонимизации). Но даже если бы ты взял вместо лабвью любой популярный и распространенный язык, ты мог бы сделать процесс работы с тором гораздо более удобным и не требующим сторонних костылей - например, в го есть библиотека для работы с тором без внешних проксей и браузеров.

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

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

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

PS: кстати, тормоза мертвопрога при отрисовке диаграмм происходят не из-за отсутствия аппаратного ускорения, а потому что лабвьюшные кубики, которые ты использовал, не предназначены для анимации. Даже на питоне с pygame или на Qt без opengl рисование 2d было бы быстрее. Еще один камень в твой огород выбора инструмента не по задаче.

liksys ()
Ответ на: комментарий от liksys

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

На самом деле я не понимаю, зачем ты тут флудил 10 страниц. Очевидно, что ты не внял ни одному совету и зафейлил абсолютно всё. Всё, о чем тебя предупреждали, сбылось.

Достаточно просто увидеть, что за 20 страниц, прошедших после релиза, НИКТО из людей вне твоей с котечкой палаты не попробовал это поделие. Провал.

liksys ()
Ответ на: комментарий от liksys

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

vq156 ★★ ()
Ответ на: комментарий от vq156

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

liksys ()
Ответ на: комментарий от metaprog

Самая большая ошибка за время разработки Метапрога - это трата времени на ответы тебе

Жестокий дефицит йода. У тебя настолько низкий интеллект, что ты не смог найти кнопку «добавить в игнор» в профиле оппонента? Тогда трать время на ответы, чо

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от liksys

Пойдет время - и ты исчезаешь совсем.

Иногда почитываю эти темы и не могу понять, тебе-то это зачем? Видно, что это твое желание, чтобы он изчез. Зачем тебе это?

Зачем вы все пишете в эту тему? Может, как обычно это принято на лоре, сказать своё «ненужно» и отойти?

Lorovec ()
Ответ на: комментарий от I-Love-Microsoft

У тебя, видимо, тоже проблема с йодом, гений ты наш, иначе бы ты не отвечал в этот пост.

liksys ()
Последнее исправление: liksys (всего исправлений: 2)
Ответ на: комментарий от liksys

Можно я тебя обвиню в том, что именно из за тебя эта тема на ЛОРе не загнулась. Ты слишком много отвечаешь метан-прогу, можно сказать пособник в этом насилии над мозгом

За это тебя следует наказать по попе ремнем

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Ты такой забавный. Взял первый попавшийся юзернейм в теме и начал истерить. Давай для полноты картины ещё i-rinat обвиним, и hobbit, и всех остальных. А что? Они тоже отвечают и поддерживают тему на плаву. И я снова повторю свой вопрос: ты чего про игнор у других спрашиваешь, а сам своему совету не следуешь, м?

Так что свои фобии ремня оставь при себе, равно как и ложные выводы.

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

liksys ()
Ответ на: комментарий от liksys

Они тоже отвечают и поддерживают тему на плаву.

Да. Поэтому я теперь очень сильно стараюсь лишнего сюда не писать. Пишу только если уж совсем невмоготу терпеть.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Я как-то пару недель не писал, и ничего не изменилось.

liksys ()
Ответ на: комментарий от hobbit

Можешь подсказать сишную библиотеку для работы с сетью чтоб была похожа на лабвьюшную?

https://zone.ni.com/reference/en-XX/help/371361R-01/lvcomm/tcp_read/

Чтобы просто как в TCP Read - указал сокет, число (ну ладно, можно еще и указатель на буфер) - и прочиталось. Шарю bufferevents из libevent, но там многовато секса с колбеками, а хочется один простенький блок как в Лабвью.

metaprog ()
Ответ на: комментарий от liksys

Давай для полноты картины ещё i-rinat обвиним, и hobbit, и всех остальных

Да чего ты так переживаешь :) Их тоже анана по попе за комментирование тут ))) А мне щелбан смачный за третий и последний коммент в теме

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Кто сказал, что я переживаю? Я лишь наглядно показываю тебе провал в твоей логике.

liksys ()
Ответ на: комментарий от liksys

Огромное спасибо за помощь проекту. Прошу прощения за все посылания в жопу.

metaprog ()
Ответ на: комментарий от liksys

Не троллинг. Если подсказка, конечно, не была троллингом.

metaprog ()
Ответ на: комментарий от liksys

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

i-rinat ★★★★★ ()
Ответ на: комментарий от metaprog

Ответ абсолютно валидный за исключением того, что это не сторонняя библиотека, а posix api.

При этом это троллинг Шредингера. Если тебе нужно что-то очень сложное (типа асинхронного многопоточного сервера с еполлом), то мой ответ - издевательство, потому что писать это с нуля довольно сложно (поэтому и существуют вещи типа либэвента).

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

liksys ()
Ответ на: комментарий от liksys

для простейшего сетевого приложения ничего лучше не придумаешь, так как апи простое и наглядное.

Проще и наглядней некуда, но, к примеру, тот же recv можно эффективно юзать, только если знать, сколько именно данных надо ожидать на приём. А то вот я тут с педоном присел: pyusb — штука хорошая, но не тогда, когда ты не знаешь конечного протокола и его приходится реверсить. Пытаясь адаптировать квалкоммовский DIAG-HDLC к спредтрумовскому, понимаешь, что в квалкоммовском всё чётко: 512 байт отправил — 512 байт пришло в ответ. В спредовском же чёрт ногу сломит. Вот тут пакетные API бессильны, хоть бери и побайтово всю дичь принимай, пока не закончится.

rebforce ()
Последнее исправление: rebforce (всего исправлений: 3)

Куда пропал метапрог?

Я переживаю!

YogSagot ★★ ()
Ответ на: комментарий от hobbit

Вы действительно еще считаете, что из этого что-то вырастет?

cluge ()
Ответ на: комментарий от i-rinat

Даже без ввода значения с клавиатуры, тупо харкод входных значений.

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

torvn77 ★★★★ ()
Ответ на: комментарий от liksys

Ответ абсолютно валидный за исключением того, что это не сторонняя библиотека, а posix api.

И это даже лучше.

При этом это троллинг Шредингера. Если тебе нужно что-то очень сложное (типа асинхронного многопоточного сервера с еполлом), то мой ответ - издевательство, потому что писать это с нуля довольно сложно (поэтому и существуют вещи типа либэвента).

Смотри. Я цепляю коллбек на evconnlistener_new_bind с флагом LEV_OPT_LEAVE_SOCKETS_BLOCKING. Он исправно создает входящие соединения. Но если данные приходят по частям (делал тесты на Лабвью) - то ожидание прихода данных на recv (с флагом MSG_WAITALL) в одном коллбеке приводит к приостановке всех параллельных коллбеков.

metaprog ()
Ответ на: комментарий от torvn77

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

На винде программирую только лабвьюшный прототип.

metaprog ()
Ответ на: комментарий от metaprog

На мнение нежелающих участвовать в проекте мне насрать.

Чисто из интереса, а для кого ты это делаешь? И зачем пишешь все это на ЛОР? Желающих тебе помогать тут нет, на остальных тебе насрать. В чем идея этого проекта и этого треда?

morse ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)