среда, 18 ноября 2009 г.

RedHat Fedora 12 is out

Как-то незаметно в День моего Рождения выпустили 11.2 OpenSuse.
Досадно, что я к этому времени уже полностью перешел на Fedora... И она обновилась сегодня до 12 версии!

Брать можно здесь

--
Best Regards,
Sergey Nikulov

среда, 11 ноября 2009 г.

New system language from Google

Google разошелся... В этом году объявил уже о втором новом языке придуманном ими.
Язык назвали Go. Я бы на их месте назвал его Goo :-)
Результат скрещивания C++ и Python.

вторник, 22 сентября 2009 г.

Continuous integration

Случилось так что потрабовалось для проекта подобрать сервер для Continuous integration.

Решил вначале опробовать CruiseControl. Все таки Мартин Фаулер вроде приложил руку к его созданию.

Конфигурационный инструмент, который должен был запуститься со странички через Java WebStart, на Linux-е запускаться и не подумал.

После 2х часов RTFM-а, грубо ругаясь, прекратил тщетные попытки описать проект для C++/CMake/SVN и, успокаивая себя тем что это же OSS, и не надеясь ни на что хорошее бросил Hudson-овский war в папку приложений Tomcat.

Используя Hudson web-интерфейс за пару минут создал два проекта которые проверяют SCM на наличие изменений, запускают билд, если изменения есть, высылает сообщение по почте и результат публикуют на FTP.

Ну а после того как обнаружил в списке дополнений слова cmake & scons... Я фанат Hudson-а!

Надо сказать, что я никому не посоветую CruiseControl.

вторник, 9 июня 2009 г.

про интернет в Калифорнии (продолжение...)

Сегодня прихожу на рабочее место - смотрю какой-то мужичек возле моего ноута крутиться.
- Вотс гоин он? говорю.
Он отвечает на чистейшем американском - а это ваш компьютер?
- Мой - говорю.
- А вы ничего большого не качали? - спрашивает он, видимо в надежде на отмазки.
- Качал говорю - не далее как в конце прошлой недели - 8 Гб за вечер утянул в торрентах с сайта Fedoraproject.org
- Ну вообщем-то говорит не большая проблема, просто вы канал нам просадили на прошлой недели в усмерть - никто работать не мог. Я - говорит - грешным делом на порновирус рассчитывал - а тут вы со своим Линуксом.
- Да - говорю я, не извиняясь - херня такая этот Линукс - говорю смотри - апдэйтов кажет 686 штук и показал значек ПэкаджКита. Хотя - говорю - на прошлой неделе не менее после установки вытянул...
- А ограничить по полосе его нельзя?
- Да можно, тока я думал у вас в Америке с пропускной способностью каналов проблем нет, начал я испорченный Иллинойсовским безлимитом на комкасте....
- Не делайте так больше - сказал мужик и ушел...

Вот такая вот поучительная история...
Походу тут каналы в Силиконке нифига не широкие...
И "палят" на них реально...

C++ для встроенного ПО

Читаю статью на Руководство по С++ для осмотрительного программера встроенных систем на embedded.com.

Прежде всего, хочеться отметить, что мне понравился сайт, как ресурс. Я давно на него поглядывал, но все не находил времени почитать. Интересные советы, статьи. Нельзя сказать, что все новое и незнакомое - где-то слышал то, где-то это...

Вообщем, иногда имеет смысл поглядывать, и не забывать.

Решил немного посчитать и поэкспериментировать.

Написал маленький и смешной кусок кода:

int main(int argc, char * argv[])
{
return 0;
}


скопировал текст в два файла:
try_me.c
try_me.cpp

собрал "в лоб" по простому...

[snikulov@solarwind c_vs_cpp]$ gcc try_me.c -o try_c
[snikulov@solarwind c_vs_cpp]$ g++ try_me.cpp -o try_cpp
[snikulov@solarwind c_vs_cpp]$ ls -la
total 32
drwxrwxr-x. 2 snikulov snikulov 4096 2009-06-08 23:28 .
drwxrwxr-x. 6 snikulov snikulov 4096 2009-06-08 22:41 ..
-rwxrwxr-x. 1 snikulov snikulov 4728 2009-06-08 23:27 try_c
-rwxrwxr-x. 1 snikulov snikulov 5047 2009-06-08 23:27 try_cpp
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.c
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.cpp
[snikulov@solarwind c_vs_cpp]$

