管理者権限でログインしているかどうかをひと目で分かるようにする Redmine プラグインを作った

Redmine の管理者と一般ユーザを分けていると、よくある失敗として、 管理者権限でログインしたままでいることを忘れたままチケットを作成・更新してしまう、 ということがあります。そうすると、チケットの更新者が自分じゃなくて管理者ユーザになってしま…

ステータスバーの文字色を白くする

ios

環境: iOS SDK 8.1 ナビゲーションバーの背景色を変更すると、デフォルトではステータスバーの時刻とかバッテリー残量表示の文字が見づらくなる。 背景色にあった文字色に変更する。 手順 info.plist に以下の行を追加 View controller-based status bar app…

Swift でクラス名の取得

ios

環境: Swift version 1.1 (swift-600.0.56.1) NSStringFromClass を使用すると、 "プロジェクト名.クラス名" という文字列が取得できる。 class TestClass {} NSStringFromClass(TestClass().dynamicType) NSStringFromClass(TestClass)

UITableView をスクロールさせない

ios

環境: iOS SDK 8.1 tableView.scrollEnabled = false

MagicalRecord でシミュレータ実行時に作成された sqlite のデータベースファイルを探す

ios

環境: iOS SDK8.1 MagicalRecord で MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("database.sqlite") のように実行した場合、シミュレータでは ~/Library/Developer/CoreSimulator/Devices/デバイスID 以下に作成される。 デバイス …

UITextField のテキストが変更される時のイベント

ios

環境: iOS SDK 8.1 textField.addTarget(self, action: Selector("textChanged:"), forControlEvents: .EditingChanged) func textChanged(textField: UITextField) { println(textField.text) }

iOS で下バーでタブみたいなやつ

ios

