カテゴリーアーカイブ 未分類

takahashi 著者:takahashi

FuelPHPでNotice例外の表示を消す方法

FuelPHPはデフォルトで、すべてのPHPエラーを表示するように設計されています。

FuelPHP は、古い手続き型の関数からの(例外でなない)PHP エラーに遭遇した場合、デフォルトの PHP の振る舞いを変更します。 FuelPHP は、致命的でない PHP エラーに遭遇した場合、処理を継続せず、これらのすべてのエラーに対し PhpErrorException をスローします。 すると、以前は無視していたような E_NOTICE といったエラーもすべて解決することを求められます。 非プログラマが作成したビューファイル中の構文エラーといった、PHP のエラーを捕らえることも同時に可能になります。

つまり、PHP上で作法通り(例えば空の変数を参照しない、など)プログラムしていないとNoticeエラーでバシバシ怒られます。
綺麗なプログラムを描きたい場合は非常に有用です(し、可能な限り修正すべきです)が、既成のライブラリを用いたり、開発期間が短かかったり、などといった場合はNoticeエラーが表示されるのは非常に困ることがあります。

そういう場合にNoticeエラーを無効化する方法を紹介します。

自分の知る限り、無効化する方法は2通りあります。

一つ目は、.htaccessでPHPのNoticeエラーを無効化する方法です。
fuelの場合、ドキュメントルート/public/.htaccess に次の設定を加えることで設定できます。

php_value "error_reporting" "E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR"

この一行を、.htaccessの末尾に追加すれば設定完了です。
もう一つの方法は、fuelPHPの設定ファイル fuel/app/config/config.php に設定を記述することでnoticeを無効化できます。

アプリケーション設定 – FuelPHP

FuelPHPは”規定より設定”という思想で開発されており、かなり自由にコーディングすることができます。
最低限のルールの土台はfuel、それ以降の細かい部分は自分で作りこむことができるのがfuelの魅力ですね。

フレームワーク何を使うか悩んでいる方は是非一度試してみてはいかがでしょうか。

  • この記事いいね! (0)
村上 著者:村上

【MySQL】SELECT文で取得したデータを外部ファイルに書き込む方法

気付けばこの投稿が記念すべき100記事目でした。
いつも必死に書いていましたが、案外100記事ってあっという間ですね。

 

さて今回は、MySQLでSELECT文で取得したデータを ○○○.csv のような形式で、外部ファイルに書き込む方法です。
すぐやり方を忘れる or 定型文としてメモしてあるのをコピーして使っているだけなので、私のための備忘録としてまとめます。

select * from [テーブル名] INTO OUTFILE '[ファイル名]' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';

こちらを実行すると、指定したファイル名(例えば data.csv など)で新しくファイルが作られ、そこに抽出したデータが書き込まれます。

具体的には、まず「INTO OUTFILE [ファイル名]」でデータをファイルに書き込みます。
なお、既にあるファイル名を指定することはできません。
次に「FIELDS TERMINATED BY ‘,’」で、抽出したデータをカンマ区切りに変更します。
OPTIONALLY ENCLOSED BY ‘”‘」では囲み文字を指定でき、抽出したデータを指定した文字で囲むことができます。
今回は、「”(ダブルコーテーション)」でデータを囲みます。

また、サンプルコードでは指定しておりませんが、改行コードを指定することもでき、「LINES TERMINATED BY ‘\r\n’」を使います。
が、エクセルなどで開くと、いい感じに整形してくれるので、あまりこのオプションを使うことは少なそう。

 

データベースのデータをCSVファイルとして抽出できると、あとから表でまとめるときにとても楽なので、このオプションはとても重宝しています。
が、初めて使ったときは変な風に指定してしまい、おかしな形式になってしまったので、慣れるまではサンプルコードをコピー&ペーストした方が無難ですね。

  • この記事いいね! (0)
著者:杉浦

NMEAについてざっくり

