Категория: Компьютеры

Заметки о программировании и на околокомпьютерные темы

Вложенные категории: Delphi, Игры

Silk Road demise

Так вот, к чему я вспомнил. Пока в телевизоре закончился один Breaking Bad, другой Брейкин Бэд закончился в реальной жизни. Преступный супермаркет Silk Road закрыли американские спецслужбы, а его хозяина Dreaded Pirate Roberts арестовали. Случилось это не потому что NSA вскрыло Tor, как все думали после недавнего ареста The Freedom Hosting, а просто DPR спалился.

The silk road was basically made from the shroomery.com, it was the first place he visited. They traced him by finding his old posts on various forums where he advertised it, not as the owner, just saying “I found this site, what do you think about it?”

комментарий на реддите с кучей интересной инфы

Рекламировал Silk Road под тем же ником, под которым в другом месте постил свой email – этого стало достаточно, чтобы его заподозрили. Владельцем оказался Росс Ульбрихт, молодой образованный парень, физик и экономист из какого-то там университета. Имея до 800 000 биткоинов (3.5 миллиарда рублей по текущему курсу), жил под фальшивым именем в коммуналке со студентотой, а серверами Silk Road управлял из ближайшего кафе с ноутбука. Когда человек под ником friendly chemist стал его шантажировать, по-джентельменски вежливо заказал его убийство:

DPR sent a message to “readandwhite,” stating that “friendly chemist” is “causing me problems,” and adding: “I would like to put a bounty on his head if it’s not too much trouble for you. What would be an adequate amount to motivate you to find him?

readandwhite sent DPR a message quoting him a price of $150k to $300 “depending on how you want it done”

DPR responded: “Don’t want to be a pain here, but the price seems high. Not long ago, I had a clean hit done for $80k.”

DPR and readandwhite agreed upon a price of 1,670 Bitcoin – approximately $150k – for the job.

Several hours later on March 31, 2013, readandwhite wrote back: “I received the payment… We know where he is. He’ll be grabbed tonight.”

Subsequent messages reflect, at DPR’s request, readandwhite sent DPR a picture of the victim after the job was done…DPR wrote readandwhite “I’ve received the picture and deleted it. Thank you for your swift action.”

Ho. Lee. Shit.

комментарий на реддите

Правда, Reddit уже сомневается, что этот случай так прост. Friendly chemist требовал за краденые аккаунты пользователей 500 килобаксов, которые должен был кредитору. Ульбрихт попросил связать его с кредитором и заказал химика именно ему. Но это же глупо. Что, если химик и кредитор его обманут? Ульбрихт мог просто пугать химика, рассчитывая, что тот струсит, увидев, что Ульбрихт правда его заказал. Во всех отношениях удобно, и химику остаётся только притвориться мёртвым и уйти на дно, иначе в следующий раз Ульбрихт закажет его кому-нибудь другому (и тот уже по правде его убьёт).

Всплывают и другие истории, в одной из которых DPR якобы заказал пытки и казнь работника, пошедшего на сделку с полицией. Неожиданный поступок для идеалиста-либертарианца, по его собственным словам, выступавшего не за наркотики, а за принцип, и запрещавшего на своём сайте торговлю ЦП, оружием и контрактами на убийство:

“What we’re doing isn’t about scoring drugs or ‘sticking it to the man.’ It’s about standing up for our rights as human beings and refusing to submit when we’ve done no wrong.”
“Silk Road is a vehicle for that message,” he writes to me from somewhere in the Internet’s encrypted void. “All else is secondary.”

Интервью DPR в Forbes

Понятно, что Росс Ульбрихт попался на ерунде, но вообще он шифровался круто: сервер держал в другой стране, секретную жизнь тщательно скрывал. Прямо Волтер Вайт/Гейзенберг на самом деле. Я потерял ссылку, но в каком-то из интервью DPR спросили, страшно ли ему, и он сказал, что очень страшно. Он уже тысячу раз пережил все ошибки, арест, а теперь уже свыкся с мыслью, что рано или поздно его поймают и он проведёт в тюрьме всю жизнь – однако идея стоит того. Ну вот, теперь ему действительно грозит пожизненное заключение, и вряд ли он получит что-то меньшее. Не знаю, “увы” тут, или “ура”, или что.

