AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-5587982

A. Cedano's questions

Martin Hope
A. Cedano
Asked: 2025-03-10 06:06:02 +0800 CST

如何在 Kotlin 中将字符串的第一个字符大写,同时忽略非字母字符?

  • 6

我正在使用replaceFirstChar()并将uppercase()字符串的第一个字符转换为大写。

但有些字符串的第一个字符可能是标点符号、引号等。在这种情况下,我希望它忽略它们,并替换它找到的第一个字母数字字符。

我怎样才能实现这个目标?

代码

fun main(){    
    println("kotlin".replaceFirstChar       { it.uppercase() })  // Kotlin
    println("¡kotlin!".replaceFirstChar     { it.uppercase() })  // I need ¡Kotlin!
    println("¿kotlin?".replaceFirstChar     { it.uppercase() })  // I need ¿Kotlin?
    println("\"¿kotlin?\"".replaceFirstChar { it.uppercase() })  // I need "¿Kotlin?"
    println("\"kotlin\"".replaceFirstChar   { it.uppercase() })  // I need "Kotlin"
}

输出

Kotlin
¡kotlin!
¿kotlin?
"¿kotlin?"
"kotlin"

期望输出

Kotlin
¡Kotlin!
¿Kotlin?
"¿Kotlin?"
"Kotlin"
kotlin
  • 2 个回答
  • 25 Views
Martin Hope
A. Cedano
Asked: 2024-11-18 06:28:51 +0800 CST

如何检查 PHP 中何时仅有开引号或闭引号以进行替换?

  • 7

在带有分隔符的文本中,我需要为用 LaTeX 编写的文档创建几个段落。此代码的目的是将引号内的任何内容替换为\textquote{the text}

假设有以下文本:

$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob».|Él nos enseñará sus caminos y caminaremos por sus sendas.|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";

我需要创建以下内容:

\fourargs
{Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob}.}
{%
Él nos enseñará sus caminos y caminaremos por sus sendas.%
}{%
Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
}{%
Él nos enseñará sus caminos y caminaremos por sus sendas.%
}
    

我可以使用以下代码毫无问题地实现这一点:

DEMO

$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob».|Él nos enseñará sus caminos y caminaremos por sus sendas.|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";    
$html="";
$break=PHP_EOL."\t";
$quotes=["/'(.*?)'/",'/"(.*?)"/',"/«(.*?)»/","/“(.*?)”/"];
$textquote="\\textquote{\$1}";                  
$fourArgs="
\\fourargs
    {%s}
    {%%
        %s%%
    }{%%
        %s%%
    }{%%
        %s%%
    }";
$tmp=explode('|',preg_replace($quotes,$textquote,$str));
$html.=sprintf($fourArgs,
           $tmp[0],
           $tmp[1],
           $tmp[2],
           $tmp[1]
       );
echo $html;

我的问题出现在执行 时,将开引号和闭引号放在不同的组中explode。在这种情况下,替换为textquote{...}无法按预期工作。

假设有以下代码:

DEMO

的内容$str如下:

$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob.|Él nos enseñará sus caminos y caminaremos por sus sendas».|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";    

最终结果如下:

\fourargs
    {Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob.}
    {%
        Él nos enseñará sus caminos y caminaremos por sus sendas}.%
    }{%
        Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
    }{%
        Él nos enseñará sus caminos y caminaremos por sus sendas}.%
    }

但预期的结果是:

\fourargs
    {Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob}.}
    {%
        \textquote{Él nos enseñará sus caminos y caminaremos por sus sendas}.%
    }{%
        Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
    }{%
        \textquote{Él nos enseñará sus caminos y caminaremos por sus sendas}.%
    }

我怎样才能在所有情况下都达到预期的结果?

  • 2 个回答
  • 82 Views
Martin Hope
A. Cedano
Asked: 2024-11-14 17:59:34 +0800 CST

如何使用分隔符从单个文件创建多个文件?

  • 2

我正在尝试从.txt带分隔符的文件生成多个文件。在本例中,列分隔符为|,记录分隔符为:║。

