Full Stack Engineer

f:id:kentaro-mori36:20180528195052j:plain

I’ll seek full stuck engineer

Today Our teacher told us some kind vision of software engineer. He showed two kind of way to engineer future, one is full stuck more one is specialist. I have no idea which type is matching me but I wanna seek full stuck engineer way. You know I really interested many part of technology not only application but also systems security language. I know this way is hard but I’ll try :)

どうやってSanMicroは儲けてた?

  • 他の企業に向けて情報を

クラスの継承

  • 継承
  • 既存のプログラムを元にして、相違部分のみを新たに追加していくプログラミング方法(インクリメンタルプログラミング)
  • オブジェクト指向プログラミングでは、インクリメンタルモデルプログラミングを「継承」(派生)と呼ぶ
  • 既存のクラスを元にして新たな特徴・機能を追加した新しいクラスを作ること=「継承」
  • 元になるクラスはスーパークラス(親クラス)
  • 継承してできたクラスはサブクラス(子クラス)
  • Java言語では、多重継承ではない単一継承を採用
  • スーパークラスは一つに制御

継承の利点

  • スーパークラスの特徴・機能はサブクラスで定義せずに使用できる
  • フィールドの参照
  • メソッドの参照
  • コンストラクタは受け継ぐことができない
  • サブクラスで新しい独自の特徴・機能を定義できる
  • メンテナンス性の向上が期待できる
  • 共通した機能のメンテナンスの場合は、スーパークラスを一つ修正すれば済むケースがある

単一継承

  • オブジェクト指向では多重継承と単一継承のモデルが定義されている
  • 単一継承とは、スーパークラスを一つしか定義できないモデル
  • Java言語は単一継承をサポート
  • 単一継承のメリット
  • 継承をシンプルに表現
  • クラス定義をシンプルにできる

extendsキーワード

  • サブクラス定義の際に使用する警鐘を表現するキーワード
  • extendsキーワードはクラス名の後ろに記述
  • extendsキーワードの後ろには、スーパークラスを指定
  • 指定できるクラスは一つ

スーパークラスとサブクラスの関係

  • サブクラスprivate以外のスーパークラスのフィールドやメソッドを暗黙的に使用できる
  • コンストラクタは継承されない
  • スーパークラスと同名のフィールドやメソッドを定義すると、自分自身(サブクラス)で定義されているものが優先して使用される。

isAとHasAの関係

  • オブジェクト指向言語で表現されるクラスどうしの関わり合いの定義
  • IsA あるオブジェクトとあるオブジェクトが同義であること
    • 継承関係のオブジェクト
  • HasA:あるオブジェクトがあるオブジェクトを使用していること
  • あるオブジェクト内であるオブジェクトがnewして使用されている状態

It_Words_2

f:id:kentaro-mori36:20180527071634p:plain

Do it yourself. I need to remind me this mind everyday.

 

API(Application Protocol Interface)


Why API?

Program program 通信のために必要。

APIとして必要な機能はInputとOutput。

Why is API important ???

RESTful API(Representational State Transfer)

ウェブアプリケーションの目指すべき基準

2000年にRoy Fieldingが定義

基準としてHTTPを使う

Code on demand (optional)

HTTP Response

 

Ex)NASA APOD API

Ex) Stripe API

 

 

AI

 

AIと宗教

AI至上主義過激派

・ ロボットすげー 自動運転すげー

既存AI賛成派

・現在の特化型人工知能技術をAIとしている

コグニティブ派

・真のAIはこんなものではない

・人間がより良い判断ができるようアドバイスをしたり。

 

教師あり深層学習(画像)の一例

人工知能bot テキストは難しい

深層強化学習 ブロック崩し

ニューラルネット

(エージェント)

AI会社一覧

・DeepCore

・PreferredNetworks - chaieer

・Ascent Robotics -WBS で紹介

 

HEROZ

-将棋名人に勝ったところ

 

 

API SDK と ライブラリの違いは?

API けっこうクローズ

SDK 開発で必要なものがまとめて置いてある。

 

 

 

