29 December 2016

$300 (триста долларов)

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

Осенью этого года как-то общался с молодым коллегой по работе и поведал он, что в этом месяце не сошелся его семейный бюджет, так как хозяин квартиры, которую он снимает, повысили плату из-за того, что грядет очередное повышение коммунальных тарифов... Слушал я все это и прикидывал сколько этот коллега денег получает. Потом учел тот факт, что снимает он (кстати, за совершенно смешные деньги) большую двушку в новострое в престижном районе города. Что на работу ездит не на общественном транспорте (как я), а на собственном авто, и вспомнил в связи со всем этим о том периоде своей жизни, когда я, примерно в его возрасте, тоже жил на съемной квартире вместе с будущей женой, которая на тот момент еще училась в вузе.

Было это в далеком 2003-м году. Прошло два года, как я начал работать на полную ставку после окончания института. Зарплата у меня, молодого специалиста, была вполне себе приличная -- $300 или 1500 гривен по тогдашнему курсу.
И вот как мы на нее вдвоем жили.

Треть зарплаты, т.е. $100, сразу же уходило в оплату за жилье.
Это была убогонькая однокомнатная квартирка в малосемейке в спальном районе.
Никакого ремонта. Старая и убитая мебель -- хорошо запомнился совершенно разваленный диван и тот факт, что в теплое время года я сразу же отправлялся спать на пол.
Разумеется, никакой техники. Ни бойлера. Ни кондиционера. Ни даже стиралки.
При этом замечу, что бойлер в славном городе Одессе это абсолютный must have и стоит практически во всех квартирах без АГВ, т.к. теплую воду, в отличии от той же столицы, подают крайне нерегулярно и только в холодное время года.

Январь 2004-го в той самой съемной квартире. Я нахожу на этом фото огромное количество крайне занятных деталей, спутников той жизни и той эпохи... Димка весной прошлого года эмигрировал из Украины. Фото сняла его тогдашняя девушка, кстати, уже на цифровой фотик, но еще не на "зеркалку".  


После внесения "квартплаты" оставалось $200. Сумму эту мы делили на две равные части.

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

Вторая половина от $200 закрывала все остальные, нерегулярные и непредсказуемые расходы -- покупка или ремонт одежды, подарки, походы по врачам и так далее.

09 December 2016

Про Си и исключения

По работе писал некоторое количество плюсового кода вокруг сишной библиотеки и обратил внимание вот на какую забавную вещь.
Исключения.
В плюсах их используешь не так уж и часто -- чаще всего ошибку нужно обрабатывать по месту вызова, а исключения в этих случаях приводят к написанию весьма громоздкого кода. Лично у меня, самый характерный случай, подталкивающий к использованию исключений -- критическая ошибка в конструкторе, когда объект, в полном соотвествии с RAII философией, не должен быть сконструирован (на практике, почти всегда такие конструкторы делаются private и объекты конструируются исключительно на куче с помощью статического метода). 

She is exceptional...

Совсем другое дело сишный код -- тут ошибки надо обрабатывать буквально через строчку. То места в "контейнере" (читай -- массиве фиксированного размера) для вставки нового элемента не хватает, то выделение памяти из пула зафейлилось, то буфер для копирования строки недостаточный по размеру... Обрабатывать все это реально утомляет, а если все эти отказы еще и нужно поднять хотя бы на пару уровней вверх по дереву вызова, то ловишь себя на том, что 70% времени уходит не на полезный код, а на код, обрабатывающий бесчисленные отказы. 
Я нашел очень простое решение такого рода проблем -- все ошибки летят исключениями и просто перехватываются в верхней точке, которая делает вызов в сишный мир. 
Выглядит все это несколько парадоксально -- исключения оказываются намного более востребованными при работе с языком, в котором их нет...