Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

フローチャートは制御構造を書く以外の用途に適さないのでは

アラフィフのおじ様方がすごく好きなのよね・・・これ。

フローチャートって、制御構造をイメージして表現するために作られたものなんじゃないかなぁ。制御構造って逐次、分岐、繰り返しの3つしかないから、それらのイメージを可視化するために使う。ま、それならわかる。でも、例外/オブジェクト/同期 or 非同期/スレッド/ジェネレーターやデコレータといった現代ではふつーのプログラミングになると全く表現できないですよね、これ。

プログラミングをイメージで可視化するための記法って、21世紀向けに再発明されていいんじゃないかな。え?UML?(∩ ゚д゚)アーアーきこえなーい

unittest.TestCaseでAttributeError

import unittest していて、何故かTestCaseが見つからないという状況が。

何の事はない。ファイル名がunittest.py だったからだ・・・ また、同じディレクトリ内にunittest.pyがあった場合、そちらが優先されて読み込まれてしまうので注意が必要。

WTFormsでCheckBoxをグルーピングして表示する

こちらにCustom Widgetを利用して、チェックボックスのリストを作るコードがあった。

Checkbox WTForms Example (in Flask) · GitHub

ListWidgetのコードを見ると、ulかolでマークアップしてくれる。一瞬メンドイなって思ったけど、CSSで調整できる余地を残してくれていると考えるとナイスだなと思った。CSSでlist-typeをnoneにすればいいし、liがブロック要素で嫌って言うならdisplay:inline-blockとかにすればいいだけ。

github.com

JCOMのモデムは電源投入後に接続したMACアドレスを覚えているらしい

PCとLANケーブルで直接繋いでいる状態で、モデムのEthernet側と無線LANルータのWAN側をつないでみると、WAN側のIPが全く取得されない。PCに戻したらIP振ってくれる。

・・・あんまり考えたくないけど、最後に接続したMACアドレスを記憶していて、自社のネットワークに繋いだMACアドレスの情報を管理している(or DHCPで振り当てるIPアドレスの効率化を図っている)ようです。

ケーブルモデルの電源を切ってから、無線LANルータに刺したらIPアドレスが割り当てられました。

なるほどね・・・DHCPって自動的に振り当てられるとはいうものの、プロトコル的にはMACアドレスとのマッピングだもんね。

よく分かるFROM句の仕組み

例えば、こういう顧客テーブルを全件取得するSQLがあります。

SELECT
     *
FROM
    customers

上記のSQLはこうやっても一緒です。

SELECT
     *
FROM
    (SELECT * FROM customers)

テーブルCustomersって要は全件取得した結果集合をFROMに設定してるんだよねっていうこと。

JOINでも同じ。Salesテーブルは外部キーとして、CustomersテーブルのIDを持っている。カラム名はcustomer_id。

SELECT
     *
FROM
    customers as c
    join sales as s on s.customer_id = c.id

以下のように書いても一緒です。

SELECT
     *
FROM
     (SELECT * FROM customers) as c
     join  (SELECT * FROM sales) as s on s.customer_id = c.id

JOINの対象にサブクエリを仕込めるっていうのは、こいつが一番わかり易い気がするなと新人トレーニングで感じた。

SQLが集合の関係演算を行うものであるというのは、FROM句を細かく見ていくとよくわかる。逆に言うと、FROM句が書けない場合はSELECTすることは絶対にできないなー

SQLを学習できるWebサービスを作りました。

www.start-sql.net

結局Evernoteに帰ってきた

メディアのネタ帳で情報集め→そこからの記事への整理を目的とした場合、Pocketではタグとアーカイブの有無でしかフィルター出来なくて不便すぎた。記事を本文だけ抽出しオフラインで読めて、その内容を見ながらスマホで記事を作れてノート全体を検索できるみたいなツールは、現状ではEvernoteぐらいしかなかった。3000円/年なら払いますわ。

純粋なドキュメント生成であればSphinxであったり、TyporaのようなMarkdownエディタを使えばいいだけ。ノートアプリというより、情報を整理して溜め込む必要があった。ウェブ情報を上手く取り込んだDBづくりで言えば、Evernoteがベストな気がするので、運用してみます。

IT戦略(企画)立案から要件定義までに必要なことがわかる本

僕の問題意識 is これ。4年半も前に思ってたこと。

このテーマの書籍原稿草稿の進捗、20%です。GWを使って頑張って続き書くんだ。