@hirthwork

Тег programming в блоге hirthwork

hirthwork

Suffering Oriented Development: Don't build new technology until you feel the pain of not having it.

hirthwork

hirthwork

Хуёво быть занудой. Вот очень хуёво. Вот есть у меня указатель на объект в одном треде. Если очередь, которую разгребает другой тред. И я вот сижу и пытаюсь выяснить, гарантируется ли, что если я присвою значение полю в объекте, а затем положу его в очередь, то разгребающий тред увидит то значение, которое я присвоил, а не то, которое было до этого.

hirthwork

Сап, пойнтач. Есть одна ойтишная компания. В одном из своих крупных и наукоёбких проектов эта компания решила заюзать опенсурсную либу для перемножения чиселок.
А я вообще тут сбоку и мне надо было обёртку над проектом в виде *.so-шки собрать, внедрить, да нагрузку из своих компонентов пустить.
Скоро сказка сказывается, да нескоро gdb запускается...
Я вот точно помню, что эта падла год назад вполне себе работала. А сейчас сегфолты ловлю. Ну ладно, первый час дебага — это я сам виноват, создал у себя в обёрточке класс, который совпал по имени с другим присутствующим в том же большом репозитории. А вот потом начался настоящий секас и он мне не понравился.
Запускаешь класс с одним конфигом — норм обрабатыват. Запускаешь с другим — сегфолт. И вот я точно помню, что эта падла год назад вполне себе работала с обоими конфигами. А сейчас сегфолт.
Расчехлил свой старенький gdb. Полез корку читать. А там ебеня исходников, шаблонов лес, макросы трёхэтажные и прочее хуйпоймичо в недрах этой опенсурсной либы.
Связавшись с космосом, я таки допёр, что это не сегфолт, а стековерфлоу (нет, не сайт).
И знаете почему там не сайт? Потому что грёбаные байтоёбы все локальные массивы размером меньше 128КБ аллоцируют на стеке. А то что несколькими уровнями выше тоже всё аллоцировано на стеке их не ебёт. И то что стек скоро дно пробьёт их тоже не ебёт.

В общем, не будьте байтоёбами. Пожалуйста.

hirthwork

Вопрос религиозных предпочтений:
1. Прога запускается из cwd /home/dpotapov/my-prog/
2. В качестве первого параметра передаётся путь к конфигу /etc/conf.d/my-prog.conf
3. В конфиге прописан относительный путь к подконфигу common-conf.d/my-subconf.conf

Вопрос: по какому пути "правильно" my_subconf.conf?
1. Все реализации программ "на отъебись" будут искать в /home/dpotapov/my-prog/common-conf.d/my-subconf.conf
2. Чувство прекрасного, лень (движитель прогресса) и здравый смысл говорят, что резолвить надо относительно конфига из которого читали, т.е. /etc/conf.d/common-conf.d/my-subconf.conf
3. ЭОС

Лайк если первый вариант, репост если второй

hirthwork

Забавная история. Привык что в джаве статическая инициализация класса происходит в первую очередь при его загрузке. Однако не всё так просто — до статической инициализации происходит инициализация полей enum'а:

enum MyEnum {
    INSTANCE;

    static {
        System.out.println("static");
    }

    MyEnum() {
        System.out.println("c'tor");
    }
}

public class Main {
    public static void main(final String[] args) {
        System.out.println("main");
        System.out.println(MyEnum.INSTANCE);
    }
}

Печатает:

main
c'tor
static
INSTANCE
hirthwork

Опыт — это когда тест подозрительно долго выполняется, а ты сразу начинаешь грепать логи на предмет NullPointerException.

hirthwork

Ну пиздец, теперь весь код с синхронайзедов на локи переписывать: https://www.ibm.com/develop...-jtp10264/index.html

hirthwork

АХАХАХА! Теперь я выхватил stack oveflow сплошь состоящий из деструкторов std::vector.

hirthwork

Я решил вам признаться в чём-то крайне постыдном. Когда я был первокурсником и только начинал изучать плюсцы, то операторы присваивания у моих классов возвращали void.

hirthwork

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

hirthwork

TL;DR: Влияет ли на ПО эффект плацебо?

Разбираюсь с одной очень неприятной багой. Наткнулся на код начальника, который не смог понять.
Ну, то есть из контекста и названия функции понял, что она должна делать, но вот что она в реальности делает, я не понял. Например, там объекты сортируются по значению их хеш-кода (рандом щитай).
Написал начальнику, спросил что я упускаю. Он не сразу сказал, что "в лоб" решение работает медленно из-за random seek'ов по диску, а если отсортировать объекты в порядке создания, то становится норм. Ткнул его носом в код, предположил где он опечатался. Он признал, что реально такая опечатка, но сказал, что работать стало действительно быстрее.
Судя по всему последовательно создаваемые объекты в Java с высокой долей вероятности будут иметь возрастающие хеш-коды. Скорее всего из-за того что на куче они будут создаваться последовательно, один рядом с другим.

hirthwork

посоны, я тут читаю Instruction latencies and throughput for AMD and Intel x86 processors и тут у меня такой вопрос возник, чо реально в плане производительности нет разницы что написать в коде if (i == -1) и что написать if (i < 0)?

hirthwork

Не используйте FilterOutputStream — это говно: http://grepcode.com/file/re...utputStream.java#120

hirthwork

знатно объебался со своим повсеместным использованием try-with-resources
уж если возможна в логике ситуация, когда close вызывать не нужно, то и нехуй try-with-resources тогда в этом месте использовать

hirthwork

как правильно host list или hosts list?

hirthwork

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

hirthwork

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

hirthwork

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

hirthwork

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

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

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