Я не уверен!

Попробуйте быстро ответить на вопрос, в ответе на который не уверены до конца:
– Ты дома свет выключил?
– По-моему, да.
Не годится! “По-моему” – это сокращение от “по моему мнению” (“По-моему, Пупкин – плохой президент”), а какое уж тут мнение? Либо выключил, либо нет.

– Кажется, да.
Не годится! “Казаться” могут предметы вдалеке (“Кто это там на эшафоте?” – “Ба! Кажется, Пупкин”), ну в крайнем случае, будущее (“Кажется, Пупкину кранты”), но никак не прошлое! Где это оно “кажется” (показывается)?

– Вроде бы да.
Не годится! “Вроде” значит “похожего рода, сорта” (“Чья это дача?” – “Вроде бы депутата какого-то”). Вы же со светом поступили вполне определённо, либо выключили, либо нет.

– Полагаю, да.
Не годится! Полагают верным то, на чём строят дальнейшие рассуждения (“Полагаю, здесь теперь не искупаться, так что надо искать новый пляж”). А тут речь о ваших сомнениях, а не предположениях.

– Наверное.
Не годится! Какое же это “на верное”, когда вы не уверены? Правильное употребление: “Почему стоим?” – “Наверное, депутата везут.”

– Возможно.
Не годится! А то мы не знали, что это возможно! Правильное употребление: “Возможно, будет революция”.

– Видимо.
Что это вам “видимо”, когда дом далеко-далеко? Правильное употребление: “Что солдаты там делают?” – “Видимо, охраняют мир и порядок.”.

– Скорее всего.
А что, было соревнование в скорости выключения света? Правильно – указать на событие, которое случится прежде любых других: “Скорее всего, президент выступит с заявлением.”.

– Да выключил я, выключил, отвяжись от меня!

К слову о масштабах

Все помнят милую но правдивую шуточку Watch out Diablo III, this game might outsell you?

К слову. Как-то раз Сергей Лукьяненко – тот самый Сергей Лукьяненко, наш самый известный и продаваемый фантаст – упоминал тиражи. В другой раз Борис Акунин – тот самый Борис Акунин, которого читал любой интеллигент – говорил об экспериментах с псевдонимами, и тоже сказал пару слов о продажах. Короче, 400-500 тысяч – это очень неплохой итоговый результат для знаменитого автора в нашей огромной стране.

К настоящему времени было продано 4 миллиона книжек Ореимо.

Остановитесь на секунду и задумайтесь. Это не книги звёзд государственного масштаба, таких, как Акунин или Лукьяненко. Это даже не Харухи, в которой хоть сюрприз фантастический был (Харухи продано 10 миллионов). Мы тут все знаем, что такое Ореимо. Простенькая детская книжка – ну да, тёплая и ламповая. Каждый том этой глупенькой ерунды, которую и за серьёзную литературу-то никто не считает, продавался так же, как очередной “Дозор” Лукьяненко или “Фандорин” Акунина. И так десять томов.

О договорах

Раньше я думал, что я один такой, но похоже, в головах очень многих людей сидит мысль, что договор на бумаге – это формальность, а главное договориться по-человечески. Заказываю у одной фирмы, скажем, покупку и посадку картошки. Посидели, поговорили, выдают мне договор на подписание. Читаю:

Исполнитель обязуется посадить картошку на поле заказчика.

И ни слова про то, откуда он её возьмёт.
Я спрашиваю:

– А почему не сказано про то, что картошку вы купите сами?
– Да-да, купим, мы же договорились.
– Но в договоре об этом не сказано…
– Купим, откуда ещё нам взять картошку?

Приставать к менеджеру стыдно – мы ведь договорились! Получается, я им не доверяю? Я крючкотвор, придираюсь к бумажке?
Но договор и существует на случай, если мы поссоримся. Никому не хочется ссориться, но если слепо верить в чужую порядочность, то договоры вообще не нужны, правильно? Не надо ничего писать – ни про покупку, ни про посадку. А раз уж начали, то дело следует довести до конца. Неправильный договор – хуже, чем вообще никакого.

– Давайте, всё-таки, укажем это в договоре. А то, если мы поссоримся, вы скажете – “кто говорил о покупке? Мы вашу картошку обещали посадить”.
– Хорошо, не проблема. Не будем ссориться.
(сделал) Раньше просто никто не просил такого.

У этой достаточно крупной фермерской фирмы были десятки клиентов. Ни один не прочёл договора и не попросил указать в нём всё правильно? Либо менеджер говорит неправду, либо эти люди – растяпы, такие же, как я (если бы не обдумал это заранее).