这是我正在尝试的代码:

awk -F'║', -vOFS=, -vc=1 '
NR == 1 {
    for (i=1; i<NF; i++) {
        if ($i != "") {
            g[c]=i;
            f[c++]=$i
        }
    }
}
NR>2 {
    for (i=1; i < c; i++) {
        print $1,$2, $g[i] > "output_"f[i]".tex"
    }
}' biennalis.txt

的内容biennalis.csv大致如下:

name|content
║Is-id27-ref06-01-13-1914|El año de la muerte del rey Ozías vi al Señor sentado en un trono excelso y elevado, y sus haldas llenaban el templo. Unos serafines se mantenían erguidos por encima de él; cada uno tenía seis alas: con un par se cubrían la faz, con otro par se cubrían los pies, y con el otro par aleteaban, y se gritaban el uno al otro:

 \textquote{Santo, santo, santo, el Señor de los ejércitos: llena está toda la tierra de su gloria.}.

 Se conmovieron los quicios y los dinteles a la voz de los que clamaban, y la casa se llenó de humo.

 Yo dije:

 \textquote{¡Ay de mí, que estoy perdido, pues soy un hombre de labios impuros, y entre un pueblo de labios impuros habito: que al rey el Señor de los ejércitos han visto mis ojos!}

 Entonces voló hacia mí uno de los serafines con una brasa en la mano, que con las tenazas había tomado de sobre el altar, y tocó mi boca y dijo:

 \textquote{He aquí que esto ha tocado tus labios: se ha retirado tu culpa, tu pecado está expiado.}

 Y percibí la voz del Señor que decía:

 \textquote{¿A quién enviaré? ¿y quién irá de parte nuestra}?

 Yo contesté:

 \textquote{Heme aquí: envíame.}

 Dijo:

 \textquote{Ve y di a ese pueblo: \textquote{Escuchad bien, pero no entendáis, ved bien, pero no comprendáis.} Engorda el corazón de ese pueblo, hazle duro de oídos, y pégale los ojos, no sea que vea con sus ojos y oiga con sus oídos, y entienda con su corazón, y se convierta y se le cure.}

 Yo pregunté:

 \textquote{¿Hasta dónde, Señor?}

 Y él me contestó:

 \textquote{Hasta que se vacíen las ciudades y queden sin habitantes, las casas sin hombres, la campiña desolada, y haya alejado el Señor a las gentes, y cunda el abandono dentro del país. Aun el décimo que quede en él volverá a ser devastado como la encina o el roble, en cuya tala queda un tocón. Este tocón será semilla santa.}


║Is-id27-ref01-01-18-0045|Visión de Isaías, hijo de Amós, acerca de Judá y de Jerusalén, en tiempos de Ozías, Jotán, Ajaz y Ezequías, reyes de Judá.

 Oíd, cielos, escucha tierra, que habla el Señor: \textquote{Hijos he criado y educado, y ellos se han rebelado contra mí.

 El buey conoce a su amo, y el asno el pesebre de su dueño; Israel no me conoce, mi pueblo no comprende}.

 ¡Ay, gente pecadora, pueblo cargado de culpas, raza malvada, hijos corrompidos! Han abandonado al Señor, han despreciado al santo de Israel, le han vuelto la espalda.

我期望的最终结果是单独的文件,其名称是第一列的内容,内容是第二列的内容:

Is-id27-ref06-01-13-1914.tex

El año de la muerte del rey Ozías vi al Señor sentado en un trono excelso y elevado, y sus haldas llenaban el templo. Unos serafines se mantenían erguidos por encima de él; cada uno tenía seis alas: con un par se cubrían la faz, con otro par se cubrían los pies, y con el otro par aleteaban, y se gritaban el uno al otro:

 \textquote{Santo, santo, santo, el Señor de los ejércitos: llena está toda la tierra de su gloria.}.

...

Is-id27-ref01-01-18-0045.tex

