Записи за месяц: May 2013

Petit Gargantia

Кто смотрит Suisei no Gargantia, не пропустите, по нему есть ещё смешные коротенькие web-мультики:

Multiobject try..finally

Just a simple Delphi pattern. We all have encountered nested try..finally blocks like this:

CChar := TTextTableCursor.Create(TChar);
try
 CCharProp := TTextTableCursor.Create(TCharProp);
 try
   Builder := TCharPropBuilder.Create(Result);
   try
     //Do some work with all three objects
     //Since all three are needed, we can't destroy any before this point
   finally
     FreeAndNil(Builder);
   end;
 finally
   FreeAndNil(CCharProp);
 end;

finally

 FreeAndNil(CChar);

end;But there's a nicer way of doing the same while still being exception safe (and avoiding the overhead of three try..finally exception frames):

CChar := nil;
CCharProp := nil;
Builder := nil;
try
 CChar := TTextTableCursor.Create(TChar);
 CCharProp := TTextTableCursor.Create(TCharProp);
 Builder := TCharPropBuilder.Create(Result);
//Do some work with all three objects

finally

 FreeAndNil(Builder);
 FreeAndNil(CCharProp);
 FreeAndNil(CChar);

end;

Installing Delphi VersionInsight Plus

Since Delphi XE, Delphi has SVN support integrated into file history display. SVN revisions are displayed in addition to local backups, all properly sorted by date. Very nice.

Mercurial and Git support wasn't added into the default distribution, but there's a newer version of VersionInsight plugin with fully functioning support for those, written by Delphi developers. Meet RAD Studio Version Insight Plus.

To use this you need to compile it. It's simple, but mind these fine points:

  • There are several branches in the repo, you need the /plus one. Not the trunk.
  • Delphi less than XE will not compile those, no simple solution.
  • You need to compile five packages: svn, svnui, svnide (already grouped into DelphiSVN) + hgide and gitide.
  • Delphi already includes pre-compiled svn, svnui and svnide. You need to remove those from "Component> Install packages" list. (And restart)
  • The ones from SVN are marked ver_150, and the ones with Delphi ver_170, but the ones from SVN are newer (I think).
  • When compiling the packages, Delphi might try to trip you up and use existing packages it cached somewhere instead of the sources right in front of it.
    To be on a safe side, do dir c:\svn*.bpl /s, dir c:\svn*.dcp /s, dir c:\svn*.dcu /s, and remove everything related to VersionInsight plus. (Some matches are going to be in the cached Delphi install distributions, these are fine).
    Particularly, svn*.dcp in Program Files\Embarcadero\Delphi\DelphiVersion\lib\Win32\debug or \release are known to silently cause problems such as svnui.bpl complaining that TSvnBlameOptions is not defined even though it's defined right there in SvnClient.pas.

Otherwise packages compile just fine, have no dependencies and produce almost no warnings.

After compiling the packages, install the last three (svnide, hgide and gitide). Restart the Delphi.

The SVN support will start working straight away (it should have been working before too). For Git and Mercurial you need to go to Tools> Options> Version Control, and set paths to git.exe and hg.exe executables in the respective sections.

Я просто оставлю это здесь

Сюжеты для аниме.

…ОЯША сажают в меху, говоря что он ИЗБРАННЫЙ и отправляют в бой.
Он путает кнопки, перегревает реактор и погибает вместе с машиной.

Переехав в тихую, на первый взгляд, деревушку, ОЯШ узнает о череде кровавых убийств.
ОЯШ уезжает из деревни через неделю.

Главаря банды не берут в школу учителем…

(целиком, на всякий случай)

Обыкновенный японский школьник обнаруживает, что позади него в новом классе сидит замкнутая в себе девушка, которая может часами смотреть в окно.
До окончания школы они лишь пару раза перекинулись случайными фразами и забыли друг о друге почти сразу после выпуска.

Цундере с громкими воплями отпиздюливает ояша в коридоре школы
Ее увозят в дурку с диагнозом нервный срыв, и оттуда она так и не выходит.

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

Японский студент, который на самом деле является принцем Британии, оказывается в центре вооруженного конфликта между армией и силами восстания.
Отряд зачистки расстреливает его возле стенки.

ОЯША сажают в меху, говоря что он ИЗБРАННЫЙ и отправляют в бой.
Он путает кнопки, перегревает реактор и погибает вместе с машиной.

Переехав в тихую, на первый взгляд, деревушку, ОЯШ узнает о череде кровавых убийств.
ОЯШ уезжает из деревни через неделю.

Обыкновенная японская девочка приходит в себя в доме, населённом серокрылыми. Она не помнит как попала сюда.
После курса нейролептиков наступает устойчивая ремиссия, девочка снова начинает узнавать родителей.

Правая рука ОЯШа разрушает любую магию.
Магии не бывает и он живёт нормальной жизнью.

Тихая девочка собирает по ночам компьютер.
И не может собрать его уже три года.

Главаря банды не берут в школу учителем.

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

Странствующий самурай не берет попутчиков.

На землю вырываются адские твари из иных измерений.
Против них чудесно работает обычное оружие.

Мальчик и девочка в детстве дают обещание всегда быть вместе.
Они выросли, живут далеко друг от друг, у них уже есть семьи.
Никто ничего не помнит об обещании и никогда не вспомнит.

Главный герой идёт ночью из магазина, и видит под фонарным столбом блондинку без рук и без ног. Он анонимно вызывает скорую и ментов, и съебует пока те не приехали.

У героя вырастает верхняя половина девочки заместо кисти правой руки.
Отторжение, некроз, ампутация.

Нашёл в интернете:

Так вот, суд не есть благотворительная организация. В суде все надо доказывать. И, если человек называет себя верующим, то он обязан это доказать. Причем документально.
Методика должна быть следующая (годится для христиан).

Комиссия из нескольких человек, в присутствии нотариуса должна провести следующие тесты:

Тест № 1
Передвижение предметов «Истинно говорю вам: «Если вы будете иметь веру с горчичное зерно и скажите горе сей: перейди отсюда туда», и она перейдет. И ничего невозможного не будет для вас» (Матфея, 17:20) Испытуемый должен будет подвинуть кучу песка (ГОСТ 8736–93 Песок для строительных работ) весом 1 тонна на 1 метр силой веры.

Тест № 2
«Уверовавших же будут сопровождать сии знамения: именем Моим будут изгонять бесов; будут говорить новыми языками;» Марка 16:16–17. Испытуемый должен будет набросать коротенькое эссе на тему «Почему я уверовал» на языке, рандомно выбранном из всех мировых с помощью лототорона.

Тест № 3
Продолжение предыдущей цитаты «будут брать змей» Марка 16:18. Испытуемый получает комплект из чёрной мамбы в правую руку и гремучей змеи в левую на 10 минут.

Тест № 4
Продолжение предыдущей цитаты «и если что смертоносное выпьют, не повредит им» Марка 16:18. Испытуемый должен выпить рандомный смертельный яд и закусить мышьяком.

Тест № 5 (самый легкий)
«Возложат руки на больных, и они будут здоровы» Марка 16:18. Испытуемый должен наложением рук вылечить своего родственника, предварительно зараженного чумой или сибирской язвой.

Как только человек подтвердит, что он верующий — тогда он получает право «оскорблятся» и подавать гражданские иски. Если нет, то значит он неверующий, какого хрена он тогда возмущается?

Организация личных данных

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

Предложений семь:

1. Использовать только открытые протоколы.Использовать только открытые протоколы. Например, джаббер лучше ICQ, т.к. он – распределённая сеть, состоящая из разных серверов. Если аська однажды закроется, пропадут все контакты вообще, а если закроется jabber.ru, я просто перейду на другой сервер. По крайней мере, контакты моих друзей останутся прежними.

2. Использовать только ПО, которое хранит файлы на вашем компьютере.

Использовать только ПО, которое хранит файлы на вашем компьютере. Не обязательно на домашнем – речь и о серверах. Например, любой блог-сервис рано или поздно испортится или будет закрыт, и сможете ли вы скопировать свои записи? А выложить их куда-нибудь? Если же вы установили собственный WordPress, то все ваши записи у вас в базе данных. Можете делать с ними что хотите.

Поэтому же Mercurial или Git лучше SVN. Если сервер СВН закрылся, у вас на компьютере осталась только последняя версия файлов. Вся история утеряна. А меркуриал и гит хранят полную копию репозитория, и в два клика можно свить себе новое гнездо на другом сервере.

3. Скачивать всё.

Скачивать всё. Сколько раз бывало, что ваш любимый ролик на ютюбе забанили правообладатели? Удалили по неведомым причинам? Увы, вещи в интернете не вечны. Понятно, что можно прожить без той офигительной картинки с понями, но зачем? Надо всё скачивать. Для ютюба есть скрипты, которые сохраняют всё из Favorites. Посты из блогов можно получать и сохранять через RSS (не всегда целиком, увы).

И наоборот, не пользоваться пятнадцатью сервисами, чтобы выкладывать свои картинки и видео. Хранить по возможности всё на одном, на своём.

4. Использовать свой сервер для централизации.

Использовать свой сервер для централизации. Не всегда удобно хранить данные дома – компьютеров много, а если я хочу видеть свой контакт-лист на смартфоне? Поэтому каждому нужен свой собственный маленький сервер. Онлайн-ПО находится на этом сервере. Например, установите вместо Google Reader себе tiny-tiny-rss, и читайте в ней фиды с любого компьютера (а для мобильников есть клиенты). В таком духе должно происходить развитие и прочих сервисов. Нужна синхронизация контактов? Ищите открытый сервер и клиент для смартфонов. К сетям типа Skype, которые закрыты и огорожены, следует относиться не более, чем как ко временному способу связи.

