2017年8月14日月曜日

emacsでカーソル位置を覚えておく

最近、Emacsを使って長い文章を書く仕事をしていて、少し、困ったことがありました。具体的には以下のようなことです。
  • 「長い文章」なので作業は一日では終わらない
  • 一日では終わらないので、編集のためのEmacsを起動させたままにはしていない
  • 次にEmacsでそのファイルを開いたときに、「長い文章」のためにファイルが大きく、前回の最後の作業位置を見つけるのが少しめんどう
そこで、Emacsの拡張機能で、終了時にファイルのカーソル位置を覚えてくれて 、次回、そのファイルを開いたら、前回のカーソル位置に戻してくれるというものがないか、調べてみました。すると以下のWWWページを見つけました。
Emacsで一度開いたファイルのカーソル位置を覚えておく
http://d.hatena.ne.jp/hnw/20140111

ここでは以下のように設定するように書かれています。
;; 以前開いたファイルを再度開いたとき、元のカーソル位置を復元する
;; http://www.emacswiki.org/emacs/SavePlace

(when (require 'saveplace nil t)
  (setq-default save-place t)
  (setq save-place-file "~/.emacs.d/saved-places"))
そうなのかと思い設定したのですが、 動きません。そこで、コメントにある
Save Place
http://www.emacswiki.org/emacs/SavePlace
を見てみると、以下のようにありました。
For GNU Emacs 25.1 and newer versions
(save-place-mode 1)
Note that saveplace is auto-loaded by save-place-mode. So you do not need to explicitly require it.
私の使っているEmacsは
GNU Emacs 25.2.1 (amd64-portbld-freebsd11.0, GTK+ Version 3.22.15) 
なので、上のようにする必要がありました。

使ってみると、.emacs.d/placesというファイルに以下のように情報が書き込まれます。

$ cat .emacs.d/places
;;; -*- coding: utf-8 -*-
(("/home/USER1/text/file3.txt" . 24459)

2017年8月8日火曜日

Windows10でタスクマネージャを自動起動させる方法

自分のPCの負荷を監視するために、Windows 7までは、タスクマネージャへのショートカットをスタートアップメニューに置くことで、タスクマネージャを自動起動させていました。ところが、Windows10になり、この方法ではタスクマネージャを自動起動させることができず、困っていました。そして、ある時、どこかのWWWページの記述にあった方法でタスクマネージャを自動起動することができるようになり、それ以来、このこと忘れていました。そして、ふと、今日、次のWWWページを見つけました。
Windows10でタスクマネージャを自動起動させる方法 https://answers.microsoft.com/ja-jp/windows/forum/windows_10-start/windows10%E3%81%A7%E3%82%BF%E3%82%B9%E3%82%AF/96601980-be3f-4023-8ff4-b5d82ba53b00 
同じことで困っている人がいらっしゃったようです。対処方法を以下に引用します。
■ 手順
  1. メモ帳を開き、以下の文字列をコピーして貼り付けます。
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Call WshShell.Run( "taskmgr.exe", 0 , True )
  2. ファイルを任意の名前で、
    「C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup」フォルダー
    に保存します。このとき、拡張子は「.vbs」とします。
不明点があれば遠慮なく返信くださいね。
一ノ瀬 圭 – Microsoft Support
どうしてWindows10ではタスクマネージャをスタートアップメニューに置くことで自動起動できないのでしょうか。ちょっとふしぎです。

2017年8月5日土曜日

FreeBSDで手動で/etc/passwdと/etc/master.passwdを編集した場合

FreeBSDで手動で/etc/passwdと/etc/master.passwdを編集した場合は、パスワードデータベースを再構成する必要があります。
$ man pwd_mkdb
...
EXAMPLES
     Regenerate the password database after manually editing or replacing the
     password file:

            /usr/sbin/pwd_mkdb -p /etc/master.passwd
...

$ sudo /usr/sbin/pwd_mkdb -p /etc/master.passwd
$

FreeBSD 11.0から11.1へアップグレードする

たまたまFreeBSD 11.0を新規にインストールする機会があったので、FreeBSD 11.0をインストール後に、11.1へアップグレードしてみました。

以下の解説に従って作業を進めます。
17.2.3. メジャーおよびマイナーバージョンのアップグレードを行う
https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/updating-upgrading-freebsdupdate.html
以下は、作業のようすです。
$ sudo freebsd-update -r 11.1-RELEASE upgrade
パスワード:
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching public key from update5.freebsd.org... done.
Fetching metadata signature for 11.0-RELEASE from update5.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/doc world/lib32

The following components of FreeBSD do not seem to be installed:
kernel/generic-dbg world/base-dbg world/lib32-dbg

Does this look reasonable (y/n)? y

Fetching metadata signature for 11.1-RELEASE from update5.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system...
Fetching files from 11.0-RELEASE for merging... done.
Preparing to download files...
done.
Fetching 49972 patches.....10....20....30....  ....49960....49970. done.
Applying patches... 

Fetching 2490 files... done.
Attempting to automatically merge changes in files... done.

The following file could not be merged automatically: /etc/ntp.conf
Press Enter to edit this file in /usr/bin/vi and resolve the conflicts
manually...
...

Does this look reasonable (y/n)? y

The following changes, which occurred between FreeBSD 11.0-RELEASE and
FreeBSD 11.1-RELEASE have been merged into /etc/ssh/sshd_config:
...

Does this look reasonable (y/n)? y
 

The following files will be removed as part of updating to 11.1-RELEASE-p0:
/boot/kernel/hv_ata_pci_disengage.ko
/usr/include/c++/v1/__undef___deallocate
/usr/include/c++/v1/tr1/__undef___deallocate
/usr/include/netinet/ip_ipsec.h
/usr/include/netinet6/ip6_ipsec.h
/usr/include/pcap-int.h
/usr/lib/clang/3.8.0
/usr/lib/clang/3.8.0/include

...
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".

$ sudo /usr/sbin/freebsd-update install
パスワード:
Installing updates...

Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
$ sudo reboot

パスワード:
....
$ uname -a
FreeBSD dandelion 11.1-RELEASE FreeBSD 11.1-RELEASE #0 r321309: Fri Jul 21 02:08:28 UTC 2017     root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
$ freebsd-version
11.0-RELEASE-p1
$ sudo freebsd-update install
パスワード:
Installing updates... done.

...
Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs
installed from the ports tree) and then run "/usr/sbin/freebsd-update install"
again to finish installing updates.
$ sudo freebsd-update install
パスワード:
Installing updates... done.

$ uname -a
FreeBSD dandelion 11.1-RELEASE FreeBSD 11.1-RELEASE #0 r321309: Fri Jul 21 02:08:28 UTC 2017     root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
dandelion$ freebsd-version
11.1-RELEASE
最後に、3回、freebsd-update installとrebootを繰り返して終了です。

念のために、再起動とfreebsd-update fetchとpkg updateを行います。
$ sudo reboot

パスワード:
....
$ sudo freebsd-update  fetchパスワード:
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching metadata signature for 11.1-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 11.1-RELEASE-p0.
$ sudo pkg update
パスワード:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
$

Ubuntu 14.04をソフトウェアRAID+LVMでインストールする

Ubuntu 14.04をソフトウェアRAID1(ミラー)+LVMでインストールしようとすると、最後に
Unable to install GRUB in /dev/sdc
Executing 'grub-install /dev/sdc' failed
This is a fatal error.
と表示されてうまくインストールできないことがあります(たまに成功するハードウェアがあります)。こうなってしまったあとで、追加の設定をすることで動作させる方法は、検索エンジンで探した範囲では見つけることができませんでした。

もう少し探してみると、
Installing Ubuntu 14.04 on RAID 1 and LVM
https://blogging.dragon.org.uk/installing-ubuntu-14-04-on-raid-1-and-lvm/
というWWWページを見つけました。 さっそく試してみるとうまくいきます。以下にディスクの構成を引用します。
  • boot
    • about 750Mb(100MB弱を使うので、それに見合う大きさ)
    • mount point /boot
    • File system EXT4
    • Bootable
    • /dev/sda1 + /dev/sdb1 = /dev/md0
  • root
    • about 24Gb(必要な大きさを設定)
    • LVM volume group vg0
    • LVM logical volume lv_root
    • mount point / (root)
    • File system EXT4
    • /dev/sda2 + /dev/sdb2 = /dev/md1
  • swap
    • about 2Gb(メモリに応じた設定)
    • File system Swap
    • /dev/sda3 + /dev/sdb3 = /dev/md2
 このようにディスクとパーティションを構成したあとで、OSをインストールできないことがするとうまく動作するようになりました。

2017年8月3日木曜日

Lenovo ThinkPad E470のメモリを増設する

先日、Lenovo ThinkPad E470のメモリを増設しました。
Lenovo ThinkPad E470
http://www3.lenovo.com/jp/ja/notebooks/thinkpad/e-series/E470/p/22TP2TEE470
メモリスロットは簡単にアクセスすることができます。
レノボ ThinkPad E470の実機レビュー
http://thehikaku.net/pc/lenovo/16ThinkPad-E470.html
上記のWWWページにあるように、底面のゴム足付近にあるネジを外します。
すると、以下の写真のようにメモリスロットが見えます。