【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
この記事はVOYAGE GROUP エンジニアブログ Advent Calendar 2014の12日目の記事です! こんにちは!@gomachan46です。 VOYAGE GROUPの新卒エンジニアとして日々楽しみながらお仕事しております。 社内にて密かに活動を続けている音ゲー部の部長をやっております! 少し前にVOYAGE GROUP エンジニアブログ : あなたにおすすめするたった一つの最高のキーボードとかいうエントリを上げたところ、社外の方からも「音ゲーの人だよね?」とわかってもらえるようになりました。 さて、今回はちょっとした休憩中でもさっとお仕事をしていると見せかけて「ターミナルでプレイできる音ゲー」を作ってみようと思います! もちろんこの間紹介したキーボードでもプレイ可能です:) 音ゲーとは 簡単にいうとリズムに合せて作成された譜面の通りにボタンを押して遊ぶゲームです。 作っ
個人用メモ。 ※見てくれる人が多いようなので追記しました。 そのうちまた追記します リテラル 詳しくはドキュメント読みましょう http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fliteral.html Stringの配列 %w(a b) # ["a", "b"] %w|a b| # ["a", "b"] 区切り文字は()以外にも<>とか[]とか||でも Stringの配列で式展開(W大文字) c="CCC" %W|a b #{c}| # ["a", "b", "CCC"] Symbolの配列 %i(a b) # [:a, :b] Symbolの配列でも式展開できる c="CCC" %I|a b #{c}| # [:a, :b, :CCC] 正規表現 /Ruby/i # 大文字小文字区別しない String 1文字 ?a # "a" 普通の式展開
Rubyはローカル変数への参照と無引数のメソッド呼び出しを同じ記法で書けるので、コードを読むときに混乱したりtypoでNoMethodErrorを出してがっかりすることが多々あります。 幸いなことにこれらは静的に解析することができるので、ローカル変数への参照を色付けするVimプラグインを書いた。 Github/ruby_hl_lvar.vim すごく便利な気がする!!!!!!! Rubyインタフェース(>=1.9)が有効になったVimが必要なのでご注意ください。MacVim 7.4 KaoriYa 20140107で動作確認しました。 しくみ Ruby1.9以降に標準添付されているripperというライブラリで、Rubyの構文解析をしてローカル変数への参照を取り出しています。 require 'ripper' Ripper.sexp(<<EOS) a = 10 b = 20 c = a +
こんにちは、@sachin21です。 複数の配列を同時にeachしたいけど仕方わからない、、少しつまずいた。。 でも解決 配列を代入してから ary1 = ['hoge','fuga', 'foo', 'baz'] ary2 = [user_1, user_2, user_3, user_4, user_4] ary1.zip(ary2).each do |keyword, user_id| p keyword p user_id end てな感じにすると同時に取り出せる!!
とにかく小さくて安いのに、ほぼArduinoとして使える。 そしてズボンのコインポケットに入れて持ち歩けるので電車内hackに便利。 Digispark購入ページ DigiSpark wiki ソースコードはここに置いておいた。 デジタル出力・アナログ出力・アナログ入力・Mac上のRubyとのUSB通信を試した。 https://github.com/shokai/digispark-study 「webサービスと連動したちょっとしたハードウェア」にはArduinoはオーバースペックだと思うので、DigiSparkちょうどいいと思う。 普通のArduinoとの違い 詳しくは digispark:tutorials:basics [Digistump Wiki] 多少制限はある。 IOピン数が6本、PCとUSB通信する場合は4本しか無い プログラムを書き込めるメモリ領域が6Kbyteしかない
こんな感じかな。 ruby -e 'trap(:INT){print"\e[?25h\e[0;0H";exit(0)};x,y=[`tput lines`,`tput cols`].map{|n|n.to_i/2};print"\e[?25l";ARGF.read.scan(/[\w.]+/).unshift(*%w(3 2 1 0 Go!)).cycle{|w|c=w.size/2;w=w.dup;cw=w[c];w[c]="\e[31m#{cw}\e[0m";print"\e[2J\e[#{x};#{y-c}H",w;sleep(0.3)}' TEXT Hosted by Gifzo TEXT Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.
Spice Lifeの五十嵐邦明さんの一橋大学のRuby概論スライドがかなりすばらしかったのでまとめてみました。こんなキャッチーな資料がネットで手に入るというのは本当にありがたい限りです! (05-02 07:45) MATSUOKA Koheiさんの2014年度の講義資料を追加 ちなみに、スライドがたくさんあるので3部作ですw (1)『Ruby概論のスライドがすばらしかったのでまとめてみた(第一部)』<= 今ここ< strong> (2)『Ruby 概論のスライドが素晴らしかったのでまとめてみた(第2部)』 (3)『Ruby 概論のスライドが素晴らしかったのでまとめてみた(第3部)』 🗻 2014年ブログ一橋大学でRubyの非常勤講師をはじめました MATSUOKA Koheiさんが講師をされている2014年に現在開催中のRuby講義の資料です。勉強になります! Ruby講義第1回:
この記事は Vim Advent Calendar 342 日目の記事です。 昨日は id:leafcage さんの README.mdをVimのヘルプファイルから生成する - cafegale でした。とても素晴らしいプラグインですね。本プラグインでも早速活用させていただきました。 vim-endwise について 例えば Ruby では様々な構文の終わりを end というキーワードで表します。という訳で Ruby ではコードが end だらけになるわけですがこれをいちいち手で打つのは面倒です。これの自動入力を行ってくれるのが tpope/vim-endwise です。 例えば、 このときに <CR> を打つと、 このように end が自動で挿入されます。便利! Ruby の他には Lua, Vim script, sh, VB, Elixir に対応しています。 vim-smartin
IRC (あいあーるしー) 「教養チャンネル」とも「衒学チャンネル」とも呼ばれる。ほとんどのタイミングで日本史か中欧史か仏教史か英語史の話をしている。たまにRubyの話題になると逆に違和感が…ISeq (あいせく) RubyVM::InstructionSequence のこと。長いので誰も正式名称で呼ぼうとしない。rubyスクリプトのいくつかある表現型の中でもっとも低レベルな表現。現在、rubyスクリプトからISeqを生成する機能は公開されているが、そのようにして生成したISeqを実行する機能はセキュリティ上の懸念から(作られてはいるが)封印されている。→ ASTID (あいでぃー) 型。rubyレベルでいうSymbolにほぼ相当するもの(ちょっとだけ違う)。objcプログラマーはこれを見てVALUEと混乱しないように。assn (あさしん) IRCで彼らがアサシンと呼んでいるものは暗殺
住所を緯度経度に直したり、緯度経度から住所を求めたりする操作をgeocodingと言って、Google Maps APIを使うとまあたいていのことはできる。 ロケタッチAPIとか、Yahoo!ジオコーダAPIという手もある。 それはともかく、そのへんをパチパチ叩くコードを書いていて、「こんなのもうとっくに誰かが書いてんじゃないかなー」と思ってぐぐってみたらなんかすごいのが出てきた。 Ruby Geocoder 住所と緯度経度の相互変換はもちろん、距離や範囲の扱い、Google以外のAPIへの対応、キャッシュ処理など、「実装しようかなー。でもめんどくさいよね」とか思って先送りしていたような機能がほとんど全部実装されている。 住所の取得 require 'geocoder' # 日本語ロケールに設定 Geocoder.configure( :language => :ja, :units =>
昨今、プロジェクトごとに言語のバージョンや、各種設定、ライブラリを使い分けることが当たり前となってきている。 上記のような使い分けは、Visual Studio/Eclipse/Xcodeなど、IDEにひもづいたプロジェクトファイルがある環境では当たり前だった概念ではある。プロジェクトディレクトリトップに.xxxconfig的なファイルを置くという手法がデファクトスタンダードとなったことによって、コマンドライナー(ライフライナー的)たちの間でもそういった文化が広がりつつあると捉えている。 プログラミング言語について、Rubyのrvm/rbenvのように、複数のバージョンの実行系を気軽に切り替えられるようになってきている。また、Rubyのrvmでは.rvmrc、rbenvでは.rbenv-versionというファイル名で設定を記述していたものを、両者とも.ruby-versionというファイ
Java で書かれた日本語形態素解析ライブラリ Kuromoji を Perl から使ってみたいなー、と思って、別の言語のプログラムから使いやすいようなインターフェイスを書きました。 Kuromoji について kuromoji - japanese morphological analyzer Java で書かれたオープンソースの日本語の形態素解析ライブラリです。 検索用のライブラリらしくて、Apache Lucene と Apache Solr に組み込まれているらしいです。 もちろん検索エンジンとは独立して利用することも可能です。 独立して使用する場合は、単に jar ファイルをダウンロードしてきて Java のライブラリパスに追加するだけ (あるいは公開されている Maven リポジトリを使用して依存関係を解決するだけ) で形態素解析できるようになります。 便利ですね。 Java
最近、vimの設定をやり直すスイッチが入って大分更新されたので改めて久々にvimrcを晒す。 ファイル自体はjoker1007/dotfilesにある。 もし参考にされる方が居たら、丸々コピーすると色々問題あるかもしれないんで、適当に一部を抜粋するのが良いと思います。 特にキーマッピングは慣れがあるので、自分で決めた方が良いです。 実際には必要無いけど、環境に依って使うかもしれない設定とか混じってます。 文字コード周りは正直微妙。もうちょっと良い設定があったら知りたい。 macvim-kaoriya向けのlibrubyのローディングはファイル名調整しないと駄目かも。 最近は自分でコンパイルオプション弄ってrbenvで入れたrubyとリンクさせてるので、自分自身は使っていない設定。 vimrcの下にsnippet定義も書いてあります。 vimrc set nocompatible " 文字コ
(追記)色々改良された → ArduinoとRubyで赤外線リモコン をgemにした ————- 帰宅前にスマホからクーラーをつけれるようにした。Arduinoと合計150円ぐらいの部品と、このRubyで書いたアプリ https://github.com/shokai/arduino_ir_remote だけで使える。 ソフトウェア部分はまだアップデートされるだろうけど、(rubygemにするとか)ハードウェアはもうこれ以上変更しないので是非自作してお試しください。 動かなかったり欠陥があったら、githubのissueかtwitterで@shokaiにどうぞ。 動いている証拠動画 実際に使いたいのはエアコンだけど、エアコンは地味なのでテレビでやってみた。 研究室にあるパナソニックとシャープのテレビで試したら両方とも動いた。 パナソニックのテレビから学習した赤外線データはgistに貼った。
RubexはRuby/Sinatra製のソフトウェア(ソースコードは公開されていますがライセンスは明記されていません)です。 正規表現は開発者であれば誰しもが使えると思いますが、一度はハマった経験があるはずです。マッチするはずなのにマッチしなかったり、変なマッチをしたり…そんな正規表現の書き方をチェックできるソフトウェアがRubexです。 トップページです。上のテキストボックスに正規表現を、下にテストの文字列を入力します。 例えばこんな感じ。ちゃんとヒットします。 ヒットしない場合はno matchesと出ます。 括弧を使ってCapturesを見ることもできます。 Rubexは入力された正規表現を一度サーバに送り、それを解析した上で返却します。正規表現はRubyベースになります。Rubularのクローンとして自前で立ち上げるのに使えそうです。 MOONGIFTはこう見る 面白い点としては正
遺伝的アルゴリズム(GA)でサーバの自動チューニングをします。 GAを機械学習を一つと書いてしまいましたが違うようなのでタイトルを変更させて頂きました。 遺伝的アルゴリズムについては↓の動画が分かりやすいです http://www.youtube.com/watch?v=yZJ1V-zv_gU まずは通常の負荷テストができるところまで準備する必要があります。攻撃用のサーバをターゲットと(ネットワーク的に)近い場所に用意してください。負荷を掛ける側(Attacker)にも相応のスペックは必要です。 ストレスツールはコマンドラインから利用出来るものでしたらなんでもかまいません。ab(Apache Bench)などは最初から入っているので手軽ですが、今回は「グリーン破壊」というソフトを利用しました(グリーン破壊のインストール方法は本家サイトに譲ります) 自動チューニングを行うにあたり、ターゲット
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く