ひとりごと

凡人プログラマが何か書きます。。。

Rubyのお勉強 2時限目

家の近くのハンバーガ屋に来てるけど、勉強している人が多い。
値段設定が少し高いけど、静かでいいね。
今日もRubyの勉強やっていきます。

これを書く前にRuby文字コードについて少し調べてみた

この記事↓によると

衝撃の事実!? "# -*- encoding: utf-8 -*-"じゃなくてもいいんです! - Qiita

ということらしい。

String クラス

エンコーディングを変える

# encoding: utf-8

p s1 = '太郎' 
p s2 = s1.encode("Shift_JIS")

実行結果

"太郎"
"\x{91BE}\x{9859}"

kconv ライブラリ

たいていの日本語の文字コード変換はkconvライブラリを使えば事足りるらしい。覚えておこう。

# encoding: utf-8

require 'kconv'

p s = '太郎'
p s_eucjp = s.tosjis

この場合、変換元の文字コードを推測して文字コードを変換している

実行結果

"太郎"
"\x{91BE}\x{9859}"

お店が混んできた。一旦中断。

Rubyのお勉強 1時限目

ここ最近涼しかったのに今日はめっちゃ暑い。。。

最近Qiitaで見かけた記事↓を読んでいたら、すごいRubyがやりたくなってきた。

ズンドコキヨシを見かけた男子中学生がプログラミングを勉強していく話 第1話 - Qiita

Rubyは基本的な文法をやったところで、特に作るものもなくて放置していたが、 また勉強し直してみようと思う。

本屋に行って「Rubyによるクローラー開発技法」という本を買ってきたので、 これを進めていく。

$ ruby --version
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin14]

うちのmacには以前入れたRuby2.2が入っていた。 irb使っていろいろ試してみる。

Stringクラス

文字数を得る

2.2.4 :003 > 'banana'.length
 => 6
2.2.4 :005 > 'ばなな'.length
 => 3

バイト数を得る

2.2.4 :006 > 'ばなな'.bytesize
 => 9

文字列が空かどうか

2.2.4 :001 > 'apple'.empty?
 => false
2.2.4 :002 > ''.empty?
 => true

エンコーディングを得る

2.2.4 :013 > 'abc'.encoding
 => #<Encoding:UTF-8>

また仕事から帰ってきたらやろう。

Linuxカーネルソースリーディング 1時限目


とりあえず一通りの初期設定はやってみたけど、まだあまりはてなぶろぐの使い方がよくわかっていない。。。

今日からだいぶ前に買って放置していた「デーモン君のソース探検」という本を実際に手を動かしながら、読み進めていこうと思う。 この本は中学生のデーモン君がBSDソースコードを読み解いていく本で、位置付け的には入門書の次くらいに読むと良い本らしい。 とりあえずC言語の基本的な知識があれば、読めそう。

自分は会社だとLinuxで開発をしているので、NetBSDのソースを使っている部分をまるまるLinuxに置き換えて手元での確認をしていこうと思う。

実行環境は OS X El Capitan バージョン10.11.6

デーモン君のソース探検 序章

この本は基本的には対話形式で物語が進んでいく。 序章では学校での先生とデーモン君のやりとりが書かれている。

序章でやっていることは、

  • NetBSD 1.6のソースをcvsからとってくる
  • locateコマンドのデータベース更新
  • マニュアルの分類について

の3つなので、ひとつずつやっていく。

ソース取得

どうやらデーモン君は、/usr 配下にsrcディレクトリを作ってそこにNetBSD 1.6のソースを突っ込んでいるようだ。

$ cd /usr
$ ls
X11        X11R6      adic       bin        include    lib        libexec    local      sbin       share      standalone

移動してみると、何かいろいろとディレクトリがある。 調べてみたら、 /usrLinuxでもBSD系でも、共有可能なファイルを置く場所らしい。 各種実行コマンドのバイナリや、ライブラリ、Cのヘッダファイル等がおいてあり、 /usr/src 自体はカーネルビルド時に設定すれば作ってくれるようだ。

今回はひとまず ~/work/ 配下にMainlineのLinuxカーネルのソースを持ってくる。

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

今日はここでおしまい。

ブログを開設してみた

夜中のテンションでブログを開設してみた

 

今日は疲れたので寝るッ!

(^-^)