ゲーム「もし次の常駐先が女子エンジニアばっかりだったら」をやってみた

転職サイトのpaizaさんのゲーム「もし次の常駐先が女子エンジニアばっかりだったら」をやってみた。

たまたま最近始まったことを知ったサービスで、どんな感じなのかと覗いたところ、新キャラを解放するためのプログラミング問題にやる気を刺激され、最後の10人目のキャラを出すところまでやってしまった。

特に最終問題は50位までのランキングが発表されるとのこと。解き終わってみると同率で50位以内に入れる得点だったが、同得点の場合は先に解いた人が優先される仕様のため、残念ながらランクイン出来なかった。どうやら高得点を求めるよりもクリアすることを優先するとほぼこの点数(10206点)に落ち着くらしく、30位代からずらっと同点が並んでいた。

※得点と表記しているが、実際にはダメージ値なので低い方が順位が上。

なんか悔しくて頑張ってみたら、なんとかランクイン出来た。そこそこ高得点を出せそうなプログラムを書けたつもりだが、それでは規定の処理時間(6秒?)をオーバーしてしまうらしく、最後は大幅に妥協して終わらせた。今回はランクインだけが目的だったので、いずれは1位とかも狙っていきたい。

Gitコマンド まとめ

個人的によく使うGitコマンドのまとめ

 ローカルで変更されたファイルの一覧を表示

git status

 

ローカルの変更を取り消す

git reset --hard

 

ローカルへのコミット 

git add [ファイル名]

git commit -m "[コメント]"

 

ローカルでの変更をリモートへ反映

git push origin master

 

リモートの変更をローカルへ反映

git fetch

 

コマンドでGitを使う機会が少ないため、覚えられずほぼ毎回ググってる。

 

仮想マシン上DebianのFirefox「安全な接続ができませんでした」の解決

結論から言うとDebian上の日時が実際の日時とズレていたことが原因だった。日時を合わせたら解決

仮想マシンだから停止、起動をするのは普通だと思うけど、これで日時がズレてしまう模様。日時がズレることでFirefoxでのブラウジング時に認証関連の処理で不都合が発生し、「安全な接続ができませんでした」とのメッセージが出てブラウジング出来ない問題につながっているように見受けられた。手動で日時を合わせてもいいんだけど、今後も同じことが何度も発生しそうな気がしたので、自動で日時合わせをするためntpをインストール。

  • apt-get install ntp

インストール直後に自動時刻合わせがされた。今後も上手くいくだろうか。

DebianにKNPをインストールする

日本語構文・格・照応解析システム KNP(京都大学  黒橋・河原研究室)をDebian GNU/Linuxにインストールするためのメモ。

環境は

基本的にはKNPのインストール方法に従って進めればよいが、それだけでは途中で色々エラーが発生してインストール成功に至らなかった。以下はインストール成功までにやったこと。

  • apt-get install gcc
  • apt-get install make
  • apt-get install g++
  • apt-get install tinycdb
  • apt-get install zlib1g-dev
  • apt-get install crf++ (←CRF++は同梱されているそうなのでこれは不要かも?)

エラーメッセージ等を見て一つ一つ対処したけれどなかなか時間がかかった。

 

[追記1]

KNP単体で動作させるには上記でOKだが、PerlからKNPを利用する(Perlで"use KNP;"する)にあたってはもう少し手順が必要。

以下は必要に応じてroot権限を使用のこと。

をする。

 

[追記2]

CPANからライブラリをインストールする方法。KNPのインストールではないが、関連事項なのでこのページに書き残す。CPANからライブラリをインストールするには"perl -MCPAN -e 'install ○○○○::XXXX'"とする。例としては以下のようになる。

  • perl -MCPAN -e 'install List::MoreUtils'
  • perl -MCPAN -e 'install XML::Simple'

電池、バッテリーは多重化すべき

