Blog

Main posts for this site
#python, #math

Python differential

Category: dev
#!/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: review

Все наверно смотрели этот фильм 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: tools

Настройка роутинга с двумя провайдерами через 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

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

Установока linux на Palm LD(Life Drive)

Category: howto

Необходимые файлы

Загрузчик CocoBoot

Образ rootfs с OPIE

Замечание

На выбор предлагается ещё GPE - будет медленно работать на LifeDrive и устройствами с небольшой помятью, а также просто загружаемая система без оболочки

Swap file

Важно Чтобы не качать пустой swap файл размером 90 мегобайт, почему бы не сделать его самомy

# dd if=/dev/zero of=swap bs=1k count=96k # mkswap swap

Конфиг ядра

Там две строчки:

SWAP_DEV=$FILES_MNT/swap ROOT_DEV=$FILES_MNT/opie-image-v0.8.4-palmld.rootfs.ext2
Расположение swap файла и rootfs соответсвенно, от корневой директории.

Процесс установки

1)Включаем на Palm'e Drive Mode, и монтируем диск,

# mount /dev/sda1 /mnt/palm
Копируем файлы swap, linux.boot.cfg, и opie-image-v0.8.4-palmld.rootfs.ext2 в корень palm диска, демонтируем устройство и запускаем CocoBoot на palm'e. Жмём естественно Boot.

Получаем следущую картину:

Загружается ядро... и далее графическая оболочка OPIE:

Всё установлено и готово к использованию, на момент написания статьи доступна новая сборка linux для Palm LD

http://builds.hackndev.com/builds/Marex/TP1-20070717.tar.bz2
Подробнее о OPIE http://opie.handhelds.org/cgi-bin/moin.cgi/News


cat /proc/cpuinfo

Модули ядра

PIM

Тесты системы

Рабочий стол настроек

OpieMediaPlayer
- музыка так и незаиграла

root shell

Итоги

Итоги видны табличке номер один на в начале статьи Система работает стабильно - непадает, segfault'ов ненаблюдалось. Собственно есть всё тоже самое что и в стандартной PalmOS, единственную проблему которую я вижу это мало софта, во остальном всё готово к употреблению.


Ссылки по...