Настоящая идиллия глазами программера:
Приходишь с работы часиков в 9 вечера, дома бардак, комп занят, за компом любимая девушка шпилит в "Как достать соседа". Зашел, рыкнул - ррраз! кушать подано, комп свободен, кот забился в кладовку. Лепота!
среда, 6 июля 2011 г.
Идиллия
Автор:
Андрей Кузнецов
на
13:29
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
отдых
пятница, 1 июля 2011 г.
Константная ссылка на временный объект
Век живи - век учись!
Только намедни узнал о том, что привязка временного объекта к константной ссылке продлевает жизнь временного объекта до тех пор, пока живет сама ссылка. Это декларирует Стандарт(р12.2.5).
Например, в результате работы следующего кода, на экран будет выведено "temporary string". Удивительно, не правда ли!
Только намедни узнал о том, что привязка временного объекта к константной ссылке продлевает жизнь временного объекта до тех пор, пока живет сама ссылка. Это декларирует Стандарт(р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?",
всегда хочется понаблюдать за тем как кандидат мыслит и решает реальные задачи. Потому как очень мегачасто бывает так, что вроде и на все вопросы кандидат отвечает, и то знает, и об этом представление имеет, и то, и сё, и пятое, и десятое. И вроде всё классно, и ты доволен, и впечатление хорошее производит... Но как только дело доходит то решения какой-то несложной задачки, оказывается, что процесс мышления у человека ну как-то совсем не протекает. Ну ладно я пойму если его в процессе решения занесет куда-то не в ту степь, или в решении будут ошибки - отрицательный результат тоже результат. Но когда человек несколько минут медитирует на лист бумаги и не может даже начать решать задачу, зацепиться за что-нибудь, ну это уже совсем пичалька.
Вот чтобы выявлять таких вот нерадивых кандидатов, я решил помимо списка вопросов составить список задачек, которые буду предлагать на собеседованиях. Приглашаю всех поучаствовать в составлении.
"Что такое полиморфизм?",
"Что представляет собой 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;
}
Автор:
Андрей Кузнецов
на
08:45
5
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
программирование,
собеседование,
c++
воскресенье, 12 июня 2011 г.
Кто что слушает на работе?
Open space - есмь Зло! Хрен оспоришь. Постоянный гул, ржач, коллы с кустомерами, споры и холивары. Конечно, все эти прелести во многом зависят от культуры вас окружающих людей, но факт остается фактом - Open Space = Ад! В одной из моих прошлых контор, я мог начать работать только часов в 5 вечера, соответственно домой приходил к ночи.
Вот почему в опен спейсе у каждого работника есть огромные студийные наушники - Коссы, Шенхейзеры, Свэны и т.д. Иногда просто нужно сосредоточиться на некоторое время, чтобы ни на что не отвлекаться и никого не слышать.
Но интеллектуальная деятельность совместима далеко не с любыми видами музыки, и музыка может отвлекать и мешать сосредоточиться не меньше чем факторы окружающей среды. Например, тяжелая музыка просто вырубает мозг, рэпчик отвлекает внимание так как начинаешь вслушиваться в речетатив, ну и так далее. Мне более всего подходит jazz, ambient, просто легкая фоновая музыка, new age, иногда. У меня нет любимых исполнителей на этом поприще, я даже не задумываюсь, что я слушаю и для души я слушаю совершенно другую музыку. Но для фона такая музыка самое оно - успокаивает, поднимает настроение, помогает сконцентрироваться, отрешиться от окружающего мира.
Чаще всего я слушаю радио Abalone. Попробуйте, может и вам поможет.
ЗЫ Это не реклама =)
Вот почему в опен спейсе у каждого работника есть огромные студийные наушники - Коссы, Шенхейзеры, Свэны и т.д. Иногда просто нужно сосредоточиться на некоторое время, чтобы ни на что не отвлекаться и никого не слышать.
Но интеллектуальная деятельность совместима далеко не с любыми видами музыки, и музыка может отвлекать и мешать сосредоточиться не меньше чем факторы окружающей среды. Например, тяжелая музыка просто вырубает мозг, рэпчик отвлекает внимание так как начинаешь вслушиваться в речетатив, ну и так далее. Мне более всего подходит jazz, ambient, просто легкая фоновая музыка, new age, иногда. У меня нет любимых исполнителей на этом поприще, я даже не задумываюсь, что я слушаю и для души я слушаю совершенно другую музыку. Но для фона такая музыка самое оно - успокаивает, поднимает настроение, помогает сконцентрироваться, отрешиться от окружающего мира.
Чаще всего я слушаю радио Abalone. Попробуйте, может и вам поможет.
ЗЫ Это не реклама =)
вторник, 7 июня 2011 г.
Получение букв дисков приаттаченых к USB девайсам (Enum drive letters attached to USB devices)
WinAPI-шная функция GetDriveType() имеет существенный недостаток - она определяет USB hard drive'ы как фиксированные диски DRIVE_FIXED. Недавно мне понадобился функционал, который бы отличал настоящие жесткие диски от USB. Как оказалось, задача почему-то решается нетривиально - либо через WMI, либо через SetupAPI. WMI не подходил всвязи со спецификой проекта, оставался SetupAPI. Полдня изучения основ SetupApi и полдня гугления, изучения экзэмплов и чтения форумов привели меня на CodeProject, где я и нашел решение. Так вот хочу я вам сказать, мои дорогие друзья, я бы в жизни не подумал, что эта задача решается настолько через жопу!
Но нашелся у меня в тиме человек, который буквально за полтора часа родил компактное и лаконичное решение. Собственно, не могу не поделится.
Но нашелся у меня в тиме человек, который буквально за полтора часа родил компактное и лаконичное решение. Собственно, не могу не поделится.
bool IsUsbDevice( wchar_t letter )
{
wchar_t volumeAccessPath[] = L"\\\\.\\X:";
volumeAccessPath[4] = letter;
HANDLE deviceHandle = CreateFileW(
volumeAccessPath,
0, // no access to the drive
FILE_SHARE_READ | // share mode
FILE_SHARE_WRITE,
NULL, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
NULL); // do not copy file attributes
// setup query
STORAGE_PROPERTY_QUERY query;
memset(&query, 0, sizeof(query));
query.PropertyId = StorageDeviceProperty;
query.QueryType = PropertyStandardQuery;
// issue query
DWORD bytes;
STORAGE_DEVICE_DESCRIPTOR devd;
STORAGE_BUS_TYPE busType = BusTypeUnknown;
if (DeviceIoControl(deviceHandle,
IOCTL_STORAGE_QUERY_PROPERTY,
&query, sizeof(query),
&devd, sizeof(devd),
&bytes, NULL))
{
busType = devd.BusType;
}
else
{
std::wcout << L"Failed to define bus type for: " << letter;
}
CloseHandle(deviceHandle);
return BusTypeUsb == busType;
}
Автор:
Андрей Кузнецов
на
08:31
4
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
программирование,
работа,
WinAPI,
Windows
четверг, 26 мая 2011 г.
Проблемы со Skype - Май 26, 2011
Тем временем как весь мир находится в панике по поводу неработающего Skype, у меня все очень даже работает =) Тем не менее, я не могу не поделится со страждущими.
Переводить лень, так что как-нибудь сами
A small number of you may have had problems signing in to Skype. This predominantly affects people using Skype for Windows. We have identified the problem and will issue a fix in the next few hours.
In the meantime, you can follow the steps below to fix the problem manually.
Обновляющееся ссылко на первоисточник http://heartbeat.skype.com/2011/05/problems_signing_into_skype_an.html
Переводить лень, так что как-нибудь сами
A small number of you may have had problems signing in to Skype. This predominantly affects people using Skype for Windows. We have identified the problem and will issue a fix in the next few hours.
In the meantime, you can follow the steps below to fix the problem manually.
Windows
- Click Start, type run and press Enter. (On Windows XP: Click Start and then Run.)
- Type the following and click OK. %appdata%\skype
- Locate and delete the file shared.xml.
- If you cannot find this file:
- Click Start, type run and press Enter. (On Windows XP: Click Start and then Run.)
- Type the following and click OK. control folders
- In the View tab, ensure that Show hidden files and folders is enabled.
- Repeat steps 1-3.
- Restart Skype.
Mac
- Open Finder and locate the following folder: ~/Library/Application Support/Skype
- Delete the file shared.xml.
- Restart Skype.
Linux
- Go to the following folder: /home/YourLinuxUserName/.Skype
- Delete the file shared.xml.
- Restart Skype.
Обновляющееся ссылко на первоисточник http://heartbeat.skype.com/2011/05/problems_signing_into_skype_an.html
пятница, 4 марта 2011 г.
[ВИДЕО] Волшебники Электронной Эры
Достопочтенный хабровчанин artifex поделился очень интересным документальным фильмом "Hackers - Wizards of the Electronic Age" снятом в 1984 году, и рассказывающем о хакерах того времени.
При участии: Steve Wozniak, Andy Hertzfeld, Bill Atkinson, Lee Felsenstein, Richard Stallman, Richard Greenblatt, Steven Levy and others.
Фильм оказался очень интересным и весьма познавательным. Ну, во-первых, начнем с того, что в контексте фильма "хакерами" называют не тех людей, которые взламывают сайты Пентагонов или пишут вирусы, а компьютерных энтузиастов, создающих революционные продукты ради забавы. Также оказалось, что понятие share-ware и open-source software возникло в начале 80-х годов, и уже тогда люди делали на этом бизнес, сапортя ПО и занимаясь консалтингом. И уж вообще я офигел, когда некий бородатый малый продемонстрировал програмулину до боли похожую на старый добрый Paint, в которой он редактировал фотографии, залитые с цифровой камеры. Я почему-то думал, что в те годы единственным интерфейсом пользователя были зелененькие буквочки на черном экране размером меньшим чем у моего КПК. В 1995 году отец притащил с работы системник от Sinclair'a, он переделал старую ч/б Березку под моник и раздобыл где-то квадратную клаву, похожую на печатную машинку - я думал, что это крутейший комп. Там стоял TR-DOS, был текстовый редактор, можно было катать в Принца Персии, и даже писать музыку! И теперь я понял, что являлся обладателем винтажного барахла. Немного, знаете ли обидно за трудное детство...
Ну да ладно воспоминаний - давайте смотреть кино...
При участии: Steve Wozniak, Andy Hertzfeld, Bill Atkinson, Lee Felsenstein, Richard Stallman, Richard Greenblatt, Steven Levy and others.
Фильм оказался очень интересным и весьма познавательным. Ну, во-первых, начнем с того, что в контексте фильма "хакерами" называют не тех людей, которые взламывают сайты Пентагонов или пишут вирусы, а компьютерных энтузиастов, создающих революционные продукты ради забавы. Также оказалось, что понятие share-ware и open-source software возникло в начале 80-х годов, и уже тогда люди делали на этом бизнес, сапортя ПО и занимаясь консалтингом. И уж вообще я офигел, когда некий бородатый малый продемонстрировал програмулину до боли похожую на старый добрый Paint, в которой он редактировал фотографии, залитые с цифровой камеры. Я почему-то думал, что в те годы единственным интерфейсом пользователя были зелененькие буквочки на черном экране размером меньшим чем у моего КПК. В 1995 году отец притащил с работы системник от Sinclair'a, он переделал старую ч/б Березку под моник и раздобыл где-то квадратную клаву, похожую на печатную машинку - я думал, что это крутейший комп. Там стоял TR-DOS, был текстовый редактор, можно было катать в Принца Персии, и даже писать музыку! И теперь я понял, что являлся обладателем винтажного барахла. Немного, знаете ли обидно за трудное детство...
Ну да ладно воспоминаний - давайте смотреть кино...
Автор:
Андрей Кузнецов
на
15:41
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
кино,
программирование,
хобби
Подписаться на:
Сообщения (Atom)

