Дайте угадаю: потому, что прежде символы не “вставлялись” и “удалялись”, а “печатались на фиксированных позициях”. Space печатал пробел на позиции спереди курсора, а BackSpace – на позиции сзади.
Prototype

Игра про то, как Нью-Йорк заражают зомби-вирусом, а главный герой вместо этого получает возможность:
1. Пожирать людей и принимать их облик
2. Получать их воспоминания
3. Как угодно трансформировать своё тело
4. Бегать по стенам, летать и швыряться танками
Сюжет незатейливый, зато играть интереснее, чем в GTA. Как-то соблюдён баланс между тем, что военные за тобой вроде и охотятся, но и скрыться от них можно (не нужно перезагружаться, если всех разозлил, как в GTA), хотя и напарываться попусту не хочется. И оружия много клёвого – руки-хлысты, руки-клинки, руки-молоты, всё как в книжках Лукьяненко о метаморфах.
Хочешь – прыгни на вертолёт в воздухе и отними его, как Терминатор. Хочешь – прокрадись на военную базу, пожирай из темноты военных и принимай их облик. Хочешь – устрой содом и гоморру, взрывай и убивай, бегай по стенам, швыряйся танками и распускай во все стороны щупальца. Всё, всё, что хотелось попробовать, воображая себя метаморфом, всё есть. Одобряю такую игру.
Биткоины
Прочитав кучу историй на реддите, я теперь убеждён, что биткоины – самое быстро дорожающее средство где-нибудь ошибиться и потерять все свои деньги
У человека был brainwallet (кошелёк, который генерируется из одной фразы). Он вбил пароль, скачал кошелёк, перевёл из него 12 коинов кому-то, а файлы затем удалил. Потерял 88 биткоинов: транзакции в BTC совершаются с блоками, и в его случае блок был 100 коинов. Сдача в 88 коинов ради безопасности идёт на новый адрес, приватный ключ к которому создаётся в файле кошелька. Который был удалён.
Другой человек знал об этой проблеме и заранее создал 100 адресов для сдачи. Приватные ключи ко всем забэкапил, кошелёк зашифровал. В какой-то момент гипс снимают, клиент уезжает, кошелёк полетел и ему нужны данные из бэкапа, он лезет туда, и выясняется, что в момент шифрования кошелёк заново генерирует ключи для сдачи. То есть, сохранённые ключи недействительны.
Третья история вообще грустная. Человек решил купить наушники на крейгслисте. Нашёл продавца в своём районе, договорились встретиться, купить за наличку, и тут он видит у него внизу подписано “также принимаю биткоины”. Решает купить за них.
Приходят в кафе, садятся, продавец даёт наушники посмотреть, человек доволен, спрашивает адрес кошелька, переводит на него 80 баксов (0.8 биткоина). Как только сеть подтверждает транзакцию, продавец встаёт, забирает наушники и идёт к выходу.
“Стой, а наушники?”
“Моя цена – $80, не хочешь платить – не надо.”
“Ах ты… Я в полицию обращусь!” – хочет сказать покупатель, и тут понимает. Что записали камеры наблюдения? Двое пришли, сели, один дал другому посмотреть наушники, потом забрал и ушёл. 80 баксов? Какие 80 баксов? “Товарищ полицейский, я заплатил ему 0.8 виртуальных монет, за которые не отвечает ни одно государство и ни одна фирма”?
Ну хорошо, пусть полицейский готов поверить в виртуальные монеты. Где доказательства, что эти монеты были уплочены? “Вот, я перевёл их на адрес 1b3674e8cd…” – “А это правда его адрес?” И ничего не докажешь, сеть же анонимная.
Нужно ввести понятие “работы, унижающие человеческое достоинство”, и установить им минимальную зарплату в несколько раз больше. Я о дворниках, уборщиках, и т.п.
Кто-то должен этим заниматься, но кто бы это ни был, всегда чувствуешь себя так, будто пользуешься рабским трудом. Другая работа, даже низкооплачиваемая – это всё-таки выбор; кому-то так удобнее, кто-то решил по жизни не напрягаться, а работа уборщиком слишком неприятная, трудно поверить, что её выбрали по доброй воле.
Или надо делить такую работу на всех.
Услышать ответ и не сделать
Иногда я задаю вопрос на StackOverflow, получаю ответ, соглашаюсь с ним, ставлю ему галочку и не делаю так, как предложено.
Потому, что я необязательно хотел узнать, как делать правильно, чтобы сделать правильно. Возможно, я просто хотел понять все последствия своего простого неправильного решения. И оказалось, что они терпимы.
Время боится пирамид
Многие не верят в теорию эволюции, т.к. “вероятности слишком малы”: один за другим случались невероятные события, и появилась живая клетка. Эти люди не представляют себе бескрайности мироздания.
На реддите речь зашла о пирамидах, и кто-то процитировал песню: “Люди боятся времени, время боится пирамид”.
Самым древним пирамидам 5000 лет. Они были построены на заре человеческой истории, когда ничего ещё не случилось. Тысячи лет оставались до Греции и Рима, до их полководцев и философов, до Трои, до Спарты, до никому не известного поначалу лидера кучки сектантов Иисуса Христа. Солнце должно было вставать и опускаться, вставать и опускаться, день за днём, миллионы раз, прежде, чем началась наша эра – и всё это время люди жили, встречались, любили друг друга, растили детей, убивали. Сколько за эти тысячи лет произошло драм, сколько раз друзья предавали, сын убивал отца, брат шёл на брата, сколько было запретной любви, разрушенных городов и поломанных жизней, сколько было мечт, сколько этих мечт не исполнилось, сколько лиц глядело на этот мир и удивлялось ему заново.
Всё это утонуло во тьме и забыто навеки. Каждая такая важная драма.
Самым древним пирамидам 5000 лет. Жизнь существует на Земле 2500 миллионов лет. Если считать в пирамидах, это 500 000 пирамид.
Имота 12 откладывается
Кстати, хотя второй сезон в апреле и начнётся, 12-й том пока не выйдет. Наверное, решили его выпустить ещё через пару месяцев, вместе с окончанием сериала, чтобы не спойрелить зрителям.
Ну, мне-то от этого ни жарко, ни холодно, я с переводом седьмого тома именно к сериалу не успеваю.
Глядя, как тут некоторые преподают студентам программирование, придумал максиму:
“Чтобы научить, нужно уметь о многом промолчать”.
Я знаю, в API куча интересных функций, а в программировании – концепций, но каждый дополнительный клочок информации – это дополнительная головная боль ученику, и когда этой боли становится слишком много, мозги выключаются и ученик перестаёт вообще что-либо понимать.
Крупицы информации – это паззлы. Не надо вываливать на голову сразу всю коробку.
HOWTO: Add your own feed reader to Opera’s default list
By default, when you click on an RSS feed icon, Opera displays feed contents in some basic format and allows you to subscribe to it with either the built-in reader or some of the popular ones.
But with the recent end of life of Google Reader many will switch to other, less popular readers, or perhaps even install one on their own server.
To add a feed reader to Opera's default reader list, edit feedreaders.ini
in "Program Files\Opera\defaults
" folder. The format is obvious. There doesn't seem to be an option for a per-user feed reader list.
For instance, if you're using Tiny Tiny RSS, the subscription URL is per faq:
http://your.domain.com/path-to-ttrss/public.php?op=subscribe&feed_url=%s
The code to add to feedreaders.ini
will be:
[TinyRSS] ID=20 URL=http://your.domain.com/path-to-ttrss/public.php?op=subscribe&feed_url=%s
О ненадёжности сервисов в интернете и о собственном сервере
В последнее время от программ, которые хранят файлы на локальном компьютере, все понемногу переходят к т.н. “облачным сервисам”, когда данные хранятся в интернет и доступны отовсюду через браузер. С одной стороны, это удобно – за каждым компьютером работаешь как за домашним, всё под рукой. С другой стороны, смерть Google Reader ещё раз напомнила, что даже крупная всеми любимая компания не обязательно будет хранить наши файлы вечно.
А это значит – нет ощущения надёжности. Файлами на своём компьютере я могу распоряжаться как захочу: захочется – так и всю жизнь буду хранить. А в интернете всё устаревает и удаляется. Хостеры картинок закрываются, удаляют картинки, к которым не было обращений месяц, сервисы сворачиваются, прогорают. Блоги закрываются, их содержимое остаётся только в моих фидах в Google Reader, потом закрывается сам ридер, и содержимое теряется навсегда – его даже скачать неоткуда.
Мне это не нравится. Я люблю настроить один раз – и чтобы работало столько, сколько мне нужно.
И вот что я думаю. Любой хороший сервис должен поставляться не в виде “одного сайта на всех”, а как веб-движок. Чтобы любой мог установить его на свой сервер и пользоваться – хоть один, хоть с товарищами. Вот какими должны быть приложения будущего.
- Отличный пример – Википедия. Хотя у неё существует “главный сайт”, но любой может скачать исходный код, запустить на своём личном сервере и держать его там, пока не надоест.
- Другой отличный пример – WordPress. Сайт Diary.ru, на котором я пишу эти строки, однажды закроется или благодаря дурацким решениям станет неудобным – например, знали вы, что теперь u-mail за прошлый год нельзя прочесть, нужно заказывать его возврат из архива? Однажды так будет и с записями. Но копия моего блога у меня на сайте будет доступна столько, сколько я захочу.
- Третий отличный пример – системы контроля версий: свн, меркуриал, гит. Да, полно сайтов, которые предоставляют хостинг для СВН, но если такой сайт однажды закроется – не составляет никаких проблем поднять сервер меркуриала у себя на хостинге и закачать всю историю разработки программы туда. Вы ничего не потеряете.
Поэтому любому человеку, который разбирается в компьютерах и хочет устроить свою электронную жизнь надёжным образом, обязательно надо купить или собрать сервер или заказать виртуальный хостинг, и старательно переносить все важные для себя данные в интернете на него.
Например, нужен открытый движок наподобие Google Reader. Очень нужен сервер синхронизации вроде Dropbox или, ещё лучше, SpiderOak (с шифрованием). Нужно взять за правило никогда не хостить картинки на стороне, даже на удобном imgur, а всегда класть их на своём сервере. Нужны стандарты предоставления профиля и обмена друзяшечками (кажется, это кто-то разрабатывал), чтобы вбив свой сайт и введя пароль в сотовом телефоне, можно было оттуда, а не из фейсбука или вконтакта, получить список своих друзей с их телефонами и свежими аватарками.
Вот над чем надо работать, а появлению новых фич в Google Plus я отныне официально прекращаю радоваться. Долой централизацию, даёшь личные сервера.
UPD. Вот самая полная статья, перечисляющая замены Гугл-ридеру. В том числе несколько движков для установки на собственном сервере.
Пока установил себе Tiny Tiny RSS, импортировал туда фиды из гугла без проблем. Посмотрим, насколько с ним удобно. Очень хорошо, что движков несколько – за оставшиеся пару месяцев можно будет выбрать лучший, с которым потом жить.