• Ansible. Чем отличаются raw/command/shell?

    @dormin
    raw отличается от command и shell тем, что не выполняет дополнительную обработку выполнения команды. Эти дополнительные обработки присутствуют в почти любом модуле Ansible. Модуль raw передает команду, как есть в "сыром" виде без проверок.
    Модули command и shell отличаются тем, что в модуле command команда выполняется без прохождения через оболочку /bin/sh. Поэтому переменные определенные в оболочке и перенаправления-конвееры работать не будут. Модуль shell выполняет команды через оболочку по умолчанию /bin/sh. Поэтому там будут доступны переменные оболочки и перенаправления.
    Ответ написан
    Комментировать
  • Почему не стартует zabbix-agent?

    t_q_l
    @t_q_l
    Интересная личность
    Не в SELinux ли дело?

    Для RedHat/CentOS попробуйте так:

    yum install policycoreutils-python 
    semanage permissive -a zabbix_agent_t
    Ответ написан
    Комментировать
  • Добавить запись в таблицу PostgreSQL, ругается на id?

    @rudikov
    Если у Вас тип integer, то нет.
    Для инкремента нужно использовать тип SERIAL.
    Ответ написан
    4 комментария
  • Подозрительный вход в instagram, взлом или баг системы?

    @dred0l
    Очень похожая ситуация, товарищи.
    Началось на днях, поэтому спешно зарегистрировался, чтобы поделиться.
    У меня ещё больше странностей.
    Стоит двухфакторка, но сегодня в приложении вылетело окно с "Мы обнаружили необычную попытку входа, Москва, подтвердите, что это были Вы... Это я, это не я". По времени напрашивается вывод, что это ни я, ни мое устройство. Мой айпи не московский. Никаких смс не было. В разделе со входами естественно пусто. Также в первых числах февраля пришло на почту уведомление о входе вообще с города Чебоксары, с Chrome Android. Я таких входов не производил, а самое странное, как и у автора, это не пришедшая смс о двухфакторке. Я пытался повторить эти два феномена разными способами, и вызывать подобное ни с VPN, ни с разных устройств не удалось.
    Мой пароль подобрать (например зная старые) нельзя, на других сайтах этот пароль не использовался, фишинг отметается, потому что до этих двух казалось бы невозможных странностей, я и сменил пароли. А началось все эти аномалии с подозрительного входа ("это был я, это был не я") в мой пустой аккаунт. Тот пустой аккаунт был без двухфакторки, пароль тоже уникальный, устройство подозрительного входа: веб-версия десктопа (это снова не мог быть я). За тот аккаунт я не испугался, потому что смог вызвать такое окно (это был я,это был не я) просто введя свои данные, но с нового устройства - у меня открылось окно с подтверждением номера, а на основном устройстве то самое "это я,это не я". Я конечно удивился, и именно поэтому сменил пароли везде. После чего кто-то отправил ссылку восстановление моего _основного_ аккаунта, сообщение не было прочитано, как будто кто-то специально просто зашёл и нажал забыли пароль в Инсте - ничего странного, подумал я, перепроверяя все ли хорошо у меня с защитой. И вот после этого и случились те две необъяснимые странности, которые повторить и вызвать сам я уже не смог. Я уже несколько часов перебраю объяснения, но пока так их и не нахожу.

    Итого. Под чистую совпадают 1, 2 и 4 пункт автора. Но локации подозрительных входов определяются. А ситуация, которая настораживает - это отправленный реквест на восстановление аккаунта, который не был прочитан никем (а значит почта была и остаётся защищённой). А значит это больше похоже, что есть кто-то по другую сторону. А не просто баг с рассылками и входами от самой Инсты.

    UPD. Это жесть. Продолжил искать таких же людей как я и автор, после сообщения m0ze, что якобы это частое явление сейчас. Нашел небольшую связь - это недавно купленный телефон у всех, у кого возникает такая жесть. Вшитый вирус?
    Ответ написан
  • Как вернуть "любовь" к программированию?

    @evgeniy_lm
    То чем ты занимаешься называется говнокодерство и к программированию ни какого отношения не имеет. В программировании главное не написание кода, а решение проблем конкретных пользователей. Программирование это не более чем работа ее нельзя любить или не любить, ее надо работать. Любить нужно красивых женщин.
    Ответ написан
    Комментировать
  • Какие проблемы в программировании решает ООП?

    @AlexSku
    не буду отвечать из-за модератора
    Надо просто знать историю появления объектов.
    Вот пример из Паскаля. Сначала были простые типы: логические, целые и дробные числа, символы. Много одинаковых данных привело к массиву (в т.ч. и символьным строкам). Добавились диапазон и множество. Разрозненные данные привели к записи (record, у сишников - структура). Добавили в структуру функции - появились объекты и классы. Появилось наследование и динамические (виртуальные методы). Отдельно пришли интерфейсы (структуры с одними функциями).
    Ответ написан
    Комментировать
  • Где купить PI блок /22 IPv4 адресов? Посоветуете по цене?

    @mr_denisters
    У нас возможно купить ipv4 блоки адресов /22 /24 по выгодным ценам, официальный брокер RIPE поможем получить на себя чистую /22 /23 /24 PA сеть, зарегистрировать автономную систему.
    Ответ написан
    3 комментария
  • Где купить PI блок /22 IPv4 адресов? Посоветуете по цене?

    @ivanm38
    посмотри вот тут forum.nag.ru/forum/index.php?showforum=39
    иногда проскакивают хорошие варианты
    Ответ написан
    Комментировать
  • Как язык программирования лучше подойдёт для написания парсеров?

    @IvanGeso
    Релейщик
    Честно говоря, не пробовал писать парсеры на чем-то другом, но как по мне, Python - отличный выбор для этой задачи. Смотрите в сторону библиотеки BeautifulSoup 4 или фреймворка Scrapy. Прекрасные инструменты.
    Ответ написан
    2 комментария
  • Как язык программирования лучше подойдёт для написания парсеров?

    Lillipup
    @Lillipup
    Allons-y, Алонсо!
    Python с Scrapy или beautifulsoup
    Ответ написан
  • Как правильно создавать тест-кейсы для формы регистрации?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Если форма заполнена не полностью, то кнопка отправить должна быть неактивна.
    Если форма заполнена невалидными данными и/или неполностью - кнопка "Отправить" должна быть неактивна и неверно заполненые поля должны показывать подсказку.
    Для каждого поля нужно проверять, что разные ошибочные варианты ввода в это поле распознаются. Переполнение поля тоже.
    Если есть необязательные поля, нужно проверить, что их заполнение, незаполнение или неверное заполнение не влияет на результат. Если есть кнопки переключатели (radio buttons) можно проверить выставляется ли значение по умолчанию если должно или не выставляется если не должно. Бывает что выставляется хотя не должно.

    Кроме этого навигацию по полям табуляцией можно проверить. Можно проверить, что при перезагрузке страницы введенные в формуляр данные не сбрасываются, если они не должны сбрасываться.
    Если поля поддерживают автозаполнение можно проверить и это.
    Если формуляр многостраничный - нужно проверить навигацию между страницами, что введенные данные не теряются. Что их можно отредактировать вернувшись назад.

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

    @Dim1urg3r
    Если что, то это уголовно наказуемо, но вот этичный хаккинг очень даже нет и хорошо оплачивается (смотря где, конечно)
    Советую для начала глянуть пару курсов, чтоб понять основы. К примеру, на сайте udemy поищи ethical hacking. Все стоящие курсы на английском, без английского в it сфере делать нечего. Удачи, будущий мистер Алдерсон)))
    Ответ написан
    Комментировать
  • Я хочу стать заняться хакингом сайтов. Какие мне нужно знать языки программирования (разметки)?

    sabramovskikh
    @sabramovskikh
    Для начала оформить подписку на журнал "хакер". Скачать все прошлые выпуски и перечитать.
    Далее выучить ассемблер, научиться декомпилировать программы. Выучить sql. Самому попробовать создать и воспользоваться sql инъекцией.
    После поступить на информационную безопасность и закончить её с красным дипломом.
    Ответ написан
    Комментировать
  • Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

    @red-barbarian
    принцип инверсии - самый крутой принцип.
    разработка начинается с головы. Т.е. если у вас задача проектировать программу, то вы начинаете строить ее с самого главного - ее бизнес логики. Вы не будете знать какие сущности логика будет использовать. Это возникнет из процесса. Поэтому, все что бизнес-логике нужно вы определяете интерфейсами.
    В таком случае получится, разбиение логики и сущностей которые ее обслуживают.
    из-за того, что первая меняется быстро и часто (по разным причинам, даже не зависящих от девелопера) это разбиение очень полезно. Главное, можно отдать разработку обслуживания другим людям, мы не в курсе библиотек которые будут применяться (и можем менять из), мы легко можем тестировать свою логику.
    Примерно так.
    Интерфейсы хорошо применять на границах слоев программы. Это дает возможность тестирования и разбиения.
    Ответ написан
    Комментировать
  • Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

    @kttotto
    пофиг на чем писать
    Нет, не надо. Не нужно усложнят проект там где это не требуется.
    Есть правило первой пули: сначала Вы пишите максимально просто и только когда приходят первые изменения, которые требуют абстракции, тогда только Вы ее выделяете.
    Ответ написан
    2 комментария
  • Как понять принципы ООП?

    onqu
    @onqu
    weasy
    Чтобы понять принципы ООП, книги не требуются. Взгляните вокруг себя. Всмотритесь в любой объект в реальном мире, опишите его наиболее подробно (материал, размер, цвет, вес, плотность, составные части и т.д.), это будут его свойства. Опишите, что и каким образом этот объект умеет делать (включаться, складываться, кушать электроэнергию, взаимодействовать с другими объектами или окружающей средой и т.д.), это будут его методы. Подумайте, для чего используется этот объект, что ему нужно изменить или добавить, чтобы использовать в других условиях или целях, и на основе всех собранных знаний создать более удобный экземпляр, это будет наследование и полиморфизм. Теперь немедленно забудьте обо всем, используйте объект по назначению, это будет инкапсуляция. Дальше останутся только тонкости выбранного Вами языка, шаблоны, методологии и прочаяие ересь тренды.
    Ответ написан
    2 комментария
  • С чего начинать проектировать приложение?

    Jeiwan
    @Jeiwan
    Сначала нужно расписать функционал приложения по пунктам: составить список тех функций, которые будут у приложения. Далеко в будущее заходить не надо, так как планы могут поменяться.
    Потом взять те пункты, без которых приложение не состоится, самые минимальные и базовые вещи, и сделать их. Например, для магазина это: витрина товаров, возможность заказать товар, указав адрес доставки. Корзина и регистрация на этом этапе не обязательны, так как магазин может работать и без них. А без витрины и возможности заказать товар не может. После реализации этих базовых функций уже можно накручивать функционал дальше.
    Суть в том, что на каждом этапе у тебя должно быть законченное, рабочее приложение. Разница между этапами — степень проработки деталей функционала приложения. Это метод прогрессивного джипега :) Или agile.
    Чтобы понять, с чего начать, нужно посмотреть на приложение глазами пользователя: пользователь заходит на сайт, видит витрину товаров, видит описание у товара, цену, другие параметры, кнопку купить и т. д. То есть нужно реализовывать сценарии поведения пользователя. Можно даже acceptance-тесты накатать — помогает собрать мысли.
    Ответ написан
    Комментировать
  • С чего начинать проектировать приложение?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Предположим, что с будущей функциональностью Вы определились. Тогда Вы точно знаете, кто или что будет поставлять данные, и кто/что будет их потреблять.

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

    Теперь нарисуйте под каждым нарисованным сверху субъектом прямоугольник с названием UI или API - это интерфейсы, к которым будет обращаться пользователь или внешняя управляющая система. Иногда UI тоже может обращаться к API. Объедините все прямоугольники с UI одним контуром и обзовите слоем UI. Объедините все прямоугольники с API и обзовите слоем сервисов.

    Для систем, нарисованных снизу, укажите компоненты, которые будут отвечать за доступ к этим системам. Объедините все эти компоненты одним контуром и обзовите слоем доступа к данным.

    Между слоем сервисов и слоем доступа к данным нарисуйте большой контур и назовите его слоем бизнес-логики. В маленьких прямоугольниках внутри этого контура перечислите основные бизнес-задачи. Один компонент Вашей системы будет решать одну бизнес-задачу.

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

    Получите логическую архитектуру. Разбросайте слои по серверам - получите физическую архитектуру.

    А дальше - детально прорабатывайте каждый маленький квадратик. Всё.
    Ответ написан
    2 комментария
  • Почему PHP не создаёт объект из подключаемого файла через функцию?

    @stunoff
    Почитайте про __autoload.
    А использование глобальных переменных как минимум может привести к случайному изменению её в каком-либо участке кода, и появлению в связи с этим проблем и багов, поэтому старайтесь глобалами не увлекаться.
    Ответ написан
    2 комментария
  • Почему PHP не создаёт объект из подключаемого файла через функцию?

    alsopub
    @alsopub
    Попробуйте
    $mysqli = new mysqli('localhost', 'user', 'pass', 'database');

    заменить на
    $GLOBALS['mysqli'] = new mysqli('localhost', 'user', 'pass', 'database');

    Дело в том, что вы require вызываете внутри функции, и $mysqli создается внутри функции и за ее пределами не существует.
    Ответ написан
    3 комментария