Ну что тут сказать - 4728 vs. 5047

Вообщем C++ вариант больше на 300 байт просто без всего.

Играемся с опциями компилятора (пока по размеру -Os):

[snikulov@solarwind c_vs_cpp]$ g++ try_me.cpp -Os -o try_cpp
[snikulov@solarwind c_vs_cpp]$ gcc try_me.c -Os -o try_c
[snikulov@solarwind c_vs_cpp]$ ls -la
total 32
drwxrwxr-x. 2 snikulov snikulov 4096 2009-06-08 23:33 .
drwxrwxr-x. 6 snikulov snikulov 4096 2009-06-08 22:41 ..
-rwxrwxr-x. 1 snikulov snikulov 4728 2009-06-08 23:33 try_c
-rwxrwxr-x. 1 snikulov snikulov 5047 2009-06-08 23:33 try_cpp
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.c
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.cpp
[snikulov@solarwind c_vs_cpp]$

Эффекта не замечаем - предполагаю что компилер оптимизирует (означает что оптимизировать там нечего ;-) )

Ок. Переходим к отключению фич языка C++ - это должно быть интереснее, ибо размером больше (наверное за счет них)

Первая - RTTI

[snikulov@solarwind c_vs_cpp]$ gcc try_me.c -o try_c
[snikulov@solarwind c_vs_cpp]$ g++ try_me.cpp -fno-rtti -o try_cpp
[snikulov@solarwind c_vs_cpp]$ ls -la
total 32
drwxrwxr-x. 2 snikulov snikulov 4096 2009-06-08 23:38 .
drwxrwxr-x. 6 snikulov snikulov 4096 2009-06-08 22:41 ..
-rwxrwxr-x. 1 snikulov snikulov 4728 2009-06-08 23:38 try_c
-rwxrwxr-x. 1 snikulov snikulov 5047 2009-06-08 23:38 try_cpp
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.c
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.cpp

Никакго эффекта. Угу.

Переходим к другой фиче - исключения

[snikulov@solarwind c_vs_cpp]$ g++ try_me.cpp -fno-exceptions -o try_cpp
[snikulov@solarwind c_vs_cpp]$ ls -la
total 32
drwxrwxr-x. 2 snikulov snikulov 4096 2009-06-08 23:39 .
drwxrwxr-x. 6 snikulov snikulov 4096 2009-06-08 22:41 ..
-rwxrwxr-x. 1 snikulov snikulov 4728 2009-06-08 23:38 try_c
-rwxrwxr-x. 1 snikulov snikulov 4818 2009-06-08 23:39 try_cpp
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.c
-rw-rw-r--. 1 snikulov snikulov 55 2009-06-08 22:43 try_me.cpp
[snikulov@solarwind c_vs_cpp]$

Уже лучше
4728 vs. 4818

Что же там такое - смотрим (я взял опцию -d ибо по остальному большого различия не увидел... хотя я конечно лукавлю - сами посмотрите)

[snikulov@solarwind c_vs_cpp]$ readelf -d try_c

Dynamic section at offset 0x4ec contains 20 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000c (INIT) 0x8048274
-= skip =-
[snikulov@solarwind c_vs_cpp]$ readelf -d try_cpp

Dynamic section at offset 0x52c contains 23 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000c (INIT) 0x80482c0
-= skip =-
snikulov@solarwind c_vs_cpp]$

Ну... Вообще бардак

Полагаем и время выполнения из-за этого должно немного проседать.
Проверяем (используем не совсем точный метод расчета):

[snikulov@solarwind c_vs_cpp]$ time ./try_c

real 0m0.002s
user 0m0.000s
sys 0m0.001s
[snikulov@solarwind c_vs_cpp]$ time ./try_cpp

real 0m0.005s
user 0m0.001s
sys 0m0.002s
[snikulov@solarwind c_vs_cpp]$


Ну приблизительно. А почему? Ну, как нетрудно догадаться, видимо из-за библиотек?
Проверим