レコメンド

 

意味

(人に何かを推薦する、推奨する)

みじかなレコメンド機能 amazonのレコメンド機能

メリット : 訪問者の趣味趣向に応じて商品を表示できる

 

ECサイトへの信頼が上がる。  

 

レコメンド機能

  協調フィルタリング

  もっともポピュラーな技術

  コンテンツベースフィルタリング

 

ハイブリッドタイプ

 

レコメンド機能の取り入れ方法

  Eコマースシステムに包括されている機能を利用する

  APSサービスを利用

  。スクラッチ開発

 

 

SDN (Software Defined Network)


SDN
とは、ソフトウェアによって拡張性と柔軟性の高い仮想的なネットワーク環境を作る技術を作る技術、コンセプトのこと(ネットワーク機器の集中制御)

 

SDNを実現する技術:OpenFlow

MAC/IPアドレスや物理ポートなどによって作成されたフローテーブルによって転送先を決定

 

 

 

 

 

UX

1UXとは、UIとの違い

UX 製品から得られる体験、印象。

UI  人間とコンピュータの接点

 

 

わかりやすさ

ボタン

 

コスト削減

 

よいUXがもたらすコスト削減効果

1。システムを利用する人の作業効率向上

2。システム利用者へのトレーニングコストの削減

3。業務のミスがもたらす対応コストが増えてしまう

 

よいUXがもたらす売り上げ向上効果

UXの優れている製品が売れる(iphoneなど)

システムを選んでもらうためにUX向上

 

なぜ? 製品を選んでもらう、使い続けてもらう。

 



プラットフォーム

アジェンダ

プラットフォームとは?

Plate form  = 人の集まる場所

・価値を提供するための基盤

 

 

 

プラットフォームの特徴

1、基盤型[os]

2、媒体型[sns,ec]

プラットフォーム単体では価値を持たない

ネットワーク効果

ーー利用者が増える程製品やサービスの質が高まる

 

ビジネスモデル

メルカリプラットフォームビジネス

(プラットフォーマーになれるビジネスとなれないビジネスの違いは?)

・・

先行すれば大きい

小さなコミュニティの選び方

プラットフォームの教科書

 

 

 

NoSQL

not only sql

  ほとんどがオープンソース

  背景

  Web2.0以降 → big data

  RDBMS 一つのハードウェアに一つ

  スケールアウト、分散処理のためにNosqlを開発

  NoSQL種類 - Document

/MongoDB

/AmazonDynamoDB

 

 

MongDB

NoSQL DBMSの種類

MongoDBはドキュメント指

//mLab データベース

//Firebase データベース

Firebase mongodbより動的にファイルが生成される。

 

NoSQLはエンジニアなら勉強しなければならないです!

 

 


講師のコメント

結論を先に

タイムアップを避ける(時間内に収める)

相手(利き手はだれか考える)

話のストーリーを考え

1スライド2  ゆっくり喋ってちょうどいい

ストーリー (相手に行動を促す)

事前リハーサルも必要

情報をたどる際は1次元情報源までたどる。

喋り方

:会場全体を見渡さなくてはいけない 4

    見ながら話す

 

Cafe勉強の効果について

f:id:kentaro-mori36:20180526212955j:plain I'm Penguin . I hate Batman.

今日は土曜日なので、カフェ勉の効果について自分の意見などを書き綴ってみます。

 

(1) ダラダラせず勉強できる  

カフェで勉強するのは自分の場合、毎日の出社前や帰宅後、週末の夜などです。社会人になって分かったのですが、就業時間中にけっこう集中力を使うためその他の時間(とくに就業後から寝るまで)はダラダラとしてしまうことが多いです。そんな時に「とりあえず」にでもカフェにいくと同じく就業後と思われる他の社会人方が参考書に食らいついてる姿をみて「自分もやんなきゃ!」とハッパをかけられるんですね。

 

(2)家より集中できる  

家で勉強するより確実にカフェの方が集中できます。

理由は簡単で上記でも書きましたが、他の勉強をしている方々の姿に触発されるからです。とくに8月とか受験シーズン直前だったりすると鬼の形相をした受験生たちと机を並べて勉強することになります。自分も彼らに負けないよう必死に勉強しないとと思うわけです。

 

(3) Time is Money を実感できる

カフェでの勉強とは時間に対して明示的にお金を投資することです。家でやればお金がかからないものにわざわざ数百円だすのですから。この行為を繰り返すことによって、「お金を払った分の学習効果は得ないと!」というプレッシャ0ーを自分にかけることができます。

 

 

以上、カフェ勉の利点を書き綴ってみました。

まぁ、ぶっちゃけ土曜だし書くことないから適当にお茶を濁してる感はあります。

JavaMemo

Java Memo

実行(javaコマンド)

  • JVM
  • 標準クラスライブラリ
  • 対象クラスはクラスファイル(.class)
  • 関連クラスファイル

  • ClASSPATHが通っているクラスを実行可能

  • 実行時、拡張子.classは省略
  • クラスの指定は大文字小文字を区別する

クラスの定義

  • クラス内に定義するもの
    • フィールド(メモリ上に保持するデータ)
      フィールドはクラス内で使用出来るデータを表したもので、メンバ変数とも呼ばれる。フィールドは「変数」として定義する。
    • メソッド(処理を行う単位)
      メソッドはクラスでもつ何らかの処理を行う機能の単位です。このメソッドを呼び出すことで処理を実行する。また、メソッドの中でフィールド情報を使用したり、書き換えたりすることができる。

変数の分類

  • フィールド
  • クラス内で宣言する
  • ローカル変数
  • メソッド内で定義する変数
  • パラメータ変数
  • メソッドの括弧()内で宣言する変数

特別なメソッド-main()メソッド

  • main()メソッドはJVMが最初に実行する特別なメソッド
  • main()メソッドの定義
    • 修飾子にpublic,staticキーワードを指定すること
    • 戻り値はvoidであること
    • 引数リストにはString argsを推定すること
  • 引数は、実行時にコマンドラインから入力される
  • メソッドの実行時m引数は空白で区切ることにより複数入力が可能

public static void main(String args){...}

クラスのインスタンス化とnew演算子

  • クラスからオブジェクトを生成することをインスタンス化と呼ぶ
  • インスタンス化にはnew演算子を用いる
  • オブジェクトを個別に扱うために参照変数名を指定する
  • コンストラクタを使用してオブジェクトの初期化を行う
    インスタンス化の構文>
    <クラス名><参照変数名>= new<コンストラクタ名>(引数リスト);

オーバーロード

  • オーバーロードとは、異なる引数(型と数)を持つ同名のメソッドやコンストラクタを複数定義すること
  • メリット
  • 同一名で異なる処理を定義できる(メソッド、コンストラクタ)
  • APIをシンプルに保てる
  • オーバーロードの条件
  • メソッド名が同じ
  • 引数の型か数が異なる
  • 戻り値が異なるだけではだめ(x)

ヒープとスタック

インスタンス化されたオブジェクトはデータ格納領域(メモリ)を使用

  • データ格納領域はヒープとスタックに分かれる
  • ヒープ
  • スタック
    • ローカル変数、メソッドの起動やリターンの一部、中間的な結果等
    • FIFO(FirtsInFirstOut)方式

ガーベッジコレクション

  • JVMはガベージコレクターを持つ
  • ガベージコレクションとは自動メモリ管理機能のこと
  • 使用されなくなったメモリ領域を自動的に検出して解放する
  • プログラマはメモリ解放を意識しなくて良い

基本データ型と参照型

  • Javaのデータ型は2種類に大別
    • 基本データ型
      • データそのものを指す
    • 参照型
      • オブジェクトを表す
  • 基本データ型間の変換
    • 基本データ型間で変換するには、直接代入やキャストを使用
    • 基本データ型間で型変換できるのは、boolean型を除く7種類

