понедельник, 9 ноября 2015 г.

Это прекрасно!

Длинный мнемонический идентификатор 

  public function MyGetLinkItemsByParentTypeAndParentIdAndFromTargetTypeAndFromTargetIdAndToTargetType($iParentType, $iParentId, $iFromTargetType, $iFromTargetId, $iToTargetType, $aParams = array()) {
        return $this->GetLinkItemsByParentTypeAndParentIdAndFromTargetTypeAndFromTargetIdAndToTargetType($iParentType, $iParentId, $iFromTargetType, $iFromTargetId, $iToTargetType, $aParams);
    }
Это победа!


вторник, 27 октября 2015 г.

Гитхаб головного мозга

Ага. У каждого первого.  Патология однако.   Выкладывать в гитхабы и прочие битбакеты дистрибутивы библиотек работы с API,  даже состоящие из одного файла, и в принципе не предназначенные для версионной модификации.




среда, 15 июля 2015 г.

5 правил написания хорошего кода

1. Код должен быть простым и очевидным.
2. Код должен быть простым и очевидным.
3. Код должен быть простым и очевидным.
4. Код должен быть простым и очевидным.
5. Код должен быть коротким.

вторник, 14 апреля 2015 г.

Список всех стандартных классов исключений в PHP

Вот список всех  всех стандартных типов Exception в php.

Exception
  LogicException
    BadFunctionCallException
      BadMethodCallException
    DomainException
    InvalidArgumentException
    LengthException
    OutOfRangeException
  RuntimeException
    OutOfBoundsException
    OverflowException
    RangeException
    UnderflowException
    UnexpectedValueException


понедельник, 6 апреля 2015 г.

Как ускорить интернет.

Чтобы ускорить интернет бесплатно без регистрации и смс, в броузере, достаточно  произвести несколько нехитрых действий.  А именно - добавить  в настройки фильтров адблока  всякие  яндекс метрики, гугл аналитики, гиперкоменты, фейбуко-твиттерные апи и прочий  шлак. Для того, чтобы ускорить "ускорить интернет"  или повысить скорость отрисовки страниц в браузере, не поленитесь зайти на пару-тройку типичных интернет страниц и позакидывать руками в настройки адблока фильтры для блокировки всех этих модных свистоперделок.
Я вам зуб даю. Ускорится не только интернет. Почувствуете,  как в процессоре вашего компьютера прибавилось еще одно, а то и два ядра. Быстрый интернет, это не быстрый канал и не мощный компьютер. Быстрый интернет, это страницы без  шлака.


вторник, 17 марта 2015 г.

Newscoop и TinyMCE. Настройка пользовательских стилей.

Newscoop может быть любой версии начиная с четвертой.
Чтобы добавить в редактор статьи свои стили нужно сделать несколько простых телодвижений. В файл   /admin-files/articles/editor_load_tinymce.php
в районе 220 строки в коде

    if ($p_user->hasPermission('EditorFontFace')) {
        $toolbar2[] = "|";
        $toolbar2[] = "styleselect";
        $toolbar2[] = "removeformat";
        //$toolbar2[] = "formatselect";
        //$toolbar2[] = "fontselect";
    }
проследить, чтобы был включен $toolbar2[] = "styleselect";


Далее в этом же файле набросать в настройки собствено редактора  вот такой блок
        style_formats : [
...............
            {title : 'Консультация',       block : 'p', attributes : {'class' : 'consultation'}},
            {title : 'Фотографии в линию',   block : 'div', attributes : {'class' : 'photos_group'}}
        ],
А в файл /admin-files/articles/article_stylesheet.css  набросать собственно сами классы.
И Tinymce  подключится с нужными классами. Вот такой он newscoop.





понедельник, 2 марта 2015 г.

php удаление файла по маске

 Ежели возникла нужда удалить  список файлов по маске, то вот простенький PHP код в полторы строчки.
 $mask = '*.jpg';
array_map('unlink', glob($mask));
 

Программисто фантастико!


Я просто оставлю это шедевр здесь.


{% if (file.error!="SyntaxError: Unexpected token <") { %}
 <div><span class="label label-danger">Error</span> {%=file.error%}</div>
{% } %}





понедельник, 23 февраля 2015 г.

Регистрация сайта в твиттере

Чтобы зарегистрировать сайт в твиттере нужно действовать так:



·         Необходимо  иметь подтвержденный аккаунт в сети. (  все действия производятся с этого акаунта)
·         Сходить по ссылке https://apps.twitter.com/   Create new app
·         Заполнить форму
Name : Название сайта ( его увидит пользователь)
Description: Краткое человеческое описание сайта (его видит пользовать при входе)
Website: адрес сайта
Callback URL: http://ДОМЕН_САЙТА/addon/index.php?r=site%2Flogin&service=twitter
·         На следующей странице будут доступны ключи для API

Модерация не требуется.

Как зарегистрировать сайт во вконтакте

Чтобы зарегистрироваться свой сайт во социальной сети вконтакте нужно проделать во такую нехитрую последовательность действий




·         Необходимо  иметь подтвержденный аккаунт в сети. (  все действия производятся с этого акаунта)
·         Сходить по ссылке http://vk.com/editapp?act=create и зарегистрировать сайт
Название: название сайта (его увидит пользователь)
Тип: веб-приложение
Адрес сайта: собственной адрес сайта
Базовый домен: совпадает с доменом сайта