[snikulov@solarwind c_vs_cpp]$ strace ./try_c
execve("./try_c", ["./try_c"], [/* 53 vars */]) = 0
brk(0) = 0x98aa000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=137461, ...}) = 0
mmap2(NULL, 137461, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f6f000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\253\227\0004\0\0\0\304"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1803388, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f6e000
mmap2(0x964000, 1513768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x964000
mprotect(0xacf000, 4096, PROT_NONE) = 0
mmap2(0xad0000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16b) = 0xad0000
mmap2(0xad3000, 10536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xad3000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f6d000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f6d6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xad0000, 8192, PROT_READ) = 0
mprotect(0x960000, 4096, PROT_READ) = 0
munmap(0xb7f6f000, 137461) = 0
exit_group(0) = ?

C++ версия должна быть "пожирнее"

[snikulov@solarwind c_vs_cpp]$ strace ./try_cpp
execve("./try_cpp", ["./try_cpp"], [/* 53 vars */]) = 0
brk(0) = 0x9e42000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=137461, ...}) = 0
mmap2(NULL, 137461, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb8097000
close(3) = 0
open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\3523\0004\0\0\0\360"..., 512) = 512
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8096000
fstat64(3, {st_mode=S_IFREG|0755, st_size=950040, ...}) = 0
mmap2(0x2fa000, 977644, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2fa000
mmap2(0x3dd000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe2) = 0x3dd000
mmap2(0x3e3000, 23276, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3e3000
close(3) = 0
open("/lib/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`$\256\0004\0\0\0<"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=206204, ...}) = 0 mmap2(0xadf000, 159872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xadf000 mmap2(0xb05000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25) = 0xb05000 close(3) = 0 open("/lib/libgcc_s.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@O&\0004\0\0\0P"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=172840, ...}) = 0 mmap2(0x263000, 174312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x263000 mmap2(0x28d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29) = 0x28d000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\253\227\0004\0\0\0\304"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1803388, ...}) = 0 mmap2(0x964000, 1513768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x964000 mprotect(0xacf000, 4096, PROT_NONE) = 0 mmap2(0xad0000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16b) = 0xad0000 mmap2(0xad3000, 10536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xad3000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8095000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8094000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb8095b20, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xad0000, 8192, PROT_READ) = 0
mprotect(0xb05000, 4096, PROT_READ) = 0
mprotect(0x3dd000, 16384, PROT_READ) = 0
mprotect(0x960000, 4096, PROT_READ) = 0
munmap(0xb8097000, 137461) = 0
exit_group(0) = ?
[snikulov@solarwind c_vs_cpp]$

Ну вообщем понятно...
Оптимизировать непросто. Тут всегда балансируешь на гранях. Когда-то приходит время выбирать. Или быстро и красиво запрограммировать (конструкторы, деструкторы, перегрузки, и т.д.), или уместить все это в железку, чтобы приемлемо работало.

Пошел искать опцию как отключить libm из зависимостей.
-Wl,-nostdlib не помогло.

P.S.
В рассылке по Embedded Linux Developers Kit мужик задал вопрос - а кто-нибудь перл собирал для ресурсо-ограниченного оборудования?
Видимо не очень ограничен, если спрашивает.

воскресенье, 31 мая 2009 г.

крушение иллюзий...

Дмал хоть в силиконовой долине будет _быстрый_ беспроводной интернет. Как бы не так!!! Intel C/C++ Compiler for Linux качается уже 8 часов!!! И конца на видно...

В то же время Sun Developer Express вытянул за 4 часа.

Не совсем ясно почему так.
Результат трассировки говорит что интел вроде ближе

snikulov@linux-m0ft:/opt> traceroute www.intel.com
traceroute to www.intel.com (209.234.250.178), 30 hops max, 40 byte packets using UDP
1 10.10.10.1 (10.10.10.1) 152.980 ms 145.084 ms 147.297 ms
2 192.168.0.1 (192.168.0.1) 177.922 ms 175.383 ms 184.031 ms
3 bras6-l0.pltnca.sbcglobal.net (151.164.184.82) 188.939 ms 184.575 ms 178.264 ms
4 76.246.22.2 (76.246.22.2) 170.945 ms 167.853 ms 163.914 ms
5 151.164.93.237 (151.164.93.237) 155.814 ms 150.163 ms 142.610 ms
6 151.164.171.196 (151.164.171.196) 135.924 ms 130.859 ms 123.636 ms
7 asn3356-level3.eqsjca.sbcglobal.net (151.164.250.138) 31.344 ms 35.329 ms 47.115 ms
8 ae-13-69.car3.SanJose1.Level3.net (4.68.18.5) 47.623 ms ae-33-89.car3.SanJose1.Level3.net (4.68.18.133) 181.125 ms ae-13-69.car3.SanJose1.Level3.net (4.68.18.5) 89.511 ms
9 COTENDO.car3.SanJose1.Level3.net (4.71.112.50) 133.830 ms 38.267 ms 85.974 ms
10 te3-1.bbr1.lax1.bandcon.com (216.151.179.181) 123.315 ms 140.327 ms 137.079 ms
11 te3-2.bbr1.phx1.bandcon.com (216.151.179.197) 130.389 ms 125.480 ms 118.946 ms
12 te8-1.bbr1.dfw1.bandcon.com (216.151.179.210) 111.088 ms 104.126 ms 96.747 ms
13 209.234.250.178 (209.234.250.178) 89.029 ms 80.981 ms 76.275 ms
snikulov@linux-m0ft:/opt>

snikulov@linux-m0ft:/opt> traceroute www.sun.com
traceroute to www.sun.com (72.5.124.61), 30 hops max, 40 byte packets using UDP
1 10.10.10.1 (10.10.10.1) 240.749 ms 240.361 ms 232.654 ms
2 192.168.0.1 (192.168.0.1) 326.406 ms 333.125 ms 329.258 ms
3 bras6-l0.pltnca.sbcglobal.net (151.164.184.82) 344.893 ms 337.704 ms 348.631 ms
4 64.164.107.1 (64.164.107.1) 319.859 ms 334.167 ms 335.374 ms
5 * 69.220.8.95 (69.220.8.95) 691.902 ms 684.616 ms
6 * * *
7 asn3561-savvis.eqsjca.sbcglobal.net (151.164.89.134) 276.214 ms 136.078 ms 413.023 ms
8 208.175.172.10 (208.175.172.10) 432.797 ms 430.899 ms 424.730 ms
9 border2.te7-1-bbnet1.sfo002.pnap.net (63.251.63.17) 438.945 ms 438.397 ms 432.441 ms
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *

воскресенье, 24 мая 2009 г.

размер имеет значение...

Партия поставила задачу сократить размер инсталляции встроенного обеспечения вдвое...

Поковырялись в ELDK, немножко сократили за счет реорганизации инсталляции, но все равно не хватает.

Возникла мысль выкинуть C++ рантаймовую либу.
Для этого необходимо переписать парочку модулей на C.

Начал смотреть библиотеки для C.

Интересными для исследования показались:

Может еще кто что подскажет? :-)

суббота, 23 мая 2009 г.

мысли на ночь :)

Что-то возникло желание прикупить нетбук Eee Pc с Linux на борту.
Усиленно с ним борюсь :)))
Приятно, что он так долго живет без питания...

