LINUX.ORG.RU

Избранные сообщения VarfolomeyKote4ka

Janayugom - первая в мире газета, полностью перешедшая на открытое ПО

Новости — Open Source
Группа Open Source

Janayugom — ежедневная газета издающаяся в штате Керала (Индия) на малаяламском языке и имеющая порядка 100,000 подписчиков.

Вплоть до недавнего времени они использовали проприетарный Adobe PageMaker, но возраст ПО (последний релиз был аж в 2001 году), а также отсутствие поддержки юникода подтолкнули руководство к поиску альтернатив.

( Продолжение )

>>> Подробности

 newspaper, , ,

loz
()

Perl прямиком из 1987 года

Галерея — Скриншоты

Прочитав новость «Код интерпретатора Perl официально перенесён на GitHub» я решил взглянуть на репозиторий Perl 5, который теперь уже находится на GitHub’е.

Удивительно, как трепетно и качественно его перенесли, сохранив не только абсолютно всю 32-летнюю историю проекта, но и багрепорты (Issues), патчи (PRs), релизы и ветки. Надпись «32 years ago» рядом с файлами вызывает улыбку.

Что ещё делать в этот унылейший пятничный вечер, когда на улице неприятно моросит дождь со снегом, а все дорожки погрязли в осенней слякоти? Правильно, красноглазить! Так что я ради эксперимента и интереса решил взять и собрать древний Perl на современной x86_64-машинке с gcc (GCC) 9.2.0 в качестве компилятора. Сможет ли такой старый код пройти проверку временем?

Чтобы было совсем уж аутентичненько и некрофильненько, я развернул виртуальную машину с голыми иксами и twm, который тоже родом из 1987 года. Кто знает, может быть Larry Wall писал свой Perl используя именно twm, так сказать bleeding edge technology того времени. Используемый дистрибутив – Arch Linux. Просто потому что в его репозитории есть некоторые полезные вещи, которые впоследствии мне пригодились.

( читать дальше... )

>>> Просмотр (1605x600, 55 Kb)

 , , , ,

EXL
()

dolphin - ошибка

Форум — Desktop

Всем привет! Суть проблемы следующая: при открытии домашней папки в DOLPHIN, выскакивает ошибка Invalid document. В чем может быть проблема? происходит это только при выборе домашней папки, все другие ошибку не вызывают. Вид окна с ошибкой: https://i.imgur.com/7Y4RXJP.png Спасибо заранее)

 , ,

skyhawk1979
()

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

Форум — Development

Сегодня, как и было обещано, день выпуска 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
()

CAM Genesis, предпроизводственная подготовка печатных плат

Галерея — Скриншоты

Мое рабочее место AIX4.3 (на соседних компьютерах есть тоже самое под Linux), я скриптописанием занимаюсь для автоматизации процесса.
Из интересного тут отладчик для cshell скриптов (тот скрипт на cshell, что сейчас в отладчике размером >300Кб)
Все.

P.S. Genesis от компании www.frontline-pcb.com (стОит немерянно :-)

>>> Просмотр (1280x1024, 90 Kb)

sdio
()

бэкенд на prolog

Форум — Talks

Всех приветствую.

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

Как видно из заголовка на одной железке с которой мне предстоит работать, некий талантливый программист (без сарказма) запилил веб-интерфейс на прологе (если быть точным swi-prolog). И вот со всем этим мы пытаемся взлететь.

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

Делитесь кто чего видел необычного (драйвера на брейнфаке и т.д.)

 , ,

yax123
()

Вышел Xfce 4.14!

Новости — Open Source
Группа Open Source

Сегодня, после 4 лет и 5 месяцев работы, мы рады объявить о выпуске Xfce 4.14, новой стабильной версии, которая заменяет Xfce 4.12.

В этом выпуске главной целью было перенести все основные компоненты с Gtk2 на Gtk3, и с «D-Bus GLib» на GDBus. Большинство компонентов также получили поддержку GObject Introspection. По пути мы закончили работу над пользовательским интерфейсом, представив немало новых функций и улучшений (см. Ниже) и исправив множество ошибок (см. Сhangelog).

( читать дальше... )

>>> Подробности

 

Deleted
()

