U_OK_2023’s blog

主に日々のプログラミング学習についてのアウトプットと備忘録

【便利ツール】Clipy【コピペ】

皆様、こんばんわ。

U_OK_2023 です。

 

本日は、便利なアプリケーションを教えてもらったので、
紹介させていただきます。

 

そのアプリケーションとは、

Clipy クリッピー

です。

私が通っていたプログラミングスクールである
テックキャンプのYouTubeでも半年前に紹介されていたそうなのですが、
私は、本日教えてもらうまで全くこのアプリケーションの存在を知りませんでした💦

 

Clipyが紹介されているテックキャンプのYouTubeはこちら↓

www.youtube.com

 

使い方や説明を動画で詳しくまとめてくれています。
分かりやすくご説明いただき誠にありがとうございます。

 

さて、
Clipy  で 何ができるのかと言いますと、
コピーとペーストの幅が広がります。

通常、コピーとペーストは直前のものしか反映されませんが、
Clipy は 複数 ストックしておくことができ、
command + shift + v
で、いつでも、それを取り出すことがきます。

また、「スニペット」という
フォルダーのようなものに カテゴリー分けすることもできます。

さらに、その「スニペット」を呼び出す際、
自分でショートカットを設定することもできます。

非常に便利でかなり重宝しています。

私の場合、
はてなブログを書く時に、
タイトル、コード埋込、ハッシュタグ
以前は、メモ帳に貼り付けて、毎回そこからコピーをして貼り付けていましたが、
今回、Clipy に登録することで、
メモ帳を開く手間が省けて時間を大幅に短縮することができました。

また、メッセージを送る際、
著名文を、これまた、メモ帳に登録して
毎回、そこから引っ張ってきていましたが、
それも解決することができました。

紹介動画でも言われていますが、
プログラミングにおいては、
よく使うメソッドや定型文などを Clipy に登録することで、
スペルミスを防ぐこともでき、
実装のスピードも格段に上げることが可能になると思います。

これだけ便利なアプリケーションが無料で使えることに感謝しかありません。

もっと早く知りたかった。と思える。
とても素晴らしいアプリケーションです。

 

こちらの Clipy は
mac のみ対応しているアプリケーションなのだそうですが、
windows に対応した Clibor というアプリケーションもあるそうです。

興味を持たれた方がおられましたら、
紹介動画を見ていただき、
ぜひ、ダウンロードしてみてください。

紹介動画の概要欄にもリンクがありますが、
こちらにもリンクを貼っておきます。

🔽Clipy(mac対応)
https://clipy-app.com/

🔽Clibor(windows対応)
https://chigusa-web.com/clibor/

正直、控え目に言って 感動するくらいオススメです。

【終了面談】プログラミングスクール「TECH CAMP」【終了証明】

皆様、こんばんわ。

U_OK_2023 です。

先日、無事に「内定」をいただくことができ、
内定承諾をさせていただきました。

そして、
本日、プログラミングスクール「TECH CAMP」の終了面談を終え、
終了証明をいただくことができました。

私が、内定をいただき、転職を成功させることができたのは、
私の力ではなく、私を支えてくださった方々のおかげです。

支えてくださった全ての皆様に感謝を申し上げます。
本当にありがとうございました。

感謝の気持ちを忘れず、私を選んでくださった企業様の期待に応えるため
また、私がエンジニアになってしたいことを実現するため
尽力していきたいと思います。

ありがとうございました。
そして、これからも頑張っていきます。

【モデル単体テスト】other_than【選択が「---」の時は保存できない】

皆様、こんにちわ。

U_OK_2023 です。

 

本日は、オリジナルアプリの実装について書いていこうと思います。

タスク投稿機能におけるモデル単体テスト

テストをモデルに対し、バリデーションを設定し、
そのバリデーションが実行されるかをテストします。

テストをする前に、実装に必要なバリデーションが設定されているかを確認する。

app/models/task.rb

    class Task < ApplicationRecord
  extend ActiveHash::Associations::ActiveRecordExtensions
  
  ~ 中略 ~
  
  #ジャンルの選択が「---」の時は保存できないようにする
  validates :category_id, numericality: { other_than: 1 ,message: "can't be blank"}

end

category_id は アソシエーションを組んだものではなく、
Activehash を実装した際に指定したidです。

other_than: 1 だと、
エラーメッセージが表示されるようにバリデーションを設定しています。

1 は プルダウンが表示される時に、「---」が初期値として
表示されているものですから、
1 (「---」)以外を必ず選択してください。という意味になります。

app/models/category_id

    class Category < ActiveHash::Base
  self.data = [
    { id: 1, name: '---' },
    { id: 2, name: '見積書' },
    { id: 3, name: '会議資料' },
    { id: 4, name: '納品書' },
    { id: 5, name: '発注書' },
    { id: 6, name: '社内資料' },
    { id: 7, name: '雑務' },
    { id: 8, name: 'その他' },
  ]

  include ActiveHash::Associations
  has_many :tasks

