ruby
Slackで発言していない人をチャンネルからkickするスクリプトを雑に書いたので置いておく。 動作としては 対象のチャンネルのメンバを取得 発言者のリストを取得(今回はBigQueryからUser IDを抽出してきたファイルを利用[下記参照]) 1と2の差分から未発言…
この記事はSlack Advent Calendar 2018の8日目の記事です。 TL;DR Slack有料版のゲスト機能相当を無料で実現する、複数Slackチーム間のチャンネルをつなげるプログラムを開発(下図参照) 環境は紆余曲折を経て現在はGCP上でGCE, Cloud PubSub, Cloud Datast…
FluentdのPluginを書こうかなと思って公式HPのプラグイン作成を解説しているページを見たところ、サンプルコード内の日本語が文字化けしてた。 プラグインを書く | Fluentd(現在はPR出して修正済み) どうも調べてみると、Herokuの上でCodeRayを使うと文字…
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会議2011に引き続き、東京Ruby会議10で当日スタッフをさせて頂きました。 セッションの内容は見れたものもあり、見れなかったものもあるので詳細は参加者の方々にレポートはお任せして、スタッフ業をさせていただいた感想を終わって1週間経つけど書いて…
とある場所で機会をもらってLTしてきたので資料を公開します。 内容は今流行のBigData(笑)を集める手段としてTwitterのStreaming APIを用いる方法の紹介になります。 BigDataの集め方 from Mahito
前回の宣言通りTweetStreamを使って書きなおしてみた。 tweetstream/tweetstream · GitHubコードを書く前にTweetStreamのGemをインストール gem install tweetstream そしてコード ちなみに前回までは秘密鍵とかトークンとかを直書きだったけど、なんとなくY…
その昔TwitterAPIを使ってBOTを作ろうとしたことはあったが、Twitter4Rを利用するところまでやってBOTのコンセプトが決まらなかったのでやめた。 で、今回また何かしようと思って調べた所、最近のTwitterはStreaming APIを利用すればこちらからPullしなくて…
今更ながら諸事情で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 << …
MongoDBを使うのでActiveRecordを使う必要がないのだが、SQLite3のGemがないというエラーが出た。 gem install sqlite3 で動くのだけどこれだといらないはずのGemが含まれてしまう。 調べてみたらconfig/application.rbの設定を書き換えればいけるらしいので…
最近MongoDBに興味があるのでRails3から触ってみることにした。 今回はObject-Document-Mapper(ODM)にMongoidを使ってみる。 前にMongoDBのODMにMongoMapperを使おうとしていたのだが、うまくインストールできなかったことがあった。 MongoDB触ってみる - …
rstat.usを触って初めてHamlを見たときに簡単に書けそうだなーと思って興味があった。 ちょっと最近Rails3の勉強もしているので、erbを使わずにHamlを使ってみようと思って勉強開始。 まず最初にどうやってRailsの中で使うのか分からないので(rstat.usはSin…
Ruby会議に参加してやる気をもらったので最近リハビリがてらにProject Eulerを最初から挑戦し始めた。 今回はソースコードをgithubに載せていってる。 Mahito/project-euler · GitHub 英語が全く書けない困った社会人なのだが、なんちゃって英語でコメントも…
最近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 <<…
Google Developer Day 2010 Japanに参加するために、Quizに挑戦してた。 いろいろ忙しくて最後までできなかったけど面白かったので、その感想と2-legged OAuthのプログラム載っけとく。 まず感想。 先着順ではなく、こういうふうに技術的に参加者の優先順位…
土曜日にわんくまの数学Dayに参加してきた。 数学難しいです>< ってなったあと・・・っていうか最中に現実逃避に、 Project Eulerをやり始めた(ぉ 今回はProblem 33 The fraction ^(49)/_(98) is a curious fraction, as an inexperienced mathematician …
最近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)で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にRubyを入れてなかったのでRuby1.9.2を入れてみた。 以下のサイトから [開発版snapshot] -> [ruby-1.9.2-preview1-x64-mswin64_80.zip] zipを解凍し終わったら適当な名前をつけてCドライブ直下に配置。 マイコンピュータを右クリック、 [プロパティ…
作成画面の次が作成完了とか日本人好みじゃないよね。 っていうか作れって言われたので作った。 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とPostgres 8.3.7で開発しようとしたら、 migrateのところで undefined method `quote_ident' for PGconn:Class ってエラーがでた。 ぐぐって見たところ以下の手順で直るらしい。 config/initializers/new_rails_defaults.rbの先頭あたりに以下を…
1.upto(?d){|i|i%3<1&&x=:Fizz;puts i%5<1?"#{x}Buzz":x||i} ポイントは以下の通り 「100」を「?d」と使用することで1文字短縮 三項演算子を利用 &&の「左辺の処理が真なら右辺の処理を行う」を活用 Rubyは式ごとに値を返すので&&の右辺が実行された場合は…
明日の読書会の担当なのに資料作ってない。 \(^o^)/オワタ そうも言ってられないので作れるところまで作る。
変数とは プログラミングにおいて、変数(へんすう、variable)とは、プログラムのソースコードにおいて、扱われるデータを一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。 一人一人の人間が異なる名前によ…
現在うちのサーバはお姉様が友達と作ったサイトがApache上に生きている。 RailsをMongrelで動かすといろいろとめんどくさそうなので、 Passengerを使ってApache上で動かすことに。 gemでpassengerをインストールして、 passenger-install-apache2-moduleコマ…
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…