モーグルとカバとパウダーの日記 このページをアンテナに追加 RSSフィード Twitter

モーグルやカバ(EXカービングスキー)、山スキー(BC)の山行記録などがメインの日記です。
いろんな条件のいろんなところを、その時々の条件にあった滑り方で楽しむ、フリースキーをして遊んでいます。

検索で来られた方は、上の検索窓から再度検索していただくか、右サイドバーのカテゴリーやトピックスの項目で絞り込んでみてください。
仕事柄、コンピュータ系のネタも多いので、スキー関連ネタだけ読みたい方は[ski]、コンピュータ関連ネタは[pc]、スパム関連ネタは[spam]で絞り込んでください。

2016-06-23 (Thu)

[]Docker for Windowsオープンベータインストールと問題点 Docker for Windowsオープンベータのインストールと問題点を含むブックマーク Docker for Windowsオープンベータのインストールと問題点のブックマークコメント

先日6/21ごろから、Docker for Windows がオープンベータになったので早速試してみました。


Announcing the Docker for Mac and Windows Public Beta | Docker Blog

https://blog.docker.com/2016/06/docker-mac-windows-public-beta/


下記ページから Docker for Windowsインストーラを利用してインストールします。

バージョンは「DOCKER 1.12.0-RC2-BETA16」でした。


Getting Started with Docker for Windows

https://docs.docker.com/docker-for-windows/


Docker for WindowsWindows 10 64bitとHyper-Vが必須要件となっています。

Hyper-Vは「プログラムと機能」→「Windowsの機能」→「Hyper-V」から入れることが出来ます。

自分のWindows10Hyper-Vが入っていない状態でしたが、入っていないとインストーラが入れるか聞いてきて、入れてくれました。


また、事前にDocker Toolboxが入っていると動かないようです。

自分はこれで最初動かなくてはまったのですが、アンインストールしたら動くようになりました。


このページの書いてある例のように

$ docker run -d -p 80:80 --name webserver nginx

でnginxを起動してブラウザで「http://docker」を表示したところ、無事にページが見えることを確認出来ました。

コンテナの起動は非常に早く、コンテナイメージがローカルにあれば2秒程度で起動してくれました。これはほんとに手軽でよいです。


$ docker ps

で、現在起動しているコンテナを確認することが出来ます。


docker exec -it 【コンテナID】 bash

で、そのコンテナに入って操作や確認することが出来ます。


Docker ハンズオン - 基本コマンド編 - Qiita

http://qiita.com/hihihiroro/items/6dda871dc2566801a6da


が、次の日に同様に使おうと思ったところ、dockerがちゃんと立ち上がっていないことに気が付きました。

Docker for Windowsが起動していると、タスクバーのインジケータに白い鯨のアイコンが出ているのですが、うまく立ち上がっていない時は赤い鯨になっています。

赤い鯨にマウスを持って行くと「'MobyLinuxVM' failed to start.」と出ていました。


下記ページによるとWindows Updateの「KB3163018」が悪影響を及ぼしてるようで、これをアンインストールするとうまくいったという話や、ベータ16だと解決された、「KB3163018」が入っていてベータ16ではHyper-Vを再度入れなおすとうまくいくのでは、という話が出ていました。


'MobyLinuxVM' failed to start - Docker for Windows - Docker Forums

https://forums.docker.com/t/mobylinuxvm-failed-to-start/15175


自分が試した限り、ベータ16でHyper-Vを入れなおしても、再起動するとやはりこの状況になってしまい、改善しませんでした。

「KB3163018」のアンインストールは試していません。


ただ、dockerの設定ウィンドウからRestartを掛けると動くことがわかりました。

PC起動時に同時起動する場合だと、うまく動かないのかもしれません。


この状態だとMobyLinuxVMが動いているため、すでにローカルにイメージがあるdockerコンテナを立ち上げることは出来ました。

しかし、新しいdockerイメージを持ってくるような操作をすると「Network timed out while trying to connect」というエラーが出て使えない状況でした。

