LINUX.ORG.RU

Сообщения den73

 

ЯОС в браузере, часть 2

Форум — Development

Специально для анонимуса, с разрешёнными комментариями, в продолжение ЯОС на webassembly?

Я нашёл эмулятор компьютера TEMU от Fabrice Bellard, у которого есть JS-версия (вроде даже не WASM), позволяющая запускать операционки в браузере, включая даже Windows 2000 (x86). Поскольку A2/ЯОС запускается на железе x86 (в QEMU/x86 уж точно), никакой webassembly вроде уже не нужен - нужно просто сделать образ A2/ЯОС, который запустится на TEMU. И всё. Хотя не уверен, что там не слишком устаревший x86, но это надо попробовать.

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

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

 temu, ,

den73
()

ЯОС на webassembly?

Форум — Development

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

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

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

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

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

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

 ,

den73
()

Подскажите реализацию Datalog

Форум — Development

Нужно эффективно обрабатывать большие объёмы данных. Параметры применения такие:

  • только монопольный доступ
  • нужно хранение базы данных на диске
  • высокая производительность (не знаю, как оно там достигается, но думаю, что нужно, чтобы можно было строить подобие индексов)
  • желательно, чтобы был сделан в Common Lisp или легко стыковался
  • желателен интерфейс к Cython
  • интерфейс быстрой загрузки данных из файла, возможно, в каком-то оптимизированном формате

 

den73
()

common lisp - удалить из списка элемент по порядковому номеру

Форум — Development

Гуглил 2 минуты (а то и 7), потом вспомнил. Поэтому достойно увековечивания.

(remove-if (constantly t) '(a b c d e) :start 3 :count 1)
⇒ (a b c e)

Результат может иметь общий хвост с оригиналом, но оригинал не модифицируется. delete-if модифицирует оригинал.

Справка - по ссылке

 

den73
()

Postgesql 9.6 - вернуть master и detail одним запросом

Форум — Development

Выйдя из криокамеры, пытаюсь понять, насколько далеко зашёл прогресс. Мне нужно создать страничку, на ней есть строки, и в каждой строке - какие-то поля и таблица детальных данных. Я понял, что это можно сделать, если свернуть детальные данные в json, или сделать отдельно запрос на строки и отдельно на детали, далее идти по ним параллельно, или денормализовать данные и идти по одному запросу, в котором данные «мастера» будут повторяться для каждой детальной строки. Всё это не особо классно. Я правильно понимаю, что нельзя в поле запроса вложить некую «таблицу»? Мне просто грезилось, что такое уже сделано, но почему-то найти не получается ни типов данных в документации, ни ответов на подобные вопросы на SO.

Пишу программку на go, пытаюсь использовать связку sqlx + pgx. sqlx использовал в прошлом воплощении данной поделки, а pgx мне разрекламировали тут

 ,

den73
()

Видео про gensym g2

Форум — Development

http://dev.gensym.com/wp-content/uploads/2015/11/Using-Inspect.mp4

Тема создана по той причине, что я работал с этой системой (дорабатывал), но NDA. Но никто не мешает дать ссылки на открытую инфу, там много интересного. Я её не продаю, если что :)

 , gensym g2, ,

den73
()

clojure после common lisp - насколько омерзительно и в чём именно?

Форум — Development

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

Расскажите о своих ощущениях (из серии «собираюсь жениться - отговорите»).

 , ,

den73
()

llvm книгу посоветуйте

Форум — Development

Привет! Ищется книга, желательно на русском языке, по llvm. Нужно что-нибудь про устройство биткода и его интерпретацию прежде всего. Я пока нашёл вот это https://www.labirint.ru/books/485927/

Есть также LLVM essentials и LLVM cookbook. Стоит ли покупать?

 ,

den73
()

ЯОС - 2020-02

Форум — Development

Чтобы не мусорить в теме про уязвимость в futex, отвечаю тут на

https://www.linux.org.ru/news/security/16140128?cid=16141747

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

Да

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

Не потому, а потому что эта будет российская, а не международная разработка. Поскольку владельцы репозитория будут российскими, контролировать коммиты будет Россия. Таким образом, чтобы внедрить закладку, АНБ придётся как минимум завербовать находящегося в России владельца. Язык увеличивает лояльность разработчиков к России - надо, чтобы систему разрабатывали те, кто связывает свою будущее с Россией. Чем лучше человек знает английский, тем в меньшей степени он связывает своё будущее с Россией. Это не закон природы, но статистическая корреляция. Кроме того, за счёт разработки на родном языке увеличивается качество, производительность труда, кадровый резерв.