пятница, 22 мая 2009 г.

Странное стечение обстоятельств и необычных мест

Ну вот, скажете, то ничего нет в блоге, а то по нескольку сообщений в день...
Просто давление времени снизилось ("но график, у меня есть график") и вот я пишу ни о чем :-)

Во-первых - тренирую русский язык - стал замечать, что делаю ошибки при письме
Во-вторых - в твитере так много не напишешь

Да, о чем это я?

Собственно на выходных был в Redwood парке и не подазревал, что рядом с ним Ганс Рейзер (создатель ReiserFS для Linux) закопал убиенную им жену - Нину.

Вот где приходиться бывать иногда...

Прибыль ни на чем

Повелся я, значит, уже не помню сколько времени назад на Гулевский адсенс.
И добавил его себе в блог ни на что особо не надеясь :-)
Ну есть и есть - вроде не перегрузил блог этими картинками
Сегодня решил посмотреть - глядь, а там уже как бы и 5 долларов 12 центов!!!
О чем это говорит?
Думаете о том что кто-то кликает по ссылкам?
Ну вероятно... Однако, на самом деле о том что через лет 20 я получу 100 баксов ни за что :-)

Удачи!

рекурсивные обработки файлов в *ux

Не то чтобы новое - даже наоборот старое.
Добавил дабы кому пригодилось ;)
Да и сам чтобы не забыл

