Задать вопрос
  • [РЕШЕНО] Как установить чистую Ubuntu?

    @rPman
    debootstrap — меньше просто некуда!

    это не инсталятор, это утилита (в репозитариях почти всех дистрибутивов есть), которая собирает в указанном каталоге минимальную рабочую версию debian based линукса без ядра. Дальше chroot в него и донастраивай… очень удобная вещь.
    Ответ написан
    Комментировать
  • Использование последнего софта в Ubuntu

    @rPman
    Установи в chroot (для подавляющего большинства утилит этого более чем достаточно, и настраивать ничего не придется), или еще лучше в виртуалке, gentoo, и будет тебе 'самые последние достижения'. Потому как ебилды (.ebuild — файлы описания процесса сборки из исходников, фактически аналог пакетов deb, только идеологически расширен не только на бинарники) появляются чаще и быстрее, чем для debian/ubuntu/…
    Ответ написан
    6 комментариев
  • Как заказать дебетовую карту в банке другой страны?

    @rPman
    Может быть немного не по теме, обычно используется для вывода средств:

    www.paxum.com
    Это электронные деньги + api + возможность привязать свою пластиковую карту (для вывода) + выдают дебетовые карты (MasterCard), обслуживание 50$ в год.

    Цены и лимиты — www.paxum.com/payment/personal.php?view=views/personal.xsl
    * paxum -> paxum — 0.25$ за транзакцию
    * paxum -> чужой пластик — 1% (минимум 6$) за транзакцию
    * paxum -> свой пластик — 0.25$ за транзакцию
    * свой пластик -> вывод из банкомата (International ATM) — 2$ за транзакцию
    * свой пластик -> покупки в магазинах (International POS) — 1$ за транзакцию

    Не могу понять, можно ли сделать так:
    * ввод в банкоматах -> свой пластик
    * свой пластик -> paxum

    p.s. на форумах пишут что без проблем карта подключается к PayPal (на вывод без проблем, а на ввод, там тип банка не важен, важен ваш адрес проживания)
    p.p.s. для пополнения paxum существует куча вариантов, обычные менялы wmz->paxum от 3%
    Ответ написан
    2 комментария
  • Сбор бэкапов с нескольких хостингов

    @rPman
    Если windows, устанавливаем локально cygwin.
    На локальной машине пишется примитивный скрипт вида:
    scp user1@server1:/path1/files/* /local/path1/
    scp user2@server2:/path2/files/* /local/path2/
    А на серверах настраивается авторизация по ключевому файлу

    Вместо scp лучше воспользоваться rsync — более эффективно с точки зрения трафика, особенно когда в списке файлов изменяются не все (но для повышения эффективности rsync должен быть установлен на серверах как демон, для *nix это не проблема)
    Ответ написан
    Комментировать
  • Защита от читеров в клиент-серверной игре

    @rPman
    Универсальный механизм — обфускация кода на клиентской стороне и хоть какое-нибудь шифрование трафика. Это не прикроет возможность читерства, но сделает его сложнее/дороже.

    p.s. личное нохау, попробуйте периодически вместе с обфускацией постоянно изменять алгоритмы шифрования, меняйте все что возможно, формат структур критичных ко взлому (игровых) данных. Подкидывайте в код обманки, делайте в коде специальные ошибки (например функцию назвали md5, но в ее коде сделайте несколько изменений). В общем максимально усложняйте жизнь тем кто будет декомпилировать и изучать ваш код.

    Универсальная, что-либо гарантирующая альтернатива, — перенести всю или часть обработки логики игры на сервер. Основной недостаток — серьезные повышения требования к сети (чаще невыполнимые для мобильных устройств) и, иногда, повышение нагрузки на сервер.

    p.s. p2p связь возможна? перенесите часть обработки (проверки валидности/реальности событий управления персонажами) на соседнего клиента (ближайшего с точки зрения сети) — это поможет частично разгрузить сервера.

    В любом случае защититься от автоматизаторов действий все равно будет нереально, ведь можно изучать изображение на скрине и имитировать нажатия на кнопок. От этого можно спастись только вменяемой игровой логикой, не требующей от игроков тупых монотонных действий…
    Ответ написан
    5 комментариев
  • Будут ли старые файлы раздаваться по средством DHT, если создать новый торрент?

    @rPman
    Торренты с разной последовательностью файлов — разные торренты, имена файлов хранятся в торрент-файле и на сколько я знаю в идентификации не участвуют, но кажется клиенты 'по ошибке' считают такие торренты разными.

    Чем сильнее разбиваете коллекцию на торренты тем лучше! никто не будет грузить огромный торент файл ради одной песенки, и искать его будет проще — если будет по торнту на фильм/альбом/сезон сериала/сборник. если пользоваться симлинками, можно одни и те же файлы в разных торрентах разместить.
    Ответ написан
  • события для данных в базе, какие есть способы?

    @rPman
    1. необходимо любым доступным способом отлавливать появление новых записей в базе (так или иначе это можно сделать либо в приложении, которое пополняет базу, либо тригером, совершающим действие 'снаружи', если ничего удачного БД не позволяет… периодически (в 2 раза чаще чем самый короткий интервал) делать максимально простой запрос — например текущее значение сиквенса в табличке
    1. пишется демон (1 процесс), который должен ловить событие от появления записи в БД и вычислять время срабатывания ближайшего таймера (простейший запрос к табличке, сортировка по времени срабатывания таймера — лимит 1) и ждать либо срабатывания таймера либо следующего события добавления записи
    Ответ написан
    Комментировать
  • Параметры видеокамеры, чтобы распознать текст на видео

    @rPman
    Простой случай, если рассматривать скриншот (фото):

    Высота символов 12-го размера — 4.2мм, чтобы хотя бы вручную можно было распознать символы, на каждый необходимо (по высоте) отвести по 5-8 пикселов (смело умножайте на 2 — шумы, искажения), т.е. 0.42мм на пиксел

    Дальше, либо необходимо выбирать камеру с необходимым фокусным расстоянием (чтобы при расстоянии в 3 метра весь объект попал в кадр — что почти наверняка для вас нереально, хотя это всего лишь вопрос оптики), либо посчитать, какой размер символа будет для каждой камеры (обычно они не сильно отличаются), первую попавшуюся HD камеру в гугле на запрос 'углы обзора видеокамеры HD' — получил Microsoft LifeCam HD-5000 — угол обзора 66° (для простоты не пишут угл обзора по высоте, так как стандарт HD определяет его как ширина/1.33)

    Значит на 3-х метрах кадр будет вмещать объект шириной 4.4м, по высоте — 3.3м, итак нам надо чтобы пиксел вмещал не больше 3.3*1000/0.42 = 7857 пикселов по вертикали и соответственно (если использовать аналогию со стандартами HD *1.77777..) — 13967 пикселов по горизонтали
    Если создадите гениальный алгоритм, определяющий символ по матрице точек высотой в 3-4 пиксела (теоретически возможно, используя информацию еще и о яркости), то требования уменьшаются в 2-3 раза, т.е. 4655x2619 — все равно это не обычная камера

    Итог ищите камеру с очень маленьким углом обзора (для FullHD это примерно 10") либо уменьшайте расстояние либо…
    p.s. как я знаю фотоаппараты делают интерполяцию, в т.ч. на основе принципов, описанных ниже, так что требования могут быть и не такими страшными, но лучше поэкспериментировать.


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

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

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

    p.s. никак руки не дойдут заняться этой задачей, так как готовых примеров реализации не могу найти.
    Ответ написан
    Комментировать
  • TCP-прокси, устойчивый к разрывам связи (с автоматическими реконнектами)

    @rPman
    Просьба не предлагать всякие TCP keep-alive, тайм-ауты на уровне TCP и прочую дребедень — решение тут явно должно быть на уровне более высокого уровня, чем TCP (т.к. заставить TCP-соединение не разрываться в случае, например, физической замены роутера или переезда к другому интернет-оператору невозможно). Также нет возможности делать доработки в клиенте и сервере.
    Как раз тут может помочь поднятый vpn сервер на server и клиент на client (или наоборот, не принципиально), соединение устанавливать соответственно уже в этой локальной сети. По крайней мере кратковременные разрывы связи (на сервере менял таблицу маршрутизации, openvpn переподключился, соединения не разорвались), но вот в долгосрочной перспективе я просто хз, какие еще факторы могут помешать.
    Ответ написан
    1 комментарий
  • [.Net] Скорость создания записи в MySQL по сравнению с MS SQL (результаты теста + вопрос)

    @rPman
    Это какой то тихий ужас… когда то писал на .net базы, с mysql работа на запись была на уровне 200 запросов в секунду, и не просто табличку а с индексами и т.п. при этом комп древний и слабый был.

    Уверены что не нужно ничего дополнительно тюнить при использовании ключевого слова base(...)?
    Ответ написан
  • Linux корневой раздел в RAM

    @rPman
    Когда то давно считал, что будет быстрее, грузиться нормально или скопровать образ системы в память и грузиться уже с нее, разница была незначительная и в смысле — грузить образ в память оказывалось дольше (больше данных считывалось), а если и будет экономия (если систему хорошо почистить от лишних данных), то только за счет уменьшения seek-to-seek запросов.

    Если памяти много, то все необходимое легко кешируется (например простейшим tar --one-file-system -c / > /dev/null или еще лучше собрать самостоятельно список необходимых файлов)

    p.s. еще у меня были эксперименты по ускорению кеширования записи (игнорирование принудительного отключения отложенной записи) с помощью lvm + снапшоты в ram:
    1. создаем в памяти блочное устройство (самое простое настраивается опциями ядра)
    2. добавляем созданный образ в группу lvm
    3. создаем снапшот, указав место хранения изменений — этот раздел ram
    Теперь любая запись будет произведена в оперативную память, используя ее максимально эффективно! (только изменения, повторная перезапись сектора не увеличивает требования к памяти)
    4. при необходимости сохранить изменения — удаляем снапшот, это перенесет все изменения на первоначальный раздел, кстати так же максимально эффективно
    Цикл создания-удаления снапшота можно повторять периодически на автомате.

    Примеры команд в гугле, первыйже результат запроса linuxsoftware.co.nz/blog/2008/03/lvm-snapshot-with-no-free-diskspace
    Очень большой недостаток — при некорректном завершении системы нужно будет чинить группу (я не сильно копался, возникали ошибки со структурой), плюс конечно же изменения, записываемые на диск с момента создания последнего снапшота будут потеряны, что логично.
    Ответ написан
    Комментировать
  • Спутниковый интернет. Организация канала передачи данных в месте где "все плохо" с интернетом

    @rPman
    * дешевые варианты требуют управляющий канал (он же на исходящие), спутник в этом случае используется для приема входящего трафика, для терминалов не подойдет
    * есть автономные варианты подороже, несколько лет назад изучая вопрос уровень цен был от 100к$, сейчас с ходу найти не смог, но скорости все равно должны быть неадекватно низкими…

    p.s. пинги в любом случае должны быть в районе 400ms и выше, так как используются спутники на геостационарной орбите, а это 36т.км (скорость света 299т.км/с) т.е. даже в идеальном случае только на передачу затраты в одну сторону 120мс, плюс низкая частота — 1Мгц, плюс общий канал, плюс погода, плюс наглость…
    Ответ написан
    4 комментария
  • Безопасно ли запускать виртуальную машину с реальной партиции?

    @rPman
    Если не будет одновременного доступа к разделу (в управлении дисков снимаем назначение буквы, если это FAT/NTFS разделы), то никаких проблем не будет, неоднократно пользовался этим, и не только с VirtualBox, но еще и с QEMU.
    Ответ написан
    Комментировать
  • Нужен юзерскрипт для чтения постов на всю ширину экрана?

    @rPman
    userstyles.org/stylish плагин, есть для firefox и chrome
    @-moz-document domain("habrahabr.ru")
    {
    div#viva-la-w3c {width:50% !important}
    div#sidebar {display:none}
    div#main-content {width:100% !important}
    div .yandex-direct {display:none}
    div#special_nokia {display:none}
    div .ufo-was-here {display:none}
    ul.panel-nav-top img {display:none}

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

    @rPman
    специально зашел с браузера, где не установлен stylish… о каких изменениях идет речь?

    p.s. так как 'чукча — читатель', у меня скрыто все, не относящееся к основному контенту, т.е. вижу только список топиков, сами топики и комменты.
    Ответ написан
  • Закрытые базы в memcached, как?

    @rPman
    По уму недавно к memcached прикрутили простую аутентификацию, но не нашел с ходу ничего про это, может быть подойдет?
    code.google.com/p/memcached/wiki/ReleaseNotes144
    Ответ написан
  • Распознавание осмысленного текста?

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

    Выявление просто предложений на человеческом языке можно сделать статистическим анализом, но это на порядок сложнее и так же ничего не решает, так как осмысленный текст таким образом не выделишь…

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

    p.s. попробуйте понять, осмысленный ли это текст, это просто класика (взято тут, еще тут):
    Родился на улице Герцена. В гастрономе № 22. Известный экономист. По призванию своему библиотекарь. В народе — колхозник. В магазине — продавец. В экономике, так сказать, необходим. Это, так сказать, система… эээ… в составе 120 единиц. Фотографируйте Мурманский полуостров — и получаете te-le-fun-ken. И бухгалтер работает по другой линии. По линии «Библиотека». Потому что не воздух будет, а академик будет! Ну вот можно сфотографировать Мурманский полуостров. Можно стать воздушным асом. Можно стать воздушной планетой. И будешь уверен, что эту планету примут по учебнику. Значит, на пользу физики пойдет одна планета. Величина — оторванная в область дипломатии — дает свои колебания на всю дипломатию. А Илья Муромец дает колебания только на семью на свою. Спичка в библиотеке работает. В кинохронику ходит и зажигает в кинохронике большой лист. В библиотеке маленький лист разжигает. Огонь будет… эээ… вырабатываться гораздо легче, чем учебник крепкий. А крепкий учебник будет весомей, чем гастроном на улице Герцена. А на улице Герцена будет расщепленный учебник. Тогда учебник будет проходить через улицу Герцена, через гастроном № 22, и замещаться там по формуле экономического единства. Вот в магазине 22 она может расщепиться, экономика! На экономистов, на диспетчеров, на продавцов, на культуру торговли… Так что, в эту сторону двигается вся экономика. Библиотека двинется в сторону 120 единиц, которые будут… эээ… предмет укладывать на предмет. 120 единиц — предмет физика. Электрическая лампочка горит от 120 кирпичей, потому что структура у нее, так сказать, похожа у нее на кирпич. Илья Муромец работает на стадионе «Динамо». Илья Муромец работает у себя дома. Вот конкретная дипломатия! «Открытая дипломатия» — то же самое. Ну, берем телевизор, вставляем в Мурманский полуостров, накручиваем, там… эээ… все время черный хлеб… Дак что же, будет Муромец, что ли, вырастать? Илья Муромец, что ли, будет вырастать из этого?

    А ведь черные СЕОшники генерируют гораздо более интересные тексты.
    Ответ написан
  • Высоконагруженный сокет-сервер?

    @rPman
    Я не специалист, но фраза 'какой из механизмов IPC выдержит' немного странная, какая разница, если в ОС штатно только один — message queue, shared memory и semaphore, что бы вы не выбрали, будет использовать их (особо кривые что то одно).

    Не совсем веб-проект, но для распараллеливания задачи пришлось использовать и очереди и семафоры (очень активное использование), рекомендую не передавать данные в очереди, она быстро кончается… максимум идентификаторы и подробности через shared memory или другие механизмы.
    Возможно, не стоит создавать один семафор на все, лучше под напрячься и по семафору на объект или хотя бы группу (чтобы блокировать только на доступ к группе а не всех ко всему) — этот подход может дать наверное максимально возможный прирост, когда упретесь в потолок (особенно грустно когда процессоры еще не нагружен и демоны чего то ждут), это в смысле организации многопроцессорного демона (или демон на ядро, так удобнее).
    Ответ написан
    2 комментария
  • С++ какой вид памяти использовать лучше и главное почему?

    @rPman
    самое важное отличие — когда вы пользуетесь malloc, то приходится делать приведение типа, в этот момент всю ответственность за корректность приведения берет программист, а значит потенциальное место для ошибок (причем си именно за это и ругают, так как ошибки получаются самые страшные), а если совсем избавиться от указателей (можно оставить ссылочные типы MyClass& a) то тогда за целостностью системы будет следить компилятор и писать 'не туда' вы не сможете.
    Ответ написан
    1 комментарий
  • Что вы используете для cоздания журналирования системы?

    @rPman
    Если по каким то причинам не устраивает одна таблица (хотя, изучите такие вещи как кластеризация), то можно автоматически по структуре БД для каждой таблицы создать парную, заполняемую триггерами, при этом логику заполнения для разных таблиц можно варьировать — для одних хранить только факты добавления и удаления, для других добавить факты модификации, для третьих может понадобиться факты чтения данных (эти данные можно и не триггерами заполнять), где то можно вообще полный лог изменений данных (сохранять изменившиеся полей для истории изменений)…

    Проблема потом интерпретировать эти данные… но, возможности, которые обеспечивает такой подход, очень велики.
    Ответ написан