ネットワークが使えなくなっているのか、ca-certの鍵が古いのか、というあたりが考えられましたが、解決方法がわかりませんでした。


とりあえずこの時点であきらめて、今まで使っていたvagrantを立ち上げようとしたところ、今度は「Intel VT-xが見つからない」というようなエラーが出て、vagrantが動かなくなってることに気が付きました。

下記ページによると、どうもHyper-Vを入れるとVirtualBoxが動かなくなるようです。


Windows 10Hyper-VOracle VirtualBox v5.0.0 は両立できない !? – アプリ徹底紹介

http://app-review.poox.xyz/archives/1449


というわけで、もう少しDocker for Windowsが安定して使えるようになるまで様子見することにしました。

まずHyper-Vを「プログラムと機能」→「Windowsの機能」→「Hyper-V」からHyper-Vを外し、Docker for Windowsアンインストールしました。


こうやれば現バージョンのDocker for Windowsも問題なく使えるよ、というのをご存知でしたら、試してみたいので教えて下さい。

2016-06-09 (Thu)

[]ConEmuでMSYS2のbash上でvagrant sshした時に画面が崩れる件 ConEmuでMSYS2のbash上でvagrant sshした時に画面が崩れる件を含むブックマーク ConEmuでMSYS2のbash上でvagrant sshした時に画面が崩れる件のブックマークコメント

ターミナルとしてConEmuを使っていて、そこからMSYS2のbashzshbash.exe --login のようにして呼び出して使っていました。

で、そこからvagrantを動かしているのですが、vagrant sshして入った先のemacsが画面が崩れて使えない、みたいなことが起きていました。


で調べてみるとConEmu+MSYS2のbashzshで入る設定でTERMを確認すると

TERM=xterm-256color

になっており、これだと崩れてしまうことがわかりました。


ただ、ConEmu+Powershell等の環境から呼び出すと大丈夫であったため、確認すると

TERM=cygwin

となっており、TERMを「cygwin」等に指定にすれば良いということがわかりました。


そこでConEmu+MSYS2 bashを立ち上げた後

export TERM=cygwin

としてやってからemacs動かせば問題がないことを確認しました。


ただ、普通にスタートメニューからMSYS2のターミナルを開くとTERMが「xterm-256color」でも問題なく動くため、ConEmu+MSYS2の場合だと問題が起きるようです。


でそれについてさらに調べていると、


ConEmuからMSYS2のシェルを起動したときに256色対応させる - 水を見ると釣りがしたくなる

http://e8l.hatenablog.com/entry/2016/03/24/161206

MSYS2のシェルからansi color codeを上手にConEmuの方へ引き渡すコネクタプログラムを噛ませる必要がある


ConEmu | cygwin/msys terminal connector

https://conemu.github.io/en/CygwinMsysConnector.html

set MSYSTEM=MINGW64 & c:\tools\msys64\usr\bin\bash.exe --login -i

Change it to:

set MSYSTEM=MINGW64 & conemu-msys2-64.exe


ということで、コネクタプログラム経由にしないとxterm-256colorでの表示はうまくいかないそうです。

試してみると確かにこれでうまく動いてくれました。

ただ、そうするとzshではなくbashになってしまうのですよね。これはなにか方法あるのかな?


また、ConEmuのヘルプに起動時にTERMの指定が出来る記述

chcp 1251 & set TERM=MSYS & cmd

があったため、これでTERMの指定をcygwinにしてzshを動かせそうに思ったのですが、自分が試して見た限りではこれは動きませんでした。


で、この問題について色々と探しているときに、shellは「Nyagos」が良いというのをちょこちょこ見かけました。


Windowsターミナル環境にCmderを使う 〜Nyagosとmsys2を添えて〜 - 長文書くところ

http://zenito9970.hatenablog.com/entry/2015/06/19/163701


このエントリではCmder+Nyagos+MSYS2ですが、自分の場合はConEmu+Nyagos+MSYS2で使ってみました。

