楽天アフィリエイト

2023年4月12日水曜日

chatGPTについて

 最近話題になっていますね。


chatGPTとは(以下は,chatGPTに書いてもらいました。)

ChatGPTは、OpenAIによって開発された大規模な自然言語処理モデルで、GPT-3.5アーキテクチャに基づいています。ChatGPTは、様々な種類の自然言語タスクに対して高い精度を発揮することができ、多岐にわたる応用が期待されています。ChatGPTは、現在の最先端の自然言語処理技術の一つであり、自然言語処理分野において大きな注目を集めています。


chatGPTに与える命令(プロンプト)によって使えたり使えなかったりするそう

いろいろ調べてわかったことをメモしておきます。

・計算などは苦手

・質問時に制約をつけるとほしい回答になりやすい

・新しく何かを考える際のアイデア出しに便利


プロンプトの例

「あなたは学校の先生です。子供にもわかりやすいように教えてください。」

「あなたはプロのシェフです。今から言う材料だけで作れる料理のレシピをいくつか教えてください。」

回答方法に条件をつける際の例

「100文字程度で答えてください」

「全てひらがなで答えてください」

「英語に翻訳して答えてください」

「箇条書きで」


あと,日本語より英語の学習量が多いためより,英語での質問の方が精度の高い答えが得られるそうです。

ちなみに下記のように質問するとそれができるみたい

「今から質問する内容を,英訳してから回答してください。回答は更に日本語に翻訳してください。」




2022年5月12日木曜日

PreferenceDataStore での起動判定

 Androidでの起動判定をDataStoreを使用して実施

忘備録としてプログラムの一部を記載


DataStoreが安定版の1.0.0

// Preferences DataStore
implementation 'androidx.datastore:datastore-preferences:1.0.0'
implementation 'androidx.datastore:datastore-preferences-core:1.0.0'


DataStoreSetting.kt


val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "DataStoreSetting")

class DataStoreSetting {
object PreferenceKey {
val START_FLAG = booleanPreferencesKey("StartFlag")
}

// 起動フラグの取得
suspend fun getFlag(context: Context): Boolean {

// DataStoreからフラグを取得
val flagFlow: Flow<Boolean> = context.dataStore.data
.catch { exception ->
if (exception is IOException) {
emit(emptyPreferences())
} else {
throw exception
}
}.map { preferences ->
// デフォルト値:false
preferences[PreferenceKey.START_FLAG] ?: false
}

// 起動フラグ取得
val flag = flagFlow.first()

return flag
}

// 起動フラグの設定
fun setFlag(context: Context) {
CoroutineScope(Dispatchers.Main).launch {
context.dataStore.edit { setting ->
setting[PreferenceKey.START_FLAG] = true
}
}
}

}


Fragment

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

// 非同期処理
CoroutineScope(Dispatchers.Main).launch {

val intent: Intent
// 起動フラグ
val startFlag = dataStoreSetting.getSetupCompletedFlag(requireContext())

intent = if (startFlag) {
Intent(activity, SecondActivity::class.java)
} else {
Intent(activity, FirstActivity::class.java)
}
    }
    dataStoreSetting.setFlag(requireContext())
startActivity(intent)
}


参考サイト:

https://developer.android.com/topic/libraries/architecture/datastore?hl=ja

https://developer.android.com/codelabs/android-preferences-datastore?hl=ja#0

https://zenn.dev/slowhand/articles/455aa5cd244e90

https://akira-watson.com/android/sharedpreferences.html

https://stackoverflow.com/questions/67265984/is-it-possible-to-read-write-primitive-types-from-datastore-without-flows



2022年4月5日火曜日

RecycleViewでの選択表示

 RecycleViewでの選択表示ができたのでメモ


環境

AndroidStudio:2021.1.1 Patch2

TargetSDK:31


やりたいこと

・リストを1つ選択状態で表示し,クリックした部分を選択にし,ほか選択部分は解除


参考にしたサイトで継承などしてましたが,継承するとクリックイベントが取れなくなったりしたのでとりあえずadapterに直書き

あと画面外に流れた際におかしくなっていましたが,画面外のリストをアタッチするタイミングでも判定すれば問題なく動作しました。

Adapter.kt

class KindAdapter(private val kindList: ArrayList<KindListData>, var defaultCode: String = "") :
RecyclerView.Adapter<KindAdapter.ViewHolder>() {

// 表示中のリスト
private var attachedItems = mutableSetOf<RecyclerView.ViewHolder>()
// 選択アイテムのID(ポジション)
private var checkedItemId: Int = 0


class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
// 表示するコードと名前をセット
val code: TextView = view.findViewById(R.id.kindCode)
val name: TextView = view.findViewById(R.id.kindName)
// 選択表示する用のTextView
val row: CheckedTextView = view.findViewById(R.id.kindRow)
}

override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(viewGroup.context)
.inflate(R.layout.layout_kind_list_item, viewGroup, false)

// デフォルト表示
repeat(kindList.size) {
if (kindList[it].code == defaultCode) {
checkedItemId = it
}
}

return ViewHolder(view)
}

override fun onBindViewHolder(viewholder: ViewHolder, position: Int) {
val kind = kindList[position]

Timber.i("onBindViewHolder-position:${position}:${viewholder}")
viewholder.code.text = kind.code
viewholder.name.text = kind.name
viewholder.itemView.setOnClickListener {
choiceSingleItem(viewholder, position)
listener.onItemClick(kind)
}
}

override fun getItemCount() = kindList.size

private fun choiceSingleItem(viewHolder: ViewHolder, position: Int) {
checkedItemId = position
Timber.i("choiceSingleItem:${checkedItemId}| position:${position}")
// クリック時に表示されているリスト項目を処理
attachedItems.forEach {
//クリックしたポジションと同じが判定(画面の背景色はdrawbleで実施)
(it as ViewHolder).row.isChecked = it.absoluteAdapterPosition == checkedItemId
notifyItemChanged(position)
}
}

// 画面外のリストが表示されるとき
override fun onViewAttachedToWindow(holder: ViewHolder) {
Timber.i("onViewAttachedToWindow:${holder.absoluteAdapterPosition}| checked=${checkedItemId}")
attachedItems.add(holder)
// 画面表示外のリストを処理
holder.row.isChecked = holder.absoluteAdapterPosition == checkedItemId
}

// 画面のリストが画面外で破棄?されるとき
override fun onViewDetachedFromWindow(holder: ViewHolder) {
Timber.i("onViewDetachedFromWindow:${holder}| checked=${checkedItemId}")
attachedItems.remove(holder)
}
}



参考:

https://android.suzu-sd.com/2021/04/recyclerview_choice_mode/

https://qiita.com/CAIOS/items/d7675a12b1345bf180d1





2022年4月1日金曜日

年金について

 年金について話題になっているので軽く調べてみた。


2022年4月からの変更点は色々あるけど大きく影響があるのが下記の2点

・繰下げ受給の上限年齢引上げ

現状70歳まで繰下げできたのが75歳まで繰下げ受給を選択できるようになった。

繰り上げの増額率は月0.7%増は変わらず

・繰上げ受給の減額率見直し

減額率が月0.5%から月0.4%になった


そこで繰上げ,繰下げした場合,どれくらいの差になっていつ給付したほうが得なのか

基準である65歳を100%とした場合

60歳での受給は76%(減額24%)

70歳での受給は142%(増額42%)

75歳での受給は184%(増額84%)

これを見ただけでは単純に75歳受給が強そうですが

75歳の給付が一番もらえるようになるのは95歳からです。

(男性ならだいぶ厳しそうですね。)


給付開始年齢:給付額が一番高くなる年齢

60歳:75歳までは一番給付額が高い

61歳:76~77

62歳:78~79

67歳:80

68歳:81~82

69歳:83~84

70歳:85~86

71歳:87~88

72歳:89~90

73歳:91~92

74歳:93~94

75歳:95歳~


63~66歳での給付を選択するのは間違いな気がしますね。


平均寿命:男性81歳,女性87歳とした場合

男性:68歳での給付を選択

女性:71歳での給付を選択

が一番もらえます

100歳まで生きるなら75歳一択!

(給付までどうするのなどは考慮していませんのであしからず。)


細かい部分は下記リンクの表で確認してください。

(本来は月ごとなのであくまで年単位のざっくりしたものです)

https://1drv.ms/x/s!AqK7Xkys8oqPuxVel-NactGVdZ51?e=rffBVb



2022年3月15日火曜日

Android でログのファイル出力(Timber+Log4J)

Androidアプリのログをファイル出力したい
Timber+Log4Jを使ったのでメモ

Kotlinで作成
Log4Jは脆弱性の対象となる前の(1.2.17)を使用
対応した現状の最新版(2.17.1)を使用したかったが,
まだ対応されていない?のかできなかった。

1.buile.gradleに追加
// Log
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation 'de.mindpipe.android:android-logging-log4j:1.0.3'
implementation 'log4j:log4j:1.2.17'
2.application.ktの作成
var sLog : Logger? = null
override fun onCreate() {
super.onCreate()

initLog4J() // log4jの初期設定
initTimber() // Timberの初期設定

}
private fun initLog4J() {
val f = getFileStreamPath("${getString(R.string.app_name)}.log")
val logConfigurator = LogConfigurator()
logConfigurator.
fileName = f.path //ファイル名
logConfigurator.rootLevel = Level.ALL
logConfigurator.setLevel("org.apache", Level.ALL)
logConfigurator.
filePattern = "%d %-5p %m%n"         //メッセージ内容
logConfigurator.maxFileSize = (512 * 1024).toLong() //ファイルサイズ
logConfigurator.isImmediateFlush = true
logConfigurator.isUseLogCatAppender = false
logConfigurator.maxBackupSize = 1 //ファイル数
logConfigurator.configure()
sLog = Logger.getLogger(Application::class.java)
}
private fun initTimber() {
Timber.plant(Log4JTree())
}
private class Log4JTree : Timber.Tree() {
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
// Error,Warning,Infoのみ出力する
when (priority) {
Log.INFO -> {
sLog?.info(message)
}
Log.WARN-> {
sLog?.warn(message)
}
Log.ERROR -> {
sLog?.error(message)
}
}
}
}

3.使用方法
Timber.d("debug")   // ←これは出力されない
Timber.i("info")
Timber.w("warning")
Timber.e("error")






2022年3月2日水曜日

Bluetooth Adapterの取得

 Bluetooth使用時にAdapterを取得しているが

いろいろなサイトで下記の取得方法となっています。

val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()

google developer(https://developer.android.com/guide/topics/connectivity/bluetooth?hl=ja)でも現状変更されていない。


しかしAPI31で非推奨となり下記の警告が表示されます。

「'getDefaultAdapter(): BluetoothAdapter!' is deprecated. Deprecated in Java」


下記のように変更すれば,OKです。

val bluetoothManager = context?.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
val bluetoothAdapter: BluetoothAdapter = bluetoothManager.adapter



参考:https://stackoverflow.com/questions/69122978/what-do-i-use-now-that-bluetoothadapter-getdefaultadapter-is-deprecated

2020年6月4日木曜日

フレームワーク(FW)の確認方法

フレームワークの確認方法

「regedit」でレジストリエディタを表示

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

※なければ4.5以前となります。

上記のReleaseの値を確認

バージョン 最小値
.NET Framework 4.5 378389
.NET Framework 4.5.1 378675
.NET Framework 4.5.2 379893
.NET Framework 4.6 393295
.NET Framework 4.6.1 394254
.NET Framework 4.6.2 394802
.NET Framework 4.7 460798
.NET Framework 4.7.1 461308
.NET Framework 4.7.2 461808
.NET Framework 4.8 528040


2019年4月25日木曜日

AIスピーカー

現状は3つが大手って感じかな。それぞれでしかできない特徴はこんな感じかな
とりあえず買ってみようかな
どれを買うかは検討中

・google home
googleのAIスピーカー,声の識別,googleアカウントの連携ができる

・Alexa
AmazonのAIスピーカー,ネット注文ができる

・Clover
LINEのAIスピーカー,LINE通話ができる




2017年10月17日火曜日

VB6.0 から VB.NET(VS2008) へ STEP1

Windowsのアップグレードウィザードの実行方法

1.VS2008を開く
2.ファイル - 開く - プロジェクト/ソリューション を選択
3.VB6.0のVBPファイルを選択
4.Visual Basic アップグレード ウィザード が表示される

この後はウィザードの質問に沿って完了まで実施

これでアップグレード作業は完了

STEP2以降にてVS2008でのコンパイルエラーを手動にて処理

2017年8月18日金曜日

Access2016 メニューバー(リボン)の非表示方法

Access2016でランタイム使用時に
フォームの表示でメニューバーが気になったので消したかった。

メニューバーを非表示にする場合
DoCmd.ShowToolbar "Ribbon", acToolbarNo

メニューバーを表示させる場合
DoCmd.ShowToolbar "Ribbon", acToolbarYes

2017年8月10日木曜日

WIndows10/7 ネットワークドライブ作成でパスワードを不要にする方法

Windows10,Windowws7でネットワークドライブを作成する際に
ユーザーとパスワードの入力を求められることがある。

これを回避するには,共有フォルダのあるPCの設定で下記設定を変更すればOK
Windows10
「設定」⇒「ネットワークとインターネット」⇒
「ネットワークと共有センター」⇒「共有の詳細設定の変更」

Windwos7
「コントロールパネル」⇒「ネットワークとインターネット」⇒
「ネットワークと共有センター」⇒「共有の詳細設定の変更」

パスワード保護共有で「パスワード保護の共有を無効にする」を選択

これは,共有者をGuestとしてパスワードなしアクセスを行っている
Guestユーザーにパスワードを設定してた場合,この設定は無効にできない

2017年8月9日水曜日

太陽光発電+蓄電池 費用 

太陽光発電と蓄電池の設置。

色々調べてて太陽光の費用は調べてすぐ出たけど
蓄電池込での費用があまりよくわからなかったので
誰かの指標になればいいなと思って書いておきます。

Panasonic(2017年8月現在の最新モジュール HIT)
太陽光発電 3.9kw(南面+東面で屋根の形の台形型)
蓄電池 5.6kw(PLJ-B21)
設置工事費込

Total:250万円
(割引などの関係で一つ一つの値段が出せません。)

国からとかの補助金含めると200万くらいになります。






2017年8月3日木曜日

Access 「この関数をコンパイルするときにエラーが発生しました。」

Windows7,VB6,Access2003ランタイムで動作していたものを
Windows10,VB6,Access2016ランタイムに変更した際に,下記エラーが発生

「この関数をコンパイルするときにエラーが発生しました。」

このエラーの原因は,VBAのどこかにエラーがあって実行できないということ。

解決方法としては,ランタイムでなくAccessが動作する環境でデバッグ実行し
エラー個所を特定,解決することで問題が解決する。



2017年7月28日金曜日

Windows10 64bit パソコン設定 自動化

パソコンの設定で自動化できるコマンドのメモ

VB6.0でWindows10の設定を行う

'Windows7でのシリアルマウス対策
dwRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\services\sermouse", 0, KEY_ALL_ACCESS, dwKeyHandle)
dwValue = 4
dwRet = RegSetValueEx(dwKeyHandle, "Start", 0, REG_DWORD, dwValue, Len(dwValue))
dwRet = RegCloseKey(dwKeyHandle)

'電源オプションを高パフォーマンスに変更
Shell "cmd.exe /c powercfg.exe -SETACTIVE 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c", vbHide

'電源オプションのディスプレイの電源を切る時間を0(なし)に変更
Shell "cmd.exe /c powercfg -x -monitor-timeout-ac 0", vbHide

'電源オプションのUSBのセレクティブサスペンドを無効に変更
Shell "cmd.exe /c powercfg -setacvalueindex SCHEME_MIN 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0", vbHide

2017年7月24日月曜日

ポケモンGO

ポケモンGOが昨日から伝説ポケモンがレイドバトルに出現

でジムのレイドバトル仕様が変わったみたいなのでメモ
(今日までのイベント期間中だけの可能性あり)

・卵でレイドバトル発生までの時間表示がなくなる
(いつレイドバトルが発生するか不明)
・レイドバトル発生後,2時間レイドバトルとなる(変更前は1時間)

変更されたことによるメリット
・ジムにポケモンをセットしていた場合,2時間は帰ってこないため
 12ポケコイン確定!

変更されたことによるデメリット
・いつレイドバトルをすれば人が集まるのか不明
(田舎で伝説ポケモンの撃破はほぼ不可能)
前は時間がわかったことで発生直後に人が集まる傾向があったため
ド田舎でない限り数人レベルは集まってたのに・・

 

2017年7月21日金曜日

日本の休日

2022年現在 - 休日の定義

1.国民の祝日
元旦1月1日
成人の日1月の第2月曜日
建国記念の日2月11日(政令で定める日)
天皇誕生日2月23日
春分の日3月21日頃
昭和の日4月29日
憲法記念日5月3日
みどりの日5月4日
こどもの日5月5日
海の日7月の第3月曜日
山の日8月11日
敬老の日9月の第3月曜日
秋分の日9月23日頃
体育の日10月の第3月曜日
文化の日11月3日
勤労感謝の日11月23日
2.振替休日(通称)
国民の祝日が日曜日と重なる場合
その直後の「国民の祝日でない日」
例えば、5月3日や5月4日が日曜日と重なった場合には、
5月6日が振替休日となります。

3.国民の休日(通称)
国民の祝日に挟まれた平日
*平成18年までは5月4日が国民の休日でした。

春分の日、秋分の日は前年の2月に
国立天文台で作成された暦要項(れきようこう)によって決まります。
近年の春分の日(国立天文台サイトより)
2017年 3月20日
2018年 3月21日
2019年 3月21日
2020年 3月20日
2021年 3月20日
2022年 3月21日
2023年 3月21日
2024年 3月20日
2025年 3月20日
2026年 3月20日
2027年 3月21日

近年の秋分の日(国立天文台サイトより)
2017年 9月23日
2018年 9月23日
2019年 9月23日
2020年 9月22日
2021年 9月23日
2022年 9月23日
2023年 9月23日
2024年 9月22日
2025年 9月23日
2026年 9月23日
2027年 9月23日

2017年7月13日木曜日

情報の単位

情報の単位(SI接頭辞/2進接頭辞)
メガやギガはパソコン関連の用語として
最近聞いたことがある人が多いんではないでしょうか?
一般的にパソコンのROMやメモリは2進接頭辞であらわされ
1キロバイト = 1024バイトとされています。
k,Kは使い分けされており
k(小文字)はSI接頭辞
K(大文字)は2進接頭辞になります。

位読みSI桁数2進桁数
Yヨタ(yota)10の24乗2の80乗
Zゼタ(zetta)10の21乗2の70乗
Eエクサ(exa)10の18乗2の60乗
Pペタ(peta)10の15乗2の50乗
Tテラ(tera)10の12乗2の40乗
Gギガ(giga)10の9乗2の30乗
Mメガ(mega)10の6乗2の20乗
k,Kキロ(kilo)10の3乗2の10乗
hヘクト(hecto)10の2乗
daデカ(deca)10の1乗
dデシ(deci)10の-1乗
cセンチ(centi)10の-2乗
mミリ(milli)10の-3乗
μマイクロ(micro)10の-6乗
nナノ(nano)10の-9乗
pピコ(picoo)10の-12乗
fフェムト(femto)10の-15乗
aアト(atto)10の-18乗
zゼプト(zepto)10の-21乗
yヨクト(yocto)10の-24乗

数字の位(アメリカ)

アメリカの数字の位です。
イギリスなどでは同じ単語でもく桁数が変わるものもあるので注意

位読み(カナ)桁数
oneワン10の0乗
tenテン10の1乗
Hundredハンドレッド10の2乗
Thousandサウザンド10の3乗
Millionミリオン10の6乗
Billionビリオン10の9乗
Trillionトリリオン10の12乗
Quadrillionクアデリリオン10の15乗
Quintillionクィンティリオン10の18乗
Sextillionセクスティリオン10の21乗
Septillionセプティリオン10の24乗
Octillionオクティリオン?10の27乗
Nonillionノウニィリオン10の30乗
Decillionデシリオン10の33乗
Undecillionアンデシリオン10の36乗
Duodecillionドゥオデシリオン10の39乗
Tredecillionトレデシリオン10の42乗
Quattuordecillionクワツーオデシリオン10の45乗
Quindecillionクィンデシリオン10の48乗
Sexdecillionセクスデシリオン10の51乗
Septendecillionセプテンデシリオン10の54乗
Octodecillionオクトデシリオン10の57乗
Novemdecillionノウバンデシリオン10の60乗
Vigintillionビギンティリオン10の63乗

数字の位(日本)

日本の数字の位です。
1以下の単位も下にあります。

位読み桁数
無量大数むりょうたいすう10の68乗
不可思議ふかしぎ10の64乗
那由多なゆた10の60乗
阿僧祇あそうぎ10の56乗
恒河沙ごうがしゃ10の52乗
極ごく10の48乗
載さい10の44乗
正せい10の40乗
潤かん10の36乗
溝こう10の32乗
穣じょう10の28乗
坙し10の24乗
垓がい10の20乗
京けい/きょう10の16乗
兆ちょう10の12乗
億おく10の8乗
万まん10の4乗
千せん10の3乗
百ひゃく10の2乗
十じゅう10の1乗
一いち10の0乗

位読み桁数
分・割ぶ/わり10の-1乗
厘りん10の-2乗
毛もう10の-3乗
糸し10の-4乗
惚こつ10の-5乗
微び10の-6乗
繊せん10の-7乗
沙しゃ10の-8乗
塵じん10の-9乗
埃あい10の-10乗
緲(眇)びょう10の-11乗
漠ばく10の-12乗
模糊もこ10の-13乗
逡巡しゅんじゅん10の-14乗
須臾しゅゆ10の-15乗
瞬息しゅんそく10の-16乗
弾指だんし10の-17乗
刹那せつな10の-18乗
六徳りっとく10の-19乗
虚空こくう10の-20乗
清浄せいじょう10の-21乗
阿頼耶あらや10の-22乗
菴摩羅あんまら10の-23乗
涅槃寂静ねはんじゃくじょう10の-24乗

2017年6月19日月曜日

PowerShell ヘルプ コマンド一覧(コマンドレット)

PowerShellの便利そうなものを見つけた

コマンド(コマンドレット)一覧とヘルプを出力すれば簡易リファレンスができる

Get-Command | Get-Help | Out-File c:\output\help.txt

上記コマンドを実行すればhelp.txtにすべてのコマンドレットのヘルプが出力される