まったりするmatayu

ツイートにゴミがついた感じのブログ

ルビ付きのアルマゲドン

keithonに日本語ルビがついた英語のアルマゲドンの本を借りて読んだ

一応ストーリーの流れはわかったけど、登場人物の細かい心情とか言葉遣いとかがあまり読み取れなかった

お家にアルマゲドンのDVDがあるらしいので観てかくにんしよう

高校生の時にSAOの英訳版を買って読んだことがあったけど難しくて最後まで読めなかった記憶

これがルビ付きのアルマゲドン

アルマゲドン [英語版ルビ訳付] 講談社ルビー・ブックス | M.C. ボーリン |本 | 通販 | Amazon

講談社ルビー・ブックスが出してる

ルビ付きの本を出すのでルビー

食べるの遅い

いつも人の倍くらいの速度で食べてる感じ

誰かと食事に行くときはちょっと申し訳ない気持ちになる

自分一人で食べてると普通に1時間経ってたりする

結構量がある時に自分のペース以上で食べるとその後眠かったり胃がもたれたりで全然動けなくなるんだよなぁ

普段は一回の量を少なめに、4~5回に分けて食べる

ゆっくりじっくり食べるのが好きだから、速く食べられなくなった説はあるな

個人的には速く食べたいとは思ってないし

小学校の給食の時間は割と短くて15分か20分くらいしかなかった記憶

よく食べきったな当時の俺

最近食べて、胃が死にそうになった宮古そば なかよしのかつどぅん

f:id:mattari_matayu:20210607125434j:plain
かつどん

おいしかった

ABC202Dをいろいろな言語で解いてみた

解いてみただけ

Python3

import math

A, B, K = map(int, input().split())

result = []


def sameFactorial(a, b):
    return math.factorial(a+b) // (math.factorial(a)*math.factorial(b))


def headIs(a, b, k):
    if a == 0:
        result.append('b'*b)
    elif b == 0:
        result.append('a'*a)
    elif sameFactorial(a-1, b) >= k:
        result.append('a')
        headIs(a-1, b, k)
    else:
        result.append('b')
        headIs(a, b-1, k-sameFactorial(a-1, b))


headIs(A, B, K)
print(''.join(result))

Julia

A, B, K = parse.(Int64, split(readline()))

function sameFactorial(a, b)
    factorial(big(a+b)) ÷ (factorial(big(a))*factorial(big(b)))
end

function headIs(a, b, k)
    if a == 0
        return 'b'^b
    elseif b == 0
        return 'a'^a
    elseif sameFactorial(a-1,b) >= k
        return 'a' * headIs(a-1, b, k)
        
    else
        return 'b' * headIs(a, b-1, k-sameFactorial(a-1,b))
    end
end

print(headIs(A, B, K))

Ruby

def C(n, k)
    result = 1
    k.times do |i|
        result *= n - i
        result /= i + 1
    end
    result
end

def solve(a, b, k)
    if a == 0
        'b' * b
    elsif b == 0
        'a' * a
    elsif k <= (c = C(a + b - 1, b))
        'a' + solve(a - 1, b, k)
    else
        'b' + solve(a, b - 1, k - c)
    end
end

A, B, K = gets.split.map(&:to_i)
puts solve(A, B, K)

Perl

use strict;
use warnings;
use utf8;

sub C {
    my ($n, $k) = @_;
    my $result = 1;
    for my $i (1..$k){
        $result *= $n - $i + 1;
        $result /= $i;
    }
    return $result;
}

sub Solve {
    my ($a, $b, $k) = @_;
    if($a == 0){
        return 'b'x$b;
    }elsif($b == 0){
        return 'a'x$a;
    }else{
        my $c = C($a+$b-1,$b);
        if($k <= $c) {
            return 'a' . Solve($a-1, $b, $k);
        }else{
            return 'b' . Solve($a, $b-1, $k-$c);
        }
    }
}

my ( $A, $B, $K ) = split / /,<>;
print Solve($A, $B, $K);

最近腰が痛い...

vscodeのcodeコマンド

Codeコマンド

vscode を使っている人であれば打ったことがあるであろうcodeコマンド

実はbinaryじゃなくてshellscriptが見れる

shellscriptがそのままあることもあるんだなぁ

