最近、ITベンダーが書いたドキュメントの「その他」の章に、書き手の伝えたい気持ちが強い情報が書かれている可能性が高いことに気づいた。
「この情報はどの章にも入らないけど、これは絶対伝えておきたいからその他の章を立項するか」という感じ。
AIにコード書かせてる間にコーヒー淹れるみたいな、豊かな労働環境になってきた。
AIにコード書かせて、AIにレビューさせて、AIに修正させてる。
俺いらん。
リアルな体感として、MacBookで動くLLMだと、今年前半はプログラミングを10%やってくれてる感じだった。今は少なくとも30%はやってくれてる。
LLMが書くプログラムが十分に使い物になるならば、金さえ積めば仮想的な開発者10,000人を瞬時に召喚することさえできるようになる。
サービスの顧客全員に、専属の仮想的な開発者をはりつせるようなことだって可能になる。
全顧客に同じソフトウェアを使わせるようなみみっちいことをせずとも、全ての利用者がそれぞれにテーラードされたソフトウェアを使うことが可能になる。利用者が要望を出した5分後には、カスタマイズが完了している。ということができるかもしれない。
「AIで楽になったわーい」とか言って安穏としてると、マジで淘汰されるので、AIを使ってより良く、より速く開発できるようにしたい。
労働者は技術で楽にはなれん。速くなるだけで。「どれだけ練習しても、走るのは楽にならない。ただ、速くなるだけだ。」というわけだ。
機能追加に対して、先リファクタリングと後リファクタリングがあり、先リファクタリングは先にサクっとマージしとくと、他のチームメンバーが恩恵を受けられてお得っぽい。機能追加に失敗してお蔵入りになった時にもリファクタリングだけは生きる。
低頻度利用の開発環境, 検証環境でコストをおさえられそう。ありがてぇ。
でも、うちの環境だと、普通にインスタンスタイプでいっちゃん安いやつ使う方が、安くつく可能性ありそう。
そのへんは利用環境ごとに検証だわね。
タブレットスタンドがまた増えてしまった。
いくつめだこれ。
タブレットスタンドを5個は買った気がする。
最終的に、モニターアームにタブレット用の板をとりつける形になってる。うごかせるぜ。
私「コードレビューしてもらってる間にプルリクを作ってコードレビュー依頼すると、相手を無限コードレビュー編にできるんですよ」
同僚氏「やれるもんならやってみな」
私「出来らあっ!」
私「えっ、コードレビューよりも速くコーディングを?」
Next.jsのstandalone buildをbunとかdenoで1ファイルに固めて、NodeすらないDocker Imageにのせて、Lambdaで動かすやつやりてぇ。
ユーザーからの問い合わせが来てからAIを追加学習させて回答を生成するというアイデア
JavaScript to WebAssembly compiler written in Rust
ここ一年で一番肩軽いかも。動かしてたら良くなってきた。
ねころびながら、30分ぐらい腕をグルグルとまわしていた。
ストレッチをやるよりも、動かすほうが効くように思える。
山川さんからもらったキーボード、ロープロファイルに軽い押下圧が組み合わさって、レースマシンみたいな打鍵体験だ……。
使いこなせばe-typingで最高スコアがだせそう。
でも現状では、いままで使ってたキーボードでごまかされてたミスタイプが全て表面化してくる。
--- config: sankey: showValues: false --- sankey-beta Agricultural 'waste',Bio-conversion,124.729 Bio-conversion,Liquid,0.597 Bio-conversion,Losses,26.862 Bio-conversion,Solid,280.322 Bio-conversion,Gas,81.144 Biofuel imports,Liquid,35 Biomass imports,Solid,35 Coal imports,Coal,11.606 Coal reserves,Coal,63.965 Coal,Solid,75.571 District heating,Industry,10.639 District heating,Heating and cooling - commercial,22.505 District heating,Heating and cooling - homes,46.184 Electricity grid,Over generation / exports,104.453 Electricity grid,Heating and cooling - homes,113.726 Electricity grid,H2 conversion,27.14 Electricity grid,Industry,342.165 Electricity grid,Road transport,37.797 Electricity grid,Agriculture,4.412 Electricity grid,Heating and cooling - commercial,40.858 Electricity grid,Losses,56.691 Electricity grid,Rail transport,7.863 Electricity grid,Lighting & appliances - commercial,90.008 Electricity grid,Lighting & appliances - homes,93.494 Gas imports,Ngas,40.719 Gas reserves,Ngas,82.233 Gas,Heating and cooling - commercial,0.129 Gas,Losses,1.401 Gas,Thermal generation,151.891 Gas,Agriculture,2.096 Gas,Industry,48.58 Geothermal,Electricity grid,7.013 H2 conversion,H2,20.897 H2 conversion,Losses,6.242 H2,Road transport,20.897 Hydro,Electricity grid,6.995 Liquid,Industry,121.066 Liquid,International shipping,128.69 Liquid,Road transport,135.835 Liquid,Domestic aviation,14.458 Liquid,International aviation,206.267 Liquid,Agriculture,3.64 Liquid,National navigation,33.218 Liquid,Rail transport,4.413 Marine algae,Bio-conversion,4.375 Ngas,Gas,122.952 Nuclear,Thermal generation,839.978 Oil imports,Oil,504.287 Oil reserves,Oil,107.703 Oil,Liquid,611.99 Other waste,Solid,56.587 Other waste,Bio-conversion,77.81 Pumped heat,Heating and cooling - homes,193.026 Pumped heat,Heating and cooling - commercial,70.672 Solar PV,Electricity grid,59.901 Solar Thermal,Heating and cooling - homes,19.263 Solar,Solar Thermal,19.263 Solar,Solar PV,59.901 Solid,Agriculture,0.882 Solid,Thermal generation,400.12 Solid,Industry,46.477 Thermal generation,Electricity grid,525.531 Thermal generation,Losses,787.129 Thermal generation,District heating,79.329 Tidal,Electricity grid,9.452 UK land based bioenergy,Bio-conversion,182.01 Wave,Electricity grid,19.013 Wind,Electricity grid,289.366
あーお、まじでかんべんしてくれ。
やろうと思ってたやつの関連資料が見つかった。実現可能性がでてきた。死ぬ。
「あとはお前が手を動かすだけだが?」みたいな状態。死ぬ。
TLで愚痴る
→リアクションがつく
→リアクションをつけてきた人のTwitterのTLをさかのぼる
→最近悩んでいたこと(上で愚痴ったこととは別件)についての、一つの見解をみつける
なんだこれ。なぜか欲しい情報が謎の角度でやってくる。
Disjoint Sparse Table は静的な半群列の区間和を高速に計算できるデータ構造
俺は、この、作りかけだけどもっと良い実装を思いついたコードをすてる!!
うわ、“良い実装”で動いた、きっしょ
最近コードが動くと、きしょいと感じる。
俺は、この、“良い実装”と思われたコードをすてる!!
無理みが深い!!
動いたと思われたのは誤りであった。
TypeScriptのInterfaceでstaticを設定できるようになったら本気出す。
半導体は集積度が2年で2倍になる。指数関数的に増加する。人間の頭や社会は指数関数的増加に適応できていない。
農耕が出てきたときも、「農耕は速すぎる。人間は農耕に適応できていない。」とか言ってたのかな。
技術進歩が先で、人間や社会の適応が後なので、適応することはいつまでもないとも言えそう。
グエーしながらグオーしていくしかない。
テスト用のメールむずい。
サインアップまわりのテストを自動化したいけど、メールがフローにはさまってて、そこをいい感じにできなくてつんでる。
ポートフォワーディングか何かでSMTP用のポート露出して、メールサーバーをローカルでたてて、とか考えたけど、構成要素おおすぎて、めんどくさくてむりぽよになった。
工数の見積りはな、見積りはな、新人がやった場合にかかる時間で見積れと教わった。
教えてくれた人が以前工数見積りをやったときに、「「おめーがどれだけの時間でできるとか聞いてねぇんだよ」って言われた(教わった)」って言ってた気がする。
テレカン中に宅配が来てチャイムと「荷物が届いてます」の音声が流れたけど、コールセンターグレードのヘッドセットのおかげで相手方には聞こえなかったみたいで、使ってて良かったとなった。
「DXを導入」は初めて見た。違和感すごい。
『福岡県大牟田市、イノシシ駆除にDXを導入[ニュース] | デジタル行政』
https://www.digital-gyosei.com/post/2024-10-21-news-omuta-dx-boar-culling/
違和感
「ギガが減る」とかも一般に言われるようになったし、「DXを導入」も一般に受け入れられて広まる可能性があるかも知れない。
JavaScriptランタイムのBun、試しても処理がはやくならなかったし、Zigのバージョンコードが0.13.0でActively Developing感あるしで、まだ様子見したい気持ちが強い。
仕様をまとめたドキュメントをAIが全部かいてくれればいいのにと思いながら書いてない。
スタティックな「ドキュメント」が不要になるかも。
「ソースコード読め」から「AIに聞け」へ変遷する。
iPhoneのタッチ決済をよくわからずに使ってる。よくわからない。
ロック解除しないと決済できないのはセキュアに感じる。カードだとロックとかなくてむきだしのノーパンって気分。
const isJapanPoint = name => {
const regJapaneseplace = /[\p{sc=Hiragana}\p{sc=Han}]/u;
return regJapaneseplace.test(name);
}
from: 『最安経路検索』
「あたかも人間が SaaS を利用しているかのようにアクセスを行い障害を検知する」方法
git pull -r origin main
便利。
git checkout main && git pull && git checkout feature-branch && git rebase
とかやってた私。
早く作業を終わらせると新しい作業が割りふられるの、会社の利益になるので搾取されてる感があるっちゃあるけど、知識や技術がえられる(こともある)ので、デメリットのみというわけでもない。かも。長時間労働でそれをやらされるのはかなわんけども。
一方で、SIerでずっと不稼動の人は肩身がせまいし、将来が大変そうだった。
データプラン | データSMSプラン | 音声プラン | |
---|---|---|---|
2GB | 660円 | 770円 | 1,485円 |
4GB | 825円 | 935円 | 1,650円 |
8GB | 1,155円 | 1,265円 | 1,980円 |
16GB | 1,595円 | 1,705円 | 2,420円 |
すごギガ(毎日1.4GBまで) ※2 | 2,530円 | 2,695円 | 3,960円 |
Ollamaとcontinueつかって、ローカルのマシンで動くCodeGPTPlus/deepseek-coder-1.3b-typescriptにコード書かせてたら、こんなん失職やんとなった
M2 MacBookで動く程度の小規模なLLMが、使い物になってるってのが怖い。
まだ完全に置き換えられるレベルじゃないけど、あっという間に賢くなると思う。
指数関数的に増加するものがどれだけの速度で変化するかを我々は知識として知っている。
手順
Mozilla信徒としての良心に従ってご利用ください
{
"formatter": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"complexity": {
"noStaticOnlyClass": "off"
}
}
},
"files": {
"ignore": [
"**/node_modules/**",
"**/amplify/**",
"**/ui-components/**",
"**/models/**",
"**/graphql/**",
]
}
}
余裕がないと食事の質が犠牲になるな。
あと、キッチンのシンクが、腐った沼に近づいていく。
キッチンのシンクが終わるから自炊しなくなる。
ゴミが出るから中食しなくなる。
自然と牛丼チェーンに吸い込まれる。
明治神宮のフードコートの醤油ラーメンがなんか脳にこびりついて離れない。食べたい。
特徴のない醤油ラーメンだったと思うんだけど、なんか良い印象が残り続けてる。
治安の悪い群体
ネット上の炎上の予測って、台風の予測みたいな雰囲気あるかも
ネットを漂う粒子となりて
熱と圧力の伝播が台風を形づくり、怒りと情報の伝播が炎上を形づくっている
DuckDB supports the dot syntax for function chaining. This allows the function call fn(arg1, arg2, arg3, ...) to be rewritten as arg1.fn(arg2, arg3, ...). For example, take the following use of the replace function:
SELECT replace(goose_name, 'goose', 'duck') AS duck_name
FROM unnest(['African goose', 'Faroese goose', 'Hungarian goose', 'Pomeranian goose']) breed(goose_name);This can be rewritten as follows:
SELECT goose_name.replace('goose', 'duck') AS duck_name
FROM unnest(['African goose', 'Faroese goose', 'Hungarian goose', 'Pomeranian goose']) breed(goose_name);
Uniform Function Call Syntaxだ!!
一週間前に書いてたコードの内容を忘れた。見ても脳が拒否反応を起こしているのを感じる。
「sherpa-onnx-node」で音声認識をしようとして諦めた痕跡がある。
おらってやったら、なんか音声認識ができるようになったっぽい。なんやねん。
WITH hira_to_kata as MATERIALIZED (
SELECT hira, kata
FROM (
SELECT 'あ' as hira, 'ア' as kata
UNION SELECT 'い' as hira, 'イ' as kata
UNION SELECT 'う' as hira, 'ウ' as kata
UNION SELECT 'え' as hira, 'エ' as kata
UNION SELECT 'お' as hira, 'オ' as kata
UNION SELECT 'か' as hira, 'カ' as kata
UNION SELECT 'き' as hira, 'キ' as kata
UNION SELECT 'く' as hira, 'ク' as kata
UNION SELECT 'け' as hira, 'ケ' as kata
UNION SELECT 'こ' as hira, 'コ' as kata
UNION SELECT 'さ' as hira, 'サ' as kata
UNION SELECT 'し' as hira, 'シ' as kata
UNION SELECT 'す' as hira, 'ス' as kata
UNION SELECT 'せ' as hira, 'セ' as kata
UNION SELECT 'そ' as hira, 'ソ' as kata
UNION SELECT 'た' as hira, 'タ' as kata
UNION SELECT 'ち' as hira, 'チ' as kata
UNION SELECT 'つ' as hira, 'ツ' as kata
UNION SELECT 'て' as hira, 'テ' as kata
UNION SELECT 'と' as hira, 'ト' as kata
UNION SELECT 'な' as hira, 'ナ' as kata
UNION SELECT 'に' as hira, 'ニ' as kata
UNION SELECT 'ぬ' as hira, 'ヌ' as kata
UNION SELECT 'ね' as hira, 'ネ' as kata
UNION SELECT 'の' as hira, 'ノ' as kata
UNION SELECT 'は' as hira, 'ハ' as kata
UNION SELECT 'ひ' as hira, 'ヒ' as kata
UNION SELECT 'ふ' as hira, 'フ' as kata
UNION SELECT 'へ' as hira, 'ヘ' as kata
UNION SELECT 'ほ' as hira, 'ホ' as kata
UNION SELECT 'ま' as hira, 'マ' as kata
UNION SELECT 'み' as hira, 'ミ' as kata
UNION SELECT 'む' as hira, 'ム' as kata
UNION SELECT 'め' as hira, 'メ' as kata
UNION SELECT 'も' as hira, 'モ' as kata
UNION SELECT 'や' as hira, 'ヤ' as kata
UNION SELECT 'ゆ' as hira, 'ユ' as kata
UNION SELECT 'よ' as hira, 'ヨ' as kata
UNION SELECT 'ら' as hira, 'ラ' as kata
UNION SELECT 'り' as hira, 'リ' as kata
UNION SELECT 'る' as hira, 'ル' as kata
UNION SELECT 'れ' as hira, 'レ' as kata
UNION SELECT 'ろ' as hira, 'ロ' as kata
UNION SELECT 'わ' as hira, 'ワ' as kata
UNION SELECT 'を' as hira, 'ヲ' as kata
UNION SELECT 'ん' as hira, 'ン' as kata
UNION SELECT 'ー' as hira, 'ー' as kata
UNION SELECT 'が' as hira, 'ガ' as kata
UNION SELECT 'ぎ' as hira, 'ギ' as kata
UNION SELECT 'ぐ' as hira, 'グ' as kata
UNION SELECT 'げ' as hira, 'ゲ' as kata
UNION SELECT 'ご' as hira, 'ゴ' as kata
UNION SELECT 'ざ' as hira, 'ザ' as kata
UNION SELECT 'じ' as hira, 'ジ' as kata
UNION SELECT 'ず' as hira, 'ズ' as kata
UNION SELECT 'ぜ' as hira, 'ゼ' as kata
UNION SELECT 'ぞ' as hira, 'ゾ' as kata
UNION SELECT 'だ' as hira, 'ダ' as kata
UNION SELECT 'ぢ' as hira, 'ヂ' as kata
UNION SELECT 'づ' as hira, 'ヅ' as kata
UNION SELECT 'で' as hira, 'デ' as kata
UNION SELECT 'ど' as hira, 'ド' as kata
UNION SELECT 'ば' as hira, 'バ' as kata
UNION SELECT 'び' as hira, 'ビ' as kata
UNION SELECT 'ぶ' as hira, 'ブ' as kata
UNION SELECT 'べ' as hira, 'ベ' as kata
UNION SELECT 'ぼ' as hira, 'ボ' as kata
UNION SELECT 'ぱ' as hira, 'パ' as kata
UNION SELECT 'ぴ' as hira, 'ピ' as kata
UNION SELECT 'ぷ' as hira, 'プ' as kata
UNION SELECT 'ぺ' as hira, 'ペ' as kata
UNION SELECT 'ぽ' as hira, 'ポ' as kata
)
),
使い方はこうでござる。
いや、まあ、うん、普通にプログラム書けってかんじだ。
WITH RECURSIVE kata as (
SELECT
'' as kata,
0 as index
UNION
SELECT
CONCAT(kata.kata, hira_to_kata.kata) as kata,
kata.index + 1 as index
FROM given, kata, hira_to_kata
WHERE true
AND given.text[kata.index + 1] = hira_to_kata.hira
)
SELECT kata
FROM kata, given
WHERE true
AND kata.index = LENGTH(given.text)
こいつを実行するとな、
WITH RECURSIVE
given AS NOT MATERIALIZED (
SELECT ? as text
),
token AS MATERIALIZED (
SELECT
LENGTH(given.text) AS tail,
0 as head,
RIGHT(LEFT(given.text, tail-head), tail) AS chunk,
FROM
given
UNION
SELECT
token.tail - 1 AS tail,
0 as head,
RIGHT(LEFT(token.chunk, tail-head), tail) AS chunk,
FROM
token
WHERE
tail > 0
)
SELECT * FROM token;
こうなるんじゃ
[
{
tail: 4n,
head: 0,
chunk: "test",
}, {
tail: 3n,
head: 0,
chunk: "test",
}, {
tail: 2n,
head: 0,
chunk: "tes",
}, {
tail: 1n,
head: 0,
chunk: "te",
}, {
tail: 0n,
head: 0,
chunk: "t",
}
]
素直にプログラミング言語でfor文をまわす方が簡単じゃな。
SKKサーバーに文節機能つけたろwwwww
SQLで分かち書きしたろwwwww
WITH RECURSIVE hoge AS MATERIALIZED
濫用部になってる。
「SQLで分かち書きしようとする人、全員バカです」になってる。大変すぎる。
2024-09-28 22:37
SKKサーバーを建てたい
2024/9/29 0:56:13
疎通までいけた!!
https://misskey.io/notes/9ypwew1qzm9l06u3
2024/9/29 2:47:31
SKKサーバーと通信して漢字かな変換まで行けた!
「ごままよ」が「ゴママヨ」に変換できる!
https://misskey.io/notes/9yq0e0t37u8w09x9
次に転職するときには、4.5時間でSKKサーバーを作れるってスキルセットに書くか。
import { db_get } from "@/db";
import { decode, encode } from "./euc_jp";
Bun.listen({
hostname: "localhost",
port: 1178,
socket: {
async data(socket, data) {
console.log(`${data} from ${socket.remoteAddress}`);
if (data.toString() === "2") {
socket.write("test/1 ");
return;
}
if (data.toString()[0] === "1") {
console.time();
console.log([...data]);
const points = [
...(function* () {
for (let i = 1; i < data.length - 1; i += 2) {
yield (data[i] << 8) | data[i + 1];
}
})(),
];
console.log(points);
const kana = decode(points);
console.log(kana);
const body_string = (await henkan(kana)).join("/");
console.log({ body_string });
const sample = encode(`1/${body_string}/\n`);
console.log({ sample });
socket.write(sample);
console.timeEnd();
}
}, // message received from client
open(socket) {
console.log("open");
}, // socket opened
close(socket) {}, // socket closed
drain(socket) {}, // socket ready for more data
error(socket, error) {}, // error handler
},
});
async function henkan(kana: string) {
const uri = "t_w-rinkaku.duckdb";
console.log("get db");
const db = await db_get(uri);
if (!db) {
throw "no db";
}
console.log("query");
const result = await db.all(
`
WITH kana_posts as (SELECT * FROM Post WHERE title LIKE ? ORDER BY LENGTH(title) ASC LIMIT 100)
SELECT Post.title
FROM Post, kana_posts, PostRelation
WHERE
(PostRelation.fg = kana_posts.kno)
AND PostRelation.bg = Post.kno
AND Post.title != ''
AND Post.title != 'あれ'
AND length(kana_posts.title) >= length(Post.title)
ORDER BY LENGTH(Post.title) ASC
LIMIT 1000;
`,
`${kana}%`,
);
console.log(result);
return result.map((post) => post.title);
}
console.log("Listening port is 1178");
Next.jsって意外と検索ボリュームが少ないな。
https://trends.google.co.jp/trends/explore?date=all&q=Next.js,Angular,React,Vue&hl=ja
npm trendsでの結果の方が私の肌感覚と一致する
https://npmtrends.com/@angular/[email protected]/qwik-city-vs-astro-vs-next-vs-react-vs-remix-vs-svelte-vs-vite-vs-vue
duckdb --json -c "SELECT CONCAT(column0, ' /', GROUP_CONCAT(column1, '/'), '/') as jisho FROM './import.csv' WHERE LENGTH(column0)+2 > LENGTH(column1) GROUP BY column0;" | jq -r ".[].jisho" > SKK-JISYO.delite
今日の脳が吐き出した妄言
つまり全ては問い合わせだったんだよ!!!
脳みそに情報を入れるとトコロテンのように情報が出ていってしまう。
先週に完遂したタスクをチームメンバーと二人して忘れてて、MTG中に笑った。完了になったチケットが見つかるまで存在すら忘れ去られていた。
記憶力が皆無の人間だけでプロジェクトが回ってる。逆にすごいと思う。
期待はしつつも「エナジーハーベスティング」と聞くとなんかちょっと不安になる。
ちょいちょい「WiFiの電波で発電する電池交換不要のIoTデバイス」みたいなのを聞くけど、なかなか私の手の届く領域まで降りてこないので。
よくよく見ると太陽電池って書いてある。取り付けたら光が当たらないから、発電ができなくない?
機械学習とDuckDBが相性が良い説がある。
HuggingFaceにあるデータセットのURLを指定するだけでSQLでデータ取得できる。
例:
SELECT * FROM 'https://huggingface.co/datasets/izumi-lab/wikipedia-ja-20230720/resolve/main/data/train-00000-of-00008-ff339eae82f3a35d.parquet?download=true' LIMIT 10;
WhisperをTransformers.jsやonnxruntime-webで動かそうとしたらハゲた。
architecture-beta group api(logos:aws-lambda)[API] service db(logos:aws-aurora)[Database] in api service disk1(logos:aws-glacier)[Storage] in api service disk2(logos:aws-s3)[Storage] in api service server(logos:aws-ec2)[Server] in api db:L -- R:server disk1:T -- B:server disk2:T -- B:db
architecture-beta
group api(logos:aws-lambda)[API]
service db(logos:aws-aurora)[Database] in api
service disk1(logos:aws-glacier)[Storage] in api
service disk2(logos:aws-s3)[Storage] in api
service server(logos:aws-ec2)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
architecture-beta group api(cloud)[API] service db(database)[Database] in api service disk1(disk)[Storage] in api service disk2(disk)[Storage] in api service server(server)[Server] in api db:L -- R:server disk1:T -- B:server disk2:T -- B:db
architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
メールアドレスのハッシュ化に乱数のSALTを用いると、O(N)の走査が必要でメールアドレスをキーとして扱えないと思ったが、O(N)のNがユーザー数でその頻度がログインやサインアップ程度ならば、O(N)が許容される気がしてきた。
いっときドラッグ&ドロップでの引き入れの成功率が高くなっていた(あれ)が、もとに戻った。成功率が高くなったと感じたのは気のせいだった可能性もある。
しかし、下記の手順で成功率が高められることが発見された。
逆に、輪符にマウスオーバーしてからすぐにドラッグ&ドロップを開始すると、失敗することが多い。気がする。
NICOLA | JIS | ローマ字 | |
総打鍵数 | 3735 | 4110 | 6474 |
比率(NICOAL=1) | 1.0 | 1.1 | 1.7 |
出典:『NICOLA配列キーボード日本工業規格(JIS)化要望書 | NICOLA 日本語入力コンソーシアム』
javascript: t25348709 = [...document.querySelectorAll("table")].map(table=>{return [...table.querySelectorAll("tr")].map(tr=>{return "|" + [...tr.querySelectorAll("th,td")].map(cell=>{if(cell.tagName==="TH") {return "*"+cell.textContent.replaceAll("\n","").trim()+" ";}return cell.textContent.replaceAll("\n","").trim()+" ";}).join("|");}).join("\n");}).join("\n\n");if(navigator.clipboard) {navigator.clipboard.writeText(t25348709).then(()=>{alert("Table is copied");}).catch(error=>{alert("Copy failed: \n\t"+error);});} else {alert(t25348709)}
javascript: navigator.clipboard.writeText( [...document.querySelectorAll("table")].map(table=>{ return [...table.querySelectorAll("tr")].map(tr=>{ return "|" + [...tr.querySelectorAll("th,td")].map(cell=>{ if(cell.tagName==="TH") { return "*"+cell.textContent.replaceAll("\n","").trim()+" "; } return cell.textContent.replaceAll("\n","").trim()+" "; }).join("|"); }).join("\n"); }).join("\n\n") ).then(()=>{ alert("Table is copied"); }).catch(error=>{ alert("Copy failed: \n\t"+error); });
t25348709 = [...document.querySelectorAll("table")].map(table=>{
return [...table.querySelectorAll("tr")].map(tr=>{
return "|" + [...tr.querySelectorAll("th,td")].map(cell=>{
if(cell.tagName==="TH") {
return "*"+cell.textContent.replaceAll("\n","").trim()+" ";
}
return cell.textContent.replaceAll("\n","").trim()+" ";
}).join("|");
}).join("\n");
}).join("\n\n");
if(navigator.clipboard) {
navigator.clipboard.writeText(t25348709).then(()=>{
alert("Table is copied");
}).catch(error=>{
alert("Copy failed: \n\t"+error);
});
} else {
alert(t25348709)
}
1段目負担率 | 2段目負担率 | 3段目負担率 | 4段目負担率 | 異指率(大きいほど良い) | 異手率(大きいほど良い) | ||
NICOLA | データ1 | 10.5% | 51.7% | 34.5% | 3.3% | 91.0% | 56.1% |
NICOLA | データ2 | 12.1% | 51.8% | 34.1% | 2.0% | 91.8% | 57.4% |
JISかな | データ1 | 23.5% | 25.2% | 38.2% | 13.1% | 87.6% | 51.8% |
JISかな | データ2 | 23.3% | 22.9% | 40.2% | 13.6% | 89.0% | 56.1% |
ローマ字 | データ1 | 18.9% | 31.2% | 48.8% | 1.1% | 87.7% | 48.2% |
ローマ字 | データ2 | 17.4% | 29.4% | 52.2% | 1.2% | 86.5% | 46.9% |
出典:『NICOLA配列キーボード日本工業規格(JIS)化要望書 | NICOLA 日本語入力コンソーシアム』
人生たのシンフォニー🎶:kawauso::usapoyo_run_gaming:@everyone
@t_w テンキー要らないんじゃなかったのかよおおお
渡辺戸羽@t_w
@everyone テンキーいらないけどスペースキー分割型でコンパクトサイズ無いんだよおおおおお
人生たのシンフォニー🎶:kawauso::usapoyo_run_gaming:@everyone
@t_w 分割スペースキー、要らないのでは?
渡辺戸羽@t_w
@everyone 要る!!!!強い意志で要る。
人生たのシンフォニー🎶:kawauso::usapoyo_run_gaming:@everyone
@t_w 何に使うの
渡辺戸羽@t_w
@everyone 届いてから考える。
人生たのシンフォニー🎶:kawauso::usapoyo_run_gaming:@everyone
@t_w 結果多分要らないよ
渡辺戸羽@t_w
@everyone 要るのぉ!!
最近、プロジェクトを掛け持ちしてるせいで、記憶力ゼロでやばい。前日起こったことを完全に忘れてしまう。新しい情報が入ってくると、頭の中にあった記憶がところてんのように押し出されて忘れさられる。
DuckDBを業務で便利に使っている。
MSのフォームを集計するのに便利。XLSXからCSVにしてDuckDBで読み込めば、ややこしい集計がSQLでできるぜ!
CSVを複数読み込むことがもちろんできるので、「今回のアンケートで回答がなかった人は、前回のアンケートの回答を現時点の意向とみなす」みたいな集計がバンバンできる。Fooo!
「SQLにビジネスロジックを寄せる」というのを最近知って、良さそうだなと思ってたんだけど、ビジネスロジックの入力がDBから与えられるので、テストがしづらそうでもある。
そこで、「データ永続化用のDBと、ビジネスロジック用のDBを分けると良いのではないか」という考えが浮かんできた。
「ビジネスロジック用のDB」と、「データ永続化用のDB」がいい感じに連携できるのであれば、「データ永続化用のDB」にDynamoDBを使っちゃったとしても、なんか、こう、いい感じに、やれたらいいなって。
赤字生活。
アレヤコレヤで貯金がグイングイン減ってる。
忙しくなると、ストレスから、Amazonでバンバン買っちゃって、クレカ支払がすごいことになる。
9月が激務の予定なので備えねば。
GPUにコードをかかせているので、GPUをアップグレードしてやれば激務を乗り越えられるはずだ!!!つってクソデカ出費してしまいそう。
RTX 4070ほしいよ〜〜。GTX 1070Tiからアップグレードしたいよ〜〜。
でも、RTX 4070のメモリーが12GBなので、GTX 1070Tiの8GBから1.5倍にしかならなくて、ちょっと「なんかちがうくない?」ってなる。
研究室のGPUマシンにOllama突っ込んで、VSCodeつなぐか。むしろ、研究室のGPUマシンにCoderとか入れたら良いのかも。
「かな入力の練習がしたい」と言っていたら、過去に一年間に渡ってかな入力の練習をした有識者から、「かな入力はやめておけ」との助言が来た。
曰く、
とのこと。
コールセンター用のヘッドセットすごい。やばい。マイクのノイズキャンセリングが優秀過ぎて、マイクの角度を変えただけで、自分の声すら入らなくなる。
マイクが最適な位置にある時が左の波形で、マイクをちょっと上にずらしたときが右の波形。左と比べて右は自分の声すらほぼ完璧に除去されている。
マイクのアームの角度を変えるんじゃなくて、ヘッドセットごと角度を変えてるから、アームの角度で制御されているからでは無く、純粋にノイズキャンセリングが強いことがわかる。
近所の道路が結構うるさいんだけど、窓を開けて自分の声を録音しても外の道路の音がしない。良いぞ。
というか今までアレなマイクで通話していてごめんなさいになった。
Amplify Gen2とか出てるけど、なんか爆死しそうな臭いがしてる。CDKを強く使っていく感じになったけど、それCDKでええやんと。
あとCodeCatalystが背後から爆速で迫ってきてるようにみえる。投入されている予算に違いを感じるぜ。
コレを私は今痛感している。PostgreSQLに切り替えてぇ。
Amazonを作るならDynamoDBは便利だと思う。でもAmazonを私は作ってない。
「DynamoDBで安く済ませようぜ!!」
→開発中はスキーマ変更しまくり & スキーマ変更が大変すぎて爆死
↑今ここ
人月商売、現場の人員が2週間も休むとクライアントが「おいいいい!!」ってなってアレ。
でもクライアントと信頼関係があると直接ちょっと小言を言われるだけで済んだりする。
後続工程で作業が詰まってるし、有給を取るチャンスかもしれん。
後続工程と、うちの工程の稼働比が1:1.5なので、我々が「ヴァッ」って作業をすると後続で詰まる。なんらかバランスしたほうが良いだろう。
地下でも位置情報わかるようになりたい。地磁気センサーとかでなんとかならんか。
① 建物や地下の構内に多数のQRコードを張る
② ①のQRコードと位置を対応付ける
③ ①のQRコードをスマホで読み込むと、専用の地図アプリで現在位置が表示される
④ QRコードをスマホで読み込んだ際に、スマホのセンサーから地磁気やらWiFiの電波強度やらを色々取り出してサーバーに送る
⑤ ④で得られたデータと座標の対応関係を作る
⑥ アプリで⑤のデータと現在のデータを使って座標を推定する
これだ!!!!
① 建物や地下の構内の写真を取りまくる
② ①の写真と位置を対応付ける
③ スマホのアプリでカメラを使って現在地を推定する
④ 現在地を推定後、スマホのセンサーから地磁気やらWiFiの電波強度やらを色々取り出してサーバーに送る
⑤ ④で得られたデータと座標の対応関係を作る
⑥ アプリで⑤のデータと現在のデータを使って更に座標を推定する
これだぁ!!!!!!!!!
QRコードを貼らなくても運用できるぞぉ。
薬受け取る時に「マイナンバーカードお持ちですか?」って聞かれて、機械通すのがめんどくさくて「持ってないです」って嘘吐いちゃった。
保険証使えんくなったらマイナンバーのヤツ毎回やると思うと気が狂う。
VRChatについて考えると、「ワールドの土地の面積」というのはあたかもナンセンスに思えるが、しかし、「人気のワールドに掲載できる広告枠」と捉えれば、ソレには価値がある。
ReactとWebRTCを組み合わせるとなぜかすぐに接続が切れてしまっていて、なんで途切れるねーんってなってたんだけども、RTCPeerConnectionをちゃんとuseStateで保持したら途切れなくなった。GCにさらわれてたんだろうか。
「クロスプラットフォームでアプリが開発できる!」みたいなやつ、かつてHaxeを試したときに体験が悪かったので、ちょっと大丈夫かなってなる。
Xamarinもコミュニティがワッショイした後にサポート終了したので、印象が悪い。後継あるっぽいけど。
「Xのスパムっぽいアカウントを、それをフォローしてるアカウントごとまとめてブロックする」スクリプトができた。圧倒的ブロック力を手にした。
1000人ぐらいブロックしたら、XのおすすめTLが浄化されてきた。
「サイドFIRE」とかユーザー名に書いてるユーザーや、怪しげに意識高いことを書いてるユーザーがTLから一掃された。
const user_id = (await (await fetch(account_url)).text()).match(/"user_id":"(\d+)"/)[1]
大阪府民が道案内するときの「この道バァーーって行って、ドンツキをカッって行ったらソコや」ってやつ、合理的だったのかもしれない。
新しい長靴が使えたので今日はもう満足してる。
梅雨に使おうと思って買ったのに使えてなかった。
普通の靴だと雨が降るとしおしおなんだけど、長靴だと無敵なのでめっちゃ気分が良い。
低反発素材でできている。耳糞を吸い取るタイプ。洗うのが面倒かも。
脱着は簡単。潰して入れなくても遮音してくれる。遮音性はそこそこ。
イヤホンのイヤーチップのような素材でできている。耳糞は吸着しないので、メンテナンスが楽そう。
脱着は簡単。
遮音性は低め。
職場で使う場合には、遮音性の低さは、他の人から声をかけられたときに気づきやすいという利点に転換しうる。
耳の穴へのねじ込み具合で遮音性を調整はできない。調整できるかと思って試してみたが、変化を感じなかった。
上司と「台風来てるけどまあイケるっしょ。みんなビビりすぎ」という、正常性バイアスがバキバキに入ったやり取りをした。
明日台風当日の様子をみて、ヤバそうだったら土壇場で有給取ったろ。