基本データ型と参照型の変換

  • 基本データ型を参照型に変換
  • ラッパークラスを使用
  • 参照型を基本データ型に変換
  • 一部を除いて変換不可

基本データ型のキャスト

  • キャストとは強制的に型を変換すること
  • Java言語では、キャスト演算子()を使って
  • 基本データ型のキャスト
  • ビット幅の小さな型を大きな型に変換
  • ビット幅の大きな型を小さな型に変換

ラッパークラス

  • ラッパークラスとは、基本データ型の値をオブジェクトとして保持するためのクラス
  • 格基本データ型に対応して存在
  • 各種の型に変換するメソッド
  • 文字列(参照型)を任意に基本データ型に変換するメソッド
  • 任意の基本データ型に変換するメソッド

## 1行づつコメントを入れた方がいい

ビジネスコミュニケーション神経使うー

f:id:kentaro-mori36:20180524224519j:imageヒルかわいい  

 

今日はちょっと不精して、日記的な記事です。

 

今現在自分は本業以外の時間でビジネスを作ろうとしています。

しかし、やっぱり疲れてくるねー

サイドビジネスの方でスタックした時(大体コミュニケーション関係)の精神疲労が半端ない半端ない👽

また明日対処の方法を考えますが、まずは同じチームのみんなに自分の感情を共有するところからかなーと思ってます。

PostgreSQL_3

f:id:kentaro-mori36:20180523210936j:plain<最近気に入ってる配置

 

Today's last day of PostgreSQL.

7章 リレーショナル データベースのデータモデリング

データベースの表は、データのモデリングにより構築される

分析設計    データベース構築    データベース管理システム

        

データモデリング

「で、どこまでの範囲で実装したいの?(お金あるのん?)」

ーシステムの業務対象を明確にする

ーシステムの情報を標準化し、データベースとして扱えるようにする

 

設計段階:

 

概念設計 → ER

論理設計論理テーブル

RDBMSに依存する設計物理テーブル

 

データモデル

・システムが扱う情報を次の要素で表現する

 

ーエンティティ(情報を持つ物理的、論理的なまとまり)

・システムの管理対象

 

ー属性(アトリビュート)(エンティティが持つここの情報)

・エンティティ間の関連を表現する情報

 

ーリレーションシップ(エンティティ間の関係)

・エンティティ間の関連を表現する情報

 

ー識別子(エンティティの集合の中で、個々を見分けることができる属性)

・エンティティの実際のデータを区別するために使用する属性

 

エンティティ

・システムが扱う対象となるもの

・情報を保有しているもの

・・エンティティは情報を保有する物理的、論理的に区別ができる対象です。

 

リレーションシップ(関連)

・エンティティ間の関連を表現する

ー関連間のエンティティの数の対応を表現する

ー関連の必然性/任意性を表現する

 

アトリビュート(属性)

・エンティティを特徴づける情報の項目

 

インスタンス

・エンティティは対象を属性で定義したもの

インスタンスは実体

ーエンティティの属性は実際の値を持ち、1つの実態を表す

 

キー(識別)属性

・エンティティの複数のインスタンスの中から1つを特定することができる値を持つ

    属性。

 

データモデルの表現

ER図によりシステム内のエンティティ、属性、リレーションを表現する

・リレーションはビジネスモデルにより異なる

・リレーションや主キーはテーブル構成に反映される

IE (Information Engeneering )

 

クラス        :エンティティ名

クラス番号:主キーとなる属性

クラス位置:主キー以外の属性

学年           :主キー以外の属性

クラス名    :主キー以外の属性

担当           :主キー以外の属性

 

//ツールにもバグはあるんだよ。ツールに使われない、ツールを使おう

//手書きできなきゃね

 

ボトムアップ アプローチによるモデル化(参考)

・既存の情報をデータベースとして扱うためにモデル化する

   ・伝票、帳票、画表などで扱う情報をモデル化する。

・情報を正規化する

  ・データの集合をデータベースで正しく扱えるように形を整える

 

トップダウンアプローチ

・システムの有るべき姿を分析し、エンティティを決定するほうほう

ボトムアップアプローチ

・既存のシステムで使用している情報源をもとに、エンティティを決定する方法

 

第ー正規化手順

二つのエンティティを一つに統合する。

 

 

 

8章オブジェクトの作成

 

データベースオブジェクト

・データベースの構成をオブジェクトとよぶ

・基本オブジェクト

ー表

ービュー

ー索引

 

表の作成

・基本構文

   CREATE TABLE 表名 (列名1、データ型、、、)

 

ー名前は命令規則に従う

ー列のデータ型

  ・データ型の名前、精度、桁数、扱えるフォーマットなどは製品によって異なる

 

表の作成例

CREATE TABLE people (code INT, name VACHAR(20), birthday DATE, weight FLOAT);

 

列の属性の指定

CREATE TABLE 表名 (列名、データ型 属性1  属性2・・[,];

 

列に自動的に値を入れる機能

・列にデフォルトの値を入れ

 

表の外部参照

 

表の構成変更

ALTER

・データベース構成要素の変更SQL

     列を追加・削除する

・副問い合わせSELECT文により、表をコピーする

 

Drop table には rollbackがないの?

 

ビュー

・ビューは表のフィルタの機能を提供する

ー表の限定された列と行の情報のみをみせる

ー見せたくない/見たくない場所は隠す

ー複数の表を結合してみせる。

ー列の名前を変更してみせる。

 

 

 

8章データベースアクセス権限

 

データベース管理システムとデータベース

データベースのロール
・データベースインスタンスの構築は、管理ユーザが行う。
・データベースのアクセス権限はロールに与えられる
・データベース管理システムへの接続

データベース管理システムのタイプにより、ユーザの持つアクセス権についての方針は異なる。

 

アクセス権限
アクセス権はデータベースを操作できる権限
管理権限
利用権限
管理ユーザは全ての権限を持つ

 

ロール(ユーザ)の作成と削除
ログインの管理やデータベースなどの権限の設定をロール単位で行う。
ロールの作成
ロールの変更
ロールの削除


データベースとオブジェクトとユーザの関係
ユーザが所有するアクセス権については、製品により様々な形態があります。
アクセス権の付与ー所有者が許可する

 

アクセス権の付与
スキーマとhデータベース
所属する空間(名前空間)で1つのデータベースに複数作成することが可能。

 

アクセス権の付与と削除
・アクセス権の付与
GRANT 権限 ON オブジェクト TO ユーザ名
・アクセス権限の削除
付与された権限をユーザから削除する
基本構文
REVOKE 権限 ON オブジェクト名 FROM ユーザ名;

 

Listening song... 

PostgreSQL_2

f:id:kentaro-mori36:20180522204500p:plainhigeponさんMiyagawaさんがリツイートしてくれた :)


 

ということで。みなさん、Rebuild FM  聞きましょう。
ツイートlikeしてもらえると嬉しい~

rebuild.fm

 

Todays topic is also PostgreSQL 


データ検索のSQL文-グループ処理

 

グループ化した行の検索

..表の行をグループ化して、グループ化した結果を検索する。

 

SELECT GROUP BY

..select pref from customer group by pref;

 

SELECT GROUP BY 句とグループ関数

..select pref, count(*) from customer group by pref;  //各県の顧客数を得る

 

GROUP BY とグループ関数使用例

..select job, count(job), sum(salary), max(salary) form people group by job order by sum(salary) desc;

 

グループ化と検索条件 HAVING

..select job from people group by job having sum(salary)>250;

  group byで抽出したグループに対して、検索条件をつけることができる、その場合

  には、where句は使用できない。(group by のあとにつかう)

 

グループ化と where

..select job, count(*) from people where salary > 150 group by job;

group化する前にwhere句をつけるといいよん。

 

 

データ検索のSQL文-高度な検索

 

複数の表を使用した検索

    二つの表の検索結果をつなぐことができます

 

表の結合の種類表の内部結合

    表の結合には複数の方法がある

 

表の内部結合

2つの表に対応する行がある場合のみ、結合結果を表示する

