понедельник, 30 марта 2009 г.

установка IE8 ломает Visual C++

не секрет что визарды в визальнике активно используют движок IE, и разные обновления/глюки в нем могут серьезно помешать работе программиста. Так что лучше не ставте последний IE8 на рабочую машину.
после установки последнего IE8 в Visual C++ 2005/2008 не работают(выдают ошибки в скрипте) несколько визардов:
- Add Function
- Add Variable
- Smart Device – New Project Creation
- Smart Device – Add Class

причины в изменение поведения IInternetSecurityManager интерфейса, описание и воркараунд в Visual C++ Team Blog

среда, 25 марта 2009 г.

В Украине создается реестр легально ввезеных телефонов

По доступной информации НКРС создает реестр легально ввезеных телефонов и собирается использовать его для борьбы с "нелегальным" импортом. Что это означает:

1. до 30 сентября мобильные операторы обязаны предоставить УГЦР информацию об IMEI-номерах телефонов, обслуживаемых их сетью,– они будут включены в реестр и считаться легальными.
2. В дальнейшем операторов мобильной связи обяжут проверять IMEI-коды телефонов. Если окажется, что аппарат отсутствует в реестре, на экране мобильного телефона при его включении будет высвечиваться предупреждение и предложение обратиться в УГЦР, где телефон смогут внести в реестр (только предупреждение? сеть будет обслуживать телефон? это пока не ясно, но скорей всего со временем запретят обслуживать такие телефоны)


ps: вот мы и доприкалывались с беларусов, где тоже создается такоей реестр.

вторник, 24 марта 2009 г.

Interview Question: implement itoa

see source code

относительно atoi на интервью, меня поправили, имелось в виду itoa, но назвали ее atoi.
Вопрос про itoa популярен, но реализация через деление не интересна, слишком скучно и просто. Поэтому реализовал без использования умножения и деления, только сложение и работа со строками.

ф-ция получилась короткой - табличка с уже подсчитаными степенями двойки и куча сложений. Почти половину в этом коде занимает реализация добавления первого символа в строку без использованя дополнительного буфера. А весь magic происходит в SymbolicAdd.

char* power_of_two[] =

{

    "1","2","4","8", "16","32","64","128",

    "256","512","1024","2048","4096","8192","16384","32768",


//custom itoa implementation limited to radix 10

//idea is: each digit in position N in binary value means

//"add Digit(1 or 0) * 2^N to common sum" 

//lets do it, but use symbol strings instead of binary values

char* CustomITOA(int value, char *dst)

{

    bool below_zero = value < 0;

    if(below_zero)

        value *= -1;

 

    *dst = '0';

    *(dst+1) = 0;

    int nbins = sizeof(int) * 8 - 1;

    for(int i=0; i < nbins; i++)

    {

        if(value & 0x1)

        {

            SymbolicAdd(dst, dst, power_of_two[i]);

        }

        value = value >> 1;

    }

    if(below_zero)

    {

        //add leading "-" to result string

        char cbuffer_first = '-';

        char cbuffer_second = cbuffer_first;

        char* str_cursor = dst;

        do

        {

            cbuffer_second = *str_cursor;

            *str_cursor = cbuffer_first;

            if(0 == cbuffer_first)

                break;

            cbuffer_first = cbuffer_second;

            ++str_cursor;

        }

        while(true);

    }

    return dst;

}



Получилось просто, но SymbolicAdd намного сложнее(детали в сырцах). Что она делает: берет две строки вида "125", "236" и возвращает строку "361", а всередини реализован своеобразный алгоритм сложения в столбик.

понедельник, 23 марта 2009 г.

реализовать atoi на интервью

на developers.org.ua заметил впечатления от проходжения интервью в R&D центр самсунга в Киеве, если опустить общее негативное впечатление програмера от самого процесса, и то что судя по цифрам набрать они пытаються по-дешевле,то из интересного там упоминание одного из вопросов - написать atoi на бумажке,
Вот мой вариант сделаный на коленках (проверка на переполнение опущена) в основном из спортивного интереса(своеобразная разминка от багфиксинга). Алгоритм - первое что пришло в голову, возможно есть и более эфективные:

#define SPACE_SYM ' '
#define MINUS_SYM '-'
 
int atoi_custom(char* src)
{
    int result = 0; //really returns int value
    char* current_symbol = src;
    int digit_indx = 1;
 
    if (!src)
        return 0;
    //let`s treat first word in string as a decimal number
    bool first_symb_found = false;
    // second part of the IF expression can be optimized, 
    //but it is more human readable as is 
    while(*current_symbol != 0 && 
           (SPACE_SYM != *current_symbol || !first_symb_found))
    {
            //ignore leading spaces
        if(!first_symb_found && *current_symbol != SPACE_SYM)
            first_symb_found = true;
        current_symbol++;
    }
      //string not found, exit
    if(current_symbol == src)
        return 0;
 
    for(current_symbol--; 
          current_symbol >= src && SPACE_SYM != *current_symbol;
          digit_indx*=10, current_symbol--)    
    {
        //process negative integers, leading '-' is symbol of it.
        if(MINUS_SYM == *current_symbol)
        {
            if(src == current_symbol ||
                     SPACE_SYM == *(current_symbol - 1))
                return (int)(-1 * result);
            else
                return 0;//incorrect syntax
        }
        //convert symbol into integer, 0 is 0x30, 1 is 0x31, etc
        int val = (int)*current_symbol - 0x30; 
        if(val <0 || val >9)//it is not a number
            return 0;        
        result += val * digit_indx;
    }
    return result;
}

Silverlight & playboy

Сводка недоступна. Нажмите эту ссылку, чтобы открыть запись.

пятница, 20 марта 2009 г.

в интренете стало немного чище

прикрыли TrafficConverter.biz
это была партнерка, продающая "как-бы антивирус" под названием "Antivirus 360", который отличился тем, что один из самых распостраненых червей Conficker(он же Downup, Downadup и Kido, за голову автора майкрософт предлагало 250к$) пробовал стянуть и поставить этот "антивирус". Еще были мелкие шалости - програма перехватывала обращение к серваку гугла и модифицировала контент, после этого юзер видел рекомендацию от гугла "активировать" антивирус.
Страдали в основном любители разных порносайтов, афиляты (каждый получал 30$ за продажу) скидывали мусорных трафик на трафикконвертер. Некоторые зарабатывали очень неплохие деньги (первая десятка заработала 330к$ за месяц в 2008)
Прикрыли трафикконвертер после статьи в Washington Post похоже что хакнутые с сайта данные (в статье написано откуда взялись данные про заработки афилятов) были использованы чтобы заблокировать перечисляение выручки афилятам

среда, 18 марта 2009 г.

IBM собирается купить Sun за 6.5 миллиарда

на WSJ появилась инофрмация о возможном поглощении Sunа компанией IBM. Они предлагают 6.5 миллиарда, это почти в двое больше стоимости всех акций компании (4.95$ стоила акция вчера).