Памятка исправляющимся растяпам:
Читайте от начала и до конца каждый договор, который подписываете. Не стесняйтесь потратить чужое время или задержать очередь – в крайнем случае, отойдите в уголок. Всегда просите разъяснения непонятным местам, и если формулировка договора вам не нравится, или вам кажется, что в нём сказано неясно, не то или не всё, о чём договорились, просите договор исправить.
Ни один договор не написан в камне, это всё вордовские документы, и пусть вас не пугает, что слова уже распечатаны: изменить текст и распечатать заново – дело минуты. Не сдавайтесь при словах, что “такой договор подписывают все”: платить за ЭТОТ договор придётся вам, а не “всем”, вы и решаете, что в нём написано.

Если вы и ваш партнёр действительно договорились, нет никаких причин не изменить договор, чтобы прояснить обязанности сторон или описать их полнее.
Отказать вам могут тогда – и только тогда! – когда вас хотят обмануть.

Игра по Back to the Future

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

А знакомая музыка и знакомые голоса Марти и Дока (трудно поверить, что их играли другие люди) сшивают любые разрывы и заставляют поверить, что это действительно “Назад в будущее”. Авторы могли ошибиться во стольких местах, но в большинстве не ошиблись.

Кризис существования

Нашёл в черновиках – сейчас уже не совсем отвечаю за написанное :)
Интересно, многим ли смешно читать статью Existential crisis на Википедии?

An existential crisis is often provoked by a significant event in the person’s life — marriage, separation […], reaching a personally-significant age (turning 20, turning 30, turning 40, etc.), etc. Usually, it provokes the sufferer’s introspection about personal mortality, thus revealing the psychological repression of said awareness.

Там ведь написано, если убрать мишуру:

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

То, что способность видеть истину люди считают проблемой, что состояние пренебрежения к ней считается здоровым, разве это не смешно? Разве не в жалком свете выставляет нас, людей? Не как зверей, сознающих и не способных победить свою животную природу? Или дикарей, оказавшихся в рубке самолёта, и отмечающих мелом на стене:

“Руль – штуковина, которую нельзя долго тянуть вниз, иначе все умрут”

Бессмысленное мышление

В комментариях к посту Реймонда Чена зашла речь о занулении памяти. Перед тем, как новой памятью воспользоваться, полезно заполнить её нулями, чтобы твёрдо знать, какие значения будут у переменных. Однако это не всегда нужно. Некоторые функции выделяют уже нулевую память, и повторно занулять её – только тратить время зря.

Один из участников – видимо, начальник – сказал: “я всегда слежу за тем, чтобы другие не писали лишних занулений. Я стараюсь воспитывать программистов, которые думают над тем, что пишут, а не пихают бессмысленно зануления где попало”.

В принципе он прав – с бездумностью надо бороться. Но зачем думать над всем подряд?

Ресурсы мозга ограничены. Нельзя уследить за всем и мыслить по-хардкору круглые сутки напролёт. Попробуйте восемь-то часов проработать как следует – вы к вечеру два и два сложить не сможете! Поэтому надо выбирать, чему уделить внимание, а на что махнуть рукой – полностью сознавая последствия.

Так получается, что лишнее зануление – операция быстрая и безвредная. Поэтому хороший программист не станет специально размышлять, где нужно, а где не нужно занулять память. Он просто занулит её везде, и этим освободит себе время подумать над действительно важными вещами – над теми, где ошибочное решение приведёт к тяжёлым последствиям. А программист, воспитанный таким начальством, обдумает каждое зануление, и от усталости забудет про слона.
Бессмысленное мышление вредно :)

Кроме того, не придётся ломать голову и проверяющему: “Тут память не занулили. Это потому, что было не нужно? Или программист забыл?” Ещё одна экономия внимания.

Ищу бета-тестеров

Я пишу расширение для Оперы, которое показывает на экспресс-панели дневник, число комментариев, дискуссий и ю-мылов. Выглядит примерно так:

Когда появляются сообщения, выглядит так:

Нужны бета-тестеры, т.е. люди, которые будут проверять сырую версию, натыкаться на ошибки и приставать ко мне до тех пор, пока я их не исправлю. Знание HTML/Javasсript/CSS приветствуется. Ошибок будет много.

Добрый глупый лучше умного злого

На страничке “О себе” я пишу, что ценю добрых людей: глупый хороший стоит пятерых умных плохих. Почему?

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

Во-вторых, дайте мне глупого хорошего, и я из него сделаю умного. Он может стать мне другом, единомышленником, да просто ещё одним интересным человеком. А попадись мне злой – и что с ним делать? Что мне толку с того, что он умный, если с ним не ужиться? Злого в доброго не переделать, это куда сложнее, чем научить глупого.

Я слышал другое мнение – что “доброта это скучно”, а главное качество в человеке ум. Те, кто так считает – не жалуйтесь, когда…

