Что должен знать идеальный C++ программист в вакууме
У нас в России зачастую неадекватные требования к программистам.
Вот как могла бы выглядеть идеальная вакансия С++ программиста:
1. C++, стандарт, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII, правило трех, exception-
safety, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff's device, Boost, Сик-Ламсдейн/Карлссон, TR1, TR on C++ performance, тест Степанова, forwarding problem, SPECS, C++0x
2. Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile
3. Мультитредность, обедающие философы, deadlock/race condition/starvation, атомарность, lock инструкции процессора, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads
Resharper C++, впечатления
Поставил сие чудо от Jetbrains. Не перестаю восхищаться тем, что создают наши ребята.
Никогда не думал, что разработка на С++ в IDE может быть так же удобна, как, например, разработка на C# или Java.
Статья на хабре: http://habrahabr.ru/company/JetBrains/blog/255151/
Хотя, конечно, мои проекты не содержат какой-то сложной работы с шаблонами или фичами C++11, тем не менее, я очень доволен. По сравнению со стандартным IntelliSense или VisualAssist X, небо и земля. С++ разработчики более не могут считать себя обделенными.
Ссылки на разные open source проекты на C++
Программисту очень полезно интересоваться тем, что делают другие, чтобы расширять свой кругозор.
Решил дать ссылки на разные опен-сурс проекты, которые меня когда-то заинтересовали, откуда я черпал идеи, или даже код.
Распространение Windows приложений в Linux (Wine) при помощи InnoSetup
First, we need to detect Wine in the InnoSetup script.
function LoadLibraryA(lpLibFileName: PAnsiChar): THandle;
external 'LoadLibraryA@kernel32.dll stdcall';
function GetProcAddress(Module: THandle; ProcName: PAnsiChar): Longword;
external 'GetProcAddress@kernel32.dll stdcall';
function IsWine: boolean;
var LibHandle : THandle;
begin
LibHandle := LoadLibraryA('ntdll.dll');
Result:= GetProcAddress(LibHandle, 'wine_get_version')<> 0;
end;
Создание плагина разрешения ссылок для PhpStorm (IntelliJ IDEA)
Я работаю веб-программистом, пишу на PHP и использую фреймворк Kohana. Для разработки использую потрясающую, на мой взгляд, среду PhpStorm. При работе с большими и не очень проектами меня всегда угнетало, что я много времени трачу на навигацию по проекту, на поиск того или иного файла (контроллера или шаблона) в дереве проекта. Ctrl+Shift+N, к сожалению, удобен далеко не всегда. Для начала мне захотелось сделать так, чтобы можно было переходить из файла контроллера по нажатию Ctrl+B (или Ctrl+Click) над именем шаблона, передаваемого в кохановский View::factory(), непосредственно в файл шаблона:
Поэтому я решил написать небольшой плагин для PhpStorm, который облегчил бы мою работу и освободил бы от некоторой части рутины.
Маленький плагин для поддержки Kohana в PHPStorm
Маленький плагин для поддержки пхп фреймворка Kohana 3 в PHPStorm. Плагин предоставляет 2 простые функции:
Переход из файла контроллера по нажатию Ctrl+B (или Ctrl+Click) над именем шаблона, передаваемого в кохановский View::factory(), непосредственно в файл шаблона: