Skip to main content

Posts

Showing posts from 2007

gOS goes live

Событие уже давнее конечно, но все равно считаю нужным о нем написать. Итак, встречайте - gOS!!!
Да, да... еще один дистр линуха...
Однако не все так просто, как кажется на первый взгляд. Что вы скажете например об Everex gPC всего за 199$? Отличный выбор, если вам необходим недорогой офисный компьютер с доступом в интернет. Помимо набора офисных средств, в состав ОС включены средства, для работы с популярными веб сервисами. В общем я понимаю, что сейчас еще одним дистрибутивом никого не удивишь, да и случай продажи компьютеров с предустановленным линуксом уже не первый (первыми были Dell кажись), но все равно приятно. Подробности можно почитать здесь и здесь.

Возвращение джедая

Последние две недели прошли в бегах по универу, посему до того чтобы написать что-либо осмысленное руки ну совсем не доходили. Разве что так - общие мысли, да дополнил слегка пост о полезных ресурсах по С++.

Поковыряв boost::any, проникся подходом к реализации - действительно интереснейший способ, который подробно описан в статье "Valued Conversions" by Kevlin Henney. Везде, где только можно, этот класс использовать не получится, так как кастовать каждый раз - слишком накладно (хотя я не замерял, но думаю, что накладно по времени выполнения будет). Подобный же подход можно использовать и для реализации any_function.

Кроме того, надыбал интересную статейку про реализацию Properties in C++. В отличие от этой "Properties in C++", опубликованной в блоге Raider's Programming Blog, здесь используется подход, когда mutator & accessor являются параметрами шаблона, что на мой неискушенный взгляд удобнее, так как нет никакой необходимости менять их в рантайме. Единств…

Зачем мне нужен any_fun_ptr

