年: 2022年

  • GASからMySQLに接続して、コミットする

    通常は、自動コミットされるので、Update文やInsert文を実行したタイミングで、コミットされる。DBへの複数の書き込み処理を、同じタイミングで行うのは、自動コミットをオフにして、手動でコミットする必要がある。

    自動コミットを無効にするには、DBコネクションの「.setAutoCommit(false)」を使用する。

    手動でコミットするには、DBコネクションの「.commit()」を使用する。

    試してみたところ、オートコミットをオフにした場合、「.commit()」を実行しなくても、エラーにはならない。GASのエディタ上でもアラートを上げてくれないので、注意が必要。

    サンプルコード

    function myFunction() {
      dbConnection();
    }
    
    // --------------------------------
    // SSL 接続なしで接続する
    // --------------------------------
    function dbConnection(){
      Logger.log('start dbConnection function.');
    
      // 接続先設定
      var connectionIp = 'xxx.xxx.xxx.xxx'; // 接続のMysqlのIPアドレス(ホスト名も可)
      var userName = 'user'; // 接続で使うユーザ名
      var passwd = 'password'; // 接続で使うパスワード
      var databaseName = 'database'; // データベース名
    
      var addr = 'jdbc:mysql://' + connectionIp + '/' + databaseName;
      Logger.log('start mysql con');
      Logger.log(addr);
    
      var connectionInfo = {
        user: userName,
        password: passwd
      }
    
      // DBにコネクションをはる
      var connection = Jdbc.getConnection(addr, connectionInfo);
      Logger.log(connection.getCatalog());
    
      // オートコミットを無効にして、手動でコミットするようにする。
      connection.setAutoCommit(false);
    
      // sqlステートメントをデータベースに送信するためのオブジェクトを作る
      var statement = connection.createStatement();
    
      // Insert文を発行
      var resultInsert = statement.executeUpdate('Insert Into List (id,listname) values ("5","kanagawa")');
    
      // 実行結果が0なら失敗、1以上なら成功
      Logger.log(resultInsert);
    
      // 手動でコミットする。通常はオートコミットされるので必要なし。
      connection.commit();
    
      // ステートメントを閉じる
      statement.close();
    
      // コネクションを閉じる
      connection.close();
    }
  • GASのDB接続で、オートコミットになっているかを調べる

    コネクションの「.getAutoCommit()」を実行することで、DBへの書き込みがオートコミットになっているかどうかを調べることができる。

    「.getAutoCommit()」の結果が、Trueならオートコミット、Falseなら手動コミット。手動コミットの場合には、「.commit()」を明示的に実行しないとDBにコミットされない。

    サンプルコード

      // DBにコネクションをはる
      var connection = Jdbc.getConnection(addr, connectionInfo);
    
      // オートコミットを無効にして、手動でコミットするようにする。
      connection.setAutoCommit(false);
    
      // Trueならオートコミット、Falseなら手動コミット。ログに書き出す。
      Logger.log('オートコミットの設定: ' + connection.getAutoCommit());
  • ASP.NETでChrome対応したらJSでテキストボックスに値が入らなくなったときの対応

    IE用に作られたASP.NETのアプリを、Chrome対応(Chromium Edge対応)しているときに、JavaScriptでASP.NETのパーツのテキストボックス(type=text)に値をいれたところ、値が入らないということがおきた。「getElementById(“ID”).value」に、JavaScriptから値をいれたが、IE11では問題ないのに、Chromeだと値が入らなかった。

    document.getElementById("ID").value = "値";
    // ↑これだと、IE11は値が入るが、Chromeだと入らない。

    PostBackは発生させていない処理なのだが。いろいろと調べていき、Chromeの場合は「.defaultValue」を使って初期状態の値を書き換えれば、画面の表示が変わることを確認できた。

    document.getElementById("ID").defaultValue = "値";
    // ↑Chromeの場合は、defaultValueを書き換える。

    IE11も残しておく必要があったので、ブラウザの種類をみて、IF文でIEとそれ以外で分岐させるようにした。

    サンプル。

        // ブラウザを取得する
        var userAgent = window.navigator.userAgent.toLowerCase();
        if (userAgent.indexOf('msie') != -1) {
            // IEのときの処理を書く
            document.getElementById("ID").value = "aaaa";
        } else {
            // IE以外の処理。ChromeやChromium Edgeの想定
            // document.getElementById.value だと、画面上の表示が変わらないことがわかった。
            // そのため、document.getElementById.defaultValue に変更したところ、うまくいった。
            document.getElementById("ID").defaultValue = "aaaa";
        }
  • ランチ:海南鶏飯のチキンライス

    今日のランチは時間がなかったので、アカサカサカスの海南鶏飯のシンガポールチキンライスにした。赤坂は人が少なくて、ランチ時でも人が少なめだった。(人は少ないのに、ラーメン屋は並んでいるという不思議はある)

    海南鶏飯で、ランチのときはライスのおかわりが1回できるのは知っていたけれど、ソースもおかわりできることを今日知った。ケチケチせず、たっぷりとソースをからめて食べられる幸せ。おいしかった。

  • ウグイスかと思ったらメジロだった

    真間川の桜の木のところで、緑色の鳥がいたので、ウグイスかと思い、ズームで写真をとって確認したところ、メジロだった。写真だと目のところが、くっきりと白い。確認は大事。鶯はまだだろうか。

  • ランチ:長男、もんたいちお

    京成八幡駅の側にあるつけ麺の店、「長男、もんたいちお」に行ってみた。いつも人が並んでいるので、なかなか入るタイミングがなかったのだが、昼時に列がなかったので入ってみた。

    注文したのは、特製つけ麺。ちょっと具が豪華になっている。麺は、極太麺で、ラーメンの麺というよりも、極太うどんな感じで、かみごたえはかなりある。讃岐うどんよりもコシがつよい。麺は冷たい。スープは、めちゃくちゃドロっとした暖かいスープだ。ドロっとしているので、麺一本でもスープが絡む。かなり濃厚なスープで油分も多め。おいしいつけ麺だった。並んで食べるのもわかる気がする。濃厚すぎるので、食べた後、胃が重くなった。あっさり系が好きな身としては、美味しいのだけど、ちょっとつらい。

    それから、麺がとても太いので、茹で時間が長い。注文してから出てくるまでが長いので、客の回転は悪いから、どうしても並んでしまうのだろう。

  • 2023年にGoogle Currentsが廃止される予定とのこと。

    Google Workspaceのブログに、Google Currentsが廃止されると記載された。

    The future of Currents and the next generation of collaboration in Spaces
    https://workspaceupdates.googleblog.com/2022/02/currents-spaces-migration.html

    Google Currentsのコンテンツは、Spaces(Google chatの旧チャットルーム)に統合されていくとのこと。ビジネス向けのGoogle+の系譜も、これでおしまい、ということか。

    Spacesにアップグレードされると、利用の少ない機能はなくなるようだ。Google+やCurrentsのときのような緩いコミュニケーションや通知に使えるようなオプションがSpacesについてくれるといいのだけど。あとは、3カラムになって、スレッドが分かりやすくなってくれると、なおうれしいのだけど。

    Google CurrentsからSpacesへの移行オプションはこれからアナウンスされるようなので、これまた対応が大変なのかもしれない。

  • 読了:プラネテス

    久しぶりにプラネテスを一気読みした。アニメ版もいいけど、コミックがいい。おもしろかった!

    宇宙開発も活発だし、スペースデブリも増えているし、そのうち、プラネテスの世界になるんだろうな。

  • 雪が積もった(2022/2/11)

    積雪の予報通りに、雪が積もった。前回ほどはひどくはなくてよかった。

  • 数年ぶりにEmotetが流行中

    数年ぶりに、Emotet(エモテット)の攻撃が活発になっているとのこと。大手企業で、Emotetの被害が広がっている。IPAでも注意喚起を行っている。

    クラシエ、マルウェア「Emotet」に感染 ライオンや積水ハウスに続きhttps://www.itmedia.co.jp/news/articles/2202/10/news113.html

    「Emotet(エモテット)」と呼ばれるウイルスへの感染を狙うメールについてhttps://www.ipa.go.jp/security/announce/20191202.html

    インフルエンザのように数年に1回 Emotetが流行する。迷惑なので、この手の攻撃の流行はいらないのだが。わかりにくく、巧妙化しているので、Emotetに気をつけなくては。