Tags: programming

Dr. House

New Job

Сегодня у меня был первый день работы в качестве Software Engineer (under Big Data Training).

Работодатель - консалтинговая американская компания.

Стэк - Python и все связанное с Big Data (Spark, Hadoop, Flink, Airflow, ...).
Dr. House

Why We Should Learn vi?

Читаю книгу по Linux и автор перечисляет причины для того, чтобы научиться использовать редактор vi.

Особо понравилась эта:

• We don’t want other Linux and Unix users to think we are cowards.

Валяюсь под столом... )))
Dr. House

Chrome - пока!

Сказал "пока-пока" браузеру Chrome от Google и перешел на Mozilla Firefox.

После непродолжительного периода привыкания и настройки начал чувствовать при работе с ним вполне комфортно.

Firefox не разгоняет процессоры моего Macbook Air mid-2012 "до потолока", потребляет меньше памяти и в целом обладает развитыми настройками и инструментами, которых нет в Chrome.

Chrome конечно в свое время был прорывом, но сейчас они как-то расслабились.

Каким браузером пользуетесь вы?
Dr. House

What's the largest amount of bad code you have ever seen work?

Вообразите себе продукт с 25 миллионами строк кода на C.

Очень комплексная логика и управление памятью, переключение контекстов регулируются тысячами глобальных переменных (флагами). Код испещрен изощренными макросами, на полное понимание которых иногда уходит один-два дня работы квалифицированного разработчика.

Единственное связующее звено, благодаря которому этот спагетти-код работает - тысячи тестов.

Что самое интересное, сам продукт, как и компания, которая его разработала - известны буквально всем программистам )))

Открыть ящик Пандоры и неприятно удивиться
Dr. House

Эпичный фейл софтостроительства от студии, сделавшей GTA



GTA Online — версия игры, в которую можно играть с друзьями онлайн. Эта игра очень долго грузится.

Человек нашел баги в программе и смог уменьшить время загрузки с 6 минут до 2 минут. Причем сделал это не имея исходных кодов, через reverse engineering. Вот короткая и классная статья на английском языке, где он рассказывает, как нашел проблему и как её починил.

ДИСКЛЕЙМЕР
Осторожно, не читайте на ночь! Может необратимо убить вашу веру в торжество логики и целесообразности при промышленной разработке кода.

[UPDATE] RockStar Studios признала проблему, обещала ее устранить и даже выплатила парню приз в 10,000 долларов.
Dr. House

C++ Templates # 1

Сейчас читаю вторую половину книги C++ Templates The Complete Guide (2nd edition). Книга содержит очень много багов (ошибок) как в текстовой части, так и в коде, но глубинный смысл вполне уловить можно.

Так вот, на мой взгляд шаблоны это прикольная тема как в части метапрограммирования, так и generic programming.

А вы пользуетесь шаблонами в С ?

Нет, и изобретателей шаблонов нужно сжечь на костре!
0(0.0%)
Да, пользуюсь и люблю
1(50.0%)
Ни то ни другое
1(50.0%)
Garfield_Typing

C++ Concurrency in Action - Done!



Все-таки домучил дочитал книжку Antony Williams C++ Concurrency in Action (2nd edition)!

Секретом к данному достижению (ик) было предварительное прохождение электронного курса (другого автора) на ту же тему, который дал большую картинку и вызвал общий интерес к теме.

А после этого книга уже лучше пошла, так как давала большое количество нужных и интересных деталей на связанные темы.

Действительно, ничего более подробного и качественного на тему C++ Concurrency на настоящий момент просто нет. Хотя за счет этого книжка периодически hurts the brain (ик).
Dr. House

C++ Puzzle # 3

Имеем вот такой код:

using namespace std::literals;

void f()
{
   std::this_thread::sleep_for(1s);
}

auto fut = std::async(f);

while (fut.wait_for(100ms) != std::future_status::ready)
{
   do_something();
}


Все ли с ним нормально? Нет ли каких-нибудь побочных эффектов?

Ответ на загадку, как всегда, опубликую завтра.

[UPDATE]. do_something() ведет себя прилично: не блокирует, не кидает исключений, не запускает другие треды, могущие повлиять на этот и т.д.
Dr. House

C++ Puzzle # 2

Предположим, что у вас в программе есть следующая функция для определения того, является ли выбранное число "счастливым":
bool isLuckyNumber(int number);


Каким образом в С++ 11+ сделать защиту "от дурака", чтобы следующие вызовы
if (isLuckyNumber('a')) ...
if (isLuckyNumber(true)) ...
if (isLuckyNumber(3.5)) ...
не могли быть сделаны?

Ответ на задачку опубликую через сутки в комментарии.
Dr. House

C++ Puzzle # 1

Для любителей/знатоков C++ и в целях самодокументирования планирую публиковать подобные задачки.

Кто знает чем в C++ 14 и выше отличается этот кусок кода
decltype(auto) f1() {
    int x = 0;
    //...
    return x;
}


от следующего:
decltype(auto) f2() {
   int x = 0;
   //...
   return (x);
}
?

Все ли с ними (кусками кода) нормально? Скомпилируются? Вызовут или нет ошибку/исключение?

Ответ в комментарии опубликую через сутки.

[UPD]. Решение задачки опубликовано.