sqlite — безусловно хорошая штука. Пользовался ей в нескольких проектах, единственное что огорчает — отсутствие враппера для С++ в стандартной поставке, в результате их пишут все кому не лень (да и чего скрывать — я тоже свой писал, т.к. не нашел подходящего под свои требования). А без враппера юзать sqlite не очень удобно, в плюсах разумеется.
Чтобы экономить место, нужно настроить autohide для боковых и нижних панелей, чтобы не скрывать их по ctrl+M, делается это очень легко — на каждом pane все есть кнопочка с минимизацией. Как это выглядит у меня можно посмотреть здесь.
Лично я себе настроил хоткеи для открытия project view (f1), console (alt+тильда), make targets (ctrl+тильда), плюс еще некоторые которые нужны конкретно мне — и живу счастливо. В результате добился существенного прироста в скорости и удобства в работе с IDE, т.к. все по нажатию нужных мне хоткеев открывается нужный view и туда устанавливается фокус, так что я сразу могу продолжать с ним работать без лишних движений мыши. И кроме того view можно растягивать на необходимую длину/ширину, у меня обычно больше половины экрана project view занимает, и консоль тоже нет 5-10 строк, а все 30-40 — это на мой взгляд гораздо удобнее, и все это благодаря autohide. Как это выглядит можно посмотреть здесь.
Да, и кстати, тулбар тоже абсолютно бесполезен при использовании хоткеев, я его тоже скрываю.
Насчет темы вообще не парюсь, т.к. подавляющее количество времени проводится в непосредственно редакторе, а его цветовую схему можно достаточно легко настроить.
Половина материала (если не больше) в статье относится к документу типа coding style, который должен быть, если в проекте работает более одного разработчика.
Ну, буст лямбда вообще противопоказано использовать для продакшен кода, если целью конечно не стоит показать коллегам свою «крутость», а потом заставить их ночью с тонной матов отлаживать такой код или рефакторить его при добавлению какого-нибудь нового параметра в функцию.
Конечно, это все круто выглядит, но какие преимущества это дает? Вот вы приводите абстрактный пример с А = 5 + 10 * В, ну он настолько абстрактен, что не показывает ровным счетом ничего. Было бы гораздо лучше если бы вы привели в пример реализацию чего-либо стоящего с помощью каррирования, где были бы видны его преимущества по сравнению с обычными подходами. Я лично ничего не вижу ни одного преимущества в каррировании для С++, только существенный недостаток — усложнение кода.
Честно говоря я вообще не понял, в чем смысл превращать это:
There are several open-source configuration file libraries available as of this writing. This library was written because each of those libraries falls short in one or more ways. The main features of libconfig that set it apart from the other libraries are:
A fully reentrant parser. Independent configurations can be parsed in concurrent threads at the same time.
Both C and C++ bindings, as well as hooks to allow for the creation of wrappers in other languages.
A simple, structured configuration file format that is more readable and compact than XML and more flexible than the obsolete but prevalent Windows “INI” file format.
A low-footprint implementation (just 37K for the C library and 76K for the C++ library) that is suitable for memory-constrained systems.
Почему нельзя? Если то что выделяет память, является интеллектуальным пулом (garbage collector'ом), то он может сам удалять обьекты при своем разрушении.
Я думаю будет в тему добавить ссылку на доклад от Chandler Carruth — Refactoring C++ with Clang. www.youtube.com/watch?v=yuIOGfcOH0k&feature=plcp
В нем объясняется и показывается на конкретном примере реализация ренейма метода.
Я тоже искал готовые решения, но не нашел. Поэтому сделал свою фабрику. Я старался сделать ее максимально гибкой, и без использования макросов. По умолчанию все обьекты регистрируется динамически во время выполнения, но никто не мешает сделать статический инициализатор.
А зачем давать правильный ответ на секретный вопрос, если можно написать что угодно? Наоборот хорошая фишка, чтобы запутать бедного кулхацкера, который будет вбивать имя твоей собаки, который у тебя никогда не было.
Почему-то еще все забывают такую важную вещь в сборке, как конфигурирование… например, как настроить include/lib paths для 3rd party библиотек. Конечно, если по старинке делать как в make, т.е. писать/генерить через configure.sh, но уже не 1999 год. Такие вещи должны включаться в систему сборки, как must have.
Для начала стоит определится со специализацией (или специализациями), которую хочется получить. Веб, базы данных, прикладной, системный программист — возможно что-то забыл, а потом уже формировать список книг/курсов для изучения. Все изучить не получится, объем знаний/технологий слишком велик.
Хороший человек (с ваших слов) посоветовал вам список, но как тут многие уже написали сами по себе в отдельности книги хорошие, но прочитать и тем более понять хотя бы их часть новичку — невозможно, если он ни супер-гик и вундеркинд какой-нибудь.
Еще забыли упоминуть, не только о том что могут быть выброшены исключения во время работы с выделенными ресурсами, и тогда такой код:
int *myPixels = new int[640 * 480];
// работаем
delete [] pixels;
Так же может генерировать утечки памяти, а вы написали — В принципе, никакой разницы.
Да, Eclipse раньше был не очень. Тоже, где-то в 2007-2008 году пробовал его (как IDE для С++), ужасно не понравился — тормоза, косячный автокомплит, на netbeans тогда перешел. А вот сейчас eclipse намного лучше стал (я им пользуюсь почти год как основной ide для плюсов), во всяком случае он гораздо лучше чем голая visual studio. Ну, а под linux и подавно. Единственное, что 64 битные версии какие-то не очень. Под виндой они у меня крашились часто, поэтому сейчас использую 32 битную. Под линуксом такой проблемы не заметил.
Лично я себе настроил хоткеи для открытия project view (f1), console (alt+тильда), make targets (ctrl+тильда), плюс еще некоторые которые нужны конкретно мне — и живу счастливо. В результате добился существенного прироста в скорости и удобства в работе с IDE, т.к. все по нажатию нужных мне хоткеев открывается нужный view и туда устанавливается фокус, так что я сразу могу продолжать с ним работать без лишних движений мыши. И кроме того view можно растягивать на необходимую длину/ширину, у меня обычно больше половины экрана project view занимает, и консоль тоже нет 5-10 строк, а все 30-40 — это на мой взгляд гораздо удобнее, и все это благодаря autohide. Как это выглядит можно посмотреть здесь.
Да, и кстати, тулбар тоже абсолютно бесполезен при использовании хоткеев, я его тоже скрываю.
Насчет темы вообще не парюсь, т.к. подавляющее количество времени проводится в непосредственно редакторе, а его цветовую схему можно достаточно легко настроить.
Конечно, это все круто выглядит, но какие преимущества это дает? Вот вы приводите абстрактный пример с А = 5 + 10 * В, ну он настолько абстрактен, что не показывает ровным счетом ничего. Было бы гораздо лучше если бы вы привели в пример реализацию чего-либо стоящего с помощью каррирования, где были бы видны его преимущества по сравнению с обычными подходами. Я лично ничего не вижу ни одного преимущества в каррировании для С++, только существенный недостаток — усложнение кода.
Честно говоря я вообще не понял, в чем смысл превращать это:
в это:
Ну, а биндинг параметров с помощью лямбд делается вообще очень просто в С++0х:
Выглядит на мой взгляд намного проще и не требует какого-либо дополнительно кода для реализации.
Деструктор foo будет вызван, при уничтожении FooPool.
Кстати, говоря я создал аналогичный тест с использованием boost pool (multithreaded) и результаты получились даже чуть лучше.
VS10 со стандартным release билд модом выдает результат ~ 50 мс.
mingw 4.6 с -O2 ~ 60 мс.
Естественно это результаты на моей машине под win7.
www.youtube.com/watch?v=yuIOGfcOH0k&feature=plcp
В нем объясняется и показывается на конкретном примере реализация ренейма метода.
Хороший человек (с ваших слов) посоветовал вам список, но как тут многие уже написали сами по себе в отдельности книги хорошие, но прочитать и тем более понять хотя бы их часть новичку — невозможно, если он ни супер-гик и вундеркинд какой-нибудь.
int *myPixels = new int[640 * 480];
// работаем
delete [] pixels;
Так же может генерировать утечки памяти, а вы написали — В принципе, никакой разницы.
Ну typedef же напрашивается!
typedef QPair UrlPair;
typedef QPair ObjectUrlPair;
typedef QMap RequestMap;
RequestMap requests;
ЗЫ Для первых 2-х конечно имена нужно подобрать, которые будут более хорошо объяснять контекст, я просто сходу написал.