投稿

Ubuntuのzip解凍で文字化けしてしまう時の対策

イメージ
 どうも、ケーサンヨーシです。  今回はzipコマンドで文字化けする時の対策を紹介します。 では行きましょう。 ■□■□■  LinuxとWindowsでは、それぞれOSで用いている文字コードが異なるそうです。 その違いから、Windowsで作ったzipファイルをLinuxで解凍すると、内容物のファイル名が文字化けすることがあります。 このような場合、コマンドでオプションを付けて解凍すると文字化けしなくなります。unzipはデフォルトでインストール済みのことがほとんどなので、追加でインストールする必要もないかと思います。 解凍コマンドは以下になります。 unzip -Ocp932 【zipファイル名】 例として、test.zipというファイルを解凍する場合は以下になります。 unzip -Ocp932 test.zip もし、このtest.zipファイルにパスワードがかかっている場合は、以下のコマンドで解凍できます。 unzip -Ocp932 -P 【zipファイルのパスワード】 test.zip 例として、hogehogeというパスワードがかかっている場合は以下になります。 unzip -Ocp932 -P hogehoge test.zip ■□■□■ というわけで、Ubuntuでのunzipの使い方を紹介しました。 正直、ここで躓くという方は少ないかもしれませんが、私が毎回コマンドを忘れるので、備忘録的に残しておこうと思った次第です。 以上!

AndroidのKotlinで手っ取り早くsuspend関数を呼び出す方法