$which code
/usr/local/bin/code
$cat /usr/local/bin/code
#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.

function realpath() { python -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }
CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
exit $?

realpath

dirname

  • ディレクトリのパスを返す
  • 知らないコマンドがまだまだたくさんあるね
$dirname ~/ws/notes/blog
/Users/matac/ws/notes

$?

直前のプロセスの終了ステータス

exit $?

終了ステータス$?を返して終了する

debugしてみる

$zsh -x /usr/local/bin/code .
+/Users/matac/.zshenv:1> source /Users/matac/.cargo/env
+/Users/matac/.cargo/env:4> case :/Users/matac/.nvm/versions/node/v14.16.1/bin:/Users/matac/.pyenv/shims:/Users/matac/.pyenv/bin:/Users/matac/.rbenv/shims:/usr/local/opt/openssl@1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/go/bin:/Users/matac/.cargo/bin:/usr/local/go/bin:/Users/matac/ws/go/bin:/Applications/Julia-1.6.app/Contents/Resources/julia/bin: (*:/Users/matac/.cargo/bin:*)
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> realpath /usr/local/bin/code
+realpath:0> python -c 'import os,sys; print(os.path.realpath(sys.argv[1]))' realpath
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /Users/matac/realpath
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /Users/matac
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /Users
+/usr/local/bin/code:7> CONTENTS=+/usr/local/bin/code:7> dirname /
+/usr/local/bin/code:7> CONTENTS=/ 
+/usr/local/bin/code:8> ELECTRON=//MacOS/Electron 
+/usr/local/bin/code:9> CLI=//Resources/app/out/cli.js 
+/usr/local/bin/code:10> ELECTRON_RUN_AS_NODE=1 //MacOS/Electron //Resources/app/out/cli.js .
/usr/local/bin/code:10: no such file or directory: //MacOS/Electron
+/usr/local/bin/code:11> exit 127

マジで何やってるのかわからん

$ls -la /usr/local/bin/code
lrwxr-xr-x  1 matac  admin  68  3 28 20:50 /usr/local/bin/code@ -> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code

実体はここにある

[~/ws/notes/blog]
$zsh /usr/local/bin/code .
/usr/local/bin/code:10: no such file or directory: /Users/matac/MacOS/Electron
[~/ws/notes/blog]
$bash /usr/local/bin/code . 

zshじゃなくてbashなら行けるっぽい(bashって書いてあるやろがい!)

[~/ws/notes/blog]
$bash -x /usr/local/bin/code .
++++++ realpath /usr/local/bin/code
++++++ python -c 'import os,sys; print(os.path.realpath(sys.argv[1]))' /usr/local/bin/code
+++++ dirname '/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code'
++++ dirname '/Applications/Visual Studio Code.app/Contents/Resources/app/bin'
+++ dirname '/Applications/Visual Studio Code.app/Contents/Resources/app'
++ dirname '/Applications/Visual Studio Code.app/Contents/Resources'
+ CONTENTS='/Applications/Visual Studio Code.app/Contents'
+ ELECTRON='/Applications/Visual Studio Code.app/Contents/MacOS/Electron'
+ CLI='/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js'
+ ELECTRON_RUN_AS_NODE=1
+ '/Applications/Visual Studio Code.app/Contents/MacOS/Electron' '/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js' .
+ exit 0

なのでcodeコマンドは最終的に '/Applications/Visual Studio Code.app/Contents/MacOS/Electron' '/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js' . を実行している

'/Applications/Visual Studio Code.app/Contents/MacOS/Electron'

vscodeを開くコマンド

'/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js'

[~/ws/notes/blog]
$cat '/Applications/Visual Studio Code.app/Contents/Resources/app/out/cli.js'
"use strict";const bootstrap=require("./bootstrap"),bootstrapNode=require("./bootstrap-node"),product=require("../product.json");bootstrap.avoidMonkeyPatchFromAppInsights(),bootstrapNode.configurePortable(product),bootstrap.enableASARSupport(void 0),process.env.VSCODE_CLI="1",require("./bootstrap-amd").load("vs/code/node/cli");

//# sourceMappingURL=https://ticino.blob.core.windows.net/sourcemaps/054a9295330880ed74ceaedda236253b4f39a335/core/cli.js.map

