`(blog ,garaemon)

ポップカルチャーを摂取して、コードを吐き出す機械

Chance the Rapperの南アフリカでのライブ

4月30日に南アフリカ, ヨハネスブルグでChance the Rapperのライブが行われた。これが大成功に終わったようだ.

www.huffingtonpost.co.za

ライブが終わって帰宅するお客さんたちがChanceの曲を皆で歌いながら帰っている動画がいくつも上がっている. とても感動的だ.

ライブ中も皆でシンガロングしている.

ライブ後はChanceはザンビアジンバブエに旅行に行ったとのことだ (ザンビアは僕のもう一つの故郷だ!).

Chanceは今年中にザンビアジンバブエでライブをしたいと語っている. シカゴの20代のラッパーが世界を変えつつある. 是非実現してほしい.

ライブでChance the Rapperと共演したSoweto Gospel ChoirはSpotifyで曲が聞ける(なんて素晴らしい世界だ!)

渡辺志保さんのケンドリック・ラマーのピューリッツァー賞受賞の話がとても良かった

ライムスターの宇多丸氏のラジオにHipHopライターの渡辺志保さんが出ていた. ケンドリック・ラマーのピューリッツァー賞受賞やビヨンセのコーチェラについて語っていたのが、最近のHipHop界隈の話題をうまく俯瞰できていてためになった.

音源はこちら

radiocloud.jp

書き起こしはこちら miyearnzzlabo.com

先日ツイッターでCoachellaのビヨンセのライブをyoutubeで観た感想として「過度に政治的」と言っているものを目にした. この感想を目にして残念な気持ちになった. 何が残念かというと, 日本にいると海外のポップカルチャーの文脈にとことん取り残されてしまっているということだ(そしてそれは僕も含む).

ポップカルチャーにはマイノリティだったり, 抑圧されていて生きづらいと思っている人たちを励ます力がある. そういった人たちに情報をしっかり伝えることが今の日本のカルチャー評論ではまだ足りていないように思う. 海外のポップカルチャーに興味があって能動的に情報を得ている人たちはそういった文脈にアクセスすることができる. しかし、そうでない人たちも海外のポップカルチャーの動きをもっと知るようになれないのだろうか.

ビヨンセのCoachellaライブについてはこのあたりの記事が詳しい

www.cinra.net

miyearnzzlabo.com

slackのchannnel idを名前に変換する

slackのメッセージにはchannelのidが入っているが、名前にはなっていない.

名前に変換するにはchannels.infoを使う必要がありそう.

以下はtypescriptを利用したサンプル.
ライブラリには slack-node-sdkを利用

import { WebClient, WebAPICallResult, RTMClient } from '@slack/client';
const web = new WebClient(token);
const rtm = new RTMClient(token);

interface ChannelInfoResponse extends WebAPICallResult {
  channel: {
    id: string;
    name: string;
    // rest fields are omitted
  };
}

interface EventMessage {
  subtype?: string;
  type: string;
  channel: string;
  user: string;
  text: string;
  ts: string;
}

rtm.on('message', async (message: EventMessage) => {
  const channelId = message.channel;
  const info = (await web.channels.info({
    channel: channelId,
  })) as ChannelInfoResponse;
  const name = info.channel.name;
  console.log(`channel name is ${name}`);
});

pythonでjsonのutf8の文字をescapeしない

pythonでdictオブジェクトを文字列に変換すると、utf8の文字がエスケープされてしまう.

'hoge: %s' % json.dumps({'text': 'ほげ'})
=> 'hoge: {"text": "\\u307b\\u3052"}'

これをエスケープしないようにするにはensure_ascii=Falseにすれば良い.

'hoge: %s' % json.dumps({'text': 'ほげ'}, ensure_ascii=False)
=> 'hoge: {"text": "ほげ"}'

micropythonのusocketで大きなファイルをHTTP越しに読む

micropythonを動かす環境はm5stackといったメモリが貧弱であることが多く, 普段は気にならないサイズでもMemory Allocation Errorが発生して読み込めないことがある.

micropythonのurequestsパッケージは便利だけど、データを逐次的に読み出すインタフェイスがないのが問題. なので直接usocketオブジェクトに触ってサイズを区切って読み出すようにすればいい. 最後に忘れずにrequestをcloseするのを忘れないように。これを忘れるとmemory allocation errorを引き起こす.

from m5stack import lcd
import urequests

def download_to_file(image_url, filename, step_size=1024):
    r = urequests.get(image_url)
    try:
        with open(filename, 'wb') as f:
            while True:
                c = r.raw.read(step_size)
                if c:
                    f.write(c)
                else:
                    return
    except Exception as e:
        lcd.println('Exception(download_image): ' + str(e))
        raise e
    finally:
        r.close()

新iPad(2018年モデル)でApple Pencilをつけられるカバー

iPad (2018年モデル)を購入したので、Apple Pencilをつけられるカバーということで以下のものを購入して利用している.

https://www.amazon.co.jp/gp/product/B07C4RZMS9

Apple Pencilもしっかり収納できて良い感じ. 少し重いのと、Apple Pencilを立てる穴はちょっと使いにくいかも.