end

other_than: 1 とは { id: 1, name: '---' }, のことです。

異常系では、何も記入しないこと(空白)を指定する時、
「''」を使用しますが、
Activehashでは、初期値が設定されるため何も記入しなくても
1 (もしくは 0)が必ず選択されている状態です。
そのため、空白を意味する「''」は使用することはできません。
したがって、ather_than を使用します。
プログラミングスクールでプルリクエストを依頼した際に、
Activehashを使用した場合、何も選択しないのは「''」ではない。
と指摘していただき、混乱したことを思い出します。
あの経験があるからこそ、今の説明ができます。

間違うことは悪いことではないと改めて思います。

 

ここだけ注意し、後は、正常系からテストしていきました。

現在の位置と、そこでの記述の意味、受け渡しの関連性は、
とても大切だと改めて感じました。

 

今回もお読みいただきありがとうございました。

【基本情報技術者】chapter 2【2進数の足し算と引き算の考え方】

皆様、こんにちわ。

U_OK_2023 です。

 

本日も、基本情報技術者 の 学習のアウトプットをしていこうと思います。

2進数の足し算と引き算

コンピュターは足し算は得意だが、
引き算、掛け算、割り算 は 知らない。
知らないが できる仕組みがある。
その理由は 回路をシンプル に保つためである。

足し算と引き算の基本は、10進数も 2進数も変わらない。

10進数の足し算

 163
+  46
    209

10進数の引き算

    209
ー  46
    163

2進数の足し算

11 で 0 になり、1つ位が上がる

     11
10
   101

2進数の足し算

引けない時は 左から 1 を借りてきて 2 として扱う

   101
ー 10
     11

考え方が10進数と似ているので理解しやすい内容でした。

 

 

 

 

 

 

 

【基本情報技術者】chaptser1-2【基数変換】

皆様、こんにちわ。

U_OK_2023 です。

本日も基本情報技術者の学習内容のアウトプットになります。

基数変換

ある基数で表した数値を、別の基数表現に置き換えること

例えば、10 という数字を表す時

10進数 2進数 8進数 16進数
10 1010 12 A

 

と表現できます。

これを、2進数 → 10進数に変換する、
逆に、10進数 → 2進数に変換する と いった操作が基数変換です。

 

基数変換には4つのパターンがある。

①n進数から10進数へ基数変換

②10進数からn進数への基数変換

③2進数から 8進数・16進数への基数変換

④8進数・16進数から 2進数への基数変換

①n進数から10進数へ基数変換

各桁の数字にその桁の重みを掛け算することで、10進数表記における値に変換できる。

2進数の「1101.001」という数値が10進数だといくつになるか

2進数 1 1 0 1 . 0 1 1
各桁(2進数)の重み 8 4 2 1 . 1/2(0.5) 1/4(0.25) 1/8(0.125)
各桁(2進数)の数に重みをかけた数を計算 8 4 0 1 . 0 0.25 0.125
上記の結果を全て足す 8 + 4 + 0 + 1 + . 0 + 0.25 + 0.125

8 + 4 + 0 + 1 . 0 + 0.25 + 0.125 = 13.375

計算結果より、
2進数「1101.001」を 10進数 に 変換すると「13.375」となる。

②10進数からn進数への基数変換(10進数(13.375)を 2進数へ基数変換)

方法1:重みを使う方法

2進数の重み

・・・ 16 8 4 2 1 . 1/2(0.5) 1/4(0.25) 1/8(0.125) 1/16(0.0625)  ・・・  

桁の重みを使って割り算していく。

13 を 割っていくので 重みの 8 からスタートする。

13.375 ÷ 8 = 1.671・・・

13.375 - 8 = 5.375

5.375 ÷ 4 = 1.34 ・・・

5.375 - 4 = 1.375

1.375 ÷ 2 = 0.6875

1.375 - 2 = 引けないのでスライドする

1.375 ÷ 1 = 1.3745

1.375 - 1 = 0.375

.

0.375 ÷ 0.5 = 0.75

0.379 - 0.5 = 引けないのでスライド

0.375 ÷ 0.25 = 1.5

0.375 - 0.25 = 0.125

0.125 ÷ 0.125 = 1

各桁の重み 8 4 2 1 . 1/2(0.5) 1/4(0.25) 1/8(0.125)
2進数 1 1 0 1 . 0 1 1

 

計算結果より、
10進数「13.375」を 2進数 に 変換すると「1101.011」となる。

方法2割り算と掛け算を使う方法

基数を使って
整数部は割り算」「小数部掛け算」する。

整数部

