このブログを検索

2018年4月6日金曜日

[Diskstation] DiskStationにWebアプリケーションをホストしmysqlを操作する際にハマったこと

タイトルの通りハマったので必要箇所を記録しておきます.

【やりたいこと】
  • Diskstation上でPHPのWebアプリを動かし,MariaDBを操作する.
  • 今回はINSERT文を対象とする. 

【前提】
  • Diskstation上にWebStationをインストール済み
  • Diskstation上にPHP(今回は7.0)をインストール済み
  • Diskstation上にMariaDB(今回は10)をインストール済み
  • Diskstation上にphpMyAdminをインストール済み(なくても良い)
  • HTMLサイトはWeb経由で閲覧できる状態になっている
  • phpも正常に動作する
  • db処理のみ正常に動作しない

【php側】
  • ホスト名は「XXX.co.jp」ではなく「XXX.co.jp:3307」とする.
  • MariaDBの標準ポートが3307でそちらを使わなければならないらしい.
  • また,一応SQLインジェクション対策を行った版を書いている.
  • プリペアドステートメントを行う際に日時をINSERTする際は上記のcastを利用すると良い.

【Diskstation側】
  • (恐らく初期設定で対応されているが)セキュリティのファイアウォールでMariaDBを許可する.
  • WebStation->PHP設定->編集->拡張を全部チェック(恐らくmysqliだけでいいと思われるが)

以上.意外とハマったので備忘録として.

2016年12月6日火曜日

[小ネタ] 高齢者の事故は増えているのか

https://twitter.com/Hashi_J_Kou/status/805801815237197824/photo/1

本日、こちらの記事が画像ランキング上位に食い込んでいました。

ちなみに18時現在、26400リツイートされている様子です。

確かに最近、高齢者が第一当事者である重大事故のニュースが(TV上では)多く報道されているように感じます。
ネット上の意見では、高齢者に運転させるのは危険ではないか?というものもある様子です。
ただ、個人的には、TV報道は情報を偏って報道しているのではないかと、常に考えながら見ているので、公開されている統計情報を見てみました。

今回、次の点に着目してみました。
 1.高齢者の事故が増えているのか
 2.高齢者に運転させるのは危険か

早速データを見ていきましょう。今回はH5とH26で比較することにしました。

まず、出典は「公益財団法人交通事故総合分析センター」様のこちらのページより、以下を用いました。
 ・交通統計(平成26年版)
 ・交通統計(平成5年版)
※利用に関してメールで承認をいただきました。

また、人口のデータは「総務省統計局」様より、以下を用いました。
 ・人口推計(平成26年10月版)の「年齢(5歳階級),男女,月別人口-総人口,日本人人口(各月1日現在) 」
 ・人口推計:我が国の推計人口(大正9年~平成12年)の「 年齢(5歳階級及び3区分),男女別人口(各年10月1日現在)-総人口(大正9年~平成12年)」


「1.高齢者の事故が増えているのか」を単純に検証してみましょう。
年齢別の事故数(第一当事者)をグラフ化してみました。


このグラフより、H5→H26で
 ・高齢者の事故は確かに増えている(75歳以上で5.73倍、65歳以上で3.15倍)。
 ・総事故件数は減少している(0.80倍)。
 ・H5の20歳~24歳の事故数が異常に高い(全体の2割を占める)。

以上より、「高齢者に運転させるのは危険である。」と結論づけてもよいか。
このデータのみでは単純に「はい」とは言えません。


「2.高齢者に運転させるのは危険か」を検証してみましょう。
上記は単純な事故数でしたが、母集団のサイズを度外視しております。
従って、「アクティブなドライバー」のうち、「何件事故が起きているのか」に着目してみましょう。
ただし、アクティブなドライバー数を確認するすべがないので、今回は大雑把に「運転免許所有者」をアクティブなドライバーとします。




年齢別の事故率(事故数/免許保有者数)を見てみました。
 ・全体を通して減少傾向にある。
 ・高齢者が特別事故率が高いわけではない。
 ・30歳以上はおおよそ横ばいに見えるが、75歳以上で微増する(H26)。
 ・むしろ25歳以下の事故率が深刻である。

以上の結果より、
 ・高齢者だからと言って、事故率が高まるわけではなさそうである。
というデータがみられる。

ただし、ここで注意が必要である。今回は、
 事故率=事故数/運転免許保有者数
でカウントを行っているため、「実際に運転している人の数」と「運転頻度や時間」が度外視されている。
すなわち、年を取るほどに運転機会や運転時間は減少するであろうことを考えると、やはり1回の運転あたりの事故率は高齢者のほうが高い可能性がある。(が、これはデータがないので示せない。)



【結論】
 ・高齢者の「事故数」は増加している(H5→H26で5.73倍)。
 ・「事故率」は年齢別全体で減少している(H5→H26で0.6倍~0.8倍)。
 ・25歳以下の「事故率」の方が深刻に見える(運転頻度考慮すると妥当な可能性もある)。



参考までに、運転免許保有率もグラフ化してみました。
算出方法は、 保有率=運転免許保有者数/人口 です。
考察は特にしません。


おわり。

2016年1月8日金曜日

[Java][Android]GooglePlayからアプリの情報をちょっとだけスクレイピングする

エラー処理も加えず,カプセル化もしていませんが,ただデータ取りたいだけの時などに...
GooglePlayのURLを入力とし,アプリタイトル,カテゴリ名,カテゴリのID,開発者名を取得します. 直接URLを叩くので,アクセス過多に注意が必要です.
利用の際は下記をコピペして,getTitle(url).toString()で良いはずです.

