サッカー馬鹿なプログラマー
このサイトの掲載内容は私自身の見解です。
ここでの情報を元にメーカー等に問い合わせたりする事は避けてください。
また、サンプルコードを利用する場合は、利用者の責任の元で十分に利用者環境での動作確認や影響度などについて検討の上、ご利用ください。
このサイトに掲載されているソフトウェア、およびファイルの使用、または使用不具合等により生じたいかなる損害に関しましては作者は一切責任を負いません。
全て利用者の自己責任でお願いします。
  • 17Jul
    • XPagesの入力チェック(エラー表示)

      まず最初に、この度の西日本豪雨で被害に遭われた方に心よりご冥福とお悔やみを申し上げます。被災された方々に心よりお見舞いを申し上げ、一日も早い回復と、被災地の早期復旧をお祈りいたします。また、酷暑の中での復旧作業に携わる皆様のご安全をお祈り申し上げます。こんばんは毎日、35度を超える気温で体調お変わりないでしょうか筆者も出社途中にセミの鳴き声を聞き、今年も夏がやってきたんだなと感じましたまた、夜には近所の川で蛍が鑑賞できますもうすぐで学生は夏休みですねー話は戻り・・・「XPagesの入力チェック」って皆様はどのような方法をとっていますか個人的にちょっと興味があったので、色々試してみたので紹介したいと思います。1)オーソドックスなやり方ですが、コントロールの検証タブで行う入力チェック必須フィールドにチェックを入れて、エラーメッセージを記述。長さバリデータもついでに制御したいと思います。<結果>未入力時長さバリデータの設定値以外楽ちんですねー2)エラー表示コントロール/複数エラー表示コントロールを使用する場合1.編集ボックスコントロールの検証タブの設定は1のまま設定した状態のままエラー表示コントロールを配置し、次のエラーメッセージを表示にて、対象のコントロールのID名を指定します。2.編集ボックスコントロールのすべてのプロパティから「disableClientSideValidation」の値を「true」に設定します。3.上記でエラー表示コントロールの設置は完了ですが、ついでなので複数エラー表示コントロールも配置します。<結果>未入力時長さバリデータの設定値以外こちらも案外簡単に配置できました3)CSJSでアラート表示今度はCSJSで、1の検証に近いものが出来ないかやってみました。ボタンを配置し、以下のコードをイベントタブ>クライアントタブに記述します。var str = document.getElementById("#{id:field11}").value;var reg = new RegExp(/^([a-zA-Z0-9]{1,5})$/);var res = reg.test(str);if(str==''){ alert('入力必須です。'); return false;} if(res==false){ alert('1文字以上5文字以下で入力してください'); return false;}注)RegExpとは?<結果>未入力時長さバリデータの設定値以外案外近いものが出来ました(ほぼ同じ?)4)CSJSで入力チェックinnerHTML表示先ほど、エラー表示コントロール/複数エラー表示コントロールを使ってやってみたことをCSJSで実装してみます。ボタンを配置し、以下のコードをイベントタブ>クライアントタブに記述します。var str = document.getElementById("#{id:field11}").value;var reg = new RegExp(/^([a-zA-Z0-9]{1,5})$/);var res = reg.test(str); if(str==''){ document.getElementById("#{id:computedField1}").innerHTML = '入力必須です。'; document.getElementById("#{id:computedField2}").innerHTML = '入力必須です。'; return false; }if(res==false){ document.getElementById("#{id:computedField1}").innerHTML = '1文字以上5文字以下で入力してください'; document.getElementById("#{id:computedField2}").innerHTML = '1文字以上5文字以下で入力してください'; return false;}<結果>未入力時長さバリデータの設定値以外スタイル入れたら、似たようなことも可能他にも、SSJSでエラーチェックしてみたりエージェントでチェックしてみたりと方法はたくさんあると思います。開発したDBに合ったエラー表示をこだわるのもいいかもしれませんね(エラーなんて出ないことが1番だけど)では、今日はこの辺で・・・あでゅー

      テーマ:
  • 23Jun
    • Node-REDを使ってLINE BOT を作ってみた

      こんにちはロシアワールドカップ、日本vsコロンビア観ましたあの強豪コロンビアに勝利ですよ おめでとうございます次のガーナ戦も期待していますそんな日本は、めっきり梅雨の時期になりましたねこんな時は家に引きこもって、Node-REDを楽しむのが一番ですねというわけで、今回はLINE BOTを作ってみたいと思いますまず必要なものとして・LINE Messaging API https://developers.line.me/ja/・IBM Cloud内のNode-REDhttps://www.ibm.com/cloud-computing/jp/ja/・他に追加したい機能があれば【作ろうと思った背景】・社内のプロジェクトとして、IoTやAIを学ぶ勉強会を行っており、手軽で試せるものが欲しかった・ノーツコンソーシアムのクラウド研で教わったことをフィードバックするため・IBM Watson Workspaceでも実装出来るが「IBMだけで構築してるから出来るんでしょ?」と言われるのがシャクだったため・LINEならほとんどの人が試してくれそうだから手始めに・・・Messaging APIを使ってボットを作成するには、まずLINE Developersコンソールでチャネルを作成しなければなりません以下、作成手順です。https://developers.line.me/ja/docs/messaging-api/getting-started/そして出来上がったのはこちら検証用としてはまずまずの出来ですw次はIBM Cloud側に必要になるNode-RED側に移ります。1)オウム返しするボットを作成完成系はこんな感じです。(超シンプル)<httpノード(Webhook)>以下のように「/line_hook」と設定しました。メソッドは「POST」を指定します。LINE Developerで作成したアプリのWebhook URLに「https://<node-redのURL>.mybluemix.net/line_hook」と設定します。<functionノード>ここのノードでは、メッセージを返す処理を行っています。リファレンスを確認するとこのようになっていました。テキストを返す場合リファレンスとグーグル先生を参考に作成したものが以下のものになります。3行目:Bearer値として、アクセストークン値をコピペします。以下の赤枠の値です。7行目~14行目:ただオウム返しするのはつまらないので乱数を発生させて、発生した分だけ「わん」を追加しています18行目以降はリファレンスを参考に作りました。<httpノード(send_result)>URLはリファレンスを参考に設定しました。<httpノード(http)>特に何も設定してませんデプロイして、早速LINEで試してみましょう見事なオウム返しですね筆者、「わん」をランダムでつけることにより、投稿した言葉を犬語に変換!という風にごまかしていますwwとても簡単でしたよね応用編として・・・・スタンプが投稿されたらスタンプを返す・写真が投稿されたらVisual Recognitionで分析結果を返しちゃうとか追加しておくと、ちょっとおシャンティなボットになりますねw今回はNotes/Dominoなお話はなかったですが、投稿されたメッセージからNotesの文書検索とか出来るといいなーって思ってます。某会社が紹介してたLINEでワークフローもできちゃいそうだな・・・きょうはこの辺で・・・あでゅー

      1
      テーマ:
  • 10Jun
    • Bootstrap-DashboardのサイドメニューをXPagesで表現してみた

      こんばんは本日はあいにくの雨模様ですが・・・明日は待ちに待ったThink Japan – Developer Dayですね天候は悪いかもしれませんが、筆者も朝からお邪魔させていただきます今から楽しみでワクワクしていますさて、今回はとある開発をしているときにBootstrapのDashboardみたいな画面が必要だなーと調査していましたこれです個人的にNotesっぽくて好きなんですまた、Bootstrap を流用すれば、カッコいいデザインでXPagesを作成できるので社内でよく活用させてもらっています(見た目がいいとウケもいいw)話を戻して・・・今日紹介させていただくのは、サイドメニューの箇所になります。赤枠のここです当たりまえの話ですが・・・今選択されているメニュー項目には青で選択させていることを表示させ、選択されていないものは何もついていないようにしなければ意味がありませんXPagesを勉強したてだったころ、こんな時どうしていたかなー?と思い出していると、メニュー1が選択されているXPageとメニュー2が選択されているXPage・・・(以下続く)を作っていたのを思い出しました今思えば、なかなか時間のかかることをしていたんだなーと。(わかりやすいんですけどね)なんかいい方法ないかなーと思い、思いついた案が「ViewScopeをうまく使おう」という答えでした(今更かよ!かもしれませんが)簡単ですが1例を紹介します(世の中探せばもっといい方法あるとは思いますが・・・)1)まずはXPageを作成してBootstrapのDashboardサンプルで使用したい部分のHTMLタグをコピペします。2)metaDataにhttp-Equivの設定を行います。BootstrapのDashboardサンプルの5行目にあたる場所を設定しています。3)BootstrapのDashboardサンプルにあるdashboard.cssをDBにインポートし、XPageにセットします。4)必要個所の文言等の修正をして、一度保存しプレビューしてみます。上記のように表示されましたでしょうかでは、ここから少し改造したいと思います。5)スクリプトライブラリにサーバーJavascriptを1つ作成します。内容は以下のようにします。function menuSelect(val , selectVal){ var Select = ''; if(val == selectVal){ Select = 'active'; }; return Select;}第1引数は、呼び出された変数値第2引数は、選択された変数値とし、両引数の値が等しい場合は"active"という値を返すというものです。6)先ほど、BootstrapのDashboardをコピペしたXPageを開き、サイドメニューのタグを以下のように書き換えます。6-1)<ul>タグを囲むようにパネルコントロールを配置します。筆者は「ulPanel」とID名をつけました。6-2)<a>タグをリンクコントロールに変更。6-3)<li>タグにあるclassの値を""にします。7)<li>タグのclassの値に以下を書きます。#{javascript:menuSelect(viewScope.select,'*');}*にはメニューの番号をいれます。今回の例では、上から1、2、3・・・という感じです。こんな感じになっていると思います。8)リンクコントロール>イベント>onclickに以下を記述します。viewScope.select = '*';*にはメニュー番号を入力します。上にあるメニュー項目から1、2、3・・・という感じで割り振っています。部分更新で6-1で作成したパネルIDを指定します。ex)一番上のメニュー項目viewScope.select = '1';ex)上から2番目のメニュー項目viewScope.select = '2';・・・メニュー項目分作業を繰り返します。9)5で作成したサーバーjavascriptを追加します。10)XPage>イベントのbeforePageLoadに以下を書き足します。viewScope.select = '1';以上で設定は完了です。保存してプレビューを確認しましょうページが呼び出されたときには「Overview」が選択されています。Reportsメニューをクリックすると・・・Overviewからカーソルが外れて、Reportsにカーソルが当たりました今回はメニューのカーソル切り替えのみ対応しましたが、ViewScopeの値で右のコンテンツも切り替わるようにすると、いくつもXPageを作成せずにすみそうですまた、8のところもXPageには繰り返しコントロールをうまく使って表現することもできそうですが、それはまた別の機会に紹介できればと思いますでは今日はこの辺で・・・あでゅー

      4
      テーマ:
  • 07Jun
    • 「続きを読む」を簡単に実装

      こんばんはとうとう梅雨入りしてしまいましたちょっと前までは、もう夏なんじゃない?と思うくらいの気温でしたが皆様、体調崩したりしていないでしょうかさて、今回は「続きを読む」をXPagesで簡単に実装できないか探してみました。続きを読むイメージは以下のようなものです。「続きを読む」をクリックすると・・・びよーんとなるアレです元ネタは以下のリンクを参考にさせていただきました。CSSだけで作る超軽量アコーディオン開閉「続きを読む」「もっと読む」JQueryとかなくてもできるんですね作成方法はリンク先にとても分かりやすく記載されているので今回は、HTMLタグをどのようにXPageに実装したかを書きたいと思います今回もいつも通りカスタムコントロールに作成します。プロパティ定義にて、TitleとBodyを作成しました。共に種類はstringです。1) div は パネルコントロールに変更し、StyleClassにクラスを設定。2) チェックボックスやラベルは、それぞれコントロールがあるのでそれに変更。3) タイトル部分には計算結果フィールドコントロールを配置し、値はcompositeData.Titleを記述。4) 本文部分には複数行編集ボックスコントロールを配置し、読み取り専用にチェックを入れ、値はcompositeData.Bodyを記述。 <xp:panel styleClass="accordion-box"> <xp:checkBox id="ac00"></xp:checkBox> <xp:label for="ac00"></xp:label> <xp:panel styleClass="accordion-container"> <h3><xp:text escape="true" id="computedField1" value="#{javascript:return compositeData.Title}"> </xp:text></h3> <p><xp:inputTextarea id="inputTextarea1" readonly="true" value="#{javascript:compositeData.Body}"> </xp:inputTextarea></p> </xp:panel> <!-- accordion-container --> </xp:panel><!-- accordion-box -->5) XPageを用意し、CSSと上記で作成したカスタムコントロールを配置。すべてのプロパティ>カスタムに先ほど設定したプロパティ定義項目があるので、それぞれにテキストを入力します。以上で実装は完了になります。とても簡単ですねーこのカスタムコントロールにCSSを組み込んでおくと、また新たな部品の完成!ということになります利用するシーンが近々来そうなので、個人的に流用するために書きましたもしこのような開発があったら使ってみてくださいでは、この辺で・・・あでゅー

      テーマ:
  • 23May
    • Node-REDでWatson Text to Speech!

      こんばんわ今日はいつものNotes/Dominoの話題から逸れてNode-REDでWatson Text To Speechについて書きたいと思います最近、自社内で「Watson」やら「AI」やら「IoT」の話題があり、だったらみんなで情報交換して面白いアプリ作らない??ということで、筆者も参加しています敷居をいきなり上げると、皆さんやめたくなってしまうので空き時間で簡単に出来るNode-REDを使ったアプリを使ってみては?ということで筆者も久々にNode-REDで開発しました本日のテーマは「お話させてみよう!」ということで、以下のようなものを作りました[いってみよ!]ボタンをクリックすると・・・ページが切り替わり、EMIさんがテキストを読み上げてくれますNode-REDは以下のようになります。参考URL:https://github.com/watson-developer-cloud/node-red-labs/tree/master/basic_examples/text_to_speech(入力フォームを変更したり、日本語の設定にしたり・・・)今後、このNode-REDをベースに色々な機能を拡張させていこうと思いますでは、今日はこの辺で・・・あでゅー

      テーマ:
  • 09May
    • XPagesでplaceholderをやってみた(今更)

      こんばんは気温の変化についていけない方のサッカー馬鹿です久々に髪を短く切ったのに、会う人から決まって言われる言葉は・・・「真っ黒に焼けたね!」まだ一人にしか「髪切った?」としか言われていません(決してタ〇リさんではありません)さて、本日は開発でドハマりしたことを書きたいと思います皆様はplaceholderってご存知ですかざっくり言うと、フォームなどの入力欄にあらかじめ記入されている薄い灰色のテキストのことです今回、Bootstrapを使ったDB開発をしており、ログイン画面作りたいなーと思いまして。(これ使ってやろうと思いましてw)会社のDominoはまだ、Bootstrapテーマがないバージョンのため色々と準備が必要でした過去のブログに手順を書いていますねーXPagesでBootstrap!ということで、下準備を終わらせBootstrapのsigninのHTMLを流用しました赤枠は編集可能コントロールに変更し、青枠はいらないので削除そして、IBM Championの御代氏のブログ「XPagesでplaceholderを実現してみる」を参考にplaceholderを設定していきます。ID(Email)入力用編集可能コントロールの設定Bootstrapのソースを確認すると、type="email"となっているのですべてのプロパティにあるtypeのリストからemailを選択します。パスワード入力用編集可能コントロールの設定先ほどと同じようにすべてのプロパティにあるtypeのリストからpasswordを・・・ってありませんねもしかして手入力ということで、直打ちしてやりましたw保存して、レッツプレビュー♪怒られてしまいましたwなんかパスワードをtrueにしろって書いてありますね・・・あ、これか今度こそ保存して、レッツプレビュー♪って出てこねぇーーーーーーもしかして、何か特殊な設定がいるのかと思い、グーグル先生に聞いてみました以下のリンク先がヒットしましたUse placeholder attribute and password type in Xpages英語読めないのでよくわからないですが、スクリプトブロックコントロールを使って対象のClassのtypeを書き換えちゃう技(?)以下のスクリプトブロックコントロールを追加します。<xp:scriptBlock> <xp:this.value><![CDATA[XSP.addOnLoad(function(){ dojo.query(".passwordInput").forEach(function(eachInput){ dojo.attr(eachInput, "type", "password"); });});]]></xp:this.value></xp:scriptBlock>「特定のタイプの入力(例:passwordInput)を明白にするstyleClassを設定します。」と書いてあるので、CSSに「passwordInput」に対するスタイルを書き足します。パスワードに追加した編集可能コントロールのStyleClassに追記します。注意点として、パスワードのチェックは不要なのでついていたら外します。今度、今度こそ保存して、レッツプレビュー♪出来たー\(^o^)/いつもならここで「めでたしめでたし」で終わるのですが、Bootstrapのテーマが選択できるDominoバージョンでも同じ設定がいるのか試してみました。ID(Email)入力用編集可能コントロールの設定(typeも忘れずに)パスワード入力用編集可能コントロールの設定typeの項目には・・・追加されてませんね懲りずに直打ちしてやりましたw保存して、レッツプレビュー♪期待通りのエラーwwということで、パスワードにチェックを入れました保存して、レッツプレビュー♪どうせ、例のスクリプトブロック追加しないとダメなんでしょ・・・って出来とるやーんやはりDomino内部で持っているBootstrapテーマはXPagesを考慮していることをシミジミ実感(早く会社のDominoにFP当てたいな)ということで、Dominoのバージョンは常に最新にしておかないと便利な機能の恩恵も受けれないというのがわかりました今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 07May
    • フォームの式(NotesView)続き

      フォームの式(NotesView)こんばんはGWもあっという間に終わってしまいました筆者のGWというと・・・基本サッカー絡みでしたお陰様でこんがりと焼けていますさて、前回の続きでフォームの式(View)についての調査結果です。前回は、Formフィールドを作成してブラウザ上でフォーム名を書き換えて保存してみました・・・が!!フォーム名はうまく書き換わっていませんでしたということで、次のパターン@SetFieldを使ってフォーム名を書き換えてみたいと思います早速実行・・・クライアントから確認してみましたが、やっぱり変わっていませんでしたならばエージェント書いて、@Command([ToolsRunMacro])で呼んでやる!!ということで、エージェントを保存して@Command([ToolsRunMacro])をフォームに配置し再びブラウザからアクセスします。ToolsRunMacroボタンをクリックして実行無事、エージェントは実行されたようです。クライアントから確認してみると・・・お書き換わってるということで、筆者のフォームの式の調査結果が終わりました。フォーム名をブラウザから書き換えることがもしあった場合は、LotusScriptで書き換えないと変わらないことがわかりましたこのような事はやらないかと思いますが、もし何か似たようなことをやっている時があれば「アイツ、こんなことしてたなー」って思い出してくださいwでは、今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 30Apr
    • フォームの式(NotesView)

      こんばんはGWに突入しましたね皆様は9連休ですか飛び石連休ですか4月は今日で最後5月も元気にNotes/Dominoの開発をしていきましょうさて、皆様NotesViewにある「フォームの式」ってご存知ですか筆者も10年位前に初めて知ったのですが、ざっくりいうとビューに異なるフォームが選択されていても、フォームの式に書いてあるフォーム名のフォームでビューにある文書を開くことが出来るんです(わかりづらい)当時は、そんなことも知らなかったので例えばですが、管理部門にはFormAのレイアウトで見せたいけど、利用者にはFormBのレイアウトで見せたい時とかありますよねその時、フォーム式に[ADMIN]ロールを持っている人はFormA、それ以外はFormB・・・などと式を書いて簡単に切り替えることが出来たんです。(今はXPagesとかでやるかもですが)そうやって考えると、当時からNotes/Dominoは画期的だったんですねということで、この「フォーム式」について少し調べなければいけなかったので、調査した内容を書いていきたいと思います。(不足分や指摘事項があったら、次回以降にこっそり教えてください)1)フォームを2つ用意します。・FormA→背景を赤系の色・FormB→背景を青系の色※どちらもValフィールド(テキスト、編集可能)を作成して保存します。2つフォームが出来たら、FormBを新規作成しValフィールドに適当な値を入れて保存します。2)ビューを2つ用意します。・すべての文書→選択式も何もなし。1列目の列式は「Form」で昇順ソート・FormAView →選択式は何もなし。フォームの式に「FormA」と記述し1列目の列式は「Form」で昇順ソート以上で準備は出来ました検証FormAViewから1で作成したFormB文書が表示されていると思います。文書を開くと・・・FormAで開くことが出来ました。プロパティを確認してもFormBですねーでは、すべての文書から開いてみましょうこちらはFormBとして表示されます。こんなに簡単に設定できるんですねどうせNotesクライアントからだけなんでしょと思いますよね?ちゃんとURLにViewを指定してあげると、動作するんです超便利10年前の自分に教えてあげたい・・・せっかくなので、次の検証です。FormAフォームとFormBフォームに「Form」フィールドを作成して書き換えたらどんな動きになるんでしょうか早速追加します。Form(テキスト、編集可能、デフォルト値:Form)FormAのフォームを準備します。Valフィールドの値のみ変更し、保存します。FormAViewから、文書を開きます。Valフィールドの値は書き換わっていますが、FormフィールドはFormAを使って文書更新しても書き換わることはないようです。続けて、Formフィールドの値を「FormA」に変更して保存します。すべての文書で確認すると・・・FormAに変わっていますね文書を開くとFormAに変わっていることが確認できます。この機能を使えば、前期のフォームデザインはAだったけど、今期のデザインはBになったっていうことも強制的に変えられますねじゃあ、この機能も当然ブラウザでも出来ちゃうのかなと思い動作確認してみます。フォームの式がないすべての文書をブラウザから開き、FormA文書を開きます。編集モードに変更し、Formの値を書き換えます。書き換えたら、*保存して閉じるボタンをクリックします。*保存して閉じるボタンの中身は@Command([FileSave]);@Command([FileCloseWindow])文書も保存されたし、Formの値を確認してみましょうあれ変わってなくねこの方法ではFormフィールドの値は書き換わりませんでしたでも・・・何としても書き換えたい次回、色々な方法を試してFormフィールドを書き換えできるか検証したいと思います本日は長くなりすぎたのでこの辺で・・・あでゅー

      テーマ:
  • 17Apr
    • 自作のVideoコントロールを使って開発-後半

      自作のVideoコントロールを使って開発-前半こんばんは4月も中旬を迎え、皆様心待ちのあの日がやってきますねそう、GWGWまでもう少しだけ頑張っていきましょうさて、前回Excelから透過Pngを作成しDBに取り込んだところまで行いました。1)CSSを作成します。コードは以下にしました。#over{background: url(image001.png) no-repeat;/*-- 上にのせる背景透過画像の指定 --*/width: 200px;height: 200px;position: absolute;/*-- 絶対位置の指定 --*/z-index: 1;/*-- 上にする --*/}2)自作のVideoコントロールの前にdivタグを追加します。ポイントとしてはidを付けることと、divタグ間に全角スペースが必要でした。(ここは開発される方の好みで調整してください)<div id="over"> </div><!-- //上になる背景透過画像//-->3)1で作成したCSSを追加してください。保存して、動作確認します。わかりづらいですが、動画の上に透過Pngが施されています試しに動画の上で右クリックすると・・・再生とか動画の・・・などのメニューが出ていないことが確認できました今回の手法はとても簡単に実装でき、工夫次第では文字をなぞらせないようにすることとかも実現可能になりますあまりインパクトがないですが、今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 10Apr
    • 自作のVideoコントロールを使って開発-前半

      こんばんは#IBM THINKも終わり、本日からノーツコンソーシアムのザ・ノーツ研究会が開始した今日この頃、筆者もちょっとした異動があり、座席も変わって心機一転でお仕事していますそんな前置きはさておき・・・今回は、こんな感じのDBをサンプルで作ってほしいと言われたので、ブログ用にアレンジして簡単にご紹介しますページ右側は動画になっています。ページが表示されたら自動で再生→リピートしてほしいそうです。Videoコントロールは以前にXPagesDayで紹介させていただきましたhttps://www.slideshare.net/tshost/xpagesday-2016-xpages・・・ただ、このページにはめんどくさい条件がありました依頼内容は・動画上でマウス右クリックすると、ビデオ保存したりURLコピーしたりとなるのを消してほしい(ソース見たら元もこうもないですけど)・拡大とかさせたくない・とにかく再生させて繰り返しさせたい・触っても何も反応しないようにしてほしい筆者も懸念点等をお伝えしたのですが、依頼者曰く・手軽に保存できる状態にしたくない・わかる人がやって保存するのは諦める・依頼者側では「抵抗はしていますよ」という意思表示は見せたいとのことでした。動画を触らせても反応しないようにするには?と考えてみました思いついたのは「透過Png」でした構築方法はさておき、どうやって手ごろな大きさの透過Pngを手に入れるか・・・作るしかねぇさて・・・透過Pngの作り方ですが貧乏知恵なしの筆者は何とExcelで作成します1)新規ExcelBookを開き、挿入→図→図形→□の図形をクリックし、適当な大きさで図を作成します。2)図形のプロパティを出して透明度を100%にし、線なしにすると下図の左側のように透明な図形が完成します。3)名前を付けて保存→このPC→保存先はどこでもよいので保存形式を「Webページ」にします。こんな感じですねー4)保存されたフォルダを開いてみると・・・お目当ての透過Pngが完成しています5)これを対象のDBにインポートします。さて、Excelで作った透過PngがXPagesでどんないい仕事を見せてくれるのでしょうか続きはまた今度・・・あでゅー

      1
      テーマ:
  • 18Mar
    • printThisという、とても便利なpluginをXPagesに組み込んでみた

      こんばんはとうとうIBM Think2018が始まりますねhttps://www.ibm.com/ibm/jp/ja/think2018.html筆者も行きたかったのですが、諸事情があり今回は参加できませんでした現地に向かわれている方々にはたくさん楽しんでいただきたいものですNotes/Domino10のことも何かしら発表があると思うのでワクワクしながら毎日を過ごしていますさて、今回はこんな依頼があったんです以前、カルーセルでお店のご紹介ページを作ったのですが、そのページに「割引クーポン」を追加したんです。こんな感じで。今時はスマホアプリで表示とか出来ますが、紙に印刷して持参するということもあると思います。じゃあ、印刷しようということで紙に出したところ・・・ダサい赤枠の部分、カルーセルのところですがこんな感じで印刷されました(自分だけかもしれませんが)実際は、青枠の部分があればいいのです・赤枠部分を印刷時に隠す・クーポン印刷ページを別途つくるなど、色々対策を考えたんですが、もっとシンプルに何かできないかと思い探してみましたありました!その名も「printThis」という代物使い方も簡単そうですね早速、組み込んでパーツ化しちゃいましょう1.上記のURLからprintThis.jsと別途jquery-1.11.3を入手してDBにファイルを取り込みます。2.新規カスタムコントロールを作成します。筆者は「ccPrintThis」としました。プロパティ定義>新規プロパティを作りまくります! 名前:debug、種類:boolean、デフォルト値:false 名前:importCSS、種類:boolean、デフォルト値: true 名前:importStyle、種類:boolean、デフォルト値: false 名前:printContainer、種類:boolean、デフォルト値: true 名前:loadCSS、種類:テキスト、デフォルト値:"" 名前:pageTitle、種類:テキスト、デフォルト値:"" 名前:removeInline、種類:boolean、デフォルト値: false 名前:printDelay、種類:Long、デフォルト値:333 名前:header、種類:テキスト、デフォルト値:"" 名前:footer、種類:テキスト、デフォルト値:"" 名前:base、種類:boolean、デフォルト値: false 名前:formValues、種類:boolean、デフォルト値: true 名前:canvas、種類:boolean、デフォルト値: false 名前:doctypeString、種類:テキスト、デフォルト値:"" 名前:removeScripts、種類:boolean、デフォルト値: false 名前:copyTagClasses、種類:boolean、デフォルト値: false  名前:className、種類:テキスト、デフォルト値:""  ←オリジナル3.出力スクリプトコントロールを配置します。printThisのページにある、Advanced FeaturesとOptionsを参考にしながらValue値を書いていきます。$('#print-coupon').click(function(){$("#mySelector").printThis({ debug: false, // show the iframe for debugging importCSS: true, // import page CSS importStyle: false, // import style tags printContainer: true, // grab outer container as well as the contents of the selector loadCSS: "path/to/my.css", // path to additional css file - use an array [] for multiple pageTitle: "", // add title to print page removeInline: false, // remove all inline styles from print elements printDelay: 333, // variable print delay; depending on complexity a higher value may be necessary header: null, // prefix to html footer: null, // postfix to html base: false , // preserve the BASE tag, or accept a string for the URL formValues: true, // preserve input/form values canvas: false, // copy canvas elements (experimental) doctypeString: "...", // enter a different doctype for older markup removeScripts: false, // remove script tags from print content copyTagClasses: false // copy classes from the html & body tag});});出来上がったら、値をすべてcompositeDataに書き換えを行います。$('#print-coupon').click(function(){$("#{javascript:return compositeData.className}").printThis({ debug: #{javascript:return compositeData.debug}, importCSS: #{javascript:return compositeData.importCSS}, importStyle: #{javascript:return compositeData.importStyle}, printContainer: #{javascript:return compositeData.printContainer}, loadCSS: "#{javascript:return compositeData.loadCSS}", pageTitle: "#{javascript:return compositeData.pageTitle}", removeInline: #{javascript:return compositeData.removeInline}, printDelay: #{javascript:return compositeData.printDelay}, header: "#{javascript:return compositeData.header}", footer: "#{javascript:return compositeData.footer}", base: #{javascript:return compositeData.base} , formValues: #{javascript:return compositeData.formValues}, canvas: #{javascript:return compositeData.canvas}, doctypeString: "#{javascript:return compositeData.doctypeString}", removeScripts: #{javascript:return compositeData.removeScripts}, copyTagClasses: #{javascript:return compositeData.copyTagClasses} });});最後に、clickイベントの呼び出し元を「.print-coupon」というクラス名を指定します。(ここもプロパティ定義してもいいかもですね)ここまで出来たら保存します。4.次はXPageを開きます。上記で作成したカスタムコントロールを配置します。配置したカスタムコントロールのすべてのプロパティ>classNameに「.print1」と設定しておきます。配置したカスタムコントロールの下にパネルコントロールを配置します。パネルコントロールのすべてのプロパティ>styleClassの値に「print1」と指定します。イメージコントロールを配置します。クーポンの画像が配置されているURLを指定します。(printThisでは何故かフルパスで書いてあげないと印刷時に表示されませんでした)ここは芸がないですが、注意事項を直接書き足してみます。(直書きが嫌な方は、複数行編集ボックスコントロール等を使うといいと思います)印刷用のボタンコントロールを配置します。ボタンコントロールのすべてのプロパティ>styleClassの値に「print-coupon」をセットします。そして、忘れてはいけないjsファイルの指定です。2つ指定するのを忘れないでねXPageを保存して早速プレビューを見てみましょうお、いい感じに出ていますね早速ピンク枠の「クーポンを印刷する」をクリックしてみましょう・・・こんなんでましたけどー見事に、必要な場所のみ印刷されました繰り返しコントロールと組み合わせれば、もっと楽しい印刷サイトができるかもしれませんねでは、今日はこの辺で・・・あでゅー

      4
      テーマ:
  • 04Mar
    • Instagram.cssを使ってインスタ風なページを作る-その2

      Instagram.cssを使ってインスタ風なページを作る-その1こんばんは気が付けば3月ですねこの間、正月が終わったかと思ったらIBM Thinkまで1ヵ月を切ってしまいました筆者は今年初めて「花粉症」と言われる症状になり、鼻水と咳が止まりません・・・こんなにつらいんですねさて前回の続きです。作成方法を書いていきたいと思います1)フォームの作成リッチテキストを配置したフォームを作成します。出来上がったフォームを使用して写真を1つ添付し保存しておきます。2)ビューの作成最終更新日順(降順)にしたビューを作成し、2列目に添付されているimgファイルのURLが取得できるように列式を記載しています。3)カスタムコントロールの作成カスタムコントロールを新規作成します。筆者は「ccImage」としました。パネルコントロールを配置します。パネルの中にイメージコントロールを配置します。もしDBに何かイメージが登録されていたら、イメージコントロール>イメージ>オプションのイメージリソースはブランクにしておいてください。プロパティ定義を設定します。筆者は、「filterClass」と「imgSrc」プロパティを作成しました。filterClassプロパティは、instagram.cssで生成されるフィルタを呼び出すためのクラス値指定、imgSrcプロパティは、フィルタをかける元の写真のURLを指定するためように準備しています。今回パネルコントロールとイメージコントロールの間にdivタグを追加しました。 <xp:panel style="width:300.0px;height:auto"> <div class="#{javascript:compositeData.filterClass}"> <xp:image url="#{javascript:compositeData.imgSrc}" id="image1" style="width:300.0px"> </xp:image> </div> </xp:panel>4)Instagram.cssをインポートします。https://github.com/picturepan2/instagram.css上記からスタイルシートを入手し、DBにインポートします。5)XPageを作成します。データバインディングは2)で作成したビューを指定します。そして、パネルコントロールを配置します。繰り返しコントロールをパネルコントロールの中に配置します。繰り返しコントロールの設定を行います。特に何か特殊な設定とかしていません。。。繰り返しコントロール内に3)で作成したカスタムコントロールを配置します。配置したカスタムコントロールを選択し、プロパティの設定をします。filterClass:filter-clarendon(値はお好みのものを指定してください)値はコチラに書いてありますimgSrc:viewEntry.getColumnValues().get(1)(2)で作成したビューの2列目の値を取得するように)忘れずに4)でインポートしたCSSを適用させます。あとはパネルコントロールのサイズ調整等を行い、保存します。ブラウザプリビューをすると・・・オリジナルの写真に青いフィルタがかかるわけですスゲーよ!Instagram.css応用すれば・・・ダイアログボックスから選択してフィルタ変更・・・いちいちカスタムコントロールの値を変更しなくてもいいですねXPagesで簡単に写真にフィルタをかけることが出来ました興味があれば是非作成してみてください今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 26Feb
    • Instagram.cssを使ってインスタ風なページを作る-その1

      こんばんは先週金曜日は、ノーツコンソーシアムFestaが開催されました来場くださった皆様、ありがとうございましたそして!!スペシャルゲストにあのMat Newman氏が来日されてました思わず写真をお願いしちゃいました(IBM Champion for ICS日本人メンバーと)はい、そうです黄色いスーツの人たちと、騒がしくしていたのが筆者ですwこんなにいい写真が撮れるとやっぱりInstagramで加工してアップしたくなりますよねNotesでもInstagramっぽく写真にフィルターをかけられると面白いかもしれませんよねということで、Google先生で何かないか探してみました・・・あったInstagram.csshttps://github.com/picturepan2/instagram.css使い方を見てみましたやっぱ英語ですねまあ、Instagram.cssファイルをダウンロードして、設定すればよさそうですね。ここではfigureタグで書いてますけど、クラスで指定しているなら他でも対応できそうですねということで、デモを参考にして作成してみました。( Clarendon を適用してみました)このようにXPagesで実装できました次回、どのように実装しているか・・・芸はないですが紹介したいと思います。今日はこの辺で・・・あでゅー

      4
      テーマ:
  • 10Feb
    • See Attached fileを消したい

      こんばんは2/8にIBM Champion祝賀会を開いていただきました開催関係者の皆様、参加者の皆様、本当にありがとうございましたとても楽しいひと時でした今年も微力ながら、努力していく所存でございます(チャンピンズ フォー アイオーエス)さて、本日はこんな話題で・・・クライアントでよく見かける掲示版ですが、オフィスのルールで「原本を本文に添付すること」などとルールがありませんかブラウザで見ると・・・XPagesのリッチテキストコントロールではテキストと添付ファイルが分かれて表示されるので、隠すにはちょうど良かったのですが(See Attached file)が表示されてしまい画面上を探すことが多々あります。ブラウザからアクセスする場合、たまにOffice製品やPDFビュアーがない端末もあり、表記と異なってしまいます。(添付ファイル見ろって言われても開けないって言われる)こいつさえ表示されなければ・・・って時に使える小技です。1)まずは実験用にXPageを作成し、リッチテキストをバインディングします。2)保存して一度このままで表示させてみます。バッチリ表示されてますね・・・HTMLタグを見てみましょう・・・おや、どうやら「domino-attachment-ref」というclassが設定されているようです。3)スタイルシートを作成します。.domino-attachment-ref{display:none;}4)先ほど作成したXPageに適用します。保存してプレビューしてみましょうタグは残っていますが、(See Attached file)は見えなくなっていますね逆にファイルを表示させたい時は、ファイルダウンロードコントロールを設置してあげると見た目もきれいになると思います番外編イメージを直に貼った場合はどうなるか・・・See Attached fileではないので、問題なく表示されていますファイルのまま添付してしまうと非表示になってしまうので注意が必要ですねでは、今日はこの辺で・・・あでゅー

      テーマ:
  • 02Feb
    • IBM Champion for ICS 2018に任命されました!(やったね!)

      こんばんは今朝、嬉しいNewsがありました日本IBM 佐藤さまブログ記事:https://www.ibm.com/developerworks/community/blogs/bptej/entry/2018_IBM_Champions_for_ICS?lang=enそうです、正式アナウンスが出たんですさすがに全ブランドから自分の名前があるのかが不安でしたが・・・あった日頃の皆様のおかげで、名誉ある賞を今年もいただきました。この場を借りてお礼申し上げますICS 部門では筆者を含め日本から6名選出されています加藤さまブログ: notes/domino liaison御代さまブログ: のおつ -Notes/Dominoに関すること-吉田さまブログ: ノーツと。。。田付さまブログ: ケートリック 開発日記萩原さまブログ: #中小企業 こそ #Notes/ #Domino !!皆様、本当におめでとうございます今年も皆様のご活躍を期待しているとともに、また一緒に何か作れることを願っています今日はこの辺で・・・あでゅー

      テーマ:
  • 26Jan
    • ボタンやリンクをクリックして内容を表示したり非表示させたり・・・

      こんばんは2018年、大雪やら低温注意報やらで身体を壊していませんかインフルエンザも流行っているようなので、健康には注意してください気温は寒いですが、こちらはとても熱かったですよDomino2025 Online Forumが開催されましたお時間あるときに見てくださいさて、今回は「ボタンやリンクをクリックして内容を表示したり非表示させたり・・・」とタイトルでは何のこっちゃわからない内容です例えばですが・・・上記の赤枠の部分をボタンやリンクをクリックしたら表示/非表示するってものを作りたい時が、ごくたまーにあると思います筆者は、今までよくやっていたこととして・フラグフィールドを設けて、そこの値によって表示/非表示を変えるとか・フォーム内のフィールドの値が〇〇だったら表示/非表示を変えるとか・divタグで囲んであげてdisplay:noneを流用するとかほとんどこんな感じでやっていたと思います。それで、ちょっと前に開発したときに気づいたんです・・・XPagesなんだからScope変数使えるじゃんしかも、Scope変数のほうが無駄なフラグとか考えなくて便利じゃん(やっちまった・・・)ということで、忘れっぽい自分自身のための備忘録として手順を書いていきたいと思います。表示/非表示させたいコンテンツは赤枠で囲っている「発送会社」と「伝票番号」とします。1)対象のXPageを開いて、イベントタブ>ページ>beforePageLoadに以下のSSJSを入力します。viewScope.put("変数名",false);(ここでは"disp"としています)2)表示/非表示に利用するパネルコントロールを2つ配置します。3)両方のパネルコントロールに名前を付けます。ここでは上段のパネルコントロールに「outPanel」、下段のパネルコントロールに「inPanel」とつけています。4)上段のパネルコントロール内にリンクコントロールを2つ配置します。5)1つ目のリンクコントロールラベル:詳細表示可視 :!viewScope.get("変数名")イベントタブ>マウスのonclickにviewScope.put("変数名",true)部分更新を上段のパネルコントロールに指定します。6)2つ目のリンクコントロールラベル:詳細非表示可視 :viewScope.get("変数名")イベントタブ>マウスのonclickにviewScope.put("変数名",false)部分更新を上段のパネルコントロールに指定します。7)下段のパネルコントロール内に、表示/非表示させたいコンテンツを配置します。表示/非表示させたいコンテンツを配置した下段のパネルコントロールを、上段のパネルコントロール内に配置します。下記イメージでいうと、赤枠を青いところへ配置します。下段のパネルコントロールの可視に以下のSSJSを設定します。viewScope.get("変数名")8)XPageを保存してプレビューします。詳細表示リンクをクリックすると・・・隠していたコンテンツが表示されました詳細非表示リンクをクリックすると、最初の状態に戻りますとても簡単でしたねリンクコントロールではなくボタンコントロールでも同じように使用することが出来ますので、・ヘルプ表示用のボタンに活用・作成者、最終更新者のプロフィール表示させるなど、活用シーンによっては便利に使用することが出来ると思いますでは、今日はこの辺で・・・あでゅー

      テーマ:
  • 16Jan
    • 今更・・・あけましておめでとうございますw

      こんばんはあけましておめでとうございます今年もよろしくお願いします(今更だと思いますが)皆さん、年末年始はいかがお過ごしでしたか筆者の周りでは、インフルエンザB型が流行っていたようで、ようやく落ち着いてきたと言われています最近、気候の変化も激しいので、体調に気を付けてくださいあと巷ではIBM Championの発表があったとかないとか。筆者もノミネートしたのですが・・・メールが来ない理由はわかってるんです(多分)発表まで待つとします本題へ・・・本日は、ページャーについて見つけたトピックがあったのでご紹介します。例えばですが・・・こーんなビューがあって、これをXPages化をします。XPageにビューコントロールを置いてーページャの位置を変えてみたりー・・・当然こうなりますこれじゃ嫌だそう言うクセの強い人がいるんですでも、大丈夫世の中にはとてもいい人がいて、コピペで解決してくれるものを準備してくれていますそんな人の力を借りましょう1)皆さん大好きopenNTFのサイトから右上の検索で▼から「Snippets」を選択し、「Bootstrap Pager」と入力して検索します。2)以下の検索結果になったのではないでしょうか?3)まずはスタイルシートの方を開いてみましょう。4)ながーーーいCSSが書かれているのでページ下にスクロールすると「Select XSnippet to copy Clipbord」ボタンをクリックするとコードを全選択するのでコピーをします。5)Domino Designerに戻り、スタイルシートを作成します。スタイルシートの名前は何でもいいです(ここではSample.cssにしています)6)先ほどコピーしたCSSコードをペーストして保存します。7)次に「Twitter Bootstrap Pager Template」を開きます。8)先ほどと同じように、「Select XSnippet to copy Clipbord」ボタンをクリックするとコードを全選択するのでコピーをします。9)ビューコントロールのページャー部分を選択して、以下の部分を削除します。削除した部分に8でコピーしたコードを貼り付けます。10)赤枠で囲っているforの値をビューパネルのid名に書き換えます。11)カスタムコントロールにスタイルシートを適用します。リソースタブ>追加ボタン>スタイルシートと選択しましょう。12)5で作成したCSSが表示されるので、選択してOKをクリックします。13)これで準備は終わりです。XPageを保存してプレビューします。さあ、どうでしょう素敵なページャーになったと思いませんか今回はページャーをカスタマイズしてみました。次はどこが変わるのかお楽しみにw今日はこの辺で・・・あでゅー

      2
      テーマ:
  • 31Dec
    • 荷受案内DBをクライアントで1から作ってみよう-その6

      荷受案内DBをクライアントで1から作ってみよう-その1荷受案内DBをクライアントで1から作ってみよう-その2荷受案内DBをクライアントで1から作ってみよう-その3荷受案内DBをクライアントで1から作ってみよう-その4荷受案内DBをクライアントで1から作ってみよう-その5こんばんは早いもので、大晦日になってしまいました今年後半戦は、ブログの更新がペースダウンしてしまいました来年はもっとたくさん書ければいいなと思っているサッカー馬鹿ですさて、クライアント版の最後の仕上げをしたいと思います。1)以前に作成したサブフォーム(読み取り専用)に下記のようなアクションボタンを追加します。保存してクライアントからテストしてみましょう。2)ログインしているNotesIDが受取人になっている文書を開きます。条件式が問題なければ、以下のようにアクションボタンが表示されていると思います。クリックしてみます。荷受人確認に名前と日時がセットされ保存されます。3)再度文書を開くと以下のようになっているはずです。無事、荷物の受け取りにサインが出来ましたね。大まかなクライアントの開発は、以上になります。(他のアクションボタンもステータスによって表示を変えるといいですね)この様にNotes/Dominoでは、簡単にワークフローの開発も出来る素晴らしいグループウェアです次は、この荷受案内をWeb化してイマドキらしいシステムに変えたいと思います。こんな感じということで、本日は短いですがこの辺で・・・1年間、お世話になりました。来年も引き続きよろしくお願いいたします良いお年をお迎えくださいあでゅー

      1
      テーマ:
  • 14Dec
    • 【閑話休題】12月もイベントたくさん!!

      こんばんは早いもので12月も半分が終わろうとしています家の掃除や、身の回りの整理整頓、色々考えていく時期ですねーさて、本題に・・・12月15日(金)あのテクてくLotus技術者夜会のライトニングトークが開催されます・IBM Notes/Dominoに関するTips・IBM Notes/Dominoのここが好きだ!・Notes/Dominoに関することなら、なんでもOK私も、またもや視点を変えた発表が出来ればと思い、ウケるかウケないかわかりませんが用意しましたわけわからないタイトルでまた挑みますwお楽しみにー続いてDomino JAMってご存知ですか??パンにつけるアレではありませんw海外では、ユーザーやビジネスパートナーが複数回ワークショップを開催しているようです。こちらのブログを見ると、ブラジルやポーランドで開催されたと書いてます。https://www.ibm.com/blogs/collaboration-solutions/2017/12/05/off-great-start-theres-come-2/(どちらもW杯出場国ですね・・・)「日本は蚊帳の外なんでしょ?」って思っていませんか?ちゃんと「Tokyo」ってエントリーされているんです今回はなかなか本気感を感じませんか?あなたの思い、Notes/Dominoにぶつけませんか??12月18日および19日(世界各地の時間帯にあわせて3回)に Virtual Jam としてオンラインの Web ミーティングが開催されます。来週19日午前10時開催のVirtual Jamのみですが、場所を借りてパブリックビューイングして参戦しますので集結して語り合いませんか??みんなでNotes/Dominoの未来、作りましょう!!おぉ、やってやると思った、そこのあなたJam への参加には登録が必要なんです。未登録の方は下記ノーツコンソーシアムのブログをご参考にご登録をお願いします。https://www.notescons.gr.jp/home.nsf/blog.xsp?action=openDocument&documentId=E33BA551111CB7F7492581E50030C65F続いてですが、パブリックビューイング参加に関して場所は、日本アイ・ビー・エム株式会社 イノベーション・センターです。https://www-356.ibm.com/partnerworld/wps/servlet/ContentHandler/pw_com_prb_iic_overview※入館には事前に来訪者登録が必要になります。下記サイトよりご登録をお願いします。https://form.jotform.me/73451567195464両日、皆様にお会いできるのを楽しみにしておりますwでは今日はこの辺で・・・あでゅー

      2
      テーマ:
  • 25Nov
    • 【閑話休題】11月は本当にイベントがたくさん!!

      こんばんは日の入りが早くなり夜はとても寒くなりましたよね。皆様、体調を崩しやすい時期ですので健康管理には十分お気を付けくださいさて、この時期になるとあちこちでたくさんのイベントがあり筆者も昨年以上にあちこち参加させていただきました11月15日 ノーツコンソーシアム オープンセミナー2017・出張テクてくIBM Championの吉田さまとタッグを組んで、IBM Qatson Workspace と IBM Notes を連携した斬新なシステムを紹介させていただきました。・XPagesDayアイデアソン「XPagesのさらなる効果的な活用方法について」をテーマに複数のチームに分かれて色々なアイデアを出して話し合いました!詳しい内容はXPages.jpにブログがありますのでそちらをご覧ください。・ザ・ノーツ研究会&新インフラ研究会の合同報告会Verse on Premise(VOP)を中心にFPで追加された機能の研究結果を報告させていただきました。また、新インフラ研究会はIoTを使った新たな取り組みを紹介させていただきました。11月17日-18日 Notes 四国フェスタ2017(nsf)筆者初めての香川県高松市でした。そんな四国フェスタでは、ユーザー目線でIBM Notesを見て実はたくさんのコストをかけなくてもデザインだけで利用者は満足できる場合がある事を伝えました。(最後は全員集合)翌日は、毎年恒例(?)のうどんツアーに参加し、高松の魅力を教えていただきました金毘羅さん&うどんサイコー11月23日-24日 ノーツコンソーシアム天城拡大理事会「Notes再始動」というテーマで、ノーツコンソーシアムとしてNotes/Domino10に向けて何が出来るのか?、そして何をやっていくべきなのか?を参加者全員で熱く語ってきました!全体を通して言えることは・・・Notesはまだまだ元気です筆者はこの1年間、Notesを使ったユニークなアプリ、もしくはNotes以外にも他のシステムと連携してもっと便利なアプリが出来ないかを追及してきました。このブログを読んでいる方にも少なからず、Notesをもっとこうしてほしいとかこんな改善をしてほしいとかあると思います。そんな熱い気持ちをぶつけてみませんかDomino Jam 2025に是非エントリーしてください登録サイトはhttps://www.ibm.com/collaboration/announcements/domino-jam2025になります。また、https://www.xpages.jp/でもリンクを追加しておりますので、一人でも多くの皆様のご参加をお待ちしております!日本からNotes/Domino10の未来を素晴らしいものにしていきましょうということで、本日はこの辺で・・・あでゅー

      テーマ:

プロフィール

makoto

自己紹介:
NotesR4.5からずっと携わっています。 「えっ?!これNotes?」と言われるような、 N...

続きを見る >

読者になる

このブログの読者

読者数: 0

読者になる

このサイトの掲載内容は私自身の見解です。
ここでの情報を元にメーカー等に問い合わせたりする事は避けてください。
また、サンプルコードを利用する場合は、利用者の責任の元で十分に利用者環境での動作確認や影響度などについて検討の上、ご利用ください。
このサイトに掲載されているソフトウェア、およびファイルの使用、または使用不具合等により生じたいかなる損害に関しましては作者は一切責任を負いません。
全て利用者の自己責任でお願いします。

最近のコメント

Ameba人気のブログ

Amebaトピックス