<rmcreative>

RSS
  1. Подключение к L2TP VPN средствами Windows

    22 июля

    Захотелось подключиться к отлично работающему в Android, iOS, MacOS VPN по L2TP средствами Windows. Вот не хочет и всё тут.

    Поискал причину, нашлась. Итого:

    • Открываем regedit.
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent.
    • Создаём DWORD (32-bit) с именем AssumeUDPEncapsulationContextOnSendRule.
    • Выставляем значение в 2.
    • Перезагружаемся.
    Комментировать
  2. wnmp-dev: nginx, MariaDB, PHP под Windows

    16 июля

    Решил выложить то, что собрал себе вместо denwer для работы с PHP под Windows. Нынче популярны всякие Vagrant, но иногда, особенно если пишется кросс-платформенное решение вроде Yii, нужен и Windows в том числе.

    Итак, wnmp-dev — простейший набор bat-скриптов и конфиг для nginx, которые позволяют развернуть полноценный вебсервер под Windows и легко переключаться между разными версиями PHP.

    Как поставить:

    1. Клонируем https://github.com/samdark/wnmp-dev.git или загружаем архивом.
    2. Забираем нужные версии PHP с сайта PHP for Windows. Берите nts, x86 zip.
    3. Распаковываем архив. Версия 5.5 должна оказаться в php55, версия 5.4 в php54.
    4. Забираем MariaDB или MySQL, складываем в mariadb.
    5. Копируем nginx/conf/vhosts/example._conf в nginx/conf/vhosts/mysite.conf, редактируем так, чтобы конфиг указывал на ваш вебрут.
    6. Добавляем домен из конфига в hosts.
    7. Запускаем start_all.bat
    8. Работаем.

    Предложения, пожелания и вопросы принимаются, ридми будет уточняться.

    https://github.com/samdark/wnmp-dev

    11 комментариев
  3. DevConf 2014, отчёт

    10 июля

    14 июня, почти месяц назад, в Москве прошла одна из лучших разработческих конференций DevConf. Сразу опубликовать отчёт не вышло, но лучше сейчас, чем никогда, ведь рассказать есть о чём.

    Читаем

    6 комментариев
  4. Yii 1.1.15 (исправление безопасности)

    30 июня

    Вышел Yii 1.1.15, исправляющий проблему безопасности, найденную в 1.1.14. Более ранние версии не затронуты. Если вы используете его, следует обновиться. 1.1.15 полностью совместим с 1.1.14.

    Уязвимость затрагивает CDetailView. Если ваше приложение берёт значение value от пользователя, то атакующий имеет возможность выполнить произвольный PHP скрипт на вашем сервере. Мы не раскрываем подробностей сразу чтобы дать время обновиться. По нашим данным детали пока известны только основной команде разработчиков фреймворка.

    Уязвимости присвоен номер CVE-2014-4672.

    Забрать дистрибутив можно, как обычно, на yiiframework.com или обновиться через Composer.

    5 комментариев
  5. Иллюстрированное руководство по рефакторингу

    26 июня

    На хабре анонсировали отличное иллюстрированное руководство по рефакторингу. Объяснения простые и понятные, примеры пока на Java и PHP.

    Рекомендую

    Комментировать
  6. PHP 5.6.0RC1

    20 июня

    Вышел первый кандидат в релизы PHP 5.6.0. Можно помочь разработчикам, проверив свои проекты на этой версии (не на боевых серверах, конечно) и сообщив о проблемах.

    Изменения радуют. Рассмотрим самое интересное.

    Читаем

    11 комментариев
  7. GitHub Octicons

    19 июня

    Команда GitHub выложила набор значков, используемых в проекте, в свободный доступ под лицензией SIL OFL 1.1. Значки векторные. Выполнены в виде шрифта, использовать который очень просто:

    <link rel="stylesheet" href="/octicons/octicons.css">
     
    ...
     
    <span class="octicon octicon-flame"></span>

    Пользуемся

    3 комментария
  8. Android, фрагмент в фрагменте и startActivityForResult

    12 июня

    Одна из самых раздражающих недоработок Android проявляется когда нужно из фрагмента получить изображение с камеры или выбрать из готовых. Для этого используется Fragment.startActivityForResult(), а результат приходит в Fragment.onActivityResult(). Всё бы хорошо, но если фрагмент является потомком другого фрагмента, onActivityResult() не вызывается. Решается не очень тривиально:

    startActivityForResult() вызываем не для текущего фрагмента, а для родителя:

    private Fragment getActivityStarterFragment() {
            if (getParentFragment() != null) {
                return getParentFragment();
            }
            return this;
        }
     
    getActivityStarterFragment().startActivityForResult(...);

    В фрагменте-родителе явно вызываем onActivityResult() потомков:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callOnActivityResultOnChildFragments(this, requestCode, resultCode, data);
    }
     
    // реализовано коллегами после изучения https://gist.github.com/artem-zinnatullin/6916740
    public static void callOnActivityResultOnChildFragments(Fragment parent, int requestCode, int resultCode, Intent data) {
        FragmentManager childFragmentManager = parent.getChildFragmentManager();
            if (childFragmentManager != null) {
                List<Fragment> childFragments = childFragmentManager.getFragments();
                if (childFragments == null) {
                    return;
                }
                for (Fragment child : childFragments) {
                    if (child != null && !child.isDetached() && !child.isRemoving()) {
                        child.onActivityResult(requestCode, resultCode, data);
                }
            }
        }
    }
    Комментировать
  9. Переводим Yii 2.0 на русский

    6 июня

    Наконец, подготовил всё для начала перевода документации Yii 2.0 на родной язык. Оригиналы пока готовы не все, но их достаточно, чтобы начать работу.

    Самостоятельно перевёл только оглавление. Остальное оставляю тем, кто хочет помочь фреймворку.

    6 комментариев
  10. UWDC 2014, отчёт

    31 мая

    UWDC в Челябинске прошёл замечательно. Спасибо за хорошую атмосферу, общение и отзывы, которые особо важны OpenSource разработчикам для поддержания боевого духа.

    Отдельно спасибо тем, кто пригласил Сергея Логинова, поделившегося своим необычным опытом работы.

    11 комментариев