Linux シェルスクリプト備忘録(cpコマンド)

フォルダ内にあるcsvファイルを指定したフォルダへコピーするシェルスクリプト。

#!/bin/bash
filename=’/hoge/*.csv’
dirname=’/hoge2′
cp -a -f -p ${filename} ${dirname}

変数<filename>にコピーしたいファイルを指定

全てのcsvファイルを対象としたいのでファイル名は<*.csv>で指定
*はワイルドカード

変数<dirname>にコピー先となるディレクトリを指定

cpコマンドを使用してコピー!

cpコマンド実行時に以下のオプションを指定
-a:元ファイルの属性とディレクトリの構成を保持
-f:警告なしで上書き
-p:元ファイルのオーナー、グループ、パーミション、タイムスタンプを保持

Linux シェルスクリプト備忘録(改行コード)

catコマンドで改行コードをチェック
式:cat “オプション” “ファイル名”
全ての非表示文字を表示するためoptionに-Aを指定
cat -A hoge.txt

行の末尾に^M$が表示されている場合は改行コードがCRLFとなっているため
以下のコマンドで改行コードをLFにする

trコマンドで改行コードを削除し新ファイル名で保存する
式:tr “オプション ” “文字セット” <“対象ファイル名 “> “コピー先ファイル名”
改行コードをを削除したいので-dオプションを使用して文字セットの削除を行いhoge2.txtとして保存
tr -d ‘\r’ <hoge.txt> hoge2.txt

Android FragmentからFragmentへの画面遷移

fragmentからfragmentへの画面遷移は以下のコードで実現

// インスタンス作成
SettingFragment sf = new SettingFragment();
FragmentManager fm= getActivity().getSupportFragmentManager();
// 遷移先をリプレイス
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.host_fragment, sf);
transaction.commit();

引数を渡したい場合は以下の様にすればOK

// インスタンス作成
SettingFragment sf = new SettingFragment();
FragmentManager fm= getActivity().getSupportFragmentManager();
Bundle bundle = new Bundle();

// bundleを使用して値を設定し次画面へ渡す
// “key”は任意の名称を指定してOK(次画面でデータ受取時に必要)
bundle.putString(“key”, hoge);
sf.setArguments(bundle);

// 遷移先をリプレイス
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.host_fragment, sf);
transaction.commit();


Android Activity 画面遷移

アクティビティの画面遷移はインテント(Intent)を使用する。

今回はログイン画面⇒メインメニューへの画面遷移を作成しました。

次の2画面を用意。LoginActivity、MainActivity

LoginActivityに以下のコードを追加することで画面遷移ができる

// メインアクティビティへ遷移
Intent intent = new Intent(getApplication(), MainActivity.class);
startActivity(intent);

はずでしたが、マニフェストファイルにも仕掛けが必要

マニフェストファイルに開始時のアクティビティに加え、遷移先のアクティビティを追加

AndroidManifest.xml への記載例

<activity
android:name=".LoginActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>

Android × Firebase

https://firebase.google.com にアクセスしプロジェクト作成

AndroidStudioのコンソールでCLIをインストール
npm install -g firebase-tools

CLIのインストールが完了したら以下のコマンドで起動
firebase login

Allow Firebase to collect CLI usage and error reporting information?
と尋ねられるのでYesを選択

ここまでで準備完了!
ターミナルからfirebaseが使用可能になる

firebase init のコマンドで

 ######## #### ########  ######## ########     ###     ######  ########
 ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##
 ######    ##  ########  ######   ########  #########  ######  ######
 ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##
 ##       #### ##     ## ######## ########  ##     ##  ######  ########

がでてくるはず

次に静的サイトのホスティングを選択します
Hosting: Configure and deploy Firebase Hosting sites

次に作成済みのプロジェクトを選択します

以降はEnterキーで進めて問題なし
ルールのファイル名は何にするか?(database.rules.json)
サイトホスティングのディレクトリ名は?(public)
SinglePageApplicationように設定するか?(yes)

コンソール実行ディレクトリに以下のファイルが作成されている事を確認
./database.rules.json
./firebase.json
./public/index.html

サーバー起動
firebase serve

AndroidStudio3.5備忘録

プロジェクト作成時にナビゲーションドロワーアクティビティを選択した際に雛形が作成されるが、その雛形にバグがあるらしい。。。

メニューをタップしても画面遷移ができない。。。

どうやら自動生成されたactivity_main.xmlに問題があるようでした。

以下は自動生成されたソース
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.drawerlayout.widget.DrawerLayout>

ナビゲーションメニューのレイアウトを記述している個所はincludeの後に記述しなければならないらしい。。。

修正後のソース
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</androidx.drawerlayout.widget.DrawerLayout>

この変更を行う事で正常に画面遷移が行えるようになりました。。。

タスクスケジューラをバッチで登録

備忘録:タスクスケジューラを登録するためのバッチ

SCHTASKSコマンドを使用
/CREATE・・・>作成用コマンド
/SC MINUTE・・・>分単位
/MO 1・・・>1分毎
/TN hoge・・・>名称
/TR hoge.bat・・・>実行バッチ
/F・・・>ユーザーへの問い合わせ無し

SCHTASKS /CREATE /SC MINUTE /MO 1 /TN hoge /TR hoge.bat /F

Windows10 高速起動

現在、Windows10 Enterprise を使用したシステムを構築中。
HORM(Hibernate Once/Resume Many) 機能を利用し 高速起動 を実現しているが、HORM機能に不具合?
必要なアプリケーションを起動させた状態で設定を行う事で起動の度にアプリも立ち上がっている状態となりますが、BIOS画面からWindowsが起動するタイミングで主電源を落とし再起動すると何故かアプリが起動していない。。。
ハードウェアで電源を管理するかな。