• Для чего нужен Docker?

    @viiy
    Linux сисадмин \ DevOps
    Представьте что нет никакой ложки докера.

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

    2) У вас есть физическая машина + на ней виртуалки. Вы выделяете под каждую задачу свою виртуалку, там сидят отдельные пользователи, вы навели какой то порядок. Появляется задача - пользователи хотят php 6, а его нет, хотят python3, а его нет, хотят Mongo, а она старой версии. Вы обновляете репозитарии, качаете новые пакеты, ставите, часть пользователей довольны, часть нет - им нужна старая версия какая была. Упс!

    3) Одна физическая машина + еще больше виртуальных машин. Вы разделили всех пользователей так, чтобы никто не дрался за версии софта, если нужен php6 - иди на эту машину, нужен php5 - вот на эту. Все счастливы, но появляются разработчики, которые говорят буквально так - "а у меня на рабочей машине все работает, я перенес все как было на виртуалку, а у меня появляется ошибка missing library libXXX.so.X". И вы понимаете что вам остается только создать полную копию машины разработчика, чтобы софт поехал на этой виртуалке без ошибок... И тут появляется Docker! :)

    4) Docker решает именно эту проблему. Вам не нужно заботится о софте который установлен на сервере/виртуалке. Вы просто берете и переносите софт со всеми "кишками" на другой сервер и он просто работает. Работает за счет того, что все "кишки" это слои файловой системы нанизанные как бисер друг на друга. Дополнительно решается проблема свободного места, т.к слои многократно переиспользуются контейнерами, если вам нужен php + одна библиотека, а другому php + другая библиотека, вы используете (грубо говоря) слой php, а для дополнительной библиотеки делаете отдельный слой, одновременно другой человек делает над php другой слой и вы не деретесь между собой и не видите чужих библиотек. Это грубо и скорее всего ради одной библиотеки никто новый слой не делает, делают слой пожирнее.

    Все запущенные процессы Docker помещает в изолированную среду процессов, файловой системы и сетевого стека. Есть много особенностей по работе с Docker, т.к он предполагает, что в одном контейнере вы запускаете один процесс. Если вам нужно запустить целый набор демоном, тут появляются проблемы, нужно писать шелл-скрипт, который все это поднимет в контейнере. Так же есть особенности по сети, файловой системе. Для кого то Docker спасение и решение всех проблем, но я как сисадмин от этого всего не в восторге.
    Ответ написан
    15 комментариев
  • Для чего нужен Docker?

    un1t
    @un1t
    Я тоже долго не мог понять.
    Подобрал такую аналогию - это как git для сервисов.
    Например чтобы развернуть Elasticsearch надо установить яву - это отдельная эпопея, затем прописать репу эластика, сделать apt-get update, apt-get install, прописать в автостарт, установить плагин с русской морфологией, рестартануть эластик.
    А можно один раз напистаь докер файл из двух строчек и потом одной командой "docker run yourlogin/elasticsearch" все это запускать на любой машине.
    Ответ написан
    8 комментариев
  • Как передать из формы логин и пароль в зашифрованном виде на сервер?

    alsopub
    @alsopub
    Используйте асимметричное шифрование Как реализовать RSA шифрование на javascript?
    Открытым ключом можно будет только зашифровать пароль, расшифровать его можно будет только на сервере.
    Про сессионные куки - возможно это CSRF токены?
    Ответ написан
    3 комментария
  • Лучшие практики по frontend?

    @codemix
    Frontend junior
    Сам начал не давно изучать JS, читаю Выразительный JavaScript за одно смотрю ролики Sorax
    Ответ написан
    Комментировать
  • Как обнулить рекурсивный js счетчик?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    А зачем здесь вообще рекурсия? Прекрасно можно обойтись без неё.
    Ответ написан
    Комментировать
  • Как обнулить рекурсивный js счетчик?

    @aol-nnov
    надо соединить переменные timerId, timer и функцию clearTimeout в одну логическую конструкцию. и будет тебе счастье.
    и вопросы повнятнее писать учись )
    Ответ написан
    Комментировать
  • Как объединить ячейки в html таблице если они похожи?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Наверное, я перегибаю, но...

    <table border>
        <thead>
            <td>ПН</td>
            <td>ВТ</td>
            <td>СР</td>
            <td>ЧТ</td>
            <td>ПТ</td>
            <td>СБ</td>
            <td>ВС</td>
        </thead>
        <tr id="state">
            <td>Выходной</td>
            <td>Выходной</td>
            <td>Выходной</td>
            <td>Выходной</td>
            <td>15-21</td>
            <td>15-21</td>
            <td>16-21</td>
        </tr>
    </table>


    var 
        $Table = $("<table />"),  
        $Thead = $("<thead />").appendTo($Table), 
        $Row   = $("<tr />").appendTo($Table),
        $_tds  = $("#state td"),  $_heads = $("thead td"),
    start, i = 0;
    
    for(; i < $_tds.length; i++){
      start = i; 
      while(
         $_tds.get(i++) && $_tds.eq(i).text() == $_tds.eq(i - 1).text()
      ){}
    
      $Row.append(
          "<td>" + $_tds.eq(--i).text() + "</td>"
      ); 
      $Thead.append(
          "<td>" + (i == start ? "" :  $_heads.eq(start).text() + "-") + $_heads.eq(i).text() + "</td>"
       );
    }
    
    $("table").replaceWith($Table);


    jsfiddle.net/In4in/6ruk1j3r
    Ответ написан
    5 комментариев
  • Почему не работает remove?

    @Scrum
    Front-End developer
    Делегирование вам в помощь
    $(document).ready(function() {
    
        $('#add_theme').click(function() {
            $('<div class="ft_inputs">\n' +
                '<input type="text" placeholder="Name theme"/>\n' + 
                '<textarea rows="5" placeholder="Desription theme"></textarea><div class="remove_theme">Delete</div></div>') . 
                fadeIn('slow').appendTo('.test');
    
        });
    
        $('.test').on('click', '.remove_theme', function() {
            $('.ft_inputs', '.test').last().remove(); 
        });
    });
    Ответ написан
    2 комментария
  • Почему ругается на строчку в JS?

    Ivanq
    @Ivanq
    Знаю php, js, html, css
    IgRibgxl.jpg
    Ответ написан
    Комментировать
  • Сайт php + AJAX, приехали?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Тут очень, очень много чего можно приводить к божескому виду. Вам, наверное, надо попробовать какой-нибудь не очень сложный MVC-фреймворк для начала.
    Пока что весь код - сплошная каша, которую чуть проще поддерживать, чем если бы всё было в одном файле, но всё ещё значительно сложнее, чем уже проработанные решения.
    $data .=  '<div class="newsPhoto">';
            $data .=  '<img src="'.getImgUrl($news['photo']).'">';
            $data .=  '</div>';
            // ...

    Вообще, если вам так хочется всё это делать именно в PHP - можно использовать либо Heredoc/Nowdoc, либо просто записывать в кавычках без лишних конкатенаций кода с самим собой. Хотя лучше, конечно, всё это делать в слое View (см. MVC) - попробовав вы быстро поймёте - насколько это круто, когда логика (операции с данными) и представление (вывод данных) разделены.
    $sql = mysql_query("SELECT news_id, title, description, photo FROM news WHERE category='1' ORDER BY news_id DESC LIMIT 10") or die(mysql_error());

    Используйте PDO и подготовленные запросы с биндингом параметров.
    А ещё у вас везде одинарные кавычки (что хорошо), а тут - двойные. Зачем? Одинарную кавычку можно экранировать с помощью бэкслеша.
    if (isAJAX() == false) {
    echo head('Новости',array('common.css', 'news.css'),array('common.js'));
    echo body();
    echo news_menu();
    echo news();
    echo footer();
    }

    Это очень мило. Вы почти пришли к шаблонам :)

    Могу порекомендовать вам для приобретения понимания как лучше коду выглядеть сделать три вещи:
    1. Ознакомиться с PSR-2 как минимум.
    2. Прочесть и постараться максимально понять Php The Right Way.
    3. Переписать всё это на каком-нибудь более-менее современном, но ещё не очень сложном фреймворке, который из коробки имеет MVC. В памяти пока что всплывает, например, FuelPHP.

    Ну и дальше как разберётесь - уже просто набираться опыта, смотреть как делают другие (опенсорс всегда в помощь), пробовать делать какие-то маленькие вещи для себя, чтобы разобраться в чём-то.
    Ответ написан
    5 комментариев
  • Как из формы вытянуть таблицу и поместить ее в другом месте?

    max_cry
    @max_cry
    инопланетянин из Крыма
    можно пойти трудным путём и заюзать jquery :

    Допустим страница содержит следующий текст:
    
     <ul class="list l1">
       <li class="item i1"> Высоко </li>	
       <li class="item i2"> Быстро </li>	
       <li class="item i3"> Сильно </li>	
     </ul>
     <ul class="list l2">
       <li class="item i1"> Выше </li>	
       <li class="item i2"> Быстрее </li>	
       <li class="item i3"> Сильнее </li>	
     </ul>
    
    следующие два выражения будут равнозначны
    
     $(".i1").replaceWith("<li class='item'>Тест</li>");
     
     $("<li class='item'>Тест</li>").replaceAll($(".i1"));
    
    в обоих случаях элемент списка с текстом "Тест" заменит элементы с классом i1. В результате, текст нашей страницы станет следующим:
    
     <ul class="list l1">
       <li class='item'>Тест</li>	
       <li class="item i2"> Быстро </li>	
       <li class="item i3"> Сильно </li>	
     </ul>
     <ul class="list l2">
       <li class='item'>Тест</li>	
       <li class="item i2"> Быстрее </li>	
       <li class="item i3"> Сильнее </li>	
     </ul>
    
    
    Помимо html-текста, можно заменять одни элементы страницы другими. При этом, вставляемые элементы будут не скопированы, а перемещены. Например следующий код
    
     $(".l2 i2").replaceWith($(".l1 i1"));
    
    изменит первоначальную страницу следующим образом:
    
     <ul class="list l1">
       <li class="item i2"> Быстро </li>	
       <li class="item i3"> Сильно </li>	
     </ul>
     <ul class="list l2">
       <li class="item i1"> Выше </li>	
       <li class="item i1"> Высоко </li>	
       <li class="item i3"> Сильнее </li>	
     </ul>
    
    
    Рассмотрим пример с использованием пользовательской функции. Добавим драматичности элементам из второго списка:
    
     $(".l2 .item").replaceWith(function(){
         return ' <li class="item" > '+$(this).text()+', я кому сказал! </li>';
     });
    
    в итоге, текст первоначальной страницы станет следующим:
    
     <ul class="list l1">
       <li class="item i1"> Высоко </li>	
       <li class="item i2"> Быстро </li>	
       <li class="item i3"> Сильно </li>	
     </ul>
     <ul class="list l2">
       <li class="item"> Выше, я кому сказал! </li>	
       <li class="item"> Быстрее, я кому сказал! </li>	
       <li class="item"> Сильнее, я кому сказал! </li>	
     </ul>
    Ответ написан
    2 комментария
  • Как сделать маску версткой?

    miraage
    @miraage
    Старый прогер
    <div class="result"> <!-- position: relative -->
     <div class="photo"></div> <!-- position: absolute, z-index: 10 -->
     <div class="shape"></div> <!-- position: absolute, z-index: 20 -->
    </div>
    Ответ написан
    2 комментария
  • Как имитировать нажатие кнопок "down" и "up" при выделенном input?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Можно jsfiddle.net/oxjaoLas
    var $win = $(window);
    
    $('.inp').on('keydown', function (e) {
    	switch (e.which) {
            case 38:
                var top =  $win.scrollTop();
                top -= 10;
                $win.scrollTop(top);
                
                break;
            case 40:
                var top =  $win.scrollTop();
                top += 10;
                $win.scrollTop(top);
                
                break;
        }
    });

    Только вот зачем?
    Ответ написан
    4 комментария
  • Как решить проблему с AJAX и PHP?

    thewind
    @thewind
    php программист, front / backend developer
    Ошибка в require 'engine.php', проверяйте путь до него или пути в нем
    Ответ написан
    Комментировать
  • Почему сдвигается общий div, а не вложенный?

    MaXComp
    @MaXComp
    интересуюсь frontend html+css+JS+php. Linux, C
    Добавим инфографики:
    0003061561.jpg
    Ответ написан
    Комментировать
  • Почему сдвигается общий div, а не вложенный?

    Потому что вам нужно почитать про margin collapsing
    Вместо margin используйте padding, либо overflow:hidden родителю, либо этот вариант
    Ответ написан
    Комментировать
  • Почему сдвигается общий div, а не вложенный?

    TomasHuk
    @TomasHuk
    Из урока HTML Academy:
    «Выпадание» внешних отступов [10/23]
    «Выпадание» — это еще один эффект, связанный с вертикальными внешними отступами. Если внутри родительского блока расположить блок и задать ему отступ сверху, то внутренний блок прижмется к верхнему краю родительского, а у родительского элемента появится отступ сверху. Т.е. верхний отступ внутреннего элемента «выпадает» из родительского элемента.

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

    Чтобы избавиться от эффекта выпадания, можно задать родительскому элементу внутренний отступ (паддинг) сверху или добавить рамку сверху.

    Внешние и внутренние отступы всегда складываются.
    Ответ написан
    1 комментарий
  • Почему сдвигается общий div, а не вложенный?

    @Camaro67
    Помог? - "Отметить решением"
    Это называется схлопывание. Информации на этот счет в гугле достаточно.

    Можете сделать так:
    <div style="width:200px; height:200px; background:#ccc;">
       <div style="position: relative; top:20px;">123</div>
    </div>
    Ответ написан
    2 комментария
  • Говно-код с использованием MVC фреймворков?

    RomaZveR
    @RomaZveR
    CEO AlertMoney, PHP/Golang Developer
    Говнокодят все, а кто утверждает обратное - говнокодит ещё больше.
    Ответ написан
    1 комментарий
  • Почему при запросе множества id из таблицы ORDER BY FIELD не тормозит mysql?

    Потому что сортируется не вся таблица, а только сотня записей, выбранных по айдишникам, это копейки.
    Ответ написан
    Комментировать