пятница, 22 июля 2016 г.

Переполнение

В процессе написания своих прозрачных скроллбаров для IDEA я наступил на классические грабли.

Для преобразования целого числа [1..100] в целое число [1..10] надо ( value * 10 / 100 ), причём сначала умножить, чтобы точность не потерять. Это известная целочисленная арифметика.

Но в целочисленной арифметике есть проблема переполнения, с которой и столкнулись люди на чрезвычайно длинных файлах. Например, если миллион умножить на две тысячи, то получим 2 000 000 000, а если на три, то получим -1 294 967 296.

Samsonite

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

Через пару дней звоню, а мне говорят, что бегунков для молнии, которой более десяти лет, у них нет. Причём, сами не позвонили, когда про это узнали. Ладно, говорю, меняйте молнию...

Во вторник звоню - говорят, что готово. Пришёл забирать и обнаружил, что поставили молнию с одним бегунком. Пришлось высказать, что о них думаю, и заставить переделывать.

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

Сегодня я всё-таки забрал рюкзак. Результат мне нравится. Особенно то, что на новые бегунки поставили старые брелки.