ベンチャー企業 CIO: 池谷 義則ブログ&経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

ベンチャー企業 CIO: 池谷 義則ブログ&経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

SKYAVY, INC. CIOの池谷義則のブログ & ベンチャー企業 & 経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

Amebaでブログを始めよう!
Rails4.2を使い始めて数週間です。

TDD(Test-Driven Development)でもそうですが、それ以外でも非常によく使うRailsコンソール。
その時に、オブジェクトが見やすいと便利便利w
入れて損が無いので、オススメです。

ってことで、いくつかGemを紹介します。

http://tagaholic.me/hirb/



上記をGemfileに入れて、$ bundle

hirbは、オブジェクトをテーブルの様に綺麗に表示してくれます。

hirb

ただ、Hirbは起動するのに、pryの中で 



を都度打つ必要があるので、面倒。
なので、ルート・ディレクトリに .pryrc ファイルを作って、そこに



を入れれば、起動時に勝手にHirbをONにしてくれます。

pry-coollineは、コマンドを打っている箇所が随時カラーリングされます。
長いコマンドを打つときなどは、特に重宝。

awesome_print は、以下の様に綺麗に表示してくれます。ただ、 >> ap という独自コマンドが個人的には好きではありませんがw

ap


http://ameblo.jp/5min-programming/entry-11936716152.html
で、アメブロにソースコードを貼り付ける方法を記載しましたが、どうもSyntaxHighlighterは使いにくい・・・
理由は
  1. コードのフォーマットに時間がかかる
  2. ブログを書いている間、「通常表示」「HTML表示」を切り替えると、表示がバグる
  3. ソースコードがどの言語なのかを指定するのが大変
#2の理由が一番なんですが、これが相当煩わしいっ

んで、GitHubのGistをブログに貼り付ける方法を見つけたので、シェア~

参考は、 http://ameblo.jp/satoshi-ssl/entry-11464779395.html


いや、、参考の参考の参考って・・・って感じなので、僕が書くのは割愛した方がいいかなって位ですね。。
頑張っていただいた方々に申し訳ないですが、これらの努力を世に広めるため、僕も書きますっ

さてさて、、、

インストール方法

「ブログ管理」の「設定・管理」から「プラグインの追加」に行き、「フリープラグイン」のタブをクリック。
そこに、以下のコードを貼り付ける。

これだけね。

で、あとは記事の「HTML表示」画面でdivタグを埋め込むだけです。


data-url に、Gistの詳細画面URLを入れるだけ。
もちろん、表示させるには、Gistを公開設定にする必要があります。

また、SyntaxHighlighterでもそうでしたが、限定記事や下書きでは表示されないので、底の部分、、、サイバーさんどうにかしてくれないかな~。。。
ってか、サイバーさんがソースコード貼り付けの機能を実装していないのが驚きw
最近、Ruby on Rails(RoR)の作業をしています。
Rubyも初めてだし、Railsももちろん初めてなわけで、悪戦苦闘w

130個近いテーブル、モデルの作成作業をしている中で、情報共有しようと思ったことです。

通常、何も指定しない場合、idがプライマリーキーとして設定されて、Auto incrementされていきますが、そうするとコンテンツを表示するときに、
http://domain.com/item/100
の用に、IDが表示されてしまう。
(デメリットとしては、競合に「どれだけの投稿があるのか?」等の情報を安易に調べられてしまう)

だからって、StringのSlugを表示するようなモデルでも無い。例えばMessageのようなコンテンツ。
そこで、UUID。
こんな感じの文字列になります。


6bc32341-689f-495e-bfe5-d3d941101f90


12bytesなので、通常のInteger型より大きいので、使う必要がないところでは、パフォーマンス低下になるので使わない方がいいでしょうね。

んで、これをRoRに実装。

まず前提として、PostgreSQLにExtensionを追加

  $ psql server

  server=# CREATE EXTENSION "uuid-ossp";


そして、migrate ファイルをこんな感じへ

class CreateMessageThreads < ActiveRecord::Migration

  def change

    #enable_extension 'uuid-ossp’  # もし、rake コマンドでPostgreSQLへのROOT権限があるのであればこれでもOK

    create_table :documents, id: :uuid do |t|

      t.string :title

      t.string :author

      t.timestamps

    end

  end

end


その時、  $ rake db:migrate で ::UndefinedFunction: ERROR: function uuid_generate_v4() does not exist となるなら、"uuid-ossp"エクステンションが正常に入っていないので、確認を。

作成したテーブルとRelationを組みたい場合はこうです。

class CreateMessages < ActiveRecord::Migration

  def change

    create_table :messages, id: :uuid do |t|

      t.uuid :message_thread_id, index: true, null: false

      t.references :account, index: true, null: false

      t.text :message, null: false

      t.datetime :deleted_at




      t.timestamps null: false

    end

    add_foreign_key :messages, :message_threads

    add_foreign_key :messages, :accounts

  end

end

追記: Postgreへ、管理権限があるユーザーで接続している場合は、
の様に  enable_extension 'uuid-ossp'  をMigrationファイルき記載すれば、都度PostgreSQLにエクステンションを手動で追加せずにすむ



高校時代の2年間を過ごしたニュージーランドで、各家庭に必ず1つはあった「マーマイト」というジャム。
ご存じだろうか。
まー、普通は知らないよねw

イギリス系ではどうやらかなり有名らしく、前述したとおりニュージーランドでは最もポピュラーなジャムの一つ。
イチゴやブルーベリージャムよりポピュラー!

しかも、このマーマイト。酵母を使って野菜を発行させて作るらしいのですわ。だから、かなり栄養価が高いそうで・・・

味は、塩っ気に苦い味。
最初食べたときは、「なんじゃこのまずいのはっ!」と思ったのですが、数回試すうちに虜になること必至。

しかも甘くないので、飽きが来ない!
日々、同じような甘いジャムで、朝食が憂鬱な人にはかなりおすすめです。

んで、ふとしたことから、このマーマイトの存在を思い出して、Amazonで検索したら日本でも購入できるじゃないですかっ!
で、早速購入。
届いた―と思ったら、小さっw
125gってどのくらい?がわからなかったので、とりあえず小さいのを買ったらこんな感じにw



ま、いいけどね~


あと、マーマイトと類似品の「ベジマイト」もあります。
僕は、マーマイト派なのですが、人によっては「俺、ベジマイト派だぜっ」って人もいます。
マーマイトが好きになれなくても、ベジマイトは好きになれるかもしれませんよぉ~


今日は、JavaScriptのValidatorで、Slugのチェックをしませ。

ちなみに、creww.meで使っているJS Validatorは jQuery-Validation-Engine なんです。
ほんで、creww.me内で、ユーザーページはスタートアップページの独自URLの為に、ユーザーがslugを入力する時のチェック。

既存で、slugのvalidatorが無いので、ドキュメントのここを参考に、新しい独自validatorを作成。

"slug": {
  "regex": /^[^\s!@#$%^&*()=+;:'"\[\]\{\}|\\\/<>?,]+$/,
  "alertText": "* 日本語、半角英数字、ハイフン(-)、アンダーバー(_)、ドット(.)のみで入力してください"
},


で、ここにあるように、「
/^[^」の最後の「[^」で、ブラックリスト化しています。
シングルバイト文字のような、半角英数字ならホワイトリスト化の情報がGoogleさんに一杯落ちてたんですが、日本語などのマルチバイト文字列に対応している正規表現がなかなか見つからないので、上記のようなブラックリスト化した正規表現にしました。

今日はこの辺で~