2015年11月15日日曜日

[TensoFlow] チュートリアル

TensorFlowのチュートリアルを実施中です.
今のところこちらにしたがっていればいい感じなのですが,2点補足です.
私の環境では,

python fully_connected_feed.py

実行時に

 File "fully_connected_feed.py", line 23, in <module>
    from tensorflow.g3doc.tutorials.mnist import input_data
ImportError: No module named g3doc.tutorials.mnist

のエラーが発生しました.本件は23行目のimportがうまく行っていない様子なので,
こちらを参考に以下の修正を行うと改善しました.

#from tensorflow.g3doc.tutorials.mnist import input_data
#from tensorflow.g3doc.tutorials.mnist import mnist
import input_data
import mnist

しかし続いて,

TypeError: range() takes at least 2 arguments (1 given)

のエラーが発生しまして,こちらを参考にしたところ,mnist.pyのバージョンの違いによるものだそうで,旧バージョンのmnist.pyと入れ替えることで改善できました.

とりあえずここまででスムーズに行かなかった点でした.

[PC] HP ENVY700-270jpへのVMWare

Googleさんが機械学習ライブラリTensorFlowをオープンソースで公開ということで,一度動かしてみようと思いました.
生粋のWindowsユーザである私はまずUbuntuを導入するところから始めるわけでして,VMWareで仮想化してWindows7上にUbuntu14.04をインストールすることにしました.
VMWareのインストールは容易に済んだのですが,仮想端末を起動すると以下の様なエラーが.



この仮想マシンは,64ビットゲストOS向けに構成されています.ただし,64ビット操作は使用できません.
このホストはIntel VT-xに対応していますが,Intel VT-xは無効になっています.
Intel VT-xがBIOS/ファームウェア設定で無効となっている,またはこの設定を変更してから電源を入れなおしていない場合,Intel VT-xが向こうとなる場合があります.
(1)BIOS/ファームウェア設定でIntel VT-xが有効になっていることを確認し,「信頼される実行」を向こうにしてください.
(2)これらのBIOS/ファームウェア設定のいずれかを変更したら,ホストの電源を入れなおしてください.
(3)VMWarePlayerをインストールしてからホストの電源を入れなおしていない場合はホストの電源を入れなおしてください.
(4)ホストのBIOS/ファームウェアを最新バージョンに更新してください.


調べてみるとこちらのブログにて同じ課題に取り組んでおられたので参考にしました.
本環境はHP ENVY700-270jpなのですが,BIOSは起動画面でEscもしくはF10連打で起動できます.
ヒューレット・パッカードセットアップユーティリティが起動できるので,仮想化設定を有効にします.
するとVMWare上でエラーがでなくなるので無事仮想端末の動作が可能になりました.

TensorFlowに関しては,やってみてまとめる余裕があればまとめます.

2015年4月20日月曜日

[Android][Openshift]AndroidからOpenshiftサーバへのファイル転送

Android側からPOST通信にてOpenshiftサーバへファイルを送る方法です.
サーバ側はOpenshiftでなくてもなんでもいいですが,PHPで受け取ると仮定します.

★サーバ側(test.php)




これ自体はどこかのサイト様を真似させていただきました.
※無断転載等ご指摘頂いた際は削除いたしますのでご連絡ください.

★Android側
まず,どこかからhttpmime-4.2.1.jarをDLしてきます.
※現在最新版の4.4.1では謎のエラーが発生したので4.2.1を推奨します.

DLしたファイルをlib配下に配置するか,ビルドパスを通します.

ファイルを送りたい場所で以下を記述します.




これでOK.Android側からはMultipartEntityを使ってファイルなどをPOSTすることが出来ます.
ファイルを送る場合は,FileBodyを,文字列を送る場合はStringBodyをつかいます.
なお,これらの動作は遅延等を考慮しバックグラウンド動作させるのがベターなようです.
その辺はAsyncTaskでググりましょう.

また,本ソースコード内には適用しておりますが,以下の点でつまずいたので追記します.

★ $_FILES[ 'picture' ][ 'name' ]が文字化けする
送信側で文字コード指定をしているにもかかわらず,ファイル名が???に文字化けしました.
色々なパターンを試したがダメで,結果ファイル名だけ別途POSTすることで回避しました.
StringBodyは文字化けしない様子です.

2015年2月17日火曜日

[Excel][小ネタ]セルの書式が更新されない件

Excelにて書式が更新されない現象があったので備忘録として記載します.

【発生現象】
・Excelの一部のセルが数値なのに文字列扱いになっている.
・そのせいで並べ替えをしても,1,10,2,3,4,5...となって数値順にならない.
・セルの書式→数値に変更するものの,一旦セルをダブルクリックまたはF2キーを押してアクティブにしないと更新がかからない.


【対応方法】
今回は数値データのみ困っていたので以下の方法で強引に対応しました.
特にA2~A100を一気に数値にしたい場合です.
1.B2セルに以下を記述する.A2のところは必要なセル番号を記述する.
   =value(A2)
2.コピーしてB3~B100にペーストする.
3.B2~B100をコピーする.
4.A2~A100のセルの書式を数値に変更する.
4.A2~A100に対して,値のみをペーストする.


ちょっと強引ですが以上です.
セルの書式ではなく,数式が計算出来ない現象もあった気がしますが,対策を忘れてしまったのでまた思い出したら記載します.