Skip to content

Instantly share code, notes, and snippets.

View okapies's full-sized avatar
💭
⌨️

Yuta Okamoto okapies

💭
⌨️
View GitHub Profile
@okapies
okapies / mastodon-client.md
Last active October 3, 2023 10:18
Mastodon API の叩き方

Mastodon の API を叩くには以下の手順を踏む必要がある:

  1. OAuth2 クライアントを登録する
  2. アクセストークンを取得する
  3. アクセストークンを Authorization ヘッダに指定して API にアクセスする

OAuth2 クライアント登録

Mastodon の Apps API に登録情報を送ってクライアントを払い出してもらう(一度だけやれば OK).

@okapies
okapies / mastodon-ostatus.md
Last active September 5, 2021 11:39
Mastodon OStatus API の叩き方

Mastodon が他のインスタンスと情報交換をする OStatus API の使い方。使ってるだけのユーザは知る必要がない裏側の話。

host-meta

Mastodon インスタンスに対して、RFC6415 が規定する /.well-known/host-meta というパスを要求すると以下の XML が返ってくる.

<?xml version="1.0"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
  <Link rel="lrdd" type="application/xrd+xml" template="https://[MASTODON_HOST]/.well-known/webfinger?resource={uri}"/>
</XRD>
@okapies
okapies / t470s.md
Last active October 28, 2021 16:45
Ubuntu 16.04 on ThinkPad T470s

This is a document describing how to install Ubuntu 16.04 LTS on ThinkPad T470s.

My Hardware

  • CPU: Intel Core i7-7600U (2.80GHz, 4MB cache)
  • Graphics: Intel HD Graphics 620
  • Display: 14” WQHD (2560 X 1440) IPS Non-Touch Anti-Glare
  • Memory: 24GB DDR4 2133 MHz (8GB Onboard + 16GB)
  • SSD: PCIe-NVMe 256G OPAL 2.0
  • Wireless: Intel Dual Band Wireless AC (2x2) 8265 Bluetooth 4.1
  • Fingerprint Reader
@okapies
okapies / keymap.c
Created November 3, 2017 16:53
QMK Layer Tap (LT) in Let's Split
#include "lets_split.h"
#include "action_layer.h"
#include "eeconfig.h"
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
@okapies
okapies / QueryOptionalColumn.scala
Created November 18, 2017 11:06
Problem in filtering an optional column in Slick 3.2
// ref. https://gist.github.com/cvogt/9193220
// See the example in http://slick.lightbend.com/doc/3.2.1/gettingstarted.html
// I add an optional `buyer` column to Suppliers:
class Suppliers(tag: Tag) extends Table[(Int, String, String, String, String, String, Option[String])](tag, "SUPPLIERS") {
...
def buyer = column[Option[String]]("BUYER")
...
}
@okapies
okapies / UserClient.scala
Last active December 4, 2017 08:11
akka-http and JSON
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.{HttpMethods, HttpRequest, StatusCodes, Uri}
import akka.http.scaladsl.unmarshalling.{FromEntityUnmarshaller, Unmarshal}
import akka.stream.ActorMaterializer
import de.heikoseeberger.akkahttpcirce.FailFastCirceSupport
import scala.concurrent.{ExecutionContext, Future}
import scala.util.{Failure, Success}
@okapies
okapies / gist:b5880ac5cb507871ad43e6dd13d8b835
Created January 9, 2018 02:52
Kubernetes 入門メモ

ローカル環境で Kubernetes を構築できる Minikube (https://github.com/kubernetes/minikube) を使っていろいろ試してみる。

導入手順

公式の手順にしたがって手元のマシンに minikubekubectl をインストールする。基本的に VirtualBox で動かすので併せてインストールする(Linux の場合は --vm-driver=none を使えば Docker 上で動かせるが起動時にセキュリティ関連の設定をするように警告が出る)。

触ってみる

下記の記事の手順にしたがって操作してみる。minikube start で k8s を起動したあとは kubectl を使う。ダッシュボードを出すには minikube dashboard

https://qiita.com/nirasan/items/6207cf7ef94e04640fbf

import $ivy.`io.skuber::skuber:2.0.5`
import skuber._
import skuber.json.format._
val nginxSelector = Map("app" -> "nginx")
val nginxService = Service("nginx").withSelector(nginxSelector).exposeOnNodePort(30001 -> 80)
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
@okapies
okapies / chainer_iter_perf.py
Last active December 20, 2018 11:42
A performance testing for Chainer's `Iterator` on various `ndarray`s
import sys
import timeit
sys.stdout.write("numpy array: ")
print(
timeit.timeit(
"[iter.next() for i in range(0, 60000, 100)]",
setup="""
import numpy as np
import chainer
@okapies
okapies / perf_extract_apply_in_data.py
Last active January 17, 2019 11:28
Benchmarking for `_extract_apply_in_data` in Chainer's `function_node`
import argparse
import timeit
parser = argparse.ArgumentParser()
parser.add_argument('--number', type=int, default=10000000)
parser.add_argument('--device', type=str, default="native:0")
parser.add_argument('--nargs', type=int, default=2)
parser.add_argument('--wrap-variable', action='store_true', default=False)
parser.add_argument('--batch-size', type=int, default=1)
args = parser.parse_args()