2015年3月11日水曜日

Polymer : paper-dialog (paper-action-dialog)のスタイルを設定する


このエントリーをはてなブックマークに追加
paper-dialog 公式ドキュメント に従って /deep/ を使っても width や height が上手く設定できずに悩んでいたのですが、原因は以下のサイトの内容でした。

参考:Issue with upgrade to Polymer 0.5.1 and styling paper-dialog

ルート以外の要素で paper-dialog を使う場合、一工夫いるようです。

原因の要約

  • paper-dialog (paper-action-dialog など含む)がデフォルトで layered プロパティが true に設定されている
    • ダイアログを常に画面前面に表示するため
  • layered が true の要素は、 core-overlay-layer というグローバルな要素に親が変更される
    • Developer Console を開いて Element のタブを開くとそのことがわかります
  • paper-dialog を使用している要素のスコープから外れてしまうので、そこで定義した css の style が適用されない

対策


リンク先では以下の3通りが紹介されています。 ひとまず、汎用的に思える core-style を使うことにしました。
  • layered を false にする
  • core-style を使う
  • paper-dialog を継承したカスタムエレメントを作成する


サンプル

<link rel="import" href="/bower_components/polymer/polymer.html">
<link rel="import" href="/bower_components/paper-button/paper-button.html">
<link rel="import" href="/bower_components/paper-dialog/paper-action-dialog.html">
<link rel="import" href="/bower_components/core-style/core-style.html">

<core-style id="my-dialog-style">
    html /deep/ {
    width: 16px;
    height: 16px;
    }
    html /deep/ paper-action-dialog::shadow #scroller {
        width: 360px;
        height: 360px;
    }
</core-style>
<core-style ref="my-dialog-style"></core-style>
<polymer-element name="my-paper-action-dialog" attributes="toggle">
        <template>
        <style>
            :host {
                position: absolute;
                width: 100%;
                height: 100%;
            }
        </style>

        <paper-action-dialog id="dialog">
            <div>
                ...
            </div>
            <paper-button dismissive>CANCEL</paper-button>
            <paper-button affirmative>OK</paper-button>
        </paper-action-dialog>
    </template>

    <script>
        Polymer({
            toggle: function () {
                this.$.dialog.toggle();
            }
        });
    </script>
</polymer-element>

2015年3月5日木曜日

Chart.js : Radar チャートのフォントサイズ変更


このエントリーをはてなブックマークに追加
Radar の外枠に表示されているラベルのフォントサイズや色の設定は defaults.global のオプションではなく defaults.Radar のオプションでした。

Chart.defaults.Radar.pointLabelFontSize = 16; // 少し大きく(デフォルトは 10)
Chart.defaults.Radar.pointLabelFontColor = 0x00FFFFFF; // 赤

Char.js | Documentation - Radar Chart

2015年3月1日日曜日

Django + Polymer : Ajax 時の CRFS 対策 (403 エラーへの対応)


このエントリーをはてなブックマークに追加
ここ に書いたように url に View を登録するときに csrf_exempt を使うことで CSRF 対策を切って 403 エラーを回避していましたが、Polymer 使用時には Django-enabled Polymer core-ajax variant を使うことで簡単に対応できる事がわかりました。
  1. リンク先の django-ajax を django-ajax.html という名前で保存する
  2. Polymer 内で core-ajax を使っていた部分を django-ajax に置き換える
    1. インポートを忘れずに
  3. {% csrf_token %} を html に含めてレンダリングする
django-ajax は core-ajax を継承していて、ajax 時のヘッダに csrf トークンを追加してくれる、という寸法のようです。

先人の知恵というのはありがたいものですね。リンク先に感謝です。

2015年2月27日金曜日

『Nexus Player』 レビュー


このエントリーをはてなブックマークに追加
購入しました。

Chromecast はすぐに使わなくなってしまったのであまり期待せずに買ったのですが、動きが軽快で使いやすく、想像以上に良いです。長続きするかもしれません。


セットアップ


HDMI ケーブルが別売りだったことに買ってから気が付きました。これから買う方はお気をつけ下さい。