こちらのコメントにもあるようにChocolateyでインストールできるので簡単に入ります。

確かにNyagos良い感じで、TERMもcygwinになるためそのままvagrant sshしても表示が崩れる問題は起きませんでした。


というわけでまとめると

  • ConEmu + MSYS2 bash + vagrant ssh で崩れるのは TERM が「xterm-256color」になってるため
  • MSYS2 bashかvagrant中でTERMを「cygwin」などにすれば崩れなくなる
  • でもシェルをNyagosにしちゃったほうが快適

という感じでした。


(関連)

WindowsターミナルアプリConEmuのフォント設定 - モーグルとカバとパウダーの日記

http://d.hatena.ne.jp/stealthinu/20130527/p1

トラックバック - http://d.hatena.ne.jp/stealthinu/20160609

2016-05-26 (Thu)

[]revealjsで作ったプレゼン資料をphantomjsを利用してPDFrevealjsで作ったプレゼン資料をphantomjsを利用してPDF化を含むブックマーク revealjsで作ったプレゼン資料をphantomjsを利用してPDF化のブックマークコメント

こないだの勉強会で作った資料は、MarkDownで書いたものをrevealjsを使ってスライド化していました。


それだとSlideShareに載せれないのでrevealjsのPDF出力機能を使ってPDF化しました。

revealjsではプレゼンURLの後ろに「?print-pdf」と付けると、PDF出力用のページを表示してくれるので、それをブラウザのプリント機能からPDF出力させてやればPDF化することが出来ます。

ただ、それだと手でオペレートする必要があって、自動化出来ないのがちょっとイヤな感じでありました。


そしたら勉強会の時に @ktz_alias さんから、phantomjsを使うと自動化出来るよ!というナイス情報を教えていただきました。

結果的にはばっちり動いたのですが、画面サイズ指定などでちょこちょことハマったので使い方の説明を書きたいと思います。


phantomjsをインストールするためにnpmを使います。

自分はWindows環境なのですが、久しぶりにnpmを使おうとしたらなにやらエラーがでて、結局npmというかnode環境自体を入れ直すはめになりましたので、node環境を入れるところから説明します。

今、Windowsでnodeを入れるには、nodeのバージョン管理ツールであるnodistを入れて、そこから入れるのがお薦めのようです。


marcelklehr/nodist: Natural node.js and io.js version manager for windows.


ここからインストーラーをダウンロードしてインストールします。今だと0.7.2が入るはず。

% nodist -v
0.7.2

現在の安定版nodeを入れます。

% nodist stable
nodev6.2.0

これでnodeもnpmも入ります。

% node -v 
v6.2.0

% npm -v  
3.5.2

やっと本題のphantomjsを入れます。

すでにnode環境できてる方はここから。

% npm install -g phantomjs

なんかたくさんメッセージが出て、かつ途中でTypeErrorとかエラーが出るのですが、なんとか入ります。


次に、作ったプレゼン資料のrevealjsのディレクトリパスとそれを表示できるURLを調べます。

例えばパスと表示できるURL

だったとします。


revealjsのpluginの中にphantomjsで出力するための「print-pdf.js」というJSがおまけで入っているので、それを使うとコマンドラインからすぐPDFが吐けるようになっています。

「print-pdf.js」はパラメータとして、PDF用の表示URL、出力ファイル名、あとオプションで画面サイズを「480x350」のようにして渡すことが出来ます。

ただこの画面サイズがくせ者で、実際のサイズはこの2倍になります

デフォルトでは「960x700」となっており、すると画面サイズが「1920x1400」となるのでたぶん大きすぎるでしょう。

なので「480x350」と指定すると「960x700」のサイズになります。たぶんこれがちょうどいいと思います。

表示URLPDF出力用のURLにする必要があるので「?print-pdf」を追加してやります。するとコマンドに「?」が含まれてしまうことになるためURLはダブルクォートで括る必要があります


というわけでまとめると下記のようなコマンドでrevealjsで作ったプレゼン資料をPDFにすることができます。

