Category: работа

Category was added automatically. Read all entries about "работа".

Рабочее место кулхацкера :)

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

Пришлось городить инженерную конструкцию. :)


Collapse )

Качество программного кода

Работая со своим кодом, начатым лет 15 назад и периодически переделываемым, регулярно огорчаюсь "грязным" решениям, вроде применения двух объектов синхронизации там, где можно было бы обойтись одним. Но периодически попадается код, на фоне которого самый грязный мой выглядит чуть ли не эталоном аккуратности и изящества. :)

Год назад приспичило мне портировать драйвер SiLabs для их микросхем CP2101-2104 с WinCE5.0 под 4.2 (Pocket PC 2003). Списался с ними, попросил исходники, они их прислали. Скомпилировалось легко, а вот работало только в отладочной конфигурации, со включенными отладочными сообщениями, и то не всегда. Понятное дело - ошибки синхронизации. Полез копать код - а он не просто ужасен, а ужасен-ужасен. Синхронизация сделана с помощью десятка событий, которые в сложной последовательности сбрасываются и устанавливаются, причем в ряде мест это очень подозрительно в плане гонок. Все пронизано принудительным преобразованием типов указателей - даже там, где легко можно было бы обойтись без этого, отдав компилятору контроль за соответствием.

Ну и прелести вроде безусловного захвата критической секции с последующим условным освобождением в нескольких местах, где делается преждевременный выход. Формально написано без goto, а фактически - оно самое. Или условный захват и безусловное освобождение.

В итоге после нескольких дней активного допиливания и устранения наиболее кривых мест оно по-прежнему отказывается работать стабильно, хотя виснуть стало реже. В каждом случае комбинация взаимной блокировки или вечного ожидания получается новая - при таком количестве объектов синхронизации оно и неудивительно. Интересно, насколько у меня еще хватит терпения. :)

А сейчас оказалось, что это ни разу не их собственный код - прототипом послужил драйвер MDD из дистрибутива WinCE. В нем такая же жуткая грязь, даже удивительно, как это может работать стабильно...

Дежавю :)

Прелестная статейка. Один-в-один ранний совок. Крестьяне голодают - отобрать земли у помещиков, отдать крестьянам. После этого 20-30% крестьян продолжает работать, остальные ждут, когда еще что-нибудь заберут и дадут. Не дождавшись, нанимаются к той работающей части, которая именуется кулаками, и продолжает жаловаться. В итоге земли отнимаются уже у кулаков, работать становится вовсе некому, поэтому приходится всех загонять в колхозы и опять же заставлять, как тот помещик, и все заработанное опять же отбирать.

"Разве ж тебе царь-батюшка не давал пирожками торговать?" (C)