LINUX.ORG.RU

Сообщения 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, но столкнулся с такой вот проблемой.

Код:

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?

 , , uvloop

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

Вещества и их влияние на интеллектуальную деятельность

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

  • Пепси - немного активирует, кратковременно улучшает внимание, но зато в целом ухудшает состояние организма. Нарушает сон, делает изможденныным. И вызывает довольно некислое привыкание.
  • Энергетические напитки - эффект тот же, что у Пепси, только сильнее. Насчет привыкания не знаю, много не пил.
  • Черный чай - эффект схожий с Пепси, только слабее. Если много пить во второй половине дня, то депривация сна обеспечена.
  • Чаи на травах - помогают заснуть, но если много выпить, то обычно отшибают внимание даже на следующий день. Тоже самое касается снотворных таблеток на травах типа Седафитона.
  • Глицин - отличная штука, успокаивает, помогает заснуть, на следующий день все когнитивные функции улучшаются.
  • Пирацетам - не заметил никаких положительных и отрицательных влияний. Видно доза была маленькая.
  • Валерьянка - плохо влияет на внимание, седативный эффект незначительный.
  • Алкоголь - влияние на когнитивные функции резко отрицательное, как в краткосрочный так и в долгосрочный период.

В общем, для себя сделал вывод, что лучше всего полностью исключить из рациона Пепси, энергетки и алкоголь. Ограничить черный чай. Глицин по мере необходимости в случае появления астенических симптомов. Использовать валерьянку, мяту и лекарственные средства на их основе нецелесообразно.

Интересно почитать опыт других людей тоже.

 

provaton
()

Как правильно оценить фототехнику для продажи?

Такая ситуация. Есть тушка Nikon D600, пробег в районе 5000 кадров, юзалась около 9 месяцев, состояние идеальное. Сейчас новая стоит 13500-14000 гривен. Хочу продать. Какую цену поставить чтоб не продешевить и чтоб купили где-то в течении месяца? Например, за 12000 реально продать будет?

 ,

provaton
()

В systemd предложено включить средства для замены консоли, agetty и /bin/login

Копипаста с опеннета:

Дэвид Херрманн (David Herrmann), автор проекта kmscon (реализация консоли в пространстве пользователя) опубликовал серию патчей, позволяющих обеспечить работу окружения на базе systemd в системах с ядром, собранным без поддержки виртуальных терминалов (CONFIG_VT=n). Из дальнейших планов отмечена интеграция в системный менеджер systemd компонентов с реализацией системной консоли, загрузочной заставки и приглашения входа в систему.

не Ъ - http://www.opennet.ru/opennews/art.shtml?num=38543

Нужно или не нужно? Дискас.

 

provaton
()

Дауншифтинг для айтишника

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

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

Еще поделитесь, пожалуйста, инфой о прикольных местах с красивой природой, но с относительно дешевой землей и без толп жлоботуристов на квадроциклах, желательно на Украине.

provaton
()

OwnCloud - убийца Google Docs!

http://blog.karlitschek.de/2013/10/welcome-owncloud-documents.html

Разработчики owncloud допиливают collaborative editing. Для желающих опробовать уже доступен бета-релиз.

Как по мне - замечательная новость.

 ,

provaton
()

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