0xd34df00d
13:16
Пару лет назад на просторах интернетов я видел мнение, что если хочешь научиться грамотно писать на плюсах — изучай исходники Qt, мол, так писать и надо, образец что объектной ориентированности и архитектуры, что всяких «локальных» качеств вроде красивого и устойчивого плюсокода. А за последние дней десять мне ... more →
0xd34df00d
25.03.2013 20:29
Держи интересную задачку по плюсцам, псто.
Есть boost::variant<T1, T2, T3>, и есть template<typename T> class Foo {};. Нужно сделать новый вариант, содержащий, помимо прочих типов, инстансы Foo для типов из исходного варианта. Что-то вроде boost::variant<int, double, Blah, boost::recursive_wrapper<Foo<T1>>, ... more →
0xd34df00d
25.03.2013 19:26
Нервно посмеиваюсь, глядя на шаблонные извращения, чтобы построить expression tree на буст.вариантах, чтобы все типобезопасно и инлайнилось, и чтобы минимальное количество кода дублировалось, вместо struct Equal; struct Greater; ... зато template<typename Op> struct Ord { bool operator()(const DataType_t& val) { ... more →
0xd34df00d
25.03.2013 13:01
А кое-что и с тредами на C++11 выражается гораздо легче, чем на QThread/QtConcurrent. Вот, например, задача — на каждый тред создать свой экземпляр рабочего документа и дергать оттуда всякие методы. QtConcurrent не катит из-за стейтлесс-пула тредов, поэтому костыли лучше всего выражаются на std::thread: ... more →
0xd34df00d
25.03.2013 11:58
А еще кути отсасывают у STL потому, что QList и компания не поддерживают move-only-типы, unique_ptr'ы просто так туда не положишь.
0xd34df00d
25.03.2013 10:48
Ближайший аналог C++ (только, пожалуйста, посчитайте до 10 прежде чем минусовать каммент:) — PHP5. Можно писать очень аккуратно и чисто. А можно… ну ты в курсе.
0xd34df00d
21.03.2013 06:32
А что, даже в C++11 нет примитива типа «выполнить вот этот функтор в отдельном треде и скормить результат вот этому функтору в вызывающем треде»? Я разочарован совсем :(
0xd34df00d
20.03.2013 09:12
У меня лютый багет от кутешных подобий RTTI, в частности, от http://qt-project.org/doc/qt-4.8/qgraphi... и вещей вроде
template <class T> inline T qgraphicsitem_cast(QGraphicsItem *item)
{
return int(static_cast<T>(0)→Type) == int(QGraphicsItem::Type)
|| (item && int(static_cast<T>(0)→Type) ... more →
0xd34df00d
19.03.2013 16:39
Вот я на самом деле программист так себе, пишу себе свой быдлокод на с++. Чаще всего делаю всякое формоклепательство на кутях, и иногда экспериментирую с shared_ptr. Но как и любой другой программист иногда смотрю на всякие другие языки типа паскаля, питона, ады, йавы. Пытаюсь понять их фишки там всякие, сильные с ... more →
0xd34df00d
19.03.2013 13:19
Наткнулся в продакшен-коде на подсчет количества цифр в числе через принтф. Уж и не думал, что увижу такое.
0xd34df00d
10.03.2013 13:44
Поймал себя на бугурте от отсутствия чего-то вроде decltype для сигнатур в хачкеле.
0xd34df00d
06.03.2013 18:03
А еще нет ничего плохого в том, чтобы дергать сишные функции по мере необходимости. Например, вместо фанатичного обмазывания stringstream'ами можно просто взять и дернуть strtol и получить заодно длину обработанной строки как нефиг делать.
Пишу парсер хтмла, да.
0xd34df00d
06.03.2013 17:09
API std::string'а после QString кажется лютым днищем. Блюю.
0xd34df00d
01.03.2013 12:30
Только что мне пытались доказать, что ссылки в плюсах обязательно проверяются на null в рантайме.
0xd34df00d
28.02.2013 10:35
static_assert в шаблонной функции не показывает, чем она была инстанциирована. Плюсы опять соснули.
/home/d34df00d/Programming/leechcraft/src/plugins/lmp/plugins/graffiti/graffitit ab.cpp: In function ‘bool LeechCraft::LMP::Graffiti::{anonymous}::IsEmptyData(const ... more →
0xd34df00d
22.02.2013 10:23
В ближайшее время на маке личкрафты будут без торрентов. ибо libtorrent там не собирается с C++11.
0xd34df00d
20.02.2013 06:07
В очередной раз бугурчу от отсутствия поддержки в плюсах биекц^W ковариантных типов и необходимости писать костыли вроде таких:
QList<QObject*> Buddy::GetAllMessages () const
{
QList<QObject*> result;
for (auto msg : Messages_)
result << msg;
return result;
}
где Messages_ — QList<ConvIMMessage*>, а class ... more →
0xd34df00d
19.02.2013 14:24
Грамматику initializer list'ов (и вообще инициализации) проектировал какой-то уебок. Нельзя писать
return Group_.isEmpty () ? QStringList () : { Group_ };
:'-(
0xd34df00d
15.02.2013 13:42
Только начал дергать сишный код, а уже хочется блевать:
/home/d34df00d/Programming/leechcraft/src/plugins/azoth/plugins/velvetbird/proto manager.cpp:42:36: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
0xd34df00d
04.02.2013 17:38
Чят, подскажи btree-библиотеку под совместимой с анальной проприетарщиной лицензией.
0xd34df00d
03.02.2013 21:08
Есть класс с мембером Items_. Пишу лямбду в одной из его функций:
auto tryAddUrl = [&visibleTags, this] (const QString& title, const QUrl& url) → void
{
const auto pos = std::find_if (Items_.begin (), Items_.end (), [&title] (decltype (Items_.at (0)) item) { return item.Title_ == title; });
...
};
получаю ... more →
0xd34df00d
31.01.2013 10:55
Олсо, я вчера уберкотик и оптимизировал пожирание памяти с 4.6 до 3.1 гигов одними играми с выравниванием, избавлением от std::vector в угоду T[] и еще парой нехитрых трюков. ЧСХ дальнейшая оптимизация через выкидвание стоп-слов срезала еще лишь 800 метров.
0xd34df00d
31.01.2013 00:09
Обмазался битовыми полями, и теперь у меня 4 бита на вес и 20 бит на количество повторений. ЗАТО ПАМЯТЬ ЭКОНОМЛЮ.