Blog

Main posts for this site
#zf2, #dev

Zend framework 2 preDispatch

Category: howto

Как сделать preDispatch и postDispatch actions в Zend Framework 2 ? код ниже

<?php
 
namespace Application\Controller;
 
use Zend\Mvc\Controller\ActionController
    Zend\Mvc\MvcEvent;
 
class IndexController extends ActionController
{
    public function indexAction()
    {
        return array();
    }
 
    protected function attachDefaultListeners()
    {
        parent::attachDefaultListeners();
 
        $events = $this->events();
        $events->attach('dispatch', array($this, 'preDispatch'), 100);
        $events->attach('dispatch', array($this, 'postDispatch'), -100);
    }
 
    public function preDispatch (MvcEvent $e)
    {
        // Called before self::indexAction()
    }
 
    public function postDispatch (MvcEvent $e)
    {
        // Called after self::indexAction()
    }
}

“100” и “-100” это порядок запуска действий.

#dev, #nodejs

Simple environment dependency config with Node.js

Category: howto

Простой способ сделать зависимые от окружения конфигурации в Node.js. Определяем директорию для конфигураций, пусть это будет ./config/environments/ тогда простейший код для зависимых конфигураций будет такой:

var config = require("./config/environments/" + process.env.NODE_ENV || 'default');

Запускать такой javascript код надо будет таким образом:

NODE_ENV=development node index.js

В случае если вы не задали переменную NODE_NEV, загрузится конфигу по умолчанию. (default)

Если хочется что нибудь по сложнее то в nodejs есть полно модулей и один из них NCONF

#hardware, #mac

Upgrade macbook pro to 16GB RAM

Category: howto

Привет, сегодня я расскажу почему мой macbook pro лучше вашего, ну а если менее эгоцентрично пост будет на тему апргейда оперативной памяти на macboook pro.

Начнем с того что Macbook которые я хочу апгрейдить следующей комплектации 13” Macbook Pro (Early 2011) i5 2.3 / 4GBRAM

Прочитав немного форумов и официальных страниц Apple Inc. я решил взять следующую модель памяти SO-DIMM DDR3, 8ГБ, Kingston, KVR1333D3S9/8G

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

1) Откручиваем заднюю крышку макбука

Болты хитрые и прикручиваются только в те места откуда их выкрутили

2) Вынимаем старую память путем отгибания сдерживающих “ножек” и точно также вставляем новую

3) Запускаем компьютер и видимм следующее:

Теперь ответ на вопрос зачем ?

Для серфинга почты, и написания текстов будет достаточно стандартной памяти 4GB, но если планируеются запускать несколько виртуальных машин или Photoshop и все одновремнено и работать с большими библиотеками медиафайлов то 16GB будет заметно спасать систему от своппинга.

P.S. Работать стало заметно комфортнее, нет фризов, нет свопа.

#dev #frontend

html5 input file fakepath

Category: howto

Если у вас возникла проблема с тем что в поле input type=file, вместо нормального значения выставляется c:\fakepath\your_kewl_filename , вы должны помнить следующее

According to the specifications of HTML5, a file upload control should not reveal the real local path to the file you have selected, if you manipulate its value string with JavaScript. Instead, the string that is returned by the script, which handles the file information is C:\fakepath.

This requirement is already implemented in Internet Explorer 8 – the real path to the file will be shown only if the page that contains the control is added to the trusted sites collection of the browser.

Обращая внимание на спецификацию ХТМЛ5 инпут загрузки файлов недолжен указывать на реальный путь к файлу в системе который вы выбрали, вместо этого в javascript будет попадать значение C:\fakepath.

Это обязательство уже реализовано в IE8, но кому какое дело, главное чтоб в Chrome точно такая же история.

#dev, #pgp, #ubuntu, #git

Hudson Git and SSH keys

Category: howto

Установка Hudson на Ubuntu с Git + доступом по ssh-key

Скачиваем native-package с сайта Hudson

