• Счего начать изучение DevOps?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Saboteur неплохо ответил(что не отменяет того что все остальные ответившие тоже правы)
    Девопс - это практики. Это не набор инструментов( инструменты используются на определенных этапах, реализация которых необходима для приближения к идеалу), однако определенные необходимые инструменты опять же есть.
    Про девопс можно прочитать очень много информации, но я, как админ (win-админ :D) вижу ситуацию для вас, как и любого, с опсовой основой, примерно так:
    1. Жирным вы выделили вопросы который для вас вот конкретно сейчас не играют ни малейшей роли. Дмитрий Шицков и Saboteur написали почему: зависит от проекта.
    2. Завет любого ops-а: автоматизируй всё что можно
      Если выбор между configuration management (chef, ansible, puppet и тд) и скриптами - то лучше первое. Хотя и тут можно поспорить, у меня в проекте chef-ом автоматизированное не очень-то используется на последнем этапе доставки в прод, поскольку мы все равно запечатываем машину и запускаем в AWS с asg без пост-конфигурации. Тут можно до посинения спорить хорошо это или нет, но скрипты в идеальном мире проигрывают DSL
    3. Вы пишете код для автоматизации
      Вам понадобится git (который тянет за собой git-хостинг: bitbucket, github, gitlab и тп.) и навыки правильной работы с гитом. Для отслеживания и планирования изменений - понадобится какой-нибудь таск трекер (jira, таск трекер встроенный в gitlab, что-то другое).
    4. Инфраструктура как код
      Автоматизируй всё означает автоматизацию развертывания инфраструктуры
      Здесь уже вступают в силу особенности вашего окружения - в облаках вы скорее всего захочете использовать terraform или, например, CloudFormation в AWS - встроенное средство оркестрации, или же будете сразу все запускать в контейнерах - docker , kubernetes используя соответствующие инструменты.
    5. Мониторинг
      Без правильного и подходящего вашему продукту мониторинга(+логирования) жить нельзя. И это было еще до DevOps тренда - это классика администрирования. Здесь ничего не посоветую, с Zabbix-ом сам не ужился, переехал на influx и прилегающие (TICK stack). Для логирования - graylog, ELK. В некоторых частях используется prometheus который в том числе и для кубера удобен. В общем - с чем подружитесь.


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

    Для примерного осознания всего цикла можно посмотреть на (картинка относительно рандомная,таких много, два года назад я ориентировался по другой, с более подходящим мне списком инструментов, но найти не могу =( )
    Slide1.jpeg

    P.S. Еще раз хочу отметить что описанное выше основано на личном опыте и это - движение в devops со стороны ops. Есть те, кто сразу пытаются строить все по девопсу параллельно обучаясь опсовой части и девелоперской( видел таких, не у всех получалось ). Есть те, кто двигается в девопс со стороны Dev. Все будут иметь разные мнения что важно для того, чтобы начать
    Ответ написан
    1 комментарий
  • Как организовать хранение большого количества данных?

    Melkij
    @Melkij
    PostgreSQL DBA
    5,5 лямов записей в год?
    За десять лет смешные 55 лямов? Право, какая фигня. Даже для mysql. С чего вы взяли, что это - большие данные? Вот 50 лямов ежедневно - уже можно с натяжкой большими данными назвать.

    Две таблицы:
    id name и чего ещё надо для самой сущности.
    date, entity_id, low, middle, high. Можно партицировать поквартально.
    Ответ написан
    1 комментарий
  • Как сформировать mysql запрос для фильтрации выдачи?

    SELECT h.*, count(*) as comfort_cnt
    FROM `hotels` h
    INNER JOIN `comfort` c ON c.`hotelId` = h.`id` AND c.`comfortId` IN ('1', '2', '3', '4')
    WHERE h.`type` IN ('1', '2')
    GROUP BY h.`id`
    HAVING comfort_cnt = 4

    где comfort_cnt = 4 - это количество услуг
    Ответ написан
    5 комментариев
  • Как начать контрибутить на GitHub?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    1. Взять таск из Issues проекта
    2. Реализовать/Исправить его
    3. Сделать pull request
    Ответ написан
    Комментировать
  • Как защитить пароль при передаче формы на сервер?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Три ответа и куча лайков.
    Что характерно, если тех же самых людей спросить, надо ли хэшировать пароли на сервере - все дружно, строем и хором ответят - НУЖНО!

    При этом мысль, как совместить обе технологии, не приходит в голову ни одному из них. А они не совмещаются. Если "сервак со своей стороны так же солит пароль и считает хэш" то это значит... что пароли хранятся в открытом виде!

    Это квинтессенция подобныйх сайтов. Ответ почему-то всегда даётся самый буквальный. При этом вопрос никогда не подвергается сомнению или хотя бы минимальной проверке на осмысленность. Такое ощущение, что отвечающие воспринимают вопрос как экзамен что ли? Или как челендж - ответить любой ценой, пусть даже и неимоверных извращений и ГАРАНТИРОВАННЫХ граблей в будущем. Или - как сейчас - ценой СНИЖЕНИЯ защищенности! Но зато ответ буквальный. И так не только здесь - так практически в любом ответе. Ну никогда ни у кого не твремени задуматься над вопросом - все торопятся отвечать.

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

    Возможно, одна из причин в том, что в голове у отвечателей отсутствуют реальные знания, а стоит органчик, в который записано несколько прочитанных когда-то ответов. И один из этих ответов выстреливается сразу после прочтения заголовка - даже не углубляясь в текст вопроса. Таких "отвечателей" надо гнать поганой метлой. Пусть самоутверждаются в другом месте. Тем же, кто хочет ответить, рекомендую придерживаться правила:

    Перед тем как отвечать, НАДО СНАЧАЛА ПОДУМАТЬ. Посчитать на ход вперед - "а что будет, если сделать, как я советую?" Посчитать на ход назад - "а зачем ему нужно это? Не похож ли этот вопрос на мой собственный, который я когда-то задавал от недостатка знаний?" И попробовать ответить так, чтобы РЕАЛЬНО помочь спрашивающему, а не просто выдать зазубренный ответ.

    Возвращаясь к вопросу: нет, нельзя без SSL. Хэширование на сервере важнее.
    Можно эмулировать SSL для передачи пароля, но куда проще воспользоваться готовым механизмом. На дворе 2014 год, все основные сайты перешли на шифрование всего трафика вообще. Пора переставать бояться SSL.
    Ответ написан
    11 комментариев
  • Вышел Yii 2, стоит ли теперь изучать Yii 1.1?

    laska
    @laska
    PHP/JS разработчик
    На Yii 1.1 очень много проектов, а учитывая сложность миграции они в большинстве и останутся на 1.1.
    Поэтому изучение 1.1 имеет небольшой практический смысл, хоть и в изучении второй версии смысла куда больше.
    По второй части достаточно документации, есть даже несколько книг.
    Ответ написан
    2 комментария
  • Как всё-таки оптимально импортировать из XLS в PHP?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    > apt-get install catdoc # в пакете catdoc есть утилита xls2csv
    > xls2csv file.xls > file.csv

    Далее в PHP уже читаем эту csv-шку построчно функцией fgetcsv.
    Ответ написан
    1 комментарий
  • Как настроить кэш в prod окружении для загрузки/обновления файлов?

    0neS
    @0neS
    Это не баг, это фича.
    В чем тогда по-вашему смысл кеша?
    Очистить кеш можно командой app/console cache:clear -e=prod (либо по-хардкору rm -rf app/cache/*).
    Вообще, отключить кеш в prod-окружении можно закомментировав строку $kernel->loadClassCache(); в app.php, но так делать не нужно.
    Ответ написан
    2 комментария
  • Как изменить вид GET PHP?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    AddDefaultCharset utf-8
    RewriteEngine on
    RewriteBase /
    
    RewriteRule ^/user/([^\/]+)/?$ /user?id=$1 [QSA]

    Если я правильно понял что Вы хотите
    Ответ написан
    2 комментария
  • Какое решение подойдет для фонового вычисления на php?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    С минимальными затратами, с учетом Вашего сценария:
    Когда пользователь нажимает кнопку - отправляем ajax запрос к скрипту который занимается генерацией картинки и делаем переход на новую страницу не дожидаясь ответа. Далее все как вы расписали.

    Upd
    Более абстрактное и устойчивое к нагрузкам решение: очередь на стороне сервера и постоянно запущенные воркеры получающие оттуда задачи. Для очередей можно на небольших нагрузках использовать mysql, можно Redis, а можно использовать решение специально предназначенное для организации очередей - RabbitMQ.
    Ответ написан
    3 комментария
  • Зачем писать свой движок сайта?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Если полноценный движок, универсальный, да ещё и серьезно сказал - это очень странно, я бы с большим подозрением отнесся к такому работодателю. Либо он не понимает что просит, либо сумасшедший, либо это какой-то тест.
    Ответ написан
    Комментировать
  • Клик на блоке внутри блока вызывает event блока родителя, как избежать?

    @iamnothing
    Внутри функции обработчика child добавьте вызов stopPropogation(), который необходим для предотвращения всплытия события (именно это и происходит у вас):
    $( ".child" ).click(function( event ) {
        event.stopPropagation();
        // ...
    });
    Ответ написан
    Комментировать
  • Как получить должность штатного верстальщика?

    Kublyakov
    @Kublyakov
    Живу не в Москве, образование школа+ПТУ, устроился на работу верстальщиком, не имея в портфолио ни одной работы и умея верстать лишь самые простые странички.
    Просто разослал по всем веб-студиям своего города письмо, в котором написал, что хочу работать у них верстальщиком и первый месяц-два готов работать за небольшую сумму в обмен на знания. Из 20 студий ответили 4. Одни позвали на собеседование, другие дали тестовое задание. Выполнив 2 тестовых задания (несложные странички) я при собеседовании их же и показал. В итоге работаю верстальщиком уже третий месяц. Не жалею, что пошел в офис - если что, старшие товарищи все рассказывают и объясняют.
    За 2 месяца научился многому, сейчас уже в JS начал вникать потихоньку.
    Я бы рекомендовал действовать примерно по моему сценарию, если возьмут на обучение, то очень быстро научишься всему, что необходимо для работы. Хотя по началу будет тяжеловато.
    Ответ написан
    4 комментария
  • Как правильно учитывать остаток товара на складе?

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

    Во втором варианте может получится так, что товар оплатят одновременно, т.к магазин ждет ответ от платежной системы для подтверждения оплаты.

    При отправлении запроса в платежную систему - ставить лок на заказанное кол-во товара, после ответа - либо уменьшать кол-во в случае успеха, либо снимать лок.
    Ответ написан
    1 комментарий
  • Как не дублировать url, используя yii?

    @Grag
    Просто укажите алиас

    array(
        // стандартное правило для обработки '/' как 'site/index' - это ваше
        '/' => 'site/index',
     
        // стандартное правило для обработки '/login' как 'site/login' и т.д.
        '<action:(login|logout|about)>' => 'site/<action>',
     
        // своё правило для URL вида '/Производитель/Модель'
        array(
            'class' => 'application.components.CarUrlRule',
            'connectionID' => 'db',
        ),
     
        // стандартное правило для обработки 'post/update' и др.
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),


    или просто указывать не
    site/index
    , а просто слэш
    /
    Ответ написан
    Комментировать
  • Выход из условия if

    @plasticmirror
    разве код
    if (cond1) {
    	//some code1
    	if (cond2) 
    	{
    		//some code2
    	}
    	else
    	{
    		goto end;
    	}
    	//some code3
    }
    
    :end

    не эквивалентен
    if (cond1) {
    	//some code1
    	if (cond2) 
    	{
    		//some code2
    		//some code3
    	}
    }


    ?
    Ответ написан
    Комментировать
  • Возможно ли в Yii расположить assets файлы в директориях модулей?

    fornit1917
    @fornit1917
    Что бы модуль был автономен.

    У вас неправильная постановка вопроса. Для того, чтобы модуль был автономен, ему не нужна папка с ассетами. Нужно только, чтобы он содержал все нужные ресурсы, а куда уже они будут публиковаться - это совершенно неважно для автономности.
    Кроме того, совсем-совсем автономными модули в yii быть не могут, их в принципе нельзя использовать отдельно от родительского приложения, см. документацию www.yiiframework.com/doc/guide/1.1/ru/basics.module :
    Модуль — это самодостаточная программная единица, состоящая из моделей, представлений, контроллеров и иных компонентов. Во многом модуль схож с приложением. Основное различие заключается в том, что модуль не может использоваться сам по себе — только в составе приложения.


    Делать директорию модуля доступной из веб - это не очень хорошо. Возможно вам надо не в сторону модулей посмотреть, а в сторону разбиения yii-приложения на несколько других приложений, например habrahabr.ru/post/180679 или habrahabr.ru/post/207454
    Ответ написан
    1 комментарий
  • Как правильно запихать двумерный массив размером примерно [500][5] в базу данных?

    @s2nner Автор вопроса
    Разобрался. В Yii 1.1.14 ввели такое.
    Новый метод CDbCommandBuilder::createMultipleInsertCommand()
    При помощи CDbCommandBuilder::createMultipleInsertCommand() стало возможным вставить несколько записей за один запрос:

    $builder=Yii::app()->db->schema->commandBuilder;
    $command=$builder->createMultipleInsertCommand('tbl_post', array(
      array('title' => 'record 1', 'text' => 'text1'),
      array('title' => 'record 2', 'text' => 'text2'),
    ));
    $command->execute();


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

    miraage
    @miraage
    Старый прогер
    Crontab + pid file.
    Ответ написан
    Комментировать
  • Laravel или Yii - на чем лучше на данный момент начинать разработку сайта? В чем отличия?

    @AlexGx
    Yii2 developer, business analytics
    Для себя этот вопрос решил в пользу Yii. Yii и Симфони2 (и его форки), это немного разные ниши.

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

    Yii: относится больше к практичным фреймворкам.
    Преимущества:
    -Проще изучить.
    -Меньше магии.
    -Меньше слоёв.
    -Меньше конфигурации.
    -Простой и удобный API.

    + ко всему этому хорошая документация, комьюнити, пожалуй самый быстрый PHP фреймворк на данный момент.
    ++ Yii может работать с компонентами Symfony 2, ZF2 и всеми библиотеками из Composer.

    Презентация по теме: PHP, фреймворки, Yii2

    Интересует мнение знающих людей, что гибче для настройки?
    Не могу сказать что один из них более или менее гибкий чем другой, но в Симфони сам процесс конфигурации всегда занимал у меня чуть больше времени.
    В чем их принципиальные отличия в архитектуре, в чем основные отличия?
    Постарался ответить в посте, также посмотрите презентацию.

    PS да мой ответ предвзятый, я нахваливаю Yii =)
    Ответ написан
    7 комментариев