LINUX.ORG.RU

Сообщения provaton

 

Опубликован RFC по добавлению кода на Rust в Git core.

 ,

https://lore.kernel.org/git/20250904-b4-pks-rust-breaking-change-v1-0-3af1d25e0be9@pks.im/

Пока в качестве proof of concept на rust был переписан один небольшой модуль varint.c. Основная цель - наладить систему сборки и принципы interop между кодом на C и кодом на Rust. Предполагается, что с версии Git 3.0 rust будет необходим для его сборки.

provaton
()

Релиз Diesel 2.3.0

 diesel, , ,

Группа Разработка

Diesel — это безопасный, высокопроизводительный и расширяемый ORM и генератор SQL-запросов для языка Rust. Diesel гарантирует корректность генерируемых SQL-запросов и совместимость между типами, используемыми в коде приложения, и типами в БД. Код, который сгенерировал бы падающий запрос, попросту не скомпилируется. При этом, Diesel является zero-cost абстракцией: производительность кода, использующего Diesel такая же, как производительность кода на C, напрямую вызывающего SQL-запросы.

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

>>> Подробности (diesel.rs)

provaton
()

Выпуск Xonotic 0.8.5

 ,

Выпуск Xonotic 0.8.5
Группа Игры

Выпущен новый релиз шутера от первого лица Xonotic 0.8.5. Прошлая версия (0.8.2) была выпущена 5 лет назад, но несмотря на отсутствие релизов все эти года, разработка шла очень активно и накопилось множество изменений.

Xonotic создан на движке Darkplaces, который является глубоко переработанным форком движка Quake1. Код игры и исходники всех используемых 3D-моделей полностью открыты под лицензией GPLv3.

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

>>> Подробности (xonotic.org)

provaton
()

Хаскеллисты проникаются идеями метапрога

 , ,

Я джва года ждал: https://jaspervdj.be/posts/2020-03-12-visual-arrow-syntax.html

Для Ъ, набор хаков, позволяющих писать на хаскелле в стиле:

example03 =
  (📈) (+1)━┳━►(+1)━┓
  (📈)      (+1)━━━━╆━►add━┓
  (📈)              add────┶━►add
 where
  add = uncurry (+)
provaton
()

Драма tokio vs async-std

 

Что-то странное происходит. В одном из устаревших проектов для асинхронного ИО в rust romio появился pull request, который добавил в ридми проекта упоминание tokio как более современной альтернативы поддерживающей новый синтаксис async/await (до этого там было лишь упоминание async-std). Спустя некоторое время, автор pull request’а, и все, кто поставил ему палец вверх оказались в бане. Спустя некоторое время реквест таки замержили, и автор репозитория написал пространный коммент, которые среди прочего упоминает о конфликте между разработчиками tokio и async-std.

Pull request https://github.com/withoutboats/romio/pull/106 Коммент - https://github.com/withoutboats/romio/pull/106#issuecomment-548947560

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

PS: «My code is written for people of better character than you, go away.» - фонд золотых цитат прямо)

provaton
()

Как сделать годную тему подсветки синтаксиса самому?

 

Такое дело. Хочу хорошую цветовую тему для емакса. Перебрал кучу готовых, но все не по душе мне. Остаётся вариант делать самому. Но как? Простым экспериментированием не получается - слишком уж много вариантов нужно перебрать, и не очевидно сразу какой цвет с каким нормально смотрится, а какой нет. Нужен научный подход, в общем. Стал гуглить, нашёл только туториал на w3schools https://www.w3schools.com/colors/default.asp

Там есть пять подходов для определения базовых цветов темы (монохромный, аналоги, противоположные, triadic, compound). Но совершенно не раскрывается какой из них правильный, а какой нет. Хотя казалось бы, блин, методы аналогичных цветов и противоположных в корне отличаются!

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

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

Перемещено shell-script из talks

provaton
()

Пенсия DIY

 ,

Насоветуйте мне, пожалуйста. Такое вот дело.

