programing sisters 姉

プログラミングを学習するブログです

女子大生が二槽式洗濯機を使っていた話

今回、引っ越すにあたって今まで使っていた二槽式洗濯機を手放します。
そこで、おそらく一人暮らしの女子大生で二槽式洗濯機を使っている最後の
人物であると思い(真偽は不明)、使命感を感じたので二槽式洗濯機について
記録を残しておこうと思います。

二槽式洗濯機を使うようになった経緯


まず、私が一人暮らしを始めたのは約3年前です。
それまでは単身赴任であったパパとの二人暮らしで、家から大学までドアトゥードアで1時間。
私の友達の中には、片道3時間かけ来ている子、新幹線で来ている子もいたので、それほど遠くはない。なんなら近い方。
けど、どうしても一人暮らしがしたくなり、その話をパパにすると人生で初めてパパと喧嘩っぽくなりました。
何日間か
「一人暮らししたい!」
「なんで。する必要ないやん。」
「したい!!」
「する必要ない。」
の会話のやり取りが続きましたが、
親の盛大な愛を受けて出来上がったわがまま娘は一人で不動産屋さんに行きました。

「大学の近く、バストイレ別、独立洗面台」とか自由に希望を言いまくって、不動産屋さんが調べてくれた物件2つを見に行きました。
基本私は即決なので、すぐ今の家に決め、なんか契約書?みたいなやつにいろいろ書きました。
不動産屋さんが、不安そうに「あの〜、明日までにお金払う人のサインいるんですけど大丈夫ですか?」と聞かれ、
まだパパになーんにも言ってなかったけど、謎の自信があったので全力笑顔で「大丈夫です!」と答え、帰宅。
パパが帰って来てから、いろいろ考えたセリフで"私が大学の近くで一人暮らしをするとどれだけのメリットがあるか"
という内容で5分くらいプレゼンを行いました。

そのプレゼンに心動かされたのか、もう決めたら後に引かない私を知っているのか、ただ諦めたのか、は不明ですが
「もう俺がなんて言っても一人暮らしするんやろ、、」って感じでなんとさらっとサインゲット!!
「ただ、"留年しない"を条件に。」
望むところだ!!イェーーーーーーーイ!!パパテンキュ!!ということで一人暮らしをさせてもらえることに!!
(その時は留年しないように頑張るぞって思ってましたが結果的には無事留年し大学は5年通いました。)


文字にしてみると、わがままクズ娘と優しすぎる父親ですね。


そして友達たちに手伝ってもらって引っ越ししました。
もともとあった家電はパパが持っていくので、私は家電なしの状態。
大学の友達が引っ越すタイミングだったので、掃除機・電子レンジ・ケトル・炊飯器をその友達からゲット。
冷蔵庫はバイト先のお客さんからゲット。
洗濯機ないときついなぁと思っていた時、バイト先の店長が
「洗濯機をもらうから今のやつあげようか?」
「え!ほんとですか!取りに行くので欲しいです!」
「いいよ〜。二槽式だけど。」
(...ん?二槽式??なにそれ??)
これが私が二槽式洗濯機と3年間過ごすようになった馴れ初めです。

また友達に車を出してもらい、二槽式洗濯機を取りに行きました。
「ぼろっ」が二槽式洗濯機に出会った時の最初の印象。今では愛してるよ。。


二槽式洗濯機の使い方


ここからが二槽式洗濯機の使い方です。

その前に問題が発生しました。家に運び入れて設置しようとしたら、なんとホースが届かない。
どうしようと考えてる間に3年経ち今になっちゃったのですが、それまでどのように洗濯していたのかというと
ゴミ箱として買ったニトリの白いゴミ箱にお風呂場で水を溜めて洗濯機まで運んでいました。。
なんという無駄な動き。。しかし、これがよかったのです。詳細は後で書きます。

洗濯機の使い方は極めて簡単です。
今の洗濯機みたいにボタンを押すだけではなくちゃんと洗濯中構ってあげないといけないですが
力も技術も知識もいらず、誰でもできます。


