среда, 28 марта 2012 г.

A HREF. Выпуск 1

Вступление


A HREF - это новый раздел этого блога.

Я прочитываю за неделю достаточно много информационных лент разной тематики и интересные ссылки уже давно собираю для использования в новых Очевидностях. Однако эти ссылки "застаиваются" и порой даже теряют актуальность к тому, времени, когда я включаю их в очередной выпуск.

Подсмотрев идею у link-блога addmeto.cc, я решил эти ссылки публиковать раз в неделю AS IS. В новостях Русофта такие выпуски я анонсировать не буду (кроме этого первого), поэтому если интересно получать выпуски оперативно подпишитесь на RSS ленту тега "href" этого блога.

Тематика ссылок как и у всего блога. Ссылки буду разбивать на группы, часть ссылок особенно по началу будут из старых запасов.

События

  • Отчет о конференции #MBLT12 - обзор конференции по мобильным технологиям от моб. приложений до коммуникаций, позже обещаю материалы и видео.

Разработка


Продуктивность, бизнес


Прочее

  • Рекурсивный zip-архив - про квайны я давно знал, теперь придумали тоже самое для .zip .gz архивов, круто
  • Голографическая реальность - необычная модель построения и происхождения вселенной, которая спорна, но может быть со временем подтверждена опытами. Даже со своей институтской физикой я понял меньше половины :) но интересно.

четверг, 15 марта 2012 г.

Выпуск 8. Hello GIT!

Очередной спец. выпуск.


Hello GIT!

Как я уже писал в новостях Русофта у нас построена вся инфраструктура для использования GIT вместо SVN.

На GIT уже успешно переехал ЕИС, в ближайший месяц-два переедет PortalEngine (движок ЕИС).

Ниже предлагаю части письма, которые я писал нашему ген. директору, когда обосновывал переход на GIT. Они ответят вам на вопрос "Зачем GIT, какой от него PROFIT?" (с нетехнической точки зрения). На многие технические вопросы для программистов я уже ответил в Вики.



Git

GIt - это система работы с исходным кодом (аналог используемого нами сейчас SVN). У неё есть важные технические отличия от SVN.

Углубляться в них не буду. Главное, что они позволяют добавиться нескольких преимуществ в разработке:

  • Возможность изолирования изменения по одной или нескольким задачам (в т.н. "ветку"). При это над веткой может работать несколько человек, а по её готовности и проверке она "вливается" в основной код (основную ветку).
  • Что в свою очередь позволяет более гибко выпускать обновления и исправления на рабочем сервере. Сейчас нередко ситуация когда нужно выпускать очередное обновление, а какая-то одна задача тормозит процесс, но простым способом "выкинуть" её из текущего кода. С Git таких проблем нет. 
  • GIT упрощает Hot Fixes, когда на уже выпущенной на рабочий сервер версии есть ошибки и нужно внести изменения. С SVN часто бывало, что наша разработка уже ушла вперёд и просто так протестировать и выложить исправления мы не можем. С GIT это решается более просто.
  • GIT "поощряет" часты и маленькие "коммиты" (фиксацию изменений), в отличии от SVN где коммит часто у разработчика результат работы за день-два. Чем меньше коммит, чем проще в последующем анализировать историю при поиске ошибок и объединения изменений.
  • В GIT возможна организации различных хитрых подходов к разработке. Например, когда в production (рабочую) версию системы разработчики не могут сами внести изменения, а только через руководителя проекта. Он проверяет изменения и после этого подтверждаю их внесение. Для начала у нас будет коммунизм, но со временем я буду вводить некоторые "бюрократические" схемы.
  • GIT быстрее чем SVN, хотя для нас это не особо критично.
  • С GIT в случае падения сервера с репозиторием, мы сможем полноценно продолжить работу, ничего не потеряв (один из нас может "назвать" себя сервером и работать, как раньше).

Чтобы перейти на GIT код ЕИС переписывать никак не нужно, но нужно поменять некоторые автоматические утилиты, которые мы используем при разработке и которые были завязаны на SVN:

  • сбор ядра Pe
  • обновление ядра в ЕИС
  • сбор обновлений для рабочего ЕИС



P.S.

Напомню, что с удовольствие опубликую в блоге любые ваши рассуждения на темы, которые могут быть полезны сотрудникам Русофт (с оговоркой, что блог публичный, поэтому обойдетесь без откровенных indside'ов).

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

Выпуск 7. PHP 5.4 released

И так вышел релиз php 5.4.

Список нововведений, несовместимостей и руководство по миграции можно посмотреть на сайте php.net, полный change log тоже доступен.



Язык / интерпретатор

Из наиболее интересных изменений в языке/интерпритаторе:

Trait (типажи)

Cм. мою статью на Хабре, я её также собираюсь обновить, так как в релизе появилось пару новых полезных возможностей).

Dereferencing (разыменование)

Появилось для array и объектов, проще объяснить на примере:


    //array
    function abc() {
       return array('year' => 2012, 'month' => 12);
    }
    $year = abc()['year'];

    //object
    ( new DateTime() )->format('d.m.Y H:i'); 
    //обратите внимание на скобки, без них так не сработает


Тестовый сервер

Для разработки нужд теперь можно поднимать тестовый веб-сервер, прямо из php command line. Хороший вариант для тех, кто ленится разворачивать у себя на Windows тестовую машину (для linux это проще).

Не вздумайте использовать в production.

Подробности в документации.

Закопали наконец Выкинули magic_quotes и safe_mode.


Короткая запись массива и хеш-массива

    $a = ['title' => 'Yo', 'tags' => ['rap', 'yo']]; 
    $b = array('title' => 'Yo', 'tags' => array('rap', 'yo'));
    $a === $b; // => true

Closure с поддержкой $this, которые можно "перевешивать"

Примерно как Function.prototype.apply, Function.prototype.call в php.
Про это напишу подробнее когда-нибудь позже. Например, это позволит динамически "собирать" функциональность объектов.

Пока см. manual.


Стандартная библиотека

Из наиболее интересных изменений библиотеки:

  • json_encode с флагом поддержки прямого unicode (без escape последовательностей, типа \u****,  теперь просто в UTF-8) - позволит ускорить обработку таких json в браузере и формирование на сервере
  • реализация объекта сессий (вместо набора кучи фукнций)
  • новые SPL классы (а вы ещё не знаете/не используете SPL? Срочно читать manual).

Не совместимости

Большинство заметит только пару новых reserved words и удаленые древние фукнции:
session_is_registered(), session_register() и session_unregister().

Полный список.


Спасибо Вове А. за помощь в написании статьи.