Что нужно, чтобы начать работать с Git и GitHub

Системы управления и контроля версий на сегодня практически обязательны для любого проекта. Одной из известнейших и наиболее популярных систем управления версиями является Git. Рассмотрим работу с Git в связке с GitHub — крупнейшим хостингом для размещения IT-проектов совместной разработки. GitHub позволяет бесплатно размещать на своем сервере проекты с открытым исходным кодом.

В данном примере рассматривается работа с Git на операционной системе Windows.

Что же нужно, для того, чтобы начать практическую работу с Git:

  1. Скачать дистрибутив Git для windows:
  2. Провести установку Git на компьютер пользователя
    1. все опции в процессе инсталляции можно оставить в значениях «по умолчанию»

Счетчик цикла for в Python не имеет локальной области видимости

Одной из особенностей циклов for в Python является то, что итерируемая переменная (счетчик) не относится к локальной области видимости цикла.

Например, после исполнения следущего участка кода:

Переменная a, объявленная до цикла for, изменит свое значение, если в качестве счетчика цикла объявить переменную с таким же именем «a».

При построении кода об этой особенности нужно обязательно помнить, во избежание записи в ранее объявленную переменную значений итераторов цикла for.

Получение времени выполнения участка кода на PHP

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

Результат выполнения примера — вывод на экран:

Выполнено за: 8.9997079372406 сек.

 

Как создавать символические ссылки с помощью Total Commander

Символические ссылки в Windows, начиная с версии Vista, создаются с помощью команды mklink.

Для того, чтобы сделать в Total Commander кнопку, создающую символическую ссылку на выделенный файл, нужно выполнить следующие шаги:

  1. В удобном месте, например в подкаталоге плагинов c:\TotalCommander\Plugins\ создать командный файл mklink.cmd со следующим содержанием:

Эта команда создает символическую ссылку на файл, переданный в первом входном параметре, и размещает ее в месте, переданном во втором входном параметре.

  1. Перетащить этот файл на панель Total Commander, создав тем самым для него вызывающую кнопку.
  2. Нажать на ней правой кнопкой мышки и выбрать «Изменить…»
    1. В поле «Параметры» указать:

Сохранить изменения.

%P — путь к файлу под курсором в активной панели

%N — имя файла под курсором в активной панели

%T — путь к месту, открытому во второй (неактивной) панели

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

Python — многострочное комментирование в PyCharm

В языке Python не предусмотрено внутреннего синтаксиса для многострочного комментирования кода (наподобие /* … */ в других языках). Есть два варианта обхода этой проблемы:

  1. Использовать в качестве комментариев синтаксис многострочного литерала: ′′′

Минут данного метода в том, что подобный комментарий остается строковой константой и встраивается в конечный код.

  1. Если для написания кода используется IDE PyCharm можно выделить несколько строк и нажать комбинацию клавиш: Ctrl + /

Для снятия комментария со строк, нужно нажать ту же самую комбинацию клавиш на выделенных закомментированных строчках повторно.

Плагин к WordPress TinyMCE Advanced Editor — установка начального значения нумерованного списка

Небольшая доработка плагина к WordPress TinyMCE Advanced Editor. Дополнительная кнопка по клику позволяющая задавать начальное значение для нумерованного списка.
Собственно добавляет атрибут start = N к тегу OL.

Пример использования плагина
Пример использования плагина

Автоматическая установка фокуса на flash-приложение в браузере

При открытии html-страницы со встроенным flash-приложением фокус автоматически на приложение не устанавливается. В результате flash-приложение не реагирует на нажатия клавиш на клавиатуре, пока по нему не сделать клик мышкой.
Эту проблему можно обойти путем программной установки фокуса на flash-приложение при загрузке html-странички.

Переход с Adobe CS3 на FlashDevelop

FlashDevelop принято хвалить. Считается, что это лучшая на сегодня среда для разработки flash-приложений. На самом же деле серьезных причин перехода всего полторы:
1. Бесплатность. Если лицензия на CS3 принадлежит не вам, а предприятию, на котором вы работаете, или же вовсе вам не принадлежит: бесплатность — весомый довод в пользу перехода.
2. Вроде бы (догнав проект на CS3 до 300+ классов я еще не сталкивался с этой проблемой) компилятор CS3 не любит больших проектов, сбоит, ссылаясь на недостаток памяти.
На этом все. Все остальные причины, которые обычно превозносят (автокомплит, автоимпорт, подстветка, переходы по классам), охватывает одно определение: личное удобство. Все перечисленное — это удобство набивания кода. Обычно же в любом проекте 90% времени занимает не долбление по клавишам, а отладка, поиск ошибок и мучительные размышления «ЧЯДНТ?».
Мое личное мнение: если вы не столкнулись с проблемой платности среды или недостатка памяти компилятора, и вас все устраивает в работе в CS3 — заморачиваться с переходом на FlashDevelop не стоит.
Если же вы столкнулись с двумя перечисленными причинами, или просто хотите улучшить удобство работы с кодом, практические заметки о переносе рабочего проекта с CS3 на FlashDevelop:

