2018年8月18日土曜日

MacのIDLEのスクロールがおかしい時の対処法

IDLEでファイルを開いてスクロールしようとするとスクロールが下にばかり行ってしまいました。

これはバグだわと思い、ネットで対策を調べて見ました。

バグ管理しているサイト(https://bugs.python.org)
のIssue34047に解決策がありましたので、試して見ました。

直すファイルは
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/idlelib/editor.py
らしいです。



461から462行目を修正します。カッコを追加するだけです。

修正前
up = {EventType.MouseWheel: event.delta >= 0 == darwin,
EventType.Button: event.num == 4}

修正後
up = {EventType.MouseWheel: (event.delta >= 0) == darwin,
EventType.Button: (event.num == 4)}



全く時代と空気を読まない修正ですが、コミットしないしいいよね。。。

再起動させたら治りましたー!!

MacのIDLEに日本語が入力できない件

今更気づきましたが、IDLEで日本語が入力できませんでした。

そういえばワーニング出てたなー
"WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information."



めんどくさいのでそっと閉じてましたが、対応することにしました。
サイトを見にいけってことなので、見に行きました。

今の環境は
Python 3.6.5
Tcl/Tk 8.5.9


今の最新版で正常に動くのは
Python 3.7.0
Tcl/Tk 8.6.8

とのことなので、両方バージョンアップすることにしました。

"macOS 64-bit installer"をインストールして見ました。

ちゃんとPython 3.7.0とTcl/Tk 8.6をインストールするって書いてますね。


インストールできました。

警告も表示されなくなったし、ハローワールドが表示されました。

2018年8月5日日曜日

Oracle Database(12c)をWindowsにインストールした件

データベースを入れてないのに気付いてしまったのでインストールすることにしました。
なんでもいいけど、何となくOracleにします。

久しぶりに迷路のようなOracleのHPに訪れてビックリ。
新しいのが出てる。
11g ー>12cー>18c

13はどこ行った?
はい、分かりましたよ!!
西暦に合わせて、絶え間なき陳腐化をアピールしよって魂胆ですね。

・・・さて、はじめますか。
今回はOracle Database 12c Release 2をインストールします。(ユーザ登録が必要!!)
ついでにOracle SQL Developerも軽く設定しときます。

winx64_12201_database.zipをダウンロードして、ZIPを解凍します。

winx64_12201_database\database\setup.exe を実行します。

セキュリティ・アップデートのチェックを外します。


[はい]をクリック

データベースの作成および構成を選択して、[次へ]をクリック

デスクトップを選択して、[次へ]をクリック

Windows組込みアカウントを選択して、[次へ]をクリック

[はい]をクリック

インストールする場所を設定する。
Program FilesとかUsersはやめておく方が無難。パスに日本語が含まれるのも危険。(らしい)

[インストール]をクリック


インストールが始まる・・・

ファイアウォールの警告が出たら、アクセスを許可する。
そして待つ・・・

進捗が70%の時が、とても長い。。。
でも、一応完了する。



次はちょっとだけOracle SQL Developerを設定します。
スタートボタンに出てくるのですぐ見つかりますが、パスはこちら
C:\oracle\product\12.2.0\dbhome_1\sqldeveloper\sqldeveloper\bin\sqldeveloperW.exe

起動しました。

左上のプラスボタンから接続します。

こんな風に入力。接続名は適当でOKです。
パスワードはインストールの時に決めたの同じでOK

ユーザの一覧を表示してみました。

2018年7月29日日曜日

データベースにNULLがあったらなんか悪いの?な件

ちなみに私は全くNULLがないデータベースを見たことはありません。
それが課題だという認識を持ってるチームも見たことありません。
一方で、NULLだらけのテーブルは山ほど見ました。
なのに、NULLはだめでしょ。っていう意見も多いようなので調べてみました。


【そもそもNULLって何か?】
1.「値が不明」、「値がない」状態を示すための目印。
2.どのようなデータ型でもNULLをとり得る。
3.プログラミング言語のNULLポインタとは別物。
4.値ではない。


【NULLの弊害】
1.NULL様専用に条件の記述が必要
 「NULL + 10」も「NULL < 10」も、「NULL || '10'」も全部NULLになるので
 「SELECT name FROM member WHERE branch <> 10 OR branch IS NULL」
 のように書くことが増えます。

2.実行計画の最適化が難しくなる
 要するにオプティマイザのパフォーマンスが悪くなるということ。


【え、それだけ?】
アクセスが多いシステムでもないし、システム改修のときは、NULLを覚悟で既存のテーブルに項目追加する方が楽だね。ってなるのはわかるような気がします。


【理想と乖離する根本原因】
WBSしか興味ないPMと、工学的な意味でシステムがわかってないSEと、訳も分からず派遣された若手の下請けPGの組み合わせでは、わざわざ影響調査してデータベースとプログラムをリファクタリングしてNULLを撲滅しましょうっていう話にはならないでしょうね。動けばいいんです。

2018年7月21日土曜日

MacにBlenderをインストールしてみた

将来的に3Dプリンタで何か作ってみたい!!
ということで、3DなCDソフト「Blender」をインストールすることにしました。
中学生ぐらいの時に一回やってみて、すぐ挫折したのでリベンジです。
細かい作業は嫌いです。

ダウンロードサイト「https://www.blender.org/download/」にアクセスします。

インストーラを起動(隠しファイルが見えちゃってますね)















できたファイルに「blender」と「blenderplayer」がありますが、「blender」が正解です。














やっぱり表示が英語だと困るので、日本語にします。

[File] -> [User Preferences]で設定画面を表示します。
[International Fonts]をチェックして、[Default (Default)]をクリックします。

















日本語を選択して、[Interface]、[Tooltips]、[New Data]をそれぞれクリックします。

















最後に、[ユーザー設定の保存]をクリックして完了です。










2018年6月3日日曜日

結局、システムの設計書って何書けば良いの?っていう件

僕はいくつかシステムやチームに参加させてもらいましたが、驚くほど、

設計書がコスパ悪い。。。

個人的にはで、ドキュメントとして成立してないことも往々にしてあると思ってます。
そこそこ工数とってやってる訳ですから、情報資産としてイケてる設計書を作りたいのです。


という訳で、今回はそもそもなぜシステムの設計書は得てして微妙なのか考えてみました。

【微妙だと思うところ① 実装と整合性が取れていない】
これ出来てないと意味無いと思うんですけど、ちゃんとするの難しいし、もはや違ってて正常な空気すらあります。
内部設計が微妙な場合はたぶん、こういう状況でしょう。

外部設計作る→内部設計作る→内部設計間違っとるぞと思いながら正しいだろう実装をする→修正の時間ないOR忘れるOR製造終わったし放置でよくね?OR運用さん宜しく

僕は根本原因はWBSにあると思うんですよね。
実装が遅れるとか、仕様が変わるとかはリスク高いので考慮してますけど、
ユーザーへの資料でもないし実装できちゃうし、考慮してないですよね。
WBSになければ、時間ないし忘れちゃうでしょう。
内部設計が間違ってるのが分かるのは製造や単体テストのフェーズなんで、ウォーターフォール自体が失敗してるというのもWBSに書きにくい理由ですかね。
運用さん宜しくってのは、どのチームでも出来ることじゃ無いですよね。ソース読めない人もいますし。属人化やらしてるレベルだと優先順位は最下位でしょうね。


【微妙だと思うところ② 資料多すぎ。しかも断片的】
システムが大きくなれば、資料が増えるのは分かりますけど、必要以上に多くなってませんかね。例えば、プロジェクトごとに資料を新規作成している場合。
特に、システムの変更箇所のみ設計書作るとか。

2003年 [基本設計書]リンゴ画面表示対応.xls
                詳細画面の中央にリンゴを表示する。

2004年 [基本設計書]リンゴ画面表示個数変更対応.xls
                詳細画面の中央にリンゴを5個表示する。

2005年 [基本設計書]オレンジ画面表示対応.xls
                詳細画面にオレンジを2個表示する。 ※リンゴ画面表示個数変更対応.xls参照

2007年 [基本設計書]画面表示切替対応.xls
                詳細画面に表示する果物をラジオボタンで切替可能にする。

2010年 [基本設計書]詳細画面改修対応.xls
                詳細画面のラジオボタンをプルダウンに変更し、管理者はバナナを選択可能にする。

2011年 [外部設計書]果物管理システムリプレース対応.xls
                果物管理画面の下部に備考欄を追加する。※要件定義書を参照

2015年 [外部設計書]みかん個数入力欄追加対応.xls
                果物管理画面の上部にみかんを表示し、個数入力欄を追加する。

。。。で、結局全体としてはどうなっちゃったの?よくわからんから、システム触ってみよ。
となるパターン。
上記の場合だと、画面名や果物名もしれっと変わってるし、バナナがどこに書いてあるのか調べるのは大変でしょう。過去の資料を参照にすると、陳腐化して使い物にならん資料も大事にとっとかないといけない。それと資料間の境目的な仕様の記載が漏れがち。実は2007年時点で果物の表示は全て1個でした。とか色々出てくる。
そして将来は、みかんの個数だけインサートするテーブルが多いとかベテランしか知らない状況が生まれるんでしょうね。


【微妙だと思うところ③ 肝心なところがスカスカ】
詳細設計書に一生懸命ロジックを書くと、保守が大変なのか手を抜いてることがありますね。文章にしにくいときもあるのでこれも難しいところ。

詳細設計書曰く、
 詳細リスト取得・・・リンゴ、バナナ、オレンジについて詳細マスタからデータを取得する。

ソースコードは、
public class L001001 extends BusinessLogic {
    public void getDetailList(String userId, InfoTable info){
        switch(info.fruitsId) {
            case Const.APPLE:
                addApple();
                break;
            case Const.ORANGE:
                if(SystemUtil.getServiceID(SystemConst.S01).equals(info.serviceId)) {
                    if(!CommonUtil.isEmpty(SystemUtil.getCustomData("REMARK", "S01"))){
                        try {
                            getRemark();
                        } catch(BLException e) {
                             exceptionHander.add(e);
                        }
                    }
                }
                addOrange();
                break;
            case Const.BANANA:
                addBanana();
                break;
        }
        addRemark();
    }
}

適当だけど、こんな風になってたりする。
あれ、オレンジの時だけなんかやってるじゃん。リンゴはしなくていいの?
みたいな。嫌ですね。経験上、設計書がザルすぎるところは単体テストも適当。
かといって、10Kステップあったら設計書に10K行書くのも嫌です。
設計書とか関係ないけど、個人的には何でもかんでもメソッドの型がvoidなのは本当に見る気失せます。



ということで、努力目標程度ならまだしも、設計書とプログラムをバッチリ辻褄合わせるのって、本当に難しいし、そこに時間やら人やらつぎ込むのは、たぶん無理というか無駄。資金が潤沢にあればいいレベルまで持ってこれるでしょうが、UI設計とかテストとかに時間使った方が、ユーザは喜ぶと思うんですよね。

この件について、私なりの結論は、

詳細設計だか内部設計だか知らないが、ソースコードに吸収されてしまえ。

です。
詳細の記載場所はJavadocとかコメントとかにして、概要とか全体像は資料にしておく方がいいと思うので、基本設計書はしっかり作るべきです。

2018年6月2日土曜日

アムウェイのおばさんとの会話のまとめ その3

アムウェイに勧誘されました。
今回ので4度目。まぁ、さすがに慣れてきました。
ただ、今回は私が無視しなかったせいで、3日間という長期戦となったのでした。

アムウェイが合法なのも儲かっている人がいるのも分かりますが、私にはご縁がないようです。

ということで、前回に続き、アムウェイのおばさん(Aさん)と私の会話を紹介します。
これが最終回です。


【3日目:16時〜19時(雨)】
参加者:アムウェイのおばさん(Aさん)、私(I)
場所:おばさんの活動拠点


改札での待ち合わせにやっぱり遅れたというか来てもないAさん。
今回は、買い物してたらめっちゃ並んだから遅くなったとのこと。
で、近所にはいるからこっちまで来いとか言い出す始末。
雀の涙ほどの僕の給料からさらに上前を撥ねようとしてんのに何言ってるんだ。
今回のでわざと遅れているのではという疑惑はほぼ確信となりました。
あのね、私はあなたより大分遠いところから来てますよ。


A:「あ、こんにちはー。ごめんねー。すごい雨だねー。」

I:「。。。そうですね。」

A:「もう少しで、うちのメンバーがいるところに着くよ。」


5階ぐらいの建物に到着。最寄駅からは5分程度、場所は結構良い所。
ただ、建物がボロいよね。
エレベーターで3階に到着。女性が多いのか、入口は飾りが色々あって、おしゃれ?というか塾の教室っぽい。
案内されて中に入ると、個室になっているところが3つぐらいあって、白板やら椅子やらあって30人ぐらいは入れそう。
塾に通ってた頃を思い出す。とは言うものの、塾よりは整理されていなくて、何がごちゃごちゃしてる。


A:「席空いてるか確認して来るから待ってて。」

部屋には15人ぐらい。僕以外にも何人か勧誘されていました。

A:「今日はね、Iさんのために、私も勉強して来たんだー。」


前回も聞いたような、内容を話し始める。アムウェイはメーカーでCMを使っていないから、安く良いものが買えるとかなんとか。全部アムウェイでやってんだとか言ってる。
その流れで、アムウェイが売り上げ1位とかいいながら、本社の写真を見せる。いや、前も見たし。


I:「まぁ、立派な建物だと思いますよ。でもね、ジャンルも技術も違う製品を大量に生産した上に出荷までやるとか規模が足らないと思いますよ。在庫の保管場所も足らないでしょうね。工場とか言ってますけど、レイアウトから判断すると一部の物流加工がメインってとこじゃないですかね。だから本当は大半はOEMじゃないですか。今の説明は嘘ですよ。」


まあまあ知ったようなこと言ってみた。
写真1枚だと判断できないようなことも無理して主張。


A:「うーん、確かにOEMの製品はあるね。」

I:「ですよね。都合の悪いところは、いつも僕が言ってから言いますよね。」


Aさん、今度はビデオ見て欲しいとか言い出したので見てみる。
なんか聞いたことある話だった。
登場人物は2人。川の水を街に運ぶ仕事をどうやってやるかって話。
1人は一所懸命水を汲んで運ぶ。もう1人はどうするのか。


I:「これ、パイプライン作るやつですよね。」

A:「。。。」


予想通りパイプラインを作って、権利収入を得ることができました。
めでたし。めでたし。
要するに、賢い人は上手に大金を稼ぐという内容で、一理あるかもしれないが、アムウェイのビジネスモデルとはまるで違うと思うのは私だけかな?
と言うか、小学生向けのビデオ。


A:「すごいでしょ、権利収入ってどう言うものか分かった? 権利が欲しくなって来たでしょ?」

I:「この話とアムウェイの共通点がよくわかりませんね。どこが作ったビデオですか?」

A:「どこが作ったとかそう言う話はいらないの!(怒)」


理解力のない私に苛立ちを隠せないAさん。
さらに私がネットに書いてあったアムウェイの悪口についてどう思うか聞いて見たところ。


「それは、悪いグループに入ってしまった運の悪かった人の話で、私たちには関係ないよ。それに前にも言ったけど、うちは成功者の下にいるし、ノウハウが伝わってるから大丈夫。」


マルチで上の人が成功者でないパターンがあるのかどうか甚だ疑問。
そして、すべての悪口に対して運が悪かっただけとか。そんなの通らんでしょ。やっぱアムウェイって普通じゃないよね。
だんだん空気が悪くなって来たので、Aさんは考えました。


A:「そうだ! 自分の夢を100個書いて来てよ。」


めっちゃ話飛んだぞ。そしてマニュアル通り。ずっとめんどくさい事ばっかり言ってる私を相手に、このやり方で落とせると思ってるのでしょうか。


I:「いやー、そういうのいらんっすわ。マニュアル通りで共感してたらもう入会してますよ。今の感じだと100%入会しないと思いますよ。」


困って涙目のAさん。
Aさんは近くの中年男性に助けを求めました。
その男性はきっとそのグループでは幹部的な存在なのでしょう。
多分、私の会話も聞いていたのでしょう。
男性はスマホで遊んでたクセに、「忙しい」とか言ってAさんを見殺しにしました。
良いグループですね。


A:「詳しい人に説明をお願いしようと思ったんだけど、今は無理みたいだからまた今度にしよ。」


帰り道、最寄り駅まで一緒に帰りました。
アムウェイに忠誠を誓ったAさんは人混みの中でアムウェイの良さを大きな声で語ります。
また来週会おうとか言うAさん。いや、もう結構です。

その後、しばらくラインで連絡されましたが、面倒なので無視しました。


【まとめ】
アムウェイは細かいところでよく計算されていると思います。
心理学なんかはかなり研究されてそうです。
グループ内で売上を共有し、高め合うのか監視するのかよく分からんシステムもあるようですし、IT投資もしっかりですね。
今回はネットであるような高圧的な感じには遭遇しませんでした。
が、普通に異様な空気ですよね。

アムウェイの設立者、設立年月日など事細かに記憶して、かなり訓練されたAさん。
税金を安くするとかはやけに詳しいAさん。
なのになんで、

「勧誘は本能だ!!」

とか言っちゃうんですか。
そういうところです。普通の人とは相入れない感じになっているのは。
Aさんは悪い人ではないです。でも、アムウェイ以外で人間関係はないでしょうね。
なんだか、気の毒な気持ちになりました。