% phantomjs C:/Users/hoge/Dropbox/Public/exampleslide/reveal.js/plugin/print-pdf/print-pdf.js \
 "https://dl.dropboxusercontent.com/u/99999999/exampleslide/index.html?print-pdf" \
 exampleslide.pdf 480x350
トラックバック - http://d.hatena.ne.jp/stealthinu/20160526

2016-05-24 (Tue)

[][]ニューロンになってみる ニューロンになってみるを含むブックマーク ニューロンになってみるのブックマークコメント

LIGさん主催の勉強会「づや会」の機械学習の回で『ニューロンになってみる』という題でLTをさせていただきました。


づや会 vol5 「機械学習の話」 - connpass

http://lig.connpass.com/event/30420/



ニューロンになってみる(reveal.js版)

https://dl.dropboxusercontent.com/u/4412680/zuyaneuro/handneuro.html


ディープラーニングとかニューラルネットワークがどうやって学習をするのか、数式で説明されてると、数式の意味するところがいまいちわからないという時があると思うんですが、実際にどんなアルゴリズムで動いているのかがわかると、以外に簡単なことを意味していたりします。

ニューロは元々生物の脳細胞の動きを元にしているので、一個一個のニューロの動きは実は単純だったりします。

そこで手で実際にニューロの動きをやってみて、ニューロがどうやって学習するのかを学習しよう、というわけです。


これ、『マッチ箱の脳』という本が元ネタで、そこではマッチ箱とマッチを使って、ニューロンのやってる学習をやっています。

ただ、勉強会でやるには準備が大変なので、紙とえんぴつかExcel上とかでやることを考えてそのフォーマットを作ってみました。


ただ、実際のLTでは時間が全然足らず、結局実際にやってみてもらうだけの時間が取れなくて、説明だけで終わってしまいうまくいきませんでした。

次回、NSEGとかでリベンジ出来たらなと思っています。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160524

2016-04-22 (Fri)

[]NetCommons2で大きなサイズの画像アップロードに失敗する理由 NetCommons2で大きなサイズの画像アップロードに失敗する理由を含むブックマーク NetCommons2で大きなサイズの画像アップロードに失敗する理由のブックマークコメント

NetCommonsというCMSがあり、そこで画像ファイルアップロードするとある程度のサイズの画像なら問題ないが、大きなサイズの画像だとアップロードに失敗する、という問題が起きました。


メモリやアップロードファイルサイズの設定はすでにphp.iniでされており、phpinfo()で確認してみてもちゃんと設定が通っている状況でした。


しかしデバッガで追ってみると、携帯用のサムネイルを作るためにimagecreatefromjpegというGD関数を使うところで落ちてしまい、どうやらメモリが足らない状況でした。

どうやら、というのはここで落ちるとエラーを吐かずに死ぬので、メモリ不足のせいで死んだのかどうかをエラーログからは確認できないためです。


ちなみに、imagecreatefromjpegすると、ファイルサイズに関係なく画像のサイズx4byte分のメモリを必要とするらしく、例えば4000x3000pixの画像をアップロードするとそれだけで48Mのメモリが消費されることになります。


で、ぐぐってみると似たようなことで困っている人はいるようなのですが、どうもphp.iniではなく「ini_set」でやると大丈夫、という話がありました。ほんとに??


PHP GD Allowed memory size exhausted - Stack Overflow

http://stackoverflow.com/questions/2827908/php-gd-allowed-memory-size-exhausted


そこで、imagecreatefromjpegを呼ぶ前で「ini_set('memory_limit', '512M')」として試したところ、ちゃんと動くことがわかりました。


そうなると今度はなんでphp.iniで設定した値が使われないんだろう??という疑問がわくわけですが、その理由は実はCMS側の設定でした。


NetCommonsには

「システム管理」→「サーバ設定」→「PHP最大メモリ数」

という項目があり、ここでPHPの最大メモリ数設定が出来るとなっているのですが、どうやらここで設定した値でmemory_limitが設定されてしまうように書かれているようです。

