@hirthwork

Тег programming в блоге hirthwork

hirthwork
20 Jun 19:23
hirthwork

кто брал мои руки и писал ими на плюсцах? какого хуя я после объявления класса ; ставлю?

hirthwork
20 Jun 19:19
hirthwork

Я пока точно не уверен, но скорее всего через полчаса вы получите очередную порцию нытья про то что type erasure в джаве — ёбаное говно.

hirthwork
08 Jun 16:58
hirthwork

обожаю CRTP. каждый раз радугой кончаю, когда использую

hirthwork
24 May 14:29
hirthwork

Оказывается, при выбросе исключения деструкторы объектов будут вызваны только если эксепшен был пойман в catch. В противном случае вызов деструкторов implementation-defined. И тебе может не понравиться тот define, который выбрал твой implementation, %username%. Пруф: https://stackoverflow.com/a/39963032

hirthwork
18 May 17:37
hirthwork

чтобы в тесте использующем флоты не приходилось писать магические числа типа 0.080000006 пришло заменить родные и привычные 0.1,0.2,0.3 на 0.5,0.25,0.8125

hirthwork
24 Mar 11:38
hirthwork

Вы не поверите, но на некоторые методологии разработки есть патенты: https://www.google.com/patents/US20120023476

hirthwork
10 Mar 01:45
hirthwork

дваждымандопроёбище блядь
оказывается, что java не перечитывает /etc/resolv.conf, если он изменился. нужно изъёбываться и вызывать через JNI res_init(3), чтобы изменения подхватились
подробности тута и по ссылкам: https://groups.google.com/f...sympathy/Z8t06cqaWQE

hirthwork
02 Mar 17:53
hirthwork

Скажите, а хитровыебанное подписывание запросов приватными ключами, оно неудобно только в джаве или же оно в целом кал энтерпрайзного говна?

hirthwork
22 Feb 02:03
hirthwork

Какова гранулярность сетевых буферов в промышленных роутерах?
Ясень пень, что даже если у меня на всём пути от источника до приёмника включены jumbo frame, то всё равно по производительности есть разница между тем что я буду слать запросы длиной в 1 КБ или в 8 КБ (из которых 1 КБ — полезная информация, а 7 КБ — свежие смехуёчки из интернетов), потому что эти данные где-то лежать должны, в буферах приёма/отсылки, например, не говоря уже о пямяти.
В общем, каков минимальный размер пакета ниже которого оптимизировать уже нет смысла?

hirthwork
21 Feb 15:37
hirthwork

Что бывает, когда сишник пытается писать на джаве: https://github.com/luben/zs...InputStream.java#L52

hirthwork
16 Feb 09:26
hirthwork

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

hirthwork
09 Feb 11:51
hirthwork

Вопрос профессионалам: что будет, если в многопоточном приложении вызвать close(2) дважды на одном и том же файловом дескрипторе?
Ответ: будет race condition с очень занятными сайд-эффектами самым безобидным из которых будет broken pipe.

hirthwork
01 Feb 20:09
hirthwork

Кодекс правил для разработчика — булшидо

hirthwork
26 Jan 12:42
hirthwork

было два файла с кучей дублирующегося кода. написал базовый класс, а те два от него отнаследовал. вроде бы соотношение insertions/deletions должно стремиться к 1/2 справа, а на деле получилось 126 insertions(+), 481 deletions(-) и вот как такое соотношение могло получиться я не очень понимаю

hirthwork
26 Jan 10:15
hirthwork
hirthwork
24 Jan 14:46
hirthwork

функция парсинга и валидации конфига — 66 строк
функция которая выполняет всю работу — 40 строк

hirthwork
20 Jan 11:43
hirthwork

Неожиданно ленивая загрузка классов в Java иногда помогает найти race condition даже без нагрузочного тестирования сервиса. Вчерашний пример. Было:

void consume(final PipedInputStream in) throws IOException {
    while (true) {
        int read = in.read(buf);
        ....
    }
}

Стало:

void consume(final PipedInputStream in) throws IOException {
    try (InputStream in = new ThirdPartyWrapper(in)) {
        ....
    }
}

Поскольку класс ThirdPartyWrapper использован был впервые и это вообще был первый вызов функции consume, то JVM запустила ClassLoader, который загрузил класс из jar-ника, который сам по себе довольно тяжёлый, да ещё и на медленном HDD находится.
Короче говоря, от вызова функции до чтения первого байта при первом запуске стало проходить несколько миллисекунд. За это время другой тред стал успевать испортить данные в стриме и сделать его нечитабельным. Вот так я обнаружил race condition, который более-менее стабильно воспроизводится. А с этими вашими плюсцами мне б проблему пришлось в продакшене ловить

hirthwork
28 Dec 2016
hirthwork

socket.getOutputStream().flush() не делает нихуя
всё потому что SocketOutputStream является наследником FileOutputStream, который во flush() не делает нихуя
всё потому что они работают напрямую с файловым дескриптором и вызывают write(2), который не буферизует нихуя
на самом деле в сокете буферизует, но только если включен Nagle's algorithm a.k.a. TCP delay, который включен по умолчанию и выключается при помощи TCP_NODELAY

hirthwork
27 Dec 2016
hirthwork

hirthwork
27 Dec 2016
hirthwork

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.