LINUX.ORG.RU

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

Gloire — ОС с ядром Ironclad, написанном на языке Ada

Новости — Open Source
Gloire — ОС с ядром Ironclad, написанном  на языке Ada
Группа Open Source

Недавно на Github появился репозиторий операционной системы Gloire. Gloire использует ядро Ironclad, написанное на языке программирования Ada, и пользовательское окружение GNU. На сайте, посвященном Ironclad, написано что оно находится в процессе «формальной верификации».

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

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

 , gloire, ironclad,

watchcat382
()

Шахматный AI - пошаговое руководство

Форум — Games

Инструкция по создания искусственного интеллекта для шахматного бота:

https://medium.freecodecamp.com/simple-chess-ai-step-by-step-1d55a9266977

P.S.: https://news.ycombinator.com/item?id=14001907

 , ,

atsym
()

Загрузить из legacy GRUB2 Windows в EFI

Форум — Desktop

В общем суть такая: давным давно случайно установил Fedora в Legacy mode, спокойно жил, даже не заметил, сейчас понадобился дуалбут винды, купил второй диск, вставил, установил винду, перезагрузился, через биос загрузился в федору и обнаружил что mkconfig не находит ОС, os-prober тоже, начал копать и понял, что Fedora была установлена не в EFI, а в легаси, а чтобы это все трансформировать в EFI потребуется слишком много времени.

Есть ли какой-то костыль, который позволит открывать Windows UEFI загрузчк из легаси граба?

 , ,

intel
()

Шахматы

Форум — Games

Перечисленные ниже программы поддерживают работу с различными движками, установленными в системе.

  • Chessx - помимо возможности  игры против движка, это прежде всего приложение для работы с базами данных и анализа партий.
  • Xboard - графический интерфейс для игры в шахматы во всех их основных вариациях: европейские, сянци (китайские), сёги (японские), макрук (тайские), а также некоторые их варианты. Для каждой из вариаций нужен отдельный движок поддерживающий её.
  • SCID - клиент с поддержкой работы с базами данных и анализом партий.
  • SCIDvsPC - форк SCID с добавлением ряда новых возможностей пользовательского интерфейса.
  • PyChess - среди прочих возможностей содержит встроенное руководство по дебютам.
  • Knights - клиент для из набора приложений KDE.
  • Gnome-Chess - клиент из набора приложений Gnome.
  • Gambit - небольшое приложение с собственным движком Gupta.
  • Gmchess - приложение для игры в сянци (китайские шахматы).

Шахматные движки

  • Stockfish - один из наиболее продвинутых и активно поддерживаемых на сегодняшний день движков. Используется на многих онлайн ресурсах и как основной в поставках некоторых приложений.
  • Fairy-Stockfish - форк движка Stockfish, поддерживающий различные вариации шахмат.
  • Crafty
  • GNU Chess
  • Sjaak II - слабый движок, дающий возможность играть новичкам. Поддерживает очень много вариаций шахмат и возможность добавлять свои.

Для обучения и игры онлайн хочется выделить несколько ресурсов:

  • lichess.org - хорошие интерактивные руководства по дебютам в так называемых "студиях". Особенно хочется выделить уроки от LeninPerez, где помимо общей теории есть практика для закрепления.

  • chess.com - уроки есть, но часть их них доступна только после регистрации; по дебютам совсем краткое описание; паззлы по сравнению с предыдущим сайтом кажутся более скучными.

  • chess24.com - интересный и сложный, по сравнению с вышеуказанными сайтами, режим  "тактический тренер", который беспощаден к ученику и в случае ошибочного хода в задаче из нескольких ходов сразу переходит к следующей.

  • chess-boom.online - полностью русскоязычный; понравился раздел с описанием дебютов, в котором подробно описана теоретическая часть.

  • lishogi.org - ресурс похожий на lichess, посвящённый игре в «сёги».

  • www.chessdb.cn - база данных для «сянци» с возможностью анализа текущей позиции.

  • www.pychess.org - онлайн ресурс для игры в различные варианты шахмат; есть возможность задания расстановки фигур на доске и анализа текущей позиции с помощью игрового движка.