Почему уродуют софт?

Форум — Talks

Привет, ЛОР.

Многобукв не будет, просто вопрос.
В сабже.

Пример: вот был XFCE 4.12.
Там была замечательная вещь под названием Orage.
Это легковесный календарик, который умел в добавление ивентов и напоминания, замечательно интегрируясь в системную панель.

Xfce переписали на Gtk3.
Orage больше нет. Замены не завезли.

Итого: после порта на Gtk3 функциональность (лично для меня) рабочего окружения заметно упала, при этом (!) потребление памяти выросло в полтора раза.


Пошто, товарищи?
Может, задонатить им или разработчика нанять, чтобы портанули календарик?

С Xfce то некуда бежать.

 

annerleen
()

Телеэфиры телеканала Останкино за 1992-1994 годы

Форум — Talks

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

Ещё ищу конкретно первый выпуск Смака, со Спартаком Мишулиным. У меня нет записи, но я помню содержание. Он там рассказывал о своей молодости. Как он попал под трактор у нас тут, на Алчедате. Работал в поле... Врачи сразу сказали «не жилец». Отнесли в морг (а он живой). Потом в морг занесли другого человека. Он на спор съел много сухого гороха, он у него в животе распух и человек умер. Занесли и увидели, что Мишулин жив. Поэтому в передаче в тот день он приготовил гороховый суп, потому что горох спас ему жизнь

 

ZenitharChampion
()

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

Форум — Development

Рейтинг пользователей тем про Метапрог или практический пример применения визульного программирования

Пока Метапрог не готов, продемонстрирую практическое применение LabVIEW. Скачать программу-демонстратор можно тут:

http://e2tilsgo5s44hqmlwb4epwrjnh7ynvsckj2tl5duwdqbxg67chqpelad.onion/file/9b...

Для перехода по ссылке нужен Tor Browser, для просмотра кода примера - LabVIEW начиная с 2013.

На данном графике - количество комментариев самых активных зарегистрированных пользователей в темах про Метапрог на момент 29.06.19 04:47:37

https://i.postimg.cc/gjZ6vS91/image.png

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

Данная диаграмма читает файлы с сохраненными темами из заданной папки и выдает массив кластеров из числа сообщений и имени пользователя, отсортированный по числу сообщений:

https://i.postimg.cc/Nj7mJzyc/image.png

Данная диаграмма берет 12 самых активных пользователей, строит их рейтинг и сохраняет его в картинку:

https://i.postimg.cc/hjGL71tq/image.png

Почти все подписано, специально повключал названия лабвьюшных функций.

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

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

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

Примеры

Предыдущие см. в прошлых темах

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

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

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

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

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

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

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

Наконец-то нормально работают циклы!

https://pastebin.com/1duyPBMB

Это та самая диаграмма со старого скрина:

https://i.postimg.cc/65N2KMQz/image.png

Теперь тупиковые ветки (nk_end и «малювання SDL») тоже остаются в теле цикла. Теперь осталось внедрить тот же механизм управления тупиковыми ветками для условий (if, switch) и можно будет приниматься за разработку Метапрога на «самом себе».

Донат

Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

 , ,

metaprog
()

В июле этого года исполняется 26 лет стандарту KOI8-R

Форум — Talks

Сабж. Именно 26 лет назад, в июле 1993-его года, был создан RFC 1489.
За принятие RFC 1489 выступала Society of Unix User Groups (SUUG), поскольку кодировка KOI8-R уже была де-факто стандартом мира Unix на территории бывшего СССР.
Юникод уже существовал и RFC 1489 описывает соответствие кодов символов кодам уже принятого юникодного стандарта ISO 10646 для тех, кому юникод избыточен.

Стандарт KOI8-R до RFC 1489 никогда не публиковался, но основан на нескольких опубликованных стандартах: ГОСТ 19768-74 (старый КОИ8), ISO 6937/8 (не зарегистрирован) и вариациях - INIS-cyrillic и ISO 5427.

* * *

Ура! Поздравляю KOI8-R'щиков с очередным днём рождения стандарта самой лучшей кодировки!

 

saahriktu
()

Valve прекращает поддержку новых версий Ubuntu

Новости — Игры
Группа Игры

