昼寝王子のエンジニアメモスマートフォン用の表示で見る昼寝王子のエンジニアメモこの広告は、90日以上更新していないブログに表示しています。2017-03-02rubyのtest/unitを失敗ケースがあっても続けたい!今回はrubyのテストツール?であるtest/unitについて使っていて不便だと感じた点があったので、まとめました。私はある業務で、「テストケースをどれくらい網羅しているのか」を測定し、精度を図りたいことがありました。その時にこのtest/unitを使ったのですが、test/unitでは、テストケースで「失敗」してしまうとそこで処理が中断してしまします。そのため、それ以降に書いたテストは実行されません。すると、トータルで何回成功して、何回失敗したのかはわかりません。そこで調べてみると、失敗した際にはrubyの方で例外処理扱いされているようなので、その部分をrescueして、その際にあるインスタンス変数のカウントを1加えるというようにすることにしました。ROLLBACK」というエラーがなかなか消えなかったので、その対処法をメモしておきます。原因1:時間切れ1つ目の原因として考えられるのが「タイムアウトしてしまった」という場合です。その場合はタイムアウトする時間を指定してあげましょう。MySQLには「innodb_lock_wait_timeout」というものがあり、ここでタイムアウトの時間を指定してあげることができます。ここの数値に入れた値が反映されます。原因2:パケットのサイズによるもの2つ目の原因として考えられるのが「いれようとするデータ容量が大きすぎる」という場合です。この場合は、入れられるデータ容量の最大値を指定してあげましょう。MySQLには「max_allowed_packet」というものがあり、ここでデータ容量の最大値を指定してあげることができます。ここの数値に入れた値が反映されます。4194304私は、この二つの方法を実装したところ無事解決しました。ROLLBACKを解消した話Tweet広告を非表示にするもっと読むコメントを書く2017-01-31スマホ対応のWebページを作ってみる2HTML,JS.CSS,jQuery前回に引き続き行き詰まったところのメモをする。1、動的に生成した要素は要素であって要素でないjQueryなどで動的に要素を書き込むと、document.getElementsByClassNameなどでアクセスした時に「そんなものはない」と言われることがあります。その要素がクリックされたら、と言うイベントを設定してもうまく動かない時があります(実際動きませんでした)。2、SVGで超簡単に折れ線グラフを書いてみるSVGでグラフを書くのは一見難しそうですが、単純なものなら一瞬でかけます。/></svg>これで終わりです。svg自体の大きさを指定して、その後に、座標を指定するだけで簡単に描画できるのです。14:08スマホ対応のWebページを作ってみる2Tweet広告を非表示にするもっと読むコメントを書く2017-01-31スマホ対応のWebページを作ってみるHTML,JS.CSS,jQuery今までwebアプリケーションは何度か作ってみたことはあったが、スマホ用のものは作ったことがなかった。今後も作る機会があると思うので、ここに気づいたことをまとめておこうと思う。1.viewportの設定まずスマホに対応させるために一番最初に行ったことがviewportの設定である。qiita.com細かいことはここに書いてあるみたいだが結局のところ以下のように宣言しておけばいいらしい。name="viewport">2.bootstrapを使うwebアプリを使う時に私の中で必須なのがこのbootstrapである。労力をかけずにそれなりのデザインができるのでお勧めである。導入の方法は簡単で、公式ページからbootstrapをダウンロードして、自分のディレクトリに移し、呼び出してあげるだけである。http://getbootstrap.com/bootstrapは、あらかじめCSSが書かれているものにid名やクラス名を合わせることでスタイルを適応させるというものである。table」と検索すればどのようにクラス名をつければいいデザインになるかわかったりする。3.スーパーリロードまあ、これはローカルにサーバーを立ててる時に起こりやすいことなんだけど、cssを書き換えてもサーバーにキャッシュされてしまって更新しても変更が反映されないことがある。そんな時はこのスーパーリロードである。キャッシュとかもの含め更新してくれるので、cssの変更がきちんと反映される。Mac+chromeの場合は「Ctrl+更新ボタン」である。ブラウザとOSによって異なるので詳しいことはこれを見ると良い。www.netyasun.comとりあえず今回はこんなところかな。10:27スマホ対応のWebページを作ってみるTweet広告を非表示にするもっと読むコメントを書く2016-11-21rubyでのスクレイピングはCapybaraに決まり2では、早速Capybaraを使うための準備をしたいと思います。今回はrubyはバージョン2.2.5Bundlerはバージョン1.13.6を使って説明します。動くようにするためには以下のサイトを参考にしましたqiita.comとりあえずこのサイトの言われる通りにしましょう。phantomjsGemファイルを作成(今の作業ディレクトリに「Gemfile」というものを作りそこに書き込みます。'capybara'これで準備は完了です。rubyのバージョンが古いとうまくいかない可能性が高いです。動かしてみようでは早速Capybaraを使っていきましょう。このコードをコピペして適当なファイル名をつけて保存してください。session.titleそして、試しに実行してみましょう。JAPANこれが出たら成功です。これが最小限のサンプルです。タイトルを取るだけならNokogiriでもできます。動作確認のためのサンプルです。次回はログインが必要なサイトにログインして、その中のデータを取ってきたいと思います。17:29rubyでのスクレイピングはCapybaraに決まり2Tweet広告を非表示にするもっと読むコメントを書く2016-11-21rubyでのスクレイピングはCapybaraに決まり今回は、rubyでスクレイピングを行う際におそらく最強(わたし的に)だと考えているCapybaraについて紹介します。そもそもCapybaraとはCapybaraは、本来はWebページのテストを行うためのツールです。そのため、「フォームに値を入れて、あるボタンをクリックしたら」といったGUI的な観点でwebページを遷移させることができます。(そういうメソッドがあります。)今までURLをひたすらたどっていたスクレイピングとは根本から違います。Capybaraの何がすごいの?先ほども話しましたが、従来のスクレイピングではURLがすべてでした。Mechanizeを使えばログイン後のページを取得したりもできましたがJSが動かないなどの問題もありました。このCapybaraではログインというのもクリック操作でできてしまうため裏でJSが動いていたとしても問題ないのです。こんなに熱く語ってもスクレイピング自体をやったことがない人には伝わらないんでしょうけど。Capybaraのデメリット一応デメリットもあります。それは速度の遅さです。NokogiriやMechanizeのスクレイピングではsleepを挟まなければいけないほど早かったですが、Capybaraは標準で2秒間のインターバルを置くので遅いです。そのため、簡単なスクレイピングでは用いらないのが常識です。次回以降使い方などを紹介していこうと思います。16:55rubyでのスクレイピングはCapybaraに決まりTweet広告を非表示にするもっと読むコメントを書く2016-11-21【初心者が1時間で】Rubyでsvmを用いた機械学習プログラムを作ってみる今回は、rubyでsvmを用いた機械学習プログラムについてまとめます。私が機械学習という言葉を聞いたのはつい最近で、色々な文献を見て回りましたがイマイチ理解しきれませんでした。いうのも、ある程度わかったつもりになっていてもそれを実際に動かすことができなかったからです。今回扱ったsvmもその一つです。「多くのデータを与えることでデータの境界線を自動で引いてくれて、それを元に分類をしてくれるもの」みたいな感じかな?という理解でした。どの文献を読んでも「理屈は難しいが動かせばわかる」と書いてあって「だから、動かせないんだよ!」って思ってました。そこで、とりあえずどんなに小さいものでもいいから動かせるようにしたいと思い、どうにかしてrubyで機械学習(今回はsvmを用いた分類)を行うようなプログラムを動かせるようになったのでどのような準備をしたのかから詳しくまとめたいと思います。準備するものまずはrubyでsvmを用いた機械学習プログラムを作る上で必要となるものの準備を行います。今回、私はMacでこの作業を進めました。・libsvm・liblinearこの二つのインストールにはhttp://blog.tsuda.me/computer/2013/05/19/ruby-svm/このサイトを参考にしました。'svm'をすればsvmが使えるようになります。ここから実際にコードを動かすことをしていきます。実際に動かす今回一番最初に動かしたコードがこちらです。SvmKlass.newsvm.trainsvm.test-http://hongo35.hatenablog.com/entry/2013/08/04/133348より引用なんとなくですが、trainの部分で学習して、それを元にtestで予測のテストをしているのがわかると思います。Problem.new([データAに対する答え,データBに対する答え],[[データA],[データB]])このような形で教師データを与えているのです。言ってもこのサンプルは3次元なのでよくわからなかったので、こんな感じに書き換えました。SvmKlass.newsvm.trainsvm.test-これで以下のような感じの線が引かれてるイメージになります。イメージなのでこのようなグラフは描画されません。この線に対して上の部分が「1」、下の部分が「-1」というように分類されます。試しに0,1という点について分類させると「1」という結果が返ってきたと思います。これが一番簡単なsvmを用いた分類を行うプログラムです。教師データを増やすと、この境界線が変わっていくことがわかると思います。興味がある方は細かくデータを変え、予測させるデータを変えるとわかると思います。今回は分かりやすくするために、2値の分類(1と-1)を行いましたが、データの与え方さえ変えれば3値の分類もできます。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。