• Посоветуйте SIP-сервер (шлюз) для приема анонимных звонков из интернет

    @mithraen
    У вас ведь уже есть астериск и значит опыт с его администрированием?
    Ну и ставьте второй астериск.
    Несколько десятков звонков в день это не нагрузка.
    Да, второй запущеный астериск у вас займет, вероятно, вплоть до нескольких сотен мегабайт оперативки (это зависит от того, насколько вы у него поотрываете с помощью modules.conf ненужные модули). Стоимость этой памяти — десять баксов.

    На kamailio есть смысл смотреть только в том случае, если надо использовать его как софтсвич при операторских нагрузках (хотя бы сотни одновременных вызовов).
    Ответ написан
  • Как нормализировать разноплановые данные для подачи на вход нейронной сети?

    @mithraen
    Посмотрите на spamassassin, там используется множество тестов и расставлены веса для результатов этих тестов.

    Анализ текста один из них.
    Ответ написан
  • Что конкретно может дать программисту знание языка Lisp?

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

    Посмотрите лучше на Haskell. У него тоже cryptic syntax на первый взгляд, но со временем он начинает казаться очень лаконичным и простым.

    В нем вообще только две самых больших сложности:
    1. осознать понятие «монада», оно непривычно, хотя писать код можно и без полного понимания, но читать чужой код будет сложно, и писать _хороший_ код не получится;
    2. осознать то, что он «ленивый», и какие из этого следствия;
    Ответ написан
    1 комментарий
  • Что конкретно может дать программисту знание языка Lisp?

    @mithraen
    У каждого языка есть набор подходов к разработке, которыми в нем наиболее удобно пользоваться. Опыт использования языков с разными парадигмами разработки меняет мышление — вы можете сформулировать задачу разными способами.

    Это, в итоге, оказывается полезным и при разработке на других языках.

    С практической же точки зрения сейчас Lisp мало интересен. Насколько я вижу, сейчас на практике используют скорее Scala.

    Вообще функциональные языки очень интересны. Их освоение для более-менее опытного программиста оказывается сложным (новичку их осваивать даже проще), из-за того, что многие привычные подходы в них оказываются неудобны. Но после освоения — оказываются даже проще в разработке чем объектно-ориентированные и процедурные.

    Итоги:
    1. Освоение функциональных языков полезно потому, что повысит скорость и качество разработки и на других языках (правда будет неприятный побочный эффект — от них станет подташнивать, когда окажется что вещь реализуемая в несколько строк на haskell требует несколько страниц бреда на C++).

    2. Их очень удобно использовать в качестве скриптовых языков внутри более сложных продуктов (как тот же AutoLISP).

    3. В крупных «enterprise» проектах их использовать нереально из-за того что мало разработчиков которые с ними знакомы, а для бизнеса заменимость сотрудников критически важна.

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

    5. Некоторые функциональные языки, например Haskell и OCaml обладают очень интересной и мощной системой типов, которая одновременно не так сильно путается под ногами как в Java, но при этом очень жесткая, и срезает множество потенциальных ошибок.

    6. Ну и еще — например в JavaScript и Perl есть ряд инструментов, привычных для функционального программирования. Владение хотя бы одним функциональным языком программирования позволит писать более красивый код на этих языках.
    Ответ написан
    3 комментария
  • Какой по вашему лучший способ подключить ~200 аналоговых абонентов к Asterisk?

    @mithraen
    200 аналоговых абонентов имеет смысл только если телефонизируется крупное предприятие где уже проложены телефонные кабели до какой-нибудь старой АТС, и есть сложности провести ethernet.

    Вообще-то это очень маловероятная ситуация, ибо ethernet везде есть.

    Самым надежным решением будет использовать IP-телефоны.
    Ответ написан
    Комментировать
  • Как перекодировать видео для мобильного устройства с ускорением видео/звука в 1.3x, 1.5x, 2x раз?

    @mithraen
    #!/bin/sh -e
    #============================================================================#
    # Конвертация видео в группу файлов (в т.ч. ускоренное воспроизведение       #
    # ускорение производится фиксированно в 1.6 раз                              #
    #============================================================================#
    # (C) Denis Smirnov <mithraen@freesource.info>          http://mithraen.ru/  #
    #============================================================================#
    IN="$1"
    
    if [ ! -f "$IN" ]; then
        exit -1
    fi
    
    IN=$(realpath "$IN")
    
    dir=$(dirname "$IN")
    cd "$dir"
    
    # каталог, куда отправляем результат
    outdir=${IN%.*}
    mkdir -p $outdir
    
    # делаем копию оригинального файла
    ln "$IN" $outdir/original
    
    # извлекаем звук (конвертируя сразу же в wav)
    avconv -i "$IN" -vn -y $outdir/in.wav
    
    # извлекаем видео
    avconv -i "$IN" -an -y -vcodec copy $outdir/in.mkv
    
    # конвертируем видео в ускоренный вариант и сразу конвертируем в lossless H.264
    avconv -i "$outdir"/in.mkv -vf setpts=0.625*PTS -an \
         -vcodec libx264 -pre:v lossless_ultrafast \
        "$outdir"/fast.mkv
    
    # конвертируем аудио в ускоренный формат
    echo "Audio file converting -- tempo"
    sox "$outdir"/in.wav "$outdir"/fast.wav tempo 1.6
    
    # конвертируем ускоренное аудио в mp3
    sox "$outdir"/fast.wav "$outdir"/fast.mp3
    
    avconv -i "$outdir"/fast.mkv -i "$outdir"/fast.mp3 -acodec copy -vcodec copy  "$outdir"/out-fast.mkv
    
    Ответ написан
    Комментировать
  • Генерация 1млн билетов со случайными уникальными ID

    @mithraen
    Сделать таблицу с _3-мя_ полями:
    ticket_id (внутренний ID, последовательный)
    ticket_number (номер билета)
    user_id (ID купившего)

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

    SELECT * FROM tickets WHERE user_id IS NULL ORDER BY ticket_id LIMIT 1;

    индекс создаем один по двум полям — user_id и ticket_id. Этот индекс как ускорит этот запрос, так и поможет получить список билетов, принадлежащих конкретному пользователю.

    только про блокировки надо не забывать — иначе при покупке билета могут быть коллизии.
    Ответ написан
    Комментировать
  • Shared library на D?

    @mithraen
    Похоже -fPIC компилятором просто игнорируется.
    На x86 возможна сборка shared libs без -fPIC. На x86_64 — нет.
    Ответ написан
  • Услуги хостинга своими силами?

    @mithraen
    Лицензию получить легко и недорого.
    Но дальше вы обязаны в течении года сдать связьнадзору узел связи. В котором, разумеется, у вас должен быть по крайней мере один физический сертифицированный сервер. Это удовольствие стоит уже дорого — вместе с подготовкой документов и прочими расходами рассчитывайте на ~5k$.

    И про VDS можете спокойно забыть. Не предусмотрено такого варианта AFAIR.

    Главный подводный камень в том, что политика государства — чем меньше малых операторов связи, тем лучше. За несколькими крупными приглядывать и требовать от них установку оборудования СОРМ, и т.д. — гораздо проще.

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

    @mithraen
    Вы начали не с PHP а с JavaScript :)

    PHP в качестве первого языка при изучения программирования плох тем, что позволяет писать очень грязный код, и при этом весьма беден в плане возможностей как языка (а не библиотек).
    Человек, который имел опыт программирования на другом языке, на PHP часто пишет лучше.

    JavaScript как язык гораздо мощнее — в нем даже есть элементы функционального программирования. Для поднятия своих скиллов как программиста очень рекомендую с ними ознакомиться.

    Для web-разработчика сейчас знать PHP надо. Хотя бы потому, что код на нем наверняка придется в жизни не только писать, но и читать.

    Так что раз вам нужно делать web-сайт — изучайте PHP, и не напрягайтесь по этому поводу. Если же хотите в будущем выбиться в верхний ценовой сегмент по квалификации, даже если будете делать сайты на PHP, все равно ознакомьтесь с другими языками и предлагаемыми ими парадигмами.
    Ответ написан
    6 комментариев
  • С помощью чего реализовать сайт?

    @mithraen
    С точки зрения заказчика (бизнеса) самое лучшее решение по-умолчанию — это самое распорстраненное. Другие решения имеет смысл выбирать исключительно если у них есть какие-либо серьезные преимущества. Причем не технические, а для бизнеса.

    Мейнстрим это, как не обидно, PHP. Использование его означает:
    — дешевый хостинг
    — огромное количество разработчиков любой квалификации и стоимости (от работающих за еду чайников, до опытных девелоперов с з/п в десятки баксов в часов)
    — благодаря последнему заказчик, даже ничего не понимающий может просто нанять кого-то на review кода, и тем самым получить в итоге хороший продукт относительно дешево.

    Выбор любых других средств имеет смысл лишь в том случае, если у них есть существенная killer feature. Например у RoR это гибкость и скорость разработки.

    Решения на Java/C# для бизнеса:
    — требуют более редких и дорогих специалистов)
    — требует более дорогой хостинг

    Все разработки для highload проектов сейчас ведутся в основном для Linux как платформы, и отнюдь не на java как следствие:
    — разработчиков умеющих делать такие решения на C# и Java найти крайне сложно и дорого
    — эти технологии не обкатаны, ибо крупнейшие сайты в мире сделаны отнюдь не на них, а именно они делятся своими наработками в области highload с community.

    Итог — причины делать сайт на С# или Java может быть только три:
    — Наняли конкретного разработчика, и он знает именно эти платформы.
    — Мы продаем разработку на C# или Java
    — Это учебный проект

    Посему правильный ответ на заданный вопрос будет «ни то, ни другое, если вы хотите научиться делать сайты».

    Если цель личное развитие, и в будущем пробиться на хорошие места, то стоит взяться за RoR (спрос есть, разработчикам на нем платят часто выше чем PHP'шникам).

    Если цель банально зарабатывать на создании сайтов — то PHP.
    Ответ написан
    2 комментария
  • Как хранить и работать с деньгами в коде и базе данных?

    @mithraen
    int удобнее.

    Мы просто считаем что все суммы у нас указаны в копейках. И все математические операции выполняются крайне быстро. А понятие «рубли/копейки» имеют смысл только при вводе/выводе.
    Там и конвертировать.
    Ответ написан
    Комментировать
  • Телефонный звонок: "сотовый -> USB-модем -> SIP/VoIP-телефон -> сотовый" - как сделать?

    @mithraen
    Раз вы пользуетесь мультифоном, тогда все просто — ставите Asterisk. На него без всякого USB-модема (зачем?) подключаете мультифон аккаунт (возможно отдельный) и аккаунт SIP-оператора.

    Дальше вы звоните со своего телефона на мультифон, и выполняете донабор.

    А вообще у многих SIP-операторов нынче есть готовые решения для этого — например отправка SMS с номером телефона куда звоним, оператор уже звонит в обе стороны и соединяет.
    Ответ написан
    3 комментария
  • Терминал для Linux c функцией дублирования соединений

    @mithraen
    Если у вас сотни хостов, то настройте таки .ssh/config, указав там для каждого хоста используемого пользователя, и пользуйтесь автодополнением в шелле для быстрого соединения.
    Ответ написан
  • Как разграничить доступ к игровому веб-приложению?

    @mithraen
    «совершенно однозначная» идентификация по анализу поведения — задачка по масштабам тянет на хорошее научное исследование.

    Если речь идет о дошкольниках/младших школьниках, я бы предложил таки PIN, но выполненный не в виде цифр, а в виде картинок.

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

    Если использовать это, совместно с привязками по IP и кукам, можно получить неплохую точность. Но уж никак не гарантию.
    Ответ написан
    Комментировать
  • Игнорирование в Git содержимого папки, но не самой папки?

    @mithraen
    Есть одно решение.
    В каталог положить .gitattributes с export-ignore.

    А на продакшн выкладывать не git repo целиком, а делать экспорт (через git-archive).

    У меня на тестовом стенде это активно используется — по push в репозиторий hook'ом выполняется git-archive + tar x в нужном каталоге.
    Ответ написан
  • Как заставить разработчиков пофиксить сайт?

    @mithraen
    Это проще для маленькой организации. Для большой все совсем по-другому.

    Есть огромный поток различных запросов и мнений от клиентов. 90% из них бред. Из оставшихся 90% нужно этому конкретному клиенту, но не нужно бизнесу. Выделить из этого потока действительно полезные рацпредложения непросто.

    Далее саппорту нужно передать это сообщение разработчикам. Разработчикам внести изменения, потом проверить что это изменение ничего не ломает в других браузерах (например они не очепятались при внесении изменения), да еще и таки протестировать в Safari.

    То есть такое изменение потребует суммарно чуть ли не человекомесяц работы. То есть обойдется компании в пару тысяч долларов. И теперь главное — какое количество пользователей придет в onlime от других провайдеров (или не уйдет от них к дргим) из-за поддержки Safari?

    Т.е. это чисто убыточное действие. Которое компании — не нужно. Оно может стать не убыточным, если компания использует это в своем PR типа «мы, в отличии от наших конкурентов, заботимся о наших пользователей даже с другими ОС нежели Windows», тогда это просто затраты на рекламу.

    Для ТП вашей проблемы действительно просто нет. Для бизнеса совершенно нормально от нескольких процентов настандартных пользователей просто избавляться. Пользователи MacOS и Linux традиционно решают свои проблемы сами :(

    В рамках взаимодействия с onlime как с бизнесом ваша проблема неразрешима. Им это действительно делать невыгодно. Но в рамках человеческого общения с сотрудниками компании как специалистами — проблема разрешима.

    Но в этом случае вам фактически надо выполнить роль project manager'а и эксперта, а также ряда других сотрудников компании бесплатно и без соответствующих полномочий.
    Ответ написан
    1 комментарий
  • Как заставить разработчиков пофиксить сайт?

    @mithraen
    Проще поставить себе ff или хром :)

    А если хочется чего-то от них добиться, то следует писать в техподдержку уже конкретику. Т.е. к примеру:

    ===

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

    Также я готов помочь вам в тестировании.
    Ответ написан
    1 комментарий
  • Какую фирму ноутбуков лучше воспринимают европейцы?

    @mithraen
    Либо Apple, либо ThinkPad. Но второй оценят только те, кто в теме.
    Ответ написан
    Комментировать
  • Что вы используете на десктопе?

    @mithraen
    XFCE — легкий, быстрый и просто работает.
    Ответ написан
    2 комментария