Boilerplate: Angular.js + JADE + Gulp
Изначально я долго и усердно настраивал browserify+angular.js, и был близок к победе, но что-то пошло не так (а именно inject кастомных директив) и я решил немного повременить. Поэтому связка будет немного иной и в консоли придется выполнить на одну команду больше. Так или иначе, этот пост в первую очередь для моего друга-бэкэндера и здесь будет сделан упор на автосборку проекта с помощью таск-менеджера Gulp.
Lexa-007, You’re welcome 😉
читать далее
Кастомизируем angular-strap datepicker
Это не пост, скорее заметка, чтобы не забыть.
Речь идет про http://mgcrea.github.io/angular-strap/##datepickers
читать далее
Хранение паролей в Yii2
Здравствуйте! Сегодня хотелось бы поговорить о методах, позволяющих повысить безопасность, в приложениях на Yii2.
Поскольку алгоритмы шифрования паролей алгоритмами md5 or sha1 уже не внушают сильного доверия. В Yii2 был реализован метод реализующий хеширование bcrypt.
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123');
в результате выполнения данного метода переменная $hash_pass будет содержать приблизительно следующее значение из 64 символов
$2y$13$imm.m0q9qN/IrWF4AtmH4ejHyS3d.ElmkayY3vQ69DTApgEY4ne36
Также у generatePasswordHash можно указать вторым параметром сложность шифрования
$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123',10);
по умолчанию этот параметр имеет значение 13. В официальной документации рекомендуют выставлять этот параметр повыше, но не стоит увлекаться.
Это довольно ресурсоемкий процесс. Если представить, что ваш компьютер сосчитает хеш со сложностью 14 за 1 секунду, то формула по нахождению времени расчета хеша будет выглядеть так 2^(сложность — 14) секунд.
В отличии от md5, при повторном вызове данного метода, будет сгенерирован абсолютно другой набор символов! Для этого для валидации пароля используется следующий код.
Yii::$app->getSecurity()->validatePassword($pass, $hash_pass);
Метод вернет true в случае успешной проверки и false в случае несоответствия данных.
Текстовый редактор с загрузкой изображений
Недавно наткнулся на интересный текстовый редактор Imperavi с возможностью загрузки изображений и ко всему прочему сообщество Yii купило OEM лицензию на него, за что отдельное спасибо!
До этого для вставки текстового редактора я использовал CKEditor и расширение для него the-ckeditor-integration, редактор Imperavi мне показался хорошей альтернативой. В этой статей хотелось бы поделиться своими впечатлениями о редакторе Imperavi. читать далее
Склонение существительных
Здравствуйте! Недавно столкнулся с задачей склонения существительных после числовых значений, например 1 удав, но 2 удава. Прежде чем лезть в просторы интернета за готовыми вариантами решений, мне захотелось самому понять принцип склонения существительных.
Итак для начала я решил составить таблицу возможных окончаний слова в зависимости от числительного. Поскольку выше были упомянуты удавы, то на них и остановимся. читать далее
AJAX ссылка с подменой необходимого URL
Здравствуйте! Сегодня хотелось бы поделиться способом создания ajax ссылок в Yii. Зачастую бывает, что кроме самого функционала ajax ссылки необходимо проставить соответствующие адреса, для более правильной индексации поисковиками.
Давайте представим, что у нас есть какое-то меню рубрик товаров. Например меню состоит из 3х пунктов «Цветы, горшки, земля» и мы решили сделать эти ссылки посредством ajax т.е. при нажатии на «Горшки» у нас в блоке контента появляются горшки без перезагрузки страницы. Код подобной ссылки будет примерно следующий: читать далее
Комфортная работа по sshfs в OS X и Ubuntu
Данный пост будет рассчитан на пользователей OS X, но справедливости ради, скажу, что в Ubuntu все еще удобнее, поэтому не составит труда поставить sshfs через apt-get install, а сам ssh — есть «из коробки» в обеих системах.
Установить sshfs в OS X можно с помощью brew. Как установить brew — здесь
читать далее
Улучшаем читаемость git diff для сжатых js файлов (binary git diff)
Когда вы жмете js код, и попутно заменяете другие файлы, при попытке посмотреть git diff, вывод данной команды будет засорен большими кусками сжатого кода, так как это обычно одна строка и достаточно длинная, гит думает что ее заменили (и правильно!) и хочет, чтобы вы видели это. Но давайте, научим гит говорить нам, что изменился лишь размер файла, так как вывод изменений сжатых файлов нам абсолютно не интересен.
читать далее
Ньюанс base64 decode image для сохранения на диск
Всеми любимый canvas имеет классный метод .toDataUrl(), который возвращает base64 закодированный текст. Но, внимание, с припиской вначале: data:image/png;base64, как раз в этом вся и проблема. При сохранении такой последовательности, ваше изображение получается испорченным. Все дело в том, что само изображение это ровно то, что идет после этого. Поэтому берите на вооружение вот такую регулярочку:
imgData.replace(/^data:image\/png;base64,/,'');
Реализовать связь многие ко многим в Yii
Добрый день! Сегодня рассмотрим способ организации связи таблиц многие ко многим на Yii.
Допустим у нас есть таблица профилей пользователей и таблица категорий интересов и увлечений. Один пользователь может иметь несколько увлечений и одним увлечением может интересоваться несколько пользователей, таким образом у нас получается связь многие ко многим. читать далее

