MacBook AIr」カテゴリーアーカイブ

Nikon @ Fedora and macOS

前回すっかり忘れていた事だけど。
Nikon と Fedora の場合は gphoto2 プロトコルでマウントされます。
ついでにこの場合接続アイコンはカメラの型になります。

gphoto2

メーカーや機種によって違うんですね、説明不足でごめんなチャイ。
というか、つまり LUMIX は USB HDD 等と同じ扱いってことでいいのかな。
Nikon と LUMIX しか持っていないので他は各自で試してね。

ちなみに GNOME は上記のように GVFS という仮想ファイルシステムを使います。
なので gphoto2 や sftp での接続をすべて Nautilus でまかなえます。
USB で接続するだけでココまで自動でやってくれます。

macOS の場合は Nikon を USB 接続しても Finder には出てこない。
写真を取り込むには 写真.app(Photos.app) を起動する。

photos_app

アイコンを選択して表示すると勝手に取り込みされます。
ついでに iCloud にアップロードされますw

raw と同時保存の画像は raw も取り込みされます。
そのまま raw 現像や簡単な編集もできる、と今初めて知った筆者であった。

ってコレ LUMIX の raw だとどうなる?
RW2 ファイルをドロップしてみたら普通に読み込んだ。
ライトの設定を弄っただけでヒヨドリの失敗写真がこんなに綺麗に。

hiyodori

そのまま command+shift+E で JPEG に現像できる、スゲェ。
この場合は Retina Display でも 72dpi になるのね、よかった。
Photos.app いいヤン、カメラ好きがみんな mac を選ぶのはこういうことか。

Fedora だと raw は Darktable だけど、使い方がイマイチわからないんだよね。
でも Fedora は上記の魅力が、 mac ユーザーはサブでもいいから使ってみよう。

Fedora 32 AltGr

Fedora 32 を新規で入れて数日たった今頃になって気が付いたけど。

gsettings の
org.gnome.desktop.input-sources xkb-options

lv3:ralt_switch
という値が最初から入っていた。

これは非英語圏のヨーロッパで見かける右 Alt キー経由で特殊記号 (AltGr) の設定。
この仕組みが無いとブレースすら打てないから周辺国プログラマーは不便だと思う。
日本語キーボードや US 配列でコレだと右 Alt キーが動作しなくなるだけ。
とっとと消すか CapsLock を無効にする ctrl:nocaps に書き換えよう。

ところで、筆者が US 配列キーボードを使っている理由は。
RealForce を買う時に日本語配列のスペースキーが小さすぎて嫌だったから。

English Keyboard in japan (Fedora 16) | Paepoi Blog

Fedora 16 の時、つまり 8 年前に買ったのか。
一年に 2 回くらい全部バラして重層水で洗っていて新品みたいに使っている。
実はスゲェ安上りなのよね RealForce って。

東プレ R2TLS-USV-IV REALFORCE TKL S R2 英語 テンキーレス(87配列 静音):アイボリー 変荷重

筆者のは古い 86u で変荷重だから後継はコレかな、高くなったなぁ。
メニューキーが無くなって Super と Fn キーが増えた分 Space がちょっと小さく。
あと縦サイズが縮小されている、それより何より CapsLock のインジケーターがあるみたい。
86u の不満点はソレだけなので、壊れる様子は無いので 86u をまだ使うけど。

んで、長年 Fedora で US 配列を愛用していて良かった一番のこと。
US 配列の Mac との違いは Super と Alt の位置が逆なだけであること。
入力メソッド切り替えが Super+Space で全く同じというのがデカい。
おかげで併用していても全然迷うことが無いっていう。

JIS 配列の Mac って何故あんな変態配列なんでしょう?
気に入っている人には悪いけど Linux と併用するなら US 配列一択。

macOS tree command

前回 CommandLineTools 以下に「SDK 丸ごと落とされる」と書いた。
情報として何という名のファイルが「ドコにドンダケ」ってほど入ってしまうのかを公開したい。
tree というまさしくソレ用みたいなコマンドがある。

あぁ、このコマンドって使い道があったんだなぁって思った筆者であった。
けれど macOS には tree コマンドが入っていなかった。

Fedora なら使えるのでリモート接続してリダイレクトしようかなと。
てなわけで、sftp でリモート接続した Fedora から tree コマンドを打ってみた。
けど、何時間たっても処理が戻ってこなくて諦めた。
こんなに遅いはずがない、サンドボックスかな?

