Рубрика: Всякое

MacOS QuickLook и всякие файлы

ставим QLColorCode (brew install qlcolorcode), снимаем метку карантина, сраная макось бережет нас, даже когда не нужно:

sudo xattr -d com.apple.quarantine ~/Library/QuickLook/QLColorCode.qlgenerator

получаем MD-ContentType, для чего есть команда mdls (man mdls)

mdls -name kMDItemContentType some.file.ext

которая выдаст что-то вроде:

kMDItemContentType = "dyn.ah62d4rv4ge80s52"

запихиваем в Info.plist QLColorCode, ~/Library/QuickLook/QLColorCode.qlgenerator/Contents/Info.plist в массив открываемых типов, найти просто, куча строк со знакомыми названиями, вроде:

<string>public.ruby-script</string>
<string>public.yaml</string>

Добавляем свой:

<string>dyn.ah62d4rv4ge80s52</string>

перезапускаем Finder, все должно взлететь

P.S.

Еще крутые QL невозбранно подглядываются на:

Quick Look Plugins Awesome

Rocky Linux 8.4 Open vSwitch

Прикручивать к системе буду через network-scripts, хоть и legacy, но просто, быстро и без бубна. А NetworkManager вообще выключу к х.ям. И вообще это заметка для себя, потому что OVSDHCPINTERFACES и OVSBOOTPROTO как-то не сразу обнаружилось, а надо было.

Устанавливаем пакеты, в два этапа

dnf install -y centos-release-nfv-openvswitch
dnf install -y network-scripts openvswitch2.13

Запускаем OpenVSwitch

systemctl enable --now openvswitch

Добавляем OVS свитч ovs-br0, порт в него добавим позже, иначе отвалится сеть

ovs-vsctl add-br ovs-br0

Создаем файлы конфигурации свитча

cat > /etc/sysconfig/network-scripts/ifcfg-ovs-br0 << EOF
DEVICE=ovs-br0
BOOTPROTO=dhcp 
ONBOOT=yes
TYPE=OVSBridge
PEERDNS=yes
IPV6INIT=no
# Static IP
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
DNS2=1.1.1.1
#Or DHCP Config, BOOTPROTO должно быть none
OVSBOOTPROTO=dhcp
OVSDHCPINTERFACES=enp0s3
EOF

И его порта,

cat > /etc/sysconfig/network-scripts/ifcfg-enp0s3 << EOF
DEVICE=enp0s3
ONBOOT=yes
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=ovs-br0
EOF

Выключаем NetworkManager и заводим sys-v скрипты

systemctl disable NetworkManager
systemctl enable network

Вот тут кончится сеть или перезагружать компьютер через минутку (shutdown -r +1)

ovs-vsctl add-port ovs-br0 enp0s3

или выполнить в скрипте

systemctl stop NetworkManager
systemctl start network

Ну а дальше:
https://habr.com/ru/post/242741/

ARM Without Magic. Урок 1.2 Линковка

Пришла пора привести в понятный вид скрипт линковки для прошивки под STM32 (или любой другой ARM Cortex-M).
Прошлый раз мы писали как попало и не очень понятно было, где и что лежит. Будем устранять непонятности.
Я все время говорю – символы, секции. Давайте займемся терминологией.
Первое и главное – это символ. Для компоновщика символ это именованный адрес не более того. (правда похоже на переменную в любом языке программирования?). Причем не важно, что скрывается под этим символом – адрес переменной, код функции, все что угодно. Плюс некоторые «атрибуты», такие как принадлежность к секции, размер. Когда в коде написано uint32_t var_a = 12345;, при компиляции создается символ var_a, в атрибуты помещается размер в 4 байта и принадлежность к секции .data (мы уже говорили, что инициализированные переменные попадают в эту секцию). Для функций – примерно тоже самое, только секция будет .text, ну и размер нельзя вот прямо так сразу назвать, но после компиляции он конечно же будет известен.
Читать далее

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

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

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

Такие дела..


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

Немного указательных трюков 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 бита) — код не соберется

Откат iOS8 beta

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

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

Дед

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

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