読者です 読者をやめる 読者になる 読者になる

kotlin tips: 自己を参照される可能性のあるコールバックとか単一処理を複数のコールバックで扱うことについて

※とりあえず五月雨式にメモしておく。結論はまだない。 戻り値方式とクロージャ方式の例 下記の returnValue1.kt は、Model の関数が結果を戻り値で返しています。 // // returnValue1.kt // package returnValue1 import returnValue1.AppendResult.Correct…

AndroidでUIメソッド呼び出しの共通時刻を取得する

概要 UIスレッドから呼び出される処理全体で初期化やバケツリレー無しで共通時刻を用意したいなーという話。 下記のメソッド1~Nすべてでボタン押下時刻を共通時間として取得するとか。 ボタン押下 → onClick()実行 → メソッド1呼び出し → メソッド2呼び出し…

kotlin tips:extension function reference

kotlin のドキュメントに拡張関数参照の方法がさらっと書かれている。 あまりにもさらっと書かれすぎていて一度スルーしてしまったので、例を交えてメモしておくw If we need to use a member of a class, or an extension function, it needs to be qualif…

kotlin小ネタ:Handler#postDelayed()のextension function化

普通に Handler#postDelayed() を利用すると以下のようになり、結構見づらい。 mHandler.postDelayed( { println("postDelayed()") }, 2000) kotlinでは、関数の最終引数が関数の場合には、ラムダ式を括弧の外側に記述できる。 Higher-Order Functions and L…

やる気とかいろいろ

やる気は無いのが前提。 やる気は偶然の幸運。 やる気が必要なことは計画しない。 突然現れる直感は大体信じてOK。*1 迷いは強引な即決か思考停止で対応。*2 集中力の切れた状態やら頭の飽和状態とやらは、往々にして現実逃避。*3 *1:直感は純粋に最適解であ…

kotlin小ネタ:Activity 関連の試行錯誤

Activity を扱う際の実験コード。とりあえず思い付きで作ってみた。 カオスなのでダメ出し歓迎(`・ω・´) /** * Activity を扱う際のいろんなネタを詰め込んでみた実験コード。 * ※書式だけまとめたもので、実際に動くコードではない。 * * ポイントは以下。 * …

kotlin小ネタ:initializer block や property initializer は可能な限り避ける

※あまり深く考えてないのでまだアイデアレベルのメモ。ちゃんと考えないと一般化はできないと思われる。initializer block や property initializer を利用する状況というのは、インスタンスが生成された状態、つまり this が参照できる状態で val/var の初…

kotlin小ネタ:クラス分割メモ

実用性未検証だけどとりあえずメモ。 平面上にメソッドとバッキングフィールドを持つメンバを点として配置する。 メソッドからバッキングフィールドを持つメンバへの参照関係を線として表現する。 相互に到達し得るパスが存在しないグラフ毎に別クラス化を検…

kotlin小ネタ:coding conventions メモ

実際のコーディングで考察した内容を五月雨式にメモ。おいら自身が理解できればOKという最低限の記述。出そろってきたら整理しましょう。 kotlin とか coding conventions とか無関係なメモになってるっすね、、、(´・ω・`) 演算子の優先順位を等価とみなし…

kotlin小ネタ:code arrangement rule メモ

kotlin の code arrangement に関するおいらの独自ルールメモ。IntelliJ IDEA の kotlin の rearrange code 機能については中の人が 2016-11-21付で以下のような回答をしてるので、実装は気長に待つのが良さそうですね。stackoverflow.com以下おいら独自ルー…

kotlin小ネタ:forEach から break っぽいことを行う

このようなコードを無理やり forEach でやろうと思った場合、 for (v in 0..1) { println(v) break } こんな感じになる。 // forEach からの break っぽいことを行う例 fun main(args: Array<String>) { fun foo() { // label は expression に設定する必要があるの</string>…

kotlin小ネタ:elvis operator から return する際ににまとまった処理を書きたい場合

// elvis operator, return, closure の実行値, という組み合わせ。 // この例では return で f2() の値が返る。 val value = next() ?: return run { f1(); f2() } // これでも大丈夫。 val value = next() ?: return { f1(); f2() }()

kotlin小ネタ:expression の値が null の場合のみ expression の値を変えずに処理を行う例

// オリジナル val currentValue = nextValue() if (currentValue == null) finish() // 等価コード1 val currentValue = nextValue().apply { if (this == null) finish() } // 等価コード2 val currentValue = nextValue() ?: { finish(); null }() elvis …

kotlin小ネタ:ある値が null の場合は null を、そうでない場合にはその値を用いて初期化された値を取得するサンプル

