LINUX.ORG.RU

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

Радио. Linux. XXI век

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

Посвящается Дню Радио!

Вот так я использую RTL-SDR для прослушивания радиоэфира. На скрине мы видим замечательную программу GQRX, реализующую программный радиоприемник.

Немного технических деталей. RTL-SDR - это устаревший TV-тюнер, который радиолюбители используют в качестве ЦАП с параметрами 8 бит/14.4 Мгц. Такой ЦАП при желании может захватить сразу все низкочастотные диапазоны - ДВ, СВ, и КВ! Остается только цифровым фильтром выделить из оцифрованного сигнала нужную радиостанцию, что и делают программы типа GQRX или SDRSharp.

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

Итак, что сейчас можно услышать в эфире? В XXI веке можно не только услышать, но и увидеть! SDR программы покажут нам «водопад» - визуализацию радиосигналов в выбранном диапазоне.

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

Вещательный диапазон 31 метр, лес станций, в основном это радио Китая:

https://imgur.com/wLwkfJe

Вещательный диапазон 25 метров:

https://imgur.com/ILRDunL

Любительский 40 метров, телеграфный и «цифровой» участки:

https://imgur.com/nsY6RYL

Тоненькие прерывистые линии - это станции, работающие морзянкой. Справа гремит FT8 - цифровая связь, которая никогда не затихает. А в середине - знаменитая танцпольная частота 7.055 Мгц, где днем и ночью идут с… поры на политические темы. Ну вы поняли.

Для того чтобы декодировать FT8 сигналы, я использую другую программу - WSJTX, вот как это выглядит:

https://imgur.com/txYPxYh

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

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

https://disk.yandex.by/d/AjqPqCA2LDe8UQ

«Скрепноватая» тема передачи вначале - это радио Китая, русская служба, во всей красе. В конце - любительский эфир, SSB модуляция, диапазон 40 метров.

Вот такое оно, радио 21 века! С Днем Радио всех! 73!

>>> Просмотр (1366x768, 935 Kb)

 ,

James_Holden ()

Ада: исключения и безопасность

Форум — Development

Про Аду еще не забыли?

Известно, что исключения в C++ с одной стороны упрощают обработку нештатных ситуаций, а с другой стороны делают программный код часто сложнее, потому что такой код уже должен поддерживать «гарантии безопасности», что составляет определенную сложность для языка без сборки мусора (GC). Очень много нюансов.

Исключения в Аде появились раньше, чем в C++. Они были уже в стандарте 83-го года. Это была одна из продающихся фишек первого стандарта языка. Как поддержка исключений соотносится с безопасной средой исполнения кода? В Аде есть элементы GC? Там что-то было про подчищение памяти еще в стандарте 83-го года, но я уже давно все забыл.

Гарантируется ли в Аде безопасность на базовом уровне? Не может ли брошенное исключение привести к утечке или какому другому дефекту в памяти? Если нет, то как это соотносится со скоростью исполнения кода?

 

dave ()

Конкурент Метапрога на основе Forth

Форум — Development

Его концепт (мой креатив; не воспринимайте серьезно!):

  • Текстовая сторона среды программирования (блоки в другом, более прозрачном виде) включает в себе команды, написанные на диалекте языка программирования Forth, который поддерживает UTF-32 для собственных слов.
  • Словарь данной реализации языка Форт базируется на словаре вьетнамского языка, не исключая тонов вьетнамского (его диакритику соответственно).
  • Все английские слова, соответственно, заменены на вьетнамские.
  • Функционал можно расширять n-ным числом установленных пользователем плагинов.
  • В данном диалекте Форта должны быть различия не только по тональности слов, но и по их цвету.
  • Более того: можно делать (дополнительно) слова, которые отличаются по запаху, вкусу, объёму и текстуре. В итоге объёмы потенциального словаря на порядки больше, нежели в любом нормальном другом языке программирования.
  • Всё компилируется в файлы расширения .mfpp (Meta Forth Programming Program) и исполняется в виртуальной машине наподобие .Net/Java.
  • Основная IDE ForthProg’а должна быть написана, соответственно, Фортом для худшей лучшей её работы.
  • Лицензия IDE - GPL v1.
  • Блоки могут выглядеть как 3D-объекты. Да, и сюда пробралось влияние игр серии Crysis.
  • А ещё они могут плясать в индийском стиле.

