タグ

ブックマーク / blog.livedoor.jp/sasata299 (78)

  • RDSのデータをmysqldumpしてS3に保存する - (゚∀゚)o彡 sasata299's blog

    2014年01月07日13:52 AWS Ruby RDSのデータをmysqldumpしてS3に保存する 弊社ではデータを AWS の RDS を使って管理しています。バックアップは自動で取ってくれるんですが、RDS では残せるバックアップのスナップショット数が決まっているのでもう少し過去のバックアップも取りたい。気軽にバックアップを S3 に保存することは出来ないものか。 追記:14:12 RDS のスナップショットを手動で取ったりすれば良いんですけど、アカウントが悪用されたりして全部消えちゃったら怖いなぁと。そういう背景もあって念のため S3 上にも置いておきたいなぁと思った次第です(*゚∀゚) 追記:14:17 バックアップのスナップショット数増やすことも可能みたいですね。 @sasata299 あとAmazonに申請すればRDSのスナップショットの上限値を増やせるらしいので参考にど

    RDSのデータをmysqldumpしてS3に保存する - (゚∀゚)o彡 sasata299's blog
  • mysqlでCASE文を使ってみる - (゚∀゚)o彡 sasata299's blog

    2008年06月15日00:02 MySQL mysqlでCASE文を使ってみる 僕はいつもDBMSとして、MySQLを使っています。今日は勉強として、CASE文というものを使ってみます。早速ですが、使い方はこんな感じです。 CASE WHEN 条件 THEN 値1 ELSE 値2 END これは便利!( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \ 条件が真だったら、値1が、偽だったら値2が使われます。 こんなテーブル (hogehoge) があったとして、 ----------------- | id | name | ----------------- | 1 | sasaki | | 2 | tanaka | | 3 | satou | | 4 | yamada | | 5 | sasaki | | 6 | nakamura | ----------------- こんな感じ

  • Ansibleを使って誰でも簡単安全にサーバ構築できる仕組みを作る - (゚∀゚)o彡 sasata299's blog

    2014年08月04日11:11 インフラ Ansibleを使って誰でも簡単安全にサーバ構築できる仕組みを作る Ansible って何なの? サーバに対してミドルウェアのインストールや設定等の環境構築を行うことをプロビジョニングと言いますが、その作業を自動化させるためのツールです。プロビジョニングを手動で行うと、手間も掛かるし、どうしてもミスが起こりえます。 その点、Ansible のようなツールを使えば、コマンド一発でプロビジョニングが走り、さらに冪等性(何度実行しても同じ結果になる)も確保されるため、誰でも簡単安全にサーバ構築が出来るのです。 同様のことを行うツールとして、Chef や Puppet がありますが、Ansible はそれらの中でもシンプルなことが特徴です。Chef は以前使ってみようと思い触ってみたのですが、覚えることが多かったりして挫折してしまった。。Ansible

    Ansibleを使って誰でも簡単安全にサーバ構築できる仕組みを作る - (゚∀゚)o彡 sasata299's blog
  • gitの歴史上からpasswordを完全に削除したい - (゚∀゚)o彡 sasata299's blog

    2014年05月19日10:17 Git git歴史上からpasswordを完全に削除したい git で管理しているプロジェクトで「あっ、しまったパスワードが紛れ込んでしまった…!」みたいなことがあって「どうしたらいいんやー><」と思っていたんですが、git filter-branch という最強のコマンドを使えばなんとかなるんですね。 今回は PASSWORD という文字列を含む行を git歴史上から完全に削除するというのをやってみました。sed -e '/xxx/d' が xxx という文字列を含む行を削除 (delete) するコマンドです。 git filter-branch --tree-filter "find . -type f -exec sed -i '' -e '/PASSWORD/d' {} \;" そうすると PASSWORD という文字列を含む行の痕跡が奇麗

    gitの歴史上からpasswordを完全に削除したい - (゚∀゚)o彡 sasata299's blog
    a2ikm
    a2ikm 2014/05/19
    pushしてたら、filter-branchしてからpush -fしかないのかなあ
  • 今更だけどiOSアプリでviewDidLoadとかviewWillAppearとかが呼ばれるタイミングをまとめてみる - (゚∀゚)o彡 sasata299's blog

    2014年03月31日11:04 Objective-C 今更だけどiOSアプリでviewDidLoadとかviewWillAppearとかが呼ばれるタイミングをまとめてみる 最近iOSアプリを作っているので、このブログでもそろそろ Objective-C ネタを出していこうかと思います(*゚∀゚)っ ということで、今回は viewDidLoad や viewWIllDisappearなどの呼ばれるタイミングを見ていきましょうか。それぞれが呼ばれるのはこういうときですよね。 viewDidLoad:インスタンス化された直後(初回に一度のみ) viewWillAppear:画面が表示される直前 viewDidAppear:画面が表示された直後 viewWillDisappear:別の画面に遷移する直前 viewDidDisappear:別の画面に遷移した直後 さて、試してみるためにStory

    今更だけどiOSアプリでviewDidLoadとかviewWillAppearとかが呼ばれるタイミングをまとめてみる - (゚∀゚)o彡 sasata299's blog
  • RailsからObjective-Cのplist形式でデータを出力する - (゚∀゚)o彡 sasata299's blog

    2014年03月28日14:15 Ruby Objective-C RailsからObjective-Cのplist形式でデータを出力する iOSアプリ用のマスターデータとして plist にデータを持たせたかったのでやってみました。 実際にやってみると builder っていう gem を使えば簡単でした。jbuilder のXML版です。出力したいデータ(例えば今回の場合だと @languages)だけ用意して、 xml.instruct! :xml, version: '1.0' xml.declare! :DOCTYPE, :plist, :PUBLIC, '-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd' xml.plist(version: '1.0') do xml.ar

    RailsからObjective-Cのplist形式でデータを出力する - (゚∀゚)o彡 sasata299's blog
    a2ikm
    a2ikm 2014/03/28
    builderってそういうgemだったのか。to_plistするだけならplist gemが便利そう http://plist.rubyforge.org/
  • pt-online-schema-changeを利用して無停止でスキーマ変更 - (゚∀゚)o彡 sasata299's blog

    2013年12月24日10:39 MySQL pt-online-schema-changeを利用して無停止でスキーマ変更 この記事は MySQL Casual Advent Calender 2013 の24日目です。 世間ではクリス○ス・イブですが、箱根駅伝が待ち遠しいですね!!今年はどの大学が優勝するのでしょうか!?シード権争いも見逃せませんっ!!━ヽ(・∀・)ノ━(∀・ノ)━(・ノ )━ヽ( )ノ━( ヽ・)━(ヽ・∀)━ヽ(・∀・)ノ━ 、、さて、今回は pt-online-schema-change を使ってみた話です。どうしてこれを使うことになったの経緯は以下をご覧ください。 - MySQLでカラムやインデックスの追加、削除をするときのロックの話など - 昨日の流れ - Togetterまとめ pt-online-schema-change を使うと何が嬉しいのか pt-on

    pt-online-schema-changeを利用して無停止でスキーマ変更 - (゚∀゚)o彡 sasata299's blog
  • MySQLでカラムやインデックスの追加、削除をするときのロックの話など - (゚∀゚)o彡 sasata299's blog

    2013年12月12日14:03 MySQL MySQLでカラムやインデックスの追加、削除をするときのロックの話など すっかり2013年も終わりに近づいてきましたね。さて、今回はMySQLでカラムやインデックスの追加、削除をするときに知っておいた方がいいかなーと思った注意点の話です。 カラムやインデックスの追加、削除を行う際にはテーブルが共有ロックされる まず、カラムやインデックスの追加、削除といったいわゆる ALTER TABLE に相当する処理を行うとテーブルが共有ロック(読み込みのみ受け付け、更新処理は受け付けないというロック)されるという話です。 この辺の話は @nippondanji さんが詳しく書かれています。 漢(オトコ)のコンピュータ道: ALTER TABLEを上手に使いこなそう。 1. テーブルをTL_WRITE_ALLOW_READロックする。このロックは特殊なロック

    a2ikm
    a2ikm 2013/12/12
  • MySQLでインデックスを使って高速化するならCovering Indexが使えそう - (゚∀゚)o彡 sasata299's blog

    2009年10月28日09:33 MySQL MySQLでインデックスを使って高速化するならCovering Indexが使えそう Linux-DB システム構築/運用入門 (DB Magazine SELECTION) 著者:松信 嘉範 販売元:翔泳社 発売日:2009-09-17 おすすめ度: クチコミを見る 最近、このを読んでいます。非常に面白いし、参考になります〜。中でもインデックスについての記事が特に興味深かったので簡単にまとめてみます。 前提 ・インデックスは検索性能には効果があるが、更新性能は落ちてしまう ・MyISAM と InnoDB ではインデックスの構造が違う ・インデックスは B+Tree インデックスと呼ばれ、ルート、ブランチ、リーフの階層構造になっている ・インデックスはソートされた状態で作成されている まずは MyISAM と InnoDB でのインデックス

    a2ikm
    a2ikm 2013/11/07
  • turbolinksを使うときに気をつけるべきたった一つのこと - (゚∀゚)o彡 sasata299's blog

    2013年10月10日14:48 JavaScript Ruby turbolinksを使うときに気をつけるべきたった一つのこと さて、今更ですが、turbolinks とは pjax(Ajaxで要素を動的に変えつつ、pushStateでURLも変更しちゃう)をRailsで簡単に利用出来るようにしたものです。 pjaxを使えば、Ajaxと違ってURLもちゃんと変わるし、ブラウザの戻るだって普通に使えるからとても便利です。毎回ページ全部を評価してまるっと書き換えるんじゃなくて、必要と部分だけを入れ替えるので、レスポンスだって高速になります。 このturbolinksに関してはいろんな人が記事を書いてくれているので詳細はそちらを見ていただくとして、 Rails 4のturbolinksについて最低でも知っておきたい事 | KRAY Inc Rails4でturbolinksを謳歌するためのまと

  • ActiveRecordのソースコードを読む - (゚∀゚)o彡 sasata299's blog

    2010年06月25日00:18 Ruby ActiveRecordのソースコードを読む ハマったのがきっかけで ActiveRecord 2.3.5 のソースコードを少し読んだので簡単にまとめてみます。なお、ActiveRecord では 2.2 からコネクションプーリングが導入されています。 コネクションプーリングとは? データベースにアクセスする時、アクセスのたびに接続(コネクション)を確立するのではなく、あらかじめ一定数のコネクションを確立しておき、それを使い回す手法。データベースアクセスの負荷を減らすために用いられる。 それを踏まえつつ、検索をする場合の処理を追っていきます。例えば Hoge.find(:all, ...) とかしたらどうなるんでしょうか。 あ、その前に ActiveRecord 使うときって establish_connection が必ず呼ばれます。Rails

  • Ajaxの処理が完了したのになぜかajax:completeが発火しないときの話 - (゚∀゚)o彡 sasata299's blog

    2013年08月28日17:53 JavaScript Ruby Ajaxの処理が完了したのになぜかajax:completeが発火しないときの話 例えば削除リンクを用意して、それクリックしたら要素がAjaxで削除されるみたいな処理の場合にハマったのでそういう悲しいことが他の人には起こらないように書いておきます。 削除リンクはこんな感じ。 = link_to 'Destroy', comment_path(@comment), method: :delete, remote: true, data: { confirm: 'Are you sure?' } リンクをクリックするとAjaxでDELETEリクエストがこのアクションに送られるとします。 def destroy @comment.destroy end これでとりあえず削除は出来るようになりました。ただ、そのときにこの要素自体も消

    a2ikm
    a2ikm 2013/08/28
    ][ajax][trouble][tips]
  • factory_girl で最低限知っておきたい4つの使い方 - (゚∀゚)o彡 sasata299's blog

    2013年08月22日13:26 Ruby factory_girl で最低限知っておきたい4つの使い方 みなさん、テストを書くときには Fixture Replacement として何を使ってますか?一番メジャーなところだと factory_girl でしょうか。machinist も有名ですね。シンタックスの違いのようなので基的にはどちらでも良さそうです。 参考(stackoverflowMachinist vs FactoryGirl - pros and cons In other words, both are extremely similar, just with a different default syntax. 今回は(僕が factory_girl4.2.0 を使ってるので)factory_girl4.2.0 についての話です。 インストール まずインストールし

  • いまさら聞けない!? accepts_nested_attributes_forの使い方 - (゚∀゚)o彡 sasata299's blog

    2013年08月20日10:29 Ruby いまさら聞けない!? accepts_nested_attributes_forの使い方 Railsのaccepts_nested_attributes_forを使い方を簡単に。 例えばBlogとArticleで1対多の関係の場合、Blogの作成時にArticleもまとめて作ろうとするときってありますよね。そういうときの話です。 まず、モデルでaccepts_nested_attributes_forを宣言し、 class Blog < ActiveRecord::Base has_many :articles accepts_nested_attributes_for :articles # これ! end class Article < ActiveRecord::Base belongs_to :blog end コントローラでは事前にAr

    a2ikm
    a2ikm 2013/08/20
    buildをループで回しておけばその数だけ作られるのかー。fields_forをループで複数回呼び出してた。
  • RailsのStrong Parametersで弾かれたときにすぐに気付けるようにしてみる - (゚∀゚)o彡 sasata299's blog

    2013年08月12日11:25 Ruby RailsのStrong Parametersで弾かれたときにすぐに気付けるようにしてみる Rails4 を使ってると Strong Parameters で特定のパラメーターが弾かれていてハマることがあります。セキュリティ的に安全になったので素晴らしいんですが、いかんせん慣れていないせいか特定のパラメーターが弾かれていても気付かないことが多くて。。そこで、すぐに気付けるように色付けしてくれる colorize_unpermitted_parameters っていう gem を作ってみました。 使い方はこんな感じ。以下を Gemfile に追加して bundle install するだけ。 gem 'colorize_unpermitted_parameters' Strong Parameters で弾かれると Unpermitted para

  • fogを使ってスポットインスタンスを簡単に起動/終了する - (゚∀゚)o彡 sasata299's blog

    2013年05月28日17:52 fogを使ってスポットインスタンスを簡単に起動/終了する 最近ちょくちょくスポットインスタンスを利用するんですが、いちいちブラウザ立ち上げてぽちぽちやったりするのはめんどくさいです。また、AMIを指定してスポットリクエスト投げてるんですが、このAMIをちょくちょく変更してたので、それを都度確認するのが手間だったり。 というわけで、スポットインスタンスを楽に起動したり終了したりできるようなちょっとしたスクリプトを fog を使って書いてみました。これ、いろんなクラウドサービスに対応していて、AWSはその内の1つという感じみたいですね。こんなこと書かれてた。 fog is the Ruby cloud services library, top to bottom インスタンスの起動/終了はよく載ってるんですけどスポットインスタンスに関しての情報はあんまり無い

    a2ikm
    a2ikm 2013/05/28
  • 実際のサイト上で動作するチュートリアルが簡単に作れるIntro.jsが便利すぎる件 - (゚∀゚)o彡 sasata299's blog

    2013年05月08日18:21 JavaScript 実際のサイト上で動作するチュートリアルが簡単に作れるIntro.jsが便利すぎる件 さて、先日簡単なチュートリアル作ろうと思ったんですが、どうやるのが良いのかなーと思って悩んでました。キャプチャ取ってそこに説明文を書いて…ってしてもいいんですけど、キャプチャだと一部分なのでサイト上のどの辺なのかわかりにくかったり、サイト側は変更したのにキャプチャが古いままとかになったりしちゃいますよね>< とか思って探してみたらこちらの Intro.js が便利だったので紹介してみます。 さて、この Intro.js を使うとですね、サイト上で動作するチュートリアルを簡単に作れるんですよ。使い方も簡単で、動作させたい要素に対して data-intro (表示する説明文) と data-step (チュートリアルの何番目に表示するか) を指定します。チ

    a2ikm
    a2ikm 2013/05/08
    「これがささたつです」
  • Redisでランキング機能を実装してみる - (゚∀゚)o彡 sasata299's blog

    2013年04月24日13:26 NoSQL Ruby Redisでランキング機能を実装してみる Redis を触ってると楽しくてニヤニヤしてしまう今日この頃です、こんにちは。 読み書きのパフォーマンス的には memcached とよく似てる感じかなーと思いますが、データが消えない(永続化)、さまざまなデータ型を持っていて用途によって使い分けられる、データ操作がアトミック、など、Redis には魅力的な特徴があります。 今回は Redis を使ってちょっとしたランキング機能を実装してみる話でも書いてみます。 Redisの環境準備 まずは Redis をインストールします。Mac だったら homebrew を使うと良いでしょう。 $ brew update $ brew install redis Redis の起動自体は非常に簡単で、このコマンドを実行するだけです。 redis-serv

  • MySQLで日付扱うときに知っとくと便利な関数 - (゚∀゚)o彡 sasata299's blog

    2013年03月04日10:43 MySQL MySQLで日付扱うときに知っとくと便利な関数 今回のネタは、MySQLで「会員登録してから特定のアクションをするまでどのくらい時間かかってるんだろう」とか「24時間以内に特定のアクションをしたユーザを知りたい」みたいなときにどうすればいいんだ!?っていう話です。 ちょっとした分析とかで使えるんじゃないですかね。 仮に会員登録した日時を created_at、特定のアクションした日時を actioned_at としましょう。 会員登録してから特定のアクションをするまでの時間を知りたい 例えばこんなデータがあったとします。 mysql> SELECT created_at, updated_at FROM tables WHERE id = 1; +---------------------+---------------------+ | cr

  • 今さらだけどMySQLのパーティショニング機能を試してみた - (゚∀゚)o彡 sasata299's blog

    2013年03月21日18:11 MySQL 今さらだけどMySQLのパーティショニング機能を試してみた 最近は花粉が飛んでて辛い季節ですがみなさまいかがお過ごしでしょうか。でももうちょっと我慢すればサクラの季節ですよ〜。花見良いですよね、飲みたいだけですが。 ・・さて、今回はちょっと必要になったので、MySQLのパーティショニング機能なるものを試してみました。存在は知ってたけど、実際に試してみたことは無かった…。 パーティショニングとは? これはどういうものかと言うと、MySQL5.1から使えるようになった機能で、ひとつのテーブルのデータを条件によって複数の領域(パーティション)に振り分けて管理することができる、というものです。例えば日別にデータを別々のパーティションに振り分けたり。 パーティショニングするとデータの削除が高速だったり(通常は削除ってものすっごい遅いけど、特定のパーティシ

    a2ikm
    a2ikm 2013/04/21
    そんな長く使われないだろうと思って1,2年ぶんだけ確保しておいたら、意外と5,6年運用されることがあるので、余裕持って作っておいた方がいい