サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Switch 2
higelog.brassworks.jp
プラグインやテーマを含めるとWordPressの脆弱性は毎日のように出てくるものなので、情報にしっかりキャッチアップしておく必要がある。 さすがに毎日張り付いて情報を収集するのは厳しいが、WPScanやithemes.comのニュースレターを購読すれば月一や週一の十分な頻度で簡単に脆弱性情報を知ることができる。 WPScan https://wpscan.com/ ユーザー登録してログインしてSubscribe to Newsletterするとメールで脆弱性レポートが送られてくる。 基本は毎月1日の配信で、前月に発見されたWordPress本体、プラグインやテーマ脆弱性のリストが含まれる。 加えて非常にクリティカルな脆弱性の場合はこの月イチのレポートとは別に速報的なお知らせが来る。 プラグイン WPScanプラグインをインストールすると、運用中のWordPressの脆弱性をリアルタイムにま
MBPのバタフライキーボードとTouch Barに絶望して乗り換え先のWindowsノートを探したメモ。 外部キーボードで使い始めたら割と快適なので結局買わなそうなのだがせっかく調べたので。 絶対条件 まずは以下の条件で絞った。 15インチディスプレイ 4Kディスプレイ 32GBメモリ(換装や増設で32GB以上にできれば元はそれ以下でもOK) SSD NVMeで1TB以上(換装や増設で1TB以上にできれば元はそれ以下でもOK) USB-Cポート(できれば2個以上) おのずとプレミアムノートとかクリエイターズノート、ゲーミングノートとか呼ばれているクラスになり、かなり数が絞られる。価格もお高くなるが仕事の道具なのでまあ。 4Kにこだわるのは表示の見やすさから。 メモリは16GBでも十分実用になるとは思うが、最近はいっぱいいっぱいになることも珍しくなくなってきたので数年から5年程度使うことを考
PAY.JPはクレジット決済やクレジット定期課金を簡単にアプリやサイトに導入できるサービス。 ドキュメントがよく整備されててだいたいドキュメントを読めば解決する。 決済サービスは色々とあるのでベストなのかは分からないが、ほかに使ったことあるGMO-PGなんかに比べると断然シンプルで使いやすい。 GMO-PGは対応している支払い方法がたくさんあるというメリットがある(それが実装が複雑になるデメリットの元でもある)が、クレジットのみで良ければGMO-PGを選ぶ理由はないかと。 実装例 カード情報の入力フォーム カード情報入力フォームは以下のタグを埋め込めば良い。 <script src="https://checkout.pay.jp/" class="payjp-button" data-key="{{payjp_pubkey}}"></script> iframeのモーダルなカード情報の入
色々と開発環境を整理したくて3年くらい前に触ってみたきりだったDockerに再入門。 既存のVagrantで構築していた開発環境、vm.boxで指定しているイメージがダウンロードできなくなっていたり、Chefでプロビジョニングしていたところが動かなくなっていたので、直すより新しく作り直した方が早いかなと言うのがきっかけ。 前に試したときはDocker Compose的なものがなく(見つけられなかっただけかもしれないけど)、公式のコンテナも少なかったので、まだ本格的に使うには色々辛みがあるなと結論づけてそっとじしたのだった。 以下つらつらとメモ。 VagrantとDockerの使い分けについて 開発環境として定番のVagrantとの使い分けについては以下のページが簡潔でよくまとまっていて参考になる。 個人開発環境をvagrantで建てるべきか、dockerで建てるべきか 個人的には何かサーバ
WordPress開発をする際のバージョン管理について考えてみたが、ざっくりふたつのパターンがあると思う。 WordPressまるごと テーマ毎/プラグイン毎 WordPressまるごと WordPressのファイル一式をバージョン管理システムの管理化に置く方法。 その配下でテーマやプラグインもいっしょに開発する。 単なるウェブサイト開発ではなく、WordPressをベースにウェブアプリケーションを構築するようなケースで手堅くやりたい場合に適している。 メリットとしては WordPress本体や既成プラグインのバージョンを確実に固定できる WordPress本体や既成プラグインに入れた修正を管理できる テーマやプラグインを複数に分けて開発している場合でもリポジトリがひとつで済む 本格的なデプロイシステムを構築しやすい といった点が挙げられる。 まずWordPressのバージョンアップで問題
公式ドキュメントのAdding a Sensu handlerのページの「A real world example」の項を見てその通りに行えばOK。 ハンドラーの準備 必要なファイルは以下の三つ。 /etc/sensu/handlers/mailer.rb /etc/sensu/conf.d/mailer.json /etc/sensu/conf.d/handler_mailer.json /etc/sensu/conf.d/handler_mailer.json は /etc/sensu/conf.d/handlers/mailer.json でも可。sensu-chefのsensu_handlerで作ると後者になる。 /etc/sensu/handlers/mailer.rb Githubのsensu-community-pluginsの中にあるmailer.rbを使う。 /etc/s
昨年秋頃から年明けにかけてRailsで顧客のサービスをひとつ作った 久々のチーム開発で。チーム人数は3名。 せっかくなので使ったツールややり方などを備忘録的に残しておく。次いつまたチーム開発する機会があるのか知らんけど。 実践したこと プルリクベースの開発 Webサービス開発現場から / 近頃の開発のやり方 ・・・ Github と Pull Request とコードレビュー 上記のやり方が面白そうだったので試してみた。 Githubを使っていれば拍子抜けするほど簡単に流れに乗ることができた。 Git力が足りないので最初は少し大変だったが、馴れてくると細かくブランチを切ってフィーチャーごとに対応するということが開発のテンポを良くしてくれた。 コードレビューはイージーミスによるバグや既存のコードと大きく流れの違うコードが混ざるのを未然に食い止める事ができたりと、一定の成果はあった。 一方でい
既存のサーバーにchef-soloで入れてみたが結構苦労した。地雷を踏みまくった気がする。 Sensuの勝手が分からなかったせいもあるが、だいたいはChefのクックブックの選択をミスったせい。あと既存のクックブックと新規のクックブックの依存性の衝突とか。 Sensuについては以下を参照。 監視ソフトをNagiosからSensuに切り替えて2ヶ月経ったのでまとめた – Glide Note – グライドノート Sensuを使って自由度の高い監視システムの構築を行う方法 | Ryuzee.com Sensu 監視システムを Chef で制御 – jedipunkz’ blog 大変参考になりました。 Cookbookの選択ミス 最終的にうまくいったBerksfileの指定 cookbook "yum", "3.0.0" cookbook "git" cookbook "rabbitmq", "
レプリケーションとかが簡単そうなセッションストアということでRedisを使ってみることにした。 Redisのインストール まずはRedisのセットアップから。 Chefで。ひとまずVagrantの環境に対して。 RedisのCookbook ふたつ見つけた。 chef-redis redisio READMEの設定例などが親切だったので、とりあえずredisioの方を使ってみることにした。 Berksfileの編集 いつものごとくBerkshelfを使う。 cookbook 'redisio' Vagrantfileの編集 chef.add_recipe "redisio::install" chef.add_recipe "redisio::enable" Vagrantのバージョンは1.3.5。 Vagrantへの反映 vagrant provision こんなかんじでRedisのイン
BerkshelfのおかげでCookbookの再利用がしやすくなったので独立したCookbookをもりもり書くようになった。 と言うわけでひとつまとめた物を公開してみた。 * akahigeg/rbenv-install-rubies-cookbook – GitHub * rbenv-install-rubies – Opscode これは何かというとrbenvのCookbookを使ってRubyをシステムワイドにインストールするもの。Attributeだけでインストールできるのがミソ。 JSONに以下のように書いて使う。 { "run_list": [ "recipe[rbenv-install-rubies]" ], "rbenv-install-rubies": { "global_version": "2.0.0-p247", "other_versions": ["1.9.3-p
Chefを使ってJenkinsを入れて〜といったところから始める。 Jenkinsのインストール 公式に置かれているJenkinsのcookbookを使うと簡単だった。 run_listでjenkins::serverを指定すればOK。 jenkinsだけ指定しても何も動かないので少し考え込んでしまった。 (2014/03/27追記: 今はv2.0系になっているのでjenkins::masterかもしれない) nodes/jenkins.json { "run_list": [ "recipe[jenkins::server]" ], "jenkins": { "mirror": "http://mirrors.esast.com/" } } ミラーの指定はしてもしなくても良い。 これを適用するだけですでに8080のポートで起動していて管理画面にアクセス可能となる。 http://jenk
インフラ構築のテストに遅まきながらVagrantを使おうと色々調べていたが、チーム開発の開発環境を共通化したい、という声がメンバーがから上がったのでそっちの方もVagrantでやることにした。 Vagrantで仮想マシンを作ってChefで環境構築できるようにしたものをメンバーに配布する流れ。 概要 VagrantはVirtualBoxのような仮想マシンのフロントエンドツールでAmazon EC2やVM Wareに対しても使うことができる。 コマンド一発で仮想マシンを立ち上げたり落としたりできて便利。エディタで設定ファイルを編集して仮想マシンの設定を変更することも簡単。プラグインでの機能拡張もでき、仮想マシンを一時的にSandbox化できるSaharaなどが有名。 詳しくは以下。 Vagrantで簡単仮想マシン構築 | Ryuzee.com Vagrant – naoyaのはてなダイアリー
複数サーバーでChef Soloを使うのにCapistranoとchef-soloを組み合わせてやっていたけど、最近モダンなやり方を勉強しようと思っていろいろ調べていたら、Knifeのプラグインとして動くKnife Sousなるものを見つけた。 少し触ってみただけだけど、まあいいかんじ。 RakeライクなDSLで環境ごとのネームスペースを設けてノードを管理できる、と言うのがKnife Sousの特徴。 加えて特定のネームスペースに属する複数ホストへのknife soloを一気に実行できる。 設定ファイルを書いた上で以下のように使う。 $ knife sous bootstrap production $ knife sous bootstrap production web1 # 一つだけ実行も可能 $ knife sous prepare vagrant $ knife sous coo
Gemを使ってて不便を感じたりしたら自分用にカスタマイズして使うことを最近覚えた。 GitHubにソースが上がっているならば、カスタマイズしたGemを通常のGemと同じようにRubyGemsの仕組みに乗せて利用できる。割と簡単に。 備忘録的に流れを整理しておく。 リポジトリをフォークする GitHubに自分のアカウントを作って、該当Gemのリポジトリに行って、「Fork」をポチッと押す。 詳しくはGitHubのヘルプを。 カスタマイズする フォークしたリポジトリをcloneしてきて思い通りに修正。 $ git clone [email protected]:akahigeg/hogehoge.git 後々のことを考えると変更前にトピックブランチを切っておくのがオススメ。 インストールする ここからが肝。 インストールの際に少しオプションを追加することで、カスタマイズしたGemを通常のGemと遜色
最近RubyMotionを触る機会ができたので、昔書いたコードを掘り起こしてきたり、最近はどんな風にするのが良いのか調べたりしている中、お得意のヤク毛刈りの一環でローカライズ作業に関する小物を作った。 motion-localization GitHub 導入するとローカライズに必要なファイルを作成するRakeタスクが使えるようになります。それだけです。 使い方 インストール Gemfileに以下を追加してbundle install。 gem 'motion-localization' Gemfile使ってない人はこれを機に使おう。 Rakefileでrequire Rakefileの適当な場所でrequire。 $ require 'motion-localization' rakeで実行 タスクが追加されているかどうかを確認する。 $ rake -T 以下の行があればOK。なかったら
さくらのVPSにてcrontabでssh+rsyncを使って1分おきにコンテンツを同期してたんですよ。そしたらアタックと勘違いされて同期元から同期先へのsshがブロックされてしまったのでlsyncdを使うことにしてみた。 同期元にはlsyncdが、同期先にはxinetdとrsyncが必要。 同期元192.168.1.101、同期先192.168.1.102ということで手順を整理。 同期先の設定 同期先から設定。 xinetdとrsyncのインストール すでに入ってるかもしれないけれど、入ってなかったら入れる。 sudo yum install rsync xinetd /etc/xinetd.d/rsyncの編集 rsyncはデフォルトでdisable yesになっているのでnoにして有効になるように。 /etc/rsyncd.confの編集 グローバル設定とディレクトリの設定。 uid
ブログを作る即ちブログのような構造を持った文書を作るということで、そのためのヘルパーなどが用意されている。 Nanoc3::Helpers::Blogging Nanoc3::Helpers::Rendering Nanoc3::Helpers::LinkTo もちろん自分で作ることもできる。 ただまあデフォルトのレイアウトがブログに必要な要素を持ってなくて、自前でそれらを書いていく感じになるので、さくっと起ち上げるのはなかなか厳しい。正直ハードルが高い。 しかし一度構築してしまえばNanocのメリットを享受できるので、がんばる価値はあるかもしれない。 一方でサイトが動的なシステムの上に乗ってないのでコメント欄などは外部のサービスに依存するなどする必要があるなどのデメリットもあるので注意。 以下のページにNanocで実際にブログを作った概要などがまとまっており、参考になる。 Design
iOSで作りたいモノが特にないのでこの頃あんまりアクティブに触ってはいないけど、一方で所感が確かな物になってきたので書いておきたい。 RubyMotionがリリースされたばかりの頃はiOS SDKの知識が必要なので敷居が高いのではと書いたが、それから三ヶ月弱立った現在、iOS SDKに疎くても気にせず開発できる環境が整ってきた。またREPLの存在によりiOS SDKを学ぶにも役に立つものだと思うようになった。 加えてどれほどの物が作れるのか、ということとサポートの話など。 Rubyらしく書く BubbleWrapのようなRubyらしく書いていけるライブラリが順調に育っていて当初よりかなり良い感じになっている。 iOS SDKの知識がなくてもかなりの所までいけるようになっているんじゃないだろうか。 他にもDSL的なライブラリがいろいろできて盛り上がっているので、今後も「Rubyらしく」という
主に以下のサンプルを参考に。基本的な考え方はObjective-Cでやるときと変わらない。 mordaroso/rubymotion-settings · GitHub resources以下にSettings.bundleを置けばiOSの設定アプリに自作のアプリの設定画面が追加される。Settings.bundleの詳細については情報がいくらでもあるので省略。 アプリ内での設定や取得、初期化などは以下のようにして行う。詳細についてはNSUserDefaultsでググるといろいろ出てくるので基本的な操作のみ。 値の設定 NSUserDefaults.standardUserDefaults["key_a"] = "A" ハッシュと同様に操作できる。 数値などもそのまま設定できるのはなかなか素晴らしい。 値の取得 NSUserDefaults.standardUserDefaults["ka
Rails等のプレームワークだとだいたい誰かがプラグインを作っていて、それが面倒を見てくれるので意識せずにHAMLを使えるが、今回は素のRubyスクリプトから使う場合。 Haml::Engineのrenderメソッド又はrender_procメソッドを使う。 render example.html.haml %p= hello 変数の内容をひとつ出力するだけのあまりにシンプルなテンプレートファイル。 haml_example.rb require 'haml' File.open("example.html.haml") do |f| Haml::Engine.new(f.read, :format => :xhtml).render(Object.new, :hello => "Hello World!!") end Haml::Engineのインスタンスを作ってrenderする。 Ha
かなりの盛り上がりでGitHubには雨後の筍のように新しいプロジェクトが次々できている有様。 個人的にも昔Objective-Cで書いたものをRubyで書き直してみたりしていてRubyMotion成分濃い目のエキサイトした週だった。 正直勢いがありすぎて自分では追い切れてないが、公式ブログにリリース後一週間の熱狂が綴られていたので抄訳してみる。 RubyMotion’s Blog — What a week! コミュニティ 今日までにユーザーによる約55のRubyMotion関連リポジトリがGitHubにできている GLKit/OpenGL, Facebook, Parse, cocos2d等の特殊なフィーチャーやフレームワークのサンプルデモ CoreDataやUIKit等の抽象化 Redcar、TextMate、Vimのコード補完を含むRubyMotionサポート RailsFactor
双方とも脱Objective-Cを実現してくれるプロダクトだけど性格はけっこう違う。 共通で興味を持っている人が多そうなので思うところをとりとめもなく書いてみる。 取っつきやすさ iOS SDK開発未経験者がとっつきやすいのはTitanium。おそらくRuby経験者でも。 逆にiOS SDK経験者ならばRubyMotionの方が入って行きやすいかもしれない。 RubyMotionはiOS SDKのAPIをタイトになぞっているためにiOS SDKのAPIに関する知識が必要だが、iOS SDKのAPIには直感的じゃない部分が多々あって、それに馴染むまでけっこう時間がかかる。その学習コストがけっこう高い。 TitaniumのAPIはTitanium独自のものだが整理されていて扱いやすい。学習コストは皆無ではないがiOS SDKに比べればずっと楽。 またObjective-Cよりマシとは言えRub
CocoaPodsはRubyで言うとBundlerみたいなもの。 Objective-Cのプロジェクトにおいてライブラリの依存性を管理して使いやすくしてくれる。 podとして提供されているライブラリの一覧はここにまとまっている。 RubyMotionでもこのCocoaPodsを利用できる。 以下だいたい公式のドキュメント通り。 CocoaPodsのインストール まずはCocoaPodsを入れてセットアップする。sudoはRVMを使っているなら不要。 $ [sudo] gem install cocoapods $ pod setup motion-cocoapodsのインストール 次にRubyMotionからCocoaPodsを使うためのmotion-cocoapodsを入れる。 $ [sudo] gem install motion-cocoapods Rakefileの修正 RubyM
RubyMotionを使うとObjective-Cの代わりにRubyでiOSアプリを作ることができる。 有料版しかなく無償で試したりはできないがRubyMotionのサイトやサンプルコードを見てすぐに購入した。これはいいものだ。 日本語での概要は以下に良くまとまっている。 Rails Hub情報局: MacRubyがiOSに来た!RubyでiOSのネイティブアプリ開発ができる「RubyMotion」登場 RubyMotion、はじめの一歩 – Watson’s Blog 一言で言うと今までObjective-Cで我慢して書いていたものをすべてRubyでサクッと書いちゃおうぜ、というノリのものだ。 JavaScriptに対するCoffeeScriptの関係に似ているかもしれない。 個人的には以下の利点だけで値千金。 配列や文字列の処理がとてもとても楽ちん メソッド定義およびメソッド呼び出しが
最近自分の中で静的サイト生成ツールが静かなブームを呼んでいるのでNanoc以外にも何かないのかなと他のツールを探してみることにした。ついてはWordPressのバージョンアップが面倒になってきたので運用しているもろもろのサイトの移行も考えていたりして。 ポピュラーなツールやライブラリを探すにはとりあえずThe Ruby Toolboxだよね、ということでNanocで検索してNanocの属しているStatic Web Generationをポチ。 けっこうたくさん出て来たが勢いのある上の方のやつだけチェックしてみた。 Jekyll Middleman High Voltage Nanoc Stasis Jekyll mojombo/jekyll GitHub GitHubで採用されているだけあってダントツのスコア。単にページを作成するほか、ブログ形式でポストを追加していく機能も持っている。W
hugeurl 既存のものがないか探してみるとhugeurlというgemがあった。 shokai/hugeurl · GitHub rubyで短縮URLの展開 | tjun memo しかし中身をちょっとのぞいてみるとTwitterのhugeurlを使っているところがなんだか微妙だ。 しかもhugeurl自体が使えなくなってるくさい?APIドキュメントにも載ってないしアクセスするとNot Foundだし。 Locationヘッダから取得する RubyでURL短縮展開のコードがきもいです… – sorah.blog Schwarze SQ: 短縮URLを展開するRubyスクリプトを作ってみた 短縮URLに問い合わせてリダイレクト先をLocationから取るというのは分かりやすい。 エラー処理を軽く追加すれば汎用的に使えて良さそうだ。 更に汎用的なもの moski/url_expanderとい
三代目iPadの発売直前だけどThinkPad Tabletを手に入れて触っている。自分としては初のAndroidタブレット。 もともとフォトフレーム兼おもちゃとしてどうかなと思って入手したのだけど、オプションのスタイラスを使った手書き入力の快適さにびっくりした。これは実用ツールとしていけるじゃないか。 スタイラスに関してはiPhoneやiPadで定評のあるものを買っても「ダメだろこれ」って代物ばかりだったのでもう諦めていたが、思わぬところで満足のいく手書きデバイスに出会えたという次第。ペン先が鉛筆のように細くて硬いのでペンでスムーズに書く感じが得られる。指先やゴム先じゃダメなんですよやっぱり。ちなみにこのスタイラスがiPadで使えれば無敵だったのだが、それは無理だった。 それにしてもThinkPad TabletのUIの挙動はスムーズで一昔前のAndroid端末にありがちだった動作のひっ
find(id) に find_by_id(id) の挙動を期待していたので以下のようなコードを書いてしまっていた。 @item = Item.find(params[:id]) if params[:id] render(:nothing => true, :status => '404 Not Found') unless @item これだとレコードが見つからなかったときにサーバーエラー(ステータスコード 500)になってしまう。 そうならないためには以下のコードが正しい。 @item = Item.find_by_id(params[:id]) if params[:id] render(:nothing => true, :status => '404 Not Found') unless @item 奥が深い。 参考 ActiveRecord のお勉強 – Rails で行こう
VimやRubyMine等のエディタやIDEで新しくファイルを作成した時にマジックコメントを付加することはできるが、既存のファイルに対して適用することができないので別途手段を講じる必要に強くかられた。 有り体に言うとRailsのジェネレータが作成したファイルに日本語を含めたときにエラーになるという状況を繰り返すのにそろそろ飽きてきたという。 そこでまず自作しようとディレクトリを切ったところで、いやいや誰か作ってるのではないかと思い当たり、検索してみると案の定見つかった。 magic_commenter magic_encoding 両方ともコマンドラインツールとして使用する。コマンドを打つとそのディレクトリ以下のRubyファイルを検索してマジックコメントを付加してくれる。 まず最初にmagic_commenterを試してみたが、こちらはマルチバイト文字列が含まれているファイルにしかマジック
次のページ
このページを最初にブックマークしてみませんか?
『ひげろぐ - 結論を急がない』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く