とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

ruby

Slackで発言していない人をチャンネルからkickするスクリプト

Slackで発言していない人をチャンネルからkickするスクリプトを雑に書いたので置いておく。 動作としては 対象のチャンネルのメンバを取得 発言者のリストを取得(今回はBigQueryからUser IDを抽出してきたファイルを利用[下記参照]) 1と2の差分から未発言…

Slackチームつなげるワームホールを開発した話

この記事はSlack Advent Calendar 2018の8日目の記事です。 TL;DR Slack有料版のゲスト機能相当を無料で実現する、複数Slackチーム間のチャンネルをつなげるプログラムを開発(下図参照) 環境は紆余曲折を経て現在はGCP上でGCE, Cloud PubSub, Cloud Datast…

Herokuでの文字化けを直してみた

FluentdのPluginを書こうかなと思って公式HPのプラグイン作成を解説しているページを見たところ、サンプルコード内の日本語が文字化けしてた。 プラグインを書く | Fluentd(現在はPR出して修正済み) どうも調べてみると、Herokuの上でCodeRayを使うと文字…

shared_examples_forが便利

RSpecのテストをグルーピングして実行できる#shared_examples_forが便利。Shared example group - Example groups - RSpec Core - RSpec - Relishこれを使えばテストコードが簡潔になるのでテストコードの量を減らすことができる。 require "set" shared_exa…

本日の教訓

ActiveRecordを継承したモデルで#saveでも#save!でもデータが保存できなくなる自体に陥った。 で、1時間ぐらい格闘した結果、原因判明。 ActiveRecord継承したモデルを作った際に、モデルの内部でcreateとかupdateのメソッドを実装すると、 既存のcreateやup…

東京Ruby会議10で当日スタッフしてきました

Ruby会議2011に引き続き、東京Ruby会議10で当日スタッフをさせて頂きました。 セッションの内容は見れたものもあり、見れなかったものもあるので詳細は参加者の方々にレポートはお任せして、スタッフ業をさせていただいた感想を終わって1週間経つけど書いて…

LTしてきたので資料をSlideShareに上げました

とある場所で機会をもらってLTしてきたので資料を公開します。 内容は今流行のBigData(笑)を集める手段としてTwitterのStreaming APIを用いる方法の紹介になります。 BigDataの集め方 from Mahito

RubyでTwitter Streaming APIを使ってみる2

前回の宣言通りTweetStreamを使って書きなおしてみた。 tweetstream/tweetstream · GitHubコードを書く前にTweetStreamのGemをインストール gem install tweetstream そしてコード ちなみに前回までは秘密鍵とかトークンとかを直書きだったけど、なんとなくY…

RubyでTwitter Streaming APIを使ってみる1

その昔TwitterAPIを使ってBOTを作ろうとしたことはあったが、Twitter4Rを利用するところまでやってBOTのコンセプトが決まらなかったのでやめた。 で、今回また何かしようと思って調べた所、最近のTwitterはStreaming APIを利用すればこちらからPullしなくて…

2011年 DevQuizの一人ゲームを解いてみた

今更ながら諸事情で2011年のGoogle Developer Daysの参加の際に、審査に使われたDevQuizの一人ゲームをRubyでといてみた。 gets.to_i.times do gets queue = [gets.split.map{|s|s.to_i}] ans = 0 until queue.empty? tmp = [] queue.each do |test| tmp << …

RailsでActiveRecordの削除

MongoDBを使うのでActiveRecordを使う必要がないのだが、SQLite3のGemがないというエラーが出た。 gem install sqlite3 で動くのだけどこれだといらないはずのGemが含まれてしまう。 調べてみたらconfig/application.rbの設定を書き換えればいけるらしいので…

Rails3でMongoid使ってみた

最近MongoDBに興味があるのでRails3から触ってみることにした。 今回はObject-Document-Mapper(ODM)にMongoidを使ってみる。 前にMongoDBのODMにMongoMapperを使おうとしていたのだが、うまくインストールできなかったことがあった。 MongoDB触ってみる - …

Rails3でHaml使ってみた

