SQLメモ
PythonからのTwitterAPI利用
参考にしたサイト
・基本的な使い方
・データフォーマットあり
TwitterAPI でツイートを大量に取得。サーバー側エラーも考慮(pythonで) | コード7区
必要ライブラリ
・MysqlDB
日付のフォーマット変換(TwitterAPIからdatetime型に変換してmysqldbでinsert)
http://qiita.com/kenmatsu4/items/23768cbe32fe381d54a2
re.compile()
文字列の前にrを付けるのが普通。そうすると、文字列中のバックスラッシュ文字をそのままバックスラッシュとして扱えるので、パターンの書き方が煩雑にならない。
TwitterのAPI仕様。過去Tweetは3200件までしか取れないらしい(頑張れば可能)
日付は厄介なので必ずJSTに統一して比較する
import datetime
from pytz import timezone
from dateutil import parser
tweetCreatedAt = parser.parse(tweet['created_at']).astimezone(timezone('Asia/Tokyo'))
フォローユーザーの取得
Posgre設定
C:\Program Files\PostgreSQL\9.6\dataのpg_hba.confに以下を追記(他ホストからの接続を許可。posgresql.conf内の設定(listen_address、port)は修正不要だった)
host all all 192.168.0.0/24 md5
http://rina.jpn.ph/~rance/linux/postgresql/connect.html
Python Windowsの統合環境 Anaconda PyCharm
データモデル
システム開発において、必要となるデータモデルは以下の3つ。
【概念スキーマ】
データベース化対象の業務とデータの内容を論理的なデータモデルとして表現したもの。概念スキーマを記述するために記号系にはリレーショナルデータモデルの他にも、ネットワークデータモデル、階層型データモデルなどがある。リレーショナルデータモデルでは表の正規化やCREATE TABLEによる表定義が概念スキーマに相当する。
【外部スキーマ】
概念スキーマで定義されたデータモデル上に利用者ごとの目的に応じた見方を表現したもの。リレーショナルデータモデルのビューやネットワークデータモデルのサブスキーマが外部スキーマに相当する。
【内部スキーマ】
概念スキーマで定義されたデータモデルを記憶装置上にどのような形式で格納するかを表現したもの。ファイル編成やインデックスの設定などが内部スキーマに相当する。
目的・特徴は以下の通り
概念データモデル
実務上必要なデータの集まりと関係を洗い出し、まとめたもの。
システム対象範囲の設定に使ったりする
システム上のデータは意識しない
アウトプットは機能分野単位などで大きく捉えたER図など
論理データモデル
システム上のデータの形を定める(ER図からリレーショナルモデルを作成後、正規化などをするイメージ)
大体はリレーショナルモデルを使う
DB製品はや処理効率は意識しない
DOAに基づく場合、テーブルを正規化、最適化、一般化、安定化のプロセスを踏む。
アウトプットはリレーショナルモデル(リレーショナルモデルの場合)
物理データモデル
HWやDB製品を含む実装方法を定める
Index、データ型、制約などを設定する
スキーマとは、何かの構造についての表現。DBの「構造」のこと
3層スキーマとは、3つの要素に分けてDBを定義する考え方(視点が違うイメージ。スキーマが違うと見ることができるViewが変わる)
3つのスキーマは独立しているため、各々の変更が他に影響しない
3層スキーマはいくつか定義があるが、最もメジャーなものは以下の通り
外部スキーマ
ユーザー視点のDB
DBの機能・IFを定義する
RDBではビューに相当する
概念スキーマ
開発者視点のDB
実際のテーブル、リレーションなどを定義する
データ独立性を実現する
概念スキーマを定義する設計のことを論理設計と呼ぶ
内部スキーマ
物理的視点のDB
ファイル名、サイズ、分割方法などを定義する
Slack連携テスト
Slack連携システムのテスト
概要
・Webスクレイピング
・取得データをSlackに転送
システム構成
・プラットフォーム: Heroku
・バージョン管理: Git
自動メッセージ配信のコマンド(以下コマンドで実行後放置)
bin/hubot --adapter slack
SlackのBot(hubot)を作ってみる - Qiita
Hubotで定期タスクを動かす方法
ブロックチェーン
ブロックチェーン技術を応用するメリット
- データ記録のインフラとして使用することが可能。以下のメリットが挙げられる
- セキュリティ。堅牢
- なりすましが難しい(取引当事者の暗号署名が取引毎に行われる)
- 過去データ改ざんが困難(過去のデータを改ざんすると以降のすべてのブロックを改ざんしないと整合性が取れない。且つ同時に全DBの50%超を同時に攻撃しなければならない)
- 管理者の改ざんのような、外部から気付けない問題が発生しない
- 可用性
- 不稼働時間が存在しない
- コスト削減(上記のようなセキュリティ・可用性の運用コスト)
- 仲介役を省くことができる
- 応用範囲が広い(取引記録を公開して良いもの: 融資、決済、保険、預金)
ブロックチェーン
- 分散型台帳技術
- 既存の記録(ブロック)を新しいブロックに埋め込み、チェーン状にすることで改ざんを困難にするコンセプト
- ビットコインを実現するための技術であり、他分野への応用が期待されている
- ・改ざんが難しい
- 「合意形成方法(更新権限者をどう決めるか)」はバリエーションがある(コミットが大きい人は不正をしない
- 多数のノードに同一の記録を同期(分散型DB)
- 合意形成を通じ、正確な記録をする
ビットコイン
- 暗号通貨(仮想通貨)
- 取引履歴はブロックチェーンと呼ばれる元帳に記録される
人工知能ビッグデータ関連用語
AI > 機械学習 > ディープラーニング > ニューラルネットワーク のように包括関係
AI: 人間と同じような感覚・判断力を機械が持つこと。汎用AIは実用化されておらず、実用化されている特化型AIとしては画像分類や顔認識などがある
機械学習: 人工知能の一分野。データの傾向・規則性・法則を探り、減少の解析・予測をすることを目標とし、人が手を加えなくても法則を学習する手法。特徴抽出は人間が入力する必要がある(例えば赤リンゴと青りんごの識別をさせるには"色"を見るように指令を出す)
ディープラーニング: 機械学習を実装するための手法。特徴抽出を教師なし学習できる。ニューラルネットワークを多層にして構築したもの
ニューラルネットワーク: ディープラーニングを支える計算アルゴリズムのアプローチ。1種。入力層・隠れ層、出力層の3種類の層から成る。隠れ層を何層も重ねる構造が精度向上のカギとなる。
インダストリー4.0: 工業のデジタル化。生産工程のデジタル化・自動化・バーチャル化のレベルを高める。ドイツではスマート工場、つまり「自ら考える工場」 の開発を進めている。部品が自ら動いて完成品になるなど(発注などのSPM)