タイトル/名前 | 更新者 | 更新日 |
---|---|---|
技術/Linux/RPMコマンドメモ(yum) | msakamoto-sf | 2014-09-15 19:03:25 |
JavaScript/ExtJS/「Sencha Ext JS 4実践開発ガイド」読書メモ | msakamoto-sf | 2014-09-15 13:21:07 |
JavaScript/ExtJS | msakamoto-sf | 2014-09-15 12:36:24 |
JavaScript | msakamoto-sf | 2014-09-14 18:56:55 |
技術/運用管理/Fabric | msakamoto-sf | 2014-09-06 22:13:05 |
技術/運用管理/調査メモ(Ansible, Kickstart) | msakamoto-sf | 2014-09-06 21:39:49 |
技術/Security/PKI,SSL,TLS/SSL, Certificate, Public Key Pinning | msakamoto-sf | 2014-09-06 15:43:21 |
Java | msakamoto-sf | 2014-09-06 15:00:25 |
日記/2014/09/06/JavaからWord(.docx)ファイル操作できるライブラリの予備調査 | msakamoto-sf | 2014-09-06 14:55:35 |
JavaScript/ExtJS/ExtJS4参考メモ | msakamoto-sf | 2014-08-24 21:49:10 |
グループの一覧:
# yum grouplist
非表示含めたグループ一覧:
# yum grouplist hidden
非表示なグループ例:Core, Standard
グループの情報表示:
# yum groupinfo "グループ名"
グループで一気にインストール:
# yum groupinstall "グループ名"
参考:
ファイル名のglobで、それを提供しているパッケージを探してくれる。
$ yum provides */dig
参考:
yumの各種cacheを削除する。
全部削除 # yum clean all
参考:
「Sencha Ext JS 4実践開発ガイド」の読書メモです。
2014年9月現在、既にExtJS5がリリースされている状況ですが、ExtJS4以降の基本を網羅的に概説してくれている日本語書籍としては貴重な一冊です。
難点は、この書籍で解説されているExtJS4が(恐らく)もう入手できなくなっていることでしょうか。Sencha本家サイトから評価版、あるいはGPLv3用にDLできるのはExtJS5のみで、ExtJS4をDLするリンクは見当たりません。
この読書メモでは、そのような現在の状況で、この本でどう手を動かして学ぶか、また、自分が気になったポイントについてメモとして残します。
Sencha Fiddleを使うと、過去のExtJSのバージョンを簡単に動かして練習ができます。
「開発ガイド」の方では.jsや.cssを手動で読み込む形式を紹介していますが、現在はSencha Cmdというビルドシステムが導入され、これでSPAのひな形を自動生成する流れが主流になっています。
Sencha Cmdで生成されたひな形をベースに、テスト用ならそれようのJSが、プロダクション環境用ならminifyされたJSがロードされるようにHTMLがビルドされます。
そのため、新規にアプリを作成する流れで勉強するなら、以下の順序が今ならオススメかと思います。
ただし、既存のサイトに部分的に、ライブラリとしてExtJSを導入するのであれば、Sencha Cmdの重厚なビルドシステムを導入するのが難しい場合もあります。そうした場合に、ExtJSのライブラリやCSSを手動で既存のHTMLに組み込むことになると思います。そのようなときに、書籍で紹介されている方法が参考になると思います。
ドキュメント
ExtJSは独自のクラスシステムを導入しています。その中で、個人的に特に押さえておいた方が良いのは、configとmixinとoverridesです。
なぜこれらが大事かというと・・・
config と mixin を理解しておけば、ExtJSのソースコードを読むのも楽になります。
ちょっと古いですが、Senchaの英語ドキュメントでこんなのもあります。
自分が、基本的なクラスシステムの使い方、config, mixin, overridesの使い方を練習したSencha Fiddle:
ExtJSはGUIコンポーネントが強力で、それらを使うとなればイベント駆動のプログラミングが必要です。ExtJSの場合、Ext.util.Observableというクラスをmixinすることで(このようにフレームワークの根本部分でmixinが使われてますので、mixinは重要)、DOM要素以外のクラスでもイベントハンドラを設定できます。このおかげで、イベントを発火させたい対象がDOM要素であるか否かを意識せずに、イベント駆動のプログラミングを実践できます。
ということで、DOM要素(=GUIコンポーネント)以外でもExt.util.Observableをmixinすればイベントハンドラを持てるようになるデモ:
書籍ではrelayEvents()も紹介されていますが、こちらもSencha Fiddleで練習してみました:
なお、Ext.util.Observableのメソッド一覧を見てみますと、"(add|remove)ManagedListener()"と対応する"mon|mun()"メソッドがあります。これと、普通の"(add|remove)Listener()"(on|un())との違いが分からなかったのですが、英語ですが良い記事がありました:
→この記事に出てくるサンプルコードをSencha Fiddleで練習してみました:
こちらの書籍では詳しく書かれていませんが、実際に開発する際は、ExtJSでボタンなどGUIコンポーネントを組み立てる時、どのようなライフサイクルで管理されているか知っておいたほうが良いと思います。
ExtJS5、しかも英語になりますが、ExtJS4から大きくは変わってない模様:
なぜライフサイクルを知っておいたほうが良いかというと、複雑なGUIを構築・管理する際に、必ず「いつレンダリングされるのか」「レンダリングされるタイミングで○○したい」「破棄されるタイミングはいつか」などを気にする必要が出てきます。この時、ライフサイクルがどうなっているか注意できるようになっておくと、解決方法も探しやすいです(実感)。
他に、書籍でちょっと気になったのが、「7.7. 状態管理」というところでExt.state.Providerの紹介です。CookieやlocalStorageで管理できるみたいで、面白そうです。
まだ練習できていないのですが、history APIも出てきていますので、このような状態管理をどう制御するのか、実際のアプリでも色々検討が必要なポイントかな、と思います。
特にSPAですと、この辺りはユーザの使い勝手に直結してきますので、より詳細な調査・検討が必要になる箇所かと思います。
本家
日本代理店
日本語コミュニティ, フォーラム
ドキュメント
使い方:
練習に作ったもの:
最初の一歩、SSH接続オプション ベタ書き:
fab -u ログインID -i SSH秘密鍵ファイル名 -H ホスト名 (fabfile.py)
入門:
細かいTips
他のツールとの比較、連携など
Ansibleと、Ansibleをローカルで動かすにはどうするか、参考:
Ansible勉強・参考メモリンク
AnsibleとChefの比較参考:
RHEL系でOSのインストールを自動化するのに活用されてるKickstartについて
Ubuntuでのkickstartのサンプルと、Ubuntu系列ではPreseedというのがインストール自動化で使えるらしい:
KickstartとAWSの相性はどうだろうか?
勉強中のメモ。(あくまでも個人の意見や見解です)
2014-09追記:
他:
Javaに関するエントリや、役立ちリンクなど。
"Java/"形式に整理する以前の記事:
日記などより:
日記/2014/04/26/業務系文書の自動生成についての予備調査(OIpenXML, OpenDocument, OpenOffice.org, LibreOffice) 関連。
以下、いくつかJavaでWordを書いたり読んだりする記事で、Apache POIと並んで、docx4jが言及されてるので、それなりに有名なのかも。
ExtJS4系での参考リンクのメモ。
注意:4.1 まではgetRowClass()で返すCSSクラス名単体でCSSで指定すればよかった。
.x-mygrid-true { background-color: green !important; }
→ 4.2 になると .x-grid-cell をあわせる必要があるようだ。
.x-mygrid-true .x-grid-cell { background-color: green !important; }
自力で解析した結果:(x-mygrid-true/falseは、booleanカラムに応じてRowのtrのCSSで切り替えているクラス名)
.x-mygrid-true.x-grid-row-over .x-grid-cell { background-color: red !important; } .x-mygrid-true.x-grid-row-focused .x-grid-cell { background-color: green !important; } .x-mygrid-true .x-grid-cell { background-color: yellow !important; } .x-mygrid-false.x-grid-row-over .x-grid-cell { background-color: gray !important; } .x-mygrid-false.x-grid-row-focused .x-grid-cell { background-color: dimgray !important; } .x-mygrid-false .x-grid-cell { background-color: black !important; }
ちょっとクセがあって、
.x-mygrid-false .x-grid-row-focused
はtrタグのclassに同時に設定され、".x-grid-cell"はその中のtdタグのclassに設定される。
.x-mygrid-false .x-grid-row-focused .x-grid-cell {
だと駄目で、同時、というのを上手く指定するには空白分割ではなく、連結する必要があった。
.x-mygrid-false.x-grid-row-focused .x-grid-cell {
getClass()のカスタマイズで実現できる。条件分岐で表示する方にする場合は、通常ならばiconClsで設定するクラス名を返す必要がある。表示しない場合だけ
"x-hide-display"して、表示する場合は何もしてないと、結局何も表示されずに終わる。
例:本来はiconClsで設定するアイコン表示用クラス名を、valueがtrueの場合にgetClass()で返している。
{text: 'warn', xtype: 'actioncolumn', dataIndex: 'booleanField', items: [{ getClass: function(value, metaData, record) { if (value) { return 'fam3-16px-database_delete'; } else { return 'x-hide-display'; } } }]},
.hide-sub-headers .x-group-sub-header { display: none; }
ただし、これをすると、groupしたヘッダ自体ではfilterやソートが使えなくなるので、「カラム4, 5, 6 をまとめる、ただしソート&フィルタはカラム5の値を使う」ような器用な機能まではそのままでは実現できない。