Skip to content

Instantly share code, notes, and snippets.

View shyouhei's full-sized avatar

卜部昌平 shyouhei

View GitHub Profile
@shyouhei
shyouhei / gist:266178ffedab5767a5b69b972c76f88a
Created September 27, 2017 07:31
優秀なプログラマーになるためのコツ

優秀なプログラマーになるためのコツ

重要な順で

優秀なプログラマーになるには非常に長い時間がかかるという現実を直視すべし

優秀なプログラマーというのは寝ている間に異世界に召喚されて無双するのとはわけが違うんですよ。

自分の例で言うとプログラミングを始めた中学生の時から優秀なプログラマだったかって、そんなわけない。みんなヘッポコからスタートしているに決まってるわけです。以来二十余年、地道に生き恥を晒し続けてきた結果として、現在いちおう業界の末席を汚すところまで来ている。このプロセスから目を背けるべきではないです。優秀なプログラマーに生まれる人間なんかいない。優秀なプログラマーに「育つ」んだし、それには時間が必要。今日から無双したいと思うな。

@shyouhei
shyouhei / gist:89fb613c08062c264b1ed57b20eee9d6
Created January 2, 2023 14:29
フリーランスって最初は良くても続けてくと詰まない?って話

フリーランスって最初は良くても続けてくと詰まない?って話

単価上げるチャンスなくない?って話

フリーランスは基本的にはスポットで求められている作業をスポットで実施する。新卒ではないので即戦力が求められている。逆に言うと新卒は即戦力を求められていない。フリーランスに限って言うとフリーランスの仕事というのはそのほぼ全部が昔取った杵柄でしかなく(昔取った杵柄にしか仕事は来ず)、今日やっている作業を延々と何十年も続ける未来以外を描くのは意外と難しい。

フリーランスの仕事は昨日と同じことをしていますが昨日の倍の単金をいただきますというのは通らない。水光熱費が高騰しようがフリーランスにベースアップはない。量を増やすか質を上げるかのどちらかをしないと年商が増えない。しかし…

じわじわとスキルが陳腐化していかない?って話

@shyouhei
shyouhei / 1-README.md
Last active July 28, 2022 18:51
include-what-you-use is a garbage.
@shyouhei
shyouhei / gist:22254d2cc60cef9016140cab0cdb50a2
Created June 5, 2020 05:33
会社に所属する理由は放置しておくとゴリゴリ削れていくぞ、という話

おことわり

  • 既に他媒体のインタビューなどで発表済みの内容をモンタージュしたものであり、卜部のことを詳細にストーキングしている読者がいるとすれば新規のコンテンツを含まない。
  • 卜部の人生は卜部の人生なのであっておまえらの人生ではない。「所謂普通の人生」を送ってきたという認識は寸毫もない。性急な一般化は危険と言わざるを得ない。

何個か前の受託開発の会社をやめたきっかけの話

当時、その案件にはひとりアサインで、客先常駐であった。幸いにして常駐先の皆さんには本当に良くしていただいて、困りごともなく、業務も適量で、掛け値なしによい客先だなと思っていた。

しかしそうなってくると、所属先に所属している意味ってなんだっけという疑問がむくむくと頭をもたげてくるのである。客先常駐ひとりアサインというのは客先常駐ひとりアサインであるがゆえに、会社がこんだけ抜いてるぞというのが隠しようがないわけ。客先に請求書持っていくのも自分なんだから単価も分かるし、振り込まれてる給料も分かる(明細見れば社保の会社負担分とかも分かる)。俺が所属先に投げてるバックオフィス業務は、この抜かれてる金額に見合っているか?

ところが。ところがなのである。やめるぞと宣言して常駐が解除になり、所属先に残りのしばらく通っていると、いろいろなことが見えてくるのだ。たとえば所属先の同僚と何気なく会話する。たとえばバックオフィスの人達と(やめるから)書類のやりとりをする。たとえば所属先の営業が電話をかけている。そういうごく些細なことの積み重ねがあるのだ。会社は、中抜きするだけの謎の組織ではなかった。もっとディティールがある。そこを無視して、というか、そこが不可視化されて、金のやりとりだけ見えてしまうから、不要という話に傾いてしまったんだと気づいた。まあ言った以上はそのままやめたし次も良かったから後悔もないけど、不幸な、というか、回避策は何かあったんではないか。

@shyouhei
shyouhei / gist:63d91a7934f31ef08e08ef4f23d0a30b
Created August 29, 2020 14:26
フルタイムでオープンソース・ソフトウェアを開発すると開発者にはどういう変化が訪れるか(個人の感想レベル)

フルタイムでオープンソース・ソフトウェアを開発すると開発者にはどういう変化が訪れるか(個人の感想レベル)

高給に耐えるという謎の感覚が涵養される

特に何もやってあげてないのに他人(法人だけどさ)から何百万何千万のお金が何年もとめどなく注ぎ込まれてきたら、怖くないですか?

オープンソース・ソフトウェアの開発者だけで給料をもらうというのは、まさにこの現象が発生してくるわけ。それまでもこれからも、ずっとオープンソース・ソフトウェアの開発者はやってきたし、やっていくわけでしょう。そんなの会社があってもなくても、別にやることなんて変わらないじゃない。じゃあなんで、ある時から急にかなりの金額が振り込まれてきてしまうんだ?しかもあからさまに物価上昇を上回る結構なハイペースで昇給していく。やっていることは一切何も変わってないのに!

この状況に適応するまでにはいささかの時間を要しました。根が小心者なので。

diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 5e1cfccf3c..db97ec62a6 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -2076,6 +2076,14 @@ vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct r
const int param_size = iseq->body->param.size;
const int local_size = iseq->body->local_table_size;
const int opt_pc = vm_callee_setup_arg(ec, calling, cd, def_iseq_ptr(cc->me->def), cfp->sp - calling->argc, param_size, local_size);
+ const int __line__ = rb_vm_get_sourceline(cfp);
+ if (__line__ > 0) {
#ifndef MJIT_PCH
#define MJIT_PCH
#include "/tmp/_ruby_mjit_hp30916u0.h"
#endif
/* glob@<internal:dir>:135 */
VALUE
_mjit2(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
{
VALUE stack[4];
@shyouhei
shyouhei / git-strata.rb
Last active December 8, 2019 07:35
This is git-strata, an extended version of git-blame. It takes a path and generates git-blame like output. The difference is, it also shows you how much edits the line experienced.
#! /your/favourite/path/to/ruby
# -*- coding: utf-8 -*-
# Copyright (c) 2013 Urabe, Shyouhei
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
@shyouhei
shyouhei / gist:0b7dab3e75bfbf96f895
Created March 31, 2015 15:26
新社会人の人が留意すべき事項

新社会人に必須である:

  • 勤務先との書面による「労働契約」。業務委託契約等NG。
  • 多寡を問わず毎月払われる給料。遅配等論外である。
  • 健康保険。
  • 労災保険。
  • 雇用保険。
  • 三六協定。
  • 年次有休。
  • 育児休業の制度があり取得者がいる会社に勤務する。
From 98be06eba1e2f09bbfba9c63ec5f79581ad7a5fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?=
<shyouhei@ruby-lang.org>
Date: Wed, 23 Oct 2019 17:10:10 +0900
Subject: [PATCH] optimize CLASS_OF
---
include/ruby/ruby.h | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)