auの日記

プログラミング初心者の日記。(auはハンドルネームです)

バイトに月1で入ると何か面白くなることが分かった

auです。

大学1年の6月から大学3年の現在にかけてカラオケのバイトをしているのですが、色々な用事などが重なり、月に1、2回しか入ることができません。

それでも店長やみんなは受け入れてくれるので、とても恵まれた環境にいるんだなーと思います。

そこで、月に1回入ると、初対面の時は入って1週間って言ってた人に色々教えるが、次に会う時には数ヶ月経っているわけで、めちゃめちゃ成長しています。

前回あった時は物を運ぶことしかできなかったのに、次に会うと機械の直し方を習得していたり、いい意味で上手なサボり方を会得していたりと、見ていてすごく面白いです。

後、常に月のキャンペーンが変わっているので、フロントのオペレーションが変わっていたり、急にQR決済に対応していたりと、驚くことが多いのも面白いです。

割と気楽にできるバイトかつ、みんなと楽しく遊んだりもできるので好きな場所です。

オブジェクト指向の理解度レベルが上がった気がした

auです。

久しぶりのバイトを終えて、あまり時間がないので簡単に書こうと思います。

Firebaseを使ったアプリの仕様を考えているときに、Firebaseから取ったデータを加工し、それを使い回す必要がありました。そこで、Firebaseからデータをとり、加工するという関数を作り、引数に欲しいデータを要求するという風にしたらいい感じになるじゃん!と気づきました。

その時、オブジェクト指向ってこういうことなんだなあという風に思えました。

という1日でした。

Pythonを使ってFirebaseの特定のテーブルの情報を取得する方法

auです。

FirebaseのRealtime Databaseを使ってアプリを開発しているのですが、特定のテーブルの値を抜き出す方法をメモがわりに残しておこうと思います。

言語はPythonで、firebase_adminのライブラリを使っています。

早速本題です。

Firebaseの初期化処理は終わり、データがある程度追加されているものとします。

こんな感じでテーブルがあったとします。

f:id:program-shoshinsya:20190913232023p:plain

この場合、aaaaというデータを取り出したい場合、以下のように書きます。

ref = db.reference('qr/aaaa').get()
print(ref)

# 実行結果
{'used': 3}

色々と調べてみましたが、意外とまとめられていなかったので・・・

あとはこの辞書型の値を取り出して、かちゃかちゃすれば色々な処理を実装することができます!

ネットワークで用いられるDHCPとは

auです。

ネットワークでIPアドレスを割り振るためのサーバである、DHCPについて調べました。どんな風に割り振るんだっけ・・・となってしまったので、復習を兼ねて調べようと思います。

DHCPとは

DHCPとは、Dynamic Host Configuration Protocol(ダイナミック ホスト コンフィギュレーション プロトコル)の頭文字をとった用語です。

DHCPプロトコルと名のついている通り、通信の際のルールです。DHCPサーバに対して、DHCPクライアントが「ネットワークにアクセスするからIPアドレスを割り振っておくれ」という風にパケットを送信し、DHCPサーバがIPアドレス貸し出してくれます。

貸し出しとなっているため、一定時間をすぎたら返却するか、無制限で貸し出しをするかをサーバ側の設定で選ぶことができます。この時間をリースタイムと言います。

学校や社内といった、制限をかけなければならないネットワークでも、DHCPサーバを経由することで、一度の設定で多くのクライアントを制限することができます。

スマホタブレットといった機器に、固有のIPアドレスを割り当てることは難しいので、DHCPを使って自動で割り振ります。

ソフトウェアなどを使って設定をいじることができるので、割と簡単にIPアドレスの範囲を制限したりできるんだなと思いました。

よく聞くドメインってなに?

auです。

ドメインと言われて、パッと意味を説明できないので調べることにしました。

ドメインとは

ドメインとは、何らかの領域のことで、ドメイン名のことを指します。調べた感じこんな感じの結果でした。いや何だこれということでもっと砕いで調べてみると・・・

IPアドレスの名前のようなものみたいです。

パケットを192.155.1.3から132.198.2.1に転送してと言われても、人間じゃ理解に苦しみます。

しかし、google.comからprogramshoshinsya.comに転送してと言われると、人間でも理解できる気がします。

つまり、IPアドレスに対応した名前をドメイン名というようです。

ネットワーク用語のロングポーリングとは

auです。

ネットワークの用語を調べていると、「ロングポーリング」という用語があるみたいです。ポーリングなら以前まとめたので、そちらを見てみてください。

program-shoshinsya.hatenablog.com

ロングポーリングとは

ロングポーリングとは、任意のタイミングでメッセージを送れるようにしたものです。

一度接続した通信に対し、サーバ側はレスポンスを保留し、コネクションを維持します。そして、サーバ側でイベントが発生した場合に、維持していたコネクションを通じて通信を行います。

ポーリングは、一定間隔でメッセージを送るものなので、任意のタイミングでメッセージを送れるというのは大きな利点になります。

サーバ側の実装は、任意のタイミングに対応するため、ポーリングよりも多少複雑になってしまいます。しかし、クライアント側の実装は、メッセージをサーバ側に送るだけのため、ポーリングと変わらず、実装は容易です。

Pythonのforで使われる「_」とは

auです。

久しく勉強系の記事を書いていない気がしたので、これから書いていこうと思います。

Pythonでfor文を使うときによく書く書き方で

for i in range(10):
  ...

という書き方があります。これだと、10回のループを表し、それぞれの数は「i」に代入される形になります。

では、「i」を使わない場合はどうしましょう。

答えは「i」を「_」に変えるだけです。

for _ in range(10):
  ...

これだけで、10回のループを変数に代入せずに処理することができるようになります。

IDE(VSCodeとかの統合開発環境)では、使っていない変数を知らせてくれることがあります。宣言する必要がないけどなあという場合には、「_」を使ってバグの防止に努めましょう。