polyglot:プロジェクトの行数を数える

開発中のプロジェクトの様子を見るための有効な方法の一つがソースコードの行数を把握することです.
もちろん単一のファイルの行数を数えるにはwc -lなどとすれば良いわけです.しかし,プロジェクト全体の行数をうまく数えるにはどうしたらよいでしょうか?

polyglot がそのような目的に適うかもしれません.

プロジェクトページに書いてあるように,インストールは

curl -sSl https://raw.githubusercontent.com/vmchale/polyglot/master/bash/install.sh | sh -s

だけでいけます.

このツールを使うとソースコードの行数を言語ごとに集計してくれます.次の例は私が趣味で開発しているプロジェクトのディレクトリ直下で試した結果です:

$ poly
-------------------------------------------------------------------------------
 Language             Files       Lines         Code     Comments       Blanks
-------------------------------------------------------------------------------
 Cabal                    2         149          126           10           13
 Haskell                 10        2423         2069           83          271
 Makefile                 2          71           48            2           21
 Markdown                 4           8            6            0            2
 Plaintext                1          33           19            0           14
 TeX                      3        2705         2451            2          252
 YAML                     4         236           90          122           24
-------------------------------------------------------------------------------
 Total                   26        5625         4809          219          597
-------------------------------------------------------------------------------

余談ですが,polyglot はATSという言語で書かれているそうです.

広告

わけもなくtexのコンパイルが通らなくなったときの対処

特に変なことをしていない(つまりついさっきまで正常にコンパイルが通った)のに突如texのコンパイルが通らなくなることがある.そんなときは *.aux, *.ilg, *.bbl, *.blg, *.lof, *.out を一度削除すると良いかもしれない.

自分はlatex原稿を管理するMakefileに次のようなターゲットを入れている:

clean : ## clear aux,out files
	$(RM) *.aux
	$(RM) *.ilg
	$(RM) *.idx
	$(RM) *.bbl
	$(RM) *.blg
	$(RM) *.lof
	$(RM) *.out

Ubuntuでcoreを吐かせる(linux)(自分用メモ)

■どうやらUbuntuではデフォルトではコアファイルを生成させないようになっているらしい.Ubuntu には Apport というデバッグ用のクラッシュレポートを自動生成するソフトウェアが入っているがこいつがブロックしている…らしい.

以下対処法.

■1.$ sudo vim /etc/default/apport してファイルを次のように編集し保存する:

# set this to 0 to disable apport, or to 1 to enable it
# you can temporarily override this with
# sudo service apport start force_start=1
enabled=0

■2.$ sudo vim /etc/security/limits.conf して以下の行を追加し保存する:

* soft core unlimited

■3.念のため再起動しましょう.

■確認: $ ulimit -aして

core file size          (blocks, -c) unlimited

となっていればコアファイルが生成される.

■参考にしたサイト
Ubuntuでコアダンプが出力できないことがある

Ubuntuのランチャーが消えた(自分用メモ)

ある朝気がかりな夢から覚めると,Ubuntuデスクトップを起動したときにランチャーが一切表示されない状態になっていた.右クリックメニューでターミナルは起動できたので $ firefox とか打ちながら情報を探した.結論から言うと次のようにしてうまく行った:

$ sudo rm -rf ~/.cache/compizconfig-1
$ sudo rm -rf ~/.compiz
$ sudo rm -rf ~/.Xauthority
$ sudo rm -rf ~/.config/autostart
$ sudo apt-get install --reinstall ubuntu-desktop unity compizconfig-settings-manager upstart
$ sudo dconf reset -f /org/compiz/
$ setsid unity

参考にしたページ
https://toxweblog.toxbe.com/2017/10/01/ubuntu-no-icon-menu/

(自分用メモ)latex文書で作ったPDFの「しおり」を文字化けさせない方法

hyperref を使って作った文書を Arobat Reader で見ると「しおり」が文字化けしてしまう.pxjahyper で文字化けを抑制できる:

\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}

参考にしたサイト
http://www.isc.meiji.ac.jp/~mizutani/tex/link_slide/hyperlink.html

(自分用メモ)tldr というコマンド

これは何ですか?
tldr コマンド名 とやるとコマンドの使用例を教えてくれるやつ.

情報源
https://github.com/raylee/tldr

インストール
$ mkdir -p ~/bin
$ curl -o ~/bin/tldr https://raw.githubusercontent.com/raylee/tldr/master/tldr
$ chmod +x ~/bin/tldr

最後に ~/bin にパスを通す.(例えば ~/.bashrc に
export PATH=$PATH:~/bin
という一行を加えて保存し,source ~/.bashrc する.)

使用例
オプションを忘れてしまっても使用例で教えてくれて助かる例:

$ tldr tar
tar

Archiving utility.
Often combined with a compression method, such as gzip or bzip.

- Create an archive from files:
tar cf target.tar file1 file2 file3

- Create a gzipped archive:
tar czf target.tar.gz file1 file2 file3

- Extract an archive in a target folder:
tar xf source.tar -C folder

- Extract a gzipped archive in the current directory:
tar xzf source.tar.gz

- Extract a bzipped archive in the current directory:
tar xjf source.tar.bz2

- Create a compressed archive, using archive suffix to determine the compression program:
tar caf target.tar.xz file1 file2 file3

- List the contents of a tar file:
tar tvf source.tar

- Extract files matching a pattern:
tar xf source.tar --wildcards "*.html"

(自分用メモ)ファイルサイズの計測と記録の自動化

記事執筆のモチベを管理する方法の一つが計測だ.計測と言っても,要するにモチベが上がれば良いのだから実のところ測るべき数字の「質」について悩む必要はない.行数でも良いがtexの場合ならば文字数が良いかもしれない.以前は wc -m した結果を自分でエクセルに貼り付けていたがこれは自動化できてしかるべきなのでCSVファイルを用意し,Makefile から自動で更新できるように方法を考えてみた.

count : yourfile.tex  ## count characters in the files.
	$(eval DATE=$(shell date "+%Y/%m/%d,"))
	$(eval INFO=$(shell wc -m $<))
	$(eval TMPNAM=$(shell mktemp))
	@echo $(DATE)$(INFO) > $(TMPNAM)
	@sed -i -e 's/$<//' $(TMPNAM)
	cat $(TMPNAM) >> count.csv
	@$(RM) $(TMPNAM)
	@tail count.csv

これで
2019/01/13,3000
のような行が毎回 Make count するたびに count.csv に追加されるようになる.

(自分用メモ)WSLが立ち上がらないとき:LxssManager

WSLを立ち上げようとしてもこんな風になってうまくいかないことがある:
WSLbozo

こんなときには「サービス」で検索し
サービスを探す
LxssManager をスタートさせれば良い.

texdoc(自分用メモ)

texlive を入れると自動的に texdoc というコマンドもついてくるが,ドキュメントを(カスタムインストールの設定などで)省いてしまった場合,
$ sudo apt install texlive-*-doc --fix-missing
のようにして補うと良い.

texdoc amsfont

のようにして調べ物をすると自動的に evince が呼ばれてPDFが表示される.

SSH メモ

■秘密鍵から公開鍵を復元する:
$ ssh-keygen -y -f 秘密鍵のパス > 復元した公開鍵のパス

■github で使われるFingerprintの取得:
$ ssh-keygen -l -E md5 -f 鍵のパス

参考にしたサイト:
ssh-keygenで秘密鍵から公開鍵を生成する
https://gist.github.com/yosemitebandit/1994947