Янв 14

Прозрачный gVim в windows

Мне нравятся терминалы с прозрачным фоном, а вот gVim под Windows как-то из этой темы выпадает, а бывает что им иногда пользуюсь. Никогда не заморачивался, а вот решение оказывается есть:

if has("win32")
Plug 'mattn/transparency-windows-vim'
Plug 'mattn/vimtweak'
endif

Июл 08

Такие дела..


Сижу отлаживаю железку на китайской arduino-nano-v3, тыкаю анализатором на RX ногу, а там пусто, иголки одни. Хотя AVR-ка точно с уарта читает и отвечает как надо.
А на самом деле-то не должна, полтора вольта за логический 0 это вообще как?

Июл 12

Немного указательных трюков AVR

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

1
2
3
4
typedef struct {
    volatile uint8_t *port;
    uint8_t pin;
} out_t;

а дальше создаем массив этих структур:

1
2
3
4
out_t outs = {
 { &PORTA, PA1},
 { &PORTB, PB4},
};

ну и так далее. Получается удобно проходить в цикле.

1
2
3
4
uint8_t i;
for(i=0;i<sizeof(outs)/sizeof(out_t);i++){
 *outs[i].port |= _BV(outs[i].pin);
}

ну и как бонус — инициализация. в AVR регистр направления DDRx всегда на 1 байт младше, чем соответствующий PORTx, получается небольшой трюк:

1
2
3
4
uint8_t i;
for(i=0;i<sizeof(outs)/sizeof(out_t);i++){
 *(outs[i].port-1) |= _BV(outs[i].pin);
}
  • инициализация на выход всего массива. Это много медленнее, чем одной операцией проставить все нужные пины, но если время не критично — поддерживать такой код порядком проще: добавили запись в массив — и готово.
    Да, чтобы не тратить память, можно все это хранить в PROGMEM и доставать по необходимости.

ну и еще напоследок, удобный макрос от разработчиков ядра Linux для ловли багов:

1
2
3
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
// и его применение
BUILD_BUG_ON(sizeof(phs_entry_t) != sizeof(uint32_t));

если структура phs_entry_t размером не равна uint32_t (32 бита) — код не соберется

Июн 03

Откат iOS8 beta

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

  1. Подключаем к компьютеру
  2. Вводим телефон в режим DFU: удерживаем Home+Power 10 секунд (экран отключится), отпускаем Power, и ждем еще 10 секунд, отпускаем Home
  3. iTunes найдет телефон в режиме восстановления и предложит поставить на него текущий релиз iOS (на сейчас это 7.1.1) — устанавливаем
  4. После завершения установки, будет предложено восстановить из резервной копии (вы ведь сделали её?)
  5. Ждем более стабильной беты
Апр 25

Дед

BVC_102
Сегодня узнал, что умер мой дед. Умер почти месяц назад, 28 марта, пролежав 11 дней в реанимации, куда его определили ближайшие родственники, и уехали отдыхать.
Могли бы и позвонить, сказать.

Покойся с миром, Дед.

Янв 19

Переезд =(

В связи с трагической гибелью веб-сервера переезжаем.. Некоторые ресурсы недоступны

Мар 18

Kinamania.com

Не так давно Павел Гринёв (aka Kinaman) запустил таки сайт о страшных, но ностальгичных 90х.

Тем кто провел детство в эту ужасную эпоху — крайне рекомендуется посетить ресурс:
kinamania.com

А еще можно посмотреть его замечательный фильм «Проклятие серого слонёнка»

Янв 26

Триколор HD и GS-8306

Плюсов (кроме HD, которое все же работает) нет.
Недостатки в огромных количествах:

  • Реклама при переключении между каналами, отключить нельзя. Страшная, стыдно перед телевизором, за то, что заставляю его показывать это. Про себя молчу.
  • Светодиод в режиме ожидания ночью освещает комнату лучше, чем солнце днем. Можно было бы книжки читать, если бы он при этом еще не мерцал.
  • Смотреть можно только триколор, ручного поиска каналов нет. А еще «ресивером» называют.
  • Зависает. Помогает только выключить-подождать-включить из розетки.
  • Тормозит. Регулировка громкости не сразу отзывается. Про остальное молчу
  • Функционал на нуле. Даже каналы по собственым предпочтениям выстроить нельзя. («Избранное» после обновления списка каналов обнуляется)
  • И самое главное: через месяц редкого использования отгорел HDMI. Теперь и HD нет. Причем не только у меня.

За 10к можно было бы купить приличный ресивер, Dr.hd f15 с DRE модулем, например.
Это самая глупая трата денег в моей жизни. Даже когда кошелек (с порядком большей суммой) потерял — сожалел много меньше.