Programming

Как узнать текущую версию Python?

Для того, чтобы узнать, какая версия интерпретатора Python используется для выполнения кода, можно воспользоваться командой version_info из модуля sys:

В текущем примере используется версия Python 3.5.2.

Автоматическое создание точек восстановления Windows по расписанию

Создание точек восстановления Windows — хороший способ помочь в восстановлении своего компьютера в случае возникновения каких-либо неприятностей вроде заражения вирусами или рекламными ботами.

Точка восстановления — это слепок системы, в котором фиксируется ее текущее состояние (настройки, оформление, установленные программы). Создав и сохранив такую точку, можно в любой момент вернуть систему к зафиксированному в ней состоянию.

Если вы случайно открыли какое-нибудь подозрительное вложение в почте, и теперь то и дело на экране появляются рекламные баннеры (в систему установился рекламный бот) — с помощью точек восстановления можно вернуть систему «в прошлое», до момента заражения ботом. Точки восстановления — не панацея абсолютно от всех неприятностей, но очень часто «откат» системы спасает положение и возвращает компьютер в рабочее состояние.

Python: Как получить список классов из модуля (*.py — файла)

Список классов, определенных в *.py — файле можно получить с помощью встроенного модуля inspect.

Например для модуля test_cls:

можно получить список классов следующим образом:

 

PHP: Как сохранить HTML в DOC

При разработке онлайн-проектов часто возникает необходимость сохранить html-страничку в виде документа, который можно использовать отдельно, например, отправить по электронной почте, просматривать и редактировать оффлайн. Удобным способом сохранения html таким образом является экспорт в один из наиболее часто используемых текстовых форматов — doc.

Для экспорта html документа в формат doc можно воспользоваться открытым бесплатным php-модулем «html_to_doc». С его помощью можно сохранить html в документ doc, который будет корректно обработан текстовым редактором MS Word. Если в html-страничке присутствуют изображения, они будут встроены в документ doc.

PHP-модуль можно скачать по адресу https://github.com/Korchy/html_to_doc

Python: Как пройти по элементам списка попарно от текущего к следующему

Если имеется список вида:

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

Результат выполнения:

 

Python: Как передать список аргументов в функцию, принимающую переменное число аргументов

Некоторые функции принимают в параметрах переменное число аргументов *args, как например функция перебора вариантов itertools.product.

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

 

Python: Как преобразовать строку со смешанными диапазонами чисел в список

Преобразование смешанной строки, в которой заданы, как отдельные числа, так и диапазоны чисел, в полный список значений можно сделать следующим образом:

Пусть имеется исходная строка

Разобьем строку по разделителю — запятым:

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

Объединим полученные списки в один и выкинем повторяющиеся значения.

Полный код преобразования:

 

PHP: Как получить полное имя класса с учетом статического наследования

PHP поддерживает механизм позднего статического связывания. Полное имя класса с учетом статического наследования можно получить с помощью вызова функции:

На примере:

 

Python: как сделать сдвиг значений в списке

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

Сдвиг для списка lst:

сдвиг вперед:

сдвиг назад:

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

Как узнать версию linux Debian

Чтобы узнать установленную на сервере версию linux Debian нужно в командной строке набрать:

Ответ linux будет следующим:

Python: Как сохранить словарь (dict) с объектами в json

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

Пример словаря с объектами:

Сохранение словаря с объектами в json:

 

Python: как добавить кортеж в кортеж

Кортежи в python могут быть вложенными.

Если просто добавить один кортеж к другому через операцию конкатенации «+», python сольет значения кортежей:

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

 

Python: Как найти центр многоугольника

Получение координат центральной точки выпуклого многоугольника (полигона), так называемого «центроида», если известны координаты его точек (вершин):

Входным параметром в функцию подается кортеж с координатами точек многоугольника. Функция возвращает кортеж с координатами центроида:

 

Что нужно, чтобы начать работать с 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 сек.

 

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 обычным способом: