uint16_t

Apr. 21st, 2009 01:41 pm
redis: (Default)
[personal profile] redis
Дорвался, стало быть, мой измученный Джавой организм до языка Цэ-пэ-пэ. Дорвался и написал самостоятельно и с нуля Программный Продукт (сокращенно - пи-пи).

Проверил, протестировал, еще раз перепроверил - в связи с нелегкими временами тестера на мой продукт нет, приходится самому. Работает мой пи-пи, любо-дорого посмотреть.

Послал заказчику. Работает и у заказчика. Ну, то есть они не сразу разобрались, потом наехали по причине того, что не поняли, получили пояснение, поняли, поставили, запустили... работает! Работает пи-пи, черт его побери!

А потом вдруг хлоп-шлеп, нет, больше не работает. С одними файлами работает, с другими - не-а, не работает. Полезли разбираться. Долго ли коротко ли сказка сказывается, но разобрались. Не работает с файлами больше 10 килобайт, если верить заказчику. Ну, так они тестировали - 1 килобайт, 10, 100... Последний - не работает. Глючит пи-пи, ерунду выдает на выходе.

Полез смотреть пи-пи. Нашел проблему. Так и есть, длина файла мною объявлена как uint16_t. 64 килобайта и не килобайтом больше.

Сижу. Думаю. С чего я такой идиот-то, черт меня побери?.. Еще подумал. Вспомнил! Вспомнил и понял!

На Спектруме, при его страничной памяти на 64 килобайта, шестнадцати бит хватало для описания максимальной длины файла. Угу, на Спектруме... Да-да 15 лет тому назад... uint16_t, он же dw на ассемблере... Нет-нет, совершенно честно, в 1994-м...

Свой пи-пи я, конечно, поправил. Но интересно, сколько еще подобных неосознанных флэш-бэков в моем коде?..

Date: 2009-04-21 03:00 pm (UTC)
From: [identity profile] monstered.livejournal.com
Всё-таки Спектрум оставил на тебе неизгладимый след! :)

Date: 2009-04-21 05:33 pm (UTC)
From: [identity profile] cetekot.livejournal.com
И правильно! Нечего файлы больше 64к делать!

Date: 2009-04-21 05:38 pm (UTC)
From: [identity profile] b00ter.livejournal.com
Это чо... Тут один спец-продукт занимался трансляцией псевдо-потока видео в сеть. Так вот, там длина файла мерилась как 32 бита со знаком, т.е. 2Гб в пределе. Но видео же нонче тяжелое, 2Гб - курям на смех... Благо сейчас пофикисили.

Date: 2009-04-22 08:00 am (UTC)
From: [identity profile] redis.livejournal.com
Хех, ну я своим тоже лимит на 2Гб поставил, чтобы не расслаблялись :)

Date: 2009-04-24 08:00 am (UTC)
From: [identity profile] tarkhil.livejournal.com
Кхм. А для кого делали тип off_t?

В общем, запомню, кому нельзя заказывать софт.

Date: 2009-04-24 08:57 am (UTC)
From: [identity profile] redis.livejournal.com
off_t не годится, так как далее используется собственный протокол с собственной сериализацией.

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

Не из Мозиллы пишете? Если из нее - сотрите, там тоже мои потенциальные баги. И в магазинах карточкой не платите, там тоже мои программы могут оказаться :(

Date: 2009-04-24 09:01 am (UTC)
From: [identity profile] tarkhil.livejournal.com
Собственный протокол с собственной сериализацией?... Это смелая идея, но все равно непонятно, почему не получается пользоваться стандартными типами данных, а нужно непременно изобретать свои, причем, неподходящие.

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

Date: 2009-04-24 10:46 am (UTC)
From: [identity profile] redis.livejournal.com
http://en.wikipedia.org/wiki/Stdint.h

Это насчет "изобретать свои". Незнание, соединенное с апломбом - плохое сочетание.

Строго между нами - перед тем, как начать критиковать чужой код, надо хоть раз его увидеть. Иначе выходят глупые нападки неизвестно на что. А если и у самого знаний не хватает ("изобретать свои"), так и вовсе глупо. Что мы и имеем честь наблюдать в комментариях к данной заметке :(

Date: 2009-04-24 11:03 am (UTC)
From: [identity profile] tarkhil.livejournal.com
Именно изобретать свои. В stdint.h прописаны платформо-независимые типы данных.

Делать бинарный многоплатформенный протокол - дело... ну, скажем так, для того, чтобы на это замахиваться, нужны ОЧЕНЬ веские основания.

Я уже 12 лет имею дело с программистами, и, увы, стиль мышления 90% их изучил досконально. Мне не обязательно видеть код, достаточно увидеть одну характерную ошибку.

Date: 2009-04-24 11:24 am (UTC)
From: [identity profile] redis.livejournal.com
"Очень веские основания" в Википедийной статье упоминаются прямо таки в первом абзаце, товарищ Апломб. Видимо, авторы заметки знают больше, чем Вы. Я понимаю, что такого не может быть, 12 лет, 90 процентов, все дела, понты, но почему-то так случилось.

Вообще - скучный и бестолковый наезд. Знания о продукте ноль целых, ноль десятых. Знания о причинах тех или иных решений - ноль целых, ноль десятых. Одна нехарактерная ошибка (была бы характерная - не было бы смысла о ней писать, удивляясь самому себе) - и товарищ Апломб все обо мне знает. К сожалению, не зная при этом про stdint.h и считая его моей разработкой :(

Писькозакидательство и шапкомерянье "я уже 12 лет..." не пройдет - мой опыт наверняка не меньше и наверняка не хуже, снова облом. Мои соболезнования (и чтобы больше карточкой, да в магазине - ни-ни!)

Profile

redis: (Default)
redis

August 2025

S M T W T F S
      12
3 4567 89
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 9th, 2025 06:24 pm
Powered by Dreamwidth Studios