1, 洗濯物をまとめる
これが結構めんどくさいんですよね。よし、今から洗濯するぞという確固たる意志が必要な最重要な作業です。
これができれば洗濯は終わったと言ってはちょっと過言ですけど、過言ではないかもしれない。
具体的には、部屋の中に散らばっている洗濯物を集めて洗濯網に衣服の種類に分けて入れます。
ここ数週間は脱いだ服は洗濯機の上に置くようにしたのでだいぶ楽になりました。
3年近くこんなことに気がつかなかったなんて、とも思いましたが、気が付いた時がそのことに気がつく
ベストなタイミングだったのだと信じることにしましょう。


2, 水を貯める
これも私がホースが届かない問題を解決しなかったせいで、めんどくさい度は高いです。
ゴミ箱いっぱいに水をため、洗濯機に流し込むという作業を6回繰り返します。
プログラミングならfor文で一発ですが、現実ではそうは行きません。
一回ゴミ箱いっぱいに水を貯めるのに約60秒、それを洗濯機に流し入れるのに約10秒、足して一回70秒。
かける6で420秒です。
しかも、水を溜めている間待ってなきゃいけません。お風呂の出たところにある独立洗面台の前で待ちます。
はじめの方はなにもせず、ただただ水が溜まって行くのを見ていました。
しかし今ではこの時間がゴールデンタイム!!
スクワッドをしたり、ストレッチをしたり、急いでトイレ掃除をしたり洗面台を磨いたりしています。
水を貯めるという作業の間に5個ものめんどくさいちょっとしたタスクを終わらせることができます。
何と言っても水が貯まるまでというタイムリミットがあるので最速で終わらせれます。
溢れちゃったらまためんどくさいことになりますからね。


3, 洗濯用洗剤と柔軟剤を入れる
文字通り洗濯物と水が入った洗濯機に洗剤と柔軟剤を入れます。
いまだにどれくらいの量を入れれば正解なのかわかりません。目分量です。
自分を信じましょう。


4, 回す
ここのつまみを回します。
これで洗濯が始まるので15分(max)待ちます。
その間はyoutubeを見たり、まだかかっている洗濯物を畳んだりします。
(部屋干しなので基本畳まず着るときに取って行くスタイル)


5, 排水し、すすぐ用の水を貯める
つまみを排水にセットし、水が抜けるのを待ちます。この間にゴミ箱に水を溜め始めます。
すると、ちょうど水が全部抜け終わるか終わらないかで、ゴミ箱いっぱいに水が貯まります。
このタイミングは時間との勝負です。
つまみを排水から戻した瞬間にお風呂場に行き、溢れそうになっている水を止めます。
洗濯する中で一番緊張する瞬間です。
ここをくくり抜けられたらもう洗濯する中で心配することはありません。
2と同様に、ゴミ箱いっぱいに水をため、洗濯機に流し込むという作業を4回繰り返します。
洗濯物が水を吸っているので2より少ない回数で済みます。
ここでも2個のちょっとしたタスクを片付けることができます。


6, すすぐ
4と同様につまみを回します。
時間は適当ですがいつも10分くらいです。
その間はyoutubeを見て待ちます。


7, 排水し, 脱水する
5と同様につまみを排水にセットし、水が抜けるのを待ちます。
そしたら洗濯網を1つ取り出し、右側の脱水スペースにブチ込みます。
脱水スペースは狭いので、網いっぱいに洗濯物がある時はコツが必要です。
使っているうちに慣れてくるでしょう。
そしたら、脱水の方のつまみを5分(max)にセットします。
中身の重さが偏っていたりすると、すごい音がします。
回転に合わせて"ゴンッゴンッ"って鳴って洗濯機が揺れるので、
そうなっちゃったら1回止めて、バランスを整えましょう。


8, 干す
脱水が終わったものから干していきます。
私はいつ何時でも部屋干しなので寒い日、暑い日、風が強い日、雨の日、
なんでもカモンです。負けない。
干してる間に次の網を脱水すると効率がいいですね。天才。


