j3iiifn’s blog

ネットワーク、インフラ、プログラミングについての備忘録

"Android Basics in Kotlin"(2023年12月廃止)の目次

Android Developersのトレーニングコース "Android Basics in Kotlin" (2023年12月廃止) の目次と各ページのリンクを勝手にまとめてみた。

Youtube埋め込みプレイヤーでプレイリスト内の特定の動画を最初に再生させる方法

YouTube IFrame Player APIを使うとYouTube動画プレイヤーをWebサイトに埋め込める。 プレイリストを埋め込む場合、デフォルトではプレイリストの先頭(index=0)の動画から順に再生される。 先頭の動画ではなく、プレイリスト内にある特定の動画を最初に再…

Androidの開発者向けオプションの「アクティビティを保持しない」をコマンドラインから設定する

しょっちゅうON/OFFするけど、開発者向けオプションのかなり下の方にあるのでスクロールするのが面倒くさい。 実は、次のadbコマンドでON/OFFできる。 # ON adb shell settings put global always_finish_activities 1 # OFF adb shell settings put global …

pyppeteerでデバイスをエミュレートする

puppeteerでデバイスをエミュレートする方法はググればすぐに見つかるけど、pyppeteerでのやり方は見つからなかったのでメモしておく。 puppeteerなら const iPhone = puppeteer.devices['iPhone 8']; のようにライブラリで定義済みのデバイスを参照できるが…

(学習メモ)Android Architecture Blueprintsのtodo-mvvm-databindingブランチの相関図を描いた

MVVMパターンに入門したくて『Androidアプリ設計パターン入門』の「第2章 MVVMパターンを使ったアプリ構成」を読んだ。 peaks.cc この章ではAndroid Architecture Blueprintsのtodo-mvvm-databindingブランチをベースにMVVMパターンを解説している。 このブ…

Android 11 (API 30) の全画面モードを試してみた

Android 11 (API level 30) で追加された全画面モードの各パターンを試して、gifを並べてみた。

IntelliJのKeymapに出てくる修飾キーの記号がわかりづらすぎるのでまとめてみた

これはMac版Android StudioのKeymap画面なのだが、 なにこの矢印にゲジゲジが生えているやつ…どのキーなんだ… このゲジゲジに限らず、修飾キーの記号のなんとわかりづらいことか。 いや、覚えればいい話なのだが… 記号と修飾キーの対応関係はこのサイトがよ…

ラズパイでadbコマンドを使いたいだけなのにDebianパッケージをビルドする羽目になった

Raspberry Pi 2 Model B / Ubuntu 18.04.4 の環境において、aptでインストールしたadbがクラッシュしてしまう。原因と解決策をメモっておく。

外部ディスプレイの輝度・コントラストを2クリックで変更できるようにした

Mac

在宅勤務で地味にストレスになっていたのが、外部ディスプレイの輝度・コントラスト調整。 私は眩しいのが苦手なタイプの人間なので、ディスプレイは極限まで暗くして使用している。 オフィスと異なり、家では日中は自然光で生活しているため、時間帯によっ…

AtCoder, LeetCode, PaizaのPython実行環境を構築する

目的 各オンラインジャッジサイトの実行環境に合わせたローカル開発環境を構築する。 今回はAtCoder, LeetCode, Paizaの3サイトを対象とする。 方針 基本的にpyenvで複数のPythonバージョンをインストール&管理する。 ただし後述するように3.4.3だけpyenvで…

無料の音楽編集ソフトAudacityのシンクロ録音機能でKindleの読み上げを録音する

最近、勝間和代さんの記事に触発されて、Kindle本の読み上げを録音して、通勤中や単純作業中に聞いている。 Kindle本のAudiobook化の手順を動画にまとめました - 勝間和代が徹底的にマニアックな話をアップするブログ Kindleの読み上げをICレコーダーを使っ…

サンワサプライ USBオーディオキャプチャー 400-MEDI017はMacでも使える

Kindleのヘッドホン出力をPCに繋げて、Kindle本の読み上げ音声を録音したい。 そのような用途ではPCのライン入力端子を使用するが、MacBookシリーズにはライン入力端子が無い。 そこでライン入力のUSBアダプターを探していたらこれを見つけた。 オーディオキ…

SNMP TrapをAlertmanagerでアラート化する試み

SNMP Trapを受信したらメールやSlack等で通知する仕組みはsnmptrapdのtraphandleで簡単に実現できる。 単発のTrapがときどき来る程度であればその仕組みでも良いと思う。 しかし、大抵のシステムは何らかの故障時にTrapが大量に発生する。 すると、通知もそ…

VyOSのプライベートMIBをNet-SNMPに読み込ませる

SNMP Trapを勉強しようと思い、VyOSでTrapが飛ぶようなイベントを発生させて、Trapの内容を見ていた。 Link up/downはRFCで定義されたMIBを使用しているので問題なく読めた。 しかし、BGP peer up/downはVyOS独自(正確に言うとGNU Zebra独自)のMIBを使用し…

dpktのpack_hdrメソッドを読んだ

dpktはパケットを作成したり解析したりするPythonモジュールである。pcapファイルを読み込むときなどに使う。 kbandla/dpkt: fast, simple packet creation / parsing, with definitions for the basic TCP/IP protocols バイト列をやりとりする通信プログラ…

テキストファイルで タスク管理 兼 備忘録 を実現する

