著者アーカイブ takahashi

takahashi 著者:takahashi

PostgreSQL “対向(peer)認証に失敗しました” エラーが出るときの対処法

PostgreSQLでちゃんとユーザーにログイン権限とパスワードを設定しているのに、

psql: FATAL:  ユーザ "postgres" で対向(peer)認証に失敗しました

のようなエラーが出てしまった場合の対処法です。

そもそもPeer認証とは

CentOS6でPostgreSQLインストール – My Octopress Blog

Peer認証とは、カーネルからクライアント上のシステムユーザ名を取得し、PostgreSQLデータベースユーザと同一である場合のみ接続が許可される仕組みです。

つまり、Postgresql内のユーザーとUNIXユーザで、ユーザー名が一致してさえいれば認証情報なしでログイン出来てしまう仕組みです。

パスワードを打たなくてもいいのは楽ですが、例えばユーザーごとに権限を変えて置いて、場合によって使い分けたいときや一時的に別のpsqlユーザーとしてログインしたいときなどはかなりやりづらいですし、psql側でユーザーを作る際に、同名のUNIXユーザーも追加する必要が出てくるのでとてもめんどくさいです。

この挙動を変更するには、pg_hba.conf (だいたいpsqlのデータフォルダか/etcにあるはずです。)を編集します。
ファイルを開くと

#ローカルで動いているpsqlへアクセスする場合
local   all             all                                     peer
#他のクライアントからpsqlへアクセス可能にする場合(例)
host    all             all             127.0.0.1/32            peer

などとなっているか、あるいはコメントアウトされているかと思いますので、これを書き換えます。

#ローカルで動いているpsqlへアクセスする場合
local   all             all                                     md5
#他のクライアントからpsqlへアクセス可能にする場合(例)
host    all             all             127.0.0.1/32            md5

パスワード認証させたい場合は”peer”の部分を”md5″に変更して保存し、psqlのデーモンを再起動させます。

これで再度ログインを行えば、今度はパスワードを求められ、正しい情報を入力すればどのユーザーでもログインできるようになるかと思います。

takahashi 著者:takahashi

SDカード規格の違い

最近カメラなどをはじめとして、さまざま機器で使われているSDカード。

実は複数の規格があるのをご存知ですか?
SDカードには実は容量に合わせた3種類の規格と、2種類の転送スピード規格があります。



SDカードの規格には、

SD
SD HC
SD XC

の3種類があります。
SDは128MBから2GBでファイルシステムのフォーマットはFAT16、
SD HCは4GBから32GBまでの範囲でFAT32、
そしてSD XCは64GBから2TBまで で、exFATを用いることになっているようです。

また、SD HC、SD XCについては下位互換性がなく、例えばSDにのみ対応している機器に
SD HCやXCを差しても、ファイルシステムに対応していないなどの理由で使えないことがあるようです。

一方こちらは速度の規格で、最近よく見かけるようになったUHS-Ⅰのマークです。
最低転送速度が10MB/sということで、ビデオカメラなどのデータ転送速度が求められる機器でも快適に使用ができます。

こちらはリーダ・ライタがUHS-Ⅰに対応してなくても使用することができます(ただし、転送速度はリーダ・ライタの性能が上限になります。)

最近のSDカードはUHS-Ⅰ対応の物がほとんどのようですが、安いメモリーカードの中にはまれにUHS-Ⅰに対応していない、遅いSDカードが混ざっていることもあるようなので、注意したいですね。

SD / SDHC / SDXCカードの仕様と互換性 – SanDisk

takahashi 著者:takahashi

日本全国の神様の所在地が一目でわかるWebサービス”神さまマップ”

日本には古来より、”八百万の神々”というあらゆるものに神様が宿っている=無数の神様がいる、という考え方があり、いろんな神様を祀った神社が日本全国各地に存在しています。
神社によって祀られている神様もさまざまであり、どんなご利益があるのかも神社によってさまざまです。
そんな全国の神社の所在地や地域ごとの多さを、地図上から一目で確認できるサービスがニュース記事で紹介されていました。

全国の“神様分布”地図で一目瞭然 「神さまマップ」ホトカミが公開 – ITMedia

試しに神社が多そうな京都・奈良あたりを出してみます。

流石、赤くなっている場所が多いですねw

他の地域で神社が多そうなところも見てみます。
毎年10月には全国の神様が集まるという出雲大社がある島根県出雲市周辺。

神社が集中していることを示す赤い部分は少ないですが、出雲市周辺はしっかり赤くなっています。

そして意外だったのが首都圏。

かなり赤い地域が多いです。
首都は人だけでなく神様も集まっているようですね。

ちなみに、会社のある浜松市周辺ですが、

赤くなる程ではありませんが実は多くの神社があるんです。
ちなみに、位置情報ゲームのIngressも浜松市はそのポータルの多さから”聖地”と呼ばれることがあるようですが、

ポータルが多い理由もうなずけますねw

神さまマップ – ホトカミ

takahashi 著者:takahashi

Apache 2.2系で”_default_”の重複エラーが出るときの解決法

今回、少し古めの環境を再現する必要があったため構築作業を行っていたのですが、少しハマったので備忘録。

Apache2.2系とCentOS6を使ったテスト環境を作成していたのですが、設定完了し、configtestを行ったところ…

# apachectl configtest
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Tue Jul 17 14:41:13 2018] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
Syntax OK

とのエラーが。
“_default_” の指定はVirtualHostで指定されたどのドメインにもマッチしなかった場合や、IPアドレスでアクセスされた場合に使われる”デフォルトの”VirtualHostを指定するときに使います。
超簡単に書くと

<VirtualHost _default_:80>
    ServerName example.com
    DocumentRoot /path/to/directory
</VirtualHost>

のように指定すると、すべてのVirtualHostで記述のないホスト名で接続された場合や、VirtualHostディレクティブで指定されていないIPでアクセスされた場合は、この”_default_”が指定されたVirtualHostの設定が適用されます。
デフォルトの動作を定めるオプションなので、全設定ファイル中1箇所でしか指定できません。
この_default_の指定を複数個所で指定してしまった際に出てくるエラー(Warning)が

_default_ VirtualHost overlap on port 80, the first has precedence

です。
ただ、今回の場合”_default_”は一か所でしか指定していなかったにもかかわらず、上記のエラーが出てしまっているのでちょっと首をひねっていました。
Warningなので無視をしてもApacheを動かすことはできますが、予期しない動作をしてしまうことがあるので直しておきたいところ。

いろいろ調べたところ原因が判明しました。

Apache2.2系でVirtualHostする場合は”NameVirtualHost *:80″の指定が必要

Apache2.2系の場合、VirtualHostを設定する場合はNameVirtualHostを指定する必要があります。
指定するときは

NameVirtualHost 対象のIPアドレス:対象のポート

とします。
IPアドレスが定まっていない、あるいはサーバに割り当てられているIPすべてに適用したい場合は

NameVirtualHost *:80

と指定することも可能です

“_default_ VirtualHost overlap”エラーはこのNameVirtualHostが指定されていないときも出力されるようで、今回はこれが原因でした。

ただし、Apache2.4からはNameVirtualHostは指定しなくてもエラーは出ません。(NameVirtualHostの指定なしでVirtualHostを指定できます。)
これから新しい環境を作る際にApacheを用いる際、大抵の場合はApache2.4を使われるかと思いますので気にする機会は少ないかとは思いますが、Apache2.2系の環境を作られる機会があった場合は注意が必要です。

takahashi 著者:takahashi

Apacheをどう設定しても403になる時はSELinuxを疑え!

ここ最近、サーバーを構築する機会が何度かあったのですが、Apacheの構築中しばしば同じところでハマることがあったので備忘録。

Apacheでは通常、公開するディレクトリ(ドキュメントルートとするディレクトリ)のアクセス権限を下記のように与えてやれば、Webブラウザからのアクセスが可能になります。
例えば、

#2.2系
<Directory /var/www/html>
Order Deny,Allow
Deny from All
</Directory>
または
#2.4系
<Directory /var/www/html>
Require all granted
</Directory>

