fkm blog

software開発に関することを書いていきます

program

Ractive.js + Page.js + Webpackのテンプレート(0)

もちろんTypeScriptです。pagejs-webpackの下に作成してます。 github.com 準備 テンプレートなので別のとこにコピーしてから使う。まずは必要なものをインストール $ npm install TypeScriptをインストールしてる場合は、多分次のコマンドが必要。もし忘れ…

JavaScriptのGenerator関数

JavaScriptには処理を途中まで実行し、値をreturnすることのできるGenerator関数を定義することができる。これがあると便利なのは、ゲームでキャラクターを動かす時。例えば「右に10フレーム移動して下に5フレーム動く」という動きはこんな感じで書ける。 cl…

Kotlinでリストの中身を連結した文字列を作る

Kotlinは1つのことをやるのに、いろんな書き方ができてしまう、困った言語(Goに比べて)ということで今回のテーマは、「リストの中身を連結したい」 基準となるコードはこんな感じ。 fun main(args: Array<String>) { val numbers = (1..10000).map{ Integer.toStri</string>…

emacs lispでKii CloudのAPIを叩く

備忘録として。 (setq url-request-method "POST") (setq url-request-extra-headers '(("Content-Type" . "application/json") ("x-kii-appid" . "<APP_ID>") ("x-kii-appkey" . "<APP_KEY>"))) (setq url-request-data "{\"username\":\"demo\",\"password\":\"123456\"}") </app_key></app_id>…

GoのASTをちょっと触ってみる

「やってみた」系の記事はときどきここに書きます.Goはソースファイルを食べさせるとASTにしてくれるライブラリが標準であります. ここまではちょっとぐぐると出てくる. package main import ( "go/parser" "go/token" ) func main() { src := "package mode…

Goのmailgunクライアント

mailgunというサービスがあります. ドメインもっていればTXTレコードとCNAMEを追加するだけで, 無料で10000通/日 メールが送れます(持ってない場合はmailgunが1つ送信用のをくれます)これをGoで叩きたかったのでクライアントライブラリ書いてみました. 後か…

Goのtypeで遊ぶ

こんな関数があったとする. func GetById(userId string) User { } 引数が文字列なので, 間違ってオブジェクトIDを入れてしまうかもしれない. そしてそれはコンパイル時にはわからない. なので, UserIDという型を用意して, 間違いを防ごうと考えた. package …

AppCompat-v7-21.0.2でpaddingが無視される話

5.0未満のデバイスでMaterial Design対応するのに必須となるAppCompat-v7だが, v21.0.2の時点でEditTextなどのpaddingが無視されるバグが報告されてる. Issue 77982 appcompat-v7 can't set padding on EditText or Spinner via xml発生条件は次の通り. AppC…

Golangのhttp/templateをちょっと触ってみた

後でfkmsoft blogにも追加しておきます. 要するにHTMLテンプレートが使えればいいんです テンプレートを用意する こんな感じ. t.htmlとしておきます. 置き換える部分は{{.フィールド名}} <html> <body> <h1>Welcome {{.Name}}</h1> </body> </html> 使ってみる オブジェクトが1つ必要. // main…

TaskQueue作ってみた

今更感あるけど, 必要だったので作ってみた.TaskQueue 簡単な使い方 1. TaskQueueオブジェクトを作る. 型パラメータは各Taskの結果オブジェクトの型 TaskQueue<String> queue = new TaskQueueImpl<String>(); 2. Taskクラスを作る. もちろん無名クラスとして作ってもOK. 各Ta</string></string>…

Goのパッケージの分け方

Goのパッケージの分け方で試行錯誤中なfkmです. Goに限らずかもですが。。サーバーサイドGo(という表現が正しいかどうかは不明)で, こんな感じのパッケージ構成ってどうなんだろう? main.go server | server.go | handler | logic | modelmain.goは, server…

ローテートするWriter

Goのlogは出力先としてio.Writerを与えることができる. なのでos.Fileを開いて渡すとファイルに書いてくれる.でもローテートまではやってくれないので, こんなの書いてみた. type rotateWriter struct { fileName string day int writer io.WriteCloser } fu…

プログラミング言語の指標

Swift最高だ!という方とちょい議論して感じたことをつらつらと. 「プログラミング言語のよさ」みたいなものって, いくつか指標があるよなーと. ぱっと思いつくのだとこんな感じ? 言語仕様のよさ(静的型付け / 動的型付け, lambda式使える! とか, 学習コ…

Google Fit

一通り触ってみてまとめたよhttp://www.fkmsoft.jp/blog/software/android/GoogleFit/index.htmlデモアプリはこちらhttps://github.com/fkmhrk/GoogleFitDemo-Android

nginx + GoのFastCGI

nginxを前段に, Goでサーバーを書いて, FastCGIで動かしてみた. GoでFastCGI net/httpの代わりにnet/http/fcgiを使う. package main import ( "github.com/gorilla/mux" "log" "net" "net/http/fcgi" ) func main() { r := mux.NewRouter() l, _ := net.List…

Goのlog.Fatal()を呼ぶと?

サーバーサイドでlog.Fatal()を呼んだら大変なことになった話. といってもログがでてプロセス止まっちゃったので何事?と思ってソースを読んでみる. func (l *Logger) Fatal(v ...interface{}) { l.Output(2, fmt.Sprint(v...)) os.Exit(1) } 気軽にFatal()…

Goのdatabase/sqlパッケージでコネクションプールを使うには?

結論から先に言ってしまうと, sql.DB構造体がコネクションプールもってます. なので, あんまり考えることなさそう.まずはドキュメントを読んでみる. type DBDB is a database handle representing a pool of zero or more underlying connections. It's safe…

UIScrollViewにauto layout付きカスタムViewを貼ってはまった話

iOSのUIScrollViewはページ単位でスクロールできるので, AndroidのViewPagerのように, 動的にViewを貼り付けて使うこともあると思う. で, 動的に追加するViewをxibファイルでカスタムView化するケースもあると思うのですが, この組み合わせでかなりはまった…

AndroidのLoaderのソースを読む(2)

最後にLoaderでdevliverResult()を呼んでからの動作 public class Loader<D> { public void deliverResult(D data) { if (mListener != null) { mListener.onLoadComplete(this, data); } } } listenerは確かLoaderInfoだったはず. final class LoaderInfo impl</d>…

AndroidのLoaderのソースを読む(1)

LoaderManagerImplを読む. ここにいろいろ実装が入っているはず. LoaderManager.java内にあった. class LoaderManagerImpl extends LoaderManager { LoaderManagerImpl(String who, FragmentActivity activity, boolean started) { mWho = who; mActivity = …

AndroidのLoaderのソースを読む(0)

イマイチ説明不足感の強いAndroidのLoaderのソースを読んでみよう(提案)Loaderを使う時は、LoaderManagerのメソッドを呼ぶところからなので, そこから読んでみる. なんとなくでsupport-v4の実装を読んでみる. public abstract class LoaderManager { publi…

プログラムの書き方(1)

今回はガード句の話. こんなコード, 書いてたりしない? private WeakReference<Activity> mActivityRef; public void onClick(View v) { Activity activity = mActivityRef.get(); if (activity != null) { // activityを触る処理を延々と } } get()メソッドはnullを</activity>…

プログラムの書き方(0)

徒然と書くのでこっちで. CODE COMPLETE 第2版 上 完全なプログラミングを目指してあたりで学んで実践していると思いますが, プログラムの書き方. 変数名を省略しない こんなコードを書く人がいる. Button btn = (Button)root.findViewById(R.id.button_subm…

Backbone.jsのお勉強

とりあえずBackbone.js単体で小さいアプリを作るとこまでできたので, 次はブログにまとめて後から使えるようにする作業. 目次はここ

AdMobのライブラリの更新

今まで, AdMobはjarをぽいっとlibsにいれて使ってましたが, 8月あたりからその方法が禁止になるようです. 今後, AdMobを使いたい場合はGoogle Play Serviceに入っているAdViewなどを使わないといけません移行方法はこちらで, 今直面している問題. Google Pla…

Key-Value Storageっぽいのを作ってみた

AndroidにはSQLiteがありますが, RDBなのでテーブル作ったり列名決めたりと, いろいろ面倒.俺が欲しいはkeyがidのみのストレージだ! というケースがあるので, なんちゃってで実装してみた. 結局SQLiteに入れちゃうので, なんちゃって実装. リポジトリはここ…

iPhoneアプリ開発は初期コストが高い?

周りにiOSアプリ開発者がほとんどいないfkmです. みなさんこんばんは.下記のモデルで, "よし, iOSアプリ作るぞ"と思い立ってから必要となる初期コストを計算してみた. 手元にあるのはWindowsマシン ディスプレイはある iPhone / iPadは持ってない Macを購入…

Android用Java libraryを作る

Android用ライブラリといえばAndroid Library Project. aar参照やproject丸ごとimportで使うやつですな. Android Library Projectのメリットは, リソースを含めることができる点. アプリのビルド時にうまいことリソースをマージしてくれる. でもその代償とし…

Android Library Projectを.m2/repositoryにいれる

正確には, .aarファイルを.m2/repositoryにいれる かも. Android Library Projectを作る Android Studioで普通に作る. 出来上がるものがaarなので, ADTで作るのはおすすめしない。。。 ライブラリプロジェクトのbuild.gradleを修正する 参考にしたのはここ. …

ADTからAndroidStudioに乗り換えるたった1つの理由

もちろんこれ以外にも3つぐらいは乗り換えるべき理由はあるんですが. ADTだと非常に面倒で, AndroidStudioだと簡単にできることテキストエディタ部分をemacs/VisualStudioのように簡単に分割できること!(もちろんキーバインド設定できます)