2021-01-01から1年間の記事一覧

10進数からn進数への基数変換を行う筆算の数学的な理解

本記事では、基本情報技術者試験などでおなじみの「10進数からn進数への基数変換」の筆算に関して、あの計算で基数変換が行える理由を数式を用いて整理してみました。 なお、基数変換そのものや具体的な筆算の方法については、以下の記事などをご参照くださ…

Kotlinでビット操作

Kotlinでビット操作を行うときのメモ。 よく使うビット操作をユーティリティメソッドとして以下にまとめました。 object BitwiseOperation { // numのiビット目の値(0もしくは1)を取得する fun getBit(num: Int, i: Int): Int = (num and createMask(i, i)).…

英文法を英語で理解するために覚えておいた方がよさそうな英単語

最近オンライン英会話に取り組んでいるのですが、英語で英語を学んでいると「日本語では理解できるものでも、英単語を1つでも知らないと文全体の意味が全く分からない」ことがしばしばありました。 特に、英文法について説明されるときに使われる英単語を知…

MockKでモックオブジェクトが生成できない条件

MockKでString型のモックオブジェクトを生成しようとしたところ、以下のエラーが発生しました。 io.mockk.MockKException: Can't instantiate proxy for class kotlin.String String型のモックオブジェクトが生成できないことを知らなかったので、スタックト…

JUnit 5の@TestInstance(Lifecycle.PER_CLASS)を指定したクラスでのモックオブジェクトの生成とスタブメソッドの設定は別の場所で行う

JUnit 5 × Kotlinで@BeforeAllや@AfterAllを使いたかったり、Parameterized Testで@MethodSource用のstatic相当なメソッドを宣言したかったりするときなどは、対象のクラスに@TestInstance(Lifecycle.PER_CLASS)を指定します。 このアノテーションを指定した…

Figmaで「方向キーによる選択オブジェクトの移動距離」を変更する方法

Figmaでデザインを行うとき、選択したオブジェクトの位置を方向キーによって微調整することがよくあると思います。 このとき、デフォルトでは 方向キー: 指定した方向に1pt移動 Shiftキー+方向キー: 指定した方向に10pt移動 という動作をしますが、昨今のデ…

AndroidのActivityやFragmentで文字列と文字列リソースを一括して扱うためのsealed classの作成

Androidで文字列を扱う場合、以下の2パターンのいずれかであることが多いと思います。 クライアント側で定義した文字列リソースを使用する サーバー側から受け取った文字列を使用する これらをActivityやFragmentで一括して扱うために、以下のようなsealed c…

TabLayout + ViewPager2でScroll To Topを実現する方法

本記事では、現在選択されているタブを再度タップしたときに、タブ内のリストを先頭までスクロール(以下、Scroll To Topと呼びます)させる方法について記載しています。 なお、本記事の最後にサンプルコードのリンクを記載しているので、実行環境の詳細につ…

IllustratorとPhotoshopでテキストエリアのサイズをテキストと独立した状態で可変にする方法

IllustratorとPhotoshopでテキストを扱うとき、テキストエリアのサイズを変更するとテキストのアスペクト比も同時に変更されてしまい困る場面が多かったので、テキストエリアのサイズをテキストと独立した状態で可変にする方法について調べてみました。 Illu…

Swiftのextensionを利用してクラス名の衝突を解決する

iOSアプリのコードをいくつか見ていて、名前空間の扱いがKotlinとSwiftで異なり困惑する場面があったので、その解決方法に関する備忘録です。 名前空間とは Swiftではグループによるクラス名の識別はできない Nested Typeによる解決 extensionの利用による解…

KotlinではComparableインタフェースを実装したクラスのオブジェクト同士を比較演算子で直接比較できる

タイトル通りの内容ですが、地味に初めて知ったので備忘録として。 Dateクラスを例として 比較演算子はcompareTo()メソッドに変換される? 比較演算子は「compareTo()メソッド + 期待される値の範囲」の組み合わせに変換される