Valve, компания-разработчик игр и создатель популярного онлайн-сервиса цифрового распространения компьютерных игра и программ «Steam», сообщила о прекращении поддержки дистрибутива Ubuntu, начиная с версии 19.10. Это решение связано с заявлением Canonical об отказе от 32-битной архитектуры.
Начиная с этого момента Valve будет рекомендовать для использования совместно со Steam другой дистрибутив - Debian.

>>> Источник

 , ,

Landgraf
()

Стала доступна бета-версия S.T.A.L.K.E.R. Зов припяти на движке OpenXRay

Новости — Игры
Группа Игры

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

Побеждены случайные вылеты, улучшен рендер (ближе к ванильной картинке), игру можно пройти до конца.

Известные баги и проблемы:

  • При выходе из игры процесс может зависнуть
  • При переходе между локациями/повторной загрузке сейвов портится картинка, игра может вылететь (пока решается только через перезапуск игры с загрузкой сейва)
  • Сейвы и логи не поддерживают UTF-8
  • Проект не собирается clang

Для работы игры понадобятся ресурсы от оригинальной игры, они должны находиться в ~/.local/share/GSC/SCOP/

Для steam их можно получить следующим образом:

steamcmd "+@sSteamCmdForcePlatformType windows" +login <username> +force_install_dir ~/.local/share/GSC/SCOP/ +app_update 41700 +quit

Если ресурсы из GOG, нужно привести все пути к нижнему регистру(это особенность движка)

Перед началом игры нужно исправить строку в ~/.local/share/GSC/SCOP/_appdata_/user.ltx renderer renderer_r1 на renderer renderer_gl, и vid_mode 1024x768 на ваше разрешение, иначе оно слетит.

PPA (пока только для bionic)

В планах дальнейшее улучшение рендера, поддержка ресурсов от ClearSky (сейчас в отдельной WIP ветке) и TЧ.

>>> Подробности

 , ,

eagleivg
()

Дарую вам свою гениальную мысль о MetaTXTprog!

Форум — Development

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

И так, для начала нужно выбрать хороший язык для основы, смысл делать велосипед? Раньше хорошим выбором был бы С, на нем как раз базируются многие успешные языки, но так как уже появился и получил популярность С++, у которого возможностей больше, нужно взять его! Можно конечно взять и С, для прототипа...

И так, какие проблемы имеются у С++? Ограниченность, Qt даже пришлось делать свой MOC, поэтому нужна расширяемость! А у кого лучшая расширяемость? Многие борщехлебы скажут что у Lisp'a, но это не так, он ограничен своими списками, а вот Forth нет, он ограничен разве что платформой на которой был запущен.

А какие проблемы есть у Forth? Это очень низкоуровневый язык, еще например в нем нет структур, их можно реализовать самому, но каждый реализует свои структуры которые не совместимы с другими! А даже если совместимы, нельзя улучшить ВСЕ структуры в Forth сразу, добавить им выравнивание к примеру, нужно улучшать каждую библиотеку по отдельности... Ужас.

Как же решить проблему Forth? А она сама решится, так как у нас будет база в виде C++ или C! Надо только дать удобный интерфейс ко всему этому, что бы можно было просто взять и пройти по полям структуры, добавить свои конструкции, юзать свои лексеры-парсеры... Тот же Forth, тольео вместо слов будут функции! Так же нужно обязательно взять идею с «одновременно компилятор и интерпретатор», многие удивятся, а зачем интерпретатор? Все просто, он нужен для расширяемости, что бы во время компиляции использовался код MegaTXTprog, а не какого нибудь препроцессора, как в Rust'овых макросах. Потом уже интерпретатор и всю ненужную среду можно будет выкинуть, главное что бы интерпретируемый код все настроил и расширил во время компиляции... Причем выкидывание нужно сделать опциональным, а вдруг понадобится eval? Его даже не нужно будет как то сложно реализовывать, Forth нам его подарит...

Жду такой язык уже джва года.

Домашнее задание:

  • Реализовать вычисление SEXP выражений на Forth для лучшего понимания сути языка.
  • Поиграться с Factor, попробовать собрать минимальную программу без среды.
  • Узнать что есть у конкурентов https://docs.racket-lang.org/guide/languages.html

 , , ,

