Архив

Архив раздела ‘разработка’

typename

впервые столкнулся с ключевым словом typename
прочитать что это и зачем можно здесь:
http://alenacpp.blogspot.com/2006/08/typename.html

а я столкнулся при портировании проекта из MS VC++ 2008 под Linux g++ 4.4.5

пример:
template
void function(T1& src, unsigned int n)
{
...
std::map ::iterator I;
...
}

VC++ всем доволен, а вот g++ на эту строчку ругнулся
error: expected ‘;’ before ‘I’

получается компилятор не может понять что от него хотят, т.о. для исправления ошибки необходимо в начале строчки прописать typename:
typename std::map ::iterator I;
и всё в шоколаде :)

аналогично решается ошибка в строке:
for(T1::iterator I = src.begin(); I != src.end(); ++I) {
добавляем
for(typename T1::iterator I = src.begin(); I != src.end(); ++I) {

такие дела.

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

Categories: разработка Tags: , ,

уроки по OpenCV — шаг за шагом

4 Октябрь 2010 Нет комментариев


1. OpenCV шаг за шагом. Введение.
2. Установка.
и т.д.

Кнопка для трансляции в Twitter, Facebook, vkontakte

function sendToTwitter (obj, sText, sTag){
var sTwit = sText.replace(/(\s)+/g, '+');
var hashTag = '+%23'+sTag;
location.href = 'http://twitter.com/home/?status='+sTwit+hashTag;
return false;
}

function sendToFacebook (obj, sUrl){
location.href = 'http://www.facebook.com/sharer.php?u='+sUrl;
return false;
}

function sendToVkontakte (obj, sUrl){
location.href = 'http://vkontakte.ru/share.php?url='+sUrl;
return false;
}

и, соответственно, html-код:

<a title=»Добавить в Twitter» href=»http://twitter.com/home?status=RT @idea2ru Книга: http://idea2.ru/blog/clever_mind/708.html» target=»_blank» rel=»nofollow»></a>

<a title=»Добавить в Facebook»  href=»http://www.facebook.com/sharer.php?u=http://idea2.ru/blog/clever_mind/708.html» target=»blank» rel=»nofollow»></a>

<a title=»Добавить в ВКонтакте»  href=»http://vkontakte.ru/share.php?url=http://idea2.ru/blog/clever_mind/708.html» target=»blank» rel=»nofollow»></a>

Кнопка для трансляции в Buzz

function sendToBuzz(obj, sText, sUrl){
location.href = 'http://www.google.com/reader/link?url='+sUrl+'&title='+sText+'&srcURL='+DIR_WEB_ROOT;
return false;
}

или html-код

<a title=»в Buzz» rel=»nofollow» href=»http://www.google.com/reader/link?url=http://idea2.ru/blog/clever_mind/708.html&amp;title=Книга&amp;srcURL=http://idea2.ru» target=»_blank» onfocus=»blur();»><img src=»buzz_it.png» alt=»» /></a>

GDirections без маркеров

//Don't supply a map to GDirections()
var direction = new GDirections(); 

//Make sure {getPolyline:true} is given to the load function
direction.load("here to there", {getPolyline:true});

GEvent.addListener(direction, 
                   "load", 
                   function(){ map.addOverlay(direction.getPolyline()); }
);

var_dump на javascript

function var_dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') {
dumped_text += level_padding + "'" + item + "' ...\n";
dumped_text += var_dump(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}

Геолокация на JavaScript

Используя javascript geolocation framework можно (после подтверждения со стороны пользователя) приблизительно определить положение пользователя. (IE эту возможность не поддерживает)
читать подробности

SQL разница между датами

везде предлагается использовать функцию DATEDIFF()
но когда мне потребовалось высчитать разницу между датами в днях — у меня это почему-то не вышло :(
пришлось изобрести велосипед (аж две штуки):
1. (UNIX_TIMESTAMP(`date2`)-UNIX_TIMESTAMP(`date1`))/86400)
2. (TO_DAYS(`date2`) - TO_DAYS(`date1`))

например, узнать сколько прошло дней от даты `date1`:
(TO_DAYS(NOW()) - TO_DAYS(`date1`))

вот собственно и всё :)

LiveStreet и Arduino/CraftDuino

23 Январь 2010 Нет комментариев


Здесь я уже писал, как ардуина может читать RSS-ленту. Используя тот же принцип можно сделать следующий шаг и научить ардуину вести свой блог 😉
Читать далее…

Идеальный Интерфейс — Круг друзей :)

17 Январь 2010 Нет комментариев


Нам всем не хватает идеальности и я решил восполнить это факт маленьким модулем :)

Пока он делает только одно — отображает круг друзей в профиле пользователя.
Надеюсь это только начало! :) Читать далее…