いろいろ備忘録

雑記です。

Node.jsでwsとExpressのセッションを共有する

const sessionMW = session({
//セッションIDの鍵
secret: 'aaaaaaaaaaaaaaaaaaaa',
//セッションの変更を自動で保存しない
resave: true,
//未初期化状態のセッションを保存しない
saveUninitialized: false,
//アクセス時に有効期限を延長しない
rolling: false,
//発行するクッキーの名前
name: "sessionInfo",
cookie: {
//jsからクッキーを読み込ませない
httpOnly: true,
//HTTPSでのみ送信する
secure: false,
//2時間で失効する
maxAge: 1000 * 60 * 60 * 2
}
});
app.use(sessionMW);
const verifyClient = (info, done) => {
sessionMW(info.req, {}, () => {
console.log(info.req.session);
if (typeof info.req.session.userid !== "undefined") {
console.log("セッションあった");
done(true);
} else {
console.log("session not found");
done(false, 401, "please login");
}
});
};
const wsServer = new ws.Server({
verifyClient: verifyClient,
server
});

VivusのSVGにInkscapeのものを利用する

1.編集→Inkscapeの設定→入出力→SVG出力 にて、パスの文字列形式:絶対座標 数値精度:5 最小指数:-2にする 2.新規の画像にする 3.文字をなんか打つ 4.文字を右クリックしてフィル/ストロークでフィルを無効、ストロークを有効にする 5.パス→オブジェクトをパスへ 6.保存するときはプレーンsvg

PicassoとRoundedImageViewを使って丸で枠付きのImageViewを表示する(MVVM)

build.gradle

//Picasso
compile 'com.squareup.picasso:picasso:2.5.2'
//ImageViewを丸にしたり枠つけたり
compile 'com.makeramen:roundedimageview:2.3.0'

ビューモデル

@BindingAdapter ( { "picturePath", "gender" })
public static void loadImage ( ImageView view, String picturePath, String gender ) {

int frameColor = R.color.manFrame;
int placeHolderID = R.drawable.boy_happy;
if ( gender != null && gender.equals ( "woman" ) ) {
frameColor = R.color.womanFrame;
placeHolderID = R.drawable.girl_happy;
}
Picasso.with ( view.getContext () ).setLoggingEnabled ( true );

Picasso.with ( view.getContext () )
.load ( picturePath )
.placeholder ( placeHolderID )
.fit ()
.transform ( new RoundedTransformationBuilder ()
.borderColor ( frameColor )
.borderWidthDp ( 6 )
.oval ( true )
.build () )
.into ( view );
}

setLoggingEnabled ( true )でログを出力します。

.placeholder ( placeHolderID )で、読み込み前や取得できなかったときの代替画像を指定します。

.transformでRoundedImageView内に用意されているPicasso用のTransformationを指定します。

 

 

アゲアゲ☆将棋実況チャンネルのおすすめ動画

筆者はウォーズ1級の素人です。

見当違いのことを言っていたらコメントで教えていただけると幸いです。

 

念のため、アゲアゲ氏を知らない方のためにアゲアゲ氏がどんな人か説明しますと、アゲアゲ☆将棋実況チャンネルの投稿者であるアゲアゲ氏は奨励会3段というプロ棋士一歩手前まで上り詰めた方です。
最近は全国アマチュア王将位大会で準優勝されるなどアマ棋士として輝かしい成績を収められています。
私たちはそんな偉い方の実況や解説が観られる素晴らしい時代にいます。
観ましょう。

 

では、まずは将棋の動画から。

この対局の前に10分切れ負けを指していたアゲアゲ氏は、10切れを指しているつもりでした。
持ち時間が残り1分20秒、相手との持ち時間の差が1分以上になったところで、ようやく今自分が指しているのが3切れだということに気づきます。うっかりさんですね。

王手を防ぐ香打ちや打ち歩詰めの回避など、格の違いを思い知らされました。

 

次です。

残りの持ち時間がたった10秒にも関わらず、「詰ます」と宣言するアゲアゲ氏に痺れます。

将棋が強いのはもちろんですが、マウスさばきも速いです。


将棋ウォーズ 3切れ実況(492)石田流三間飛車VS左美濃

 

次です。

将棋系YouTuberの筆頭であるクロノ氏主催の将棋系YouTuber大会に出場しなかったアゲアゲ氏ですが、たまたまはく氏(将棋系YouTuber)とマッチングしました。

その時のはく氏視点での動画です。もちろんアゲアゲ氏の実況動画もあります。

静かに甚振られる恐怖を対局者視点で体験できます。


奇跡のマッチング!?VSアゲアゲさん【将棋ウォーズ】

 

ここからは将棋以外の動画です。

突如として始まったこのアゲラジ。

この頃は対局よりもアゲラジが楽しみになっていて、投稿されたらまず最後まで飛ばしてアゲラジの有無を確認していました。

将棋に関する話から冷凍パスタにハマった話まで聞けます。アゲアゲ氏と仲良くなった気分になれます。勝手に。

アゲアゲラジオあり動画 - YouTube

 

次です。

おそらく、アゲアゲ氏は世界で初めて牛角感想戦をした人です。

コメント欄の大喜利も含めて好きです。


牛角感想戦

 

いかがでしたか?

多すぎて書ききれなかったのですが、他にもボイスロイドによる将棋実況、英語将棋実況、棋士の手つきモノマネなど独創的な動画が沢山あります。

全て観て再生回数をアゲアゲしていきましょう。

PocketSphinxをAndroidで使う

親切なチュートリアルがあります。

cmusphinx.github.io

 

自分がやった手順を書きます。

1.サンプルプロジェクトからAARファイル、en-us-ptm(音響モデル)、cmudict-en-us.dict(辞書ファイル)などを取り出しておきます。

2.

AARファイルを読み込みます。

Android AAR形式ライブラリ作成 - ツテなしフリーランス日誌 こちらのAARの使用の1-6までを行います。

3.

app/build.gradleに以下のAntスクリプトを追記します。

ant.importBuild 'assets.xml'
preBuild.dependsOn(list, checksum)
clean.dependsOn(clean_assets)

4.app/src/mainにassetsディレクトリ、その直下にsyncディレクトリを作り、取り出した音響モデルや辞書ファイルを置きます。

5.AndroidManifest.xmlに権限を追記します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

6.PocketSphinxActivityの中を必要な分だけコピペしてきます。