ここに512M等設定すると、大きな画像アップロードでも落ちないようになりました。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160422

2016-03-22 (Tue)

[][]CakePHP2.7以降はPHP5.2では動かない CakePHP2.7以降はPHP5.2では動かないを含むブックマーク CakePHP2.7以降はPHP5.2では動かないのブックマークコメント

今さらながらPHP5.2の環境で動くシステムを作らなければならなくて、でもまあCakePHP2系はPHP5.2対応だから大丈夫だよね、と思って作ってたのです。


が… 本番環境で動かしてみたら下記のようなエラーが出てはまりました。

PHP Parse error: syntax error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or …


実はCakePHP2.7以降だとPHP5.3以降対応になっているとのこと。

2.7 移行ガイド — CakePHP Cookbook 2.x ドキュメント

http://book.cakephp.org/2.0/ja/appendices/2-7-migration-guide.html

CakePHP 2.7 で必要な PHP バージョンは、 PHP 5.3.0 に引き上げられました。


CakePHP3系はPHP5.2では動かないことを確認していたのでCakePHP2系を選択したのですが、2.6と2.7でPHPの対応バージョンに違いが出てきてしまうのでした。

インストールCakePHP Cookbook 3.x ドキュメント

http://book.cakephp.org/3.0/ja/installation.html

システム要件

PHP 5.5.9 以上


また、DebugKitでもエラーが出たのでこれも調べてみると2013年7月時点ですらPHP5.3以降となっているそうでした。

PHP5.3以上のときだけDebugKitを読み込む - mikage014の日記

http://d.hatena.ne.jp/mikage014/20130704/1372895705

DebugKitのmasterブランチは2013年7月時点で

となっています。


ちなみにcomposerも対応バージョンは

Introduction - Composer

https://getcomposer.org/doc/00-intro.md

Composer requires PHP 5.3.2+

となっており使えません。

…のに使ってしまっていました。こっちはちゃんと確認すりゃわかることだったのに…


ということで自分のチェックミスが問題でした。

もう2016年時点で今さらPHP5.2環境で新規開発する案件なんてなかなかなかろうとは思いますが、つい普通の環境での開発と同じ感覚で環境構築してしまうとはまるということで。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160322

2016-03-10 (Thu)

[]Vagrantの共有フォルダをapacheの公開ディレクトリにしていると更新が反映されない問題 Vagrantの共有フォルダをapacheの公開ディレクトリにしていると更新が反映されない問題を含むブックマーク Vagrantの共有フォルダをapacheの公開ディレクトリにしていると更新が反映されない問題のブックマークコメント

今、WindowsCakePHPの開発を行っているのですが、Vagrant上にCentOSを入れ、共有フォルダ /vagrant 以下にディレクトリを作ってそこにCakePHPを入れ、apacheの設定でそこをDocumentRootにして使っています。

開発はWindows上のNetBeansで直接共有フォルダのソースを編集するようにしています。

これだとWindows上のXAMPP使ってるのと同じような感じに開発が進められます。


さてその環境で、Javascriptのファイルを編集しても編集が反映されない、一度ファイル名を変更して、再度ファイル名を戻すとちゃんと動くんだけど… というような相談を受けました。

最初、CakePHPキャッシュブラウザキャッシュを疑ったのですが、Cake関係ないファイルでテストしても同様の状況が再現できて違うことがわかりました。

しかも色々とテストしてみると、単に修正が反映されない時ばかりではなく、なんか過去に修正した時の内容が出てきたり、一部欠けたものが出てくることがあったりと、不安定な動作をすることがあることがわかりました。


そこで今度はApache自身のキャッシュを疑ったのですが、Apacheにそんな機構あったっけ?と思ったのと、あと他ではこういうの経験したことが無かったから、Vagrantの共有フォルダがらみなんだろうなあ、と考えました。

そこで「vagrant 共有フォルダ apache」でぐぐったところすぐに答えがわかりました。


Vagrantの共有フォルダをDocumentRootに設定した場合にファイルの変更が反映されない | trapon : experience