В предыдущем посте, я высказался о том, что хочу эдакий generalized callback, который мог бы указывать на любую функцию. Возникает вопрос, а зачем это мне? Попробую для начала сделать некоторое введение, которое, надеюсь, немного прольет свет на эту проблему.
Давайте рассмотрим простенький калькулятор, поддерживающий 26 переменных (a-z), операции +, -, *, / и скобки, имлементированный при помощи парочки Flex/Bison и с целевым языком С++. Как я уже когда-то писал, для начала необходимо сделать небольшой workaround для того, чтобы состыковать парсер, сгенерированный бизоном, и лексер, сгенерированный флексом. Для этого используется класс наследник от yyFlexLexer.
файл lexer.h
#ifndef _LEXER_DERIVED_CLASS_H_
#define _LEXER_DERIVED_CLASS_H_
#ifndef __FLEX_LEXER_H
#undef yyFlexLexer
#include <FlexLexer.h>
#endif
#include <iostream>
#include <parser.h>
namespace calc{
class Lexer:public yyFlexLexer {
int yylex();
Parser::semantic_type* yylval;
Parser::location_type* yylloc;
public:

any_fun_ptr

Хочу такую вещь
any_fun_ptr pfun = &sin;
double res = pfun(M_PI);
pfun=&printf;
pfun("Result %f",res);
Пошел курить "Шаблоны С++" и Александреску, авось че нить придумается.

Блоговщина!!!

У меня сегодня праздник - блогу исполнился 1 год. Подвести некоторые итоги надо чтоль.
Итак
в номинации "Самая Популярная Статья" места распределились следующим образомstd::string vs. const char* . Comparison - 229 просмотров"Must Read" C++ Books - 149 просмотровFlex & Bison C++ Interoperability Continued - 95 просмотров
в номинации "Самый Популярный Бразуер" победила огненная лиса.

в номинации "Самый Популярная ОС" победила самая популярная ОС.

в номинации "Страна Где-Меня-Больше-Всего-Читают" победила Россия (732 посещения), за ней Украина (588 посещений) и Беларусь (66 посещений)
в номинации "Город Где-Меня-Больше-Всего-Читают" победила Москва (282 посещения), за ней Киев (238 посещений) и Харьков (181 посещение)
мне очень любопытно было узнать, что 15,46% посетителей приходит из закладок (вот уж выразился), 46,16 % по ссылкам с других блогов или сайтов и 38,37% через поисковики. Причем 34 поисковых запроса - это "linux …

Gphone не будет?

В блоге Google опубликовали статью Where's my Gphone? В ней говориться, что не смотря на многочисленные спекуляции по поводу Gphone в последние несколько месяцев, анонса нового телефона от Google не будет (во киберсквоттеры то расстроились небось, - зря домены регистрировали). Однако в то же время анонсируется Open Handset Alliance и открытая платформа Android для мобильных устройств на основе Linux-ядра. 12 ноября этого года обещают сделать доступным для скачивания SDK. Платформа по заверениям обещает быть довольно удобной как для разработчиков так и для конечных пользователей устройств.

Захотел проследить, а не тянется ли эта ниточка еще куда нубудь? Воспользовался все тем же поиском Google и как оказалось 17 августа 2005 года многие новостные сайты опубликовали статьи о покупке Google компании Android Inc (сейчас сайт компании редиректит на Open Handset Alliance). Сама покупка произошла вроде бы в июле, за сумму, которая не разглашается.

Вообще развитие персональных средств …

О чем молчит printf

Недавно, читая книгу Диомидиса Спинеллиса"Анализ программного кода на примере проектов Open Source", узнал что функция printf возвращает результат - количество фактически выведенных символов. Посмотрел в мане и стандарте на язык С - таки да "The printf function returns the number of characters transmitted, or a negative value if an output or encoding error occurred". А я то всегда думал что она void. И практически повсеместно встречал ее использование без проверки возвращаемого значения. К чему это может привести? Это может привести к тому, что в ходе выполнения программы может возникнуть ошибка, которая пройдет незамеченной (в лучшем случае).
Вообще все функции вывода - в частности, при перенаправлении стандартного потока вывода в файл - могут завершиться аварийно по целому ряду причин:
на устройстве, куда перенаправляется вывод, может не хватить свободного местаможет исчерпаться квота пользователя на объем дискового пространствапроцесс может попытаться записать фа…

Бунтарь

Вчера прочел книгу Джеффри С. Янга и Вильяма Л. Саймона "iКона: Стив Джобс".
В аннотации говорится: "Эта книга о самом поразительном человеке в современной истории бизнеса – Стиве Джобсе – великом предпринимателе эпохи высоких технологий, известном своим индивидуализмом, инакомыслием и бунтарским характером. Авторы подробно описали головокружительный взлет молодого человека, очень рано добившегося успеха, и последовавшее за этим стремительное падение, во время которого Стив был изгнан не только из Apple, но и из компьютерной индустрии вообще. Эта книга приобрела скандальную известность еще на этапе ее подготовки к печати. Получив экземпляр рукописи для ознакомления, компания запретила продавать во всех магазинах Apple книги издательства Wiley&Son. Такая реакция не повлияла на желание издательства опубликовать это произведение. Книга будет интересна тем, кто хочет узнать, как происходило формирование, становление и развитие современной эры цифровых …

Вставай страна огромная, великая страна... Блоггеров ;-)

Нет, вы только посмотрите что твориться!!!! Некто НЕИЗВЕСТНЫЙ, зарегал домен tdstir.com, залил на него Wordpress, и тырит контент с программистских блогов через RSS-ленты повидимому. Домен анонимный, хостинг - американский. Я там встретил несколько постов украденых с блога Тру Программиста и Groking Ruby. Предлагаю объединиться и что-то сделать с этим. Например загуглбомбить ;-). Предложения и обсуждения - велкам в комменты к этому посту.

Go Ahead!

Проанализировав результаты профессионального роста с апреля по октябрь решил написать для себя некоторое подобие TODO list, т.е. чего нужно почитать, изучить, освоить и подтянуть, до конца февраля месяца. Почему именно до февраля? Да просто потому, что именно в феврале у меня защита диплома и я распрощаюсь с родной АльмаМатер (наконец-то!!!). Следовательно, неплохо было бы подрасти ;-)
Посему, для достижения данной цели необходимо расставить приоритеты и решить, что же делать.

Итак, чем буду заниматься:
Углублять знания по С++читать книжки (На ум приходит серия C++ In Depth идательства Addison Wesley)вникать в Boost и STLиспользовать в реальном кодеПознакомиться с eXtreeme Programming по книгам Кента Бека и попробовать применить эту технику в разработке, которую я сейчас ведуAgile Development. Узнать что за зверь. Если полезный, то посмотреть на него попристальнее.Рефакторинг. Однозначно нужен. Особенно в моем случае с кучей легаси кода. Посему, учиться, учиться и еще раз учиться, как за…

Ypa-a-a-a-a-a-a-a-a-a!!!!!!!!!!!!!!!!!!!!!

