Как-то незаметно в День моего Рождения выпустили 11.2 OpenSuse.
Досадно, что я к этому времени уже полностью перешел на Fedora... И она обновилась сегодня до 12 версии!
Брать можно здесь
--
Best Regards,
Sergey Nikulov
среда, 18 ноября 2009 г.
среда, 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.
Решил вначале опробовать CruiseControl. Все таки Мартин Фаулер вроде приложил руку к его созданию.
Конфигурационный инструмент, который должен был запуститься со странички через Java WebStart, на Linux-е запускаться и не подумал.
После 2х часов RTFM-а, грубо ругаясь, прекратил тщетные попытки описать проект для C++/CMake/SVN и, успокаивая себя тем что это же OSS, и не надеясь ни на что хорошее бросил Hudson-овский war в папку приложений Tomcat.
Используя Hudson web-интерфейс за пару минут создал два проекта которые проверяют SCM на наличие изменений, запускают билд, если изменения есть, высылает сообщение по почте и результат публикуют на FTP.
Ну а после того как обнаружил в списке дополнений слова cmake & scons... Я фанат Hudson-а!
Надо сказать, что я никому не посоветую CruiseControl.
среда, 24 июня 2009 г.
удаление Visual Studio 2008
Собственно оказалось нетривиальной задачей...
Рекомендую воспользоваться инструментом от издателя.
Рекомендую воспользоваться инструментом от издателя.
вторник, 9 июня 2009 г.
про интернет в Калифорнии (продолжение...)
Сегодня прихожу на рабочее место - смотрю какой-то мужичек возле моего ноута крутиться.
- Вотс гоин он? говорю.
Он отвечает на чистейшем американском - а это ваш компьютер?
- Мой - говорю.
- А вы ничего большого не качали? - спрашивает он, видимо в надежде на отмазки.
- Качал говорю - не далее как в конце прошлой недели - 8 Гб за вечер утянул в торрентах с сайта Fedoraproject.org
- Ну вообщем-то говорит не большая проблема, просто вы канал нам просадили на прошлой недели в усмерть - никто работать не мог. Я - говорит - грешным делом на порновирус рассчитывал - а тут вы со своим Линуксом.
- Да - говорю я, не извиняясь - херня такая этот Линукс - говорю смотри - апдэйтов кажет 686 штук и показал значек ПэкаджКита. Хотя - говорю - на прошлой неделе не менее после установки вытянул...
- А ограничить по полосе его нельзя?
- Да можно, тока я думал у вас в Америке с пропускной способностью каналов проблем нет, начал я испорченный Иллинойсовским безлимитом на комкасте....
- Не делайте так больше - сказал мужик и ушел...
Вот такая вот поучительная история...
Походу тут каналы в Силиконке нифига не широкие...
И "палят" на них реально...
- Вотс гоин он? говорю.
Он отвечает на чистейшем американском - а это ваш компьютер?
- Мой - говорю.
- А вы ничего большого не качали? - спрашивает он, видимо в надежде на отмазки.
- Качал говорю - не далее как в конце прошлой недели - 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 мужик задал вопрос - а кто-нибудь перл собирал для ресурсо-ограниченного оборудования?
Видимо не очень ограничен, если спрашивает.
Прежде всего, хочеться отметить, что мне понравился сайт, как ресурс. Я давно на него поглядывал, но все не находил времени почитать. Интересные советы, статьи. Нельзя сказать, что все новое и незнакомое - где-то слышал то, где-то это...
Вообщем, иногда имеет смысл поглядывать, и не забывать.
Решил немного посчитать и поэкспериментировать.
Написал маленький и смешной кусок кода:
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 * * *
В то же время 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.
Интересными для исследования показались:
Может еще кто что подскажет? :-)
Поковырялись в ELDK, немножко сократили за счет реорганизации инсталляции, но все равно не хватает.
Возникла мысль выкинуть C++ рантаймовую либу.
Для этого необходимо переписать парочку модулей на C.
Начал смотреть библиотеки для C.
Интересными для исследования показались:
- A Simple Generic Library for C (http://sglib.sourceforge.net/)
- C Algorithms (http://c-algorithms.sourceforge.net/)
- c-generic-library (http://code.google.com/p/c-generic-library/)
Может еще кто что подскажет? :-)
суббота, 23 мая 2009 г.
мысли на ночь :)
Что-то возникло желание прикупить нетбук Eee Pc с Linux на борту.
Усиленно с ним борюсь :)))
Приятно, что он так долго живет без питания...
Усиленно с ним борюсь :)))
Приятно, что он так долго живет без питания...
пятница, 22 мая 2009 г.
Странное стечение обстоятельств и необычных мест
Ну вот, скажете, то ничего нет в блоге, а то по нескольку сообщений в день...
Просто давление времени снизилось ("но график, у меня есть график") и вот я пишу ни о чем :-)
Во-первых - тренирую русский язык - стал замечать, что делаю ошибки при письме
Во-вторых - в твитере так много не напишешь
Да, о чем это я?
Собственно на выходных был в Redwood парке и не подазревал, что рядом с ним Ганс Рейзер (создатель ReiserFS для Linux) закопал убиенную им жену - Нину.
Вот где приходиться бывать иногда...
Просто давление времени снизилось ("но график, у меня есть график") и вот я пишу ни о чем :-)
Во-первых - тренирую русский язык - стал замечать, что делаю ошибки при письме
Во-вторых - в твитере так много не напишешь
Да, о чем это я?
Собственно на выходных был в Redwood парке и не подазревал, что рядом с ним Ганс Рейзер (создатель ReiserFS для Linux) закопал убиенную им жену - Нину.
Вот где приходиться бывать иногда...
Прибыль ни на чем
Повелся я, значит, уже не помню сколько времени назад на Гулевский адсенс.
И добавил его себе в блог ни на что особо не надеясь :-)
Ну есть и есть - вроде не перегрузил блог этими картинками
Сегодня решил посмотреть - глядь, а там уже как бы и 5 долларов 12 центов!!!
О чем это говорит?
Думаете о том что кто-то кликает по ссылкам?
Ну вероятно... Однако, на самом деле о том что через лет 20 я получу 100 баксов ни за что :-)
Удачи!
И добавил его себе в блог ни на что особо не надеясь :-)
Ну есть и есть - вроде не перегрузил блог этими картинками
Сегодня решил посмотреть - глядь, а там уже как бы и 5 долларов 12 центов!!!
О чем это говорит?
Думаете о том что кто-то кликает по ссылкам?
Ну вероятно... Однако, на самом деле о том что через лет 20 я получу 100 баксов ни за что :-)
Удачи!
рекурсивные обработки файлов в *ux
Не то чтобы новое - даже наоборот старое.
Добавил дабы кому пригодилось ;)
Да и сам чтобы не забыл
Возьмем за пример конвертацию файлов на языка C в *ux формат по всем поддиректориям.
Вы можете поменять на свою операцию - например удаление :)
Итак, я знаю примерно 3 способа
Я предпочитаю длинный вариант - уже и не помню почему.
Видимо что первое показали - то и использую.
Добавил дабы кому пригодилось ;)
Да и сам чтобы не забыл
Возьмем за пример конвертацию файлов на языка C в *ux формат по всем поддиректориям.
Вы можете поменять на свою операцию - например удаление :)
Итак, я знаю примерно 3 способа
- #dos2unix -k `find . -name "*.c"`
- #find . -name "*.c" -exec dos2unix -k '{}' \;
- #find . -name "*.c" -print | xargs dos2unix -k
Я предпочитаю длинный вариант - уже и не помню почему.
Видимо что первое показали - то и использую.
воскресенье, 17 мая 2009 г.
что за...
На FX Movies уже 4-ый раз идет Underworld: Evolution...
Я конечно знал что в америке не все вникают с первого раза...
Но не до такой же степени
PS.
скажите - ну не смотри!
ну дак я и не смотрю - просто пролистываю :) но почему-то получается что я попадаю на него уже не первый день... а его показывают по 2 раза в день
так и я поверю в оборотней и вампиров ;))))
Я конечно знал что в америке не все вникают с первого раза...
Но не до такой же степени
PS.
скажите - ну не смотри!
ну дак я и не смотрю - просто пролистываю :) но почему-то получается что я попадаю на него уже не первый день... а его показывают по 2 раза в день
так и я поверю в оборотней и вампиров ;))))
четверг, 14 мая 2009 г.
снова Калифорния
Судьба злодейка ;) и снова я уже 3-й день в солнечной Калифорнии.
Буду тут месяц.
Тут тепло.
После перелета никак не могу адаптироваться к местной таймзоне.
Буду тут месяц.
Тут тепло.
После перелета никак не могу адаптироваться к местной таймзоне.
воскресенье, 3 мая 2009 г.
Вышел CMake 2.6.4
вторник, 21 апреля 2009 г.
в продолжении о продеже Sun Microsystems
Мало того что архитектор спарков ушел в Микрософт, так еще и Monty говорит, что Sun будет куплен Ораклом....
Ну и дела....
update:
Ссылки по теме
среда, 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 компайлеры будут списаны или переименнованы? Но точно перестанут быть доступными.
А может я не прав в прогнозах и ИБМ продолжит линейки знаменитых продуктов?
А может все же Сан, как и Яху, не продадут?
Мужики! Не сдавайтесь! :)
Я за вас болею!
Оле-оле-оле!!! Сан Микросистемс! Вперед!
:)
Однако, что-то у них не срослось (пока?) или это все же такой хитрый ход?
Надо признаться я не очень восхищен таким поворотом дела.
Мне кажется основная цель у ИБМ-а просто "грохнуть" еще одного конкурента.
Я думаю что:
- Все станут использовать ИБМ 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 в США) потрачены не в пустую. :)
Возникли мысли о провайдерстве :)
Дома ждали обрадованные жена и сын. Как же я рад был их увидеть!
Из обновлений - в моем арсенале появился WiFi router WRT160N от Linksys (подразделение Cisco), который я собственно сегодня настроил :)
Автоматической настройки не получилось - линксисовский инсталяционный диск крашнулся на определении рутера. Искать обновления не стал. Настроил все вручную.
Рутер поддерживает драфт 802.11n и на удивление моя карточка на самсунговском ноуте включилась именно на нем!
Для тех кто не в курсе - говорят, что этот режим примерно в 70 раз быстрее чем распространненый 802.11g
Буду тестировать дальше :)
Субъективно скоростью доволен, отсуствием необходимости в кабеле по квартире тоже. 76 долларов (именно за столько купил его в BestBuy в США) потрачены не в пустую. :)
Возникли мысли о провайдерстве :)
вторник, 24 февраля 2009 г.
Проезжая мимо большого кампуса Sun Microsystems...
... размышлял над принципом WORA.
И ведь сколько же надо импортировать Сишных программеров из Индии, чтобы его обеспечить!!! ;-)
Ведь виртуальная машина сама написана на Си.
И ведь сколько же надо импортировать Сишных программеров из Индии, чтобы его обеспечить!!! ;-)
Ведь виртуальная машина сама написана на Си.
понедельник, 23 февраля 2009 г.
Фильмы // SiCKO от Майкла Мура
Вчера по Sho2 показывали фильм известного кинодокументалиста Майкла Мура о медицинской системе США.
Сказать что я поражен, означает ничего не сказать.
Вообще я предполагал, что система медстрахования не совсем правильная. Однако чтобы понять насколько, просто необходимо на ӕто взглянуть со стороны. Тем более под таким углом как ӕто сделал Мур.
Я помню время, когда все ӕто начиналось в России. И все говорили о реформе, о необходимости страхования и т.п. Все восхищались и говорили - "как хорошо", теперь все у нас будет так же хорошо - ну прям "как в передовой Америке".
Так вот Вам обратная сторона медали. Америка на 37 месте по качеству медицинских услуг, как раз над Кубой (39 место) через Словению (38 место).
Все симптомы болезни американского здравоохранения можно шаблонно проследить и у нас.
Рекомендую к просмотру.
Сказать что я поражен, означает ничего не сказать.
Вообще я предполагал, что система медстрахования не совсем правильная. Однако чтобы понять насколько, просто необходимо на ӕто взглянуть со стороны. Тем более под таким углом как ӕто сделал Мур.
Я помню время, когда все ӕто начиналось в России. И все говорили о реформе, о необходимости страхования и т.п. Все восхищались и говорили - "как хорошо", теперь все у нас будет так же хорошо - ну прям "как в передовой Америке".
Так вот Вам обратная сторона медали. Америка на 37 месте по качеству медицинских услуг, как раз над Кубой (39 место) через Словению (38 место).
Все симптомы болезни американского здравоохранения можно шаблонно проследить и у нас.
Рекомендую к просмотру.
понедельник, 16 февраля 2009 г.
среда, 11 февраля 2009 г.
opensuse 11.1 // wlan
Вчера столкнулся с проблемой - после приема очередного обновления перестал работать wlan.
Не то что как бы совсем не работать - network manager видит беспроводную сетку и соединяется к ней. Адресочек автоматом (dhcp) выставляется - просто не видит компьютер глобальную паутинку и все тут.
Решил проблемку следующим образом:
#sudo /sbin/ifrenew-dhcp wlan0
выдало другой адресок и стало все работать.
Не то что как бы совсем не работать - network manager видит беспроводную сетку и соединяется к ней. Адресочек автоматом (dhcp) выставляется - просто не видит компьютер глобальную паутинку и все тут.
Решил проблемку следующим образом:
#sudo /sbin/ifrenew-dhcp wlan0
выдало другой адресок и стало все работать.
вторник, 10 февраля 2009 г.
Embedded Linux // /dev/random
Сброка Openssl не работала с GoAhead - сервер прекращал соединение на https с ошибкой вида - сервер неожиданно разорвал соединение.
Поиск в гугле дал совет - посмотрите - все ли хорошо с /dev/random
Посмотрел на "железке" в устройствах
Проблема 1 - его там вообще нет.
Лечим по простому
Проблема 2 - чтение cat из /dev/random зависает.
В Faq по Eldk читаем решение для проблемы зависания
Суть проблемы:
В обычном PC линуксе драйвера клавиатуры и мыши наполняют драйвер случайных чисел (/dev/random) необходимой ӕнтропией. Во встроенном линуксе таких драйверов может не быть (в моем случае их просто нет).
Как обходной маневр используем
Проверяем работу сервера с OpenSSL.
Поиск в гугле дал совет - посмотрите - все ли хорошо с /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
понедельник, 9 февраля 2009 г.
ничего нового от Гугла...
Полез в гуглевские продукты - увидел напротив Chrome пометку new.
Решил зайти - вдруг сделали версию для Linux. Как бы не так!
Как изначально было сказано только для win-платформ, так и осталось...
Вот тебе и новинка... Обидно :-)
Решил зайти - вдруг сделали версию для Linux. Как бы не так!
Как изначально было сказано только для win-платформ, так и осталось...
Вот тебе и новинка... Обидно :-)
Калифорния // Сан-Франциско
Сегодня были в Сан-Франциско.
Из-за погоды отложили поездку в Алькатраз (кто не в курсе о чем я - посмотрите фильм Cкала с Шоном Коннери и Кейджем). Повторим, когда будет потеплее и не будет мороси (мелкий нудный дождик).
Вместо данного мероприятия - решили просто "пошататься" по центру (downtown) "города в стиле диско".
Ничего в "стиле диско" там не увидели. Видимо были в неудачное время...
Как обычно - центр обычного американского города - небоскребы банков и финансовых корпораций.
Как мне показалось, много нищих (сравниваю с даунтауном Чикаго трехлетней давности - когда я там был).
Взобрались на самую высокую точку города пешком, без фуникулера (трамвайчик, который тянут тросом). Город сопками и близостью океана - очень похож на Владивосток, только значительно ухоженней. Кто был во Владивостоке, должен представлять о чем я.
Сергей фотографировал - ждем появления фото здесь.
С сопки спустились в Чайнатаун - район Сан Франциско, где очень много китайцев.
Для того чтобы понять о чем я, Cергей предлагает представить пограничный с Приморьем, китайский город Суй-Фунь-Хе. Я там не был, но видимо представляю о чем он - все основные надписи на китайском (на вывесках небольшие пояснения на английском - в Суньке на русском :-) ). Говорят на китайском. Европейского вида люди выглядят гостями здесь :-).
В данном квартале на пешеходных переходах на асфальте надпись -
"<- Look ->" - означающая, что вам следует посмотреть по сторонам, и убедиться что вас пропускают местные автолюбители (видимо, даже на зеленый свет). В основной части города такие надписи отсуствуют. Улицы в Чайнатауне менее чистые, нежели в центре города (хотя чище, чем например во Владивостоке).
Были как раз празднования китайского нового года - драконы, радостные жители американского подразделения "поднебесной" и все такое...
Такие вот впечатления. Продолжаем исследования ;-)
Из-за погоды отложили поездку в Алькатраз (кто не в курсе о чем я - посмотрите фильм Cкала с Шоном Коннери и Кейджем). Повторим, когда будет потеплее и не будет мороси (мелкий нудный дождик).
Вместо данного мероприятия - решили просто "пошататься" по центру (downtown) "города в стиле диско".
Ничего в "стиле диско" там не увидели. Видимо были в неудачное время...
Как обычно - центр обычного американского города - небоскребы банков и финансовых корпораций.
Как мне показалось, много нищих (сравниваю с даунтауном Чикаго трехлетней давности - когда я там был).
Взобрались на самую высокую точку города пешком, без фуникулера (трамвайчик, который тянут тросом). Город сопками и близостью океана - очень похож на Владивосток, только значительно ухоженней. Кто был во Владивостоке, должен представлять о чем я.
Сергей фотографировал - ждем появления фото здесь.
С сопки спустились в Чайнатаун - район Сан Франциско, где очень много китайцев.
Для того чтобы понять о чем я, Cергей предлагает представить пограничный с Приморьем, китайский город Суй-Фунь-Хе. Я там не был, но видимо представляю о чем он - все основные надписи на китайском (на вывесках небольшие пояснения на английском - в Суньке на русском :-) ). Говорят на китайском. Европейского вида люди выглядят гостями здесь :-).
В данном квартале на пешеходных переходах на асфальте надпись -
"<- Look ->" - означающая, что вам следует посмотреть по сторонам, и убедиться что вас пропускают местные автолюбители (видимо, даже на зеленый свет). В основной части города такие надписи отсуствуют. Улицы в Чайнатауне менее чистые, нежели в центре города (хотя чище, чем например во Владивостоке).
Были как раз празднования китайского нового года - драконы, радостные жители американского подразделения "поднебесной" и все такое...
Такие вот впечатления. Продолжаем исследования ;-)
суббота, 7 февраля 2009 г.
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, как основную алтернативу для исползования в "железке".
Естественно - 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 сертификат
Не забудте на вопрос
Common Name (eg, YOUR name) []:localhost
указать имя вашего хоста - в моем примере - localhost
2) Снимаем пароль с ключа, который вы введете на первом шаге на один из вопросов
И сохранит 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/
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 лет совместной жизни. Где-то подобное уже читал (а он похоже нет) - всех русских программистов здесь бросают жены. А ведь он сейчас тоже в Калифорнии...
С ужасом наблюдаю по местному американскому телевиденью (наткнулся на какую-то местную калифорнийскую передачу, хотя может и не калифорнийскую, но то что американскую - 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 долларов. Данную особенность рекомендую применить и во Владивостоке - на остров бесплатно, оттуда - за деньги ;-)
Насколько я помню, обещали такой же сделать и во Владивостоке к саммиту.
Так что, считайте я побывал в будующем и посмотрел на будующий Владивостоцкий мост до острова Русский.
Одна особенность, замеченая мной заключается в том, что на мост в одну сторону заезжаешь бесплатно, но чтобы вернуться надо заплатить 6 долларов. Данную особенность рекомендую применить и во Владивостоке - на остров бесплатно, оттуда - за деньги ;-)
суббота, 31 января 2009 г.
город в стиле диско...
Прилетел 29 января в Сан-Франциско, в коммандировку.
Пока не разобрался что к чему.
Основные изменения - я попал из зимы во Владивостоцкую осень (сентябрь-октябрь).
Трава и пальмы зеленые.
При движении на машине попадаются вывески Palo Alto, Silicon Valley, San Jose...
Что-то знакомое, о чем читал в детстве :)
Из гигантских оффисов пока видел на ладан дышаший Yahoo!
Остальное будем рассматривать по ходу течения времени...
Следите за аннонсами.
Пока не разобрался что к чему.
Основные изменения - я попал из зимы во Владивостоцкую осень (сентябрь-октябрь).
Трава и пальмы зеленые.
При движении на машине попадаются вывески Palo Alto, Silicon Valley, San Jose...
Что-то знакомое, о чем читал в детстве :)
Из гигантских оффисов пока видел на ладан дышаший Yahoo!
Остальное будем рассматривать по ходу течения времени...
Следите за аннонсами.
Подписаться на:
Сообщения (Atom)