以上が私の洗濯の流れでした with 二槽式洗濯機。だいたい1時間くらい。

二槽式洗濯機のメリット・デメリット

二槽式洗濯機を使ったことがない人にメリットとデメリットを私なりにまとめました。

メリット

  • 横に細長いので幅を取らない

   (私の家は玄関入ってすぐ洗濯機だったのでありがたかった〜)

  • 割としっかり目に回るので威力が強い

   (これは私に譲ってくれた店長がくれるときに言ってました)

  • 洗濯をしているだけてちょっとしためんどくさいことを終わらせれる

   (これはホースがなかった私の場合)

  • 愛着が湧く
  • レア


デメリット

  • めんどくさい
  • ボタンひとつで終わらない
  • 見た目が古い
  • 古いのでちょっとカビ臭


一通り並べて見ましたが、メリットは私に限ってのものが大半ですね。
デメリットを見てみるといかに私が面倒くさがりかがわかりますね。
カビ臭はどうにか改善しようと思ったのですがなかなか洗濯後に乾燥させるのが
難しくて、最終的には見て見ぬ振りをしました。嗅いで嗅いでないふり。

最後に

プログラミング全く関係ないandなかなか謎な記事になりましたが
これできちんと二槽式洗濯機とお別れできそうです。成仏。
今までありがとう。

f:id:yoshinon444:20190317200900j:plain

f:id:yoshinon444:20190317200818j:plain

愛してました。


そういえば、洗濯機って普通に捨てたら罪に問われるんですね。
今回の引越しでまた1つ賢くなりました。

冷蔵庫と洗濯機を捨てる予定だったのですが、どちらも横浜では(どこも同じなのかな)
リサイクルしましょうということで捨てたらダメってなってるみたいでした。
そこで、回収業者に電話して、1人で運べないから家からの回収でお願いしたら
なんと、、、2万円超えと、、、なんと、、、なんと、、、

一度はしょうがないしそれでお願いしようと考えたのですが、
冷静に考えて2万は高ないか??何回飲みいける??
って思い直し、もう一度業者に電話。

指定の場所に自分で運べば回収料金だけなので半額くらいになると
教えてもらい、1万円ちょいで回収してもらうことに。
結局友達を捕まえて前日の深夜に指定の場所に運んでもらいました。
めでたしめでたし。

引越しは色々大変だしもっと早くからきちんと調べておけばよかった〜と思いました。


あ、そういえば卒業決まりました。やったーーーーーー。
5年間クソお世話になりました!!

卒論書:LaTeX使うための初期設定記録

やっと卒論書き始めるためにLaTeXを使えるように設定したのでその記録を。


インストール

まず、LaTeXをインストール。
zip叩いてインストールに結構時間かかった。

texwiki.texjp.org


エディタにはVS Codeが便利と同期に教えてもらったのでVisual Studio Codeもインストール。

azure.microsoft.com



VS Codeの設定

VS Code開いて左にある四角が2つ重なっているのをクリックして、下の3つを検索しインストールする。


f:id:yoshinon444:20190129154632p:plain




VS Codeの日本語化

上にある"file"などのバーが日本語になってなかったら、Control + Shift + P"Configure Display Language"を検索し、コード内の"en"( Englishの設定になっている )を、"ja"( Japanese )に書き換えて保存。

f:id:yoshinon444:20190129154717p:plain

VS Codeを再起動すると上のバーが日本語になる。


次に、ファイル→基本設定→設定とすると、右上に{ }というマークをクリックし、2つ出てきた画面の右側の{ }内に下のコードをコピペして保存する。


"VS Code 日本語化 Latex" などと検索すると一番上に出てくるGitHubのページ。
VSCode でLatexの日本語環境を作る · GitHub



PDF埋め込めるようにする方法

main.texの5行目のusepackageを" [dvipdfmx] "と書き換える。

f:id:yoshinon444:20190129155104p:plain

Ubuntuで急に端末がエラーを吐き始めた話

 

お正月終わって研究ちゃんとがんばろと思っていた矢先にubuntuの端末がおかしくなって、仮想環境に入れなくなった話をします。

