休日の調べもの

調べものをしたときのメモ

Slim がバージョンが上がるごとにデブっていく

最初は何にもないルーティングだけのSlimが2019年9月にリリースされたSlim4はかなりいろいろついてる。付加機能は余分な脂肪と言えなくもないが、エラーハンドラとかユニットテストとか、結局作るんでしょといったものがSkeltonで用意されているのはうれしい。

とりあえず、composerでslimをインストールしたら、下記コマンドでskeltonもインストールする

composer create-project slim/slim-skeleton [ProjectName]

現時点ではSlim4に対応した日本語解説はないので、自力で構造を調べる。

src
├── Application
│   ├── Actions
│   │   ├── ActionError.php
│   │   ├── ActionPayload.php
│   │   ├── Action.php
│   │   └── User  
│   │           ├── ListUsersAction.php
│   │           ├── UserAction.php
│   │           └── ViewUserAction.php
│   ├── Handlers
│   │      ├── HttpErrorHandler.php
│   │      └── ShutdownHandler.php
│   ├── Middleware
│   │      └── SessionMiddleware.php
│   └── ResponseEmitter
│           └── ResponseEmitter.php
├── Domain
│   ├── DomainException
│   │      ├── DomainException.php
│   │      └── DomainRecordNotFoundException.php
│   └── User
│           ├── UserNotFoundException.php エラー処理
│           ├── User.php
│           └── UserRepository.php
└── Infrastructure
        └── Persistence
                 └── User
                        └── InMemoryUserRepository.php サンプルのデータ固定配列
app
├── dependencies.php
├── middleware.php セッション管理などをする
├── repositories.php
├── routes.php        リクエストルーティングする コマンド追加時に変更する
└── settings.php


public
└── index.php

 

Skeltonは、ユーザーデータの住所録なので自分のデータを取り扱わせるためにはUserのところを順次いじっていけばいい。まずはInfrastructure以下のデータの持ち方を変える。

routes.php はパラメータなしで呼ばれたときはHello Worldを簡単なhtmlで返す。コマンドを作りたい場合は下のgroup使ってパラメータにより分岐させる。まあ、すっきり。Userの最初の入り口もここになる。

 

機械学習とかを手早く試したい

 機械学習を試しながら覚えようと思っても、実行環境の構築が大変すぎる。特に進化のスピードが速すぎて、1年前の記事とか参考になるどころか依存性地獄にはまり込む罠だったりする。

 土日を丸々つぶして環境を構築したらもう力尽きてしまって、本来の目的が何だったか忘れる。

 

 そんな時はGoogleさんのColaboratory。Google Driveで[新規]->[Colaboratory] はいJupyter Notebook 。!でシェルコマンドを実行することができるので、足りないモジュールはpipで入れる。 googleドライブもマウントできるので、データーの入出力も困らない。 Googleさんの手のひらでコロコロしている感じは否めないが、練習だったらもう十分。

 

参考にしたページ

qiita.com

 

DES暗号

DESです

python 

import pyDes;
des = pyDes.des('01234567',pyDes.CBC,"\0\0\0\0\0\0\0\0");
print des.encrypt('12345678').encode('hex')

PHP

<?php

$key = "01234567";
$str = "12345678";
$iv = hex2bin("0000000000000000");

$encrypt = openssl_encrypt($str,'des-cbc',$key,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING ,$iv);
$a=bin2hex($encrypt);
print $a;

 

3DESです

python

import pyDes

# 2 Key 3 DES ENCODE
data = "12345678"
des = pyDes.des('01234567',pyDes.CBC,"\0\0\0\0\0\0\0\0")
a=des.encrypt(data)
des2 = pyDes.des('76543210',pyDes.CBC,"\0\0\0\0\0\0\0\0")
b=des2.decrypt(a)
des3 = pyDes.des('01234567',pyDes.CBC,"\0\0\0\0\0\0\0\0")
c=des3.encrypt(b)
print c.encode('hex')


# Functional Equivalent 上記を1行で書く
k = pyDes.triple_des("0123456776543210", pyDes.CBC , "\0\0\0\0\0\0\0\0")
d = k.encrypt(data)
print d.encode('hex')

 

PHP

<?php

$key = "0123456776543210";
$str = "12345678";
$iv = hex2bin("0000000000000000");

$encrypt = openssl_encrypt($str,'des-ede-cbc',$key,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING ,$iv);
$a=bin2hex($encrypt);
print $a;