ruX's mind

Live is a challenge ;-)

Archive for the ‘Статьи’ Category

Май-22-10

Startup Crash Test Piter #5

posted by ruX

Снова состоялось ежемесячное мероприятие для стартапов – крэш тест. И даже не в Ингрии, а в гостинице “Ольгино”(за городом, примерно между м. Старая деревня и г. Сестрорецк), причём в рамках СПИК(Санкт-Петербургская Интернет – Конференция). На SCT отвели всего полтора часа, из за этого, видимо не было докладов – только тест стартапов

Ивент прошёл 22 мая 2010, в субботу, в среднем зале отеля

Read the rest of this entry »

Хочу поделиться одним своим примером приложения для мобильной java. Основная задача – понять как пишутся такие приложения под телефоны. Вроде задачу выполнил :) . В программке можно передвигать мяч, падающий в “гравитационном” поле по законам физики(надеюсь), задавать его скорость и направление движения, как водя по сенсорному экрану телефона(если есть) так и кнопками

В эмуляторе выглядит всё не так красиво, как в живую, поэтому продемонстрирую на телефоне(SE P1i)




Понравилось? Для начала работы с j2me – самое то.
Используется MIDP-2.0, CLDC-1.1.

Read the rest of this entry »

Продолжая тему написания custom контроллеров не для html вывода предлагаю мой вариант обработчика AJAX-запросов. Напомню, в предыдущий раз я описывал контроллер для консольного демона

Помимо удобной для меня выдаче данных(я предпочитаю в 99% случаев выдвать JSON) есть ещё ряд фитч:

  • Код контроллера многократно используется наследниками класса, которые при необходимости могут перегрузить необходимые методы. В них написать простой ответ клиенту с помощью не сложных функций можно в пару строк – не нужно отвлекаться на создание json ответа, а писать логику.
  • Дефолтные ответы об успешном выполнении запроса, предупреждения или ошибки
  • Ловятся ошибки фреймворка и формируется адекватный отчёт об ошибке, а не километровый HTML от Kohana – просто идеально при использовании fireBug или аналогичных средств отладки.
  • Если вызываемый метод не реализован в наследнике, то будет выдан user-friendly ответ(опять же если использовать регламент возвращаемых структур json)

Read the rest of this entry »

Набросал простой скрипт, для удобного создания VirtualHost в debian.

Наверное тоже надоело лесть, создавать vhost по существующему, править пути, перезапускать сервер и так много раз и по кругу? А ещё не хватало опечататься?

Предлагаю такое решение: скрипт, делающий всю эту рутинную работу. Принимает только 1 аргумент – имя сайта и сам создаёт скелет и VirtualHost по шаблону.

В каталоге с сайтами создаётся папка с указанным именем. В ней – ещё 2 папки – log и www – для логов и сайта соответственно. А так же vhost – файл с описанием виртуального хоста по шаблону, лежащему в папке с сайтами. На этот файл создаётся симлинк в стандартное для дебиановского апача место – /etc/apache2/sites-avalable. После установки прав на созданные папки происходит вызов a2ensite и перезапуск апача. На скриншоте выше – кусочек такого скелета который получился после работы скрипта – из наутилуса

Read the rest of this entry »

Май-1-10

Debian: установка из asplinux

posted by ruX

После долгих раздумий решил поменять древнющий ASPLinux 9, который честно отработал на протяжении почти пяти лет, на дебиан на домашнем сервере. На то было куча причин – бОльшая часть программ и библиотек собранны руками, софт морально устарел, многих новых фишек не хватает очень сильно, большие сомнения в безопасности – а сервер смотрит в интернет, дефолтная кодировка в то время для ASP была win-1251, да и вообще.. это моя первая нормальная установка линукса)..

0. Начало

Подключать монитор к нему – последнее дело, он находится в очень труднодоступном месте. Вся установка будет происходить через интернет – я физически не дома в момент написания поста и установки.

