LINUX.ORG.RU

Сообщения ados

 

Поиск файла того же имени

Форум — Development

С помощью Path(file).rglob(…) найден файл, надо найти с тем же именем, но немного другим суффиксом. Признаться довольно долго искал решение и всё же получилось такое:

import os

def find_ifo (path):
    name = os.path.splitext(path)[0]
    g = path.parent.glob('*.[iI][fF][oO]')
    return next(x for x in g if os.path.splitext(x)[0] == name)

ИМХО какое-то уродство получилось. Может среди обширного набора инструментов есть что-то попроще?

 , ,

ados
()

Законодательство и костыли

Форум — Talks

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

Хоть нагромождений костылей в СПО всё больше с годами, по ощущениям, тем не менее чувствуется внимание к такой проблеме, и, даже, кто-то вычищает код. Иногда даже сносят довольно полезные вещи при этом.

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

 ,

ados
()

Отдельный раздел для флуда

Форум — Linux-org-ru

Известно что бремя модерирования на ЛОРе вносит определённую деформацию психики. В целях поддержания психологического здоровья модераторского состава предлагаю идею создания специального раздела на форуме с особым набором правил. А именно чтобы не было никаких правил: без запрета на нацпол, мат, оффтоп, оскорбления, анонимный постинг, жж и прочего тупака. Правил нет как для пользователей так и для модератора, т.е. модератор также может под любым надуманным предлогом и без объяснений (внятных) снести хоть все треды в разделе. Соответственно над входом в раздел должны висеть плашки об отказе от ответственности за нанесённый психологический ущерб входящему и за любую ценную информацию оставленную в темах раздела. В общем предлагаю создать раздел куда может сходить модератор и выпустить пар. ИМХО к разделу лучше всего подходит название «песочница».

Вот, правда, как ещё сделать так чтобы в таком разделе модератор мог банить по любому поводу, но так чтобы всех не перебанить? Разрешить постинг забаненым с перечёркнутыми никами?

 , психотерапия

ados
()

Производительность генераторов и операций со списками

Форум — Development

Как можно ещё ускорить выполнение такого скрипта:

#!/usr/bin/env python

import sys, difflib, re, os
from pathlib import Path


def regexp_compile (r):
    return re.compile(r, re.IGNORECASE)

def words_generator (buff):
    length = len(buff)
    start = 0
    while start < length:
        x = buff.find(b'\x00', start)
        yield buff[start:x].decode('utf-8')
        start = x + 9 # 1 byte for \0 + 4 bytes * 2 
        ## 32 bit for word index and 32 bit for word length


class RegexAccumulator:
    def __init__ (self, regexp):
        self.collection = list()
        f = lambda s: re.fullmatch(regexp, s) and s not in self.collection
        self.filter = f

    def accumulate (self, words):
        self.collection += list(filter(self.filter, words))

    def result (self):
        self.collection.reverse()
        return self.collection


class UsualAccumulator:
    def __init__ (self, word):
        self.word = word
        self.list1 = list()
        self.mlist = list()

        w = re.escape(word)
        regex1 = regexp_compile(".*" + w)
        self.regex2 = regexp_compile(w)

        self.rfilter = lambda s: re.match(regex1, s) and s not in self.list1
        self.mfilter = lambda s: s not in self.list1 and s not in self.mlist


    def accumulate (self, words):
        self.list1 += list(filter(self.rfilter, words))
        mlist = difflib.get_close_matches(self.word,
                                          words,
                                          n=400,
                                          cutoff=0.7)

        self.mlist += list(filter(self.mfilter, mlist))

    def result (self):
        result = list()
        list2 = list(filter(lambda s: re.match(self.regex2, s),
                            self.list1))

        if self.word in list2:
            result.append(word)
            list2 = list(filter(lambda s: s != word, list2))

        result += list2
        result += list(filter(lambda s: s not in result,
                              self.list1))
        result += list(filter(lambda s: s not in result,
                              self.mlist))

        result.reverse()
        return result


if __name__ == "__main__":

    word = sys.argv[1]
    if word == "-r" and len(sys.argv) > 2:
        accumulator = RegexAccumulator(sys.argv[2])

    else:
        accumulator = UsualAccumulator(word)


    files = Path(os.environ['STARDICT_DATA_DIR']).rglob("*.[iI][dD][xX]")

    for name in files:
        with open(name, 'rb') as f:
            ## My biggest .idx file ~ 11Mb so ...
            buff = f.read()
        accumulator.accumulate(list(words_generator(buff)))

    for word in accumulator.result():
        print(word)

Скрипт ищет слова в stardict словарях http://stardict-4.sourceforge.net/StarDictFileFormat секция {3}.

Очевидно что бутылочное горлышко в методах accumulate. Ещё может вместо words_generator и метода result у UsualAccumulator можно что-то более производительное приделать.

 ,

ados
()

Картинки в w3m не работают

Форум — Mobile

Захожу через w3m в termux на LOR и картинки не работают. w3m-img поставил.

 , ,

ados
()

Юридический раздел

Форум — Linux-org-ru

ЛОРу уже давно пора бы обзавестись подобным разделом, т.к. уже давно на вполне технические вопросы здесь получают вполне логичные решение в стиле «пиши в прокуратуру», «смотри такие то пункты договора» или «перед работами оформляйте такой-то договор». Сама всеми уважаемая организация GNU активна по большей части именно в гуманитарной сфере.

Да и времена Луговского с его технофашизмом и прочими биореакторами уже давно в прошлом. Humanist live matters короче.

 , ,

ados
()

Настройка IP камеры

Форум — General