А теперь главный вопрос: если я всё это реализую, то смогу ли конкурировать с Метапрогом на поприще визуального программирования?

 , , , ,

Marketersandmobile ()

О божественном C и введение в него через ed

Форум — Development

Бытие (частично) определяет.

*Какая регулярка преобразует for с телом в while с телом ?

*Какой #define макрит for в while?

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

 , ,

qulinxao3 ()

Smalltalk - изучаем вместе

Форум — Development

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

Видео 1. Общие сведения

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

………………………………………………………..

Видео 2. Сообщества, книги, проекты.

Показаны русскоязычные сообщества по Smalltalk, в частности, группа в ВК. Сделан обзор архива с книгами, которые я нашёл в Сети и выложил на Гугл-диск. Рассказано о двух крупных проектах, которые использовали Smalltalk (FLProg и OpenCobalt). Расширенный список ссылок находится в описании к видео, непосредственно на Youtube

………………………………………………………..

Видео 3. Виртуальные машины.

В уроке кратко рассмотрены среды программирования Squeak, Pharo, и Dolphin.

………………………………………………………..

В темах, не затронутых в видеороликах, я ещё либо сильно «плаваю», либо пока не знаю их вообще. Поэтому обсуждать могу только уже выложенное на Ютуб.

 , ,

Oleg_Kon ()

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 ()

NixOS 19.03

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

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

Некоторые изменения:

  • Интерпретатором Python 3 по умолчанию теперь является CPython 3.7;
  • добавлено окружения рабочего стола Pantheon, развиваемое разработчиками elementary OS;
  • модуль Kubernetes подвергся масштабному рефакторингу;
  • добавлено 35 новых модулей;
  • прекращена поддержка nodejs версии 6;
  • Wayland-композитор Sway обновлён до версии 1.0;
  • оболочка fish обновлена до версии 3.0.

Готовые установочные образы предоставляются в варианте с десктопным окружением KDE Plasma 5 и в облегчённом консольном варианте (без предустановленного окружения рабочего стола). Также доступны образы для VirtualBox, Amazon EC2 и Microsoft Azure.

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

 ,

Singularity ()

Emacs 26.2

Новости — GNU's Not Unix
Группа GNU's Not Unix

В День Космонавтики случилось ещё одно радостное событие - релиз среды исполнения Lisp программ Emacs, наиболее известной лучшим (по мнению пользователей Emacs) редактором текста.

Предыдущий релиз состоялся чуть меньше года назад поэтому заметных изменений не так много:

  • поддержка 11 версии юникода
  • поддержка сборки модулей в произвольной директории
  • удобная команда сжатия файлов во встроенном файловом менеджере

Кроме того стоит отметить релиз 9.2.3 org-mode - режима управления заметками, таблицами, календарями и всем тем, что необходимо для организации продуктивной работы. Несмотря на то, что это часть Emacs, у неё отдельный цикл релизов.

Из личного опыта - даже org-mode https://orgmode.org/ уже достаточно для того, чтобы задуматься о переходе на Emacs.

В предверии неизбежных шуток за 300 про «отсутствующий редактор»: http://spacemacs.org/ - преднастроенный дистрибутив Emacs, созданный по мотивам vim.

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

 , ,

zabbal ()

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

Форум — Development

Не нравится - проходите мимо. Нравится - помогайте проекту.

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

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

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

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

Чисто технические. По Си, библиотекам итп. А поучать не по делу - «не учите меня жить, лучше помогите материально».

Примеры

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

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

Собственная метапроговская функция

Метапрог не только умеет вызывать сишные функции, но на нем можно и свои делать. Функция для открытия слушателя (listener) на нужном адресе и порте и ее схема:

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

Зеленые линии - особенные. Они задают жесткую последовательность выполнения. Сначала bind и только потом уж listen. Сначала listen - и только потом уж сокет можно передать дальнейшим функциям (например, accept).

У функции есть своя пиктограмма.

Открытие окошка

Этот пример открывает окно. Там же есть асинхронный вызов (на завершение):

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

Инициализация (отдельная функция, инлайнится еще на уровне метапрога в главную диаграмму):

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

Асинхронная функция на завершение:

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

Все это генерирует такой код (опять же - не для эстетов, а для скармливания gcc):

https://pastebin.com/T3Bu5Qy6

 , , ,

metaprog ()

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

Форум — Development