10進数を基数で割って、その商をまた基数で割るを繰り返す

小数部

小数部が 0 になるまで掛け算を繰り返す

10進数(13.375)整数部

13 ÷ 2 = 6 余り 1

6 ÷ 2 = 3 余り 0

3 ÷ 2 = 1 余り 1

1 ÷ 2 = 0 余り 1

.

10進数(13.375)小数部

0.375 × 2 = 0.75

0.75 × 2 = 1.5 ※ 1.5 の 1 は整数のため 次は、小数部の 0.5 を計算する

0.5 × 2 = 1.0

整数部から並べ直し、小数部から並べ直す

「1101」.「011」= 1101.011

計算結果より、
10進数「13.375」を 2進数 に 変換すると「1101.011」となる。

こちらの計算方法は、覚えてしまえば
重みを使わず手早く計算できるメリットがある。

2進数から 8進数・16進数への基数変換(2進数(1101.01)を変換)

8進数は 3ビット

16進数は 4ビット

2進数(1101.01)を 8進数へ変換

1101.01 を 3(ビット)ずつに分ける。

001 / 101 . 010 ※3桁にするためにないところは 0 を補う。

それぞれの桁に 3桁の整数部として扱い2進数の重み掛け算して合計する。

001 = 0 × 4 + 0 × 2 + 1 × 1 = 1

101 = 1 × 4 + 0 × 2 + 1 × 1 = 5

.

010 = 0 × 4 + 1 × 2 + 0 × 1 = 2 ※3桁の整数部として扱う

並べ直す

15.2

計算結果より、
2進数「1101.01」を 8進数 に 変換すると「15.2」となる。

③2進数(1101.01)を 16進数へ変換

1101.01 を 4(ビット)ずつに分ける。

1101.0100 ※4桁にするためにないところは 0 を補う。

それぞれの桁に 4桁の整数部として扱い2進数の重み掛け算して合計する。

1101 = 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 13

0100 = 0 × 8 + 1 × 4 + 0 × 2 + 0 × 1 = 4

並べ直す

13.4

13 は 16進数で表すと D になるので、

D.4

計算結果より、
2進数「1101.01」を 16進数 に 変換すると「D.4」となる。

④8進数・16進数から 2進数への基数変換

8進数(15.2)を 2進数へ変換

15.2 を 桁ごとに 3桁2進数に分解する。※3桁にするためにないところは 0 を補う。

1 = 1 = 001

5 = 101

.

2 = 10 = 010

並べる

001 101 . 010 = 1101.01

計算結果より、
8進数「15.2」を 2進数 に 変換すると「1101.01」となる。

16進数(D.4)を 2進数へ変換

D.4 を 桁ごとに 4桁 の 2進数に分解する。※4桁にするためにないところは 0 を補う。

D = 13 = 1101

.

4 = 100 = 0100

並べる

1101 . 0100 = 1101.01

計算結果より、
16進数「D.4」を 2進数 に 変換すると「1101.01」となる。

基数変換の方法4つは以上となります。

まとめ

①n進数から10進数へ基数変換

n進数の各桁の数字に n進数の重みを掛け算する。

②10進数からn進数への基数変換

方法1:

n進数の数字を n進数の重みの数字の多い方から 1 になるまで順に割っていく。

方法2:

n(基数)を使って「整数部は割り算」「小数部は掛け算」する。

「整数部は下から」「小数部は上から」整数部を並べ直す。

③2進数から 8進数・16進数への基数変換

2進数の数字を 0 を使って ビット数(8進数なら3, 16進数なら4)に分け、
分けた数字1桁ごとにそれぞれの桁に対応する 2進数の重みで掛け算し、
整数部と小数部をそれぞれ合計し、
並べ直す。

④8進数・16進数から 2進数への基数変換

それぞれの数字を 1桁ずつ 2進数に分解し、
0 を使って ビット数(8進数なら3, 16進数なら4)の数に合わせ、
並べ直す。

 

アウトプットは以上になります。

ありがとうございました。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【基本情報技術者】chapter0 ~ chapter1-1【n進数】

皆様、こんにちわ。

U_OK_2023 です。

本日は、基本情報技術者の学習内容をアウトプットしたいと思います。

参考書は前回投稿したものを使用しました。

uok2023.hatenablog.com

chapter0

ということで、

「コンピューターは電気でものを考える」というものでした。
具体的には電気の「オン」「オフ」、
「1」「0」でものごとを表現するということ。
非常にシンプルですね。

また、「オン」「オフ」しか表せれない最小の単位は「bit(ビット)」
ここでは豆電球を例にしていましたが、
豆電球が
1つなら、1ビット。
2つなら、2ビット。
4つなら、4ビット。ということを学習しました。

chapter1

