Skip to main content

Posts

Showing posts from November, 2007

Зачем мне нужен 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. Такая реакция не повлияла на желание издательства опубликовать это произведение. Книга будет интересна тем, кто хочет узнать, как происходило формирование, становление и развитие современной эры цифровых …