読者です 読者をやめる 読者になる 読者になる

0neiric k0uh0t

開発BLOG

[Ruby]正規表現の組み込み変数

Ruby

Ruby正規表現の組み込み変数についてかきます。

/aa/ =~ "aabbcc"

p $` #=> ""
p $& #=> "aa"
p $' #=>  "bbcc"

[Ruby]パーセント記法

Ruby

Rubyのパーセント記法についてまとめておきます。

ダブルクォート文字列

%

%Q

シングルクォート文字列

%q

シンボル

%s

要素がダブルクォート文字列の配列

%W

要素がシングルクォート文字列の配列

%w

コマンド出力

%x

正規表現

%r

[Ruby]組み込みクラスの継承関係

プログラミング

組み込みクラスの継承関係

よく図を見ると思います。

BasicObject 

→ Object

-> Array

-> String

-> ....

こんな感じですね。

サブクラスは、スーパークラスの関係を「is-aの関係にある」といいます。

継承関係を調べるメソッド

is_a?メソッドを使うことで継承関係をさかのぼってクラスに属するかを調べられる。

arr = []
p arr.is_a?(Array) #=> true

instance_of?であるクラスのインスタンスかをしらべることができる。

arr = Array.new
arr.instance_of?(Array)

ソフトウェア開発者の人生マニュアル読んだ

書籍

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

これを読んだので、まとめておきたい。

どんな内容か

ソフトウェア開発者としてどうあるべきかというのを、キャリアや金融の話、生産性の話などを用いて書かれている。 若いソフトウェア開発者にはためになる内容ではないかと思われる。

目次

(※独自の言葉に変えている)

  1. キャリアについて
  2. 自分を売り込むことについて
  3. 学び方
  4. 生産性を上げる方法
  5. お金の話
  6. 健康の話
  7. メンタル

ここからは簡単にまとめ。

キャリア

ソフトウェア開発のキャリアを事業として扱っていないことだ。

つまり自分のキャリアを自分のビジネスとして考えることが大切。

自分でキャリアをマネジメントすること。

自分が提供するサービスに全力を集中し、そのサービスの売り方を考える。 提供するサービスを向上させる方法を考える。

専門性

web開発スタック
組み込みシステム
OS
モバイル開発
フレームワーク
パッケージソフトウェア

自分の存在を主張することをする。 プロであることを意識する。

売り込み

ブログポスト
ポッドキャスト
ビデオ
書籍
カンファレンス

学び

  1. 学びはじめるための基本的な知識
  2. テーマの幅
  3. 基礎

全体像をつかむ

スコープを決める

成功の基準を決める

参考資料を決める

学習プランを作る

以下からは繰り返し。 学習-実践-学習-教え

遊ぶ 役に立つことができるところまで学ぶ 教える

生産性

ポモドーロテクニック 時間の管理 ルーティーン 習慣

リファクタリング・ウェットウェア

書籍

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

面白かった&ためになったので簡単にまとめておこうと思います(忘れたくない)

リファクタリング・ウェットウェアとは脳のリファクタリングという意味。

つまり脳を最大限に活かそうよって意味。だとおもう。

目次は以下

  1. 初心者から達人の道
  2. 脳の構造
  3. Rモードへの変換
  4. アタマをデバック
  5. 意識的な学び
  6. 経験の積み重ね
  7. 集中のコントロール
  8. 達人になってから

1章

ドレイファスモデル 技能モデル

初心者

  • うまくやり遂げる能力があるかどうかをいつも気にする。
  • 決まったルールがあるとある程度の力を発揮する

中級者

  • 決まったルールから離れられる様になるが、問題処理にはまだ手こずる。
  • 全体像を見たがらない。

上級者

  • 直面したことのない新しい問題の解決策を考え出せる様になる。
  • 自らを振り返り、補正するには十分な能力が備わっていない。

熟練者

  • 全体像を見たがる。
  • 簡単な問題には苛立ちすら覚える。

達人

  • 絶えずよりよい方法を模索する。
  • 状況に合わせてベストな解を出せる。
  • 直感に従う。

達人に通ずる道を歩き始めるには...?

  • 直感力の育成
  • コンテキストの重要性の認識、および状況パターンに対する重要性の認識
  • 自分自身の経験のさらなる活用

2章 脳の構造

脳の2つのモード

Lモード(細部に目を配り、うまく仕上げる力)

  • 言語的
  • 分析的
  • 象徴的
  • 抽象的
  • 時間的
  • 論理的

Rモード(直感、問題解決、創造性に欠かせない)

  • 言語処理をおこなえない。
  • 非同期で動く。(入浴中とかになにか思い出すとかはこのせい)
  • 非言語的
  • 統合的
  • 具体的
  • 類推的
  • 非合理的
  • 空間的
  • 直感的
  • 非戦型的

Rモードを使うことが達人への絶対条件。

脳の領域では常に、意識の競争が起こっている。 だから常に意識することが重要。

常にメモをできるようにしておく。(脳にindexを貼る)

3章 Rモードへの転換

何か問題解決をするとき(考えるとき)は、関与する感覚を増やすとより創造的になる。 例えば、レゴやルービックキューブなどをいじるなど。

LモードからRモードへ転換させるには、Lモードが嫌がるようなことをするといい。 あえて、言語化しない。

Rモードを先頭に立たせてLモードを後に続かせる。 全体像を掴んでから、詳細を掴む。

やってみる

モーニングページ

  • モーニングページは朝1番に書く。
  • 少なくとも3ページ。手書き。
  • 書いた内容をチェックしない。
  • 毎日おこなう。

これはRモードに限りなく繋がっている状態でできるから脳の中身をさらけ出すことができる。

4章 アタマをデバック

直感を信じる、ただし検証すること。

5章 意識的な学び

  • 学びとは「人」がおこなうこと
  • 経験の伴わない、知識のみの習得は効果がない
  • 目的やフィードバックのない無計画なやり方は一貫性のない結果を招きがちである。

SMART な目標を立てる。

Specific 具体的 Measurable 測定可能 Achievable 達成可能 Relevant 適切 Time-boxed 期限を決める

SQ3Rで意識的に読む。

調査 質問 読書 複勝 まとめ

意識的 であることが重要。

テスト駆動型学習も効果的。

2-2-2-6(2時間後、2日後, 2週間後, 6ヶ月)

読んだり書いたりしても覚えないので、テストを課す。

7章 集中のコントロール

瞑想

リラックスした覚醒状態を目指す

  1. 静かな場所を見つける。
  2. 楽な姿勢をとる。
  3. 目を閉じ、自分の呼吸に集中。1点のみに集中。
  4. 言葉にしない。自分との会話をしない。

まとめ

非常に雑多な感じでかきました。

Nodejs基本

プログラミング

Node.js

リクエストをさばく仕組み

  • スレッドモデル(Apache)

  • イベントモデル(Node.js)

リクエストごとにスレッド

たくさん来ると捌けない!

リクエストが来るとQueueに入り、そのあとにI/O(バックグランド)でさばく

ノンブロッキングでは、いちいちスレッドが立たない! だから捌ける

コード書くよ

jsはイベント稼働でかけるのでJSが採用されている.

ノンブロッキングな書き方

setTimeout(function(){
    console.log("hello");
},1000);
console.log("world");

コールバック関数

var http = require('http');

http.createServer(function (request, response) {
     response.writeHead(200, {'Content-Type':         'text/plain'});
      response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

routing

res.urlでリクエストから取れる

switch(req.url){
    case'/about':
    なんとかなんとか
}

ssh config

Tips

リモートのサーバにアクセスする際に、いちいち以下のように書くのは面倒です。

# ポート名を指定する場合
ssh ユーザー名@ホスト名 -p ポート番号

# 公開鍵認証の場合
ssh ユーザー名@ホスト名 -i ~/.ssh/鍵の名前

# ポート名及び、公開鍵認証の場合
ssh ユーザー名@ホスト名 -i ~/.ssh/鍵の名前 -p ポート番号

そんなときには、~/.ssh/configに設定を書きます。

Host 任意の接続名(hoge)
HostName ホスト名
User ユーザー名
Port ポート番号
IdentityFile 鍵へのPATH(例えば~/.ssh/hoge.key)

$ ssh hoge

これで接続できるようになります。

上記のように書くのもいいし、(今回はvagrantです)

$ vagrant ssh-config --host 任意の名前(hoge)

これで設定ファイルが吐き出されるので、

$ vagrant ssh-config --host hoge >> ~/.ssh/config

これで書き出せます。