環境: iOS SDK 8.1 こういうやつ UITabBarController を使う。 let controller1 = UIViewController(nibName: nil, bundle: nil) controller1.tabBarItem = UITabBarItem(tabBarSystemItem: .Favorites, tag: 1) let controller2 = UIViewController(nibName…

Swift で Objective-C の @synchronized

環境: Swift version 1.1 (swift-600.0.56.1) クリティカルセクションを作りたいとき、Objective-C の場合は @synchronized(obj) { ... } となるところを Swift の場合は objc_sync_enter(obj) ... objc_sync_exit(obj) とする。 exit 漏れが怖いのでラップ…

shenzhen を使ってコマンドラインで iOS アプリをビルド

環境: shenzhen (0.10.2) インストール $ gem install shenzhen ビルド $ ipa build -w XXXXX.xcworkspace -s スキーマ --embed XXXXX.mobileprovision 確認 $ ipa info XXXXX.ipa

iOS で半透明なモーダルビューを表示する

ios

環境: Swift version 1.1 (swift-600.0.56.1) 自作 UIViewController をモーダルで表示する //SomeViewController view.backgroundColor = UIColor(white: 0.2, alpha: 0.2) //呼び出し側 let controller = SomeViewController() controller.modalPresentati…

Swift のバージョンを確認する

ios

環境: Swift version 1.1 (swift-600.0.56.1) $ xcrun swiftc -version Swift version 1.1 (swift-600.0.56.1) Target: x86_64-apple-darwin14.0.0

UITableView の右スワイプの「削除」の文字を変える

ios

環境: Swift version 1.1 (swift-600.0.56.1) func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String! { return "クリア" }

Xcode6 で SourceKitService Crashed が頻発する場合の対処

ios

SourceKitService Crashed が頻発するとコーディングが阻害されるし、悪い場合は、シンタックスハイライトやコード補完が効かなくなる。 根本的な解決方法は分からない。 とりあえず DerivedData ディレクトリを削除して Xcode を再起動すると改善する。 Xco…

Xcode での開発で trailing whitespace を無くす

ios

Xcode 6.1.1 で確認。 Preferences.. > Text Editing タブ > Editing タブ > While Editing: の Automatically trim trailing whiltespace Incliuding whitespace-only lines にチェックを入れる 。

Spotlight から素早く Things にタスクを追加する Flashlight プラグインを作った

Spotlight用プラグインシステム Flashlight を使って、Things にタスクを追加する Spotlight プラグインを作りました。https://github.com/suer/flashlight-things-plugin 環境 Mac OS X Yosemite Flashlight 0.9.1 セットアップ 1. Flashlight をインストー…

Today Extension がフリーズする

ios

iOS8 で導入された Today Extension を持つアプリを作ってみたが、ある特定の経路でアップデートするとフリーズする。 OS を再起動すると正常に動作する。 作ったアプリが一つだけなので原因が特定できていないけど、以下のような感じ。 フリーズする Deploy…

Elasticsearch のデータを別のサーバに移行する

スナップショットを作成して別のマシンでリストアする手順。 環境 Elasticsearch 1.1.1 移行元サーバ 1 スナップショットディレクトリの指定 $ curl -XPUT 'http://server1:9200/_snapshot/my_backup' -d '{ "type": "fs", "settings": { "location": "スナ…

Heroku に Route53 でルートドメインを割り当てる

Heroku に Route53 で直接ルートドメイン(Apex ドメイン)を割り当てることはできないらしい。 その代わり、以下のドキュメントを参考に S3 のリダイレクト機能と Route53 のエイリアスの機能を組み合わせる。 https://devcenter.heroku.com/articles/route-5…

Redmine 2.5 + Ruby 1.8 環境下で TLS でメールが送れなくなった場合の対処

Ruby 1.8 の環境下で Redmine を 2.5 に上げたら TLS でメールが送れなくなりました。 logs/production.log を見てみると以下のようなメッセージが出力されています。 wrong argument (NilClass)! (Expected kind of OpenSSL::SSL::SSLContext) 原因と以前の…

Redmine に Webhook を追加するプラグインを作った

Redmine のチケット作成・更新にフックして、他のサイトに HTTP で POST する機能を追加するプラグインを作りました。https://github.com/suer/redmine_webhook 機能 プロジェクト毎に POST する先を指定できます。こんな感じの JSON が POST されるようにな…

Redmine のメニューに「すべての活動」へのリンクを追加するプラグインを作った

複数のプロジェクトを兼任する人や、マネージャーはプロジェクトにまたがったアクティビティが見れると便利です。全アクティビティへは プロジェクトの一覧ページの右上の「すべての活動」から行けます。 これをどのページからでも見れるトップメニューにも…

Redmine 2.4 ではチケット更新時のフックポイントがモデルからコントローラに移った

細かい変更だけど、個人的には心待ちにしていた Redmine のアップデートの話。 どんな変更? Redmine 2.4 はスルーしていたのですが、正月の暇な空気の中で眺めてたら、チケット更新時のフックポイントの位置が変更されていました。Defect #15044: Patch for…

bash と curl だけで S3 の Tokyo リージョンにバケットを作る

cosmin/s3-bash がよさげだったのでこれを使う。 環境 CentOS 5 s3-bash (Rev: 85522ba) ローカルに持ってくる $ git clone https://github.com/cosmin/s3-bash.git $ cd s3-bash シークレットアクセスキーファイルを作る $ echo -n "シークレットアクセスキ…

Vagrant の .vagrant.d の場所を変更する

.vagrant.d フォルダを別の場所に変更したい場合は環境変数 VAGRANT_HOME をセットすればいいらしい。 vagrant.d outside of the home folder Windows に msi で入れたら Vagrant の box とかが入っているフォルダが c:/Users/ユーザ名/.vagrant.d になった…

Gitlab, AsakusaSatellite などの開発者向け Rails アプリを Redmine で OAuth 認証するための Omniauth プラグイン作った

Redmine・Gitlab・Jenkins のログインパスワードの管理が大変になったので OAuth 化した - すえひろがりっっっっ! で Redmine を OAuth プロバイダにできました。 Rails 製のクライアントアプリケーション側は Omniauth Strategy を都度 initializers 以下に…

nginx でリバースプロキシ時に Host ヘッダを元のリクエストから受け継ぐ

例えば Jenkins を Tomcat にデプロイしていて nginx からリバースプロキシする場合、 location /jenkins { proxy_pass http://localhost:8080; } みたいにすると Host ヘッダが localhost になる。 そこで無理やり location /jenkins { proxy_set_header Ho…

Redmine・Gitlab・Jenkins のログインパスワードの管理が大変になったので OAuth 化した

開発環境として Gitlab、Jenkins、Redmine をセットで使っているのですが、それぞれにパスワードの設定が必要となって管理が面倒です。アカウントを一つに統合したい。ということでやってみました。 環境 Redmine 2.3.0 Jenkins 1.499 Gitlab 5.2 方針 Redmi…

Chef で rbenv + Passenger の環境を構築する

rbenv + Passenger な環境の構築におおいにハマったのでメモ。 環境 CentOS 5.9 Chef 11.4.4 Berkshelf 1.4.3 Berksfile rbenv と Apache のレシピは Berkshelf で取ってくる。 ここで注意点。 OpsCode Community サイトから取得できる rbenv のレシピ(http:…

msysgit についてきた perl で ack を動かす

環境 Windows 7 git version 1.8.0.msysgit.0 手順 $ curl http://beyondgrep.com/ack-1.96-single-file > "c:/Program Files (x86)/Git/bin/ack" c:/Program Files (x86)/Git/bin/ack.bat を以下の内容で作成する @"C:/Program Files (x86)/Git/bin/perl.ex…

Stoplight に Nagios のアラートを表示する

複数の Jenkins と Travis のビルドの失敗が最速で分かる Stoplight を Heroku にデプロイ - すえひろがりっっっっ! の続き。StoplightのIcinga,Monitプロバイダ書いたよー - cynipeと読む によると簡単に通知元を増やせるそうです。前回も載せた iPad のこ…