![](https://diary.ru/assets/e0936c77/86122440.png)
23:51
Untitled [459]
Самый надёжный способ сохранить пароль в тайне -- это забыть его.
23:59
Тупоконечники
Ошибка в документации. Написано, что устройство должно в качестве конца сообщения присылать сигнатуру 0xA5A4A3A2. И особо указано, что менять порядок байт запрещается!
Хорошо, что приведён пример пакета. В пакете указано:
байт 60: 0xA5
байт 61: 0xA4
байт 62: 0xA3
байт 63: 0xA2
Однако и устройство и контроллер используют обратный порядок байт (это известно по описанию некоторых команд). То есть, с обоих точек зрения это число 0xA2A3A4A5. А я думаю, почему это оно не реагирует.
Хорошо, что приведён пример пакета. В пакете указано:
байт 60: 0xA5
байт 61: 0xA4
байт 62: 0xA3
байт 63: 0xA2
Однако и устройство и контроллер используют обратный порядок байт (это известно по описанию некоторых команд). То есть, с обоих точек зрения это число 0xA2A3A4A5. А я думаю, почему это оно не реагирует.
Комментарии (2)
23:59
Ещё про упаковку
Я написал о проблеме, которая может возникнуть из-за неожиданного выравнивания полей структуры, но не написал, что же с этим делать.
Сначала несколько важных замечаний:
Решение такое. Надо просто принудительно при описании каждой структуры перед ней прописывать желаемую упаковку. Однако тут появляется проблема -- если после нашей структуры будут другие структуры, они получат уже новую упаковку, что потенциально попортит жизнь библиотекам, заголовочные файлы которых включены после нашего. Попортят тем же способом, каким кто-то попортил жизнь нам. Однако разработчики предусмотрели на этот случай возможность сохранения и восстановления значения упаковки. Итак, вот что надо делать при описании каждой структуры:
pack(push) в начале сохранит, а pack(pop) в конце восстановит старое значение упаковки (вдруг оно будет кому-то нужно?).
pack() без параметров установит значение упаковки по-умолчанию, которое можно настроить перед началом компиляции (подробнее тут), что позволит гибко настраивать упаковку для различных архитектур. Если же нужна конкретная упаковка для данной структуры, можно написать #pragma pack (N), где вместо N должно стоять число 1, 2 или 4 (компиляторы микрософт для 64-битных систем также поддерживают 8 и 16). Идентификатор, сделанный через #define, вместо N подставить нельзя.
Сначала несколько важных замечаний:
- Встретил я указанную проблему в компиляторе GCC под ARM.
- По документации результат #pragma pack распространяется на упаковку полей структуры, описание которой идёт сразу после директивы. То есть, по идее, значение упаковки не должно было переноситься на дальнейшие структуры. Однако оно переносилось.
- #pragma pack -- микрософтовская штучка и была добавлена в GCC для совместимости. В компиляторах от микрософт она может работать несколько иначе. В GCC есть более мощный аналог -- __attribute__((packed(...)))
Решение такое. Надо просто принудительно при описании каждой структуры перед ней прописывать желаемую упаковку. Однако тут появляется проблема -- если после нашей структуры будут другие структуры, они получат уже новую упаковку, что потенциально попортит жизнь библиотекам, заголовочные файлы которых включены после нашего. Попортят тем же способом, каким кто-то попортил жизнь нам. Однако разработчики предусмотрели на этот случай возможность сохранения и восстановления значения упаковки. Итак, вот что надо делать при описании каждой структуры:
#pragma pack(push)
#pragma pack()
//#pragma pack(N)
struct A
{
//...
};
#pragma pack(pop)
pack(push) в начале сохранит, а pack(pop) в конце восстановит старое значение упаковки (вдруг оно будет кому-то нужно?).
pack() без параметров установит значение упаковки по-умолчанию, которое можно настроить перед началом компиляции (подробнее тут), что позволит гибко настраивать упаковку для различных архитектур. Если же нужна конкретная упаковка для данной структуры, можно написать #pragma pack (N), где вместо N должно стоять число 1, 2 или 4 (компиляторы микрософт для 64-битных систем также поддерживают 8 и 16). Идентификатор, сделанный через #define, вместо N подставить нельзя.
Комментарии (4)
22:57
Untitled [458]
Обнаружил, что на множестве магазинов и иных учреждений появились таблички с надписью "2017". Удивительного тут мало, кроме того, что они почти все одинаковые. Красные с узорчиком. И кроме "2017" ничего не написано, типа все и так знают (а в некоторых местах написано). Когда об'явления о дне города были одинаковыми -- это было понятно. А про новый год что, тоже централизованно распространяют?
23:56
Пилат и Иешуа
Постоянно иду с обеда -- навстречу мне ходит женщина с ребёнком (ведёт его из школы?). В очках. Ребёнку лет 7-8. Женщина всегда идёт уткнувшись носом в землю, а иногда у неё в руках телефон, и тогда она идёт уткнувшись носом в него.
А ребёнок идёт в 10 шагах сзади и немного сбоку. Обычно тоже уткнувшись носом в землю.
А сегодня она вела его за ручку и разговаривала с ним!
А ребёнок идёт в 10 шагах сзади и немного сбоку. Обычно тоже уткнувшись носом в землю.
А сегодня она вела его за ручку и разговаривала с ним!
23:44
Untitled [457]
...у него был чёрный пояс по радиоэлектронной борьбе.
Комментарии (2)
22:37
Untitled [456]
Если на вопрос, почему ты туда-то и туда-то не придёшь, ответ "не хочу" собеседник не принимает или начинает допытываться "почему не хочешь", можно сказать, что у тебя на это время назначен приём у психиатра.
Удивительную вещь встретил. Передаю в функцию указатель на экземпляр структуры, а приходит вместо исходных значений -- мусор.
Смотрю, адреса в памяти совпадают, т.к. указатель передался правильно. Смотрю значения в памяти -- не меняются. Так почему же я передаю одни значения, а получаю другие?
Значит, они по-разному интерпретируются! Но структура одна же. Я включил её определение в .h файле в два .c файла -- в главный файл и в файл с определением функции, которую я вызываю.
Я попробовал поменять типы данных с однобайтных на двухбайтные. И оказалось, что теперь половина значений доходит правильно, но располагается в других переменных!
Короче говоря, дело было в выравнивании данных в памяти. В главном файле где-то в начале (или в одном из заголовков) было установлено #pragma pack(2), а во втором файле -- #pragma pack(4). И уже ПОСЛЕ этого был включен мой заголовочный файл и описанием структуры. В итоге главный файл думал, что выравнивать поля надо по 2 байта на переменную, а второй файл, что по четыре! Т.е. структуры имели одинаковое имя, но были несовместимы двоично! Я непосредственно перед описанием структуры в заголовочном файле поставил #pragma pack(4) и всё стало зашибись.
(пример, иллюстрирующий #pragma pack для тех, кто не в курсе)
Смотрю, адреса в памяти совпадают, т.к. указатель передался правильно. Смотрю значения в памяти -- не меняются. Так почему же я передаю одни значения, а получаю другие?
Значит, они по-разному интерпретируются! Но структура одна же. Я включил её определение в .h файле в два .c файла -- в главный файл и в файл с определением функции, которую я вызываю.
Я попробовал поменять типы данных с однобайтных на двухбайтные. И оказалось, что теперь половина значений доходит правильно, но располагается в других переменных!
Короче говоря, дело было в выравнивании данных в памяти. В главном файле где-то в начале (или в одном из заголовков) было установлено #pragma pack(2), а во втором файле -- #pragma pack(4). И уже ПОСЛЕ этого был включен мой заголовочный файл и описанием структуры. В итоге главный файл думал, что выравнивать поля надо по 2 байта на переменную, а второй файл, что по четыре! Т.е. структуры имели одинаковое имя, но были несовместимы двоично! Я непосредственно перед описанием структуры в заголовочном файле поставил #pragma pack(4) и всё стало зашибись.
(пример, иллюстрирующий #pragma pack для тех, кто не в курсе)
(развернуть список моих статей по Pixel Dungeon и форкам)
Надо было сделать одну статью по новому Ремиксу и описать в нём трёх боссов -- этого, Королеву Пауков и Лича, но этот босс достоин отдельной статьи.
(как убить Владыку Теней)
Надо было сделать одну статью по новому Ремиксу и описать в нём трёх боссов -- этого, Королеву Пауков и Лича, но этот босс достоин отдельной статьи.
(как убить Владыку Теней)
23:59
Коктейль
Еду с челом на машине.
Он: О, -10. Как раз незамерзайка на -10 замёрзла.
Я: А зачем же ты налил на -10?
Он: Да я купил на -20, вот понемногу доливаю в эту...
Я:
.
.
.
Он: О, -10. Как раз незамерзайка на -10 замёрзла.
Я: А зачем же ты налил на -10?
Он: Да я купил на -20, вот понемногу доливаю в эту...
Я:
.
.
.
Комментарии (3)
23:54
? // Эпос о Гильгамеше
Чем-то привлекают произведения из глубины веков. Данное произведение -- не самое древнее сохранившееся, но одно из самых древних. Глубже почти некуда. Написано клинописью на глиняных табличках. И бесполезно представлять себе на месте Гильгамеша одноимённого гражданина из, скажем, Fate/Stay Night, одетого в средневековый доспех. Потому что в те ещё годы даже с простыми шлемами была напряжёнка. А было это в районе 3 тысячелетия до н.э.
Основная проблема данного произведения в том, что оно плохо сохранилось. И тут я пою хвалебную песню т.н. "эпическим повторам", когда одни и те же отрывки повторяются в тексте многократно, поэтому когда на табличке невозможно прочитать слово -- или кусок таблички вообще отвалился -- по дублированным местам можно восстановить, что там было. В том числе, отрывок жалобы Гильгамеша на страх смерти в 10 табличке повторяется трижды (или даже больше), но ни разу не сохранился целиком. Однако сопоставление позволяет восстановить текст почти целиком. Несмотря на это, на текущий момент учёные "собрали" где-то 2/3 текста (это страниц 80 стихами в одну колонку). Но сборка продолжается. Некоторые места известны только в пересказе.
Также любопытно, как сделано, чтобы таблички не путались. В конце каждой таблички присутствует первая строка следующей. Это же указатель! То есть, фактически, такие широко применимые в наши дни компьютерные технологии, как помехозащищённое кодирование методом дублирования, а также однонаправленный список в памяти, были изобретены очень давно.
Главная трудность при чтении -- непонятность некоторых моментов без пояснения переводчика. Когда их прочитаешь -- становится понятно, что, к примеру, в 12 таблице Энкиду спустился в преисподнию за барабанными палочками, будучи живым ещё. А пока не прочитал, думал, что его Гильгамеш наставляет перед смертью (12 таблица вообще выбивается из основного повествования). И хотя в данном эпизоде вариантов нет, в некоторых других я думал, а не ДОДУМАЛ ли переводчик СМЫСЛ? Например, одна из самых главных мыслей произведения, это то, что Гильгамеш в конце отступился от своей цели. Но в тексте она помечена курсивом (т.е. является интерполяцией). И если почти все остальные интерполяции либо неважны с точки зрения смысла, либо восстанавливаются по повторениям/контексту, то откуда взялось именно такое восстановление, непонятно.
Хотя г-н Дьяконов, переводчик, пишет, что это типа гениальное произведение, об'единяющее известные мифы в слитный сюжет, чтобы показать главную философскую идею (о человеческой смертности), у меня было ощущение неровности повествования. Тем не менее, некоторые эпизоды весьма впечатляют. Во-первых, это первая таблица, о том, как некоего Энкиду, доисторического Маугли, выманили из общества диких животных при помощи обнажённой женщины, а потом приучили его к культуре (доисторической, но всё равно культуре). Во-вторых, это история с небесным быком. Её я, пожалуй, перескажу подробнее.
Иштар -- девка ещё та.
Основная проблема данного произведения в том, что оно плохо сохранилось. И тут я пою хвалебную песню т.н. "эпическим повторам", когда одни и те же отрывки повторяются в тексте многократно, поэтому когда на табличке невозможно прочитать слово -- или кусок таблички вообще отвалился -- по дублированным местам можно восстановить, что там было. В том числе, отрывок жалобы Гильгамеша на страх смерти в 10 табличке повторяется трижды (или даже больше), но ни разу не сохранился целиком. Однако сопоставление позволяет восстановить текст почти целиком. Несмотря на это, на текущий момент учёные "собрали" где-то 2/3 текста (это страниц 80 стихами в одну колонку). Но сборка продолжается. Некоторые места известны только в пересказе.
Также любопытно, как сделано, чтобы таблички не путались. В конце каждой таблички присутствует первая строка следующей. Это же указатель! То есть, фактически, такие широко применимые в наши дни компьютерные технологии, как помехозащищённое кодирование методом дублирования, а также однонаправленный список в памяти, были изобретены очень давно.
Главная трудность при чтении -- непонятность некоторых моментов без пояснения переводчика. Когда их прочитаешь -- становится понятно, что, к примеру, в 12 таблице Энкиду спустился в преисподнию за барабанными палочками, будучи живым ещё. А пока не прочитал, думал, что его Гильгамеш наставляет перед смертью (12 таблица вообще выбивается из основного повествования). И хотя в данном эпизоде вариантов нет, в некоторых других я думал, а не ДОДУМАЛ ли переводчик СМЫСЛ? Например, одна из самых главных мыслей произведения, это то, что Гильгамеш в конце отступился от своей цели. Но в тексте она помечена курсивом (т.е. является интерполяцией). И если почти все остальные интерполяции либо неважны с точки зрения смысла, либо восстанавливаются по повторениям/контексту, то откуда взялось именно такое восстановление, непонятно.
Хотя г-н Дьяконов, переводчик, пишет, что это типа гениальное произведение, об'единяющее известные мифы в слитный сюжет, чтобы показать главную философскую идею (о человеческой смертности), у меня было ощущение неровности повествования. Тем не менее, некоторые эпизоды весьма впечатляют. Во-первых, это первая таблица, о том, как некоего Энкиду, доисторического Маугли, выманили из общества диких животных при помощи обнажённой женщины, а потом приучили его к культуре (доисторической, но всё равно культуре). Во-вторых, это история с небесным быком. Её я, пожалуй, перескажу подробнее.
Иштар: Гильгамеш, давай жениться!
Гильгамеш: Неее. Ты всех своих предыдущих любовников кого сгубила, кого что, а теперь ещё и за меня возьмёшься?
Иштар: Папа, он меня обижает! Сделай мне быка, который бы его убил!
Ану: От тебе бык и отстань от меня уже.
Иштар: Теперь ты у меня попляшешь, Гильгамеш!
Гильгамеш: Энкиду, пошли мочить быка.
Энкиду: ок.
*мочат быка*
Энкиду: Эй, Иштар, мы твоего быка замочили! Я бы с тобой то же самое сделал, если бы мог добраться...
Иштар: Папа, папа!
Иштар -- девка ещё та.
Комментарии (2)
23:56
Untitled [455]
Романтические углеводороды.
Комментарии (2)
23:56
Рука-мобильник
Проспал будильник.
Но уже через 15 минут раздался телефонный звонок на городской телефон. Я поднял трубку.
Я: Алло.
Телефон: ...
Я: Алло.
Телефон: ...
Я: Алло...
Телефон: ...
Я: ...
Телефон: Goodbye... (незнакомый женский голос с хорошим английским произношением)
(короткие гудки)
Так я не проспал работу...
Но уже через 15 минут раздался телефонный звонок на городской телефон. Я поднял трубку.
Я: Алло.
Телефон: ...
Я: Алло.
Телефон: ...
Я: Алло...
Телефон: ...
Я: ...
Телефон: Goodbye... (незнакомый женский голос с хорошим английским произношением)
(короткие гудки)
Так я не проспал работу...
Комментарии (1)
23:59
О тетрисе в мю-торрент
Не все знают, что в мю-торренте есть тетрис. Про него я как-то писал. Рассказываю коллеге -- он не знал.
Заходит по удалёнке на свой домашний комп, жмёт t в окошке About -- ничего не происходит. Меняет раскладку -- то же.
Думаю, может в новых версиях это убрали?
Захожу по удалёнке на свой домашний комп, жму t в окне About -- ничего не происходит. Меняю раскладку -- то же. Но у меня точно версия, где тетрис есть. В чём дело?
ОКАЗАЛОСЬ, что только если раскладка на хостовом и удалённом компах совпадает -- тогда он запускается. У нас разные программы для подключения -- TeamViewer и TightVNC.
Заходит по удалёнке на свой домашний комп, жмёт t в окошке About -- ничего не происходит. Меняет раскладку -- то же.
Думаю, может в новых версиях это убрали?
Захожу по удалёнке на свой домашний комп, жму t в окне About -- ничего не происходит. Меняю раскладку -- то же. Но у меня точно версия, где тетрис есть. В чём дело?
ОКАЗАЛОСЬ, что только если раскладка на хостовом и удалённом компах совпадает -- тогда он запускается. У нас разные программы для подключения -- TeamViewer и TightVNC.
23:58
MLG
Было время, когда я проходил Half Life 2 Episode 1. Это что-то вроде дополнения к Half Life 2, но представляло собой законченную короткую игру.
И вот я играю, играю. И замечаю, что нигде нет ни аптечек, ни лечильных станций на стене. Думаю, что это странно, но ладно, мало ли, задумка разработчиков. Пришлось экономить -- по 4-5 раз проходил каждое место, чтобы минимизировать урон от врагов, а идеально -- пройти без урона.
И вот в определённом месте я застрял. Всё вокруг обходил, врагов убил, а что делать дальше -- не знаю. Вижу только -- пропасть. Через неё не перейти. На другой стороне стоит враг, но ко мне не идёт. Надо до него добраться, это ясно. Но как?
Я в него выстрелил.
И он побежал ко мне прямо через пропасть. По пустому пространству. Я его, естественно, убил, а потом пошёл по тому пустому пространству, через которое он шёл ко мне. И перешёл на другую сторону! Невидимый мост.
Я ещё раз удивился остроумию разработчиков.
А потом я случайно узнал, что мост, вообще-то, должен был быть видимым. Оказывается, у меня были битые текстуры, поэтому я не видел аптечек, лечильных станций и моста. Я к тому времени прошёл уже больше 2/3 эпизода.
Впрочем, идея невидимости в играх применяется на самом деле. В Dark Souls 1 и в Lab14 есть невидимые мосты, а в Dark Souls 2 -- невидимые враги и лестницы.
И вот я играю, играю. И замечаю, что нигде нет ни аптечек, ни лечильных станций на стене. Думаю, что это странно, но ладно, мало ли, задумка разработчиков. Пришлось экономить -- по 4-5 раз проходил каждое место, чтобы минимизировать урон от врагов, а идеально -- пройти без урона.
И вот в определённом месте я застрял. Всё вокруг обходил, врагов убил, а что делать дальше -- не знаю. Вижу только -- пропасть. Через неё не перейти. На другой стороне стоит враг, но ко мне не идёт. Надо до него добраться, это ясно. Но как?
Я в него выстрелил.
И он побежал ко мне прямо через пропасть. По пустому пространству. Я его, естественно, убил, а потом пошёл по тому пустому пространству, через которое он шёл ко мне. И перешёл на другую сторону! Невидимый мост.
Я ещё раз удивился остроумию разработчиков.
А потом я случайно узнал, что мост, вообще-то, должен был быть видимым. Оказывается, у меня были битые текстуры, поэтому я не видел аптечек, лечильных станций и моста. Я к тому времени прошёл уже больше 2/3 эпизода.
Впрочем, идея невидимости в играх применяется на самом деле. В Dark Souls 1 и в Lab14 есть невидимые мосты, а в Dark Souls 2 -- невидимые враги и лестницы.
Комментарии (9)
23:36
Фейл-моногатари [05]
В прошивке контроллера написано выдавать сигнал на выход, а осциллограф этого не видит. Никак не мог понять, в чём дело.
Решил -- контроллер работает на частоте 200 МГц. Возможно, сигнал проскакивает так быстро, что осциллограф просто не срабатывает? (он работает в режиме single sequence: при появлении сигнала он начинает измерение данных, а потом показывает статичную картинку начиная с момента появления сигнала)
Думаю, надо для теста уменьшить частоту. Так, какие у нас ещё есть источники для тактовой частоты? О, тактовый генератор 32 кГц! Его и поставлю!
И заменил строчку:
REGISTERS->PERIPHERAL_CLOCK=9<<24;//основной кварцевый генератор; в 24-28 битах должна быть 9,
//остальные биты 0; << -- логический побитовый сдвиг влево.
На строчку:
REGISTERS->PERIPHERAL_CLOCK=1<<24;//генератор 32 кГц на RC-цепочке
Контроллер после этого прошился, но при попытке выполнить пару строк кода завис. И больше он теперь не прошивается!
Решил -- контроллер работает на частоте 200 МГц. Возможно, сигнал проскакивает так быстро, что осциллограф просто не срабатывает? (он работает в режиме single sequence: при появлении сигнала он начинает измерение данных, а потом показывает статичную картинку начиная с момента появления сигнала)
Думаю, надо для теста уменьшить частоту. Так, какие у нас ещё есть источники для тактовой частоты? О, тактовый генератор 32 кГц! Его и поставлю!
И заменил строчку:
REGISTERS->PERIPHERAL_CLOCK=9<<24;//основной кварцевый генератор; в 24-28 битах должна быть 9,
//остальные биты 0; << -- логический побитовый сдвиг влево.
На строчку:
REGISTERS->PERIPHERAL_CLOCK=1<<24;//генератор 32 кГц на RC-цепочке
Контроллер после этого прошился, но при попытке выполнить пару строк кода завис. И больше он теперь не прошивается!
Комментарии (4)
23:18
Untitled [454]
Сестра рассказывает сказку о трёх братьях из Гарри Поттера.
Сестра: И вот они построили мост, входят на него, тут перед ними появляется фигура в плаще...
Я: И говорит "ТЫ НЕ ПРОЙДЁШЬ!"
Сестра: И вот они построили мост, входят на него, тут перед ними появляется фигура в плаще...
Я: И говорит "ТЫ НЕ ПРОЙДЁШЬ!"
22:48
Чёрный гроб на колёсиках
Много раз я видел в метро людей, катящих за собой специальный чемодан на маленьких колёсиках с выдвижной ручкой (ручка у чемодана, а не у колёсиков). Мне всегда казалось смешным то, как люди останавливаются перед лестницей, берут его за ручку (но не выдвижную, а другую) и несут по лестнице на руках.
Сегодня я встретил маму из поездки и получил шанс покатать такой чемодан самостоятельно. До этого я катал телеги только грузовые (советские), с диаметром колёс от 15 см (и загрузкой от 25 кг).
То, что я напишу ниже, безусловно, является выводом, сделанным по одному измерению. Может быть, есть где-то и хорошие чемоданы-тележки.
1. Опыт спуска и под'ёма грузовых телег по лестнице тут бесполезен. Из-за малого диаметра колёс сама сумка цепляет за ступеньки. Остаётся действительно только одно -- взять за ручку и нести.
2. Не только малый диаметр колёс, но и малое расстояние между ними делают бесполезным понатыканные всюду пандусы. Даже если бы расстояние между колёсами было больше на 10-15 см, воспользоваться пандусами не вышло бы всё равно, т.к. большинство пандусов -- с высокими бортиками (П-образный профиль), которые больше, чем расстояние от окружности колеса до поверхности сумки. Также малое расстояние между колёсами придаёт телеге просто божественную устойчивость -- резкий поворот или старт с места -- и телега заваливается на бок.
3. Дело ещё в малом расстоянии от окружности колеса до арки колеса. Я не разглядывал, сколько там, то эта щель забивается мгновенно -- уличной грязью, песком, рассыпанным коммунальщиками, и снегом. После этого тележка уже не катит. В прямом смысле.
Эти телеги-чемоданы предназначены для катания даже не в городских условиях, а исключительно по специальному тележкодрому, там где всё чисто и ровно.
Сегодня я встретил маму из поездки и получил шанс покатать такой чемодан самостоятельно. До этого я катал телеги только грузовые (советские), с диаметром колёс от 15 см (и загрузкой от 25 кг).
То, что я напишу ниже, безусловно, является выводом, сделанным по одному измерению. Может быть, есть где-то и хорошие чемоданы-тележки.
1. Опыт спуска и под'ёма грузовых телег по лестнице тут бесполезен. Из-за малого диаметра колёс сама сумка цепляет за ступеньки. Остаётся действительно только одно -- взять за ручку и нести.
2. Не только малый диаметр колёс, но и малое расстояние между ними делают бесполезным понатыканные всюду пандусы. Даже если бы расстояние между колёсами было больше на 10-15 см, воспользоваться пандусами не вышло бы всё равно, т.к. большинство пандусов -- с высокими бортиками (П-образный профиль), которые больше, чем расстояние от окружности колеса до поверхности сумки. Также малое расстояние между колёсами придаёт телеге просто божественную устойчивость -- резкий поворот или старт с места -- и телега заваливается на бок.
3. Дело ещё в малом расстоянии от окружности колеса до арки колеса. Я не разглядывал, сколько там, то эта щель забивается мгновенно -- уличной грязью, песком, рассыпанным коммунальщиками, и снегом. После этого тележка уже не катит. В прямом смысле.
Эти телеги-чемоданы предназначены для катания даже не в городских условиях, а исключительно по специальному тележкодрому, там где всё чисто и ровно.
Комментарии (6)
23:54
Собака Маруся
Мама говорит -- а пошли на выставку Рафаэля в Пушкинский. И мы все пошли.
Выставка была не очень интересная. Картин мало. Людей со значками черепашек-ниндзя замечено не было. Но две вещи поразили:
1. Этому, блин, куску бумаги, 500 лет!
2. А в 16 веке картины рисовали на доске.
Гораздо интереснее было изображение, обнаруженное мной в музейном киоске:
А ещё там же была выставка картин для слепых -- выпуклые репродукции. Стоим с сестрой, щупаем. Подходит девушка -- вы знаете, эта выставка для незрячих...
Я (смотрю на неё): Знаем.
А ещё там же была выставка "обстановка немецкого дома 18 века". И всякие бытовые предметы. Стоит туфля одна. Экспонат подписан. "Полупара туфель"! То есть это не просто туфля, это полупара, видите ли!
Выставка была не очень интересная. Картин мало. Людей со значками черепашек-ниндзя замечено не было. Но две вещи поразили:
1. Этому, блин, куску бумаги, 500 лет!
2. А в 16 веке картины рисовали на доске.
Гораздо интереснее было изображение, обнаруженное мной в музейном киоске:
А ещё там же была выставка картин для слепых -- выпуклые репродукции. Стоим с сестрой, щупаем. Подходит девушка -- вы знаете, эта выставка для незрячих...
Я (смотрю на неё): Знаем.
А ещё там же была выставка "обстановка немецкого дома 18 века". И всякие бытовые предметы. Стоит туфля одна. Экспонат подписан. "Полупара туфель"! То есть это не просто туфля, это полупара, видите ли!
23:55
Untitled [453]
К нам пришёл для переговоров гражданин из дружественной организации.
Коллега: Кофе будешь?
Гражданин: Нет. Я с детства кофе не пью...
Я: А до детства значит пил?
Гражданин: Да.
О_о
Коллега: Кофе будешь?
Гражданин: Нет. Я с детства кофе не пью...
Я: А до детства значит пил?
Гражданин: Да.
О_о
Комментарии (1)