Не менее важно, что система написана не на Си, а на Обероне. Это огромный шаг вперёд по надёжности.

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

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

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

Любой проприетарный проект резко сужает кол-во разработчиков, которые в нём могут участвовать, поскольку это NDA. Тем не менее, мы видим, что проприетарные проекты доминируют. Я провёл некоторые выкладки, возможно, сильно неточные, т.к. дефицит времени сейчас. Любая коммерческая организация с проприетарным продуктом резко ограничена в числе участвующих в разработке. Всего в мире, как говорит гугл, около 20 млн программистов. Если в коммерческой организации 2 программиста, то она, выбрав проприетарную модель разработки, сразу отказалась от 19999998 программистов, сузив круг разработчиков в 10 млн раз. И тем не менее есть масса успешных проектов с двумя разработчиками. А если взять ОС, то самые популярные ОС, если я всё правильно понял - это всё же проприетарные iOS, MacOS, Windows, Android, vxWorks. В Microsoft порядка 40 тыс инженеров, и этого хватает, чтобы быть десктопной системой номер один, и ещё делать кучу других продуктов. Учитывая ещё и качество Линукса, в котором уже каждую неделю находят дыру, вообще есть сомнения в том, что открытая модель разработки имеет смысл. Да и мне что-то кажется, что большинство современных разработчиков линукса пишут его за зарплату, а не за светлую идею. Те времена прошли.

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

Другой язык программирования и другой язык общения команды этому очень помогут. Проблема нашей страны в том, что уже сделана стратегическая ставка на линукс, это очень плохо. Вот подождём, может Касперский со своей ОС заменит. Но можно и не дождаться. Плюс к тому, русский язык сам по себе нуждается в защите и это часть политики нашего государства. Поэтому вроде как государство должно было бы помочь, однако этого пока не случилось. Поэтому я и пишу во всякие форумы - остаётся делать ставку только на добровольцев. Найти хотя бы пару толковых - это уже будет прорыв. Если в России примерно 450 тыс. программистов. Даже на Хабре был опрос, где 15% прочитавших статью о программировании на русском языке отнеслись к этой идее положительно (70% были против). Т.е. цифры говорят о том, что число моих потенциальных соратников составляет 67 тыс. человек (конечно, замер неточный, но по ощущением, порядка 10% лояльны к этой идее, видимо, те, кто читали статью, изначально были более лояльны к идее). Нужно до них донести мой проект и думаю, что два соратника во всей России должно найтись.

Блин, как я много пишу, пора уже завязывать.

Открой тему в Development и начни с краткого перечисления особенностей, целей и краткого обзора.

Реп у меня в профиле, там всё написано: https://gitlab.com/budden/ja-o-s

@hummer

Отправлены во временный игнор Obersterj (Мюнхен) и zabbal (Берлин) и Exmor_RS (город не указан). Пожалуйста, учитывайте это, отвечая на комментарии.

 , ,

den73
()

среда для clojure: emacs или vscode?

Форум — Development

Недавно пришлось настраивать среду разработки для окамля. Плагины для vscode оказались пшиком, емакс помог. Какова ситуация с clojure? Среды от jetbrains почему-то не вызывают восторга, но можно тоже рассмотреть.

Контекст: я более-менее свободно работаю в Common Lisp в slime в emacs, хотя последние годы это было крайне редко (на лиспе стал писать в своей оболочке «Яр»). В остальном мой любимый редактор - это VSCode. Скорее всего, если буду играть в clojure, там же будет и что-то другое, связанное с java, js, clojurescript. Т.е. всеядность среды тоже имеет значение. В Емакс я только с лиспом действительно много работал, к остальному не знаю даже, как подступиться.

 , ,

den73
()

чтение любого файла так, как будто он utf-8

Форум — Development

Я хочу открывать любой файл так, как будто он utf-8. При этом в реальности там может быть смесь двоичных данных и utf-8. Хочу алгоритм, который будет читать любой файл без потери данных, а utf-8 читать как последовательность символов юникода.

Предлагается такой алгоритм:

Пытаемся читать символ юникода. Если получилось, то ок. Если не получилось, то мы прочитали сколько-то (не более 5-6) байт, и дальше поняли, что что-то пошло не так. В этом случае, мы для каждого байта возвращаем знак-заменитель U+FFFD � , а за ним символ юникода с кодом, численно равным этому байту (как 8-разрядному беззнаковому целому). Если попался просто знак-заменитель, то мы его удваиваем. В итоге, независимо от того, является ли данный поток правильным utf-8, с ошибками, или вообще не utf-8, наш «чтец» вернёт всю информацию, которая была в потоке, без потерь.

