AndroidStudioでMarkdownプレビューが表示されない時の対処法

プラグインは対応はしてるのに未だ表示されず。

👉 Markdown - IntelliJ IDEs Plugin | Marketplace hatena-bookmark

一時期は表示されてたことありませんでしたっけ。

 

■ プレビューを表示させる

これ。

The Java Chromium Embedded Framework (JCEF) is a simple framework for embedding Chromium-based browsers in other applications using the Java programming language.

👉 JetBrains/jcef: A simple framework for embedding Chromium-based browsers into Java-based applications. hatena-bookmark

AndroidStudio 稼働のための Java を JCEF が含まれているものに変更すればプレビューを表示できるようです。

[email protected] #19Jun 30, 2022 12:57PM
Based on #7

TLDR for https://intellij-support.jetbrains.com/hc/en-us/articles/206544879-Selecting-the-JDK-version-the-IDE-will-run-under:

In the Android Studio:

1. Find action (ctrl + shift + A / command + shift + A)
2. Search for Choose Boot Java Runtime for the IDE
3. Select the latest version in the "New:" dropdown - e.g. 11.0.12+7-b1504.27 JetBrains Runtime with JCEF
4. OK
5. Restart
Worked in: Android Studio Chipmunk | 2021.2.1 Patch 1 | Build #AI-212.5712.43.2112.8609683

👉 Regression in markdown support (crashes 100% of the time). Missing JCEF [159933628] - Visible to Public - Issue Tracker hatena-bookmark

リスタートすると正しく表示されました。

 

■ まとめ

[email protected] #20Jul 1, 2022 03:48AM
Why isn't it the default?

ほんとそう、なんか問題あるんでしょうか、未検証なのでしょうか?

ちなみに、Mermaid プラグインははっきり未対応のようです。

👉 Mermaid - IntelliJ IDEs Plugin | Marketplace hatena-bookmark


Kotlin で Jetpack Compose, Retrofit を使って API リクエスト、JSON パース して、グリッド表示するコードをファイル別に表示して

Kotlin で Jetpack Compose と Retrofit を使って API リクエスト、JSON パースして、グリッド表示するためには、以下のようにファイルを分けることができます。

 

1. API リクエストを行うための Retrofit インターフェースを定義するファイル


interface ApiService {

    @GET("/photos")
    suspend fun getPhotos(): List<Photo>
}

 

2. API レスポンスを表すデータクラスを定義するファイル


data class Photo(
    val id: Int,
    val title: String,
    val url: String
)

 

3. API レスポンスをパースして、表示するための画面を定義するファイル


@Composable
fun PhotoGrid() {
    val photos by remember { mutableStateOf<List<Photo>>(emptyList()) }

    LaunchedEffect(Unit) {
        val apiService = Retrofit.Builder()
            .baseUrl("https://jsonplaceholder.typicode.com")
            .addConverterFactory(Json {
                ignoreUnknownKeys = true
            }.asConverterFactory("application/json".toMediaType()))
            .build()
            .create(ApiService::class.java)

        photos = apiService.getPhotos()
    }

    LazyVerticalGrid(cells = GridCells.Adaptive(minSize = 128.dp)) {
        items(photos) { photo ->
            Card(
                modifier = Modifier.padding(4.dp),
                shape = RoundedCornerShape(8.dp),
                elevation = 4.dp
            ) {
                Column(
                    Modifier
                        .fillMaxWidth()
                        .height(128.dp)
                        .padding(8.dp)
                ) {
                    Text(
                        text = photo.title,
                        style = MaterialTheme.typography.subtitle1,
                        maxLines = 2,
                        overflow = TextOverflow.Ellipsis
                    )
                    Spacer(modifier = Modifier.weight(1f))
                    CoilImage(
                        data = photo.url,
                        contentScale = ContentScale.Crop,
                        modifier = Modifier.fillMaxSize()
                    )
                }
            }
        }
    }
}

 

4. 上記の画面を表示するための Activity もしくは Fragment を定義するファイル


class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            PhotoGrid()
        }
    }
}

以上のように、ファイルを分けることで、API リクエストやパース、表示を分離し、コードを見やすく、メンテナンスしやすくすることができます。

 

■ 感想

ただ、一行問いかけただけ。

ChatGPT で、ここまで書けるとは。



アプリを使った 2段階認証 (2FA) を分かりやすく整理する

使いながらもなんか

ややこしい。

セキュリティ的に向上するのは分かるが、なんか

面倒くさい。

なので、一度整理してスッキリしておきます。

 

🔑 2段階認証 (2FA) とは

これまでのログイン。

アプリを使った 2段階認証 (2FA) を分かりやすく整理する

ID と パスワード を入力してログインします。

そして、2段階認証。

アプリを使った 2段階認証 (2FA) を分かりやすく整理する

ID と パスワード に加えて ワンタイムパスワード を入力してログインします。

 

🔑 ワンタイムパスワード

ワンタイムパスワード は、シークレットキー を保存している ワンタイムパスワード生成アプリ で生成します。

アプリを使った 2段階認証 (2FA) を分かりやすく整理する

シークレットキー は ワンタイムパスワード生成アプリ 内に保存しておくことになります。

アプリを使った 2段階認証 (2FA) を分かりやすく整理する

 

🔑 シークレットキー

シークレットキー は、ログインしたいサービス のサイトやアプリから発行されます。

そのサービスの 設定画面などから 2段階認証 を ON にして発行します。

アプリを使った 2段階認証 (2FA) を分かりやすく整理する

 

🔑 まとめ

以上の図をまとめておきます。

左(水色)が ログインしたいサービス で、右(灰色)が ワンタイムパスワード生成アプリ です。

例えば、水色が Twitter で、灰色が Google認証システムアプリ(Autenticator)。
アプリを使った 2段階認証 (2FA) を分かりやすく整理する

👉 Google 認証システム - Google Play のアプリ hatena-bookmark

それぞれの要素の意味合いを把握できていれば、画面遷移やサービスによる言葉の変化にも対応して読み替えることができます。

SMS(ショートメール) を使った2段階認証で受信するテキストの意味も分かると思います。


【iPhone】勝手な「使ってないアプリをアンインストールする」機能を無効化する方法

👉 あまり使わない決済アプリが勝手にアンインストールされていた - ケータイ Watch hatena-bookmark

勝手にアンインストールされると、イラッとする人向け。

そこまで自動にしたくない。


設定

 ↓

App Store

 ↓

非使用のAppを取り除く → OFF

あまり使わない決済アプリが勝手にアンインストールされていた

スマホのおせっかいは本当にうざいです。

👉 Android で使用していないアプリを削除、無効化、管理する - Android ヘルプ hatena-bookmark


Google Photos 6.23.1 for iOS 16.3.1 Released now!!

Multiple reports on social media complain about the issue, which The Verge also highlighted. It appears that the Google Photos app is crashing instantly when iPhone and iPad users attempt to open it after upgrading to the latest software.

👉 iOS 16.3.1 Breaks Google Photos App | MacRumors Forums hatena-bookmark


Google is aware of the issue, and is “in the process of rolling out a fix in version 6.23.1 of the Google Photos app,” according Michael Marconi, a spokesperson for the company.

Update February 14th, 12:46AM ET: Added statement from Google.

👉 If Google Photos is broken for you on iOS, you’re not alone - The Verge hatena-bookmark

 

■ 2023-02-14 19:30 JST Fixed version appeared.


Version 6.23.1 

No crashed!! 🆗😁

👉 Google Photos on the App Store hatena-bookmark