Сегодня у меня двойная, нет даже тройная радость! Спешу ею поделиться.

Во-первых - наконец появились результаты конкурса Programmania 2007 (номер моей анкеты - 126). Не может не радовать, то, что мой профессиональный уровень возрос (205 баллов против 140 ранее). Результат по сравнению с прошлым годом (точнее не с прошлым годом, а с 17 апреля, когда компания Validio проводила у нас в университете анкетирование, которое также включало в себя тестирование ):

РазделранеесейчасClassic C++ (C++/STL)40/10058,3/100Object-Oriented Design34/10050/100Unix Administration-10/100English66/10056,7/100Логические задачи0/10030/100Итого:140 баллов205 баллов
Итого с 17 апреля по 6 октября - рост довольно приличный, на мой взгляд. Особенно учитывая тот факт, что единственное, что я делал в плане самообразования - это лишь читал тематические блоги ;-). Такой себе эксперимент небольшой вышел. Ну и, естественно, я еще и работал, что тоже, думаю, сказалось. Хотя если так посмотреть, то есть еще куда расти и…

Blogroll

Разгребая в Google Reader ленты, на которые подписан, решил поделиться ссылками на блоги, которые читаю каждый день (ну почти).

Блоги о С++

Programmania 2007

6 Октября в Харькове прошел ежегодный конкурс программистов, который в этом году получил собственное имя - Программания. Конкурсу уже 12 лет, впрочем об этом и так можно узнать на сайте.
Итак, как все проходило....

Chaos, Forex & Data Mining System

И будущего, конечно, не знаютъ ни Ангелы Божии, ни демоны;
однако они предсказываютъ
Св. Иоанн Дамаскин, Точное изложение православной веры

Я человек, и ничто человеческое ... как говориться в известном романе (кажись). Поэтому в голову периодически закрадываются коварные мысли (правильные) о том, что пора бы уже заняться тем, что не только интересно, но и прибыльно. Чертовски прибыльно. То интернет-бомжи ум будоражат, то Forex, то еще что нибудь. Так вот по поводу Forex'a...

C & C++ useful resources

IMHO Two The Most Important Free Software Projects of Tooday

Жизнь, время и информация - три, возможно, самые ценные вещи которые есть у человека. Если о вечной жизни, пока пишут лишь только теологи, фантасты и "сумасшедшие" ученые, об управлении временем написано множество книг (ну тайм-менеджмент имеется в виду) и сломано немало копий, то, что делать со все возрастающими объемами информации? или ее защитой от несанкционированного доступа? На сегодняшний день ситуация такова, что человек, без помощи технических средств просто не в состоянии переварить всю, да что там всю, хотя бы часть имеющейся информации, хотя бы из того же Интернета. Популярные поисковики, для этих целей используют кластеры, которые уже в принципе доступны по бюджетным ценам (по ссылке с OpenNet.ru):

GNU autotools made easy with KDevelop

Вспомнилось как-то мне мое первое знакомство с Linux. Было это на 2-м курсе (или 3-м?) университета. Тогда мы работали на бездисковых станциях под DOS, которые грузились по сети (на сервере кафедры работал, да и сейчас работает MARS), а потом по ssh коннектились к серверу и работали с терминала (vt100). Midnight Commander'ом нам пользоваться было запрещено, реадакторы - vi и ed. Признаться меня тогда это не слишком впечатлило. Затем дошли руки и я установил себе в качестве второй ОС - ASP Linux 10, потом была 11-ка и 11.2, Fedora 4 и 6, Slackware 11 и в конце концов недавно таки дома переехал на Debian Etch. Больше всего понравились мне слака (чистотой) и дебиан (правильностью и наличием богатого набора софта). Ну и так как я все-таки считал себя программистом - то встал вопрос о наличии интегрированной среды разработки под линукс, так как я, будучи заядлым виндузятником, не представлял себе что можно програмить без нее. Тут мой взор привлекла среда KDevelop. С ней мне удалось раз…

2Rest|~2Rest?

Решил тут на днях поковырять динамические языки (до этого я с ними дела не имел) и начал с Ruby, так как многие хвалят его и в особенности фреймворк Ruby on Rails. О-о-очень не привычно (это после 5 лет безвылазного сидения под статически типизированными языками). Трудно перестроится на то что данные имеют тип а переменные нет. Часто встречаются слова о философии языка программирования. Так вот, философию руби у меня грокнуть пока не получилось, да и динамическая типизация поражает воображение. Ах да, а зачем все это мне? Последнее время ощущаю, что теряется гибкость мышления,- уже выработался определенный стиль, прыжки на месте удаются, а шаг в сторону иногда вызывает затруднения, что есть не хорошо. Вот и решил, что это может помочь в данной ситуации. А может просто пора отдохнуть? Съездить там куда нить? Хочу Новый год в Карпатах встретить,- покататься на лыжах (а может и на сноуборде научиться), посидеть у пылающего камина в отельчике, оформленном в этническом стиле (и обязательно…

Happy Programmers Day!!!

Всех программеров с 0x100 днем года! Так випьем же за то, чтобы софт не падал, баги не размножались, машины делали бы то что им говорят, в не зависимости от того, хотят они этого или нет и чтоб каждый узнал, что секс с двумя женщинами <мужчинами> (нужное подчеркнуть) существует не только в немецком порно но и в наших спальнях ;-)
Ура, товарищи!!! Всех С Днем Программиста!!!

Волшебство на кончиках пальцев...

Интересно так складывается жизнь иногда. Я всю жизнь (ну а если точнее лет эдак до 16) мечтал стать археологом, да и сейчас иногда подрывает все бросить и умчаться куда нить в Среднюю Азию или Южную Америку на какие нибудь раскопки, книжки интересные читал по данной тематике. Знает например кто-нибудь, что древнеиндские письмена с печатей в Мохенджо - Даро (город мертвых кажись в переводе) до сих пор никто так и не расшифровал? а население Канарских Островов на каком языке говорило, пока его конкистадоры не перебили? он ведь не был родственным (насколько я знаю) ни одному языку в мире. а что письмена иберов, к примеру, в 80-х годах расшифровывали используя древнегрузинские тексты?

А после школы я поступил в Харьковский Авиационный Институт (ныне Национальный аэрокосмический университет им. Н.Е. Жуковского) - там летать не учат, а учат строить самолеты, вертолеты, ракеты, в общем все, что летает и каким либо образом с этим связано. Специальность моя называется "Компьютерные технол…

Какой айпишник у двери?

Однажды у нас в конторе произошел следующий забавный случай:
Заходит к нам в отдел сотрудник и спрашивает: "Какой айпишник у двери?". Все в отделе сидят уткнувшись в монитор, с которого на них смотрит родной Linux (ну или Windows у кого-то), и кто-то не поднимая головы отвечает: "76-й!". Сотрудник уходит. И тут все дружно подымают головы и всех пробивает на ха-ха. IP адрес у двери? и самое главное, что на такой вопрос был получен ответ! Объясняется все просто: один из проектов, который мы сейчас разрабатываем, - это система доступа в помещение по отпечаткам пальцев, которая работает под управлением Linux и включена в сеть.

Еще как то разговорились и пришли к выводу, что булевы переменные в PL/SQL обладают женской логикой (они ведь имеют три состояния) - "да", "нет", "наверное".

Quine

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

std::string vs. const char* . Comparison

Захотелось мне как-то узнать какие строки сравниваются быстрее - С-строки или STL. Да и Страуструп помнится в своей книге писал, что STL строки скорее всего реализованы эффективнее. Решил провести небольшой бенчмарк. Один тестовый случай заключался в 1000 сравнении 2х строк. Продолжительность каждого тестового случая измерялась. Тест состоял из набора в 1000000 тестовых случаев. После проведения теста время сравнения усреднялось. Результаты оказались довольно занятными.

Начинаю учить японский

Наткнулся на тест согласно которому мне рекомендуют:

You Should Learn Japanese
You're cutting edge, and you are ready to delve into wacky Japanese culture.
From Engrish to eating contests, you're born to be a crazy gaijin. Saiko!

gaijin - чужак (пересмотрел недавно Токийский Дрифт). Может и взаправду начать изучать его? говорят он полегче английского ;-)

Внешне указатели, сокеты внутри

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

Font Rasterization

Появилась довольно интересная статья по растеризации текста. Автор хоть и не является экспертом в данной области, но определенно “have something to say”. Как-то до прочтения статьи мне не приходилось задумываться над подобными вещами. Неужели все настолько плохо? Кто что думает?

Motolinux

Motorola начала продажи (пока только на территории США) мобильного телефона RAZR2 V8, работающего под управлением мобильной Linux платформы MotoMAGX. На страничке MotoMAGX в частности можно прочитать следующие слова:

With more than 9 million Linux®-based handsets shipped worldwide, Motorola is a leader in mobile Linux innovation — and this is just the beginning. In the next few years, up to 60 percent of Motorola's handset portfolio is expected to be based on Linux. MOTOMAGX, Motorola's recently announced mobile Linux platform, is the next significant step in demonstrating our commitment to mobile Linux. It will play a key role in supporting Motorola's strategy

Такие заявления звучат более чем обнадеживающе ;-). Если мир и не услышит о Linux на десктопах, то похоже о Linux в мобильных устройствах ему придется услышать в самом ближайшем будущем. А когда наконец-то настанет эра ubiquitous computing о Linux будут знать все. Знать будут по крайней мере, что он есть ;-). Интересн…

Computer programming career

Нашел пару интересных статей
Why a career in computer programming sucksThe death of the generalist software developerНедоумение вызвала фраза:
And I stand by my belief that people born in this country have more rights to the money being created here than foreigners.

Расизмом это все попахивает ИМХО.

Покажи мне свой Desktop и я скажу кто ты

Мой десктоп на работе выглядит вот так:


Ничего лишнего и все нужное под рукой :-). А панелька со средствами разработки справа - скывается автоматически.

Просто undefined behaviour

Вот такой простой код приводит к undefined behaviour.

#include <iostream> #include <cstdlib> using namespace std; int main(int argc, char *argv[]) { char*str="Hello, world"; cout <<str<<endl; str[6]='!'; cout <<str<<endl; return EXIT_SUCCESS; }
А все потому ,что строковый литерал есть "массив с надлежащим количеством константных символов", и, следовательно, присваивание константе незаконно. И поймать это можно только в рантайме. В моем тестовом случае это привело к segmentation fault.

Русских победить невозможнно!

Однажды произошла следующая история. В Сибири велась разработка земли и для этой цели понадобился какой-то специальный трактор. Трактор был приобретен через представителей в Москве у немецкой фирмы, доставлен в пункт назначения и представители благополучно разъехались по домам. И тут в Москве раздается звонок: "Ваш трактор не заводится". Представители срочно выезжают в Сибирь, смотрят, да, действительно, трактор не работает. Звонят в Германию производителю. Немецкие разработчики срочно выезжают в Сибирь, смотрят, а из салона трактора пропала магнитола. Как оказалось, местный прораб залез в кабину трактора, а там магнитола, кондиционер и куча другой электроники. Он не долго думая выдирает эту магнитолу из гнезда и запихивает в свою Волгу. Ну немцы и говорят - верните магнитолу на место, без нее электроника не работать не будет, трактор не заведется. Магнитолу вернули, трактор завелся, все довольные и счастливые уехали, немцы улетели к себе на родину. Не успели немцы долететь,…

Живность в коде. Часть 2. Метод муравьиных колоний

Энтомологи установили, что муравьи способны быстро находить кратчайший путь от муравейника к источнику пищи. Более того, они могут адаптироваться к изменяющимся условиям , находя новый кратчайший путь. Муравьи движутся по прямой, соединяющей муравейник с местом, в котором находится пища. При движении муравей метит свой путь специальными веществами - феромонами, и эта информация используется другими муравьями для выбора пути. А именно, муравьи предпочитают тропки наиболее обогащенные феромонами. Это элементарное правило поведения муравьев и определяет их способность находить новые пути, если старый оказывается перерезанным преградой. Действительно, достигнув этой преграды, муравьи уже не смогут продолжить свой путь и с равной вероятностью будут обходить ее справа и слева. То же самое будет происходить и на обратной стороне преграды. Однако, те муравьи, которые случайно выберут кратчайший путь, будут быстрее проходить свой путь и он с большей скоростью станет обогащаться феромонами. По…

Процесс разработки как он есть

Нашел картинку, которую когда то давным -давно встретил в одной из книг. Все это конечно весело если бы не было так жизненно ;-).

Живность в коде. Часть 1. Генетические алгоритмы

Когда-то мне пришлось заниматься задачами оптимизации (обучение нейронных сетей в моем случае) и очень хорошо в этом плане себя проявили генетические алгоритмы, которые относятся к категории эволюционных или биологических. К этой категории относится также ряд других алгоритмов - например метод муравьиных колоний (о нем попытаюсь подробнее рассказать в следующей статье).
Генетический алгоритм— это алгоритм, который позволяет найти удовлетворительное решение к аналитически неразрешимым проблемам через последовательный подбор и комбинирование искомых параметров с использованием механизмов, напоминающих биологическую эволюцию. Является разновидностью эволюционных вычислений. Отличительной особенностью генетического алгоритма является акцент на использование оператора «кроссовера», который производит операцию, роль которой аналогична роли скрещивания в живой природе.
Задача кодируется таким образом, чтобы ее решение могло быть представлено в виде вектора - хромосомы. Хромосома зачастую назыв…

IT Doesn't Matter

Статья Николаса Дж. Карра "IT Doesn't Matter", опубликованная в майском выпуске Harvard Business Review 2003 года вызвала бурную волну откликов и обсуждений (некоторые можно почитать на сайте автора, еще есть реакция Steve Ballmer и Carly Fiorina - HP CEO), что сподвигло его на написание книги "Does IT Matter? Information Tehnology and the Corrosion of Competitive Advantage" (в русском переводе Николас Дж. Карр "Блеск и нищета информационных технологий").

Если честно признаться, то эта книга для меня стала чем-то вроде снега на голову, она заставила задуматься о вещах, о которых мне ранее не приходилось задумываться - действительно ли стратегический успех компании зависит от инвестиций ИТ? если нет, то почему они (инвестиции) занимают столь ощутимое место в бюджете?

Основная идея - по мере превращения ИТ в инфраструктуру, ее стратегическая роль в успехе компании уменьшается, поскольку ИТ становятся доступнее, а следовательно могут быть легче скопиров…

Books on Algorithms

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

Jorg Arndt "Algorithms for Programmers. Ideas and source code" - еще не вышедшая книга на английском, выход запланирован на 2008 год, драфт пока что есть в свободном доступе



Однако надо признаться, что ни одну из этих книг я не прочел, а пользовался ими как справочниками, когда возникала такая необходимость ;-)

Манифест Хакера

Оригинальный текст был опубликован в 7-ом номере электронного журнала Phrack. Перевод на русский можно почитать здесь. Да. к чему это я все? Свобода информации, как говорится.
Upd: Манифест Хакера в формате mp3 можно скачать здесь.

Алгоритм управления памятью TLSF

Опубликован перевод описания алгоритма управления памятью TLSF с эффективностью O(1). Кроме того, существует сайт, посвященный explicit dynamic storage allocation, на котором помимо TLSF представлен еще ряд аллокаторов для real-time систем. Надо будет предложить попробовать различные аллокаторы, указанные на этом сайте, в следующем проекте, а заодно можно будет и оценить их эффективность на реальном железе. Если дело выгорит, то с меня отчет ;-)

The Battle with RegExpr

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

Анатомия ядра Linux

Вышел переводстатьи Тима Джонса об истории и архитектурной организации ядра Linux, которую можно рассматривать как введение в эту самую архитектуру. В целом и общем статья производит довольно благоприятные впечатления. Рекомендую к прочтению всем, кому это хоть немного интересно.

Flex & Bison C++ Interoperability Continued

Итак, возвращаясь к когда-то написанному мной введению об interoperability лексических анализаторов на С++, сгенерированных при помощи Flex, и синтаксических анализаторов, сгенерированных при помощи Bison, в этой статье хочу разобрать простенький примерчик в котором лексический анализатор (далее лексер) распознает строки комментариев командного интерпретатора bash и пустые строки и пропускает их, а все остальные возвращает синтаксическому анализатору (далее парсеру) для последующего вывода в командную строку. Сначала я приведу код, а затем уж постараюсь объяснить по возможности что какая строчка значит, ну и соответственно команды которые необходимы чтобы это все собрать в кучу.

Файл intertest.cpp
#include <fstream> #include "lexer.h" #include "parser.h" using namespace std; using namespace test; int main(int argc, char *argv[]) { ifstream infile(argv[1]); Lexer lexer(&infile); Parser parser(lexer); return parser.parse(); }
Тут я думаю о…

Linux Kernel Vitualization

Грядущий релиз ядра Linux 2.6.23 готовит новые вкусности - согласно KernelTrap, средства виртуализации Xen и lguest включены в основное ядро. Перед этим та же участь постигла KVM, предоставляющий возможность запускать несколько виртуальных машин, каждая со своей ОС

Moblin

Сотрудничество Intel с Canonical Ltd и Red Flag Linux вылилось в проект Mobile & Internet Linux Project, являющийся проектом по созданию программной начинки с открытым исходным кодом для Intel Mobile Internet Devices на базе Linux. На страничке проектов уже представлен предварительный ряд решений. Что же, позиции Linux в качестве mobile & embeded platform все упрочняются по мере adoption by leading manufacurers.

Инициализация структур

В стандарте С99 (6.7.8) есть интересная вещь - так называемые designators (обозначения?). Их использование позволяет инициализировать элементы структур при помощи списка инициализации не обращая внимания на порядок следования элементов. Например

struct StTest {
int i;
char c;
double d;
};

int main(int argc, char *argv[])
{
struct StTest st1={.d=0.1, .i=1, .c='a'},
st2={.c='b',.d=0.2,.i=2};
printf("st1.i= %d st1.c= %c st1.d= %f\n",st1.i,st1.c,st1.d);
printf("st2.i= %d st2.c= %c st2.d= %f\n",st2.i,st2.c,st2.d);
return EXIT_SUCCESS;
}

А вот собственно и результат работы такой програмки

commander@a64:$ ./teststructinit
st1.i= 1 st1.c= a st1.d= 0.100000
st2.i= 2 st2.c= b st2.d= 0.200000

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

C vs. C++

На днях задался философским вопросом: если С++ лучше С, то почему ядра многих операционных систем (BSD, Linux, Windows?) написаны на С? На мой взгляд С++ довольно сложный и многообразный язык, и богатство его возможностей в данном случае только мешает, а не помогает, поскольку перед разработчиком встает проблема выбора. В то же время, чтобы выучить С достаточно книги Кернигана и Ричи, простой, лаконичный, и разработчик вместо того чтобы решать проблему выбора, занимается решением поставленной задачи. С позволяет сконцентрироваться на решении прикладной задачи, а не углубляться в архитектуру. Это все конечно же ИМХО и на истину в конечной инстанции не претендую, вполне возможно что ядра пишут на С по историческим причинам, и чтоб не сломать уже созданную кодовую базу.

Amaya - web browser from W3C

W3C видимо надоело бороться с наличием множества глюков в различных веб браузерах, посему было создано чудо, и имя ему нарекли Amaya. Что характерно - acid2 test он валит. Версия 9.55 от 10 июля 2007 года. Впечатления, мягко скажем, отрицательные. При этом натравив W3C QA Markup Validation Service на страницу acid 2 test можно убедится что код валидный. Посему возникает вопрос - зачем?

Ride The Tide

На мой взгляд сейчас в созревшем состоянии находят два очередных бума в сфере IT - это web services и mobile devices (в широком понимании этого слова). Скорее всего два этих явления будут дополнять друг друга. Самое время задаться вопросом "What to do to Ride the Tide?", как это в свое время сделали в SUN, когда решили что нужно что-то делать и сделали Java. И в заключение несколько ссылок:
Silicon Valley's next boom
ID theft: The next IT industry boom?
2001: A Perfect Time To Learn New Technology And Catch The Next Boom

Linux Mobile

Речь опять пойдет про ubiquitous computing. Linux все более активно позиционируется как платформа для мобильных устройств. Вот, например, какой девайс соорудили в рамках проекта OpenMoko:



Довольно подробный обзор можно почитать на LinuxDevices.com. Кроме того данное событие довольно активно освещается различными ресурсами, ссылки на которые можно найти на сайте OpenMoko. Ну скажите, чем это не альтернатива Apple iPhone? Девайс можно купить онлайн. Существует он в двух редакциях Neo Base и Neo Advanced. Advanced от Base отличается наличием дополнительных аксессуаров for mobile device hacker.

Google Translate

Ура! Наконец-то нашел то, чего так долго нехватало. Google сделал онлайн переводчик, который умеет переводить со многих языков. Причем можно переводить не только текст, но и веб страницы. Вот например перевод этого поста. Хотя, надо заметить, что перевод с русского на английский находится пока еще в стадии BETA.


Опыт Ubuntu не прошел даром...