·         На телефонный номер, привязанный  к учетной записи придет код подтверждения регистрации. Необходимо ввести этот код.
·         Продолжить регистрацию:
Описание: Краткое человеческое описание сайта (его видит пользовать при входе)
Категория: прочее
Группа приложения: не надо
Страница помощи: Выключена
Пользов. Соглашение: Если на сайте есть страница с пользовательским соглашением, то можно вписать, если нет, но оставить пустым.
Политика конфиденц.: аналогично
·         Выбрать пункт меню Настройки
·         В форме хранятся ключи API
·         Состояние: приложение включео и видно всем
Установка приложения: не требуется.
Тематика сайта: можно выбрать.
Модерация не требуется.

Как зарегистрировать сайт в однокласниках



Такая коротенькая памятка как регистрировать сайт в однокласниках
 

·         Необходимо  иметь подтвержденный аккаунт в сети. (  все действия производятся с этого акаунта)
·         Сходить по ссылке http://ok.ru/devaccess  и получить права  регистрацию приложений в социальной сети.

Все  регистрируемые сайты и  приложения в одноклассниках почему-то называются игры. Так что пугаться не надо. 

·         Зайти по ссылке http://ok.ru/games  И выбрать пункт меню Мои загруженные. В нем  Добавить приложение
·         Откроется форма. Ее нужно заполнить:
Название: краткое человеческое название сайта. (его видит пользовать при входе)
Короткое имя: любая дребедень на латинице ( для авторизации не используется)
Описание: Краткое человеческое описание сайта (его видит пользовать при входе)
Тип приложения :
External
Ссылки на аватарки и иконки:  128x128 50x50 и 18x18 обязательны. 230x150 не нужна. Для авторизации не истользуется
Ссылка на приложение:  Собствено адрес сайта
Ссылка callback: заполнять не нужно
Ссылка на службу поддержки: заполнять не нужно
Base URL для картинок в ленте: Заполнять не нужно
Эл. почта для уведомлений: тот же емейл, что и в акаунте с которого заполняется форма.
Размеры приложения: Полный экран  (На самом деле не используется, но галку нужно нажать)
Статус: Публичное (этот пункт собственно и запускает работу с
API )
Официальная группа: Заполнять для  типа прилодения
External не нужно ( не имеет смысла)
Права: Все галки в положение не нужно
·         Далее на почту  упадет письмо с ключами API и ссылкой на приложение. Письмо терять не рекомендуется.

Никаких  отправок на модерацию не нужно делать. Так как для  авторизации это не имеет смысла.



четверг, 19 февраля 2015 г.

YII2 beforeValidate баг?

Вот такой вот незатейливый код
 public function beforeValidate() {
      ..................................
        parent::beforeValidate();
    }
 В YII2 модели приводит к очень интересному эффекту.   Перестают вызываться валидаторы. Причем очень хитро. для клиентской части валидаторы генерятся и раобтают. Для серверной, вызываются только валидаторы наследованные от Validator. Те же, что  реализованы в виде методов самой модели просто игнорируются.
Прчина кроется в том, что в вышеприведенном коде метод beforeValidate  не возвращает true или false в явном виде.   Ну да. ошибочная реализация метода. Описка походу.
вместо
return parent::beforeValidate();
просто
parent::beforeValidate();
Но  обидно. Никаких исключений или предупреждений не выбрасывается. А  код начинает  глючит в совсем другом месте.  Мелочь, а неприятно.


понедельник, 9 февраля 2015 г.

YII2 оперативное отключение csrf

Случаются в жизни огорчения, когда нужно запостить форму с внешнего источника. Например из самопального плагина к броузеру. Просто так YII2 такие вещи сделать не даст. Потому что  умным быть пытается. csrf и все такое.  Ежели Вы, например, сформировали ручками POST и запулили  на метод контроллера, то вместо обработки запроса, получите на руки


Bad Request (#400)
Не удалось проверить переданные данные.
The above error occurred while the Web server was processing your request.

Что в принципе  правильно. Ибо нефиг тут  формы сабмитить направо и налево. И никакие пляски с  behaviors не помогут. Нельзя, значит нельзя.   Рисуйте отдельный контроллер, с отдельным layout и отключайте там csrf.
Но!  если нужда заставила в одном методе таки делать POST напрямую, то нет смысла городить отдельную филармонию с  балетом и флейтистками. Есть способ проще и быстрее.

    public function beforeAction($action) {
        $this->enableCsrfValidation = ($action->id !== "ДЕЙСТВИЕ");
        return parent::beforeAction($action);
    }

И после этого на соответствующее действие проверка  csrf  будет отключена.





вторник, 6 января 2015 г.

Canvas getImageData - очередная свистоперделка

Все, что сделано по-пьяни - вечно. Не исключение и Javscript.  Похмельное творение десятидневного запоя,   да еще в сочетании с инфантильным HTML5 , работать  устойчиво по-определению не может.  Так как что стандарты, что реализация  написаны современными "тыжпрограммистами". Canvas тот же.  Нет, я понимаю, что традиционно  функция  получения пикселя изображения во всех языках не отличается быстротой, но не до такой же степени.  getImageData  на  не самом  медленном четырехядерном процессоре  успевает вызваться за секунду менее 500 раз.   Это вообще как?