apt-get install pptpd 

nano /etc/pptpd.conf 
localip 10.0.0.1 
remoteip 10.0.0.100-200 

nano /etc/ppp/chap-secrets 
username pptpd password * 

nano /etc/ppp/pptpd-options 
ms-dns 8.8.8.8 
ms-dns 8.8.4.4

service pptpd restart

check:
netstat -alpn | grep :1723

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

# ======================== ufw ===================

ufw allow 22 
ufw allow 1723 

nano /etc/ufw/before.rules 
# NAT table rules 
*nat 
:POSTROUTING ACCEPT [0:0] 
# Allow forward traffic to eth0 
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE 
# Process the NAT table rules 
COMMIT 

# before the line # drop INVALID packets ... add: 
-A ufw-before-input -p 47 -j ACCEPT 

ufw disable 
ufw enable

MacBookPro13
Ничего не предвещало беды, OS X оповестила меня об обновлениях системы. Apple рекомендовала обновить SMC для устранения возможных проблем с аккумулятором в будущем вот ссылка на это обновление http://support.apple.com/kb/DL1626. При установке обновления произошел сбой, система перезагрузилась и в результате мой Mac начал шуметь кулером как вертолет, после снова потребовалось установить это же обновление. Выполнив перезагрузку я увидел значек wrongsystem, в последствии я узнал, что это означает данная система не может быть загружена на вашем устройстве.
После этого происшествия было проведено невообразимое количество всяких экспериментов, а также посещение нескольких авторизованных центров Apple в Киеве, серия звонков в представительство Apple в Москве (так как на Украине такого представительства – нет, есть только официальный дистрибьютор). Итог получился неутешительный: в сервисном центре предлагали заменить материнскую плату по программе обмена, сумма составила примерно $500. Естественно такие деньги для восстановления устройства 2010 года выпуска я тратить не стал…
Самое интересное, что мне удалось поставить на Mac Os X 10.6.8 и он даже загружался, и я мог видеть рабочий стол и элементы управления, но длилось это не более 2-3 сек, после чего аппарат уходил в “сон”, после нажатия любых кнопок система снова активировалась, но подсветка экрана не включалась, рассмотреть, что либо можно было только при ярком свете, через 2-3 сек Mac снова засыпал… Сделав скриншот с “Об этом Mac”-> “Отчет о системе” я увидел, что вышеуказанное обновление каким-то чудесным образом прошило мне в аппарат SMC для MacBook Pro (13-inch, Early 2011) это видно на скриншоте, судя по данным Apple http://support.apple.com/kb/HT1237: AboutThisMac
MacBook был “торжественно” положен на полку до лучших времен или для продажи по запчастям.
Спустя несколько месяцев было решено продать полурабочее устройство. Я отфотографировал аппарат и напоследок с товарищем решили его еще раз помучать. У товарища нашелся переходник на DVI и мы подключили Mac к внешнему монитору, к нашему удивлению он работал, но при этом родной экран не был активен, а так же кулер работал не выключаясь. Так как мы получили возможность неограниченно по времени проводить манипуляции с устройством мы вооружились Google и провели серию, как оказалось позже успешных действий.
Итак рецепт:

  • необходимо скачать “злощастное” обновление MacBookProSMCUpdate1.6.dmg
  • подключаем образ и распаковываем MacBookProSMCUpdate1.6.pkg, при помощи распаковщика http://www.timdoug.com/unpkg/, внутри мы увидим два обновления: для MacBook Pro (13-inch, Mid 2010) и для MacBook Pro (13-inch, Early 2011)
    Нас интересует папка MacBookProSMCUpdate/MacBookProSMCUpdate/System/Library/CoreServices/Firmware Updates/2010MacBookPro13SMC16 и соответственно 2 файла 2010MBP13.smc и SmcFlasher.efi. Ложим эти файлы в любую папку (я ложил поближе к корню, позже нам они нужны будут из консоли)
  • Следующий шаг – скачивание и установка boot menu rEFIt http://refit.sourceforge.net/ Здесь все по инструкции от разработчиков.
    При перезагрузке системы вы должны увидеть меню от rEFIt – выбираем shell.efi rEFIt Загрузится оболочка похожая на консоль.
    Пишем в строке fs1: и жмем Enter,теперь вы находитесь в вашем разделе HDD и можете перейти в папку с заранее подготовленными файлами 2010MBP13.smc и SmcFlasher.efi.далее пишем в командной строке SmcFlasher.efi -reset 1 и нажимаем Enter

    далее пишем SmcFlasher.efi -force -LoadApp 2010MBP15.smc -norestart и снова жмем Enter

    После проделанных манипуляций у меня перестал шуметь кулер. Я выключил и снова включил MacBook и к моему искреннему удивлению аппарат заработал! Этот пост я пишу именно с него.
    P.S. Хотелось бы предостеречь потенциальных экспериментаторов – все, что вы будете делать, вы будете делать под свою ответственность без каких либо гарантий!

