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

0neiric k0uh0t

開発BLOG

Reduxとは何か

Reactはわかってきたけど、Reduxって微妙だなって方向け。(つまり私)

Reduxとは

stateを管理するためのライブラリ。

要素は以下のようなもの。

  • Action
  • ActionCreater
  • Store
  • State
  • Reducer

Action

「何をする」という情報を持ったオブジェクト

ActionCreater

Actionを作成するメソッド

function addTodo(text) {
  return {
    type: ADD_TODO,
    text
  }
}

Actionをdispatch

dispatch(addTodo(text))

Store

Storeはstateを保持していて、アプリケーション内で一つ存在して、一つのstateを保持している。

  • stateを保持
  • getState()の提供
  • dispatch(action)を提供
  • リスター登録のためのsubscribe(listener)を提供

State

アプリでの状態を表す

dispatchされたactionとstateをReducerへ渡す

Storeを作成する際にStateを変更するためのメソッドであるReducerを一つ登録する。 Storeはdispatchされると、引数のアクションと現在保持しているStateをReducerへ渡して、新しいStateを作成する。

Reducer

reducerは、actionとstateから新しいstateを作成して返すメソッド。

データの流れ

Reduxのデータフローは一方向ということ。

  1. store.dispatch(action)を呼ぶ
  2. storeは受けたactionと保持しているstateをreducerへ渡す
  3. 子reducerの返したstateを親reducerがまとめて一つのツリー状のstateを返す
  4. reducerが作成した新しいstateをstoreが保存する

ほとんどこれを参考に書きました。

qiita.com

LinearLayoutとRelativeLayout

Android

LinearLayout

LinearLayoutクラスはViewGroupクラスのサブクラスで、子要素を、水平、あるいは垂直に一直線に並べます。 android:orientationは、配置する向きを指定する属性です。 verticalは垂直方向に並べます。 horizontalを設定すると、各オブジェクトが水平方向に並ぶようになります。

RelativeLayout

RelativeLayoutクラスを使用すると、子要素の位置を、上部、下部、左側といった相対的な位置で指定します。

上記を理解しておけば、あとは属性を理解すれば問題なく使えそうですね。

リファクタリングRuby

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

読んだので気づきを書いておく。

リファクタリングをする理由

  • ソフトウェアの設計を改善する

設計が重要なのは、将来変更を加えるとき。 重複を削れば、影響範囲が小さく、1箇所を修正するだけで済むようになる。

  • ソフトウェアをわかりやすくする
  • バグを見つけやすくする
  • プログラミングをスピードアップする

いつすべきか

  • 3度目の原則
  • 機能を追加するとき
  • バグフィックスが必要になったとき
  • コードレビューをするとき
  • 理解を深めたいとき

良いコード

  1. 読みやすい
  2. ロジックの重複がない
  3. 書き換えによって既存の機能に影響を及ぼさない
  4. 条件分岐が複雑でない

コードの臭い

以下のような状況に出会ったらリファクタリングを進めて方がいいかもしれない。

  • コードの重複
  • 長いメソッド
  • 大きなクラス
  • 長い引数クラス
  • 変更系統の分岐
  • ショットガン創の手術
  • メソッドの浮気
  • 群れたがるデータ
  • プリミティブ強迫症
  • case文
  • パラレルな継承階層
  • 仕事をしないクラス
  • 空論的一般化
  • 一時フィールド
  • メッセージの連鎖
  • 横流しブローカー
  • 親密すぎるクラス
  • インターフェイスの異なるクラス群
  • 不完全なライブラリクラス
  • データクラス
  • 継承した遺産の拒絶
  • コメント ...etc

詳細を書こうと思ったけれど、長いのでやめました。笑

具体的なリファクタリング

TODO

Linuxファイルシステム

df コマンド

ディスクの空き容量の表示

オプション類

-i  iノードの使用状況を表示
-h  M G を表示
-T ファイルシステムタイプを表示

df コマンド

ファイルやディレクトリの容量を表示

-a 全てのファイルとディレクトリ
-s 合計のみを表示
-h M Gを表示

ファイルシステム管理

fsck e2sfsck   ファイルシステムチェック

debugfs  ファイルしシステムのデバッグ

dumpe2fs ファイルシステムの情報表示

tune2fs ファイルシステムのパラメータ操作

Linuxユーザ・グループ管理

アカウント情報を管理している

/etc/passwd

書式は以下のようになっている

root:x: 0:0:0:root:/root:/bin/bash

ユーザ名:パスワード:UID(ユーザID):GID(グループID):GECOS(コメント):ホームディレクトリ:デフォルトシェル

パスワードを管理している

/etc/shadow

コマンド

ユーザの追加

useradd oneir

パスワードの設定

passwd oneir

ユーザ情報の変更

usermod -g oneir -G wheel

パーミッション

$ls -l

-rw-rw-r-- 1 vagrant vagrant  417 Nov 24 04:31 homedir.txt

read
write
execute

権限の変更

chmod 777 hoge.txt

所有者を変更

chown usr01 file1

パッケージ管理

APT/YUM

取得・依存関係などを管理してくれる

裏側には、dpkg/rpmなどのパッケージ管理ツールがある。(依存関係を手動で管理しなくてはいけない)

Linuxとプロセス

ジョブとタスク(プロセス)

$ ls -a | less

ls -a | less をジョブ

ls -aless をプロセス

プロセス番号が割り当てられる(PID)

ps コマンドでプロセスを確認したり、top コマンドでリソース消費量などを確認

topコマンド

top -d 更新間隔(秒)

top -u ユーザ名

CPU順   Shift + p
メモリー順 Shift + m
実行時間順 Shift + t

topコマンド実行中に色々表示を変えられる

その他のコマンド

起動時間 uptime

メモリ free

Linux圧縮コマンド

圧縮コマンドについて

主なもの

  • tar
  • gzip
  • bzip2
  • xp
  • cpio

tarコマンドオプション

  • f ファイル名
  • c create
  • x extract
  • r append
  • v verbose(詳細を表示する)
  • j bzip2ファイルを扱う
  • z gzipファイルを扱う

以下参考になりそうです。

tukaikta.blog135.fc2.com