Let's write β

プログラミング中にできたことか、思ったこととか

Ruby

Auth0でSign in With Appleから氏名がAPIで取得できない件への暫定対応

弊社のアプリケーションではモバイルアプリの認証にAuth0を利用しています。 そして、Auth0からユーザーに利用可能な認証方式の1つとしてSign in with Appleを採用しています。 Sign in with appleを認証で利用していると、さらに追加でユーザーに氏名の入力…

Rails5 + MySQLでArmgとDBコネクタの拡張を組み合わせて位置情報を扱う

背景 サービスで位置情報を色々なところで扱うのですが MySQLで扱うためには当然Geometry型のカラムを用意してActiveRecordとつなぐ必要があり PostGisを使っているケースが多く、MySQL周りのライブラリはあまり活発ではありませんでした。 RGeoのMySQL2コネ…

Fastlane gemのSpaceshipを使ってiOSアプリのバージョン番号のリストを取得する

RubyのGemでiTunes ConnectからiOSのバージョン番号のリストを取得する

GoogleMapのスタイルギャラリーSnazzyMapsのスタイルを適用したGoogle Static Mapの作成

GoogleMapのStaticMapを作るときに、スタイルをカスタマイズしてアプリケーションのテーマと雰囲気を合わせたいなという場合があります。 GoogleMapのスタイルはカスタマイズできるのですが、個別の項目を1からカスタマイズするよりは、 おしゃれな既存のテ…

2048ゲームをRubyで

2048というゲームがなかなかプレイするのにも、AIを作るのにも面白そうだったので、 自分でいじれるように書いて見ました。 require "curses" def make_board() board = Array.new(4).map!{ Array.new( 4, nil ) } end def available_pos(board) pos = [] bo…

CodeIQのナムドット問題。僕の回答

結城先生がCodeIQに定期的に出題なさっているのですが、今回のナムドット問題をやってみました。 挑戦者求む!【アルゴリズム】古代文献を復元しよう! by The Essence of Programming 結城 浩│CodeIQ 問題の出力に着目してみると、ドットでくぎられている数…

複数のモジュールを同時includeした場合の処理を設定するNo.2

前回の記事では各モジュールのself includedの中で明示的にチェックを走らせる必要がありました。これがなかなか面倒だなという事だったので、もうすこし省略された記法で書けるようにしょうとおもっていました。 そこで、探していたところ、メソッド実行を…

複数のモジュールを同時includeした場合の処理を設定する

昨日の記事でCommonLispで複数のクラスを継承したときの設定をしたいという事でMOPで実装をこころみたのですが、どうも困難そうだったので一度Rubyで実装をこころみました class UnionRule def initialize(modules, action_proc) @modules = modules @proc =…

Rubyで一次元オートマトン part 2 (画像生成)

Cairoライブラリを利用して画像を出力できるようにしてみました。 もうすこし抽象化したいですが.. require 'cairo' class World def initialize(size) @map = Array.new(size, 0) @rule = Hash.new end def show @map.each do |cell| if cell == 0 print " …

Rubyで一次元オートマトン

とりあえずルールとかみながらつくってみました。 次は生成関数から生成できるようにしたいとおもいます。 class World def initialize(size) @map = Array.new(size, 0) @rule = Hash.new end def show @map.each do |cell| if cell == 0 print " " else pr…

Githubでリポジトリに関心がある人の言語の傾向をみる。

require 'octokit' #Get infomation by user def user_languages(userName) repositories = Octokit.repositories(userName) langarray = repositories.collect {|repo| repo.fetch("language")} return langarray end def repo_watchers(repoName) watchers…