суббота, 14 января 2012 г.

RockScroll плагин для Visual Studio

Супермегаклассный плагин для Visual Studio - подсветка токенов в стиле Notepad++. Очень удобен, когда имеется исходник на несколько экранов - два клика на имени функции/переменной и сразу видно где еще по коду она используется + удобная навигация по коду с помощью вьюшки, которая справа в окне редактора. Скачать можно здесь, инсталлируется в один клик.

Единственное замечание - цвет подсветки можно было сделать и насыщеннее( например, зеленым как Notepad++ ), я специально демонстрирую с желтым фоном редактора потому, что на белом фоне с низкой яркостью монитора ничего не видно. Может, цвет можно настраивать самому, но я ничего подобного не нашел.



пятница, 11 ноября 2011 г.

На права без взяток 2 - Свершилось!

    Ура! Урааааа!!!!! Свершилось! 9 ноября я сдал экзамен в ГАИ, и что самое для меня приятное - ни копейки не заплатив мимо кассы. Нет, я отнюдь не жлоб, но я не люблю когда мне навязывают свои условия и терпеть не могу, когда мне говорят "Все так делают - и ты делай...". А теперь немного подробнее:
 
   Еще до того как записаться на курсы, я решил, что по крайней мере попробую сдать экзамен в ГАИ самостоятельно. Не то, чтобы я принципиальный борец против взяток и коррупции, скорее имелся чисто спортивный интерес - а смогу ли я? С самого начала занятий в автошколе я засел за решение билетов, тратил в день минут по 20-30 на их решение, не так уж много, согласитесь? Всего имеется 93 билета по 20 вопросов(Харьковские билеты). В итоге, за 2 месяца тренировок я уже на 90% вопросов отвечал верно и был уверен в своих силах, при условии, что меня не будут валить. Мне стопиццот раз рассказывали, что в ГАИ для проведения экзамена имеется специальная программулина и она заточена таким образом, что "нужные" люди сдадут экзамен неважно правильно они отвечают на вопросы или нет. Естественно было бы предположить, что она может работать и в обратном направлении. Немного забегая наперёд, поделюсь наблюдением - в программулине есть внизу строка состояния, она показывает на сколько вопросов ты уже ответил, сколько неправильных ответов, сколько времени осталось до конца, и особенно мне бросилось в глаза поле "Режим" и его значение "Обычный" :-)
 
   С вождением все было немного сложнее - всё мое вождение ограничилось 10-тью занятиями по регламентированно 2, а реально по 1,5 часа из которых я к тому же одно пропустил. Первое занятие было как и первый блин - тык-мык, то глохнет, то прыгает, то не едет. Дальше все пошло веселее, за рулём я начал себя чувствовать увереннее, начал успевать следить одновременно за управлением авто, знаками, светофорами и дорожным движением. Пару слов об учебном авто - Dacia Nova GTI, ядовито желтая, без усилителя руля(о чем я, кстати, ни разу не пожалел на сдаче вождения в ГАИ), с непонятно как отрегулированными педалями - короче, не сразу мы с ней сошлись. Инструктор неплохой мужик опытный, не давал мне партачить за рулём, хоть и трепались мы с ним всю дорогу постоянно, но работу свою делал четко, следил за мной как Око Саурона. Я ему сразу заявил, что сдавать буду сам, на что он ответил "Ну, если билеты выучишь, вполне можешь и сдать. На вождении тебя валить никто не будет". На площадке в ГАИ мы были всего 3 раза. Упражнения на экзамене, если кто не знает, такие:
  • заезд задом в "гараж"
  • разворот в ограниченном пространстве
  • эстакада - трогание на подъем с ручника
