• Как пушить в другой репозиторий?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    1. Клонировать ваш репозитарий у себя.
    2. Сделать изменения, закоммитить.
    3. Запушить в свою ветку. Вы должны разрешить человеку пушить к себе в репозитарий. Если не хотите этого, то на первом шаге человеку нужно сделать форк.
    4. Открыть pull-request на GitHub.

    Можете еще это почитать
    https://git-scm.com/book/ru/v1/%D0%9E%D1%81%D0%BD%...
    Ответ написан
    Комментировать
  • Как правильно кешировать комментарии?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    В момент, когда вы записали комментарий в базу, вы считываете кэш, добавляете только что полученный комментарий в него и удаляете самый старый из стека, перезаписываете кэш без изменения его времени истечения.
    Подход хорошо масштабируется и не увеличивает нагрузку на базу.
    Единственный недостаток такого подхода - сложность в реализации изменения кэшированного контента.
    Второй недостаток, если не используется общий кэш, а локальные копии на инстансах, то возможна неконсистентность кэша.
    Подход может не сработать, если кэш организован неправильным образом.
    Ответ написан
    Комментировать
  • Где найти человека способного быстро и качественно научить основам JS за деньги?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Чувак, идешь сначала сюда https://learn.javascript.ru/
    Пока Илья с товарищами по команде тебе надоедают, учишь английский.
    Потом переключаешься на бритоголового https://egghead.io/
    Потом, если покажется мало, начнешь курить спеки. К этому времени уже освоишь гугл и сможешь сам их найти.

    Лучшие практики SPA

    1. KISS - использовать только то, что действительно нужно. Например вам не нужен Javascript, если нужно просто сделать выпадающее меню. Достаточно просто CSS. Тоже самое применяется и к JS, вам не нужен Angular, если есть просто форма обратной связи. Такая задача решается на vanillajs.
    2. Использование фреймворков, например bootstrap, foundation и т.д. Обычно из них берется типография и сетки. Иногда формы. Я обычно беру bootstrap-stylus и собираю из него.
    3. Critical rendering path - минимальный набор CSS, который требуется для отображения первого экрана страницы, который потом будет встроен внутрь html-файла. Пример.
    4. Применение систем сборки, например gulp. Основной смысл заключается в том, что сначала вы дробите SPA на множество мелких компонентов/модулей/блоков. Затем унифицируете их. В итоге получается набор небольших файлов. Затем из этого набора собирается два больших файла (css, js) и они прогоняются через оптимизатор и минификатор.
    5. Использование CDN. CDN позволяет ускорить загрузку для часто-посещаемых и популярных страниц за счет уменьшения времени доставки контента. Особенно актуально для SPA, поскольку они представляют собой статический контент, который можно кэшировать без последствий.
    Системы сборки

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

    Модули AMD, CJS, UMD

    Они предназначены для управления зависимостями. Например, когда у вас есть два десятка компонентов и один зависит от другого. Суть их в том, чтобы просто объявлять зависимости в компонентах используя тот или иной способ описанный в документации. Начните отсюда.

    Сборка и подключение css

    Здесь и так ясно, что нужно сначала освоить сборщики. postcss - это когда обычный css скармливается фильтру, который разбирает его, добавляет префиксы к свойствам, оптимизирует наименования цветов и т.д. Убирает дублирующие свойства.

    В целом очень толково про оптимизацию расписано здесь https://developers.google.com/web/?hl=ru
    Ответ написан
    4 комментария
  • Возможно вынести приложение из Docker в родительскую систему?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    docker attach
    docker exec

    Смысл докера как раз и состоит в том, чтобы избавить родительскую машину от зависимостей.
    Запускайте все нужные команды внутри докер-контейнера, с нужными версиями ПО и зависимостями.
    Ответ написан
    2 комментария
  • Как заставить margin-top дружить с Firefox?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Поставьте внешнему блоку position: relative, а счетчику position: absolute и координаты.
    Ответ написан
    5 комментариев
  • Как правильно деплоить Go приложение на сервер?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    1. Собрать бинарник под нужную платформу.
    2. Любым способом скопировать его на сервер.
    3. Перезапустить.

    Решений много. Любой CI сделает. Один из модных способов. Олд-скул.
    Ответ написан
    Комментировать
  • Сеть из 80 филиалов, вопрос муршрутизации?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Установите DNS внутри сети, настройте внутренний домен. На сетевом оборудовании пропишите IP внутреннего DNS.
    Ответ написан
    2 комментария
  • Где можно найти готовые БД?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Существует множество справочников. Например xtronic.org/download/datasheet/ic-database-softwar...
    Как правило они имеют достаточно простые форматы баз данных. Остается распарсить и загрузить в вашу.
    Есть еще такие ресурсы как www.alldatasheet.com
    Ответ написан
    Комментировать
  • Какой продукт лучше использовать для автоматизированного тестирования android прошивок?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я весьма далек от тематики, но вспомнился вот этот ролик https://www.youtube.com/watch?v=Vh4zteNn_l4
    И это именно то, что вам нужно. Бесплатных таких штук вы не найдете.
    Можно попробовать рутовать девайсы и написать какие-то тесты с отсылкой управляющих команд и распознаванием через камеру. Но это уровень хардкорного инженера, который обойдется вам дороже вышеобозначенного продукта.
    Ответ написан
    Комментировать
  • Какую камеру использовать в лифте?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вам нужна камера с беспроводной передачей данных. Вариантов два - либо миниатюрная замаскированная, либо полноразмерная вандалостойкая.
    Вам нужно что-то вроде этого (не реклама).
    Некоторые чудики ставят муляж.
    По-хорошему надо ставить купольную с инфракрасной подсветкой, чтобы ловить уродов, выкручивающих/разбивающих лампочки.
    Ответ написан
    1 комментарий
  • Firefox, как вернуть прежний способ отображения ссылолк, прелогаемых при вводе адреса?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я могу порекомендовать расширение Classic Theme Restorer.

    В нем можно сделать так
    46ea6f38f1224fdd951c3e9cfa4c0bf7.png

    Можно еще заморочиться с пользовательскими стилями.
    Ответ написан
    Комментировать
  • Как из mongoDB получить все значения в некотором временном интервале?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вобщем есть 2 в целом равнозначных способа получения результатов.
    Первый - сохранять Unixtime как NumberLong() и работать с операторами сравнения. NumberLong хранится как 64-битное целое число.
    Второй - использовать тип Date() и переводить Unixtime в него. Операторы сравнения также будут работать с ним.
    Оба варианта в принципе одинаковы, т.к. объект будет сконвертирован в то же 64-битное целое.

    Разница будет на уровне общения с базой, в первом случае вам прийдется превращать все даты в число и передавать это число базе, во втором вы будете передавать объект Date().

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

    zoonman
    @zoonman Автор вопроса
    ⋆⋆⋆⋆⋆
    В итоге пришел к неординарному решению.
    Купил маленькое сверло, 1.2 мм. Просверлил шурупы по бокам. Сделал П-образную скобу и аккуратно ею выкрутил винты.
    Ответ написан
    Комментировать
  • По какой формуле можно рассчитать рейтинг записи?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Популярность = количество_лайков / время_жизни_поста
    Ответ написан
  • Как разбить большую функцию на несколько мелких?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Откройте для себя namespace.

    Никогда не делайте префиксы функций, а то будет вот такое говно `syn_whitelabel_form_whitelabel_partner_node_form_alter()` (это реальный код).

    Освойте ООП в конце концов. Собирайте свои функции внутри одного функционального домена в один класс.
    Если функция внутренняя объявляйте ее приватной и вызывайте через `self::`.

    По поводу проверки параметров - PHP позволяет объявлять типы параметров, например array или классы. Во многих случаев этих вещей достаточно.

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

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Все и так здесь https://developer.apple.com/design/
    https://designcode.io/
    Не надо ничего изобретать, просто читайте мануалы, в них все и так написано.
    Ответ написан
  • На сколько наличие индексов замедляет insert MySQL?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    На такой вопрос нет однозначного ответа.
    В одном случае 10 индексов практически незаметно, а в другом и трех хватает, чтобы убить базу.
    Смысл прост - если вставки интенсивные (больше одной в секунду) и таблицы быстро растут, то старайтесь сводить количество индексов к минимуму.
    Помните, что вставка данных вызывает перестроение индекса. Это занимает время. Чем больше индексов, тем больше перестроений, чем больше строк в таблице, тем дольше перестроение индекса.
    Например, если у вас небольшая база и перестроение индекса будет занимать секунду, то два индекса могут занять две секунды, а десять - десять. Получается, если ваш веб-сервер ответит за секунду, то все ок, а если ему потребуется 10 секунд, то пользователь подумает, что сайт не открывается и закроет его.
    Ответ написан
    Комментировать
  • Регистрация на PHP?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    1. Используйте PDO.
    2. Никогда не подставляйте данные так, как вы это делаете.

    Вот образец того, как надо делать
    <?php
    // создаем соединение с базой данных
    $db = new PDO('mysql:dbname=phpreg;host=localhost;port=3306', 'rootdb', '123');
    
    // устанавливаем кодировку utf8, чтобы никогда не было крякозябр
    // создавайте таблицы и базы с такой же кодировкой
    $db->exec('SET NAMES utf8');
    
    if (isset($_POST['send'])) {
    
        // получаем значение параметра
        $login = $_POST['name'];
    
        // подготавливаем наш запрос
        $sth = $db->prepare('SELECT * FROM userdb WHERE login = :login');
    
        // связываем подстановку :login с переменной $login
        $sth->bindParam('login', $login);
    
        // выполняем наш запрос
        $res = $sth->execute();
    
        // если запрос выполнился успешно, то выбираем все данные в массив
        if ($res) {
            $result = $sth->fetchAll();
    
            // мы не нашли строку с пользователем
            if (empty($result)) {
                echo 'Пользователь не найден!';
    
            } else {
                // мы нашли пользователя
    
                // проверяем пароль на правильность,
                // используйте http://php.net/manual/ru/function.password-hash.php для создания хэша пароля
                // никогда не храните пароль в открытом виде!
                if (password_verify($_POST['pass'], $result[0]['password'])) {
                    // не используйте переменные из запросов для вывода
                    echo "Здравствуй, ". $result[0]['login'];
                } else {
                    echo 'Пароль неверный.';
                }
            }
        } else {
            // ошибка в запросе
        }
    }
    Ответ написан
    Комментировать
  • Что учить, чтобы расти в сторону DevOps?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    DevOps расшифровывается как Development Operations.
    В повседневные задачи DevOps инженера входит управление инфраструктурой приложений (в основном веб).
    Что должен знать и уметь такой инженер - например по клику кнопкой в нужном датацентре произошел деплой приложения. DevOps должен суметь создать этот интерфейс с кнопкой и автоматизировать процесс приобретения инстанса (например в AWS), установки операционной системы и необходимых пакетов, доставки приложения на этот инстанс, прописывания всех настроек в приложении и приведение приложения в полную боевую готовность, т.е. состояние, в котором к приложению можно пускать пользователей.

    По пунктам, что нужно знать и уметь:
    • неистово учиться и гуглить
    • сетевые технологии, на уровне маршрутизации, TCP/IP, DNS, SMTP и остальных протоколов начиная с 3 уровня модели OSI
    • сетевые операционные системы (преимущественно семейства Linux) на уровне автоматизирования установки, обновления, настройки безопасности и мониторинга
    • системы виртуализации (Xen, OpenVZ) и контейнеризации (Docker, Vagrant)
    • настраивать сервера и мигрировать конфигурации, например перейти с Apache на Nginx, или с PHP на HHVM
    • Chef
    • Puppet
    • Ansible
    • Capistrano
    • VCS
    • AWS/OpWorks/CloudFormation/CodeDeploy, OpenStack
    • Munin/Logstash/Kibana и другие связки для мониторинга
    • Continuous delivery
    • Программировать на Bash, Ruby, Python, Go, Perl, уметь понимать конфиги на самых экзотических языках, например YAML
    • TDD
    • продукты hashicorp
    • автоматизировать создание и восстановление бэкапов баз данных
    • масштабировать приложения по горизонтали (настраивать балансировщики, реверс-проксирование, шардинг и репликацию в базах)
    • рассчитывать и оптимизировать издержки на поддержание инфраструктуры приложений
    • видеть будущее инфраструктуры приложения и компании, двигать инфраструктуру в это будущее


    DevOps - это хипстерный вариант программирующего сисадмина. Нужно уметь очень быстро учиться и непрерывно осваивать новые технологии. Если какая-то технология только в альфе, вы уже должны учиться уметь ею пользоваться. В момент беты вы ее уже должны обкатывать в пилотных проектах, а релиз должен автоматизированно устанавливаться в продакшене.
    Ответ написан
    13 комментариев