• Какие еще есть блогеры вроде Sorax?

    @mydarck
    Ответ написан
    Комментировать
  • Какие есть обучающие материалы по React на русском?

    @Alex493049469
    Ответ написан
    Комментировать
  • На чём лучше вести локальную разработку?

    boramod
    @boramod
    Упрощенно.

    Вагрант — система управлением конфигурацией конкретной машины.
    Докер — запуск изолированных процессов на машине.

    Докер.
    Это не виртуальная машина, а запуск изолированных процессов. Т.е., запущенный процесс думает, что он один единственный, и ничего вокруг нет. Это работает на уровне ядра Linux. Без использования виртуальных машин.

    В терминологии Докера есть Images и Containers.
    Image — образ, шаблон, на основе которого запускается Container.
    Image строится на основе какого-либо базового образа ОС.

    Container — сервис, запущенный и построенный на базе Image.

    Таким образом, вы можете построить несколько образов, например, образ для Nginx, образ для PHP, образ для MySQL. Вдобавок, вы можете построить несколько образо, для каждой желаемой версии PHP, MySQL и т.п.

    Каждый из этих образов будет иметь у себя в базе какую-либо ОС. Т.е., происходит изолирование окружения, на котором работает Docker.
    На базе построенных образов вы можете запускать Containers, т.е., непосредственно строить рабочее окружение. Каждый запущенный контейнер думает, что он запущен один, в образе наследуемой ОС. Но на самом деле, это всего лишь отдельный процесс, работающий на уровне ядра Linux, без виртуализации. Т.е., у вас нет накладных расходов на виртуальные машины. Изолирование контейнеров выполняется на уровне ядра.

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

    Оба инструмента хороши. Но у каждого свое назначение.

    Vagrant — великолепный инструмент для конфигурации удаленных машин с нуля, VDS/VPS и т.п.
    Docker — великолепный инструмент для быстрого развертывания/переконфигурации рабочего окружения, практически без изменения системы, на которую он устанавливается.
    Ответ написан
    6 комментариев
  • Что запилить php-джуну для портфолио?

    Многим это не нужно. Наличие проектов на GITе сделает свое дело и интервьювер глянет и сделает codereview, но по большому счету это не нужно никому. Большинство спросят как применяли эти технологии, зачем и почему. Что стоит делать и что не стоит в первую очередь. Либо дадут тестовое задание, после которого решат, подходите вы или нет.

    Что до идеи, сделайте то, чем вы увлекаетесь. Если это музыка, напишите музыкальный портал с радио или прослушиванием альбомов, если рисование и арт, посвятите сайт тематике или истории художников. Готовить - ну вы поняли. Как стимул, возможно, работая джуном вы получите еще больший опыт и захотите иметь сторонний доход. Чем не повод поставить свою первую идею в работу и получить мороженко в конце каждой недели ?)))
    Ответ написан
    Комментировать
  • Как установить angular 2 в cordova проект?

    taliban
    @taliban
    php программист
    Так же как и в любой другой проект, он компилится жс и подключается в хтмл файл. В кордове есть хтмл файл?
    Ответ написан
    1 комментарий
  • Как в Angular уйти от включения JS-файлов в index.html?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    На нормальном проекте должна быть инфраструктура с галпом/вебпаком. Если вам самим лень в таком копаться, погуглите готовые генераторы yeoman с angular+webpack/gulp. Жизнь сразу станет проще и веселее.
    Ответ написан
    3 комментария
  • Как в Angular уйти от включения JS-файлов в index.html?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Комментировать
  • Когда нужно использовать React+Redux?

    vlakhvo
    @vlakhvo
    front-end developer
    Если пишешь один компонент - достаточно только react, когда пишешь два и более компонентов, удобнее будет использовать redux, чтобы обмениваться данными, между этими компонентами. react-router нужен если строишь веб приложение и не хочешь обновлять всю страницу, когда пользователь кликает по ссылке. (а просто меняешь содержимое страницы js'ом). Стандартными средствами можно обойтись для дебага в консоле =)
    Ответ написан
    Комментировать
  • Angular2. Как отловить изменения в объекте?

    AMar4enko
    @AMar4enko
    Rx.Observable.of(value)
    создает поток, который содержит одно событие с value. Это совсем не про изменения.
    От шаблона, который вы хотите применить, в Angular2 уходят, в сторону реактивности.

    У компонентов в Angular2 есть input-свойства, изменения которых можно отслеживать с помощью life-cycle callback, конкретно интерфейс OnChanges. Выглядеть будет примерно так:
    @Component({selector: 'my-component', template: '<span>{{text}}</span>'}}
    class MyComponent implements OnChanges {
      public text: string;
      @Input() changeMe: string;
      
      ngOnChanges(changes) {
        this.text = Date.now().toString();
      }
    }


    Предположим, что в компоненте верхнего уровня у вас есть:
    <my-component [changeMe]="someValue"></my-component>


    Изменяя someValue вы изменяете input-атрибут changeMe компонента MyComponent. При каждом изменении будет срабатывать ngOnChanges.
    Еще одно замечание - если в качестве значения вы передаете объект, то не надо его мутировать. Создавайте новый объект и присваивайте заново.
    this.someValue = {value: 1, anotherValue: 2};
    this.someValue = Object.assign({}, this.someValue, {value: 2}); // {value: 2, anotherValue: 2} // Но тут this.someValue это ссылка уже на другой объект.
    Ответ написан
    5 комментариев
  • Работа с изображениями PHP?

    BOOMER_74
    @BOOMER_74
    Full-Stack разработчик
    Вот библиотека с нужной функцией.
    Ответ написан
  • Это и есть полиморфизм?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет.

    Полиморфизм, как следует из названия, это когда что-то маскируется под что-то другое. Это свойство системы типов языка на котором вы пишите, он может позволять вам делать вещи, маскирующие свой внешний вид ("названия") но все же это не та же вещь. Ну и стоит заметить что у полиморфизма есть еще разные виды. Например:

    Параметрический полиморфизм. Это когда мы можем написать один код, с одним набором имен, которые работает с разными типами аргументов. Пример - шаблоны из C++ или дженерики в Java. То есть "имена" методов одинаковые, потому что они в одном экземпляре. Реализация одна, одно поведение. А вот аргументы могут отличаться.

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

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

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

    Ну и еще есть одно серьезное ограничение. Если мы хотим заменить в системе объект какого-то типа на объект подтипа (грубо говоря наследника), то система не должна сломаться. То есть "другое" поведение нашего подтипа должно быть совместимо в плане интерфейса с базовым типом. Об этом можно почитать загуглил "Принцип подстановки Барбары Лисков".

    Ad-hoc полиморфизм - это пожалуй самый интересный вид полиморфизма с которым можно долго холиварить. По сути при этом виде полиморфизма, у нас одинаковые имена, а поведение зависит от входящих аргументов. Пример - перегрузка методов в C++. Интересен этот вид полиморфизма в основном тем, что он не является "настоящим".

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

    Среди PHP-разработчиков немало тех, кто мечтает увидеть в этом языке с динамической системой типов честную перегрузку методов как например в Java или C++. Просто так, потому что if-ы это плохо и лучше уж пусть они будут неявные на уровне компилятора/рантайма.

    Полиморфизм с приведением типов - еще один вид "не настоящего" полиморфизма. Мы "эмулируем" полиморфизм за счет того, что на уровне рантайма языка происходят касты действительного в желаемое. Например в PHP мы можем выставить у функции тайпхинтинг string, и можем внутри иметь одно и то же поведение для всех входящих аргументов. Передать же в качестве аргумента мы можем все что можно скастить в строку.

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

    @bromzh
    Drugs-driven development
    Второй ангуляр отлично зайдёт. Он умеет работать на стороне сервера. В том числе, можно пререндерить страницы на сервере, так что индексироваться будет. Плюс, скоро можно будет делать и мобильные приложения.

    Но есть небольшая проблема: сам фреймворк пока на стадии RC, и инфы по нему очень мало. Если с английским беда, то нужно будет подождать, пока люди напишут статьи на русском.
    Лично меня изучение фреймворка по его исходникам не смущает, так что я уже им пользуюсь и пока доволен.
    Ответ написан
    Комментировать
  • Где можно найти работу для повышения навыков?

    основная цель - повышение навыков

    не ради повышения навыков, а чтобы урвать побольше денег

    а мотивации мало в основном потому, что нет никакой гарантии, что тебе это принесет хоть какие-нибудь деньги


    Нет мотивации -> нет навыков -> нет денег. Точка. И всё именно в таком порядке!
    Ответ написан
    2 комментария
  • Где можно найти работу для повышения навыков?

    Rou1997
    @Rou1997
    Первым делом в голову может придти фриланс, но, насколько я знаю, работают там люди совсем не ради повышения навыков, а чтобы урвать побольше денег. Соответственно, проекты получаются зачастую кривые, на костылях и новых знаний это обычно не приносит.

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

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

    Я сам неоднократно просматривал предложения работодателей на фриланс-платформах.

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

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

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