コードが動く環境を作り直すのに一日かかりました。。

 

↓ エラー内容 ↓

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

 

端末が急に消えたから付け直すと、こんなエラーが出てきました。pipもcondaもインストールされてないみたいに言われちゃってどうしようって。。仮想環境にも入れなくて研究で使うコードが回せない。。おそらくパスの問題でANACONDAを入れなおすとパスが通りなおす(?)、とアドバイスをもらいANACONDAを入れなおすことに。。

 

ANACONDAインストール

 

www.anaconda.com

 

ここで私はfastphotostyleを回したくて、python2をrequirementされているので " python2.7 version " をダウンロード。

普通は " python3.7 version " で良いと思う。

 

$ bash [ダウンロードフォルダ]/Anaconda2-2018.12-Linux-x86_64.sh

 

で、エンター押しまくって、yes/noを聞かれるからyes入れて

" Thank you for installing Anaconda2! "

が出たらインストール完了。

 

入れなおして再起動したらpipとcondaが使えるようになった!!

 

 仮想環境

 

$ conda info -e

で仮想環境のチェック。なんにも入ってない。。ってなったのでまた環境の作り直し。

 

$ conda create -n [仮想環境の名前] (python=2.7)

python2.7の環境を作りたいので最後にpythonのバージョンを指定。

 

$ conda activate [仮想環境の名前]

で仮想環境に入ることができました!

 

 

f:id:yoshinon444:20190113153727p:plain

 

fastphotostyleのチュートリアルに必要なもの載っているのでその通りにパッケージ入れていきました。

 

cupyを入れなくちゃいけなかったんだけど、永遠エラーで入らなくて、、

CUDA9.1を入れなおしてもエラー消えなくて

調べたらパスが通ってないんじゃないかって思って

$ export CUDA_PATH=/usr/local/cuda

とCUDA_PATH通してあげたら入りました!!

 

 

このように一日かけて環境直せました~!やったぁ

結局ほとんどのエラーはパスのせいだった。いまいちパスがなんなのか分かってないから、よくわからず調べてはやってみての繰り返しですんごい時間かかった。

またおんなじことになった時のためにここに書いておこうと思い書きました。

 

卒業したい~。

 

京都で見つけた素敵なカフェ:walden woods kyoto

 

明けましておめでとうございます。

今年こそ本当に卒業したい私です。

 

プログラミング全く関係ないのですが、京都に帰省中、素敵なカフェを見つけたのでご紹介したく更新します:)

 

 

今年は1/1〜1/4まで京都に帰っておりました。

4日に家族で叙々苑ランチの予定があり(私のお家はみんな朝が弱いのでランチといっても15:00前から)、烏丸の方の叙々苑でお肉をいただきました!美味しかった!私は恐らく初叙々苑。ママ曰く、ランチ叙々苑コスパよく、おススメらしいです。あと、土地によって味が違うらしいです。京都はおいしいらしい。(個人の意見)

 

4日の夜に新幹線取っていたので、烏丸から京都駅まで歩くことになりました。

ママがオススメの佛光寺の境内にあるカフェに寄ろうって話になったのですが、行ってみると私もパパも「来たことがある!」ってなって、違うカフェに行こうってなりました。

 

 

カフェがある佛光寺の境内でママと。

f:id:yoshinon444:20190105143125j:image

ママだけ足細く見える立ち方ずるい。。 

 

 

ここのカフェもオススメなので載せておく。京都ならではって感じのカフェ。

 

tabelog.com

 

 

んで、3人で歩いて京都駅の方まで向かってたら、ふいにママが「確かこの辺に良いカフェがあった気が、、、」と言いだし、立ち止まり探すことに。

一生懸命検索してくれてたんだけど、お店の名前がわからないらしく全然見つからず。。

 

私は荷物も重かったから、「もう京都駅で良くない?」って思ってた時、パパがGoogleマップで見つけたとこに行ってみると、「ここだーーー!」ってママが騒いでたから、追いかけてみたら凄くいい感じの場所だった。