Мне сейчас около 30. Хочу в 40-45 лет на пенсию. Собственно государственная пенсия у меня независимо от возраста, в котором я на нее выйду, будет около нуля (прошу даже не обсуждать этот вопрос), поэтому рассчитывать можно только на свои скромные силы. Думаю, можно откладывать где-то 50-70% ЗП. Вопрос, куда можно инвестировать отложенное, чтоб оно приносило пассивный доход в размере хотя бы 50% ЗП... Пока есть только идея покупать квартиры и сдавать, но надо ведь диверсифицировать пакет как-то. Что еще можно? Идти на биржу торговать биткойном?

Прошу накидайте идей по теме.

provaton
()

Переключение между многими раскладками клавиатуры в X11

 ,

По некоторым причинам мне нужно достаточно много раскладок (в данный момент 5). При этом, двумя из них я пользуюсь постоянно (англ и рус), остальными реже. Если добавить их все стандартным для X11 способом, то хоткей переключения будет переключать через все раскладки (1-2-3-4-5-1), что достаточно неудобно, так как 3-4-5 нужны редко.

В OS X есть такая фича, что однократное нажатие хоткея переключения переключает между двумя последними раскладками, а продолжительное нажатие переключает на третью и дальше (и при этом на экране показывается список всех раскладок).

Что можно сделать в линуксе? Ясно, что можно написать скрипт, который будет переконфигурировать набор раскладок, и повесить его на хоткей, но может есть другие решения?

provaton
()

Работа на rust - реально ли?

 

Я питонщик с где-то десятилетним опытом. Вроде в питоне все классно, есть работа, норм зп, да и эйчары регулярно сыплют в инбоксы заманчивыми предложениями. Но что-то надоел он мне. Точнее, динамическая типизация надоела. Где-то полгода пишу личные проекты всякие на rust'е, и могу с уверенностью сказать, что оно мне нравится с каждым днем все больше и больше.

Все больше закрадываются мысли что хочу кодить на расте за еду, а не только лишь ради фана. Но что-то на рынке как-то он не сильно нужен. На upwork'е работ нет от слова вообще. Хотя мелькают порой новости о success stories во всяких корпорациях, но реальные вакансии на глаза не попадаются.

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

provaton
()

«нечеткий» крон

 

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

provaton
()

Разное поведение transport.get_extra_info в дефолтном asyncio и uvloop.

 , , uvloop

Хочу вот перевести свою поделку на uvloop, но столкнулся с такой вот проблемой.

Код:

import asyncio

import uvloop


async def test(loop):
    transport, protocol = await loop.create_datagram_endpoint(
        asyncio.DatagramProtocol, remote_addr=('45.76.92.79', 26000))
    print(type(transport), transport.get_extra_info('sockname'))

loop = asyncio.new_event_loop()
loop.run_until_complete(test(loop))
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
loop = asyncio.new_event_loop()
loop.run_until_complete(test(loop))

Вывод:

<class 'asyncio.selector_events._SelectorDatagramTransport'> ('45.76.92.79', 38734)
<class 'uvloop.loop.UDPTransport'> ('0.0.0.0', 50589)

Почитав сорцы uvloop'а я заметил, что если не указан локальный адрес в аргументах у create_datagram_endpoint, тогда uvloop вызывает socket.bind('0.0.0.0'). Но мне как бы очень нужен локальный айпи, и очень не хочется указывать его в конфиге.

Собственно вопроса два - зачем вызывать бинд на 0.0.0.0, и можно ли как-то автоматически задетектить локальный айпи адрес перед вызовом create_datagram_endpoint?

provaton
()

Вышел Xonotic 0.8.2

 ,

Группа Игры

Вышел в свет новый релиз игры с открытым исходным кодом Xonotic — шутера от первого лица, ориентированного на многопользовательскую игру. Xonotic является форком игры Nexuiz, и основан на движке Darkplaces — глубоко переработанном форке движка Quake I.

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

>>> Подробности (xonotic.org)

provaton
()

SSL и неSSL на одном веб-сервере.

 , ,

