2台のPCを1組のマウス・キーボードで操作するためのスイッチを購入

2台のPCを1組のマウス・キーボードで操作するには、エレコム KVMスイッチ キーボード・マウス用 手元スイッチ付 ブラック KM-A22BBKが便利です。

何故この製品を買ったか?

私は自宅で、普通のWindowsのPCと、サーバーとしてUbuntuのPCの2台のPCを利用しています。スペースの関係で、2台のPCのマウスとキーボードは共通です。今まではマウス・キーボードをUSBハブに挿し、USBハブごと使うPCに差し替える事で切り替えていましたが、少し面倒でした。

そんなときにビックカメラでこの製品を見つけ、思わず購入してしまいました。ただの切り替えスイッチにもかかわらず数千円ですので割高感はありましたが、一般的なPC周辺機器と比べれば需要が極めて少ないのでしょうから、商品化されている事そのものに感謝しつつ高値掴みしました。

製品について

製品は1台目PCに挿すUSB端子、2台目PCに挿すUSB端子、PC切り替えスイッチ、入力用USBポート(2つ)から構成されます。2つのUSBポートにはマウス・キーボードを挿す事を想定しているようですが、USBハブを挿してポートを増やしても機能するようです。

スイッチとUSBポートはマグネットのシールを付けて、金属につけておけるようになっています。また、2台のPCの内の片方をシャットダウンすると、自動的に電源がついている方のPCへの入力にスイッチが切り替わるようです。このように、なかなか気が利いた機能があり便利です。

Excel VBAでフォルダ内の各ファイルの指定シートを一括削除する

Excelシート操作の自動化に関するExcel VBAマクロを投稿します。

フォルダ内の各ファイルの指定シートを、一括で削除したい場合に使うマクロを作成しました。このマクロを記述したファイルを同じフォルダに置いて、マクロを実行して使います。

2行目:フォルダ内のファイルを取得します
5行目:ここに消去したいシート名を記述します
15行目:シートを消去する際に警告が表示される事でマクロの動作が一時停止しないように、警告表示機能をOFFにしておきます。

フォルダにExcelファイル以外のファイルが存在している場合や、ファイルに指定したシートが存在しない可能性は想定していません。

Excel VBAでExcelのテーブルをhtmlテーブルのソースに変換する

ブログに投稿したいExcelテーブルを作成した際に、スクリーンキャプチャではなくhtmlテーブルにして投稿できればと思う事があります。そのような時のために、Excelのテーブルをhtmlテーブルのソースへと変換するExcelマクロを組んでみました。

動作

元のテーブル

例えば下図のExcelテーブルをhtmlで表現したい場合を考えます。

マクロの実行結果

今回組んだマクロは、Excelテーブルの一部を選択した状態で実行します。するとマクロが書かれたExcelブックの最初のシートのB5セルに、htmlテーブルが出力されます。

ソースコード

ここで、

テーブル左上行 CurrentRegion.Row
テーブル左上列 CurrentRegion.Column
テーブルの高さ CurrentRegion.Rows.Count
テーブルの横幅 CurrentRegion.Columns.Count

を用いてテーブルの領域を示すパラメータを取得しました。

後は変数tstrにテーブル情報を追記し続け、最後に出力して終わりです。

Excel VBAで、シートが存在していなければ作成する

Excel VBAで、シート名からシートの存在有無を確認し、もしシートが存在していなければ、新規でその名前のシートを作成するコードを書きました。

コード

シートの存在を確認する「sheetExists関数」と、シートを作成する「mksheet」、調べたいシート名をmksheetに渡すmainの3つのプロシージャで構成しています。

実行結果

元からあったaaaシートに加えて、マクロ実行後にbbb,ccc,ddd,eeeという名前の新しいシートが作成されました。

参考:Excel VBA If WorkSheet(“wsName”) Exists [duplicate]

UbuntuにKVMをインストールして仮想OSを動かすには?

UbuntuにKVMを導入し、仮想マシンを動かすまでの覚書です。KVM関係のパッケージをインストールし、ゲストOSのisoファイルを準備、仮想OSをインストールして、起動してみました。

各種ファイルの取得・導入・設定

パッケージの導入

まずは必要なパッケージを導入します。

KVMをインストールする(Qiita)が参考になります。

ゲストOSのisoファイルの準備

KVMで何かOSを動かすには、動かすOSのisoファイルが必要です。

例えば、CentOSを動かす場合は、Download CentOSから取得します。今回CentOS7の最小版を使ってみます。

ダウンロードしたディスクイメージは、/var/lib/libvirt/images/に置いておきます。

仮想OSをインストールする

コマンドでインストールします。rootで実行しました。

いくつかのオプションがあります。–nameでは、仮想マシンの名前を付けます。ここではvm02cと名付けています。–memoryはメガバイト単位で、–diskのsizeはギガバイト単位のようです。–cdromには、isoファイルの場所を指定します。

networkのオプションは、接続方式を選びます。とりあえず動かすにはbridge接続で良いです。ブリッジ接続とは「橋渡ししてネットワークを繋げる」イメージです。