Visión de Isaías, hijo de Amós, acerca de Judá y de Jerusalén, en tiempos de Ozías, Jotán, Ajaz y Ezequías, reyes de Judá.

 Oíd, cielos, escucha tierra, que habla el Señor: \textquote{Hijos he criado y educado, y ellos se han rebelado contra mí.

...

ETC ...

执行命令时的错误如下:

awk: syntax error at source line 10
    context is
        print $1,$2, $g[i] > >>>  "output_"f <<< [i]".tex"
awk: illegal statement at source line 10
macos
  • 2 个回答
  • 38 Views
Martin Hope
A. Cedano
Asked: 2024-10-08 06:59:27 +0800 CST

如何避免 Jetpack Compose 中 LazyVerticalGrid 中的复选框重复?

  • 7

我正在尝试创建一个 Bug 报告屏幕。用户必须输入 Bug 描述并可以选择各种复选框。然后我检索该信息并使用它编写电子邮件。

我的问题是,当在 TextField 中输入文本或者旋转屏幕时,复选框会重新创建。

为什么会发生这种情况?我该如何避免?

BugItems 是我在资源数组中采用的固定元素。我创建了两个数据类来表示 Bug 报告。

data class BugReport(
    val message: String,
    val bugItems: List<BugItem>,
)

data class BugItem(
    val title: String,
    val completed: Boolean = false,
)

这是屏幕的组合:

@ExperimentalFoundationApi
@Composable
fun BugReportScreen(
    modifier: Modifier = Modifier
) {
    val launcher = rememberLauncherForActivityResult(
        contract = ActivityResultContracts.StartActivityForResult(),
        onResult = { }
    )

    val message = remember { mutableStateOf("") }

    val bugItems = remember {
        mutableStateListOf<BugItem>()
    }

    stringArrayResource(id = R.array.bug_report).forEach {
        bugItems += BugItem(title = it, completed = false)
    }
    val bugReport = remember {
        mutableStateOf(BugReport(message.value, bugItems))
    }

    Box(
        modifier = modifier,
    ) {
        Column(
            modifier = modifier
                .fillMaxSize()
                .verticalScroll(rememberScrollState())
        ) {

            Box(
                modifier = Modifier
                    .fillMaxWidth()
                    .height(50.dp)
            )

            GenericToolbar(title = "Bug Report")
            Spacer(modifier = Modifier.weight(1f)) 
            Text(text = stringResource(id = R.string.bug_intro))
            Text(text = stringResource(id = R.string.bug_description))

            TextFieldBugDescription(message)
            Text(text = stringResource(id = R.string.bug_check))    
            
            LazyVerticalGrid(
                modifier = Modifier.heightIn(max = 1000.dp),
                columns = GridCells.Fixed(2),
                content = {
                    items(bugReport.value.bugItems.size) { index ->
                        Row(
                            modifier = Modifier.padding(1.dp),
                            verticalAlignment = Alignment.CenterVertically
                        ) {

                            Checkbox(
                                checked = bugItems[index].completed,
                                onCheckedChange = { checked ->
                                    bugItems[index] = bugItems[index].copy(completed = checked)
                                }
                            )
                            Text(
                                text = bugItems[index].title,
                                style = MaterialTheme.typography.bodyLarge,
                            )
                        }
                    }

                }

            )
            Text(text = stringResource(id = R.string.bug_send))
            Row(
                horizontalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxWidth(),
            ) {
                LPlusButton(
                    onClick = {
                        sendEmail(launcher, bugReport)
                    },
                    text = { Text(text = stringResource(R.string.send_email)) },
                    leadingIcon = {
                        Icon(
                            imageVector = LPlusIcons.Email,
                            contentDescription = stringResource(R.string.send_email)
                        )
                    },
                    modifier = Modifier
                        .padding(horizontal = 24.dp)
                        .widthIn(364.dp)
                        .fillMaxWidth(),
                )
            }
        }
    }
}

@Composable
fun TextFieldBugDescription(message: MutableState<String>) {
    TextField(
        value = message.value,
        onValueChange = { message.value = it },
        label = { Text(stringResource(id = R.string.bug_label)) },
        maxLines = 2,
        modifier = Modifier
            .padding(20.dp)
            .fillMaxWidth()
            .height(200.dp)
    )
}

正如您在第一个屏幕截图中看到的,复选框是正确的:

在此处输入图片描述

但是当我激活 TextField 并输入一些文本时,元素会被重新创建。如果我旋转屏幕,也会发生同样的事情:

在此处输入图片描述

  • 2 个回答
  • 46 Views
Martin Hope
A. Cedano
Asked: 2024-09-24 04:49:44 +0800 CST

如何根据两个值从 ViewModel UIState 更新 Jetpack Compose 中的 UI?

  • 5

我对以下场景有点困惑:

  1. 最初,我在屏幕上显示一个 DatePicker 模式。

  2. 当用户选择一个日期时,我会显示几个按钮。

  3. 当用户点击任意一个按钮时,我都希望向 ViewModel 传递两条数据:选定的日期和按下的按钮类型,以便根据这两个条件在存储库中搜索数据。

我的问题是,在包含 ViewModel 之前,我找不到传递这两条数据的方法。

我正在尝试做类似InterestsScreenNow In Android 的事情。

我在另一个场景中有一个类似的代码,它可以工作,但那里的日期是从系统中获取的,所以没有问题。这里的日期必须由用户从 DatePicker 中提供。

我没有展示 UseCase 或 Repository 的代码,当我向其传递正确的参数时,该代码可以正常工作。我的问题是,当我有选定的日期和用户按下的按钮类型时,我不知道如何调用 ViewModel。

我展示了我的代码的相关部分:

NavGraphBuilder

composable<CalendarRoute> {
    CalendarScreen(onTopicClick = onTopicClick,onDateSelected={})

CalendarScreen(从 NavGraphBuilder 调用)

@Composable
fun CalendarScreen(
    onTopicClick: (String) -> Unit,
    onDateSelected: (Long?) -> Unit,
    viewModel: CalendarViewModel = hiltViewModel()
) {
    val uiState by viewModel.uiState.collectAsStateWithLifecycle()

    DatePickerAndButtons(
        onTopicClick = viewModel::onTopicClick,
        onDateSelected = viewModel::onDateSelected,
        uiState = uiState
    )
}

DatePickerAndButtons

@ExperimentalLayoutApi
@Composable
fun DatePickerAndButtons(
    onTopicClick: (String) -> Unit,
    onDateSelected: (Long?) -> Unit,
    uiState: CalendarUiState
) {
    var showTopics by remember { mutableStateOf(false) }
    var showDatePicker by remember { mutableStateOf(true) }
    var selectedDate by remember { mutableStateOf<Long?>(null) }

    when (uiState) {
        CalendarUiState.Empty -> Text("Empty")
        CalendarUiState.Error -> Text("Error")
        CalendarUiState.Loading -> {
            Text("Loading")
            //showDatePicker=true
        }
        is CalendarUiState.CalendarData -> {
            showTopics=false
            //showDatePicker=false
            if(uiState.topics.isNotEmpty()) {
                //Show data
            }else{
                //¿?
            }
        }
    }

    if (selectedDate != null) {
        val date = Date(selectedDate!!)
        val formattedDate = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault()).format(date)
        Text("Selected date: $formattedDate")
    } else {
        Text("No date selected")
    }
    if (showDatePicker) {
        DatePickerModal(
            onDateSelected = {
                selectedDate = it
                onDateSelected(it)
                //viewModel.onDateSelected(selectedDate)
                showDatePicker = false
                showTopics=true
            },
            onDismiss = { showDatePicker = false }
        )
    }

    if(showTopics) {
        //Code that create buttons to be clicked
    }

}

ViewModel

@HiltViewModel
class CalendarViewModel @Inject constructor(
    private val savedStateHandle: SavedStateHandle,
    val userDataRepository: UserDataRepository,
    val universalisRepository: UniversalisRepository,
    getTopicWithDate: GetUniversalisFromCalendarUseCase,
) : ViewModel() {
    private val selectedTopicIdKey = "selectedTopicIdKey"
    private val selectedDateKey = "selectedDateKey"
    private val calendarRoute: CalendarRoute = savedStateHandle.toRoute()
    private val selectedTopicId = savedStateHandle.getStateFlow(
        key = selectedTopicIdKey,
        initialValue = "1" //calendarRoute.topicId,
    )
    private val selectedDate = savedStateHandle.getStateFlow(
        key = selectedDateKey,
        initialValue = 0
    )
    
    val uiState: StateFlow<CalendarUiState> = combine(
        selectedTopicId,
        getTopicWithDate.invoke(
            date = selectedDate.value,
            title = "TODO:Title",
            selectedTopicId = selectedTopicId.value
        ),
        CalendarUiState::CalendarData,
    ).
    stateIn(
        scope = viewModelScope,
        started = SharingStarted.WhileSubscribed(5_000),
        initialValue = CalendarUiState.Loading,
    )


    fun onTopicClick(topicId: String?) {
        savedStateHandle[selectedTopicIdKey] = topicId
    }

    fun onDateSelected(date: Long?) {
        savedStateHandle[selectedDateKey] = date
    }
    
}
  • 1 个回答
  • 39 Views
Martin Hope
A. Cedano
Asked: 2024-09-15 23:59:21 +0800 CST

Jetpack Compose Material Icons 中的“恢复”图标相当于什么?

  • 7

我正在 gradle 文件中实现扩展的 Material Icons 库:

implementation 'androidx.compose.material:material-icons-extended:1.6.8'

虽然我可以找到几乎所有的图标,它们的名字与Google 网站上的一样,但我找不到“恢复”图标,如下图所示:

在此处输入图片描述

我如何知道这个图标是否在库中?它是否有不同的名称?如果没有,我如何找到与此图标相似的图标?

  • 1 个回答
  • 47 Views
Martin Hope
A. Cedano
Asked: 2024-08-01 03:35:46 +0800 CST

如何使用 Jetpack Compose 根据特定字符应用多种格式和样式?

  • 5

我正在将我的代码迁移到 Jetpack Compose,但找不到根据内容中的某些字符应用多种样式的方法。

例如,从这段文字开始:

 "℣¦Cantaré eternamente las misericordias del Señor, ≀anunciaré tu
 fidelidad por todas las edades. ≀Porque dijiste: «La misericordia es
 un edificio eterno», ≀más que el cielo has afianzado tu fidelidad.
 ℟§℣¦«Sellé una alianza con mi elegido, ≀jurando a David, mi siervo:
 ≀Te fundaré un linaje perpetuo, ≀edificaré tu trono para todas las
 edades». ℟§℣¦Él me invocará: “Tú eres mi padre, ≀mi Dios, mi Roca
 salvadora”. ≀Le mantendré eternamente mi favor, ≀y mi alianza con él
 será estable. ℟"

我需要应用以下内容:

  1. 用相同的字符但另一种颜色替换全部℣或全部。℟
  2. ¦用 4 个空格或一个制表符全部替换。
  3. ≀用一个换行符和 4 个空格或一个制表符替换所有内容。
  4. 用双行替换所有§内容(或段落开头)

最终结果将是这样的:

在此处输入图片描述

在 Compose 之前,我可以使用 replace 来实现这一点,代码如下:

fun getFormato(sOrigen: String): String {
    return sOrigen
        .replace("§", BRS)
        .replace("~", BR)
        .replace("¦", NBSP_4)
        .replace("℟", toRedFont("℟."))
        .replace("℣", toRedFont("℣."))
}

中常量的值为.replace:

const val BRS = "<br /><br />"
const val BR = "<br />"
const val NBSP_4 = " &nbsp;&nbsp;&nbsp;&nbsp;"

红色字体的方法:

fun toRedFont(s: String?): String {
        return String.format("<font color=\"%s\">%s</font>", redCode, s)
}

如何在基于 Compose 的代码中应用这些样式和/或格式?

  • 1 个回答
  • 38 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve