サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
ichitcltk.hustle.ne.jp
プログラミングにおける式と文とは 混同しやすくて見落とされがちな式と文の違い。 いまさらながら、「式とは何か?」,「文とは何か?」について調べてみた。 式とは 式 (プログラミング) - Wikipedia 式(しき、expression)とは、プログラミングにおいて、言語によって定められた優先順位や結びつきの規定に則って評価される値、変数、演算子、関数の組み合わせである。数学における式と同様、式は評価された値を持つ。 文とは 文 (プログラミング) - Wikipedia プログラムにおける文(ぶん、statement)とは、コンピュータプログラミング言語によるプログラムを構成するもののひとつで、一般に手続きを表すものである。 文の種類(意味)は、だいたいの類似はあるが、詳細はそれぞれのプログラミング言語によって異なる。 う~ん、表現がなんとも難しい。 式(Expression)と文(S
継承と多重継承とミックスイン 9.5. 継承 - 9. クラス — Python 2.7ja1 documentation pythonは多重継承にも対応しており 9.5.1. 多重継承 - 9. クラス — Python 2.7ja1 documentation 多重継承には菱形継承問題が。 組込み関数superには菱形継承問題への対応が。 菱形継承問題 - Wikipedia 2.1 以前の Python では、多重継承に対し、深さ優先-左から右の順でクラスのリストを生成する。Python 2.2 で導入され Python 3 では統一された、新スタイルクラス[1]では、全てのクラスは共通の基底クラス object から派生させるため、菱形継承への対処が重要になった。この時に同時に導入された順序は 2.2 でのみの採用にとどまったためここでは説明しない[2]。Python 2.3 以降
markdownでHTMLのidやクラスなどの属性を指定 初回公開: 最終更新:2018/01/01 通常、markdownではHTMLのid属性やclass属性などの属性を指定する事ができない。 しいて指定しようとすると、markdownのドキュメントの中でhtmlを直書きするしかない。 ところがPHP Markdown ExtraのSpecial Attributesの機能を使うと、なんとmarkdownでHTMLのid属性やclass属性そして任意の他の属性も指定できる。 Sublime Text3のOmniMarkupPreviewerプラグインにて動作を確認。 【 目次 】
MarkdownでHTMLを簡単に - Sublime Tex 編 初回公開: 最終更新:2018/01/01 【 目次 】 「Sublime Tex」にMarkdownを使うためののプラグインを入れてみた。 プラグインを探す Windowsでも使えそうなプラグインをクグってみる。 Sublime Text で Markdown を快適にする3つのパッケージ - 情報系大学生のWebメモ [捗]Windowsでもいけます!Sublime Text 3でMarkdownを快適に入力するためのプラグインを5つ紹介 | 捗りあん 上記を参考にインストールしたのが以下のプラグイン。 OmniMarkupPreviewer - Markdown をプレビュー Monokai Extended - Markdown をシンタックスハイライト Markdown Extended - Markdown 内
Window環境でのPerlスクリプトの実行などにUNIXぽいシェルが欲しくなって、「Unix like」なtoolを調べてみた。 VMWareを使ってWindowsにVirtualな環境でLinuxを動かせない事もないが、Windowsのコマンドラインでもイケてるツールが欲しい。 ここ(Windows で使える Unix コマンドラインツール※1)に、ほとんどのツールへのリンクがそろっている。 が...、同じようなツールがいろいろあって、どれをインストールしたら良いか迷ってしまう。 私はヘビィーなUNIXユーザではないのでCygwinを入れるのは大袈裟過ぎるし、msysはPleiadesの「Pleiades All in One eclipse」についてくるので(c/c++とeclipseと... - 愚鈍人)、それを使ってもいいのだが、 単品で使えるUnixコマンド集はないかなァ。 U
拡張メソッドの記事の中で、 拡張メソッドはstaticクラスに実装すると述べた。 では、そのstaticクラスとは何だろうというのが今回のテーマである。 class宣言の前にstaticを付けると、staticクラス(静的クラス)になる。 クラスのメンバーにstaticキーワードを指定すると、インスタンスでは無くクラスに付随するメンバー(クラスメソッド、クラス変数)としてアクセスできる。 これは、javaでもおなじみの事である。 しかし、javaとは異なり、class宣言の前にstaticを指定するとstaticクラスとなり、クラスにstaticなメンバー以外のメンバーを実装できないように強制する事ができる。 staticなメンバー以外のメンバーを持てないという事は、インスタンスを作成しても使い道が無いので、staticクラスではインスタンスを作成する事ができない。 逆に言うと、インスタン
リスト1の19行目を削除して、text1だけにlayout_weight属性を指定すると、余白部分をtext1だけで独占する事になる。 LinearLayoutのorientation属性をhorizontalに,TextViewを横方向に配置して、 layout_weightありなしの画面を比較すると、以下のようになる。 weightSum属性-分け合う部分の合計を指定 親ウィジェットにweightSum属性を指定すると、余白部分の合計値を指定できる。 子ウィジェットは、その合計値に対してlayout_weightで指定した割合で、余白部分を分け合うことになる。 次の例では、余白部分の合計値を5として、2つのTextViewで余白部分を1対2で分け合うので、余白部分が2余ることになる。 リスト2 コードによるweightの指定 リスト2のレイアウトを、コードを使って実現すると以下のように
内部クラスとは、クラスの内部にクラスを定義する機能である。 クラスの内部にクラスを定義することにより、、クラス間の関係をクラスの継承関係とはまた別の意味で、従属関係,親子関係で表現したい時に便利。 内部クラスにprivate修飾子を付ける事により、他のクラスからアクセスできないようにクラスを隠蔽するこができる。 c#の内部クラスは「入れ子にされた型」と呼ばれ、型の内部に型を定義できるという位置付けになる。 内部クラスを多重にネストする事もできる。 C#の内部クラスはjavaと違って単純である。 クラスの中にクラスをただ定義するだけ。 内部クラスの例を以下に示す。 リスト1(Program.cs) 内部クラスの継承 クラスを継承する事により、サブクラスからスーパクラスの内部クラスにアクセスできるようになる。 以下の例は、リスト1のコードを修正して、内部クラスを含むクラスOuterClassを
後でサンプルコードを示すが、設定メソッドの第1引数には0から始まる列番号を示す引数を指定する。 第2引数には、trueまたはfalseを指定する。 取得メソッドは、引数として列番号を示すint型の数値を指定する。 stretchColumns-列を伸ばす stretchは筋肉ストレッチのように「伸ばす」という意味である。 リスト1の実行画面のように画面に余白がある場合、stretchColumnsを指定するとTableLayoutが画面の横幅いっぱいに表示されるように、 指定した列を引き伸ばして表示してくれる。 以下はリスト1のmain.xmlを修正して、TableLayoutにstretchColumns属性を指定して列0と2の2つの列幅を広げて表示する例である。 リスト3-stretchColumnsの例(リスト1のmain.xmlを修正・抜粋) このプログラムを実行すると、以下のよう
Google Visualization API はデータソースから簡単にWebページに図を表示できる。 以下では、わかり易いように表示される図つまりVisualizationオブジェクトをチャートと呼ぶ事にします。 チャートを表示する まずは、2009年の即席めんの市場占有率のグラムを表示する簡単なプログラムの例を以下に示す。 占有率の値はネットからパクッてきたものなので実際に合っているかは定かではない。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-31j"> <ti
RelativeLayoutは、名前のとおり相対的にウィジェットの配置をおこなうレイアウトである。 このレイアウトを調べていて、相対位置を指定するパラメータがいろいろとあって、違いを把握するのに苦労してしまった。 パラメータはいろいろとあるのだが、「何に対して相対的なのか?」,「上下の位置関係は?」,「左右の位置関係は?」 を、分類してみるとわかりやすくなるように思う。 親ウィジェットに対する相対位置を指定する 以下のパラメータを使って、親ウィジェットに対する相対位置を指定して、ウィジェットの配置をおこなうことができる。 横軸の位置を指定するパラメーター。 左側に配置:layout_alignParentLeft 中央に配置:layout_centerHorizontal 右側に配置:layout_alignParentRight 縦軸の位置を指定するパラメーター。 上側に配置:layou
ウィジェットのxml属性にパディングを指定する、レイアウトファイルの例を以下に示す。 リスト1-(main.xml) このプログラムを実行すると、以下のような画面が表示される。 外側の水色の隙間は、LinearLayout内部のpadding領域を示している。 左,上,右,下のパディング設定によって、どのように表示されるかが確認できる。 以下のコードは、リスト1のレイアウトファイルの各ウィジェットのパディングの値を取得して、Logに表示するプログラムの例である。 リスト2(PaddingSample1Activity.java) このプログラムを実行して、「padding値をLogに表示」ボタンを押下すると、 LogCatビューは下図のように表示される。 padding値を指定していないtvNoneとbuttonのウィジェットのpadding値を比較すると、 幅,高さをfill_paren
Gravityという聞き慣れない言葉は、重力とか引力とかいう意味である。 Gravityを指定すると、引力で引っ張られるようにウィジェットを特定の方向に寄せて配置することができる。 Gravityには、ウィジェットの内部に対する配置を指定するgravity属性と、 親ウィジェットに対するウィジェットの配置を指定するlayout_gravity属性の2種類があるので、 この違いを把握して使い分ける必要がある。 gravity属性-ウィジェットの内部に対する配置を指定する 以下は、コンテンツビューとして指定したLinearLayoutの内部に配置するウィジェットに、 gravity属性を適用するレイアウトファイルの例である。 リスト1(main.xml) このプログラムを実行すると、以下のような画面が表示される。 LinearLayout内部に配置された2つのTextViewが、gravity
他のアプリケーションのファイルにアクセスするには、以下の方法がある。 アプリケーションが所有するファイルを、他のアプリケーションからアクセス可能にするには以下の方法がある。 他のアプリケーション(ユーザ)がアクセスできるように、ファイルのアクセスモード(アクセス権)を指定する。 アプリケーション間で同一のLinuxユーザIDを指定する。 ファイルのアクセスモードの指定 「data」デレクトリ内のアプリケーション専用のファイルへのアクセス 「ファイルアクセス」で説明したように、アプリケーションの「data」デレクトリ内にアプリケーション専用のファイルを作成して、 そのファイルに対して読み書きをおこなうことができる。 このファイルの作成時に、ファイルのアクセスモードを指定することができる。 アクセスモードは通常、MODE_PRIVATEを指定するが、MODE_WORLD_READABLE,MO
invisibleとgoneはどちらも非表示であるが、goneの場合はウィジェットの表示領域が確保されない点が異なる。 コードを使ってvisibilityの値を指定する場合には、上記、表の定数列のViewクラスで定義されている定数を使う事になる。 以下は、3つのvisibility属性をTextViewに指定し、 その後にButtonを配置したxmlレイアウトファイルの例である。 リスト1-レイアウトファイル(main.xml) このプログラムを実行すると、以下のような画面が表示される。 この画面をみると、visibleと表示されているTextViewの他にもう一個分のTextViewの領域が確保されているのがわかる。 Activityに以下のプログラムを記述して、リスト1のそれぞれのTextViewの幅と高さがどのように確保されているかを確認してみる。 リスト2(VisibleSampl
setContentViewとaddContentView ActivityのContentViewを設定するには、おなじみのsetContentViewメソッドを使うが、 addContentViewというあまり見かけないメソッドもある。 addContentViewメソッドを使うと、Activity画面に複数のContentViewを重ね合わせて表示させる事ができる。 以下に、その例を示す。 リスト1_1(ViewTree1Activity.java) リスト1_2(main.xml) リスト1_3(main2.xml) 実行画面 main.xmlとmain2.xmlの2つのレイアウトファイルにButtonを1つずづ配置し、 このレイアウトファイルを使う2つのContentViewを重ね合わせて表示させている。 それぞれのButtonをクリックすると、それに対応したonClickイベン
FrameLayoutは、後に配置したウィジェットが先に配置したウィジェットの上に重ね合わせて表示される。 透過色を使って背景画像に上書きする形で、 下のレイヤーから上のレイヤーまで何階層かに渡って画像を合成して表示させるのに便利かな。 次の例は、FrameLayoutを使って大きさの異なるボタンを重ね合わせて表示する、xmlレイアウトファイルの例である。 リスト1(main.xml) このプログラムを実行すると、以下のような画面が表示される。 FrameLayoutの内部に最初に配置したbutton1ボタンが最背面に、 2つ目に配置したbutton2ボタンがbutton1ボタンの前面に、 最後に配置したbutton3ボタンが更にbutton2ボタンの前面にと、 後に配置したウィジェットほど前面に表示されているのがわかる。 動的にウィジェットの重ね合わせの順番を変更する。 FrameLay
これから、何回かに渡って、ウィジェット(Viewクラス)の配置とレイアウトについてみていく。 レイアウトコンテナ 「AndroidでGUI - 愚鈍人」で述べたように、ActivityのContentViewには通常、ViewGroupクラスのサブクラスを配置する。 ViewGroupクラスのサブクラスはレイアウトと呼ばれ、以下のようなクラスが存在する。 LinearLayoutクラス FrameLayoutクラス RelativeLayoutクラス TableLayoutクラス それぞれのレイアウトクラスには、その内部にウィジェットを配置するためのクラスとして、 以下のようなViewGroup.LayoutParamsを継承した各レイアウト専用のLayoutParamsクラスが用意されていて、 基本的には、この専用のLayoutParamsクラスを使ってウィジェットを配置する。 Line
Preferenceクラスをカスタマイズ Preferenceクラスを継承して、独自のPreference部品をつくることもできるようなので、挑戦してみた。 作成したPreferenceは、下図のようにListPreferenceを横に表示させたような感じで、 ラジオボタンを3つ表示して、その中からどれか1つを選択するという、あまり実用性のないものですが...。 この「三択Preference」に表示するラジオボタンのテキストを指定するために、 leftText,centerText,rightText属性というxml属性をattrs.xmlに定義する。 リスト11(1)-カスタムPreferenceためのに独自の属性を定義(attrs.xml) 「三択Preference」に、ウィジェットを配置するためのレイアウトを定義。 リスト11(2)-「三択Preference」のViewのレイア
フォーカスとタッチモード Androidのフォーカスの制御は、タッチモードがからんでいてわかりずらい。 タッチモードについては、「l. タッチモード - ソフトウェア技術ドキュメントを勝手に翻訳」を参照。 非タッチモード時とタッチモード時で、異なるAPIが存在する。 Activity画面にTextViewと3つのEditViewとButtonを配置する、以下のようなレイアウトファイルを作成する。 リスト1(main.xml) このプログラムを実行して、各ウィジェットをタッチ(クリック)した場合のフォーカスの移動を確認してみる。 TextViewをタッチしてもフォーカスは、TextViewに移動しない。 EditTextの場合は、タッチする事でフォーカスを移動する事ができる。 Buttonの場合にはタッチした瞬間、一時的にフォーカスが移動するが、その後、タッチ前のフォーカスの位置に戻ってしま
Androidには、Preference(プリファレンス)と呼ばれるアプリケーションの設定データを扱うための機能が、あらかじめ組み込まれている。 アプリケーションの設定データは、Windowアプリケーションではiniファイルが、javaアプリケーションではプロパティファイルが従来から使われているが、 最近のアプリケーションでは、どのプラットフォームでもxmlファイルが使われる傾向にある。 Androidもxml形式で設定データを保存する。 このPreferenceの機能を使って、以下の事が実現できる。 GUI画面を操作して、データを設定する。 androidでは、設定データを操作する標準のGUI部品が用意されており、 これを使う事で、異なるアプリケーションでも同じような操作画面を使って、設定データをGUIで変更できる画面を、簡単につくる事ができる。 設定画面からではなく、プログラムから設定
androidのファイルにアクセスするには、javaの標準のAPIを使う事もできるが、 アプリケーション配下のファイルにアクセスするための、android独自のAPIが用意されている。 アプリケーション配下のファイル格納領域としては以下の3種類がある。 「data」デレクトリ 「assets」デレクトリ 「raw」デレクトリ また、AndroidのOSはLinuxであり、アクセス権限があるため、どのデレクトリにもアクセスできるわけではないが、アプリケーション配下外のデレクトリのファイルであっても、 SDカードなどのアクセスが許されているデレクトリであれば、javaの標準のファイルアクセスAPIを使ってアクセス可能である。 それぞれのファイルアクセスの方法について、順番にみていくことにする。 「data」デレクトリのファイルにアクセス(ContextWrapperクラスのメソッド) andr
前回は、Preference部品として「EditTextPreference」のみを使った設定画面の例を示したが、 Preference部品は他にも幾つか存在する。 Preferenceクラスを継承したクラス Preference部品を示すPreferenceクラスを継承したクラスについ、みていくことにする。 PreferenceActivity画面に配置できる設定画面の構成部品は、Preferenceクラスを継承したクラスである。 Preference部品のクラスの継承関係を図示すると以下のようになる。 別画面に表示 図中の背景色が赤色で表示されている、PreferenceGroupクラスとDialogPreferenceは抽象クラスであり、そのクラス自身を配置する事はできない。 Preferenceクラス PreferenceクラスはPreferenceクラスのベースとなるクラスであり
Preference部品間に依存関係を持たせたり,イベントを設定したりと、いろいろな使い方ができる。 Preferenceの依存関係 Preference部品間に、依存関係を持たせることができる。 前回のリスト3(1)のレイアウトファイルをさらに修正して、依存関係を設定してみる。 リスト4-リスト3(1)のレイアウトファイルに依存関係を指定(my_preference.xml) このプログラムを実行すると、CheckBoxPreferenceがチェックされているかどうかにより、 RingtonePreferenceの設定が選択できるかどうかが、変化する。 依存関係を指定するには、21,44行目のようにandroid:dependency属性に依存先のPreferenceのキー値を指定する。 14行目のCheckBoxのandroid:disableDependentsState属性の値をt
SAStrutsでのAjaxを使った簡単なサンプルは「Super Agile Strutsチュートリアル」(sa-struts-tutorial/src/main/java/tutorial/action/AjaxAction.java)にある。 seaserの「機能リファレンス」にも説明が載っている。 ここではこの例をもう少し発展させて、SAStrutsのJSPページのHTML出力をJavaScriptよりAjaxで取得して、画面遷移をする事無しに入力ページの一部に表示する例を紹介する。 また、入力データに誤りがある場合はSAStrutsの検証の機能を使って、エラーメッセージも一緒にAjaxで取得する事にする。 ここで面白いのはSAStrutsのActionやFormの仕組みをそのまま利用してJSPカスタムタグの出力をJavaScriptで取得して表示できる事である。 入力ページの修正
前回のイベントの記事 に関して、書き残した部分があったのでちょっと補足を加える。 無名クラスからの、その無名クラスを包含する外部の値へのアクセス アンドロイドに限らず、javaの無名クラス一般に言えることであるが、 無名クラスからその無名クラスを包含する外部の値にアクセスするための、ちょっとしたトピックをとりあげる。 無名クラスを定義している外部のメソッド内のローカル変数へのアクセス 無名クラス内のメソッドから、その無名クラスを定義している外部のメソッド内のローカル変数 へアクセスする事はできない。 例えば, 以下のコードでは29行目でView.OnClickListenerを継承する無名クラスのonClickメソッド内から、 その無名クラスを定義しているonCreateメソッド内のローカル変数tvにアクセスしようとしているため、 コンパイルエラーとなる。 このような場合の解決策として、変
ここでは、アンドロイド・プログラミングについてのちょっとした短いトピックをとりあげる。 今後、何かちょっとした面白いトピックがあれば、この記事に随時追加していきたい。 タイトルバーを表示しない。 アクティビティのタイトルバーを表示しないようにするには、 requestWindowFeature(Window.FEATURE_NO_TITLE)を実行する。 注意する点は、setContentViewメソッドを実行する前でないと効果がない。 以下にサンプルプログラムを示す。 このプログラムを実行すると、以下のようにタイトルバーの無い画面が表示される。 「CharSequence」ってなに? アンドロイドのプログラムをみていると、時々CharSequenceという型が出てくる。 初めてみたときは、これって何だろうと思ってしまった。 CharSequenceはアンドロイド固有のクラスではなく、もと
前回までに、AlertDialogクラス,Dialogクラスとみてきた。 今回は、それ以外の以下の3つのダイアログクラスについてみていく。 ProgressDialog プログラムの進行状況を示すのに使われるダイアログ DatePickerDialog 日付を選択するめに使われるダイアログ TimePickerDialog 時刻を選択するめに使われるダイアログ 3つともAlertDialogクラスを継承している。 ProgressDialog ProgressDialogは、プログラムの進行状況を示すのに使われるダイアログである。 まず、サンプルコードを以下に示す。 このプログラムを実行してボタンを押すと、 新しいスレッドが起動して、total変数の値が1から100まで変化する。 この時、ProgressDialogも表示されて、total変数が変化する状況を確認する事ができる。 以下に、
抽象クラスDrawableを継承したクラスを使って、図形を描画する事もでできます。 Drawableクラスを継承したクラスには様々なものがあり、正直なところ、把握しきれていません。 ここでは、とりあえず、ShapeDrawableとBitmapDrawableを用いた図形の描画について、述べる事にします。 Drawableオブジェクトを使うと、図形をオブジェクトとして、どの図形も同じように、アクセスする事ができます。 例えば、どの図形も同じようにsetBoundsメソッドを使って、大きさを自由に伸縮できます。 ShapeDrawableとBitmapDrawable ShapeDrawableを使うと、Shapeクラスを継承したクラスの図形を描画する事ができます。 Shapeを継承したクラスには、以下のものがあります。 RectShape 矩形図形を示す。 RoundRectShape 角
次のページ
このページを最初にブックマークしてみませんか?
『ichitcltk.hustle.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く