Немного погуглив вы скорее всего обнаружите
PHPExcel – отличный класс для манипуляций с данными формата Excel.
Можно использовать просто подключив как класс к вашему проекту, а можно воспользоваться трудом коллег и подключить как модуль: Модуль PHPExcel для kohanaframework

На момент написания поста – при загрузке с  github данного модуля папка vendor/PHPExcel – оказалась пуста, просто ложим туда содержимое самого класса PHPExcel.

Использование модуля достаточно простое и описано в Readme.

Кратко продублирую

чтение данных из файла spreadsheet.xlsx, находящегося в корне нашего сайта:

$spreadsheet = Spreadsheet::factory(
          array(
                    'filename' => 'spreadsheet.xlsx'
          ), FALSE)
          ->load()
          ->read();
foreach ($spreadsheet as $v)
{
          echo $v['A'].',';
// где $v['A'] - данные из ячейки A страницы Excel
}

запись данных в файл Excel (в модуле обнаружены ошибки, ждем правок, для создания файлов пока можно использовать модуль https://github.com/rafsoaken/kohana-phpexcel):

$spreadsheet = Spreadsheet::factory(array(
      'author'  => 'Kohana-app',
      'title'      => 'Отчет',
      'subject' => 'Тема',
      'description'  => 'Описание',
      'path' => '/',
      'name' => 'report'
));
$spreadsheet->set_active_worksheet(0);
$as = $spreadsheet->get_active_worksheet();
$as->setTitle('Потребители');
$as->getDefaultStyle()->getFont()->setSize(9);

$as->getStyle('A1:G1')->applyFromArray(Kohana::$config->load('styles.header'));
$as->getRowDimension(1)->setRowHeight(24);
$as->getStyle('A1:G1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$as->getStyle('A1:G1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

$as->getColumnDimension('A')->setWidth(8);
$as->getColumnDimension('B')->setWidth(12);
$as->getColumnDimension('C')->setWidth(46);
$as->getColumnDimension('D')->setWidth(36);

$sh = array(
    1 => array('День','Пользователь','Количество','Цена'),
    2 => array(1, 'Женя', 5, 587),
    3 => array(2, 'Денис', 3, 981),
    4 => array(3, 'Анна', 1, 214)
);

$spreadsheet->set_data($sh, false);
$spreadsheet->send();

Для тех кому лень качать из разных источников вот ссылки на укомплектованный модуль для соответствующих версий:
phpexcel_kohana3.2

phpexcel_kohana3.3

Как и у большинства фреймворков, у kohana есть модуль для работы с базой данных на основе объектов – ORM. Полезность и удобство этого модуля сейчас никто не ставит под сомнение. Многие задачи программирования решаются с помощью ORM. ORM это не только удобство, но и универсальность кода, другими словами: любому программисту использующему ORM будет достаточно просто понять код другого разработчика.

Основные методы и приемы использования ORM.

  • Получение данных из таблицы
    //получаем все записи из таблицы "users".
    $users = ORM::factory('user')
    ->find_all(); 
    
    //получаем все записи из таблицы "users"
    //с условием-фильтром по слову "victor" в поле "name".
    $users = ORM::factory('user')
    ->where('name', 'LIKE', "%victor%")->find_all();
    
    //получаем одну запись со значением поля "name"="victor".
    $user = ORM::factory('user')
    ->where('name', '=', "victor")->find();
    еще вариант:
    $user = ORM::factory('user', $user_id); 
    что соответствует такому варианту синтаксиса
    $user = ORM::factory('user')->where('id', '=', $user_id)->find();

    Continue reading

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

Спасибо добрым людям , разместили у себя и позволяют бесплатно пользоваться этими данными.

На таких людей не жалко и ссылочку поставить:
Canberra