2018-01-01から1年間の記事一覧

10月14日の学び

デザインパターンの本を読んでいて初めて知ったけど、継承においてスーパクラスとインタフェースはどちらも子クラス/実装クラスを代入可能という点では共通なのね。 スーパークラス→抽象クラス→インタフェースの順に抽象化・パーツ化が上がっていく。 スーパ…

今後取り組む課題

★ソースコード公開 自分で取り組むこと システム全般一般論 ロック Git テスト技法 見積もり テスト自動化 開発手法 セキュリティ関連 ★ハニーポットの作成 Webテスト環境へのアタック 暗号化 アセンブラ OS Linuxソースコードリーディング コンピュータ理論…

10月13日の学び

今日は発表で疲れたので最低限だけ。。。 Javaのエラーの分類 ランタイムエラー:プログラム実行中のエラー コンパイルエラー:コンパイル実行時のエラー DBの復習 データベース:テーブルの集合 テーブル:データ要素(値)の集合を垂直な列と水平の行のモ…

10月12日の学び

jarファイル ・Java Archiveの略 ・関連する複数のJavaファイルを1つにまとめてパッケージ/ライブラリ化したもの ・実体はJava 仕様に準拠して定義されたzip圧縮ファイル ・jarファイル単体でも実行が可能 warファイル ・Web ARchiveの略 ・Tomcatなどのア…

10月11日の学び

JREとJDK JREとJDK:JREにはAPIとJVMが内包されている。JDKにはAPIとJVMに加えコンパイラが内包されている。 2種類のJDK JDK:Java開発者向けのバイナリ形式。オラクルによりリリースされるJava SE、Java EEやJava MEの各プラットフォーム全ての実装。JREも…

10月10日の学び

Javaは何が仕様で何が仕様に対応した実装なのかを区別する必要がある。今日は仕様関連を整理した。 以下は全て仕様 Jave SE:Java Platform, Standard Editionの略称。Java SEはJava APIの仕様の集まり。Java 8とかJava 10というものは存在せずJava SE 8だっ…

10月9日の学び

型安全 ・下の説明は凄い。BOF攻撃と型安全の間には関係があったのか。。。 ・プログラミング言語において「文法的な正しさ」と「意味的な正しさ」が一致するとは限らない。 ・「文法的に正しいが実装のない実装(=動作未定義)」が存在し、往々にしてセキ…

10月8日の学び

・JavaではHashMapの初期化がめんどくさい。コンスタラクタ内で初期化ができない。 ・HTML5は要するに規格。実装は各ブラウザに依存。 SpringBoot ・@RestControllerでは View に遷移せず、メソッドの戻り値がそのままレスポンスのコンテンツ。JSON や XML …

10月6日の学び

Java ・当たり前だけどヌルポが発生するのは代入ではなく参照時。 ・ではどうやって確認するのか?代入時がそもそもの原因なので原則的に値の代入時にNullチェックをやるべき。 ・ただし渡されたオブジェクトを参照するだけ、などの場合はチェックする必要が…

10月5日の学び

・intは基本テータ型(プリミティブ型)だが、ラッパークラスのIntegerは参照型。 ・後者はオブジェクトなのでnew()を用いて生成する。 ・オブジェクト型には様々なメソッドが存在するが基本データ型にはない。 ・メソッドの引数に参照型しか受け付けない場…

10月4日の学び

・Javaにおいてはコンストラクタが例外を発生させるのはあり。これがC++においては望ましくない。前者はガーベジコレクションの機能があるが、後者には存在しないのが理由。 ・Javaは良くも悪くも設計書通りに実装できる言語。ウォータフォール向きだと感じ…

10月取り組むことリスト

会社は来年には辞めてるかもしれないけど、それでも学べることは多い。GitとかAWSとかJavaとかテスト自動化とか。これらを吸収するのを最大の目的とする。 ・Nand2テトリスの発表資料作成 ・卒論(量子テレポーテーションの実験)の発表資料作成 ・チューリ…

10月3日の学び

一日一回簡単でも勉強したことを覚えたことを書いていくことにする。焦らずに一歩ずつ進もう!しばらくJavaメインになりそう。 ・コンストラクタの返り値の型は省略できる。クラスを返すのが自明だから。 ・staticフィールドは個別のインスタンスではなくク…

XMLのタグとエレメント

タグはエレメントのサブセットと定義されているらしい。 エレメントにはマークアップ対象の文字列をタグで囲んだものを指す。 タグは<>そのものを指す。 タグと要素(エレメント)の違いを説明して