2年くらい続けているタスク管理&備忘録システムを紹介する。 タスクを管理するためのメソッドやツールは世の中にいろいろあるが、なかなか自分に合うものがなかった。 私がタスク管理ツールに望むものをざっと列挙してみる。 タスクの入れ子構造を許してほ…

readコマンドで1つの文字列から複数の変数に代入するとき

前提 Bash やりたいこと 変数 var_input に文字列が入っている。その文字列には、複数の値がカンマ区切りで記録されている。 input_var="aaa,bbb,ccc,ddd" 変数 input_var を読み込み、カンマ区切りで第1フィールドを変数 var_a に、第2フィールドを変数 var…

AndroidのChromeアプリで開いているタブのURLを全部取得する方法

通勤中にスマホで気になることをググったり、はてなブックマークやTwitterで話題の記事を見たりするのが習慣なのだが、一度開いたページを閉じられない病にかかっている。 後で見返したいページはブクマして閉じればいいし、実際そうしようと努力しているの…

Android端末にインストールされているアプリの一覧を作るワンライナー

動機 先日、Google Pixel 3aを購入した。 付属のアダプタを使用して古いAndroid端末からデータを移行してみたが、すべてのアプリのデータを移行できるわけではなかった。 仕方ないのでアプリをひとつひとつ開いてデータの移行ができているかチェックすること…

CodiMDのユーザ認証にオレオレ証明書のLDAPSを使う

やりたいこと CodiMDのユーザ認証にLDAPを使いたい LDAPサーバとの通信はLDAPSにしたい LDAPサーバにはオレオレ証明書(自己署名証明書, self-signed certificate)が入っている 困ったこと とりあえずCodiMDの公式ドキュメント Active Directory (LDAP) の…

止めていると主張が激しいストップウォッチを作った

Web: https://j3iiifn.github.io/blinking-stopwatch/ Code: https://github.com/j3iiifn/blinking-stopwatch 2年前にJavaScriptの練習で作ったストップウォッチを今更ながら公開した。GitHub Pagesはこういうのをサーバを用意せずにサッと公開できるから便…

まっさらなHPE製サーバにESXiをインストールするまでの道のり

HPE ProLiant DL ラックサーバにESXiをインストールする機会があったので、その手順をメモっておく。 1. リモートからiLOにアクセスできるようにする iLOのIPアドレスとユーザアカウントを設定する。 ここだけは現地での物理作業が必要。 サーバにディスプレ…

iLOやiDRACでOSをインストールするために、ISOファイルを配信する簡易HTTPサーバを立てる

やりたいこと iLOやiDRACを使って、リモートからOSをインストールしたい URL経由でISOイメージファイルをサーバに仮想的にマウントしたい iLO4の場合 Integrated Lights-Out 4 (iLO4) - リモートコンソールの使用方法 iDRAC9の場合 Integrated Dell Remote A…

Ubuntu 18.04 serverでちょろっとWebブラウザを開きたいとき

やりたいこと Webブラウザでとあるファイルをダウンロードしたい cURLやwgetではなく、Webブラウザからでないとダウンロードできないものがたまにある 例えば、VMware vSphere Hypervisor (ESXi) ISOファイルをダウンロードするには、WebブラウザでMy VMware…

Ubuntuでtracerouteとinetutils-tracerouteのどちらをインストールすればいいか?

Ubuntuでtracerouteコマンドを実行しようとすると、 $ traceroute Command 'traceroute' not found, but can be installed with: sudo apt install inetutils-traceroute sudo apt install traceroute このようにパッケージのインストールを求められるのだが…

iptables-persistent / netfilter-persistent を理解する

Ubuntu 18.04.2でNetfilterルールを自動でリストアするために、iptables-persistent / netfilter-persistentを使うことにした。 その内部処理を調べたのでまとめてみる。 動作確認環境 Ubuntu 18.04.2 $ dpkg -l | grep persistent ii iptables-persistent 1…

Netfilterルールを保存したりリストアしたりする方法はいろいろある

Netfilter自体には、ルールを保存したりリストアしたりする機能は用意されていない。 せっかく慣れないiptablesコマンドを勉強しながら頑張って設定しても、OS再起動後は全部消えてしまっているのである。 したがって、ルールの保存・リストアを行う仕組みが…

Ubuntu 18.04にしたらcurlで"sslv3 alert handshake failure"エラーが出るようになった

環境 Ubuntu 18.04.2 curl 7.58.0 OpenSSL 1.1.0g 事象 とあるダイナミックDNSサービスを長年愛用している。 自宅のIPアドレスが変更されたらcurlコマンドを叩き、そのダイナミックDNSサービスに通知する仕組みにしていた。 ところが、Ubuntu 18.04に上げて…

/etc/cloud/cloud.cfg.d/hoge.cfg に書いた ssh_pwauth が効かない

やりたいこと SSHのパスワード認証方式を禁止したい。それをcloud-initで設定したい。 前提条件 機種: Raspberry Pi 2 Model B OSイメージ: ubuntu-18.04.2-preinstalled-server-armhf+raspi2.img.xz https://wiki.ubuntu.com/ARM/RaspberryPi からダウンロ…

Raspberry Piの初期設定をcloud-initで半自動化する

2年くらい稼働させっぱなしにしていたRasPiのSDカードが故障した。 もはやどんな設定を入れていたか忘れたし、次回壊れたときに構築し直すのも面倒くさい。 そこで、今流行りのInfrastructure as Codeってやつを試してみることにした。 細かい設定はAnsible…