Bitcoin Core, the “full” Bitcoin client, uses a lot of disk space to store the blockchain. I use GdMap to clean up my SSD and was recently shocked to see how many GBs are occupied by those files. So I decided to join the dark side and switch to a lightweight wallet. There are several of them around of which I chose Electrum. The only trouble I had were my old (donation) addresses that are too much of a hassle to change. I seem to have solved this problem by creating a second wallet in Electrum and here’s how I made it:
First, I imported private keys for all needed addresses from Bitcoin Core. In Debug Console I typed dumpprivkey "

" for every address I wanted to keep.
Then, I started up Electrum, selected File — New/Restore and entered all the keys I obtained in previous step. If you do that, pay attention to all warnings and remember to backup this wallet — you won’t be able to recover it with your seed.
After that I was able to use my old addresses to receive and send Bitcoins in Electrum. Minus the gigabytes of blockchain data.

Уже достаточно давно я выяснил, что оптимальным методом фильтрации SMS-спама для меня является отсев сообщений с номеров, которых нет в моей адресной книге. С этой задачей справляются многие программы, например, No Spam Sms или Simplest spam sms filter. Однако, ни одна из них не свободна. Решил исправить этот недостаток, попутно собрав в одной программе все необходимые мне функции:

  • Беззвучное уведомление о сообщениях с незнакомых номеров с занесением их в отдельный список;
  • возможность добавления отправителя в адресную книгу;
  • удаление или отправка сообщения во входящие.

Программа не работает в фоне, а запускается только при поступлении новых SMS (разумеется, список заблокированных сообщений можно открыть когда вздумается).
Read more

Со времён старого доброго Delphi 7 ни разу не кодил ничего GUI’ёвого, а тут чёрт дёрнул скачать ADT Bundle. И как-то сама собой написалась простая утилитка, функционала которой хотелось уже давно.
Задача её состоит в том, чтобы выводить настраиваемое напоминание при попадании в зону действия выбранной сети. Таким образом, можно напомнить себе о чём-то, когда попадёшь в указанное место. Определение места по имени беспроводной сети позволяет отказаться от GPS и сэкономить заряд аккумулятора. С этой же целью программа не «будит» устройство периодически, а активируется только когда устройство «проснётся». Поэтому если вы прибыли в нужное место, но ни разу не «разбудили» там аппарат, программа не сработает.
Read more

Утомившись ежедневно просеивать тонны шлака в поисках одной-двух действительно интересных новостей, решил натравить на новостную ленту наивный байесовский классификатор (широко используемый, например, для автоматической фильтрации спама). Для его тренировки добавлял к каждой новости две ссылки: “отстой” и “не отстой”, на которые тыкал в течение несколько дней. Там же выводил результат применения классификатора к этой новости.
Под конец обучения абсолютно все новости стали валиться в категорию “отстой”.
Конечно, в используемой библиотеке могли быть проблемы с кириллицей, или в мой код ошибка вкралась, но подопытный сайт из закладок я все-таки удалил.

Составил композицию из фотографий нескольких светодиодных ламп с DealExtreme, а также обычной лампы накаливания и компактной люминесцентной лампы:
Сравнение цветовой температуры LED-ламп
Read more

Raspberry Pi в роли уютного сервачка
Вот эта кроха с недавних пор обслуживает glsk.net и домашний медиа-сервер. Конечно, LAMP еле ворочается на 496 МБ, но тут есть простор для оптимизации.

Логическим дополнением к скрипту, ограничивающему ширину текста, стал скрипт, ограничивающий ширину картинок. Для борьбы с извечным “ленту разнесло”:
 image_size_limit.user.js
На данный момент скрипт работает с ЖЖ, Google Reader и форумами “Проектов Петербурга” и Велопитера, пытаясь подобрать максимальный размер изображений, исходя из ширины экрана.

Долгое время пользовался файрфоксовым расширением Dictionary Tooltip в связке с Яндекс.Словарями для перевода слов во всплывающем окне, без необходимости покидать страницу. Когда оно сломалось, я решил, как водится, модифицировать что-нибудь из имеющегося. Выбор пал на расширение English 2 Bangla Dictionary, не требующее, к тому же, перезагрузки браузера.
Изменил название, поменял адрес запроса на m.slovari.yandex.ru, добавил яндексовскую иконку в контекстное меню и получилось вот это:
 yandex-dictionary.xpi (v1.1.0)

Для перевода слова нужно его выделить и либо нажать Ctrl+G, либо выбрать пункт “Яндекс.Словари” в контекстном меню.
UPD: На сайте Dictionary Tooltip появилась рабочая версия расширения. Кстати, оттуда же я узнал про версию для Chrome.
UPD2: Похоже, с выходом Firefox 22 что-то поломалось. Расширение не работает. 🙁
UPD3: Поступила информация, что на некоторых конфигурациях в Firefox 23 расширение все-таки работает.
UPD4: Переписал всё с нуля, теперь должно работать везде.

Как известно, для удобства чтения блоки текста не должны быть слишком широкими. К сожалению, широкоформатные мониторы и “резиновая” (или просто кривая) верстка сайтов порой превращают чтение в настоящую пытку. Для таких случаев есть сторонние службы вроде Readability, но пользоваться ими не всегда удобно. На помощь, как всегда, приходит Greasemonkey. Вот, например, скрипт для Dirty.Ru, ЖЖ, форумов “Проектов Петербурга” и Велопитера:
 text_width_limit.user.js
Значение ширины max_width, равное изначально 40em, можно настроить на свой вкус, отредактировав код скрипта.

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

Гыыы лол lol hello flower blob appl

Стало:

Гыыы лол 😀 [hello2.gif] [flower.gif] [blob8.gif] [appl.gif]

Скачать скрипт:
 smileys_must_die.user.js
В начале скрипта находится список правил в формате [‘фильтр’, ‘замена’]. Скрипт ищет все картинки на странице, и для каждой из них проходит по списку правил. Если в адресе картинки содержится строка “фильтр”, то картинка замещается текстом из “замены”. Если “замена” при этом пустая, то отображается просто имя файла, например [sad_smiley.gif].
Чтобы добавить произвольный сайт, можно забить в таблицу адреса всех встречающихся смайлов и/или составить один общий фильтр (как правило все смайлы лежат в одной специальной папке на сервере). Также надо включить выполнение скрипта по нужному адресу в настройках Greasemonkey.