$ sudo dpkg -i hudson.deb
```

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

$ apt-get -f install 

После чего hudson готов к использованию на :8080 порту.

Для работы с Gitом по ключам необходимо эти ключи сгенерировать, заходим от ползователя hudson

$ sudo su hudson

Генерируем ключи

$ ssh-keygen -t rsa

После чего соответсвенно кладем эти ключи к себе в кофниг gitosis в директориб keydir и соотвествено добавляем разарещения в gitosis.conf После push в gitosis-admin можно создавать в hudson проект и указывать URL репозитория, - все должно работать.

#mac

Reset SMC

Category: howto

Что делать если macbook не включается ?

Не спешите нести его в ремонт, часто у маков бывает проблема с зависанием System Managment Controller (SMC). Симптомы были такие, я послал OSX в Sleep mode softwareным способом через главное меню. После чего закрыл крышку ноутбука и выдернул шнур питания. Когда я захотел включить его я просто поднял крышку и ничего не произошло, при этом когда я закрывал его обратно начинал работать кулер так что его было слышно, с открытой крышкой ноутбук работала клавиатура об этом я смог понять потомучто горел индикатор Caps Lock. После ряда попыток понажимать на кнопки я понял что нужно сделать что-то осмысленое, и вот что я сделал:

Сброс SMC для Macbook или MacBook Pro с отключаемой батареей

  • выключить компьютер
  • отключить шнур питания и держать кнопку Power 10 секунд
  • отпустить power подключить батарею и шнур питания
  • включить Mac

Сброс SMC для Macbook и Macbook Pro с встроенной батареей

  • Выключить
  • Подключить адаптер питания
  • Вместе нажать клавиши Shift+Control+Option и кнопку Power
  • Отпустить клавиши
  • Запустить Mac как обычно

Сброс SMC для iMac, Mac Pro, Mac Mini

  • Выключить
  • Отключить шнур питания
  • Нажать и держать кнопку Power 5 секунд
  • Отпустить
  • Подклчить шнур питания и запустить как обычно

Решение проблемы медленого wifi на Ubuntu

Category: howto

Симптомы проблемы: в 11.04 При подключении к инетернету медленно или вообше не работает соединение, при этом выделяется IP и с виду все должно быть нормально и без ошибок.

Решение: Убрать режим 11n

sudo modprobe iwlagn 11n_disable=1

gksudo gedit /etc/modprobe.d/iwlagn-disable11n.conf

options iwlagn 11n_disable=1

в 12.04 после обновления модуль стал называтся iwlwifi соотвественно решение будет выглядить так

sudo modprobe iwlwifi 11n_disable=1

gksudo gedit /etc/modprobe.d/iwlagn-disable11n.conf

options iwlwifi 11n_disable=1

Кроме того для некоторых срабатывает решение:

в файле /etc/nsswitch.conf

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

заменить на

hosts:          files dns

Mongohub клиент для mongodb

Category: tools

Клиент под OSX для MongoDB - MongoHub

MongoHub logo

MongoHub это менеджер mongo баз данных. Он позволяет полностью управлять базами и структурами
mongo.

  • Нативное приложение на Cocoa
  • Прямой доступ как к локальным так и удаленным узлам mongo
  • Открытй код можно найти на github

Ниже немного скринов, ну и ссылка на офф сайт чуть выше

Perl one liner

Category: dev
perl -ne 'm/^([^#][^\s=]+)\s*(=.*|)/ && printf("%-35s%s\n", $1, $2)'
#postgresql

PostgreSQL recursive procedure

Category: howto
WITH RECURSIVE supplytree AS
 
(SELECT id, username, parent_user_id, CAST(username AS VARCHAR(1000)) AS username_fullname
FROM users
WHERE parent_user_id =1 
UNION ALL
SELECT si.id, si.username,
        si.parent_user_id,
        CAST(sp.username_fullname || '->' || si.username AS VARCHAR(1000)) AS username_fullname
FROM users AS si
        INNER JOIN supplytree AS sp
        ON (si.parent_user_id = sp.id)
)
SELECT id, username_fullname
FROM supplytree
ORDER BY username_fullname;

На выходе получим:

 id | username 
 1  | user1
 2  | user1->user2
 3  | user1->user2->user3
 4  | user1->user2