とすれば
/var/www/html
配下がアクセス可能になるはずです。
勿論、OS側のアクセス権限も調整する必要がありますが、Directoryディレクティブを設定し、なおかつOS側のファイルアクセス権限も問題ないはずなのに、ブラウザで開くと何故かステータスコード403(Forbidden)が返され、コンテンツが見えない、といった事情が起こりました。

ドキュメントルートのディレクトリよりもさらに上のディレクトリに、実行権限がついてるかどうかを確認したり、権限を一括で書き換えたりなど行いましたが、一向にアクセスできず。

いろいろ調べたところようやく原因に多とりつきました。

SELinuxです。

SELinuxはアクセス制御を行うモジュールで、米国NSAがオープンソースで提供しています。

非常に強力なのですが、サーバーのように一般的によくアクセスされる場合は障害になることも多いので、基本的には無効にします。
ただ最近は、インストール時に既に無効になっているものも多いのですが、今回使ったCentOSの場合はデフォルトで有効になっていたようで、SELinuxが動いていることに気づかずにそのまま作業してしまっていました。

SELinuxの設定の確認は

getenfotce

とすると確認ができます。

無効化すは

setenfotce 0

でできますが、これだけだとOSを再起動した際に復活してしまうので、

/etc/selinux/conf

SELINUX=enforcing

の記述を

SELINUX=permissive

に変更しておきます。
これで、再起動時もSELinuxが無効のままにしておくことができます。

なんど設定しなおしてもうまくいかない…!という方は一度SELinuxの設定を確認してみてください。

takahashi 著者:takahashi

“妖怪ウォッチ”の世界が現実化!? 位置情報ARゲーム”妖怪ウォッチ ワールド”

