Lunatic Sol

IT Tips

Windows Live メールに個人のメールアカウントを設定

2009-12-23 09:53:27 | LotusScript
Windows Live メールは Outlook Express の後継とのことですが、直観的ではないような気がします。Windows Live へのサインインが必須のように感じますし、Hotmail でないといけないようにも見えますが、実は不要だったりします。

# Windows Live ID への誘導戦略かもしれません

いずれにせよ、以下の手順で Windows Live メールを使って、Outlook Express のように使うことができます。


  1. Windows Live メールを起動します

  2. 「無料・大容量 Hotmail 作成」リンクをクリックして、アカウント設定を行います (*1)



  3. 電子メールアカウントを追加するにて、個人のメールアドレス、パスワード、表示名を入力し「次へ」をクリックします



  4. セットアップは完了です



  5. セットアップしたアカウントが左側に表示されていますので、そのアカウントの上を右クリックし、「プロパティ」を選択します



  6. 「全般」タブの「メール アカウント」欄には、Windows Live メール上の表示名を入力します。デフォルトから変更したい場合に修正します



  7. 「サーバー」タブの受信メール (POP3)、送信メール (SMTP) 欄はプロバイダの設定と異なっている場合には修正します。ログイン時のセキュリティ (APOP) などは、プロバイダがサポートしている場合には使用することをおすすめします。



  8. 「詳細設定」タブは必要に応じて設定変更します。例えば、Webメールと併用する場合には「サーバーにメッセージのコピーを置く」のチェックが必要ですが、Windows Live メールを唯一のメーラーとして利用する場合には、チェックをはずしてプロバイダ上にメールを残さないようにすることが可能です



jQuery.noConflict() : prototype.js などとの競合回避

2009-11-04 01:31:34 | LotusScript
とある Webapp に jQuery を加えていろいろ遊んでいたら、今まで動いていた prototype.js の効果が使えなくなってしまいました。

なんでだろう、と思っていたら以下のページを見つけました。

jqueryとprototype.jsの競合を避ける

ということで、以下のように対応してみました。

  <script src="js/jquery-1.3.2.js" type="text/javascript"></script>
  <script language='JavaScript' type='text/javascript'>
  	jQuery.noConflict();
  </script>


加えて、その後の記述は $ を使用せずに、すべて jQuery に置き換えて解決解決。

URLEncode

2008-09-18 13:52:48 | LotusScript
過去に以下のような LotusScript 関連の記事を書きましたが、Evaluate の部分の文字列の渡し方がいっつも書き間違えてしまいます。

Soundex
Evaluate を使いこなそう

なので、URLEncode の Function 例を実際に書いてしまいましょう。
これをコピー&ペーストすれば使いやすいかと思います。

    Function URLEncode(source As String, encodetype As String) As String
        macro$ = "@URLEncode(""" & encodetype & """;""" & source & """)"
        tmp = Evaluate(macro$)
        URLEncode = tmp(0)
    End Function

[Notes8] eclipse JVM 起動オプションのプロパティファイル

2007-12-02 02:29:20 | LotusScript
Notes8 は Eclipse RCP 上で実行されますが、その際の JVM 起動オプションの制御がどこか気になったので調べてみた。



C:\lotus\Notes8\framework\rcp\eclipse\plugins\com.ibm.rcp.j2se.win32.x86_1.5.0.SR4-200707311521\jvm.properties

中身は以下のとおり。このファイルを操作すると、JVM の起動オプションを変えることができる模様。


vmarg.Xmx=-Xmx512m
vmarg.Xquickstart=-Xquickstart
vmarg.Xjit=-Xjit:noResumableTrapHandler
vmarg.Dosgiext=-Dosgi.framework.extensions=com.ibm.rcp.core.logger.frameworkhook,com.ibm.cds
vmarg.Dscmx=-Xscmx64m
vmarg.Dshare=-Xshareclasses:name=xpdplat,controlDir=${prop.jvm.shareclasses.loc},groupAccess,keep,singleJVM,nonfatal
jvm.shareclasses.loc=${env.TEMP}
jvm.shareclasses.fullpath = ${prop.jvm.shareclasses.loc}/javasharedresources




GetSystemInfo

2004-08-30 16:25:22 | LotusScript
LotusScript で GetSystemInfo() Windows API を Call する場合、(Declarations) に変数として渡す構造体と、Declare ステートメントによる API の呼び出しを書いてあげれば良いです。これを直接 Call できれば CPU の数とか、タイプとか簡単にチェックできますね。

Type SYSTEM_INFO
    dwOemID As Long
    dwPageSize As Long
    lpMinimumApplicationAddress As Long
    lpMaximumApplicationAddress As Long
    dwActiveProcessorMask As Long
    dwNumberOfProcessors As Long
    dwProcessorType As Long
    dwAllocationGranularity As Long
    dwProcessorLevel As Integer
    dwProcessorRevision As Integer
End Type

Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)
使い方は簡単です。例えば Messagebox に全メンバー値を表示したい場合は、以下のように書けば良いです。

Sub Click(Source As Button)
    Dim SysInfo As SYSTEM_INFO
    Call GetSystemInfo(SysInfo)
    msg$ = "dwOemID:" & Chr(9) & Chr(9) & Chr(9) & SysInfo.dwOemID & Chr(10) &_
    "dwPageSize:" & Chr(9) & Chr(9) & SysInfo.dwPageSize & Chr(10) &_
    "lpMinimumApplicationAddress:" & Chr(9) & SysInfo.lpMinimumApplicationAddress & Chr(10) &_
    "lpMaximumApplicationAddress:" & Chr(9) & SysInfo.lpMaximumApplicationAddress & Chr(10) &_
    "dwActiveProcessorMask:" & Chr(9) & SysInfo.dwActiveProcessorMask & Chr(10) &_
    "dwNumberOfProcessors:" & Chr(9) & SysInfo.dwNumberOfProcessors & Chr(10) &_
    "dwProcessorType:" & Chr(9) & Chr(9) & SysInfo.dwProcessorType & Chr(10) &_
    "dwAllocationGranularity:" & Chr(9) & SysInfo.dwAllocationGranularity & Chr(10) &_
    "dwProcessorLevel:" & Chr(9) & Chr(9) & SysInfo.dwProcessorLevel & Chr(10) &_
    "dwProcessorRevision:" & Chr(9) & Chr(9) & SysInfo.dwProcessorRevision
    Msgbox msg$,,"GetSystemInfo()"
End Sub
NOTE: SYSTEM_INFO 構造体の最初のメンバーは共用体 (union) なんですが、LotusScript で union をうまく扱う方法がわかりませんでした。なので、Windows 2000 などでは Obsolete になっているであろう dwOemID のままにしていますが、もし wProcessorArchitecture をチェックしたい場合は Wrapper 関数を作って OS バージョンにあわせて処理を変更するなどした方が良いのかもしれません。

■ Platform SDK: Windows System Information
SYSTEM_INFO

■プラットフォーム SDK
GetSystemInfo

Evaluate を使いこなそう

2004-06-23 18:25:51 | LotusScript
ひとつ前の Soundex はつまらないと言いましたが、でも Evaluate を使いこなす良いサンプルだったかもしれません。と思い、Evaluate をうまく使いこなして @関数 にしかないファンクションを LotusScript でも汎用的に使えるようにしてみるのも良いかなと。

雛形として、以下のような Function を準備しておくと、単純な引数を受け取る @関数であれば結構汎用的に Evaluate を使えるかと思います。

Function ファンクション名 ( 引数...) As 戻り値の型
    Dim tmp As Variant
    macro$ = 引数と @関数 を組み合わせた文字列の整形
    tmp = Evaluate(macro$)
    ファンクション名 = tmp(0)
End Function

例えば @URLEncode() を使いたい場合は、ファンクション名を URLEncode にして引数、戻り値は全て @URLEncode にあわせます。Function 内部の macro$ の行では @URLEncode("Platform";"文字列") となるように連結式を書いておいてあげれば、あとは呼び出し方で引数を設定してあげればいいですよね。ポイントは " を文字列の中に入れたいときには "" と二つ重ねるという点です。

■ 関連記事
Lunatic Sol:Soundex

Soundex

2004-06-23 17:58:38 | LotusScript
つまんないネタですが、毎回 Evaluate 使って書くの面倒なのでメモがてら残しておきます。

@Soundex を LotusScript で呼び出すだけのファンクションです。呼び出すときは result$ = Soundex("Lotus Notes") みたいにすればいいだけです。

Function Soundex(source As String) As String
    Dim tmp As Variant
    macro$ = "@Soundex(""" & source & """)"
    tmp = Evaluate(macro$)
    Soundex = tmp(0)
End Function

ReverseOrder

2004-06-16 13:34:06 | LotusScript
文字列の順序を並べたい時があります。例えば、「あいうえお」を「おえういあ」にしたり、「aabbccddee」を「eeddccbbaa」にしたり。Little Endian と Big Endian のバイトオーダーを変更したいときにも使えます。例えば「0a3c0434」を「34043c0a」にしたりとか。

そんな時に使えるファンクションを書いてみました。並び替えの効率は良くないかもしれませんが、単純に入力文字列を指定した文字単位数ごとに配列に代入し、代入された配列の後ろから再度連結させるだけのものです。

引数の1つめが入力文字列、2つめは1ブロックの単位 (例えば2文字区切りにしたい場合は 2)、3つめは並び替えられた文字列です。簡単なエラー処理を加えているので関数自身は Integer 型のエラーを返します。0 は NOERROR、1 は Unit の長さが1以上以外のエラー、2 は割り切れないエラーです。

Function ReverseOrder(expr As String, unitLen As Integer, result As String) As Integer
    Dim exprLen As Integer
    Dim index As Integer
    Dim tmp() As String
    ReverseOrder = 0 '0 = NOERROR
    result = ""
    
    '### ERROR 1 = Unit の長さは 1 以上のみ
    If unitLen =< 0 Then
        ReverseOrder = 1
        Exit Function
    End If

    '=== 配列化
    exprLen = Len(expr)
    If (exprLen Mod unitLen) = 0 Then
        index = (exprLen / unitLen) - 1
    Redim tmp(index)
    For i = 0 To index
            tmp(i) = Mid(expr, (i * unitLen) + 1, unitLen)
        Next
    Else
        '### ERROR 2 = Unit の長さでインプット文字列が割り切れない
        ReverseOrder = 2
        Exit Function
    End If

    '=== 配列の後ろから並び替え
    For i = index To 0 Step -1
        result = result + tmp(i)
    Next
End Function

インターネットオプションを直接開く

2004-06-11 19:07:00 | LotusScript
へぇ、と思ったのでメモ。

インターネットオプションを開くとき、通常は IE のメニューから [ツール] -> [インターネットオプション] を開きますが、以下の方法で直接起動することができるんですね。

control.exe Inetcpl.cpl

    もしくは

rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl
タブも指定したい場合は最後に ,,4 みたいにつけてあげればいいのです。私は [接続] タブを多用するので、LotusScript の Shell 関数を使って以下のようにしてあげれば簡単に開けちゃいます。@関数の Execute コマンドでも実行できないかなぁ。そうすればアイコンに登録できるのにね。

Sub Click(Source As Button)
    res = Shell("control.exe Inetcpl.cpl,,4",1)
End Sub
■あかねちゃんの Shell de き~っくforVB
http://www.geocities.co.jp/Playtown-Spade/5313/shell.html