Возьмем за пример конвертацию файлов на языка C в *ux формат по всем поддиректориям.

Вы можете поменять на свою операцию - например удаление :)

Итак, я знаю примерно 3 способа

  1. #dos2unix -k `find . -name "*.c"`
  2. #find . -name "*.c" -exec dos2unix -k '{}' \;
  3. #find . -name "*.c" -print | xargs dos2unix -k

Я предпочитаю длинный вариант - уже и не помню почему.
Видимо что первое показали - то и использую.

воскресенье, 17 мая 2009 г.

что за...

На FX Movies уже 4-ый раз идет Underworld: Evolution...
Я конечно знал что в америке не все вникают с первого раза...
Но не до такой же степени

PS.
скажите - ну не смотри!
ну дак я и не смотрю - просто пролистываю :) но почему-то получается что я попадаю на него уже не первый день... а его показывают по 2 раза в день

так и я поверю в оборотней и вампиров ;))))

четверг, 14 мая 2009 г.

снова Калифорния

Судьба злодейка ;) и снова я уже 3-й день в солнечной Калифорнии.
Буду тут месяц.
Тут тепло.
После перелета никак не могу адаптироваться к местной таймзоне.

среда, 8 апреля 2009 г.

вторник, 7 апреля 2009 г.

IBM to buy Sun Microsystems

Несмотря на множество слухов, в которые я поначалу не очень верил, действительно ИБМ вело (ведет?) переговоры о покупке Сана.

Однако, что-то у них не срослось (пока?) или это все же такой хитрый ход?

Надо признаться я не очень восхищен таким поворотом дела.
Мне кажется основная цель у ИБМ-а просто "грохнуть" еще одного конкурента.

Я думаю что:
- Все станут использовать ИБМ JDK после покупки - SWING будет заменен на SWT
- Netbeans будет похоронен или списан с баланса - безоговорочная победа Eclipce
- Solaris/OpenSolaris претерпит участь нетбинса - ИБМ-у насколько я понимаю Linux удобнее (Соляриса ведь вроде нет на ИБМ-овской Power архитектуре?)
- SPARC архитектура тоже будет списана (на кой ее развивать коли Power есть своя?)
- MySQL будет либо списан, либо станет облегченной версией DB2 Lite
- Sun Studio компайлеры будут списаны или переименнованы? Но точно перестанут быть доступными.

А может я не прав в прогнозах и ИБМ продолжит линейки знаменитых продуктов?

А может все же Сан, как и Яху, не продадут?

Мужики! Не сдавайтесь! :)
Я за вас болею!
Оле-оле-оле!!! Сан Микросистемс! Вперед!

:)

четверг, 12 марта 2009 г.

вернулся домой

Я вернулся из командировки неделю назад.

Дома ждали обрадованные жена и сын. Как же я рад был их увидеть!

Из обновлений - в моем арсенале появился WiFi router WRT160N от Linksys (подразделение Cisco), который я собственно сегодня настроил :)

Автоматической настройки не получилось - линксисовский инсталяционный диск крашнулся на определении рутера. Искать обновления не стал. Настроил все вручную.

Рутер поддерживает драфт 802.11n и на удивление моя карточка на самсунговском ноуте включилась именно на нем!
Для тех кто не в курсе - говорят, что этот режим примерно в 70 раз быстрее чем распространненый 802.11g
Буду тестировать дальше :)

Субъективно скоростью доволен, отсуствием необходимости в кабеле по квартире тоже. 76 долларов (именно за столько купил его в BestBuy в США) потрачены не в пустую. :)

Возникли мысли о провайдерстве :)

понедельник, 23 февраля 2009 г.

Фильмы // SiCKO от Майкла Мура

Вчера по Sho2 показывали фильм известного кинодокументалиста Майкла Мура о медицинской системе США.
Сказать что я поражен, означает ничего не сказать.

Вообще я предполагал, что система медстрахования не совсем правильная. Однако чтобы понять насколько, просто необходимо на ӕто взглянуть со стороны. Тем более под таким углом как ӕто сделал Мур.