重い荷物持ってヒールでくるくるくるくるくる歩き回った甲斐があった。

“walden woods kyoto”というお店です!!

 

 

こんな感じで急に現れる。

f:id:yoshinon444:20190105143849j:image

 

歩き疲れてたけどとりあえずピース。

f:id:yoshinon444:20190105144147j:image

 

お店のロゴ。

f:id:yoshinon444:20190105141320j:image

 

 

すごい雰囲気のある建物だな〜と思ってたら、後で調べてみると大正11年に建てられた洋館をリノベしたカフェらしい。

普段R-STORE というアプリでリノベの物件検索するのが趣味な私にとって最高に素敵な空間でした。

 

 

店内に入るとチャイのいい匂いがして、カウンター内に機関車みたいな焙煎機がありました。かっこいい。。

 

 

カウンターもオシャレ。

f:id:yoshinon444:20190105143653j:image

 

機関車みたいな焙煎機。

f:id:yoshinon444:20190105141259j:image 

 

横からも。

f:id:yoshinon444:20190105143507j:image

 

 

ママとパパはチャイを、私はモカを頼みました。出来上がるまで列があったので、「先に上行って席確保しといて〜」と言われたので、1人で二階に行ってみることに。

 

したら、普通のカフェとは全然違う席でびっくりしました!

ど真ん中に木があって、その周りに二段の階段で出来た座席があり、二段目に座ったり、一段目に座ったりしてティータイムを楽しんでる人たちがたくさんいました。

 

たくさんの人すぎて、また見たことない席すぎて、内心戸惑ったけど、オドオドしないように平常心を保ちながら少し隙間があったところに座りました。

 

 

天井はこんな感じ。

f:id:yoshinon444:20190105143734j:image

 

席はこんな感じ。

f:id:yoshinon444:20190105144518j:image

 

木と人がそれぞれ座る様子。

f:id:yoshinon444:20190105145029j:image

 

 

人の靴があったところに座るのは無理って人は行かない方がいいかもだけど、私は全くそーゆーところは気にしないので問題なかったです。

 

写真たくさん撮ってる女性がいたり、おそらく観光途中で休憩中の外国人の方がいたり、年始早々大盛況な感じでした。飲み物も美味しかった〜。

 

 

モカ

f:id:yoshinon444:20190105143757j:image

 

 

最寄駅は五条みたいだけど、全然京都駅からも歩けちゃうので、京都に行く際には是非立ち寄ってみてください:)

店舗情報載せておきます。

tabelog.com

 

 

隣に座ってはった近所の人たちっぽい4人組のおばさま達が、自前の座布団を持参してたことが1番面白かったです。

長居すると確かにお尻痛くなっちゃうもんね。

 

ちゃんちゃん。

卒論がんばろー!!

土曜日だけど研究室いこ。。絶対いこ。。気合い入れていこ。。

 

 

 

独学プログラマー22章読んでみた:アルゴリズム

 

この章以降はプログラマーとして働くのに必要な知識や心がけなどが書いてあるので、独学プログラマーの更新はおそらくこれで最後です。だいぶ時間かかったな。。。もっとハイスピードで勉強しないと卒論に全然間に合わないなぁと思ってます。ハイ。他人事の感じがやばいですね。

 

この章ではアルゴリズムについてでした。

アルゴリズム:特定の問題を解決するための再現可能な一連の手順

ということで何個かの問題の解決方法が載っていました。

 

 

FizzBuzz

 

これは1から100までの数字を出力するのに、3の倍数はFizz、5の倍数はBuzz、そして3と5の倍数はFizzBuzzと出力させるというものです。

f:id:yoshinon444:20181204173601p:plain

このように書けます。ここでポイントは3,5の倍数の処理を先に書くといことです。上から処理していくから順番大切!という感じです。次!

 

 

線形探索

 

探索アルゴリズムとは、データ構造の中から欲しいデータを探す処理です。
線形探索とは、要素を1つ1つ見ていくシンプルな探索アルゴリズムです。

ssという関数で探している要素があるかどうか調べて、あればその数字を出力しTrueを返します。なければそのままFalseを返します。