イメージ
 どうも、ケーサンヨーシです。 今回は、コルーチンをよく知らないけどsuspend関数を呼び出したいというニッチな要望に答えたいと思います。 それでは行ってみましょう。 ■□■□■ まずは、そもそものsuspend関数がなんなのかといえば、以下のような形のファンクションです。 suspend fun hogehoge(){     // 中身色々 } このsuspendの付いたファンクションは、Kotlinのコルーチンという機能の一部になります。 コルーチンというのは、大雑把に言ってしまえば、メインスレッドとそれ以外のスレッドを簡単に扱うことができる機能です(正確にはちょっと違うんですが、こういう認識があればとりあえず動かせます)。 んで、このsuspendというファンクションですが、これはメインスレッド以外のスレッドからしか呼び出せないように制限を掛けられたファンクションです。 ですので、普通にonCreate()から呼び出そうとしても、onCreate()がメインスレッドで動作しているため、エラーが出てしまいます。 このsuspendファンクションを呼び出すためには、以下の処理が必要です。 ①コルーチンが使えるようにインポートを行う。 ②メインスレッド以外で実行するブロックを作成し、suspendを呼び出す。 ①コルーチンが使えるようにインポートを行う build.gradleのdependenciesブロック内に以下を記載する。 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' 記載を行ったら、上の方に「Synk now」という青文字が出てくると思うので、それをクリックします。 ②メインスレッド以外で実行するブロックを作成し、suspendを呼び出す コルーチンでは、以下のようなブロックを作成することで、ブロック内は指定したスレッドで行われるようになります。 CoroutineScope(Dispatchers.Default).launch{     // メインスレッド以外のスレッドで行われる     // 例↓     hogehoge() } ブロック内では、suspend...

UbuntuでGhostscriptを使ってPDFを圧縮する

イメージ
 どうも、ケーサンヨーシです。 今回は、Ghostscriptを使って、画像付きpdfを圧縮する方法を紹介します。 それでは行ってみましょう。 ■□■□■ インストール Ghostscriptのインストールは、以下のコマンドで行います。 $ sudo apt install ghostscript バージョン確認 インストールできたかどうかの確認は、以下のコマンドでバージョンの確認をしてみるとわかります。 $ gs -v GPL Ghostscript 9.56.1 (2022-04-04) Copyright (C) 2022 Artifex Software, Inc.  All rights reserved. 圧縮のオプション pdfを圧縮する場合は、画像の品質と、pdfのサイズを決めてから行います。 品質の種類(上の方ほど品質がよく、下の方ほど圧縮率が高いです) ・/default ・/prepress ・/printer ・/ebook ・/screen pdfのサイズ ・a4(A4縦型) ・b5(B5縦型) ・任意のピクセル 圧縮コマンド 具体的な圧縮のコマンドは、以下になります。 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=[品質の種類] -dNOPAUSE -dBATCH -sPAPERSIZE=[pdfのサイズ] -dPDFFitPage -sOutputFile=[出力ファイル名] [入力ファイル名] pdfのサイズを任意で指定する場合は、以下になります。 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=[品質の種類] -dNOPAUSE -dBATCH -dDEVICEWIDTHPOINTS=[pdfの横幅(px)] -dDEVICEHEIGHTPOINTS=[pdfの縦幅(px)] -dPDFFitPage -sOutputFile=[出力ファイル名] [入力ファイル名] 具体例としては、こんな感じになります。 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -...

Ubuntuでf3を使ってSDカードの容量詐欺確認を行う方法

イメージ
どうも、ケーサンヨーシです。 今回はf3を使って、SDカードの容量詐欺が行われているかどうかを確認します。 それでは、いってみましょう。 □■□■□ まずはインストールします。 $sudo apt install f3 インストールできたら、テスト対象のストレージがどこにあるのかを確認します。 GUIで確認する方法としては、「ファイル」アプリで対象ストレージを開きます(中身は空っぽのはず)。そこで右クリックし、端末で開くを選択します。 端末で開くと、そのフォルダーの場所が表示されるので、f3でそのフォルダを使用します。多くの場合は、/media/[ユーザー名]/[ランダムな文字列]になるかと思います。 書き込みテストを行う場合は、以下のコマンドを実行します。読み込みテストを行う前にも、先に書き込みテストを行う必要があります。 f3write [先程調べたストレージの場所] テストが始まると、以下のようにファイルが書き込みされていきます。 F3 write 8.0 Copyright (C) 2010 Digirati Internet LTDA. This is free software; see the source for copying conditions. Free space: 119.02 GB Creating file 1.h2w ... OK!                          Creating file 2.h2w ... OK!                          Creating file 3.h2w ... OK!                          Creating file 4.h2w ... OK!               ...

Androidでデータを保存するRoomを使う方法

イメージ
どうも、ケーサンヨーシです。 今回は、Android開発で必須級の、データを保存する方法の一つであるRoomの実装方法を解説します。 それでは行ってみましょう。 □■□■□ 【対象環境】 開発環境:Android Studio 言語:Kotlin データの保存方法の種類 Androidの開発で使用されるAndroid Studioですが、データを保存する方法はいくつかあります。 ①DataStore(旧SharedPreferences)を使用する ②Room(SQLite)を使用する ③ストレージにファイルとして保存する ①は、音量や通知設定など、比較的小さなデータを簡単に保存する方法で、鍵となるワードとデータを一組として保存します。例として、鍵が「bgmVolume」、データが「3」といった感じです。元々はSharedPreferencesを用いていましたが、現在はDataStoreを使用することが推奨されています。 ②は、Androidスマートフォン内で動いているSQLiteというデータベースにデータを保存する方法で、比較的量の多いデータを保存する時に使用します。SQLiteはリレーショナルデータベースなので、MySqlなどの一般的なデータベースと同じ形式でデータが保存されています。今回紹介するのはこちらです。 ③Androidスマートフォンの内部ストレージにファイルを作成し、そこにデータを書き込んで保存します。自身でファイルの内容を管理しなくてはいけないため、少々面倒な方法ですが、①や②の方法と異なり、アプリをアンインストールしてもデータを保持し続けることが可能です。 自身の状況に合わせて、これらの方法の中から最適なものを選びましょう。 Roomの実装方法 1.必要なパッケージのインポート Projectのbuild.gradleファイル内に以下を記述します。 dependencies {     implementation "androidx.room:room-ktx:2.4.3"     kapt "androidx.room:room-compiler:2.4.3"     implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-an...

ffmpegで音のノーマライズを行う方法

イメージ
どうも、ケーサンヨーシです。 今回は、ffmpegのノーマライズについてです。 ノーマライズとは、音量が大きすぎたり小さすぎたりするものを統一する処理のことです。 使用例として、複数の音楽を連続で聞いていても、曲ごとに音量変更が必要ないといった感じで使用します。 ffmpegを使用したノーマライズの方法は複数ありますが、それらを比べる記事が無かったので比べてみました。 それではいってみましょう。 ■□■□■ ffmpegを使用したノーマライズの方法は、調べた限り以下の2つがあります。 ①-filter:a loudnorm ②-af dynaudnorm それぞれ説明します。 ①-filter:a loudnorm この方法は、以下のコマンドで使用できます。 ffmpeg -i 入力ファイル -filter:a loudnorm 出力ファイル 具体的には、音量が低すぎたり高すぎたりするファイルを変換する際、最初の方の音としばらくした後の音の音量の差が大きく、音楽を聞いている際に違和感が生じます。 これを回避する方法として、音楽の音量を分析して、それから変換するという方法が取られますが、ffmegの場合、単純な一行のコマンドでそれを実行するのは難しいため、2度変換処理を挟む必要があります。 スクリプトを組めばこの2度の変換もできるため、スクリプトを組みなれている方はそれが最適解かと思います。 ②-af dynaudnorm この方法は、以下のコマンドで使用できます。 ffmpeg -i 入力ファイル -af dynaudnorm 出力ファイル やっていることとしては、最大音量を元に、全体の音量を調整しているようです。 この方法の欠点は、最大音量を元にしているため、ノーマライズしたとしても音量差が出てしまうという点です。 ただ、全体の音量を変換しているため、難しいことをせずにそれなりのノーマライズを行いたいというだけであれば、こちらのほうが違和感が少なく音を聞けるかと思います。 また、この方法のバグ?か分からないのですが、動画をノーマライズしようとすると、最初の一秒間の音が無音になってしまいました。この現象の回避方法として、動画と音を別に変換し、後からくっつけるという方法を取ることで、発生しなくなりました。 ffmpeg -i 入力動画ファイル -an 出力動画ファイル...

Android Studioでリリース版APKとデバック版APKを自動で別アプリにする方法

イメージ
どうも、ケーサンヨーシです。 今回は、Android Studioでデバック版のAPKファイルを作成する際、自動で別アプリ判定になるようなAPKファイルを作る方法を紹介します。 つまり、ストアからインストールしたアプリと、Android Studioからインストールしたローカルのアプリがスマホ内で横に並ぶような感じになります。 それでは、いってみましょう。 □■□■□ まず、アプリの基礎知識から。 スマートフォン内にアプリは複数インストールできますが、それらがどのように区別されているかというと、アプリごとのパッケージIDによって行われています。 今回行おうとすることは、このアプリごとのパッケージIDをデバック版とリリース版で自動で分けることです。 変更箇所は、build.gradleファイルです。以下の内容を追加します。 android{     ・・・     buildTypes{         ・・・         debug{             ・・・             applicationIdSuffix = ".debug"             ・・・         }         ・・・     }     ・・・ } 変更を行ったら、Synk Nowを押して記載した内容を反映させます。 上手くいくと、例としてアプリのパッケージIDがexample.comだった場合、リリース版はそのままexample.comとなり、デバック版ではexample.com.debugとなり、別アプリ扱いとなります。 以上の方法で、リリース版とデバック版のアプリを別アプリにすることができますが、パッケージIDを利用している記述で不都合が生じます。 私の場合、Google Playの課金サービスを実験しようとした際、デバック版では別アプリ...

このブログの人気の投稿

動画編集ソフト「Shotcut」で縦向きの動画を横向きにする方法。

Audacityで音声部分のみを自動カットする方法

Android Studioでの動的なLayoutの幅と高さの変更方法