class Sample { private var mStringBuilder: StringBuilder? = null // letters が null の場合は null を、そうでない場合は letters.length で初期化された StringBuilder を生成する fun init(letters: String?) { mStringBuilder = letters?.let { Stri…

jsvc経由でTomcatを起動する際のタイムアウト設定

tomcat を jsvc 経由で起動する際に、コンテナ起動時にエラーが発生していなくても exit status が 1 になる現象に遭遇したのでメモ。 原因 tomcat の起動(全warの起動含む)が、jsvc 内部で SERVICE_START_WAIT_TIME 変数として指定された時間内に完了してい…

三項演算子のような if-then-else 処理

三項演算子のような if-then-else 処理 [ testの評価式 ] && 真の場合の処理 || 偽の場合の処理真の場合の例 $ [ "a" = "a" ] && echo "OK" || echo "NG" OK偽の場合の例 $ [ 1 -eq 2 ] && echo "OK" || echo "NG" NG

サブシェル内部の変数を参照しようとして失敗する例とその対策

6つのランダム値を作成し、その中の最大値を得るというスクリプトの例 失敗例 #!/bin/bash # このシェルでランダムな値を6つ作成して、パイプラインで while 文に渡し、 # while 文内部で最大数を取得する。 printf "%s\n" ${RANDOM}{,,,,,} | while read nu…

Muninメモ

参考情報 Munin Guide Munin 2系の本家情報。 Munin Wiki 本家Wiki。もともとはこのWikiがベースで、Munin Guide はここから派生したも。Munin Guide からもこちらへのリンクがそれなりにある。 Instant Munin Plugin Starter プラグイン作成系の書籍。おい…

なんでもメモ

2015-03-08 critical と warning を同時に扱う場合の munin のメール送信用コマンドwarning と critical でメール送信を分けると、両方が混在した場合に2通メールが来て煩わしいので、力技で1通にまとめてみた。munin.conf contact.alert.command mail -s "[…

Android開発用gradle環境 on debian

Windows 環境で NDK を扱うのはめんどくさいので、debian 上に gradle 環境を作成してみました。 OSのインストール OSのインストールは X60sとDebian - Be an Idealistic Realist 等を参考に適当にやりましょう。 javaのインストール java7のインストールを…

先祖クラスのコンストラクタでインスタンスを生成する方法

先祖クラスのコンストラクタでインスタンスを生成するサンプルプログラム import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; public class ConstructorForSerializationExample …

How to manage SQLite's database file names

SQLite の名前空間に関する問題 Android で SQLite を扱う場合、SQLiteOpenHelper を利用するのが一般的だと思いますが、その際にデータベースファイル名を指定する必要があります。*1*2データベースファイル名は同一アプリケーション内部で共有されるため、…

maven central に存在しない 3rd party 製 jar の扱い方

概要 ビルドシステムとして maven を使用している場合に、maven central に存在しない 3rd party 製 jar を扱う方法をいくつか考察してみました。 3rd party に頼んで jar を central repository にアップしてもらう 社内リポジトリに jar を deploy する ロ…

linux-x64用MySQLのインストール

参考情報 最新のディストリビューションはここからチェック http://www.mysql.com/downloads/mysql/ 今回の対象は mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz になります。 mysqlユーザーとグループの作成 groupadd mysql useradd -r -g mysql mysql 設定フ…

linux-x64用Javaのインストール

インストール対象のJavaを確認する http://www.oracle.com/technetwork/java/javase/index.html からダウンロード用のURLを取得する。 今回は http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz を対象とする。 ダウンロード…

さくらのVPSへのDebianのインストール

概要 さくらのVPSにDebianをインストールし、最低限の設定を行います。 OSは Debian 7.0(Wheezy) を使用します。 参考情報 さくらのVPSへのカスタムOS(Debian)のインストール方法 Q:さくらのVPSで「Debian」を利用していますが、回線速度が遅くアクセスに…

MySQLでテーブルとカラムの文字コードを一括変更する

既存のデータベースの文字コードを異なる文字コードに変換した際のメモです。 留意すべき点 CONVERT TO CHARACTER SET を用いれば、比較的容易に DB と DB 内の全テーブルの全カラムの文字コードを変換できます。ただし、いくつか留意すべき点があります。 …

gmaven-pluginの日本語設定

私の手元で軽く動かした限りでは sourceEncoding の設定がうまく効かないようです。JIRAのステータスを見る限りは sourceEndoding 指定はバグ登録されていて既に fixed。${project.build.sourceEncoding} からの設定も対応されているようなのですが、、、。…

DebianとTomcat

Debian に Tomcat7 をインストールする。 事前準備 ビルドする必要があるので、事前にビルドに必要なパッケージを導入しておく。 yes | apt-get install build-essential インストール # 作業ディレクトリの作成 mkdir /tmp/tomcat-installation-working-dir…

X60sとDebianとJava

X60s 上の Debian に Java7 をインストールする。 # 作業ディレクトリの作成 mkdir /tmp/java7-installation-working-dir cd /tmp/java7-installation-working-dir # jdk-7u10-linux-i586.tar.gz のダウンロード wget --no-cookies --header "Cookie: gpw_e2…

X60sとDebianとMySQL

X60s 上の Debian に MySQL をインストールする。 32ビットなので MySQL は mysql-5.5.29-linux2.6-i686 を採用する。 参考情報 最新のディストリビューションはここからチェック http://www.mysql.com/downloads/mysql/ 設定ファイルの配置 /etc/my.cnf を…

Debianインストール直後

X60sとDebianとDebianとWPA-PSKとwpa_supplicantと固定IPに引き続き、インストール後の設定。 Debianのアップデート # resynchronize the package index files from their sources apt-get update # install the newest versions of all packages currently …

DebianとWPA-PSKとwpa_supplicantと固定IP

前回 X60sとDebian では無線 LAN を WEP で接続した。その時は出先で作業を行っていたのだが、仕事場に戻ってみたら無線 LAN が WPA-PSK 方式というオチ o...rzということで、今回は WPA-PSK 方式で設定してみる。 wpa_supplicant のインストール 今回は wpa…

X60sとDebian

先日部屋の片づけをしていたところ、ずいぶん長い間放置されていた X60s を発掘した。メモリは 2.5 GB。ディスクはリカバリ用の工場出荷イメージ領域を除いて 33 GB。 実験用サーバとしてはまだ使えそうだ。ということで、Debian を入れて実験用サーバにする…