サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
twinbird-htn.hatenablog.com
入門シリーズが続いている. CarrierWave使うサンプル多いので, 使わないで実装してみる. Railsは5.1.6 サンプルの内容 掲示板的に メッセージ 画像 のCRUDができるものにする. とりあえず足場を作る CRUD実装自体は目的ではないのでScaffoldで. $ rails g scaffold message message:string $ rails db:migrate とりあえずメッセージ登録ができるようになる. 画像をDBへ保存するか, ファイル保存してパスを保存するか 一般的にはパス保存といわれている気がするし, 迷ったけど今回はDBへ保存する実装にした. 理由は バックアップとリカバリが楽 アクセス制御も楽 特にアクセス制御についてはパスを保存の場合は, どうやってうまく制御するのかがわからなかった. publicに入れてパスを保存というのが一般的なのか
作業しているとgitで追跡したくないファイルがたくさん生成されて,邪魔になる事がよくある. git cleanという一括で削除するコマンドがあった. 使い方 削除する対象を確認する $git clean -n 実際に削除する $git clean -f 上記だとディレクトリは削除対象にならない. 削除する対象を確認する(ディレクトリも対象) $git clean -nd 実際に削除する(ディレクトリも対象) $git clean -fd
昨今の技術動向をガン無視ですが, ここ2,3ヶ月ほど深夜にぼちぼちやっていたのが形になったので. github.com Releaseにインストーラを入れてみました. TravisCIが使えるかと思いましたが, 流石にWinformは無理でした.(VBはサポートしてるんですね) 目的 一応ある程度は作った目的があって ある程度モジュール化された設計ができるかやってみる テスト可能な設計ができるかやってみる データバインディングスタイルで実装してみる 使ったことの無いコントロールを知る インストーラで入れて動くとこまで1人で作ってみる お仕事もほとんどがVB.NET + Winformsなんですけどね. やっぱシステムインテグレーションの業界にいると人売りか業務知識偏重になっちゃって技術面は仕事で伸ばすのは難しいかなと思います. (面白いとこもありますけどね) 仕事でできないなら, 一度自分
0. 始めに CentOS7で試します. UbuntuでUpstartを使った例の延長です. UbuntuでUpstartを使ってプログラムをデーモン化する 1. プログラムを作る プログラムは前回と同様のサンプルを使います. 挨拶するだけの単純なものです. package main import ( "net/http" "fmt" ) func main() { http.HandleFunc("/", helloHandler) http.ListenAndServe(":8080", nil) } func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello\n") } これをhelloというプログラム名でビルドします. $ go build -o hello 2. Unitファイ
書店でInterface 5月号を見つけて, 画像処理が懐かしくなったので. (つい買ってしまった.他にも車載用OSとか面白いしね.) golangにもimageパッケージという2D画像用ライブラリが標準で備わってるようなのでちょっと使ってみる. 1. 概要 golangの他の標準パッケージと同様, このパッケージも最低限の機能しか用意されていないみたいです. The Go Programming Language - Package image サブディレクトリ含めてもそんなにない ざっと見た感じだと, 以下くらいの機能なのかな? アルファ値 色空間や濃淡(グレースケール) RGB CMY Gray 点 矩形 カラーパレット(pallete) 上記の組み合わせ(draw) 画像フォーマットのデコード処理(gif/png/jpeg) Uniformって何.まっさらなとこからやるときに使うの
作りました. 実装は正規表現ゴリゴリでアレですが, とりあえず動きます. github.com サンプル こんなのを書いて. system.erdot // estimate print system # Tables // master customers (顧客) id (ID) INTEGER PRIMARY KEY name (顧客名) VARCHAR(100) NOT NULL offices (自社事業所) id (ID) INTEGER PRIMARY KEY name (事業所名) VARCHAR(100) NOT NULL address1 (住所1) VARCHAR(100) NOT NULL address2 (住所2) VARCHAR(100) NOT NULL tel (電話番号) VARCHAR(30) NOT NULL products (商品) id (ID
まぁ, ドキュメント読めという話なんですが. 一々例を載せたら長くなってしまいました. とはいえ, 僕の様なコピペプログラマにはこれくらいしておいた方が... 準備 まずは有難くパッケージをgo getします. go get github.com/go-sql-driver/mysql 操作方法 では見ていきます. テーブルは以下のようにしましょう. DEPT(部署) キー 列名 意味 型 主キー DNO 部署コード 文字列(2ケタ) DNAME 部署名 文字列(20ケタ) BUDGET 予算 数値(10ケタ, 内小数2ケタ) LAST_UPDATE 最終更新日時 日付 EMP(従業員) キー 列名 意味 型 主キー ENO 従業員コード 文字列(2ケタ) ENAME 従業員名 文字列(20ケタ) 外部キー DNO 部署コード 文字列(2ケタ) SALARY 給与 数値(10ケタ, 内小数
golangは低レベルな処理(バイナリの取り扱いとかね)もちゃんと行うことができる. 基本(byte型を使う) golangは組み込みでbyte型が用意されている. これはその名の通りバイトを扱うための型で, 配列やスライスにすれば単純なバイトストリームを扱える. package main import ( "fmt" ) func main() { b := []byte{0xDe, 0xaD, 0xBe, 0xeF} fmt.Printf("%b\n", b) // 2進表示 fmt.Printf("%d\n", b) // 10進表示 fmt.Printf("%x\n", b) // 16進小文字表示 fmt.Printf("%X\n", b) // 16進大文字表示 } [実行結果] [11011110 10101101 10111110 11101111] [222 173 19
【追記】もうちょっと例が欲しくなったので, その2も書きました golangではテンプレートエンジンが標準で用意されています. なんだけど, ちょっと癖があって僕はすぐにはなじめなかった. まぁ, テンプレートエンジンなんて慣れの問題な気がするけど. 調べながら書いたらめちゃ長くなった. ざっくり概要 golangのテンプレートエンジンはtext/templateパッケージに入っている. Web開発では同じインターフェースを持ったhtml/templateパッケージを利用することになる.(デフォルトでエスケープ処理が行われる) このパッケージのメソッドに, UTF-8のテキストとデータを渡せばいい感じにテキストを生成してくれる. 以下は基本的にtext/templateを利用した説明になるけど, html/templateでもそのまま動くはず.(エスケープされた結果で) 一番簡単な例 一番
使わないから全然覚えられない. とりあえずサンプルを書いて覚えておく. 詳細や思想はdeeeetさんの記事が非常にわかりやすいのでこれ読めばそれでいいと思う. 大雑把な理解 context.Backgroundでcontextを作るか, よそからもらってきたcontextを使って With****メソッドを使ってcontextに意味を持たせる 結果や値はcontextオブジェクトの中に入ってる メソッド With****メソッドは以下がある. メソッド名 用途 WithCancel キャンセル可能にする WithTimeout 一定時間でキャンセルされるようにする WithDeadline 指定時間でキャンセルされるようにする WithValue 値を一緒に引き渡す どれも新しいcontextオブジェクトを返してくれる. メンバ contextのインターフェースは以下のメンバでとてもシンプ
ちょっとしたコマンドとか作る時にWebAPIを触ろうとすると, net/httpをよく使うことになる. テストについてはちょっと調べたんだけどhttp経由のものはやったことがなかった. net/httpはテストについてもnet/http/httptestがサポートしてくれているのでこれを使うことにする. 余談だけど, 標準でなんでも入っているってのは本当に楽でいい. ライブラリをあれこれ探したりランタイムを入れて環境構築するのにはもう疲れてきた. 本質からズレているような気がしてくる. 簡単なサンプルは以下の通り. GETリクエストで挨拶をするだけの関数がある. [sample.go] package main import ( "fmt" "net/http" "io/ioutil" ) func remoteHello(domain string) string { // /greet
前も調べたけど記録してなかったので忘れた.今度はメモっとく. golangで他のプラットフォーム向けにクロスコンパイルするには環境変数を指定してbuildすれば良いらしい. 環境変数は GOOS GOARCH があってそれぞれOSとCPUアーキテクチャを表している. Linux環境でもwindowsの64bitバイナリを作るときには GOOS=windows GOARCH=amd64 go build とすれば良い. 選択できるOSとアーキテクチャについては公式に記載がある. 2016/4/17現在では $GOOS $GOARCH darwin 386 darwin amd64 darwin arm darwin arm64 dragonfly amd64 freebsd 386 freebsd amd64 freebsd arm linux 386 linux amd64 linux a
作った. (追記 2018/1/12) HTTPSの証明書も切れたので公開をやめました。 割と面白かったです。 だって面倒なんだもの チートシートって 便利な割に作るのが面倒. 他人が作ったものはしっくりこない っていうパターンにいつもなるので, 多少は楽が出来るものを作りました. どんなものか Markdownの劣化版みたいな記法で書くと以下の様にチートシートっぽくなります. テーブルタグ書くのが面倒 段組みしたい 1ページで見たい(できるだけスクロールしたくない) いちいち作り直したくない(既存のものをFork -> ちょっと変更で使い回したい) という自分の欲求を満たせるようにしました. 見た目や機能は残念な感じですが, まぁ, 使っていて不便なところから改良するかも. 技術的な覚書 実質ここからがこの記事のメイン. ブックマークと試行錯誤のメモが大量になったのでここに覚書. 入門記
golangで作った.用途はわかる人にはわかる. github.com これは何? 行指向のxlsxファイルの編集ツールです. シェルと合わせて使ってます. インストール go getでどうぞ. go get github.com/twinbird/xl 使い方 まずはサンプルのファイルを $ cat test.txt 5501 5039 3720 980 339 384 78 3117 2935 2296 381 258 140 42 5542 5120 3715 1063 342 351 71 3128 2962 2292 411 259 128 38 5587 5172 3751 1078 343 346 69 3135 2970 2296 415 258 128 38 テキストをxlsxのセルに配置する $ cat test.txt | ./xl.exe -out xxx.xlsx
go言語(golang)はマルチプラットフォームでバイナリを吐けるのでコマンドラインツールを作るにはちょうどいい言語だと思います. 標準パッケージも充実していて,オプションやメッセージを出力するパッケージが標準で準備されています. 当初ググると以下が人気だということだったんですが,僕は割と保守的なので標準パッケージ使います. GitHub - tcnksm/gcli: The easy way to build Golang command-line application. osパッケージを使う 一番基礎的な扱い方はOSパッケージを使う方法でしょう. Cを使ったことがある人なら馴染みある感じです. サンプルソース package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) // => [./flag_samp
作りました. github.com 詳細はgithubのREADMEをどうぞ.(酷い英語ですが) 当初は純lispを作ろうと思ったのでpureという名前ですが, tak関数を動かしたいなど欲が出てきたので 純粋でも何でもなくなってます. GCはありますが, マクロはありません. (私がマクロをちゃんと理解してないので) 作成時の参考文献は一番下に記載するので興味のある方はご覧ください. 以下は駄文です. 作り始めたきっかけ 以前から何か言語処理系を作ってみたいなと思っていました. Brainf*ckはともかく, 作ったことがなかったので. それとは全く別に私は今27才で, 25,27,32というのは個人的に特別な節目になる年齢じゃないかと感じていました. SIerにいると年齢と共にプログラミングする機会が減っていくのでなんとなく腕試ししたくなる事がよくあります. 「プログラマを名乗るならこ
個人的には機能が多すぎると思うのだけど,それでもRedmineは便利な道具です. CentOS7が用意出来たので、設定してみます. ちなみに大筋Redmine公式の通りでよいのですが えらくハマるポイントがあって試行錯誤した結果が以下になります. 最も困ったのがRubyのOpenSSL設定. こんなにハマるとは... あと、下記方法ではSELinuxが無効なので,外部に公開するサーバなんかの場合はきちんと設定したほうが良いかと思います. まずはアカウントを作成 adduser redmine ネットワーク設定 現状のネットワーク設定の確認 $ nmcli dev Device type STATE Connection eth0 ethernet disconnected --- lo loopback unmanaged --- $ nmcli con NAME UUID Type De
いろいろな所に書かれているけど,ハマってしまったので書き残しておく. golangでJSONをパースするにはencoding/jsonを利用すれば良い. 静的言語だけあってちょっと面倒なところがあって,JSONの構造に合わせて前もってstructを定義しておく必要がある. 基本 一番単純な例だと以下のようなJSONを考える. { "name":"twinbird", "age":27, "sex":"man" } これをパースして表示しようとすると以下のようなコードになる. package main import ( "encoding/json" "fmt" ) const ( json1 = ` { "name":"twinbird", "age":27, "sex":"man" }` ) type Person struct { Name string `json:"name"` A
[追記] id:mattnさんのgodmineがあるので, xlsxをコマンドラインから扱うツールを作りました. たぶん組み合わせて使ったほうが使い勝手いいです.たぶんね. golangでRedmineの情報をExcelにするコマンドラインクライアントを作りました. github.com 使い方 準備 RedmineのRESTful APIを利用するので設定が必要です.設定は以下のリンクを参考に. REST API - Redmine インストールはgoが入っていれば下記で大丈夫なはずです. $ go get golang.org/x/text/encoding/japanese $ go get github.com/twinbird/rdm 起動するとRedmineのURLとAPI Keyが求められるので入力してください. (ホームに.rdmファイルを作って記録されます) 機能 プロジ
golangで小さいツールはいろいろ書いてみたけどWebアプリも書いてみようということで作ってみた. github.com 正直途中から飽きてきて,やっつけで作った感が否めない. ある程度機能作って書き直していこうと思っていたけど,ある程度の機能さえ作っていない. 何ができるアプリか ビデオを登録して, 見れます. 説明もつけれます. それだけです. (ログインとかヘルプとかリンクつけてみましたが,ハッタリです) テスト動画にはNHKのクリエイティブライブラリを使わせてもらいました. ライブラリとか 今回は自分に縛りを課していて, サーバサイドは標準ライブラリのみで実装している. (SQLのDriverだけはmattn/go-sqlite3を利用.twtyといいid:mattnさんには感謝.) アプリ自体もSPAとかじゃなくてベーシックなWebアプリ. golangだとWebAPI実装とか
Graphvizとは GraphvizはDot言語という記法で書かれたテキストファイルをグラフ図に変換するツールです. とりあえずwikipediaを. AT&Tが開発し,公開しています. 環境作成 コマンドラインからがお好みの方は # mac $brew install graphviz # ubuntu $sudo aptitude install graphviz 私は面倒なのでChrome拡張を作って使っています. Dot Lang Viewer 会社支給はWindowsなのでコマンドラインとはいささか相性が悪いのです.(msys2入れてますけどね) ためす さて,早速試してみましょう. お好みのテキストファイルを開いて以下を記述してください. ファイル名はsample.txtとしましょう. graph sample { ジャンプ -- 友情; ジャンプ -- 努力; ジャンプ -
このページを最初にブックマークしてみませんか?
『write ahead log』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く