横スワイプで画面が戻らないようにする
ブラウザで横スワイプで画面が戻ってしまうのが不便だと感じておりました。
ただ横にスクロールして見えてない部分を確認しているだけなのに、横にスワイプとみなされて戻ってしまう事が結構ストレスでした。
(特にGitHubのコメント欄でコードが横長になっており確認するために横スクロールする事が多かった)
そこで横スワイプで画面が戻らないよう設定したらとても快適でした!!
方法
システム環境設定 →トラックパッド → その他のジェスチャ → ページ間をスワイプのチェックを外す、という作業だけでした!!
感想その他
作業環境を快適に整えるのは大事ですね!!
大事な仕様を考えている時にストレスが発生するととても良くないので、これからも作業が快適になる系の改善をしていきたいです!!
pcではなくスマホのツイッターアプリでも似たようなストレス(横スワイプする気ないのにされて画面が戻ってしまう)に見舞われる事があるのでこちらも設定したいですw
&、-、select、reject
今日使ったArrayクラスのメソッドについてメモしておきます。
何回も使ったことあるのにいつも記憶が曖昧で調べている気がしますw
&
複数の配列を比較して重複してる値を返してくれます。
[1,2,3,4,5,] & [2,3,4,7]
=> [2,3,4]
-
2つの配列を比較し、前者の配列のうち後者に含まれている値を除いてくれます。
[1,2,3,4,5,] - [2,3,4,7]
=> [1,5]
select
全ての要素にブロックを実行し、 trueとなった要素のみの新しい配列を返してくれます。
(select! だと新しい配列を返すのではなく、レシーバー自体を変更します。)
array = [1,2,3]
new_array = array.select { |i| i == 2 }
p array => [1,2,3]
p new_array => [2]
reject
全ての要素にブロックを実行し、 trueとなった要素を取り除いて新しい配列を返してくれます。
(reject! だと新しい配列を返すのではなく、レシーバー自体を変更します。)
array = [1,2,3]
new_array = array.reject { |i| i == 2 }
p array => [1,2,3]
p new_array => [1,3]
感想その他
いい加減ぱっと使いこなせるようにならなくては。。。
文字集合と符号化方式
文字コード
今日は文字コードについて少し調べました〜
文字コードとは
文字に数値を当てはめたものです。
文字コードの種類
- ASCII
アルファベット、数字、その他記号を表現できる。7ビットで1文字を表現できる。
1文字2バイトで表現されます。
ASCIIで表現できるものに加え、ひらがな、カタカナ、漢字が使えます。
世界で使われる全ての文字を共通の文字集合にて利用できるようにしようという考えで作られた文字コードです。
はじめは1文字2バイトでしたが足りなくなり、3バイト、4バイトと拡張されています。
何でいろんな種類があるか
以下のような歴史的な経緯があるためだそうです。
アルファベットを1バイト以下で表現するASCII誕生
→ アルファベット意外にも対応するため2バイトの文字コードが誕生
→ 互換性を保つために複雑化
感想その他
UnicodeとUTF-8とがごっちゃになっているのでその辺りも整理したいです。
アクティブレコードでのトランザクション
今日はアクティブレコードでのトランザクションについて調べてみました!
書き方
以下のように書くことができます。
① モデル.transaction do
② DBに変更を加える(updateやdeleteなど)
③ end
④ 上手くいった場合の処理
⑤ rescue => e
⑥ 失敗した場合の処理
例外が時発生した場合にROLLBACKが発生するので、
モデル.transaction do ~ endの中の処理は例外を発生させるように書かないといけないようです。
(saveじゃなくてsave!とかく)
感想その他
アクティブレコードでのトランザクションは例外処理とセットになっているため、
モデル.transaction do ~ endの中の処理で例外を発生させるように書くことを気をつけなくてはと思いました。
トランザクション
トランザクションが何かということは書籍や記事を読んで知っていたのですが、先日初めて業務で使う機会があったのでメモしておこうと思います!
トランザクションとは
一連のまとまった処理のことです。
処理の途中までしか実行されなかったらまずい処理などで使われます。
やり方
以下のように、START TRANSACTION; ~~ COMMIT; でまとめたい処理を括って実行します。
① START TRANSACTION;
② DBに変更を加える(UPDATEやDELETEやCREATEなど)
③ 上手くできたか確認(SELECT実行したりして大丈夫であればCOMMIT、失敗していたらROLLBACKして①②の処理をやり直す)
④ COMMIT
;
例
① START TRANSACTION;
② UPDATE `reviews`
SET
`rate` = '1'
WHERE
`rate` = 0;
③ SESELECT *
FROM
`reviews`
WHERE
`rate` = 0;
④ COMMIT;
感想その他
手を動かす前に本や記事で概要を知っておくのは大事だなと感じました。