hos
https://gyazo.com/f65f70cc25cd7465f3a1ac37d098ff57
はじめに
「みっつ」ともうします
千葉県香取市出身
1977年生まれ
埼玉県さいたま市在住
理念
世の中のワクワク量を増やす
お仕事
IT業界の会社員、いわゆるSE、ITエンジニア
元々は、組み込みエンジニア(携帯電話、カーナビ、カーオーディオ、テレビ、Androidスマホ)
現在は、データxマーケティングの領域で、データの収集/分析/可視化環境の構築やデータ分析のコンサルティング
組み込み 9年
スマホアプリ、他 3年
(スクラムマスターも経験あり)
Web 1年
データ分析・可視化 4年
スキルセット、経験
最初に触った言語はBasic(中学生の頃)、その後はC言語(高校生) ソフトウェア開発技術者
基本情報技術者
C / C++ / Java / Prolog / Ruby / Python
HTML / Rails
Apache / Nginx / MySQL / PostgreSQL / Docker
AWS / Redshift / GCP / Firebase / Google Analytics / TreasureData
Emacs / vi / サクラエディタ / VSCode
趣味
バレーボールを19歳から初めて、今は東京都内の社会人チームで活動 ゴルフは2012年くらいから初めた(年間20ラウンドはしたい) 現在取り組んでいるテーマ
ITのスキルを伝える事
自己紹介はここまで。
/icons/---.icon
code:style.css
a#Templates.tool-btn:hover { text-decoration: none }
a#Templates.tool-btn::before { position: absolute; left: calc(46px/3 - 1px); content: '\f067'; font: 21px/46px 'FontAwesome' }
a#Templates.tool-btn img { opacity: 0 }
code:script.js
addTemplateItemsToPageMenu()
function addTemplateItemsToPageMenu() {
// テンプレートメニューの定義ここから ---------- 下の解説を見てね!! ----------
const __templates = [
{ title: '📄 日次振り返り', template: '/api/code/wkwknote/テンプレート/日次テンプレートsimple.js' }
]
// テンプレートメニューの定義ここまで ----------
const __templMenuTitle = 'Templates'
scrapbox.PageMenu.addMenu({ title: __templMenuTitle, image: 'dummy.png', onClick: () => { } })
__templates.forEach((i) => {
scrapbox.PageMenu(__templMenuTitle).addItem({
title: i.title,
onClick: () => { __loadTemplate(i.template) }})
})
var __loadTemplate = function (templateUrl) {
if (scrapbox.Page.lines && scrapbox.Page.lines.length == 1) {
// タイトル行をクリックしたことにする
const line = document.getElementById('L' + scrapbox.Page.lines0.id) const lastChar = $(line).find('spanclass^="c-"').last().get(0) __mimicClick(line.id, line.offsetWidth, lastChar.offsetTop + 10)
// テンプレートを読み込む
$('#text-input').load(templateUrl, function (response, status, xhr) {
if (status == "success") {
try {
// 読み込んだテンプレートをテキストエリアにセットしまして
const textarea = document.getElementById('text-input')
textarea.value = /\.js$/.test(templateUrl) ? eval(response) : response
// テキストエリアのinputイベントを出しまして
const event = document.createEvent('Event')
event.initEvent('input', true, true)
textarea.dispatchEvent(event)
// 選択状態を解除したいのでもう1回クリックしとく
__mimicClick(line.id, line.offsetWidth, lastChar.offsetTop + 10)
} catch (ex) {
console.log("だめでした>< \n" + ex)
}
} else {
console.log("だめでした>< \n" + status)
}
})
}
}
const __mimicClick = (targetId, left, top) => {
const genEvent = type => {
const event = document.createEvent("MouseEvents")
event.initMouseEvent(type, true, true, window, 1, 0, 0,
left, top, false, false, false, false, 0, null)
return event
}
const elm = document.getElementById(targetId)
elm.dispatchEvent(genEvent("mousedown"))
elm.dispatchEvent(genEvent("mouseup"))
elm.dispatchEvent(genEvent("click"))
}
}
スマホでぐぐっと画面を押すとカーソルが動くやつ
code:script.js
p=0;
document.ontouchstart= function(e){
if(e.touches.length==2) document.querySelector(' atitle="Delete" ').click(); }
document.ontouchmove= function(e){
if(x-p>4){pressKey(39);p=x;}
if(p-x>4){pressKey(37);p=x;}
}
function pressKey( code ){
k = document.createEvent("Event");
k.initEvent( "keydown" ,true,true);
k.keyCode = code;
document.getElementById( "text-input" ).dispatchEvent(k);
}