P.S.
Хотел сначала создать тему, посвящённую нескольким настольным играм (маджонг + риичи маджонг, го, бридж), но получилось, что для Маджонга список повторял бы старую тему, посвящённую ему, с небольшим обновлением для Риичи:

  • OpenRiichi - наверное единственое на текущий момент достаточно доработанное десктопное приложение для игры в риичи (японский маджонг) для Linux.

  • RMahjong - недавно был сделан быстрый порт быстрый порт на python3 (ветка py3); ряд правил так и не реализован, но играть вполне можно.

  • http://tenhou.net/3 - пожалуй, самый известный онлайн-сервер для игры в риичи, на японском :(, но есть сторонний плагин для браузеров (firefox, google chrome) для перевода интерфейса на английский.

Для Го приложений с графическим интерфейсом под linux не так уж много нашлось (Kigo, как пример), а для Бриджа совсем ничего сходу найти не получилось.

 

grem
()

Более 30 лет KOI-8 в internet

Форум — Talks

Более 30 лет назад простой сотрудник RELCOM Development Team ( FIDOnet: 2:5020/23.34) предложил the Internet community зарегистрировать уже полюбившуюся пользователям RELCOM koi8-r https://www.rfc-editor.org/rfc/rfc1489.txt

 , ,

vM
()

Восьмая научно-практическая конференция OS DAY

Новости — Конференции и встречи
Группа Конференции и встречи

14-15 октября 2021 года в главном здании Российской Академии Наук пройдет восьмая научно-практическая конференция OS DAY. В этом году конференция посвящена взаимодействию отечественных создателей операционных систем и аппаратных платформ. Эта конференция призвана содействовать решению одной из главных задач российских разработчиков ОС по налаживанию прямой связи и постоянной совместной работы с создателями «железа», начиная с самых ранних этапов разработки. Взаимодействие помогает выстраивать и развивать экосистему отечественного софта и аппаратных платформ, что приведет к созданию безопасных и защищенных устройств, которые будут удобны пользователям, а для государства они станут важной основой технологической независимости.

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

 os day, ,

abondarev
()

Игры и учебные среды для программирования

Форум — Development

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

Интересуют только такие, которые или
a) запускаются нативно на GNU/Linux и с полным исходным кодом, или
б) запускаются через браузер без регистрации, но в этом случае обязательна возможность создания своих уровней.