Если посмотреть попристальнее на самую солнечную компанию (хотя SUN - это StanfordUniversityNetwork), то можно наблюдать интересное явление - почти все свои флагманские продукты они рассылают бесплатно на дисках, ну разве что кроме Java. Это и NetBeans и OpenSolaris и Solaris. Что бы это значило? На мой взгляд, видимо опыт Ubuntu, который стал самым популярным дистрибутивом в мире, не прошел даром. Ubuntu тоже присылают совершенно freeofcharge, что и является одной из составляющих его успеха. Хотя можно опять начинать спорить кто и что у кого спер. Следовательно кто-то в Sun решил что подобная стратегия "приучивания" оправдана. Кроме того, отдельно стоит сказать про открытость (или свободу, как кому угодно). Java вон и ту открыли. Есть мнение что открытый исходный код это вовсе не так и страшно при разработке коммерческих приложений, если такая модель является частью бизнес процесса компании. Остается, правда, опасения повторения истории с Oracle и RedHat - когда первая сов…

Ubuntu становится mobile ;-)

С момента своего запуска в 2004 году дистрибутив Ubuntu Linux стремительно набирал обороты и на сегодняшний день является простой в обращении и свободно распространяемой современной операционной системой и самым популярным дистрибутивом Linux по сведениям Distrowatch. Ubuntu базируется на нестабильной ветке Debian и имеет шестимесячный цикл выпуска, диски с дистрибутивом присылают совершенно бесплатно, что способствовало его широкому распространению. Но об этом всем и так можно почитать на Distrowatch .

Вопросы на интервью

Вот нашел статью о вопросах задаваемых на собеседовании в сами знаете какой компании .
Интересно какая бы была реакция интервьюера если бы на вопрос "Как бы вы определили вес самолета Боинг?" бил получен ответ "Поищу в Google" :-).

Linux Development Platform

Читаю книжку, "Linux Development Platform" называется, авторы Rafeeq Ur Rehman и Christopher Paul. В очень доступной и доходчивой форме описаны компоненты среды разработчика Linux - аппаратная платформа, операционная система, редакторы исходного кода, компиляторы и ассемблеры, отладчики, системы контроля версий, системы сборки, утилиты (nm, sed, binutils, etc.), developer collaboration. Вкратце рассмотрен Life Cycle of a Software Development Project с достаточно доходчивым описанием всех стадий, приведены критерии выбора того или иного средства. Отдельные разделы посвящены Cross-Platform and Embeded Systems Development (host, target machines, native and cross compilers, cross compilation, remote debugging) и Platform Independent Development with Java.
В чем достоинство данной книги, на мой взгляд, так это то, что она дает целостную картину, видение мира,- то чего нет в мануалах отдельно взятых средств разработки.
Очень советую почитать всем, кто занимается разработкой решени…

Хохма!?

Взято отсюда: Интервью Дона Сайма - создателя F# - языка функционального программирования для .NET
Если сравнить F# с полностью объектно-ориентированными языками (как Java, SmallTalk и C#), полностью процедурными языками (как Algol, Fortran и C) или чем-то средним (как C++), к чему он ближе?
Да-а-а. Слышал, что SmallTalk называют полностью объектно-ориентированным языком, но чтоб Java и C#? Почему тогда интересно C++ чем то средним между процедурным и ОО языком назвали? Потому что в нем можно использовать и тот и тот стиль программирования? Ну а обобщенное программирование как тогда? Вообще то С++ - мультипарадигменный язык программирования...

new & malloc

По поводу распределения памяти при помощи new и malloc откопал
Codeproject: To new is C++; To malloc is C...
Да, жаль заменить управление памятью на сппшные наверное не получится :(. Там realloc сильно используется, а альтернатив ему в С++ говорят нету. Врут наверное :). Надо глянуть как эта штучка в векторах STL реализована - при помощи аллокаторов кажись ...

FSF инициирует акцию против Vista :)

FSF открыла блог BadVista.org . Название говорит само за себя :). Цель инициативы - предупредить потенциальных и существующих пользователей о "вреде"? который наносит Windows Vista и проинформировать их о соответствующих альтернативах из мира OpenSource. Одно несомненно - Microsoft, пожалуй, начинает крупнейшую из когда либо имевших место кампанию по запуску продукта на рынок. Хотя, некотрые из "наших" ( vtolkov и bobronotes ), работающих в Редмонде и на Vista высказывают довольно противоречивые отзывы, из чего можно сделать вывод, что в конце концов код доведут до "нормально" рабочего состояния и продукт найдет своего покупателя. Особенно если в этом свете вспомнить историю с Xbox и PS и высказывания какого-то умного человека о том что продукт не обязательно должен быть лучшим, чтобы занимать лидирующие позиции на рынке. Лично для себя я решил, что перейду на Vista с XP только если будет существенное повышение productivity при работе с ней. А пока что …