2018年2月2日金曜日

ApacheでBasic認証を設定する方法

Apache HTTPサーバを立ち上げたあと、特定のページに認証を設定する方法を紹介します。

Ubuntu 16.04です。

まず、.htpasswdを作成します。.htpasswdは、ユーザ名とパスワードを記録するファイルです。

$ sudo htpasswd -b -m -c .htpasswd username password

これで、カレントディレクトリに .htpasswd が作成されます。上記の username と password は、任意のユーザ名とパスワードを指定してください。

このファイルを/var/www/htmlに置くとします。

次に、Apacheの設定ファイルを編集します。apt-getでインストールしたなら、Apacheの設定ファイルは /etc/apache2/apache2.conf だと思います。

<Directory "/var/www/html/">
        AuthType Basic
        AuthName "Enter username and password"
        AuthUserFile /var/www/html/.htpasswd
        Require user username
</Directory>

このように、認証の種類(Basic)、認証時のダイアログに表示する文章、.htpasswdへのパス、認証するユーザ名を指定します。
Authには、さきほど作成した.htpasswdへのパスを指定しましょう。また、Require userには、.htpasswdファイル作成時に指定したユーザ名を指定しましょう。

これでApacheを再起動して、ブラウザから/var/www/htmlディレクトリにアクセスすると(厳密には、ブラウザから、/var/www/htmlディレクトリにマップされているURLにアクセスすると)、認証ダイアログが表示されます。

Apacheの再起動は以下です。

$ sudo service apache2 restart

2018年2月1日木曜日

Windows 10で画面が真っ黒になった場合の対処法

Windowsアップデートをして、再起動。
そして、ログイン画面にてパスワードを入力。ログインしたら、、、

画面が真っ黒に!

マウスのカーソルは表示されているのですが、画面が真っ黒になりました。

正直、焦りましたが、マウスカーソルは動くので、、、とりあえずCtrl+Alt+Delを押してみました。すると、ちゃんと画面が表示されて、タスクマネージャを実行できました。

真っ暗な画面にタスクマネージャだけが表示されている状況。

タスクマネージャの「ファイル」から、「新しいタスクの実行」を選択し、"control"と入力すると、コントロールパネルを起動できます。今度はコントロールパネルが表示されました!以前として、画面は真っ黒ですが。

コントロールパネルで、「システムとセキュリティ」をクリック。
そして、「コンピュータの一般的な問題のトラブルシューティング」をクリックします。すると、「問題の診断」が実行できます。

僕の場合は、この診断で、「再起動して、Windowsアップデートを再実行してください」というメッセージが出ました。

確かにタスクマネージャを見てると、画面は真っ黒なのに、通信はしてるんですよね。更新用のファイルをダウンロードしてたのかな?

言われた通りに再起動すると、「更新プログラムの適用処理」が実行されて、結果、画面がちゃんと表示されました!良かった~

なお、「問題の診断」する前は、強制終了⇒起動を何回か実行したのですが、そのときは「更新プログラムの適用処理」は始まらなかったです。なので、「問題の診断」を実行したことが、良かったのかもしれません。



mpi4pyを使い、pythonでMPIプログラミング

PythonでMPIを使うライブラリとして、mpi4pyがあります。
その使い方を簡単に紹介します。

インストールは、例えばUbuntuなら以下のようにインストールできます。

$ sudo apt-get install python-mpi4py

mpi4pyを使ったプログラムについて紹介していきます。

from mpi4py import MPI

comm = MPI.COMM_WORLD

rank = comm.Get_rank()
print("rank " + str(rank))

numCores = comm.Get_size()
print("num cores " + str(numCores))

MPI.COMM_WORLDを実行すると、並列処理が始まります。
Get_rankメソッドで、スレッドのID (rank)を取得できます。IDは0始まりです。

if rank == 0:
  xxxx
else:
  yyyy

このように、スレッドIDに応じて処理を分けることができます。
また、Get_sizeメソッドで、いくつのスレッドが実行されているかを取得できます。

スレッド間で同期を取りたい場合は、barrierメソッドを使います。

comm.barrier()

これで、スレッドの処理がここ(barrierメソッドの内部)でいったん止まります。全てのスレッドが、barrierメソッドを呼び出すまで、処理が先に進みません。全てのスレッドがここに到達すると、せーので全スレッドが次の処理に向けて動き出します。

スレッド間でデータを交換する方法として最も単純なのは、sendメソッドとrecvメソッドです。

if rank == 0:
   data1 = 50
   comm.send(data1, dest=1, tag=23)
if rank == 1:
   data2 = comm.recv(source=0, tag=23)

sendメソッドで、データを送れます。上の例では、data1という変数を送っています。どのスレッドに送るかは、IDで指定します。上の例だと、スレッド0からスレッド1に送っています。tagは、交換するデータのIDです。たくさんのデータをやりとりする場合はデータにIDを振っておくと、recvする側は、受け取りたいデータを指定して受け取れます。

recvメソッドでデータを受け取ります。誰から受け取るかを、引数sourceで指定します。上の例だと、スレッド0からのデータ(ID=23)を受け取ろうとします。

これで、スレッド1の変数data2には、50という値が格納されます。

mpi4pyを使ったプログラムは、以下のようにmpiexecコマンドを使って実行できます。
以下は、run-mpi-app.pyというプログラムを、4スレッドで実行する例になります。

mpiexec -n 4 python run-mpi-app.py

pukiwiki 1.5.1で、フォントサイズを変更する方法

pukiwiki 1.5.1をインストールして使っているのですが、デフォルトだと、なんだかちょっと、文字が小さい気がします。僕だけでしょうか。

もう少し文字が大きいほうが目に優しいかな~なんて思うわけです。

pukiwikiのサイト全体のフォントサイズを変更するには、設定ファイルを修正する必要があります。pukiwikiを展開したディレクトリ以下の"skin/pukiwiki.css.php"を修正します。

body,td {
        color:black;
        background-color:white;
        margin-left:2%;
        margin-right:2%;
        font-size:90%;
        font-family:verdana, arial, helvetica, Sans-Serif;
}
pukiwiki.css.phpには、上のようなcssが書かれています。

ここの"font-size"のパーセンテージを変えれば、フォントサイズを変更できます。デフォルトでは90%になっているので、文字を大きくしたければ、例えば100%とかに設定すればOKです。

個人的には95%がちょうどよいです。

フォントサイズを変更するだけで、意外なほどに可視性が向上することもあります。自分にちょうどよいフォントサイズを見つけましょう~。


pukiwiki 1.5.1の管理者パスワードを設定する方法

pukiwikiはPHPとApacheがあれば、すぐに使える便利なwikiソフトです。

デフォルトの状態だと、編集やファイルの添付に、管理者パスワードが必要です。
凍結解除にも、管理者パスワードが必要です。初期状態だと、何を入力しても、パスワードエラーになる設定になっているので、pukiwikiをインストールしあとは、まずは管理者パスワードを設定しましょう。

管理者パスワードの設定は、簡単です。展開後のルートディレクトリにあるpukiwiki.ini.phpで、"adminpass"という変数を設定すればOKです。

初期状態でadminpassは、以下のように設定されています。

$adminpass = '{x-php-md5}!';

これを、例えば、以下のように編集します。
$adminpass = 'pass';

これで、"pass" が、管理者パスワードになります。
これで凍結解除できるはずです。

JavaScriptで10進数と16進数を変換する方法

JavaScriptで10進数と16進数を変換する方法を紹介します。 まず、16進数を、10進数に変換する方法です。 以下のサンプルコードでは、16進数の"DB"や"0A"を、10進数に変換しています。 var a = pa...