rstat.usを触って初めてHamlを見たときに簡単に書けそうだなーと思って興味があった。 ちょっと最近Rails3の勉強もしているので、erbを使わずにHamlを使ってみようと思って勉強開始。 まず最初にどうやってRailsの中で使うのか分からないので(rstat.usはSin…

リハビリ

Ruby会議に参加してやる気をもらったので最近リハビリがてらにProject Eulerを最初から挑戦し始めた。 今回はソースコードをgithubに載せていってる。 Mahito/project-euler · GitHub 英語が全く書けない困った社会人なのだが、なんちゃって英語でコメントも…

MongoDB触ってみる

最近NoSQLを調べる機会がありドキュメント指向DBが面白そうだなと思っていたのだが、会社だとドキュメント指向DBを扱う機会がなさそうなので個人的に触ってみようと思った。 ドキュメント指向DBはCouchDBとMongoDBが有名らしいけど、前からよく目にするMongo…

圧縮プログラミングをやってみた

Web開発者のための大規模サービス技術入門 〜データ構造、メモリ、OS、DB、サーバ/インフラ〜第6回で出てくる圧縮プログラミングの課題をやってみた。vb.rb def vb_encode(numbers) vbs = numbers.map do |n| bytes = [] loop{ d,m = n.divmod(128) bytes <<…

Quiz Fest for Google Developer Day 2010 Japanに挑戦してた。

Google Developer Day 2010 Japanに参加するために、Quizに挑戦してた。 いろいろ忙しくて最後までできなかったけど面白かったので、その感想と2-legged OAuthのプログラム載っけとく。 まず感想。 先着順ではなく、こういうふうに技術的に参加者の優先順位…

Project Euler Problem 33

土曜日にわんくまの数学Dayに参加してきた。 数学難しいです>< ってなったあと・・・っていうか最中に現実逃避に、 Project Eulerをやり始めた(ぉ 今回はProblem 33 The fraction ^(49)/_(98) is a curious fraction, as an inexperienced mathematician …

久しぶりRubyでProject Eulerをやってみた

最近Rubyをまともに使った覚えが無いので、 1年ぶりぐらいになるかもしれないけどProject Eulerをやってみることに。 今回はProblem 32に挑戦 We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; f…

玄箱PRO(lenny)にRubygemsを入れてUpdateしてみた

玄箱PRO(lenny)でRedmineを動かそうと思ってその準備。 Rubygemsのバージョンを確認。 debian:~# gem -v 1.2.0今だと1.3.x系なので古い。 gemからRubygemsのupdateを行う。 debian:~# gem update --system ERROR: While executing gem ... (RuntimeError) ge…

Windows7(64bit)にRuby1.9.2をインストールする

Windows7にRubyを入れてなかったのでRuby1.9.2を入れてみた。 以下のサイトから [開発版snapshot] -> [ruby-1.9.2-preview1-x64-mswin64_80.zip] zipを解凍し終わったら適当な名前をつけてCドライブ直下に配置。 マイコンピュータを右クリック、 [プロパティ…

Railsで確認画面作ってみた。

作成画面の次が作成完了とか日本人好みじゃないよね。 っていうか作れって言われたので作った。 def confirm @sample = Sample.new(params[:sample]) # validate処理 @sample.validate if 0 < @sample.errors.size respond_to do |format| format.html { ren…

ある文字列にマッチしない文字列を習得する正規表現

槍の人にhttpとftpにマッチしないものを取ってくる正規表現について聞かれた。 どうも現在はこんな感じらしい。 /^[^((ht|f)tp)]/ 確かにこんな感じの気はするのだが、 確かこれだとは1文字のマッチだったはずなので、 先頭が[h, t, f, p]あたりだと反応する…

Rails 2.3.4 + PostgresQL

Rails 2.3.4とPostgres 8.3.7で開発しようとしたら、 migrateのところで undefined method `quote_ident' for PGconn:Class ってエラーがでた。 ぐぐって見たところ以下の手順で直るらしい。 config/initializers/new_rails_defaults.rbの先頭あたりに以下を…

RubyでFizzBuzzしてみた

1.upto(?d){|i|i%3<1&&x=:Fizz;puts i%5<1?"#{x}Buzz":x||i} ポイントは以下の通り 「100」を「?d」と使用することで1文字短縮 三項演算子を利用 &&の「左辺の処理が真なら右辺の処理を行う」を活用 Rubyは式ごとに値を返すので&&の右辺が実行された場合は…

Storategyパターン

明日の読書会の担当なのに資料作ってない。 \(^o^)/オワタ そうも言ってられないので作れるところまで作る。

初心者に変数を教える方法を考えてみる

変数とは プログラミングにおいて、変数(へんすう、variable)とは、プログラムのソースコードにおいて、扱われるデータを一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。 一人一人の人間が異なる名前によ…

RailsアプリをPassengerとApacheの連携で動かす

現在うちのサーバはお姉様が友達と作ったサイトがApache上に生きている。 RailsをMongrelで動かすといろいろとめんどくさそうなので、 Passengerを使ってApache上で動かすことに。 gemでpassengerをインストールして、 passenger-install-apache2-moduleコマ…

Redmine初期設定メモ

Redmineを入れようとするとエラーが出る。 # rake db:migrate RAILS_ENV=production (in /root/file/redmine-0.8.4) rake aborted! could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP conne…

画像収集用

とあるまとめサイトの方に壁紙があげられていたのを見て一括保存したくて作った。 以前にも同じのを作ったのだがそのスクリプトがどこか言ったのでまた作り直した。 hpricotを使えば簡単にできるね! require 'rubygems' require 'hpricot' require 'open-ur…