-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
505 lines (292 loc) · 150 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>うにゃのすみか</title>
<link href="/atom.xml" rel="self"/>
<link href="https://unyacat.net/"/>
<updated>2022-12-30T00:52:33.444Z</updated>
<id>https://unyacat.net/</id>
<author>
<name>うにゃ / unyacat</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>Splatoon3の戦績をstat.inkに自動アップロードするGitHub Actions</title>
<link href="https://unyacat.net/2022/12/29/gh-actions-splatoon-battlelog-uploder/"/>
<id>https://unyacat.net/2022/12/29/gh-actions-splatoon-battlelog-uploder/</id>
<published>2022-12-29T07:41:46.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>Splatoon3の戦績をstat.inkに自動アップロードするGitHub Actions</p><a id="more"></a><p>GitHub Actions上で実行すると環境を持たなくてよいメリットとともに最新のコードでアップロードできるので任天堂側の仕様変更による認証ミスで詰まらずに済むというメリットがあります.(※たぶん)</p><h2 id="やり方"><a href="#やり方" class="headerlink" title="やり方"></a>やり方</h2><p><a href="https://github.com/frozenpandaman/s3s">s3s</a>を用いてstat.inkにデータをアップロードします.</p><h3 id="1-s3sを手元で動かす"><a href="#1-s3sを手元で動かす" class="headerlink" title="1. s3sを手元で動かす"></a>1. s3sを手元で動かす</h3><p>手元で動かしてstat.inkにアップロードできるかどうかを試すとともに認証情報を手に入れます.</p><p><code>git clone https://github.com/frozenpandaman/s3s</code></p><p><code>cd s3s</code></p><p><code>python3 -m pip install -r requirements.txt</code></p><p><code>python3 s3s.py -nsr -r</code></p><p>コマンド実行して,</p><ul><li><p>stat.incの鍵をコピー&ペーストします.</p></li><li><p>生成された Nintendo.com のリンクを開いてこの人にするを右クリックしてリンクをコピーして貼り付けます.</p></li></ul><p>両方入力したら戦績がアップロードされるはずなので待ちます.</p><p>s3sディレクトリにconfig.txtが生成されているはずなので開きます.</p><h3 id="2-ymlに認証情報を書いてコミットする"><a href="#2-ymlに認証情報を書いてコミットする" class="headerlink" title="2. ymlに認証情報を書いてコミットする"></a>2. ymlに認証情報を書いてコミットする</h3><p>適当なリポジトリを作って <code>.github/workflows</code> 以下に <code>適当なファイル名.yml</code> を作って以下のコードをペタリしておきます.</p><p>11行目以下env部をconfig.txtから同じ名前の部分を置換します.(GitHub ActionsのEnvironment secretsに書くべきな気はする) </p><p><a href="https://gist.github.com/unyacat/6a44967b49ac239f32483506f16d8e27">Gist</a></p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">Splatoon3</span> <span class="string">Battlelog</span> <span class="string">Uplorder</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line"> <span class="attr">schedule:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">cron:</span> <span class="string">'0 19 * * *'</span> <span class="comment"># 朝4時</span></span><br><span class="line"> <span class="attr">workflow_dispatch:</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line"> <span class="attr">build:</span></span><br><span class="line"> <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line"> <span class="attr">env:</span> <span class="comment"># 適宜置換する</span></span><br><span class="line"> <span class="attr">API_KEY:</span> <span class="string">"***"</span></span><br><span class="line"> <span class="attr">ACC_LOC:</span> <span class="string">"***"</span></span><br><span class="line"> <span class="attr">GTOKEN:</span> <span class="string">"***"</span></span><br><span class="line"> <span class="attr">BULLETTOKEN:</span> <span class="string">"***"</span></span><br><span class="line"> <span class="attr">SESSION_TOKEN:</span> <span class="string">"***"</span></span><br><span class="line"> <span class="attr">F_GEN:</span> <span class="string">"***"</span></span><br><span class="line"></span><br><span class="line"> <span class="attr">name:</span> <span class="string">Splatoon3</span> <span class="string">Battlelog</span> <span class="string">Uploader</span></span><br><span class="line"> <span class="attr">steps:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Set</span> <span class="string">up</span> <span class="string">Python</span> <span class="number">3.11</span></span><br><span class="line"> <span class="attr">uses:</span> <span class="string">actions/setup-python@v4</span></span><br><span class="line"> <span class="attr">with:</span></span><br><span class="line"> <span class="attr">python-version:</span> <span class="number">3.11</span></span><br><span class="line"></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Checkout</span> <span class="string">frozenpandaman/s3s</span></span><br><span class="line"> <span class="attr">uses:</span> <span class="string">actions/checkout@v3</span></span><br><span class="line"> <span class="attr">with:</span></span><br><span class="line"> <span class="attr">repository:</span> <span class="string">'frozenpandaman/s3s'</span></span><br><span class="line"> <span class="attr">path:</span> <span class="string">s3s</span></span><br><span class="line"></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Generate</span> <span class="string">config.txt</span></span><br><span class="line"> <span class="attr">working-directory:</span> <span class="string">s3s</span></span><br><span class="line"> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">echo</span> <span class="string">'{"api_key": "$<span class="template-variable">{{ env.API_KEY }}</span>", "acc_loc": "$<span class="template-variable">{{ env.ACC_LOC }}</span>", "gtoken": "$<span class="template-variable">{{ env.GTOKEN }}</span>", "bullettoken": "$<span class="template-variable">{{ env.BULLETTOKEN }}</span>", "session_token": "$<span class="template-variable">{{ env.SESSION_TOKEN }}</span>", "f_gen": "$<span class="template-variable">{{ env.F_GEN }}</span>" }'</span> <span class="string">></span> <span class="string">config.txt</span></span><br><span class="line"> <span class="string">cat</span> <span class="string">config.txt</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">s3s</span> <span class="string">requirements</span></span><br><span class="line"> <span class="attr">working-directory:</span> <span class="string">s3s</span></span><br><span class="line"> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">pip</span> <span class="string">install</span> <span class="string">-r</span> <span class="string">requirements.txt</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Run</span> <span class="string">s3s</span></span><br><span class="line"> <span class="attr">working-directory:</span> <span class="string">s3s</span></span><br><span class="line"> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">python3</span> <span class="string">s3s.py</span> <span class="string">-nsr</span> <span class="string">-r</span></span><br><span class="line"> <span class="comment"># python3 s3s.py -osr -r</span></span><br></pre></td></tr></tbody></table></figure><p>コミットすると毎朝4時に自動で戦績がアップロードされます.</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>Splatoon3の戦績をstat.inkに自動アップロードするGitHub Actions</p>
</summary>
<category term="GitHub-Actions" scheme="https://unyacat.net/tags/GitHub-Actions/"/>
</entry>
<entry>
<title>大学生のキャッシュレス環境2022</title>
<link href="https://unyacat.net/2022/12/25/cashless-deck-2022/"/>
<id>https://unyacat.net/2022/12/25/cashless-deck-2022/</id>
<published>2022-12-25T09:00:00.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>2022年末の決済環境メモです.2021年版は<a href="http://unyacat.net/2022/01/09/cashless-deck-2021/">こちら</a></p><a id="more"></a><h2 id="💳2022年末環境"><a href="#💳2022年末環境" class="headerlink" title="💳2022年末環境"></a>💳2022年末環境</h2><h3 id="支払いデッキ1"><a href="#支払いデッキ1" class="headerlink" title="支払いデッキ1"></a>支払いデッキ1</h3><p><strong>JALカードnavi → Revolut (Visa) (→ Suica / 各種コード決済)</strong></p><h4 id="デッキ還元率"><a href="#デッキ還元率" class="headerlink" title="デッキ還元率"></a>デッキ還元率</h4><p>最小2%から最大12-3% (マイルの利用方法による)</p><p>内容はJALカードnaviの1%マイル付与,Revolutはメタルアカウントのため1%還元付与.</p><p>マイルは3000マイルで特典航空券に交換でき,搭乗区間によって実質還元率が変わります.</p><h4 id="デッキの構築理由"><a href="#デッキの構築理由" class="headerlink" title="デッキの構築理由"></a>デッキの構築理由</h4><p>JALカードnaviはやはり学生旅行者必携でしょう.100円で1マイル貯まって,羽田↔伊丹便の特典航空券に交換すれば1マイル3-4円で利用できます.<br>高い区間に適用すれば1マイル最大12-13円くらいで利用できるはずです.</p><p>Revolutは年会費2万のメタルアカウントで利用しています.</p><p>RevolutからSuicaやQR決済に流して利便性を向上させてもよいのですが,メタルカードを使いたくて仕方ないので物理カードで決済しています.</p><h3 id="支払いデッキ2"><a href="#支払いデッキ2" class="headerlink" title="支払いデッキ2"></a>支払いデッキ2</h3><p><strong>JQ CARD エポス</strong></p><h4 id="デッキ還元率-1"><a href="#デッキ還元率-1" class="headerlink" title="デッキ還元率"></a>デッキ還元率</h4><p>0.5%</p><h4 id="デッキの構築理由-1"><a href="#デッキの構築理由-1" class="headerlink" title="デッキの構築理由"></a>デッキの構築理由</h4><p>JQ CARD エポスゴールドカードへのインビテーションをもらうため.</p><h2 id="去年比のデッキの変化"><a href="#去年比のデッキの変化" class="headerlink" title="去年比のデッキの変化"></a>去年比のデッキの変化</h2><h3 id="Revolutメタル"><a href="#Revolutメタル" class="headerlink" title="Revolutメタル"></a>Revolutメタル</h3><p>今年1月20日にRevolutのメタルアカウントが日本でサービス開始されました.公開後即入会し,人生初の金属カードを入手しました.信用がなくてもお金を払えば金属カードを手に入れられる点は良いですね.</p><p>店で出すと高級感があっていいですねってたまに言われます.(ちょっと恥ずかしい.過去2回言われました.)</p><h3 id="TOYOTA-Walletの還元消滅-デッキから削除"><a href="#TOYOTA-Walletの還元消滅-デッキから削除" class="headerlink" title="TOYOTA Walletの還元消滅 + デッキから削除"></a>TOYOTA Walletの還元消滅 + デッキから削除</h3><p>常時2%還元だったTOYOTA Walletですが,2022年3月31日で還元が終了してしまいました.<a href="https://toyota-wallet.com/news/payment/2022082001/">ソース</a></p><p>これに伴いTOYOTA Walletを利用する理由がなくなったために支払いデッキからは消しました.</p><h3 id="JQ-CARDエポスの導入"><a href="#JQ-CARDエポスの導入" class="headerlink" title="JQ CARDエポスの導入"></a>JQ CARDエポスの導入</h3><p>2022年9月にカードを育てる楽しみを感じてみようとJQ CARDエポスを作成しました.年間50万円決済のペースで6ヵ月くらいすれば招待状が届くようなので楽しみに待っています.</p><h2 id="2023年に向けての期待"><a href="#2023年に向けての期待" class="headerlink" title="2023年に向けての期待"></a>2023年に向けての期待</h2><h3 id="JQ-CARDエポスゴールドへのインビテーション"><a href="#JQ-CARDエポスゴールドへのインビテーション" class="headerlink" title="JQ CARDエポスゴールドへのインビテーション"></a>JQ CARDエポスゴールドへのインビテーション</h3><p>ほしいです.現状2-3ヵ月で25万くらい決済しています.</p><h3 id="Revolutメタルのサービス拡張"><a href="#Revolutメタルのサービス拡張" class="headerlink" title="Revolutメタルのサービス拡張"></a>Revolutメタルのサービス拡張</h3><p>Revolutのメタルアカウントは年会費2万円もするのに得られる特典が”メタルカードホルダーになれる”,”1%の還元を得られる”程度しかない状況です.</p><p>正直払う価値がないと思っているので年間払いの契約が終わったらそのまま解約しようと思っています.</p><p>ラウンジキーを条件なく使えるようにするとか,クーポンをもっと拡大するなどしていただけると良いですね.</p><p>2023年の環境変化も楽しみです.来年末にこの記事を見て懐かしみたいです.</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>2022年末の決済環境メモです.2021年版は<a href="http://unyacat.net/2022/01/09/cashless-deck-2021/">こちら</a></p>
</summary>
<category term="キャッシュレス" scheme="https://unyacat.net/tags/%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%AC%E3%82%B9/"/>
<category term="クレジットカード" scheme="https://unyacat.net/tags/%E3%82%AF%E3%83%AC%E3%82%B8%E3%83%83%E3%83%88%E3%82%AB%E3%83%BC%E3%83%89/"/>
</entry>
<entry>
<title>不快感を提供するだけだったのでブログに貼っていた広告を全部剥がした</title>
<link href="https://unyacat.net/2022/10/16/remove-ads/"/>
<id>https://unyacat.net/2022/10/16/remove-ads/</id>
<published>2022-10-16T10:40:38.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>タイトルの通りです.</p><a id="more"></a><h2 id="広告を貼り付けた理由"><a href="#広告を貼り付けた理由" class="headerlink" title="広告を貼り付けた理由"></a>広告を貼り付けた理由</h2><p>どれくらいの収益がどのくらいのアクセス数で手に入るのか気になった.</p><h2 id="広告を剥がした理由"><a href="#広告を剥がした理由" class="headerlink" title="広告を剥がした理由"></a>広告を剥がした理由</h2><p>広告は人を不快にする割に収益状況が悪すぎたから.</p><h3 id="あまりに少ない収益状況"><a href="#あまりに少ない収益状況" class="headerlink" title="あまりに少ない収益状況"></a>あまりに少ない収益状況</h3><p>最寄りのコンビニがファミリーマートではない人がTポイントを貯めるくらいのペースでした.</p><p>加えて,1クリックされるとうまい棒からチョコボールくらいの収益がごく稀に追加されていました.</p><p>ブログ開始からのトータルではAmazon Prime Studentの年会費くらいの収益がありました.</p><p>でも8000円以上じゃないと出金できないので実質収益は一切得ていないことになります.</p><h2 id="わかったこと"><a href="#わかったこと" class="headerlink" title="わかったこと"></a>わかったこと</h2><ul><li><p>ブログで収益を上げたいなら,専用のブログを立ててブログタイトルもクリックを誘導したり多量の広告を貼ったりなど戦略的にやるべき.</p></li><li><p>あとからドメイン構造の方針転換をすることは難しいためGoogle Adsenseの導入は慎重に考えたほうがいい.Google Adsenseはドメインルートでないと申請を受け付けていないので必然的にブログがドメインルートに存在することになるが構造を変えるとなるとある程度のリダイレクト処理が必要になり結果として広告を剥がした後もドメインルートをブログ以外にすることは難しい.<br>他の広告サービスはよくわかりません.</p></li></ul><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>タイトルの通りです.</p>
</summary>
</entry>
<entry>
<title>PostGISにshpファイルをインポートする</title>
<link href="https://unyacat.net/2022/08/04/postgis-import/"/>
<id>https://unyacat.net/2022/08/04/postgis-import/</id>
<published>2022-08-04T14:02:00.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>GISデータをLinux(Docker上)のPostGISにインポートする方法.<br>手元のWindows機でshpファイルをSQLに変換した後,Linux機にアップロードしてインポートするときの流れ.</p><a id="more"></a><h2 id="流れ"><a href="#流れ" class="headerlink" title="流れ"></a>流れ</h2><p>今回は国土交通省のGISデータをインポートする.</p><h3 id="shp2pgsqlをダウンロード"><a href="#shp2pgsqlをダウンロード" class="headerlink" title="shp2pgsqlをダウンロード"></a>shp2pgsqlをダウンロード</h3><p>shp2pgsqlはshpファイルをSQLファイルに変換するやつ.<br>PostgreSQLのバージョンにあった番号が振られてるやつ以下から落としてきたら良さそう<br><a href="https://download.osgeo.org/postgis/windows/">https://download.osgeo.org/postgis/windows/</a></p><p>展開した後,コマンドプロンプトを開き,中の<code>bin</code>ディレクトリに移動する.</p><h3 id="shpをSQLに変換"><a href="#shpをSQLに変換" class="headerlink" title="shpをSQLに変換"></a>shpをSQLに変換</h3><p><code>.\shp2pgsql -W cp932 -D -I -s 4612 .\{shp_filename}.shp {table_name} > {hogehoge}.sql</code></p><p><code>-W</code>:文字コードの指定<br><code>-D</code>:ダンプ形式で出力(インポート効率がいい)<br><code>-I</code>:空間インデックスの作成<br><code>-s</code>:座標系指定 </p><p>参考: <a href="https://qiita.com/miyatomo1122/items/0cb67455c294943ae649#%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%97%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%8F%96%E3%82%8A%E8%BE%BC%E3%81%BF">https://qiita.com/miyatomo1122/items/0cb67455c294943ae649#%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%97%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%8F%96%E3%82%8A%E8%BE%BC%E3%81%BF</a></p><h3 id="データベースの作成"><a href="#データベースの作成" class="headerlink" title="データベースの作成"></a>データベースの作成</h3><p>今回はpostgis/postgis:14-3.2イメージで試した.<br>(コンテナの中に入る)<br><code>$ docker exec -it {container_name} sh</code></p><p>PostgreSQLに接続<br><code>$ psql -U postgres</code> </p><p>データベース作成<br><code>postgres=# CREATE DATABASE {database_name}</code></p><p>データベース選択<br><code>postgres=# \c n0221;</code></p><p>PostGIS有効化<br><code>postgres=# CREATE EXTENSION postgis;</code></p><h3 id="インポート"><a href="#インポート" class="headerlink" title="インポート"></a>インポート</h3><p><code># psql -U postgres n0221 < /N02-21_GML/N02-21_RailroadSection.sql</code></p><p>終わり.インポートできたことを確認する.</p><h2 id="詰まりどころ"><a href="#詰まりどころ" class="headerlink" title="詰まりどころ"></a>詰まりどころ</h2><h3 id="PowerShellの文字コードのデフォルトがUTF-16LE"><a href="#PowerShellの文字コードのデフォルトがUTF-16LE" class="headerlink" title="PowerShellの文字コードのデフォルトがUTF-16LE"></a>PowerShellの文字コードのデフォルトがUTF-16LE</h3><p><code>> chcp 65001</code>でUTF-8になる</p><h3 id="PowerShellでリダイレクトすると文字化けする"><a href="#PowerShellでリダイレクトすると文字化けする" class="headerlink" title="PowerShellでリダイレクトすると文字化けする"></a>PowerShellでリダイレクトすると文字化けする</h3><p>コマンド実行結果をファイルにリダイレクトしたときのデフォルトの文字コードはUTF-16に設定されている.(ドウシテ)<br>UTF-8にする設定もあるようで試してみたけどうまくいかず.<br>PowerShellをやめてコマンドプロンプトで実行したら解決.</p><h3 id="PostGISの有効化忘れ"><a href="#PostGISの有効化忘れ" class="headerlink" title="PostGISの有効化忘れ"></a>PostGISの有効化忘れ</h3><p>有効化忘れ時インポートエラー文</p><figure class="highlight plain"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ERROR: function addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) does not exist</span><br><span class="line">LINE 1: SELECT AddGeometryColumn('','stations','geom','4612','MULTIL...</span><br></pre></td></tr></tbody></table></figure><p>PostGISを有効化する.<br>解決方法: コンテナ内で,<code>psql -U postgres -d n0221 -c "CREATE EXTENSION postgis;"</code></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>GISデータをLinux(Docker上)のPostGISにインポートする方法.<br>手元のWindows機でshpファイルをSQLに変換した後,Linux機にアップロードしてインポートするときの流れ.</p>
</summary>
<category term="PostGIS" scheme="https://unyacat.net/tags/PostGIS/"/>
<category term="PostgreSQL" scheme="https://unyacat.net/tags/PostgreSQL/"/>
<category term="Windows" scheme="https://unyacat.net/tags/Windows/"/>
<category term="Linux" scheme="https://unyacat.net/tags/Linux/"/>
</entry>
<entry>
<title>大学の単位で第一級陸上特殊無線技士と第三級海上特殊無線技士を得た</title>
<link href="https://unyacat.net/2022/05/22/qualify-special-radio-operator-license-by-credit/"/>
<id>https://unyacat.net/2022/05/22/qualify-special-radio-operator-license-by-credit/</id>
<published>2022-05-22T13:39:42.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>大学で指定された単位を取得することで第一級陸上特殊無線技士と第三級海上特殊無線技士資格を手に入れたので,手に入れるまでの流れを書き記しておきます.</p><a id="more"></a><h2 id="指定された単位を取得して卒業する"><a href="#指定された単位を取得して卒業する" class="headerlink" title="指定された単位を取得して卒業する"></a>指定された単位を取得して卒業する</h2><p>卒業後でないと申請できません.</p><h2 id="書類を用意する"><a href="#書類を用意する" class="headerlink" title="書類を用意する"></a>書類を用意する</h2><p><a href="https://www.soumu.go.jp/soutsu/kanto/ru/jyujisha/tetsuduki/tetsuduki01.html">総務省のサイト</a>を見ながら用意します.</p><h3 id="申請書"><a href="#申請書" class="headerlink" title="申請書"></a>申請書</h3><p><a href="https://www.tele.soumu.go.jp/resource/j/operator/03A.pdf">申請書</a><br>2つの資格を同時に申請する場合でもそれぞれ申請書が必要です.<br>収入印紙を郵便局で購入します.1つの資格あたり1750円分が必要ですが,1750円の収入印紙は存在しません.郵便局で買えば1000 + 600 + 100 + 50 の4枚で売ってくれます.<br>コンビニでも売ってくれるようですが,200円単位での在庫のようなので余分に買うことになります.</p><h3 id="成績証明書・卒業証明書"><a href="#成績証明書・卒業証明書" class="headerlink" title="成績証明書・卒業証明書"></a>成績証明書・卒業証明書</h3><p>単位が取得できていると証明できるものを卒業後に取りにいきます.<br>大学によってはコンビニで取得できることもあります.</p><h3 id="住民票の写し"><a href="#住民票の写し" class="headerlink" title="住民票の写し"></a>住民票の写し</h3><p>役所へ取りにいきます.これもコンビニで取得できることもあります.<br>他のもので代用できるとも書いてますが,普通の人はすぐにわからない/持っていない書類ですね.</p><h3 id="返信用封筒"><a href="#返信用封筒" class="headerlink" title="返信用封筒"></a>返信用封筒</h3><p>簡易書留が推奨されているようです.後述しますが,2枚同時に申請する場合でも最低の料金で大丈夫そうです.84 + 320 = 404円分の切手を貼って入れておきます(2022年現在).</p><h2 id="取得までにかかる時間"><a href="#取得までにかかる時間" class="headerlink" title="取得までにかかる時間"></a>取得までにかかる時間</h2><p>4月11日に郵便局窓口にて簡易書留で送付しました.<br>5月22日に簡易書留で返送されてきました.<br>おおむね1ヵ月で発給されるとありますが,ちょっと遅いような気もしますね.ゴールデンウィークを挟んだからでしょうか.</p><h2 id="発給された"><a href="#発給された" class="headerlink" title="発給された"></a>発給された</h2><p>手のひらサイズの紙に書かれた挨拶とともに,<br><img src="/images/qualify-special-radio-operator-license-by-credit/paper.jpg" alt=""><br>プラスチックの免許証が入ってました!<br><img src="/images/qualify-special-radio-operator-license-by-credit/license.jpg" alt=""><br>カードを保護するものは何もなく,直接封筒に入ってました. </p><h2 id="記事書いた経緯"><a href="#記事書いた経緯" class="headerlink" title="記事書いた経緯"></a>記事書いた経緯</h2><ul><li><p>そもそも2つの申請書を同封してよかったのか不安だった<br>結果は何も問題はなかった.</p></li><li><p>返信用封筒に何円貼ればよいかわからなかった<br>カード2枚と紙1枚なのでよほど大量に申請しない限りは最低料金で問題はないようだ.(5枚以上申請するなら怪しそう)</p></li><li><p>1ヵ月を超えて到着した<br>1ヵ月と11日かかって到着することもある. </p></li></ul><p>大学は「取れるよ」と言ってくれても申請の流れまでは教えてくれない. </p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>大学で指定された単位を取得することで第一級陸上特殊無線技士と第三級海上特殊無線技士資格を手に入れたので,手に入れるまでの流れを書き記しておきます.</p>
</summary>
<category term="陸上特殊無線技士" scheme="https://unyacat.net/tags/%E9%99%B8%E4%B8%8A%E7%89%B9%E6%AE%8A%E7%84%A1%E7%B7%9A%E6%8A%80%E5%A3%AB/"/>
<category term="海上特殊無線技士" scheme="https://unyacat.net/tags/%E6%B5%B7%E4%B8%8A%E7%89%B9%E6%AE%8A%E7%84%A1%E7%B7%9A%E6%8A%80%E5%A3%AB/"/>
<category term="大学" scheme="https://unyacat.net/tags/%E5%A4%A7%E5%AD%A6/"/>
</entry>
<entry>
<title>AtCoderのACを監視するGoogleAppsScript(GAS)</title>
<link href="https://unyacat.net/2022/05/07/atcoder-ac-watcher/"/>
<id>https://unyacat.net/2022/05/07/atcoder-ac-watcher/</id>
<published>2022-05-07T02:21:14.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>AtCoderのACを監視してSlackに投稿するだけのGoogleAppsScript(GAS)</p><a id="more"></a><p>Incoming WebHooksのURLを取得して書き換えて利用する.</p><p>ユーザ名は複数指定可能.チャンネル名も指定できる.</p><p>payload部をいい感じにしたらDiscordでも使える.</p><script src="https://gist.github.com/unyacat/e69c7a4105d52819e1080b7f77367170.js"></script><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>AtCoderのACを監視してSlackに投稿するだけのGoogleAppsScript(GAS)</p>
</summary>
<category term="AtCoder" scheme="https://unyacat.net/tags/AtCoder/"/>
<category term="GoogleAppsScript" scheme="https://unyacat.net/tags/GoogleAppsScript/"/>
</entry>
<entry>
<title>Adguard HomeをTailscale上に載せて任意デバイスで広告をブロックする</title>
<link href="https://unyacat.net/2022/03/22/adguardhome-on-tailscale/"/>
<id>https://unyacat.net/2022/03/22/adguardhome-on-tailscale/</id>
<published>2022-03-22T08:15:08.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>Adguard HomeをTailscale上に載せます.Tailscaleを利用することで宅外の回線を利用していてもAdguard Homeを適用することができます.Tailscaleが使えるならあらゆるデバイスで無料で利用できます.</p><a id="more"></a><h2 id="コンテナを立ち上げる"><a href="#コンテナを立ち上げる" class="headerlink" title="コンテナを立ち上げる"></a>コンテナを立ち上げる</h2><p>Exit node指定で立ち上げます.</p><p>docker-compose.yml</p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="string">"2.4"</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line"> <span class="attr">tailscale:</span></span><br><span class="line"> <span class="attr">hostname:</span> <span class="string">centos-hosted-myhome</span> <span class="comment"># This will become the tailscale device name</span></span><br><span class="line"> <span class="attr">image:</span> <span class="string">jonoh/tailscale</span></span><br><span class="line"> <span class="attr">volumes:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">"./tailscale_var_lib:/var/lib"</span> <span class="comment"># State data will be stored in this directory</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">"/dev/net/tun:/dev/net/tun"</span> <span class="comment"># Required for tailscale to work</span></span><br><span class="line"> <span class="attr">cap_add:</span> <span class="comment"># Required for tailscale to work</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">net_admin</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">sys_module</span></span><br><span class="line"> <span class="attr">command:</span> <span class="string">--advertise-exit-node</span> <span class="string">--</span> <span class="string">--verbose</span> <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="attr">adguardhome:</span></span><br><span class="line"> <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br><span class="line"> <span class="attr">volumes:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">'./adguard_data:/opt/adguardhome/work'</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">'./adguard_config:/opt/adguardhome/conf'</span></span><br><span class="line"> <span class="attr">image:</span> <span class="string">adguard/adguardhome</span></span><br><span class="line"> <span class="attr">network_mode:</span> <span class="string">service:tailscale</span></span><br></pre></td></tr></tbody></table></figure><p><code>$ docker-compose up -d</code></p><p>起動して数秒するとログに認証URLが吐き出されます.開いてログインします.</p><p><code>$ docker-compose logs</code></p><figure class="highlight yaml"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">tailscale-tailscale-1</span> <span class="string">|</span></span><br><span class="line"><span class="string">tailscale-tailscale-1</span> <span class="string">|</span> <span class="string">To</span> <span class="string">authenticate,</span> <span class="attr">visit:</span></span><br><span class="line"><span class="string">tailscale-tailscale-1</span> <span class="string">|</span></span><br><span class="line"><span class="string">tailscale-tailscale-1</span> <span class="string">|</span> <span class="string">https://login.tailscale.com/a/XXXXXXXXXXXX</span></span><br><span class="line"><span class="string">tailscale-tailscale-1</span> <span class="string">|</span></span><br><span class="line"><span class="string">tailscale-tailscale-1</span> <span class="string">|</span> <span class="attr">2022/03/22 08:24:37 control: RegisterReq:</span> <span class="string">onode=</span> <span class="string">node=[iFaLD]</span> <span class="string">fup=true</span></span><br></pre></td></tr></tbody></table></figure><p>割り当てられた IP アドレスをコピーして DNS タブの Nameservers に指定します.override local dnsを選択します.</p><p><img src="/images/adguardhome-on-tailscale/Untitled.png" alt="Tailscaleの設定からDNSを上書きをする"></p><p>これにて設定完了です.</p><p>ブラウザで当該IPを開くとAdguard Homeの設定画面が出てくるので好みに合わせてブロック・許可ドメインを設定します.</p><h2 id="LINEの広告をブロックする"><a href="#LINEの広告をブロックする" class="headerlink" title="LINEの広告をブロックする"></a>LINEの広告をブロックする</h2><p><a href="https://twitter.com/cyberflamingo/status/1494960795905830915">先人のツイート</a>を参考にAdguard Homeのカスタム・フィルタリングルールに書き込みます.</p><figure class="highlight plain"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">// LINE Block</span><br><span class="line">// https://twitter.com/cyberflamingo/status/1494960795905830915</span><br><span class="line">||naver.jp^</span><br><span class="line">||line-scdn.net^</span><br><span class="line">||line-apps.com^</span><br><span class="line">||line.me^</span><br><span class="line">@@||d.line-scdn.net^</span><br><span class="line">@@||gw.line.naver.jp^</span><br><span class="line">@@||ln.cdn.akamaized.net^</span><br><span class="line">@@||obs-jp.line-apps.com^</span><br><span class="line">@@||profile.line-scdn.net^</span><br><span class="line">@@||scdn.line-apps.com^</span><br><span class="line">@@||torimochi.line-apps.com^</span><br><span class="line">@@||w.line.me^</span><br></pre></td></tr></tbody></table></figure><p>モバイル回線でもブロックできていることを確認できました.</p><p><img src="/images/adguardhome-on-tailscale/Untitled%201.png" alt="上部の広告枠がブロックされている"></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>Adguard HomeをTailscale上に載せます.Tailscaleを利用することで宅外の回線を利用していてもAdguard Homeを適用することができます.Tailscaleが使えるならあらゆるデバイスで無料で利用できます.</p>
</summary>
<category term="AdguardHome" scheme="https://unyacat.net/tags/AdguardHome/"/>
<category term="Tailscale" scheme="https://unyacat.net/tags/Tailscale/"/>
<category term="広告ブロック" scheme="https://unyacat.net/tags/%E5%BA%83%E5%91%8A%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF/"/>
</entry>
<entry>
<title>プリント基板でNFCタグ名刺を作ってみた</title>
<link href="https://unyacat.net/2022/02/06/pcb-business-card/"/>
<id>https://unyacat.net/2022/02/06/pcb-business-card/</id>
<published>2022-02-05T15:08:42.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>名刺風の基板を設計してみました.</p><p>基板にはイラストを載せ,NFCタグとしての機能を持たせることにしました.</p><p>そして基板製造サービスに依頼し製造してもらいました.</p><a id="more"></a><h2 id="🧭-設計方針"><a href="#🧭-設計方針" class="headerlink" title="🧭 設計方針"></a>🧭 設計方針</h2><ul><li>基板にイラストを載せる</li><li>NFCタグとして機能する</li><li>名刺としての役割を持たせる</li></ul><p>基板設計ソフトにはEagleを使いました.</p><h2 id="💳-基板のサイズ"><a href="#💳-基板のサイズ" class="headerlink" title="💳 基板のサイズ"></a>💳 基板のサイズ</h2><p>交通系IC・クレカ風にしてみたいということで同じ形の 86mm x 54mm としました.また角は3mm丸く削りました.一般的な名刺サイズより少し小さめです.</p><img src="/images/pcb-bussiness-card/Untitled.png" width="40%" style="display: block; margin: auto;"><p>Dimensionレイヤーでサイズを指定しました.</p><h2 id="🎨-基板にイラストを描く"><a href="#🎨-基板にイラストを描く" class="headerlink" title="🎨 基板にイラストを描く"></a>🎨 基板にイラストを描く</h2><h3 id="基板での表現手法"><a href="#基板での表現手法" class="headerlink" title="基板での表現手法"></a>基板での表現手法</h3><p>基板で多色表現をするには</p><ul><li>導線・銅箔を配置する(Top, Bottom)</li><li>シルクを載せる(tPlace, bPlace)</li><li>レジストを載せない(tStop, bStop)</li></ul><p>を組み合わせます.</p><p>例えば,シルクを載せたら白くなり,導線を配置してレジストを載せないようにしたら導線が露出してキラキラします.</p><p>プリント基板での表現が実際にどうなるかは以下のサイトで丁寧に解説されています.</p><div class="bcard-wrapper"><span class="bcard-header withgfav"><div class="bcard-favicon" style="background-image: url(https://www.google.com/s2/favicons?domain=https://e3w2q.github.io/13/)"></div><div class="bcard-site"><a href="https://e3w2q.github.io/13/" rel="nofollow" target="_blank">e3w2q.github.io</a></div><div class="bcard-url"><a href="https://e3w2q.github.io/13/" rel="nofollow" target="_blank">https://e3w2q.github.io/13/</a></div></span><span class="bcard-main"><div class="bcard-title"><a href="https://e3w2q.github.io/13/" rel="nofollow" target="_blank">PCBでの多色表現の解説と2UキーマクロパッドMX2U!を作った話</a></div><div class="bcard-description"></div></span></div><h3 id="イラスト・文字を事前処理する"><a href="#イラスト・文字を事前処理する" class="headerlink" title="イラスト・文字を事前処理する"></a>イラスト・文字を事前処理する</h3><p>各レイヤーに配置したい部分を白黒画像で出力します.</p><p>事前にお好みのペイントソフトで各レイヤーごとに分けておきます.出力時はEagleで読める2ビットBMPにしておきます.</p><p>対応してなければWindows標準のペイントソフトを使えば2ビットBMPに変換できます.</p><p>文字も同様に画像にして用意します.</p><p>今回,イラストは以前にことかす先生に依頼して描いてもらったものを使いました.</p><p><a href="https://skeb.jp/@NNPS_KM_SONYA/works/29">三白眼女の子メーカーあ… by ことかす@料理研究家 | Skeb</a></p><img src="/images/pcb-bussiness-card/Untitled%201.png" width="40%" style="display: block; margin: auto;"><h3 id="基板に載せる"><a href="#基板に載せる" class="headerlink" title="基板に載せる"></a>基板に載せる</h3><p>画像を基板データに変換していきます.</p><p>オレンジ色のULPボタンを押して「import-bmp」,作成したBMPを選択し,黒白にチェック.スケールを選びそのまま「OK」,スクリプト実行画面が出てきたら「Run Script」を押して変換を始めます.</p><p><img src="/images/pcb-bussiness-card/sch.png" alt=""></p><img src="/images/pcb-bussiness-card/Untitled%205.png" width="40%" style="display: block; margin: auto;"><p>「Selection Filter」で欲しいレイヤーのみを指定し全体を選択.「Inspector」タブで全体を選びLayerを欲しいレイヤーに変更します.</p><p><img src="/images/pcb-bussiness-card/Untitled%206.png" alt=""></p><h2 id="🌐-NFCコイルを搭載する"><a href="#🌐-NFCコイルを搭載する" class="headerlink" title="🌐 NFCコイルを搭載する"></a>🌐 NFCコイルを搭載する</h2><h3 id="部品の選定"><a href="#部品の選定" class="headerlink" title="部品の選定"></a>部品の選定</h3><h4 id="NFCチップ"><a href="#NFCチップ" class="headerlink" title="NFCチップ"></a>NFCチップ</h4><p>マルツで調べて1個単位で買える物の中で一番安いやつにしました.</p><p>裏面実装でハンダ難度高いし,容量少ないけど安さは正義です.</p><p><a href="https://www.marutsu.co.jp/pc/i/41560978/">NFC FORUM TYPE 2 TAG IC WITH 1.6 ST25TN01K-AFH5 STマイクロエレクトロニクス製|電子部品・半導体通販のマルツ</a></p><p><a href="https://www.st.com/resource/en/datasheet/st25tn01k.pdf">データシート</a></p><h4 id="LED"><a href="#LED" class="headerlink" title="LED"></a>LED</h4><p>コイルとして機能しているかどうかを見るためにチップLEDも適当に購入しました.</p><p><a href="https://www.marutsu.co.jp/pc/i/1633530/s1=%E7%B7%91%EF%BC%8F10%E5%80%8B/">薄型SMD1608チップLED(緑色、10個入) LTST-C190KGKT*10 Lite-on製|電子部品・半導体通販のマルツ</a></p><ul><li>データシート<ul><li>$I = 20$mA時</li><li>$V_F = 2$V</li></ul></li></ul><h4 id="チップ抵抗"><a href="#チップ抵抗" class="headerlink" title="チップ抵抗"></a>チップ抵抗</h4><p>LEDに流れる電流を調整するために必要な抵抗です.</p><p>入力電圧は<a href="https://www.st.com/resource/ja/application_note/an5276-antenna-design-for-st25r3916-st25r3917-and-st25r3920-devices-stmicroelectronics.pdf">アンテナ設計推奨ルール</a>に基づいて2.8Vとします.</p><p>$$<br>R = \frac{V_{CC} - V_{LED}}{I_{LED}} = \frac{2.8 - 2}{20 \times 10 ^ {-3}} = 40 \Omega<br>$$</p><p>40Ωのチップ抵抗を買いました.</p><p>注文パーツと価格は以下の通りです.</p><p><img src="/images/pcb-bussiness-card/Untitled%207.png" alt=""></p><h3 id="NFCコイルの設計"><a href="#NFCコイルの設計" class="headerlink" title="NFCコイルの設計"></a>NFCコイルの設計</h3><p>Suicaの左側の台形を意識したコイルを搭載しました.</p><img src="/images/pcb-bussiness-card/Untitled%208.png" width="40%" style="display: block; margin: auto;"><p>まずNFCチップの内蔵容量から計算して,コイルの必要なインダクタンスを算出します.</p><p>$$<br>f = \frac{1}{2 \pi\sqrt{LC}}<br>$$</p><p>$$<br>L = \frac{1}{C (2 \pi f) ^ 2 }<br>$$</p><p>$$<br>L = \frac{1}{50 \times 10 ^ {-12} \times (2 \pi \times 15.56 \times 10^6)^2 } = 2.755 \mathrm{\mu H}<br>$$</p><p>雑なシミュレーションの結果(ページ最後参照),台形で5回巻きを線と線の間は0.4mm開けて実装することでうまくいきそうであることがわかりました.</p><h2 id="✨-基板データ完成"><a href="#✨-基板データ完成" class="headerlink" title="✨ 基板データ完成"></a>✨ 基板データ完成</h2><p>コイルの中に銅箔は配置できないので右側にイラストを載せてコイルの内側にシルクで文字を載せました.</p><p>表面デザインで力尽きてしまったので裏面はQRを載せただけにしました.</p><p><img src="/images/pcb-bussiness-card/board_data.png" alt=""></p><h2 id="👨🏭-製造"><a href="#👨🏭-製造" class="headerlink" title="👨🏭 製造"></a>👨🏭 製造</h2><p>製造は<a href="https://jlcpcb.com/">JLCPCB</a>に依頼することにしました.</p><p>他のプリント基板製造サービスに比べてWebサイトのUIが良かったのと,送料は安いけど早いという口コミを見て選びました.</p><p>注文時にTwitterを見ると<a href="https://twitter.com/JLCPCB_Japan/status/1456555665648881664">7ドルオフクーポン</a>が配布されており,お得に製造してもらえました.感謝🙏</p><p>製造過程のGIFも見れて楽しかったです.</p><blockquote class="twitter-tweet"><p lang="ja" dir="ltr">基板をJLCPCBで発注したんだけど各製造過程で行なっていることの動画がついてきて見ててとても楽しい <a href="https://t.co/fDOP2Zen1Z">pic.twitter.com/fDOP2Zen1Z</a></p>— うにゃ🐈 (@unya_2) <a href="https://twitter.com/unya_2/status/1481809951039254528?ref_src=twsrc%5Etfw">January 14, 2022</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><h2 id="✨-基板完成"><a href="#✨-基板完成" class="headerlink" title="✨ 基板完成"></a>✨ 基板完成</h2><p>中国から2週間弱で届きました.</p><p><img src="/images/pcb-bussiness-card/Untitled%209.png" alt=""></p><p>メガネと髪留めは銅箔が露出しているため光を照らすとキラキラします.</p><p><img src="/images/pcb-bussiness-card/Untitled%2010.png" alt=""></p><p>顔の部分にも銅箔を入れているため光にかざすと肌色に見えます.</p><p><img src="/images/pcb-bussiness-card/Untitled%2011.png" alt=""></p><p>LEDと抵抗をつければ光ります.タグICをつければタグになります.LEDとICは両方つけても機能します.</p><p><img src="/images/pcb-bussiness-card/Untitled%2012.png" alt=""></p><p>コイルもイラストも上手く出来てよかったです.完.</p><blockquote class="twitter-tweet"><p lang="ja" dir="ltr">NFCタグ機能付きの名刺基板を作ってみました💳 <a href="https://t.co/QOId6AlyOS">pic.twitter.com/QOId6AlyOS</a></p>— うにゃ🐈 (@unya_2) <a href="https://twitter.com/unya_2/status/1489994499702996994?ref_src=twsrc%5Etfw">February 5, 2022</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><br><br><br><h2 id="おまけ"><a href="#おまけ" class="headerlink" title="おまけ"></a>おまけ</h2><h3 id="雑なコイルシミュレーション"><a href="#雑なコイルシミュレーション" class="headerlink" title="雑なコイルシミュレーション"></a>雑なコイルシミュレーション</h3><p>基板コイルのインダクタンスの計算式を探したところ,<a href="https://www.st.com/resource/en/application_note/an2866-how-to-design-a-1356-mhz-customized-antenna-for-st25-nfc--rfid-tags-stmicroelectronics.pdf">ST公式のPDF</a>に載っていたものの,形状に応じた定数があると判明.</p><p>なんとなく長方形と同じだろうと思いつつも,練習を兼ねてFemtetでシミュレーションをしてみることに.とは言いつつも斜めのモデリングがめんどくさすぎたので1周で断念.</p><p><a href="https://eds.st.com/antenna/#/">ST公式計算サイト</a>の四角の計算結果215.42μHに対して,214.7μHだったので最後余計に隙間開けた分も考慮すればほぼ同じだろうし,角丸くしたりするので精度はそこそこでいいやと判断し,四角のコイルとして計算サイトを使うことにしました.</p><p><img src="/images/pcb-bussiness-card/rect846.png" alt=""></p><p><img src="/images/pcb-bussiness-card/Untitled%2013.png" alt=""></p><p><img src="/images/pcb-bussiness-card/Untitled%2014.png" alt=""></p><p><img src="/images/pcb-bussiness-card/Untitled%2015.png" alt=""></p><p>コイルとしての機能を持ちつつも,Suica風の形を保てそうなパラメータを探し,最も近しそうな以下の値で作ることにしました.</p><p><img src="/images/pcb-bussiness-card/Untitled%2016.png" alt=""></p><h3 id="ソルダレジストの色"><a href="#ソルダレジストの色" class="headerlink" title="ソルダレジストの色"></a>ソルダレジストの色</h3><p>同じデータで同タイミングで注文したのですが,レジスト部が緑と黒で製造結果が異なってしまいました.</p><p>シルクを1milごとにボーダー柄することで半分の白色になるのではないかと考え製造を依頼したものの,緑は全面白指定と変わりなく,黒では疎に線が入ってしまいました.</p><p>基板製造メーカによるかもしれませんが色の濃淡を調節するのは難しそうです.</p><img src="/images/pcb-bussiness-card/Untitled%2017.png" width="40%" style="display: block; margin: auto;"><h3 id="NFCチップの選び方"><a href="#NFCチップの選び方" class="headerlink" title="NFCチップの選び方"></a>NFCチップの選び方</h3><p>基板に実装する際にサイズが小さすぎてコテで出来るが大変むずかしいです.</p><p>それとアドレス帳データが入る容量くらいはあったほうが名刺としては良かったかもです.</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>名刺風の基板を設計してみました.</p>
<p>基板にはイラストを載せ,NFCタグとしての機能を持たせることにしました.</p>
<p>そして基板製造サービスに依頼し製造してもらいました.</p>
</summary>
<category term="名刺" scheme="https://unyacat.net/tags/%E5%90%8D%E5%88%BA/"/>
<category term="基板" scheme="https://unyacat.net/tags/%E5%9F%BA%E6%9D%BF/"/>
<category term="JLCPCB" scheme="https://unyacat.net/tags/JLCPCB/"/>
</entry>
<entry>
<title>はじめての自作キーボード第二章 ~ 細かなカスタマイズ編</title>
<link href="https://unyacat.net/2022/02/02/my-first-self-made-keyboard-2/"/>
<id>https://unyacat.net/2022/02/02/my-first-self-made-keyboard-2/</id>
<published>2022-02-02T12:29:05.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p><a href="https://unyacat.net/2022/01/22/my-first-self-made-keyboard-1/">第一章</a>では自作キーボードに必要なパーツの選定と組み上げを行いました.</p><p>ここでは自作キーボードならではの細かなカスタマイズを行っていきます.</p><a id="more"></a><h2 id="🛠自作キーボードならではのカスタマイズ"><a href="#🛠自作キーボードならではのカスタマイズ" class="headerlink" title="🛠自作キーボードならではのカスタマイズ"></a>🛠自作キーボードならではのカスタマイズ</h2><h3 id="🔄-キーマップの変更"><a href="#🔄-キーマップの変更" class="headerlink" title="🔄 キーマップの変更"></a>🔄 キーマップの変更</h3><p>キーマップを変更できるのも自作キーボードの魅力の1つです.</p><p>キー1つ1つの機能を自由に変更できる他,レイヤー機能を使うことで同時押しで〇〇するなんかもできちゃいます.すごい.</p><p>Bakeneko60だと <a href="https://caniusevia.com/">VIA</a> というソフトウェアを使えば端末側から気軽に変更できます.</p><h4 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h4><p>僕はこのキーボードを組む前はHHKBを利用していたためHHKBライクにキーを配置しました.</p><p>トップレイヤーはバックスペースが右上にあるのが遠すぎるので一段下に配置しました.またレイヤー操作を右下に配置しました.</p><p><img src="/images/my-first-self-made-keyboard-2/Untitled.png" alt=""></p><p>1レイヤーはHHKB同様,右下キーと同時押しで矢印やPauseキーを入力できるようにしました.</p><p><img src="/images/my-first-self-made-keyboard-2/Untitled%201.png" alt=""></p><p>2レイヤーは音楽操作を入れてみました.</p><p><img src="/images/my-first-self-made-keyboard-2/Untitled%202.png" alt=""></p><h4 id="日本語IME変換"><a href="#日本語IME変換" class="headerlink" title="日本語IME変換"></a>日本語IME変換</h4><p>(Macintoshの日本語キーボードのような) Altキーで英数かな変換できるようにしたかったのですが調べた感じ難しそうです.端末側での調整が必要そう.私はalt-ime-ahkを導入しました.</p><p><a href="https://github.com/karakaram/alt-ime-ahk"><img src="https://gh-card.dev/repos/karakaram/alt-ime-ahk.svg" alt="karakaram/alt-ime-ahk - GitHub"></a></p><h3 id="🐾-キーキャップの差し替え"><a href="#🐾-キーキャップの差し替え" class="headerlink" title="🐾 キーキャップの差し替え"></a>🐾 キーキャップの差し替え</h3><p>かわいいキーキャップが売られているのも自作キーボードの魅力です.</p><h4 id="肉球キーキャップ"><a href="#肉球キーキャップ" class="headerlink" title="肉球キーキャップ"></a>肉球キーキャップ</h4><p>遊舎工房で肉球キーキャップを買ってきました🐾 1つで税込1430円です.</p><p>肉球がぷにぷにしてて最高です🐾</p><p><img src="/images/my-first-self-made-keyboard-2/Untitled%203.png" alt=""></p><p><a href="https://shop.yushakobo.jp/products/plastic-pink-white-paw-keycap">Varmilo ZOMO プラスチック版 肉球キーキャップ</a></p><h3 id="🪔-潤滑剤を塗る-ルブ"><a href="#🪔-潤滑剤を塗る-ルブ" class="headerlink" title="🪔 潤滑剤を塗る(ルブ)"></a>🪔 潤滑剤を塗る(ルブ)</h3><p>キースイッチは分解でき,潤滑剤を塗ることでより滑らかな押し心地にすることができます.</p><p>私が買ったキースイッチ(Aqua King)には最初から潤滑剤が塗られており購入は不要のようです.</p><p>ですが,せっかくの初めての自作キーボードということで<a href="https://twitter.com/sigqq">@Sigqq</a> のおすすめにより <a href="https://shop.yushakobo.jp/products/lubricants?variant=37665260994721">205g0</a> を購入し,100円ショップで筆を買ってきて <a href="https://www.youtube.com/watch?v=44Wv4OGdmu4">動画</a>を見ながら全部分解してぬりぬりしました.</p><p>bakeneko60付属のスタビライザーにも潤滑剤を塗りました.</p><p><img src="/images/my-first-self-made-keyboard-2/Untitled%204.png" alt=""></p><h3 id="🗾-デスクマットの導入"><a href="#🗾-デスクマットの導入" class="headerlink" title="🗾 デスクマットの導入"></a>🗾 デスクマットの導入</h3><p>遊舎工房でデスクマットを購入しました.東京の地図が描かれています.</p><p>展示品の処分ということで定価の2割引の2816円でした.</p><p>地図がデスクマットになってるなんてとってもステキ.神戸版があれば是非購入したいです.</p><div class="bcard-wrapper"><span class="bcard-header withgfav"><div class="bcard-favicon" style="background-image: url(https://www.google.com/s2/favicons?domain=https://shop.yushakobo.jp/products/2785)"></div><div class="bcard-site"><a href="https://shop.yushakobo.jp/products/2785" rel="nofollow" target="_blank">遊舎工房</a></div><div class="bcard-url"><a href="https://shop.yushakobo.jp/products/2785" rel="nofollow" target="_blank">https://shop.yushakobo.jp/products/2785</a></div></span><span class="bcard-main withogimg"><div class="bcard-title"><a href="https://shop.yushakobo.jp/products/2785" rel="nofollow" target="_blank">City Map Desk Mats</a></div><div class="bcard-description">美しい地図が印刷された大型サイズのデスクマットです</div><a href="https://shop.yushakobo.jp/products/2785" rel="nofollow" target="_blank"><div class="bcard-img" style="background-image: url(http://cdn.shopify.com/s/files/1/0532/0880/9633/products/fhfdTi7k_3e82525e-c813-441b-a0b4-9d46c4e9f560_1200x1200.jpg?v=1633679117)"></div></a></span></div><h2 id="✨-完成"><a href="#✨-完成" class="headerlink" title="✨ 完成"></a>✨ 完成</h2><p>3Dプリンタで作った猫耳付きヘッドホンと共に写真を撮りました.</p><p>5万円とパソコン用キーボードとは思えない価格ですが,押し心地,触り心地,タイピング音ともにすべてが良すぎており,とても満足です.作ってよかったです.</p><p><img src="/images/my-first-self-made-keyboard-2/IMG_1847_.jpg" alt="IMG_1847_.JPG"></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p><a href="https://unyacat.net/2022/01/22/my-first-self-made-keyboard-1/">第一章</a>では自作キーボードに必要なパーツの選定と組み上げを行いました.</p>
<p>ここでは自作キーボードならではの細かなカスタマイズを行っていきます.</p>
</summary>
<category term="キーボード" scheme="https://unyacat.net/tags/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89/"/>
<category term="自作キーボード" scheme="https://unyacat.net/tags/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89/"/>
</entry>
<entry>
<title>はじめての自作キーボード第一章 ~ 選定・組み上げ編</title>
<link href="https://unyacat.net/2022/01/22/my-first-self-made-keyboard-1/"/>
<id>https://unyacat.net/2022/01/22/my-first-self-made-keyboard-1/</id>
<published>2022-01-22T03:00:00.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>自作キーボード,なぜか惹かれるものがあります.存在は遊舎工房とかマツコの知らない世界などで認知していたのですが,如何せんパーツの価格がどれもこれも高いです.</p><p>そしてある日,めちゃくちゃ素晴らしい音を奏でるキーボードを叩いている <a href="https://twitter.com/hytusx">@Hytusx</a> をみてしまい,是非自分もお金をかけて手に入れてみたいと思ってしまいました.</p><p>そこで自作キーボードの先輩である <a href="https://twitter.com/sigqq">@Sigqq</a> の手を借りながら選定し組み上げることとなりました.</p><p>ここではパーツの選定と組み上げまでを書きます.</p><a id="more"></a><h2 id="買ったもの"><a href="#買ったもの" class="headerlink" title="買ったもの"></a>買ったもの</h2><p>用語が多く,何もわからない状態だったので完全に他人のおすすめに従って選定しました.</p><p>初めて自作パソコンを組み上げる時の感覚と似たようなものを感じます.</p><table><thead><tr><th>パーツ名</th><th>購入サイト</th><th>名前</th><th>金額</th><th>詳細</th></tr></thead><tbody><tr><td>キット</td><td>Cannon Keys</td><td>Bakeneko60</td><td>$129.99</td><td></td></tr><tr><td>スイッチ</td><td>Drop</td><td>Aqua King</td><td>$67</td><td>62g / 90個</td></tr><tr><td>キーキャップ</td><td>Drop</td><td>Pegaso</td><td>$80</td><td>Pegaso Base</td></tr><tr><td>キーキャップ</td><td>Drop</td><td>Carnival</td><td>$39</td><td>割引価格(定価$45)</td></tr><tr><td>(クーポン)</td><td>Drop</td><td></td><td>-$10</td><td></td></tr><tr><td>(送料)</td><td>Drop / CK</td><td></td><td>$101.99</td><td>Drop: 76.99 / CK: 25</td></tr><tr><td>計</td><td></td><td></td><td>$407.98 / 45,490円</td><td></td></tr></tbody></table><h3 id="キット"><a href="#キット" class="headerlink" title="キット"></a>キット</h3><p>配列や打鍵音に影響する大切な部分です.</p><p>「キット」は基板・ケースとか,諸々「キーキャップ」と「キースイッチ」以外のものが入っているものです.</p><p>何もわからないので <a href="https://twitter.com/sigqq">@Sigqq</a> のおすすめに従うままに「Bakeneko60」を購入.</p><p><a href="https://twitter.com/sigqq">@Sigqq</a> 曰く,送料がめちゃくちゃ高いけど送料込みでもお買い得なほど良い商品だから早く買いなさい,とのこと.(実際に購入した2-3日後に売り切れになっていました.)</p><p>Bakenekoという名前ですが特に猫要素はありません🐈</p><div class="bcard-wrapper"><span class="bcard-header withgfav"><div class="bcard-favicon" style="background-image: url(https://www.google.com/s2/favicons?domain=https://cannonkeys.com/products/bakeneko-60)"></div><div class="bcard-site"><a href="https://cannonkeys.com/products/bakeneko-60" rel="nofollow" target="_blank">Cannon Keys</a></div><div class="bcard-url"><a href="https://cannonkeys.com/products/bakeneko-60" rel="nofollow" target="_blank">https://cannonkeys.com/products/bakeneko-60</a></div></span><span class="bcard-main withogimg"><div class="bcard-title"><a href="https://cannonkeys.com/products/bakeneko-60" rel="nofollow" target="_blank">Bakeneko60</a></div><div class="bcard-description">Introducing the CannonKeys Bakeneko60 CannonKeys is proud to offer an affordable in-stock aluminum keyboard with great sound and feel. Originally designed by kkatano, the Bakeneko60 is an open-source keyboard featuring an o-ring gasket. An o-ring between the plate and PCB provides friction to hold the plate/PCB assemb</div><a href="https://cannonkeys.com/products/bakeneko-60" rel="nofollow" target="_blank"><div class="bcard-img" style="background-image: url(http://cdn.shopify.com/s/files/1/0238/7342/1376/products/032_a3d80869-910c-4a81-890a-f470b56af16d_1200x1200.jpg?v=1637186976)"></div></a></span></div><h3 id="スイッチ"><a href="#スイッチ" class="headerlink" title="スイッチ"></a>スイッチ</h3><p>触感に関わる大切な部分です.</p><p>自分が持っているキーボードはRazer Blackwidowの緑軸でクリッキー,HHKBでタクタイルのスイッチでしたので,未体験のリニアスイッチを採用することにしました.</p><p>スイッチは売られている種類も大量なのに見た目で判断できず選ぶことが出来なかったので, <a href="https://twitter.com/viveisdead">@viveisdead</a> がおすすめしていたスイッチを採用しました.</p><div class="bcard-wrapper"><span class="bcard-header withgfav"><div class="bcard-favicon" style="background-image: url(https://www.google.com/s2/favicons?domain=https://drop.com/buy/everglide-aqua-king-mechanical-switches)"></div><div class="bcard-site"><a href="https://drop.com/buy/everglide-aqua-king-mechanical-switches" rel="nofollow" target="_blank">Drop</a></div><div class="bcard-url"><a href="https://drop.com/buy/everglide-aqua-king-mechanical-switches" rel="nofollow" target="_blank">https://drop.com/buy/everglide-aqua-king-mechanical-switches</a></div></span><span class="bcard-main withogimg"><div class="bcard-title"><a href="https://drop.com/buy/everglide-aqua-king-mechanical-switches" rel="nofollow" target="_blank">Everglide Aqua King Mechanical Switches | Mechanical Keyboards | Keyboard Switches | Drop</a></div><div class="bcard-description">Drop exclusive price and reviews: Everglide Aqua King Mechanical Switches | 5K+ Sold | The ocean may be deep, but it's a smooth ride all the way down. Take a...</div><a href="https://drop.com/buy/everglide-aqua-king-mechanical-switches" rel="nofollow" target="_blank"><div class="bcard-img" style="background-image: url(https://massdrop-s3.imgix.net/product-images/everglide-aqua-king-custom-mechanical-switches/FP/8TZWSk95SxKDORQ66ksm_PC.png?auto=format&fm=jpg&fit=crop&w=600&h=315&dpr=1&bg=f0f0f0)"></div></a></span></div><div class="twitter-wrapper"><blockquote class="twitter-tweet"><a href="https://twitter.com/viveisdead/status/1442850459539103750"></a></blockquote></div><script async="" defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><h3 id="キーキャップ"><a href="#キーキャップ" class="headerlink" title="キーキャップ"></a>キーキャップ</h3><p>見た目と入力感に関わる大切な部分です.</p><p>自作キーボードの利点として自由に見た目を変えれることがあります.今回は2セット購入しました.</p><p>まず1つめ.「Mito DCP Pegaso」は <a href="https://twitter.com/hytusx">@Hytusx</a> が実際に使っており実物触ったところ触り心地がよく見た目も可愛かったので同じものを買いました.</p><div class="bcard-wrapper"><span class="bcard-header withgfav"><div class="bcard-favicon" style="background-image: url(https://www.google.com/s2/favicons?domain=https://drop.com/buy/drop-mito-project-mythos-pegaso-custom-keycap-set)"></div><div class="bcard-site"><a href="https://drop.com/buy/drop-mito-project-mythos-pegaso-custom-keycap-set" rel="nofollow" target="_blank">Drop</a></div><div class="bcard-url"><a href="https://drop.com/buy/drop-mito-project-mythos-pegaso-custom-keycap-set" rel="nofollow" target="_blank">https://drop.com/buy/drop-mito-project-mythos-pegaso-custom-keycap-set</a></div></span><span class="bcard-main withogimg"><div class="bcard-title"><a href="https://drop.com/buy/drop-mito-project-mythos-pegaso-custom-keycap-set" rel="nofollow" target="_blank">Drop + MiTo DCP Pegaso Custom Keycap Set | Mechanical Keyboards | Keycaps | Custom Keycaps</a></div><div class="bcard-description">Drop exclusive product, price and reviews: Drop + MiTo DCP Pegaso Custom Keycap Set | 4K+ Sold | Whether you know Pegasus from Greek mythology, the...</div><a href="https://drop.com/buy/drop-mito-project-mythos-pegaso-custom-keycap-set" rel="nofollow" target="_blank"><div class="bcard-img" style="background-image: url(https://massdrop-s3.imgix.net/product-images/drop-mito-project-mythos-pegaso-custom-keycap-set/FP/akn3He2pRuva33zay750_pc.png?auto=format&fm=jpg&fit=crop&w=600&h=315&dpr=1&bg=f0f0f0)"></div></a></span></div><p>2つめ.「Carnival」は夢見りあむ感のある配色が刺さりました.セールで安く売られていたのとどうせ送料がかかるならと思い切って購入しました.</p><p>届いたら思っていたより主張の激しい色をしていたのでもしかしたらクローゼットで永遠眠ってるかも.でもキーキャップ気軽に変えれるのは自作キーボードのメリットだからいいよね.</p><div class="bcard-wrapper"><span class="bcard-header withgfav"><div class="bcard-favicon" style="background-image: url(https://www.google.com/s2/favicons?domain=https://drop.com/buy/artifact-bloom-series-keycap-set-carnival)"></div><div class="bcard-site"><a href="https://drop.com/buy/artifact-bloom-series-keycap-set-carnival" rel="nofollow" target="_blank">Drop</a></div><div class="bcard-url"><a href="https://drop.com/buy/artifact-bloom-series-keycap-set-carnival" rel="nofollow" target="_blank">https://drop.com/buy/artifact-bloom-series-keycap-set-carnival</a></div></span><span class="bcard-main withogimg"><div class="bcard-title"><a href="https://drop.com/buy/artifact-bloom-series-keycap-set-carnival" rel="nofollow" target="_blank">Artifact Bloom Series Keycap Set: Carnival | Mechanical Keyboards | Keycaps | PBT Keycaps | Drop</a></div><div class="bcard-description">Drop exclusive price and reviews: Artifact Bloom Series Keycap Set: Carnival | 550+ Sold | Sweet treats, wild rides, and plush prizes to sparenothing beats...</div><a href="https://drop.com/buy/artifact-bloom-series-keycap-set-carnival" rel="nofollow" target="_blank"><div class="bcard-img" style="background-image: url(https://massdrop-s3.imgix.net/product-images/artifact-bloom-series-keycap-set-neon/FP/TN3png3uRtupQwuaF3I0_PC.png?auto=format&fm=jpg&fit=crop&w=600&h=315&dpr=1&bg=f0f0f0)"></div></a></span></div><h2 id="組む"><a href="#組む" class="headerlink" title="組む"></a>組む</h2><h3 id="開封"><a href="#開封" class="headerlink" title="開封"></a>開封</h3><p>まずは,Bakeneko60を開けます.</p><p>出てきたのはキーボードのパーツではなく,楽器でも入ってそうなケース.これは想定外過ぎてびっくりしました.さすが高いだけありますね・・・</p><p><img src="/images/my-first-self-made-keyboard-1/keyboard_box.png" alt=""></p><p>基板は質感がマットの黒色で,高級感があります.</p><p><img src="/images/my-first-self-made-keyboard-1/board.png" alt=""></p><p>スイッチも開封します.梱包はこれで十分なんだよなぁなどと思ったり.</p><p><img src="/images/my-first-self-made-keyboard-1/switch.png" alt=""></p><h3 id="組み上げ"><a href="#組み上げ" class="headerlink" title="組み上げ"></a>組み上げ</h3><p>組み立て方法は公式のWebページがわかりやすいです.ページが丁寧でこれだけ見てれば出来ました.<a href="https://docs.cannonkeys.com/bakeneko/">Bakeneko Build Guide</a></p><p>USBコネクタ,スタビライザをつけて,スイッチを刺すべき場所に差し込んでいきます.入っていく感触があるのでやりやすいです.</p><p><img src="/images/my-first-self-made-keyboard-1/board-on-switch.png" alt=""></p><p>全部差し込みました.壮観です.</p><p><img src="/images/my-first-self-made-keyboard-1/board-on-switches.png" alt=""></p><p>Pegasoをつけてとりあえず完成です.</p><p>触り心地も音とも完璧でほんとうに良いです・・・✨</p><p><img src="/images/my-first-self-made-keyboard-1/complete.png" alt=""></p><h2 id="まとめ"><a href="#まとめ" class="headerlink" title="まとめ"></a>まとめ</h2><p>キーボードを組むにあたり必要な3つのパーツの選定と組み上げを行いました.</p><p>次の記事ではキーキャップをちょっと付け替えてキーマップを変更していきます.(まだ書いていない)</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>自作キーボード,なぜか惹かれるものがあります.存在は遊舎工房とかマツコの知らない世界などで認知していたのですが,如何せんパーツの価格がどれもこれも高いです.</p>
<p>そしてある日,めちゃくちゃ素晴らしい音を奏でるキーボードを叩いている <a href="https://twitter.com/hytusx">@Hytusx</a> をみてしまい,是非自分もお金をかけて手に入れてみたいと思ってしまいました.</p>
<p>そこで自作キーボードの先輩である <a href="https://twitter.com/sigqq">@Sigqq</a> の手を借りながら選定し組み上げることとなりました.</p>
<p>ここではパーツの選定と組み上げまでを書きます.</p>
</summary>
<category term="キーボード" scheme="https://unyacat.net/tags/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89/"/>
<category term="自作キーボード" scheme="https://unyacat.net/tags/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89/"/>
</entry>
<entry>
<title>大学生のキャッシュレス環境2021</title>
<link href="https://unyacat.net/2022/01/09/cashless-deck-2021/"/>
<id>https://unyacat.net/2022/01/09/cashless-deck-2021/</id>
<published>2022-01-08T16:07:39.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>2021年末の決済環境をメモしておきます.</p><a id="more"></a><p>大学生してます.</p><h2 id="💳2021年末環境"><a href="#💳2021年末環境" class="headerlink" title="💳2021年末環境"></a>💳2021年末環境</h2><h3 id="構成"><a href="#構成" class="headerlink" title="構成"></a>構成</h3><ol><li><p>JALカードnavi → TOYOTA Wallet(iD) (→ Suica)</p></li><li><p>JALカードnavi → Revolut (Visa) (→ 各種コード決済)</p></li></ol><h3 id="還元率"><a href="#還元率" class="headerlink" title="還元率"></a>還元率</h3><p>最小 2 %~最大 12-3 % (マイルの利用方法による)</p><p>JALカードnaviは 1 % のマイル付与</p><p>TOYOTA Walletは 1 % のキャッシュバック</p><p>Suica,Revolutは還元なし.</p><h3 id="コメント"><a href="#コメント" class="headerlink" title="コメント"></a>コメント</h3><p>JALカードnaviはやはりお得です.1マイル2円相当の価値があるので実質2%還元くらいあります.2021年は伊丹花巻便を前日価格36000円のところ3000マイルで取れたので超満足です.</p><p>また出口はSuicaの決済速度・利便性を取り,かつシンプルな構成に落ち着かせました.</p><p>また,Revolutの使い捨てのカード番号が便利すぎて日本の小さな通販から,Aliexpressの1円商品,アメリカから自作キーボードのパーツ,ロシアからAndroidのROMを買ったりなど多様な決済をすることが出来ました.</p><h2 id="環境変化"><a href="#環境変化" class="headerlink" title="環境変化"></a>環境変化</h2><h3 id="JRE-CARDの解約"><a href="#JRE-CARDの解約" class="headerlink" title="JRE CARDの解約"></a>JRE CARDの解約</h3><p>JRE CARDは券面こそかっこよかったもののWeb明細ポイント付与が2021年3月でなくなってしまい,関西在住の自分からすると年会費を回収できる術がなかったため解約しました.</p><h3 id="脱Kyash"><a href="#脱Kyash" class="headerlink" title="脱Kyash"></a>脱Kyash</h3><p>最初は2%還元でリリースされたKyashは今やカード入金では0.2%還元.</p><p>脱Kyashの決め手となったのはJALカードがKyashへの入金をマイル付与対象外としたことです.</p><p>でも気まぐれで300円が付与されるようなので解約せずおいておきます.</p><h3 id="Revolutへの統一"><a href="#Revolutへの統一" class="headerlink" title="Revolutへの統一"></a>Revolutへの統一</h3><p>Revolutが3Dセキュアに対応したことで各種コード決済サービスに登録できるようになりました.現状PayPay,楽天ペイ,d払いに設定しています.</p><h3 id="TOYOTA-Wallet-の導入"><a href="#TOYOTA-Wallet-の導入" class="headerlink" title="TOYOTA Wallet の導入"></a>TOYOTA Wallet の導入</h3><p>以前から登録はしていたのですが,還元が美味しいという話を聞き7月頃から構成に組み込みました.</p><p>導入当初は1.5%還元だったのですが,2021年10月末で1%還元になってしまいました.それでも美味しいのでまだ使い続けています.</p><h2 id="2022年に向けての期待"><a href="#2022年に向けての期待" class="headerlink" title="2022年に向けての期待"></a>2022年に向けての期待</h2><h3 id="Revolutメタルカード"><a href="#Revolutメタルカード" class="headerlink" title="Revolutメタルカード"></a>Revolutメタルカード</h3><p>2021年末までにリリースが予定されていましたが年末になってもリリースされずでした.<a href="https://www.watch.impress.co.jp/docs/news/1296994.html">ソース</a></p><p>金属カードは所有欲が満たされそうなのでぜひとも欲しいところです.</p><p>AppleCardでも良いです.</p><h3 id="三井住友カード"><a href="#三井住友カード" class="headerlink" title="三井住友カード"></a>三井住友カード</h3><p>通常の三井住友カードがLINE Payにチャージ&ペイで利用できるようになったり,SBI証券と提携して投資信託等でポイントが付与されるようになったり,南海電鉄と組んでキャンペーン実施などといろいろ仕掛けてくれました.<br>2022年も期待しておきます.</p><p>2022年の環境変化も楽しみです.年末にこの記事を見て懐かしみたいと思います.</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>2021年末の決済環境をメモしておきます.</p>
</summary>
<category term="キャッシュレス" scheme="https://unyacat.net/tags/%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%AC%E3%82%B9/"/>
<category term="クレジットカード" scheme="https://unyacat.net/tags/%E3%82%AF%E3%83%AC%E3%82%B8%E3%83%83%E3%83%88%E3%82%AB%E3%83%BC%E3%83%89/"/>
</entry>
<entry>
<title>SpotifyAPIで見る水瀬いのり楽曲</title>
<link href="https://unyacat.net/2021/12/12/inoriminase-with-spotify-api-2021/"/>
<id>https://unyacat.net/2021/12/12/inoriminase-with-spotify-api-2021/</id>
<published>2021-12-12T06:00:00.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>Spotifyには楽曲の特徴量を取得できるAPIがあります.</p><p>BPMやキーなど一意に決まりそうな特徴量もありますが,ダンスのしやすさやポジティブさなど曖昧な数値も取得することが出来ます.</p><div class="bcard-wrapper"><span class="bcard-header"><div class="bcard-site"><a href="https://developer.spotify.com/documentation/web-api/reference/" rel="nofollow" target="_blank"></a></div><div class="bcard-url"><a href="https://developer.spotify.com/documentation/web-api/reference/" rel="nofollow" target="_blank">https://developer.spotify.com/documentation/web-api/reference/</a></div></span><span class="bcard-main"><div class="bcard-title"><a href="https://developer.spotify.com/documentation/web-api/reference/" rel="nofollow" target="_blank">Web API Reference | Spotify for Developers</a></div><div class="bcard-description">Music, meet code. Powerful APIs, SDKs and widgets for simple and advanced applications.</div></span></div><p>これを用いて水瀬いのりさんの楽曲を覗いてみました.</p><p>今回は,danceability(ダンスのしやすさ),energy(活力さ),acousticness(アコースティックさ),liveness(ライブ音源っぽさ),valence(ポジティブさ)に注目してみます.</p><a id="more"></a><h2 id="🎵取得範囲"><a href="#🎵取得範囲" class="headerlink" title="🎵取得範囲"></a>🎵取得範囲</h2><p>水瀬いのりさんがライブツアーで歌う楽曲とします.</p><p>具体的には,2021年末までにリリースされた「夢のつぼみ」以降のシングル・アルバム + 「まっすぐに、トウメイに。」です.</p><p>アルバムとシングルどちらも入っている曲も値が違ったためどちらとも取得しました.</p><h2 id="👑ランキング"><a href="#👑ランキング" class="headerlink" title="👑ランキング"></a>👑ランキング</h2><p>特徴量と説明,上位・下位,感想の順に書いていきます.</p><h3 id="💃danceability-ダンスのしやすさ"><a href="#💃danceability-ダンスのしやすさ" class="headerlink" title="💃danceability(ダンスのしやすさ)"></a>💃danceability(ダンスのしやすさ)</h3><p>テンポ、リズムの安定性、ビートの強さ、全体的な規則性に基づいてダンスのしやすさを表現しています.高いほどダンスに適しています.</p><ul><li><p>🥇1位: Morning Prism(0.726)</p> <iframe src="https://open.spotify.com/embed/track/1Xn4m8cYJVos2xZortMGUW?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li><li><p>最下位: 僕らは今(0.198)</p> <iframe src="https://open.spotify.com/embed/track/6RSETdPr48E4ICkTfmMG6W?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li></ul><p>朝をテーマとした曲であるMorning Prismが1位でした.常に同じ調子で曲が進行するのでリズムの安定性という面では納得です.</p><p>反対にライブ映えする楽曲である「僕らは今」や「Ready Steady Go!」は下のほうになりました.</p><h3 id="💪energy-活力さ"><a href="#💪energy-活力さ" class="headerlink" title="💪energy(活力さ)"></a>💪energy(活力さ)</h3><p>高いほどエネルギッシュです.デスメタルでは高く,クラシックでは小さくなります.ダイナミックレンジ、知覚されるラウドネス、音色、オンセットレート、一般的なエントロピーなどに基づきます.</p><ul><li><p>🥇1位: 夢のつぼみ(0.992)</p> <iframe src="https://open.spotify.com/embed/track/3kOSLbJuIGEJPukQrsWW6a?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li><li><p>最下位: いつもずっと(0.41)</p> <iframe src="https://open.spotify.com/embed/track/3sgGBPeJljUchFDW3GX4TQ?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li></ul><p>デビューシングルがかなり高い値を取っての1位.元気の良さが楽曲にも現れていることでしょうか.下には「いつもずっと」「あの日の空へ」「BLUE COMPASS」など落ち着くような,少し長めの曲が並びました.</p><h3 id="🎸acousticness-アコースティックさ"><a href="#🎸acousticness-アコースティックさ" class="headerlink" title="🎸acousticness(アコースティックさ)"></a>🎸acousticness(アコースティックさ)</h3><p>高いほど非電気楽器的な楽曲です.</p><ul><li><p>🥇1位: BLUE COMPASS(0.884)</p> <iframe src="https://open.spotify.com/embed/track/5llfQWIaGFlL9OM4C7inAe?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li><li><p>最下位: クリスタライズ(0.000511)</p> <iframe src="https://open.spotify.com/embed/track/1Upx0jgN8fU8DDerhHYyQe?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li></ul><p>数値に大きく差が付きました.energy項で下の方に並んだ楽曲ではこちらでは上位に入っています.「クリスタライズ」は納得の最下位.一つ上の「Catch the Rainbow!」と比べても1桁違い,圧倒的電子音楽ないのり楽曲と言えます.</p><h3 id="🎤liveness-ライブ音源っぽさ"><a href="#🎤liveness-ライブ音源っぽさ" class="headerlink" title="🎤liveness(ライブ音源っぽさ)"></a>🎤liveness(ライブ音源っぽさ)</h3><p>高いほどライブ音源に近い値です.0.8を超えればライブ音源の可能性が高いです.</p><ul><li><p>🥇1位: Dreaming Girls(0.544)</p> <iframe src="https://open.spotify.com/embed/track/4xrUMkfaW1jsfmHo5oao5w?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li><li><p>最下位: Ready Steady Go!(0.0375)</p> <iframe src="https://open.spotify.com/embed/track/4WHBEowThZOHkuBxElmgvs?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li></ul><p>「Dreaming Girls」をライブっぽさという観点で聴いたことはありませんでした.でもこのランク付けなら「Ready Steady Go!」もライブっぽい気がするのですが・・・!?</p><h3 id="🥰valence-ポジティブさ"><a href="#🥰valence-ポジティブさ" class="headerlink" title="🥰valence(ポジティブさ)"></a>🥰valence(ポジティブさ)</h3><p>valence の値が大きいほど,ポジティブ(Happy, Cheeful, euphoric: 楽しい、陽気、多幸的)です.逆に値が低いとネガティブ (sad, depressed, angry: 悲しい、抑圧された、怒り) な楽曲です.</p><ul><li><p>🥇1位: 夏の約束(0.941)</p> <iframe src="https://open.spotify.com/embed/track/2WhsifNwNIyUx9LFuxqLUC?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li><li><p>最下位: 僕らは今(0.149)</p> <iframe src="https://open.spotify.com/embed/track/6RSETdPr48E4ICkTfmMG6W?utm_source=generator" width="100%" height="80" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe></li></ul><p>これも数値に大きな幅が生まれました.<a href="http://rejetweb.jp/hsd3/">女性向けコンテンツ</a>の主題歌としてリリースされていることもあり取得範囲の中では少し特殊な楽曲である「夏の約束」が1位.一番下の「僕らは今」はlivenessさも低いところから見るとSpotifyさんは良さをわかってくれていないようです・・・.(いい曲ですよ!)</p><h2 id="🖥結果生データ"><a href="#🖥結果生データ" class="headerlink" title="🖥結果生データ"></a>🖥結果生データ</h2><div class="bcard-wrapper"><span class="bcard-header"><div class="bcard-site"><a href="https://docs.google.com/spreadsheets/d/1qpGOeD6z1jSpTcGcbhGwAX54eIv-hTfdEJTnNHrrhpM/edit?usp=sharing&usp=embed_facebook" rel="nofollow" target="_blank">Google Docs</a></div><div class="bcard-url"><a href="https://docs.google.com/spreadsheets/d/1qpGOeD6z1jSpTcGcbhGwAX54eIv-hTfdEJTnNHrrhpM/edit?usp=sharing&usp=embed_facebook" rel="nofollow" target="_blank">https://docs.google.com/spreadsheets/d/1qpGOeD6z1jSpTcGcbhGwAX54eIv-hTfdEJTnNHrrhpM/edit?usp=sharing&usp=embed_facebook</a></div></span><span class="bcard-main"><div class="bcard-title"><a href="https://docs.google.com/spreadsheets/d/1qpGOeD6z1jSpTcGcbhGwAX54eIv-hTfdEJTnNHrrhpM/edit?usp=sharing&usp=embed_facebook" rel="nofollow" target="_blank">Spotify APIで見る水瀬いのり楽曲</a></div><div class="bcard-description">result<p>track_name,album_name,album_type,danceability(ダンスのしやすさ・高いほど踊りやすい),energy(活力さ・高いほどエネルギッシュ),key(<a href="https://en.wikipedia.org/wiki/Pitch_class),loudness(dB値・音の大きさ),mode">https://en.wikipedia.org/wiki/Pitch_class),loudness(dB値・音の大きさ),mode</a>(major=1 minor=0),speechiness(言語の多さ),acousticness(アコースティックさ・高いほど非電気楽器的),instrumentalness(インストルメンタルさ・目安0.5以上でインストルメンタルと判断できる),liv…</p></div></span></div><p></p><h2 id="💭感想"><a href="#💭感想" class="headerlink" title="💭感想"></a>💭感想</h2><p>見たことない観点で楽曲を見れる楽しさもありますね.</p><p>BPM推定は「Happy Birthday」が203.961と圧倒的な値を叩き出してくれました.高難易度誕生日会が開けますね・・・.(体感98-102くらいな気がします.序盤(ゆっくり)とサビ(早め)の部分の両方をいい感じにするとこんなものなのかもしれません)</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>Spotifyには楽曲の特徴量を取得できるAPIがあります.</p>
<p>BPMやキーなど一意に決まりそうな特徴量もありますが,ダンスのしやすさやポジティブさなど曖昧な数値も取得することが出来ます.</p>
<div class="bcard-wrapper"><span class="bcard-header"><div class="bcard-site"><a href="https://developer.spotify.com/documentation/web-api/reference/" rel="nofollow" target="_blank"></a></div><div class="bcard-url"><a href="https://developer.spotify.com/documentation/web-api/reference/" rel="nofollow" target="_blank">https://developer.spotify.com/documentation/web-api/reference/</a></div></span><span class="bcard-main"><div class="bcard-title"><a href="https://developer.spotify.com/documentation/web-api/reference/" rel="nofollow" target="_blank">Web API Reference | Spotify for Developers</a></div><div class="bcard-description">Music, meet code. Powerful APIs, SDKs and widgets for simple and advanced applications.
</div></span></div>
<p>これを用いて水瀬いのりさんの楽曲を覗いてみました.</p>
<p>今回は,danceability(ダンスのしやすさ),energy(活力さ),acousticness(アコースティックさ),liveness(ライブ音源っぽさ),valence(ポジティブさ)に注目してみます.</p>
</summary>
<category term="水瀬いのり" scheme="https://unyacat.net/tags/%E6%B0%B4%E7%80%AC%E3%81%84%E3%81%AE%E3%82%8A/"/>
<category term="Spotify" scheme="https://unyacat.net/tags/Spotify/"/>
</entry>
<entry>
<title>推し水瀬いのり楽曲2021</title>
<link href="https://unyacat.net/2021/11/12/fav-inori-music-2021/"/>
<id>https://unyacat.net/2021/11/12/fav-inori-music-2021/</id>
<published>2021-11-12T04:39:30.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>推しの水瀬いのり楽曲 2021.</p><a id="more"></a><h2 id="楽曲派"><a href="#楽曲派" class="headerlink" title="楽曲派"></a>楽曲派</h2><h3 id="クリスタライズ"><a href="#クリスタライズ" class="headerlink" title="クリスタライズ"></a>クリスタライズ</h3><iframe src="https://open.spotify.com/embed/track/1Upx0jgN8fU8DDerhHYyQe" width="100%" height="80" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe>スマートフォンゲーム「アークナイツ」のイメージソング9thシングル「Starlight Musium」のカップリング曲なのですが,過去の楽曲にはない電子音の多用,それから得られる加速感が素晴らしいです.音ゲー・DJイベントが好きな人におすすめ.コロナ後発表楽曲で1年越しにHELLO HORIZONで初披露されました.今後とも聞きたいなぁ・・・.<h3 id="Future-Seeker"><a href="#Future-Seeker" class="headerlink" title="Future Seeker"></a>Future Seeker</h3><iframe src="https://open.spotify.com/embed/track/4wtXNIH6zHJXp96K8lAMA0" width="100%" height="80" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe>Tell Your Worldをはじめとする有名楽曲を楽曲を書いているkz氏が作曲しています.水瀬いのり氏とkz氏のコラボは僕的にとても興奮もの.彼の楽曲がちょっとでも好きな人なら聞いただけでわかるほどkzしています.<h3 id="Loop-Slider-Cider"><a href="#Loop-Slider-Cider" class="headerlink" title="Loop Slider Cider"></a>Loop Slider Cider</h3><p>詳細は下「隠れた曲」参照.</p><h2 id="ライブ"><a href="#ライブ" class="headerlink" title="ライブ"></a>ライブ</h2><h3 id="Ready-Steady-Go"><a href="#Ready-Steady-Go" class="headerlink" title="Ready Steady Go!"></a>Ready Steady Go!</h3><iframe src="https://open.spotify.com/embed/track/4WHBEowThZOHkuBxElmgvs" width="100%" height="80" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe>動画のようにライブだとタオルを振り回したり,「Ready Steady Go!」と叫べるなど観客参加ができます.タオルは物販で買えばいいけど面倒なら適当なのでも持っていくべきです..大体毎回歌ってくれます.叫べるので助かってますが,発声禁止イベントまでこれ歌うのはずるいと思います.<h3 id="Million-Futures"><a href="#Million-Futures" class="headerlink" title="Million Futures"></a>Million Futures</h3><iframe src="https://open.spotify.com/embed/track/3GhnITO3CPm3gfkFxbRH6O" width="100%" height="80" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe>乖離性ミリオンアーサー 主題歌サビ前の「乖離を抱いて~」の後の「み~りおんふゅ~ちゃ~!」を叫ぶなど観客参加ができる.これも大体歌ってくれる.かっこよくていいね.<h3 id="Starry-Wish"><a href="#Starry-Wish" class="headerlink" title="Starry Wish"></a>Starry Wish</h3><iframe src="https://open.spotify.com/embed/track/7LPtEFbEVTKLXvSh2qUv3E" width="100%" height="80" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe>TV アニメ「ViVid Strike!」エンディングテーマ水瀬いのりのデビュー曲ということでこちらも毎回歌っている.害悪もできる(やめようね)( [*](https://www.youtube.com/watch?v=i3rVOBg2fTk) )<h2 id="隠れた曲"><a href="#隠れた曲" class="headerlink" title="隠れた曲"></a>隠れた曲</h2><h3 id="Milky-Star-Loop-Slider-Cider-夏の約束"><a href="#Milky-Star-Loop-Slider-Cider-夏の約束" class="headerlink" title="Milky Star / Loop Slider Cider / (夏の約束)]"></a>Milky Star / Loop Slider Cider / (夏の約束)]</h3><p><a href="https://www.youtube.com/watch?v=yLjqw5c5qsA">YouTube</a></p><p>女性向けゲーム「√HAPPY+SUGAR=」のテーマ曲.<a href="http://rejetweb.jp/hsd/">公式HP(視聴できる)</a><br>水瀬いのりがCDを出す前(夢のつぼみより前)に歌ってた楽曲.でもFCイベ - 町民集会で歌ったことがあります.<br>未成年いのりん.あどけなさがありながら電子音系で好き.<br>夏の約束は Starry Wish に入ってるからあるけどもこちらはサブスクにないのつらい.</p><h3 id="まっすぐに、トウメイに。"><a href="#まっすぐに、トウメイに。" class="headerlink" title="まっすぐに、トウメイに。"></a>まっすぐに、トウメイに。</h3><iframe src="https://open.spotify.com/embed/track/22MIaknWHb88NLg3Lqz6yD" width="100%" height="80" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe><p>キリンレモンCMソング<br>オタ芸がしたくなるようなリズムの楽曲.<br>ライブの際にはキリンレモンを買っていこうね.あと <a href="https://www.youtube.com/watch?v=TZEeyifmk4Q">SOYJOY</a>.</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>推しの水瀬いのり楽曲 2021.</p>
</summary>
<category term="水瀬いのり" scheme="https://unyacat.net/tags/%E6%B0%B4%E7%80%AC%E3%81%84%E3%81%AE%E3%82%8A/"/>
</entry>
<entry>
<title>中古で買ったLenovo Tab3(601LV)を文鎮にして蘇生させた</title>
<link href="https://unyacat.net/2021/11/08/used-601lv-flash-rom/"/>
<id>https://unyacat.net/2021/11/08/used-601lv-flash-rom/</id>
<published>2021-11-08T11:48:41.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>名古屋 大須の「ワールドモバイル 大須アメ横店」でLenovo Tab3(601LV) を買ってきました.</p><p><a href="https://www.softbank.jp/partners/kyoiku-press/products/list/lenovo-tab3/spec/"></a></p><p>ジャンクコーナのカゴにどっさりタブレットとかスマホが並んでいる中からこれならまだ使えそうと選んだ一品.</p><p>価格は1,650円.外観はSD・SIMトレイカバーがないことや黄ばみが目立つ感じ.</p><p>それよりも問題なのは画面ロックが掛けられたままの状態ということ.まぁ適当に検索すればなんとかなると甘く考え購入.しかし・・・</p><a id="more"></a><h2 id="👨🔧工場出荷状態へリセットを試みるもできず"><a href="#👨🔧工場出荷状態へリセットを試みるもできず" class="headerlink" title="👨🔧工場出荷状態へリセットを試みるもできず"></a>👨🔧工場出荷状態へリセットを試みるもできず</h2><p>一度電源を落として電源ボタン・音量ボタンをタイミング良く押すとドロイド君が拝めたりリカバリー画面に突入できます.</p><p>中のデータには興味がないので全リセットの勢いで向かってきます.</p><p><a href="https://www.iphoneclear.jp/blog/rafirahonten/androidkaitori/">隠しコマンド、見つけちゃいました! | 札幌でiPhone修理・故障は安心の道内企業アイフォンクリア 信用・信頼・高技術の『期待に応える誠実なiPhone修理店』</a></p><p>なんとか突入できたもののFactory Reset に類する項目は見つかりませんでした.</p><p><img src="/images/used-601lv-flash-rom/Untitled.png" alt="Untitled"></p><p><img src="/images/used-601lv-flash-rom/Untitled%201.png" alt="Untitled"></p><h2 id="🙀海外ROMを焼きを試すも失敗"><a href="#🙀海外ROMを焼きを試すも失敗" class="headerlink" title="🙀海外ROMを焼きを試すも失敗"></a>🙀海外ROMを焼きを試すも失敗</h2><p>601LVの前機種,501LVで海外版のROMを焼いている人がいました.</p><p>501LVはソフトバンク向けにカスタムされたものですが,海外で中身が同じ「Lenovo Tab 2 A8-50」という機種が発売されているされているようです.</p><p><a href="https://old.haruroid.com/haruroid.0t0.jp/blog/archives/934.html">【501LV】文鎮化したのでROMを焼き直した話</a></p><p>601LVで同じことができないかと,中身で似た機種を探すと「TB3-850M」が出てきました.</p><p>早速 ROM 探して書き込みを試みます.</p><p><a href="https://firmwarefile.com/lenovo-tab-3-8-tb3-850m">Lenovo Tab 3 8 TB3-850M Stock Firmware ROM (Flash File)</a></p><p>しかし,エラーを吐いてしまいます.</p><p>よくみると搭載チップがTB3-850MのほうはMT6735に対して601LVのほうはMT8735が搭載されています.チップが違うので書き込めないとエラーを出されてしまいました.</p><p>しかもここで文鎮化してしまいます.絶望.</p><p><img src="/images/used-601lv-flash-rom/Untitled%202.png" alt="Untitled"></p><p>他に601LVは501LVの上位互換という情報からLenovo Tab 2 A8-50のROMを焼いてみたりしましたが動かずでした.</p><h2 id="🔥601LVのROMを購入して焼いた"><a href="#🔥601LVのROMを購入して焼いた" class="headerlink" title="🔥601LVのROMを購入して焼いた"></a>🔥601LVのROMを購入して焼いた</h2><p>買ってから絶望し,半年以上が経ちました.</p><p>なんとなく2chを探すとソフトバンク版のROMが海外サイトで買えるされているという情報がありました.</p><p><img src="/images/used-601lv-flash-rom/Untitled%203.png" alt="Untitled"></p><p><a href="https://egg.5ch.net/test/read.cgi/android/1521950867/112">【全機種】Lenovoタブレット総合【全キャリア】</a></p><p>ここまでやってきてもう消費したくなかったのでリンク先からROMを購入することにしました.</p><p><a href="http://firmware.gem-flash.com/index.php?a=browse&b=file-info&id=32302">601LV_S_USR_S100021_1707031034_MPM0._JPSECURE.zip | GEM-FLASH Firmware</a></p><p>3GB2.99ドルのプランを購入.買った時は日本円で340円でした.</p><p>支払画面は選択肢が多くややこしうえにPaypalは見当たらなかったのですが,とりあえずカード番号が入りそうなPaymentwallを選び決済しました.Revolutの使い捨てカード番号はこういうときに気軽に利用できるので便利ですね.</p><p><img src="/images/used-601lv-flash-rom/Untitled%204.png" alt="Untitled"></p><h2 id="✨起動"><a href="#✨起動" class="headerlink" title="✨起動"></a>✨起動</h2><p>SPFlashToolを使い,書き込みを行うと無事起動することができました.</p><p>ようそこの画面は安心します.</p><p><img src="/images/used-601lv-flash-rom/Untitled%205.png" alt="Untitled"></p><p>Wi-Fiの選択画面でエラーらしきものが表示されていますがこのあとはなんら問題なく動作しました.</p><p>2.4GHz帯は掴むのですが5GHz帯は掴んでくれません.</p><p><img src="/images/used-601lv-flash-rom/Untitled%206.png" alt="Untitled"></p><h2 id="📱601LVの動作・感想"><a href="#📱601LVの動作・感想" class="headerlink" title="📱601LVの動作・感想"></a>📱601LVの動作・感想</h2><p>文章を読むのには十分に使えそうですし,機嫌がいい時はテレビ番組も視聴にも使えます.</p><p>でもストレージが16GBしかなくアプリのインストール・更新をしているときにストレージが足りませんと怒られてしまいました.実際に使えるのは10.3GBだけのようです.</p><p>8インチで1280×800ドットなので画面がモヤっとしますし,YouTubeで2倍速再生したら紙芝居のようになることも.Wi-Fiの速度もあんまりでていないようです.</p><p>とはいえ4年以上前の端末に求めることではないのかもしれません.</p><p>2021年5月時点で新品で1万弱のものを実質2000円で手に入れられたのでとても満足です.</p><p><a href="https://akiba-pc.watch.impress.co.jp/docs/news/news/1324690.html">Androidタブレット「Lenovo TAB3」が9,980円!LTE対応の未使用品が大量入荷 - AKIBA PC Hotline!</a></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>名古屋 大須の「ワールドモバイル 大須アメ横店」でLenovo Tab3(601LV) を買ってきました.</p>
<p><a href="https://www.softbank.jp/partners/kyoiku-press/products/list/lenovo-tab3/spec/"></a></p>
<p>ジャンクコーナのカゴにどっさりタブレットとかスマホが並んでいる中からこれならまだ使えそうと選んだ一品.</p>
<p>価格は1,650円.外観はSD・SIMトレイカバーがないことや黄ばみが目立つ感じ.</p>
<p>それよりも問題なのは画面ロックが掛けられたままの状態ということ.まぁ適当に検索すればなんとかなると甘く考え購入.しかし・・・</p>
</summary>
<category term="601lv" scheme="https://unyacat.net/tags/601lv/"/>
<category term="Android" scheme="https://unyacat.net/tags/Android/"/>
<category term="タブレット" scheme="https://unyacat.net/tags/%E3%82%BF%E3%83%96%E3%83%AC%E3%83%83%E3%83%88/"/>
</entry>
<entry>
<title>AM2301Bを利用して温湿度を計測する</title>
<link href="https://unyacat.net/2021/09/20/am2301b/"/>
<id>https://unyacat.net/2021/09/20/am2301b/</id>
<published>2021-09-20T14:20:36.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>AM2301Bというセンサを買ってきたのでNanoPi NEO2で動かしてみました.</p><a id="more"></a><p>秋月電子: </p><p><a href="https://akizukidenshi.com/catalog/g/gM-16730/">温湿度センサ モジュール AM2301B: センサ一般 秋月電子通商-電子部品・ネット通販</a></p><p>データシート: <a href="https://akizukidenshi.com/download/ds/aosong/AM2301B.pdf">https://akizukidenshi.com/download/ds/aosong/AM2301B.pdf</a></p><p>生産している会社の商品紹介ページ: </p><p><a href="">AM2301B Temperature and humidity sensor-RH&T Sensors-Guangzhou Aosong Electronic Co., Ltd.</a></p><p>精度は温度: ±0.3℃, 湿度: ±2%RH(25℃) です.</p><h2 id="⚙-NanoPiの設定"><a href="#⚙-NanoPiの設定" class="headerlink" title="⚙ NanoPiの設定"></a>⚙ NanoPiの設定</h2><p>NanoPiとAM2301BはI2Cで通信します.</p><p>あらかじめNanoPi側でI2Cを有効化しておきます.NanoPiでArmbianを動かしているなら,</p><figure class="highlight plain"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo armbian-config</span><br></pre></td></tr></tbody></table></figure><p>System > Hardware > i2c0 にスペースキーで✅をいれます.EnterでSaveします.</p><p><img src="/images/am2301b/i2c-setting.png" alt=""></p><h2 id="🔌-NanoPiとAM2301Bを繋ぐ"><a href="#🔌-NanoPiとAM2301Bを繋ぐ" class="headerlink" title="🔌 NanoPiとAM2301Bを繋ぐ"></a>🔌 NanoPiとAM2301Bを繋ぐ</h2><p><img src="/images/am2301b/nanopi-pins.png" alt=""></p><p>右上内側のOUT - 3.3V,SDA,SCL,GNDを利用します.</p><p><img src="/images/am2301b/connect.JPG" alt=""></p><p>i2c-toolsで正しく接続できているかを確認します.</p><figure class="highlight plain"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ sudo apt-get install i2c-tools</span><br><span class="line">$ sudo i2cdetect -y 0</span><br></pre></td></tr></tbody></table></figure><p>で</p><figure class="highlight plain"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">0 1 2 3 4 5 6 7 8 9 a b c d e f</span><br><span class="line">00: -- -- -- -- -- -- -- -- -- -- -- -- -- </span><br><span class="line">10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- </span><br><span class="line">20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- </span><br><span class="line">30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- -- </span><br><span class="line">40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- </span><br><span class="line">50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- </span><br><span class="line">60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- </span><br><span class="line">70: -- -- -- -- -- -- -- --</span><br></pre></td></tr></tbody></table></figure><p>と返ってこれば成功です.</p><h2 id="⚡️-Pythonで通信する"><a href="#⚡️-Pythonで通信する" class="headerlink" title="⚡️ Pythonで通信する"></a>⚡️ Pythonで通信する</h2><p>smbusというライブラリでI2C通信を行います.</p><figure class="highlight plain"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo apt-get install python3-smbus</span><br></pre></td></tr></tbody></table></figure><p>適当にデータシートを読みながらコードを書いていきます.今回はCRC checkには目を瞑ることとします.誤差との兼ね合いはお好みで(もうちょっと細かくてもいい気がする).</p><figure class="highlight python"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> smbus</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"></span><br><span class="line"><span class="comment"># i2cバスの番号</span></span><br><span class="line">i2c = smbus.SMBus(<span class="number">0</span>)</span><br><span class="line"><span class="comment"># デバイスアドレス</span></span><br><span class="line">addr = <span class="number">0x38</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># デバイスの状態確認</span></span><br><span class="line">status = i2c.read_byte_data(addr, <span class="number">0x71</span>)</span><br><span class="line"><span class="keyword">if</span> status != <span class="number">0x18</span>:</span><br><span class="line"> <span class="comment"># 初期化指示</span></span><br><span class="line"> i2c.write_i2c_block_data(addr, <span class="number">0xBE</span>, [<span class="number">0x08</span>, <span class="number">0x00</span>])</span><br><span class="line"></span><br><span class="line"> time.sleep(<span class="number">0.1</span>)</span><br><span class="line"></span><br><span class="line"> status = i2c.read_byte_data(addr, <span class="number">0x71</span>)</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> status != <span class="number">0x18</span>:</span><br><span class="line"> print(<span class="string">"Device initialization failed."</span>)</span><br><span class="line"> exit()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 計測指示</span></span><br><span class="line">i2c.write_i2c_block_data(addr, <span class="number">0xAC</span>, [<span class="number">0x33</span>, <span class="number">0x00</span>])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 計測までは80ms以上おく必要がある.</span></span><br><span class="line">time.sleep(<span class="number">0.2</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 計測状態確認</span></span><br><span class="line">status = i2c.read_byte_data(addr, <span class="number">0x71</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># statusのBit[7]が0なら計測完了</span></span><br><span class="line"><span class="keyword">if</span> format(status, <span class="string">'08b'</span>)[<span class="number">0</span>] != <span class="string">"0"</span>:</span><br><span class="line"> print(<span class="string">"計測未完"</span>)</span><br><span class="line"> exit()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 測定結果を読み取り</span></span><br><span class="line">block = i2c.read_i2c_block_data(addr,<span class="number">0</span>,<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 読み取り結果から温度湿度を計算</span></span><br><span class="line">hum = int(block[<span class="number">1</span>] << <span class="number">12</span> | block[<span class="number">2</span>] << <span class="number">4</span> | block[<span class="number">3</span>] >> <span class="number">4</span>) * <span class="number">100</span></span><br><span class="line">hum = int(hum >> <span class="number">20</span>)</span><br><span class="line"></span><br><span class="line">temp = int((block[<span class="number">3</span>] & <span class="number">0b00001111</span>) << <span class="number">16</span> | block[<span class="number">4</span>] << <span class="number">8</span> | block[<span class="number">5</span>]) * <span class="number">200</span></span><br><span class="line">temp = float(temp >> <span class="number">18</span>) / <span class="number">4</span></span><br><span class="line">temp -= <span class="number">50</span></span><br><span class="line"></span><br><span class="line">print(<span class="string">"T:"</span>, temp, <span class="string">" H:"</span>, hum)</span><br></pre></td></tr></tbody></table></figure><p>それっぽい値が取得できました.よかった〜</p><p><img src="/images/am2301b-get-value/success.png" alt=""></p><p>初期化の方法はデータシートに載っていませんでしたが<a href="https://www.aosong.com/userfiles/files/media/AM2301B%E8%8B%B1%E6%96%87%E7%89%88_%E5%8E%BB%E6%BB%A4%E6%B3%A2%20%E4%B8%8A%E6%8B%89.pdf">別のPDF</a>には掲載されていました.</p><h3 id="InfluxDB-Grafana"><a href="#InfluxDB-Grafana" class="headerlink" title="InfluxDB + Grafana"></a>InfluxDB + Grafana</h3><p>InfluxDBに投げつけてGrafanaで可視化したらいい感じになります.</p><p>センサの場所を固定してないためか急に変動する時間が発生してますね・・・.</p><p>様子見して設置場所とか精度をどこまで求めるかなどを調整した方が良さそうです.</p><p><img src="/images/am2301b/grafana.png" alt="Grafana"></p><h3 id="感想"><a href="#感想" class="headerlink" title="感想"></a>感想</h3><p>秋葉原の秋月にふらっとよって手に取った温湿度センサでしたが発売直後すぎてデータシート以外の情報がなくうろたえました.(2021.08.31発売 / 2021.09.10購入)</p><p>I2Cを利用したことがなかったので完全に手探りでしたが値が取れてよかったです.(間違ってたら指摘をお願いします…)</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>AM2301Bというセンサを買ってきたのでNanoPi NEO2で動かしてみました.</p>
</summary>
<category term="AM2301B" scheme="https://unyacat.net/tags/AM2301B/"/>
<category term="NanoPi" scheme="https://unyacat.net/tags/NanoPi/"/>
<category term="温湿度" scheme="https://unyacat.net/tags/%E6%B8%A9%E6%B9%BF%E5%BA%A6/"/>
</entry>
<entry>
<title>bootstrap-vueを利用するとsr-only要素が見える問題</title>
<link href="https://unyacat.net/2021/09/19/bootstrap-vue-version-4-5/"/>
<id>https://unyacat.net/2021/09/19/bootstrap-vue-version-4-5/</id>
<published>2021-09-19T14:15:00.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p><a href="https://bootstrap-vue.org/">bootstrap-vue</a>のGetting Startedにしたがってインストールすると謎の文字がでてくることがあります.</p><a id="more"></a><p>例えば…<br><img src="/images/bootstrap-vue-version-4-5/sr1.png" alt=""></p><h2 id="✅-解決策"><a href="#✅-解決策" class="headerlink" title="✅ 解決策"></a>✅ 解決策</h2><p><code>$ npm install bootstrap@4.5.3</code></p><h2 id="これ何"><a href="#これ何" class="headerlink" title="これ何"></a>これ何</h2><p>謎の文字は <code>sr-only</code> というクラスを持っています.<br><code><label class="sr-only" id="_BVID__6__value" for="__BVID__6">2021年9月19日日曜日</label></code><br>これはスクリーンリーダー(音声読み上げソフト)のためのようです.<br>つまり画面上には必要ないものが見えていることになります.</p><h3 id="原因"><a href="#原因" class="headerlink" title="原因"></a>原因</h3><p>bootstrapのバージョンが新しすぎるためです.<br>bootstrap-vueではv4.5.3が推奨されていますが,Getting Startedの通りに<code>npm install bootstrap</code>をするとsr-onlyが廃止されたv5をダウンロードしてきます.<br>v4.5.3を指定してダウンロードすることで見えなくなります.</p><h3 id="リンク"><a href="#リンク" class="headerlink" title="リンク"></a>リンク</h3><p>Getting Started | BootstrapVue - <a href="">https://bootstrap-vue.org/docs</a></p><p>Accessibility · Bootstrap v5.0 - <a href="">https://getbootstrap.com/docs/5.0/getting-started/accessibility/</a></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p><a href="https://bootstrap-vue.org/">bootstrap-vue</a>のGetting Startedにしたがってインストールすると謎の文字がでてくることがあります.</p>
</summary>
<category term="Vue" scheme="https://unyacat.net/tags/Vue/"/>
<category term="BootstrapVue" scheme="https://unyacat.net/tags/BootstrapVue/"/>
</entry>
<entry>
<title>Node804のHDD固定ネジを買った</title>
<link href="https://unyacat.net/2021/08/03/node804-hdd-screw/"/>
<id>https://unyacat.net/2021/08/03/node804-hdd-screw/</id>
<published>2021-08-03T13:31:39.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>PCケースのNode804のHDD固定ネジが足りなかったので買ってきました.</p><a id="more"></a><p>フリマアプリでPCケースの<a href="https://amzn.to/2VbmMMb">Node804</a> を購入したのですが,HDD固定ネジが足りませんでした.色々巡ってこれを買ってきましたという日記です.</p><p>HDDの固定するネジは UNC#6-32 (No.6 / 32山) という規格のようです.長さは1cmっぽい(インチ規格なのに).</p><p><img src="/images/node804-hdd-screw/screw.jpg" alt="ねじ"></p><p>ホームセンターに行って探してみたのですが,国内にはあまり無い規格のようで売ってませんでした.</p><p>三宮のドスパラに行って探してみたのですが,ここにも売ってませんでした.</p><p><img src="/images/node804-hdd-screw/dospara.jpg" alt="ドスパラ"></p><p>モノタロウには売っているのですが送料もかかるし・・・.</p><p>結局,ヨドバシ梅田まで行って UNC#6-32 8mm (長めと記載されてる) 規格のネジが何個か売っていたのでそれで固定したところいい感じに固定できました.</p><p>買ったのは <a href="https://www.yodobashi.com/product/100000001001619755/">これ</a> です.</p><p>どうせはまるならもっとネジ山が似てるやつ変えばよかったなぁ.</p><p><img src="/images/node804-hdd-screw/hdd.jpg" alt="HDDに固定した様子"></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>PCケースのNode804のHDD固定ネジが足りなかったので買ってきました.</p>
</summary>
<category term="日記" scheme="https://unyacat.net/tags/%E6%97%A5%E8%A8%98/"/>
<category term="node804" scheme="https://unyacat.net/tags/node804/"/>
</entry>
<entry>
<title>3Dプリンタで物理アイコンを作った</title>
<link href="https://unyacat.net/2021/07/12/making-3d-icon/"/>
<id>https://unyacat.net/2021/07/12/making-3d-icon/</id>
<published>2021-07-11T15:30:13.000Z</published>
<updated>2022-12-30T00:52:33.444Z</updated>
<content type="html"><![CDATA[<p>画像を元に3Dモデルを生成して自分の利用しているアイコンを3Dプリンタで印刷してみました.<br>ついでに裏にNFCタグをつけて機能をもたせてみました.</p><a id="more"></a> <h2 id="つくったもの"><a href="#つくったもの" class="headerlink" title="つくったもの"></a>つくったもの</h2><blockquote class="twitter-tweet"><p lang="ja" dir="ltr">3Dプリンタで物理アイコンを生成した〜 <a href="https://t.co/n1jF4NQOPq">pic.twitter.com/n1jF4NQOPq</a></p>— うにゃ (@unya_2) <a href="https://twitter.com/unya_2/status/1413106388138561542?ref_src=twsrc%5Etfw">July 8, 2021</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><p>アイコンは <a href="https://picrew.me/image_maker/37650">三白眼女の子メーカー|Picrew </a> で作りました.ありがとうございます🙏</p><h2 id="つくる"><a href="#つくる" class="headerlink" title="つくる"></a>つくる</h2><h3 id="画像からSTLファイルを作る"><a href="#画像からSTLファイルを作る" class="headerlink" title="画像からSTLファイルを作る"></a>画像からSTLファイルを作る</h3><p>画像から STL ファイルにする都合の良いサイトがあったのでこれを活用しました.</p><div class="bcard-wrapper"><span class="bcard-header"><div class="bcard-site"><a href="https://imagetostl.com/jp" rel="nofollow" target="_blank"></a></div><div class="bcard-url"><a href="https://imagetostl.com/jp" rel="nofollow" target="_blank">https://imagetostl.com/jp</a></div></span><span class="bcard-main"><div class="bcard-title"><a href="https://imagetostl.com/jp" rel="nofollow" target="_blank">2D画像から3D STLファイルに変換する無料オンラインツール - ImageToStl</a></div><div class="bcard-description">無料で高速なオンラインツールで、.PNGと.JPGの2D画像を3D .STLファイルに変換し、3Dプリンタで印刷したり、お気に入りの3D編集パッケージにロードするのに適しています。gpg</div></span></div><p>カラー画像のまま入れると高低差がなめらかなのではっきりと凸凹が欲しいなら n 段階で白黒にすると良さそう.<br>3Dモデルをうまく編集できない人間(私)は画像の段階でいじっておきましょう.</p><h3 id="Fusion360でストラップ穴をつける"><a href="#Fusion360でストラップ穴をつける" class="headerlink" title="Fusion360でストラップ穴をつける"></a>Fusion360でストラップ穴をつける</h3><p>Fusion360でストラップを通す穴と土台をつけました.<br>生成したSTLを読み込むときに大きさが10倍になったのでimagetostlの段階で1/10の大きさにし直しました.(そのままCHITUBOXとかに入れれば正しい大きさになったのですが……)<br>同じく下面オフセットもimagetostlでできるのですが円形画像だと思ったようにできなかったのでFusion360で作りました.</p><p><img src="/images/making-3d-icon/fusion.png" alt=""></p><h3 id="印刷"><a href="#印刷" class="headerlink" title="印刷"></a>印刷</h3><p>印刷してストラップつけるといい感じ!<br><img src="/images/making-3d-icon/thumbnail.jpg" alt=""></p><h2 id="おまけ-裏にNFCタグを貼ってみる"><a href="#おまけ-裏にNFCタグを貼ってみる" class="headerlink" title="おまけ: 裏にNFCタグを貼ってみる"></a>おまけ: 裏にNFCタグを貼ってみる</h2><p>裏にNFCタグを貼ることで自サイトに飛ぶ機能を持たしてみました.</p><p>まるでアイコンが画面の中に移っていくのよう・・・.</p><blockquote class="twitter-tweet" data-conversation="none" data-dnt="true"><p lang="ja" dir="ltr">裏にNFCタグ貼ったので名刺代わりにもなる <a href="https://t.co/SBsfaU3q50">pic.twitter.com/SBsfaU3q50</a></p>— うにゃ (@unya_2) <a href="https://twitter.com/unya_2/status/1413107184875966469?ref_src=twsrc%5Etfw">July 8, 2021</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>画像を元に3Dモデルを生成して自分の利用しているアイコンを3Dプリンタで印刷してみました.<br>ついでに裏にNFCタグをつけて機能をもたせてみました.</p>
</summary>
<category term="日記" scheme="https://unyacat.net/tags/%E6%97%A5%E8%A8%98/"/>
<category term="3Dプリンタ" scheme="https://unyacat.net/tags/3D%E3%83%97%E3%83%AA%E3%83%B3%E3%82%BF/"/>
<category term="Fusion360" scheme="https://unyacat.net/tags/Fusion360/"/>
</entry>
<entry>
<title>iPhone 7 Plus のバッテリーを自分で交換した</title>
<link href="https://unyacat.net/2021/06/29/replace-iphone7p-battery/"/>
<id>https://unyacat.net/2021/06/29/replace-iphone7p-battery/</id>
<published>2021-06-29T04:22:11.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>iPhone 7 Plus のバッテリーを自分で交換しました.みんなもスマホのバッテリーが蓋の中にあるクソ仕様に負けずに交換しよう!</p><a id="more"></a><h2 id="状況"><a href="#状況" class="headerlink" title="状況"></a>状況</h2><p>バッテリーの最大容量は 69%,朝起きたら勝手に 1% になってるくらいはダメに.性能も何個かアプリつけるだけで画面がカクカクになるくらいでした.</p><p><img src="/images/replace-iphone7p-battery/1.png" alt=""></p><h2 id="必要だったもの"><a href="#必要だったもの" class="headerlink" title="必要だったもの"></a>必要だったもの</h2><ul><li><a href="https://amzn.to/3pwxPby">バッテリー交換キット (2,580円)</a></li><li>500mlの四角いペットボトル相当のもの(画面を固定するもの)</li><li>ドライヤー</li><li>修理時間約1時間+</li></ul><h2 id="メリット"><a href="#メリット" class="headerlink" title="メリット"></a>メリット</h2><h3 id="自分でできるのが楽しい"><a href="#自分でできるのが楽しい" class="headerlink" title="自分でできるのが楽しい"></a>自分でできるのが楽しい</h3><p>iPhone の中身が見えるのが楽しいです.中の見えないところまで 🍎ロゴが入ってるのが確認できるって嬉しいですよね.<br><img src="/images/replace-iphone7p-battery/2.jpg" alt=""></p><h3 id="手順書がついてくるので割と誰でもできる"><a href="#手順書がついてくるので割と誰でもできる" class="headerlink" title="手順書がついてくるので割と誰でもできる"></a>手順書がついてくるので割と誰でもできる</h3><p>ついてない機種でもどうせ iFixit か YouTube にあります<br>(私が買った製品に関して言えば)注意点ややらかした時のリカバリ方法・キットまでついてきたので安心でした.<br>とは言え Taptic Engine をもとに戻す手順が抜けていることに注意です.</p><h2 id="デメリット"><a href="#デメリット" class="headerlink" title="デメリット"></a>デメリット</h2><h3 id="非正規の店の方が安いかもしれない"><a href="#非正規の店の方が安いかもしれない" class="headerlink" title="非正規の店の方が安いかもしれない"></a>非正規の店の方が安いかもしれない</h3><p>店でもいいなら一度検索して確認した方が良さそうです.<br>🍎に関して言えば公式のほうがさすがに高いですが…(5400円)</p><h3 id="画面を固定するノリがついてこない"><a href="#画面を固定するノリがついてこない" class="headerlink" title="画面を固定するノリがついてこない"></a>画面を固定するノリがついてこない</h3><p>XperiaZ2 でバッテリー交換してきたときにはついてきたのですが画面を固定するノリがついてきません.<br>でも,一応ひっかかりはあるので大丈夫だと思います.</p><h2 id="感想"><a href="#感想" class="headerlink" title="感想"></a>感想</h2><p>買ったら 24 時間以内に家に到着したので感動した.<br>Xperia Z2 に比べたら iPhone のほうが手順が多くてケーブルがごちゃっててめんどくさい.</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>iPhone 7 Plus のバッテリーを自分で交換しました.みんなもスマホのバッテリーが蓋の中にあるクソ仕様に負けずに交換しよう!</p>
</summary>
<category term="日記" scheme="https://unyacat.net/tags/%E6%97%A5%E8%A8%98/"/>
<category term="iPhone-7-Plus" scheme="https://unyacat.net/tags/iPhone-7-Plus/"/>
</entry>
<entry>
<title>神姫バスの燃料電池バス(水素バス)乗車記</title>
<link href="https://unyacat.net/2021/04/15/shinki-h2o-bus/"/>
<id>https://unyacat.net/2021/04/15/shinki-h2o-bus/</id>
<published>2021-04-15T13:25:24.000Z</published>
<updated>2022-12-30T00:52:33.448Z</updated>
<content type="html"><![CDATA[<p>いま注目の水素を燃料として発電しながら走る燃料電池バスを神姫バスが西日本で初導入したと聞きつけ早速乗ってみました.<br>機種はトヨタ自動車の「SORA」です.車両価格はなんと 1 億円!<br>いまなら運行ダイヤが公開されておりほぼ確実に乗れそうです.<a href="https://www.shinkibus.co.jp/sysfiles/wtn/1300/zikokuhyo.pdf">公式ダイヤ</a>(PDF)</p><a id="more"></a><h2 id="外装"><a href="#外装" class="headerlink" title="外装"></a>外装</h2><p>まずは正面です.</p><p>黒基調の中に水素をイメージしたような青いライン.<br>そして FUEL CELL BUS というアピールがあります.</p><p><img src="/images/shinki-h2o-bus/front.jpg" alt=""></p><p>次に側面と背面.<br>上部は従来のバスでは見られないような大きな排気口があります.<br>撮影しそこねましたが乗車ドアは観光バスによくあるような外に飛び出してきて横にスライドする形式でした.驚きつつもなにかに引っかかって壊れたりしないのかなと心配にもなりました.(大丈夫だとは思いますが)</p><p><img src="/images/shinki-h2o-bus/back.jpg" alt=""></p><h2 id="車内"><a href="#車内" class="headerlink" title="車内"></a>車内</h2><h3 id="全体"><a href="#全体" class="headerlink" title="全体"></a>全体</h3><p>進行方向右側は座席が収納されており,空間が生まれ混雑時にも多くの人を輸送できそうです.<br>その上車椅子の人を乗せるときも手間が減り楽に対応できそうです.</p><p>また,運転席には大きなモニターがついており,安全性もより向上してそうに思います.</p><p><img src="/images/shinki-h2o-bus/inside1.jpg" alt=""></p><p>後方座席から見た風景です.<br>運賃案内の画面は前方後方と2枚ありとても見やすくなっています.<br>手すりの黄色はよく目立ち急停車の際もすぐに見つけられそうです.<br>そして理由はわかりませんが広告枠は前方にしか存在せず,入っている広告も少なめでした.</p><p><img src="/images/shinki-h2o-bus/inside2.jpg" alt=""></p><h3 id="座席"><a href="#座席" class="headerlink" title="座席"></a>座席</h3><p>シートはかなり薄くなったような気がします.<br>そして手すりは席に一体化しています.<br>どこを見ても従来のバスの座席とは大きく異なります.取り付けも簡易な様相が伺えます.</p><p><img src="/images/shinki-h2o-bus/seat1.jpg" alt=""></p><p>少しネガティブに書きましたが悪いというわけではありません.座席下ヒーターがなくなっていることで空間ができ,足元にゆとりが生まれて快適になったように思います.</p><p><img src="/images/shinki-h2o-bus/seat2.jpg" alt=""></p><p>そしてなんと座席にはコンセントがついています.本当に街中を走るために作られたバスなのか疑ってしまいます.</p><p><img src="/images/shinki-h2o-bus/power.jpg" alt=""></p><h2 id="走行音"><a href="#走行音" class="headerlink" title="走行音"></a>走行音</h2><p>まず加速がとても静かです.<br>初動ももちろん静かですが,それ以上に感動したのはそこからの加速です.<br>従来のバスだと効率よく加速するため(?)にエンジンが唸ったり緩まったりを繰り返していたため変化が激しくストレスだったのですがこのバスでは一度加速すれば音が一定で居心地が良いです.<br>しかも停車すれば無音になります.すべてのバスがこれに置き換わればいいのに.</p><h2 id="車内放送"><a href="#車内放送" class="headerlink" title="車内放送"></a>車内放送</h2><p>自動放送には英語放送が入っています.</p><p>「The next stop is 大手前通り です」と謎の文章を放っていたのが印象的でした.</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<p>いま注目の水素を燃料として発電しながら走る燃料電池バスを神姫バスが西日本で初導入したと聞きつけ早速乗ってみました.<br>機種はトヨタ自動車の「SORA」です.車両価格はなんと 1 億円!<br>いまなら運行ダイヤが公開されておりほぼ確実に乗れそうです.<a href="https://www.shinkibus.co.jp/sysfiles/wtn/1300/zikokuhyo.pdf">公式ダイヤ</a>(PDF)</p>
</summary>
<category term="日記" scheme="https://unyacat.net/tags/%E6%97%A5%E8%A8%98/"/>
<category term="交通" scheme="https://unyacat.net/tags/%E4%BA%A4%E9%80%9A/"/>
<category term="バス" scheme="https://unyacat.net/tags/%E3%83%90%E3%82%B9/"/>
</entry>
</feed>