カテゴリー: Ruby

【Raspberry Pi】RubyのコンパイルからSSHまでを設定

こんにちは、しきゆらです。

今回は、前回にセットアップしたRaspberry PiにRubyをコンパイルし、SSH接続ができるようにします。

 

先回の記事はこちら

【Raspberry Pi】OSのインストールから日本語化まで

 

Continue reading “【Raspberry Pi】RubyのコンパイルからSSHまでを設定”

【Ruby】CSVをデータベースのように扱う

こんにちは、しきゆらです。

今回は、タイトルにある通りCSVに関するメモです。

 

時々触ることになるCSVですが、普通のDBでいいじゃん、って思いませんか?

私はそう思ってあまり触ってこなかったんですが、DBを適当に作ると後々変更しにくくなるということにようやく気付きました。

そこで、今回は忘れないうちに基本的なCSVの触り方をメモしておきます。

 

Continue reading “【Ruby】CSVをデータベースのように扱う”

【Ruby】メールを送信する

こんにちは、しきゆらです。

昨年に投稿した「【Ruby】メールを送受信する」のプログラムを書き直す機会があったので、改めて書いておきます。

 

上記の投稿に載せたスクリプトをクラスに直して、いくつかのバグを修正しました。

その結果はこれ

 

極力外部のライブラリを使わずにメール機能を実装してみました。

使っているのは、標準添付ライブラリのみ。

 

基本的な使い方

SendMailクラスのインスタンスを作るときに送信先、送信者のメールアドレスとオプションを渡します。

オプションでは、smtpサーバ名・ポート番号・SSLを使うかどうかなどを連想配列で渡します。

 

認証情報をsecret.jsonというファイルにJSON形式で書きます。

例えば以下のような感じ。

これを読み込んで使うようになっています。

 

デフォルトでは、Gmailのsmtpサーバを利用するようになっています。

Googleで2段階認証を設定している場合は、ログインするためのパスワードでは認証できません。

これに対しては、アプリケーション用のパスワードを作成して、secret.jsonに書きます。

作成方法は以下あたりから。

 

送信するときは、そのままsendメソッドを使います。

引数として、subjectとbodyを文字列として渡してやります。

これだけでメールを送ることができます。

一定のタイミングで通知を送るとか、使い方はそれなりにありそう。

 

件名の文字化け対策

また、以前のスクリプトでは件名が文字化けしてしまいます。

これをなんとかするために、create_subjectでいい感じに変換しています。

参考としたのは、以下のサイトたち。

charsetを指定しただけでは件名が化けてしまうようです。

どうも、アスキー文字のみしか使えないようです。

これをなんとかするためには、

という形で書かないといけないようです。

UTF-8で場合は

とします。

エンコードはBase64というものを使ってエンコードしています。

 

また、一定の文字数で区切らないといけないようです。

これに関しては、Base64でエンコードするといい感じのところで区切り文字を入れてくれます。

そこでsplitして、それぞれの文字列を上記のフォーマットで囲ってやっています。

 

 

ブログを見ると、メールを書くプログラムをいつかいたのかと思ったら約1年前だったとは。

久々にこの遺産が役に立ったので、驚きました。

思いついたら書いて、保持しておくのは大事なんだなと思いました。

 

おわり

[Ruby]k-means法を実装してみた

こんにちは、しきゆらです。

今回はクラスタリング手法の一つであるk-means法を実装してみたのでまとめてみます。

使用言語は、もちろんRubyです。

なお、ライブラリ等は使わずに実装してみました。

Continue reading “[Ruby]k-means法を実装してみた”

【Ruby】MacでRuby2.4.0をコンパイルしてみる

こんにちは、しきゆらです

今回は、(この記事を書いている時点での)Ruby最新バージョンである2.4.0をコンパイル&インストールしていきます

 

詳しい変更点などは、Rubyの公式サイトからどうぞ

いつも通り高速化とかがメインなのかしら

大きく変わりそうなところは「Unify Fixnum and Bignum into Integer」とか

Introduce hash table improvement (by Vladimir Makarov)」あたりかしら

 

それではれっつこんぱいる!

Continue reading “【Ruby】MacでRuby2.4.0をコンパイルしてみる”

【Ruby】RubyでJSONをパースした時のエラー

こんにちは、しきゆらです

 

前回の記事でも書きましたが、最近はJavaScriptをよく書いています

その中で、サーバへデータを送信する時はオブジェクトをJSONとして送信するのが便利だということで

JSON文字列をJavaScriptで作って、サーバへ送っています

 

そして、サーバ側はRubyで書いているのですが

JSON文字列をRubyのオブジェクトに変換するためにはjsonというgemを使います

そこで注意することがあったのでメモしておきます

 

Continue reading “【Ruby】RubyでJSONをパースした時のエラー”

【Ruby/サーバサイド】サーバのエラーもレスポンスとして返そう

こんにちは、しきゆらです

自分の中で、絶賛ブログ更新キャンペーン中です

 

それは置いておいて、今回の内容は

「サーバでのエラーもクライアントに返しちゃおう」

というお話です

Continue reading “【Ruby/サーバサイド】サーバのエラーもレスポンスとして返そう”

【Ruby】デバッグにはloadを使おう

こんにちは、しきゆらです

今回はメモ的なもの

 

今までは、コードを書いたら実際に実行していたんですが

変数や実行した結果を出力するためのコードを書くのが面倒に思っていたので

irbでデバッグを行うようになりました

 

その中で、自分で書いたコードを

として読み込んでいました

(この時は、.rbなしでも読み込んでくれるんですね。初めて知った・・・)

しかし、requireは一度読み込んだ後にファイルを修正した時、再読み込みができません

その度に一旦exitしてirbを起動し直すのがめんどい・・・

 

ということで

として読み込むようにしてみました

(loadでは.rbまで入れないとだめっぽい)

この場合はファイルを修正し、もう一度上記コードを実行すると再読み込みができます

これにより、煩わしいものが少し軽減されました

 

・・・ということで

とても雑いですが、参考になれば

さらに、もっといい方法があれば教えていただければ幸いです

 

おわり

【Ruby】木構造を定義してみる 2

こんにちは、しきゆらです

 

前回の記事で木構造を作るプログラムを書きましたが、子ノードの追加がわかりにくかったのですこし変更しました

なんで、前回の追加の仕方だったのかなどを合わせてメモしておきます

 

Continue reading “【Ruby】木構造を定義してみる 2”

【Ruby】木構造を定義してみる

こんにちは、しきゆらです

 

今回は、Rubyで木構造を作ってみたので書いておきます

 

Continue reading “【Ruby】木構造を定義してみる”