Ставлю эту елку тут уже четвертый год подряд. Не мало времени прошло, если задуматься...
В новом году хочу пожелать всем научиться ценить простые вещи, которые окружают нас в повседневной жизни. Множество прекрасных вещей почему-то просто пропадают из нашего поля зрения с течением жизни, хотя всегда находятся под носом, но стоит им оттуда пропасть, так сразу становятся очень заметными.
Считать, что жизнь проста - опасно, но тем не менее она всегда кажется нам гораздо сложнее, чем есть на самом деле. Желаю всем не боятся сложностей и с юмором с ними справляться.
И в целом, желаю научиться легче относиться ко всему, что происходит с нами на жизненном пути, потому что, как правило, невозможно сказать сразу, хорошее это было событие или плохое. Иногда, не получить желаемого - это и есть везение.
Поздравляю вас с Новым годом, мои любимые читатели 🎊🎁🎉🎄
Спасибо, Ваша Сеньерность
Воевали на работе несколько дней с очень неприятным крашем из за корапченного стэка, который еще и не могли воспроизвести. Не могли в gdb найти, откуда приходит падение, потому что стэк не раскручивается. А мы пользуемся кастомной сборкой gdb со своими дополнительными плюшками для всякого анализа памяти и прочего.
Попросили помочь одного из наших дедов-сеньеров, он открывает корку в gdb и пишет следующую команду: az-tony-backtrace-hacky. И да, она раскрутила стэк... Не на 100 процентов корректно, но получилось понять, где происходит краш, и обвинить в этом стороннюю либу.
Вот такие штуки начинаешь уметь делать, когда кучу лет в компании и видел некоторое дерьмо. Считаю что есть в этом определенное изящество.
Если интересно, что эта команда в итоге делала, то она воспользовалась тем фактом, что у нас стэк выровнен по 64 байта и в тупую выровняла sp перед попыткой раскрутить стэк. Действительно hacky. А tony это имя китайца, который когда-то эту команду в наш gdb добавил и увековечил таким образом там свое имя.
Трудности локализации
Каждый раз, когда читаю техническую литературу в переводе, убеждаюсь, что это гиблое дело. Большинство современных технологий развиваются на английском, поэтому и изучать их нужно тоже на английском.
И еще есть риск наткнуться на перевод неопытного локализатора и вообще получить информацию с большим искажением смысла. Один из моих любимых примеров — pseudo file system. В русском языке "псевдо" — это приставка, а в английском — это отдельное слово (междометие? наречие? хз, я русский не знаю, знаю только С++). Поэтому если попытаться перевести это дословно на русский, получается либо "псевдофайловая система", что не совсем правда, либо "файловая псевдосистема", что по смыслу наверное чуть ближе, но все равно каламбур, потому что не очень понятно, как система может быть псевдо. Система она и в Африке система, просто эта система "псевдо файловая".
Ну короче вот такое. Опытные переводчики в такие моменты обычно новый термин придумывают, поэтому у нас потом появляются такие вещи, как мнимые файловые системы, точки останова, трассировка функций, образцы класса и прочие термины, которые режут ухо.
Учите английский товарищи.
P.S. еще я до сих пор не понимаю, почему псевдогигант из сталкера так называется. Он же вроде вполне гигантский. Псведогигант — это обычный человек в мире карликов.
Stack Overflow
Сегодня запостил свой первый вопрос на Stack Overflow. Я знал что когда нибудь это должно было случится.
Людей, шарящих в линковщике, приглашаю мне подсказать. Линковщик на Линуксе это вообще какой-то ужас на самом деле. Очень сложная софтина, которая при этом невероятно херово задокументирована. Всем нужно поучится писать документацию у LLVM я считаю.
I am trying to do memory tracking system using the linkage wrapping of allocators and deallocators calls. I am using C++ 11 so here is the list of wraps that I have:
#define wrap(symbol) __wrap_ ##
Релокация
Если что, до Кипра долетел, все норм. Пришлось на день залететь к арабам, погулять по Дубаи, так что в целом даже есть плюсы. Уже во всю занимаюсь всякими бумажками и поиском жилья.
Количество русскоговорящего населения немного поражает. В алкогольном отделе в магазине вообще не покидает ощущение, что ты в Duty Free просто зашёл. А местные киприоты пока попадались только очень приятные.
И левостороннее движение первые несколько часов удивляло, особенно движение по кольцу. Но как ни странно к этому очень быстро привыкаешь. За рулём поездить ещё не успел.
Перелет
Приключение со мной случилось на первом же перелёте. Меня тупа не пустили на самолёт.
Я должен был лететь с транзитом в Германии и немцы сказали, ты русский, по любому выбежишь в Германии и попросишь убежища, нет спасибо.
В итоге пришлось заночевать в аэропорту, щяс жду новых билетов...
Я тут завтра переезжаю на Кипр на ПМЖ на неопределенный срок, или как это модно сейчас говорить — релоцируюсь! Интересно будет последить за моими приключениями в формате кругляшей?
Кстати, пару месяцев назад проводил опрос, по поводу релокации. После мобилизации и прочего, давайте освежим данные.
Контейнеры в gdb
Не могу нарадоваться своей сегодняшней находке просто!
Это скриптик, который позволяет красиво печатать содержимое STL-контейнеров в дебаггере. Не надо больше мучаться, чтобы найти поля со значениями в куче мусора из полей контейнеров.
Там в комментах написано, как им пользоваться. Напишите еще для stringstream такую, кому не в падлу плиз.
11 друзей strict aliasing'a
Ответ на StackOverflow, прочтения которого с переходом по всем ссылкам будет достаточно, чтобы узнать о большей части проблем в С/С++, возможных при колдовстве с типами данных.
Потратить время сейчас, чтобы понять все, о чем тут речь — сэкономить себе уйму часов в будущем, отвечаю.
This contribution is made after "Building an Interpreter from scratch" course. Generated parser on python contains semicolons that have to be removed manually every time you regenerate it...