電池、バッテリーで動く製品といえば携帯電話、ゲーム機、自転車のライトなど身の回りにいろいろあるが、電池切れや残り残量との戦いになることも多い。もう少しなんとかならないかと考えてみた結果、多重化できたらどうなるか?というのが以下。

一次電池(充電のできない電池)での多重化メリット

例えば2系統のうち片方の電池が切れたら、残った片方で動作は継続しつつ利用者に電池切れを知らせ、動作を止めることなく電池交換ができる。

二次電池(蓄電池、充電池)での多重化メリット

二次電池の場合も一次電池の場合と同じく、動作を継続しつつ切れた電池を交換できるメリットはある。それにプラスして、充電のできる二次電池ではメモリー効果二次電池に継ぎ足し充電を繰り返すことで使用可能時間が短くなる)の防止、回復のため、定期的に1系統ずつ電池を使い切るという選択肢も取れる。1系統しか無ければ残り容量をあまり減らしたくない場合もあるだろうが、複数系統あれば1系統は使い切りながら他は全て満充電にすることで全体の電池残量は高いレベルに保つことができる。

 以上。

タイトルでは「多重化すべき」とか言い切っているけど専門外なので本当は自信無し…

1回のSQLで明細、小計、合計を取得できる

メモ代わりに。

GROUP BY句でRollUp集計という機能を使うと、明細、小計、合計が1度で取得できます。タイトルは3階層を前提にしましたが、おそらく3階層に限らず複数階層の中間計が取得できると思います。そのレコードが明細、中間計、合計のどの階層のものかは、GROUPING関数を使えば判定できます。

詳細は調べればいくらでも見つかると思うので、ここには詳しく書きません。

図でイメージするOracle DatabaseのSQL全集 第5回 RollUp集計など

個人情報を売買する名簿業者の問題について

ベネッセコーポレーションから最大4000万件を超えるとも言われる大量の個人情報が名簿業者に流れ、その一部をジャストシステムが買い取り使用していたとの報道があった。たまたまかもしれないが、自分の接した報道ではベネッセとジャストシステムばかりが取り上げられていたように感じた。数ヶ月前に名簿業者について調べたことがあり、その仕組みに疑問を感じていたので改めて名簿業者の問題について考えてみたい。

名簿業者が個人情報を売買することは、一見個人情報保護法に違反しているようにも思えるが、ある条件を満たしていれば合法である。その条件とは本人からの要求があった場合に第三者提供を停止する、オプトアウトの運用を行なうことだ。

ただし、オプトアウトには以下のような問題があると思っている。

個人情報保有業者の特定

どこにどのような名簿業者が存在し、自分のどのような個人情報を保有しているのか、を知る方法が現時点で殆どないように思われる。これではオプトアウトを行なうことができない、というよりも行ないたいと考え始めるためのキッカケがない状態である。

オプトアウト手続きのコスト

以前に調査をした全ての名簿業者で、インターネット上の手続きではオプトアウトが完結せず、書類を郵送せよとのことであった。用紙の印刷代、切手代などの金銭面はもちろん、手間もかかるし、本人確認書類と称して運転免許証のコピーなども求められるケースが多い。この時は会社の名刺から流出したと思われるデータの利用を停止させたかったのだが、名刺データと引き換えに免許証という更に個人的な情報を開示する気にはならず、オプトアウトを諦めることになった。

オプトアウト自体のリスク

仮にオプトアウトが目的であったとしても、名簿業者と接触すること自体がこちらの個人情報を相手に与えることになりかねない。業者に悪意が無かったとしても、多くの場所に情報が存在していればそれだけ情報漏えいのリスクは高まる。

今後どうしたらよいか

オプトアウトでは解決できない問題がある以上は原則個人情報の売買・提供を禁止して、本人が承諾した場合のみ個人情報を扱える、オプトインの方法に切り替えてもらいたいと思っている。売買の利益を折半にでもすれば、承諾する人もそれなりにいるかもしれない。