Вопросы:

  • не изобрёл ли я велосипед?
  • нужно ли что-то делать с особыми кодами, U+FFFE, U+FFFF?
  • какие грабли я не предусмотрел?

 ,

den73
()

как назвать контейнер?

Форум — Development

Вот у меня есть тип, который включает в себя массив (кусок памяти). В массиве каждый бит изображает число от 0 до Размер-1. И таким образом реализовано множество целых чисел. Тип мутабельный. Доступ не потокобезопасный. Диапазон чисел, к-рые могут храниться, фиксируется в момент создания. Отрицательные числа хранить нельзя.

Задача на 5: как назвать такой контейнер?

Если его назвать так, чтобы название отражало смысл, то получится что-то типа:

ПодмножествоФиксированногоОтрезкаЦелыхОтНуляДоЭнМутабельноеОднопоточноеБезЗащитыНаБитовомВекторе.

А если название не отражает смысл, то оно проживёт до момента, когда появится немутабельное или с поддержкой параллельного доступа, или с изменяемым размером. У нас в лиспе никогда не было этих вот STL-ей и стандартных контейнеров от Явы. Да и в SQL тоже как-то мало разных контейнеров.

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

 , ,

den73
()

Помогайте с переводом

Форум — Development

Начал переводить с отладчика. Следующие слова вызывают сложности:

  • -breakpoint- (ТочкаОстанова)
  • align client - я перевёл как РазмещЗалить, но не нравится. По смыслу это значит, что есть align top, left, bottom, right, client. Т.е. разместить данный виджет сверху, слева, внизу, справа, или залить им всё оставшееся после вот этих вот прилепленных к краям виджетов место в хозяйском виджете. Можно ещё «заполнить» - тоже вроде имеет смысл
  • -toolBar- панель инструментов (спасибо за короткие варианты, но больше не надо. Хотя… как у велика эта штука называется, не бардачок, а как же?), готовальня
  • отладчик в состоянии, когда выполнение остановлено - было dbgBreak, как сделать - состПриостановлен ?
  • next - популярная в обероне вещь для односвязных списков. Переводил как «след», но возникает конфликт со словом «след». Соответственно, следщ. Думаю, не очень ужасно. Варианты - сл, следующий(ая), затем, ещё, за, после, вперёд.
  • previous - для двусвязных, перед, До, назад, взад
  • init (конструктор объекта, слово Init из Паскаля) - варианты иниц, родись, констр, ЯвисьОкно, СтройсяОкно - на самом деле это «СтройСяОкно».
  • object - сущность, существо, субъект, машина, вещь (явисьВещь, служиВещь, сломайсяВещь, исчезниВещь) - ообъект

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

 , ,

den73
()

я нашёл обновлённый отладчик TclPro

Форум — Development

tcl-щики следили за программой tcl bounties, и кое-кто высказывал недоумение - где же обновлённый отладчик из Tcl Pro, за который кто-то получил 20 тысяч долларов? Мы сошлись во мнении, что результат работы зажали. Но это оказалось не так.

Вот же он, в репозитории того же самого регистранта гитхаба, который и публиковал эти баунти:

https://github.com/flightaware/TclProDebug

Я загрузил, собрал, опробовал на первом попавшемся скрипте. Сразу не упал. Хотя не могу быть уверен, что этот скрипт как-то зависит от tcl 8.6, но думаю, что 20 тысяч долларов не просто так отдали.

Мои поздравления всем столь же непрошаренным в гугле, как и я, любителям tcl/tk!

 ,

den73
()

Ищутся растровые шрифты с копилефт или пермиссивной лицензией

Форум — Desktop

Но главное-то - это авторские права на них в России. Что тут вообще делать и в какую сторону копать? Если автор - россиянин, то нужно связаться с правообладателем и получить документальное разрешение. А если нет, то я вообще могу как-то законно брать шрифты, вставлять в свою программу, менять их и в таком виде выпускать?

 , растровые шрифты,

den73
()

стандарт для написания bash-скриптов

Форум — Development

Спасибо предыдущим советчикам. Команду мы уже расширили, но курсов по bash мы так и не подобрали.

