DI(Dependency Injection)について理解する
DI(Dependency Injection)とはよく「依存性の注入」と訳される。 しかし、自分の中では「依存性」も「注入」もいまいちピンときていないので詳しく調べた。
下記ブログの記事がとてもわかり易かった。 nekogata.hatenablog.com
DI(Dependency Injection)とは
英語版のWikipediaではDIの説明として、以下のようにある。
In software engineering, dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object.
Dependency injection - Wikipedia
他のオブジェクトに依存しているオブジェクトのことのようだ。
依存が高いと
参考
Dependency Injectionを「依存性の注入」と訳すのは非常に悪い誤訳 - little hands' lab
Pythonの基本メモ
Pythonで使える演算子
演算子 | 意味 | 例 | 結果 |
---|---|---|---|
x // y | xをyで割った商の小数点以下切り捨て | 10//3 | 3 |
x % y | xをyで割った商のあまり | 10 % 3 | 1 |
x ** y | xのy乗 | 3 ** 3 | 27 |
abs(x) | xの絶対値 | abs(-3) | 3 |
int(x) | xを整数に変換 | int(3.16) | 3 |
float(x) | xを浮動小数点数に変換 | float(3) | 3.0 |
round(x[,n]) | xをn桁に丸める | round(3.6) | 4 |
メソッド
format()メソッド
- 文字列を名前付きで埋め込む
man = 10 woman =10 room = "男が{0}人、女が{1}人".format(man , woman ) #文字列を名前付きで埋め込む print("部屋に男は{man}人いる。").format(man = 10) fmt = "部屋に男は{man}人、女が{woman}人いる。" s = fmt.format(man = 10, woman = 10)
range()メソッド
range()の使い方
条件分岐
ifの「pass」文
真の処理を空にして、偽だった時の処理だけを書きために「pass」を使う。
n = 5 if n = 3: pass else: print(n)
繰り返し処理
繰り返し中止と継続
breakで繰り返しの処理を中止し、continueで1つの処理を中止し継続して実行を続ける。
for i in range(10): print(i) if i == 3: break #結果 0, 1, 2. 3 for i in range(5): print(i) if i >= 3:continue print("hello") #実行結果 0, hello, 1, hello, 2 , hello, 3, 4, 5
リスト・タプル・集合型
種類 | 特徴 | 生成方法 |
---|---|---|
リスト(list) | 複数の値を持つことができる | [0, 1, 2] |
タプル(tuple) | 要素を変更できないタプル | (0, 1, 2) |
集合型(set) | 要素を重複できないリスト | {0, 1, 2} |
リスト
リストを使うことで複数の値を1つの変数で管理できる。
points = [80, 75, 81, 65, 57] points[1] # 結果 80 #要素数を調べる points.len() #結果 5 # リストの値の合計 sum(points) #結果 358 # 削除 del points[2] #結果 [80, 75, 65, 57] del points[2:4] #結果 [80, 75, 57]
スライス スライスをすることでリストの一部を取り出すことができる。
リスト[ 開始 : 終了- 1 ] リスト[ 開始 : 終了 - 1 : ステップ ] # スライス points[1:3] #結果 [75, 81] pints[:3] #結果 [80, 75, 81] points[::2] #結果 [80, 81, 57]
メソッド | 意味 | 例 | 結果(list = ["A", "C", "B"]) |
---|---|---|---|
append(x) | xをリストの末尾に追加する | list.append("D") | ["A", "C", "B", "D"] |
extend(L) | 異なるリストLを末尾に追加する | list.expend("D", "E") | ["A", "C", "B", "D", "E"] |
insert(i, x) | インデックスiの位置にxを代入する | list.inser(1, "D") | ["A","D", "C", "B"] |
remove(x) | リストの中にあるxを削除(最初の要素のみ) | list.remove("B") | ["A", "C"] |
pop() | リストの末尾にある要素を取り出し、リストから削除する | list.pop() list = pop(1) |
["A","C"], ["A","B"] |
clear() | リストの全要素を削除(del a[:]と同じ) | list.clear() | |
index(x) | リストからxを探してその位置を返す | list.index("B") | 2 |
count(x) | リストの中にxがいくつあるかカウントする | list.count("C") | 1 |
sort(key, reverse) | リストを昇順に並び替える(reverse = Trueで降順) | list.sort() | ["A", "B", "C"] |
reverse() | リストの要素を逆順にする | list.reverse | ["B", "C", "A"] |
タプル
タプルはリストと違い要素を変更することができない。間違って要素を削除したくない場合に使う。
a = (10, 20, 30) # スライス a[2] #結果 30 a[:2] #結果 (10, 20) a[1] = 50 #-->エラーになる
変換 | 例 |
---|---|
タプルからリストに変換 | list(タプル) |
リストからタプルに変換 | tuple(リスト) |
集合型(set)
特徴 * 重複する値を持たせることができない * 順序を付けられない * 演算を行える(結合・交差・差分・対象差) * 生成方法は波括弧{...}かset()関数 * 空集合を作成するためには 波括弧{} ではなくset()関数 を使用しなければならない * 複数の集合型の結合は「 | 」 * 2つの集合型に共通する値だけを取り出したい場合には「 & 」 * inを用いて、要素が集合に含まれているかを調べる
color = {"red", "green", "white"} e = set() #空集合を作成はset()関数を使わなければいけない color2 = set({"red", "white"}) #差分 color - color2 #結果 {'green'} #inを用いて、要素が集合に含まれているかを調べる "red" in color2 #結果 True #結合 color | color2 # 結果 {"red", "green", "white"} #共通項 color & color2 # 結果 {"red", "white"}
辞書型
リストはインデックス番号で値を参照するのに対し、辞書型は任意のキー文字列で値を参照する。
# データの作成(順番は保持されない) ages = {'Nick':22, 'Jack':53, 'Paulo':18} print(ages['Nick']) #結果 22 # データの更新 ages['Nick'] = 23 # inを用いて、要素が集合に含まれているかを調べる 'Nick' in ages #結果 True # for文との組み合わせ for name, num in ages.items(): s = "{0}は{1}歳".format(name, num) print(s) #結果 Nickは22歳 Jackは53歳 Pauloは18歳
メソッド | 意味 | 例 | 結果 |
---|---|---|---|
d.keys | キーの列挙 | ages.keys() | dict_keys(['Nick', 'Jack', 'Paulo']) |
list(d.keys()) | キーの一覧をリストで得る | list(ages.keys()) | ['Nick':22, 'Jack':53, 'Paulo':18] |
sorted(d.keys()) | キーの一覧をソート済みのリストで得る | sorted(ages.keys()) | ['Jack', 'Nick', 'Paulo'] |
d.values() | 値の一覧を得る | ages.values() | dict_values([22, 53, 18]) |
list(d.items()) | (キー, 値)のタプルのリストで一覧を得る | list(ages.items()) | [('Nick', 22), ('Jack', 53), ('Paulo', 18)] |
Pythonでの文字列の操作
注意の一覧
- 文字列を分割したらリストになる
- 文字列操作のメソッド一覧-公式リファレンス
基本操作
# 文字列の生成 a = "123" b = '456' c = """長文はトリプルクォート””” # 数値からの変換 num = 789 d = str(num) # 文字の連結 s = a + b s # 結果 ’123456’ # 文字の抽出 s[0] # 結果 '1' # 文字のスライス s[1:4] # 結果 '234'
文字の分割--split()
- 'str.split(区切り文字, maxsplit = 回数)'で区切る
- 文字列を分割したらリストになる
s = "This is a pen." s.split() # 結果 ['This', 'is', 'a', 'pen.'] s.split(maxsplit= 2) # 結果 ['This', 'is', 'a pen.']
分割した文字列の結合-- join()
”連結文字”.join(リスト)
でリストを結合して文字列
s = "This is a pen." "-".join(s) # 結果(注意!!) 't-h-i-s- -i-s- -a- -p-e-n-.' t = s.split() "-".join(t) # 結果 'This-is-a-pen.'
文字列の置換-- replace()
str.replace(旧, 新, [, 回数])
で文字列を置換する- 値を変更するわけではない
s = "This is a pen." # "pen"を"book"に置換 s.replace("pen", "book") # 結果 "This is a book." s # 結果 "This is a pen." # sの値が変わったわけではない
書式化して埋め込む-- format()
- 文字列を名前付きで埋め込む
man = 10 woman =10 room = "男が{0}人、女が{1}人".format(man , woman ) #文字列を名前付きで埋め込む print("部屋に男は{man}人いる。").format(man = 10) fmt = "部屋に男は{man}人、女が{woman}人いる。" s = fmt.format(man = 10, woman = 10)
大文字・小文字-- upper(), lower()
- 大文字は
str.upper()
- 小文字は
str.lower()
s = "This is a pen." s.upper() # 結果 'THIS IS A PEN.' s.lower() # 結果 "this is a pen."
文字列の検索-- find()
str.find(検索文字列, [, 開始位置 [, 終了位置]])
で検索する。ない場合は-1を返す
s = "This is a pen." s.find('i') # 結果 2 --indexが2(3文字目にiがある) s.find('i', 3) # 結果 5 -- indexが2(6文字目にiがある)
GoogleとTwitterの検索方法と検索オプションまとめ
GoogleやTwitterでよく検索方法や検索オプションを調べることが多いので一通り調べてみた。使いかたはいろんなサイトにわかりやすく書いてあったのでそちらをみるべきです。
Google, Twitter共通の検索方法と検索オプション
「-」を使う除外検索は様々なオプションと複合して使いやすいので絶対抑えておくべき。
キャッチコピー | 使用方法 | 意味 |
---|---|---|
キーワード検索 | “A” | “A”をフレーズで検索 |
除外検索 | A-B | AのB以外を検索 |
OR検索 | A OR B | AかBのどちらか(両方)を含めたキーワードをすべて検索 |
OR・AND複合検索 | (A OR B) C | AかBのどちらか(両方)、かつCを含めたキーワードをすべて検索 |
Googleの検索方法と検索オプション
頻繁に使えそうな検索方法
キャッチコピー | 使用方法 | 意味 |
---|---|---|
サイト内検索 | site:URL A | URL内でAを検索する |
拡張子検索 | filetype:pdf(doc,xls,ppt) A | Aに関するPDF(Word, Excel, パワポ)を検索 |
タイトル検索 | intitle:A | タイトルにAを含むものを検索 |
タイトル複数検索 | intitle:A B | タイトルにA,Bを含むものを検索 |
URLキーワード検索 | inurl:A | URL内にキーワードを含むものを検索 |
URL複数キーワード検索 | allinurl:A | URL内に複数のキーワードを含むものを検索 |
サイト内本文検索 | intext:A | サイト内の本文の中からAが含まれるサイトを検索 |
サイト内複数本文検索 | intext:A B | サイト内の本文の中からA, Bが含まれるサイトを検索 |
Googleの検索オプション
詳細に検索できる。言語や地域、最終更新などまで検索可能。ピンポイントに検索したいときはこちらを使う方が便利。Googleを英語表示で検索
アメリカと同じ英語表示で検索できる。
あまり使わないであろう検索方法
キャッチコピー | 使用方法 | 意味 |
---|---|---|
ワイルドカード検索 | A*B | フレーズの一部分を「」で補い検索(お前は死んでいる) |
URL検索 | related:URL | URLに似たサイトを検索する |
キャッシュ検索 | cache:URL | 指定されたURLをGoogleのキャッシュから表示 |
被リンク検索 | link:URL | URLへリンクが張られているページを検索 |
リンクキーワード検索 | inanchor:A | Aのリンクを含むものを検索 |
リンク複数キーワード検索 | allinanchor:A B | A, Bのリンクを含むものを検索 |
ページ情報検索 | info:URL | URLのWebサイトの情報を表示 |
Twitterの検索方法
頻繁に使えそうな検索方法
キャッチコピー | 使用方法 | 意味 |
---|---|---|
From検索 | from:ID | IDの投稿したツイートを検索 |
疑問ツイート検索 | キーワード ? | キーワードの疑問ツイート検索 |
Since検索 | キーワード since:20xx-xx-xx | 20xx年xx月xx日からのキーワードを検索 |
Until検索 | キーワード until:20xx-xx-xx | 20xx年xx月xx日までのキーワードを検索 |
メディア検索 | キーワード filter:media | 画像, 動画を含んだキーワードのツイートを検索 |
画像検索 | キーワード filter:images | 画像を含んだキーワードのツイートを検索 |
動画検索 | キーワード filter:videos | 動画を含んだキーワードのツイートを検索 |
認証アカウント検索 | キーワード filter:verified | 認証アカウントのツイートを検索 |
リツイート検索 | min_retweets:数字 | リツイート数が数字以上の投稿を検索 |
お気に入り検索 | min_faves:数字 | お気に入り数が数字以上の投稿を検索 |
リプライ検索 | min_replies:数字 | リプライ数が数字以上の投稿を検索 |
To検索 | to:@ID | IDあての投稿を検索 |
@検索 | @ID | 特定のユーザーに関するツイート全表示 |
あまり使わないであろうTwitter検索方法
キャッチコピー | 使用方法 | 意味 |
---|---|---|
タグ検索 | # タグ | タグ付けされた投稿を検索 |
ポジティブ検索 | キーワード :) | ポジティブなツイートを検索 |
ネガティブ検索 | キーワード :( | ネガティブなツイートを検索 |
Near検索 | near: 場所 | 場所付近の投稿を検索 |
Within検索 | near: 場所 within: xkm | 場所から半径xkm内の投稿を検索 |
リンク検索 | キーワード filter:links | リンクを含んだキーワードのツイートを検索 |
言語指定検索 | lang:ja(en, ko, zh, fr, es) | 言語を指定して検索(英語, 韓国語, 中国語, フランス語, スペイン語) |
パソコンや周辺機器の寿命を調べてみる。
以前、パソコンが急に動かなくなって壊れてしまった。
※リンク
そのときの原因がHDDの寿命だった。 買ってちょうど五年で寿命通り壊れてしまった。 壊れたHDDだけ交換して現在は使っているが、ふと他の部品も寿命が近いんじゃないかと思い調べてみた。
パソコンのHDDが壊れたのでSSDにしてUbuntu18.04LTSをインストールした
パソコンが動かなくなった
先日、急にパソコンが動かなくなって、それからずっとブルースクリーン状態になってました。
自分の力じゃなにもできなかったので、泣く泣くノートパソコンの診断へ。。。 パソコン工房の500円診断に行ってみました。
診断結果
店員さんに症状を教えて店内散策をしてたら、5分とかからずにカウンターに呼ばれ結果を伝えられました。
ちなみにパソコンチェッカーで調べてくれたみたいです。
結果はHDDの破損だろうということ。。
データは全部消えてしまったみたいです。。ある程度クラウドにはおいてあるけど、写真が消えてしまったのだけがとてもつらい。。
しょうがないし、確実に自分が悪いと反省しました。
今度からはバックアップはしっかりとっておかなければならないとつくづく感じました。
HDDやPCの寿命は5年というのを見つけたので、またそう遠くない未来に壊れるというのを念頭に置いておきます。。
パソコンを修理してみる
店員さんが言うにはHDDを交換すれば使えるようになるが、OS(Windows)のインストールとか諸々はメーカーじゃないとできないので、それをするために大体4万くらいかかるとのこと。
少し古いパソコンなのもあって4万はきついと思い、それは断念。
そこでもともと少し興味があり、最近新しいバージョンも出たということでubuntuを入れてみることにしました!
まずはハードディスクの交換をしなければならないので、店内を見回してみたところ思ったほど高くないことを知りました。 これくらいの値段でPCが使える可能性が買えるのであれば上等かな。。。
この際なので、SSDにしてみました! 買ったのはAmazonで安くて評価も高かったものです。
Crucial [Micron製] 内蔵SSD 2.5インチ MX300 275GB (3D TLC NAND/SATA 6Gbps /3年保証) 国内正規品 CT275MX300SSD1/JP
- 出版社/メーカー: Crucial(クルーシャル)
- 発売日: 2017/04/04
- メディア: Personal Computers
- この商品を含むブログ (1件) を見る
パソコンを解体してHDDと交換していくわけですが、これは「自分のPCの型番 + 分解」等を検索すると過去に誰かが分解したブログがあったので、参考にさせて頂きました!
【ノートPC分解】富士通 LIFEBOOK AH77/J(FMVA77J)【HDD取り出し】 | 俺の塩。の無駄ブログ
本当にありがとうございました。
動画でも色々あったので検索してもらえればイメージはつきやすいかと思います。
パソコンは精密機械なので分解するときに静電気防止手袋が必要なのです。
自分は100均とかホームセンターに売っていると勝手に思い込んでいましたが全然なく、結局パソコン工房で600円位で買ったのでAmazonとかで買っておけばよかったと後悔しました。
サンワサプライ 静電気防止手袋(滑り止め付き) TK-SE12M
- 出版社/メーカー: サンワサプライ
- メディア: Personal Computers
- この商品を含むブログを見る
分解の手順としては
- バッテリーをはずして数分間放置
- 壁とかに触って体の静電気を抜く
- 分解
- HDDを交換できたらもとに戻す
- 完成
初めてであまり勝手がわからなかったので部品を外すごとに壁を触っていました。笑
Ubuntuのインストール
USBとかを作るのが面倒ならこちらがいいと思います。
日本語RemixのインストールDVDが入っているので間違いないし、Ubuntuの使い方やラズベリーパイのこととかも書いてあるので買う価値はあると思います。
- 作者: 日経Linux
- 出版社/メーカー: 日経BP社
- 発売日: 2018/06/08
- メディア: 雑誌
- この商品を含むブログを見る
私は自分でLiveUSB(オペレーティングシステム 全体を格納していて、そこからブート可能なUSB)を作ってみたかったので、自作しました!
用意するもの一覧
ISOイメージ
Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team4GB以上のUSB(だいたい皆さんが4GBあれば十分と仰ってました)
LiveUSBの作り方は以下のサイトを真似させていただきました。
LiveUSBができたので、SSDにしたPCに差し込んで電源を立ち上げます。
立ち上げるときにUSBを先に起動させないといけないので、BIOS設定からUSBの順番を1番上に設定します。
自分のパソコンはFujituなので、電源を入れてF2ボタンを押すとBIOS設定の画面に入りました。
動画でわかりやすいので下記ブログ参考にしてください! do-you-linux.com
結果、、、
上手くインストールすることができました!
18.04はまだ出たばかりで不具合もあるみたいなのですが、個人的にまだ困ったことはありません。
Ubuntuはとても使いやすくて、見やすいし、起動も早いし何不自由しないことに驚いています。
起動が早いのはSSDに変えたのも大いにあると思うので一概には言えませんが、こんないいものが無料で使えるのはすごいなと心から思いました。