Недостатки фреймворка Kohana

Недостатки фреймворка Kohana

1. IDE-подсказки при работе c ORM. Их нет. Например, код:

$latestPosts = ORM::factory('Post')->fetchLatests($limit);

Названия методов из класса Model_Post придётся вспоминать (например, fetchLatests), т.к. IDE покажет подсказки только для класса ORM, а Model_Post - наследник ORM. Перейти в метод по ctrl+click не получится. Вы можете возразить, есть же PHPDoc @var: 

/**
 * @var $modelPost Model_Post
 */
$modelPost = ORM::factory('Post', $postId);
$latestPosts = $modelPost->fetchLatests($limit); //теперь IDE любезно покажет доступные методы

Но, согласитесь, дублировать избыточный PHPDoc в десятки или сотни различных мест приложения не очень удобно.

Travis шифрование переменных

Шифрование нужно использовать, если вы хотите скрыть приватные данные от посторонних глаз.

На девелоперской машине нужно установить travis gem. gem install travis ставится долго, создаётся впечатление, что ничего не происходит, но нужно просто немного подождать.

sudo apt-get install rubygems
sudo gem install travis
travis encrypt "__PSW__=password"

Чтобы автоматически добавить шифрованную строку в конфигурационный файл travis .travis.yml, нужно команду encrypt выполнить с ключом --add

travis encrypt "__PSW__=password" --add

 

Клонирование приватных подмодулей в travis, генерация ssh-ключа

Deploy ключи на travis используются только при клонировании основного репозитория. Чтобы склонировать зависимые приватные репозитории, можно использовать https схему c указанием пользователя и пароля вместо git@github.com, deploy ключи, пользовательские ключи или Api token. 

Если это не настроено, то во время билда в travis при клонировании приватных подмодулей будет возникать ошибка:

ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Ниже рассмотрим 2 из возможных вариантов что нужно сделать, чтобы в travis работало клонирование приватных подмодулей.

  1. Использовать https схему c указанием пользователя и пароля вместо git@github.com.
  2. Сгенерировать пользовательские ключи

1. travis клонирование через https схему

Для этого, во-первых, отключим инициализацию подмодулей:

git:
  - submodules: false

 

git алиасы

В svn я привык к кратким командам svn st, svn co. В git же по умолчанию нужно писать имя команды полностью. Но, всегда можно добавить алиасы на команды git и писать как вам хочется, примеры git alias:

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.di diff

 

Cписок timezones UTC

Находил много разных вариантов выпадающего списка timezone. Многие из них устаревшие или не полные. Практически все используют GMT, хотелось бы привызываться к UTC. Многие современные ресурсы показывают timezone в UTC (см. wikipedia). А GMT уже давно считается устаревшим вариантом. Поэтому написал свой вариант html выпадающего timezone списка в виде select (на php), временные зоны сгруппированы по регионам. Список временных зон останется актуальным со временем, т.к. использует системную информацию, полученную из стандартного класса DateTimeZone, который появился в php 5.2. C обновлением версии php мы можем получить и новые временные зоны.

Такой вариант вывода списка timezone подойдёт для выбора timezone в личном кабинете пользователя.

Вывод списка UTC timezones на php в виде html select списка

Обжим витой пары RJ-45

ReactOS - альтернатива Windows?

https://www.reactos.org/ru/download-reactos

ReactOS - это современная, свободная и открытая операционная система, основанная на лучших принципах архитектуры Windows (Windows 7, XP и т.д.), имеющая аналогичный Windows графический интерфейс. Так сказано на официальном сайте ReactOS. Попробуем проверить, так ли это.

Скрипт автоматического открытия вкладок guake при загрузке системы

Все опции можно увидеть в хелпе guake:

i5:~ eugene$ guake -h
Usage: guake [options]

Options:
  -h, --help            show this help message and exit
  -f, --fullscreen      Put Guake in fullscreen mode
  -t, --toggle-visibility
                        Переключение видимости окна
                        терминала
  -p, --preferences     Показать окно настроек Guake
  -a, --about           Показать информацию о Guake
  -n NEW_TAB, --new-tab=NEW_TAB
                        Новая вкладка
  -s SELECT_TAB, --select-tab=SELECT_TAB
                        Выбрать вкладку
  -g, --selected-tab    Вернуть индекс выбранной
                        вкладки
  -e COMMAND, --execute-command=COMMAND
                        Выполнить произвольную
                        команду в выбранной вкладке
  -r RENAME_TAB, --rename-tab=RENAME_TAB
                        Переименовать выбранную
                        вкладку
  -q, --quit            Скажите Guake'у уйти =(
 
Пример открытия, переименования вкладки, выполнения команды подключения по ssh на вкладке:
guake --new-tab='tab1' --rename-tab='jeka.by' --execute-command='ssh jekaby@vh40.hoster.by'

Открытие, переименование вкладки, подключение к mysql:

guake --new-tab='tab1' --rename-tab='mysql local' --execute-command='mysql -u root'

 

Горячие клавиши терминала Guake

  • F12 — открытие/закрытие Guake;
  • F11 — переключение в полноэкранный режим и обратно;
  • Shift+Ctrl+Q — выход из Quake, без запроса подтверждения, больше в этом сеансе он вызываться не будет;
  • Shift+Ctrl+T — открытие новой вкладки;
  • Shift+Ctrl+W — закрытие текущей вкладки, без запроса на подтверждения;
  • Ctrl+PgUp — переключение на предыдущую вкладку;
  • Ctrl+PgDn — переключение на следующую вкладку;
  • F2 — переименование текущей вкладки;
  • Shift+Ctrl+C — копирование в буфер;
  • Shift+Ctrl+V — вставка из буфера.

Создание скриншотов сайтов, исходный код

Вашему внимания предлагаются 4 linux библиотеки создания скриншотов (Webscreenie, PhantomJs, PythonWebkit2Png и WkHtml), которые могут сделать запрос к сайту, получить ответ, отрендерить ответ, создать снимок сайта (скриншотснапшот, в англоязычной литературе - screenshot). Либы позволяют использовать возможности WebKit в консоли.

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

1. Webscreenie

Установка Webscreenie:

The project url is: https://webscreenie.googlecode.com/svn/trunk

2. PhantomJs 

Установка PhantomJs (use precompiled binary):

cd /opt
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2
tar xjf phantomjs-1.9.7-linux-x86_64.tar.bz2
mv phantomjs-1.9.7-linux-x86_64 phantomjs
rm phantomjs-1.9.7-linux-x86_64.tar.bz2
// На основе examples/rasterize.js делаем свой snapshot-phantom.js

3. Python-webkit2png

Установка python-webkit2png:

apt-get install python-qt4 libqt4-webkit xvfb python-setuptools
cd /opt
git clone https://github.com/adamn/python-webkit2png.git python-webkit2png
cd python-webkit2png
python setup.py install

4. WkHtml

Установка WKHtml:

cd /opt
wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1-dev/wkhtmltox-0.12.1-c22928d_linux-wheezy-amd64.tar.xz
tar -xpJf wkhtmltox-0.12.1-c22928d_linux-wheezy-amd64.tar.xz
rm wkhtmltox-0.12.1-c22928d_linux-wheezy-amd64.tar.xz
 
НОВЫЕ ПОЛЬЗОВАТЕЛИ