ソレノイドの駆動回路

ソレノイドを稼働する場合、マイコンと直接接続するのはまずい。電圧・電流が大きく違い、ノイズや逆起電力でマイコンを破壊したり誤動作させたりする。それを防ぐ為にフォトカプラを使って絶縁する。FETをフォトカプラに繋ぎ、小さい電圧変化で大電流を駆動する。

IoTなアイデア

宅配ボックスの自作。

 

  • 宅配業者さんのWebにユーザ登録しておくと、配達予定のメールが送られてくる。これをトリガーとして、宅配業者さんにメールを送る。
  • メールには、宅配ボックスの暗証番号が記載されている。
  • 暗証番号は配達物ごとに違うものにする。
  • 宅配ボックスにはカメラがあり、配達物の識別ができる。
  • 配達物のIDをキー入力できるように、テンキーを宅配ボックスにつけておく。
  • 暗証番号を入力すると、宅配ボックスを解錠できる。
  • ボックス内にカメラがあり、ちゃんと配達されたことを記録できる。
  • 蓋を閉めると施錠される。
  • 配達と施錠後に、宅配業者宛に受領メールを送付する。メールには電子署名がなされており、本人確認と改ざん防止ができている。
  • 配達員の顔を撮影し、サーバに記録しておく。

 

宅配ボックスに使える頑丈な箱はすぐに見つかったが、電子錠をどうするか悩んだ。

で。見つけた。

 

jp.misumi-ec.com

)

プログラミング言語とソフトウェアアーキテクチャ

実装言語はソフトウェアアーキテクチャにどのくらい影響があるものだろうか?

実装言語を選択する基準としていくつか考えられる。

言語仕様による部分もあるが、

ライブラリやフレームワークが充実していること

は重要な条件だと思う。今、AI・ディープラーニングを学ぶとき python を使うのは、ライブラリやフレームワークが充実しているから。

 

処理速度が速いこと、省メモリで動くこと

これも重要。ハードウェア制御系・モバイルなど組込みシステムでは性能が要求される。

 

スケーラビリティがあること

Web系システム、大規模なものではとても重要。アーキテクチャがスケーラビリティを考慮していないと、ユーザ数が増えたとたんにシステムダウンしたり、むちゃくちゃ遅くなったりする。

 

今ではクラウドプラットフォーム(AWSとか Azure とか Google Platform とか)がスケーラビリティを実現するための様々なサービスを提供しているので、

それらを利用すればかなりのことができるはず。

関数型プログラミング言語とその特徴

関数型プログラミング言語の特徴

  1. 参照透過性
  2. パターンマッチング
  3. 高階関数
  • 関数を引数にできる
  • 関数を戻り値にできる
  1. クロージャ
  2. 遅延評価
  3. 部分適応
  4. カリー化

特徴それぞれについて、具体的に理解したい。

What それはなにか?

概要。書式。

Why なぜそれを使うのか?何がうれしいのか?

使用目的を明らかにする。

When, Where いつ、どんな状況で使うのか?

適用範囲を明確にする。

また、「使うべきでないとき」を明確にする。

How どうやって使うのか?

書式とともに、具体例をいくつか。

言語各種

  1. haskell
  2. elixir
  3. ocaml
  4. scheme
  5. c++
  6. scala
  7. python
  8. ruby
  9. typescript
  10. kotolin

もっと使い慣れるツール

github と git

使っているといえば使っているが、もっと日常的に使うべき。

Redmine と backlog

チケットドリブンな開発とガントチャートをちゃんと使えるようになりたい。

docker と virtualbox

ポータブルな開発環境を使えるようになりたい。Windows に縛られない開発環境。

AWSgoogle platform 

クラウドサービスは使えるようにならないと。

jupyter notebook

エクセルシートを python から読み書きする例。

 

名簿ファイルを読み取り、辞書オブジェクトに保存する。

 ---------------------------------------------------------------------------------------------------

import openpyxl as px # excel操作用ライブラリ
userListFile = '名簿.xlsx' # ユーザ名簿ファイル
today = "20170411" # 毎回指定する。デフォルト値はスクリプトを実行する日

wb = px.load_workbook(userListFile)
ws = wb.active

nameList = {} # 辞書オブジェクトの作成

start_row = 3
for line in range(start_row, ws.max_row+1): # 最大値を含む場合は +1 が必要
id = ws.cell(row=line, column=1).value
#print(id)
user = ws.cell(row=line, column=2).value
#print(user)
nameList[id] = user
fileName = today + "_" + id + "_" + user + ".xlsx"
print(fileName)

----------------------------------------------------------------------------------------------------

また、カレントディレクトリのファイルリストを取得するサンプルは以下の通り。

-------------------------------------------------------------------------------------------------------

import os # ファイル・ディレクトリ操作

targetDir = "./" # 対象となるディレクトリのパスを指定
numX = 28


fileList = os.listdir(targetDir) # カレントディレクトリのファイル一覧

if 5 != len(fileList):
print ('ファイル数が違います。')
else:
print('ファイル数は正しいです。')

-------------------------------------------------------------------------------------------------------

パスワード管理ソフト

数ある管理ソフトのどれを使うのが良いのか、いろいろ調べたり試してみた。

結論を先に書く。

 

クリティカルなパスワードはローカルに保存。頻繁にアクセスするウェブサイト等はクラウド型。

非常に重要なパスワード

お金が絡むもの。銀行、クレジットカード、PayPal など。

クラウド型だとサーバ側がクラッキングされるのが怖い。

なので、ローカルにパスワードのDBを置く。これらのサイトは、基本的には自宅からしかアクセスする必要はない。

あ、長期出張だと出張先からのアクセスが必要になる。

 

DBのマスターパスワードが非常に重要になる。強固かつ忘れないもの。

 

で、Keepass を使用中。Windows/MacOS X/Linux/iOS に対応しているのがよい。

それほど重要ではないパスワード

Webブラウザで各種サービスにログインするような場合。

パスワードは強固なものを使いたいが、覚えていられない。

ブラウザとパスワード管理ソフトが連携して、入力を楽したい。

また、マルチデバイス対応、パスワードの同期機能が欲しい。

 

今回、Dashlane を試してみた。機能的にはよさそうだったが。

まあ、機能を考えれば高いとは言えないかもしれないのだが。

さらにググっていたら、LastPass はマルチデバイスの同期が無料になったらしい。

こちらを試してみよう。