Встраивание шрифта в Adobe Flash CS

В последних версиях Flash-плеера Adobe внес какие-то изменения в отображение системных шрифтов, в следствие которых, шрифтом по-умолчанию стал Arial (до этого был Times). Это бы еще ничего, но для системных шрифтов теперь постоянно включен режим сглаживания, из-за которого текст небольшой высоты (10-12) выглядит сильно смазанным.
Добиться приемлемой четкости шрифта через AntiAliasType.ADVANCED мне не удалось. Поэтому выход остался один — встроить шрифт в flash-приложение.
Проинспектировав «гугл» на предмет встраивания шрифтов, можно получить множество ссылок на встраивание шрифтов и абсолютно во всех это предлагается делать посредством [EMBED …]
Помучавшись некоторое время, я убедился, что в Adobe Flash этот метод не работает и директива [EMBED] им преспокойно игнорируется. Выходит, этот метод подходит для Flex-разработчиков,но никак не годится для работающих в Adobe Flash.

Однако метод встраивания шрифта в Adobe Flash достаточно прост. Шрифт нужно включить в библиотеку проекта и залинковать для использования в приложении.

О дрожании, или при чем здесь twips

Как реализовано движение объекта:
Есть алгоритм, вычисляющий положение объекта в зависимости от параметров и времени. Т.е. в любой момент времени, а точнее — каждую итерацию игрового цикла, положение объекта пересчитывается. Результата возвращается в глобальной системе координат (мировая система).
Соответственно, каждую итерацию игрового цикла происходит вызов процедуры перемещения объекта из координат предыдущей итерации в координаты итерации текущей.
Т.к. скорости движения отдельных объектов невелики, блоками происходит «пустой» вызов процедуры перемещения (когда координаты объекта в предыдущей итерации цикла равны координатам объекта в текущей итерации). Не оптимально, но разговор сейчас не об этом.
А о том, что в принципе перемещение из точки в туже самую точку не должно вызывать фактического перемещения. Процедура перемещения генерирует единичную матрицу, единичная матрица, умноженная на матрицу трансформации объекта, матрицу трансформации не меняет. Но…

Подключение компонентов из пакета fl.* в проект на ActionScript 3

В отличие от компонентов из пакета flash.*, которые подключатся в проект одной строчкой import, чтобы подключить компонент из пакета fl.* этого не достаточно.
Чтобы подключить компонент из пакета fl.*, например fl.controls.CheckBox нужно:
— Открыть головной *.fla файл проекта
— Открыть окно с компонентами: Меню — Window — Components
— Открыть окно с библиотеками проекта: Меню — Window — Library
— Перетащить нужный компонент (в примере CheckBox) из окна компонентов в окно библиотек
— Сохранить *.fla файл.
Теперь в проекте можно использовать компонент CheckBox обычным способом:

concatenatedmatrix не единичная

Простейший пример, который показывает, что concatenatedmatrix у спрайта, который не имеет parent’а, не является единичной:

Как создать класс по его текстовому имени

Если набор объектов в сцене описывается в XML-формате, а затем динамически генерируется в приложении — в общем случае описание сцены будет выглядеть, как нечто подобное:

XML-файл загружается в сцену через URLLoader и парсится стандартным обходом всего дерева:

Вращение спрайта вокруг произвольной точки

Собственно классическое решение задачи поворота спрайта на заданный угол вокруг произвольной точки (чаще всего его центра) путем матричных преобразований описана в куче литературы и интернет-источниках и звучит следующим образом: перенос спрайта таким образом, чтобы точка совпадал с точкой 0.0,0.0 , поворот на заданный угол, перенос обратно.
Функция RotateAroundAxis представляет реализацию данного метода (Axis — ось или точка, вокруг которой будет повернут спрайт, Angle — угол поворота):

 

Передача параметров в файл *.js

Задание параметров в коде страницы *.html

Получение параметров в коде внешнего подключенного файла javascrip *.js