Подскажите, пожалуйста, как по-человечески решить следующую проблему: один веб-сервер (в данном случае nginx) хостит несколько сайтов на разных доменах. Некоторые домены имеют ssl-сертификат, и их нужно хостить на портах 80 и 443, некоторые не имеют, и их нужно хостить только на 80. Но если все сконфигурировать в лоб, то nginx отвечает на https-запрос по всем доменам, даже тем, которые не имеют ssl-сертификата. Ответ получается неприятным - используется сертификат от другого домена и вылазит предупреждение в броузере. Я понимаю, почему так происходит, но не понимаю что с этим делать. Поэтому, два вопроса.

1. Как сконфигурировать nginx, чтоб он просто обрывал коннект при запросе на 443 для домена, не имеющего сертификат?

2. Если ли какая-то возможность выдать человеческий ответ при запросе на 443 и отсутствии сертификата, например редирект на порт 80? Я понимаю, что при запросе по https клиент ожидает зашифрованного ответа, а чтоб зашифровать нужен сертификат, но может там есть какие-то неизвестные воркэраунды в протоколе?

3. Что-то еще можете посоветовать?

provaton
()

XML -> JSON

 ,

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

На XML такая задача решается элементарно, например как-то так:

<root>
  <container title="foo">
    <container title="baz">
      <element title="e1" />
      <element title="e2" />
    </container>
    <element title="e3" />
  </container>
</root>

Но есть определенные причины хотеть не XML, а JSON. А как сконвертировать подобное дерево в JSON? Я вот предпринял две попытки и получилась громоздкая хрень:

{
    "root": [
        {
            "type": "container",
            "title": "foo",
            "elements": [
                {
                    "type": "container",
                    "title": "baz",
                    "elements": [
                        {
                            "type": "element",
                            "title": "e1"
                        },
                        {
                            "type": "element",
                            "title": "e2"
                        }
                    ]
                },
                {
                    "type": "element",
                    "title": "e3"
                }
            ]
        }
    ]
}
{
    "root": [
        {
            "container": {
                "title": "foo",
                "elements": [
                    {
                        "container": {
                            "title": "baz",
                            "elements": [
                                {
                                    "element": {
                                        "title": "e1"
                                    }
                                },
                                {
                                    "element": {
                                        "title": "e2"
                                    }
                                }
                            ]
                        }
                    },
                    {
                        "element": {
                            "title": "e3"
                        }
                    }
                ]
            }
        }
    ]
}

Обилие скобочек явно не способствует человекоредактируемости. Есть идеи как-то улучшить JSONовский формат?

provaton
()

Что делают хаскеллисты если нужно внезапно выполнить I/O?

 

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

def func(args):
    a = subfunc1(args)
    b = subfunc2(a)
    return subfunc3(b)
func args = subfunc3 b where
     b = subfunc2(a)
     a = subfunc1(args)

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

Но тут ВНЕЗАПНО я понял, что хотел бы логгировать все случаи, когда subfunc1 выдал какой-то определенный результат. В случае с императивным кодом все просто

def func(args):
    a = subfunc(args)
    if some_condition(a):
        logger.warning('Some shit happened')
    ....

В хаскелле для такого надо фактически все с нуля переписывать через какую-то монаду.

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

provaton
()

Жуйк все

 , ,

Сегодня просыпаюсь, а на уютном жуйке появилась карма! Как теперь жить? Куда теперь изливать свои ничего не стоящие мысли? Ведь теперь мне будут ставить кучу минусов, что опустит мою и без того невысокую самооценку и загонит в еще более глубокую депрессию. Осталось только обязать всех настоящими именами подписываться...

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

provaton
()

Забрать диплом из ВУЗа

 , ,

Года 3 назад закончил КПИ, но диплом до сих пор и не забрал. Реально стремно туда идти, там какие-то советские суровые тетушки которые на тебя свысока смотрят, заставляют какие-то странные бумаги подписывать, по куче кабинетов бегать. В общем, 3 года уже собираюсь сходить, и никак не решусь. Боюсь теперь, что еще спросят, почему так долго не приходил.

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

provaton
()

Релизнулась freebsd 10.0

 ,

