• Как сделать текст в консоли ссылкой (php)?

    @mithraen
    При выводе информацию в консоль нет способа указать, что данный текст -- ссылка.

    Однако уже в настройках самого терминала (например в rxvt) может быть возможность указать, что текст соответствующий какому-то шаблону является ссылкой.
    Ответ написан
    Комментировать
  • Raspberry pi видео или картинка после загрузки?

    @mithraen
    В линуксе самом по себе нет "элементов управления рабочего стола". В иксах даже "рабочего стола нет". Все эти элементы создаются и показываются каким-либо WM (Window Manager) или DE (Desktop Environment). Такими как Gnome, KDE, LXDE, ...

    Вам нужно, чтобы после запуска иксов никакие DE не запускались, а запускалось только отображение картинки.

    Для этого вам нужно разместить в $HOME шелл-скрипт с именем ".xinitrc", и в нем запускать приложение, которое будет отображать на экране то, что вам надо.

    Команда "startx" запускает иксы, и выполняет этот скрипт. Когда скрипт завершится -- завершатся и иксы.

    Например, вы можете воспользоваться утилитой feh, и сделать этот скрипт таким:

    #!/bin/sh
    feh -Z -F background.jpg
    Ответ написан
    4 комментария
  • Systemd service | Как обновлять файл демона, без необходимости останавливать процесс?

    @mithraen
    В Linux, если в файл нельзя писать, его обычно можно переименовать и даже удалить. А уже на его место записать что угодно.

    Запишите свое обновленное приложение под именем /home/user/app/app.new и выполните команды:

    mv /home/user/app/app /home/user/app/app.old
    mv /home/user/app/app.new /home/user/app/app
    Ответ написан
    1 комментарий
  • Как лучше создать глобальную переменную окружения в linux?

    @mithraen
    В Linux нет понятия "глобальная переменная окружения". Дочерние процессы наследуют окружение родительского.

    Вариант с /etc/environment ближе всего к тому, что можно было бы назвать "глобальной переменной окружения" -- эти переменные устанавливаются при логине.

    Для конкретного пользователя -- можно использовать ~/.profile (выполняется код оттуда выполняется login shell).

    Пожалуйста, уточните задачу, ибо создание глобальных переменных окружения (т. е. видимых всеми процессами и пользователями) да еще и из установочного скрипта необычное решение, и возможно изначальную задачу правильнее решать другими методами.
    Ответ написан
  • Сколько параллельных линий имеет SIP аккаунт провайдера?

    @mithraen
    100% утилизация процессора на сервере вообще это зло. Особенно для realtime задач (к коим относится и IP-телефония).

    С факсами — согласен, тут все уже зависит от задач. Когда делал крупные системы для офисов, факсы обслуживались отдельно (вплоть до подключения к отдельным шлюзам, которые напрямую связывались с оператором).

    Но более 900 одновременных соединений в 1 сервере я успешно делал. Жалоб на качество связи при этом не было.

    С тем что все зависит от конкретных задач и требуемых сервисов — опять же согласен.

    К счастью телефония прекрасно кластеризируется.

    Конкретно в исходной задаче решение очевидно — зажать G.729 как требуемый кодек для всех peer'ов (потому как все транки обычно умеют его, но не все умеют G.711) — тем самым избавиться от транскодинга. Думаю даже transfer работать под такой нагрузкой будет, хотя надо проверять.

    Если понадобится запись переговоров (а она наверняка в call-центре понадобится), вот там будет засада — ибо 400 потоков записи на диск убьют дисковую подсистему напрочь. Так что писать придется на tmpfs, а потом переносить одним потоком на диски. Кроме того писать придется прямо сырой G.729, а чем и где его потом перекодировать в пригодный для прослушивания формат — отдельная песня.

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

    @mithraen
    Не слушайте теоретиков. 400 одновременных линий на астере не проблема, но только если нет transcoding, и обработки голосового потока на стороне самого астериска.

    Т.е. если опции для управления переадресацией у Dial убрать, никакого inband dtmf (но его, к счастью, и так обычно никто в трезвом уме не использует), и идентичный список кодеков для абонентских устройств и аплинка — работать оно будет без проблем.

    Но вот с сетевыми картами могут быть грабли, надо тестировать, и в целом решение по производительности тестировать, конечно, следует, перед сдачей в эксплуатацию.

    www.voip-info.org/wiki/view/Asterisk+dimensioning — почитайте это. Тысячи одновременных соединений для астериска на современном серверном железе уже не проблема.

    И стоит помнить, что между major versions у астериска были существенные улучшения в производительности.
    Ответ написан
  • Нахождение уязвимости — преступление?

    @mithraen
    Чисто юридически — могут. В реальности зависит от адекватности конкретных людей.
    Ответ написан
    Комментировать
  • В поддержке ukr.net просят «Переслать оригинал письма». Туплю я, или они?

    @mithraen
    При обычной пересылке (в теле письма) не сохраняются заголовки письма — техническая информация. В них обычно содержится много ценной информации, например IP-адреса сервера, от которого ваш почтовый сервер получил письмо.

    Если ваш клиент gmail — при просмотре письма в правом верхнем углу кнопка «ответить» со со стрелочкой. Нажав на стрелочку увидете меню, в нем воспользуйтесь пунктом «получить оригинал», сохраните его как текстовый файл, и перешлите это аттачем.
    Ответ написан
    5 комментариев
  • Насколько реальна прослушка разговоров Skype и перехват чата Skype?

    @mithraen
    Skype отказался от p2p, пруф: arstechnica.com/business/2012/05/skype-replaces-p2p-supernodes-with-linux-boxes-hosted-by-microsoft/.

    Так что голос весь ходит через их сервера, где они могут делать что хотят. Делают ли прямо сейчас никто не знает.
    Ответ написан
    3 комментария
  • Git сообщает что файлы были изменены даже после git reset --hard

    @mithraen
    Посмотрите на время последней модификации файлов — как оно выглядит на сервере, и как на «смонтированной папке».
    Ответ написан
  • Как отфильтровать диалплан, чтобы можно было увидеть все строки по экстеншену?

    @mithraen
    dialplan show | grep -C2 mynumber

    если же у mynumber может быть произвольное количество строк, а не 2 — проще написать скриптик на perl.
    Ответ написан
  • Возможна ли работа web-приложения без CGI?

    @mithraen
    Для того чтобы выполнять скрипты, web-серверу нужен некий протокол, чтобы взаимодействовать с этими скриптами. Таковых есть несколько:
    — CGI
    — FastCGI
    — обычный HTTP
    — встроенные в сервер API (для подключения модулей — как mod_perl и mod_php в апаче, или встроенная поддержка perl в nginx)
    Ответ написан
    6 комментариев
  • Как вы оцениваете взломоустойчивость такой капчи

    @mithraen
    Такое я не отфильтрую. Глазами — тоже.
    Ответ написан
    Комментировать
  • Как вы оцениваете взломоустойчивость такой капчи

    @mithraen
    При таких искажениях поворот уже не нужен, IMHO. Вот это разбирать уже непросто.
    Но теперь действительно и читаемость человеком резко упала.

    Кстати, большая часть этих точек на картинке элементарно убирается простейшим фильтром (если рядом с точкой есть >6 точек одного цвета — присвоить этой точке то же значение).
    Ответ написан
  • Как вы оцениваете взломоустойчивость такой капчи

    @mithraen
    При желании это взломать вполне можно — только сначала надо будет набрать базу примеров. Но ничего принципиально сложного в ней нет. Хотя добавленный шум очень усложняет задачу, но вот фиксированное положение букв относительно друг-друга и отсутствие поворотов — задачу резко упрощают.
    Ответ написан
    3 комментария
  • Что за кодировка в imap?

    @mithraen
    Это декодируется с помощью Encode::MIME::Header.
    Кроме B (base64) может еще быть Q (quoted-printable).
    Ответ написан
    Комментировать
  • Блокировка доступа по VKApi

    @mithraen
    Сделать ограничение, которое вы не сможете сами же сломать не получится. Так что проблему придется решать не техническими мерами, а психологическими.
    Ответ написан
    Комментировать
  • Лучший ЯП для парсинга веб-сайтов

    @mithraen
    Как только возникает слово «парсинг», в первую очередь стоит вспоминать о Perl (Practical Extraction and Report Language). Для решения этой задачи там есть:

    • модули для работы с HTTP — как низкоуровневые, так и специальные, типа WWW::Mechanize — удобен, если надо написать скрипт, который последовательно выполняет какой-то набор операций (например надо автоматизировать какие-то действия пользователя web-интерфейсе, а API никакого не предусмотрено);
    • модули для асинхронной работы по HTTP (AnyEvent::HTTP) — позволяют написать робота, который без необходимости создавать множество тредов будет выполнять одновременно несколько запросов;
    • регулярные выражения — мощнейший инструмент для парсинга данных, и в perl его использование наиболее удобно (это часть синтаксиса языка);
    • библиотеки для разбора HTML в дерево (например HTML::Parser);


    Python хороший скриптовый язык общего назначения, но для задач разбора данных код на Perl будет куда проще.
    Ответ написан
    1 комментарий
  • Минимизация фактов выплат/перевозок?

    @mithraen
    Вы усложнили себе задачу.

    В этой задаче цепочки передачи денег не имеют смысла — они не уменьшают количество транзакций. Скажем у A и B баланс отрицательный, у C — положительный. A может передать деньги B, чтобы он передал C все одной транзакций, а могут передавать их каждый сам напрямую C, от этого ничего не изменится.

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

    Я бы предложил простой алгоритм, хотя доказать его оптимальность я не могу:

    1. Ищем есть ли у нас пары получатель/отправитель с одинаковым по модулю балансу. Если есть — прекрасно, делаем платежку и обнуляем их балансы (забываем про них).
    2. Находим того, кто должен больше всех (отправитель)
    3. Находим того, кому должны наибольшую сумму (получатель)
    4. Делаем платежку на сумму, наименьшую из этих двух (если у нас есть отправитель который должен суммарно 20, а самый крупный получатель должен получить 11 — делаем платежку от отправителя к получателю на 11)
    5. Повторяем, пока не останется ни одной задолженности
    Ответ написан
    2 комментария