У нас было 3 бинарника, 75 папок с исходниками, 5 плюсовых библиотек, пол-инсталла boost и целое множество ресурсов всех сортов и расцветок, а также MagicalRecord, Lumberjack и ReactiveCocoa в Podfile. Не то, чтобы это был необходимый запас для программы. Но если уже начал собирать код, становится трудно остановиться. Единственное, что вызывало у меня опасение -- это ReactiveCocoa. Нет ничего более беспомощного, безответственного и испорченного, чем функциональное реактивное программирование в Objective-C. Я знал, что рано или поздно мы перейдем и на эту дрянь.
Увидел на rsdn "прекрасное":
класс CMoney с полем double m_Amount и оператором приведения к LPCTSTR (строковых полей в классе нет, если что)
Если я сделаю метод для замены подстроки в строке (алиас к stringByReplacingString:withString:) с именем s:: — буду ли я гореть в аду?
msg = [msg s:"{name}":name];
Нас (программистов) в проекте 6 человек. Четырех из них зовут Александр. Недавно подняли (еще один) тестовый сервер. Посколько раньше этот сервер назывался Graybox, мы его переименовали в Сашу Грей.
ой какое мимими!
Вижуал Студия со спокойной душой скастила false в std::string
std::string SomeFunction() {
// ...
if (SomeCondition())
return false;
// ...
return "Happy";
}
if занес сотрудник копипастой из другой функции. Увидел, когда пересобирал на маке шлангом.
Опечатка по Карри (ну, может по Чёрчу или по Клейсли):
Реализована команада 'SetProxy'.
1) Добился от раста прекрасного сообщения об ошибке
error: mismatched types:
expected `&fn(i32, i32) -> i32 {foo::plus}`,
found `&fn(i32, i32) -> i32 {foo::minus}`
(expected fn item,
found a different fn item) [E0308]
let ops:&[&Fn(i32,i32) -> i32] = [&plus,&minus];
2) Из примера использования биндингов к Qt
QString::new7("Cannot load %1.").arg12(&fileName, 0, &QChar::new9(' ' as i8))
мимими 1:
The "best" example of this maintainability problem could be found in the old implementation of the printf family of functions. The CRT provides 142 different variations of printf, but most of the behavior is the same for all of the functions, so there are a set of common implementation functions that do the bulk of the work. These common implementation functions were all defined in output.c in the CRT sources(1). This 2,696 line file had 223 conditionally compiled regions of code (#ifdef, #else, etc.), over half of which were in a single 1,400 line function. This file was compiled 12 different ways to generate all of the common implementation functions.
мимими 2:
We have converted most of the CRT sources to compile as C++, enabling us to replace many ugly C idioms with simpler and more advanced C++ constructs. The publicly callable functions are still declared as C functions, of course (extern "C" in C++), so they can still be called from C. But internally we now take full advantage of the C++ language and its many useful features.
мимими 3:
Before this refactoring, the sprintf functions, which write formatted data to a character buffer, were implemented by wrapping the result buffer in a temporary FILE object and then deferring to the equivalent fprintf function.
tfw твоя первая реакция при ознакомлении с кодом -- "нахуя?". Нахуя тут пул? Нахуя самописный вектор? Почему это поле в публичном доступе? А этот класс вообще зачем?
В общем, то самое /WTF per minute/, но со славянским оттенком: /нахуя per minute/ или /нахуя per kloc/.
Поставил rust под виндой, пробую собрать биндинги к опенссл. Скачал либы, поставил, указал пути. Получаю
sorry, unimplemented: 64-bit mode not compiled in
Плохо думаю про авторов rust-openssl, начинаю разбираться, внезапно обнаруживаю, что gcc используется из Haskell Platform 2013 (x86).
пробую подсунуть gcc из раста
gcc.exe: error: CreateProcess: no such file or directory
Оказывается, гцц в расте обрезанный, без libexec/.../cc1.
В общем, плюнул, снес старую платформу, поставил новую 64-bit.
Теперь у меня штанга используется для сборки раст-проекта.
ssl::SslStream::new(&ctx, stream).map(ssl::MaybeSslStream::Ssl)
Больше SSL-я богу SSL-я!