NMEAを詳しく知りたい方のための資料として私がおすすめする資料はu-bloxの公開しているu-blox 8 / u-blox M8 Receiver Description Including Protocol Specificationのpp.105~127あたりです。このふんわりした小話よりもそちらでがっつり読み込んだ方がためになると思います。私は検索がうまくできませんでしたがtrimbleのhelpなども詳しいです。
NMEAとはGNSSの受信したデータを出力する複数のプロトコルをまとめた呼称です。NMEAは正式にはNMEA0183といい、団体であるNMEA(この記事中に出てくるこれ以外のNMEAはプロトコルNMEA0183のことを指した語です)が制定したプロトコルです。GNSS受信機はGNSS衛星から送られてきた信号を元に自らの位置などを推定しています。この推定された位置などの便利そうな情報をいい感じにまとめるプロトコルがNMEAになるわけです。ほとんどのGNSS受信機はこのNMEAに従ってデータを出力します。このNMEAには様々な種類があります。その中でも使われる頻度の高いGGA、GSA、GSV、RMCについてほんのり紹介します。実際に受信機から送られてくるデータを読んだことがある人はGGA、GSAでなく$GPGGA、$GNGSAなどの頭文字を持ってデータが送られてくることを知っているでしょう。NMEAは受信機によってGPGGA、GNGGAと頭文字が変わります。この頭文字は受信機が対応する衛星に従って付けられています。
GGAはざっくりと今の受信機の状態が分かるプロトコルです。位置、使用衛星数、精度低下率などがわかります。

$xxGGA,time,lat,NS,long,EW,quality,numSV,HDOP,alt,M,sep,M,diffAge,diffStation*cs<CR><LF>

GSAは誤差について詳しく記述されたプロトコルです。使用衛星、精度低下率について詳しく記述されています。

$xxGSA,opMode,navMode{,sv},PDOP,HDOP,VDOP,systemId*cs

GSVはGNSS Satellites in Viewの略称であり可視状態にある衛星について詳しく記述されています。

$xxGSV,numMsg,msgNum,numSV,{,sv,elv,az,cno},signalId*cs

RMCはRecommended Minimum dataとされています。RMCに大体のGPSに時刻、位置、速度といったGNSSに要求されている結果が記されています。

$xxRMC,time,status,lat,NS,long,EW,spd,cog,date,mv,mvEW,posMode,navStatus*cs
  • この記事いいね! (1)
著者:杉浦

組み合わせ爆発の話

 巨大な数を表す方法にはいろいろあります。掛け算、乗数、n乗のn乗の…数(乗数に乗数が含まれている)と順に大きくなっていきます。この中で2番目の乗数なんかは組み合わせ爆発と合わせてプログラマに縁があると思います。組み合わせ爆発とは機械学習などのアルゴリズムを考える時に考える必要のあることであり、碁や将棋のコンピュータが強くなることが難しいとされていた理由の一つです。多数の項目を組み合わせることで組み合わせ爆発を起こせます。[a-z]と[A-Z]と[0-9]を組み合わせれば26*26*10になります。雑に作ったアルゴリズムになんかはループ中ループ中を含み、こんなことになります。
 囲碁や将棋の手を進めることはどうしようもなく組み合わせ爆発になります。このため良い手を見つけることはとても難しいとされていました。組み合わせ爆発が起きるか否かはアルゴリズムを図示する際、フローチャートか状態遷移図かの基準なんかにもできます。

  • この記事いいね! (0)
村上 著者:村上

【スマートウォッチ】体温で発電できる充電不要の「MATRIX PowerWatch」

気になるニュースを見つけたのでご紹介。
なんと、体温で発電して充電が不要なスマートウォッチ「MATRIX PowerWatch」が明日販売されます。

こちらのスマートウォッチを取り上げた記事はこちらから。

体温で発電、充電不要のスマートウォッチが明日発売。MATRIX PowerWatch日本上陸
https://japanese.engadget.com/2018/04/11/matrix-powerwatch/

「世の中はムダな熱であふれている」–体温で発電、充電不要な「MATRIX PowerWatch」
https://japan.cnet.com/article/35117601/

記事によると、なんでも身に着けた利用者の体温と外気温との温度差で発電しているのだとか。
全く発電できるイメージがわかないのですが…そんなことができるんですね。

 

私もスマートウォッチではありませんが、ドコモの「ムーヴバンド3」というヘルスバンドを愛用しています。
が、確かに充電が面倒だったりするんですよね。
スマートウォッチと比べると、はるかに消費電力が少ないので毎日充電するわけではないのですが、逆に忘れたころに充電が無くなるので、気が付けば充電が切れていた…ということもありました。
充電が少なくなると、バイブレーションで教えてくれるのですが…たまに気が付かないんですよね。

その点、この「MATRIX PowerWatch」は、そもそも充電の必要がないのが凄く良いですね。

 

スマートウォッチとしての機能は、

  1. 歩数計
  2. 消費カロリー計
  3. 睡眠量計

