• Как избавиться от замкнутого круга с портфолио и опытом работы?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    идешь на https://themeforest.net/
    берешь любой понравившийся шаблон и верстаешь. если прям сайт нужен - еще и натягиваешь на cms
    еще пару тройку таких шаблонов - и портфолио готово.
    Ответ написан
    1 комментарий
  • Какой необходимый уровень знаний для junior React.js Разработчика?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    UPDATE: реальные тестовые задания и разборы здесь, ответы на все вопросы из поста в моем блоге об обучении react.

    не включая основы js

    Извините, но стандартная задача, про "напишите функуцию add, которая при вызове add(1)(2) вернет 3" - многих положила на лопатки =) Поэтому будьте готовы..

    React
    0) Какую проблему решает react ?
    1) Мгновенно ли срабатывает setState? Если нет, то как выполнить код, который 100% выполнится после того, как новый state будет установлен?
    2) Зачем многие постоянно пишут в constructor: this.FUNCTION_NAME = this.FUNCTION_NAME.bind(this) и отсюда вопрос вытекает чему равно this в разных местах вашего компонента...
    3) в каких методах жизненого цикла стоит выполнять xhr запросы? В каких стоит "обновлять state на основе props"?
    4) Что будет если вызвать this.setState в render методе компонента?
    5) зачем нужен componenWIllUnmount, приведите пример..
    6) Контролируемые, не контролируемые компоненты
    7) Как организовать роутинг в реакт приложении? (ответ: взять react-router - подходит, но было бы круто, если бы вы рассказали, как он примерно работает)*
    8) Зачем нужны propTypes? Что происходит с ними в production сборке?
    9) Как можно удобно "отлаживать" чужой код приложения, написанного на react (намек в сторону React devtools)
    ...

    Redux
    0) Какую проблему решает redux?
    1) Зачем многие создают типы действий NAME_REQUEST / NAME_SUCCESS ? А заодно, что такое "действие", а что такое "создатель действия"...
    2) Что такое редьюсер? Можете написать простой редьюсер без react/redux?*
    3) Для чего нужен redux-thunk? Как он работает? Напишите (можно псевдокод) асинхронный создатель действия (либо, если надоело говорить "терминами" - асинхронный aciton)
    4) Как компоненты приложения получают "пропсы" из "стора"?*
    5) Можно ли (и считается ли это нормальным) использовать state, если используется Redux?
    6) Почему в reducer'ax мы возвращаем новые объекты? Приведите пример, когда вы возвращаете новый объект, а когда тот же самый.
    6.5) А так же, "как в js вообще это работает?". Например:
    let obj1 { name: 'Test', age: 100 }
    let obj2 = obj1
    obj2.name = 'Test_new'

    Что будет в obj1, почему? В каких случаях объекты могут быть равны?
    7) Что возвращает функция connect (из react-redux)?
    ...

    Общее:
    0) package.json
    1) Webpack, gulp, etc...
    2) node.js
    3) promise

    Что-нибудь практическое:
    1) Как бы вы валидировали форму, если ошибки валидации приходят после submit'a ее на сервер..
    2) Почему не работает следующий код, сделайте чтобы работало
    ...
    На истину не претендую, но такие вопросы имели место быть на собеседованиях. В беседе можно многое разузнать дополнительными вопросами и так далее. Так же, если часть вопросов вам неизвестна - не беда, многие и на половину ответить не могут.

    p.s. возможно дополню...
    p.p.s. звездочкой отметил, на мой взгляд не самые необходимые для junior-собеседования вопросы.
    Ответ написан
    31 комментарий
  • Как ускорить XAMPP под Windows?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    PHP на windows работает намного медленнее.
    Это неоспоримый факт.

    Как вариант, в Win10 включить Ubuntu Server и на нем поднять nginx/php/...
    Это если хотите работать под виндой.

    Но я бы лучше остался на linux
    Ответ написан
    5 комментариев
  • Как объяснить рядовому клиенту, что сайт, сделанный руками, а не на шаблоне, для него будет лучшим выбором?

    VasyaPertrov
    @VasyaPertrov
    Изготовление и безопастность сайтов. WP и др.
    проект, созданный командой разработчиков (UX-дизайнер, верстальщик, программист и т.д.) будет заведомо лучшим выбором, нежели, чем тот, который собран на коленках школьником вечером после уроков быстро/сердито/дешево?

    1. С чего ты взял что твой "проект" будет лучше шаблонов, сделанных специалистками и проверенными-перепроверенными ещё сотней-тысячью других? ЧСВ зашкаливает?

    2. Какая связь межу шаблоном, сборкой и школьниками? Уже это говорит что ты не понимаешь предмета.

    А клиенту опасно связываться с такими самодельщиками - никто не проверит что там в реальности, доработать может быть сложнее и дороже.
    Ответ написан
    1 комментарий
  • Как в gridview сделать разный фон ячеек в нестандартном порядке?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    А зачем yii дергать? Это задача для css и :nth-of-type
    tr:nth-of-type(1), tr:nth-of-type(2) {background-color:red;}
    tr:nth-of-type(3), tr:nth-of-type(4) {background-color:green;}
    Ответ написан
    8 комментариев
  • Как вывести в view многоуровневое меню. Yii2?

    @assets
    Back-end developer
    Может вам https://github.com/creocoder/yii2-nested-sets ?

    Вы сделали свой велосипед от webformyself :]
    Ответ написан
    Комментировать
  • С помощью каких технологий и какого движка работают приложения вроде uber?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Есть 2 отличных статьи где все расписано мега-подробно.
    https://eng.uber.com/tech-stack-part-one/
    https://eng.uber.com/tech-stack-part-two/

    Часть их решений выложена в open-source uber.github.io
    Ответ написан
    Комментировать
  • Как создать мультиязычный модуль в Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Вот ссылки, первые рассчитаны на yii1, но я переделывал под yii2 и всё работало отлично.
    Обходился одной таблицей, где, например, для заголовка были два варианта, английский и русский, title_en and title_ru.
    Последняя ссылка - расширение для yii2
    раз
    два
    три
    Расширением не пользовался, ничего не могу сказать. А по первым двум - адаптировал под свои нужды.
    Ответ написан
    3 комментария
  • Как заставить Yii2 не использовать md5 для хэширования ключей Redis в классе \yii\redis\Cache?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Комментировать
  • Как подключить share-кнопки соцсетей в React?

    evilandfox
    @evilandfox
    Javascript, meteor, Qt
    Фишка в том, что для таких иницилизируемых javascript'ом компонентов надо делать инициализацию в componentDidMont через доступ с помощью ref:
    codepen.io/evilandfox/pen/jAxJxv
    <script type="text/javascript" src="http://vk.com/js/api/share.js?93" charset="windows-1251"></script>
    <script>window.twttr = (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0],
        t = window.twttr || {};
      if (d.getElementById(id)) return t;
      js = d.createElement(s);
      js.id = id;
      js.src = "https://platform.twitter.com/widgets.js";
      fjs.parentNode.insertBefore(js, fjs);
     
      t._e = [];
      t.ready = function(f) {
        t._e.push(f);
      };
      return t;
    }(document, "script", "twitter-wjs"));</script>
    <div id="main"></div>

    var Component = React.createClass({
      componentDidMount: function(){
        this.refs.vk.innerHTML = VK.Share.button(false, {type: "round", text: "Сохранить"});
        twttr.widgets.createShareButton(
          'https://dev.twitter.com/',
          this.refs.tw,
          {
            text: 'Hello World'
          });
      },
      render: function(){
        return (
          <div>
            <h4>Поделиться:</h4>
            <div ref="vk"></div>
            <div ref="tw"></div>
          </div>
        );
      }
    });
    
    ReactDOM.render(<Component/>, document.getElementById("main"));
    Ответ написан
    Комментировать
  • Как сделать автообновление Single Page Application, учитывая версию ресурсов?

    Можно версионировать API, например example.com/api/v1/resource, т.е. старый frontend будет грузить v1 API, обновленный будет грузить v2.
    Ответ написан
    3 комментария
  • Как работает Yii::app()?

    copist
    @copist
    Empower people to give
    1. Инициализация Yii::app()

    Смотри, в файле www/index.php такие строки
    1. $config = APP_PATH . '/protected/config/main.php';
    2. $app = \Yii::createWebApplication($config); // @var CWebApplication $app
    3. $app->run();


    При отработке строки 2 выполняется код
    1. class YiiBase {
    2. {
    3.     // ... другой код
    4. 
    5.     public static function createWebApplication($config=null)
    6.     {
    7.         return self::createApplication('CWebApplication',$config);
    8.     }
    9.
    10.    public static function createApplication($class,$config=null)
    11.    {
    12.        return new $class($config);
    13.    }
    14. }


    В строке 12 с учётом динамического связывания выполняется return new CWebApplication($config);

    Если пройти по родительским классам, то можно найти, что
    class CWebApplication extends CApplication ...

    и далее
    1. abstract class CApplication extends CModule
    2. {
    3.     // ... другой код
    4. 
    5.     public function __construct($config=null)
    6.     {
    7.         Yii::setApplication($this);
    8.         // ... и другой код
    9.     }
    10. }


    В строке 7 вызывается Yii::setApplication($this);, а если посмотреть класс Yii и его родителя YiiBase, то можно увидеть как в итоге инициализируется переменная для конструкции Yii::app()
    class Yii extends YiiBase { }

    class YiiBase {
    {
        private static $_app;
        public static function setApplication($app) // тут определяется значение self::$_app для Yii::app()
        {
            if(self::$_app===null || $app===null)
                self::$_app=$app;
            else
                throw new CException(Yii::t('yii','Yii application can only be created once.'));
        }
        public static function app() // тут можно прочитать значение self::$_app через Yii::app()
        {
            return self::$_app;
        }
    }


    Теперь понятно, что при инициализации сущности типа CWebApplication эта сущность установилась в приватную переменную YiiBase::$_app, которая доступна через вызов Yii::app()

    Это была инициализация

    2. Использование Yii::app()->module или Yii::app()->component

    Ещё раз посмотри на класс CApplication
    abstract class CApplication extends CModule
    {
        public function __construct($config=null)
        {
            Yii::setApplication($this);
    
            // ... другой код
    
            $this->configure($config);
    
            // ... другой код
        }
    }


    В методе configure($config) происходит подготовка данных, которые понадобятся позже для таких вызовов как (к примеру) Yii::app()->db

    Давай посмотрим на класс Module, в котором и реализуется логика таких вызовов
    abstract class CModule extends CComponent
    {
        public function configure($config) // сохранить всё что передали по переменным
        {
            if(is_array($config))
            {
                foreach($config as $key=>$value)
                    $this->$key=$value;
            }
        }
    
        public function __get($name) // если кто-то пытается вызвать несуществующее свойство, например Yii::app()->db
        {
            if($this->hasComponent($name)) // проверить что есть настройки или готовая сущность компоненты
                return $this->getComponent($name); // вернуть сущность компоненты
            else
                return parent::__get($name);
        }
    
        public function hasComponent($id) // проверить что есть настройки или готовая сущность компоненты
        {
            return isset($this->_components[$id]) || isset($this->_componentConfig[$id]);
        }
    
        public function getComponent($id,$createIfNull=true) // вернуть сущность компоненты
        {
            if(isset($this->_components[$id])) // если есть готовая сущность компоненты, вернуть её
                return $this->_components[$id];
            elseif(isset($this->_componentConfig[$id]) && $createIfNull)
            {
                $config=$this->_componentConfig[$id];
                if(!isset($config['enabled']) || $config['enabled'])
                {
                    unset($config['enabled']);
                    $component=Yii::createComponent($config); // создать новую сущность компоненты
                    $component->init();
                    return $this->_components[$id]=$component; // сохранить и вернуть её
                }
            }
        }
    }


    Попробуем расшифровать вызов Yii::app()->db

    Как я уже показал, Yii::app() - это сущность типа CWebApplication, а у неё нет публичного свойства $db, поэтому PHP вызывает магический метод __get() из базового класса CModule. (Посмотри в документации "магические методы")

    Итак, свойства CWebApplication->db не существует и вызывается CModule->__get('db'), далее код считает, что, возможно производится вызов компоненты.

    Метод CModule->hasComponent('db') проверяет, что ранее были заданы какие-то настройки указанной через файл конфигурации protected/config/main.php или иным способом. Если так, то то вызывается CModule->getComponent('db', ...), который вызывает Yii::createComponent($config), где $config - это найденные настройки указанной компоненты, например, параметры соединения с базой данных для компоненты db

    Посмотрим, что делает Yii::createComponent($config)
    class YiiBase
    {
        public static function createComponent($config)
        {
            // посмотри сам, тут интересно
        }
    }


    Cложный метод. Суть его в инстанциировании новой сущности какого-то класса, 5 или 6 способов. Дело в том, что этот метод CModule::createComponent() может быть вызван откуда угодно и у него куча вариантов передачи параметров.

    Итак, CModule::createComponent() создал и вернул новую сущность. И на выходе из метода CModule::getComponent() полученная сущность записывается в массив CModule->_components под именем 'db'.

    Все последующие вызовы Yii::app()->db будут проверять наличие инстанциинованной сущности в массиве CModule->_components['db'] и использовать его, если он там найден

    Заключение:

    Вызов Yii::app()->db
    А. Динамически инициализирует компоненту, по мере необходимости
    Б. Настраивает её данными, которые в частновти можно определить через файл конфигурации protected/config/main.php
    В. Инициализируют компоненту только один раз за цикл работы PHP приложения

    Надеюсь я понятно изложил механизм ленивой инициализации компонент
    Ответ написан
    1 комментарий
  • Какой гибкий и приятный text editor посоветуете для Yii2?

    Adobe
    @Adobe
    php developer
    Давно пользую https://imperavi.com/redactor/
    И он бесплатный для Yii
    https://github.com/vova07/yii2-imperavi-widget
    Ответ написан
    Комментировать
  • Какие существуют онлайн курсы по дизайну интерфейсов?

    @ForestEsprit
    HTML - верстальщик
    Про онлайн курсы подсказать не могу, лучшее это Карпов в британской школе дизайна (там вроде бывают интенсивы, а есть обучение на 2 или 4 года, посмотрите на офф сайте), ещё есть курсы Пащенко в ВШЭ Школе Дизайна (сейчас курс идёт, надо подловить момент, когда запустят курс повторно, курс на год, а бывает интенсив). Ещё крутая школа дизайна от Яндекса.

    Британка и ШД дорого, но Карпов и Пащенко это хорошие учителя. Про Яндекс ручаться не могу, но выглядит круто. А ещё школа Горбунова!

    Советую оффлайн обучение, быстрее вольётесь в дизайн-тусовку, вам это сильно пригодится. Из минусов, ну британка и ШД дорого (по моим меркам дико дорого!).

    RM делает интересные вещи, для ознакомления тоже пойдёт.
    Ответ написан
    1 комментарий
  • Как организовать выполнение скрипта с алгоритмом поиска в фоне (с использованием VK API и Yii2)?

    DmitryVoronkov
    @DmitryVoronkov
    Python Developer
    Используй Очередь задач
    Получаешь запрос от пользователя, отправляешь в очередь задач, в фоне задача обрабатывается, после обработки результат в хранилище (mysql, redis, mongo). И оповещаешь пользователя, о том, что отчет сформирован, выводишь результат.
    Ответ написан
    Комментировать
  • Что за ошибка при установке yii2?

    @karminski
    Senior React.JS Developer
    Судя по всему, вы установили advanced application template. В нем два приложения: backend, frontend. Внутри каждой из этих папок должна быть папка web, а в ней файл index.php. Необходимо правильно настроить веб-сервер для интерпретации индексной странице.

    https://github.com/yiisoft/yii2-app-advanced/blob/...
    см. пункт 4 в разделе Preparing application
    Ответ написан
    Комментировать
  • Возможна ли переквалификация в разработчики после 30 без профильного высшего образования?

    @FoxInSox
    существует ли какой-нибудь путь переквалификации, позволяющий перепрыгнуть в разработку из аналитики без профильного образования и без потери в заработной плате

    Конечно. Устраивайтесь junior разработчиком тысяч за 40-60 с 10 до 5. С шести вечера до часу ночи работайте в макдональдсе за тысяч 30. Если будете стараться, то через пол года в макдональдсе дорастете до менеджера и будете получать тоже 40-60.
    Ответ написан
    1 комментарий