Вот «досталась» мне некая EVC-DB-SL20-P/A/C (BV). Хочу настроить запись на microsd и, желательно, поменять настройки подключения по IP. В инструкции такие варианты:

  1. Подключение через браузер IE с какой-то неведомой Active X. Рассматривать не стал, уж извините.
  2. iVMS320 из esocctv.ru. Что под wine, что на винде (правда, свежее WinXP ничего под рукой не нашлось) софтина работает одинаково - подключение и картинка есть, окно настройки падает. Проприетарщина использует Qt.
  3. Очередная проприетарная BitVision для андроида с гугломаркета. Похоже вообще не подключается.

Может быть есть чем свободным обойтись можно?

 ,

ados
()

Задачка про бумажку с паролями

Форум — Security

Вот допустим я отправляюсь куда-то, что там меня ждёт непонятно. Есть у меня список аккаунтов с паролями, которые мне могут понадобиться. Этот список зашифрован и храниться на оборудовании, которому доверяю. С собой могу взять только оборудование, которому я не настолько доверяю чтобы хранить на нём этот список. Связи с надёжным оборудованием нет. Список довольно большой - все пароли запомнить не могу. Вижу 3 выхода:

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

Понятно что никакой способ 100% гарантий безопасности не даёт - интересуют насколько каждый способ ближе к 100%.

 

ados
()

Common lisp, GTK и лапшелогика

Форум — Development

Вот есть код:

(let ((some (trick 'construct)))
  (if (very-bad? some)
      (trick 'good-bye)
      (progn (when (bad? some)
               (setf some
                     (trick 'fix some)))
             (trick 'show some))))

В данный момент код в теле функций и форма с trick - вызов функции с созданием gtk окна, работой в этом окне, закрытием и, уже после, trick возвращает значение.

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

(low-level-init-gtk)
(let ((window (build-...)))
  ;; Здесь создаём объекты и рассовываем лямбды для отрисовки
  ;; и обработки событий
  ...
  
  ;; ииии
  (gtk-main-loop))

Ещё хочу это обернуть в unwind-protect чтобы высвобождать систему звука, например. Тут уже мало того формы с trick перестают быть просто вызовами функций, так вообще всю логику из первого куска кода нужно раздробить и размазать по обработчикам. Без этого только продолжения использовать? Или есть другие практики описания такой логики?

 , ,

ados
()

А кто у нас самый некомпетентный «пятизвёздочник»?

Форум — Talks

И самый мощный генератор тупняка с пятью звёздами наперевес. Думаю, это интересно каждому посетителю ЛОРа.

 

ados
()

Задачка с чайником

Форум — Science & Engineering

Есть обыкновенный чайник с дугообразной ручкой, двумя концами которой та крепится к сосуду. Чайник цельнометаллический за исключением пластика поверх ручки чтобы металл не обжигал. Задача узнать конструкцию ручки - или это пластиковая ручка, к концам которой приделывается два металлических прута для крепления к сосуду или это цельный металлический прут покрытый пластиковым материалом посередине. Деструктивные действия к чайнику применять нельзя. Снять ручку, чтобы померить электропроводимость, нельзя. Рентгеновское излучение недоступно. Металл чайника не магнитится.

 

ados
()

Как укротить проприетарщину?

Форум — Mobile

Или как выйти максимально сухим из воды?

Есть у меня аппарат с lineage os 16.0 на котором практически отсутствует что либо из несвободного ПО. Пока не жалуюсь - батарейка используется экономно, память непонятно чем не захламляется, root спокойно обеспечивается через magisk.

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

 , ,

ados
()

Кетчуп для линуксоида

Форум — Talks

https://i.postimg.cc/Tw6ZQSg9/IMG-20210331-150543.jpg

Кто пробовал? Какие подводные? Написано - произведено в Нижнем Новгороде.

 ,

ados
()

Где спам, alpha?

Форум — Linux-org-ru

 

ados
()

Кто тут жалуется на артрит от дефолтной раскладки в Emacs?

Форум — Talks

Вы на гитаре играть пробовали что-нибудь сложнее кузнечика?

Перемещено leave из desktop

 

ados
()

Загадки со словами

Форум — Games

Игры с ИИ и что-то по-интереснее городов - с ассоциациями, там, антиассоциациями. Возможно обучение ИИ в ходе игры. Существует ли такое?

 

ados
()

Ломануть смартфон

Форум — Mobile

Такая вот ситуация: иду по улице и вижу симпатичную девушку. Хочу познакомиться, но она вся целиком в телефоне. Можно ли каким-либо воздействиям по радиоканалам заставить её телефон обратить на меня её внимание?

Понимаю что тема тянет на статью, но я же не со зла, а всего лишь хочу привнести больше любви в этот мир.

 , ,

ados
()

Определить свободную мощность

Форум — Linux-install

Есть в пекарне БП мощностью X Вт. Хочу поменять видеокарту и новая будет жрать на Y Вт больше. Как узнать потянет ли это БП до покупки новой видеокарты?

 , ,

ados
()

Сдох телефон

Форум — Talks

Honor a8 pro. Со слов хозяина на 3-5 секунд попал в водную среду. Потом его почти сразу зарыли в сахар, потом в рис. Через некоторое время он очухался и ещё полдня, булькая динамиками, работал, даже звонил. После отрубился и уже какой день никаких признаков жизни.

Помогите понять вывод из строя каких именно частей послужил причиной смерти аппарата?

Перемещено Zhbert из mobile

 

ados
()

Почему в виде базы «отечественного» по нельзя было выбрать BSD вместо Linux?

Форум — General

Ведь у BSD практически нет никакого GPL и всё можно спокойно закрывать. Вот чем BSD для импортозамещения хуже GNU/Linux?

 , ,

ados
()

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