投稿

12月, 2014の投稿を表示しています

本日で仕事納めです

みなさん、こんばんは。
本日(2014年12月26日)で、弊社は仕事納めとなります。

従いまして、私のブログ投稿も今年はこれが最後となります。
例年ですと、年越しブログは書かないのか!とか、新年一発目の記事はいつ書くんだ!と揶揄されますが、今年はそういうことを言われる前にお休みを宣言してしまうという魂胆です(笑)

今年は久しぶりに記事数を増やすことができました。
XPagesだけでなく、SametimeやIBM Verseについての記事を書くなど、新しいことが着々と進んでいて、それをウォッチで来たからだと思います(嘘だな・・・)。

それでも、年間50本も書いていないので、少ないとは思っています。
読んでくれている方がいるから書くわけですので、そういった方々のためにももう少し更新頻度を上げた方が良いかな?と。

また、累積アクセス数がもうすぐで50万に達するというところまで来ています(ホントはこの記事を書くまでに達してほしかったのですが・・・)。

ということで、来年はなんとか週一のペースまで持っていければいいな。と感じています。


それと、ブログはそこそこ認知していただけるようになったと感じていますので、別のことにも挑戦していきたいと考えています。
それが何になるのかは全くわかりませんが、違った形でみなさんと接することができれば良いですね。



さて、それでは来年も当ブログをよろしくお願いします。




ホントに、年越しブログは書かないからね!お休みしますから!

クリスマスとXPages

イメージ
おはようございます。クリスマスです。
ホントなら楽しい夕べのはずだったのですが、誰かさんの無茶ぶりにより、クリスマスにXPagesのブログを書くことになりました(え?自業自得だろ?そうなんですがね・・・)。

しかし、発想力が貧弱なこの私にそんな洒落たものは書けません。
ひたすら考えました・・・

そして、「XPagesはJavaScriptがかけるんだから、世の中にあるどなたかが作成したJavaScriptのプログラムも動くに違いない!いや動く!」という想いから、
JavaScriptでクリスマス関連のことをやっているサイトを探しました(笑)


あるもんですね。見つけましたよ。JavaScriptでクリスマス。
actywayというサイトにクリスマスに使いたい!雪のパーティクルをチラチラ降らす JavaScript を作ってみよー : actywayという記事がありました。

しっかりとJavaScriptをダウンロードできるようにしてくださっています。素晴らしいですね。
今回は「snowparticle.3.js」をダウンロードしました。

では、早速XPagesに組み込んでみましょう。
せっかくなので、新規にノーツDBを作成します。
そして、「xmas」という名前でXPageを作成します。

雪が降るので背景は白色以外にしておきます(黒とか濃紺にしておくといいかも)。

ダウンロードした「snowparticle.3.js」をメモ帳で開いて全部コピーします。
そうしたら、「onClientLoad」イベントのクライアントJSとして貼り付けます。

これで完成です。なんとまぁ簡単ですね。

そうして動かしてみたものがこいつです。


背景の画像はフリーのものを探してきて設定してみました。
動画はFirefoxで動かしたものにしていますが、IE11、chromeでも動くことを確認しています。



いかがでしょう?XPagesはこのようにJavaScriptを動かすことができます。
JavaScriptならいくらでもサンプルがありますので、いいなと思うものがあったら再利用してみましょう(著作権がある場合もあるので、そこは確認してくださいね)。

では、今日はこの辺で。
メリークリスマス。




特定の文字の出現回数を数えるには?

イメージ
おはようございます。
12月も下旬になり、もうすぐクリスマスですね。あ、その前に明日は「天皇誕生日」で休日です。
こっちもお祝いしましょうね(私は何もしないのですが・・・)
さて、クリスマスというと
https://twitter.com/guylocke/status/540505164482752512
で書いたように、XPages関連のブログを書きますということになってますが・・・
今日、この時点で全くのノーアイディアです。
さて、かけるんでしょうか・・・かけたら褒めてくれていいですよ(笑)


では、今日も本題に入る前に、

をクリックしてくださいね。


上に書いたようにXPagesネタがまるっきり思いついていませんので、今日もLotusScriptネタです。

今日は今までに紹介した関数を使って、違う事をやってみます。
文字列中に、特定の文字が何回出現したのかを数えてみるというものです。

