エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

Google Code Jam 2017 予選参加してみました

この記事は攻略記事ではなくただの思い出メモです。 せっかくなので去年同様Clojureでやってみました。 Clojureでの処理 Clojureをコマンドライン実行するためには lein exec hoge.clj 標準入力読み込みは (read-line) 問題を解くときは以下な感じ 実行 lein…

ActiveRecordで複数カラムに対し複数キーワードで探す

割と汎用的かと思ったので載せてみようかと。 orの引数にnilがきたらそのままなのがミソ。 class ActiveRecord::Base def self.search_with_multi(columns:, keywords:) where(columns_keywords_cond(columns, keywords)) end def self.columns_keywords_con…

心機一転

SOFT SKILLS読んでる。 もうそろそろ今年も半分終わってしまうので、心機一転で行こうと思うのであった。

Google Code Jam 2016 予選参加してみました

この記事は攻略記事ではなくただの思い出メモです。 せっかくなのでClojureでやってみました。 Clojureでの処理 Clojureをコマンドライン実行するためには lein exec hoge.clj 標準入力読み込みは (read-line) 問題を解くときは以下な感じ 実行 lein exec ho…

Swift2 nil的なものをStringにキャストしたときにハマった

let cfs:CFString? = nil // nil let s:String = String(cfs) // "nil" nil的なものをキャストすると"nil"になるんですね。

Swift2の正規表現マッチの簡易メソッド