上記の3点ができるとのこと。
基本的な機能のみに絞られていて、使いやすそうです。
なお、最上位版では、スマートフォンと連携して、電話着信やメッセージの通知を受け取ることができるとのこと。

ディスプレイは白黒の電子ペーパーが使われており、消費電力を押さえているとのこと。
また、出荷時から日本語表示に対応しているとのことでした。

が、発電機能を備えているため、サイズは本体直径が46mm~60mmで、厚さは12.5mm~13.5mmと、結構大きめです。
華奢な女性が付けると、かなりゴツそうに見えるのではと思いますね。
お値段は3万2800円(税別)~4万2800円(税別)です。

なお、発売日はご覧の通りです。

  1. ベーシックモデル『PowerWatch Silver』…4月12日
  2. 中間モデル『PowerWatch Black Ops Pack』…4月12日
  3. 最上位モデル『PowerWatch X』…5月予定

 

気になったので取り上げはしましたが、買うかどうかというと正直買わないかな…。
見た目はすごく好みだし、機能面にもそこまで不満はないのですが、いかんせん大きすぎる気がします。
そもそも、スマートウォッチよりも、ヘルスバンドの方が私の需要にはあっているんですよね。

が、好みは人それぞれだと思いますので、気になった方は是非購入を検討してみてはいかがでしょうか?

  • この記事いいね! (0)
著者:ym

プライバシーマークの定期的なパスワード変更の件

Pマークのガイドラインの改定で、パスワードの有効期限が消えた様です。

海外の、何度もパスワード変更する事で、かえってバレやすいパスワードになる。なるほどね。そうなのか。

いくつかのサービスでパスワードを使い回す事で、一つのサイトで漏洩すると別のサイトも合わせて漏洩することになるわけですが、確かに定期的に変更する事で、サイト毎にパスワードがズレてくるので漏洩しても使われにくくはなりますけどね。笑

いっその事、利用者に決めさすのではなくて、ワンタイム的にシステム側がランダム発行したら良いかと思う。そもそも自分でパスワード決めたのに、毎回パスワードリマインダ使っている人いるわけで、ある意味他要素認証だしね。w

変更点比較資料が JIPDEC のページにありました。

JIS Q 15001-2006をベースにした個人情報保護マネジメントシステム実施のためのガイドライン第2版新旧対照表

  • この記事いいね! (0)
著者:杉浦

主成分分析について具体的な過程抜きでざっくり

 少し前に話題になっており、今も存在感のあるビッグデータという言葉があります。この記事ではビッグデータの解析等で役に立っている統計学の技術である主成分分析の紹介をします。
 大量のデータはその大きさに違わず大量の重複した情報をはらんでいることがあります。主成分分析とは重複した情報をまとめ、計算効率よく処理することを可能にする方法です。この重複した情報には似た意味を持つ情報というのは異なる項目成れど、片方が分かればもう片方もほとんどわかるような密接な関係にある情報のことも含みます。完全に重複した情報の例にはある物体中に含まれる分子の数と原子の数、似た情報の例には身長と体重が挙げられます。主成分分析はこの重複した情報を一つの情報としてまとめる方法です。項目数を減らすことは計算量の減少に大きく貢献します。例えば、8つの選択肢のある項目が3つあった場合、すべてのパターンを網羅するには8^3=512個の処理が必要ですが、主成分分析によって項目を2つに減らした場合、8^2=64個の処理で済むことになります。単純なやり方はある項目Aとある項目Bを最小二乗法で一次式を引き、一次式がよく当てはまれば、その一次式の傾きに合わせて次元を削減、というものです。下図なんかがわかりやすいです。三項目のデータを二項目で表しています。

 この手法の応用のために使われる関連技術には、平面でなくもっと複雑な面にまとめるカーネルやスカスカなデータは不要と判断するスパース性なんかがあります。

  • この記事いいね! (0)
著者:杉浦

texで論文を書く人向けのツールの紹介

特にtex(きれいに数式を書ける論文向け言語)を使って論文の制作する人の役に立ちそうな道具の紹介になります。
Math – MyScript Webdemo:https://webdemo.myscript.com/views/math.html
手書きで書いた数式をtex形式にするページです。分数を書くたびにいちいち\frac{}{}、ギリシャ文字を書くためにいちいち\alphaなんか書く必要があって手間なtexの数式制作を楽にしてくれます。
CSV2TeX:https://www.quark.kj.yamagata-u.ac.jp/~genki/omake/csv2tex_kai_v1.html
csv形式のデータをtexの表にしてくれるページです。これまた区切りが七面倒くさいtexの表の制作を楽にしてくれます。
smallpdf:https://smallpdf.com/jp
pdfを大きく圧縮するアプリの紹介です。経験談では20MB越えのpdfファイルが数MBになりました。
メールに添付するには大きすぎるpdfを作りがちな、修士論文、卒業論文をメールで提出しないといけない大学生なんかには特に役に立つと思います。

  • この記事いいね! (0)