Deleted
()

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

Форум — Development

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

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

10. Примеры выдают варнинги при компиляции (у кое-кого еще и сегфолтятся)

Решено вводом неанонимных структур, если идет обращение к данным из сишных инклюдов.

12. Зачем ты пытаешься сделать «графический C» (используя подходы к разработке, структуры данных и прочее из C, но в виде блоксхем)?

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

13. Есть же first order logic, лямбда исчисление и т.д. Ты бы изучил для начала альтернативы, может для данного вида представления имеются лучшие подходы?

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

Примеры

Предыдущие см. в прошлых темах

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

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

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

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

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

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

Неанонимные структуры

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

Главная функция:

https://i.postimg.cc/8kJdT96h/image.png

Открытие нового окна:

https://postimg.cc/kBX6rB0P

Та же диаграмма в видео:

https://streamable.com/jqng1

Видно всплывающие подсказки, в конце удаляется и снова проводится один из проводков.

Начало рисования SDL, то что должно делаться каждый цикл в нуклеаре:

https://postimg.cc/tYS199bZ

Вставки, как видите, могут принимать и даже возвращать аргументы, как вставка обработки событий SDL возвращает running. Потом этот проводок с running будет подключен к главному циклу.

Кстати, что мешает мне сейчас сделать главный нуклеаровский цикл, ведь циклы ж уже готовы? Смотрите на этот скрин:

https://i.postimg.cc/65N2KMQz/image.png

Почти такой же пример, только есть цикл и нету sleep (чтобы можно было полюболваться на окошко 10 секунд). Что тут не так? Схема правильная, но надо еще научить транслятор ставить «тупиковые» ветки, берущие начало в цикле, в пределах цикла по-умолчанию. Сейчас код nk_end и малювання SDL оказываются за пределами тела цикла, буду это исправлять. Где-то там же находится ключ к полному налаживанию ветвления через if и switch.

Сам код:

https://pastebin.com/f5PDfi77

Использовать сишные имена типов и структур удалось благодаря многоязычным строкам, которые внедрялись для русских, англичан и прочей не понимающей украинский публики. Если в названии типа есть строка на языке «С», вместо примитивного типа (или тела структуры из примитивных типов) ставится сишный идентификатор типа из инклюда.

 , , ,

metaprog
()

Доступен предзаказ первой книги по Kubernetes, написанной на русском языке

Новости — Документация
Группа Документация

В книге рассмотрены механизмы, обеспечивающие работу контейнеров в GNU/Linux, основы работы с контейнерами при помощи Docker и Podman, а также система оркестрирования контейнеров Kubernetes. Помимо этого, книга знакомит c особенностями одного из самых популярных дистрибутивов Kubernetes – OpenShift (OKD).

Данная книга рассчитана на ИТ-специалистов, знакомых с GNU/Linux и желающих познакомиться с технологиями контейнеров и системой оркестрации Kubernetes.

По ссылке - также оглавление и первая глава.

>>> Ссылка

 ,

korum
()

Текстовый редатор unDE

Галерея — Скриншоты

Здравствуйте!

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

На экране видим часть кода на D, реализующего миникарту в правом верхнем углу.

Подсветка синтаксиса осуществляется согласно syntax-файлам vim'а. Это позволяет поддерживать нам широкую базу синтаксисов.. Широкую да не очень.. Регулярные выражения vim'а сильно отличаются от регулярных выражений D, поэтому заточить его под напичканный какими-то хитрющими выражениями синтакс-файл Perl'а мне не очень удалось (просто я не очень старался). В Bash-е из-за того что я не осилил многострочность регулярных выражений имя функции будет подсвечено только если фигурная скобка указана на той же строке, что и имя функции. А так Java, C, C++, PHP, JavaScript, HTML вполне себе подсвечиваются.

Но подсветка синтаксиса - это так результат предпоследней недели работы.

На самом же деле основной возможностью-убийцей редактора является несомненно его система отмен. В редакторе 4 вида отмен:

1) Файловая система отмен - ту что мы видим в большинстве редакторов.