普通に「macos tree コマンド」と検索するとションボリ。
何故みんなコンパイラを手に入れたのにインストールしかしないの?
brew 使う人って(以下略
てか Catarina 以降だと Gatekeeper にブロックされると思うんだけーが。

Catalina時代の「GateKeeper」と付き合う方法 – 新・OS X ハッキング!(257) | マイナビニュース

spctl は Windows でいうウイルス対策アプリを無効にする手段。
慎重に活用とかアホかと、その必要があるアプリは淘汰されるべき。

で。

実はそんなことをしなくても検疫機能を回避する方法がある。
自分でビルドすればいい、もしくは自分でスクリプトを書く。

tree コマンドが無い環境で tree コマンドを実現 – Qiita

シェルスクリプトだけでがんばった人がいた。
これでもいいけど、よし筆者は Python でがんばってみよう。
macOS で動かせるように標準モジュールだけを使う。

#!/usr/bin/env python3

'''
    tree command in Python 3.7
'''

import os, sys

all_dir_num = 0
all_file_num = 0

def flist(path):
    '''
        Exclude UNIX hidden files. and sorted.
    '''
    l = os.listdir(path)
    res = []
    for f in l:
        if f.startswith('.'): continue
        if f.endswith('~'): continue
        res.append(f)
    return sorted(res)

def tree(path, tab):
    files = flist(path)
    length = len(files)
    head = '├── '
    num = 1
    for f in files:
        if num == length:
            head = '└── '
        subdir = os.path.join(path, f)
        if os.path.isdir(subdir):
            if sys.stdout.isatty():
                # stdout
                print(f'{tab}{head}\033[34m{f}\033[0m')
            else:
                # Redirect
                print(f'{tab}{head}{f}')
            global all_dir_num
            all_dir_num += 1
            # Recursion
            tree(subdir, f'{tab}│   ')
        else:
            print(f'{tab}{head}{f}')
            global all_file_num
            all_file_num += 1
        num += 1

if __name__=='__main__':
    d = '.'
    if len(sys.argv) > 1:
        d = sys.argv[1]
        if d.startswith('~'):
            d = os.path.expanduser(d)
    print(d)
    tree(d, '')
    # footer
    print(f'\n{all_dir_num} directories, {all_file_num} file')

tree

stdout で色を付けるとリダイレクトでアララとなるから振り分けしてね。
os.listdir はカレントディレクトリならドットでいいのか、へー。

中身が一つだけの時に前の縦線を消すナイスな方法は思いつかなかった。
その中身がディレクトリで更に中身が一つだった場合等でチグハグになる。
それとディレクトリを青色にしたけど tree コマンドとなんか色が違う。
とはいえ完全に同じにする必要は無いんだしコレでいいかなと。

コレを mac で自分がパスを通した場所にコピーして。
tree という拡張子の無い名前を付け +x パーミッションを付けて。

tree /Library/Developer/CommandLineTools > cltool.txt

したものを置いておきます。
十七万五千行、17MB になってしまったので zip 圧縮した。
cltool.zip

python3 は先に自分で入れたものなのかコレに含まれているのかは解らない。
まあ微々たる差だ。
それより macOS だと場所によってはサンドボックスに引っ掛るのが困る。

macOS Command Line Tools

今回は Mac ネタ。
macOS にコンパイラを入れたいけど Catarina の Xcode は 8.1GB もある。
ちょっと C を使うだけにこんな巨大なモンを入れるなんてイヤだ!
と思っていたけどコマンドラインツールというものがあるらしい。

日本語ブログにはロクな情報が無いので下記を見て。
How to Install Command Line Tools in Mac OS X (Without Xcode)

個別には選択できないのね、てかヘッダやライブラリ類の情報が無いけど。
筆者はぶっちゃけ CLang と標準ヘッダと Cocoa SDK だけでいいんだけど。
C 等の標準ヘッダは当然入ると思うけど何故かどこにも情報が無い。

インストールサイズも Xcode からいくつ減ったみたいなのしか出てこない。
よし疑問点は自分で導入して調べてみよう、まず現状 SSD 状況の確認。

i001

異様に少ないかも、ほぼスクリプトというかテキストファイルばかりだもん。
筆者は大量なデジイチ画像や動画は全部 Fedora メインマシンに入れているので。
とっととリンク先コマンドでインストールしたら。

i002

19.22 – 18.28 = 0.94
約 1 GB ってことね、Linux を知っているとコレでもデカい。

open /Library/Developer/CommandLineTools/

とコマンドを打って何がインストールされたか調べる。

i003

Cocoa どころか Metal, WebKit 等のヘッダは上記に普通にあったわ。
てか SDK 丸ごとかよ、そりゃこんなサイズになるってばさ。
標準ヘッダは usr/includes 以下にある、Linux の /usr/includes と同じ。
C/C++ ヘッダは共通位置に、拡張子の無いものが C++ 用なので共存している。

ところで解っていると思うけど、新たにパスを通す必要は無い。
最初から /usr/bin にあるゾンビコマンドが該当コマンドを実行する。
Linux の pkg-config 相当は clang のオプションだけでまかなえる。

#include <stdio.h>

// clang -o c_out test.c

int main(void) {
    // C99 対応チェックをついでに
    for (int i=0; i<3; i++) {
        printf("%d\n", i);
    }
    return 0;
}

#import <Foundation/NSString.h>

// clang -o m_out test.m -framework Foundation

int main(void) {
    const char *cstr = "スズキ";
    NSString *nstr = @(cstr);
    NSLog(@"%@", nstr);
    return 0;
}

をやってみると普通にビルドできた。
clang は gcc と -o オプションが共通なのね。

xcode-select -h で見るとアンインストールオプションが無い。

sudo rm -r /Library/Developer/CommandLineTools

だけでいいと思う、削除しないけど。

Atom 1.44 Script

筆者は Fedora と MacBook Air を 9:1 程度の割合で使っている。
えっ Windows ?もう Office と業務アプリ以外で使う人いないでしょ。

macOS で Atom の 1.44 アップデートがきたので更新。
設定のコミュニティパッケージが消えた、何でや!
いや atom-runner とかは普通に動作しているんですけど。

GitHub – rgbkrk/atom-script

原因は Script パッケージを無効にしたまま残していたからだった。
1.43 時からバグっていたけど、メンテナンスする人がいないのか…

Atom: Script to atom-runner | Paepoi Blog

削除したら設定のコミュニティパッケージは正常に戻った。
表示がおかしくなった人は無効にしているパッケージを削除してみて。

GitHub – lsegal/atom-runner

いやまあ、atom-runner も 4 年放置されているけど。
更新されないから逆に自分で書き換えたコードが上書きされないメリットも。
「Atom を Gedit のように使う」のページもそろそろ更新しなきゃ。