Из этого следует, что установка будет прямо из живой системы – с помощью утилиты, которая помогает создавать окружение установщика debian – debootstrap. Учтите, что должен быть установлен chroot.

Прежде всего, нужно её установить, для этого скачаем её и её библиотеки от которых она зависит и распакуем эти пакеты прямо в корень живой asplinux:

# cd /tmp
# wget http://mirrors.kernel.org/debian/pool/main/c/cdebootstrap/cdebootstrap_0.5.4_i386.deb
# wget http://ftp.cl.debian.org/debian/pool/main/libd/libdebian-installer/libdebian-installer-extra4_0.61_i386.deb
# wget http://ftp.egr.msu.edu/debian/pool/main/libd/libdebian-installer/libdebian-installer4_0.61_i386.deb
# wget http://ftp-mirror.internap.com/pub/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2009.01.31_all.deb
# cd /
# ar p /tmp/cdebootstrap_0.5.4_i386.deb data.tar.gz | tar xz
# ar p /tmp/libdebian-installer-extra4_0.61_i386.deb | tar xz
# ar p /tmp/libdebian-installer4_0.61_i386.deb | tar xz
# ar p /tmp/debian-archive-keyring_2009.01.31_all.deb data.tar.gz | tar zx

1. Разбивка дисков

Установка будет происходить на тихий внешний жёсткий диск, в моём случае на раздел /dev/sda2, с файловой системой ext3, который я предварительно подмонтировал в /media/debian/. Места выделил аж 22Гб, зачем то много так..

Форматирование в ext3 (БУДЬТЕ ВНИМАТЕЛЬНЫ – смотрите что выполняете!):

/sbin/mkfs.ext3 -m 2 /dev/sda2

Ах да, сервер на столько старый, что его биос не умеет хочет загружаться с “большой флешки”, поэтому в моём случае отсутствует /boot раздел, ну и соответственно настройка загрузчика. Файлы ядра новой системы лежат на /boot жёсткого диска системы(старой), при этом root в аргументах ядра указывает на раздел внешнего диска(по имени раздела). Это выглядит так:

title Debian on usb-hard drive, kernel on hd0
kernel /boot/vmlinuz-2.6.26-2-686 root=LABEL=boX
initrd /boot/initrd.img-2.6.26-2-686
boot

2. Бутстрепимся. Установка базовой системы

# cdebootstrap lenny /media/debian/  --allow-unauthenticated
P: Retrieving Release
P: Retrieving Release.gpg
P: Validating Release
W: Couldn't validate Release!
P: Parsing Release
P: Retrieving Packages.gz
. . . .

Пошло вообщем :) Можно идти долго чай пить

. . . .
P: Deconfiguring helper cdebootstrap-helper-makedev
P: Writing apt sources.list
P: Writing hosts
P: Writing resolv.conf

На этом установку базовой системы можно считать завершённой.

3. Chroot

Теперь в /media/debian есть система.. но этого мало, нам необходимо её настроить до перезагрузки в неё. Для этого воспользуемся chroot.

Перед тем, как чрутится нужно для дебиана подготовить окружение – подмонтировать в него файловую систему ядра и устройств:

# cd /media/debian/
# mount -t proc proc proc
# mount -o bind /dev/ dev

После этого заклинания можно идти в новоиспечённый деби.

# chroot /media/debian
boX:/#

Вот и промт виден, уже от дебиана.
Теперь важно не запутаться в системах. Лучше всего разнести консоли реальной системы и устанавливаемой в разные окна. Или разные скрины. Или сделать кастомные промты. Кому как нравиться. Я же для наглядности буду указывать в промте систему.

4. Настройка базовой системы

В установленной системе нет даже fstab. Создадим его, каждый по своему вкусу

debian# nano /etc/fstab

У меня вот так получилось, для начала:

/dev/sda2        /      ext3    defaults        0       1
proc             /proc         proc    defaults                 0    0

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