2) Глобальная система отмен - это когда вы только что из-за одной переменной начали тотальный рефакторинг кода во всех файлах и вам надо отменить все недавние изменения во всех файлах.

3) Проектная система отмена - что-то среднее между 1 и 2. Отмены ограничиваются одним проектом.

4) Локальная система отмен - это когда вы точно помните что вот в этой функции был нужный код. Выделяете функцию - нажимаете (Ctrl+Z, в будущем Ctrl+Shift+Z) и вуаля - вы видите предыдущую версию фрагмента файла, а остальная часть файла остаётся нетронутой.

Редактор вдохновлён Vim'ом, но основным режимом всё же является не командный режим, а режим вставки. А так многие горячие клавиши перекликаются с Vim'ом, например: Ctrl+V - визуальный режим. Есть желание сделать командный режим по клавише Caps Lock, чтобы не зажимать Ctrl, но пока не доходят руки.

Справа вверху находится миникарта. Это замена полосы прокрутки. А что отмечают на картах? Места боевой славы, конечно! Поэтому зелёным на карте отмечены недавние правки, жёлтым - дневной давности, оранжевым - недельной, ну а серым - месячной.

Локальные метки (те что задаются Ctrl+M <маленькая_латинская_буква>) также отмечены на миникарте (на скриншоте 2).

Чуть ниже миникарты - находится так называемый «карман», замена буферу обмена. В кармане отображено 4 места (хотя положить туда можно и больше) и управляется он всего двумя сочетаниями клавиш:

Ctrl+X - скопировать выделенное в карман, второе нажатие - удалить выделенное (фактически двойное нажатие - вырезать), третье нажатие (нажатие без выделения) - выложить из кармана.

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

Ctrl+C - копировать из кармана.

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

Основная фишка - т.н. «псевдо-директории» - фиолетовые элементы. Когда в директории больше 10 файлов над ней появляется уровень псевдо-директорий, страницы директории по 10 элементов. Если элементов больше 100 - то 2 уровня псевдо-директорий и т.д.

И что ещё важно - при нажатии на любую директорию (псевдо или нет) в ней автоматически выбирается последний редактированный в ней файл как бы глубоко он не располагался. Если надо открыть саму директорию - надо кликнуть просто второй раз.

И это надо сказать удобно. И теперь я думаю как бы мне переделать мой ZUI-файловый менеджер объединив в нём преимущества ZUI-интерфейса и преимущества такой панели табов.