Вы мотаете головой – “да ну, это сложно”? Не так сложно. Личный сервер можно поднять и бесплатно (просто не выключать домашний ПК), и купить за пару минут по дешёвке в интернете (от 100 рублей в месяц). Главное – задаться целью. Сервер за границей удобен ещё и тем, что среди прочего на него можно установить VPN-клиент, чтобы читать сайты, которые наше мудрое правительство запретило нам читать. Вы, кстати, знаете, что лига безопасного интернета уже намеревается запретить мангу?

5. Использовать свой домен как identity.

Использовать свой домент как identity. Даже в jabber, когда закрывается сервер – это неудобно. Ваш jabber-id становится недействителен, друзьям надо заново добавлять вас в контакты. А что, если закрылся ваш почтовый сервис? Представьте, сколько сайтов по всему миру используют ваш почтовый ящик для восстановления пароля, подтверждения важных действий?

Для защиты от этого нужно все identity привязать ко своему домену. К примеру, один из моих почтовых и одновременно джаббер-аккаунтов – me@boku.ru. Сейчас у меня в файле зоны boku.ru указано, что и почтой, и джаббером для моего домена заведует гугл. Если гугл всё-таки отключит XMPP-службу, я заменю адреса серверов на другие – и никто ничего не заметит.

Таким образом, ваш домен – владение которым стоит 300 рублей в год! – даёт вам возможность сохранять свой интернет-“номер телефона” при переходе между “операторами связи”. При такой схеме он становится вашей самой важной собственностью в интернете. Если хостер вас подвёл, всегда можно перейти к другому хостеру. Если почтовый сервер закрылся, можно, пользуясь этими советами, перенаправить вашу почту на другой. Но ничего нельзя сделать, если ваш домен у вас отобрали – тут ваша личность уже невалидна навсегда. Поэтому, организуя свои данные, стоит подумать – быть может, лучше отделить домен-визитную карточку со всеми вашими identity от домена-хоста для ваших крамольных мыслей в адрес мудрого правительства.

6. Использовать шифрование.

Использовать шифрование. Этот предпоследний пункт не по теме поста, но говоря об организации личных данных, его нельзя не упомянуть. Соединяйтесь с важными сайтами через HTTPS-соединение. Пользуйтесь SpiderOak для бэкапов и синхронизации между компьютерами и LastPass для хранения паролей – эти программы шифруют ваши данные так, что никто, даже их авторы, не могут их прочесть без вашего ключа.

А параноикам я бы посоветовал шифровать и данные на своих компьютерах – хотя бы встроенными средствами: EFS в Windows делает это совершенно прозрачно, только забэкапьте ключи. Для более серьёзных случаев существует TrueCrypt. Можно зашифровать с его помощью и весь диск, правда, тогда при старте придётся вводить лишний пароль. Однако после старта весь компьютер можно считать safe haven: никто не получит доступ к нему иначе, как с помощью терморектального криптоанализа.

7. Делать бэкапы.Делать бэкапы. Этот пункт был бы длиннее, если бы сейчас это не было так просто. Установите SpiderOak, купите себе за 300 рублей в месяц 100 гигабайт пространства, отметьте папки и забудьте о бедах. Личный веб-сервер им тоже можно бэкапить.

Google отключает XMPP

Если кто не знал, ваш аккаунт в gmail до сих пор можно было использовать как логин в Jabber. Ваши контакты из gmail/google+ автоматически (с картинками) оказывались в списке мессенджера, а логи разговоров – в отдельной папке в gmail.

Недолго музыка играла. Гугл всё это дропает. Кто-то в шутку пишет – что дальше, Гугл? От SMTP откажешься? И возможно, что и откажутся. Потому, что зачем поддерживать SMTP, пусть люди веб-интерфейсом пользуются.

Аниме – торт

Я не знаю, что у них там случилось, но в этом сезоне внезапно все решили снять по хорошему аниме. Suisei no Gargantia, Hataraku Maou-sama, Shingeki no Kyoujin, Aku no Hana, ну и Ore no Imouto. “Титаны” и “Аку но хана” пока самые интересные, но и остальные не сильно отстают.

На опенинг и сценки из Shingeki na Kyoujin теперь все делают пародии.

А вот удивительно красивый эндинг к Аку но хана.

И ещё кое-что о безопасности

Есть такой сайт – 23andme.com, который за $99 сделает для вас запись вашего генокода, ДНК. И потом вы всегда сможете её скачать, посмотреть, сколько в вас какой национальности, кем были ваши предки, к каким заболеваниям у вас склонность, кто ваши родственники… В общем, всё, что по ДНК умеет определять наука. И список всё время растёт.

Чтобы проверить свой генокод, нужно заказать пробирку, плюнуть в неё много раз и послать обратно в Америку. Я решил это проделать. Но выяснилось, что в Россию 23andme пробирки не посылает. Почему?

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

Воздух свободы

В посылках с книжками, чтобы книжки не болтались, Амазон кладёт по нескольку небольших запаянных полиэтиленовых пакетиков с воздухом. Так, пользуясь книжками как прикрытием, я импортирую из Америки воздух свободы!