2022年11月3日木曜日

jquery 動的にイベント追加

 appnedした場合、動的なイベントの追加には、工夫がいるようだ。

$("親要素").on('click', '該当する要素', function(e){

  var tmp=e.target.id;

});

のように利用できる。

ちなみに、以下の方法はだめだった。

$("該当する要素").change(function(e) {

  var tmp=e.target.id;

 });

     

2022年10月22日土曜日

GAS使ってグループの名前リストを作成

 権限の関係でグループのEmaiアドレスは取得できても、名前が取得できないことがあるようだ。画面上では表示されているが、ダウンロードはEmaiのみ。ただし、Chromeで、「名前を付けて保存」>ファイルの種類を「ウエブページ、完全」 を選択して保存すると、UTF8で全角文字できちんと保存されるので、面倒だが、このデータをGdriveに持って行って、GASでパースすることにした。

GASは、データを保存したいスプレッドシートに、スクリプトを作成する。この場合、Parseというライブラリの追加が必要。2022.7現在、ライブラリのIDは

1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw

もっと簡単な方法がありそうだが、とりあえず、以下のスクリプトで、無事 Emailと名前のリストが取得できた。


function member_parse() {

var contents = DriveApp.getFolderById('ここにフォルダのID')
.getFilesByName('メンバーリスト.html')
.next()
.getBlob()
.getDataAsString("utf8");
//Logger.log(contents); let mList= new Array();
let eList= new Array(); names = Parser.data(contents).from('<div class="LnLepd">').to('</div>').iterate();
emails=Parser.data(contents).from('Sq3iG" href="mailto:').to('</a>').iterate(); for(nm of names){
mList.push(nm);
} var ci=0;
for(em of emails){
if (ci % 2 ==0){ eList.push(em.split('>')[1]);}
ci++;
}
//console.log(zip(eList,mList));
NameEmailList=zip(eList,mList); var sheet = SpreadsheetApp.openById('ここにスプレッドシートのID').getSheetByName('shokuin'); for (gyo of NameEmailList){
sheet.appendRow(gyo);
} } const zip = (...arrays) => {
const length = Math.min(...(arrays.map(arr => arr.length)))
return new Array(length).fill().map((_, i) => arrays.map(arr => arr[i]))

}


GASとスプレッドシートを組み合わせて、コードを書いていると、ちょうどエクセルのマクロを使っているような感覚になる。ちょっとした操作で、シートの動作が変わって、コードがうまく動かなくなることも。無料なので、手間はかかるのは仕方ない。半面、シートで実際のデータがどうなっているか、すぐ確認できるよさはある。

2022年10月15日土曜日

android Ver10 への自作アプリインストール

 以前つくった、sumahoCopyなる自作アプリを、買い替えたスマホに入れようとしたら、セキュリティが厳しくなっており、以前のようにインストールできない。

ネットで調べたら、build.gradleを以下のように修正して、ビルドするとインストールはうまくいった。

 buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            applicationIdSuffix ".debug"
            debuggable true
        }
        releaseDebugKey { // releaseの設定を使用
            initWith release
        }
    }
    signingConfigs {
        releaseDebugKey {
            initWith debug
        }
    }

最新OSでは、内蔵ストレージへのアクセスにもいろいろ制限がかかっているので
以下のリンクを参考にコードの書き換えが必要だった。


2022年9月25日日曜日

数年前作成したグループウエアをGCEでためしてみた。

 古いシステムを動かしてみた。けっこう大変だった。

・JavaのバージョンをJava8にしないとだめだった。Tomcat9は使えたが。

・Mysqlの仕様変更があり、SSH上では、rootが作成できず、適当なユーザー名を作って、それに権限を与えることでなんとか動かせた。

やはり、一筋縄ではいなかようだが、時間かければなんとかなるということ。

gce インスタンスでTeraterm使えず

鍵生成をいろいろな方法で試してみたり(ユーザー名、鍵の形式、GCEの権限内容等々) 

いろいろ試行錯誤してだめだった。困っていたところ、

こちらの情報によると、インスタンス内のOSがSSHに厳しくなっているのが原因らしい。サイトの情報をもとに設定したら、使えるようになった。

2022年9月24日土曜日

GCEでWinSCPを使う

 GCEのインスタンスにファイルを転送するためWinSCPを使えるようにしてみた。秘密鍵、公開鍵の扱いに不慣れなので、いろいろ勉強になった。

はまったところ:
・秘密鍵を作成したときに、ローカルPCでのユーザー名がファイルの中に情報として入ってしまうようで、WinSCPでリモートにアクセスする際のユーザー名は、リモートのユーザー名ではなく、あくまでローカルPCでのユーザー名にしないとだめだった。基本的なことのようだが、今まで知らないでいた。
・WinPCは、直接秘密鍵が利用できず、.ppkなる拡張子のファイルに変換する必要があった。
・ポートは、セキュリティ上のこともあり外部からのアクセスでは標準の22を使わないことにした。インスタンスの中のsshサーバの設定には、
 port 22
 port 任意のポート番号(/etc/ssh/sshd_config)
のように2つ並べて置き、リモートからは22以外のほうを使うことにした。ルータとインスタンスのファイアーウオールの設定もそれにあわせて追加する必要がある。

いろいろなサイトを参考にさせていただいた。

・Dos Promptからもsshコマンドを使って手軽に確認もできるようだ。(秘密鍵生成などもできたり)
 ssh サーバアドレス(ホスト.ドメイン名もok) -i 秘密鍵ファイル名 -p 任意のポート番号

いろいろと手間はかかるようです。

2022年9月23日金曜日

GCEのインスタンスをつくってみた

 Herokuクラウドの無料枠もなくなったので、まだ無料枠が残っているGCEを使ってみた。

インスタンスの使い方がわからず、とまどったが、ネット上の情報に助けられる。まず、プロジェクトを作成する必要がある。ここで、適当に北米など選んでしまい、あとで、東京もあることに気づき、やり直すことに。ドメインは、すでに持っていたものを使い、DNSの設定なども必要に、TXT,Aレコードなどを追加していった。これに、今後はさらに、SSL化のために、証明書の発行なども必要になってきたり、Tomcatを使う予定なので、ポートの変換など、いろいろ手間がかかりそうだ。

 プロジェクトのあとは、インスタンスを作成、これがDockerのような仮想サーバなのだろう。OSや、CPUも選べるし、柔軟なカスタマイズができそう。そのぶん、設定項目が多くなってしまうが。

 つぎに、ターミナルがブラウザで表示なるので、てっきりここで、インスタンスの中を覗けるものだとだと勘違いしていた。何度か、SSHやApacheの設定を挑戦しても、外からアクセスできなかったので、おかしいなと、ルータのパケットフィルターやら、サーバのファイアーウオールやら、Apacheのポート変更やら、試行錯誤繰り返した。それでもうまくいかない。

 それもそのはず、インスタンスは、すぐ下のターミナルで操作するのでなく、「SSL」という小さなボタンをクリックすることで、それぞれのインスタンスの中をSSLで覗くことになるのだった。これに気づくまで、だいぶ時間がかかってしまう。ようやく、外からHTTPにアクセスできるようになる。