2022年に入ってから一度もブログを書いていないことに気付いたので、近況報告も兼ねて最近始めたことについて書いてみようと思います。
「基礎って大事だなー」と感じることが最近は多かったので、自分に欠けていると感じていることを基礎からやっていこうと思い、主に以下のことに取り組み始めました。
- 英会話スクール
- コンピューターサイエンスの勉強
- ボイストレーニング
- 運動
本記事では、基本情報技術者試験などでおなじみの「10進数からn進数への基数変換」の筆算に関して、あの計算で基数変換が行える理由を数式を用いて整理してみました。
なお、基数変換そのものや具体的な筆算の方法については、以下の記事などをご参照ください。
medium-company.com
Kotlinでビット操作を行うときのメモ。
よく使うビット操作をユーティリティメソッドとして以下にまとめました。
object BitwiseOperation { // numのiビット目の値(0もしくは1)を取得する fun getBit(num: Int, i: Int): Int = (num and createMask(i, i)).countOneBits() // numのiビット目に1をセットした整数を取得する fun setBit(num: Int, i: Int): Int = num or createMask(i, i) // numのiビット目を0にクリアした整数を取得する fun clearBit(num: Int, i: Int): Int = num and createMask(i, i, false) // numのiビット目を0もしくは1に変更した整数を取得する fun updateBit(num: Int, i: Int, shouldSet: Boolean): Int = if (shouldSet) setBit(num, i) else clearBit(num, i) // from〜toビット目が1(もしくは0)で、それ以外が0(もしくは1)となる整数を取得する fun createMask(from: Int, to: Int, shouldSet: Boolean = true): Int { require(from in 0 until Int.SIZE_BITS) { "from must be in the range of int bit size." } require(to in 0 until Int.SIZE_BITS) { "to must be in the range of int bit size." } require(from <= to) { "Incorrect indices combination. from: $from, to: $to" } val mask = (allOneBits shl (to + 1)).inv() and (allOneBits shl from) return if (shouldSet) mask else mask.inv() } // 全てのビットが1となる整数を取得する fun getAllOneBits(): Int = allOneBits private const val allOneBits: Int = 0.inv() }
最近オンライン英会話に取り組んでいるのですが、英語で英語を学んでいると「日本語では理解できるものでも、英単語を1つでも知らないと文全体の意味が全く分からない」ことがしばしばありました。
特に、英文法について説明されるときに使われる英単語を知らないことで、何を指摘されているかが理解できないことが多かったので、本記事では英文法を英語で理解するために覚えておいた方がよさそうな英単語をまとめました。
なお、本記事は私自身の学習の進行に応じて随時更新する予定です。
Unit Testでダミーを用意するために、MockKでString型のモックオブジェクトを生成しようとしたところ、以下のエラーが発生しました。
io.mockk.MockKException: Can't instantiate proxy for class kotlin.String
String型のモックオブジェクトが生成できないことを知らなかったので、スタックトレースを辿ったところ、
io.mockk.proxy.MockKAgentException: Failed to create proxy for class java.lang.String. class java.lang.String is one of excluded classes at io.mockk.proxy.jvm.ProxyMaker.throwIfNotPossibleToProxy
とあり、String型のモックオブジェクトを生成する過程で、ProxyMaker#throwIfNotPossibleToProxy()
内でMockKAgentException
がthrowされていました。
ProxyMaker#throwIfNotPossibleToProxy()
の処理内容を整理すると、以下のいずれかの条件を満たすときにモックオブジェクトが生成できないことが分かりました。
本記事では、現在選択されているタブを再度タップしたときに、タブ内のリストを先頭までスクロール(以下、Scroll To Topと呼びます)させる方法について記載しています。
なお、本記事の最後にサンプルコードのリンクを記載しているので、実行環境の詳細についてはそちらをご参照いただけますと幸いです。
IllustratorとPhotoshopでテキストを扱うとき、テキストエリアのサイズを変更するとテキストのアスペクト比も同時に変更されてしまい困る場面が多かったので、テキストエリアのサイズをテキストと独立した状態で可変にする方法について調べてみました。
Illustrator 2020 v24.3(macOS)とPhotoshop 2020 v21.2.4(macOS)で試しています。