Не нравится - проходите мимо. Нравится - помогайте проекту.

Дополнительно:

Структуры условного выбора типа

Примеры

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

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

Структура

Структура GtkWidgetClass с кучей членов-указателей на функции:

https://i.postimg.cc/bwTrb1r1/2.png

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

Да, большая и на экран не вмещается. После релиза эта проблема будет решаться перемещением видового экрана по диаграмме и зумом (как в играх-стратегиях или при просмотре фоток под зумом).

Она же в текстовом виде: https://pastebin.com/TeTsSMQz

 , , ,

metaprog ()

Open Dylan 2019.1

Новости — Разработка
Группа Разработка

31 марта 2019 года, спустя 5 лет после предыдущего релиза, вышла новая версия компилятора языка Dylan — Open Dylan 2019.1.

Dylan — это динамический язык программирования, реализующий идеи Common Lisp и CLOS в более привычном синтаксисе без скобочек.

Основное в этой версии:

  • стабилизация LLVM-бэкэнда для архитектур i386 и x86_64 на Linux, FreeBSD и macOS;
  • к компилятору добавлена опция -jobs для ускорения сборки за счет использования нескольких процессов;
  • исправление ошибок, выявленных со времени выхода предыдущей версии.

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

 , , ,

jcdr ()

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

Форум — Development

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

Какой из ныне существующих языков программирования позволяет программировать мышкой, а не клавиатурой? На чем можно программировать графически, а не в тексте? Пока что это позволяет на приличном уровне только пропиетарное LabVIEW. Трудно поверить, но это единственная полностью графическая среда программирования серьезного уровня в 2019 году! Но даже в LabVIEW есть куча недостатков (которые невозможно самостоятельно устранить из-за пропиетарности).

Графическое программирование намного проще и понятнее. Если в качестве бэкенда брать Си и манипулировать функциями из сишной стандартной библиотеки, это не будет создавать никаких лишних абстракций, зато серьезно упростит жизнь программистам и особенно людям, имеющим дело с чужим кодом. Код любого уровня и любой сложности, представленный в виде графических блоков, станет открытым не только для узких специалистов, но и вообще любому продвинутому пользователю. Простота программирования и эффективность, не меньшая, чем у Си, убьет C++, Python, Java, Javascript и прочую ерунду с раздутыми и полными багов абстракциями (которые Линус не раз крыл матом).

Я уже делаю некое подобие LabVIEW на самом LabVIEW, назовем его Metaprog. Так же, как в 1991 Линус Торвальдс делал линукс, пользуясь пропиетарным Minix. И так же жаловался на кучу недостатков в Minix, желая устранить их в своей системе.

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

Примеры

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

Самое простое - Hello World. Скомпилируйте (gcc -o ./test ./code.c).

https://i.postimg.cc/YCywWbSh/fwrite.png

#include <stdio.h>

int main(){
char metaprog_array_pointer_10156130170823954432[] = {72,101,108,108,111,32,87,111,114,108,100};
unsigned long int metaprog_variable_13830126042312755200 = 1;
unsigned long int metaprog_array_size_10156130170823954432 = 11;
fwrite(metaprog_array_pointer_10156130170823954432,metaprog_variable_13830126042312755200,metaprog_array_size_10156130170823954432,stdout);

}

Я подписываю терминалы на украинском (сам оттуда), с таким же успехом их можно подписывать на русском, а не только на английском. Можно будет перевести все, кроме, разве что, вызываемых сишных функций, а gcc этого и не заметит (посмотрите код). При работе международной командой можно к каждой подписи/надписи прилагать словарь с нужными языками. Игры ж локализируют, чем визуальное программирование хуже?

Массив декларируется не как строка в кавычках, а как последовательность байтов, а байт - это цифра. Строки редактируются отдельным редактором (пока что средствами LabVIEW, но это временно). Больше никаких проблем и глюков с управляющими символами, кавычками итп (очень серьезная проблема при программировании на Си, Shell scripting и вообще всех текстовых языках).

Константа-массив имеет отдельные терминалы для указателя на массив и длины массива (известной редактору кода). Если терминал длины подключен - декларируется отдельная переменная. Не подключен - незачем и декларировать.

Пример посложнее: запись и в stdout, и в файл ./fwrite-test.txt

https://i.postimg.cc/v8KvKKmQ/fwrite2.png

#include <stdio.h>

