kentaro
詳細な自己紹介については、ホームページをご覧ください。
https://gyazo.com/7fcc4977679ca8b189b514f0b3751a5c
名前: 栗林健太郎
肩書: GMOペパボ株式会社 取締役CTO、一般社団法人日本CTO協会 理事
ホームページ: https://kentarokuribayashi.com
行動原則
情報処理安全確保支援士(登録番号:013258)
自己紹介(日本語Ver. 200文字)
GMOペパボ株式会社取締役CTO、ペパボ研究所々長。日本CTO協会理事。情報処理安全確保支援士(登録番号:013258)。東京都立大学法学部政治学科卒業後、奄美市役所勤務を経て、2008年より株式会社はてなでソフトウェアエンジニアとして勤務。2012年よりGMOペパボ株式会社勤務。現在、同社取締役CTO。技術経営および新技術の研究開発・事業創出に取り組む。2020年より北陸先端科学技術大学院大学に在学する社会人学生としても活動。
自己紹介(英語Ver.)
Kentaro Kuribayashi is a board member of GMO Pepabo, Inc., and is in charge of technology and engineering as CTO. He is a Registered Information Security Specialist (RISS) since 2018. He received a Bachelor's Degree in Law from Tokyo Metropolitan University, Japan in 1999. From 2008, he started his actual career as a software engineer. In 2015, he launched Pepabo Research and Development Institute, GMO Pepabo, Inc. and has been the director of the institute. He is interested in wide range of emerging technology, especially, information security, blockchain-based architecture, speech I/O, and so on. He is a member of IPSJ and JSAI.
ユーザスクリプト
行頭に*で見出しを作る - Scrapboxカスタマイズコレクション
code:script.js
// 行頭に*で見出しを作る
(() => {
function updateCurrentLine(makeNewText) {
const result = makeNewText(
document.querySelector(".lines div.line.cursor-line").textContent
);
if (!result) {
return;
}
const { text, pos } = result;
const textInput = document.getElementById("text-input");
const keyEvent = (props) =>
new KeyboardEvent("keydown", {
...props,
bubbles: true,
cancelable: true,
});
[
keyEvent({ ctrlKey: true, keyCode: "E".charCodeAt() }),
keyEvent({ ctrlKey: true, shiftKey: true, keyCode: "A".charCodeAt() }),
keyEvent({ keyCode: 8 /* Backspace */ }),
].forEach((ev) => textInput.dispatchEvent(ev));
textInput.value = text;
textInput.focus();
const inputEvent = new InputEvent("input", {
bubbles: true,
cancelable: true,
});
textInput.dispatchEvent(inputEvent);
textInput.dispatchEvent(
keyEvent({ ctrlKey: true, keyCode: "A".charCodeAt() })
);
if (pos) {
for (let i = 0; i < pos; i++) {
textInput.dispatchEvent(keyEvent({ keyCode: 39 /* Right Arrow */ }));
}
}
}
document.addEventListener("keyup", (ev) => {
if (ev.key === "*") {
updateCurrentLine((text) => {
let m;
if (text.substring(0, 3) === "*[*") {
// "*foo" -> "foo"
return { text: text.replace(/^\*\[/, "[*") };
} else if (text === "*") {
// "*" -> "* "
return { text: "* ", pos: 3 };
} else if ((m = /^\(\*+) \*\$/.exec(text))) {
// "*" -> "*** "
return { text: [${m[1]}* ], pos: m1.length + 3 };
} else if (text0 === "*") {
// "*foo" -> "foo"
return { text: text.replace(/^\*(.+)/, "$1") };
} else {
return null;
}
});
}
});
})();
#member