Я помню время, когда все ӕто начиналось в России. И все говорили о реформе, о необходимости страхования и т.п. Все восхищались и говорили - "как хорошо", теперь все у нас будет так же хорошо - ну прям "как в передовой Америке".
Так вот Вам обратная сторона медали. Америка на 37 месте по качеству медицинских услуг, как раз над Кубой (39 место) через Словению (38 место).

Все симптомы болезни американского здравоохранения можно шаблонно проследить и у нас.

Рекомендую к просмотру.

среда, 11 февраля 2009 г.

opensuse 11.1 // wlan

Вчера столкнулся с проблемой - после приема очередного обновления перестал работать wlan.

Не то что как бы совсем не работать - network manager видит беспроводную сетку и соединяется к ней. Адресочек автоматом (dhcp) выставляется - просто не видит компьютер глобальную паутинку и все тут.

Решил проблемку следующим образом:

#sudo /sbin/ifrenew-dhcp wlan0

выдало другой адресок и стало все работать.

вторник, 10 февраля 2009 г.

Embedded Linux // /dev/random

Сброка Openssl не работала с GoAhead - сервер прекращал соединение на https с ошибкой вида - сервер неожиданно разорвал соединение.

Поиск в гугле дал совет - посмотрите - все ли хорошо с /dev/random

Посмотрел на "железке" в устройствах

Проблема 1 - его там вообще нет.

Лечим по простому
mknod -m 644 /dev/random c 1 8
mknod -m 644 /dev/urandom c 1 9
chown root:root /dev/random /dev/urandom

Проблема 2 - чтение cat из /dev/random зависает.

В Faq по Eldk читаем решение для проблемы зависания

Суть проблемы:

В обычном PC линуксе драйвера клавиатуры и мыши наполняют драйвер случайных чисел (/dev/random) необходимой ӕнтропией. Во встроенном линуксе таких драйверов может не быть (в моем случае их просто нет).

Как обходной маневр используем

# cd /dev
# rm -f random
# ln -s urandom random

Проверяем работу сервера с OpenSSL.

boost 1.38.0 is out // now with cmake build

Сегодня в лентах новостей упало сообщение о том что вышла новая версия библиотеки boost.
Что нового - можно прочитать здесь.
Из ожидаемых мной изменений - добавлена поддержка cmake.

понедельник, 9 февраля 2009 г.

ничего нового от Гугла...

Полез в гуглевские продукты - увидел напротив Chrome пометку new.
Решил зайти - вдруг сделали версию для Linux. Как бы не так!
Как изначально было сказано только для win-платформ, так и осталось...
Вот тебе и новинка... Обидно :-)

Калифорния // Сан-Франциско

Сегодня были в Сан-Франциско.

Из-за погоды отложили поездку в Алькатраз (кто не в курсе о чем я - посмотрите фильм Cкала с Шоном Коннери и Кейджем). Повторим, когда будет потеплее и не будет мороси (мелкий нудный дождик).

Вместо данного мероприятия - решили просто "пошататься" по центру (downtown) "города в стиле диско".

Ничего в "стиле диско" там не увидели. Видимо были в неудачное время...
Как обычно - центр обычного американского города - небоскребы банков и финансовых корпораций.
Как мне показалось, много нищих (сравниваю с даунтауном Чикаго трехлетней давности - когда я там был).

Взобрались на самую высокую точку города пешком, без фуникулера (трамвайчик, который тянут тросом). Город сопками и близостью океана - очень похож на Владивосток, только значительно ухоженней. Кто был во Владивостоке, должен представлять о чем я.
Сергей фотографировал - ждем появления фото здесь.

С сопки спустились в Чайнатаун - район Сан Франциско, где очень много китайцев.
Для того чтобы понять о чем я, Cергей предлагает представить пограничный с Приморьем, китайский город Суй-Фунь-Хе. Я там не был, но видимо представляю о чем он - все основные надписи на китайском (на вывесках небольшие пояснения на английском - в Суньке на русском :-) ). Говорят на китайском. Европейского вида люди выглядят гостями здесь :-).
В данном квартале на пешеходных переходах на асфальте надпись -
"<- Look ->" - означающая, что вам следует посмотреть по сторонам, и убедиться что вас пропускают местные автолюбители (видимо, даже на зеленый свет). В основной части города такие надписи отсуствуют. Улицы в Чайнатауне менее чистые, нежели в центре города (хотя чище, чем например во Владивостоке).
Были как раз празднования китайского нового года - драконы, радостные жители американского подразделения "поднебесной" и все такое...