Bonus reading: Родители Ульбрихта говорят, что тот не мог никого убить. Да может и не убивал, на самом деле – пока непонятно.

Как вести в Picasa несколько раздельных баз данных

Я решил попробовать Picasa для организации своих фотографий – это клиентская программа вроде Danbooru, проставляет фоткам теги, находит в них лица, сортирует по времени, массово добавляет/удаляет EXIF, даёт привязывать фотки к карте (geo-tagging), и так далее. Сами фотографии при этом не меняются и остаются в своих папках, а вся информация хранится в базе данных. Пока что работать удобно.

Но у меня есть несколько разных наборов картинок, которым нужна сортировка. Один – фотографии, другой – всякие смешные картинки. Смешивать неудобно потому, что глупо, когда рядом с фамилией твоего одноклассника в списке “людей” находится Эдвард Элрик. Picasa позволяет разделять папки с фотографиями на “Коллекции”, но до конца это проблем не решает и что, если вторая база хранится в другом месте? На отключаемом диске или в сети? А профиль в Picasa только один.

В интернете в основном предлагают неудобные решения с помощью специальных программ, которые подменяют базу Picasa перед запуском, или говорят завести для второй базы отдельного пользователя Windows (у него база будет своя). Но это же неудобно – перелогиниваться ради работы с другой базой.

И внезапно кто-то сказал здравую мысль. Нужно завести отдельного пользователя, настроить под ним базу как следует (в том числе сделать juniction из AppData\Google\Picasa туда, где хранится вторая база), а затем залогиниться под обычным пользователем и запускать оттуда Picasa с помощью RunAs.
В винде есть такая возможность – запускать приложение от имени другого пользователя, не выходя из своего сеанса. Нужно зажать Shift и кликнуть по ярлыку правой клавишей, в появившемся меню выбрать “Запустить от имени другого пользователя” и ввести логин и пароль. Можно даже настроить специальный ярлык, который всегда будет запускать Picasa от имени нужного пользователя.

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

Просто интересное наблюдение

Довольно крупный хостер картинок imageshack.us предлагает скачать свой клиент SkyPath, который автоматически закачивает, скачивает и синхронизирует картинки между библиотекой на imageshack и всеми компьютерами (мобильниками).

Я скачал, поставил – это ребрендированный Dropbox. Довольно круто.

Хоть я лично от обоих вещей потихоньку и отказываюсь (от Dropbox в пользу BTSync, а картинки все хочу хранить на своём сервере).

Носи в кармане

Такая штучка стоит 500 рублей. Вставляете в любой компьютер, делаете:

netsh wlan set hostednetwork mode=allow ssid=[имя сети] key=[ключ] keyUsage=persistent
netsh wlan start hostednetwork

И у вас запущена беспроводная сетка. Можно расшарить быстрый интернет для мобильника, например.

Про Microsoft

У Майкрософт талант делать ПОЧТИ крутые вещи так, что все плюются.

Windows 8 – попытались объединить ПК и планшеты, сделать общий интерфейс, но на ПК в виде исключения оставили старый рабочий стол. Все плюются. А представьте, что MS объявила бы об этом по-другому: Мы сделали новую, крутую ОС для мобильных устройств. Бонус 1: Она основана на ядре Windows, так что переучиваться придётся мало! Бонус 2: Программы с мобильников можно запускать в специальной среде на обычном ПК!

Да это же прекрасно. А разница – только в подаче и в мелочах.

Провальный XBox One – DRM встроен в приставку, требуется постоянное подключение к интернету, игры всегда скачиваются. По сути это же Стим, который все любят, только оффлайн-режима нет. И если подумать, Sony со своим PS4 может сделать дурную услугу, поскольку DRM всё равно будет, но у каждого разработчика свой. И когда разработчик закрывается или закрывает сервера, его игра перестаёт работать. А при централизованном DRM нужно только чтобы работали сервера Майкрософт, чего добиться гораздо проще.

2007 год

Для тех, кто был на сайте, который нельзя называть, в 2007 году, вот вам кусочек ностальгии: 2007.iichan.hk.

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

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.

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

Ну вот, гугл закрывает 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, пусть люди веб-интерфейсом пользуются.