では、n進数について学習しました。
n進数の n は 「いくつになったら桁が上がる」ということを示す数字のこと。
普段、私たちは 0 ~ 9 の 10 個の数字を使います。
9 の次は 10 を表現するために桁を上げて表現します。
これを 10進数という。

コンピューターは 0 ~ 1 の 2個の数字を使うため 2進数となる。

chapter1-1

では、よく使われるn進数について学習しました。
10進数、2進数、8進数、16進数 が主に使われる。

8進数

0 ~ 7 の 8個の数字を使う。8 は 2 の 3 乗
8進数は 1桁で 0 ~ 7 を表現できる。
2進数では 7 を 「111」と表現するため、8進数は 1桁で 2進数 3桁分を表現できる。

16進数

0 ~ 9 + A ~ F の16個の数字を使う。16 は 2 の 4 乗
16進数は 1桁で 0 ~ 15 を表現できる。
2進数では 15 を 「1111」と表現するため、16進数は 1桁で 2進数 4桁分を表現できる。

 

普段、私たちは 10進数で生きているという感覚すらなかったため、
2進数、8進数、16進数の桁の上がり方にかなり違和感を感じました。
特に、2進数は桁の上がり方が目まぐるしいなと感じます。
いきなり 私たちの慣れしたんだ10進数における 7 が
2進数と 「111」だと言われたことが何より衝撃的でした。

基本中の基本なのだと思いますが、
これは普通に生きてて得られる知識や考え方ではないなと感じました。

このように学習する機会を得られて幸運だと感じました。

【基本情報技術者】「リサーチ力」「自主性」【キタミ式イラストIT塾 基本情報技術者 令和05年】

皆様、こんにちわ。

U_OK_2023 です。

本日は、午後から本屋さんへ行っておりました。

なぜかと言いますと、
昨日、面接をした際に、面接官の方に質問しました。

「ご縁があり内定をいただけたと想定しまして、
入社までに身につけておいた方が良い知識や技術はございますか」と。

すると、面接官の方はこうおっしゃいました。

基本情報技術者の参考書に目を通しておくだけでも、
U_OK_2023 さんが今後、IT業界でキャリアアップするために、
必要な知識をたくさん得ることができると思います。」と。

私は続けてこう質問しました。

「エンジニアとして活躍されている先輩方の考え方や仕事の仕方で、
共通していることがありましたら教えていただけますか」と。

すると、面接官の方は力強くこうおっしゃいました。

「間違いなく、確実に言えることは『自主性』です。
分からないことがあっても自分で調べる。
自分のやることが終わって帰宅時間になっても、
先輩に『何かお手伝いできることはありますか?』と声をかける。
先輩がどれだけ忙しそうにしてても聞くべきことを聞くことができる。
特に、分からないことを自分で調べ、なんとかしようとすることはとても重要です。
しかし、ITのことを知らなければ、何をどのように調べれば良いかも分からない
ということになります。」

私は、はっとし、こう質問しました。

「だから、基本情報技術者の参考書を見る必要があるということでしょうか。」

すると、面接官の方は笑顔で答えてくれました。

「その通りです。
『リサーチ力』は ITの概念が理解できていなければ発揮されません。
その概念を体系的に理解する助けとなるのが、基本情報技術者の参考書です。
資格を取るまで行かなくても、目を通すだけでも、助けとなるものだと思います」と。

話の流れに一貫性があり、とても説得力がありました。

「自主性」「リサーチ力」
この2つは、テックキャンプで学習を進めていく中で、必要性・・・
ではなく、確実に身につけなくてはならないと感じざるを得ない事項であり、
キャッチアップゼミ(テックキャンプ内で行われるイベントのひとつ)でも、
テーマとしてピックアップされている項目でした。

有益な情報を得ることができたため、これは確かめに行くしかない。
と思い、本日、本屋へ行ったわけでございます。

とは、言いつつも、
基本情報技術者の参考書。
とは、どういったもので、どれが良いのか、さっぱりでしたので、
とりあえず調べてみました。

参考にさせていただいたサイト

makulog.com

retsu-business.com

非常に参考になりました。
ありがとうございます。

詳細は割愛しますが、
基本情報技術者資格には「科目Aと科目B」があり、
科目Aの応用が、科目B とのことでしたので、
本選びの基準は「科目Aにウエイトを置いた分かりやすい本」としました。

事前に情報を調べ、書店へ行きました。

色々と手に取り内容を確認しこちらを購入しました。

購入した決め手は、イラストで分かりやすく説明してくれている点です。
ボリュームはindex も含めると 815ページもあり、情報量は結構あるのかな感じます。
ひとつのセクションごとに
実際に出題された過去問題で理解度を確認することができます。
ひとつのセクションごとなので細かく理解度を
確認しながら読み進めることができそうだと感じました。

今後、基本情報技術者の学習内容のアウトプットもしていこうと思います。