著者:杉浦

条件付き確率の話

 ここにある事象A、Bがあるとします。Aである時にBである確率とただ単にBである確率は同じでしょうか。
 AとBに関係がなければ同じですが、AとBに関係があるならばほぼ全ての場合で異なるでしょう。このAである時にBである確率を条件付き確率と呼びます。A、Bには様々なものが適用できます。特にAには複数の事象が入ることが多く、aであり、bであり、cである時のBである確率、なんてことによくなります。
 この条件付き確率をよく用いる分野に自然言語処理というものがあります。自然言語処理は人間が日常的に自然に使っている言語をコンピュータに処理させるという技術のことです。文脈という言葉がで表される様に、文章中の文の続き具合、文中の語の続き具合、というものが存在します。また、言語は名詞、動詞、形容詞、助詞などと分類でき、おおまかな文法が存在しており、構造化が可能です。構造化によって文脈を明瞭にとらえることが可能になります。先ほどの条件付き確率の説明におけるAを文脈とすることで、様々なBを予測することが可能です。
 この条件付き確率を用いた予測によって翻訳、質問応答、対話生成、文章の意味分析、自動変換などなどのことができます。和訳を例にして、文脈がわかることの有用性を説明してみます。goneという言葉があります。言葉の主な意味は”行った”です。また、無視できない程の頻度で用いられる意味として”逝った”というものがあります。ただの”gone”という言葉を単体で和訳した場合、使用頻度からただ”行った”と訳すのが正解でしょう。しかしここで”He has gone.”、”He is gone.”という文全体の情報があったとした場合、”He has”、”He is”という文脈からそれぞれ”行った”、”逝った”と使い分けてより正確に翻訳を行うことができます。より身近な例としてPCやSPの自動変換があります。文章をまあまあ正しく漢字に直してくれる機能なんかもこの条件付き確率を用いた技術を使っていたりします。

  • この記事いいね! (0)
takahashi 著者:takahashi

Appleがマック向けに独自のチップを開発中との噂

最近、ネット上の記事でこんな情報が流れてきました。

AppleがMacのCPUをIntelから自社製へ変更の動き、ハード・ソフトの完全なエコシステム構築へ – Gigazine

どうやら、AppleがIntel製CPUの代替えとなる、自社製CPUを開発中である可能性が出ているようです。
多くの記事では、Intelが大口顧客を失う可能性が、というところが取り上げられていますが、個人的には別の点が気になっています。

AppleがCPUを自社開発するとしてそのCPUアーキテクチャはどうなるのか、という点です。
AMDのように、Intel製ではないが、IntelのCPUと互換性のあるアーキテクチャで開発されていれば、今までのバイナリコードをそのまま使うことができますし、(Appleが認可さえしていれば)WindowsをMacにインストールできる「BootCamp」も使い続けられる可能性が出てきます。

しかし、もし搭載されるCPUがApple独自のアーキテクチャになった場合…Windowsはほぼ全く使えなくなる可能性が出てきます。
そればかりか、Linuxなども、場合によっては動作不能となり、”Mac”で使えるOSは”Mac OSのみ”という状況になってしまうかもしれません。

折角、intelMacになってから互換性という面で他のシステムに対して開かれた状態になりつつあったのに、またPowerPC時代のように”閉じた”Macが出てきてしまうのではないかと個人的には危惧しています。

僕は日常的にいろいろなOSを使いわけていますが、どのOSも要求を完全に満たしているものはなく、それぞれのOSに一長一短があるように思えます。
勿論、MacOSも例外ではないです。
MachintoshでWindowsが動くことは、非常に大きなアドバンテージです。複数台のPCを持ち歩くことなく、MacOSとWindowsを併用できるのですから。
しかも、MacOSとのデュアルブートを実現できるハードはMacしかありません。

自分が今Macを使っているのはまさにBootCampがあったからであり、MacOSしか使えなかったのであれば恐らくMacは買わなかったでしょう。

どうか独自チップになった以降も互換性が維持された形のシステムになることを祈ります。

  • この記事いいね! (1)