не жалуйтесь, когда раз за разом натыкаетесь на эгоистов, сволочей и предателей. Эти люди не такие, как стильные красавцы из книжек и манги. В жизни эгоист – просто эгоист, он не появляется с розой в зубах и не говорит красивых насмешливых фраз. И наоборот, настоящий ум не бросается в глаза, как ум Шерлока Холмса. Скромность говорит о нём чаще.

Подозреваю, что многие из тех, для кого первое качество ум, воображают себя в Хогвардсе, школе на Роке, в академии Космического Патруля или в школе из “Игры Эндера”. Короче говоря, мечтают участвовать в битве незаурядных умов, чтобы кремень разума бился о кремень, летели искры, сдавались неразрешимые задачи. Чтобы своей хитростью герои вырывались вперёд, а зная общий высокий уровень, чувствовали себя такими умными, что ну просто ваще.

Вот беда, 99% из них никогда не были ни на какой интеллектуальной олимпиаде, much less на олимпиаде международного уровня. Команды по математике и информатике о них не слышали. Никаких грандиозных научных открытий эти люди не сделали, и не работают ни на переднем крае чего. То есть, причин считать, что они “вращаются в элитных интеллектуальных кругах”, нет. Их звезда горит чуть ярче своих тусклых соседей, и только. Но ведь хочется чувствовать себя кем-то!

Как быть, если хочется? Ну просто: искать тех, кто достаточно умён, чтобы казаться тебе не совсем идиотом. Окружить себя людьми, которые, в общем-то, тоже не гении, но так, чтобы на их фоне чувствовать себя уже не в болоте. Тогда слова “я ничего не сделал” не будут пугать, поскольку ты хоть ничего не сделал, но вон какие люди тебя знают, вон какие мысли вы обсуждаете. Ты умный!

Конечно, любой из нас хочет казаться себе умным. Я не исключение. Я дико умён – вы ещё не знаете, насколько (хотя, вообще, пора бы уже! эй!). Но на мой взгляд, ум измеряется в абсолютной величине, и будет одинаковым, торчи ты как одинокая ёлка в срубленном лесу, или скрывайся среди сотен таких же вечнозелёных. А поэтому, в общем-то, хотя с более умными людьми общаться приятно, фетиша у меня нет. Я добьюсь своих целей и в одиночку, а дайте мне взвод необразованных людей – я их образую и одержу победу вместе с ними. И все мы при этом хорошо проведём время.

А вот тратить время и чувства на злых людей я не хочу. У меня и других дел хватает.

…Боюсь, что драматическими отступлениями я запутал читателя, и к этому моменту всем кажется, что речь о каких-то кругах математической элиты, школах молодых Эйнштейнов, и так далее. Нет, “умные” сейчас 95% интернета.

Едкий саркастический комментарий – это “злой умный”.
Короткая презрительная ремарка вместо спокойного и подробного указания на ошибки – это “злой умный”.
Эгоизм в любых формах – это сама суть “злого умного”.

А “глупый” – это ошибающийся.

И ещё одно. Добрый глупый лучше умного злого даже тогда, когда злой действительно умный. Но это редкость. Пожалуй, с этого аргумента стоило начать, поэтому я занесу его под номером ноль.
В нулевых: практически все без исключения “умные злые” злые потому, что это стереотип. Они видели, как их сосед по лепрозорию или двачу ответил цинично, и это показалось им (в силу глупости) проявлением ума. Им тоже захотелось казаться умными. Поэтому они тоже стали злыми.
Практически все без исключения “умные злые” – это просто… даже не злые. Просто глупые :)

Глупые, но не добрые.

Про CSS

CSS – язык, который был создан для удобства разметки страницы, и за 15 лет разработки превратил простейшие задачи в Ад.

Попробуйте оформить с помощью CSS такие понятные вещи, как:
– элемент произвольного размера по центру страницы, который начинает уменьшаться, когда не влезает целиком
– заверщающий элемент (footer) произвольного размера, который находится после содержимого, а если содержимое меньше экрана – в нижней части экрана

Нет, это можно сделать! Существуют целые сайты, посвящённые “center vertically” или “sticky footer”, где приведены магические заклинания, которые для этого нужно произнести. (Правда, footer случайного размера так никто и не умеет делать иначе, чем через css-3).

…Когда-то у Каганова на сайте был конкурс на лучшее слово из трёх букв. Первая, вторая и третья буквы выбирались из списков. Казалось бы, почти все буквы в списках присутствовали, но – то в одной колонке “Х” нет, то в другой “Б” или в третьей “Я”. И за какое интересное слово не схватишься – ничего не составляется. Вот и CSS так же.

Кеширование рисунков в Опере

