Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

2016-01-01から1年間の記事一覧

railsアプリをunicornでCentOS7のsystemdで立ち上げる時のサービスファイルの書き方

/etc/systemd/systemにalpha.serviceというファイル名で以下の内容を作成する。ファイルに実行権限は不要。 どこか間違っている、過不足等いっぱいあるかも。またアプリはalphaというUnixユーザーで実行するようにしている。 railsバージョンは4.2.2 Databas…

rails mysqlで絵文字がDBに入る場合の注意

railsにてfixturesをloadしようとして次のようなエラーが出た。 ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '\xF0\x9F\x98\x83\xE3\x81...' for column どうやら、UTF8で4バイトになる絵文字が入っているところでエラーになっ…

ruby BCryptダイジェスト

BCryptのrawハッシュ値(データベースのpassword_digestに入る文字列)は以下の4つを$で区切った文字列である。 @version, @cost, @salt, @hash 例えば、 "$2a$10$PqSI0YWw/JHk2zKWRF1ol.5pRtgJKPsJqJa8pvIn4IzatuxY.SPmu" をsplit('$')すると ["", "2a", "10…

ruby コマンドメモ

$ bundle open {gemname} でgemのソースが入ったフォルダをvimで開く 例えば、私の環境で $ bundle open crypt とすると、 vimのnetrwで "~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bcrypt-3.1.11" のフォルダが開かれる。

ruby 文法その5

class HelloWorld attr_accessor :name end セミコロンが付いていて、シンボルになっているのがミソ。 これは、以下のように書くのと同じ class HelloWorld def name @name end def name=(value) @name = value end end ここで@nameはインスタンス変数 引数…

swiftでのmarkコメントの書き方

Objective-Cでは以下のように書いていましたが #pragma mark - UICollectionViewDelegate swiftではこう書きます。 // MARK: - UICollectionViewDelegate もしくは /* * MARK: - UICollectionViewDelegate */

C/C++/ObjC メモリ破壊系バグのつぶし方 その1

メモリ破壊系バグとは メモリ破壊系バグとは、プログラマーが想定して割り当てたメモリ領域のサイズを超えた部分にデータを書き込んでしまい、 プログラムが意図通り動作しなくなるバグのことです。 このバグは以下の特徴を持っています。 再現性が100%では…

swift objc_overrelease_during_dealloc_error

objc_overrelease_during_dealloc_error というエラーでクラッシュしていたんだが、 takeRetainedValue() を takeUnretainedValue() に変えたら落ちなくなった。 retainしすぎていたということか。 swiftでのUnmagedはイマイチ理解できていない。

try! swift 参加レポート

3/2-4 渋谷マークシティにて行われたtry!swiftカンファレンス http://www.tryswiftconf.com に参加してきましたので簡単な感想です。 スピーカー33名(日本人2割)、参加者約500名(日本人8割) という規模のswift言語やApple関連ソフトウェアに関する コミュニ…

swift タイプエイリアス

Type Aliases typealias AudioSample = UInt16 プロトコルのAssociated Typeには特定のプロトコルに準拠することという条件を付けられる。 protocol PBProtocol { typealias PBError: IntegerType } class PBClass: PBProtocol { typealias PBError = Int } …

swift 列挙型

enum CompassPoint { case North case South case East case West } var directionToHead = CompassPoint.West directionToHead = .East directionToHeadは一旦、varで代入されて型が固定されると、次の行以降はdot表現が使える。 Associated Values enum Ba…

swiftで定義した構造体、列挙体はObjective-Cでは使えない

swiftで定義した構造体、列挙体はObjective-Cでは使えないようだ。 使えないもののリストはこちら。 Generics Tuples Enumerations defined in Swift without Int raw value type Structures defined in Swift Top-level functions defined in Swift Global …

swift ジェネリクス、プロトコル

struct Stack<Element> { var items = [Element]() mutating func push(item: Element) { items.append(item) } mutating func pop() -> Element { return items.removeLast() } } このジェネリック構造体を拡張してみる。 ジェネリック型を拡張する際は、extensionの</element>…

swift クロージャ

swiftを久々に触ったら、クロージャの文法を完全に忘れていたので、メモしておく。 Closure Expression Syntax クロージャはこの形をしている。 { (parameters) -> return type in statements } 例えば、このように使う。 let names = ["Chris", "Alex", "Ew…

html編集のためのvim備忘録

vim

emmet.vim 現在位置のタグのコメントアウトする <C-y>/ <title>sample</title><C-y>/ 結果 入力した文字列をタグに変換する。 <C-y>, body<C-y>, 結果 <body></body> netrw d creates a new directory % creates and opens a new file</c-y></c-y></c-y></c-y>

やってはいけないC言語コーディング

10年以上前に書かれたC言語のソースを見ていたら、ダメなコーディングの展覧会のようになっていたので、こういう書き方はしてはいけないという例として書き残しておきます。 1) ファイルの最後に意味のないコメント /**************************************…

swiftをC++11に移植する

なぜか、swiftをC++11に移植しているのですが、思ったより楽でした。 C++11の機能はまだ慣れていないので、メモを残しておきます。 1) クラスメンバの宣言時初期化 class Book { Book() {} float price = 10.0; }; 2) swiftクラスのinitが2つあったとして、…