Те какие я уже щупал и мои впечатления по ним, что бы снова их не предлагали:

  • RoboZZle — работает через Web, есть тысячи готовых уровней, кампания с фиксированной последовательностью избранных уровней и редактор, что бы делать свои уровни. К сожалению сайт на данный момент подглючивает: вики не работает, а форум засран спамерами.
    На данный момент лучшее, что нашлось из онлайновых. Правила игры: имеется поле из квадратных клеток одного из трёх цветов (RGB), можно двигаться вперёд и поворачивать на 90°, можно проверять цвет текущей клетки и вызывать процедуры (до пяти процедур, включая F1 которая запускается при старте). В некоторых уровнях разрешено перекрашивать текущую клетку. Цель игры — собрать все звёзды на уровне.
  • Light-bot. Есть в нескольких вариантах. lightbot.lu самый простой в использовании, но крайне примитивен, так как нет ни процедур, ни условных выражений. Есть две флеш версии: [https://armorgames.com/play/2205/light-bot]первая 1.x чуть получше веб-версии, так как есть одна процедура, работает через эмулятор без флеша. Флеш версия 2.0 без флеша уже не работает, а флеш RIP, зато там уже есть зачатки control flow похожие на то что есть в Robozzle. В общем, не годится.
  • ПиктоМир. Есть две онлайн версии: https://www.niisi.ru/piktomir/online/index.html — инопланетянский интерфейс какой-то, но выглядит прикольнее, хотя сходу непонятно, какая кнопка для чего. https://online.piktomir.ru/index.html — задания и команды те же самые, интерфейс более понятный, есть справка, но выглядит скучновато. Пока что нигде не нашел комментариев, почему в онлайне висит две версии и какая новее.
    Ещё есть оффлайн версии, причём на одном сайте только для Windows и мобильных платформ, а на другом и для Linux, но где исходники этой версии, я не нашел, возможно она проприетарная.
    Система команд — что-то среднее между robozzle и lightbot, и имеет команды и оттуда и оттуда. Control Flow есть, но сделан довольно сложно и топорно, а не красиво и элегантно, как на roboZZle.
    В ПиктоМире у процедуры в начале есть опциональный флажок, куда можно вставить повторитель на фиксированное к-во раз (от 1 до 6), условное выражение или условие цикла while. Причём, можно ли вставить флажок и какого типа решает составитель уровня, а не игрок.
    В то же время в robozzle никаких специальных операторов не требуется, поскольку можно, например, внутри F2 в конце положить вызов F2 на красной клетке. Тогда получится цикл while (red) {остальной код}. А если процедура сама себя не вызывает, то её вызов будет иметь эффект if(some color) {код процедуры} и так далее. Имитировать счётчик для фиксированного числа повторений можно с помощью процедуры с не-хвостовой рекурсией.
  • Cargo-Bot Online — клон игры Cargo-Bot, работающий в браузере. (UPD)
    На нескольких (вроде не более 8) платформах расположены башни из ящиков четырёх цветов (красный, желтый, зелёный, голубой) высотой не более шести штук. Над ними на рельсе может перемещаться кран. Цель игры — переместить эти ящики на указанные платформы в указанном порядке.
    Система команд очень похожа на RoboZZle, и как оказалось, написана под впечатлением от неё: взять/положить ящик (одна и та же команда), сместиться к платформе слева, сместиться к платформе справа, вызов процедур от первой до четвёртой. Каждая команда может быть выполнена в зависимости от содержимого крана (пустой, любой ящик, ящик конкретного цвета).
    На мой взгляд, RoboZZle интереснее, так там работа идёт в двумерном пространстве. Кроме того, нет редактора уровней.
    UPD Нашел версию лучше, старая ссылка вот.

Далее, три похожих игры про гусеничного робота:

  • Кодвардс — программа пишется на урезанном CoffeeScript, с добавлением цикла.
    loop 3
        robot.rotate left
        robot.move 1
        robot.rotate right
        robot.move 1
    end
    Если залогинится, то дают доступ к демо курсу, где нет ничего кроме этих двух команд, даже циклов и условий, а дальше платно и дорого. Лучше тыкать в режиме Hour of Code, там чуток интереснее и есть другой исполнитель, который может поднимать предметы на двух картах. В общем на один раз пройти и забыть сгодится. Регистрация того не стоит. Кроме того, не запоминает написанный код. Если перейдёте на предыдущий уровень — начинайте заново.
  • RoboMind — программа пишется на языке, похожим по синтаксису на C, только циклы называются по-другому, в частности есть repeat(3) {} для повторения фиксированное к-во раз, repeat {}, откуда выход только через break или end, repeatWhile () {} (аналог обычного while () {} ). Команды движения выглядят как forward, backward (заменяется forward с отрицательным аргументом), left, right, paintWhite, StopPainting, pickUp, putDown. У команд движения в скобках можно указать аргумент, например backward(-2) эквивалентно forward(2). Если зарегистрироваться, открываются дополнительные «курсы», где я видел Python в качестве управляющего языка. Есть Offline-версия на Java 11, но исходников я не нашел, хотя лицензия указана Apache. До этого была проприетарной и платной и требовала лицензионного ключа. В русской версии Hour Of Code где-то посередине был баг, мешающий пройти. Хотя может уже устранили.
  • Karel the robot — похоже на предыдущие два, но есть задания чуток сложнее и интереснее. Не требует регистрации, но есть некие continuation code, которые позволяют получить доступ сразу к последним заданиям из другого браузера. Примерно как пароли к старым играм. Язык самый простой из всех перечисленных — упрощённый python, с ещё более короткими командами (go, left, right, get, put) и без необходимости писать : после if, while, и с отступами в качестве операторных скобок, например так выглядит код для предпоследнего задания:
    while not home
      while not wall
        if sword
          get
        go
      left
    
    В отличии от двух предыдущих, здесь нет пульта, где можно вводить команды мышью.

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

Меня интересует, есть ли что-то подобное перечисленному, но с понятной свободной лицензией, работающее на GNU/Linux? Что бы именно робот, который ходит по миру с препятствиями, может идти вперёд и поворачивать и управляется кодом, который можно писать текстом.

Другие браузерные игры. Не то, что нужно, но тоже кому-то интересные:

  • http://box-256.com/ — Восьмибитный компьютер, работающий через браузер с 256 байтами памяти, где нужно писать программу на ассемблере. Написан, к сожалению на Unity, поэтому несвободный и долго загружается.
  • https://alexnisnevich.github.io/untrusted/ — выйти из лабиринта, меняя код игры (на java script)
  • https://david-peter.de/cube-composer/ — Паззл, из одной башни кубиков собрать другую башню кубиков.
  • Jahooma's LogicBox — на входе имеется строка. Есть базовые блоки: стартовый, удаление первого символа, проверка первых двух символов на совпадение, удвоение первого символа и просто перенаправление входа на выход и составные блоки, которые надо сделать самому в первых уровнях из базовых, а в следующих можно их использовать. Блоки нужно выстраивать на сетке 6 на 7 клеток, что бы получался нужный результат на выходе. Первые 10 уровней простые, на 10 резко возрастает сложность.
  • blockly.games — семь игр для обучения программированию. Правда здесь используется Scratch и только в последней игре можно писать ещё и кодом на JavaScript. Задания все относительно несложные.

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

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

Из таких я видел две:

  • KTurtle — имеется в комплекте KDE, ничего дополнительно ставить не надо, часто ставится прямо сразу с системой. Что можно сказать — черепашка, может рисовать картинки. К сожалению не очень зацепило, так как нет уровней с заданиями которые можно проходить. Кроме того, на мой взгляд роботы в мире с препятствиями интереснее.
  • КуМир — не смотря на невзрачный вид, эта система на мой взгляд лучше всех перечисленных выше, поскольку её исходный код сразу доступен, не нужно и можно его скачать и скомилировать, а можно взять готовые бинарники, включая автоматические ночные сборки.
    Сразу после установки доступен один «практикум», что в терминах игр эквивалентно кампании. Задания довольно простые, но можно проявить творческий подход и написать более универсальный код, чем минимально необходимый для прохождения автоматического теста.
    В среде есть всё необходимое для разработки своих «практикумов», включая редактор «учителя», где доступны функции и процедуры, заблокированные для «студента», но позволяющие писать проверяющие алгоритмы. Для исполнителей есть простые редакторы сред, позволяющие, например, нарисовать лабиринт.
    Программирование ведётся на диалекте Учебного алгоритмического языка, который используется в некоторых школьных учебниках информатики.
    алг Вперед
    нач
    · цел напр
    · напр := mod(направление, 4)
    · выбор
    · · при напр = 0: игрек := игрек + 1
    · · при напр = 1: икс := икс + 1
    · · при напр = 2: игрек := игрек - 1
    · · при напр = 3: икс := икс - 1
    · все
    · вперед
    кон

    Язык на мой взгляд неплохой, близкий по духу к Паскалю, но имеющий особенности синтаксиса, которые появились только в более поздних языках. Например, нач (аналог begin) нужен только в начале описания подпрограммы (алгоритма, алг), а для циклов и условий используются другие операторные скобки (кц ... нц и если ... то ... иначе ... все), для объявления переменной достаточно написать её тип и имя как в C, а слово var и двоеточие как в паскале не нужно.
    Имеется довольно много синтаксического сахара, облегчающего читаемость кода. Например, функции и переменные могут иметь имена из нескольких слов, разделенных пробелами, е и ё эквивалентны. Логический оператор не можно воткнуть между не только перед, но и между словам в многословной логической функции, например можно написать если не справа стена то ... все, а можно если справа не стена то ... всё и в цикле можно написать нц 3 раз ... кц, а можно нц 3 раза ... кц.
    Понравилось в этом языке разделение функций и процедур. И те и другие имеют синтаксис алг нач кон с опциональными параметрами, которые могут быть входными, выходными (рез) входными-выходными (арг рез или аргрез). Объявление функции выглядит так же, только добавляется ключевое слово типа возвращаемого значения (цел, вещ, лог, лит и тд) между словом арг и именем алгоритма. Возврат значения выполняется с помощью присвоения специальной переменной знач вместо аналога return, что на мой взгляд хуже.

    Есть конечно и недостатки. Использование кириллических символов и русской лексики затрудняет понимание кода иностранцам, а писать сам код менее удобно, так как <> (сравнения) [] (массивы) | (комментарии) набирать из русской раскладки по умолчанию нельзя. Впрочем этот недостаток легко решается с помощью самой IDE, где вроде бы есть сочетания клавиш, которые вставляют эти символы из русской раскладки, но даже если бы их не было, и в Windows и в GNU/Linux можно сделать свою раскладку, использующую вторую клавишу регистра (Обычно AltGr, он же правый альт) или поставить готовую. Ну и переключение раскладки одним нажатием CapsLock (или чего-нибудь другого на вкус пользователя) вместо комбинации из двух нажатий типа Ctrl-Shift тоже сильно облегчает набор символов, недоступных в текущей раскладке.
    Но, на мой взгляд, непривычная лексика — это не особо значительный минус. Чем кц пока ... нц из КуМира хуже какого-нибудь repeatWhile () {} из RoboMind? По-моему, ничем. А, поскольку код во всех этих системах, сугубо учебный, то и необходимости шарить его с иностранцами особой нет.

Интересуют только свободные игры, где есть готовые кампании с уровнями с плавно, но не слишком медленно повышающейся сложностью и возможностью делать свои уровни. Просто какие-то среды типа KTurtle — их полно, но там или готовых задачников/кампаний нету или есть, но дальше освоения простейших конструкций языка они не идут. В этом плане мне понравились задания из Karel Challenges, там есть например рекурсивный сбор яблок, выложенных в виде двоичного дерева. Не слишком сложно, но и не слишком просто. Хотелось бы ещё чего-то вроде прохождения лабиринта, но не по правилу левой или правой руки, а по более продвинутым алгоритмам, где правило * руки не работает.

 robozzle, , кумир, ,

Xenius
()

ЯОС на webassembly?

Форум — Development

В принципе-то это нафиг не нужно, разве только для пиара. Но!

В A2/ЯОС есть компилятор, способный генерировать код под разные платформы (правда, даже под ARM там какая-то гора костылей, чтобы реально запустить, но это отдельный вопрос).

Также там есть слой абстракции, позволяющий запустить ЯОС как приложение или как ОС. Приложение может запускаться под Unix/X11 или под Windows.

Образ жёсткого диска в формате IMG занимает 150Мб. И есть своего рода «послойная файловая система» в зачаточном состоянии, когда каждый файл сначала ищется в «рабочей директории», а уже потом - в обычной. Т.е. можно сделать иммутабельный образ диска и на него мутабельную рабочую директорию и получится как бы мутабельная файловая система.

Теперь вопрос - каковы предпосылки запихать всё это в webassembly и открывать как страничку в браузере? Очевидно, нужно написать бекенд для компилятора и реализовать слой абстракции от железа.

Как оцениваете трудоёмкость? Есть ли примеры подобного? Я пытался искать какие-то эмуляторы, нашёл что-то, но не нашёл на webassembly (впрочем, искал недолго).

 ,

den73
()

Как в lineageOS и почих AOSP-based прошивках платить по nfc?

Форум — Mobile

собственно сабж

 , , ,

pon4ik
()

programming languages performance benchmarks

Форум — Development

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

 , , ,

alienclaster
()

Переиздание книг Столярова по программированию

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

Скандально известный на ЛОРе Андрей Викторович Столяров выпустил новое издание своего учебного пособия «Программирование: введение в профессию» и обновил PDF-версии:
«Азы программирования»
«Системы и сети»
«Парадигмы»
В новом издании 4-томник стал 3-томником.

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

>>> Сайт автора

 

question4
()

Третий том учебника А. В. Столярова

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

На сайте А. В. Столярова выложен в открытый доступ учебник «Системы и сети», продолживший серию «Программирование: введение в профессию». Серия в целом ориентирована на ОС семейства Unix (в том числе использующие ядро Linux) в качестве единой среды для обучения.

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

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

 , ,

Croco
()

Embox v0.5.1 Released

Новости — Open Source
Embox v0.5.1 Released
Группа Open Source

31 декабря состоялся очередной новогодний релиз 0.5.1 свободной, распространяемой под лицензией BSD, ОС реального времени для встраиваемых систем Embox.

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

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

 , ,

abondarev
()

C++: Выделение массива памяти 1Гб в куче или в стеке?

Форум — Development

Вот когда то давным давно, было не правильным выделять много памяти в стеке. Сначала даже не было динамических массивов.

Потом они появились, появились 64 битные системы и оперативка гигами, и виртуальные страницы памяти.

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

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

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

10Мб..100Мб..1Гб..10Гб?

Операционка не подразумевается какая-то конкретная, все современные десктоповые вроде так умеют.

 

victor79
()