Virtualbox上のApacheでホストマシンと共有している静的ファイル(CSSなど)の更新が検知されない問題を解決する方法 | tipshare.info


VirtualboxやVagrantではそこそこメジャーなトラブルっぽいです。

結局、共有フォルダはNFSとかと同じような機構なので、EnableMMAPとEnableSendfileが効いているとうまく動かないことが起こるそうです。


/etc/httpd/conf/httpd.confのデフォルト設定ファイルにもこの2項目の記述がありコメントになっているため、そこを外してやるか、無ければ下記のようにoffの記述を追加してやります。

EnableMMAP off
EnableSendfile off

これだけで無事に解決できました。


ただ自分の例のように、途中にキャッシュサーバフレームワークを利用している場合、どこのキャッシュのせいでこの問題が起こっているのか、がわかるまでに結構時間がかかるのではないかと思います。


(追記)

さとうふみやすさんより下記のように情報をいただきました。


VirtualBox の shared folder で sendfile(2) がバグってるやつを調べた - hibomaのはてなダイアリー

Nginx や Apache で sendfile(2) サポートを有効にしていると VirtualBox の shared folder ( /vagrant ) のファイルを ホストOS側からで更新しても反映されないバグが知られています。

・generic_file_splice_read はファイルが書き換えられているかどうかを確認しない

・ホストOSでファイルが更新されていても generic_file_splice_read は知らず知らず 古いページキャッシュを返してしまう

という問題

VirtualBoxのvboxsfに問題があるようで、根本解決できる道はありそうなんですが、未だにパッチされてないからなかなか難しそうなのか。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160310

2016-02-02 (Tue)

[]古いWebアプリMySQLからエクスポート文字化け 古いWebアプリのMySQLからエクスポートで文字化けを含むブックマーク 古いWebアプリのMySQLからエクスポートで文字化けのブックマークコメント

perl+MySQLで書かれた古いWebアプリをリプレースする件があるのですが、まず今登録されているデータをエクスポートしてくるところからはまりました。


いわゆるレンタルサーバ上で動いておりシェルは使えないため、webの管理画面からphpMyAdminを使ってエクスポートするようになっていました。


で普通にエクスポートするとデータが全部文字化け


テーブルエンコード設定を確認すると「latin1_swedish_ci」になっていました。

そういや昔のMySQLって、エンコード指定しないデフォルトの状況だと「latin1_swedish_ci」になるんだったかな?


perlのコードからDBの中身はEUCであることがわかっていたので、エクスポート時の文字コードEUCに指定してみたり、エクスポートされて出力されたテキストファイルをEUCに変換したりしてみたのですが改善されませんでした。


で、ぐぐってみるとそのまんまな事例と解決法がありました。

8年前のエントリーで「XOOPS」の単語が時代を感じます。


latin1_swedish_ciで文字化け | Home and Abroad

http://waji-mart.com/homeandabroad/latin1_swedish_ci%e3%81%a7%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91/


エクスポートしてきたテキストを秀丸で開いて「欧文」で保存する、というものでした。

欧文で保存してから再度開きなおすと、今度はちゃんとEUC文字コードが自動認識されて文字化けせずに開いてきました。

大変に助かりました。ありがたい!


EUCのデータだからとEUCで出力しようとがんばってた方向が間違ってたようです。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160202

2016-01-28 (Thu)

[]vagrantサーバで時間を動かしてテストする vagrantサーバで時間を動かしてテストするを含むブックマーク vagrantサーバで時間を動かしてテストするのブックマークコメント

vagrantで動かしている仮想サーバ上に開発/テスト環境を作ってあり、そこで date で時間を進めてテストを行おうとしていました。

しかし、ntpdを動かしていないのに勝手に時間がすぐ戻ってしまい、なんで?となりました。

ただVMwareとかVirtualBoxのようなVMでは、ホストのサポートが無いとクライアントサーバの時間がずれてしまう現象が良くあるので、それを補正する機能が付いているのですが、VirtualBoxで動いているvagrantでもその機能がデフォルトで動いているのだろうな、と思いました。

