読者です 読者をやめる 読者になる 読者になる

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

Active::Recordのトランザクション復習

user = User.find(2) user.name = 'takeyuweb' user.save! User.transaction do # A user.name = 'takeyuweb(trA)' user.save! User.transaction do # B user.name = 'takeyuweb(trB)' user.save! end User.transaction do # C user.name = 'takeyuweb(trC)'…

Shinjuku.rb #37 でSQSとかについて話してきました

shinjukurb.doorkeeper.jp Shinjuku.rb に参加して話をしてきました。 非同期処理は管理画面とかに比べるとちょっと取っつきづらいのか人少なめでしたけど、そのぶんしっかりディスカッションできた気がします。

ruby aws sdk v2 SimpleWorkFlow(Aws::SWF::Client)メモ

swf = Aws::SWF::Client.new 失敗したExecutionを取り出す WORKFLOW_DOMAIN = 'myworkflowdomain' resp = swf.list_closed_workflow_executions( domain: WORKFLOW_DOMAIN, start_time_filter: {oldest_date: 24.hours.ago}, close_status_filter: {status: …

OpsWorks (Chef11) で ERROR: cannot load such file -- /var/lib/aws/opsworks/cache.stage2/cookbooks/compat_resource/files/lib/compat_resource/gemspec

いつも通りアプリのデプロイをしようとしたらエラー。 [2016-05-18T22:55:06+00:00] INFO: Loading cookbooks [apache2, apt, ark, build-essential, chef-sugar, chef_handler, compat_resource, curl, dependencies, deploy, gem_support, homebrew, mingw…

WEB+DB PRESS vol.92 ざっくりまとめ

全体的になかなか実用的な内容だった。 また新連載も今後いろいろ役に立つ記事が生まれそう。 以下ざっくりまとめ

Pencil高いけどいいですよ。

いいですよ。 trendy.nikkeibp.co.jp 絵描きでなくても使えます。 ExcelやPowerPointで仕様書が送られてきて見積もり依頼ってことがあるのですが、紙に出して手書きしないと頭はいってこないので、これまでは印刷して手書きしてました。 それがiPad Pro(大…

Amazon Linux 2015.09 に capybara-webkit gem をインストールしてRubyでブラウジングする

Installing gems capybara-webkit gem gem入れるまでがツラい。→ AmazonLinux 2015.09 に Qt5 WebKit をインストール sudo ln -s /usr/lib64/qt5/bin/qmake /usr/bin/qmake sudo gem install capybara-webkit --no-ri --no-rdoc Building native extensions.…

AmazonLinux 2015.09 に Qt5 WebKit をインストール

まとめ sudo yum install ftp://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/geoclue-0.11.1.1-0.13.20091026git73b6729.el6.x86_64.rpm \ ftp://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/NetworkManager-glib-0.8.1-99.el6.x86_64.rpm \ ftp:/…

(解決)Windows10でKaspersky Internet Security 2016の更新をして再起動したら、Windowsが起動しなくなった件について

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED と表示され、セーフモードでの起動すらできなくなってしまった。自動修復も無理。 ググってたらそれっぽいものが Kaspersky Lab Forum > Upgraded to KIS 2016 on Win 10 = BSOD - System Thread Exception Not Handled…

クラウドソーシングdisり記事がバズってたので、便乗して僕の感想を書き殴る。

なんかクラウドソーシングdisりがバズってた。 crapp.hatenablog.com 僕はクラウドワークスではなくLancersですが、二桁の仕事はしています。 はじめに、僕のスタンスをはっきりさせておくと、初期の実績積みには役に立ったのでその点感謝はしているのの、や…

PowerCMSダイナミック検索で「デフォルトの検索条件」を設定する

コードを読んだがクエリストリングからパラメータを取り出していて、他にデフォルト値を渡す方法がみあたらなかったので、むりやり・・・ blog_id(); $_SERVER['QUERY_STRING'] = 'class=entry&limit=10000&offset=1&blog_id=' . $blog_id . '&sort_by=ti…

WEB+DB PRESS Vol.90 メモ

印象に残ったところをメモ。 WEB+DB PRESS Vol.90作者: 江口和宏,吉田太一郎,内田優一,青山公士,石本光司,まつもとゆきひろ,おにたま,田籠聡,竹内郁雄,南川毅文,伊藤直也,佐藤太一,?橋侑久,Magnolia.K,佐藤歩,泉水翔吾,西尾泰和,中島聡,はまちや2,竹原,宮崎…

Ruby AWS SDK v2 でS3の署名付きURLを発行する

Aws::S3::Presignerを使います。 基本 s3 = Aws::S3::Client.new signer = Aws::S3::Presigner.new(client: s3) signer.presigned_url(:get_object, bucket: 'your-bucket', key: 'path/to/object') URLの有効期限を設定する たとえば、購入者に向けてダウン…

Ruby on Rails 4.2 のActiveRecordでMovable TypeのデータをQueryInterfaceとかArelとかで扱ってみた

この記事はMovable Type Advent Calendar 2015 - Adventar20日目の記事のはずでした。忘れてました。ごめんなさい。 ふと思い立って現段階の最新のRailsでMTのデータを扱う実験をしてみました。 Railsで非RailsなDBを扱うサンプルにもなるかも。 サンプルコ…

クラスの属性は、クラスの特異クラスでattr_xxxxx

やりたいこと クラスごとに値をもたせたい サブクラスやスーパークラスに共有したくない こういうとき、クラスのインスタンス変数を使うわけですが、attr_accessorみたいにクラスマクロ的なの使ってわかりやすくしたいです。 答え クラスの特異クラスでattr_…

分岐元のブランチの変更を取り込む

master から develop を切って作業中、うっかり master に commit しちゃった時など、develop に master の変更を取り込みたい。 リモート(ここではorigin)に最新があるなら $ git checkout master $ git status On branch master $ git pull origin maste…

assetsのデプロイメモ

デプロイ先でprecompileしたくない Gitにプリコンパイル結果を含めちゃう デプロイ楽。 画像等が多い場合はアレ minifyされたファイルでコミットログに無駄が やるならgit clean(rake assets:clean すれば勝手にやってくれる模様)するようにする。 $ rake as…

ActiveRecordモデルにincludeしたりするModuleの結合テスト

テストのモデルを作って使う方法メモ。 参考にしたコード CarrierWave::ActiveRecordのテスト carrierwave/activerecord_spec.rb at 7d4713f251399ca6f107e0660616cd7b9494929c · carrierwaveuploader/carrierwave · GitHub require 'rails_helper' # インタ…

Movable Type で特定のMT::Objectサブクラスのコールバックを無理矢理仕込む

こんな感じで無理矢理フックを仕込むことができる。 callbacks: init_app: $yourplugin::YourPlugin::Plugin::cb_init_app lib/YourPlugin/Plugin.pm package YourPlugin::Plugin; use strict; use warnings; # Registering callbacks sub cb_init_app { my …

Amazon SNS + SQS な構成をAWS Ruby SDK V2で自動化する

Amazon SQSへのキューイングの際、直接SQSを使っても良いですが、SNSを使うと抽象度が高くなり捗ることもあります。 CloudWatchを使ってログを残すこともできますし、便利です。 http://dev.classmethod.jp/cloud/aws/sns-topic-should-be-placed-behind-sqs…

Rails Asset / Sprockets関係gem使ったものの感想

はじめに 個人的な感想 ガンガンassets pipeline使う Railsエンジニアだけでやる分には楽 assets pipeline / Sprockets使わない SPA開発などで、フロントエンジニアさんが別にいる場合、フロントエンジニアさんが使いやすいツールでやって貰った方が楽 自然…

Amazon Auroraメモ

クライアント様が使いたいということで調べたことメモ。 aws.amazon.com 費用について Auroraは最低プランでもメモリ15GBぐらいのプランになるので、現在開発サーバで使っているm3.mediumに比べると3倍ほど。 同じr3.largeだと2割ほど高いです。 MySQL Singl…

少額減価償却資産の特例 freeeでの記帳メモ

毎回どうやったっけな?ってなるのでメモ。 前提 29万円のノートパソコンを購入した。 仕訳 購入日 貸方 工具器具備品 29万円 / 借方 現金 29万円 固定資産 [決算] > [固定資産台帳] から登録 取得金額 29万円 勘定科目 工具器具備品 償却方法 少額償却 クラ…

Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話

9/30のShinjuku.rb発表ネタです。 ActiveJob プロセス管理ツール ServerEngine のはなし。 時間は適当で良いということだったので5分で終わらない感じになりました。 Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話 from Takeuchi Yuichi

Action Cable + Flux + React でリアルタイムチャットデモを作ってみた

成果物 デモ(Heroku) http://fluxchat.takeyu-web.com/ ソースコード takeyuweb/rails-fluxchat-example · GitHub キーワード Rails 4.2 ActionCable ES6 React Flux (Alt) Action Cable? まだコード全部は読んでないのですが、WebSocketを使ったリアルタ…

アプリケーションの分割についての迷走メモ

マイクロサービス化の取り組み失敗メモ。新たな失敗やつらみ、なやみを追記していくことにする。

OpsWorks で bundle install の without オプションを指定して不要なgemがインストールされないようにする

デフォルトで--without development testが指定されているようになっていますが、僕の場合他にいくつか環境を作っていたので、その対応として。 OpsWorks customize.rbでbuilt-in cookbooksの設定値を変更するど同様にして deploy/attributes/customize.rb n…

Aws::S3::Clientでリージョンをまたぐコピーをするときは、コピー先のリージョンを明示してやる。

たとえばダウンロード販売のコンテンツを置く場合など 長期間ホストするファイルの容量が大きい 頻繁なリージョン間転送(EC2など)は発生せず、インターネットへの転送がメイン そこまでダウンロード速度を要求しない こんなとき、S3バケットを価格の安いリ…

Amazon Cognito Identity でFacebookやTwitterログインの名寄せをしてみた

この記事はQiitaに書いた奴のコピーです。 AWS SDK for Ruby V2のCognitoIdentity::Clientクラスを使ってみました。 サンプルコード logins = { 'graph.facebook.com' => 'facebook_oauth2_access_token', 'api.twitter.com' => ['twitter_user_token', 'twi…

Amazon Cognito + AWS JavaScript SDKで作るサーバ不要のアップローダ

ずっと気になってたAmazon Cognitoを使ってみました。 Cognitoを使うと、アプリ側だけでAWSへのアクセス権を与えることができます。 これを利用して、サーバインスタンスなしにいろいろなことができるようになります。 ありがちな例ですが、今日はブラウザか…

Refileを使ってハイテクなアップローダ(機能を利用したサンプル)を作ってみたのでメモ

昨日知ったのですが、Refileというファイルアップロード用のgemがとてもナウい感じです。

CentOS 7 + VMware Workstation のファイル共有(HGFS)で苦しんだのでメモ

バージョン等 CentOS Linux release 7.1.1503 (Core) kernel 3.10.0-229.el7.x86_64 VMware Workstation 11.1.2 VMwareTools-9.9.3-2759765.tar.gz メモ $(uname -r) yum install open-vm-toolsではvmhgfsカーネルモジュールは入らない vmware-tools-patches…

OpsWorks + Rails でロールモデル的な役割分担をインスタンスにもたせるBK

OpsWorks + Rails OpsWorksでRailsアプリを運用しようとした場合、通常の方法では、すべてのRailsアプリインスタンスが同じ設定になり、たとえば つねに1つのインスタンスでのみcronを実行する バックグラウンドタスク専用のインスタンス群を用意したい とい…

Rails + Globalize + Microsoft Translator API で他言語化するテスト

やりたかったこと 表示 言語の判別 ブラウザの言語を判別 URLのパスから言語を判別 言語に応じて表示内容を変える 自動翻訳 入力された言語以外でも表示できるように、他の言語版を機械翻訳で自動的に作成 日本語ロケールで保存すると、英語版を自動翻訳して…

ActiveRecordでサブクエリのJOIN

たとえば 「ユーザー1がコメントした記事の中で、コメントのlike数が1以上の記事を検索する」 SELECT `posts`.* FROM `posts` INNER JOIN ( SELECT `comments`.* FROM `comments` WHERE `comments`.`user_id` = 1 AND `comments`.`likes_count` >= 1 ) liked…

VBoxManage: error: Code NS_ERROR_FACTORY_NOT_REGISTERED (0x80040154)

ArchLinuxにVirtualBoxをwikiに従ってインストールしたけど、仮想マシン作成段階でエラーになったり、VBoxManage listが動かなかったりといった問題が発生。 $ sudo VBoxManage list extpacks VBoxManage: error: Failed to create a session object! VBoxMa…

サマルトリアではなくランプのまおうになりたい

「私には特技がない。でも...」女性WEBデザイナーが10年以上フリーランス活躍してきた秘訣www.huffingtonpost.jp 僕も割と色々やる方ですが、それぞれは専門の一線級の人たちに比べると落ちるとは思ってます。 とはいえ、1人で設計からバックエンド実装、フ…

react-rails のprerender(サーバサイドレンダリング)のとき、コンポーネント中で他のJavaScriptライブラリを使う

僕はjs-routesをよく使うのですが、Reactコンポーネント内で、Routes.hoge_url(this.props.id)とかやってると、そのままではサーバサイドレンダリングするときにこけます。 render_component 'EntryListItem', { entry: entry.to_jbuilder.attributes! }, pr…

OpsWorks で使うunicornのバージョンを変更する

プロジェクト固有のOpsWorks設定は、カスタムJSONよりもカスタムCookbookでの管理の方がバージョン管理できること、設定の一元管理ができること、などで有利だと思います。

オライリー Ebook Store + タブレット + Kindle の具合がとてもよかった件について

私の環境について 今はこちらの環境で落ち着いています。 iPad Air Kindle 電子書籍リーダー メイン i文庫HD 自炊PDF用(OCR済) あまり分散させても気持ち悪いのでなるべく少ないアプリにまとめる方針で使っています。 端末 技術書の場合文字数が多いので、…

Z21とArchLinuxとSynergyと

VAIO Z21がここのところメモリ不足でしんどかったので買い換えを検討していたのですが、思い切ってArchLinux入れました。

Undefined subroutine &Sub::Util::set_subname

WebService::PayPal::NVPというCPANモジュールを試そうとすると、エラー。 Undefined subroutine &Sub::Util::set_subname Sub::Util 1.41 Paul Evans / Scalar-List-Utils-1.41 - search.cpan.org パッチが出てた。 Bug #100863 for Scalar-List-Utils: Sub…

Movable Type を使いこなすためのテクニックや知見を紹介するブログを作りました

今日で31歳のタケユー・ウェブ竹内です。 きりもいいので、予てより考えていたMovable Type マニアックスというブログをはじめることにしました。 これまでも備忘録としてごちゃ混ぜにこのブログに残していましたが、先日ナナエフのマネタイズ部で敷田さんの…

MailMug がユーザによるメルマガ購読登録・解除に対応

MailMugにメルマガ購読登録・解除フォームを付けました。 takeyuweb/mt-plugin-MailMuggithub.com 利用者が自分でメールアドレスの登録・解除を行えます。 自分で登録したユーザに対して適用するロールは変更できます。(デフォルトは メールマガジン購読者…

OpsWorks + Whenever

cron設定をバージョン管理に含めることができるのでありがたいWheneverをOpsWorksで使ったときのメモです。

Movable Type メールマガジンプラグイン MailMug がメルマガ送信用SMTPサーバの設定に対応

このアップデートにより、Amazon SESなどのクラウドメール配信サービスを利用できるようになり、一層安定的に配信できるようになります。

ActiveJob エンキューされることをテスト

test用のアダプタがあるのでそれを使うとActiveJob::Base.queue_adapter.enqueued_jobsでキューイングされたジョブを取得できるっぽい。 rails/test_adapter.rb at master · rails/rails · GitHub で、それを利用して特定のジョブクラスが引数付きでエンキュ…

ActiveJob::Base#perform のブラックボックステスト

作法として正しいかどうかはわからないですが、queue_adapter = :inlineにしてperform_laterすればすぐ実行されるからブラックボックステストはできそう require 'rails_helper' RSpec.describe SendToChatworkJob, :type => :job do before :all do SendToC…

AngularJS cookieにセットしたAPIトークンをHTTPヘッダーに面倒のないように入れたい

Interceptorsを使う方向で落ち着いた。 angular.module('app').config(['$httpProvider', ($httpProvider)-> $httpProvider.interceptors.push 'httpRequestInterceptor' ]) angular.module('app').factory('httpRequestInterceptor', ['ipCookie', (ipCooki…

AngularJS ngResourceでパラメータにtokenを付ける

有名なstackoverflow javascript - AngularJS: How to send auth token with $resource requests? - Stack Overflow がresource.$saveなケースでうまくいかなかったので var tokenWrapper = function (resource, action) { resource['_'+action] = resource[…