Swiftの正規表現処理はObjective-C同様にとても面倒なので、色々な方が使いやすいように改良していますが、 自分もやってみました。(正規表現のパターンが不正な時はクラッシュします) extension String { private func checkingResults(pattern:String) -…

Swiftのスクリプトで辞書

最近英語を勉強していて、せっかくなので英語勉強ツールを作ろうと思った。 まずそのパーツとして手始めに辞書機能をつくることに。 Macの標準の辞書アプリの機能を使ってみるのが良いかなと思いやってみました。 dict.swift import Foundation import CoreS…

Emacs emacsclientを何気なく使いつつclientで開いた地点をdefault directoryにする

Emacs 起動した場所をdefault directoryにするをemacsclientでもやりたいということで。 これをするとVimとほぼ変わらない起動速度を得ることができました。 Emacsはserverを立ち上げておいて、emacsclientというコマンドで素早く立ち上げることができます。…

Emacs 起動した場所をdefault directoryにする

自分がVimに慣れているというのもあって、常に起動した場所からファイルを参照したい。 以下で実現。 起動時に現在地を環境変数に保存 ファイル呼び出しのたびにそこをデフォルトディレクトリに指定 .zshrc alias e='export EMACS_PWD=`pwd`; emacs' init.el…

Emacs 24からの標準テーマフレームワークで設定

Emacs 24からは標準でカラーテーマを設定する機能があるみたいですが、その設定でハマったのでメモ。 複数の設定方法で設定できるのもEmacs初心者の自分には厄介でした。 まずEmacs24以降の標準用color-themeなのか、以前のcolor-theme用のものかで設定ファ…

Evil tab機能を使えるようにする

自分はVimでよく:tabe とかってやってファイルを開くのでこの機能は是非使えるようにしたい。 evil-tabsというプラグインを作ってくれている方がいました。 これはelscreenというプラグインのキーバインドをラップしてる感じです。 el-getで入れました。 (el…

Evil auto-completeが出た状態で普通にノーマルステートに戻る

LISP系言語をやっていくならEmacsなんでしょうが、何度も挫折を味わってきました。 Evilはそんな僕に力を与えてくれたんです。 Evilは素晴らしいですね。いざとなったらEmacsに戻れますし、EmacsにVimが載っていてどっちも動かせるという感じです。 でも、少…

Objective-C キャメル・スネークケース変換

iOS

超小ネタです。toSnakeCaseは最初の文字が大文字のものにはちゃんと対応していません。 NSString+CamelSnake.m #import "NSString+CamelSnake.h" @implementation NSString (CamelSnake) - (NSString *)toCamelCase { NSMutableString *result = [NSMutableS…

Ruby 条件式で代入をした際のうっかり

ちょっとうっかりしたのでメモ。 変数に値を代入して、その値を判定した後に変数を使いたい場合 [1] pry(main)> if a = 1 > 0 [1] pry(main)* p a [1] pry(main)* end true => true [2] pry(main)> if (a = 1) > 0 [2] pry(main)* p a [2] pry(main)* end 1 …

Rubyのcaseを圧縮

whenの後の条件式のあとは改行しないとエラーになるのでどうしても行数が長くなる (追記: when A then B でいけます。基本的な事だけど知らなかった・・) case key when :foo 1 when :bar 2 else 3 end 条件が文字列かシンボルであれば下の様に書いてみてる…

WindowsのSSL 3.0をコマンドで無効化 (SSL 3.0 POODLE対応)

マイクロソフト セキュリティ アドバイザリ 3009008のWindowsの方のSSLを無効にする方法をコマンドプロンプトで書きました。 やってることはレジストリにファイルを一つ作成しているのみです。 無効の設定ファイルの作成 reg add "HKEY_LOCAL_MACHINE\System…

Clojureで同一キーでhash-mapのリストを作ろうとしたらハマった

下のはいける。 user=> (map #(hash-map :key %) [1 2 3]) ({:key 1} {:key 2} {:key 3}) でも、キーを引数化したら怒られる。 user=> (map #(hash-map %1 %2) :key [1 2 3]) IllegalArgumentException Don't know how to create ISeq from: clojure.lang.Ke…

CocoaPodsエラー diff: /../Podfile.lock: No such file or directory

iOS

以下のようなエラー。 diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: No such file or directory error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. Pods.d…

Windowsでchromeを落としてインストールするバッチファイル

Windowsマシンの設定自動化についてちょこちょこ調べてます。Windowsマシンは仕事でしかほとんど触らないのでなかなか慣れない。。 管理者権限で実行したらchromeのダウンロードからインストールまでやるバッチを作ってみました。powershellでwget的な事をや…

UITextFieldで編集中に別のやつにフォーカスさせると色がヘンになる

iOS

画面上にUITextFieldが複数あって何文字入力したら次のfieldにジャンプする、みたいな事をしたい場合このようにした。 #import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [_first addTarget:self acti…

Ruby Hashのkeyをsymbolに変換する

hashの中のarrayの中にもhashがあったときの事を考えて書きました。 config/initializers/hash.rb class Hash def keys_to_sym each_with_object({}) do |(k, v), hash| hash[k.to_sym] = v.respond_to?(:keys_to_sym) ? v.keys_to_sym : v end end end conf…

ctrl+M で enter

これが凄く快適です。 returnを押すとどうしても「ッターン!」の瞬間に思考の空白ができてしまうので。 打鍵音もかなり小さくなって、今日はキーボードを打っているのかどうか分からないくらいにまで抑えられたかな、と思います。 vimやiTermでは標準でこの…

新言語Swift

いや〜熱いですね。 一応ドキュメントは無料で手には入るんですがNDA的な関係で内容をどこまで書いていいのか。 パッと見はObjective-Cとはまるで違いますね。 自分はObjective-Cからプログラミングに入ったのでObjective-Cが母国語というか、やっぱ読みやす…

iOS 角丸パーツ

iOS

かなり既出でしょうが。 UIViewのサブクラスのdrawRectに角丸処理を書く。 storyboardでも置けばそのまま使えるので、速く作るならradiusが違うクラスとか、button用クラスとかを何個か作っても良いかななどと思ったり。 #import "JOGRoundButton.h" @implem…

更新滞ってる

ちょっと忙しくて更新が・・。 「入門 Webゲーム開発」買った。JavaScriptがまるで分かっていないのでとりあえず動くものを作ってみて流れを感じてみようという事で。 フレームワークの力も感じられそう。 早く写経したい・・・! 入門 Webゲーム開発作者: E…

iOS NSStringで絵文字を含んでいるかを判定

iOS

こちらから、絵文字のNSCharacterSet+EmojisAdditionカテゴリを使わせてもらった。 #import "NSString+isContainAddition.h" #import "NSCharacterSet+EmojisAddition.h" @implementation NSString (isContainAddition) - (BOOL)isContainEmoji { NSCharacte…

UIPageViewControllerでpage内にセットしたvcのviewが37pt縮む件

iOS

何の事は無い、画面下部にpageControllerが表示されていたんですね。 こちらでみてなるほどと。 自分の方ではpageControllerの○の色が見えなくて、ずっと原因が分からず悩んでいました。なんで、中のviewが縮むんだよ、と思って色々試行錯誤し、Transition S…

iOS端末の中に入っているprovisioning profileに関してキャッシュ的なことが起こった

iOS

アプリのテストなどで一度アプリインストール時にprovisioning profileを端末内に入れると、そのままだと、大元のiOS dev centerでそのprovisioning profileをeditしたりして更新したとしても、古いやつがずっと使われる。 さらに、たとえ大元で新しくprovis…

Rails インスタンスが持つインスタンス変数一覧をハッシュで取得

ActiveRecordのattributes的な。 instance_values でできるみたいです。(要ActiveSupport) [1] pry(main)> class Hoge [1] pry(main)* attr_accessor :a, :b, :c [1] pry(main)* end => nil [2] pry(main)> hoge = Hoge.new => #<Hoge:0x007fec4b2859d0> [3] pry(main)> hoge.instan</hoge:0x007fec4b2859d0>…

office365体験版をアカウントに関連づける

メチャクチャ分かりにくかったので。officeは商品の種類とか、ライセンスとか、ユーザーを混乱させようとしているとしか思えない。 管理画面で ユーザとグループ > ユーザを選択 > 鉛筆マーク > ライセンス > Office 365 Small Business Premium 10 ライセン…

Mac renameコマンド

すごく便利ですね〜。 こちら参考にさせてもらいました。 インストールは brew install rename 例えば、現在のディレクトリ内の全部の.pngファイルを@2x.pngにしたいときは find . -not -name '*@2x*' | grep .png | awk -F"/" '{print $2}' | xargs rename …

iOS NavigationBarとTabBarを考慮したUIViewControllerのviewを取得

iOS

viewWillAppearで取得する。 // exist NavigationBar and TabBar - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"self.view %f %f %f %f", self.view.frame.origin.x, self.view.frame.origin.y, } - (void)viewWillAppear:(BOOL)animated { NSLog(@"s…

iOS QuickDialogのひとつのelementsのappearanceをいじったら全部の見栄えが変わってしまう件

iOS

ハマりました。 // NG [self.root elementWithKey:@"hoge"].appearance.backgroundColorEnabled = [UIColor redColor]; これでやると、なぜか他のelementの色も変わっちゃう!(?_?) いろいろデバッグしたりしてかなり彷徨っていたんですが、 // OK QAppearan…

iOS QuickDialogからさらにQuickDialogを開きたい〜!(電波少年風)

iOS

QuickDialogのサブクラスを作って手でうちゃうちゃやるのはあまりよろしくなさそうという事で、カテゴリでやってみました。 これが正解のやり方だとは思っていないので、もっといい方法があれば教えて頂きたいです。 UIViewController+showQuickDialogContro…

自分用時計Mac App作った

Mac

Obsician Menu Barでmenu barを黒くしていると、時計の時刻が見づらくなりまして。 それで、時計だけを表示するMacAppを作ってみました。 この佇まい。 Quitのみ。 Mac Appはあまり作った事がないのですが、UI以外のところはiOSとほとんど同じ感じですね。 …

iOS addSubViewのときに隅とか真ん中に楽に置けるカテゴリ

iOS

ただまんま書いただけなのですが、作っておくととても便利でした。 UIView+adjustSubView.h #import <UIKit/UIKit.h> typedef enum { UIViewAdjustSubViewLeftTop, UIViewAdjustSubViewLeftCenter, UIViewAdjustSubViewLeftButtom, UIViewAdjustSubViewCenterTop, UIViewAdj</uikit/uikit.h>…

iOS 文字数で縦幅が変化するラベルを持つビューを作るカテゴリ

iOS

よく使う機能なのでカテゴリ化して作りました。 最後ceilしてるのはこちらを参考にさせていただきました。 引数のtextはNSStringとNSAttributedStringに対応してます。 ※デカすぎるものを作ると落ちるので注意して下さい。 gist9976186 使うときはこういう感…

ググりまくれるスクリプトを書いた

pod list とか brew cask search とかの内容をいっぱい検索したいなぁと思い。 (open url でブラウザ起動できる必要あり) google search each arg keywords. example: pod lis ... (10件以上のときは確認メッセージが出ます) 使い方 pod list | grep -i web …

キーボードでUIパーツが隠れるのをUIScrollViewにて上にスクロールして回避

iOS

昔からなされている事だとは思いますが、今日初めてその問題に突き当たったので。 Appleの公式のやり方だとなんか動かなかったので少しだけ別のやり方で。 考え方として、見せたいUIパーツの下の部分がキーボードに隠れた時に、隠れた分だけ上に上げる、とい…

UIScrollViewにviewを追加していけるカテゴリ

iOS

作ってみたらかなり重宝してます。 かなりまんま書いてて賢くないソースだし、イレギュラーな使い方とか考慮していないのですが。 add content to UIScrollView, auto calc scrollView' ...

Mac 単語を三本指タップで辞書

凄い!知らなかった。 英語読み上げ機能と合わせて捗りますね。 SafariのReader + 読み上げ + 3本指と、Mac標準のものでも既に凄く快適です。

Vimがステキ

去年の8月からVimを使い始めてようやく慣れてきた。 しかしiOSを作るときにはXcodeを使ってて、まあXcodeも好きなのだけど、Vimっぽい動きをしたいときが多くなってきた。特にデータを切り貼りしたりするときに行単位のRecoding機能を使いたくなる。 Rubyの…

applicationWillEnterForegroundで何かやる場合

iOS

notificationを投げているんだけど、状況によってやりたいことを変えたい。(例えば、ブラウザでの認証後にジャンプして戻ってくる時だけこの処理をするみたいな) もしアプリが起動していなくて、application: didFinishLaunchingWithOptions:が呼ばれれば、…

sign_upのメールに載せたurlの末尾が.だった場合にgmailで開くと値が欠ける件

ユーザ登録のメール認証の為のトークンを作ったりしたときに トークンの末尾が.ではまりました。 メール本文: https://****/confirm?token=○○○○. クリックで開く: https://****/confirm?token=○○○○ に遷移 → 認証失敗 となる。 また、.はURLエンコードの対象…

カラースキーム

iTerm2とvimのカラースキームをひたすらいじってたらこんな時間に。。 fontは教えてもらったsource code pro SemiBold colorはitermもvimもTomorrow-Night-Brightにしました。 かなり見やすくなったかな。

Ransackでグループ間OR検索が分からない件

Ransackは検索にとても便利なGemだけど、複雑な検索の仕方がイマイチ分からない。 ( * || * ) && ( * && * ) みたいな、グループ間がANDな検索しかできないのかな・・・? ( * && * ) || ( * && * ) みたいな事がしたいのだけど。。。 ちなみに前者の検索に…

Rubyアプリケーションプログラミング

12年前の本なのだけれど、立ち読みしてうおっと思って買った。 というのも、自分はwebアプリ作成についてRailsから入ったクチなので、Rails無しでwebアプリを作ってみたいと思ってたところだったから。 Pythonを勉強してみようと思ったけど、まだRubyも使い…

ポリモーフィック関連はアブナい?

参照整合性に違反することに基づいているからだという。 参照整合性はここに書かれている事で担保すると。 Railsでデータベースの不整合をおこさないための設定 多重テーブル継承 エンタープライズRailsに載っていたが、ポリモーフィック関連を使わずに近い…

iOSでポップアップ的に小さい画面を出したいけど・・

iOS

ポップアップ的に小さい画面を出す場合に、その制御を他のUIViewControllerで行いたい場合、画面をstoryboardで作るとうまく行かない。なんでだろう。 nibで作ると普通にポップアップ的に出せる。 PopupViewController *pvc = // [self.storyboard instantia…

eachを使ったら負け

eachを使ったら負け 上記の言葉を会社の人に頂きました。 自分はeachを連打してたのでかなりの負け組だった。 とりあえずeach_with_objectを使ってみた。ひとつひとつ使えるようになっていきたい。