Всего лишь 3 упражнения. В принципе, как мне кажется, у меня все получалось довольно неплохо - я никогда не спрашивал у инструктора нормально у меня получается или нет, а он всегда молча мне ставил в табель "4-". Только на последнем занятии он сказал, что есть в группе девчёнки до которых мне еще расти и расти, хотя и опыта вождения у них до автошколы не было.
 
   Внутренний экзамен в автошколе по теории я сдал всего лишь с одной ошибкой, хотя его все "сдали". Экзамен в ГАИ для всей группы был назначен на 8 ноября. 8 ноября у меня прийти не получалось так как предстояла командировка в Киев. В итоге, с преподавателем договорились, что приду 9-го числа после обеда и буду сдавать один. 9-го числа я отпросился с работы "Иду сдавать экзамен в ГАИ. - Платил? - Нет, сам хочу попробовать. - Значит не сдашь. Доказано миллион раз" и снова мне начали рассказывать страшилки о злобных гаишниках, отчаянных дураках, которые пытались сдавать сами да потом все равно несли деньги, поджатых педальках тормоза на эстакаде и тд.  Короче настрой был не самый лучший. В полтретьего я был в ГАИ, зашел в экзаменационный класс, меня посадили за компьютер, кроме меня никого не было, я с дрожью в теле и замиранием сердца начал отвечать на вопросы в "Обычном" режиме :-). Как ни странно на первые 2 вопроса я ответил правильно, на последующие 5 или 7 тоже. потом ошибка, потом правильно, еще правильно, снова верно, "лять, ошибка!"..."Андрей, молодец, сдал" - это сказал гаишник, который сидит на пульте и контролирует процесс сдачи. 18 из 20! Как заказывали! "Только машины дежурной уже нет, можешь завтра прийти с утра сдавать вождение."  Ненене! Я начал вызванивать инструктора, чтобы он приехал и я сдавал на его машине(так можно!!!), инструктор был занят, потом увидел машину нашей автошколы во дворе, позвонил преподавателю, он сказал, это машина директора автошколы, что можно найти его и попросится сдать на его машине. Я его нашел, но он не разрешил. В итоге, мы с гаишником пошли на площадку, выдернули там машину другой автошколы - Chevy Aveo с усилителем руля, плавным ходом педалей, а оказалось, что это таааак непривычно и неудобно! ведь я то привык к своей учебной машинке, где руль поворачивать нужно тремя руками, а чтобы обороты ловить нужно иметь особое строение ушной раковины. Вообщем, как-то поехали, как-то заехали задним ходом в гараж, как-то взобрались на эстакаду, как-то вернулись на исходную, потом пошли обратно в ГАИ и написали мне в документах, что я сдал экзамен :-) Только вот права сразу не дали - нет бланков. Но это уже нестрашно, пару недель я потерплю.

вторник, 18 октября 2011 г.

На права без взяток? да ну как же!

Сижу учу ПДД. Экзамен в ноябре. Буду пробовать сдаться своими силами - договорился о нескольких дополнительных индивах по вождению, конкретно налегаю на билеты... Млин! КАК? сдавать экзамен, если даже в онлайн-билетах содержатся подвохи?!


В данной ситуации водителю грузовика опережение запрещено, так как в населенном пункте максимальная скорость движения 60 км/ч.  НО "правильный" ответ - опережение "Разрешено" потому, что знак 3.26 "Конец запрещения обгона" превратился в 3.30 "Конец ограничения максимальной скорости" 50 км/ч, а мы оказались вне населенного пункта почему-то. Пардоньте! Во-первых, где знак "Конец населенного пункта"? Во-вторых, где там взялся знак 3.30, за деревом спрятался, как обычно?

Ну я, конечно, слышал слухи, что при сдаче теории в ГАИ неправильные ответы имеют место быть "по умолчанию", но, чтобы так откровенно... Напомню, билеты на этом сайте - это реальные билеты(Киевское издание) для сдачи экзамена в ГАИ.

UPDATE: Йода Магистр в билете несомненно этом условие составлял.


пятница, 2 сентября 2011 г.

Здравствуйте, я ваш кастомер!

История одного фэйла :)

