Пещера отшельного фердопердозника

2009-05-14

Конструктор для мальчиков пожилого возраста

Рубрика: Без рубрики — Метки: , — datacompboy @ 03:36:40 | 430 views

Дано: Бойлер на 80 литров в вертикальном цилиндрическом исполнении, невозможность сверлить стенку (в связи с отсутствием места где и отсутствием разрешения хозяйки), отсутствие холодной воды как ускоряющий фактор.
Задание: Обеспечить квартиру горячей водой.

КонструкторРешение: берём 5 полутораметровых кусков угольника 2 мм толщиной и 2.5 см шириной, 25 комплектов болт + шайба + гайка, 4 ножки, 4 шайбы и 8 гаек для ножек (я обошелся 2 шайбами и 4 гайками так как два уголка специально были с наваренными гайками под ножки), 10 крепёжных уголков (треугольная пластина с отверстиями для соединения в углу), 25 комплектов болт+шайба+гайка на 8 и 4 комплекта болт+шайба+шайба побольше+гайка на 10 для крепления самого бойлера.
Режем на части: 2 куска пополам (по ~75см получаем их), от двух кусков отрезаем по 50см, и оставшиеся два режем на 3 части.
С полученных кусков напильником снимаем отовсюду фаски, моем с мылом, покрываем полимерной краской, ставим в печь прожариться 10 минут при температуре 180 градусов.
Свежезажаренные кусочки заворачиваются в газетку и доставляются домой.

Далее идёт процедура скручивания, в процессе которой болтов не хватило, детали из-за того остались лишние. но бойлер висит, и меня (а я по-тяжелее чем 80кг буду) выдерживает как вкопанный.
Собранный конструктор Подвешенный бойлер

Место для установки Теперь полученную конструкцию нужно разместить так, чтобы вдоль стены вместились и бойлер, и мойка, и стиральная машина. При этом шкафичик, стоящий слева, должнен так же остаться юзабелен «и ваще».

Впереди разводка: из 1 горячей трубки сделать две (одна из бойлера, вторая в кран) и из 1 холодной сделать три (холодная в кран, в стиралку и в бойлер). Всё это сопровождается кранами, боченками, муфтами и тройниками в условиях крайне тяжелого доступа до всех элементов…

Для разводки был произведён апгрейд задней стенки шкафчика. На горячую трубу накручен тройник, в ответвление котрого вкручен обратно шланг подключения горячего крана, и кран, регулирующий подачу горячей воды из бойлера в систему водоснабжения квартиры — горячая труба по счастливому стечению обстоятельств проходит достаточно высоко, таким образом доступ до крана будет без отодвигания мойки.

На холодный кран навинчен тройник, в конец которого вкручен шланг до крана мойки. На ответвлении установлен кран, отсекающий бойлер и стиральную машину, на кран накручен крест, в одно ответвление которого вкручен еще один кран, работающий просто заглушкой, а в два других шланги до стиральной машины и бойлера. Вся получившаяся конструкция находится под днищем мойки, что осложняет выключение бойлера и стиральной машины при необходимости, но работает.
Исходники трубАпгрейд задней стенкиРазводка, вид 1Разводка, вид 2

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

2009-05-12

Моя порода

Рубрика: Без рубрики — Метки: — datacompboy @ 13:40:29 | 489 views

Я из породы хакеров. Не тех, что ломают, ради порчи, но тех что предпочитают разобраться, и могут сделать что-то там, где уже казалось бы всё. «Бывалый мастер напильника»: доточить что-нибудь, причем почти неважно какой язык и какая задача.

Недавно до меня дошло почему так. Всё пошло из детства: тяжелое детство, 8-битные игрушки. Само детство прошло за БК-001, в основном, и ДВК. Позже был Robotron 1910, позже EC-1840. Было чуть-чуть спектрума, но чисто для игрушек. В районе 6го класса у меня появился свой первый комп Специалист. На базе ВМ80 (аналог 8080), с 2к видеопамяти (монохром), 2к пзу (записано было два «монитора») и почти 48к озу. Разворачивайся — нехочу. Да вот и правда, не хочу. Листинги по 6-8 страниц гекс кодов набирай и радуйся — разумеется пара ошибок при наборе и в самом интересном месте игра виснет. Потому главная развлекуха была — писать что-нибудь своё. Прямо в гексредакторе. Фломастером поверх монитора обводились условные жампы, в которые еще предстояло ввести нужный адрес. Игрушки были скушные, но само программирование было гораздо интереснее игрушек.

Как следствие, мозг научился принимать решения в режиме жестких ограничений. И если мне дана полная свобода действий, по типу: бери что хочешь, делай что хочешь… Я впадаю в прострацию. Сразу в голову лезут десятки способов как сделать, общее количество плюсов и минусов у этих способов равное, так что как тот осёл: ешь не хочу, а что есть не знаю.

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

Логическим следствием, стала «лень»: вместо того чтобы взять и сделать что-то, я предпочитаю найти что-то делающее близкие/подобные/составные части, разобрать их и сделать своё. Иногда от найденного остаются лишь два болтика на магните внутри корпуса — но они были нужны чтобы сделать решающий выбор. Это как ветер, который качает соломинку в куче, делая тем самым кучу ближе, и именно к ней я отправляюсь.

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

2009-05-06

my2pg.pl: продолжение

Рубрика: web programming — Метки: , , , — datacompboy @ 15:00:45 | 485 views

как выяснилось, одного фикса с ` ему мало.
Еще обнаруженные проблемы:
1. В после конверсии INSERT в COPY числа с плавающей точкой (1.0 например) превращаются в две колонки. Бред тот еще. Лечится правкой $colRe:

my $colRe = qr/(?:'[^'\\]*(?:\\.[^'\\]*)*'|[\w.+-]+)/;

2. DROP TABLE IF EXISTS оставляет после себя висящую «;». Мелочь, а неприятно. Заодно остаются USE …; LOCK и UNLOCK…
Вылечилось заменой блока дропа на:

s/^DROP\s+TABLE\s+IF\s+EXISTS([^;]+);//;
# remove USE database;
s/^USE\s([^;]+);$//;
# remove LOCK & UNLOCK clauses
s/^(UN)?LOCK TABLES[^;]*;$//;
# remove mysql-specific comments
s/^\/\*![0-9]+ .*?\*\/;$//;

3. ENUM тип теперь поддерживается нативно, а потому сишный код для него лишний. Выкинута вся генерация .cшки относительно этого типа, и перед s/enum… воткнуто

$types .= "CREATE TYPE $typename AS ENUM ('".join("','",@item)."');\n";

4. Ну и как писано выше –

s/`//g;

после

if($tabledef) {

Взять поправленную версию можно тут: my2pg-133

Дополнение: так же обнаружились проблемы с импортом NULL полей и добавлена обработка ON UPDATE CURRENT_TIMESTAMP.

2009-05-05

Попробуем оживить блог работой.

Рубрика: web programming — Метки: , , , — datacompboy @ 17:17:12 | 259 views

Что ж, попробую запустить блог полезными записями..

Сегодня понадобилось отконвертить дамп из мускула для скармливания pgsql’ю. Лёгкий гуглинг в момент нашел скрипт my2pg.pl, однако он сломался на первом же: бэк-тики в названиях (`field`).
Фикс оказался самым простейшим, после

if($tabledef) {

воткнуть

    s/[`]//g;

Сайт работает на WordPress