日記帳

プログラミングのことをつぶやく日記です。

wsl2でgit logが文字化けする

wsl2を使用してgit logコマンドを実行したら、下記のように日本語が文字化けしました。

commit 7b2ad84788e699401fb2cc6c7733dafd853f7c45 (HEAD -> master, origin/master, origin/HEAD)
Author: ryuchan00
Date:   Tue Nov 30 15:02:00 2021 +0900

    <E6><B4><E6><96><B0>

原因はlessコマンドの文字コードを明示的に指定していないことでした。git logの表示はlessが用いられているのです。したがって、僕はzshを使用しているので.zshrcに下記の行を追加して、lessはutf-8を使用して開くことを明示的にしました。

# git logの文字化けを防ぐためにlessの文字コードを指定する。
export LESSCHARSET=utf-8

.zshrcを再読み込みしてgit logコマンドを実行したところ、文字化けがなくなっていました。

commit 7b2ad84788e699401fb2cc6c7733dafd853f7c45 (HEAD -> master, origin/master, origin/HEAD)
Author: ryuchan00
Date:   Tue Nov 30 15:02:00 2021 +0900

    更新

こちらを参考にしました。

git log、git diff、git showでの日本語の文字化けをまとめて対策 | WWWクリエイターズ

大学院を受験する場合に考えなくてはいけないことを書きしたためる

日記をつけて自分の中で整理したい。そろそろぼんやりと大学院の受験をするかを考えなくてはいけない。そうすると今の僕の悩み事は以下の通りである。

  • 研究テーマを何にすべきか
  • 昼か夜にするか
  • 志望校をどうすべきか
  • 私立にした場合は学費を捻出できそうか
  • 勉強時間をどのように捻出するか
  • 仕事を辞めるのか、辞める場合はいつごろにするのか
  • その場合の生活費はどのくらいになりそうか

書き出すだけで胃が痛くなってきた。僕の場合はあまり周りに頼る人がいないので自分のお財布事情も考慮する。深く考えた結果は、また後程書きしたためる。どちらにしろTOEICのスコアが必要なので受けよう。

ガウスの消去法をプログラムする

ガウスの消去法のプログラムをRubyで作成した。deleteメソッドが前進消去、backward_substitutionが交代代入である。

def delete(a, b)
  n = a.size
  l = Array.new(n, Array.new(n))

  for k in 0..n - 2 do
    for i in k + 1..n - 1 do
      l[i][k] = a[i][k].to_f / a[k][k]
      for j in k + 1..n - 1 do
        a[i][j] = a[i][j] - l[i][k] * a[k][j]
      end
      b[i] = b[i] - l[i][k] * b[k]
    end
  end

  for k in n - 1..0 do
    for j in k + 1..n - 1 do
      b[k] = b[k] - a[k][j] * b[j]
    end
    b[k] = b[k].to_f / a[k][k]
  end
  return a, b
end

# 方程式の解を求める
def backward_substitution(a, b)
  n = a.size
  x = []
  (n - 1).downto(0) do |i|
    sum = b[i]
    # n -1 == i のときは実行しないようにする
    (i + 1).upto(n - 1) do |j|
      sum -= a[i][j] * x[j]
    end
    x[i] = sum / a[i][i]
  end
  return x
end

def print(b, x)
  printf "b=\n"
  b.each { |bb| printf "|%-5s|\n", bb }
  x.each_with_index { |xx, i| printf "x%s=%s\n", i + 1, xx }
end

def gauss_jordan_elimination(a, b)
  a, b = delete(a, b)
  x = solve(a, b)
  return a, b, x
end

a = [
  [1, 2, 3],
  [3, 5, 4],
  [4, 6, 7]
]
b = [
  8,
  17,
  23
]

_, b, x = gauss_jordan_elimination(a, b)
print(b, x)

Aとbはそれぞれ以下の通り

f:id:leokun0210:20211202003313p:plain

実行結果は以下のようになる。

b=
|8    |
|-7.0 |
|5.0  |
x1=1.0
x2=2.0
x3=1.0

アルゴリズムや計算量についても書きたいが、時間が取れないので今回は書かない。

yum Error: Cannot find a valid baseurl for repo: baseの対処法

CentOS6のyum installを実行したら、「yum Error: Cannot find a valid baseurl for repo: base」というエラーが出ました。baseurlは、どこで記述があるんだ?と調べたら以下の記事に答えがありました。/etc/yum.repos.d/CentOS-Base.repoにyumでのライブラリ取得先が記述してあります。

yum Error: Cannot find a valid baseurl for repo: baseの対処法 – rilakkuma3xjapan's blog

sudo vim /etc/yum.repos.d/CentOS-Base.repo

以下が/etc/yum.repos.d/CentOS-Base.repoの一部です。baseurlをhttp://mirror.centos.org/centos/$releasever/updates/$basearch/からhttp://archive.kernel.org/centos-vault/6.10/os/x86_64にしました。http://mirror.centos.orgのCentOS6のライブラリは、古いのでなくなってしまったようです。すべてのbaseurlを書き換えます。書き換えたあと、無事にyum installができるようになりました。

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://archive.kernel.org/centos-vault/6.10/os/x86_64
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

CentOS6にyumを再インストールした

誤ってCentOS6でyum自体を消してしまったので再インストールした。コマンドは以下の通り。

cd ~
# yumを取得
wget https://archive.kernel.org/centos-vault/6.10/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
# インストールする
rpm -ivh *

参考資料

CentOSにyumをインストールする方法(例:CentOS5.3) | 独学PHP・MySQL学習入門