サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
qiita.com/kidach1
この記事は Akatsuki Advent Calendar 2017 の21日目の記事です。 背景 最近はARにおける3Dグラフィックスをテーマとして取り組んでいます(具体的なアウトプット事例はこちら)。AR上での写実性の向上に関する論文を読んでいると、レンダラのアルゴリズムとしてラスタライズではなくレイトレーシング(をベースとする写実的な描画手法)を採用している研究が複数見つかります*1 。今回はそのキャッチアップを兼ねて、実際に手を動かして基本的なレイトレーサーを実装してみました。 先にレンダリング結果 ゲームエンジンやライブラリ未使用、スクラッチのC++コードのみで描画。 レイトレーシングについて カメラから画素を経由してレイ(視線)を飛ばし、レイの物体との衝突や反射状況などを調べ経路を計算していき、最終的な画素色を決定していく手法。 メリット 写実的な描画が可能 鏡面反射表現に優
概要 メタプログラミングRuby勉強録。 今回のトピックはメタプログラミングの代名詞の一つ、オープンクラスです。 オープンクラスとは 既存するクラスを好きな場所で再オープンし、 メソッド修正・追加など任意の変更を加えられる機能のこと。 例えば 以下のような文字列操作メソッドがあったとします。 def love_ruby(str) str + ' I love Ruby!' end love_ruby('My name is kidachi.') => "My name is kidachi. I love Ruby!"
はじめに 2017/1/28開催の VR Tech Tokyo #5 での発表と試遊会(プロダクトを参加者の方々にプレイしてもらう場)でかなり多くの学びが得られたので、整理を兼ねてまとめます。 ※ 今回の話の前段に OculusTouch対応アプリMikuTimeVRをPreview公開で育てている話 があります。 (自分の)発表内容のまとめ 試遊会での学び 全体の感想 という構成です。 発表内容のまとめ 話したこと MikuTimeVRとは? 開発時大事にしていること #MikuTimeVR とは? 前記事 にも書いたので、アップデート分を軽く。 ミクさんと一緒に踊れるダンスモードに 動画鑑賞モードが加わった ※ gifを踏むともう少し全体観が分かる動画に飛びます。 球体にYoutube動画をストリーミング再生で映し出しており、それを拡大して中に入ってミクさんと一緒に鑑賞したり、踊ったり
この記事は Akatsuki Advent Calendar 2016 の20日目の記事です。 はじめに 先日12/6(火)にOculusTouchが正式ローンチされました。 HTC ViveのViveコントローラーやPSVRで使うPSMoveと比較してもそのクオリティは高く、そこに未来を見出した方々のツイートで(自分のTLは)溢れています。 そんな中この波に乗らないわけにはいかんということで、自分もTouch対応VRアプリケーションをPreview公開しました。今回はその #MikuTimeVR について、開発プロセスで得られた知見を交えつつ話します。 ※ Disclaimer たまたま会社のアドベントカレンダーへの投稿になりますが、今回の内容は全て個人的活動によるものであり、所属する企業のプロジェクトとは何の関係もありません。ならびに、MikuTimeVRで利用しているTda式初音ミク
private void addDissmissListener(CardModel cardModel) { cardModel.setOnCardDismissedListener(new CardModel.OnCardDismissedListener() { @Override public void onLike(final CardContainer.OnLikeListener callback) { Log.i(TAG, "I like the card"); openDialog(callback); } @Override public void onDislike() { Log.i(TAG, "I dislike the card"); } }); } private void openDialog(final CardContainer.OnLikeListen
用語整理 ビルド コンパイルとリンクを経て実行可能ファイルを生成。 コンパイル ソースコードを中間オブジェクトに変換。 リンク 諸々のライブラリやファイルを結合させて一つにまとめる。 コンパイラディレクティブ Objective-Cにおいて、@で始まるものはプログラムでは無くコンパイラへの指示。 これをコンパイラディレクティブと言う。 変数の利用 変数を利用するには 最初に宣言文を記述しておく必要がある。
これだけ。 gemのソースは勉強になるのでどんどん読みましょう! おまけ(RubyMineユーザの方) デフォルトでは「RubyMineで開く」コマンドのパスが通ってないので、別途RubyMine側で設定してやる必要があります。 ターミナルからRubyMineを呼んで任意ファイルを開く http://qiita.com/kidachi_/items/bf2316038fbbd7d1ed2a 設定できたら、export BUNDLER_EDITOR=mineでok。
あるニュースを得ることに関心があるクラス メリット ニュースの発信者と受信者の間の依存関係を排除する。 問題のあるコード 従業員の給与の変化を経理部門に伝えるシステム 従業員クラス class Employee attr_reader :salary attr_accessor :title, :name def initialize( name, title, salary, payroll) @name = name @title = title @salary = salary @payroll = payroll end def salary=(new_salary) @salary = new_salary @payroll.update(self) end end
Ruby on Rails Tutorialのエッセンスを自分なりに整理してみる5 [Ruby基礎] ブロックとProcをちゃんと理解する http://qiita.com/kidachi_/items/15cfee9ec66804c3afd2 の続き。 Ruby on Rails Tutorial(chapter5) http://railstutorial.jp/chapters/filling-in-the-layout#sec-layout_exercises TwitterBootstrapの導入 Bootstrapでは、動的なCSS生成のためにLESSを使用している。 一方でRailsのAssetPipeline(詳細後述)はデフォルトではSassをサポートする。 →bootstrap-sass(gem)を導入し、Sassベースで扱えるようにする。 source 'https:
API経由で取得した日付情報(String)を扱う時とか。 いつも忘れるのでメモ。 String to Time Time.parse() # Time to String > str = Time.now.to_s => "2014-04-07 10:00:00" # String to Time > time = Time.parse(str) => 2014-04-07 10:00:00 +0900
東京Node学園祭2015事前まとめその2。 大規模Node.jsを支えるロードバランスとオートスケールの独自実装(FRPもあるよ) - Qiita でインフラ制御にFRPを適用した話の深掘りです。 前提知識 Reactive Programming in JavaScript 【翻訳】あなたが求めていたリアクティブプログラミング入門 個人的には、FRPは あらゆるイベント/データを時間軸上に連続する一つのリスト(実際はストリーム)と捉えることで、 関数型のパラダイムを適用出来る 強力なオペレータ群が使える・コードの見通しが向上する 「時間軸上に連続したイベント」という概念が本質的にAsynchronous 非同期処理(エラーハンドリング含む)を抽象度高くスマートに書ける といったメリットがあると理解しています。 今回実現したかったこと Redis内で刻々と更新されていくインスタンス毎のコ
概要 今更ながら本格的にRailsを触る事になったのでメモ。 Ruby on Rails Tutorialがとても良かったので、 そこで学んだエッセンスを自分なりに整理してみる。 Ruby on Rails Tutorial(chapter2) http://railstutorial.jp/chapters/a-demo-app?version=4.0#top リソースとは データモデルとwebインターフェイスが組み合わさったもの。 データモデルとは 現実世界のあるモノを分類/抽象化して落とし込んだカタマリ (より具体的にいえば(今回の文脈では)「RDBMSに則って設計されたデータ群」と同義) ##### 「User」を表すデータモデルのサンプル column type
Chefとは サーバ設定や更新を自動化するツール。 レポジトリ>クックブック>レシピ という階層で管理する。 一つのシステムにつきレポジトリ一つ、という粒度。 利用形態には以下の二つがある。 Chef-Server + Chef-Client →Chef ClientがChef Serverからhttpで必要な情報をGETし、実行する。ChefServerの管理はちょっと大変。 Chef-Solo →サーバ管理を必要としないスタンドアロン版。 Chefのインストール
というテーマで東京Node学園祭2015でセッションさせて頂くことになったので、先に整理/メモ的ななにかを。 (追記)以下資料で発表しました。 大規模Node.jsを支える ロードバランスとオートスケールの独自実装 http://www.slideshare.net/kidach1/nodejs-54841327 作ったもの ・スマホゲーム(マルチプレイアクション) 【公式】メザマシフェスティバル(メザフェス) | 株式会社アカツキ https://mezamashi-festival.aktsk.jp ・2D横スクロール ・マルチプレイ ・4人同時対戦 ・座標同期型 ・全国マッチング システム概要 Client: Cocos2d-x (c++) Server: API Server:Rails Websocket Server:Node.js 詳しくは スマホアプリにおけるマルチプレイア
DNSリバインディング攻撃とは 概要 罠サイトと罠DNSサーバを運営する攻撃者が、 短期間にドメイン(FQDN)に対応するIPアドレスを変更することで SameOriginPolicyの範囲内で脆弱性サイトへjsによる攻撃を行う。 ステークホルダー 攻撃者 攻撃者運営のDNS(TTL/キャッシュ生存期間を5秒程度に設定) 攻撃者運営の罠サイト(evil.example.com)(192.0.2.1) 脆弱性サイト(weak.example.jp)(198.51.100.1) 被害者 攻撃の流れ 被害者が罠サイト(evil.example.com)を閲覧 攻撃用JavaScript(※)が被害者に送信される ※例えば「evil.example.com」上の特定コンテンツにアクセスし、得られた情報を192.0.2.1(evil)に返す、など。 攻撃者がDNSのAレコードを操作し、evil.ex
概要 日付だけならjQuery-uiのDatePickerでokだが、今回は日時まで 取得したかったので以下のDateTimePickerを使う。 bootstrap-datetimepicker-rails https://github.com/lubieniebieski/bootstrap-datetimepicker-rails ※DatePickerなら以下を参照 Rails で jQuery-ui の Date Picker を日本語で表示する場合のメモAdd Star http://d.hatena.ne.jp/CortYuming/20130420/p1 流れ Gemfileに追記、bundle install。
概要 Githubでおなじみのアレですね。 これ。 zeroclipboard-railsというgemを使えば一発です。 zeroclipboard-rails https://github.com/zeroclipboard/zeroclipboard-rails 導入手順 Gemfileに追記して、
概要 コピペコードが増えがちなサンプルアプリケーションの設計を例にとって、 STI(単一テーブル継承)とメタプログラミングでDRY(重複排除)してみる。 題材 ユーザが保持している楽曲をジャンルごとに管理するようなアプリケーション。 ユーザページでは、ジャンル別に登録曲を一覧(もっと言うとCRUD)できる。 こんなイメージですね。 kidachi_さん あなたの登録曲一覧 Rock ほげRock ふがRock Pops 未登録です。 Jazz ふーJazz ばーJazz 何も考えないで作ると、rock/pops/jazzそれぞれのモデル、ビュー、コントローラに 似たような記述・コピペが増えそうな予感を感じて頂けたでしょうか。 では、それを防ぐために、まずはSTIから。 (※追記) 実は上記だけの要件であれば userテーブル、musicテーブル、genreテーブルのみを用意して user
基本はlog/production.logやlog/development.logに吐かれるログだが、特定機能のログは別ファイルに残したい場合など。 configへ設定 今回はlog/foo.logに吐かれるようにしてみます。
(2014/1/30追記) Yahoo!のWebAPIやOpenIDでも同様の事象があったようです。 かなり影響の大きい問題だったのですね。 WebAPIやOpenIDでSSLエラーが起きる現象につきまして http://techblog.yahoo.co.jp/maintenance/4/ 問題 curlでとあるhttpsスキームのAPIを叩いたら、こんなエラーが。 SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 後付けで分かりましたが、原因は以下でした。 RHEL5/CentOS5でGlobalSignのルート証明書が有効期限切れで大騒ぎ ht
ArrayやHash、Rangeなど、「オブジェクトの集まり」を表現するクラスには Enumerableがincludeされており、それら全てのクラスで活用できる。 繰り返し処理 each_with_index 配列のkeyとvalueを両方繰り返す。 > %w(Ruby Python Java).each_with_index do |value, key| > puts "#{key}: #{value}" > end 0: Ruby 1: Python 2: Java
概要 Rubyのprivateメソッドを支える、2つのルール ルールを知る事によるメリット ※前者はメタプログラミングRubyより。 2つのルール privateメソッドを呼び出す時は、レシーバは指定できない 自分(self)以外のオブジェクトのメソッドを呼び出すには、レシーバを指定する必要がある ルール1 privateのついたメソッドを呼び出す時は、レシーバは指定できない 例として、レシーバ指定しないパターンと、 明示的にレシーバ指定してしまうパターンを試してみます。 class Sample1 def s1_call_private s1_private # 通常の呼び出し end def s1_call_private_with_receiver self.s1_private # あえてレシーバ(self)を明示して指定 end private def s1_private p
# 適用したいrubyバージョンが既にインストール済みの場合は一度uninstall $ rbenv uninstall 2.1.1 # readlineのinstall $ brew install readline $ brew link readline --force # readlineを利用してruby再install $ RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" $ rbenv install 2.1.1
概要 メタプログラミングRuby勉強録。 前回は [Ruby] メタプログラミングの入り口、オープンクラスを理解する http://qiita.com/kidachi_/items/b1672f1c16e2d15f2d9c 今回のトピックは「Rubyらしいプログラミング」に欠かせない、method_missing()です。 method_missing()とは 何に役立つか 危険性と対策 method_missing()とは メソッド呼び出しの際、継承チェーン(※)を辿った末に呼び出しメソッドが見つからなかった時、 最終的に呼び出されるメソッド。 ※継承チェーンはModule#ancestorsで確認できます。 http://ref.xaio.jp/ruby/classes/module/ancestors class Ruby end r = Ruby.new r.hello => No
Ruby on Rails Tutorialのエッセンスを自分なりに整理11 [Rails][RSpec] Capybaraでフォーム入力をシミュレートしてテストする http://qiita.com/kidachi_/items/b0e607c83e9da9380d7e の続き。 Ruby on Rails Tutorial(chapter8) http://railstutorial.jp/chapters/sign-in-sign-out?version=4.0#top 概要 普通はDeviseなどの便利なgemやライブラリを使うのだろうが、 内部動作を知るためにまとめる。 ※ あくまでRails上での「ベタ」です。 セッション管理の流れ 新規登録時 ユーザ作成にあわせて、remember_token(セッショントークン)生成 暗号化の上dbに保管 ログイン時 新たにremember
手法 ・HTTPヘッダのX-requested-withの値をチェックし、ajaxであることを担保する。 private function validateCSRF() { if( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])==='xmlhttprequest' ){ return true; // not csrf } return false; // invalid request } 理論的背景 SameOriginPolicyより、Ajaxであることはすなわり不正な外部ドメインからのアクセスではない。 上記から、X-requested-withの確認のみでCSRF対策が可能となる。 考慮事項 ・X-requested-withは操作することも可能
概要 パーフェクトRubyを読んでいて便利だと思ったもの一覧です。 Enumerable編 http://qiita.com/kidachi_/items/a00558cfb0a6a3e23f4b Hash編 http://qiita.com/kidachi_/items/651b5b5580be40ad047e String編 http://qiita.com/kidachi_/items/7b355eb355b2d1390cf5 配列の整形 compact 配列からnilを除去。
「Rubyならこう書く」あれこれ Arrayオブジェクト Rangeオブジェクト ブロックとProcオブジェクト シンボルとハッシュ クラスとコンストラクタ (追記) ブロックとProcオブジェクトについては、長くなったので以下に分離しました。 [Ruby基礎] ブロックとProcをちゃんと理解する http://qiita.com/kidachi_/items/15cfee9ec66804c3afd2 配列(Array) 要素の操作 #配列要素の分割 > "foo bar bazz".split => ["foo", "bar", "bazz"] #配列要素の指定文字列での分割 > "fooxbarxxxxbazz".split('x') => ["foo", "bar", "", "", "", "bazz"] #配列要素の順番入れ替え > "foo bar bazz".split.r
Ruby on Rails Tutorialのエッセンスを自分なりに整理してみる7 Railsにおけるリンクの記述方法とそのテスト http://qiita.com/kidachi_/items/d704e7eb63513c3831ae の続き。 Ruby on Rails Tutorial(chapter5) http://railstutorial.jp/chapters/filling-in-the-layout#sec-layout_exercises Rspecのリファクタリング 指定のページが指定の要素を持っている(もしくはいない)かをチェックするテストコード。 require 'spec_helper' describe "Static pages" do describe "Home page" do it "should have the h1 'Sample App'"
次のページ
このページを最初にブックマークしてみませんか?
『@kidach1のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く