Так проект прошёл важную веху - наконец-то он разрабатывается сам в себе (а не в vim'е запущенном в себе).

Спасибо за внимание. Больше букв нету. Исходники в репозитории проекта. Сайт: http://unde.su

>>> Просмотр (1360x768, 65 Kb)

 

unDEFER
()

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

Форум — Development

FAQ

0. Где отсутствующие примеры и пункты FAQ? Как вообще читать эти темы?

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

10. Примеры выдают варнинги при компиляции (у кое-кого еще и сегфолтятся)

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

11. Как выглядит факториал в графическом представлении?

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

(пока что на Лабвью)

Примеры

Находятся в прошлых темах. Компилировать исходники нужно так:

gcc ./test.c -o ./test $(pkg-config --cflags --libs gtk+-3.0)

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

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

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

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

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

Прототип чата:

Metaprog: универсальная графическая среда программирования [в разработке] часть 6 (комментарий)

Показывалка языка локализации через seltocale (кстати, у кого что показывает?)

Metaprog: универсальная графическая среда программирования [в разработке] часть 6 (комментарий)

Прототип чата с прокруткой:

Metaprog: универсальная графическая среда программирования [в разработке] часть 6 (комментарий)

 , , ,

metaprog
()

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

Форум — Development

 , , ,

metaprog
()

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

Форум — Development

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

FAQ

1. Где скачать?

Релиза еще не было. Идет разработка, темы посвящены ей. Есть сделанный на LabVIEW прототип (его работа показана в примерах).

2. Почему не открыт код LabVIEW-прототипа Метапрога?

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

3. Почему не Дракон, MIT App Inventor, Unreal Blueprints?

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

4. Чем плохи LabVIEW или MyOpenLab?

LabVIEW пропиетарный, а MyOpenLab - хоть и опенсорсный, но какой-то недоделанный (пытался у себя запустить - выдало джава эксепшоны). Да-да, опенсорсный «клон» LabVIEW написанный на джаве! LabVIEW хотя бы на C++, а это все же меньшее зло. Обе эти системы даже не сделаны «сами на себе» в графике. Они даже не пытаются претендовать на универсальную замену всем текстовым языкам, хотя LabVIEW могло бы, если бы не тупость копирастов. Эти системы написаны на текстовых языках, их код (даже если б LabVIEW был опенсорсным) невозможно редактировать, ни разу не обращаясь к текстовым языкам. Метапрог изначально предполагает полный отрыв от текста и текстовых языков, за исключением Си как бэкенда. И то пользователям никогда не придется иметь дело с текстовым Си за исключением блоков сишных вставок (для особых случаев типа арифметических операций, ассемблерных вставок итп).

5. Почему как бэкенд выбран именно Си?

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

6. В Си указатели и ручное управление памятью. Это же так сложно!

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

7. А как же браузерные и игровые скрипты и прочие ситуации, где ручное управление памятью ненужно и даже опасно?

Пункт 6 касается разработки программ, то есть исполняемых файлов и библиотек. Для задач типа браузерных/игровых скриптов, разумеется, будут свои подмножества Метапрога без указателей.

8. Почему в Метапроге будут предпочитаться бинарные форматы и чем это лучше?

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

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/flatten_to_string/

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/unflatten_from_string/

Что-то подобное будет и в Метапроге. При открытом коде никаких сложностей с чтением бинарных файлов не будет.

9. А как будет обеспечиваться совместимость со старыми файлами, сетевыми протоколами итп, если будет изменен тип?

Если менять тип - надо использовать версионированный формат. Так будет несложно менять форматы файлов, сетевые протоколы итп, сохраняя обратную совместимость.

Примеры

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

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

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

Прокручиваемая и выделяемая строка с автопереносом

https://i.postimg.cc/Gm6KMJBs/image.png

https://pastebin.com/SWJJwvvC

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

Скрины подфункций в следующем примере.

Тот же пример, но покрасивее

Что можно сделать для большего удобства? Убрать инициализацию, подвязку коллбэка на закрытие окна и главную петлю гтк в подддиаграму «главное окно»:

https://i.postimg.cc/vm5DYjsw/image.png

На сей раз не поленюсь сделать скрины и объяснить их суть.

В подфункциях есть три вида контейнеров с данными: константа (стала, constant), контроль и индикатор (сверху вниз):

https://i.postimg.cc/gJkfRVBd/image.png

Значение константы задается прямо в диаграмме. В Си константа превращается в объявление переменной с инициализатором. Контроли и индикаторы в теле подфункции превращаются в терминалы, к которым можно подключаться в «вызывающей» функции.

Сама подфункция «главное окно»:

https://i.postimg.cc/fbsDKR61/image.png

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

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

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

Подфункция для подцепки асинхронных функций:

https://i.postimg.cc/3r0rYVCS/image.png

Добавить объект в контейнер:

https://i.postimg.cc/SNGBhf51/image.png

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

https://i.postimg.cc/xjv7vP0j/image.png

Делаем лейбл (и любой другой нужный виджет) прокручиваемым:

https://i.postimg.cc/R0PtCmkd/image.png

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

https://pastebin.com/16bq1Jbs

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

Каст типов и тактическая победа над нуль-терминированными строками

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

https://i.postimg.cc/s2hrDj6b/image.png

Беззнаковое 32-битное, означающее размер массива (темно-синий провод) кастуется в знаковое 32-битное (светло-синие провода и пустая константа, задающая тип). Функция gtk_text_buffer_set_text в качестве размера строки берет беззнаковое, а не знаковое, как принято - видимо, чтобы через "-1" говорить, что строка нуль-терминированная. Но из-за этого вместо 4 гб строки туда можно подать лишь 2 гб - аж в 2 раза меншье! Что за люди?

Тем не менее, с нуль-терминированными функциями в текстовых полях покончено - и это победа!

https://pastebin.com/hQRMSZ1s

Также там был изменен текст. В остальном пример соответствует скринам выше.

 , , ,

metaprog
()