f:id:yoshinon444:20181204174906p:plain

breakはfor文を終わらせるものだから、if文の列と同じ並びかなと思ってたんですけど、もう一個下げなきゃいけないみたいで「??」と思った。

 

誰か教えて?

 

 

回文

 

ある文が回文か回文でないかを判定するプログラムです。

回文考える人ってすごいですよね。。どんな脳みそしてるんだろう。

f:id:yoshinon444:20181204175912p:plain

lower()することで大文字小文字を関係なく処理するためです。word[::-1]と書くことで文字列を逆転させることができるらしい。知らなかった。逆転させた文字列が元の文字列と同じなら回文なのでTrueとなり、違ければFalseを出力してくれます。

 

 

アナグラム

 

アナグラムとは、単語の文字を入れ替えて違う文字を作ることです。

pythonではソート(並べ替え)が簡単にできます。sorted()という組み込み関数があるからです。数字だと小さい順に並べ替えてくれ、文字だとabc順に並べ替えてくれます。なので二つの文字がアナグラムかどうか検証するプログラムがすごく簡単にかけます!

f:id:yoshinon444:20181102142344p:plain

たったのこれだけで書けちゃいました!ここでもlower()が活躍。

 

 

出現する文字列を数える

 

渡された文字列にどの文字が何回出現したかを数えるものをプログラミングします。辞書を使って、1文字づつループを回して実装しました。

f:id:yoshinon444:20181102144342p:plain

もし辞書の中にある文字がすでにあるならば+1をして、まだないなら1を代入するという流れです。このように要素の集まり(コレクション)を扱うのは頻繁にあるらしく、pythonの組み込みモジュールcollectioonsで提供されているらしいです。せっかくなのでこれを使っても書いてみました。

 

f:id:yoshinon444:20181102144700p:plain

これはcollectionsの中にあるdefaultdictというものを使っています。さっきより短くかけました!

 

f:id:yoshinon444:20181102144753p:plain

これはcollectionsの中にあるCounterというものを使っていて同じ動作をするのですが、関数すら自分で書く必要もなくなりました。簡単になりすぎてびっくりしました笑。

 

組み込みモジュールを自分で見つける能力が必要になってくるなと思いました。みんなが欲しいアルゴリズムならば組み込みモジュールにある確率が高いから、自分で0から書くよりもそっちを探す方が最終的には楽で速いかも。。

 

ここで不思議だったのは、出力が以下のようになり毎回合ってはいるんですけど順番がバラバラなんですよね。。なんで??

 

{'i': 1, 'e': 1, 'u': 1, 'a': 1, 'o': 4}

{'u': 1, 'a': 1, 'e': 1, 'o': 4, 'i': 1}

{'o': 4, 'u': 1, 'e': 1, 'a': 1, 'i': 1} etc...

 

わかる人教えてください~。

 

 

再帰問題

 

再帰:大きい問題を小さい問題に分割して解決する分割統治法で使われる手法

 反復法は手順を繰り返すことで問題を解決し、再帰法はその関数自身を呼び出します。反復法で解決できる問題ならば、全て再帰法でも解決できるらしい。再帰関数は無限に呼び出し続けられることを避けるために再帰終了条件を持たなければならないらしい。再帰終了条件とは、関数自身の呼び出しを終了する条件です。

 

再帰は守らなければいけないルールがあるそうです。

  1. 再帰終了条件を持つ
  2. 状態を変えながら再帰終了条件に進む
  3. 再帰的に関数自身を呼び出す

というルールです。

本では"99 Bottles of Beer on the Wall"という曲の歌詞を再帰法を使って出力してたんですけど、私は99本もビール飲めないので、7本にしておきました。

f:id:yoshinon444:20181204182153p:plain

 

出力

f:id:yoshinon444:20181204182257p:plain

こんな感じです。7本くらいなら飲めるので次の日のことも考えて、7本にしておきました。 numが1以下になるともうビールないよって出力してreturnで終わります。numが1より大きい時は、1つ引いて残りのビールの本数出力して、bottles_of_beer関数を再帰的に呼び出します。ちゃんと再帰終了条件あって、終わりに向かってるので上の3つのルール満たしてます!

 

 

