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)

PS Auto Sitemap(WordPressプラグイン)で、カテゴリのURLを変更した際にそれが反映されない時の対応

自動的にサイトマップを作成するWordPressプラグインのPS Auto Sitemapは、カテゴリのURLを変更した後も、カテゴリの古いURLを表示してしまう事があるようです。

この対応としては、設定>PS Auto Sitemapに進み、「キャッシュの使用」のチェックを一旦外すと良いようです。そうするとURLが更新されます。

その後に「キャッシュの使用」のチェックを再び付けても、更新後のURLが表示される様子です。

ポケモンGO 東京都のポケモンの巣(2016年10月20日更新)

いつものように近所の目黒川沿いでコイキングを集めようとしましたが、ほとんど出てこなくなっていました。10月20日(木)に巣が更新されたようです。私が知っている更新情報を投稿します。

目黒川沿い

今までずっと、水ポケモン(コイキング、コダック、ヤドン)が多く出るポケモンの巣でしたが、今回の更新で巣ではなくなったようです。

公園以外の場所でポケモントレーナーが活動するのは危険なので、ポケモンの巣は「公園に限る」動きが製作者側にあるようです。とは言え、川沿いでポケモンを楽しめなくなるのは寂しいものです。

代々木公園

ケーシィが湧くようになっていました。

今まで私の家の近所に、ケーシィの巣は無かったため、是非今の内に集めたい所です。

上野公園(不忍池)

依然として水ポケモンが多く出ていますが、ほとんどコイキングになりました。

ルアーモジュールも満開である事が多い様子です。ギャラドスを作る場合や、経験値を集める場合に良さそうです。

その他の巣

攻略サイトに随時更新され始めています。

【ポケモンGO】ポケモンの巣全国一覧10/20更新

ポケモンGO 味方のジムの名声の上がり方はどのような数式か?どう名声を上げるか?

ポケモンGOでアップデートがかかり、味方のジムでのトレーニングで6匹のポケモンを使えるようになりました。

名声値の上げ方・数式が下記のサイトに掲載されていました。効率的に名声を上げる方法を挙げていきます。

‘Pokemon Go’ Gym Prestige: How it Works After the New Update

名声値の上がり方を表す数式

味方のジムでトレーニングする6匹の内、CPの最大値(一番CPが高いポケモンのCP)が、名声の計算式に使われるようです。

攻撃側の最大CPが防御側より低ければ、「500 × (防御側 CP ÷ 攻撃側 CP)
攻撃側の最大CPが防御側より高ければ、「310 × (防御側 CP ÷ 攻撃側 CP) – 55

とされています。

名声値を効率的に上げるには?

味方のジムの名声値を効率的に上げる方法を、数式から読み取り、箇条書きにします。

  • 残りの5匹のCPは関係ないという事は、5匹のCPは最大CPに近い方が良い。つまり、なるべく同じCPの6匹で戦う
  • 防衛側のポケモンのCPより、最大CPが低くなるような6匹を選ぶ。
  • 防衛側のポケモンが多数でCPがばらついている場合は、防衛側のCPの密度が高いところを狙い撃ちする。
  • 防衛側のポケモンの弱点を突ける6匹を選ぶ。(従来通り)
  • 名声を上げやすくするために、味方のジムには、同じ種類・同程度のCPのポケモンを設置する。

アップデート前と比べてどう変わった?

アップデート前は、味方のジムでは1匹のみを選択する形式でしたので、ジムの最下位のポケモンの弱点を突けて、かつCPが少し低い1匹を選べば良かったです。それと比べれば作戦が随分複雑になりました。

味方のジムのレベルを上げるのは簡単になりました。レベルが周囲より相対的に低いユーザーは、6匹で頑張りジムの最下位のポケモンを倒せば、名声が上がるようになりますので、ポケモンの設置が楽になりました。

一方で6匹を慎重に選ばなければならなくなり、少し手間が増えました。敵のジムレベルも上がりやすくなりましたので、ジムを乗っ取るのは難易度が高くなりました。