さとまいさんは素晴らしい

これだよ、自分がやりたいのは。

 

【過剰サービス】意識高い系ビジネス終了のおしらせ - YouTube

 

 

彼女の何が素晴らしいって、適切な言語化ができるところ。

もちろんツリー状に物事を整理することができているので、話を聞いていても粒度がそろっていて違和感がない。

まっとうな聞き手なら誤解せず、迷子にならない。

また、この手の解説をする人にありがちな、他人の理論を紹介だけして自分の意見を言わないということもない。

好き。

JUnit_privateメソッドを単体テストする

リフレクションの使い方 | ひだまりのなか、想ふこと

 

 

// インスタンスの生成
Piyo target = new Piyo();
// 取得するメソッドの引数のクラスオブジェクトを取得
Class argType = {Integer.class, Integer.class, String.class};
// (privateな)hogehoge(Integer, Integer, String)なメソッドを取得
Method method = target.getClass().getDeclaredMethod("hogehoge", argType);
// アクセスを許可
method.setAccessible(true);
// 実行するメソッドの引数を設定
Object args = {new Integer(0), new Integer(0), null};

// hogehoge(Integer, Integer, String)メソッドの実行
method.invoke(target, args);

 

この下の部分で自分も同じくはまった。

memo


はまったところ。

method.invoke(target, args);

method.invoke(method, args);

として実行したら、

java.lang.IllegalArgumentException: object is not an instance of declaring class


で怒られました。
javadocで確認したら、そのメソッドを持つ、
クラスのインスタンスを渡せとのこと。

JUnit_InvocationTargetException_e.getCause()で詳細原因を調べる

junitテスト中に有用な情報を見つけた。

より詳しい原因がe.getCause()で取得できる。

 

Java での java.lang.reflect.InvocationTargetException エラーについて | Delft スタック

 

 

import java.lang.reflect.*;

public class Test {
  public int divideByZero() {
    return 89 / 0;
  }

  public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException {
    Test obj = new Test();
    Method method = Test.class.getMethod("divideByZero");
    try {
      method.invoke(obj);
    } catch (InvocationTargetException e) {
      System.out.println(e.getCause());
    }
  }
}

outlookvba_chatGPT製_ルール作成

Sub SetMailSortingRule()
    Dim outlookRules As Outlook.Rules
    Dim outlookRule As Outlook.Rule
    Dim outlookRuleActions As Outlook.RuleActions
    Dim outlookRuleAction As Outlook.RuleAction
    Dim outlookMoveToFolder As Outlook.MoveOrCopyRuleAction
    Dim outlookDisplayDesktopAlert As Outlook.DisplayRuleAction
    Dim outlookStopProcessing As Outlook.StopRuleAction
    
    ' 既存の同じ名前のルールがあれば削除する
    On Error Resume Next
    Set outlookRules = Application.Session.DefaultStore.GetRules()
    On Error GoTo 0
    
    For Each outlookRule In outlookRules
        If outlookRule.Name = "メール仕分けルール" Then
            outlookRule.Delete
            Exit For
        End If
    Next outlookRule
    
    ' メール仕分けルールを作成
    Set outlookRules = Application.Session.DefaultStore.GetRules()
    Set outlookRule = outlookRules.Create("メール仕分けルール", Outlook.OlRuleType.olRuleReceive)
    Set outlookRuleConditions = outlookRule.Conditions
    Set outlookRuleActions = outlookRule.Actions
    
    ' 条件: 件名に「xxx」が含まれる場合
    With outlookRuleConditions.Subject
        .Text = Array("xxx")
        .Enabled = True
    End With
    
    ' アクション: 新着アイテム通知ウィンドウにメールを表示する
    Set outlookDisplayDesktopAlert = outlookRuleActions.Create(Outlook.OlRuleActionType.olRuleActionDisplayDesktopAlert)
    outlookDisplayDesktopAlert.Text = "新着アイテム通知ウィンドウにメールを表示する"
    
    ' アクション: フォルダーへ移動する
    Set outlookMoveToFolder = outlookRuleActions.Create(Outlook.OlRuleActionType.olRuleActionMoveToFolder)
    outlookMoveToFolder.Folder = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Folders("YYY")
    
    ' アクション: デスクトップ通知を表示する
    Set outlookDisplayDesktopAlert = outlookRuleActions.Create(Outlook.OlRuleActionType.olRuleActionDisplayDesktopAlert)
    outlookDisplayDesktopAlert.Text = "デスクトップ通知を表示する"
    
    ' アクション: 仕訳ルールの処理を中止する
    Set outlookStopProcessing = outlookRuleActions.Create(Outlook.OlRuleActionType.olRuleActionStop)
    
    ' ルールを保存
    outlookRule.Enabled = True
    outlookRules.Save
End Sub

outlook_365_vbaでの操作は断念

outlookVBAで動かそうとしたら、exceloutlookライブラリとoutlookのバージョンが合わず実行が失敗する。

自分だけが使うことを考えればその差異を修正すればよいが、ほかの人に使ってもらうことを考えると、vbaoutlookを動かすことは候補から外したほうが良い。

pythonもインストールしてないと使えないし、意外と大問題。

outlookvbaで操作することは断念した。

使っているのは365なのだが、ほかにも同様の質問がmicrosoftコミュニティにされており、365では実現できない可能性が高い。

SQL定型文テンプレート

SQL補助輪
タスクトレイのIME右クリック > ユーザー辞書ツール > ツール > テキストファイルから登録
で登録できます。

(この上は削除すること)
せl	SELECT t1.* FROM foo t1 INNER JOIN bar t2 ON t1.col1=t2.col1 WHERE t1.col1 IN(1, 2)	名詞	SQL文の頭3文字
せl	SELECT t1.* FROM foo t1 LEFT  JOIN bar t2 ON t1.col1=t2.col1 WHERE t1.col1 IN(1, 2)	名詞	SQL文の頭3文字
かs	CASE WHEN g=0 THEN '不明' WHEN g=1 THEN '男' WHEN g=2 THEN '女' ELSE '適用不能' END AS gender	名詞	SQL文の頭3文字
すm	SUM(CASE WHEN gender=1 THEN 1 ELSE 0 END) AS male_count	名詞	SQL文の頭3文字
いんs	INSERT INTO foo(col1, col2) VALUES(3, 'Carol')	名詞	SQL文の頭3文字
いんs	INSERT INTO foo(col1, col2) SELECT * FROM bar WHERE col3 IN(1, 2)	名詞	SQL文の頭3文字
うpd	UPDATE foo SET col1='Dave' WHERE col2=4	名詞	SQL文の頭3文字
うpd	UPDATE foo dest SET dest.col1=(SELECT src1.col1 FROM bar src1 WHERE dest.col1=src1.col1) WHERE dest.col1 IN(1, 2)	名詞	SQL文の頭3文字
でl	DELETE FROM foo WHERE col1=5	名詞	SQL文の頭3文字
cれ	CREATE TABLE foo(col1 VARCHAR2(8), col2 VARCHAR2(8), PRIMARY KEY(col1, col2))	名詞	SQL文の頭3文字
あlt	ALTER TABLE foo ADD(colx VARCHAR2(8))	名詞	SQL文の頭3文字
あlt	ALTER TABLE foo MODIFY(col1 VARCHAR2(8))	名詞	SQL文の頭3文字
あlt	ALTER TABLE foo DROP(col1)	名詞	SQL文の頭3文字
こm	COMMENT ON TABLE  foo IS 'comment'	名詞	SQL文の頭3文字
こm	COMMENT ON COLUMN foo.col1 IS 'logical name'	名詞	SQL文の頭3文字
gら	GRANT DEBUG ANY PROCEDURE TO user	名詞	SQL文の頭3文字
gら	GRANT SELECT ON user2.foo TO user1	名詞	SQL文の頭3文字

outlook_デスクトップ通知が表示されない原因

■事象

outlookのメール受信時のデスクトップ通知が表示されないことがある。

 

■原因

受信時に振り分け設定すると、通知すると設定しない限りデスクトップ通知が表示されない。

 

www.crie.co.jp

 

 

■所感

長いこと悩まされてきた症状の原因がようやくわかった。

デフォルトで表示されるものだと思い込んでいて、outlookの不調として処理していた。

outlookを信頼できなくなっていたので、普段はoutlookを頻繁に開いて受信を確認していた。

たまたまこの日だけメールをデスクトップ通知のみでチェックしていて、仕分けしているものだけ通知センターに表示されないことに気づき、すぐに検索したところ原因が判明した。

ちょっとやり方を変えると気づくことがあるね。

 

以前この問題について検索したら、microsoftコミュニティの回答がoutlookの不調とのことだった。

権威があるっぽい人からの誤回答で永遠に正解にたどり着けないということには注意しないとね。(回答者はmicrosoftの中の人じゃなくて一般人だったし)