きっとこれは妖怪のせい…(オイ
どうも、最近夏バテ気味なたかはしです。

最近、”妖怪ウォッチ”のスマホ版ゲームが出たことを知ったのですが、内容がなかなかすごかったので取り上げてみたいと思います。

その名も、”妖怪ウォッチ ワールド”

Googleアカウント(Playゲーム)でユーザー登録して早速ログイン。


唐突に妖怪ウォッチの正当な所有者に選ばれちゃいましたw


ログインすると地図が表示されます。
実際には現在地が表示されるようですが、今回はチュートリアルなので、東京某所のエリアが表示されています。

右下に妖怪ウォッチアイコンがあり、クリックすると

サーチモードに移行。

はてなアイコンなら見えましたよウィスパーさん。


了解!
タップしてみますね。


するとカメラが起動。
…何やら空間内を紫色の靄が動き回っています。

この靄を、画面中央の円内に一定時間とらえ続けないといけないようなのですが、この靄が結構すばしっこくて、思わずあたふたしてしまいましたw

なんとかとらえ続けると、この靄が招待を表し…

</a

なんとオフィス内にジバニャンが!!!
なんだかやる気満々の様子。
どうやらここでバトルが始まるようです。


この後、チュートリアルの動画が再生されるのですが、
説明してくださる方はなんと超有名な有名なあの方…!!!

一体だれが出演するのかは、是非アプリで確かめてみてくださいw

しかしバトルとは言っても、自分まだ手持ちの妖怪(?)いないっすよ…?

と思っていたら…

なんと初期の時点で仲間の妖怪が!
流石ウィスパーさん、かなり親切ですw

バトルは基本的に自動進行します。
が、仲間側の妖怪たちが状態異常になったり、体力が減ってきた場合に、控えの妖怪と入れ替えたりなどを行ってバトルを有利に進めることができます。
また、妖怪たちが持つ必殺技の発動なども、プレイヤーが行わせることができるようです。

ちなみに、妖怪に勝つと、場合によって仲間になってくれる場合もあるようです。
自分がまるで妖怪ウォッチの世界に入ってしまったかのような気分で楽しむことができますw

ちなみに、ゲームをプレイしていてふと、Pokemon Goに非常によく似ているなーと感じ、まさかNiantic社と妖怪ウォッチの版元であるLevel-5社がコラボしたのか…!?
と思ったら、なんと

パズドラ などで有名なGungHo社とLevel-5社のコラボで製作されていました…!
ただし、地図データはGoogleMapを使っているようで、地図データは完全にNiantic社系アプリと同じ情報源となっています。

今までこのタイプのゲームはほぼNiantic社しか出していないような印象で、今回初の競合他社が現れたか!?といった感じでした。

Niantic社のIngressやPokemon Goがヒットした理由として、そのゲーム性の面白さもありますが、現実世界で遊ぶことによって、ほかのプレイヤーの方々とのつながりやコミュニティ、そしてイベントの開催などによってよりコミュニケーションをとることができる”場”を提供してきたことが大きな要因となっています。

GungHo社とLevel-5社の今回の試みでも、ゲーム世界の内側外側両方で魅力を付加することができるのか。
是非注目したいですね。

妖怪ウォッチ ワールド公式サイト

takahashi 著者:takahashi

SIMを入れていないスマホなどに表示される”緊急通報のみ”は本当に緊急通報できるのか?

一度は気になった方も多いはず。

SIMなしスマホや、無効なSIMが入っている端末で”通信事業者なし”といったメッセージの代わりに”緊急通報のみ”と表示される場合があります。
“緊急通報のみ”と出ている以上、逆に緊急通報であればできてしまうのではないか?と思ってしまいますが、実際のところはどうなのでしょうか?

携帯回線を契約していないのに、電話ができてしまうのでしょうか。

流石に試す勇気はなかったので、ネットで調べてみたところ、面白いことがわかりました。

  • 日本では実際に緊急通報することはできない。

「緊急通報のみ」の表示で、緊急通報はできるのか? – 格安SIMのSNS
によると、日本において、たとえ”緊急通報のみ”と表示されていても、実際に緊急通報することはできないようです。

結果、かかりませんでした。

一回バイブして電話は切れました。何回か試しても、やはりバイブして電話が切れるだけです。繋がらないじゃんと思い、119番も試してみましたが、同じく繋がりませんでした。

こんな感じで、実際にはかからなかったようです。
理由として、日本特有の決まりがあるようです。

【ハウツー】「SIMカードなし」のiPhoneは緊急電話できる? – いまさら聞けないiPhoneのなぜ – Livedoor News

iPhoneは携帯電話としての機能を備えるため、ここ日本では電気通信事業法に基づく制約を受けます。電気通信事業法 端末設備等規則 第28条の2には、「移動電話端末であって、通話の用に供するものは、緊急通報を発信する機能を備えなければならない」と定められ、国内で販売されるすべての携帯電話には緊急通報機能の装備が求められます。ロック画面に「緊急」ボタンが用意され、ロック解除することなく特定の番号 — 110(警察)と118(海上保安)、119(消防および救急)の3種類 — にかけられるのはそのためです。

しかし、日本国内での利用に関していうかぎり、SIMカードを抜いた状態では緊急電話をかけることができません。ダイヤルの画面を表示することはできますが、ダイヤルしても呼び出し音は鳴らず反応しません。この仕様はソフトバンク、au/KDDI、ドコモのいずれで契約したiPhoneも同様です。

日本でSIMカードなしの緊急電話ができない理由は、非アタッチ状態(携帯電話通信網に接続していない状態)での電波送出が法律上認められていないことにあります。SIMカードを抜いたiPhoneは非アタッチ状態ですから、ここ日本では緊急発信を求められない、だからSIMカードを抜いた状態では緊急電話をかけることができない、ということになります。

ただし、
「緊急通報のみ」の表示で、緊急通報はできるのか? – 格安SIMのSNS
によると

噂によると外国ではSIMカードを入れていないスマホでも、緊急通報はできるそうです。

とのこと。

  • SIMなしでも緊急通報できる国

ならば実際に通報できる国はどこなのかという話ですが、いろいろ調べましたが、確かな情報は出てきませんでした。
ただし、

緊急通報とローミング – 無線にゃんこ

によると、韓国ではできるようです。

  • 日本でも契約中のデータ専用SIMならかけられる可能性がある。

一方、日本で音声通話不能なSIMであっても、データSIMの場合はつながる可能性があるようです。
データSIMって緊急電話使えたんですか! – マイネ王

実はデータ専用SIMであっても、電話番号は必ずすべてのSIMに割り当てられています。
また、携帯電話網自体には”アタッチ”しているため、法律的にはクリアできます。

あとは音声回線に接続させてもらえるかという部分ですが、

mineo(au)ということは、VoLTE simを使っていますよね。
それが使えた理由のような気がします。
VolLTEの場合は、通話も3G回線ではなくLTE回線上でデータ通信と同じような仕組みでやっているから、データsimを使って119や110宛てに発信されたときに、auの基地局側でそれを拒絶するような仕組みになっていないのだと思います。

あくまでも推測でしかないですが、データsimにも電話番号はきちんと割り当てられているので、理論的にはできても不思議ではないですよね。

というコメントもあり、通信会社の設定次第、というところになりそうです。

  • 実際に試してみた

“日本では通話できない”ということがほぼ確実に分かったので、思い切って実際に確かめてみました。

丁度社内に、解約済みの無効SIMが刺さったXperia Ultraがあったので、この機種で実験してみます。

オペレータ部分に”緊急通報のみ”と表示されています。

緊急通報番号を入れ、恐る恐るコール開始。

“接続できません、有効なSIMカードを挿入してください。”

と表示され、やはりかけることはできませんでした。

結論として、日本においては”緊急通報のみ”と表示されていても、実際に緊急通報することはできませんでした。
ただし、先程あげた国などでは緊急通報できるということで、海外旅行時の万が一の時のために頭の片隅に入れておいても損はないかもしれませんね。

takahashi 著者:takahashi

やりたいことはある!!!…だけどなかなか進まない。そんな人のためのWebサービス”進捗ノート”

趣味などで達成したいことがある!
…でもついついサボってしまってなかなか進まない。

なーんて経験あったりしませんか?
皆さんも一度は経験があるかとは思います。
こういう時って”つぎこそは!”と思っても何故かなかなか進まないんですよね。

最近、自分も含めそんな悩みを抱えているかたの強い味方になりそうなWebサービスを見つけたのでご紹介したいと思います。

その名も”進捗ノート

自分の計画や実行中の物事の進捗を公開して、進捗度合いを報告できるWebサービスです。
シンプルですがありそうでなかったアイデアのつまったサービスになってます。

使い方は簡単。
まずは自分のTwitterアカウントでログインします。

マイページから、新しいプロジェクトを作成します。

プロジェクトは、自分が挑戦する”物事”ごとに一つ作ります。

プロジェクト作成後、マイページから、プロジェクトの詳細や状態などを編集できます。

現在のプロジェクトの状況に合わせてステータスが設定出来たり(構想中・進捗中・お蔵入りetc…)

プロジェクトの公開範囲を指定できたりなど、オプションも充実していて、自分に合った使い方ができるようになっています。

それぞれの進捗に対してウォッチ(≒フォロー。ほかのひとのプロジェクトをお気に入り登録して、状況を自分のホーム画面で閲覧できる)したり、応援メッセージを送ったりできるようになっています。

逆に、自分のプロジェクトの進みが悪いときは”進捗どうですか?”メッセージをもらうことも可能。お互いに励ましあいながら目標達成できる、素敵なWebサービスとなっています。

やりたいことができても、いつも途中で止まってしまう。

そんな悩みを抱える皆さん、今回こそは進捗ノートで”目標達成”してみませんか?

進捗ノート

なんというやる気製造サービス……! 創作物について気軽に進捗報告できる「進捗ノート」が創作勢にありがたい – ねとらぼ

takahashi 著者:takahashi

Webブラウザで動くVimとWebAssembly

ふとニュースを見ていたら、こんな記事を発見。

テキストエディター戦争は「Vim」がまた一歩リードか、Webブラウザーで動作可能に – 窓の杜

LinuxをはじめとしたOSでよく使われるCUIテキストエディタ”Vim”を、なんとブラウザ上で動作するウェブアプリケーションとして移植してしまった方がいるらしい。

ソースのページである
Vim を WebAssembly に移植した – はやくプログラムになりたい

というサイトから、デモページに飛ぶことができるようです。
実際にアクセスしてみました。

おおおすごい!
本当にVimがブラウザで動いてる!!!

まさかJavascriptで一から書き直したのか…!?!?
と思ってしまいますが、実はVimを”WebAssembly”という形式のバイナリにビルドすることによって動作を可能にしたとのこと。

WebAssemblyとは、ブラウザ上で動作するバイナリ形式の規格で、現時点ではC/C++やRustなどといった言語からバイナリファイルを生成し、WebAssemblyに対応したブラウザ上で直接実行できるとのこと。

この辺りの記事が詳しそうです。
【2017年4月版】WebAssemblyとは?〜実際にC言語をブラウザで動かす〜 – Qiita

記事の中にはUnityで作られたゲームをWebAssemblyでブラウザ上で動作させてしまうデモもありました。すげぇ…
ただ、現時点ではWebAssemblyからDOMの描画ができないようで、今回のVimの移植では、描画部分はjavascriptを利用しているとのことです。

Webプログラマなのにこういうこと言ってしまうのもアレですが、実は自分はJavascriptが”嫌い”です。
その理由の一つに、ブラウザによって動作速度が異なる(非常に遅くなる)、という点があります。
ライトなWebアプリなら全く問題はないのですが、ブラウザ側でどうしても重い処理をせざるを得ない状況になると、いつも大きな悩みの種になります。

今後、WebAssemblyのようにブラウザ上でバイナリを動作させられる環境が整えば、こういった重い処理を高速化する際の選択の幅が広がることになるので、個人的にはとても嬉しい話です。

また、CやC++を得意とした方が、Webプログラミングに参加しやすくなるという意味でも、非常にいい流れなのではないかなと思います。

是非実用的に利用できるレベルまで発展していってほしいですね…!

takahashi 著者:takahashi

macOSの調子が悪い… そんな時は”macOSを再インストール”を試してみよう

macOSとWindows、どちらが優れているのか?なんて議論がしばしば起こることがあります。

個人的には一長一短だと考えていて、なかなか甲乙を付けるのが難しいのですが、今回はmacのWindowsよりも優れていそうな点を紹介します。

どのOSをとっても、最近のOSは昔のものと比べて、OS本体が破損して起動不能になることはほとんどなくなりました。
が、ふとした拍子(例えばOSのメジャーアップデートに失敗してしまったり、ドライバが不具合になったりなど…)でOSが起動しなくなることはいまだにあります。

こういった場合もまた、最近のOSであれば復旧させるための手段を数種類、標準で用意しており、OSを初期化することなくトラブルの復旧をすることも可能になってきました。

さて、いろいろ試しても復旧せず、いよいよOSの初期化も考えないといけなくなってしまった時、最後の手段としてWindowsにはこんなオプションが用意されています。

“すべて削除する”はOSの初期化とほぼ同義なのですが、”個人用ファイルを保持する”を選択すると、自分がPCに保存したファイルはそのままの状態で、OSの初期化を行なってくれます。
ただし、いままでインストールしたアプリはすべて削除されてしまいます。(それによって治る不具合もありますが…)

一方、macOSはというと、オプション自体は少ないのですが、Windowsの”個人用ファイルを保持する”に似た選択肢として、”macOSを再インストール”という手段が用意されています。
こちらはmacOS本体からではなく、command + Rキーを押しながら起動したときに起動するリカバリモードで選択することができます。

macOSでのこのオプション、Windowsの”個人用ファイルを保持する”との違いは、”すべてのデータを残したまま”OSだけごっそりと再インストールしてくれる点。

ユーザーの保存したファイルの他に、ほぼすべてのアプリケーションも、設定を維持した状態で残ります。
Windowsと比較すると、アプリケーションの再インストールをしない分、再インストール後にすぐに使用を再開できるので非常にありがたいです。

先日、丁度自分のMacBookがmacOSが起動しなくなる不具合に見舞われてしまったのですが、この再インストールで、アプリやデータを保持しながら復旧することができました。
ただし、アプリケーションやその設定ファイル、残骸などによって引き起こされる不具合は、この再インストールオプションでは復旧しない可能性があるので、そういった場合は別の修復オプションを試す必要が出てきそうです。

最近どうもmacOSの動作がおかしい…と感じている方は、1度試してみてはいかがでしょうか。

macOS を再インストールする – Apple