PHPだと「substr_count」という関数があるようで、簡単に取得できますがLotusScriptや@関数にはこのような機能を備えたものはありません。
他の方法を考えましょう。

考えたけど分かりません・・・ここはGoogle先生に聞いてみましょう。
「特定の文字を数える」で検索したところ、
Excelでの方法が出てきました。

どうやら、SUBSTITUTEという関数を使って、検索したい文字を""に変換して、変換前後の文字列長の差でカウントしているようです。
ふむふむ、なるほど・・・

SUBSTITUTEなどという関数はLotusScriptにはありませんね。しかし、同じような機能を持つ関数はありますね。
@関数なら@ReplaceSubString関数や、@Replace関数、
LotusScriptならReplace関数ですね。


今回はLotusScriptで実現してみようと思うので、Replace関数を使ってやってみましょう。
Sub Click(Source As Button) Dim inData As String Dim outData As String Dim inLen As Long Dim outLen As Long Dim srchStr As …

空き時間情報を検索してみる

イメージ
おはようございます。

今年はホントにXPagesの話題が多かったですね。
でも、LotusScriptの話題も欲しいよね?ということで、久しぶりにLotusScriptの話題です。

本題に入る前に、
をクリックしましょう。


今日は空き時間情報の検索についてです。
カレンダーにスケジュールを登録していて、他の人と予定が重なっていないかどうかを調べるのにいくつか方法が考えられます。
例えば・・・
確認したい人のスケジュールを自分のカレンダーに表示させてみる会議招集を作成して、出席可能な時間の検索を行ってみる直接本人に聞いてみる(^^; 等でしょうか。

どれを使ってもいいのですが、LotusScriptでも実現できるので、やってみましょう。

検索に必要な情報は次の3つ+αです。
検索したい時刻の範囲検索したい人のユーザー名空き時間と認定する時間返してほしい空き時間の数(1つで良いのか、複数なのか)
まぁ、4つ目は戻り値を単数にするのか複数にするのかということなので、厳密にいうと必要な情報ではありません。なので、3つ+αとしてます。

1.はNotesDateRangeオブジェクトに開始時刻と終了時刻をセットします。
2.は空き時間を検索したい人のユーザー名を配列にセットします(グループ名でも良いそうです)。
3.は指定した時刻の範囲の中で、空き時間として検知したい時間の分数をセットします(30分なら30
1時間なら60)。

ということで、サンプルです。
Sub Click(Source As Button) On Error Goto ErrProc Dim session As New NotesSession Dim chkDateTime As NotesDateRange Dim needTime As Integer Dim names(1 To 2) As String Dim freeTime As Variant '空き時間を検索する開始/終了時刻 Set chkDateTime = session.CreateDateRange() Set chkDateTime.StartDateTime = New NotesDateTim…

2015年度のIBM Champions for ICSに任命されましたよ!

こんにちは。まだまだ現実逃避中です。12月はいけませんね。

さて、すでに多くの方がTwitterやFacebook、ブログ等で発信しているように
2015年度のIBM Champions for ICSが発表されました。
Announcing the 2015 Class of IBM Champions for ICS!


僭越ながら、私もまたまた再任させていただくことができました。
今回は全世界で96名と昨年よりも10%程増えました。日本からは私を含めて6名の方が選出されました。
ちなみに・・・どなたが選出されたのかは
2015 IBM Champions for ICS
を参照願います。


昨年の所信表明3年目のIBM Championに任命していただきました。では、いろんなことを言ってましたが、どうだったんでしょうか?

ブログへのコメントはまだまだ少ないですが、それでも以前に比べたら、着実に増えてきています。
今後も定期的に記事を投稿することができれば、コメントも増えてくるものと思いますので、それを励みに頑張っていきます。

また、テクてくのコミュニティ編ですが、前回(2014年10月)は、今回IBM Championに選出された阿部さんのお力も大きいですが、参加者同士が活発な議論ができて、大盛況でした(機会を作ってまた開催したいと考えてます)。
コミュニティを活発にすることで、Notes/Dominoの良さを伝えていただければと思っていますので、今後も継続していきます(まぁ、日本IBM様が任せてくれればのお話ですが・・・(笑))。




さて、チームスタジオの加藤様は来年はIBM Championに自薦しないとの所信表明をされましたが、私は来年も自薦しようかな?と思っています。
自分自身、コミュニティへの貢献がまだ足りていないかな?と感じているのが正直なところです。
自薦するためには、自分自身で活動ができたと認識できることが必要です。
ですので、2015年度もIBM Championの一人として、Notes/Dominoコミュニティへの貢献を続けていきます。

なにとぞ、よろしくお願いします。

もちろん、この記事を読んでいるあなたがIBM Championになってもいいんですよ。というか、なりましょうよ!



それでは、今日はこの辺で・・・

userBeanを使ってみよう

イメージ
こんにちは。12月の記事は投稿したのに(←いつから月一になった!?とかいうツッコミはいりません)、なんとまた記事を投稿します!

師走で忙しいはずなのですが、ほぼ現実逃避状態なので、問題なしです!(え?問題あり?まぁまぁ)

とにかく・・・今日も記事に入る前にをクリックしてくださいね。


さて、では今日の話題へと移りましょう。
ずいぶん前の記事になりますが、XPagesでノーツアプリケーションのアクセス権をチェックしてみよう!というのを書きました。
XPagesでNotesDBに対するアクセス権を取得するにはどうすれば良いの?というものです。

このときは、SSJSのNotesDatabaseクラスのgetCurrentAccessLevelやqueryAccessPrivilegesを使って取得するという方法を紹介していました。

この記事に対してはいくつか有難いコメントをいただいていまして、その中に「Kazunori Tatsuki」さまから「Domino 9.0.1 もしくはExtension LibraryにあるuserBeanを使うと更に便利にACL周りの情報が取得できますね。」という情報を提供していただきました。

これは、詳細を調べて皆様にお届けしないと!ということで調べてみました。


Notes/DominoでXPagesを利用する場合、「Extension Library」という拡張モジュール群があります。
こちらをDominoサーバーにインストールすると、各種情報へのアクセスを提供する手段として、「Managed Bean」というものが利用できるようになります。

この「Bean」にはいくつかの種類があるようで、今回説明する「userBean」もその一種です。
これはSSJSもしくはEL(XPages データソース解説 - アクセス方法を参照)からアクセスすることができます。

記述方法は至って簡単。
userBean.プロパティ名称
とするだけ。
例えば、「userBean.commonName」と書きます。
計算結果フィールドコントロールに表示させたい場合、「値」プロパティに「式言語(EL)」として書くか、「JavaScript(サーバーサイド)」として書くかの違いだけです。いずれも記述方法は同じです。


とても簡単ですね。
ということで、作成したサンプルが…

XAgentとは?

イメージ
こんにちは。12月です。師走です。後1ヶ月で2014年も終わりです。
今年はもう少し記事の提供ができるかなぁと踏んでいたのですが、なかなか思うようにはいかないもので・・・
情報を入手するのは「タダ」かもしれないけど、情報を提供するのは「タダ」ではありません。
ということですね。

さて、では12月一発目の記事と行きましょう。
これをクリックしてからね。


先月行われたXPagesDay 2014。私が担当したセッションの中で、別サイトのJSONデータを取得するためにはいくつかの方法がありますよ。という話をさせていただきました。
今回はその中でも「XAgent」について取り上げてみます。


そもそもXAgentとは何か?
詳しい説明は、こちらのサイトで解説されていますので、読んでみてください。英語ですがねー。
XAgents - Web Agents XPages style


XPages登場以前の、Domino Webアプリの場合、「?OpenAgent」というURLパラメータを付けてWebページを開くことで指定したエージェントを実行させることができました。
このエージェントの中にPrint文を記述することでページにHTML等を表示させることができます。
ここで、「Content-Type:」を出力するようにしておくと、HTMLではなく、XMLやJSONをページに表示させることができます。

これをXPagesでもやってみようというのがXAgentなのです。

なぜ、XAgentなのかというと、
XMLやJSONデータを取得する場合に限らず、他のWebサイトの情報を取得する場合、別ドメインのものは拒否されてしまいます。
これは、クロスサイトスクリプティングを防止するためです(こちらについては、CORSというキーワードで検索してください)。

?OpenAgentやXAgentを使うと、サーバ上でデータを取得することになるので、「別ドメイン」という事にはならなくなり、それを再利用する形にすることで回避するという訳です。



では、実際にXAgentの実装方法を確認していきましょう。

まず、適当な名前のXPageを作成します(ここでは「XAgent」としておきます)。
作成したら「すべてのプロパティ」にある「rendered」を"false"に変更します。
こうする…