• Резервное копирование базы mysql и файлов на удаленный FTP — Python 3
    +1

    Про MySQL. Зависит от сложности и размера БД, но я бы посоветовал обратить внимание на следующее:


    • В приведенном варианте восстановить БД отдельно взятого клиента так просто не получится. Лучше бекапить каждую БД отдельно.
    • Если у кого-то были процедуры, то их в бекапе не окажется.
    • mysqldump делает дамп в текстовом виде. Если БД большая, то это и долго, и много места занимает. Потому лучше вывод mysqldump сразу передавать в gzip, минуя промежуточный этап записи на диск.
    • Можно легко поймать ситуацию когда целостность данных в дампе нарушится. Потому хорошо добавить ключ --single-transaction.
    • Посмотреть percona xtrabackup. В этом случае получится делать бекап всех/некоторых БД быстро и не мешая пользователям, и с гарантированой целостностью.
  • Работа с Ansible — задачи с несколькими неизвестными
    0
    Сразу скажу, я не очень разбираюсь во внутренностях Zookeeper.

    По идее в кластере zookeeper-ам надо вписывать в конфиг уникальное значение zoo_id (0-255).
    Плагин берет указанное значение (node_zoo_id), либо в случае если оно не указано — номер хоста из группы «zookeeper».
  • Работа с Ansible — задачи с несколькими неизвестными
    0
    В моем случае инвенторий был статический, и выкрутился написанием плагина на питоне:

    # vars_plugins/zookeeper_vars.py
    from ansible import errors
    from ansible import utils
    import ansible.constants as C
    from ansible.callbacks import display
    
    class VarsModule(object):
    
        def __init__(self, inventory):
            self.inventory = inventory
            self.group_cache = {}
            self.known_zoo_ids = []
    
        def run(self, host, vault_password=None):
            inventory = self.inventory
            group = inventory.get_group('zookeeper')
            zk_addr = []
            if group is not None:
                hosts = group.get_hosts()
                for idx, host in enumerate(hosts):
                    host_vars = host.get_variables()
                    addr = host_vars.get('node_private_ip')
                    if addr is None:
                        addr = host_vars.get('ansible_ssh_host', host.name)
    
                    zk_port = host_vars.get('zookeeper_port', '2181')
                    zk_addr.append({'host': addr, 'port': zk_port})
    
                    node_zoo_id = host_vars.get('node_zoo_id', idx + 1)
                    self.assign_zoo_id(host, node_zoo_id)
    
            result = {}
            result['zookeepers'] = zk_addr
            result['zookeepers_list'] = ','.join([':'.join([i['host'], i['port']]) for i in zk_addr])
    
            return result
    
        def assign_zoo_id(self, host, zoo_id):
            if zoo_id not in self.known_zoo_ids:
                host.set_variable('node_zoo_id', zoo_id)
                self.known_zoo_ids.append(zoo_id)
            else:
                display("warning: node_zoo_id of %s is already used!" % zoo_id, color='purple')
                new_zoo_id = int(zoo_id) + 1
                if new_zoo_id > 255:
                    raise errors.AnsibleError("zoo_id (%s) for host %s is over 255!" % (new_zoo_id, host.name))
                self.assign_zoo_id(host, str(new_zoo_id))
    
  • Рубин на рельсах: продакшен и деплой для чайников
    0
    Минималистичный конфиг того же monit'а не повредит. Ну и как минимум упоминание о том что этим стоит озаботиться.
  • Рубин на рельсах: продакшен и деплой для чайников
    +6
    Как правильно заметил farcaller, именно для этого и есть Gemfile.lock.
    И нет, не может если:

    1. в репозитории хранится как Gemfile, так и сгенерированный Gemfile.lock
    2. и если выполняется все через bundle exec
  • От младшего разработчика к старшему
    +2
    Одни со временем становятся старше и умнее, другие — просто старше.
    «Потому что я так сказал», «потому что я лучше знаю» и прочие — не аргумент. Это следствие некого опыта, проб и ошибок. И надо докопаться до причины.
    Иногда таки приходится делать плохо если «сделать хорошо» просто нет возможности (hotfix для упавшего продакшена вместо переписывания библиотеки спровоцировавшей падение, ...).

    Если всё действительно упирается в заросшего мхом и непробиваемого для здравого смысла руководителя то есть же вариант сменить место работы.
    И я не поверю что программисту с головой на плечах и горящими глазками тяжело найти работу.
    Хотя легко поверю что это будет чертовски тяжело для замшелого программера не желающего учиться чему-то новому.
  • От младшего разработчика к старшему
    +3
    Что бы ни говорил старший (и вероятно более опытный) сотрудник — это аж никак не отменяет необходимости думать своей головой и как минимум понимать почему посоветовали сделать именно так.
  • Лонч-трейлер Metal War Online
    +1
    Решил еще раз посмотреть на таблички. Где говорится что скорость «АСК» — 80км/ч. Скорость «Зверя» — 40км/ч. Как, как «зверь» его догнал?
  • Лонч-трейлер Metal War Online
    +1
    Черт. Cmd+enter работает неожиданно.

    б) таки добавить 10-20 секунд чтобы закрыть явные нестыковки
  • Лонч-трейлер Metal War Online
    +1
    Вы знаете, это звучит как «мы вот как-то так сделали, а потом сделаем лучше». В этот же минутный трейлер можно было а) не добавлять явную последовательность, а сделать набор разных боевых ситуаций
  • Лонч-трейлер Metal War Online
    +13
    Эффекты — 4. Продуманность минутного ролика — 0.

    Едет «АСК» по дороге, и тут СОВЕРШЕННО НЕОЖИДАННО сзади него обнаружился «Зверь». Метрах в 100. В пустыне. Иначе почему бы башня не была развернута в его сторону с самого начала?

    И вот мы видим как артиллерия стоит в чистом поле. Где патрули и прочие наблюдательные посты? К ним через пустыню несутся шумно перестреливаясь как миниум 2 машины. По пустыне. Где их видно еще на горизонте. И по радио никто ничего не слышал, и глазками не видел. Не говоря уже о радарах. Но вот в ста метрах от артиллерии вдруг радиосвязь появилась, и внезапно «тролли» внезапно обрели способность видеть.

    Далее. Подъехал «Барьер» дабы отремонтировать подбитую машину. Еще одна машина у него в прикрытии. Тут мы видим что за «зверем» ехало еще 2 машины. И тут они рванулись в чистое поле гоняться за шустриком. Перед артилерийскими установками. И это вместо того чтоб уничтожить стоящие на дороге цели.

    В общем, выглядит красиво. Но пока-что не более того.
  • bash: Бэкап без лишнего ПО
    0
    Большой минус — история хранится с самого первого бекапа. И если в него попадет что-то лишнее и большого размера — оно там так и останется если не транкейтить git-репо периодически.
  • Расширяем рамки вэба. Релиз Chrome
    +6
    Обновился и точно, в Lion скролы наконец-то исчезают, и вернулся фулскрин.
  • «Не спеши ты нас хоронить»: вторая жизнь технологий
    +1
    Тут есть проблема. Когда кодишь, ты видишь расположение клавиш которые нажимаешь. Ок, для слепого метода набора — ощущаешь. Потому просто в перчатках позиционировать руки в воздухе ни на что не опираясь будет очень затруднительно.

    Потому требуется комбинация из очков/шлема/etc с дополненой реальностью, чтобы сквозь обычные прозрачные очки было видно клавиатуру/… в воздухе — дабы сопостовлять положение рук с положением объектов и сразу же видеть реакцию системы на «ввод».
  • «Не спеши ты нас хоронить»: вторая жизнь технологий
    +2
    Из хорошо забытого можно выделить шлемы виртуальной реальности — в свое время именно уровень развития железа сдерживал их.
  • Администрирование сети компьютеров с Ubuntu через web-интерфейс
    0
    А почему бы вместо того чтоб пускать апач от админа не взять apache2-itk в котором только этот вхост пустить из-под админа? Либо же вообще — cgi-скрипт на котором стоит setuid.
  • А мы пойдем другим путем. Перемещаем модель в базу данных
    0
    Если думать об этом заранее, то можно написать приложение так, чтобы создание API занимало минут 5.
    Не могу сказать как в ZF, а в Rails используя RESTful routes можно уже облегчить себе жизнь, и данные запрашивать в XML/JSON/… Для простых случаев этого более чем достаточно.

    XML-RPC/SOAP/… также никто не отменял для более тяжелых случаев.
  • Установка и настройка Linux Ubuntu 10.04 LTS под Hyper-V в Windows Server 2008 R2
    +1
    hdparm, dd.

    SCSI и есть синтетический.

    Еще плохо что загрузочный диск может быть только IDE.
  • Установка и настройка Linux Ubuntu 10.04 LTS под Hyper-V в Windows Server 2008 R2
    +1
    Производительность IDE-дисков у меня была просто чудовищно малой. Подключение дисков как scsi эту проблему решало, но при активном использовании ядро раз в дня два впадало в панику. Обычный LAMP-стек на ubuntu 10.04 server x86_64.
  • Prostopleer для iPhone, RIAA и просьбы убиться об стену
    0
    Увы, не скажу что столь активно как хотелось бы.
  • Prostopleer для iPhone, RIAA и просьбы убиться об стену
    0
    Приложения для iphone где надо вводить текст на ipad-е выглядят ужасно. Не знаю как кого, но меня клавиатура ipad-а пленила. После нее клавиатура iphone до ужаса мелкая и неудобная.

    Раз уж про порт заговорили — аналогичное пожелание и к pushme.to.

    Не обязательно что-либо менять в UI для ipad, я был бы весьма рад только лишь нативному полноразмерному интерфейсу.
  • 1 млн рублей за хостинг 96 сайтов МЧС на 2011-й год
    0
    Достаточно зайти на сайт www.depocomputers.ru/config_depo_c1569_i130286_m2.aspx и прикинуть во сколько обойдутся 5 серверов. Это примерно 500к р. Минимальная зарплата одного администратора, который сможет делать требуемое, составляет 70к в месяц. Ой, а ещё надо посчитать сколько будет стоит подключится к 5 магистральным провайдерам. Я думаю вы и сами можете прикинуть примерную цену. И кучу всякой мелочи, которая возникнет в течении всего контракта. Тендер явно писался под кого-то конкретно, цены явно слишком занижены.
  • Ubuntu, KVM, libvirt и Hetzner
    0
    Спасибо за совет! Но, имхо, по ssh вместо netcat оверхед будет больше.
  • Ubuntu, KVM, libvirt и Hetzner
    0
    Я отнюдь не спец по libvirt.

    Мигрировать влоб, похоже, не выйдет — таки понадобится сетевое хранилище.

    Но перенести машинку мне кажется вполне просто скопировав ее описание (host.xml / virsh dumpxml...) и перенеся вручную сами файлы либо используя netcat + dd перенести данные с раздела.
  • Ubuntu, KVM, libvirt и Hetzner
    0
    Черт, промахнулся и ответил ниже.
  • Ubuntu, KVM, libvirt и Hetzner
    0
    У меня OS X, так что virt-manager как-то не катит.

    Кроме того, сервер удаленный и на нем virt-manager-ом не пахнет по причине отсутствия X11.
  • Простой скрипт для инкрементального бекапа директорий
    +2
    VCS помог бы, но при условии что у него можно было бы чистить историю как в rdiff-backup:
    rdiff-backup --force --remove-older-than 20D /backups
  • Канобувости, 45-й выпуск
    +1
  • LittlePicker — продолжение истории
    0
    Спасибо тебе, добрый человек!
  • Мои вторые уши
    +1
    После AKG K324P взял эти. Звук отличается очень существенно и не в лучшую сторону: у Sennheiser больше низов, нормально средних и отвратительно с высокими.
    Может мне такие неправильные попались, но на следующий же день вернул обратно.
  • Redis — продвинутое key-value хранилище. Опыт применения в нагруженных проектах
    +1
    В слайдах — ключевые фрагменты (возможно, несколько упрощенные).
    А на гитхабе полновесный сорс приложения с кучей комментов.
  • Министерство образования и науки Украины… Образование 2.0 говорите?
    0
    slowloris должен справиться.
  • Что сделать, чтобы фокусы всяких Макхостов были не страшны?
    0
    Это да. Но у нормального хостера AS как правило своя есть. Так что, вопрос лишь в том, почему этот подход не используется ;)
  • Что сделать, чтобы фокусы всяких Макхостов были не страшны?
    0
    Перевод NS все же плох из-за кеширования записей.
    RoundRobin DNS тоже не слишком хорош. Поправьте если ошибаюсь, но в RR часть запросов будет все же приходить на мертвый сервер.

    Самым лучшим вариантом мне кажется наличие автономной системы (АС). Но это уже решение на уровне самого хостера.
    Имея блок провайдеро-независимых адресов и две фермы в разных ДЦ можно очень быстро и прозрачно для клиента переключать фермы в случае падения одного из ДЦ.
    На вопрос репликации и прочего — раздавать хосты при помощи VPS. В самом страшном случае — одна VPS на весь сервер, оверхед незначиельный. Xen (в свежей версии 4.0) и VMWare точно имеют решения по поддержанию HA-кластеров.
  • Что сделать, чтобы фокусы всяких Макхостов были не страшны?
    +9
    На последней фразе подавился.
  • Клонирование системного диска штатными средствами Linux за 30 секунд
    0
    Я чаще всего делаю снапшот lvm-ом, монтирую, делаю тарбол и его уношу куда-нибудь. Но да, решение не самое лучшее.
  • Клонирование системного диска штатными средствами Linux за 30 секунд
    0
    partimage
  • Почему гику стоит переходить на Linux
    0
    Да, в ubuntu kernel team отправил, там активное движение по этому поводу шло. И сейчас периодически приходят апдейты, но железо уже мертво чтоб проверить.

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

    Но все это дело было года 3 назад, уже вполне могли и полечить.
  • Почему гику стоит переходить на Linux
    0
    Всмысле, в биосе настроек пробуждения нет. Таймеры никакие не стояли, все внешние девайсы были отсоединены. От чего мог проснуться — я даже не догадываюсь.

    В любом случае в ближайшее время повторить эксперимент не выйдет, так как пациент чуть-чуть мертв (видяшка).
  • Почему гику стоит переходить на Linux
    0
    В биосе там почти ничего не настраивалось. Случалось спонтанное просыпание всего дважды, так что не биос.
    Не просыпалась как правило после второго слипа видео.