Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

【Kotlin】Kotlin Serialization で JSON をパースする

今回は、Kotlin Serialization を使って JSON をパースする方法を解説します。

【Android】Moshi で JSON をパースする

今回は、Moshi を使って JSON をパースする方法を解説します。

【Android】Activity Result API で他の Activity の結果を取得する

今回は、Activity Result API で他の Activity の結果を取得する方法を解説します。

【Kotlin】Kotlin Coroutines で非同期処理を行う

今回は、Kotlin Coroutines について解説します。

【Android】Retrofit で HTTP 通信を行う

今回は、Retrofit を使って HTTP 通信を行う方法を解説します。

【Android】map や switchMap で LiveData を変換する

今回は、map や switchMap で LiveData を変換する方法を解説します。

【Android】MediatorLiveData で他の LiveData を監視する

今回は、MediatorLiveData で他の LiveData を監視する方法を解説します。

【Android】アプリのインストールを検知する

今回は、Androidでアプリのインストールを検知する方法を解説します。

【Android】WebView の JavaScript からネイティブコードを呼び出す

今回は、WebView の JavaScript からネイティブコードを呼び出す方法を解説します。

【Android】LiveDataで値を監視する

今回は、AndroidのLiveDataで値を監視する方法を解説します。

Pythonのf文字列による文字列補完

今回は、Pythonのf文字列にて文字列を補完する方法を解説します。

Pythonのvenvでパッケージ管理する

今回は、venvを用いたPythonのパッケージ管理方法を解説します。

【Android】SavedStateHandle解説

今回は、AndroidのSavedStateHandleを解説します。

Pythonでプロパティを実装する

今回は、Pythonでのプロパティの実装方法を解説します。 プロパティとは? ここで取り扱うプロパティとは、クラス利用者がそのメンバ変数にアクセスするときにgetterやsetterを意識することなくアクセス出来るようにする仕組みです。 通常、クラスを実装する…

リンクを Markdown 形式でクリップボードにコピー

はじめに Markdown で執筆中、サイトのリンクを貼り付けたいときありますよね、きっと。そんなときは、chrome の拡張 Markdown Linker が便利です。 chrome ウェブストアより: ※chrome 拡張なので chrome 限定のお話です。ごめんなさい

画像を ASCII 表示させる方法

はじめに テストに用いるデータなど、サーバ上にあるイメージ(画像)を確認したいときないですか?このファイルなんだっけ?みたいな。そんなとき、jp2a を使えば画像を ASCII 表示できます。テキストで表示されるので、手軽にコンソールからも確認できるっ…

Pythonで読み取り専用コレクションを実装する

今回は、Pythonで読み取り専用コレクションのメンバ変数を実装する方法を解説します。 概要 通常、読み取り専用のメンバ変数を実装するときは、メンバ変数をプライベートにしつつ、getterのみ宣言して、setterを宣言しないようにします。 class Name: def __…

Pythonで抽象クラスを実装する

今回は、Pythonで抽象クラスを実装する方法を解説します。 抽象クラスとは? プログラミング言語によりある程度違いはありますが、抽象クラスとは、以下の特徴を持ったクラスになります。 継承されることを前提としています。 空実装のメソッドが定義されて…

【Android】コンストラクタに引数があるViewModelを使う

AndroidでViewModelを使用するとき、以下のようなコンストラクタに独自の引数があるViewModelを使用したいときがあります。今回は、その方法を解説します。 class MainViewModel(id: Int) : ViewModel() 独自Factoryの定義 ViewModelインスタンスの生成はVie…

キー入力をスクリーンキャストする

はじめに 前回の記事「git worktree と peco」の実演(gif アニメ)にて、キー入力を表示するために [screenkey] というソフトウェアを使いました。使用するにあたり、少しコツ(バグフィックス?)が必要だったので、備忘のためここに記します。 [screenkey…

【Android】WorkManagerでバックグラウンド処理を行う

今回は、AndroidのWorkManagerでバックグラウンド処理を行う方法を解説します。 概要 WorkManager を使用すると、処理をバックグラウンドで実行できます。WorkManager を使用すると、以下のメリットがあります。 完了に時間がかかる処理でもアプリが止まらな…

git worktree と peco

Git

はじめに その昔、[git-worktree] を使いやすくするためのスクリプトを紹介しましたが、[peco] に対応するために少し修正してみたのでご紹介します。 前の記事: git worktree list を少しだけ使いやすく - Smile Engineering Blog ※前回と同じく、zsh 用です

デジタルオーディオのボリュームをやってみる

DSP(Digital Signal Processor)のファームウェアを実装する時、いつも悩むことは、自分が実装した信号処理のプログラムが正しいか(?)、どのように検証するかで、 WindowsやLinuxでその期待の動作を十分に検証し(期待値を作り)、組み込んだファームウェア…

MIPSとMCPS

ソフトウェアの要件として、性能をMCPSでオーダーされたケースがありました。 前記事の「MIPSとMCPS(?)、100MIPSは100MHzで動くか?」では、 ソフトウェアのベンチマークとして、MIPS【Million Instructions Per Second 】と、MCPS【Million Cycles Per Seco…

コマンド 繰り返し 実行

誰しもコマンドを定期実行したいがために以下のようなスクリプトを書いたことがあると思います。 #!/bin/sh while : do clear date '+%s' netstat -anpt sleep 1 done

Date ヘッダ

はじめに テストなんかで急に Date ヘッダ を用意しなきゃダメな場面はよくあると思います。今までは Epoch Converter からコピーペなどして使っていたんですが、ローカルで求める方法があったのでご紹介します。

WAVフォーマットとヘッダ

「PCMにWAVヘッダを付ける」では、WAVヘッダを紹介しました。 WAVフォーマット(*.wav)は、 ファイルコンテナの一種で音源データを格納するファイル形式ですが、手っ取り早く リニアPCMにWAVヘッダを付けるだけでもWAVファイルとして扱うことが出来ます。 W…

あなたのLinuxは大丈夫? End Of Life を調べてみよう

Ubuntu21.04リリース!・・・の裏でこの季節が来てしまった 先日 別の方のブログ記事 で、Ubuntu 21.04がリリースについて触れられていました。 筆者は別の人間なのでまだ触っていませんが、それと同時に気になることが山のように出てきまして。。。 それは…

Wayland でのコマンドラインによる解像度変更

はじめに Ubuntu 21.04 がリリースされました。この版からデフォルトのウィンドウプロトコル(ディスプレイサーバプロトコル、ウィンドウシステム)として、Xorg に変わり Wayland が採用されています。 今までは xrandr コマンドを用いたスクリプトで解像度…

Audacityのバージョンアップ

Audacity Ver 3.0.0がリリースされていました。 リリース情報を見ると(こちら)、 Ver 2.4.2からのメジャーバージョンアップです(2021/3/17)。 インストールされているバージョンをチェック アップデートのチェック Windows 10でアップデート(新規インス…