Hatena::ブログ(Diary)

揮発性のメモ このページをアンテナに追加 Twitter

2016/06/23 (木)

デフォルトコンストラクタが呼ばれない

#include <iostream>
using namespace std;

class hoge {
public:
    hoge(){ 
        cout << "hello";
    }
    void run(char *text){
        cout << text;
    }
};

class piyo {
public:
    piyo(int a){ 
        cout << a << "world";
    }
    void run(char *text){
        cout << text;
    }
};

int main() {
    hoge a();       // helloが出ない
//  a.run("unko");  // ★aが無いというコンパイルエラー

    hoge b;         // helloが出る
    b.run("unko");  // unkoも出る
    
    piyo c(9);      // 9worldが出る
    c.run("unko");  // unkoも出る

    return 0;
}

()をつけるとデフォルトコンストラクタが呼ばれない。というか、aという変数はつくられない。

よく分からない仕様

2016/06/22 (水)

sendmailコマンドが標準出力にエラーメッセージを出してしまうのをなんとかする

PHP5.3.3


PHPのmail()は内部で sendmailコマンドを呼び出している。

sendmailコマンド標準出力標準エラー出力になにかゴミを出力すると、そのまま出てきてしまう。

mail()の前に ob_start() を入れ 終わったら ob_end_clean() を呼ぶようにしても、出力を抑止することができない。

<?

ob_start();

mail($to, $subject, $body, $header, $parameter);
// sendmailコマンドの標準出力、標準エラー出力ともに ダダ漏れする

ob_end_clean();

つまり、PHP側でなんとかすることはできない。

続きを読む

2016/06/18 (土)

2016/06/14 (火)

ファイルを日付ごとに個数を数える

LANG=C ls -ltr | uniq -f 5 -w 7 -c

-rwxrwx---+ 1 hoge hoge  68 Mar  8 17:32 ALARM_20160308173235.log
~~~~~~~~~~~~~~~~~~~~~~~~~~~
-f で 5個 無視する
 Mar  8 17:32 ALARM_20160308173235.log
~~~~~~~
-w で 7バイト 対象とする

-fでフィールドを読み飛ばすときは 空白またはタブで区切られた分を1フィールドとみなす。 読み飛ばした後は、空白が残されるのがポイントっぽい。

ついでに消しといてくれよ。残す意味あんのかよ

2016/06/13 (月)

2016/06/09 (木)

vbaでIEを起動しログイン処理などをしてページ遷移をすると、それ以上処理できなくなる

vbaIEを起動しログイン処理などをしてページ遷移をすると、それ以上処理できなくなる。

オブジェクトがページ遷移についていかない感じ


Excel2013のVBAのバグらしい

Sub main()
    Dim objIE As InternetExplorer
    
    ' IE起動
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True 'デバッグ用可視化
    ' URL指定
    objIE.navigate ("http://192.168.0.2")
    Call waitIE(objIE)
    
    '■ログイン処理
    Set loginform = objIE.document.forms(0)
    loginform.loginid.Value  = "hogehoge"
    loginform.Password.Value = "piyopiyo"
    loginform.submit
    Call waitIE(objIE)
    
    '1秒待つ (念の為)
    Application.Wait Now + TimeValue("00:00:01")
    
    'objIEが遷移前の古いページのまま
    MsgBox (objIE.LocationURL)
    '閉じても閉じてくれない
    objIE.Quit() 
End Sub



' IEが落ち着くまで待つ
Sub waitIE(ByRef objIE As InternetExplorer)
    While objIE.Busy = True Or objIE.ReadyState <> 4
        DoEvents
    Wend
End Sub

Excel2013の場合リンククリックした直後、IEオブジェクトリンククリック前とクリック後の2つ存在することがわかった。

なので、ページ遷移後には Shell.Application で一覧から 遷移後っぽいURLを指しているオブジェクトを探さなければならない。

2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |