CoffeeScript + RaspberryPiでRedisを使ってみる

mongoDB入れようと思ったらラズパイでインストールできるバージョン古すぎて使えなかったので
CoffeeScriptからRedisを使う覚書

環境

  • Server
    • Raspberry Pi Zero(Raspberry Pi 3に置き換え予定)
    • OS: Raspbian(debian系)
  • Client
    • G-GEAR(ゲーミングノート)
    • OS: Windows10 Home
  • CoffeeScript
    • v2.5.1
  • Node.js
    • v12.13.1
  • Yarn
    • v1.21.1

前提

  • CoffeeScript導入済み
  • Node.js導入済み
  • Yarn(or npm)導入済み
  • Raspberry PiとはSSH通信可能

Redisのインストール

インストール

まずはsudo apt updateでアップデート

その後にsudo apt install redis-serverでRedisをインストールします。

ps aux | grep redisでredisが動いているのを確認できます。

redis-cliで対話的に操作することもできます。
quitで終了できます。

外部からの接続を許可

sudo nano /etc/redis/redis.confでコンフィグファイルを開いて編集します。

1
2
- bind 127.0.0.1 ::1
+ # bind 127.0.0.1 ::1

また、パスワードも設定します。

1
2
- # requirepass ...
+ requirepass ...

sudo service redis-server restartで再起動します。

接続する

まずは接続のためにCoffeeScriptを書きます。
接続にはredisパッケージを使います。

yarn add redisでインストールします。

そして、redis.coffee(名前なんてどうでもいいですけど)を作って認証情報諸々書きます

1
2
3
4
5
6
7
8
9
10
11
12
redis = require 'redis'

config =
host: '192.168.x.x',
port: '6379',
password: 'xxxx'

client = redis.createClient config

client.on 'ready', (err) ->
console.log 'connected.'

hostにはラズパイのローカルIPアドレスを入れます。
passwordにはさっきファイルに書き込んだパスワードを入れます。

正常に接続できればconnected.と表示されるはずです。

おわり

結構簡単でびっくりしました。
まだセキュリティのかけらもないので、諸々やっていきたいと思います。

CoffeeScript書きやすいわ。いいね。

クソ今更だけどCoffeeScript入門してみた

コミュニティ死んでてマジで終わりそうなCoffeeScriptを書きます。
覚書がてら環境構築をしていく。

なぜ今更?

  • Pythonっぽかったから
  • JavaScript書くの飽きたから
  • 単純に面白そうだったから

やっていこう

前提

  • Node.jsがインストールされている
    • 今回のバージョンはv12.13.1
  • npmがインストールされている
    • 今回のバージョンはv6.12.1

CoffeeScriptのインストール

WindowsならコマンドプロンプトとかPowershell、その他ならTerminalで以下のコマンドを実行するだけ

npm install --global coffeescript

一発で入ってしまう。

ちなみにそのプロジェクトだけで使いたい場合は--global--save-devに読み替えてください。

coffee -vと打ってバージョン情報が出たらOK

出なかったらシェルを再起動してください。

やってみる

1
2
3
hello = "hello"

console.log hello

これでhelloができる(変数作る必要なかったろというツッコミはなしで)

これをindex.coffeeで保存、coffee index.coffeeで実行できます。

やってみる②

APIにリクエストして結果を得るやつやってみます。

1
2
3
4
5
6
7
8
cat_api = 'https://aws.random.cat/meow'

request.get {
uri: cat_api,
headers: {'Content-type': 'application/json'},
json: true
}, (err, req, data) ->
console.log data.file

明らかに書きやすい。

やってみる③

DiscordBot作成に使ってみた。

コマンドリストにprefixつけるやつ

1
2
3
4
5
command_list = ['cat', 'help']

command_list_withprefix = []
for i in command_list
command_list_withprefix.push prefix+i

Pythonみたいですごく書きやすい

// 追記 2020-03-13

1
command_list_withprefix = command_list.map (element) -> prefix+element

こっちのほうが賢そう

Botは弾くやつ

1
2
if message.author.bot and message.author is not client.user
return

これもPythonみたいな書き方ができるので、コードがとても読みやすい

(カッコとかカギカッコだらけだとやっぱり読みづらい)

開発モードをコマンドライン引数から判断する

1
devmode = if process.argv[2]? and process.argv[2] is 'true' then true else false

nullとかundefinedを?って書くだけで判断してくれる神仕様

開発モードと通常モードでトークンを分ける

1
2
3
4
token_dev = 'dev token here'
token_default = 'default token here'

token = if devmode then token_dev else token_default

こんな簡単に書けちゃうのか・・・・
最高すぎ

感想

ここまで使いやすい言語とは思わなかったです。
めちゃ使いやすかったので(正直今後の保証はないけど)これからはCoffeeScriptで書いてみようと思います。

また何かCoffeeScriptに関する知見があればここに書いていきます。