サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
neos21.hatenablog.com
昨年2019年、セールで3,280円になっていたのでとりあえず買った Amazon Fire 7 タブレット。性能が悪くてやたらとモッサリするので、すぐに使わなくなっていた。 neos21.hateblo.jp しかし、画面を切った状態からでも Alexa を呼び出せるハンズフリー機能があるので、スマートスピーカー代わりに使えるかもな?と思い直し、それに合わせて少し手を入れることにした。 前提条件 開発者オプションで高速化する Google Play を入れてみる 「Quick Shortcut Maker」で「Google 設定」「Android 設定」を開く Swapper & Tools で仮想メモリを増やす → Fire OS 6 では出来ない Termux アプリは導入できるが root 化はできず Fire 7 (2019) には Echo Show モードがない とりあえず以
最近 MacOS で、CapsLock を Control キーの挙動にするよう変更した。tmux を使い始め、(Cmd ではなく) Control キーの使用頻度が上がってきたからだ。 MacOS の US 配列の場合、Control キーはキーボードの一番左下。CapsLock は「A」キーの左にある。CapsLock キーを Control キーの挙動にしてやると、Control + T などを入力する時に、左手小指を下に下げる必要がなくなり、キーの入力速度が上がるのだ。 MacOS の場合は「システム環境設定」→「キーボード」→「修飾キー...」ボタン より、すぐに CapsLock や各種メタキーのアサインを変更できるのでお手軽だ (defaults コマンドでもやれなくはないが、ちょっと設定が面倒らしい)。 CapsLock を Control キーに変更するのが効果的だと実感
Node.js で SQLite を簡単に扱える sqlite3 というパッケージがあったので紹介。 sqlite3 - npm パッケージのインストール データの登録 データの取得 応用 トランザクション管理 Prepared Statement の書き方 一括取得 以上 パッケージのインストール 適当な作業ディレクトリを作って npm init などしておき、以下のコマンドで SQLite をインストールする。 $ npm install sqlite3 --save インストール時にソースのビルドを行っているようで、手元では何やら警告が出た場合もあったのだが、とりあえずうまく使えていたので無視してしまった。 sqlite という名前のパッケージもあったが、コチラの進化系としてアナウンスされているのが sqlite3 であった。また、better-sqlite3 という各種チューニング
形態素解析ツールというと MeCab が有名だが、コレはライブラリをマシンにインストールし、Python・Ruby・Java・Perl・Node.js 言語などにバインディングするライブラリを導入することで使える。機能的には十分便利だが、導入手順や言語の制約があり、ライブラリのサイズも大きいので、ウェブアプリとして動かす時は若干やりづらいところもある。 そこで、MeCab 以外に形態素解析ツールがないか、中でも JavaScript 製だったりして、ブラウザオンリーで使えるようなライブラリがないか、探してみた。 tiny-segmenter kuromoji.js 軽さ優先なら tiny-segmenter・MeCab に近い品詞情報も知りたければ kuromoji.js tiny-segmenter 早速見つけたのは、TinySegmenter というライブラリ。JavaScript 製
最近の Windows と Mac は、「游ゴシック体」という同一のサンセリフ・フォントを標準搭載するようになった。メイリオとヒラギノ、MS P ゴシックと Osaka のように、OS ごとに標準フォントが異なり、ウェブサイトの見栄えが OS によって異なってしまう問題を最小限にできるようになってきた。游ゴシック体の適用方法については以前から数回記事を書いてきた。 neos21.hatenablog.com neos21.hatenablog.com ↑コッチで紹介しているやり方の方が良い。 一方、このサイトは技術ブログであり、コードを掲載する機会も多いので、等幅フォントについても気を使う。コード内のコメントには日本語を使うので、日本語文字を有する等幅フォントで、OS 間で差異がない (少ない) モノをずっと探してきた。残念ながら、Windows は MS ゴシックくらいしかなく、Mac
Ubuntu に標準搭載の Vim は、名前は Vim でも機能が少ない構成のモノが入っている。クリップボード共有を行うには別の Vim をインストールする。 # クリップボード共有に対応した Vim を入れる $ sudo apt install vim-gnome 参考:Vimでクリップボードからのペーストを可能にする – MY ROBOTICS そして ~/.vimrc を修正する。 ~/.vimrc " クリップボード共有を有効にする set clipboard=unnamedplus Windows GitBash の Vim や、MacOS の Homebrew で入れた Vim では、 set clipboard& set clipboard^=unnamed の指定でクリップボード共有ができるようになっていたが、Ubuntu では unnamedplus でないとダメだった
ようやく Windows Sybsystem for Linux (WSL) の Ubuntu で、安定して日本語入力可能な GUI デスクトップ環境を構築することに成功したので、記録を残す。 Windows10 Home から Windows10 Pro にアップグレードした後の Insider Preview にて、WSL2 が動作したのでメモしておく。 ついでに GNOME GUI デスクトップ環境の構築に再トライしてみた。なんとか WSL2 Ubuntu 18.04 GNOME 上で Fcitx-Mozc が動作するようになったのでお知らせ。 こんな環境ができあがる 前提条件 VcXsrv をインストールしておく WSL2 を使うまでの手順 Ubuntu 18.04 の初期設定 GNOME 環境を構築する GUI 起動の度に実施する起動コマンド 初回だけ : fcitx-autos
最近 VSCode のターミナルを開くと、Windows GitBash ターミナルの起動時に ~/.bash_profile が読み込まれず、~/.bashrc だけが読み込まれる状態になっていた。 調べてみると、Bash を「ログインシェル」として開くようオプション引数を設定しないといけないようだ。 「ログインシェル」って何やねん、というと、bash を実行する時に --login もしくは -l オプションが設定されているシェルのことで、このオプションが渡されると ~/.bash_profile を含むプロファイル系を読み込むようになる。 ログインシェルでないシェルとは何かというと、-c オプションを付けずに bash を呼び出した場合がこれに当たり、この場合は ~/.bashrc のみが読み込まれるようだ。VSCode ターミナルはこの状態になっていたというワケだ。コレは「インタラ
normalize.css にはバグフィックス以外の font-family 設定がない。フォントも「味付け」の一つと考え、「ノーマライズ」CSS としては何も適用していないのだろう。 しかし、現実的には、serif ではなく sans-serif 系のシステムデフォルトフォントを使わせるよう指定することがほとんどだ。拙作の @neos21/neos-normalize も、オレオレ設定でスタイルを当てているが、他のノーマライズ系の CSS ライブラリや、有名なウェブサイトはどのような設定にしているのか、調べてみた。 ライブラリ系 sanitize.css shoelace-css ウェブサイト Qiita Twitter Facebook Instagram GitHub Typetalk Backlog Tumblr CodePen Google Wikipedia Gizmodo J
Node.js はシングルプロセスで処理するため、マルチコアを活かして並列処理するにはひと手間準備が必要になる。 今回は、Node.js 組み込みの cluster モジュールを使って Express サーバを並列化してみる。 元となる Express サーバ cluster モジュールを組み込む 動作を見てみる 以上 元となる Express サーバ 今回元にする Express サーバの実装は以下のとおり。 /*! index.js */ const express = require('express'); express() .get('/', (req, res) => { console.log(`Request`); res.send('Hello World'); }) .listen(8080, () => { console.log(`Server Started`);
前回、LINE Messaging API を利用してユーザにオウム返しするチャットボットを作成したが、その際「Reply API」という API を利用してユーザへの返信を行った。 neos21.hatenablog.com 今回は、この Reply API に関する仕様について。 Reply API とは Reply API は、リクエストに付与されている「リプライトークン」というモノをキーにして返信処理が行える仕組みだ。開発者はユーザ ID などを知らなくても返信ができ、Messaging API において最も利用される API であろう。 リプライトークンに有効期限がある この「リプライトークン」には有効期限があるので、メッセージを受信したらできるだけ素早く返信しないといけない。 応答トークンは一定の期間が経過すると無効になるため、メッセージを受信したらすぐに応答を返す必要がありま
これまで Windows 環境では ConEmu を使って Git For Windows ないしは Git SDK を動かしていた。 neos21.hatenablog.com しかし、tmux を導入するにあたって不具合が多く、色々と試した結果、「標準の GitBash (git-bash.exe) が最善なんじゃねえの…?」となったので、その軌跡を残しておく。 ConEmu の動作 ConEmu で tmux の表示がバグる 違う Task 定義で動かすと tmux が使えなくなる Cmder cygwin-connector を挟んでいると、tmux は正常に動作するが、日本語入力がバグる cygwin-connector を挟まないとやっぱり tmux が使えない GitBash 3者のまとめ .minttyrc を本腰入れて直しておく ConEmu の動作 ConEmu で t
iOS 13 から登場した AVCaptureMultiCamSession という API を使うと、1台の iPhone に搭載されている複数のカメラデバイスを同時に使用できる。例えば、バックの標準カメラで被写体を写しながら、フロントカメラで撮影者自身も同時に撮影したり、といった感じだ。 今回はこの AVCaptureMultiCamSession を使って、複数のカメラで同時に動画を撮影する iOS アプリを作ったので紹介する。 アプリの様子 コードは GitHub で公開中 動作検証環境 4カメ同時撮影はできなかった AVCaptureMultiCamSession の仕組み 4つのカメラを AVCaptureMultiCamSession に追加するとどうなるか 同時に使えるカメラの組合せを調べる:supportedMultiCamDeviceSets バックグラウンドに移行した
Angular 4 以降の画面遷移、Router 周りの書き方を毎回忘れるので、自分用にまとめる。 通常のリンク URL (ルーティング) 定義 リンクする HTML 別の Component (TypeScript) から遷移する ルートパラメータ付きのリンク URL (ルーティング) 定義 リンクする HTML 別の Component (TypeScript) から遷移する パラメータを受け取る Matrix URI パラメータ付きのリンク リンクする HTML 別の Component (TypeScript) から遷移する パラメータを受け取る クエリパラメータ リンクする HTML 別の Component (TypeScript) から遷移する パラメータを受け取る ハッシュリンク・フラグメントを付ける リンクする HTML 別の Component (TypeScript)
Windows GitBash にて、$ python や $ node コマンドを叩いて、プロンプト上で簡単なコードを動かしてみたかったのだが、どうもプロンプトの応答が戻ってこない。 また、$ docker 関連のコマンドを使うと、以下のようなエラーメッセージが返ってきた。 $ docker exec -it my-container bash the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty' 調べてみると、GitBash では、一部の対話式プロンプトを伴うコマンドは winpty というコマンドを経由して実行してやらないと、上手くプロンプトが表示されないようだ。 まずは解決法だけ winpty を設定している /etc/profile.d/ali
MacOS にて実施。 SSH 接続する際、とある理由で公開鍵認証方式が使えず、sshpass という便利なツールも導入できなかったので、他の方法でパスワード入力を自動化する方法を調べた。 expect・spawn・send コマンドで作れる! 結論からいうと、以下のようなシェルスクリプトを作れば、SSH 接続とパスワード入力を自動化できる。 #!/bin/sh expect -c " set timeout 5 spawn ssh -p 22 【ユーザ名】@【接続先 URL】 expect \"Password:\" send \"【パスワード文字列】\n\" interact " expect -c で対話を自動化する。以降のコマンド全体をダブルクォートで囲んでいる set timeout で応答がない場合のタイムアウト秒数を設定する spawn で任意のコマンド入力を再現する spa
2ch で見つけたネタ。 参考:【.cmd】 バッチファイルスクリプト %11 【.bat】 | ログ速@2ちゃんねる(sc) 884 : デフォルトの名無しさん[sage] 投稿日:2017/01/27(金) 21:16:38.29 id:ss8+Q0ea.net こういうのもここで覚えたよ for /f “delims=0” %%I in (‘cmd /u /c echo 〇’) do set BEL=%%I echo %BEL% BEL 文字でビープ音が鳴らせる 元々、コマンドプロンプト上でアスキーコード「7」の「BEL 文字」を Echo すると、コマンドプロンプトからビープ音が鳴らせるということは知っていた。 Rem 「^G」はコマンドプロンプト上で「Ctrl + G」とキー押下すると入力できる Echo ^G 参考:【.cmd】 バッチファイルスクリプト %11 【.bat】
macOS Mojave 環境にて。この前久々に npm パッケージをグローバルインストールしようとしたら、以下のようなエラーが出た。 $ npm install -g @neos21/neos21 npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules npm ERR! path /usr/local/lib/node_modules npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall access npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules' npm ERR! { [Error: EACCES: permissio
前回、Google Cloud Platform (GCP) に登録し、その中の Google Compute Engine (GCE) というサービスを使い、完全無料で使える仮想マシン (VM) を立ち上げて SSH 接続までこぎつけた。 今回は、立ち上げた VM をより安全に利用するための設定を紹介する。 課金を通知する予算アラートを設定しておく VM に割り当てられる Public IP を固定する SSH 接続するためのポートを22番から他のポート番号に変更する ポートを変更する前に SELinux を無効化する SSH 接続に使用するポート番号を変更する GCP のファイアウォール設定を変更する 変更後のポート番号で SSH 接続する 以上 課金を通知する予算アラートを設定しておく 前回説明したとおり、GCP には無料枠と1年間の無料クレジットがあるし、有料アカウントに手動で移行
MacOS 環境で、複数の Node.js のバージョンを管理するツールを比較してみた。僕は nodebrew をずっと使っているが、今回調べてみたら ndenv も導入が簡単で、依存するモノも少なく、アリかも…?とか思った。 nodebrew GitHub - hokaccha/nodebrew: Node.js version manager Perl 製。作者は日本人 (CookPad の人!) で安心?個人的に使いやすくお気に入り。 ndenv + node-build GitHub - riywo/ndenv: node.js version manager based on rbenv GitHub - riywo/node-build node.jsのバージョン管理のためにndenv & node-buildを作ったのとanyenvの宣伝 · As a Futurist...
MacOS に CotEditor をインストールすると、Finder のコンテキストメニューに「ファイルを CotEditor で開く」メニューが追加される。 Windows に VSCode をインストールすると、エクスプローラのコンテキストメニューに「Open with Code」メニューが追加される。 … MacOS に VSCode をインストールしても、Finder のコンテキストメニューに「VSCode で開く」メニューが追加されない! … ということで、このコンテキストメニューを自作する。 ほぼ以下の記事のとおり。MacOS Mojave にて検証。 参考:Finder のコンテキストメニューに「Visual Studio Code で開く」を追加する - Qiita Automator を開き、「新規書類」を作成する 書類の種類は「クイックアクション」を選択する ライブラ
一つひとつを記事にするほどでもない雑多な学習メモたち。 Shebang は #!/bin/bash にしよう 命名規則 シェルスクリプトの関数 関数の戻り値が欲しい時 ローカル変数を宣言するには local を付与して宣言する 関数の引数 他ファイルに書いた変数や関数を利用する .bashrc の肥大化問題 その他 Shebang は #!/bin/bash にしよう #!/bin/sh だと微妙に動きが異なることがある。Bash 特有の機能を使っていることも多いので #!/bin/bash と書く方が良い。 命名規則 関数、通常の変数、ファイル名はロウワー・スネークケース (lower_snake_case) ローカル変数 (local) は先頭にアンダースコアを付けて区別する例もあった (_local_variable) 定数 (readonly)、環境変数はアッパー・スネークケース
Twitter 投稿やメール送信用に、開いているページのタイトルと URL をコピーしたいことがあったので作った。 いきなりだがブックマークレットは以下のとおり。 javascript:((d,e)=>{e=d.createElement('textarea');e.textContent=d.title+' '+d.URL;d.body.appendChild(e);e.select();d.execCommand('copy');d.body.removeChild(e)})(document); セルフ Uglify したもので、圧縮前のコードはこんな感じ。 ((d, e) => { e = d.createElement('textarea'); e.textContent = d.title + ' ' + d.URL; d.body.appendChild(e); e.sele
Git には Hooks という仕組みがあり、git commit コマンドを実行した時とかに自動実行するスクリプトを設定できる。 参考:Gitのフックの説明と挙動の検証 - Qiita … フックの種類 今回はこの仕組を使って、pre-commit のタイミング、つまり git commit コマンド実行時に自動フォーマットをかけたりしてみる。 フックスクリプトはどこにある? フックを設定するためのスクリプトがどこにあるかというと、Git プロジェクト配下の ./.git/hooks/ 配下にある。 デフォルトではココに pre-commit.sample といったファイルが置いてあるかと思う。実際にフックを有効にするには pre-commit というファイル名にリネームすることで使えるようになる。 今回は pre-commit.sample はそのままに、空の pre-commit フ
macOS High Sierra パーフェクトマニュアル 作者: 井村克也出版社/メーカー: ソーテック社発売日: 2017/10/20メディア: Kindle版この商品を含むブログを見る 完全理解! macOS High Sierra (Mac Fan Special) 出版社/メーカー: マイナビ出版発売日: 2017/11/29メディア: ムックこの商品を含むブログを見る MacBook なんかにモニタを接続し、デュアルモニタで作業している人もいるだろう。 そんな時に、セカンドモニタの下部にマウスを持っていってしまい、メインモニタの下部にあった Dock がセカンドモニタの下部に出てきやがってイライラすることもあるだろう (イライラしない?)。 コレが死ぬほど嫌だったので回避方法を調べた。 参考:macOS Sierraで複数モニタ間でDockを移動させない方法 - KEINOS™
これまでどこかで適当に調べては適当に実行していた defaults コマンドだが、この度一つのシェルスクリプトにまとめてみたので、それを紹介する。 dotfiles/MacOS.sh at master · Neos21/dotfiles · GitHub 現時点での内容は以下のとおり。 #!/bin/bash # ================================================================================ # 【For Mac】MacOS.sh : Setup MacOS # ================================================================================ if [ "$(uname)" != "Darwin" ] ; then echo '
MacBook 上で http://localhost:9999/ を立ち上げていて、USB 接続している iPhone からそれを参照したい場合。iPhone 上で localhost:9999 と指定しても、どこのローカルホストやねんとなるので、違う指定の仕方をする。 まず Mac の「システム環境設定」→「共有」を開き、「コンピュータ名」を確認する。ココでは「neos21.local」になっているモノとする。特に「インターネット共有」とかは必要なし。 次に iPhone 側の Safari などで、http://neos21.local:9999/ にアクセスする。 コレだけ。 MacBook 側で「インターネット共有」を ON にし、 「共有する接続経路」を「Wi-Fi」か「Thunderbolt Ethernet」 「相手のコンピュータでのポート」で「iPhone USB」にチェ
StackBlitz という Web サービスを発見した。「Web ブラウザ上で動作する VSCode」といったところで、Angular や React などのプロジェクトを作成してその場で動作させられる Playground だ。 The online code editor for web apps. Powered by Visual Studio Code. - StackBlitz 何が凄いかというと、 ユーザ登録しなくても使える GitHub 連携してのログインも可能 VSCode の画面がほぼブラウザ上に再現されている ファイルツリー、シンタックスハイライト、入力補完など 参考:StackBlitz — Online IDE for Angular & React powered by Visual Studio Code⚡ Angular CLI のコマンドが使える ng
Cached View というウェブサイトを見付けて触発された。 Google Cached Pages of Any Website - CachedView URL を入力してボタンを押すと、「Archive.org」か「Google Web Cache」のいずれかでキャッシュされたページが見られる、というモノ。 コレが大変便利だったので、なんとかブックマークレットにできないかなぁと思ってやってみた。 実は簡単な仕組みだった 今見ているページを Archive.org か Google Cache で開くブックマークレット 現在のページを Archive.org で開く 現在のページを Google Cache で開く URL を入力して Archive.org か Google Cache で開く URL を入力して Archive.org を開く URL を入力して Google
次のページ
このページを最初にブックマークしてみませんか?
『Corredor → Neo's World』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く