int main(){
char metaprog_array_pointer_10156130170823954432[] = {72,101,108,108,111,32,87,111,114,108,100};
unsigned long int metaprog_variable_13830126042312755200 = 1;
unsigned long int metaprog_array_size_10156130170823954432 = 11;
fwrite(metaprog_array_pointer_10156130170823954432,metaprog_variable_13830126042312755200,metaprog_array_size_10156130170823954432,stdout);
char metaprog_array_pointer_12385851444566411264[] = {46,47,102,119,114,105,116,101,45,116,101,115,116,46,116,120,116,0};
char metaprog_array_pointer_16510743873862514688[] = {119,43,0};
fwrite(metaprog_array_pointer_10156130170823954432,metaprog_variable_13830126042312755200,metaprog_array_size_10156130170823954432,fopen(metaprog_array_pointer_12385851444566411264,metaprog_array_pointer_16510743873862514688));

}

В данном примере используется функция fwrite, а не printf. То есть, символ «0» не влияет на запись массива в файл или stdout. Сколько символов писать функция и так знает из длины массива.

Заявки

Принимаю заявки на новые фичи. Пишите в комментариях. Уже приняты заявки:

1. Пример с простым HTTP-сервером.

2. Пример с сортировкой Хоара (quicksort).

3. Простой в пользовании функционал работы со строками (больная тема для Си и С++).

4. Полностью графический функционал работы с регулярными выражениями, без вовлечения PCRE.

Сейчас нужно научить Metaprog «компилировать» блок-схемы прямо в Си и скармливать этот код gcc, получая бинарники. После чего перенести сам Metaprog на Си, чтоб перестать нуждаться в пропиетарном LabVIEW и выложить результаты в опенсорс. И получить за это донат, хотя желательно уже сейчас (для ускорения работы). Bitcoin:1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD

 , , ,

metaprog ()

Что почитать по ООП?

Форум — Development

1. Есть несколько книг на выбор. Нужно определить какую книгу стоит прочитать первой, а какие позже. Главные критерии для упорядочивания: «фундаментальность» касательно ООП, практичность и доступность (грамотность) в изложении материала.

Вот список:

  1. Философия Java // Б.Эккель
  2. ЯП C++ // Б.Страуструп
  3. ООП с ANSI-C // А.Шрайнер
  4. Типы в ЯП // Б.Пирс

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

 , , , ,

Edward_I ()

Полнодисковое шифрование или...

Форум — Talks

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

Использую ноутбук, который по совместительству и домашний и рабочий ПК. Работаю я дома, т.е. транспортируется он сравнительно нечасто. Если куда-то его везу - не оставляю в машине без присмотра и т.п.

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

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

Пароли хранятся в KeePass.

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

Соответственно, родились две мысли:

1) создать контейнер VeraCrypt и положить внутрь браузер. Включил комп - открыл контейнер - работаю. Плюсы - просто. Минусы - остальная информация, пусть и не столь критичная, все-таки остается открытой.

2) полнодисковое шифрование LUKS. Плюсы - защищено все. Минусы - масса неочевидных неудобств. Основное из которых, что когда меня нет дома, либо компьютером никто не сможет пользоваться, либо пароль должен лежать на бумажке около ноута. А уже само наличие такой бумажки ставит под сомнение всю затею. При том, что ноутом не редко пользуется жена. Или я прошу ее включить его, чтоб я мог удаленно подключиться. Ну и так далее.

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

 , ,

Gnom-s-toporom ()

taporwave 0.0.3

Новости — Мультимедиа
Группа Мультимедиа

taporwave — это бесплатный генератор случайного изменения скорости воспроизведения, написанный на языке Haskell.

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

В настоящий момент поддерживается только плеер MPV. Запускать его следует с ключами --input-file=/dev/stdin и --audio-pitch-correction=no. Команды изменения скорости подаются на вход плеера через пайп. Сам taporwave можно запускать с опциональными ключами --minBound и --maxBound, задающими соответственно нижний и верхний предел коэффициента умножения частоты. По умолчанию скорость изменяется в диапазоне от 0.8 до 1.2.

Полный пример использования:

/data/progs/haskell/taporwave/taporwave --minBound 0.9 --maxBound 1.1|mpv --no-video --input-file=/dev/stdin --audio-pitch-correction=no /downloads/sound/misc/Tracker\ music\ playlist\ from\ ~1999-gHQYYh7J1O4.webm

