Hudson Git and SSH keys

Category: howto dev

Установка 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 репозитория, - все должно работать.

Reset SMC

Category: howto mac

Что делать если 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 linux

Симптомы проблемы: в 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: perl
perl -ne 'm/^([^#][^\s=]+)\s*(=.*|)/ && printf("%-35s%s\n", $1, $2)'

PostgreSQL recursive procedure

Category: postgresql
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

Python differential

Category: python math
#!/usr/bin/python from scipy import linspace, array from scipy.integrate import odeint,ode from pylab import plot, show import matplotlib.pyplot as plt from numpy import arange import random as rand def dotu(r,t0): x,y = r d = [0,1] d[0] = y d[1] = x-x**2-y return d def dplot(s, color="green"): t = linspace(0,55, 700) print t u=odeint(dotu,s,t) u=array(u).transpose() plot(u[0], u[1], color) for x in arange(-1.52,2, 0.25): print x dplot([x,3]) plt.grid(True) show()

Дифференциальные исчесления в python реализовываются с помощью библиотек:

http://www.scipy.org/
http://ru.wikipedia.org/wiki/SciPy

http://numpy.scipy.org/
http://ru.wikipedia.org/wiki/NumPy

Графки рисуются с помощью http://matplotlib.sourceforge.net/

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

Все баги к этому моменту починили...

Antitrust - спецэффекты в фильмах про программистов

Category: old fun

Все наверно смотрели этот фильм Antitrust, в русской локализации "Программист", дык вот в этом фильме главный герой Майло Хоффман (Milo Hoffman) со своими друзьями по сюжету весь фильм пытается скомпилировать пример из документации по Java на сайте Sun : WebServer.java именно этот файл фигурирует в сценах с монитором. Снимки и продолжение под катом...

Скриншоты кода - три разных сцены

void listDirectory(File dir, PrintStream ps) throws IOException {
        ps.println("
\n");
        ps.println("Parent Directory
\n");
        String[] list = dir.list();
        for (int i = 0; list != null && i < list.length; i++) {
            File f = new File(dir, list[i]);
            if (f.isDirectory()) {
                ps.println(""+list[i]+"/
");
            } else {
                ps.println(""+list[i]+"


" + (new Date()) + "");
    }



 /* are we doing a GET or just a HEAD */
            boolean doingGet;
            /* beginning of file name */
            int index;
            if (buf[0] == (byte)'G' &&
                buf[1] == (byte)'E' &&
                buf[2] == (byte)'T' &&
                buf[3] == (byte)' ') {
                doingGet = true;
                index = 4;
            } else if (buf[0] == (byte)'H' &&
                       buf[1] == (byte)'E' &&
                       buf[2] == (byte)'A' &&
                       buf[3] == (byte)'D' &&
                       buf[4] == (byte)' ') {
                doingGet = false;
                index = 5;
            } else {
                /* we don't support this method */
                ps.print("HTTP/1.0 " + HTTP_BAD_METHOD +
                           " unsupported method type: ");
                ps.write(buf, 0, 5);
                ps.write(EOL);
                ps.flush();
                s.close();
                return;
            }



Обьяснения под катом

Shorewall - фреймворк для построения фаерволла

Category: sys

Настройка роутинга с двумя провайдерами через shorewall. И так дано машинароутер с установленным shorewall, задача сделать на ней 2 канала. Немного о самом shorewall, - это такой framework для работы c iptables, если вам надоелj вручную писать правила, то этот инструмент решит почти все ваши проблемы.

Конфигурация shorewall

	$ ls /etc/shorewall
	  
	|-- Makefile
	|-- README.txt
	|-- accounting
	|-- actions
	|-- blacklist
	|-- capabilities
	|-- continue
	|-- ecn
	|-- hosts
	|-- init
	|-- initdone
	|-- interfaces
	|-- ipsec
	|-- ipsecvpn
	|-- maclist
	|-- masq
	|-- modules
	|-- nat
	|-- netmap
	|-- params
	|-- policy
	|-- providers
	|-- proxyarp
	|-- route_rules
	|-- routestopped
	|-- rules
	|-- shorewall.conf
	|-- start
	|-- started
	|-- stop
	|-- stopped
	|-- tcclasses
	|-- tcdevices
	|-- tcrules
	|-- tos
	|-- tunnel
	|-- tunnels
	`-- zones

Продолжение внутри …