• Зачем мне нужен Docker?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Зачем нужен Docker?

    Лично я использую:

    - Docker для управлением окружением (как для dev так и для prod)
    - Docker-distribution для хранения собранных образов контейнеров
    - Docker-compose для оркестрации контейнерами на целевой машине (для dev это моя машина, для prod удаленный сервер)
    - Docker-machine для управления удаленными машинами (оно само поставит докер куда надо и все такое)
    - Docker-swarm (пока не использую, небыло необходимости) - для оркестрации контейнерами в класстере, с failover и тд.. Так как docker-machine можно настроить так что бы тот еще и создавал инстансы (например дроплеты на DO) то можно организовать полностью автоматизированную систему с определенным уровнем отказоустойчивости.

    В целом для деплоя можно вообще по SSH не заходить. Дико удобно, особенно когда много проектов и много серверов.
    Ответ написан
    Комментировать
  • Стоит ли изучать Angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    И обнаружил, что большая часть функций, используемая в уроках, на данный момент не доступна.


    может стоит сменить источник информации? Может быть вы изучали Angular2 по урокам Angular1?

    По сути 98% всего что было в 1.0 все еще присутствует в 1.5 (и это немного напрягает, но обратная совместимость это очень важно)

    Может, есть смысл акцентировать внимание на Vue.js?

    Как хотите.
    Ответ написан
    Комментировать
  • ES 2015, Coffeescript или TypeScript? Что лучше и почему?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ES2015. и babel, поскольку это стандарт (Chrome50 поддерживает его на 91%). Ну и да, можно использовать фичи из ES2016 вроде async/await для улучшения читабельности кода.

    TypeScript это ES2015 + ES2016 stage1 + опциональная возможность объявлять типы, благодаря которой появляется возможность проводить статический анализ на этапе сборки. Это очень выгодно для очень больших проектов (именно поэтому Angular2 написан на нем, это ооочень большой проект).

    CoffeScript на сегодня не актуален, возможно этот проект получит дальнейшее развитие.
    Ответ написан
  • Откуда функция берёт переменные?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но откуда вложенная функция в функцию byField берёт переменные


    вы вызываете функцию sort и в качестве аргумента даете ей эту "вложенную" функцию. Функции в JS это такие же объекты как числа, строки и т.д.
    Ответ написан
    Комментировать
  • Как добавлять массив объектов в ng-model из директивы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    тут не нужен ngModel. Но если хотите - читайте документацию о ngModelController, там есть все что нужно. В целом если не придираться к тому что используется $scope, Александр Аксентьев правильно вам подсказывает.
    Ответ написан
    2 комментария
  • Какие вы знаете русскоязычные сайты для изучения программирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Только есть одно условие - сайт и курсы на нем должны быть на русском языке.


    HSLivcueqro.jpg

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

    По программированию рекомендую книгу "структура и интерпретация компьютерных программ", она есть в хорошем переводе на русском, и по ней учат в MIT. Но для ученика школы может быть тяжелова-то. Потому лучше воспользоваться какими-то упрощенными штуками типа codeschool, а там уже нужен язык.
    Ответ написан
    9 комментариев
  • Как обойти прерывание выполнения программы на PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Подскажите, пожалуйста, как решить этот вопрос?


    очереди, max_execution_time = 0, демоны (php cli процесс)...
    Ответ написан
    Комментировать
  • Что изучить? Angular 2 или Ember 2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    который, я учить не хочу


    TypeScript это текущий стандарт EcmaScript + реализованные драфты + информация о типах доступная на момент сборки проекта. То есть учить его и не нужно, это все тот же самый javascript. Если вы разберетесь с es2015 и драфтами из stage1 то вы знаете TypeScript.

    Angular и Ember - это огромные проекты потому для них важна информация о типах для более качественного статического анализа, а следовательно TypeScript идеальный вариант.

    Что перспективнее учить.. пожалуй Angular2 так как распространенность выше. Но разобравшись в Angular2 перейти на React или Ember будет не так уж сложно. Принципиальных различий у этих фреймворков не много и все развиваются примерно в одном направении.
    Ответ написан
  • Лучшие видеоуроки для понимания работы ЭВМ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    видеоуроки? Есть лекции.

    Не зная конкретики чему именно вы хотите научиться и что вы подразумеваете под "практикой", слишком много вариантов.
    Ответ написан
    6 комментариев
  • Подходит ли iMac Retina для веб-дизайна?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    то что вы описали не относится непосредственно к рабочему месту дизайнера, а скорее к процессу разработки. Сейчас нужно готовить картинки под экраны с DPI от 400 до стандартных 72.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    redis, у него есть pub/sub интерфейс так что можно заставить общаться демоны через него, можно хранить в нем сессии...

    Частенько задумываясь о будущих нагрузках

    Тогда вы должны писать нагрузочные тесты, а не филосовствовать о том что можно еще сделать просто-так. В целом если вы не занимались настройкой ядра у вас начнутся проблемы уже на 1000-е активных пользователей (по умолчанию PHP не умеет в stream_select обрабатывать более ~1024 файловых дескриптеров, а операционная система и вовсе по умолчанию ограничивает количество всех файловых дескрипторов на процесс.

    Горизонтальное масштабирование web socket серверов нужно когда у нас количество активных пользователей которые одновременно пользуются системой доходит ближе к 10К а то и больше (нагрузочные тесты все покажут).

    То чем вы занимаетесь называется преждевременной оптимизацией.
    Ответ написан
    Комментировать
  • Как работает this?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ох...

    Для начала нам стоит прояснить что в javascript "методы" это обычные функции, которые просто привязаны к объекту. Если не вдаваться в подробности работы интерпритатора, вы можете спокойно вынести содержимое конструктора и заменить this на экземпляр объекта.

    Если совсем упростить - в javascript нет "методов", у объектов могут быть только свойства. "Методы" реализуются присваиванием функции (обычно анонимной) к свойству объекта.

    Теперь про this. this - это контекст вызова. Это "волшебная" переменная указывает на контекст, в котором мы вызвали какую-либо функцию. Она никак не фиксируется, и мы можем крутить и вертеть ей как хотим.

    По умолчанию она указывает на "владельца" функции. Тот объект, в контексте которого мы вызвали функцию.

    function foo() {console.log(this);}
    
    function MyObject() {
        this.foo = foo;
    }
    
    var hashMap = {
        foo: foo
    };
    
    var obj = {};
    var instance = new MyObject();
    obj.bar = instance.foo;  // мы можем даже красть методы
    
    foo(); // выведет window, если для браузера и мы вызывали в глобальном контексте
    instance.foo(); // выведет instance так как в контексте этого объекта мы это дело и вызывали
    hashMap.foo(); // выведет hashMap по той же причине
    obj.bar(); // выведет obj опять же потому что мы вызывали функцию в этом контексте
    foo.call('my own context') //мы можем задать свой контекст


    Зачем присваивается this и используется в дальнейшем?


    У функции есть своя область видимости. Ей доступны все переменные/идентификаторы которые определены в ее области видимости и выше в плодь до глобальной. То есть наши обработчики событий будут всегда видеть переменные объявленные в конструкторе. Причем именно то что было на момент вызова конструктора (то есть сохраняется во времени даже после завершения работы функции). Это к слову является типичной проблемой мемориликов, так как иногда люди забывают почистить за собой ссылки на объекты.

    У нас конечно есть еще функция bind, которая позволяет явно зафиксировать контекст, но иногда удобнее так.

    Именно за счет областей видимости функций в javascript мы достигаем инкапсуляции, скрываля приватные штуки внутри нашей области видимости и выплевывая наружу только то, что нужно. Самая настоящая инкапсуляция, модификаторы доступа в этом плане - просто кастыли (хотя для восприятия они проще).
    Ответ написан
    12 комментариев
  • Почему функция времени работает не верно в php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    time выдает время в UTC

    The documentation should have this info. The function time() returns always timestamp that is timezone independent (=UTC).
    Ответ написан
    2 комментария
  • В чем профит такого способа написания if()?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • В чём отличие pair от map?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    pair - одна пара ключ -> значений, map - коллекция пар ключ -> значений или хэш-мэпа в общем смысле.

    Иногда эффективнее хранить маленький массив pair-ов нежели мелекькую коллекцию map-ов. Ну и для одного элемента map использовать уж явно не очень эффективно.
    Ответ написан
    Комментировать
  • Тонкости авторизация через php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    //если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести


    это надо делать только при выводе информации. Я что уже не могу слэши в пароле использовать? или кавычки.

    //удаляем лишние пробелы

    Я что уже не могу использовать использовать пароль из трех табуляций? Ну ладно, это можно оставить.

    include ("bd.php");/


    выносите подключение зависимостей в начало файла. И сделайте что-то типа фабрик для управления зависимостями, сейчас у вас все размазано.

    $result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
    $myrow = mysql_fetch_array($result);


    функции mysql_* являются устаревшими, и их наконец-то выпилили в PHP7. Используйте PDO и prepared statements для предотвращения SQL инъекций.

    if ($myrow['password']==$password) {


    0 == 'false' // true

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

    В целом же ваш код заставляет меня вспомнить 2005-ый год...
    Ответ написан
    Комментировать
  • Что такое распределенная система?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    A distributed system is a software system in which components located on networked computers communicate and coordinate their actions by passing messages. The components interact with each other in order to achieve a common goal.


    Мне кажется более чем понятное определение.

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

    Это один из основных подходов при построении реально больших проектов. Можеет так же почитать про микросервисы и другие схожие подходы.
    Ответ написан
    Комментировать
  • В какой БД хранить большие объемы видео?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    там хранили в GridFS а не именно в базе, которая в монге позволяет сделать что-то типа распределенного файлового хранилища. Однако я бы не рекомендовал его использовать так как есть более удобные способы организовать хранение файлов на диске. База данных тут не особо влияет.

    Разработчик настаивает на PostgreSQL. Я почитал форумы, хвалят MongoDB.

    Если у вас нет экспертизы в этом вопросе, доверьтесь разработчику. MongoDB очень хорошо распиарена и не более, PostgreSQL намного более надежная база данных.
    Ответ написан
  • Пример с нотификацией на node.js + angular.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нотификации это как чат н только без возможности ответить.

    socket-io и вперед.
    Ответ написан
    Комментировать
  • Как работать с геометрическими типами в Postgres?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ставьте PostGIS, он покрывает все три пункта. И не волнуйтесь, поломать им свою базу вы не должны.
    Ответ написан
    3 комментария