POLYRHYTHM上のリンク先に書いてある。DVDやUSBメモリからMacを起動して入れちゃうと、たぶん、「Macを起動するたんびにGrubが立ち上がり、ExitしないとMacOSが立ち上がらない」ってなるんだろうと思ってたんで(そうなるようだな)、それがいやで今まで試してみなかったんだよね〜。macOSでUnix的使い方(ってか、Unixだけどな)できるんであんまり必要なかったしね。これでニコ生配信専用起動ディスク作ってみるか。Linuxでキャプチャー認識するかが問題だけどな。Markdownをhtmlに変換してみるそー、Markdown便利なんじゃねって、今さら気がついた(^^;)ということで、pandocってのを使って変換してみる。pandocってやるとインストールできる。test.mdってMarkdownのファイルがあったら、次のようにするとhtmlファイルができる。test.html-sのオプションは、ヘッダとフッタを追加するってなっている。htmlだと-sオプションを付けないで変換するとhtmlのbody部分のみが出力されて、-sを追加するとhtmlやheadやbodyタグなんかを追加したちゃんとしたhtmlファイルができる。ブログでhtmlタグ編集に放り込むなら-sオプションなしで出力してそれをコピペすればいいな。並列処理(排他制御)マルチスレッドで処理するプログラムを書いていると、同時にアクセスするとまずいリソースがあってそれでも別々のスレッドでアクセスしないといけない場合がままある。こんなとき、排他制御ってのをやってそういうリソースにアクセスするのは必ず1つのスレッドにするようにする。ここでは、DispatchSemaphoneを使ってやってみる。counterを100回カウントアップする処理を100個並列処理して結果を表示するプログラムを書いてみた。counterをカウントアップする関数を用意する。10000って表示される。セマフォを使わないと10000以外の値になる場合がある。print(counter)これを実行すると必ず10000と表示される。semaphore.wait()、semaphore.signal()コメントアウトして実行すると、10000以外になることがある。並列処理を行うには、ディスパッチキュー、オペレーションキュー、Threadクラスの3種類の方法がある。Dispatch(GCD)って言うスレッドを管理する機能を使って実行する。ディスパッチキューはGCDをラップしただけのもの(と思う)で、オペレーションキューはより高機能にしたもの(と思う)だ。Threadクラスは、まーマルチスレッドの基本的な機能を提供しているもので、ディスパッチキューやオペレーションキューの下働きを行っている。ここでは、オペレーションキューを使う。単純に別スレッドでなんか実行する。キューに処理を追加する。print("END")これを実行すると、こんな表示になる。hoge2hoge1ENDaddOperationでキューに追加した処理が別スレッドで実行され、hoge2が表示されたあと、約10秒後、hoge1が表示される。3つの処理を並列実行させてみる。3種類の処理(BlockOperation)を用意する。op1->op2->op3の順で実行されるようにする。op2はop1が終わってから実行されるようにする。op3はop2が終わってから実行されるようにする。キューに処理を追加する。queue.waitUntilAllOperationsAreFinished()これを実行すると、3つの処理の表示が入り乱れてこんな感じに表示される。(null)},op1,9ソースでコメントアウトしているコードで処理(オペレーション)の依存関係が設定できる。op2.addDependency(op1)でop1の処理が終わらないとop2が実行されないようになる。コメントアウトしている依存設定を有効にすると、op1の実行がおわってから、op2が実行され、op2が終わってからop3が実行される。ROMイメージを作ってみる。ファイルオープンダイアログを出す。