По умолчанию в Опере очень плохо кешируются рисунки. Изменив пару настроек, можно сильно ускорить работу с ними.

(читать дальше)

Проблема

Проведите небольшой эксперимент: откройте семь-восемь огромных (не меньше 2000×3000 пикселей) картинок в отдельных вкладках, и попереключайтесь между ними. Если не знаете, где такие взять, поройтесь на Danbooru — NSFW. Видите? Каждый раз, как вы переключаетесь на следующую вкладку, картинка медленно прорисовывается снизу вверх. Это заметно на “тяжёлых” рисунках, но происходит и на мелких, даже на одной и той же странице, когда вы скроллитесь вперёд-назад.

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

Но почему Опера выбрасывает картинки из памяти, хотя вы открыли всего-то 7 рисунков по 5 мегабайт каждый? Это же 40 мегабайт данных, а у вас несколько гигабайт оперативки!

На самом деле, в распакованном виде эти картинки занимают гораздо больше. Умножьте 2000 на 3000 и на 4 (размер пикселя) – получите 25 мегабайт. Такова “цена” одной картинки в памяти.

И всё-таки, даже семь таких картинок – это лишь 180 мегабайт. Однако Опера почему-то устанавливает размер кеша в памяти именно таким, – маленьким, – и спешит выкинуть лишнее, хотя в результате его придётся медленно перезагружать.

К счастью, размер кеша можно задать вручную.

Решение

  1. Откройте opera:config
  2. Найдите параметр “Cache\Figure“. По умолчанию в нём стоит 2Мб. Укажите что-нибудь вроде 1Гб (в килобайтах: “1048576”, а если памяти хватает, в 64-битной Опере можно и 2-4Гб). Сохраните настройки.
  3. Найдите параметр “UserPrefs\Automatic RAM Cache“. Отключите его.
  4. Перезагрузите Оперу

Снова попробуйте открыть несколько больших рисунков. Теперь они должны оставаться в памяти и появляться мгновенно, как только вы переключаетесь на вкладку с ними.

Если хотите, можно поднять и следующие параметры кеша:

  • Cache\Document – тоже до гигабайта-полутора
  • Disk Cache\BufferSize – до 100 мегабайт
  • Disk Cache\Size – до 200 мегабайт, или сколько места у вас есть на диске, где лежит кеш

Какой размер кеша выбрать и чем это грозит

Если у вас 32-битная Опера, не делайте общий объём Cache\Figure и Cache\Document больше гигабайта, сколько бы памяти у вас не было. В 64-битной Опере можно (и даже полезно) установить суммарный объём кеша до половины объёма вашей оперативки.

Но тогда другим приложениям не хватит памяти!
Чушь. Внимательно послушайте: в системе Windows приложения не делят память. Опера может “съесть” 8Гб оперативки, и при этом для других приложений вся память будет свободна!
Чудеса? За кулисами Windows поступает так: если программе нужна память, а свободной памяти нет, она временно “убирает” часть памяти Оперы на жёсткий диск, в файл подкачки. Потом, когда Опере опять потребуется эти данные, система их вернёт в оперативку.

Получается, данные всё равно будут грузиться с диска?
Только в том случае, когда другим приложениям не хватило памяти из-за Оперы. Это должно происходить редко.

Тогда почему в 32-битной Опере нельзя поставить больше гигабайта?
Сколько бы у вас не было физической памяти, виртуальной памяти у 32-битных приложений всего по 2 гигабайта. Когда она кончится, приложение умрёт. Если вы больше гигабайта отдадите на кеш, Опере совсем не останется памяти на всё остальное.

Почему в 64-битной Опере можно поставить больше гигабайта?
У 64-битных приложений гигантский объём виртуальной памяти. Можете отвести под кеш хоть терабайт, место всё равно останется.

Но у меня всего 8 гигабайт оперативки, откуда возьмётся этот терабайт?
Система будет убирать часть этого терабайта на диск. В физической памяти будут оставаться только самые нужные его части.

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

Что, если у меня отключен файл подкачки?
Тогда, разумеется, постарайтесь не съесть всю доступную физическую память! Сделайте кеш поменьше.

Что, если у меня постоянно запущен отжирающий 75% памяти монстро-процесс?
Тогда, разумеется, постарайтесь уместить кеш в оставшиеся 25%! Вам не нужно, чтобы система постоянно загружала-выгружала память с диска, разрываясь между вашим монстром и Оперой.

У меня SSD. У меня дисковый кеш лежит на рам-диске. Всё и так должно быть быстро.
Даже если дисковый кеш находится на рам-диске, загрузка и распаковка рисунка занимают время, в чём легко убедиться, проведя описанный в статье эксперимент. Кеш памяти быстрее.

Бонус: какими расширениями Оперы я пользуюсь.