Did you know he won fifteen years worth of gum from a radio show? (c)(c) комменты на ютюбе
Категория: Компьютеры
Полезные советы
Для людей, желающих на домашнем компьютере, ноутбуке, рабочем месте и КПК иметь всё под рукой.
LastPass – онлайн менеджер паролей и заметок. Встраивается в браузер и работает так: жмёте кнопку LastPass на панели задач – и видите список логинов-паролей для открытого сайта. Щёлкаете по нужному – вас в него логинит.
Много приятных мелочей вроде identity (home или work – чтобы разделять аккаунты) и генерации паролей. Пока не начнёшь пользоваться, не представляешь, насколько удобна такая система. С ней на любом компьютере ты залогинен во всех сайтах, где когда-либо регистрировался.
IMAP. Это механизм получения почты. Часто почту получают по POP3, но этот протокол неудобен: когда ваш почтовый клиент скачивает письмо, на сервере оно либо совсем пропадает, либо остаётся непрочитанным. Зачем получать его на каждом компьютере заново?
На помощь спешит IMAP. В нём все письма остаются на сервере, и выглядят везде одинаково. Дома вы прочитали письмо – на работе оно тоже есть и тоже прочитано.
IMAP поддерживают большинство почтовых серверов. Досадное исключение – mail.ru, но и его можно обхитрить: заведите почту на Яндексе и укажите ей получать письма с почты на mail.ru. А у Яндекса IMAP-доступ есть.
Dropbox позволяет создать папку, содержимое которой будет одинаково на всех компьютерах. Например, дома вы исправили документ, приходите на работу – и правите его дальше. Всё без каких-либо ваших действий (нужно только подключение к интернету). Папка самая обычная, виндовская.
Но хранить в дропбоксе документы – это ещё полдела. Самое интересное – с его помощью синхронизировать программы. Например, миранду или аську.
Большинство программ под Windows хранит свои данные в папке Application Data. Эту папку под XP можно найти в “C:\Documents and Settings\Имя пользователя\Application Data”, а под Вистой и дальше – “C:\Users\Имя пользователя\Application Data”. В ней есть подпапки по именам установленных программ. Например, Миранда хранит все настройки – пароли, логи асечки – в подпапке “Miranda IM”.
Что делаете:
1. Переносите эту папку в ваш дропбокс (Миранда должна быть выключена!)
2. Устанавливаете HardLink Shell Extension.
3. Щёлкаете по папке и говорите “Pick Link Source”.
4. Идёте туда, где она лежала раньше, щёлкаете по пустому месту и говорите “Drop> As Junction”.
Всё!
На другом компьютере:
1. Устанавливаете Миранду и HardLink Shell Extension.
2. Идёте в дропбокс, щёлкаете по папке “Miranda IM” (она уже тут!), говорите “Pick Link Source”.
3. Идёте в Application Data, говорите “Drop> As Junction”.
Запускаете Миранду, вуаля – все ваши аккаунты, все ваши френды и чатики! И главное, любые изменения теперь будут применяться на обоих компьютерах.
Смысл произошедшего вот какой: дропбокс синхронизирует только содержимое папки “Dropbox”. А нам нужно расшарить папку в Application Data. Но в винде есть возможность создать “как бы папку”, которая будет показывать содержимое другой папки. Мы так и сделали.
В Application Data на обоих компьютерах мы создали “как бы папки”, которые указывают на настоящие папки “Miranda IM” в дропбоксе. Эти “как бы папки” называются “Junction”.
Точно так же всё делается для других программ. Просто найдите папку с настройками, перенесите её в дропбокс, а на прежнем месте создайте Junction. На всех остальных компьютерах сразу создавайте Junction, поскольку там никаких данных ещё нет.
Ах, эту историю вы слышали тысячу раз
Запоздало решил перейти с POP с сохранением писем – на IMAP.
Fetching headers (5092/10040).
О числе людей в интернете
Интернет огромен. Миллионы людей, моря форумов, сообщений, мнений…
А сколько же на самом деле людей, которые следят за сетевой жизнью? Легко оценить. Берём среднее число голосов пяти лучших цитат башорга. Сто двадцать тысяч. И это оценка сверху, поскольку на башорг заходят далеко не только активные пользователи инета, а почти каждый, кто не замкнут в ракушке своего бложика, асечки или контактика.
Реальная цифра – тысяч десять-двенадцать. Те люди, которые вертятся на интернет-кухне.
Что же сайты с тысячами регистраций, типа дёрти или хабра? А вы посмотрите на рейтинги. Самые популярные посты на Дёрти собирают 1200 голосов. Получить голос 5-6 несложно, возьмём средний – 4, итого – на дёрти регулярно заходят 300 человек.
300, а не 30 тысяч.
Про лепру я вообще молчу, та давно загнила и зацвела.
И так везде. Большая часть регистраций – мёртвые. Люди пожили в интернете и ушли – вернулись к реальной жизни.
Кто-то недавно ныл на ычане, что чаны становятся мейнстримом. А что такое мейнстрим среди 12 000 пользователей? Это тысяча человек… Когда один из десяти знает новость, её знают все. Чаны уже не будут мейнстримом. Чаны уже были мейнстримом, года два назад.
Про нетбук
Установил на нетбук Melty Blood. Подключил джойстик.
Сейчас поеду в метро – буду рубиться. Уже представляю себе глаза соседей по вагону
Купил нетбук с тачскрином
Asus EEE PC T101MT. У него крышка-вертушка: можно пользоваться как ноутбуком, а можно перевернуть и превратить в планшетный пк.
Пока выбирал, изучил модели, так что пишу краткий обзор на случай, если кому интересно. С самого начала я хотел купить планшетку, но такую, чтобы иногда можно было пользоваться и клавиатурой, поскольку чистые планшетки очень неудобны при наборе текста. Планшетки (TabletPC) бывают трёх видов:
– Просто планшетки, то есть – без клавиатуры. Всю поверхность ноута занимает экран.
– Перекидные (convertibles) – как у меня, с вращающейся крышкой.
– Гибридные – где экран вынимается из клавиатуры и может работать самостоятельно.
Идеально было бы купить гибрид, но их почти нет даже в штатах, а те, что есть – дорогие ноутбуки, а не нетбуки, как я хотел. Поэтому стал искать вертушку. (дальше)
В моих руках были оба эти нетбука. Резолюция будет дурацкой, но полезной. Покупать можно любой. Но если вы девушка, то скорее покупайте IdeaPad. Читайте дальше, чтобы узнать, в чём тут дело.
Честно говоря, IdeaPad лучше. Не сильно лучше, но всё-таки ощутимо. Он легче, у него прекрасный экран. Неудачники с Engadget пишут: we were extremely happy to see ASUS use a matte, 1024 x 600-resolution 10.1-inch display — rather than a glossy one like that on the IdeaPad S10-3t. Не слушайте их. Экран IdeaPad офигенен. У него нет отблеска, на нём не остаётся отпечатков пальцев, он не рябит по изображению – его вообще не замечаешь! У EEE PC всего этого нет, и хотя к ряби можно привыкнуть а отпечатки стереть, вне всякого сомнения экран IdeaPad куда приятнее. Остальное можно списать в мелочи, но экран – мощнейшее преимущество IdeaPad, и если купите EEE PC, то ещё не раз позавидуете нетбуку от Lenovo, это я гарантирую.
Главная беда IdeaPad – дизайн.
Я не знаю, какому идиоту и по какому блату доверили дизайнить единственную вертушку Lenovo. Но то, что получилось, определяется моментально: девчачий нетбук. IdeaPad S10-3T продаётся в двух цветовых версиях: Cosmic Night и Cosmic Wonder. Уже по названиям можно понять, что пахнет жареным. Космик найт – это чёрная крышка и молочно-белая клавиатура. Увы, в Россию их не завезли, а модификацию с Йотой вообще не выпускали. У нас можно купить только космик вондер, а это – узор из разноцветных квадратиков и те же квадратики, выгравированые на клавиатуре.
Говорите, что хотите, а жить с этим я бы не смог. Если такой дизайн кому-то нравится – могу подсказать лавку на Савёловской, где вы купите любую из моделей намного дешевле средней цены, даже дешевле любой другой цены на Савёловской. Младшая модель обойдётся примерно в 15500, старшая – в 17000. (Средние цены – 17000 и 19000, обычно можно сторговать до тысячи вниз).
Ещё из плюсов IdeaPad: крышка вертится в обе стороны (на EEE PC только в одну). Из минусов: два USB-порта против трёх на EEE PC, и у Lenovo в комплект не входит стилус. Хотя, по правде сказать, стилус используешь довольно редко, но если уж он потребовался – хорошо иметь его под рукой. На EEE PC стилус есть, и главное – есть под него гнездо. Важная и приятная деталь. Ну и вообще, если не считать веса – держать в руках EEE PC приятнее.
Хотя, уже купив EEE PC, я вдруг решил, что неплохо было бы купить простую планшетку с USB-клавиатурой, и прежде, чем вы сделаете свой выбор, советую хорошенько подумать над этим вариантом. Нетбук-вертушка тяжёл. Нужно привыкать к его размерам, весу, привыкать разворачивать экран. С другой стороны, простую планшетку неудобно будет держать на коленях, когда печатаешь, а здесь это легко. В общем, приезжайте на Савёловку и пощупайте всё сами – тогда решите.
Теперь о том, как всё это в быту: очень удобно. Аниме на свёрнутом нетбуке смотрится прекрасно. Без клавиатуры работать несложно, для простых действий вроде загрузки следующего файла, перемотки, хождения по папкам – пальца хватает выше головы. Читать в метро или учить кандзи тоже удобно без клавиатуры, так что на новой планшетке я ещё почти не печатал.
Встроенный процессор видео тянет нормально. Про старое аниме я не говорю, но даже современные H264 играются без особых проблем. Система тоже быстрая, отзывчивая (добрая, сочувствующая) – после того, как оттуда удалить все предустановленные побрякушки. Об этом, кстати, интересное отступление.
На EEE PC, кроме Windows 7 Starter, установлена ещё одна операционная система, которую сам Асус за систему не считает. Они называют это “выключенным режимом”. Если, когда ноут выключен, нажать специальную кнопку, он по-быстрому загрузится, пропустив часть биоса, в некое подобие линукса, где нельзя устанавливать новые программы, но можно сёрфить интернет. Видимо, это сделано на случай, когда нет времени ждать загрузки Windows 7, а нужен интернет сейчас же.
После того, как я удалил из Windows 7 асусовские же свистопердюльки, она стала загружаться быстрее этой “быстрой” системы
К чести Асуса сказать, побрякушки удаляются легко и быстро. К неудовольствию – на сайте Асуса страницы, посвящённые этой модели, куда-то пропали, так что скачать побрякушки заново, равно как и обновления драйверов, пока что нельзя.
Очень, очень приятно удивило время работы от батарей. Родительский MSI Wind, с которым я работал прежде, тянул быть может три часа в режиме чтения, и хорошо, если полтора-два при просмотре видео. EEE PC T101MT тянет около четырёх часов на видео. Это просто праздник какой-то! Батарея такая долгая, что я читаю по дороге на работу, там не заряжаю нетбук, читаю по дороге обратно, приезжаю – и ложусь смотреть кино, поленившись даже воткнуть зарядку – батарей всё равно хватит на весь вечер. А когда они кончаются, то заряжаются почти мгновенно.
Portal 2
Новый Portal на E3: раз, два, три.
GladOS по-прежнему неподражаема:
Do you know the biggest lesson I’ve learned from what you did? We’re a lot alike, you and I. You tested me, I tested you. You killed me, I… oh, wait. I guess I haven’t killed you yet. Well, food for thought.
Но вот зачем в игре нужен этот бобик-скрепка из Microsoft Office… я не знаю. Здорово бы это действительно была скрепка, кстати.
О паскале и объектах #2
Я написал предыдущий пост, и знакомый меня справедливо спросил, а какие же именно функции вызываются при создании объекта? Проверить несложно!
tmp := TObject.Create;
tmp.Destroy;
Оказывается, вот полный список всех вызовов при создании объекта: (далее)
@ClassCreate
TObject.NewInstance
TObject.InstanceSize
@GetMem
TObject.InitInstance
@AfterConstruction
TObject.AfterConstruction
Из них TObject.InstanceSize и TObject.AfterConstruction не делают вообще ничего серьёзного, остальные не слишком много (20-30 инструкций).
Выглядит довольно безобидно! Как же на самом деле? Чтобы посмотреть, насколько быстро создаются объекты, я написал простенькую программу (pastebin). В ней в цикле создаётся и уничтожается 50 миллионов объектов и рекордов.
Для рекордов я использовал два варианта создания/удаления: GetMem/FreeMem и New/Dispose. Последний отличается тем, что Дельфи автоматически генерирует код, инициализирующий и очищающий так называемые “сложные” поля – строки и указатели на интерфейсы. Разумеется, Dispose не может быть быстрее FreeMem, поскольку в конечном счёте его же и вызывает!
Итак, пустой объект и пустой рекорд, результаты в миллисекундах:
Objects: 5469
Records through new/dispose: 344
Records through GetMem/FreeMem: 343
Неплохо! Объекты в десяток раз медленней! Однако у этого есть причина, которая станет ясна, если мы повторим эксперимент, добавив в объект и в рекорд по одному полю типа integer.
Теперь мы получаем:
Objects: 5453
Records through new/dispose: 1094
Records through GetMem/FreeMem: 1109
Откуда такой прирост у рекордов? Дело в том, что размер рекорда в прошлом эксперименте был равен нулю. GetMem/FreeMem просто игнорировала эти пустые запросы. У объекта же существуют скрытые поля. Если мы запросим размер объекта
tmp := TObject.Create;
writeln(‘Size: ‘+IntToStr(tmp.InstanceSize));
То получим:
Size: 4
Как только мы добавили поле и в рекорд, оптимизация GetMem перестала работать, и время создания записи подскочило в три раза. Но это ещё не всё! Добавим в рекорд поле типа string, чтобы проиллюстрировать разницу между New и Dispose.
Получаем:
Objects: 6188
Records through new/dispose: 3687
Records through GetMem/FreeMem: 1094
“Корректное” создание рекордов уже всего в два раза медленней объектов! Рекорды через GetMem/FreeMem работают с прежней скоростью, поскольку размер объекта не изменился: переменная типа string занимает те же четыре байта, что и integer.
Примерно то же получится, если добавить в рекорд динамический массив: он тоже требует финализации. А вот статические массивы не требуют: память для них выделяется за один запрос, вместе с памятью записи:
FField: array[0..40] of integer;
Objects: 6844
Records through new/dispose: 1188
Records through GetMem/FreeMem: 1187
Казалось бы, я совершенно напрасно ругал объекты! Ведь любой сколь-либо сложный набор данных в рекорде создаётся всего в два раза быстрее объекта. Ну, два раза для таких быстрых операций – это ерунда. Я уже готов был придти к такому выводу, как решил посмотреть, сколько занимает сложение строк:
s := s + ‘test’;
if Length(s) > 10000 then s := ”; //Чтобы не разбухала
1500 микросекунд! А разница между New и GetMem в примере со строкой была 2500!
Иными словами, расширение места под строку и копирование слова “test” занимает меньше времени, чем инициализация/финализация пустого поля типа string! Да как такое может быть?
Оказывается, вот как. Оказывается, для инициализации и финализации полей Дельфи вставляет не сам код, а вызов внутренних функций @New/@Dispose с параметром, в котором зашифровано, что именно удалять. Внутри этих функций довольно громоздкий процесс разборы параметра на части.
Попробуем сделать всё вручную! Напишем:
GetMem(rec, SizeOf(rec^))
pointer(rec.FField) := 0; //инициализация строки
rec.FField := ”; //финализация строки
FreeMem(rec);
Во-первых, дельфи могла бы догадаться, что на момент присваивания пустой строки rec.FField и так пустой. Но Дельфи этого, слава богу, не делает, и честно проверяет “if rec.FField<>nil then @LStrClr”, образно говоря. Таким образом, мы выполняем все операции, необходимые для создания/очистки рекорда со строковым полем.
Время? ~1300. Меньше, чем на 100 миллисекунд отличается от простого GetMem/FreeMem. Остальные 2400 микросекунд уходят на шатания по функциям @New/@Dispose с выяснением в рантайме вещей, которые и так известны на момент компиляции.
Теперь сделать решительный вывод опять стало сложно. Получается, если делать всё действительно оптимально – то есть, вручную – то рекорды примерно в шесть раз быстрее объектов – и этот разрыв будет расти с ростом сложности! Шестикратное замедление – это уже вполне значительная разница.
С другой стороны, если пользоваться для инициализации рекордов средствами Delphi (New/Dispose), то разница всего лишь в два раза, и она будет уменьшаться с ростом сложности! Ведь чем сложнее объект, тем большую часть создания занимает инициализация, а она общая у объектов и у New/Dispose рекордов.
Во всяком случае, вывод надо сделать такой: с рекордами не стоит использовать New/Dispose, это убивает весь их выигрыш в скорости. Если же вы используете New/Dispose, то уже не очень жалко превратить рекорды в объекты. Это уже мало (в пару раз) замедлит дело. Совершенно неожиданный вывод, поскольку я всегда считал New/Dispose быстрыми обёртками над GetMem/FreeMem.
Вообще же говоря, чтобы оценить порядок временных затрат: время на создание пустого TObject примерно равно одной десятитысячной микросекунды. В общем, я скорее всё же был неправ, обвиняя объекты в медлительности. Разумеется, было бы лучше, чтобы объекты создавались без дополнительной суеты, но её не так много, чтобы это делало их использование при большой нагрузке непрактичным.
О паскале и объектах
Знаю, что программистов тут мало, но хочется куда-то написать. Я вдруг понял, какой полезной возможности нет в Delphi, которая давно есть во всех компиляторах.
В ней нет объектов.
Конечно, есть классы, которые (далее)
Но это неправда.
Копейки очень быстро собираются в рубль. Классами нельзя играть с такой же лёгкостью, как рекордами. Их не жалко в ситуациях, которые возникают редко: при создании приложения, открытии окна, загрузке файла. Но при обслуживании запроса по сети? Уже нет. Создавать класс на каждый запрос – слишком дорого. А если их будет тысяча в секунду? А десять тысяч?
Остаётся использовать для таких задач рекорды. Но тогда пропадает вся полезность классов! Из объектов они превращаются в подобие неймспейсов: не воплощают функциональность элементов, а разделяют код.
Delphi очень нужны наследование и vtable рекордам. Ну или возможность сделать класс lightweight, чтобы он не вызывал всю эту борландовскую ерунду при инициализации. Чтобы стандартное Create было одним выделением памяти + занулениями, как с рекордом.
UPD: Эксперименты показали, что я в этом мнении более-менее неправ.
Новости с браузерного фронта
В Опере 10.5 новый Javasсript-движок с компиляцией в нативный код и новый графический движок с аппаратным ускорением. В результате Опера 10.5 в шестнадцать раз быстрее Оперы 9.5 в тесте SunSpider, и обходит в нём все браузеры, включая Chrome (славящийся именно быстрым JS).
Кроме того, у неё 100/100 в Acid3.
Кроме того, поддерживаются HTML5 теги video и canvas. Ускорение работает прекрасно, анимация на канвасе даёт десятки FPS там, где Хром и Файрфокс выдавливают из себя два-три.
В общем, Опера уделала всех и вся на поле боя, докуда дотянулись руки.