で調べてみるとやっぱりそうで、デフォルトでは時間の同期が行われてしまうため、止めるためにはvagrantファイルに設定を追記する必要があるのだそうです。


Vagrantでホストマシーンとクライアントマシーンの時間を同期させない方法 - Qiita

http://qiita.com/wataru420/items/6441b69ec5fb90743fd1

config.vm.provider :virtualbox do |vb|
  vb.customize ["setextradata", :id, "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled", 1]
end

ということで、設定を追加してvagrant上で動いているクライアントサーバ再起動したところ、無事に同期しないようになりました。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160128

2015-12-24 (Thu)

[]Picate (Picasaタグ編集ヘルパー)という簡易Webサービスを公開します Picate (Picasaタグ編集ヘルパー)という簡易Webサービスを公開しますを含むブックマーク Picate (Picasaタグ編集ヘルパー)という簡易Webサービスを公開しますのブックマークコメント

Picasaのタグ編集ヘルパー「Picate」

http://k2net.hakuba.jp/picate/


(追記)

Google、写真管理サービス「Picasa」終了へ、「Googleフォト」に統合 -INTERNET Watch

GoogleフォトではPicasaにあった「タグ」機能がないため、このPicateも使えなくなります。

残念…

(追記ここまで)


この記事はNSEGアドベントカレンダーの17日目の記事です。


前年度、うちの下の子どもが幼稚園の年長さんだったのですが、うちの幼稚園では父兄が卒園アルバムを制作することになっており、嫁がアルバム制作委員長となってしまいました。

アルバム制作委員長というのが大変な仕事だ… というのは、助言を聞きに言った歴代のアルバム制作委員長たちがみな「もう二度とやらない」と語っていたというエピソードを聞いて理解しました。


参考まで、下記に非常にためになるエントリーを上げておきたいと思います。


結果的に、ここまでは大変ではなかったのですが、やはり相応に大変な思いをしていました。

そして主にPCやネットワーク系のことで補佐をすることになった自分も、そこそこ大変でありました。


アルバム作るとき、大きく分けて

1. 写真を集める

2. 写真を選択する

3. 写真を加工する

4. 写真をまとめてページを作る

という感じの作業が必要です。

一般的にアルバムを作ると言った時にぱっとイメージする4の部分は、あくまで最後の、一番楽な?工程であり、その下準備が非常に、大変に労力がいるようでした。


特に選択する部分は、どの子がどんだけの枚数写っているかをチェックする必要があったり、その中でなるべく良い表情のものを選択する必要があったりと、実は一番神経を使うパートだったりするようです。


自分がこのアルバム作成の話を聞いて、どうやれば一番楽に出来るだろうかと考えた時、写真を集めたり選択する部分は「Picasa」でやればよかろう、という意見を出しました。

PicasaならGoogle+アカウントを作る必要があるものの、1アカウントで15GBまで無料で利用でき、Picasaアプリを入れなくても、Web上でグループ内で写真を見たり、アップロード出来る機能があり、写真にタグ付けをして整理することが出来るからです。

非常に多数の写真があるので、各種イベント毎の写真に対し、アルバム委員が分担してアルバムに載せる候補を「○○ちゃん」とか「プール参観」とかのタグをつけながら選択していく、ということを考えました。


…と思ってやってみてもらったのですが、確かにそう、機能はあるんだ、でもダメじゃんこれ… ということがいくつも出てきました。それが下記3点でした。

Google+ に自動で転送されてしまうため、Picasaウェブアルバムのサイトにいちいち戻る必要がある、とかは些細な事です)


まず、画像をアップロードでやってもらうのは、心理的に非常に敷居が高い、ということ。

これは、USBメモリーに入れてもらって、それを嫁がPicasaアプリから一括でアップロードする、ということで解決しました。

  • タグ共有の問題