Такие вот впечатления. Продолжаем исследования ;-)

суббота, 7 февраля 2009 г.

Калифорния // неделя прошла...

Скучаю по жене и сыну.

Автор 2008-08-20бАстафьева


Сегодня не дозвонился...
Спать буду плохо...

Embedded Linux // ssh server

Сегодня начал разбираться с парой найденных реализаций ssh серверов (клиенты мне пока не интересны).

Естественно - OpenSSH и найденная случайно (не слышал и не использовал до сего момента) Dropbear.

Основной идеей сборки под конкретную платформу является запуск скрипта конфигурации с параметрами (для примера):

#CC=ppc_4xx ./configure --host=powerpc-linux

Ну и собственно

#make

В обоих случаях все собирается (работает или нет бинарник проверю в понедельник, когда получу доступ к железке).

Ну а пока для сравнения

Размер OpenSSH
snikulov@linux-mimw:~/PPC/openssh/sbin> ls -la
total 364
drwxr-xr-x 2 snikulov users 4096 2009-02-07 00:46 .
drwxr-xr-x 11 snikulov users 4096 2009-02-07 01:35 ..
-rwxr-xr-x 1 snikulov users 357344 2009-02-07 00:46 sshd

Размер Dropbear
snikulov@linux-mimw:~/PPC/dropbear/sbin> ls -la
total 156
drwxr-xr-x 2 snikulov users 4096 2009-02-07 01:37 .
drwxr-xr-x 4 snikulov users 4096 2009-02-07 01:35 ..
-rwxr-xr-x 1 snikulov users 144552 2009-02-07 01:37 dropbear

Определенно стоит рассмотреть Dropbear, как основную алтернативу для исползования в "железке".

четверг, 5 февраля 2009 г.

Linux // Настройка GoAhead Web Server для работы c OpenSSL

На самом деле прошу не смеяться - может кому-то данный опыт тоже пригодиться.
И сохранит 4 часа непрерывного ковыряния в Гуле и коде (да, он опенсоурсный, но почитайте лицензию прежде чем использовать).

"Да нах он нужен! Ведь есть восхитительнейшие Apache или еще что-нибудь" - скажете вы и, по своему, будете правы. Однако, спешу напомнить, что жизнь непростая штука и вы не всегда играете по своим правилам. Короче, в сторону лирику...

Задача примерна такая - есть маломощное вычислительное устройство и на нем уже крутиться данный сервер. Надо криптануть трафик от и до с помощью SSL.

Все опции по криптовальным пакетам есть в
<место куда вы распаковали исходники>/LINUX/Makefile

И надо сказать даже у апача столько нет ;-)
- бесплатная OpenSSL
- платная BSAFE от RSA
- платная NanoSSL от Mocana

Понятно, что одним из рассматриваемых вариантов становиться OpenSSL (нет еще не победитель, но как бы уже доступен на попробовать).

Что собственно делаем для сборки GoAhead Web server (далее GAWS).

Кросскомпилером собираем OpenSSL (отдельная история - если кто захочет могу рассказать отдельно). Есть правда надежда что он у вас уже собранный. Я делаю допущение что он у вас уже есть :-) C каким-нибудь тулкитом для встроенного линукса.

Редактируем вышеуказанный Makefile следующим образом (согласно английским комментариям в файле)

SSLPATCHFILE = ../websSSL.o

# Here I put top location of openssl
# it could be anywhere for example point to location of target platform
OPENSSL_ROOT=/opt/eldk//usr

SSLINC = $(OPENSSL_ROOT)/include/openssl
# here could be either
# static libs in following form
# $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypto.a
# or
# dynamic in following form
# -L$(OPENSSL_ROOT)/lib -lssl -lcrypto
# or both forms for example I'we was forced to add 1 satatic from krb5 set ;-)
SSLLIB = -L$(OPENSSL_ROOT)/lib -lssl -lcrypto
SSLSW = -DWEBS_SSL_SUPPORT -I$(SSLINC) -DOPENSSL


Вот собственно и все.
Пробуем собрать и играемся сими опциями до удачного завершения билда и линковки.
Обычно нужно какую нибудь библиотечку добавить, которой не хватает :-)

