woshidan's loose leaf

ぼんやり勉強しています

iOS9.0のシミュレータでローカルホストへ接続した時、NSPOSIXErrorDomainになる

開発用にダミーサーバへ接続したらやたらエラーになるので調べたところ、iOS9.0でシミュレータでlocalhostへ接続した場合だけに下記のエラーが出るみたいでした。 Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" UserInfo={NSErrorFai…

bashで引数の配列の一つ後の要素を取り出す

即席で作ったシェルスクリプトのオプションの自前解析がしたくて。。 #!/bin/bash i=0 for OPT in "$@" do echo "index: $i OPT: $OPT OPTの一個後ろの要素 ${@:$(expr $i + 2):1}" # $i + 1 でないのは@の先頭は全要素を出力するため i=$(expr $i + 1) done…

Athenaのテーブル定義にファイル中に存在しない列を定義した場合の振る舞いについて

後からAthenaのテーブル定義に列を追加したい、みたいな場合に気になったので、メモ。 テーブル定義に存在する列で検索対象データ内で型が違うものは怒られますが、テーブル定義に存在して検索対象のデータに存在しない列についてはNULL扱いみたいでした。 …

先週の反省会

いまの日時 [NSDate date] 日付を扱うには NSCalendaer, 決まったフォーマットで文章にしたい場合は NSDateFormatter NSDateFormatter にセットする DateFormat の文字列には時間に関係しない文字列( yyyy, MM, dd みたいなもの以外 )が含まれている場合、 […

リモートのタグのコミットが欲しいときは git ls-remote --tags

git

$ git ls-remote --tags From git@github.com:woshidan/tag-test.git srcdiep0r4vns19wth7aoy399qv2or8or64zrkwd refs/tags/1.0.0 51eow33h7d87xiye3uunrcb6vl2hieourjd1pzy4 refs/tags/1.0.0^{} // git checkout refs/tags 1.0.0 で飛ぶコミット ubg7kxcgqo…

BitBucketにgitでアクセス、あるいは新しいサイトでssh認証するときの鍵の登録と確認の手順

https://qiita.com/yyosuke/items/986dabc9906674e2ea97 を参考にSSHの公開鍵をBitBucketに登録。 ~/.ssh/config に bitbucket.org に当該の秘密鍵を使ってアクセスするように設定する。 # サイトごとに鍵を分けた方が良い。。。 Host bitbucket.org HostNam…

`NS_SWIFT_NAME` マクロでObjective-CのコードがSwiftからどう見えるか規定できる

Objective-Cで書いたメソッドのシグネチャはSwiftから呼び出す時にメソッド名の一部の単語がパラメータ名の一部へ変換されるものがある。 // Objective-C - (void)addToBox:(Item *)item; // Swift 2.3 addToBox(item) // Swift 3.0 add(toBox: item) この変…

Swift3でCountdownLatchを作る、あるいはSemaphoreのtimeoutをSwift3で書く

テストの都合でラッチが欲しかったので、GCDのSemaphoreのラッパークラスを書こうと思ったんですね。 それで、 https://github.com/zhuhaow/CountdownLatch を参考にすれば割と簡単では! と思ったんですが、GCDの記法がSwift3で変わりすぎていて死ぬかと思…

計数型セマフォについて

http://woshidan.hatenadiary.jp/entry/2017/08/27/005353 で使い方の勉強をした気がするんですが意味がよくわかってなかったので。 計数型セマフォは「チケットを配ってチケットをもらえたスレッドは処理を先へ進めることができる」みたいなもの。 ここから…

iOSのUIをコードで追加して配置する

5回ググって書く気が失せたのでBlogged. // https://qiita.com/i_terasaka/items/2cf7d0f7146f32c3f2c1#%E5%8F%96%E5%BE%97%E6%96%B9%E6%B3%95 let button = UIButton(type: UIButtonType.system) button.frame = CGRect(x: 180, y: 50, width: 100, height:…

幅優先探索と深さ優先探索で経路を探す様子をざっくりアニメにした

幅優先探索 深さ優先探索 参考 http://www.hongo.wide.ad.jp/~jo2lxq/dm/lecture/07.pdf

iOSでBundleファイルを扱う

.bundle 拡張子のついたフォルダーを用意 その下にファイルを置く .bundle 拡張子のついたファイルをXCode上で追加したいプロジェクトに追加 下記のように NSString や NSData, UIImage などの関数でデータを読み込む NSString* filePath = [NSString string…

今日のAWS

terraform ちょっとだけ触りました qiita.com qiita.com resource "aws_s3_bucket", "woshidan-terrafom-test" { # 追加する種類のリソース, リソース名 # s3の場合 bucket = "woshidan-terrafom-test" path = "/" acl = "private" # acl = "..." で設定して…

Cocos2d-x用の日本語対応フォントファイルをGlyph Designer2を使って書き出し

Glyph Designer 2 の入手 Glyph Designer - A Bitmap Font Generator for Mac · 71Squared よりDLした後、ライセンス(月900円~)を購入してアクティベイトキーを入力。 日本語フォントの追加 【cocos2d/unity3d】簡単に日本語表示用のフォントが作れる「Glyph…

esaやGitHubに検証結果貼りつけたいが、 tableタグや img タグなど書くのが面倒な時用のスニペット

esaやGitHubに検証結果貼りつけたいが、 img タグなど書くのが面倒な時用のスニペット。 出力用コード require 'yaml' require 'erb' puts ARGV[0] file = File.open ARGV[0] raw_str = file.read @tests = YAML.load(raw_str) template_path = File.expand_…

XCodeのRun Scriptを試しに触ってみる

iOS用アプリケーション、ライブラリのビルド前後にちょっと作業がしたい場合、XCodeの Run Script でシェル(やシェル経由で起動できる各種言語のプログラム)を起動させることができます。 今日はちょっと試してみました。 簡単なスクリプトの実行 # hello.sh…

今日のAWS

AWS ELB オンプレでいうロードバランサ 配下のインスタンスのヘルスチェックやそれに基づいた振り分けの停止/再開・暗号化/復号化(SSL)機能あり ELBのメリット 複数AZに対して分散を行える。1つのAZがオフラインになった場合でももうひとつのAZで処理を続け…

iOSアプリをxcodebuildでビルドする(途中)

Appiumの前段階として、Simulatorなどにインストールするビルド済みのAppファイル 拡張子を変更したものが .ipa ファイル https://developer.apple.com/jp/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html ht…

今日のbash

& ... コマンドをバックグラウンドで実行する 参考: http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230589 例 $ heavy_command& case 文 ... 他の言語のswitch と同じ 参考: http://shellscript.sunone.me/case.html case 値 in パターン1 ) 処理1;;…

会社のrubyのバージョンが2.4.0以降にあげられないので `Array#-` と同等のスニペットをおいておく

irb(main):010:0> class Array irb(main):011:1> def - other irb(main):012:2> copy = self.dup irb(main):013:2> other.each do |other_array_item| irb(main):014:3* copy.delete other_array_item irb(main):015:3> end irb(main):016:2> copy irb(main)…

自作クラスのテスト用にComparableモジュールと宇宙船演算子を使って同じオブジェクトか比較しやすくする

rubyでちょっとした処理を担当する自作クラスのテストをするとき、同じオブジェクトがどうかの比較する際、 assert_equal expect_obj.hash_value, actual_obj.hash_value # hash_valueはオブジェクトのidではないオブジェクトに特有の値 というような式をよ…

rubyでライブラリなどを書くとき、Rakefileと相対パスのrequireを使ってクラスの取得やテストをやりやすくする

+---+ lib | +-+ some_module | +-+-- a_processor | | +-- order.rb | | +-- item.rb | +-- b_processor | | +-- order.rb | | +-- item.rb | +-- composer.rb # composerは a_processor, b_processor 以下のクラスを必要とする +---+ test # ここから一括…

gitのローカルリポジトリからお目当のタグを抽出する

今日は時間がないので渾身かも、と思ったコードに数行コメントつけてPOST! シェルは便利なんだけどシェルの結果の文字列を気軽に処理したい時、ruby書いたことある人にとってはrubyがとても楽 rubyだとシェルのコマンドを %x( command ) などで実行できる ru…

AWS CLIの設定ファイルにて名前付きプロファイルを利用して手軽にAWS CLIのIAMユーザを切り替える

普段業務でAWS CLIを使っているため、業務本番用のアカウントとちょっと個人の調査用のアカウントを分けて使いたいわけですが*1、 aws configure コマンドで設定できるアカウントは一つだけです。 これではちょっと調査をするたびにクレデンシャル情報を引っ…

AWSのCLIで各種リソースやサービスにアクセスするためにIAMでアクセスキーを発行する

AWSのAthenaクライアント aws-sdk-athena を使ってみようとしたら、Athenaクライアントは aws cli を利用していて、これを利用するために IAM でAWSアカウントにアクセスするユーザを作る必要があったので手順メモ。 ちなみに IAM は Identity and Access Ma…

整形されたJSON文字列を見たい時、minifyしたい時、jqコマンドがとても便利だったという話

昨日頑張って sed をかじったため sed -e '1,10s/\([}\]]\),/\1,\ /g' -e '1,10s/:{/&\ /g' -e '1,10s/e,/&,\ /g' test.json みたいな涙ぐましい事してたんですが、検索してたら jq ってコマンドで簡単にできるらしいです。 まずは単に整形する 例えばこんな…

いい加減わからない感じが強いのでsedについて少し調べてみた

sedとは sedは stream editor の略で、主にファイルかファイルの指定がなければ標準入出力を読んで何かしたら入力を修正したら標準出力へ書き込んでくれる、といった使い方が主なスクリプト言語です。 sedの記法 コマンドを一つだけ入力する場合とそうでない…

利用条件が緩いzlibライセンスについて

ライブラリのライセンス表記についてはアプリやライブラリを開発していると悩ましいところで、使ってはいけなさそうなLPGL系を避けながら雑にすべてのライブラリのライセンス表示ページを作ったりして誤魔化しがちです。 しかし、中には著作者の偽装はしては…

S3に入っているファイルの状況を調べるのにCloudWatchが便利、という話

S3に限った話ではないのですが、ちょっと追加で調べたいなというときにメトリクスやその間隔を調整できて便利でした。まる。 S3は上部メニューの分析から各バケットのメトリクスを確認できるのですが、このメトリクス表示する期間がかなり限定された相対期間…

配列の中のハッシュの要素で検索したい

cross join と UNNEST を利用する。 UNNEST はSQLの中では UNNEST 関数は、指定された配列の各エレメントにつき 1 行が含まれる結果表を戻す ものだそうです。 前に書いた Athenaの記事 で少し調べたのですが、覚えられてなかったので上記を踏まえてもう一回…