Pythonでのイテレータの利用②

next() next() 組み込み型関数next()

スマホアプリの通信デバック

HTTPS通信を除く方法はいくつか存在している。どちらもオレオレ証明書をインポートすればHTTPSの通信もキャプチャできるようになる。 iPhoneアプリ いくつか試したけどこれが一番。 dev.classmethod.jp Androidアプリ play.google.com

トラブル解決の方法論

プログラムであれ、NWであれ、クラウドであれ、オンプレであれ、およそシステムの構築にはトラブル発生がつきものである。トラブル解決には2通りの方向性がある。「できないこと」を確認するアプローチ「できること」を確認するアプローチだ。 できないこと…

Pythonでのイテレータの利用

Pythonでindex込みでループする場合はenumerateが一般的であるが、イテレータを使う方法もある。下のようにiter()*1でイテレータオブジェクトを用意し、next()関数で次の要素の取得を行う。 next() vs Forループ イテレータオブジェクトのnext()を利用するの…

Assert

Assertを使えば簡易確認が可能であり、オプションによって無効化も可能となる。うまく使えば実装効率向上に利用できるかも! qiita.com

Javaの型

実はJavaに関して書くのは初めてだったりする。 Nand2Tetrisを読んだおかげでこのあたりも意識するようになってきた。 プリミティブ型 こちらは変数には値そのものが格納される。 boolean byte char short int float long doubule 参照型 こちらは変数には参…

組み込み型一覧

組み込み型 + 数値型 | + 整数 | + 長整数 | + 浮動小数点 | + 複素数 + シーケンス型 | + 文字列 | + ユニコード文字列 | + リスト | + タプル + マップ型 | + 辞書(ディクショナリ) + ファイルオブジェクト 参考 http://www.python.ambitious-engineer.com…

文字コード

文字コードみたいなのって意外に重要だったりすることが多い。 文字コード 文字コードとは、コンピュータ上で文字を利用する目的で各文字に割り当てられるバイト表現。 (符号化)文字集合と(文字)符号化形式 (符号化)文字集合:世界中の文字の集合 (文…

Gitチェックアウトコマンド

Git

本当に今更なんだけど。。。チェックアウトコマンドには2通りの使い方がある。 ブランチの切り替え 複数ブランチ間の切り替えに用いる。 ワーキングツリーへのファイル展開 ワーキングツリーで編集したファイルを差し戻す場合に利用する。 # コミット「6f87…

クラス設計雑記

最近スクリプト*1に機能追加してプログラム*2を作成する機会があった。 最初はなんとなく実装しながら必要に応じてクラスを追加していったが、途中からロジックをシンプルにするために、あちこちのクラスのメンバーの修正が発生してしまい、結局最初に書いた…

動的型付け・静的型付け

動的型付け...変数の型をプログラムの実行前に規定しない。型宣言が不要。 静的型付け...変数の型をプログラムの実行前に規定する。型宣言が必要。

仕様なし開発

開発では事前に仕様を定義して、その仕様に基づいてプログラムを作成する。しかし中には様々な理由で仕様がない(あってもほとんど意味がない)まま開発する場合がある。 その場合はできた実装が仕様である。こうなると当然テストケースの作成などはできない…

次元の呪い(球面集中化現象)

次元の呪いとは、高次元データの場合データのほとんどが原点から遠い場所に集中していること。 高次元空間の球は体積のほとんどが表面付近に集中。 高次元空間ではメロンパンのほとんどは皮。 mathwords.net

型とは

質問: 型とはなんですか? 回答:値の意味です。 あえてプログラミング言語に限定せず、NW・IO・HW等も含む広義の意味でのコンピュータがやり取りするのは2進数の羅列だけである。そうした2進数の羅列を意味づけし解釈するには「型」が必要となる。この意味…

リファクタリング

リファクタリングにも定義があったのね。。 リファクタリングの定義 リファクタリングとは外から見たときの挙動は変えずに内部のコードだけを変更すること。 リファクタリングには挙動が変わらないことを保証する手段としのテストコードが必要である。 テス…

プログラムカウンタ

プログラムカウンタ用のレジスタは、名前は違えどもどのCPUにも必ず存在する。 ハードウェア的な観点からは、プログラムカウンタの数=同時に実行できるプログラムの数である。 マルチコアCPUには各コアごとにプログラムカウンタが存在する。 Intelのハイパ…