・対応:左のFKに対応する主キー

 

表の外部結合ー左結合

・左側の表のすべての行に右側の表の行を対応づける

・右表で対応する行がない場合は、nullで表示される

・対応:左のFKに対応する右の主キー

 

表の外部結合ー右結合

・右の表の(以下同文)

・(同文)

・対応:右の主キーに対する左の FK

 

表の外部結合ー完全

・全てのレコードが表示される

・相手表に対応する行がない場合は、nullで表現される。

・対応:一方のFKと対応側の主キー

 

表の自己結合

・検索のために、表自身と結合する場合もある。

 

表の結合SQL構文

.. 基本構文

 

 

表の結合SQL文例ー内部結合

 

表の結合SQL文連ー左外部結合

表の結合SQL文例ー右外部結合

 

副問い合わせ

・先に検索しておいた結果を利用して、次の検索を行うことが必要な場合がある。先に行った検索を副問い合わせ

 

Select * from people where salary = (select max(salary) from people);

                 主問い合わせ                                    副問い合わせ

 

副問い合わせ検索列ー複数行問い合わせ1

・複数行条件

・副問い合わせの結果中のいずれかと一致する行の検索

 

 

データ更新とトランザクション

 

データの更新

データ更新のSQL

 

INSERT

表にレコード(行)を追加する

UPDATE

表の一部を変更する

DELETE

表からレコード(行)を削除する

 

INSERT文ー

.. insert into people values(111,’北条’ ,CURRENT_DATE,3.2);

.. insert into 生徒表(番号、誕生日、名前)VALUES(3,’1998-06-03’ ,’北条’);

 

UPDATE文ー

..UPDATE people set job= ‘営業’ where code=1000;

 

基本データ型

 

DELETE文ー基本構造

..DELETE FROM 表名 where 条件式;

..Delete from people where code=1000;

 

副問い合わせの利用

..update people set loc=(selec.  Code. From store where. Locatin=‘品川’)

  Where loc = (select ecode form store where locatiion=‘横浜’);

 

表の結合(MERGE

INSERT INTO bank1 SELECT acct, name, deposit from bank2;

INSERT INTO bank1 (cname, sum) SELECT name, deposit FROM bank2 WHERE acct > 700;

 

トランザクション管理

1つの作業を完了するために、連続して行う必要がある表操作

ー途中で中断すると、データの一貫性を損なう

 

トランザクション処理

一連のすべての操作を終わった状態で表の操作を確定する

ー途中で中断した場合は、すべて元に戻す

 

 

トランザクション管理を無効にした表の更新操作

 

トランザクション管理を有効にした表の更新操作

・コミット

   トランザクションの表の更新操作を確定することができる

ロールバック

   トランザクションの表の更新操作をキャンセルすることができる

 

トランザクションの単位

・コミットやロールバックの対象となる一連の操作

commit文やrollback文の実行によりトランザクションが終了

 

PostgreSQLトランザクション開始

¥set AUTOCOMMIT on

¥echo :AUTOCOMMIT on

START TRANSACTION;

 

COMMIT

COMMITを実行すると、トランザクションが確定する

・コミットされたデータは元にもどらない

 

ROLLBACK

ROLLBACKを実行すると、トランザクションを無効にする

COMMITされていないデータは変更されない

 

SAVEPOINTROLLBACK

SAVEPOINT文により、ロールバックする場所を指定できる。

  ..SAVEPOINT セーブポイント

 

排他制御

・データベースのデータは複数のユーザやプログラムが使用する。

・複数のユーザが同時に、表のデータを更新する場合の制御が必要

 

ロック機能

・他のユーザが表の操作をできない状態にする

・ロックをかけている単位は製品による

 

 

 最後に、講師の先生から「どこまでできていて、どこまで出来ていないか。」を先輩に報告することが大切だというお話をしてもらいました。自分がどこまで学習していて、なにが分かっていないか。少し恥ずかしい面もありますが、ちゃんと表出させていかないといけませんね。

Listening song..