電源ケーブルと HDMI ケーブルを繋いで、リモコンに電池を入れて起動したら、後は画面にそって進むのみ。メールアドレスやパスワードの入力はリモコンで。ネットワーク接続とログインが多少面倒なのは、一回限りの作業なので仕方ないのですかね。この辺りがもっと楽になると、がくっと購入障壁が低くなると思うのですが。


アプリ


はじめから入っている YoutubeHuluGoogle Music 以外に、TEDBloomberg を Play ストアからインストールしました。TED にランダム再生があるのが良いです。英語の勉強に使えそうな気がします。

後は nasne に対応したアプリと、ニコ動がくれば完璧ですが、これでも十分なので、気長に待つことにします。

ゲームパッドに対応したアプリもいくつかあるようなので、販売が始まったら購入して何かプレイしてみたいですね。せっかくキャンペーンで 2000円手に入れたので。ゲームもこれで十分ということになるのか、それともやっぱり家庭用ゲーム機にはまだ代えられないな、となるのか、試してみたいと思います。



音声検索


リモコンについているマイクボタンを押すとできるので、使ってみました。
「スティーブ・ジョブズ」と言ってみたところ「ティーブ ジョブズ」と認識されたりもしましたが、何度か繰り返すとちゃんと「steave jobs」と認識されて Youtube の動画などがリストアップされました。

ちなみに設定で言語を英語に変えると「にんてんどう」という喋った時の認識が「任天堂」から「Nintendo」に変わりました。英語で検索したいときにはこの方が便利そうです。



ゲームパッドの発売が楽しみです。

2015年2月振り返り


このエントリーをはてなブックマークに追加
2月が終わり、1年の 1/6 が終了です。今月は、ここ数ヶ月低調だった技術系(プログラミング系)にそれなりに時間をかけられたことが収穫でした。

反面、1月の反省を生かせず、相変わらず英語がリーディング・リスニングに偏っているのが問題の気がしています。というよりも、ライティング・スピーキングの能力を向上させたいと自分は本当に思っているのか、何のために向上させたいと思っているのかが曖昧な点が、良くないなと感じました。全体の目標を見直しながらその辺りをもっと考えてみたいと思います。


読書

ちょっと少なめですが、『エッセンシャル思考』がとても良かったこと、読み始めた『Animal Farm』が面白そうなことで、満足度は高いです。


英語

今月も edX に相当時間を使いました。"The Science of Happiness" と "Introduction to Nutrition" が受講終了、"Probability" について4週分。"Body Matters" という運動生理学(?)系の話が始まったのでそれを聴き始め。"Introduction to Nutrition" の最終課題のライティングと、何回かの日本語記事の英訳の練習を行いましたが、相変わらずリスニングとリーティングが多めです。


運動

1月よりはましで、ジャグリングは結構やってました。主に5ボールカスケードをひたすらやるだけですが。仕事が忙しくなると、早く帰れたときでも眠くて集中して筋トレできないのを何とかしたいところではあるのですが…いっそ諦めて、筋トレは週末にみっちりやる、という方向も良いのかもしれません。


プログラミング

Python での Google App Engine と、そこでのフロントエンドのフレームワークとして Polymer をそこそこ時間をかけて触っていました。なかなか面白いですし、Web アプリを作る技術は学びたいと思っていたので良い感じです。3月には何かとりあえずのものを形にしたいです。


娯楽作品