終わり!

だいぶ前に途中まで書いてほったらかしてたけど折角書いてたからあげます。

さ、卒論のことはほっといてビール飲みにいくかな〜白目

 

 

 

独学プログラマー21章読んでみた:データ構造

 

この章はデータ構造について書いてありました。前にもデータ構造について書いてあった章があって、そこではリスト、タプル、辞書について書いてありました。今回はそれに追加で、スタックとキューというものが紹介されていました。

 

 

スタック

 

スタックはリストと同じように要素を追加したり、削除したりできるデータ構造のことですが、リストとの違いは、要素の追加・削除を最後の要素に対してしか行えないという点です。

 

例えば[1,2,3]というスタックは3の後ろにしか追加することができなくて、3しか削除できません。なので2を削除したい場合は3を削除した後にしか行えないということになります。

 

スタックから要素を削除することをpop、スタックに要素を追加することをpushと言います。また、このように最後に入れた要素だけ取り出せるデータ構造をラストイン・ファーストアウト(LIFO)と言います。わかりやすいですね!最後に入ったものが最初に出る。

 

スタックのデータ構造はpythonのライブラリで提供されているらしいです。この本では理解のために1回自分で実装することを進められていました。

スタッククラスには5つのメソッドがあります。

  • is_empty:中に要素がなければTrueを返す
  • push:要素をスタックの1番上に積む
  • pop:スタックの1番上の要素を削除
  • peek:スタックの1番上の要素を返す
  • size:スタックの要素数を返す

 

pushメソッドではpythonにもともと入っているappendメソッドを使い要素を追加し、popメソッドではデータ構造の指定のインデックスを削除できるpopメソッドを使って実装しています。インデックスを指定しなかった場合、データ構造の末尾の要素が削除されます。mainでは動作確認のために色々自分でチェックしてみた内容です。

 

f:id:yoshinon444:20181028154255p:plain

 

これを使うことで要素の並び順を逆に並び替えたりすることもできます。あるデータ構造を作り新しいデータ構造にpopメソッドを使って後ろから代入していけば良いです。pushメソッドは1つずつしか要素を追加することができないので、一気に追加する場合はfor文を回す必要があります。

 

 

キュー

 

キューもリストと同様に要素を追加したり削除したりできますが、スタックのように追加・削除の際に特別なルールがあります。スタックとは違い、最初に入れた要素が1番はじめに取り出すことができます。このようなデータ構造をファーストイン・ファーストアウト(FIFO)と言います。最初に入ったものが最初に出る。スタックと逆ですね。

 

これもpythonの組み込みクラスcollection.dequeとして提供していますが、実装して見ましょうということでした。

本来もっと多くのメソッドが用意されているらしいのですがここでは4つのメソッドを持たせます。

  • enqueue:要素をキューに追加
  • dequeue:キューから要素を削除
  • is_empty:中に要素がなければTrueを返す
  • size:キューの要素数を返す

 

 ここでキューの特徴であるFIFOのために、要素を追加する際にinsertメソッドを使用しています。insertメソッドでは要素を指定の位置に追加することが可能です。

リストオブジェクト.insert(指定のインデックス, 追加する要素)

インデックスに0を指定することで新しいものほどインデックスが小さくなるようにしています。これもmainの中は動作確認です。for文を使ってキューを作成してみました。

 

f:id:yoshinon444:20181028154322p:plain

 

ちゃんちゃん。

独学プログラマー19章読んでみた:github

 

19章はバージョン管理のことについて書いてありました。主にGithubの使い方が書いてあってpythonの勉強というよりは、実際にプログラマーになるための章かなと思いました。私はHPを作るという課題の時に教えてもらってGithub軽く使ったことがあったのですが、pullして自分の担当のところのプログラム書いてaddしてcommitしてpushするという流れだけ守ってやってただけなので、そのコマンドが何を意味しているのか全然理解してなかったので、そこが理解できたのがよかったです。あと使ったことないコマンドも紹介してあって、そんなこともできるのか〜と思いました。

 

 