Все собралось. Получили исполнимый файл. Нужны сертификаты.

Процедура такова - реальный сертификат нам на тестировании не нужен.
Посему делаем самодельные.

Сервер будет их искать в (там где у него жестко прописано - см. исходный код в файле websSSL.c - можете, кстати, и поменять)

1) там где он стартанул - должен быть файл server.pem
2) там где он стартанул - должна быть директория certs с двумя файлами в ней cacert.pem & cakey.pem

делаем их так

1) Генерим ключ и x509 сертификат
$openssl req -x509 -newkey rsa:2048 -days 1024 \
-keyout server-key.pem -out server-cert.pem
Вас опросит по английски заполнить поля вашего сертификата
Не забудте на вопрос
Common Name (eg, YOUR name) []:localhost
указать имя вашего хоста - в моем примере - localhost

2) Снимаем пароль с ключа, который вы введете на первом шаге на один из вопросов
$openssl rsa -in server-key.pem -out server-key-nopassword.pem
3) Склеиваем два файла в один (он будет лежать откуда стартует исполнимый файл)
$cat server-key-nopassword.pem server-cert.pem > server.pem
4) Ну и собственно перемещаем или копируем их каждого на свое место
server.pem      -> /server.pem
server-cert.pem -> /certs/cacert.pem
server-key.pem -> /certs/cakey.pem

Проверяем работоспособность.

Если вдруг не заработает - берите дебаггер и вперед.

Удачи.

среда, 4 февраля 2009 г.

Ужасы нашего городка...

1.
С ужасом наблюдаю по местному американскому телевиденью (наткнулся на какую-то местную калифорнийскую передачу, хотя может и не калифорнийскую, но то что американскую - 100%) историю из жизни бедных американских женьщин (о которых не скажешь fat free). Смысл всего ужаса в том что за 350-х (сверху не ограничено) паундовую (простите за мой французский - 1 lb ~ 0.453 кг) тетку неделю "мучает" какой-то тощий мужичек. Смысл "мучений" в том что заставляет их заниматься физкультурой. Потом под звуки марша (что-то такое бравурное) их взвешивают и - о чудо! - кто-то лишается 2-10 фунтов, видимо тот, кто действительно работает. Некоторые плачут (тут марш обрывается) - 0 фунтов за неделю. Им тощий мужик и телевизионного вида тетка (худая) говорят - Don't give up! (типа - не сдавайся!) - будем с тобой продолжать работать. Все выглядит очень неприятно - но шоу должно продолжаться!

2.
Вчера проснулся в холодном поту - а вдруг GPS приемник Сергея (моего напарника по коммандировке) выйдет из строя? Я полагаю что в лесу быстрее найду местоположение, чем в Калифорнийских развязках.

3.
В ридер упало сообщение из блога на который я подписан. Подбор фотографий неплохой. Название печальное. У русского программиста здесь несложилось, после 10 лет совместной жизни. Где-то подобное уже читал (а он похоже нет) - всех русских программистов здесь бросают жены. А ведь он сейчас тоже в Калифорнии...

понедельник, 2 февраля 2009 г.

В светлом будующем

Сегодня съездили на мост через залив, в простанородье именуемый Golden Gate Bridge.
Насколько я помню, обещали такой же сделать и во Владивостоке к саммиту.
Так что, считайте я побывал в будующем и посмотрел на будующий Владивостоцкий мост до острова Русский.
Одна особенность, замеченая мной заключается в том, что на мост в одну сторону заезжаешь бесплатно, но чтобы вернуться надо заплатить 6 долларов. Данную особенность рекомендую применить и во Владивостоке - на остров бесплатно, оттуда - за деньги ;-)

суббота, 31 января 2009 г.

город в стиле диско...

Прилетел 29 января в Сан-Франциско, в коммандировку.
Пока не разобрался что к чему.
Основные изменения - я попал из зимы во Владивостоцкую осень (сентябрь-октябрь).
Трава и пальмы зеленые.
При движении на машине попадаются вывески Palo Alto, Silicon Valley, San Jose...
Что-то знакомое, о чем читал в детстве :)
Из гигантских оффисов пока видел на ладан дышаший Yahoo!
Остальное будем рассматривать по ходу течения времени...
Следите за аннонсами.