強いて言えば、小説(Look Who's BackAnimal Farm)を読んでいたくらいで、ゲームは新しいものに手を出していません。それでリフレッシュはできていますし、ここを無理に頑張る必要はないと思っているので問題視はしていません。




3月の目標

完全に『エッセンシャル思考』の影響を受けていますが、同時にいろいろなものを手を出そうとし過ぎていて、薄っぺらくなってしまっているのでは、と感じたので週末に年間目標の修正と、それを分割しての四半期単位の目標を建てようと思います。

2015年2月25日水曜日

『エッセンシャル思考』 感想とレビュー


このエントリーをはてなブックマークに追加


最近自分の周りで話題になっていた『エッセンシャル思考 最少の時間で成果を最大にする』という本を読みました。納得できる指針、わかりやすい具体例、明確なアドバイスと三拍子揃っており、かつ訳書にありがちな不自然な文体もなかったので、とても良い本だったと思います。いろいろな事に中途半端に手を出しがちな自分にとって、目標・行動の見直しのきっかけと指針になりました。

内容の紹介と、後で読み直す際の参考を兼ねて Part 毎に、簡単に内容をまとめます。


Part 1. エッセンシャル思考とは


原著は『Essentialism: The Disciplined Pursuit of Less』というタイトルで「Essentialism」は「本質主義」(Wikipedia)と訳されますが、ここでは、"自分の本質とはなにか、自分が大事にしているものは何かを見定めて、やる事とやらない事を自分の意志で取捨選択していく思考"のようにまとめられるのではないかと思います。重要なのは自分の意志で選ぶこと、また、取るだけでなく捨てる事も必要になることです。

「やらなくては」という思い込みを捨て、「どれも大事」という幻想を捨て、「全部できる」という自惚れを捨てることで、初めて重要なことに集中できるようになる、と説いています。
「教えてください、あなたは何をするのですが/その激しくかけがえのない一度きりの人生で」 メアリー・オリバー


Part 2. 見極める技術


当然取捨選択を行うにあたっては何を選ぶか、どのように選ぶのかが問題となります。Part 2. では以下の5つの章で、正しい選択を見極めるためのコツと条件を挙げています。
  • 孤独:どんなに忙しくとも、考えるための時間と環境を確保する
  • 洞察:情報の量や声の大きな意見に惑わされず、大局を見る
  • 遊び:創造性と探究心を忘れずに、何が楽しかったか、楽しいかに意識を向ける
  • 睡眠:洞察力、発想力を発揮し効率よく成果を挙げるためによく眠る
  • 選抜:明確で正しく、厳しい基準を採用し、悪くない、程度の選択肢は全て却下する


Part 3. 捨てる技術


Part 3. では捨てる技術として、本当に重要なものを選ぶために、不要な物事を「捨てる」技術を紹介しています。Part 2 の「見極める」技術と近いものがありますが、より具体的な方法論となっています。
  • 目標:「かなり明確」では不十分、魅力的でかつ測定可能な「完全に明確」なものにする
  • 拒否:断り方を覚えて勇気を持って上手に断る
  • キャンセル:「授かり効果」(自分の持ち物を高く評価する心理バイアス)を回避するため、途中まで進めていたプロジェクトや既に持っているものに対して判断を下す場合は「まだ持っていないとしたらどれくらいのコストをかけて手に入れようとするか」を考える
  • 編集:削除、凝縮、修正を日々繰り返し、自分の生き方から不要なものや余分なものを削って本質を維持する
  • 線引:譲れないラインを引き、自分の領域を確保する、また、他人の領域に手を出さない


Part 4. 仕組み化


Part 4 では Part 2, 3 で解説した考え方や方針を維持するための心構えを説きつつ、エッセンシャル思考のメリットについてまとめています。
  • バッファ:最悪の事態を想定して準備と計画を徹底的に行う
  • 削減:成果を産まない努力をやめ、目指すことを明確にしてそのボトルネックを取り除く
  • 前進:日々の進歩を大切にし、地味に着実に勝ち続ける
  • 習慣:重要なことをやることが普通の状態、となるよう、ひとつずつ良い習慣を身につける
  • 集中:過去や未来にとらわれず、今重要なことにひとつずつ集中する
  • 未来:エッセンシャル思考を体に染み込ませることは後悔なく生きることに繋がる
最終章「エッセンシャル思考のリーダーシップ」でチームとしてのエッセンシャル思考について触れていますが、ここでは割愛します。



2015年の目標を立ててから約 2ヶ月が経過し、調度良い見直しの時期なので、この本を参考にしつつもっと絞った目標に修正して、より実りのある1年を過ごせればと思います。

2015年2月20日金曜日

Django : Ajax POST 時に 403 エラー出る場合の対処法


このエントリーをはてなブックマークに追加
幾つか解決策はあるようですが、ひとまず url 登録時に csrf_exempt をつけています。
おそらくセキュリティ的にあまりよくなさそうなので Cross Site Request Forgery protection 辺りを参照していずれきちんと理解したいと思います。。。

from django.views.decorators.csrf import csrf_exempt
....
url(r'^category$', csrf_exempt(MyViewClass.as_view())),