Github

 

まず、バーション管理システムとは、複数のプログラマーによるプロジェクト内でのコード共有を支援してくれるシステムのことで、今よく使われているものがGithubです。よく使うワードとして、リポジトリというものがあり、これはバージョン管理システムによって作られるデータ構造です。コードの変更箇所が記録されます。ローカルリポジトリ中央リポジトリによって成り立ちます。ローカルリポジトリとは、メンバーそれぞれのコンピュータにあり、中央リポジトリGithubのようなウェブサイトで提供されます。プログラマーはローカルリポジトリで変更箇所(差分)を記録していて、それを中央リポジトリに同期することで全員で共有することができます。

 

 

使い方

 

まずリポジトリをウェブサイトで作成します。そのURLをコピーし

$ git clone [リポジトリURL]

というコマンドを書くことで自分のコンピュータにそのリポジトリがダウンロードされます。

 

ここでGitを使う上でよく使うものを先に紹介します。

ステージ状態とは最終的に中央リポジトリにpushしたい差分がどこなのかをGitに教えるということらしい。なのでpushの大まかな流れは、変更した差分をGitに教え、ローカルリポジトリに保存し、中央リポジトリに同期するって感じなのかな。

 

ここからは実際に使うコマンドの紹介です。

 

$ git remote -v

pushやpullする相手となる中央リポジトリのURLを表示する。よくコマンドで使われる-vはverbose(多くの情報を出力する)というものの略らしい。

 

$ git status

ローカルリポジトリに記録された状態と現場との差異を表示する。ステージ状態に無いものは赤く表示されます。なのでpushする際は赤い文字が無い状態にする必要があります。

f:id:yoshinon444:20181024170514p:plain

こんな感じで表示されます。これはtest10.pyはステージ状態では無いということが一目瞭然ですね。

 

$ git add [ファイルパス]

ステージ状態にしたいファイルパスをここに書くことでステージ状態にすることができます。ファイルパスのところを.(ドット)に置き換えることで"全ての差分"を自動的にステージ状態にすることができます。

 

$ git reset [ファイルパス]

ステージ状態にしたあとでステージ状態を取り消したい時はこのコマンドで実行できます。

 

$ git commit -m [コミットメッセージ]

これでステージ状態の差分をローカルリポジトリに保存できます。コミットメッセージとは以下のファイル名の右に書かれているコメントのことで、これを書くことで複数のメンバーで作業する時にわかりやすくなります。

 

f:id:yoshinon444:20181024171542p:plain

 

$ git push origin master

これは呪文です。これでcommitした差分を中央リポジトリに同期することができます。

 

$ git pull origin master

これで誰かが変更したものでも差分を中央リポジトリからローカルリポジトリに同期することができます。

 

 

前のバージョンに戻すこともできます。

 

$ git log 

これで今まで行ってきたリポジトリの履歴を見ることができます。コミットにはコミット番号(ID文字列)というものが全てに付いているので、そのID文字列を見るためにこのコマンドを実行します。

 

$ git checkout [コミット番号]

先ほど見たID文字列をここに指定することで、その時点のコミットした状態まで戻すことができます。コミット番号のID文字列とは例えば”16c62a261a161b70c844d4027eadd6a936c4cffc”このようなものです。

 

$ git diff [ファイル名]

これで、前回コミットしたものとの差分、つまりリポジトリに記録されたものと違う部分を表示することができます。

f:id:yoshinon444:20181024172536p:plain

この時一番下の行を書き足しているので+で表示されています。

 

f:id:yoshinon444:20181024172630p:plain

逆にこの時は一番下の行を削除したのでーで表示されています。

 

 

他にも色々なことができるみたいなので、ぜひ使えるようになりたいと思いました。チームでも作業がややこしくならずに進められそう。今までチームでやったことそんなに無いけれど、仕事となったらたくさんあるだろうし、練習しとこうと思いました。

 

バイバイ!