ブリッジ接続 (bridge connection)

コマンドを実行した後は、OSのインストーラーの指示に従いインストールします。

仮想OSを動かす

仮想OSの起動と終了

ホストOSのターミナルで、 virsh start vm02c と打ち仮想マシンを起動します。ここで「vm02c」は、さっき名付けた仮想マシンの名前です。

virt-viewer vm02c で起動したマシンの様子を確認します。

終了するには、ゲストOSで、shutdown nowと打ち込みます。ホストOSで、virsh shutdown vm02cとしても良いようです。強制終了(電源コードを抜くに相当)は、virsh destroy vm02cです。

仮想OSの種類の確認

インストールした暫く後に、再び仮想OSで遊ぼうとしても、何を導入したのかを忘れている事があります。

KVMのマシンを知るにはホストOSのターミナルで virsh list –all です。オプション–allをつける事で、停止状態のOSも確認できます。

VirshコマンドによるKVMゲストOSの管理

仮想OSの削除

仮想マシンを削除するには、virsh undefine vm02cです。

CentOSのネットワーク設定

この方法で導入したCentOSは、このままではネットワークに繋がりません。(ホストOSがUbuntuのデスクトップ版であれば、この方法でも最初からネットワークに繋がっていますので楽です。)

CentOSをネットワークに繋げるために、私はONBOOTの設定をyesに変更しました。

/etc/sysconfig/network-scripts/ifcfg-eth0 にネットワーク設定のファイルがありますので、最終行 ONBOOT=yes に変更し保存します。そうすれば起動(Boot)時にネットワークに繋がります。

ネットワークの項目の意味は、下記のリンクが参考になります。

CentOSのネットワーク設定を手動で行う方法

ONBOOTの設定後に再起動すれば、私の環境ではネットワークに繋がるようになりました。

ネットワークに繋がれば、 yum -y update でアップデートが出来ますし、多くのコマンドの導入も可能になってきます。

Ubuntuでスクリーンショットを利用する

Ubuntuも他のOS同様にスクリーンショットを利用できます。

PrintScreenキーで撮る

  1. 画面全体を撮る:PrintScreen
  2. 指定範囲を撮る:Shift + PrintScreen
  3. 指定windowを撮る:Alt + PrintScreen

便利なものです。特に2番目の機能は、ブログ記事投稿でも活躍しそうです。

ターミナルでコマンドを使い撮る

下記の記事の通り、PrintScreenキーを使わずとも、端末(ターミナル)から撮れるようです。

参考:Ubuntuで端末からスクリーンショットを撮る方法まとめ(Qiita)

PHPで文字を連結するには? . (結合演算子)の使い方

PHPで文字列を繋げるには、繋げたい文字列の間に「 . (ドット)」の1文字をはさみます。PHPでは結合演算子に「 . 」を使います。

参照:文字列演算子(phpマニュアル) 

初めて知った時、これはとても簡単で、素晴らしいと思いました。Excel VBAでも & で簡単に繋がりますが、phpの「 . 」 の1文字で繋げようという発想に感動です。タイピングもしやすいですしね。

PHPで、入力されたデータをhtmlに変換する

PHPのhtmlspecialchars()関数についての記述です。

概要

PHPでユーザーがフォームへ入力したデータを、HTMLに変換するために、htmlspecialchars()関数を利用できます。

利用例

例えば、

$brand = htmlspecialchars($_GET[“brand”]);

とすれば、変数brandにhtml形式でフォームのデータが入ります。

変換とは?

HTMLの特殊な記号を変換します。例えば「>」を「>」に、「&」を「&」に変換します。変換については、htmlspecialchars (php.net) に詳細が掲載されています。

利用した方が良い理由

ユーザーの入力に、勝手なJavaScriptを実行する記述や、HTMLのタグが含まれているとサーバーを危険に晒します。これを避けるため、ユーザーの入力情報はhtml形式に変換した後に利用するのも良さそうです。

例えばフォームから受け取った値を、エスケープせずに画面に出力する危険性についての記述は、PHPの脆弱性への攻撃名称と対策メモ (qiita.com) のクロスサイトスクリプティングの項目から確認できます。

PHPの設定を確認するphpinfo()とは?

phpinfo()関数で、phpの設定情報を確認できます。

下記のコードを適当な名前(例えばphpinfo.php)で保存し、ブラウザでそれを開けば、各種の設定情報が出力されます。

 
phpのバージョン情報のみならず、さまざまな情報が出てきます。私の場合は、MySQLやapacheに関係する情報までもが出力されました。

Ubuntuのsyslogはどこにあるか?

Ubuntuのsyslogは、/var/logの直下にあります。

最新のログはsyslogで、少し古いログはsyslog.1等の名前です。私の環境では1日1回、gzファイルができ、1週間経ったものは消去される様子。

syslogはシステムのログだと理解していましたが、「ログメッセージをIPネットワーク上で転送するための標準規格である」と説明されています。確かにログの中身は、通信に関する記述・記録が多めです。

参考:syslog(wikipedia)