かんちゃんの備忘録

プログラミングや言語処理、ゲームなど知的好奇心のための備忘録(個人の感想)です。

研究室の計算機管理者のススメ(3)ツールや言語資源の管理

ツールや言語資源の管理に挑戦しよう

少々、日があいてしまいました。 今回はツールや言語資源の管理について書きます。

  • ツールや言語資源の管理に挑戦しよう
  • ツールの管理
    • OSを統一して、共通ディレクトリにインストールしよう
    • Porgによるパッケージ管理
      • Porgの導入
    • Porgで管理
続きを読む

研究室の計算機管理者のススメ(2)OS

土台をつくろう!

今回は計算機環境の土台作りということで、以下の三点についてお話します。

これにより、ユーザー情報およびファイルを共有することができます。

おっと、導入を読んでいないかたは、↓からどうぞ kanji.hatenablog.jp

続きを読む

研究室の計算機管理者のススメ(1)導入

計算機管理は辛くて楽しい

f:id:kanjirz50:20170216004304p:plain

研究をしながらの計算機管理は辛いですが、楽しいものでもあります。

計算機管理(Linuxを用いるもの)に興味がある人や、計算機管理初心者向けの内容になります*1

計算機管理は大変ですが、Linuxに関する知識が山ほど身につきます。

最初は分からないことだらけで、不安ばかり生まれます。 でも、怖じけず、力まず、着実にステップアップしましょう。

数回の記事に分けて、計算機管理について説明します。 今回は計算機管理者とは何かについてと、計算機の選定についてです。

目次

*1:研究室の次期計算機管理者向けに、口頭や資料で伝えていることをまとめとして書いているつもりです

続きを読む

Bloggerからの引っ越し

お引っ越し

Bloggerからはてなブログへ引っ越した。 理由は、Markdownが楽に使えるから。

確かにBloggerでもStack Editを使えば書けたけれど、回りくどいのとファイル管理がややこしい。

作業の備忘録などを手軽に書きたいため、はてなブログへ移行した。

移行の手間

google-blog-converters-appengineを使えば、コマンド一発だった。

ダウンロードしたファイルを解凍して、

cd google-blog-converter-r89
./bin/blogger2movabletype.sh \
  ./bloggerのエクスポートからダウンロードしたファイル.xml \
  > はてなブログにインポートするファイル.xml

出力したファイルをインポートするだけだった。 簡単だった。

zshで引数に指定したファイルの絶対パスを取得

引数の相対パス絶対パスに展開する

「ls test.txt」みたいに相対パスで指定することは良くあるかと思います。
後から別ディレクトリで似た作業をやろうとして、過去ログを参考にするのですがパスが違うとよく分からないことがちらほら・・・
本当はログに絶対パスで残って欲しいのですが分からないので、実行時に一手間加えて絶対パスに展開します。

方法

至って単純です。
zshの機能を使います。

ls test.txt(:a)
と入力します。

(:a)
にカーソルを合わせて、TABを2,3回押下すると絶対パスへと展開されます。

おわりに

zshは便利なコマンドやショートカットが眠っています。
あまりにも膨大なので把握はできませんが、zshのマニュアルをたまに読んでみると新しい発見があります。
ぜひぜひ、快適なzshライフを!!

シェルスクリプトでスクリプトのパスを取得

シェルスクリプトスクリプト自身のパスを取得

シェルスクリプトを書くときに、cd シェルスクリプトがあるディレクトリというようにカレントディレクトリをスクリプト自身のパスに変更したいときがあります。
こうすることで、シェルスクリプト内ではそのシェルスクリプトを基準とした相対パスで処理を記述することができます。

やりかた

$(コマンド)もしくは`コマンド`(バッククォート)でコマンドを実行し、その標準出力を文字列として扱えます。
$0には実行したシェルスクリプトの名前が入ります。
#!/bin/sh

cd $(dirname $0)
コマンドは、実行するシェルスクリプトがあるディレクトリの位置を相対パスで取得し、そこに移動するという意味です。

Pythonの正規表現でカタカナやひらがなを引っかける

perlだとUnicodeプロパティで\p{Hiragana}とするところです。
しかし、PythonUnicodeプロパティをサポートしていない?ようですので、正規表現で獲得します。


前提

Unicodeが対象です。

ひらがなの獲得

reモジュールで正規表現コンパイルして、fullmatchで全一致かどうかを判定します。
\u3041は「ぁ」、\u3093は「ん」を表します。
# -*- coding: utf-8 -*-
import re

re_hiragana = re.compile(r'[\u3041-\u3093]')
print(re_hiragana.fullmatch('ひらがな'))
# Trueが返ってくる

カタカナの獲得

ひらがなと同様です。
\u30A1は「ァ」、\u30F4は「ヴ」を示します。
# -*- coding: utf-8 -*-
import re

re_katakana = re.compile(r'[\u30A1-\u30F4]+')
print(re_katakana.fullmatch('カタカナ'))
# Trueが返ってくる

Unicodeの確認

上記正規表現は、厳密に言うとすべてのカタカナやひらがなを満たしていません。
これらは使用用途に応じて、Unicode表を見る必要があります。
図書館員のコンピュータ基礎講座さんにUnicode表が、きれいにまとまっています。
閉鎖中ですが、まだサイトは当面維持されるようです。
- カタカナの表
- ひらがなの表