5. Настройка сети

Тут всё стандартно для дебиана. Процетирую что у меня, как пример.

debian# cat /etc/network/interfaces
auto eth0
iface eth0 inet static
    address 192.168.0.11
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.53

auto lo
iface lo inet loopback

DNS скопировал бутстрэп:

boX:/# cat /etc/resolv.conf
search boX
nameserver 127.0.0.1
nameserver 192.168.0.53
nameserver 212.44.94.254

(Для ясности – в том числе у меня и днс форвардер с локальной зоной)

Указываем репозитарии и обновляем их и сразу же то, что у нас уже есть:

debian# cat /etc/apt/sources.list
deb http://ftp.debian.org/debian lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
debian# apt-get update
debian# apt-get upgrade

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

debian# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

6. Установка софта

Тут сам каждый решает, что нужно. По мне вот так:

debian# apt-get install apache2 php5 php5-cli php5-gd php5-mysql \
         php5-xmlrpc phpmyadmin mysql-server bind9 dhcp3-server watch \
         sun-java6-jre openssh-server bridge-utils openvpn iodine eggdrop  \
         rtorrent ziproxy dvbtune dvbstream dvb-apps ppp subversion \
         sunversion-tools psmisc ddns3-client links2  nmap mrtg hdparm \
         screen

7. Грабли

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

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

Автоматическое поднятие интерфейса lo помогло мне сохранить много времени – с этим я сталкивался ранее в другой системе, когда сложно понять почему демоны вроде и поднимаются а вроде и не работают, причём не всегда очевидно что не может прибинтится к хосту

8. Итого

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

UPD:
Всё нормально работет, внутренний(старый) принудительно ставлю в режим сна, т.к. он излишне шумит и не используется практически. В /etc/crontab добавить:

# remove hdd noise :)
0,30 23,0-8 * * * root /sbin/hdparm -S 2 /dev/hdc
0,30 9-22 * * * root /sbin/hdparm -S 10 /dev/hdc
Апрель-7-10

Startup Crash Test Piter #3

posted by ruX

Логотип #sctpiter

Прогремел очередной, уже третий по счёту СКТ в СПб – мероприятие, основной целью которого является конструктивная критика и предложения молодым стартапам.

Event состоялся в субботу, 3го апреля 2010 года в 13.00, и как бы то не было странно – в бизнес-инкубаторе “Ингрия ИТМО”, на Биржевой линии В.О., 14

Рассматривались проекты в области LBS(Location-based services) и eCommerce

Read the rest of this entry »

Апрель-4-10

Cветодиодная линейка на MAX7219

posted by ruX

Попалась мне в руки светодиодная линейка неизвестного происхождения из 52 двухцветных светодиодов – красный и зелёный. Которая управлялась двумя микросхемами maxim max7919(драйвер). У этой платки было 8 пинов для подпайки, один из которых ни к чему не подключался.

Цель – разобраться что она из себя представляет, как работает и сделать что-нибудь с ней – погонять “бегущие огни” будет вполне достаточно.

Read the rest of this entry »

Март-20-10

Второй startupPoint в СПб

posted by ruX

Startup point – это мероприятия, на которых могут встретится стартаперы и инвесторы, для установления деловых контактов. Важный плюс startupPoint – различные виды коммуникаций(networking) между участниками и также полезные семинары.

Read the rest of this entry »

Март-19-10

Первый LegalCamp в Спб

posted by ruX
LegalCamp

Санкт-Петербурге состоялся первый LegalCamp – мероприятие, посвященное правовым вопросам IT-бизнеса.

Ивент прошёл 14 марта 2010 года в бизнес-инкубаторе Ингрия

Read the rest of this entry »

Что за ругательные слова?

Всё это – сетевые устройства. У которых разный уровень “умения”. Их общая задача – передавать данные из одного места в другое. Попробую немного прояснить что к чему на простом языке.

Read the rest of this entry »