• Три дня, которые потрясли нас в 2013
    +1
    В модифицированном нами коде bash оказался другой баг, из-за которого интерпретатор при обнаружении пустой строки в конце конфигурационного файла входил в бесконечный цикл и переставал отвечать на внешние команды.
    А зачем вообще трогать системный bash? #!/usr/local/super_bash/bin/bash прекрасно справляется с задачей установки подходящего интерпритатора для скрипта.

    Да и невозможность штатного обновления выглядит странно. Для меня это звучит примерно так: «скрипты были написаны абы как, без соблюдения требований и стандартов».

    И, кстати, очень хотелось бы взглянуть на пример кода, который заставлял отказываться от обновленных версий в пользу ручной модификации кода интерпритатора (для самообразования, что бы так не делать)
  • Почему дискам нужно дышать (в большинстве случаев)
    +5
    У гелия в дисках есть еще одно существенное отличие от воздуха: вязкость.
    Если в дисках с воздухом пластины расположить очень близко друг к другу, то какие бы они ни были гладкие, между пластинами будут возникать турбулентные потоки, которые буду влиять на головку. У гелия же вязкость меньше и пластины можно расположить ближе друг к другу, без возникновения существенных турбулентных потоков, что позволяет увеличить емкость диска, при сохранении его типоразмера.
  • Дроны для видеосъёмки
    +2
    Еще следует не забывать, что коптеры «под GoPro» идут без камеры в комплекте. Так что + еще и цена камеры. И сигнал с этой самой GoPro нужно как-то доставить на землю (или забыть про FPV полеты).
    Я свои копетры посчитал: у меня получилось что камера + оборудование для передачи сигнала — почти половина итоговой стоимости коптера.
  • Виртуальные ресурсы в Puppet
    0
    Чтож, полагаю что в ошибочности первого пункта вашего review на мой код сомневаться больше не приходится. Я бы с удовольствием прошелся по остальным, но это выходит за рамки зявленной автором топика темы.

    Теперь вернемся к оригинальной теме этого топика — виртуальным ресурсам в puppet.
    Мой пример иллюстрирует лишь то, что использование виртуальных ресурсов избыточно (Ваша просьба примера использования одинаковых пользоватеелй в разных классах/сервисах, впрочем, тоже, поскольку вирутальные ресурсы решают имено проблему вызова одинаковых ресурсов из разных классов). Иллюстрирует он это в тех же терминах, что и автор этого поста: применительно к ресурсу user.

    Но и Вашу просьбу о примере без ответа я оставить не могу (хотя он тут же будет назван «специфическим», но мы же сейчас не решаем какую-то реальную задачу, а обсуждаем общие принципы, связанные с виртуальными ресурсами).
    Итак, пример.
    Распределенное дисковое хранилище, dCache, для организации доступа по протоколу srm, требует установленные на зулах x509 сертификаты, которые должны принадлежать тому же пользователю, от которого dCache запусакется. Сертификаты обновляются каждый год. Тому же пользователю должны принадлежать все конфигурационыне файлы.
    Итого: классу, настраивающему dCache требуется тот же пользователь, что и классу, который кладет сертификаты на сервер.
  • Виртуальные ресурсы в Puppet
    0
    Конечно. Puppet, при передаче в define (или любой тип, вроде user) массива в виде title, разворачивает его на отдельные элементы и делает вызов для каждого элемента. По этому имеем:
    define create_users ($users=$title) {
      $users.each |$user| {
        include "users::$user"
      }
    }
    
    class users {
      User { ensure => present }
    }
    class users::user1 inherits users {
      user{'user1':}
    }
    class users::user2 inherits users {
      user{'user2':} ->
      file{'/mnt/user2':
        ensure => 'directory',
        owner => 'user2',
      }
    
    }
    
    class apache {
      create_users{[ 'user1', 'user2' ]: }
    }
    class other_service {
      create_users{[ 'user1' ]: }
    }
    
    include apache
    include other_service
    

    И в результате:
    puppet apply test.pp
    
    Error: Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: Create_users[user1] is already declared in file /root/test.pp:23; cannot redeclare at /root/test.pp:26 at /root/test.pp:26:3 on node mynode
    Error: Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: Create_users[user1] is already declared in file /root/test.pp:23; cannot redeclare at /root/test.pp:26 at /root/test.pp:26:3 on node mynode
    

    Более того, если мы захотим передать хэш в виде title у нас тоже ничего не получится (но, правда по другим причинам). По этому с массивами нужно быть крайне аккуратным и each внутри define вполне имеет право на жизнь.
  • Виртуальные ресурсы в Puppet
    0
    Про кто-то не прав — спасибо, что обратили внимание. Я тоже немного переборщил.
    А по существу
    1) define успешно принимает массив, each не нужен

    Тут возникнет проблема если два класса решат создать одинаковых пользователей.
    Именно по этому у меня в title поставлено $name, а массив передается через параметр.

    5) Такое ощущение, что классы писал кто-то, впервые увидевший puppet и использующий одинаковые имена пользователей в разных классах (точнее в том, что при правильном дизайне должно быть разными модулями).

    За «впервые увидевший puppet» отдельное спасибо.
    А по существу: вполне бывает так что разным сервисам (в том что 1 модуль у нас настраивает один сервис разночтений же нет? Комбайны делающие все никто не пишет?) требуются одинаковые пользователи (раз уж все с пользователей началось). Значит вполне логично что каждый настраиваемый список имеет список необходимых ему пользователей, в котором пользователи могут пересекаться.
  • Виртуальные ресурсы в Puppet
    0
    Посмотрите мой пример ниже. Если что-то должно существовать вместе с пользователем, то не должно быть возможности это получать без пользователя.

    А оригинально дискуссия была о том, что виртуальные ресурсы не дают дополнительной пользы: все что они делают можно сделать и без них.
  • Виртуальные ресурсы в Puppet
    0
    Да, а теперь вопрос: зачем тут виртуальные ресурсы? Почему бы пользователей не создавать в классах с действиями, например вот так:
    define create_users ($users) {
      $users.each |$user| {
        include "users::$user"
      }
    }
    
    class users {
      User { ensure => present }
    }
    class users::user1 inherits users {
      user{'user1':}
    }
    class users::user2 inherits users {
      user{'user2':} ->
      file{'/mnt/user2':
        ensure => 'directory',
        owner => 'user2',
      }
    
    }
    
    class apache {
      create_users{"$name":
        users => [ 'user1', 'user2' ],
      }
    }
    class other_service {
      create_users{"$name":
        users => [ 'user1' ],
      }
    }
    node 'testnode.example.com' {
      include apache
      include other_service
    }
    
    

    И это же ответ на ваш первый вопрос про действия при создании пользователей. И, за одно, про сравнение кода с include и виртуальными ресурсами.
    Да и неправильно использовать его нельзя: при создании пользователя выполняется все, что должно выполнится при создании пользователя.
  • Виртуальные ресурсы в Puppet
    0
    Допустим, нужно создать пользователя и положить ему bashrc, ssh ключи или сделать владельцем каталогов. В общем любая операция, связанная с пользователем, которая должна быть выполнена и без которой пользователя создавать не следует.
  • Виртуальные ресурсы в Puppet
    0
    Именно про это я в своем комментарии и написал.

    А мой пример с «1 пользователь = 1 класс» начинает прекрасно работать в тот момент, когда кроме создания пользователя нужно делать что-то еще, специфичное для пользователя. С виртуальными ресурсами, на сколько я понимаю, такой фокус не сработает.
  • Виртуальные ресурсы в Puppet
    0
    Я в вашем примере одного не понял: зачем вводить виртуальные ресурсы?
    if ( ! defined(User['webUser']) ) {  user { 'webUser': ensure   => present } }
    

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

    Но можно обойтись и без виртуальных ресурсов: один пользователь = 1 класс (ну или подкласс в users). И делать include каждого такого класса-пользователя. Эффект будет точно таким же.
  • Тестирование производительности популярных (и не очень) CMS
    +3
    А скорость работы сайта состоящего из index.html не тестировалась?
    Да, по мере роста количества материалов на сайте ситуация может существенно измениться, но резульат такого теста будет говорить о многом.

    В CMS важно не то как быстро она делает SELECT count(*) FROM posts и убеждается что постов ноль, а то как она себя ведет под реальной нагрузкой.

    Мне бы, например, было бы нтересно посмотреть на эволюцию времени отклика в зависимости от количества записей при обращении к случайным страницам. Увидеть «полочки», понять почему они происходят и как на «полочке» продержаться подольше.
  • Простой способ дополнительной защиты: SSH — ALERT
    0
    Еще в вашем случае уместно такое решение для динамических IP:
    1. Создаете отдельную цепочку для динамических IP и 22 локального порта на сервере доступа
    2. По крону, раз в 5 минут, например, цепочку очищаете и добавляете актуальные IP

    Что бы получать актуальные IP можно воспользоваться сервисами типа DynDNS.
    Это, конечно, скрывает потенциальную дыру в безопасности (через атаки на DNS), но это все же лучше чем пускать всех подряд.
  • Простой способ дополнительной защиты: SSH — ALERT
    0
    Первым шагом мы через систему управления конфигурациями распространили на все физические сервера ssh ключи, для входа на них с серверов доступа без пароля

    А чем не устроили парольные ключи и ssh-agent?
    В идеале, для доступа на клиентские серверы не должен использоваться ключ с центрального узла. Только персонифицированные ключи администраторов, защищенные паролями.

    Те все должно происходить так:
    1. Админ экспортирует свой ключ для целевого сервера в ssh-agent и заходит на управляющий сервер («сервер доступа»)
    2. Используя свой персональный ключ (пробрасываемый агентом) заходит на целевой сервер

    Это позволяет решить проблему со взломом центарльного сервера: на нем нет никаких ключей, тем более беспарольных, а значит доступ к нему можно по ssh открыть, не боясь что при его взломе получат доступ к внутрененй инфраструктуре. + такой подход позволяет разграничивать доступ для админов: они могут иметь один аккаунт на центральном сервере, но при этом иметь доступ только на те узлы, на которые должны попадать (не говоря уже о том что можно хоть на каждый сервер уникальный ключ иметь и не как не влиять при этом на остальных администраторов)
  • FAQ про работу сотовой сети для самых маленьких
    0
    Те даже после переноса номера абонент авторизуется в своей «старой» сети? Впрос был именно про авторизацию и настройку приоритетной сети для SIM-карты.
  • FAQ про работу сотовой сети для самых маленьких
    0
    А что происходит с авторизацией и «настройкой не цепляться к чужим отечественным сетям», при смене оператора с сохранением номера? Как это технически реализовано?
  • Таможенным пошлинам на посылки все-таки быть, причем скоро
    0
    Соглашусь.
    Но мне ближе linux-way, если позволите такую формулировку: одна утилита делает одну операцию, но делает ее хорошо.
    Но если мне предложат иллюзию выбора в виде двух альтернатив: ФТС у черта на рогах и почта, я подумаю, но выберу почту.
    Хотя мне был бы более удобен сайт, который умеет принимать различные способы оплаты и проставляет статус посылки «оплачено», который виден на почте. Оплатил с карты дома в два часа ночи, на следующий день, как обычно, пришел и получил.
  • Таможенным пошлинам на посылки все-таки быть, причем скоро
    0
    А может не надо такого счастья? Хватит с них календариков, пенсий, журналов, переводов, комуналки и всего того, что редко ассоциируется со словом «почта».
    А еще, по крайней мере на нашей почте, не принимают пластиковые карты, что процесс явно не ускоряет.

  • 3D-дисплеи для смартфонов
    +1
    2d в 3d для звонков? Но зачем? Современные смартфоны — далеко не образец миниатюрности и вторую фронтальную (или заднюю, в зависимости от расположения 3d дисплея) камеру, расположенную на достаточном расстоянии от первой себе позволить могут.
    А маркетологи как-нибудь да объяснят, что всем необходим «смартфон с тремя камерами».
  • Через трудности и ошибки к безупречному интерфейсу кассы самообслуживания
    +1
    Можно, например, светодиодной лентой делать окантовку зоны, с котрой сейчас нужно работать.
    Нужно провести карту магазина — засветили терминал для карты магазина. Нужно банковскую — засветили банковский терминал.
    + цветовая дифференциация штанов: цветом можно подсказывать статус операции, но тут есть риск получить недопонимание из-за разной трактовки цветов или слишком усложнить визуальное восприятие.

    Но раз на вас только ПО, то этот трюк можно делать с картинками: на картинке с картой магазина акцентировать внимание клиента на зоне, где расположен ридер магазинной карты, цветом, например, выделив банковский терминал красным, а магазинный зеленым.
  • А теперь и gmail.com: в сеть выложена база на 5 000 000 адресов
    –2
    mail.yandex.ru@gmail.com, например, через такой фильтр проходит.
    '@yandex\.ru$' тогда уж…
  • Настройка современного Puppet сервера с нуля
    0
    Большом — это каком?
    У нас на, примерно, 300 клиентских серверах тормозов не замечено.
    Правда, мы готовим puppet подругому: каждый хост имеет локальную копию всех манифестов, стянутую с мастера.
    При параллельной массовой синхронизации ничего не тормозит.
  • Хитрая канистра
    0
    Упаковка из 10 экспресс-тестов от конторы TestWay (только что нашел в гугле) стоит 250р.
    Но и этим никто, из моих знакомых, не пользуется.

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

    Если, как предложил SLY_G, проверять раз в месяц, то у вашей бизнес-модели печальное будущее: 3000/25 = 120 месяцев. Те покупка «индикаторной канистры» окупится только через 10 лет. Проверять чаше — надоест очень быстро.
  • Хитрая канистра
    +5
    Типичный юзкейс заправки: приехал, заправился, расплатился, уехал.
    Вы сюда добавляете еще два действия: налил в канистру, расплатился.
    Заморачиваться люди не будут. Тем более, есть индикаторные полоски и прочие экспресс тесты качества топлива. Много ваших знакомых, например, ими пользуются?
  • Купить квадрокоптер и попрощаться с ним
    +3
    У нас разные взгляды на слово «бюджетно». 600$ — это, на мой взгляд взляд нифига не бюджетно. И на таком учиться — как-то дорого, что ли. Я имел ввиду коптеры в ценовом сегменте <100$, где мозгов почти ноль и что бы им рулить нужно именно умение, навык пилотирования.

    А за фантом отдельное спасибо — я задумался и посчитал сколько мой самосборный стоит ) Приятно удивился )
  • Купить квадрокоптер и попрощаться с ним
    +1
    Второе, что сильно спасает, — передача телеметрии на базовую станцию.
    Не знаю есть ли на покупных моделях, но я в своем самосборном сделал передачу GPS координат в видеосигнале с коптера (готовлюсь летать с FPV). По этому «последняя точка» на видео есть всегда и даже если взлет без спутников, то они подхватываются в процесе.
  • Купить квадрокоптер и попрощаться с ним
    +2
    Учиться летать нужно не на дорогих игрушках, а на простых коптерах, что бы понимать как все устроено без автоматики, быстро ориентироваться в ситуации и не паниковать если что-то идет не так. ну и два дня на освоение коптера — это очень мало.

    А еще есть такие клевые штуки — пищалки для поиска моделей, которые начинают работать если модель теряет сигнал от пульта.
  • Автономная солнечная электростанция для ретранслятора сотовой связи. Прыжок в неизвестность и что из этого получилось
    0
    Гора, тут, как я понимаю, для вышки оператора.
  • Автономная солнечная электростанция для ретранслятора сотовой связи. Прыжок в неизвестность и что из этого получилось
    +1
    А над системой поворота батарей не думали? Летом проблем со снегом нет и можно их развернуть под правильным углом (я ведь прав, что чем перпендикулярнее падают солнечные лучи, тем выше эффективность солнечной панели?). Да и на Солнце можно попробовать ориентировать. Затраты энергии на это минимальны, а польза может оказаться существенной.
  • Делаем автополив комнатного цветка на Arduino за 15 минут
    0
    Без пополнения резервуара — мало пригодно. А подключаться к водопроводу — страшно (хотя и есть хорошие нормально-закрытые клапаны с электронным управлением).
    Я, в итоге, остановился на 20л емкости и дозаторе из двух клапанов (с поочередным открытием). Но, пока, увы, на уровне идеи.
  • Парадокс выбора: больше не значит лучше
    +3
    Когда магазин говорит: «мы рекомендуем вот это» (как раз ограничивая список выдачи товаров небольшим списком) у меня возникает ощущение что мне предлагают что-то хорошее (1-2 товара), а остальная часть списка формируется из того что продается плохо и это нужно кому-то впарить.
  • Сервисы экспресс-доставки прекратили доставку посылок в Россию
    –1
    И ни одной ссылки на ФТС.

    В связи с поступлением запросов СМИ об изменении правил таможенного оформления грузов в адрес физического лица для личного пользования Шереметьевская таможня сообщает следующее: «Порядок таможенного оформления товаров для личного пользования, доставляемых перевозчиком в адрес физического лица в Шереметьевской таможне не изменился. Такой порядок по прежнему регулируется гл. 49 Таможенного кодекса Таможенного союза и Соглашением между Правительством РФ, Правительством Республики Беларусь и Правительством Республики Казахстан от 18.06.2010 «О порядке перемещения физическими лицами товаров для личного пользования через таможенную границу Таможенного союза и совершения таможенных операций, связанных с их выпуском».

    Ну и, на всякий случай, правила едины для всех таможенных постов. Так что речь про Шереметьевскую только потому, что про нее начали говорить.
  • Кружок по программированию для школьников
    +1
    Они спрашивают про то что знают (по крайней мере, в моем случае было именно так).
    Заинтересовать нужно прежде всего задачей. Заинтриговать, а потом помочь решить так, что бы дети были довольны результатом.
    Самое простое и наглядное, что можно получить на выходе,- картинка. Значит задачи нужно подбирать такие, из решения которых можно получить рисунок, дополнив который минимальными словами, можно объяснить суть задачи. «Вот Солнце. Вот так вокруг него крутится Земля. А вот так, на самом деле, движется Луна.» — для такой картинки даже дифуры решать не нужно, если принять траектории за окружности и не притягивать Луну к Солнцу. А можно и притянуть, и увидеть отличия «простого» мира от «чуть боле реального».

    Еще красиво получается если предложить им смотреть на жизнь с точки зрения алгоритмов. Составить алгоритм похода в школу, приготовления еды, игры в теннис (футбол, волейбол, что угодно) итд. И искать изъяны не самому, а вместе со всеми остальными учениками. Это сильно поможет в будущем, при решении реальных задач.
  • Кружок по программированию для школьников
    +1
    Нам в 8 классе показали уравнение грузика на пружинке и сказали, что решение вот такое, потом узнаете почему. И ничего, хорошо жили.

    Наглядную задачу, которая по силам на соответствующем уровне знаний, найти не сложно. В худшем случае можно графки интересных функций рисовать.
    На сколько я успел понять, детям в этом возрасте очень важна наглядность получаемых результатов.
  • Кружок по программированию для школьников
    +2
    Можно решать задачи. Дать, например, работу с графикой и строить траектории движения планет (в математику и интегрирование не особо усугубляясь). Как грузики на пружинках качаются (три грузика на трех пружинках в вакууме с взаимным притяжением?).
    Задачи в духе Ханойской башни; симуляции «Жизнь» и иже с ней, показывающей эволюцию системы во времени.
    Фракталы порисовать.
  • Китайский луноход прислал фотографии
    0
    Посадочный модуль?
    Он же не сам прилунился (велик шанс что-нибудь при посадке поломать), а в «ящике», и из него выехал.
  • Размещение заказов у китайских поставщиков
    0
    А как дело обстоит с производством деталей по чертежам в России?
    Есть ли «домашние» компании, которые, например, по SolidWorks модели сделают пробную партию, с возможностью наладки серийного производства? Не изучали предложения?
  • Майнинг и как он работает: матчасть
    +1
    Так вот. Чтобы все признали блок валидным, его хэш должен быть меньше определеного всеми значения, называемого сложностьют.

    Больше сложность -> больше найденных блоков подходит под условие -> блоки генерируется быстрее.
    В реальности, вроде, наоборот.
  • pacemaker: как добить лежачего
    0
    Смотря как сеть сделана.
    Если стрелять не через тот же канал, через который осуществляется связь между нодами, то да, бессмысленно и опасно.
    А если и выстрел и связь по одному линку будут проходить (грубо, 4 линка, eth+ipmi от каждой ноды, будут приходить в один коммутатор\маршрутизатор), то:
    1. eсли упал только eth линк, то выстрелят оба, но у одного eth линка нет и его выстрел не дойдет до адресата;
    2. eсли упали и eth, и ipmi линки, то выстрелят оба, ни один STONITH не сработает, ресурсы мигрировать не начнут.
  • pacemaker: как добить лежачего
    0
    Если требуется строго монопольное использование ресурса, то это без STONITH не обойтись.

    Про кворум спасибо что напомнили. Метод «настроил и забыл» плох именно тем, что настроил и забыл. Сейчас дополню.