Сегодня к нам приехал из Штатов кастомер. Сам он индус,  живет там уже почти 30 лет. Прикольный дядька,компанейский такой. Ну, короче, познакомились, "хау ду ю ду?", "глэд ту си ю!", то да сё, и кто-то предложил вечером сходить двинуть пивка в ближайший кабак. Да гавно вопрос!... Сидим в кабаке пьем. А Рао(кастомер) последние полтора суток питался только ништяками, которые в самолетах дают, стало быть голодный как волк, но молчит из вежливости. "Давай", - говорим, - "покушать себе закажи, пока сознание не потерял". А он: "Да я, мол, не в курсе чего у вас тут съедобное, закажите мне чего-нибудь на ваш выбор". Ну и я, от всей души желая спасти Рао от голодной смерти, выискал в меню самый увесистый стэйк из телятины и картошку-фри и попросил официантку все это как можно быстрее приготовить и подать. Когда блюдо принесли, Рао бросил на нас озадаченный взгляд и сконфужено спросил "Is it beef?"("Это телятина?"). Ну мы в ответ - "Йес, мол, да - самая лучшая телятина, вкусно, ням-ням!".

FAIL: Только через полчаса меня осенило! Корова у индусов - священное животное, её не то что есть, пальцем трогать грешно! И было мне и стыдно, и смешно одновременно. Вот такая фигня сегодня случилась.


А стэйк Рао все-таки съел. :) Голод даже индусу не тётка.

среда, 6 июля 2011 г.

Идиллия

Настоящая идиллия глазами программера:
Приходишь с работы часиков в 9 вечера, дома бардак, комп занят, за компом любимая девушка шпилит в "Как достать соседа". Зашел, рыкнул - ррраз! кушать подано, комп свободен, кот забился в кладовку. Лепота!


пятница, 1 июля 2011 г.

Константная ссылка на временный объект

Век живи - век учись!

Только намедни узнал о том, что привязка временного объекта к константной ссылке продлевает жизнь временного объекта до тех пор, пока живет сама ссылка. Это декларирует Стандарт(р12.2.5).

Например, в результате работы следующего кода, на экран будет выведено "temporary string". Удивительно, не правда ли!

string foo()
{
    return string("temporary string");
}

int _tmain(int argc, _TCHAR* argv[])
{
    const string& str = foo();
    cout << str.c_str(); // outputs "temporary string"

    return 0;
}

суббота, 25 июня 2011 г.

Интересные задачки для собеседований по C++

Помимо выслушивания зазубренных ответов на стандартные вопросы типа

"Что такое полиморфизм?",
"Что представляет собой STL?",
"Какое отличие между std::auto_ptr и boost::shared_ptr?",

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

Вот чтобы выявлять таких вот нерадивых кандидатов, я решил помимо  списка вопросов составить список задачек, которые буду предлагать на собеседованиях. Приглашаю всех поучаствовать в составлении.
  • Заменить в битовом представлении числа самый правый ноль на единицу.
int ReplaceLastZeroWithOne( int i )
{
    return i | ( i + 1);
}

  • Вывести число как последовательность битов в прямом и обратном порядке.
// Решение в лоб
void OutputBitsReverse( int i )
{
    while( i )
    {
        if( i < 2 )
        {
            cout << i;
        }
        else
        {
            short bit = i % 2;
            cout << bit;
        }

        i /= 2;
    }
}
 
void OutputBitsReverse(unsigned val)
{
    unsigned reverseMask = 1;
    printf("%u = ", val);

    for( unsigned i = 1; i <= 32; i++)
    {
        putchar(val & reverseMask ? '1' : '0');
        val >>= 1 ;
    }   
}

void OutputBitsForward(unsigned val)
{
   unsigned forwardMask = 1 << 31;
   printf("%u = ", val);

   for( unsigned i = 1; i <= 32; i++)
   {
      putchar(val & forwardMask ? '1' : '0');
      val <<= 1 ;
   }
}
  • Реализовать функцию atoi() для целых неотрицательных чисел в десятичном формате.
// Решение в лоб, без дополнительных проверок на переполнение
int atoi_( const char* src )
{
    if( !src )
    {
        return 0;
    }
 
    int result = 0;
    int strlen = 0;
    const char* tmp = src;
    char ch;

    while( ch = *tmp++ )
    {
        if( ( '0' > ch ) || ( '9' < ch ) )
        {
            return 0;
        }

        ++strlen;
    }

    while( *src )
    {
        int digit = *src++ - '0';
        double base = 10;
        result += digit * pow( base, --strlen );
    }

    return result;
}