«„„Спустя два года с момента выхода ветки FreeBSD 9 представлен релиз FreeBSD 10.0, ставший одним из самых значительных релизов за историю существования проекта. Новая ветка примечательна переходом на использование по умолчанию компилятора Clang, интеграцией гипервизора BHyVe, заменой DNS-сервера BIND на Unbound, новая реализацией протокола CARP, интеграцией подсистемы FUSE, переходом по умолчанию на пакетный менеджер pkg. Установочные сборки, способные работать в Live-режиме, доступны в вариантах Bootonly (200 Мб), DVD (2.4 Гб), CD (630 Мб) и Memstick (680 Мб) для платформ amd64, i386, powerpc64, sparc64 и ia64.““»

http://www.opennet.ru/opennews/art.shtml?num=38886

Жива, курилка. И они даже осилили clang. Интересно, это первый релиз современной юникс-подобной ОС без gcc?

provaton
()

Никто не использует Python 3

 ,

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

http://www.opennet.ru/opennews/art.shtml?num=38761

Алекс Гейнор (Alex Gaynor), входящий в совет директоров организации Python Software Foundation, выразил опасение, что после 5 лет существования ветка Python 3 до сих пор не получила должного распространения. Первый стабильный выпуск Python 3.0 был опубликован ещё в декабре 2008 года, но с тех пор интенсивность перевода проектов на Python 3 оставляет желать лучшего.

Например, в каталоге Python Package Index с Python 3 связано всего 2% загрузок пакетов. Более того, почти не создано кода, работающего только с Python 3. Такие проекты как Django, добавившие поддержку Python 3, продолжают вести первичную разработку и тестирование с использованием Python 2, попутно проверяя работоспособность в Python 3 через средства непрерывной интеграции. Ни одна опрошенная крупная компания, развивающая проекты на языке Python, не использует специфичный для Python 3 код и не планирует миграцию кодовой базы на Python 3.

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

В качестве второй причины называется отсутствие у разработчиков интереса к ветке Python 3, которая не содержала кардинальных прорывных улучшений, которые могли бы подтолкнуть людей к внедрению новой ветки. В частности, Python 3 не сдвинулся вперёд в таких востребованных областях, как уход от глобальной блокировки (GIL, Global Interpreter Lock) и заметное повышение производительности. Вместо этого в Python 3 был расширен стандартный набор библиотек и проведена чистка проблемных мест, которые опытные разработчики уже научились обходить по привычке. В итоге, 99% разработчиков не используют новшества Python 3 и прекрасно обходятся без них.

В свою очередь, недостаточный объем внедрений рабочих решений на базе Python 3 приводит к проблемам с полноценным тестированием добавляемых новшеств в реальных проектах, что сказывается на ухудшении качества кодовой базы Python 3.x. В качестве одного из выходов из сложившегося тупика предлагается выпустить ветку Python 2.8, в которую бэкпортировать все новшества из Python 3, в том числе объявить устаревшими возможности, для которых нельзя обеспечить обратную совместимость (например, выводить предупреждение при использовании str + unicode), что подтолкнёт разработчиков к адаптации новых возможностей.

provaton
()

Релиз системы бухгалтерского учета GnuCash 2.6

 ,

Группа Open Source

Анонсирован новый релиз системы бухгалтерского учета GnuCash 2.6. Из изменений можно выделить следующие:

  • Улучшена система отчетов:
    • Для построения графиков теперь используется jqplot.
    • Переработана система управления отчетами.
    • Добавлена возможность экспорта отчета в PDF.
  • Добавлена возможность привязки к транзакции внешнего файла или адреса URL (например, банковской выписки или чека из магазина).
  • Добавлена возможность пометки счетов цветами.
  • Добавлена опция для автоматического сохранения данных при выходе из программы.
  • Добавлена возможность открытия заблокированного файла в режиме «только чтение». Таким образом, появилась возможность просмотра одной базы данных одновременно несколькими пользователями.
  • Добавлена возможность сохранять настройки фильтрации транзакций.
  • Улучшен модуль для предпринимателей.
  • Для хранения настроек теперь используется GSettings (ранее использовался GConf).
  • Лицензия была изменена с GPLv2 only на GPLv2 or later.

>>> Подробности (gnucash.org)

provaton
()

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