Поэтому только сегодня я узнал, что я ещё в большей степени не умею писать bash-скрипты, чем я думал раньше. Не прошло и пары лет, как я радовался открытию set -e (думаю, что большинство пользователей баш даже об этом не знают). И сегодня вдруг - бац

Оказывается, set -e устроена очень сложно, поэтому у неё бывают ложноположительные срабатывания. Заканчивается тем, что авторы данного документа не пришли к единому мнению:

Выводы

GreyCat рекомендует не использовать -e, а использовать вашу собственную проверку ошибок. 

rking's советует пользоваться -e, но учитывать грабли. 

geirha's советует должным образом обрабатывать ошибки и не полагаться на ненадёжное set -e.

Также можно вот это прочитать

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

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

 ,

den73
()

изучение баш и гит в качестве тестового задания

Форум — Development

Вопрос

Хотим расширять команду, в т.ч. людьми без опыта. Вроде сложился консенсус, что от такого чела нужен интерес к делу, обучаемость, ну, ессно, не считая способностей. Соответственно, хотим в качестве тестового задания людям без опыта вообще дать изучить баш и гит и потом проверить знания. Какой ресурс на эту тему посоветуете? Там может быть просто набор статей (на РЯ) и упражнений, а может быть и система с проведением теста. Если это умеренно платно - тоже можно рассмотреть.

Сводка интересных ответов

(пока не заглядываю, а просто собираю по трём страницам темы)

А вот что спросил у коллег/сам нагуглил

 , , , ,

den73
()

Сделать так, чтобы было легко отличать русскую «эс» (с) от латинской «ц» (c)

Форум — Development

Занялся решением вопроса неотличимости с от c. Вопрос решается двумя способами:

  • сделать кнопку, как в Яре, к-рая подчёркивает латиницу.
  • сделать шрифт

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

Соответственно, вопрос - куда добавлять глаза - в латиницу или в кириллицу?

Видеоролик с затравкой обсуждения

Первоисточник

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

Ряд ссылок на тему шрифтов, к-рые я накачал во время изучения:

Не, ссылок пока не будет, может потом… Куда-то делись.

Итог темы

Сделал режим подчёркивания латиницы, который можно отключить командой главного меню, http://вече.программирование-по-русски.рф/viewtopic.php?f=5&t=91&p=1571#p1571

Шрифт с отличающимся начертанием кириллицы можно попробовать сделтаь как-то так:

http://вече.программирование-по-русски.рф/viewtopic.php?f=2&t=268&sid=023381a8c0b0dacdc8c6735ac37aafe7&start=10#p1570

 , , , ,

den73
()

переупаковка расширений из code в codium

Форум — Development

codium недавно переключился с магазина расширений Microsoft на свой собственный. Там очень мало пакетов. Насколько я понял, это из-за лицензии. Кто знает, могу ли я взять какой-нибудь пакет (например, локализацию) и переупаковать его для магазина кодиума?

Или, допустим, если я скачаю пакет из магазина микрософта и установлю его руками, это допустимо или нарушает лицензию микрософта?

Сам по себе интересующий пакет https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ru весь из себя MIT-ный, чего нельзя сказать про некоторые другие пакеты, такие как «C/C++»:

https://marketplace.visualstudio.com/items/ms-vscode.cpptools/license

 ,

den73
()

Добавил поддержку русских ключевых слов и идентификаторов в ЯОС

Форум — Development

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

Выглядит это вот так,

https://gitlab.com/budden/jaos/-/blob/яос/док/реклама/ао-с-кириллицей-2020-06-12.png

Пример исходника:

модуль Proba; 

использует Commands; 

конст Ойляля* = 80000;

тип дача* = объект
	перем 
		баня* : INTEGER;
		дом* : INTEGER 
		
	проц &Стройсь(ценаДома, ценаБани : INTEGER);
	тело
		дом := ценаДома;
		сам.баня := ценаБани кн Стройсь кн дача;
		
проц Процедурка*(ц: Commands.Context);
перем д: дача;
тело
	NEW(д, 1000000, 500000);
	ц.out.Int(Ойляля + д.баня + д.дом,0); 
	ц.out.String("... Мечта сбывается..."); 
	ц.out.Ln; ц.out.Update кн Процедурка;

проц ЗабылиСтереть; тело кн ЗабылиСтереть;

проц Test*(ц: Commands.Context);
тело
 Процедурка(ц) кн Test;

кн Proba.  

Всё остальное см. в репозитории https://gitlab.com/budden/jaos

 , , , ,

den73
()

RSS подписка на новые темы