LINUX.ORG.RU

Сообщения monk

 

LLVM. Зачем он вообще нужен?

Форум — Development

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

Я не понимаю, почему не использовать просто компиляцию через Си или Си++. Оптимизации сделает компилятор Си. Семантика у LLVM всё равно совпадает с Си, по объёму кода компилятора тоже выигрыша практически нет. Зато если использовать Си, можно использовать любой из компиляторов Си и компилировать для платформ, для которых нет реализации LLVM.

 ,

monk
()

Создание экосистемы свободного ПО для процессоров «Эльбрус»

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

В ТАСС состоится пресс-конференция, посвященная развитию экосистемы свободно-распространяемого ПО для платформы «Эльбрус».

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

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

 

monk
()

Есть ли дистрибутив полноценно реализующий свободы GPL?

Форум — Talks

GPL предоставляет получателям компьютерных программ следующие права, или «свободы»:

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

Есть ли хоть один дистрибутив Linux (или другой ОС) в котором все эти свободы действительно бы были, а не только декларировались?

Первая и третья, понятно, есть везде. А вот с остальными двумя всё сложнее.

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

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

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

То есть свобода как бы есть, но её реализация напоминает право быть избранным.

Действительную реализацию этих свобод я видел в Emacs (код на Emacs lisp доступен сразу, изменения часто можно сделать просто отдельным файлом, который перекроет нужную функцию), в программах, являющимися локальными сайтами (типа webmin) и в 1С (все типовые программы поставляются в исходниках в предположении, что конечный пользователь будет их допиливать под себя).

Есть ли какой-нибудь дистрибутив, в котором пакеты были бы представлены текущими исходниками + исходниками от поставщика. И при обновлении исходников от поставщика автоматически обновлялись бы текущие исходники как это сделано в git или kdiff3 (а при невозможности автоматического объединения, запускался бы тот самый kdiff3) и автоматически собиралась новая версия бинарника?

В Debian даже файлы в /etc при обновлении не объединяются:

Configuration file `/etc/bash.bashrc'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** bash.bashrc (Y/I/N/O/D/Z) [default=N] ? 

 , ,

monk
()

Как правильно по-русски?

Форум — Talks

Если речь идёт о женщине, как правильно:

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

или

Молодая красивая инженер устанавливает линукс на компьютер.

?

 

monk
()

Язык программирования 1 теперь работает на Эльбрусе

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

Также реализовано формирование имён функций доступа к полям структуры по правилам русского языка.

$ uname -a
Linux alatyr 5.4.0-3.19-e1cp #1 Wed Mar 9 16:53:28 MSK 2022 e2k E1C+ MBE1C-PC GNU/Linux
$ cat тест.1
#!1

структура человек
  ; имя
    отчество #:изменяемое
  #:суффикс -человека

иван = человек "Иван" "Иванович"
отчество-человека иван := "Петрович"
отчество-человека иван
$ racket/bin/racket тест.1
"Петрович"

Пока сборка есть только для Эльбрус Линукс на Эльбрус-1С+ (система команд e2k-8c). Для остальных можно воспользоваться скриптом для сборки.

Язык 1 - функциональный язык программирования на основе русского языка. Синтаксис унаследован от Haskell, семантика от Racket.

Предыдущее обсуждение на ЛОРе

>>> Описание языка

 , , , ,

monk
()

Apache отдаёт не все файлы

Форум — Admin

Есть Debian GNU/Linux 11. На нём есть apache2 2.4.54-1~deb11u1

Не отдаёт некоторые файлы. Причём только браузеру. Через GET в командной строке отдаёт.

И отдаёт или нет зависит от содержимого файла. Копирую файл (html), который не отдаёт, копию тоже не отдаёт. В копии удаляю хвост файла начинает отдавать. Дописываю в конец «aaa», перестаёт отдавать. Удаляю последнюю «a», отдаёт. Меняю в конце «aa» на «ab», перестаёт отдавать.

У кого-то есть идеи?

 ,

monk
()

COMEFROM считается вредным?

Форум — Development

Когда Дейкстра написал своё письмо «Оператор GOTO считается вредным», в качестве шутки придумали ещё более вредный оператор COMEFROM (и ассемблерную инструкцию CMFRM). Он позволял указать метку и выполнять дополнительный код всегда, когда выполнение проходило через эту метку.

Но вот смотрю я на нынешние методологии программирования и вижу огромный пласт COMEFROM в SQL в виде CREATE TRIGGER, подписку на события в других языках (паттерн Наблюдатель). Многомерный COMEFROM в HTML через CSS.

Неужели это считается удобным для понимания и отладки?

 

monk
()

Зачем в Haskell IO?

Форум — Development

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

main = interact realMain

realMain :: String -> String
realMain = unlines . f . lines
  where
    f x = "Введите своё имя: ":g x
    g (имя:числа) = ["Привет, " ++ имя, "Вводите числа, q для выхода"] ++ корни числа
    корни ("q":_) = []
    корни (x:xs) = (show . sqrt) (read x :: Double):корни xs

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

Если брать произвольное взаимодействие с окружающим миром, то достаточно main :: [inEvent] -> [outEvent].

Зачем нужен «магический» тип IO, делящий Haskell на фактически два разных языка?

 ,

monk
()

Осторожно, вредоносный код в библиотеках на GitHub!

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

node-ipc удаляет файлы, если видит IP адрес в заданном списке.

Вот сам вредоносный код: https://github.com/RIAEvangelist/node-ipc/blob/847047cf7f81ab08352038b2204f0e7633449580/dao/ssl-geospec.js

Вот менее вредоносный (только грузит процессор, если видит в js таймзону из списка): https://github.com/medikoo/es5-ext/commit/3beace4b3d00f02da61b72dd328f90cf069d46de попадает в https://www.npmjs.com/package/es5-ext

Соответственно, если обновляетесь через npm или подобное, то имейте в виду.

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

 ,

monk
()

Microsoft приостанавливает продажи в России

Новости — Проприетарное ПО
Группа Проприетарное ПО

Microsoft приостанавливает продажи товаров и предоставление услуг в России.

Американская компания Microsoft приняла решение о приостановке продажи товаров и предоставления услуг в России на фоне ситуации вокруг Украины. Об этом говорится в заявлении, опубликованном в пятницу на сайте компании.

«Сегодня мы объявляем, что приостанавливаем все новые продажи продуктов и услуг Microsoft в России», - отметили в компании.

Запись в блоге Microsoft

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

 ,

monk
()

Racket быстрее для многопоточной работы, чем Go

Форум — Development

Микрозамер скорости сервера эха: https://racket.discourse.group/t/racket-matching-or-exceeding-golang-for-echo-server-performance/660

Результаты:

Racket: ~114,584 сообщений/сек
Go (default): ~85,650 сообщений/сек
Go (GOMAXPROCS=1): ~108,495 сообщений/сек

Код для Racket (ссылка) использует потоки Racket (thread), код для Go (ссылка) использует горутины.

 , ,

monk
()

Почему тесты не пишут вместе с кодом?

Форум — Development

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

В результате при изменении задачи работаешь в двух файлах почти одновременно. Не проще воткнуть методы тестирования рядом с кодом?

 ,

monk
()

Зависимые типы, жидкие типы. Что лучше?

Форум — Development

Пытаюсь понять тенденции в современных статических языках. Обычного Haskell явно не хватает. Что ожидать на замену?

 , liquid haskell,

monk
()

1С: Библиотека стандартных подсистем, редакция 3.1

Форум — Talks

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

Входящие в БСП подсистемы охватывают такие области, как:

  • Администрирование пользователей и прав доступа;
  • Средства администрирования и обслуживания (установка обновлений, резервное копирование, дополнительные отчеты и обработки, оценка производительности и др.);
  • Сервисные подсистемы (история изменений объектов, заметки и напоминания, печать, полнотекстовый поиск, присоединенные файлы, электронная подпись и др.);
  • Технологические механизмы и программные интерфейсы (процедуры и функции общего назначения, обновление версии ИБ, работа в модели сервиса и др.);
  • Нормативно-справочная информация и классификаторы (адресный классификатор, банки, валюты и др.);
  • Интеграция с другими программами и системами (обмен данными, работа с почтовыми сообщениями, отправка SMS, рассылка отчетов и др.);
  • Прикладные подсистемы и рабочие места пользователей (анкетирование, бизнес-процессы и задачи, взаимодействия, варианты отчетов и др.).

Всего в БСП входит более 60 подсистем.

Исходный код библиотеки распространяется по лицензии Attribution 4.0 International (CC BY 4.0). Текст лицензии доступен по ссылке: https://creativecommons.org/licenses/by/4.0/legalcode  Эта лицензия позволяет вам использовать, распространять, перерабатывать, исправлять и развивать библиотеку в любых, в том числе, в коммерческих целях, при обязательном условии указания авторства библиотеки в вашем программном продукте.

Подробности

Перемещено Shaman007 из opensource

 

monk
()

С++ неожиданный результат выдаёт.

Форум — Development

Вот весь код программы:

#include <iostream>
#include <fstream>
#include <string>

bool exists(std::string path)
{
        std::ifstream f(path);
        std::cout << path << ": " << f.good() << std::endl;
        return f.good();
}

int main()
{
        std::ifstream f("settings.txt");
        std::string name, path;
        std::getline(f, name);
        std::getline(f, path);
        std::cout << "path = " << path << std::endl;
        std::cout << "path/run = " << (path + "run") << std::endl;
        std::string pathrun = path + "run";
        std::cout << "prun = " << pathrun << std::endl;
        exists(pathrun);
        return 0;
}

А вот её вывод:

path = /mnt/
runh/run = /mnt/
runn = /mnt/
run: 0

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

 

monk
()

Новый язык программирования для русскоговорящих

Форум — Development

Синтаксис от Хаскеля, семантика от Ракета.

факториал(сч) =
  если (сч == 1)
    1
    сч * факториал (сч - 1)

фибоначчи(сч) =
  если (сч < 3)
       1
       пусть рекурсия (н-1 1; н 2; тек-сч 3)
         если (сч == тек-сч) н $ рекурсия н (н + н-1) $ тек-сч + 1

Будет ещё конструкция надо-быстро с семантикой от Си (и использованием gcc).

Исходники: https://github.com/Kalimehtar/russian-lang

Пакет для Ракета: https://pkgd.racket-lang.org/pkgn/package/russian-lang

Документация: https://docs.racket-lang.org/russian-lang/index.html

 , , ,

monk
()

Как сделать cdr в std::forward_list?

Форум — Development

Хотел сделать что-то вроде библиотечки по работе со списками, аналогичной лисповым для c++, и обнаружил, что в std::forward_list есть front(), но нет функции для получения хвоста списка, аналогичной лисповому cdr.

Его можно как-то туда добавить или только делать свою реализацию списка с нуля?

 ,

monk
()

Полиция переходит на Astra Linux

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

МВД России закупило у системного интегратора Tegrus (входит в группу Merlion) 31 тысячу лицензий ОС Astra Linux.

Это крупнейшая единовременная закупка ОС Astra Linux. Ранее ее уже закупали силовые органы: в ходе нескольких закупок в совокупности 100 тысяч лицензий приобрело Минобороны, 50 тысяч — Росгвардия.

Исполнительный директор ассоциации «Отечественный софт» Ренат Лашин называет сопоставимыми по масштабу проекты по внедрению системы единого государственного реестра (ЕГР) ЗАГС, медицинских и образовательных систем в регионах. ЕГР ЗАГС работает на ОС «Альт», также она обслуживает более 70 тысяч рабочих мест в медицинских и 60 тысяч в образовательных госструктурах — уточняет Алексей Смирнов, гендиректор компании «Базальт СПО», которая разрабатывает ОС «Альт».

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

 , , , ,

monk
()

Какой кусок исходного кода на Си Вам кажется более красивым (см. подробности)

Голосования — Голосования(не подтверждено)

первый вариант:

a[0] = get_data(0);
a[1] = get_data(1);
a[2] = get_data(2);
a[3] = get_data_3();
a[4] = get_data(4);
a[5] = get_data_5();

второй вариант:

for(int i = 0; i < sizeof(a)/sizeof(a[0]); i++) {
  switch(i) {
    case 3: a[i] = get_data_3(); break;
    case 5: a[i] = get_data_5(); break;
    default: a[i] = get_data(i); 
  }
}

 , ,

monk
()

Как узнать, можно ли использовать код?

Форум — Development

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

Как узнать, можно ли его использовать, или будут проблемы? Вот, например, Есть репо под лицензией MIT.

Какие риски использования кода из такого источника в opensource проекте?

 ,

monk
()

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