Size: a a a

2020 October 09

c

codingteam@cjr in codingteam
Minoru
@gsomix: какой?
источник

g

gsomix in codingteam
codingteam@cjr
Minoru
@gsomix: какой?
На CodinGame.
источник

g

gsomix in codingteam
источник

Jøhn Đøꝩsøn in codingteam
ttldtor
У меня были этапы:
1) сделать что-то высокоуровневого уровня, какая-то работа с базой, асинхронщина и т.д... В основном, какие-то проблемы с работой Tokio или одновременной работой одного с другим и третьим. Затем меня отвлекла работа
2) сделать что-то простое. В C++ Страуструп представляет разработку консольного калькулятора. Окей, давайте научим для начала считывать чиселки. Тут мантикор отвлёкся на какую-то простую задачку из кодварсов. Прочитать количество чиселок, чиселки из строки и вывести результат. Мантикор решил не считывать всю строку целиком, и парсить, мантикор не стал пользоваться внешними крейтами и решил ограничиться стандартной библиотекой и .... проиграл. Отвлёкся на работу
...
тут были этапы возни с юникодом
...
5) мантикор написал считывалку чиселок и понял, что выглядит это как говно (которое обычно прячут от людей) и .... отвлёкся на работу
А в 1.23 и async то ещё не было
источник

t

ttldtor in codingteam
Jøhn Đøꝩsøn
А в 1.23 и async то ещё не было
Гм, я мог ошибиться. А Tokio тоже не было тогда?
источник

t

ttldtor in codingteam
ажно 11 дней
источник

c

codingteam@cjr in codingteam
Minoru
@gsomix: я что-то не слишком горю желанием
источник

g

gsomix in codingteam
Ладно. Потренируюсь, подожду ICFPC.
источник

c

codingteam@cjr in codingteam
Minoru
какие челленджи, какой ICFPC — я сейчас расскажу, на что только что потратил полчаса
источник

c

codingteam@cjr in codingteam
Minoru
Newsboat локализируется с помощью gettext. В начале программы мне нужно вызвать bindtextdomain("newsboat", "/usr/share/locale")
источник

c

codingteam@cjr in codingteam
Minoru
второй аргумент может меняться в компил-тайме — например, BSD обычно используют /usr/local/share/locale
источник

c

codingteam@cjr in codingteam
Minoru
аргумент собирается из нескольких аргументов, передаваемых в Make. Тупо берём переменные и через слеши склаиваем в итоговый путь
источник

c

codingteam@cjr in codingteam
Minoru
и вот мне не повезло вызвать make prefix=/home/minoru/src/newsboat/fakeroot/
источник

c

codingteam@cjr in codingteam
Minoru
по идее, итоговый путь должен был получиться /home/minoru/src/newsboat/fakeroot/share/locale
источник

c

codingteam@cjr in codingteam
Minoru
но т.к. в конце prefix слеш, получался /home/minoru/src/newsboat/fakeroot//share/locale — что не страшно, можно хоть тысячу промежуточных слешей воткнуть, это все равно всё тот же путь
источник

c

codingteam@cjr in codingteam
Minoru
дальше эта склеенная строка передавалась в GCC в виде дефайна, то есть g++ -DLOCALEDIR="/home/minoru/..."
источник

c

codingteam@cjr in codingteam
Minoru
и где-то в коде у меня был вызов bindtextdomain("newsboat", QUOTE(LOCALEDIR))
источник

c

codingteam@cjr in codingteam
Minoru
QUOTE — это знаменитый «двухэтапный» макрос, добавляющий вокруг любого токена двойные кавычки
источник

c

codingteam@cjr in codingteam
Minoru
и вот запускаю я приложение, а оно пытается брать локали из /home/minoru/src/newsboat/fakeroot. То есть остаток пути, share/locale — теряется
источник

c

codingteam@cjr in codingteam
Minoru
в общем, не важно, как я это отлаживал и минимизировал, суть в том, что ответ был на поверхности: -DLOCALEDIR="..." добавляет в код #define LOCALEDIR ...
источник