• Yii2. Как динамически подключить к Validotor class "MyBehavior" (Yii2 Behavior) чтоб его наследовали все built In Validator?

    @LAV45
    Можно статически повесить обработчик на все события базового класса.
    Вот так образом я добавил свой обработчик ко всем контроллерам
    \yii\base\Event::on('yii\base\Controller', 'beforeAction', function(\yii\base\ActionEvent $event) {
    // ...
    });
    Ответ написан
    Комментировать
  • Как сделать range validator для yii2?

    mulat
    @mulat
    seo, php, yii2
    Пример "in range" валидатора для дат:

    public function rules()
        {
            return [
                [['date'], 'required'],
                [['date'], 'safe'],
                [['date'],
                    'filter',
                    'filter' => function($value){
                        return \Yii::$app->formatter->asDate($value, 'yyyy-MM-dd');
                    }
                ],
                [
                    ['date'],
                    'date',
                    'format' => 'yyyy-MM-dd'
                ],
                [
                    ['date'],
                    'in',
                    'range' => function ($model, $attribute) {
    
                        $start = \Yii::$app->formatter->asTimestamp(!empty($model->oldAttributes[$attribute]) ?
                                    $model->oldAttributes[$attribute] :
                                    $this->$attribute);
                        $start += 24 * 60 * 60;
    
                        $stop = \Yii::$app->formatter->asTimestamp($model->relatedModel->end_date);
    
                        $dates = [];
                        while ($start <= $stop) {
                            $dates[] = \Yii::$app->formatter->asDate($start, 'MM/dd/yyyy');
                            $start += (24 * 60 * 60);
                        }
                        return $dates;
                    },
                    'on' => [
                        self::SCENARIO_DEFAULT,
                    ],
                    'skipOnEmpty' => false,
                    'skipOnError' => false
                ],
          ];
    }


    P.S.
    Валидатор готовит массив дат в американском формате, т.к. именно он нужен для выбора даты из \yii\jui\DatePicker

    <?php
                $form = ActiveForm::begin();
                $model->date = \Yii::$app->formatter->asDate($model->date, 'MM/dd/yyyy');
    ?>
    
    <?= $form->field($model, 'date')
                    ->label('Date')
                    ->widget(DatePicker::className(), [
                        'dateFormat' => 'MM/dd/yyyy',
            ])
            ->textInput([
                  'class'    => 'form-control',
            ]);
    ?>
    Ответ написан
    Комментировать
  • Python примеры парсеров?

    sim3x
    @sim3x
    Есть scrappy
    Там все реализуется без вопросов
    Ответ написан
    2 комментария
  • Возможно ли работать удаленно и при этом быть официально трудоустроеным согласно ТК РФ?

    Работаю на удаленке - официально.

    Все просто.

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

    Я будучи во Владивостоке, работаю официально в Москве, даже ипотеку себе оформить смог. Работодатель прислал все по почте (все справки).
    Ответ написан
    2 комментария
  • Что делать если новая работа не нравится?

    @Nethersex Автор вопроса
    UPDATE:
    В итоге я уволился, нашел работу по душе
    Ответ написан
    Комментировать
  • Сдача экзамена Java 1Z0-808 или 1Z0-803?

    @legven
    В зависит от места работы и стремлений. Если Вы хотите работать в интеграторе, то для Вас это будет необходимость в силу разных причин. Если для строчки в резюме - тоже неплохо, но все будет зависеть от должности. Если у Вас старт карьеры, то это будет хорошим плюсом для резюме для приглашения на собеседование, а дальше - как карта ляжет...
    В любом случае - этот опыт будет для Вас полезен, если это Ваш первый экзамен в сертификационном центре.
    В любом случае - знания, которые вы получите для для сертификации лишним не будут.
    Относительно экзаменов - вы немного ошибаетесь :-)
    Вы можете иногда сдавать любые экзамены - просто зарегистрировавшись на них, но вот статус соответствующий получите только при выполнение необходимых всех условий в пререквизитах.
    Лично я не вижу смысла за свои давать 7-ку. Это экзамен "пожизненный" и 8-ка когда выйдет в продакшен вы как раз будете максимально востребованы и будете спокойно готовиться к мастеру по 8-ке.
    Я настоятельно рекомендую сразу попробовать 8-ку, так как из-за нововведений определенный класс приложений будет писаться в разы быстрее...

    А почему Вы решили, что на 1Z0-809 зарегистрироваться нельзя? На сайте кнопка валидна, значит регистрация возможна.
    Ответ написан
    Комментировать
  • Как отправлять письма через swiftMailer в Yii2?

    @matperez
    Ответ конечно устарел, но многим может быть полезным. Вот так можно получить лог всего процесса отправки сообщения, а там уж ясно становится в чем проблема.

    $mailer = Yii::$app->get('mailer');
    $message = $mailer->compose() ... ;
    $logger = new Swift_Plugins_Loggers_ArrayLogger();
    $mailer->getSwiftMailer()->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));
    if (!$message->send()) {
           echo $logger->dump();
    }
    Ответ написан
    5 комментариев
  • Как и в каких случаях использовать DI в Yii2?

    SamDark
    @SamDark
    Yii2 core team
    DI именно в вашем случае не при чём. Это способ реализации, а не сама идея. Идея состоит в том, что вам нужно реализовать принцип инверсии зависимостей. То есть начать работать с интерфейсами, а не с конкретными реализациями.

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

    Для вашего примера делаем в модуле Article делаем интерфейсы:

    interface ArticleInterface
    {
        public function getTitle();
        public function getAuthor();
    }
    
    interface ArticleAuthorInterface
    {
        public function getName();
        public function getID();
    }


    Далее в пределах модуля используем только интерфейсы, а не сами модели:

    public function renderArticle(ArticleInterface $article)
    {
        return $this->renderPartial('_article', [
             'author' => $article->getAuthor(), 
             'title' => $article->getTitle()
        ]);
    }


    Вне модуля нам придётся реализовать интерфейсы в моделях:

    class Article extends ActiveRecord implements ArticleInterface
    {
       // ...
    }
    Ответ написан
    34 комментария
  • Как искать работу за границей?

    NetBear
    @NetBear
    Дисклеймер:
    - Нижеприведённое мои личные наработки без притензии на истину в последней инстанции.
    - Важно понимать, что всегда присутствует коэффициент удачи, который может многократно увеличить отдачу от ваших усилий, равно как и помножить их на ноль.
    - В любом случае это лучше, чем сидеть на попе ровно и ничего не предпринимать :)

    Пассивный поиск:
    - Создайте красивое резюме для сайтов проф. знакомств.
    - В сети есть многочисленные рекоммендации как такое резюме составлять. Не ленитесь его постоянно совершенствовать. Это не большие трудозатраты.
    - Обязательно укажите, что Вы находитесь в поиске работы и согласны на переезд в другую страну.
    - Помимо LinkedIn в Европе очень популярен сайт XING, поэтому не будеть лишним продублировать ваш красивый профиль на обеих площадках.
    - Ждите пока на Вас выйдут.

    Активный поиск:
    - Описанного в п. "Пассивный поиск" можно ждать бесконечно и не дождаться.
    - В LinkedIn подписывайтесь на профильные группы. Ищите объявления о найме. Рассылайте резюме куда можно и куда нельзя. Договаривайтесь об интервью, даже если это очевидно не выстрелит. Будте дерзким и напористым, но без фанатизма.
    - Есть ещё такой сайт, как JobServe. Там можно создать поисковый фильтр по ключевым словам, странам итд. Можно также подписаться на рассылку и получать результаты поиска по эл. почте.
    - Красивое резюме конвертировать в Word и PDF. Составить красивый cover letter. Желательно, чтобы последний был написан таким образом, чтобы его можно было максимально просто адаптировать к разным реалиям, т.к. он рассылается вместе с резюме и должен быть индивидуальным для каждой вакансии. В добавок не помешает написать красивое типовое письмо с обращением к агенствам по подбору персонала и пояснением чего вы от них собственно хотите. Дальше, ищем в сети те самые агенства по найму, работающие в интересующих вас географических регионах. Чем больше, тем лучше. Веером рассылаете им заготовленное красивое письмо о том что Вы много знаете и умеете и готовы продать родину по сходной цене. Из десятков откликнуться единицы, с ними продолжите переговоры. Где-то возможно дойдёт и до интервью, а там и до заветного трудоустройства рукой подать. Остальные занесут Вас в свои базы данных, которые Вам придёться раз в несколько месяцев обновлять повторной рассылкой вежливых напоминаний о себе.

    Update 1:
    Вот, кстати, замечательное дополненние от Aleksei Podgaev относительно сертификата по английскому. У меня в своё время тоже была проблема, общая для большинства людей, для которых английский неродной и они не находятся в англоязычной среде. Проблема заключается в неспособности оценить свой уровень, т.к. нет обратной связи с носителями языка. Я для себя нашёл следующий хак. Я подготовился и прошёл экзамен IELTS. Очень поучительно и даёт реальный толчёк в уровне языка. Если будет интересно, поделюсь своей методикой подготовки. Это отдельная интересная тема.

    Update 2: Хочу поделиться своими наработками в подготовке к IELTS

    Общая часть:
    Вышеозвученный дисклеймер в равной мере имеет отношение и к системе подготовки к IELTS. Это мой личный опыт. Нижепреведённое может не подойти вам полностью или частично в силу особенностей вашей личности, склада ума или жизненных обстоятельств.

    Как бы то ни было, мой личный опыт можно резюмировать следующими тезисами:

    1. Готовиться нужно только с преподавателем.

    2. Преподаватель должен быть носителем языка и в идеале не знать русского.

    3. Период подготовки не должен быть продолжительным. Не более 3-4 месяцев.

    4. Занятия в период подготовки должны быть интенсивными. Я старался брать 4-5 уроков в неделю, иногда брал сдвоенные.

    5. Я занимался удалённо, т.е. я был в Израиле, а преподаватель жила в Испании. Мне настолько понравилась талая система занятий, что на сегодняшний день даже если преподаватель будет жить в соседнем доме, я буду заниматься по той же схеме. Собственно схема:
    - У преподавателя есть публичный Гугл Календарь, в котором студент находит удобный для себя незанятый отрезок времени и назначает урок. Я, как правило, забивал уроки на неделю-две вперёд.
    - После того, как преподаватель подтверждал предложенное время, я оплачивал уроки на неделю вперёд переводом через Пейпал на счёт преподавателя.
    - Сам урок идёт по Скайпу. Первое время мы делали видеоконференции, затем я настоял на том, чтобы оставить только звук, т.к. на экзамене у вас не будет подспорья в виде картинки и возможности прочитать мимику или по губам. На экзамене требуется умение воспринимать на слух. Помимо всего прочего, я записывал аудио всех уроков. Это даёт возможность проработки сложных моментов самостоятельно итд.
    - В экзамене IELTS четыре части, т.е. помимо восприятия на слух и разговорных навыков, вам необходимы навыки "понимания прочитанного", а также написания эссе. Для тренеровки двух последних, моя преподаватель давала мне кучу письменных заданий, чтобы, так сказать, набить руку. Задания загружались ею в Гугл Докс и расшаривались со мной. После выполнения последних, преподаватель может проверить задания и сделать свои пометки, которые видны в Докс, т.к. имеется история версий и можно посмотреть начальный и конечный вариант.

    6. Закончить интенсив необходимо не в последний день перед экзаменом, а по меньшей мере за неделю до того как. Лучше за две.

    Техническая часть:

    1. Вот ссылка на сайт соединяющий преподавателей со студентами -- https://buddyschool.com. Вполне вероятно существуют аналогичные платформы, я не искал.

    2. Алгоритм поиска преподавателя следующий:
    - Смотришь рейтинг преподавателей и отзывы от бывших студентов.
    - Прицениваешься. В моём случае урок (60 мин) стоил 8.5 евро. Это было в 4 раза дешевле, чем на тот момент хотели местные преподаватели за 45 минут урока.
    - Списываешся с преподавателем/ями и начинаешь договариваться.
    - Берёшь пробный урок (обязательно!).
    - Если все звёзды сошлись, начинаешь заниматься.

    3. Я в своё время сделал такой финт ушами. Отобрал штук 10 +/- подходящих преподавателей и веером разослал им сообщение следущего содержания:

    Subject: Intensive IELTS preparation training required.

    Hello,

    I have registered for the closest IELTS test in my area. It's on May 16.
    I reside at GMT+2 time zone. So, my suitable time for the classes is at evening on weekdays and a bit more flexible on weekends.
    What I already have. Currently I’m on some middle-advanced English level, as I evaluate it. May be I mistake.
    What I need. I need some tutor strongly familiar with IELTS format to build for me (or might be already have this built) a highly intensive month-long training includes the practice for all four IELTS parts:
    - A bit less focus on Listening and Reading parts. It may be limited by set of necessary tips and hints and as addition several practical tasks.
    - A bit more attention to the other two parts Writing and Speaking, that the Skype format is tailored for them.
    So, my questions are:
    - Do you have enough familiarity with IELTS test format and preparation methods?
    - Do you have enough free slots for at least three classes each week of the next month until May 16?

    Regards,
    %username%


    Затем из ответивших, выбрал наиболее подходящих, их было 3. С ними со всеми я провёл пробный урок, по результатам которого отсеял ещё двоих.

    Update 3:

    В виду того, что размер ответа превысил установленный предел, он был отредактирован и перенесён в качестве публикации на Мегамозг -- megamozg.ru/post/10570
    Добавлен ещё один большой раздел о составление красивого резюме.

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

    bonflash
    @bonflash
    Вёрстка, фронтенд
    В случае регистрации ИП мне придётся платить 6% от стоимости услуг и 17к в год фиксировано, на данный момент для меня это является неприемлемым.

    Во-первых, как выше заметили, не 17, а 35. Но, это касается только 2013 года, в 2014 схема другая: примерно 21 000 в год, если сумма всех доходов за год <= 300 000 рублей. Если доходы > 300 000, то 21 000 + 1% * (доходы - 300 000).
    21 000 - сумма примерная, зависит от МРОТ в 2014 году, его точно не вспомню. Пруф.

    Во-вторых, ИП на УСН 6% без работников и в 2013, и в 2014 имеет право вычесть из суммы налогов сумму уплаченных страховых взносов. То есть, допустим в квартал вы платите в фонды 5000. Если 6% от вашего дохода за этот квартал меньше 5000, то налог вы не платите. Пруф.

    В таком виде совокупность налогов и взносов не так разорительна для ИП :) При условии, конечно, что совокупный доход не совсем уж маленький.
    Ответ написан
    6 комментариев