Skip to content

Instantly share code, notes, and snippets.

View crakaC's full-sized avatar

K.SHIRAKASHI crakaC

View GitHub Profile
@crakaC
crakaC / toInt_parseInt.kt
Created October 19, 2020 11:16
String::toIntとInteger::parseIntの差はほとんどないっぽい
import kotlin.system.*
fun main(){
val N = 1_000_000
val K = 100
val stringNums = (1..N).map(Int::toString)
run{
println("it.toInt()")
val t = average(K){
stringNums.map{it.toInt()}
@crakaC
crakaC / output
Last active October 18, 2020 07:23
プロコンやるときはプリミティブな配列を使おう
Long[]
483.9
long[]
100.0
Long <- long
701.1
long <- Long
184.0
@crakaC
crakaC / main.kt
Created October 13, 2020 03:42
KotlinでAtCoderやるときの雛形
fun main(){
}
fun readInt() = readLine()!!.toInt()
fun readInts() = readLine()!!.split(" ").map(String::toInt)
fun <T>printAll(a: Collection<T>) = println(a.joinToString("\n"))
@crakaC
crakaC / main.kt
Created October 12, 2020 12:59
KotlinのMapで特定のキーの範囲でループして場合によっては要素を削除するとき
val map = mutableMapOf<Int, Int>().toSortedMap()
//https://docs.oracle.com/javase/jp/8/docs/api/java/util/TreeMap.html#subMap-K-K-
val iterator = map.subMap(l, r).iterator()
while(iterator.hasNext()){
val it = iterator.next()
//do something
iterator.remove()
}
@crakaC
crakaC / db_maintenance_memo.md
Last active August 17, 2019 13:07
MastodonのDBサイズが膨らんできたので不要っぽいレコードを削除した

MastodonのDBメンテという名のレコード削除祭り

tootctl statuses remove

ローカルユーザーにとって不要なトゥートを削除するジョブ。
そのままだと思いの外うまく消えてくれないのでいくつか変更&修正。

diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb
index 7f2fbfa85..5c7c877fb 100644
--- a/lib/mastodon/statuses_cli.rb
+++ b/lib/mastodon/statuses_cli.rb
@crakaC
crakaC / gif_preview_card_consumes_memory.md
Created December 19, 2017 13:00
preview_cardでGIFを引っ張ってくるときのメモリ消費がつらい

400x400で、フレーム数が多いGIFだとかなりやばいっぽい。

サンプルは400x400, 198フレームのGIFファイル。

普通にapt-getで入る版

--------------------------------------------------------------------------------
Command:            /usr/bin/convert sample3.gif -coalesce -auto-orient -resize 400x400> -layers optimize -quality 80 -strip out.gif
Massif arguments:   (none)
ms_print arguments: massif.out.21536
@crakaC
crakaC / privacy.md
Created December 17, 2017 05:09
Privacy policy

Sleeping( ˘ω˘)Syarでは、Twitterに画像をアップロードするときに、カメラへのアクセスを要求することがあります。 カメラへのアクセスは、画像を撮影してTwitterにアップロードするためだけに利用されます。

SleepingSyar requests CAMERA permission to upload media to Twitter. This app only use camera to take picture that will be uploaded to twitter.

@crakaC
crakaC / gif_convert.md
Last active March 10, 2018 04:19
ImageMagickでgifをconvertする時のメモリ消費を何とかしたい

Mastodonでgifアイコンをconvertするときにメモリを激しく消費する。

120x120、1フレームのgifアイコンをconvertするときのメモリ消費

$ identify 1frame.gif
#> 1frame.gif GIF 120x120 120x120+0+0 8-bit sRGB 256c 13041B 0.000u 0:00.000
--------------------------------------------------------------------------------
@crakaC
crakaC / install_imagemagick.md
Last active November 28, 2017 09:48
ImageMagickを弱小鯖用にビルド&インストールする

基本的にはInstall from Source @ ImageMagickの通りです。

ソースのダウンロード&展開

wget https://www.imagemagick.org/download/ImageMagick.tar.gz
tar xvzf ImageMagick.tar.gz

2017/11/27現在、7.0.7-11が降ってきます。

configure

@crakaC
crakaC / heap_dump.sh
Last active November 22, 2017 15:11
puma, sidekiqのheap_dumpをとる(gem 'rbtrace'が必要)
#!/bin/bash -e
cd ~/live
sidekiq_pid=`ps aux | grep sidekiq | grep -v grep | awk '{print $2}'`
puma_pid=`ps aux | grep puma | grep -v grep | awk '{print $2}'`
/home/mastodon/.rbenv/shims/bundle exec rbtrace -p $puma_pid --timeout 30 -e 'Thread.new{GC.start;require "objspace";io=File.open("/tmp/puma.dump", "w"); ObjectSpace.dump_all(output: io); io.close}'
/home/mastodon/.rbenv/shims/bundle exec rbtrace -p $sidekiq_pid --timeout 30 -e 'Thread.new{GC.start;require "objspace";io=File.open("/tmp/sidekiq.dump", "w"); ObjectSpace.dump_all(output: io); io.close}'
# ちょっと待つと吉