後ろにディレクトリを指定してあげるとvscodeでそのディレクトリを開ける動きをするはず

めっちゃ長い1 line code

vscodeのフロントまでたどり着いたっぽい

bootstrap はフロントエンドライブラリ

ちょっと見辛いので改行入れてみた(あんまり改行できなかった)

"use strict";

const bootstrap=require("./bootstrap"),bootstrapNode=require("./bootstrap-node"),product=require("../product.json");

bootstrap.avoidMonkeyPatchFromAppInsights(),bootstrapNode.configurePortable(product),bootstrap.enableASARSupport(void 0),process.env.VSCODE_CLI="1",require("./bootstrap-amd").load("vs/code/node/cli");

requireでモジュールbootstrap, bootstrapNode, productを読み込んでいる 最後にvs/code/node/cliがloadされている。見に行ったらとてつもなく長い1 line codeがあった。

このくらいにしておこう...

build and debug

https://github.com/microsoft/vscode/wiki/How-to-Contribute

buildしてcodeしたときの動きをdebugすると面白そう

ブラウザでも開けるのか

webアプリケーションって思ったよりも大きい括りかもしれない

webブラウザvscodeが立ち上がってる不思議な感覚

f:id:mattari_matayu:20210527113757j:plain
webブラウザで立ち上がっているvscode

debugはappとして起動しながらやろう

いろいろ準備して./scripts/code.shで起動できる

多分これがcodeコマンドに相当するはず

./scripts/code.sh ~/ws/notesとやったら~/ws/notesが起動後に開かれた

  • これ自体はcodeコマンドとは別物みたい

ソースをみに行ったら、しっかりインデントがついたコードが見れた

GitHub - microsoft/vscode: Visual Studio Code

$resources/darwin/bin/code.sh .
resources/darwin/bin/code.sh: line 10: /Users/matac/ws/src/github.com/microsoft/vscode/MacOS/Electron: No such file or directory

これがcodeコマンドだろうけど、パスがずれてるっぽくてうまく動かない

実機の場合は

/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code

debug環境は

/Users/matac/ws/src/github.com/microsoft/vscode/resources/darwin/bin/code.sh

ちょっといじらないとcodeコマンドのdebugができない...?

vimtutorやった

vimを使うことが多いですがvimtutorというvimチュートリアルをやったことがなかったのでやりました。

コマンドでvimtutor jaと打つとできます。(jaをとると英語でできます) いままでなんとなくでvimを使ってたので、結構知らないコマンドや操作がありました。 知ることはできたので後はちゃんと使っていくだけですね。わすれっぽいから...

ctrl+], ctrl+o, ctrl+iはブラウザっぽくて面白かったです。この仕組みに名前はあるのだろうか。 vimの操作極めて、vscodevimキーバインド使うと楽しそう。

読み書き聞き

最近文章を読むのも書くのもちょっと辛いです。

色々読みたいものはあって読むのですが、最中に色々考えてしまって内容がほとんど入ってきません。

別に何か悩みごとがあってその事ばかり考えてしまうというわけではなく、単純に読みながら別のことを考えている感じです。

環境の難易度が上がったのか、自分のレベルが下がったのかわからないですが困りました。

生活できなくなるくらい悪くはないですが、楽しくはないですね。

これは文章に限らず会話のときもそうです。人の話を聞いてるつもりでも、どうしても聞き漏らしがあります。

聞いてる最中に、言葉が脳を経由せずに右から左へ抜けていくのを本当に感じることが出来ます。

大抵は聞き返せば問題ないですが、あまり何回も聞き返すのは気が引けるし、相手も気分は良くないでしょう。

会話と読み書きの頻度が低くなっているのが原因だと思います。

あと、集中力も低下しているような気がしていて、それも原因の一つに挙げられるでしょう。

もとからこんなもんだった説もあります。

どちらにせよ、今の能力値では物足りないので言語を使用する頻度を増やして鍛えていきたいです。

ありがとうgit reflog

gitってブランチの移動やresetの履歴まで残ってるの初めて知りました。

深夜の私はなにか血迷い$git reset --hard HEAD^(たぶんbranch間違えたか何か).

つらい気持ちになっていたときに諦めきれずに調べたら、reflogが出てきて作業内容を取り戻すことが出来ました。

めでたしめでたし。