最初はメンバーごとにアカウントを取ってもらい、共同編集アルバムを使ってアップロードや閲覧する、というスタイルで考えていたのですが、タグ情報は共有されない、という問題がありました。

そのため結局、アルバム委員用のアカウントを作成し、みなそのアカウントログインして表示やタグの編集をしてもらう運用にしました。

  • タグでの絞り込み表示ができない

そして一番えええ?と思ったのが、タグでの絞り込みをして表示することが出来ない、という問題です。

PicasaはPCのアプリケーションソフトWebサービスとがあるのですが、アプリケーションではタグごとに写真を抽出する方法がある(タグリストからそのタグを選択するという非常に当たり前なやりかたで)ものの、なんとWebサービス側ではそういう機能が提供されていないのです!

すでに結構タグ付けを行ってから、その機能が無くてすごく使いにくいという報告をうけた(自分たちは基本、アプリケーションのほうで確認していたため気が付かなかった)ため、急遽なんとかする必要が出来ました。


そこで作られたのがこの


Picate (Picasaタグ編集ヘルパー)

http://k2net.hakuba.jp/picate/


という簡易的なWebサービスなのです。


このページを開くと、Googleアカウントログインしていない状況だと、最初にPicasaログインアカウントの入力が求められます。

これはOpenIDでのログインになりますので、こちら側ではなんら情報を取得したり保持したりはしていません。

というか実は、このページ内にあるjavascriptのみで機能が完結していますので、このページを自分のホームページ領域にコピーして、カスタマイズして使うことも出来ます。


ログインすると、そのアカウントPicasaに上げているアルバムのリストとそのリスト内で使われているタグのリストが表示されます。

f:id:stealthinu:20151224132015p:image


この中からアルバムを選択するか、タグを選択すると、そのアルバムでそのタグの付いている写真のみがこのページ下記に全て表示されます。


写真を選択すると、Picasa Webサービスの写真編集ページが表示されますので、タグの編集はそちらで行なうことが出来ます。


ソース見ていただくと、アルバムからタグの取得するところがなんだか複雑になっていることがわかると思うのですが、PicasaのWebAPIはなぜか、アルバム毎とタグ毎の写真取得APIはあるものの、アルバムとタグをどちらも指定出来るAPIがないのです。

なので仕方なく、一旦タグで抽出したものをスクリプト内でアルバムidでフィルタして実装しています。

他にも、ところどころ足りないところのあるAPIで、使いにくかったです。

あと編集後の反映が、Picasa WebサービスAPIから触るときにはタイムラグがあったり(それも酷い時だと日単位くらいで…)なかなか難しいところがありました。


でも、このPicateがあればPicasaを使って写真選択をみんなで行なう、というのは結構良い感じで動きました。

ので、これから幼稚園のアルバム制作しないといけない、という方はぜひご利用してみてください。


(関連)

Lenovo G560でムービーメーカーが起動できない問題 - モーグルとカバとパウダーの日記

ムービーメーカー2012で縦長になる問題 - モーグルとカバとパウダーの日記

GIMPで拡大縮小がうまくできなくなる問題 - モーグルとカバとパウダーの日記

[][]SNS時代のスパム手法 SNS時代のスパム手法を含むブックマーク SNS時代のスパム手法のブックマークコメント

この記事はNSEGアドベントカレンダーの24日目の記事です。


…といいつつ新規に作ったものではなく、これは去年の11月にとあるセキュリティ系の講演で喋った内容のプレゼン資料です。

今、スパマーたちはメールによるスパムから、SNSを使ったスパムへと軸足を移しており、SNSスパム手法はどんなものがあってどうやって広めたりマネタイズしているのか、を紹介したものです。


https://dl.dropboxusercontent.com/u/4412680/naganoispbouhan/snsspam.html

今のスパムの特徴が

であること、そして今後はより

  • システムの穴より人間の穴を狙う
  • SNSファースト・スマホファースト
  • 低率で大量配信より標的型で高率に
  • 「サービス」と「スパム」の差があいまいに

という方向へむかうであろうこと、を解説しています。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151224