Пример получаемого звучания: оригинальная композиция, она же в обработке taporwave.

Доступна сборка для GNU/Linux-cистем с архитектурой процессора x86_64 (md5: d25f5cfe3790417a3debd5ff6ba46dbd). Пользователи других систем могут собрать программу самостоятельно.

Лицензия: WTFPL.

>>> Репозиторий

 , , , ,

bodqhrohro_promo ()

Редакторы Markdown и заметок — результаты моего исследования

Форум — Talks

Разыскивая для себя редактор заметок и редактор Markdown я обращал внимание на наличие следующих нужных мне функций:

  • импорт заметок из TXT, а лучше — непосредственно работа с заметками в TXT-формате;
  • поддержка формул LaTeX в Markdown, в том числе с кирилицей;
  • корректно работающий синхронный просмотр Markdown (как вариант приемлем WYSIWYG, если он хорошо работает, но это не лучший вариант);
  • возможность рисования с помощью рукописного ввода (для ноутбука, где экран совмещен с графическим планшетом);
  • достаточно контрастный и в то же время не вырвиглазный дизайн (в идеале — системный GTK, или а-ля SAL_USE_VCLPLUGIN=gen libreoffice, или а-ля QT5 в TexMaker);
  • скорость, легкость работы, отзывчивость (программы, базирующиеся на таких штуках, как Electron, в этом смысле сильно отстают от программ, написанных на чистом C или даже на Python);
  • возможность синхронизации с другими устройствами (можно через Dropbox);
  • теги и поиск.

Я посмотрел около полусотни программ, и результаты моего исследования неутешительны. К сожалению, даже просто стабильно работающих программ, которыми хоть сколько-нибудь удобно пользоваться, очень мало. К ним не относится чуть ли не единственный редактор Markdown, наличествующий в официальном репозитории Manjaro, ReText. В большинстве программ с заявленной поддержкой формул, они, во всяком случае с кириллицей, не работают.

Мне хотелось бы отметить лучшие программы, которые я нашел:

  • веб-редактор Markdown с поддержкой формул UPMATH — только редактор с синхронным просмотром, доступен сразу по ссылке, ничего лишнего;
  • лидеры в категории «редактор Markdown с формулами»: VNotesЪ, Typora (WYSIWYG; не очень шустрый);
  • лидеры в категории «менеджер и редактор заметок / персональная Wiki»: QOwnNotes, Makagiga, Markdown Explorer, Zim.

Стоит обратить особое внимание на первые две программы из последнего пункта. Помимо собственно заметок, они имеют очень большую функциональность: например, списки ToDo. Программа Makagiga, на мой взгляд, могла бы вообще стать основой для десктопа будущегоЪ, бучи объединена или связана с файловым менеджером и браузером, с некоторыми доработками.

Вы слышали о многих других программах, которые могли бы рассматриваться в этих категориях? (Из последних новостей на LOR: Cherrytree? MyTetra?) Скорее всего, вас обманули: они не юзабильны и / или сильно отстают от вышеназванных. И, скорее всего, я их смотрел.

Прошлые темы
[markdown] Гениальное — простоЪ (февраль 2017)

Примечания
Ъ - Ъ-friendly ссылка

 ,

nightingale ()

Релиз gtk-темы Lounge 3.28.0

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

Состоялся релиз gtk-темы Lounge (в комплекте идет оформление для gtk2, gtk3, gnome-shell и вспомогательная тема иконок), основанной на оригинальной Adwaita. Тема создана под впечатлением от Absoulte, распространяется по лицензии GPLv3+.

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

Скриншоты: первый, второй, третий, четвертый, пятый.

>>> GitHub

 , ,

monday ()

Вышел Tusky 3.0 — свободный Mastodon-клиент для Android

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

Tusky — легковесный Mastodon-клиент для платформы Android, который поддерживает все возможности сети Mastodon, включая фото, видео, списки, «custom emoji» а также имеет интерфейс, разработанный в соответствии с Material design.

Mastodon — федеративная социальная сеть для микроблогинга, написанная на языке Ruby и использующая стандартизированный W3C протокол ActivityPub.

( Основные изменения... )

>>> Скачать исходный код релиза и APK-пакет (GitHub)

>>> Установить APK: F-Droid | Google Play | Amazon Appstore

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

 , ,

atsym ()