[Linux] パーティションをisoファイルとしてバックアップ

手順は以下の通りです。

1.USBインストールメディアからubuntuを起動する。

2.ターミナルを起動する。

3.fdiskコマンドでディスク情報を確認する。

fdisk -l

4.以下のコマンドでisoファイルを作成する。保存先デバイスを必ずマウントすること。

# /dev/sda0のバックアップを/dev/sda1/backup.isoとして作成する場合

mount /dev/sda1 /mnt

sudo dd if=/dev/sda0 of=/mnt/backup.iso bs=1024k

[macOS] Linux USBインストールメディアの作成

備忘録として。

USBメモリのドライブパス確認

diskutil list

USBメモリをexFATで初期化(/dev/disk5の場合)

diskutil eraseDisk ExFAT NONAME /dev/disk5

USBメモリのマウント解除

diskutil unmountDisk /dev/disk5

ddコマンドでISOイメージをコピー

sudo dd if=ubuntu-22.04.1-desktop-amd64.iso of=/dev/disk5 bs=16m

[iMovie] 図形によるマスク

[M1 Mac, Big Sur 11.6.8]

背景色がRGB(0,255,0)[#00FF00]の図形画像を作成しiMovieで重ねると簡単にマスクできました。

図形は適当なサイズの四角形にしておいて、動画編集時にマウスで四隅を動かし大きさ・形を調整します。図形画像は今回Adobe XDで作成しました。

用意しておくPNG画像

ファイラー比較 2022年7月

MacとWindows11のファイラーを比較してみました。

複数タブを同時に表示する機能があればかなり便利です。

XtraFinderはM1 Mac, Big Surの環境ではうまくインストールできませんでした。Intel版で使用していたときの評価になります。

秀丸ファイラーClassicは今回比較した中では最も多機能かと思います。ただClassicと銘打つだけあって見た目は古風です。

Macでサブディスプレイにファイラーを表示するのであれば、今のところCommander One 3つとFinder 1つ(アプリ起動&マウント解除用)の組み合わせがベストでしょうか。

Commander Oneは横縞模様とテキストの色をFinderに合わせて統一感を持たせました。Cocoa風に色付けできるところが高評価です。今のところ無料の機能制限版で問題なく設定できています。

Commander Oneの色設定
横縞1 RGB(31, 31, 31)、横縞2 RGB(38, 38, 38)、テキスト RGB(223, 223, 223)

一つ難点は日本語訳が小慣れていないところです(ディレクトリ→ディレクトリィ,フォルダ→ホルダー,コピー→コピィなど)。頑張って訳してくれていますが、これだったら英語表記の方がいいように感じました。なおこのアプリはSwiftで書かれており、サイズは57.1MBと大きめです。

Windows11の場合は秀丸×3とExplorer×1にします。

Commander One ×3 & Finder ×1

Mac FinderとWindows ExplorerのGUI比較

久しぶりにWindows11でプログラムを書こうと起動したはいいものの、見るからに生産性の低いExplorerのGUIでやる気が削がれました。

MacのFinderと比べると一目瞭然です。以下、デフォルト設定の評価になります。

1.上部に無駄な空間が多い
2.フォルダやファイルの間隔がコンパクトビューにしても微妙に広い
3.フォントサイズが微妙に小さい
4.上部とファイル表示部を隔てるやけに目立つ白い横線(細い灰色にすべきでは) など

Window11になってどうしようもなく劣化しました。フルHDではなく4K画面であれば多少は見やすくなるのでしょうか。

かつての卓駆のようなファイラーを作ろうかと本気で考えましたが、秀丸ファイラーClassicというシェアウェアを見つけたので試してみることにしました。

Windows11 Explorer(コンパクトビュー)
Mac Finder

[C++] 作業ディレクトリの確認・変更

#define DATA_DIR "/dir" // 変更後の作業ディレクトリ
#define PATH_SIZE 512

#include <iostream>
#include <unistd.h>

using std::cout; using std::endl;

// 変更前の作業ディレクトリ確認
char tmp[256];
getcwd(tmp, 256);
cout << "Current working directory: " << tmp << endl;

// 作業ディレクトリ変更
chdir(DATA_DIR);

// 変更後の作業ディレクトリ確認
getcwd(tmp, 256);
cout << "Current working directory: " << tmp << endl;

[C++] const char* とconst wchar_t*の相互変換

Python/C APIでよく使うため関数をリサーチしました。2011年のStackOverflow英語版等にいい関数がありましたので拝借します。なおサロゲートペアには対応していません。

サロゲートペア:1つの文字に対して2つの文字コードを使って表される文字。𠀋 𡈽 𡌛 𡑮 𡢽 𠮟 𡚴 𡸴 𣇄 𣗄など。

const wchar_t* GetWC(const char* c) {
    const size_t cSize = strlen(c)+1;
    wchar_t* wc = new wchar_t[cSize];
    mbstowcs (wc, c, cSize);

    return wc;
    delete [] wc;
}

--------------------------------------------------
// stringへの変換(charは"string.c_str()")

std::string GetStr(const wchar_t* c) {

  std::string tmps;

  if (c == nullptr)
    return tmps;

  size_t sz = wcslen(c);

  tmps.reserve(sz*2);

  const size_t CNT_MAX = 50;
  char tmpc[CNT_MAX];
  wchar_t tmpw[CNT_MAX];

  const wchar_t* p = c;
  while (*p) {
    wcsncpy(tmpw, p, 1);
    tmpw[1] = L'\0';
    p += 1;
    
    wcstombs(tmpc, tmpw, CNT_MAX);
    tmps += tmpc;
  }
  
  return tmps;
}

setlocale(LC_ALL, ""); // GetC関数使用の際に必要

マルチバイト文字対策とは言えワイド文字wchar_tの存在は何ともやっかいです。

参考サイト
参考サイト2