• Проблема с SMTP-сервером

    DmZ
    @DmZ
    В Вашем случае скорее всего криво написанная программа-мейлер. Судя по-всему, пытаясь контролировать скорость отсылки сообщений она не разрывает соединение с SMTP сервером, а тупо ждет на линии отсылая NOOP. Exim не относит эту операцию к разрешенным, поэтому через некоторое время разрывает соединение. Можно, конечно, увеличить лимит количества таких операций (smtp_accept_max_nonmail = 1000 например), но можно вообще отключить эту проверку:
    smtp_accept_max_nonmail = :
    
    или отключить для конкретного хоста:
    smtp_accept_max_nonmail_hosts = ! 192.168.22.3
    
    (где 192.168.22.3 — IP адрес с которого коннектится мейлер)
    Ответ написан
    1 комментарий
  • Microsoft хочет денег за бесплатную подписку

    DmZ
    @DmZ
    Вообще не понятно откуда взялась цифра в 20 бесплатных ядер. В статье про биткоины они появляются ниоткуда вообще без обоснования.
    Если почитать что же написано на странице Бесплатной версии — то там серым по белому написано: «750 часов для мелких вычислительных операций в месяц».
    А «мелкая вычислительная операция» (перевели же блин) — это обычный small instance (1 ядро). 750 часов — это приблизительно месяц круглосуточной работы. Все что используется свыше — оплачивается.
    (Похожая схема применяется и у Amazon Web Services — там ~750 часов/мес. t1.micro инстанса бесплатно в течении года)

    Но Майкрософт пошло дальше и разрешило использовать не только small инстансы, но и любые другие, с коеффициентом соответствующим их количеству ядер. Таким образом 750 часов в месяц на 20 ядер — закончились менее чем за два дня (по 37 часов на ядро) и весь оставшийся месяц, который они работали — они работали за денюжку (на след. месяц снова полтора дня бесплатных было).

    Все это отлично описано в оффере бесплатной версии, который всегда хорошо бы читать перед тем как взять бесплатный сыр: 90-day Free Trial (правда MS сделало все чтобы его было не так просто найти). Чудес не бывает и за все, в итоге, приходится платить.
    Ответ написан
    1 комментарий
  • PCI64 SCSI Controller + SCSI HDD на Pentium I?

    DmZ
    @DmZ
    1. Как и в случае с *ATA винтами кеширование дает прирост производительности. Включать или нет для *ATA/SCSI винтов уже зависит от типа нагрузки и целевого предназначения винта и системы в целом, но подключить UPS лишним не будет в любом случае :)
    2. Ничего не делать, отключение укзанных опций только ухудшит производительность
    3. Принудительное охлаждение очень не помешает
    4. Учитывая что это серверный диск — он не разрабатывался с учетом тишины :) Скорость вращения SCSI в два-три раза выше чем у SATA/IDE так что шуму (и производительности) соответственно больше. Попробуйте поставить его на винты с резиновыми шайбами или любой корпус/карман который гасит вибрации и не передает их на корпус системника. Только имейте ввиду охлаждение. («DO NOT COVER» — значит что нельзя заклеивать или плотно закрывать это отверстие — оно служит для выравнивания давления внутри корпуса и снаружи, помещать винты во внешние корпуса/карманы можно, так как они тоже не герметичные)

    PS. про первый/второй вопрос можно почитать в Microsoft Support: Description of Advanced Disk Properties Features
    Ответ написан
    Комментировать
  • А есть ли что либо более приятное для написания кода, чем Arduino IDE?

    DmZ
    @DmZ
    Если хочется нормальной среды разработки, почему бы не использовать нормальную среду разработки?
    Там обычный С++ и в инете полно инструкций как совместить Eclipse, к примеру, с нужным компилятором.
    Есть просто надстройки над Arduino IDE, которые добавляют функционал, например MariaMole.
    А можно просто использовать любую AVR IDE без привязки к библиотекам Arduino (но программы тогда прийдется писать самому, без вспомогательных функций Arduino)
    Ответ написан
    3 комментария
  • Как настроить Postfix/Exim на получение всей почты?

    DmZ
    @DmZ
    Для Exim можно настроить следующим образом:
    begin routers
    
    blackhole:
      driver = accept
      transport = blackhole
    
    begin transports
    
    blackhole:
      driver = appendfile
      directory = /var/tmp/blackhole/
      delivery_date_add
      envelope_to_add
      return_path_add
      group = mail
    

    Тогда он будет любую почту складывать в директорию /var/tmp/blackhole/ (в формате maildir)
    Но я бы Вам советовал все же разделить локальную почту (от cron и прочих служебных программ) и любую другую.
    Если нужен полный конфиг Exim — обращайтесь :)
    Ответ написан
    Комментировать
  • Почему в svn в не работает автоматическая авторизация при запуске из cron

    DmZ
    @DmZ
    Пароль и логин были сохранены при первом чекоуте.

    Password for 'root':

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

    2. Попробуйте явно прописать следующие параметры в конфигурации:
    ~/.subversion/config:
    store-passwords = yes
    store-auth-creds = yes
    

    ~/.subversion/server:
    store-plaintext-passwords = yes
    store-passwords = yes
    store-auth-creds = yes
    

    3. svn любит удалять сохраненные кредсы если по каким-то причинам авторизация не прошла (вплоть до медленного ответа сервера) — сталкивался с таким поведением регулярно одно время из-за сильной загруженности svn сервера. Выход — прописать кредсы явно в коммандной строке svn --username=xxx --password=yyy up
    Секурность это практически не уменьшит, так как пароль все равно плейнтекстом лежит в ~/.subversion/auth/*, но защитит от неправильного поведения. (Чтобы пароли не светились по ps ax можно запускать так U=xxx P=yyy svn --username=$U --password=$P up)
    Ответ написан
  • Настройка wifi в citrix xenserver?

    DmZ
    @DmZ
    Вам не нужны драйвера для карточки именно в гипервизоре, покурите PCI passthrough для Xen. Эта технология позволяет «пробросить» устройство прямо в guest систему, и дрова соответственно должны быть установлены в guest системе :)
    Ответ написан
  • Вывод логов Apache, который работает в VirtualBox?

    DmZ
    @DmZ
    Самое простое что можно сделать — установить Guest Additions на виртуалку и подключить Shared Folders. Тогда Апач можно просто настроить логировать в эту папку, и логи вы тут же увидите на хост-системе. Метод универсальный и применим как с Windows так и с Linux хост/гест-системами.

    Если хочется чего-то более странного (считаю что Linux host/guest), можно на хост системе настроить syslog чтобы слушал по сети, а на гест системе — Апач логировать в локальный syslog, который потом будет форвардить сообщения на хост-систему. (Пример настройки Апач на локальный syslog)
    Ответ написан
    2 комментария
  • Как на Python распарсить большой XML файл (>500Мб) содержаший ошибки?

    DmZ
    @DmZ
    lxml в варианте «распарсить любой ценой» тоже не проходит?

    parser = etree.XMLParser(recover=True, huge_tree=True)
    

    В этом режиме он будет пытаться обойти незакрытые теги и невалидный XML на сколько у него хватит ума.
    Ответ написан
    4 комментария
  • Аналоги GNS3. Кто какие знает?

    DmZ
    @DmZ
    Dynagen это обертка над Dynamips — эмулятором роутера. GNS3 как раз и используется для визуализации правил Dynagen/Dynamips + еще много чего.
    На той же GNS3 возможно запустить эмулятор (через QEMU) Cisco ASA, Cisco IDS. Так же поддерживается Juniper (JunOS на QEMU). И Cisco PIX (через pixemu).
    К сожалению L2 уровень никак не поддерживается, вернее есть свои свитчи, а не Cisco CLI.

    Из «условно» бесплатных GNS3 наверно единственная сборка с таким функционалом. Почему «условно»? Потому что IOS/ASA/PIX/JunOS имаджи все-таки нужно где-то доставать — они не бесплатны.

    Чуть больше работать с L2 позволяет работать Packet Tracer — он тоже «условно» бесплатный — доступный любому участнику Cisco Network Academy.

    Из платных и доступных это Bosson NetSim, NetVisualizer, Network Sims — их уже называли.

    Из не платных и не доступных — это Cisco IOS on Unix (на самом деле и под Linux есть ;) ) — он содержит фирмварь роутера и свича и позволяет собирать довольно сложные архитектуры (используется для подготовки к CCIE в том числе)

    Экспериментировать с топологией сети можно и с помощью программ типа Open vSwitch или VDE (Virtual Distributed Environment), которые позволяют задавать L2 уровень программно. Я использую VDE довольно плотно совместно с Qemu/GNS3.
    Ответ написан
    4 комментария
  • Какие способы нумерации версий существуют?

    DmZ
    @DmZ
    Почитайте про семантическое версионирование SemVer как один из подходов.
    Также интересно посмотреть как к версиям относятся различные пакетные менеджеры, например RPM: Naming Guidelines
    Ответ написан
    2 комментария
  • Puppet, chef или что то другое?

    DmZ
    @DmZ
    Для первых двух задач подойдут и chef и puppet.
    Puppet будет немного более читаемым и удобным на простых конфигурациях (немного проще в освоении наверно), а на извращенных лучше подойдет chef.
    Chef — существенно больше кода (если использовать готовые кукбуки) но и больше гибкости в настройке.

    Для разовых задач вполне подойдет отдельный небольшой манифест у puppet (запуск в standalone режиме).
    (Chef можно использовать в режиме solo, но количество настройки существенно больше чем у puppet)

    Или посмотрите в сторону Fabric — идеальный кандидат для разовых удаленных задач.
    Ответ написан
    Комментировать
  • Как сделать "Gaikai"?

    DmZ
    @DmZ
    Как вариант поднять виртуальный X сервер (Xvfb), там в фулскрин запустить RDP-client. Потом весь экран дампить через ffmpeg, им же конвертить в h.264 и отдавать на стример (типа ffmpeg -f x11grab -vc x264 :0.0)
    Ответ написан
  • Какой SCM выбрать? Bcfg2 vs CFEngine?

    DmZ
    @DmZ
    CFEngine имеет большую комьюнити и кучу документации с примерами. Тогда как bcfg2 гораздо хуже документирован, но его можно попробовать расширить под свои нужды (Python довольно просто выучить).
    Если хочется взять инструмент и работать с ним (а не искать баги и читать исходники) — берите CFEngine.

    Но Chef/Puppet все же будут гораздо более гибким инструментом. Да и Ruby ставится из репозиториев практически для всех дистров. В свое время выбирал между Chef/Puppet/Bcfg2 (сам пишу на Python, поэтому склонялся к последнему) — в итоге победил Chef — так как очень хорошее комьюнити, много документации да и Ruby для питониста оказался очень близок. (ЗЫ. для CentOS использую репозиторий rbel.frameos.org/ из которого автоматически бутсрапится chef-client вместе с руби и модулями — никаких проблем не возникает)
    Ответ написан
    Комментировать
  • Отладка so-библиотеки, загружаемой посредством dlopen()?

    DmZ
    @DmZ
    1. Без отладочной информации IDE просто не сможет привязать точку исполнения к исходникам, т.е. трейсить визуально программу вы не сможете. Отладочную инфу следует добавить.
    2. Попробуйте поставить брейкпоинт после dlopen() плагина, а после этого ставить брейкпоинт на функцию в плагине. Так как до dlopen() gdb просто не увидит символов которые загружаются плагином.
    Ответ написан
    1 комментарий
  • Расскажите реальные случаи пользы от inetd?

    DmZ
    @DmZ
    inetd (и его модификация xinetd) не работает с демонами :) А по-сути есть «суперсервер» который позволяет «упростить» разработку сетевых серверов. Он запускает копию сервера при получении соединения и перенаправляет весь траффик на stdin/out сервера.
    Т.е., при стандартном подходе, сетевой сервер будет проходить через такие этапы: запустится, демонизироваться, ожидать соединение, получить соединение, обработать данные, закрыть соединение, перейти к ожиданию.
    А при inetd подходе будет: запуститься, обработать данные, выйти

    Это удобно если нужно выставить в мир какие-то управлящие скрипты, которые работают с консолью, тогда к ним можно будет соединяться телнетом по tcp. У меня так одно время висели скрипты управления лабами по циске — запуск/остановка виртуалок, отображение состояния.

    Простейший пример:
    #!/bin/bash
    
    echo -n "Test program :) input somethig: "
    read VAR
    echo "Your input: $VAR"
    echo "Bye"
    

    Будет работать как с консоли так и через telnet если повесить его на inetd.

    Еще удобно использовать xinetd для форвардинга портов каких-нить некритичных сервисов, чтобы не заморачиваться с NAT/файрволом.
    Ответ написан
    Комментировать
  • Как провести миграцию БД c Oracle на MySQL?

    DmZ
    @DmZ
    Если вы сильно завязаны на процедуры/пакеты/триггера — то никак, только переделывать логику программы.
    Есть другой выход, не бесплатный, но дешевле чем Oracle RAC. Это попробовать мигрировать на PostgreSQL.
    Компания которая стоит за PostgreSQL предлагает практически бесшовную миграцию: Oracle Compatibility with Postgres Plus Advanced Server
    Ответ написан
    Комментировать
  • Сайт, где можно попрактиковаться во взломе

    DmZ
    @DmZ
    Еще вот такое было недавно: Упражнения по взлому Linux-систем
    Ответ написан
    Комментировать
  • FreeBSD, Packet filter (PF) и перенаправление портов?

    DmZ
    @DmZ
    Уже не один раз обсуждалось. Читайте как работает NAT и для чего он нужен.
    Роутер все заворачивает правильно, просто в данном случае работать оно не будет:
    • Из мира приходит пакет (предположим 8.8.8.8 -> 80.*.*.*), роутер его днатит в локальный адрес (8.8.8.8 -> 192.168.1.33), вебсервер получает запрос от 8.8.8.8 и шлет ответ обратно на роутер (дефолт-роут), роутер проводит пакет обратно по нат и отправляет в мир;
    • Если пакет приходит из локалки (предположим 192.168.1.2 -> 80.*.*.*), роутер его днатит в локальный адрес (192.168.1.2 -> 192.168.1.33), вебсервер получает запрос от 192.168.1.2 и шлет ответ обратно в ЛОКАЛЬНУЮ сеть, компьютер 192.168.1.2 не получает ожидаемого ответа от 80.*.*.* а ответ от 192.168.1.33 считает инвалидным, так как не отправлял туда запрос. Соотв. TCP соединение не устанавливается.


    (отсюда)

    Если хочется именно НАТом это сделать, то пакеты приходящие от em0 на Х нужно натить в адрес em0, чтобы вебсервер отвечал роутеру, а не напрямую в локалку.
    nat on em0 proto tcp from 192.168.1.0/24 to 192.168.1.2 port 80 -> (em0)
    

    Или можно локально поднять net/bounce, его поставить слушать 127.0.0.1:8080->192.168.1.2:80 а редирект заменить на:
    rdr on ng0 proto tcp from any to "X" port 80 -> 127.0.0.1 port 8080
    
    Ответ написан
    1 комментарий