tag:blogger.com,1999:blog-376815332024-02-20T14:04:37.028+00:00I saw seashells.ここ最近はAccess 2007関連を弄ってます。AJAX関連はDojoに通ってます。
West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.comBlogger88125tag:blogger.com,1999:blog-37681533.post-2093886709900009442007-03-17T20:37:00.000+00:002007-03-17T20:39:34.273+00:00BloggerのFeedにも「続きを読む」を適用してみる。無精をしたいが為に何通りかの方法を試してみたりしてきた<a href="http://isawseashell.blogspot.com/2007/03/blogger-35.html">Bloggerでの「続きを読む」機能</a>ですが、現在はtemplate + javascriptな方法で運用中です。<br /><br />このFeedを読んでいる方には迷惑な話かもしれませんが、もう少し「続きを楽しむ」って事で、Feedにも適用してみました。<br /><br /><div class="fullpsot"><br />RSSなりAtomなFeedをBlog Readerで購読していると、見かけるのが記事全文を表示しないタイプのFeedです。<br /><br />BloggerでもSummaryなFeedが用意されているのですが、これは先頭からの文字数規定でSummaryとするタイプであり、折角「続きを読む」な書き方をしているのにちょっと理不尽な感じがしまして、別サーバーを介して<div class="fullpost">内を削るFeedを作ってみました。<br /><br />実際には私はFeedburnerを利用していますので、こちらにもSummary機能はあるのですが、こちらも規定文字数までを出力するタイプなので、FeedburnerのFeed元を自サーバーに変更して対応しました。<br /><br />サーバーはASP.Netな環境であり、今回のFeedはc#で書かれたaspxページで提供されています。<br /><br />BloggerのコンテンツはXHTML 1.0 Strictだと思っていたのですが、私個人がそれをやや無視したコンテンツを書いていたり、Picasaから投稿した際に生成されたと思われる画像への<a>タグのAttributeの記述で要素間の空白が無いケース等があり、xmlなパーサー使って読み込んでremoveChildで消せば楽々だとかの思いは適いませんでした。<br /><br />今更過去に書いたPostの細部を確認しながら修正する気力も湧かないなかったので、XML Parserを使うのではなく正規表現を交えたコードでゴリゴリと<div class="fullpost">を消しこむようにしました。<br /><br />それほどASP.NetなサーバーをBloggerのFeedの加工なんかに利用できる方もいるとは思えませんが、コードはこんな感じです。<br /><div class="codeFormat"><br /><span class="src_keyword">public</span> <span class="src_keyword">partial</span> <span class="src_keyword">class</span> atom : System.Web.UI.Page<br>{<br> <span class="src_keyword">protected</span> <span class="src_keyword">void</span> Page_Load(<span class="src_typekeyword">object</span> sender, EventArgs e)<br> {<br> XmlDocument xml = <span class="src_keyword">new</span> XmlDocument();<br> WebClient webClient = <span class="src_keyword">new</span> WebClient();<br> String sFeed = (Request[<span class="src_doublequotation">"feed"</span>]!=<span class="src_keyword">null</span><br> ?Request[<span class="src_doublequotation">"feed"</span>]<br> :<span class="src_doublequotation">@"http://isawseashell.blogspot.com/feeds/posts/default"</span> );<br> <br> Stream webDataStream = webClient.OpenRead(sFeed);<br><br> xml.Load(webDataStream);<br><br> XmlNamespaceManager nsmgr = <span class="src_keyword">new</span> XmlNamespaceManager(xml.NameTable);<br> nsmgr.AddNamespace(<span class="src_doublequotation">"atom"</span>, <span class="src_doublequotation">"http://www.w3.org/2005/Atom"</span>);<br><br><br> XmlNodeList contents = xml.SelectNodes(<span class="src_doublequotation">"//atom:entry//atom:content"</span>, nsmgr);<br><br> <span class="src_keyword">foreach</span> (XmlNode content <span class="src_keyword">in</span> contents)<br> {<br> <span class="src_typekeyword">string</span> sContent = content.InnerText;<br><br> sContent = removeFullpost(sContent);<br><br> content.InnerText = sContent<br> + <span class="src_doublequotation">"<br/>【記事全文はBlogサイト I saw seasheels. にて!!】"</span>;<br><br> } <span class="src_singlelinecomment">// __forEach</span><br><br> Response.Write(xml.OuterXml);<br><br> }<br><br> <span class="src_singlelinecomment">//</span><br> <span class="src_keyword">private</span> <span class="src_typekeyword">string</span> removeFullpost(<span class="src_typekeyword">string</span> sContent)<br> {<br><br> Regex rexp = <span class="src_keyword">new</span> Regex(<span class="src_doublequotation">"<div.*class=.*fullpost.*>"</span>);<br><br> <span class="src_typekeyword">int</span> nStartPos = rexp.Match(sContent).Index;<br><br> <span class="src_keyword">if</span> (nStartPos > <span class="src_digit">0</span>)<br> {<br> <span class="src_typekeyword">int</span> nEndPos = findEndTag(sContent, nStartPos, <span class="src_doublequotation">"div"</span>);<br><br> sContent = sContent.Substring(<span class="src_digit">0</span>, nStartPos)<br> + (nEndPos + <span class="src_doublequotation">"</div>"</span>.Length + <span class="src_digit">2</span> <= sContent.Length<br> ? sContent.Substring(nEndPos + <span class="src_doublequotation">"</div>"</span>.Length + <span class="src_digit">2</span>)<br> : <span class="src_doublequotation">""</span>);<br> }<br><br> <span class="src_keyword">return</span> sContent;<br> }<br><br> <span class="src_keyword">private</span> <span class="src_typekeyword">int</span> findEndTag(<span class="src_typekeyword">string</span> s, <span class="src_typekeyword">int</span> nStartPos, <span class="src_typekeyword">string</span> sTagName)<br> {<br> Regex rexpEnd = <span class="src_keyword">new</span> Regex(<span class="src_doublequotation">"</"</span> + sTagName + <span class="src_doublequotation">".*>"</span>);<br> Regex rexpStart = <span class="src_keyword">new</span> Regex(<span class="src_doublequotation">"<"</span> + sTagName + <span class="src_doublequotation">".*>"</span>);<br><br> <span class="src_typekeyword">int</span> nEndPos = rexpEnd.Match(s, nStartPos + <span class="src_digit">1</span>).Index;<br> <span class="src_typekeyword">int</span> nInnerStart = rexpStart.Match(s, nStartPos + <span class="src_digit">1</span>).Index;<br> <span class="src_keyword">if</span> (nInnerStart > <span class="src_digit">0</span> && nInnerStart < nEndPos)<br> {<br> nStartPos = findEndTag(s, nInnerStart, sTagName);<br><br> nEndPos = findEndTag(s, nStartPos, sTagName);<br> }<br> <span class="src_keyword">else</span><br> {<br> nEndPos = rexpEnd.Match(s, nStartPos + <span class="src_digit">1</span>).Index;<br> }<br><br> <span class="src_keyword">return</span> nEndPos;<br> }<br><br>}<br /></div><br /><br />省略時の文言もパラメータにしようとかは思っていますが、現在はこんな感じて書いてあります。そしてこれをホスティングしているサーバーのURLをFeedBurnerのFeed元に指定しいます。<br /><br />今現在このBlogのFeedを見ると記事が省略されいるかと思います。<br /><br />このコードをHostingしているサーバーの規約・制約があるのでサービスとして公開する事は出来ませんが、Adsense等の広告収入がServerのレンタル代(月1000円程度)をカバー出来るようになったらなぁ・・とかと夢を見ています(笑<br /><br />こんな感じで実はちょっと迷惑は機能を実装したりして、自己満足に浸っていられるのがPrivateなBlogの良さではないかと。<br /></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com1tag:blogger.com,1999:blog-37681533.post-46031781902147069812007-03-14T20:50:00.000+00:002007-03-15T02:50:49.221+00:00Bloggerのフィードを投稿日(Published date)順で。このBlogでも自身のFeedを最近の記事としてFeed Widgetで利用していますが、BloggerのFeedはデフォルトでは更新日時順でソートされています。<br /><br />これはある意味正しいし、「仕様です」と言われればそれまでなんですが、実はパラメーターで投稿日順に変更出来ることがわかりました。<br /><div class="fullpost"><br /><a href="http://googlesystem.blogspot.com/">Google Operating System Blog</a>の記事ですが、<a href="http://googlesystem.blogspot.com/2007/03/sort-bloggers-feeds-by-published-date.html">Sort Blogger's Feeds by Published Date</a> によると、フィードのパラメーターとして"orderby=published"を渡せば良いとの事。<br /><br />早々に設定しましたが良い感じです。更新日時と投稿日のどちらでソートするかは好みですしょうが、選択肢が選べるのは良いことです。<br /><br />ちなみに自分のBlogのFeed URLは、<br /><li>http://YourBlogName.blogspot.com/feeds/posts/default</li><br />になりますが、これにパラメーターを付けて以下のようにします。<br /><li>http://YourBlogName.blogspot.com/feeds/posts/default?orderby=published</li><br /><br />ですがこの設定をする機能はBloggerの管理画面には用意されていません。<br /><br />Feed URLはテンプレート中の<b:include data='blog' name='all-head-content'/>の中に含まれていて、そのままではテンプレートをHTMLの編集でも出来ません。<br /><br />このタグは、実際にBlogが表示される際に<meta>タグと<link>タグに展開されます。<br /><br />ですので自分のBlogをブラウザで表示し、そのソースから>head<タグ内の<meta>タグと<link>タグFeed部分を抜き取り、テンプレート中の<b:include data='blog' name='all-head-content'/>部分と置き換える必要があります。<br /><br />つまり以下のようになっているのを、<br /><div class="codeFormat" style="height: auto;"><br /><<span class="src_typekeyword">head</span>><br /><br /><<span class="src_typekeyword">b:include</span> <span class="src_attributename">data</span>=<span class="src_singlequotation">'blog'</span> <span class="src_attributename">name</span>=<span class="src_singlequotation">'all-head-content'</span>/><br /><br /><<span class="src_typekeyword">title</span>><br /> <<span class="src_typekeyword">data:blog.pageTitle</span>/><br /></<span class="src_typekeyword">title</span>><br /></div><br /><br />実際に表示されたページのソースからコピーして以下のように置き換えます。<br /><div class="codeFormat" style="height: auto;"><br /><<span class="src_typekeyword">head</span>><br /><br /><<span class="src_typekeyword">meta</span> <span class="src_attributename">content</span>=<span class="src_singlequotation">'text/html; charset=UTF-8'</span> <span class="src_attributename">http-equiv</span>=<span class="src_singlequotation">'Content-Type'</span>/><br /><<span class="src_typekeyword">meta</span> <span class="src_attributename">content</span>=<span class="src_singlequotation">'true'</span> <span class="src_attributename">name</span>=<span class="src_singlequotation">'MSSmartTagsPreventParsing'</span>/><br /><<span class="src_typekeyword">meta</span> <span class="src_attributename">content</span>=<span class="src_singlequotation">'blogger'</span> <span class="src_attributename">name</span>=<span class="src_singlequotation">'generator'</span>/><br /><<span class="src_typekeyword">link</span> <span class="src_attributename">href</span>=<span class="src_singlequotation">'http://isawseashell.blogspot.com/feeds/posts/default?orderby=published'</span> <span class="src_attributename">rel</span>=<span class="src_singlequotation">'alternate'</span> <span class="src_attributename">title</span>=<span class="src_singlequotation">'I saw seashells. - Atom'</span> <span class="src_attributename">type</span>=<span class="src_singlequotation">'application/atom+xml'</span>/><br /><<span class="src_typekeyword">link</span> <span class="src_attributename">href</span>=<span class="src_singlequotation">'http://isawseashell.blogspot.com/feeds/posts/default?orderby=published'</span> <span class="src_attributename">rel</span>=<span class="src_singlequotation">'alternate'</span> <span class="src_attributename">title</span>=<span class="src_singlequotation">'I saw seashells. - RSS'</span> <span class="src_attributename">type</span>=<span class="src_singlequotation">'application/rss+xml'</span>/><br /><<span class="src_typekeyword">link</span> <span class="src_attributename">href</span>=<span class="src_singlequotation">'http://www.blogger.com/feeds/37681533/posts/default'</span> <span class="src_attributename">rel</span>=<span class="src_singlequotation">'service.post'</span> <span class="src_attributename">title</span>=<span class="src_singlequotation">'I saw seashells. - Atom'</span> <span class="src_attributename">type</span>=<span class="src_singlequotation">'application/atom+xml'</span>/><br /><<span class="src_typekeyword">link</span> <span class="src_attributename">href</span>=<span class="src_singlequotation">'http://www2.blogger.com/rsd.g?blogID=37681533'</span> <span class="src_attributename">rel</span>=<span class="src_singlequotation">'EditURI'</span> <span class="src_attributename">title</span>=<span class="src_singlequotation">'RSD'</span> <span class="src_attributename">type</span>=<span class="src_singlequotation">'application/rsd+xml'</span>/><br /><br /><<span class="src_typekeyword">title</span>><br /> <<span class="src_typekeyword">data:blog.pageTitle</span>/><br /></<span class="src_typekeyword">title</span>><br /></div><br /><br />上記の<link>タグの内、<span class="src_attributename">rel</span>=<span class="src_singlequotation">'alternate'</span>となっているの2つが通常のフィードURLになります。(RSSとAtom)<br /><br />ちなみにテンプレートを編集する際には「ウィジェットのテンプレートを展開」のチェックをする必要があります。詳細な手順はこんな感じです。テンプレートの編集はやや難易度が高いというか失敗すると困るので事前の保存は欠かさずに。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqz3j3tOHTc67Zzuv_bIh19ArJSf03l4duC7nVqAXMCgHoBMomk3lC224qioDeTKNY3BzZJ3dAHiaNjlmKo1qN3ddzcR8St1fA__bVuqW58KiCyD19Na_34MlzBdpg1UcjoasUQ/s1600-h/blogger20070303_03.PNG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqz3j3tOHTc67Zzuv_bIh19ArJSf03l4duC7nVqAXMCgHoBMomk3lC224qioDeTKNY3BzZJ3dAHiaNjlmKo1qN3ddzcR8St1fA__bVuqW58KiCyD19Na_34MlzBdpg1UcjoasUQ/s320/blogger20070303_03.PNG" alt="" id="BLOGGER_PHOTO_ID_5037446663476129042" border="0" /></a><br /><br />この辺りの変更は<a href="http://isawseashell.blogspot.com/2007/03/blogger-35.html">「続きを読む」機能シリーズ(笑</a>で散々やりましたけどね。<br /><br />このorderby=publishedは、 <a href="http://isawseashell.blogspot.com/2007/03/blogger.html">"Bloggerに「関連記事リスト」を。"</a>にも追加しましたが、こっちはリストの評価方法を再検討する必要があるんで、これに関してもそろそろ手を入れてみたいと思ってます。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-4023353975155086322007-03-14T18:52:00.000+00:002007-03-14T19:03:56.121+00:00Adsense を 自分でクリックしない為に。-3私の用にGoogle Adsenseからの初回入金は1年ぐらい先みたいな、自分でサイトを見ながらデザインとか記事を見直したりしていて、閲覧者の大多数を自分が占めているような場合は、その初回入金までの間に自己クリックによりGoogleよりAdsense Accountを停止されないかと、サイトを見るたびにナーバスになったりしていませんか?<br /><br /><a href="http://isawseashell.blogspot.com/2007/03/adsense-2.html">前回Adsenseの自己クリックを防止する為にProxomitron用のフィルター</a>をまた更新しました。中々うまく書けたのではないかと思っているのですが、<a href="http://www.adsensetrick.net/selfclickprevention.html">リンクを貼ってくれたサイト(Adsense Trick)</a>の方に尋ねた所、サイトに書き込まれた設定を自分でProxomitronに設定するのはやや難しいような話でした。<br /><br /><div class="fullpost"><br />今回はフィルターを書き換えより、主として設定方法を簡易化しました。<br /><br />最初にGoogle Adsenseにログインして、アカウント情報から自分のAdsense-Id(16桁の数字)を取得するといいでしょう。Adsense-Idは、Adsense管理画面の以下の部分です。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6xm0DdmCb-9TII4c8xDOJwnSRftQ0TfV0rvLrWlYxMYSkP97X0YuaIrXvbjXWz6endaANcpyY0jtCA5WZmVhmwitWaGmzMsl8Nu2g8t3rXoYx14zAOEgRZchk7KJfvIY14i1Zig/s1600-h/01.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6xm0DdmCb-9TII4c8xDOJwnSRftQ0TfV0rvLrWlYxMYSkP97X0YuaIrXvbjXWz6endaANcpyY0jtCA5WZmVhmwitWaGmzMsl8Nu2g8t3rXoYx14zAOEgRZchk7KJfvIY14i1Zig/s400/01.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855334456171714" border="0" /></a><br /><br />Adsense-Idが判ったならば、今回はマージ(統合)可能なProxomitronの設定ファイルを作りましたので、<a href="http://isawseashells.googlepages.com/adsenseself-clickprevention">これをここからダウンロード</a>して下さい。<br /><br />ファイルはzip形式で圧縮してあります。zipを展開すると、中身はProxomitronの設定ファイル(adsense.cfg)と自分のAdsense-idを書き込むリストファイル(myAdsenseId.txt)が入っています。リストファイルは中身が空になっていますが取り敢えずは気にせずに。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0aM61PRVkl-45alI1jo9KvWWTMfWT7aLH4ic6aCn_rfpmarZgx5GC2anT177Wo47Ww4ela_U2T00TloklDaoKneK-HckBZe7zkfkGf60MkorpkE96cpuTamEL4rGe8NAOdShOpw/s1600-h/02.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0aM61PRVkl-45alI1jo9KvWWTMfWT7aLH4ic6aCn_rfpmarZgx5GC2anT177Wo47Ww4ela_U2T00TloklDaoKneK-HckBZe7zkfkGf60MkorpkE96cpuTamEL4rGe8NAOdShOpw/s400/02.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855343046106322" border="0" /></a><br /><br />この空のリストファイル(myAdsenseId.txt)をインストールしたProxomitronのListsフォルダにコピーして下さい。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvZnf7FRpftVjM6xkB2Ac2bv1JulYceikBP13JtjI0ocMlqd0rWlUkKcSfQ4bfUNffMnCvB2HyzJBQi8mNLq8lBiOf3OFT66dVjaD5McGR9tqlb-eYVQn9_J3gfdWzgiwdDv-1UQ/s1600-h/03.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvZnf7FRpftVjM6xkB2Ac2bv1JulYceikBP13JtjI0ocMlqd0rWlUkKcSfQ4bfUNffMnCvB2HyzJBQi8mNLq8lBiOf3OFT66dVjaD5McGR9tqlb-eYVQn9_J3gfdWzgiwdDv-1UQ/s400/03.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855343046106338" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSfqQkscmVwmcKoU4mHDrJmzuQET4cjmLiGcOqIuZS3zuUqb0zcEsw0iLu0wHzWvKFZs_j6M4tIJtHRl0StGKycZfII5b0FT2ry_zdVC9BXQSV5jnUplA1dIwapte5N2qcHzFbCA/s1600-h/04.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSfqQkscmVwmcKoU4mHDrJmzuQET4cjmLiGcOqIuZS3zuUqb0zcEsw0iLu0wHzWvKFZs_j6M4tIJtHRl0StGKycZfII5b0FT2ry_zdVC9BXQSV5jnUplA1dIwapte5N2qcHzFbCA/s400/04.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855347341073650" border="0" /></a><br /><br />次にProxomitronを開き、メニューから「設定ファイルの併合」を選び、zipファイルに入っていたAdsense.cfgを指定してください。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIDlS5MRTT4lorInc8IqsxlXtnmwNbSsUaTeOZTpgC7WNAu9cQI6HaCuPhNIBVjCr1GuUQzJgTvgg3I_9lc2IwKC_5rKKKMrJT3ggRvd9cByzz7Zw1Xd65zLxTK0ViVuk2eeacTA/s1600-h/05.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIDlS5MRTT4lorInc8IqsxlXtnmwNbSsUaTeOZTpgC7WNAu9cQI6HaCuPhNIBVjCr1GuUQzJgTvgg3I_9lc2IwKC_5rKKKMrJT3ggRvd9cByzz7Zw1Xd65zLxTK0ViVuk2eeacTA/s400/05.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855347341073666" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUZlwUAW83CLR3Ph7ZlqHbmnY8rNs7Ytl8Vmk8bqCkFsaHnaC5ZsFVl4i5MCUlpmpbA8lGd_bxMuWW5Ww7yNcovr1eG5bFtwmOzNcbKPbJwwzLVKzqL2YEg4C2HCT7V_H0RuqUHg/s1600-h/06.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUZlwUAW83CLR3Ph7ZlqHbmnY8rNs7Ytl8Vmk8bqCkFsaHnaC5ZsFVl4i5MCUlpmpbA8lGd_bxMuWW5Ww7yNcovr1eG5bFtwmOzNcbKPbJwwzLVKzqL2YEg4C2HCT7V_H0RuqUHg/s400/06.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855570679373074" border="0" /></a><br /><br />これによりフィルターが現在の設定にマージされ、Proxomitron画面の下部に「併合完了」の文字がでます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMR_aLVpoR1qEb1Gwut6OHGu77B_E2l5-s1c5ZpQD1nto10Q9J5upGHGL43JOing1Xd1Wg1ty9CFAoD1YykqSQ56c6TQykf5MrJVVJ_Pfh7yVgb8op9aSD09lBtZk21nXFVi31mQ/s1600-h/07.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMR_aLVpoR1qEb1Gwut6OHGu77B_E2l5-s1c5ZpQD1nto10Q9J5upGHGL43JOing1Xd1Wg1ty9CFAoD1YykqSQ56c6TQykf5MrJVVJ_Pfh7yVgb8op9aSD09lBtZk21nXFVi31mQ/s400/07.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855574974340386" border="0" /></a><br /><br />フィルターは併合(インストール)されましたが、この状態だとアクティブになっていません。フィルターの状態を確認しても、インストールした二つのフィルターは赤色で無効になっています。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFoZXnVNcNMHWIDFWZmWeslmqSGIlivrhtU06px2GG-hvi9Osr9sdQsgoyPr1UyUtYbQezc8T2wVgrOXMpah1ZpO2m7qG4FN5E_r7GWTIKoqZnOxG5ydmzWuCzdjKMqCzsDzHFVg/s1600-h/08.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFoZXnVNcNMHWIDFWZmWeslmqSGIlivrhtU06px2GG-hvi9Osr9sdQsgoyPr1UyUtYbQezc8T2wVgrOXMpah1ZpO2m7qG4FN5E_r7GWTIKoqZnOxG5ydmzWuCzdjKMqCzsDzHFVg/s400/08.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855574974340402" border="0" /></a><br /><br />これを有効にする為には画面の設定保存ボタンを押してください。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlNDPlEbZ0F1jRRJC8lQagpq0JvoJkmxRr6QEU3ifpTZSwf77h3eTaqvlsqRIMMiAgaJ_91Dg6ponmz5-RC1EYrQlwGYJJXofPVez8bSKIiB7AkLxr5jjRkhqno7cCshQ-lu5d_Q/s1600-h/09.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlNDPlEbZ0F1jRRJC8lQagpq0JvoJkmxRr6QEU3ifpTZSwf77h3eTaqvlsqRIMMiAgaJ_91Dg6ponmz5-RC1EYrQlwGYJJXofPVez8bSKIiB7AkLxr5jjRkhqno7cCshQ-lu5d_Q/s400/09.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855579269307714" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3EYNugybuI8xXHdkrQdkdHhyphenhyphenKIsTVEF3pDGN1c6jMAq1fFhafZ3oRgkrjU79hQpEPWvzOY8I1b5I5ezZM-SkiHJ9VOyG4Gjr8SIZNvuYccjk_-oksnRZRyCFINPiTypMV3_SOLg/s1600-h/10.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3EYNugybuI8xXHdkrQdkdHhyphenhyphenKIsTVEF3pDGN1c6jMAq1fFhafZ3oRgkrjU79hQpEPWvzOY8I1b5I5ezZM-SkiHJ9VOyG4Gjr8SIZNvuYccjk_-oksnRZRyCFINPiTypMV3_SOLg/s400/10.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855583564275026" border="0" /></a><br /><br />そしてメニューから「デフォルト設定のリロード」を選択し実施ください。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg__0oPM7XNn-dpVABVB27VHSzSMr2tq8JVoE802EJoOHFFSxkfygtrXl4W3o2jPEcID-tmLccoL4Es9n21qqZMbjiaJwi6mZQmCm0YLK47SEBpMd5i_V-c03E9q7LDi3ngdWOqpw/s1600-h/11.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg__0oPM7XNn-dpVABVB27VHSzSMr2tq8JVoE802EJoOHFFSxkfygtrXl4W3o2jPEcID-tmLccoL4Es9n21qqZMbjiaJwi6mZQmCm0YLK47SEBpMd5i_V-c03E9q7LDi3ngdWOqpw/s400/11.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855965816364386" border="0" /></a><br /><br />これによりフィルターは有効になります。<br /><br />次に、自分のAdsense-Idをリストに登録します。これはProxomitorn画面からではなく、タスクバーアイコンから行います。タスクバーのアイコンを右クリックしてメニューから、「ブロックファイルに追加」を選び、myAdsenseIdを選択します。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidCg5L39sWVURC-NGAwGcRYCrlrti522uiICHZ6nQw4ESxHpDaDSaWklCc_uPvQaXd5QkrufkF1h1UrIjcJa7flOedU_Svl8H4ej_h2wY0cm2FSw6rdZs9H8J3Lpl6Hdzo3Pf07g/s1600-h/12.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidCg5L39sWVURC-NGAwGcRYCrlrti522uiICHZ6nQw4ESxHpDaDSaWklCc_uPvQaXd5QkrufkF1h1UrIjcJa7flOedU_Svl8H4ej_h2wY0cm2FSw6rdZs9H8J3Lpl6Hdzo3Pf07g/s400/12.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855965816364402" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK13VdXzjXf9wI5P-zjKjWM65iEux1_XnvB7rTg-Bj2pAf7t3Npt88TOuPcriOEKZ1Ud9Xsc2FARjBS6ry6e8myBt1XtapEPG40aLIesf8lwqyGmOk5Y9nujc5AYdGMKUVtHEvvg/s1600-h/13.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK13VdXzjXf9wI5P-zjKjWM65iEux1_XnvB7rTg-Bj2pAf7t3Npt88TOuPcriOEKZ1Ud9Xsc2FARjBS6ry6e8myBt1XtapEPG40aLIesf8lwqyGmOk5Y9nujc5AYdGMKUVtHEvvg/s400/13.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855970111331714" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqzZyniUJsB0KxiWAz0m01znSY1LXsZgWszqUZCS7cvLKfPS9hVlSECA-2fpYxTev2ux1MbX4o5f7yuNP-J6HYTPwRc2iGz66nj0FeriCe4Ibzb4eLewxVcktcS-6KVk3F5-ODQw/s1600-h/14.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqzZyniUJsB0KxiWAz0m01znSY1LXsZgWszqUZCS7cvLKfPS9hVlSECA-2fpYxTev2ux1MbX4o5f7yuNP-J6HYTPwRc2iGz66nj0FeriCe4Ibzb4eLewxVcktcS-6KVk3F5-ODQw/s400/14.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855970111331730" border="0" /></a><br /><br />「URLをBlock Fileへ追加」画面が現れますから、自分のAdsense-Idを入力しOKボタンを押してください。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFq-z73vwaaoon8b-ijJwrPFfpTTaigminX67-ao6A9oJswA2Clj7z-IUOR1RQCKRMx6MUFvO-uMVVvoous0owYX7wOmXoDFhcvWSGOBplzOgKoLUImnd7rQ2-C41PqPoQmAziLg/s1600-h/15.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFq-z73vwaaoon8b-ijJwrPFfpTTaigminX67-ao6A9oJswA2Clj7z-IUOR1RQCKRMx6MUFvO-uMVVvoous0owYX7wOmXoDFhcvWSGOBplzOgKoLUImnd7rQ2-C41PqPoQmAziLg/s400/15.jpg" alt="" id="BLOGGER_PHOTO_ID_5041855974406299042" border="0" /></a><br /><br />これで全設定は完了です。後はブラウザのProxy設定をすればフィルターは動きます。自分のサイトを見て確認してください。<br /><br />上記の手順によりフィルターの設定はかなり簡略化されたと思うのですが如何でしょうか?<br /><br />次回には、自分のサイトで指定したIDの広告が表示された場合に、それをログファイルに書き出すフィルターを書く予定です。<br /><br />これはAdsense広告で自分のサイトには相応しくない広告が表示される事がある場合、Adsense設定のフィルター機能を使いますが、これはURL単位でしか指定できません。ですがこれらの広告は同一のAdsense-Idで多数のサイトを運営しており、気が付く度にフィルターに足していくのが面倒なので、自分で一通りサイトを巡回した後に、ログファイルにそのAdsense-Id広告のURLを吐き出すように出来ないかと考えています。<br /><br />近日中には作成する予定で、うまく機能したらまた記事にします。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-59556669791727724382007-03-13T06:25:00.000+00:002007-03-13T06:38:17.566+00:00Access2007 新機能 複数値フィールド -- 01<a href="http://isawseashell.blogspot.com/2007/03/access2007-00.html">前回のMulti-valued field(複数値フィールド)</a>に関しての続きです。<br /><br />個人的にはRapidな開発領域から外れるような形でのMicrosoft Accessによるシステム開発にはあまり気乗りがしないのですが、今更ですがこれだけPCが普及した社会であり、企業内の机の上にはPCが基本である現状でもあり、日常的な細かな業務もPCで管理出来るようにして業務効率を上げたいとの要望は尽きることなくあるわけで、専用で高価なSystemを程でもないような領域では、Access2007のアプローチは有効であろうと思います。<br /><br />目指すべきMicrosoft Accessでのシステム開発のポイントは、如何にコードを書かずに済ますかだと思います。色々と細かい事をフォローしようとするとVBAコードの記述が必要になってくるのですが、そのような局面を如何に減らすかがポイントではないでしょうか。<br /><div class="fullpost"><br />まずは前回作成したテーブルに対して、Access2007の基本機能でシンプルにフォームを作ってみます。テーマはあくまでもRapidな開発を考えてですので、スクラッチから(Formデザインで初期から)作成等はしません。<br /><br />このAccessの機能によるフォームの自動作成のポイントは、テーブルデザイン時に各フィールドを適切に設定しておく事です。入力ルールやIMEの制御等を含めて、テーブルのデザインとして設定することで、フォーム作成時に後から余計な設定をする必要がなくなります。<br /><br />前回のテーブル作成時にMulti-valued field(複数値フィールド)を設定しましたが、作成時にはフィールドの型としてLookup Wizard(ルックアップウィザード)を選びましたが、作成したテーブルのフィールド型は参照しているテーブルのPrimary Key(主キー)の型となります。(※ 主キーとして複数フィールドを設定している場合はもう少し複雑な事になりますが、これは別途記述したいと思います。)<br /><br />作成(設定)時はLookup Wizardを選びますが、<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzZSv5KK9B3SJZX7uyvUyA69kaTaJwMtPLsSYbxNUEw3gdco7F-92IpNYNjjvbUSNq6AilXkejkVtThuRcN-dulPoYGY_qojGmtZzHEYrreCvU_Mr5_YOoK1BDwLulEE6hAxmX8g/s1600-h/WS000394.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzZSv5KK9B3SJZX7uyvUyA69kaTaJwMtPLsSYbxNUEw3gdco7F-92IpNYNjjvbUSNq6AilXkejkVtThuRcN-dulPoYGY_qojGmtZzHEYrreCvU_Mr5_YOoK1BDwLulEE6hAxmX8g/s400/WS000394.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291641473408018" border="0" /></a><br /><br />作成されたテーブルのフィールド型はNumber型になっている。(参照先の主キーの型)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOA4CGUC3syLlEogFpZVW9yBhAQllY7JJVy_6OWln7JZIlhjmHX36rN0FicNNR4_Ao5issoUXgOMBaolUQlEBbIOW12SRPIGm7Rs-DYQCcFD_nlvCyGw9iNLedBX6skVOc18gHqQ/s1600-h/WS000435.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOA4CGUC3syLlEogFpZVW9yBhAQllY7JJVy_6OWln7JZIlhjmHX36rN0FicNNR4_Ao5issoUXgOMBaolUQlEBbIOW12SRPIGm7Rs-DYQCcFD_nlvCyGw9iNLedBX6skVOc18gHqQ/s400/WS000435.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291645768375362" border="0" /></a><br /><br />上記のように複数値を許可して作成したフィールドも型としては特に追加されたタイプではなく、複数値型が新たに追加されたわけでは無い事がわかります。<br /><br />フォーム作成の対象となるテーブルを選択した状態でCreateメニューからFormボタンを押す事で、テーブルの各フィールド設定に基づいて自動的に作成されます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGOr4nnyUQsduqQuYN6KjPiQ74c1AUozk-y5dXNZ7g1Va7fXGGRR6CG5CKl2wMbBbm7MQ0S8P3XOl-6OV58ozIdObA4ZOOczxtZ5GDC-tgbmw802ByLLN1k6tS6sA4QZJGjgI1wg/s1600-h/WS000433.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGOr4nnyUQsduqQuYN6KjPiQ74c1AUozk-y5dXNZ7g1Va7fXGGRR6CG5CKl2wMbBbm7MQ0S8P3XOl-6OV58ozIdObA4ZOOczxtZ5GDC-tgbmw802ByLLN1k6tS6sA4QZJGjgI1wg/s400/WS000433.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291641473408034" border="0" /></a><br /><br />作成されたフォームは以下のようになります。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ27PAeXkzKTn-erusmsZM5TrZyHqnDjjYP9zuXDMsvr_SSfy9EXvdavoi57MD0tycWgFQa_kyPQtOPzX-SH2_EuxIv3wU7IXyoX9JHljeFduGBJ1L39qfq5PPws0FSfEWIQINOA/s1600-h/WS000434.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ27PAeXkzKTn-erusmsZM5TrZyHqnDjjYP9zuXDMsvr_SSfy9EXvdavoi57MD0tycWgFQa_kyPQtOPzX-SH2_EuxIv3wU7IXyoX9JHljeFduGBJ1L39qfq5PPws0FSfEWIQINOA/s400/WS000434.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291641473408050" border="0" /></a><br /><br />複数値フィールドと設定したVendorsはテキスト型ですが、入力はキーボードからの文字入力は出来ず、ドロップダウンリストからの選択になります。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFwrgrcMsFC7CDpmaYC18uNx0f64Buw-stDfooisAMzifqZNgqGcAAXRK9sOoaiCba4UnU9uWaOOelvabyaaAJZtGlRROWYpLZszHi3rYF2YWPnP6nsEvq7bQunRjlTlcy3gx0zw/s1600-h/WS000444.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFwrgrcMsFC7CDpmaYC18uNx0f64Buw-stDfooisAMzifqZNgqGcAAXRK9sOoaiCba4UnU9uWaOOelvabyaaAJZtGlRROWYpLZszHi3rYF2YWPnP6nsEvq7bQunRjlTlcy3gx0zw/s400/WS000444.JPG" alt="" id="BLOGGER_PHOTO_ID_5041292985798171826" border="0" /></a><br /><br />このようにテーブルのデザイン時に設定してあれば、シンプルな操作で入力フォームが作成できます。<br /><br />同様の事を複数値フィールド機能を使わずに、テーブル同士を繋ぐ副テーブルを使った場合のフォームの作成ステップを考えると雲泥の差に感じます。<br /><br />話はちょっとズレますが、実はこの別テーブルで関連付けした場合でもフィールドにルックアップの設定をしておけば、Accessはやや強引ながらもボタン一発で自動的に複数値を入力可能なフォームを作成してくれます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk-yHGkDc0hXIMOOeXECVKMBOW87DZZiB1Yah4QCCuyiXSMed2DYTasX65dmyDWOe7uN11wyRXRsVdPFEPfZbTssBYMUDCRLhFqhPevIl6TBefJiMFU21Ii8Ykaw8AIJopeKFpLQ/s1600-h/WS000438.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk-yHGkDc0hXIMOOeXECVKMBOW87DZZiB1Yah4QCCuyiXSMed2DYTasX65dmyDWOe7uN11wyRXRsVdPFEPfZbTssBYMUDCRLhFqhPevIl6TBefJiMFU21Ii8Ykaw8AIJopeKFpLQ/s400/WS000438.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291839041903714" border="0" /></a><br /><br />ちょっとだけVendor入力のサブフォームのサイズを修正しましたが、それなりに使えるフォームです。入力規則はしっかりとフォローされますし、副テーブルにはデータが自動的(?)に入りますし。<br /><br />ちなみに上記フォームの基となるテーブルと関連テーブルはこんな感じです。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitxcjgyKGXJ7wGX4QrpP_FDK_cCQimZc1b5IGHl1onaEa3J7oORvY1ZGDxxHsWoyrf55ZPxD3lCe-t3Z-AfMsuopD_lEUNfb4SScCMysr3OshZcEnjqGvZ2mBApx8ptGu6W39kRg/s1600-h/WS000439.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitxcjgyKGXJ7wGX4QrpP_FDK_cCQimZc1b5IGHl1onaEa3J7oORvY1ZGDxxHsWoyrf55ZPxD3lCe-t3Z-AfMsuopD_lEUNfb4SScCMysr3OshZcEnjqGvZ2mBApx8ptGu6W39kRg/s400/WS000439.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291843336871026" border="0" /></a><br /><br />このサブフォームもAccess2007からの新機能だと思います。従来はサブフォームはWizardを使うにしても別途作成する必要があったのですが、Access2007だとTableを直接参照する事が出来ます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij89qoBkFHksRXSioihXlwd6Al4KCHdwBpo7-cKWefwzgKSXgWumxA1f-lsUAh5011KXYMu7jMBydxvEopLDyuvZQ7M4hMlvVsuYzrQn1A38-dLofAsC2R2MSePtsrD66TCDMG2A/s1600-h/WS000440.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij89qoBkFHksRXSioihXlwd6Al4KCHdwBpo7-cKWefwzgKSXgWumxA1f-lsUAh5011KXYMu7jMBydxvEopLDyuvZQ7M4hMlvVsuYzrQn1A38-dLofAsC2R2MSePtsrD66TCDMG2A/s400/WS000440.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291843336871042" border="0" /></a><br /><br />ですがこれが通用するのもフォームだけでレポート(帳票)作成となると別です。ボタン一発で作成したレポートを比較してみましょう。<br /><br />まずは複数値フィールドを使ったテーブルから作成したレポート。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDcdxRIuA9rlq5sRhXGzlXHFgPv-aQ8wdMvFv2q5DLssMQTizyih7J99F_BKjHJ_rfuh4Z2_M8dmxFNR0grhvtjgCwW733aRHgZukoXJr8bTN0MX1FdFE9m3DWIxZmK-UNeg4iCA/s1600-h/WS000442.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDcdxRIuA9rlq5sRhXGzlXHFgPv-aQ8wdMvFv2q5DLssMQTizyih7J99F_BKjHJ_rfuh4Z2_M8dmxFNR0grhvtjgCwW733aRHgZukoXJr8bTN0MX1FdFE9m3DWIxZmK-UNeg4iCA/s400/WS000442.JPG" alt="" id="BLOGGER_PHOTO_ID_5041291843336871058" border="0" /></a><br /><br />そして、副テーブルを使ったパターンのテーブルから作成したレポート。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW4Q0vIcbx6RoFjNacqqvuhRhmohcJbO7Efaxfix_R8YolnYBpSusCz4oxK64hJ8jWz5KvaipxYNlvdvUVYp0P4FuB-tM12stFDFCYn1IIbZyC9JyT-1ZeFxn7UceQVaaTo7cedA/s1600-h/WS000443.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW4Q0vIcbx6RoFjNacqqvuhRhmohcJbO7Efaxfix_R8YolnYBpSusCz4oxK64hJ8jWz5KvaipxYNlvdvUVYp0P4FuB-tM12stFDFCYn1IIbZyC9JyT-1ZeFxn7UceQVaaTo7cedA/s400/WS000443.JPG" alt="" id="BLOGGER_PHOTO_ID_5041292045200333986" border="0" /></a><br /><br />上記のように副テーブルを使ったパターンでは、単純にAccessまかせではレポート(帳票)として使い物になりません。サブレポートを使うなり、VBAコードをレポート内に入れてレコード単位で子要素を取得して表示するような処理をしなければなりません。<br /><br />つまり複数値フィールドを使用するメリットは別途副テーブル等を作成/管理する手間の面よりも、レポートやフォーム作成時の簡易性にあると思います。<br /><br />VBAで制御コードを書いたSpecialなフォームやレポートにはデザインや入力性では敵わないのですが、作成必要な時間、つまりはコストを考慮した場合には検討する価値のある物なのではないでしょうか。<br /><br />以上のような形で、複数値フィールド(Multi-valued field)に関して見てきましたが、次回にはその内部的な面を調べてる予定です。<br /><br />またここまで使ってきた上でAccessの機能に「これはちょっと・・」的な事を思う面もあるので、それらも書きたいと思います。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-80498158613073500082007-03-12T16:49:00.000+00:002007-03-13T00:47:11.234+00:00Adsense を 自分でクリックしない為に。-2以前に<a href="http://isawseashell.blogspot.com/2007/02/adsense.html">「Adseseを自分でクリックしない為に」</a>という記事で<a href="http://www.proxomitron.info/">The Proxomitron</a>を使ったフィルターを書きましたが、その時のあまりにも適当であったフィルターを改善しました。<br /><br />対象となるのは「コンテンツ向け AdSense」のみですが、完全にクリックが出来なくなりますから、自分のサイトを安心して閲覧する事ができます。<br /><br />またAdsense IDにて絞込みますので、他のサイトを閲覧する際には影響を及ぼしません。<br /><div class="fullpost"><br />最初に具体的にどうなるのかを説明します。まずは通常はブラウザの画面でURLしているテキストを右クリックすると、「リンク先のURLをコピーする」等のメニューが出てきます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9wCTe-T9yaIMZb9KxhBewUFndB_8yuElPwiKqRAXthtDz7w6JLQNmvRNcO5SiZHCJgJe5mzS3WDjB0YGfTDJpNdJasJMJDT4zp9RXIRWOE-L8Xa21gAamklOtzPY6AyfEfh4TgQ/s1600-h/WS000430.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9wCTe-T9yaIMZb9KxhBewUFndB_8yuElPwiKqRAXthtDz7w6JLQNmvRNcO5SiZHCJgJe5mzS3WDjB0YGfTDJpNdJasJMJDT4zp9RXIRWOE-L8Xa21gAamklOtzPY6AyfEfh4TgQ/s400/WS000430.JPG" alt="" id="BLOGGER_PHOTO_ID_5041197470020475858" border="0" /></a><br /><br />Adsenseの表示されている領域でもこれは同様ですが、フィルターを適用後はこのメニューが出てこない=リンク先が無くなります。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizZe89nig-UAGq0aMfQvYqUUfC6GPkgtKhiNUOFOFhmcoKS4JVb_KR2Rh0tARseiTUXLpCBHkryrRGczJrBxrCZlwmj2zjIXVYMCJPjT1Z5aGD6_r1h5eRjW_wFI2zxNDxeGXdxA/s1600-h/WS000431.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizZe89nig-UAGq0aMfQvYqUUfC6GPkgtKhiNUOFOFhmcoKS4JVb_KR2Rh0tARseiTUXLpCBHkryrRGczJrBxrCZlwmj2zjIXVYMCJPjT1Z5aGD6_r1h5eRjW_wFI2zxNDxeGXdxA/s400/WS000431.JPG" alt="" id="BLOGGER_PHOTO_ID_5041197470020475874" border="0" /></a><br /><br />そして操作ミスが怖くて中々出来ない、Adsense領域内のテキストも安心して選択できるようになります。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht0C86DdOO2tQI7Wa4POzQbUFLOgJ5f-u-QmvKkgumjORbze2JJ4HxdXOdOTiTqFa6KpFdOCu96DAA52p0n1nCNTIUVH7WRpaLQX_ouFihR4bIW_zoOAGeltVSLjSFvZda039nEQ/s1600-h/WS000429.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht0C86DdOO2tQI7Wa4POzQbUFLOgJ5f-u-QmvKkgumjORbze2JJ4HxdXOdOTiTqFa6KpFdOCu96DAA52p0n1nCNTIUVH7WRpaLQX_ouFihR4bIW_zoOAGeltVSLjSFvZda039nEQ/s400/WS000429.JPG" alt="" id="BLOGGER_PHOTO_ID_5041197465725508546" border="0" /></a><br /><br />上記のように、Adsense広告を単なるテキストとして表示するようになるフィルターです。Adsense広告の改変は規約で禁じられていますが、自分が自身のサイトをローカルで表示する場合のみへの適用であり、他の方への影響をまったくありませんから、この方法ならば問題は無いかと思います。<br /><br /><a href="http://www.proxomitron.info/">The Proxomitron</a>のインストールに関しては、<a href="http://www.pluto.dti.ne.jp/%7Etengu/proxomitron/">Proxomitron-J</a>を参照してください。<br /><br />私が使用してるのは、Proxomitron Ver.Naoko 4.5 "May" 版になります。Proxomitron-Jによると、バージョンに関しては以下の解説があります。<br /><blockquote><br />Proxomitron の最新版 Ver.Naoko-4.5 には、「May(5月)」バージョンと呼ばれるものと「June(6月)」 バージョンと呼ばれるものがあります。公式に "May" が公開されたあと、いくつかの仕様変更、バグ修正などが行われて非公式に公開された(存在が明らかになった)ものが "June" です。 "June" は現在の最新版であり、おそらく最終版です。<br /></blockquote><br />ファイルは日本語化パッチも含めて、<a href="http://www.pluto.dti.ne.jp/%7Etengu/proxomitron/download.html">Proxomitron-JのDownloadページ</a>から入手可能です。<br /><br />個人的には<a href="http://isawseashell.blogspot.com/2007/03/blog-post.html">最近の記事でも書きました</a>が、インストーラ無しのでzip形式で提供されている、"Proxomitron Ver.Naoko 4.5 "May" [ZIP] ( 1.08MB )"をお勧めします。<br /><br />初期のInternet Explorer等に対する設定の方法は、<a href="http://www.pluto.dti.ne.jp/%7Etengu/proxomitron/help/Installation.html">インストールと削除の仕方(Proxomitron-j)</a>を参照してください。また<a href="http://journal.mycom.co.jp/special/2000/proxomitron/">"Webブラウジングを快適にする「The Proxomitron」(MYCOMジャーナル)"</a>にも詳細な解説があります。<br /><br />私が今回書いたのは「Webページフィルタ」ですので、<a href="http://www.pluto.dti.ne.jp/%7Etengu/proxomitron/help/Web_Page_Filters.html">ウェブページフィルタダイアログに対する解説(Proxomitron-J)</a>も参照しておいてください。<br /><br />テキストで書かれたフィルターをインポート機能で取り込む事が出来ますので、<a href="http://www.pluto.dti.ne.jp/%7Etengu/proxomitron/help/Web_Page_Filters.html">ウェブページフィルタダイアログに対する解説(Proxomitron-J)</a>の「ウェブフィルタをシェアする」という項目も要チェックです。<br /><br />今回の書いたフィルターは二つあります。これは<a>タグを取り除くものと、その周りを取り巻くonclick(),onfocus()等のイベントハンドラを無効にするフィルターになります。<br /><br />まずは<a>タグを取り除き、リンク先に飛べなくする為のフィルター。<br /><br /><div class="codeFormat" style="height: auto;"><br />[Patterns]<br />Name = <span class="src_doublequotation">"Anti Self Click Adsense"</span><br />Active = TRUE<br />Multi = TRUE<br />URL = <span class="src_doublequotation">"*.googlesyndication.com/$TYPE(htm)"</span><br />Limit = <span class="src_digit">2048</span><br />Match = <span class="src_doublequotation">"$NEST(<a*href=$AV(*0000000000000000*)*>,\9,</a>)"</span><br />Replace = <span class="src_doublequotation">"\9"</span><br /><br /></div><br /><br />Match の後で<b>0000000000000000</b>(16桁)となっている部分には自身のAdsense-Idが入っています。 画面でみとるこんな感じです。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIAYQivzYDaNEubrBlJu7pKWT_V0L-XXA3tV_A0m-WQIzc0xUmL9zuxQJ3QkxXh0JzflNi204mAx-NB7uZwn4tkPCku5cfUvj75tfJOz7ngVlXLlBW8f4MChl4W3Stz1Qe4OLM-g/s1600-h/WS000425.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIAYQivzYDaNEubrBlJu7pKWT_V0L-XXA3tV_A0m-WQIzc0xUmL9zuxQJ3QkxXh0JzflNi204mAx-NB7uZwn4tkPCku5cfUvj75tfJOz7ngVlXLlBW8f4MChl4W3Stz1Qe4OLM-g/s400/WS000425.JPG" alt="" id="BLOGGER_PHOTO_ID_" border="0" /></a><br /><br />このフィルター指定されたAdsense-idを含むはリンク先(href)が設定されいてる<a>タグを取り除き、内部のタグ・テキスト(=innerHTML)に置き換えます。<br /><br />Multitが(True)有効になっている事に注意してください。次のフィルターと同一の領域を対象とする為に 「複数のルールのマッチを許可する」必要があります。<br /><br />このフィルターだけで<a>タグが消えますので、Adsense広告は表示されていても単なるテキストになりますので、クリックしてもリンク先に飛ぶ事は無くなります。<br /><br />ですが、この<a>タグの外側の<td;>タグにonfocus(),onclick()等にイベントが設定されており、クリックするスクリプトのエラーが発生します。スクリプトを解析していませんが、これらのイベントがクリックと同等影響を及ぼす事を懸念して、これらイベントも取り除くフィルタがこれです。<br /><br /><div class="codeFormat" style="height: auto;"><br />[Patterns]<br />Name = <span class="src_doublequotation">"Anti Self Click Adsense2"</span><br />Active = TRUE<br />Multi = TRUE<br />URL = <span class="src_doublequotation">"*.googlesyndication.com/$TYPE(htm)"</span><br />Bounds = <span class="src_doublequotation">"$NEST(<td,*href=$AV(*0000000000000000*)*,</td>)"</span><br />Limit = <span class="src_digit">4096</span><br />Match = <span class="src_doublequotation">"(\#(onclick|onmouseout|onmouseover|onmousedown|onfocus)=$AV(*))+"</span><br /> <span class="src_doublequotation">" \# "</span><br /> <span class="src_doublequotation">" $SET(9=\@)&"</span><br />Replace = <span class="src_doublequotation">"\9"</span><br /></div><br /><br />Bounds の中でで<b>0000000000000000</b>(16桁)となっている部分には自身のAdsense-Idが入っています。 画面でみとるこんな感じです。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAgYac3RuWSrXVs4lOBNA73Cers5a3frfGYW6buQBFLfwC_BZKabrwVGNKejyeL28oz1thb5d4Cjq42STR5fCYhQCqYFXJaGo-uj0B_V1ggu8Fmt9fhElV_hsl_XokVEr7LxKhWA/s1600-h/WS000428.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAgYac3RuWSrXVs4lOBNA73Cers5a3frfGYW6buQBFLfwC_BZKabrwVGNKejyeL28oz1thb5d4Cjq42STR5fCYhQCqYFXJaGo-uj0B_V1ggu8Fmt9fhElV_hsl_XokVEr7LxKhWA/s400/WS000428.JPG" alt="" id="BLOGGER_PHOTO_ID_5041083309789748146" border="0" /></a><br /><br />このフィルターで、onclick,onmouseout,onmouseoveronmousedown,onfocusの各イベントを消しています。こちらもAdsense-Idで絞り込んでいますので、他のサイト閲覧時の影響を排除しています。<br /><br />どちらのフィルターも"*.googlesyndication.com/$TYPE(htm)"とURLマッチを設定していますので、通常のブラウジング時でもフィルターによるパフォーマンスの低下を意識することが無いレベルではないか思います。<br /><br />これら2つのフィルターにより、自分のサイト上のAdsene広告(「コンテンツ向け AdSense」のみ)はマウスで触り放題になりますので、日々安心ではないでしょうか。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-80554829122873833272007-03-12T00:39:00.000+00:002007-03-15T01:00:21.141+00:00Windows Vista で NASに接続 -- 2Windows Vista で NASに接続する際に、強化されたセキュリティ設定の為に認証が出来ない問題に関しての記事を「 <a href="http://isawseashell.blogspot.com/2007/02/windows-vista-nas-windows-vistanas.html">Windows Vista で NASに接続</a>」で書きましたが、かなりの数のアクセスを頂いているようです。<br /><br />改めて読み直すと、殴り書きのような文書でもありお恥ずかしい限りですが、このトラブルで困っている方の多くがWindows Vista のHome Editionでレジストリ変更をするハードルの高さに躊躇してるのではと思い、レジストリ変更の為のファイルを用意してみました。<br /><div class="fullpost"><br />ファイルを用意したといっても、数行のテキストが入ったファイルを設定の数(0,1,2,3)と作っただけです。これだけだと寂しいので、画面を交えて説明したいと思います。<br /><br />作成したファイルはzip形式でアーカイブしてあり、<a href="http://isawseashells.googlepages.com/windowsvistanasconnect.">ダウンロードはここからどうぞ</a>。ファイルの中身は以下のようになっていますので、ファイルを展開してから使って下さい。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEvJrx9zg97B9jvfjJ0HVo7UD8vQM7Lo5hc3rlv2Vh2pzRwPLz8ceX5Jw7-Py4p8ZHCXZYq20CfGEbt6akWuOgRhDLznBk5RvIJfHj9S2vuFFyvnOBuipc1rPksGvjQXpHu3eYJg/s1600-h/WS000423.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEvJrx9zg97B9jvfjJ0HVo7UD8vQM7Lo5hc3rlv2Vh2pzRwPLz8ceX5Jw7-Py4p8ZHCXZYq20CfGEbt6akWuOgRhDLznBk5RvIJfHj9S2vuFFyvnOBuipc1rPksGvjQXpHu3eYJg/s400/WS000423.JPG" alt="" id="BLOGGER_PHOTO_ID_5040831659065940834" border="0" /></a><br /><br /><blockquote ><br />レジストリの変更はWindows OSならびにPCの動作環境に、復旧困難な深刻なトラブルを起こす可能性があります。レジストリ操作を直接、もしくは以下ののファイルを利用しての変更行う際には、それらの<strong>リスク承知の上、自己責任にてお願いします。</strong><br /><br /></blockquote><br /><br />これらのレジストリファイルは、Windows VistaからNASに接続できない問題に対処する為に、lmcompatibilitylevelを変更する為のものであり、ダブルクリックする事でレジストリの値を変更します。<br /><br />変更するレジストリは以下の場所になります。<br /><ul><span style="font-size:85%;">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\lmcompatibilitylevel</span></ul><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4lH6pyT92gvFEaK6_EB0TZELPeUzyetSpQjxULrroegMeZDo7MzR60r7UwnqLDJj1-CI3pzjUOtQaR-Yp1VsYnlfFty33KTNsIEMyXrioaRybQQz6OY2AT4mooA4S94LXV3VCCQ/s1600-h/reg03.JPG"><img id="BLOGGER_PHOTO_ID_" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4lH6pyT92gvFEaK6_EB0TZELPeUzyetSpQjxULrroegMeZDo7MzR60r7UwnqLDJj1-CI3pzjUOtQaR-Yp1VsYnlfFty33KTNsIEMyXrioaRybQQz6OY2AT4mooA4S94LXV3VCCQ/s400/reg03.JPG" border="0" /></a><br /><br />ファイルはそれぞれ、lmcompatibilitylevelを以下のように変更します。 <ul><li>lmcompatibilitylevel_0.reg は lmcompatibilitylevelを0</li><li>lmcompatibilitylevel_1.reg は lmcompatibilitylevelを1</li><li>lmcompatibilitylevel_2.reg は lmcompatibilitylevelを2</li><li>lmcompatibilitylevel_3.reg は lmcompatibilitylevelを3</li></ul>Windwos Vistaの場合、初期値は3です。まずは<span style="font-weight: bold;">lmcompatibilitylevel_0.reg</span> を使って、lmcompatibilitylevelを0に変更して接続を試してみてくたさい。<br /><br />lmcompatibilitylevel_0.reg をダブルクリックすると、レジストリに登録する旨のメッセージが表示されます。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbz1OaHuZN11ZhnavdGuS26WhbIA1QcM7VtRKx6aQs7tXsRMdaFtBj8twiE78M4pqRi74odON7K1LtxZbnDVd5y5WfNB-2LkWNOg3EEGDSxm3CSf11jBTTT3-XPgtnkcBGL00oDA/s1600-h/lm01.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbz1OaHuZN11ZhnavdGuS26WhbIA1QcM7VtRKx6aQs7tXsRMdaFtBj8twiE78M4pqRi74odON7K1LtxZbnDVd5y5WfNB-2LkWNOg3EEGDSxm3CSf11jBTTT3-XPgtnkcBGL00oDA/s400/lm01.jpg" alt="" id="BLOGGER_PHOTO_ID_5040831659065940850" border="0" /></a><br />ここで「はい」を選ぶことで、レジストリの値が変更され、その旨のメッセージが表示されます。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLm5AFvcvEH4kSkH2QEwJzQhDljfM9L9sfpJSVSy9uxQob2qLXfrc_xBxEB3o8aZsbLi1WAJAoLlZEPfNtAQmEEyAcSMK40QUW7eYRpnEN0aJ_hkaosGCLGFuQ7bIUTG6xpRIYcg/s1600-h/lm02.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLm5AFvcvEH4kSkH2QEwJzQhDljfM9L9sfpJSVSy9uxQob2qLXfrc_xBxEB3o8aZsbLi1WAJAoLlZEPfNtAQmEEyAcSMK40QUW7eYRpnEN0aJ_hkaosGCLGFuQ7bIUTG6xpRIYcg/s400/lm02.jpg" alt="" id="BLOGGER_PHOTO_ID_5040831663360908162" border="0" /></a><br /><br />以上で設定変更は完了です。基本的には再起動無しで設定は即座に反映されるとの事ですが、念のため再起動して接続を試みる事をお勧めします。<br /><br />これでNASに接続が出来るようになったならば、1、2 と値を上げて試して下さい。正常に接続できる一番大きな値にしておくことが、セキュリティ的には良いかと思います。(NTLMv2が使える局面では利用するのがBetter。)<br /></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-72915083795320269562007-03-10T15:40:00.000+00:002007-03-10T16:43:32.491+00:00アプリケーションのインストール。(foxit reader)OSの入れ替えをする際に、それ以上に面倒なのが各アプリケーションのインストールですよね。Version upやOSが不安定になってきたらから再インストールって以前は結構やってました。Windows95系ならば半年は持たなかったような気もしますし、NT系でもXP以前は定期的に入れ替えをしていまたし。<br /><br /><a href="http://isawseashell.blogspot.com/2007/03/windows-visata-install_07.html" alt="Windows Visata をInstallする前に。">Vistaを入れる前に</a>って事で、現在使ってSoftwareでこの手間を省けるものはないか、それに移行できないかと整理中です。<br /><br /><div class="fullpost"><br />インストールの手間を省くとは、インストール等を起動してのインストールするのではなく、ファイル・フォルダを配置(コピー)してたら、それでOKみたいなSoftwareです。実際にはアプリーションが初回起動時にレジストリに設定等を記録しているソフトウェアもありますので、完全にフォルダ・ファイルのみって事ではないですが、OS環境への設定とそれに対する依存度が低い事は確かです。<br /><br />この手のソフトウェアは特定のフォルダ下に整理してまとめておくと、そのフォルダ毎コピーする事で他のPCで同様の環境を使う事ができて便利です。<br /><br />今一番のお気に入りはやはり、<a href="http://www.foxitsoftware.com/">Foxit Reader</a>ですかね。Acrobat Readerが一時期(5.0とか)で非常識なほど重くなり代替として使い始めたのですが、非常に軽く・安定しており、とても気に入っています。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqXcwtKYjbUM63Q9H2peNB3OrEgDu5lRh7OBJ6RvCMiXiXeGIYVAsLfQtv7hx_uSkADNqUjzjOCAdfauWLY-eFuqV5NcSheXY3Vc1DTaL7CmZsezSMPdmSPwzAJehXlgBd_7t5OQ/s1600-h/WS000410.JPG"><img id="BLOGGER_PHOTO_ID_" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqXcwtKYjbUM63Q9H2peNB3OrEgDu5lRh7OBJ6RvCMiXiXeGIYVAsLfQtv7hx_uSkADNqUjzjOCAdfauWLY-eFuqV5NcSheXY3Vc1DTaL7CmZsezSMPdmSPwzAJehXlgBd_7t5OQ/s400/WS000410.JPG" border="0" /></a><br /><br />Foxit ReaderはFreeで提供されていますが、Windows向けの場合、その提供パッケージがインストーラー付きで.exeと.msi形式で、そしてインストーラー無しのzip形式で提供されいています。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-aVXu_5vB0GkaU_l6a4OHu35GSE9gov2dxS5k9Kj6I_cSJpztXpkSpv-ZyS3GGBXr4GNuDLzk8L_FrNxusBNUqayBOP9RstTVvilXQKtAglM9IlHUpCnQyx05SwbTdddzy6vamg/s1600-h/WS000382.JPG"><img id="BLOGGER_PHOTO_ID_" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-aVXu_5vB0GkaU_l6a4OHu35GSE9gov2dxS5k9Kj6I_cSJpztXpkSpv-ZyS3GGBXr4GNuDLzk8L_FrNxusBNUqayBOP9RstTVvilXQKtAglM9IlHUpCnQyx05SwbTdddzy6vamg/s400/WS000382.JPG" border="0" /></a><br /><br />このzip形式をダウンロードして、解凍して好みのフォルダに配置すればインストールは完了で、起動時にデフォルトのPDFリーダーとして登録されますので、手間もかからないのでインストーラーを使わなくても問題ありません。<br /><br />後は日本語のUI(ユーザーインターフェイス)と東アジア言語のサポートをダウンロードしてアプリケーションと同一のディレクトリに追加します。本来はFoxitに自動でダウンロードする機能があるのですが、私の環境の為かうまく動かなかったてので、手動でダウンロード・インストールを行います。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Gj32DsRpAF5Hf1MRrpAijS0bdzfV2H0wQNBymBE9CIBIttXLtzV8IHA0O0S2o7y_B3L0f29eZi2yEjephDeoR6YGKdTfohtHxYchORrBV8i6Cfz3x_Nq4bqrJ8lyvMSlGaQG7Q/s1600-h/WS000383.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Gj32DsRpAF5Hf1MRrpAijS0bdzfV2H0wQNBymBE9CIBIttXLtzV8IHA0O0S2o7y_B3L0f29eZi2yEjephDeoR6YGKdTfohtHxYchORrBV8i6Cfz3x_Nq4bqrJ8lyvMSlGaQG7Q/s400/WS000383.JPG" alt="" id="BLOGGER_PHOTO_ID_5040331145052101442" border="0" /></a><br /><br />上記のUI language PackageとEastern Asian Language Supportをダウンロード。<br /><br />UI language packageは展開すると、沢山の言語のUI設定が入っていますが、日本語が目的ならば、lang_jp_jp.xmlのみをアプリケーションディレクトリにコピーすればOKです。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRoisiO1H4_f98Y1qBWHl-FrV3cR0tVbpSkz9wQrCTMR2UCWGIkpIr2AZgJPPUPXLsBFvfHzuF6wqsYCgPjSaibDQTVgyvE83LcvFm4Zqb8m0jxcym1-NlZidqpcLH0pcOIfKWIw/s1600-h/WS000378.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRoisiO1H4_f98Y1qBWHl-FrV3cR0tVbpSkz9wQrCTMR2UCWGIkpIr2AZgJPPUPXLsBFvfHzuF6wqsYCgPjSaibDQTVgyvE83LcvFm4Zqb8m0jxcym1-NlZidqpcLH0pcOIfKWIw/s400/WS000378.JPG" alt="" id="BLOGGER_PHOTO_ID_5040330964663474978" border="0" /></a><br /><br />Lanuguage Supportは圧縮ファイルを展開すると、fpdfcjk.binというファイルが入っていますので、これをFoxit Readerに入っていた物と置き換えます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhteayh2FbGPtyQGeWGafKFmSq6PSWFMHzYFAcfWKSWyjPfb6odYQXHo_fnDisBHQonn9du3migSeN8tEQhprznRVgFgXdGxtWC5PcYXrAeWNmlZLGuLfsNolEV_96k_M95-nY2NQ/s1600-h/WS000379.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhteayh2FbGPtyQGeWGafKFmSq6PSWFMHzYFAcfWKSWyjPfb6odYQXHo_fnDisBHQonn9du3migSeN8tEQhprznRVgFgXdGxtWC5PcYXrAeWNmlZLGuLfsNolEV_96k_M95-nY2NQ/s400/WS000379.JPG" alt="" id="BLOGGER_PHOTO_ID_5040330968958442290" border="0" /></a><br /><br />最後にFoxit ReaderのショートカットをデスクトップなりQuick launchに登録して完了です。(基本は関連付けされての起動であって、単体で起動することないので、起動用のショートカットはあまり使いませんが・・)<br /><br />Microsoft <a href="http://isawseashell.blogspot.com/2007/02/microsoft-office-2003-office-document.html">Office 2007もPDF出力は出来る</a>ようになりましたのが、表示に関してはFoxit Readerでどうでしょうか?</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-55150711259391944662007-03-10T04:01:00.000+00:002007-03-10T13:02:38.254+00:00Access2007 新機能 複数値フィールド -- 00Access2007の機能に関して少しずつですが評価をしていますが、今回はMulti-valued field 複数値フィールドに関して、サンプルを作りながら考察してみました。<br /><br />以前に、<a href="http://isawseashell.blogspot.com/2007/02/access2007-attachment-access200707.html">attachment型に関しても同様にサンプルを</a>作り考察し、Microsoft Access 2007で<a href="http://isawseashell.blogspot.com/2007/02/attachment-dao-access2007-dao-dao-3.html" alt="Access2007 実はDAOが新バージョン。">DAOのバージョンが上がっている</a>という事までがわかりました。<br /><div class="fullpost"><br />今回はAttachment型のようにMailを対象データとしたような感じで、ちょっとだけ実際の使用例・モデルを考えてみました。<br /><br />商品のマスタテーブルと、その仕入先の関係です。ここではある商品の仕入先が複数存在するモデルを想定し、各商品毎にその仕入先を列挙する必要性がある形を考えました。図にすると以下のような形です。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHAFdQ8SUJl0UbnJXo2qP-E82HeJJQHuHtaW3PJpYSKyjb6jHc9166ZzEmz3bi8T_080rIww-2OYhpnmGhSfrWlp9kVG9hjENS69-8RhJBcW8gQYuSHxAhFLOfwcjGls0ZkAesmQ/s1600-h/MultiValuedField01.JPG"><img id="BLOGGER_PHOTO_ID_" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHAFdQ8SUJl0UbnJXo2qP-E82HeJJQHuHtaW3PJpYSKyjb6jHc9166ZzEmz3bi8T_080rIww-2OYhpnmGhSfrWlp9kVG9hjENS69-8RhJBcW8gQYuSHxAhFLOfwcjGls0ZkAesmQ/s400/MultiValuedField01.JPG" border="0" /></a><br />現実世界ではPCなりCDコンポなりの特定商品は、そのメーカ独自の商品ですから、複数の納入先があるような事はあまりないのですが、あくまでもAccess評価のモデルケースですので気にしない事に。<br /><br />このようなモデルで必要となるテーブルを通常のリレーショナルなデーターベースで考えた場合は、以下のようになるかと思います。(フィルードは最少にしてあります。)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhykIaeMTuKh-Vx8Dj9cHGM8jip939BtLiIBg5WJ4ueBhbK7j3Zj-pz2ivtsyJf5VvtvAP9UdU-TvqrxL5PfpwsSvB2tTpUpkrf0xExnrIEHEugsCodBzlbt_mYtNKruzO2RiHe7A/s1600-h/WS000388.JPG"><img id="BLOGGER_PHOTO_ID_" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhykIaeMTuKh-Vx8Dj9cHGM8jip939BtLiIBg5WJ4ueBhbK7j3Zj-pz2ivtsyJf5VvtvAP9UdU-TvqrxL5PfpwsSvB2tTpUpkrf0xExnrIEHEugsCodBzlbt_mYtNKruzO2RiHe7A/s400/WS000388.JPG" border="0" /></a><br />商品マスタと製造元(仕入先)マスタの他に、それをつなぐテーブルが別途必要になってきます。これはある商品に対しての製造元が複数存在する場合があり、その件数も不定である事を想定しているからです。<br /><br />この形の場合に商品マスター管理画面の作成を考えた場合、仕入先(製造元)を複数入力ができるUI(ユーザーインターフェイス)を考慮する必要があります。Rapid的な開発ケースではこの手間が結構惜しかったりもします。<br /><br />これとは別に単純に製造元を3つなり5つと取り決めて、商品マスタ上に「仕入先1」「仕入先2」「仕入先3」のような形のフィールドを作成するケースもあるかと思います。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis3CywmXXjlWkTLj7ar73y2X7CcoCFAwB6k3fI45R6MpJxtoiXuh13DiVanD9wi21wp4amWYwM0eSWuU9AbF1NHi9WqQ8kldO6WXXANgqw7qT5xGXR0-L3AeJ2SxE4fMF1jZEO5g/s1600-h/WS000408.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis3CywmXXjlWkTLj7ar73y2X7CcoCFAwB6k3fI45R6MpJxtoiXuh13DiVanD9wi21wp4amWYwM0eSWuU9AbF1NHi9WqQ8kldO6WXXANgqw7qT5xGXR0-L3AeJ2SxE4fMF1jZEO5g/s400/WS000408.JPG" alt="" id="BLOGGER_PHOTO_ID_5040141848663497010" border="0" /></a><br /><br />このような場合は「仕入先」に件数に対して制限が出来てしまい、データ構造としては柔軟とはいえない形ですが、そのような制限下であれば逆に、アプリケーションの開発効率、特に画面まわりの開発は楽になります。このような形はテーブルが正規化されていないとなる訳ですが、開発効率を優先し採用する場合もあるかと思います。<br /><br />これらの方法に対してAccess2007で加わったのが、複数値フィールドです。テーブルりデザインは以下ようなイメージになります。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6qWVfbiUtMQRzMc_VUhyphenhyphenlVhTklTFbr98Ql0z5tkzkAPrvKzKbxcB5T00EYKInR5cDwb6HCm_wjhX9_JeNwkJETiZ1Hpj5GhOvYCTQEL-b4lY3oTTV6cjJHgCb4GvzEc8gQEVmjQ/s1600-h/WS000407.JPG"><img id="BLOGGER_PHOTO_ID_" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6qWVfbiUtMQRzMc_VUhyphenhyphenlVhTklTFbr98Ql0z5tkzkAPrvKzKbxcB5T00EYKInR5cDwb6HCm_wjhX9_JeNwkJETiZ1Hpj5GhOvYCTQEL-b4lY3oTTV6cjJHgCb4GvzEc8gQEVmjQ/s400/WS000407.JPG" border="0" /></a><br />結果的には最初の2例の良い所取りのような形です。ポイントはフィールド名でVendorsと複数形にしている所で複数のVendorIDがこのフィールドに入るイメージです。複数の値が入るフィールドのイメージはRDBMS等を扱っているとデータベースのフィールドとしては捉えずらいですが、メールの宛先欄をイメージして貰えればわかりやすいかと思います。( ※ 多分このMulti-valued field(複数値型)もAttachmentと同様にメールの格納を意識して作られた形ではないかと思いますが、今回は敢えてメールとは別のモデルを想定しています。)<br /><br /><br />具体的に上記の形でテーブルを作成してみます。まずはVendorテーブルから。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPVCajHAGvjWQrdwFHKPxDqX98hpACVbLV1T-IG4TF2Ntx5tL1ZcnlxJwjWSuF31auNEo1NXEaumgKdFcSYxB8kacbce6v8gbfI3bK6s2V1zIcQCzo2AONZJWDOaJOp7rY3rnKeA/s1600-h/WS000391.JPG"><img id="BLOGGER_PHOTO_ID_" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPVCajHAGvjWQrdwFHKPxDqX98hpACVbLV1T-IG4TF2Ntx5tL1ZcnlxJwjWSuF31auNEo1NXEaumgKdFcSYxB8kacbce6v8gbfI3bK6s2V1zIcQCzo2AONZJWDOaJOp7rY3rnKeA/s400/WS000391.JPG" border="0" /></a><br /><br />別に特色のないシンプルなテーブルで、各フィールドの型にも特に深い意味はありません。<br /><br />次にMulti-valued field(複数値型)を採用するItemテーブルです。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-9iUI7vYjoNkAkDWWparPwWugfGe-cH4Ob-i0HL2feNsEPFHM5Vdr2nU68EtV3tiGSOfnQuhff2G3d2vpgWv3dLX5mP47_8GW_DsSAycb1vPcTIwT-K7kPlgmkM-UnY14UFpslA/s1600-h/WS000394.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-9iUI7vYjoNkAkDWWparPwWugfGe-cH4Ob-i0HL2feNsEPFHM5Vdr2nU68EtV3tiGSOfnQuhff2G3d2vpgWv3dLX5mP47_8GW_DsSAycb1vPcTIwT-K7kPlgmkM-UnY14UFpslA/s400/WS000394.JPG" alt="" id="BLOGGER_PHOTO_ID_5040142398419310914" border="0" /></a><br /><br />最終列のVendorsをMulti-valued field(複数値型)にするには、Fieldのデータ型でLookup Wizardを選びます。<br /><br />ウィザードの最初の画面では「既存のテーブルかクエリーから選ぶ」を選択します。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggp1VJVdLMVZtd7eh_mxD3GqHbHOCM_VC3NiFbs17lvF7Zzpqjes2HU9ryr4UtLtm2j5-CtT-dlsZE83UavyZQtwL6LdhkSJy_Wea2PDsYmlxgy5uAs3kdDVFzT_snM0UAi4mgdw/s1600-h/WS000395.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggp1VJVdLMVZtd7eh_mxD3GqHbHOCM_VC3NiFbs17lvF7Zzpqjes2HU9ryr4UtLtm2j5-CtT-dlsZE83UavyZQtwL6LdhkSJy_Wea2PDsYmlxgy5uAs3kdDVFzT_snM0UAi4mgdw/s400/WS000395.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143235937933650" border="0" /></a><br /><br />デーブルは予め作成してあるVendorテーブルを選択。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihfqfOI3JMTDnuGnVZ7ECDZ83pKxwvmXfIwK1lwvxeUd8FWAaGIFsPDlBsjzSKmjL7daihojLg8NwOGG_SPbxfoMxy9IFBkko0yVn_aDYSvYbOkwE0w4dUw-r787-6_Kkpl6uWhw/s1600-h/WS000396.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihfqfOI3JMTDnuGnVZ7ECDZ83pKxwvmXfIwK1lwvxeUd8FWAaGIFsPDlBsjzSKmjL7daihojLg8NwOGG_SPbxfoMxy9IFBkko0yVn_aDYSvYbOkwE0w4dUw-r787-6_Kkpl6uWhw/s400/WS000396.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143235937933666" border="0" /></a><br /><br />ここで選択するのは結合Keyとなるフィールドではなく、画面上に表示したいフィールドだと考えてください。この例(画面)ではIDとVendorNameを選択していますが、Vendorテーブルの主キーであるIDはここで選択しなくても自動的に追加されます。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnpTlUnMHtWxBHj2HcTiGiWJEFUQW3TerBdlvllR-3drYH8i9nJtNYP-3ZvqJhomdgqdEsfDsN5B-pnR8yfj6umThY5Oj6i_Vrfrw8mgvdu0Mr7rA6AlZm6ETNQN1tMW0bPMTQNw/s1600-h/WS000397.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnpTlUnMHtWxBHj2HcTiGiWJEFUQW3TerBdlvllR-3drYH8i9nJtNYP-3ZvqJhomdgqdEsfDsN5B-pnR8yfj6umThY5Oj6i_Vrfrw8mgvdu0Mr7rA6AlZm6ETNQN1tMW0bPMTQNw/s400/WS000397.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143240232900978" border="0" /></a><br /><br />次に表示時のOrderを指定します。フィールドとAsc/Descが選べます。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixQ0DLhkut-HpoDN2gKWaRV8VfrnxLglKZ5LpJ8VIuPOp-p3S3T-sajvUIZ8excwz7Ic9GxB8mLFJlKX5UpAYP_MGQ1opjqrw-9F3KM2JkBppGAGJZghzjuT3CWBZXwLuOHyEE1g/s1600-h/WS000398.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixQ0DLhkut-HpoDN2gKWaRV8VfrnxLglKZ5LpJ8VIuPOp-p3S3T-sajvUIZ8excwz7Ic9GxB8mLFJlKX5UpAYP_MGQ1opjqrw-9F3KM2JkBppGAGJZghzjuT3CWBZXwLuOHyEE1g/s400/WS000398.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143240232900994" border="0" /></a><br /><br />ここで各列の表示したい幅を設定します。結合キーとなるフィールドは隠した方(Hide key column)が、画面上の見栄えもユーザーの理解も良いケースが多いかと思います。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha8itB9hIukBSxb7KoEzENocRycHTku9jAQcDsStHE1-0ZEp_ZRlyDbOaVro35kQlYmQ4wzYxZ-C7QdJdvOPusbOszJdIGt-OPoEMma4ZyyZLcgGH4sFy7BMKyLe4SroRcZzgEQQ/s1600-h/WS000399.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha8itB9hIukBSxb7KoEzENocRycHTku9jAQcDsStHE1-0ZEp_ZRlyDbOaVro35kQlYmQ4wzYxZ-C7QdJdvOPusbOszJdIGt-OPoEMma4ZyyZLcgGH4sFy7BMKyLe4SroRcZzgEQQ/s400/WS000399.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143240232901010" border="0" /></a><br /><br />ここで作成してたLookup列にラベル名を付けます。<span style="font-weight: bold;">またこの画面でMulti-valued fieldにする為の指定(AllowMultiple Values)を行います</span>。Multi-valued field(複数値型)を設定出来る機能/画面がここしかないような気がしてるのですが、非常に分かり図らい場所ではないかと・・。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRgN1KazH904DqeobUKYD-HuMQXgIx8aQnMQEHWjBL2KX5096LdwKMWn8_4jg0AuTpt6TclJ6HfocoSEYojQkGxVKAuwQhOkcH-ELOZLQltjJDu8_vASo00UPAjHhWv0hI0TG91A/s1600-h/WS000401.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRgN1KazH904DqeobUKYD-HuMQXgIx8aQnMQEHWjBL2KX5096LdwKMWn8_4jg0AuTpt6TclJ6HfocoSEYojQkGxVKAuwQhOkcH-ELOZLQltjJDu8_vASo00UPAjHhWv0hI0TG91A/s400/WS000401.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143875888060834" border="0" /></a><br /><br />フィールドをMulti-valued field(複数値型)にした変更はUndoできなくなるとの確認メッセージ。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdSINt32LDaEqXSKEq9bIEJnGm7EIvjcarkxZCMZtsNWlxZHfwGvHQ_G6qMyPpE8ZxcQc7cvJtC3ZQqVDGclkWhbc4mZRj5HTAVlDgIIBNTzhk8zoScZBgJkpxYt9Civ4LaR9TMA/s1600-h/WS000402.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdSINt32LDaEqXSKEq9bIEJnGm7EIvjcarkxZCMZtsNWlxZHfwGvHQ_G6qMyPpE8ZxcQc7cvJtC3ZQqVDGclkWhbc4mZRj5HTAVlDgIIBNTzhk8zoScZBgJkpxYt9Civ4LaR9TMA/s400/WS000402.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143880183028146" border="0" /></a><br /><br />リレーションシップを作れるようにする為にはテーブルの設定を保存する必要がある。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCrmF-IRFXkHhBXeP958lyIxJU-aU0ZAuII1dsw1cy7m4Pc9UjOg9Gp-ECBzvXbfYGHMqbBFL2inxUyvmD4ggo0EUTagLrRA-nEztMeuZj3HFMtWv2BmKHFDdZwQv-ImzBH18tgQ/s1600-h/WS000403.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCrmF-IRFXkHhBXeP958lyIxJU-aU0ZAuII1dsw1cy7m4Pc9UjOg9Gp-ECBzvXbfYGHMqbBFL2inxUyvmD4ggo0EUTagLrRA-nEztMeuZj3HFMtWv2BmKHFDdZwQv-ImzBH18tgQ/s400/WS000403.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143880183028162" border="0" /></a><br /><br /><br />これで出来たテーブルをデータシートビュー開くとこんな感じの画面で入力が出来るようになります。ちなみにこの画面からはVendorの追加は行えず、Vendorの追加はVendorテーブルを開いて別途行います。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWLLigdWYVba6h4i-g9oe6l1mDDYvuChqtiFoznqv2xXzit29ZKb5wIS33ZiRibTxuZOFGpsbV7V1EZUlXDQF6Zby8LfOm9HD3BQNfikmrhtc02uDT889j1LkGNdAch_unjES1fQ/s1600-h/WS000404.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWLLigdWYVba6h4i-g9oe6l1mDDYvuChqtiFoznqv2xXzit29ZKb5wIS33ZiRibTxuZOFGpsbV7V1EZUlXDQF6Zby8LfOm9HD3BQNfikmrhtc02uDT889j1LkGNdAch_unjES1fQ/s400/WS000404.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143880183028178" border="0" /></a><br /><br /><br />値はキーボードからの文字列の入力ではなく、ドロップダウンからの選択になり、値を選択すると以下のようにカンマ区切りで表示されます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-IpQTfIcdnZF9RT98R_VZkBYLL5edrXk_CIEPzkzSHhhQAU7pCyiK9sukWE-3M7rZJ__kI1RKEL5OQeRtBbpD238rGL58oGNU2hRsxbjD0OAuu54_-_tKZcezm4EZiOdIgkC8qw/s1600-h/WS000405.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-IpQTfIcdnZF9RT98R_VZkBYLL5edrXk_CIEPzkzSHhhQAU7pCyiK9sukWE-3M7rZJ__kI1RKEL5OQeRtBbpD238rGL58oGNU2hRsxbjD0OAuu54_-_tKZcezm4EZiOdIgkC8qw/s400/WS000405.JPG" alt="" id="BLOGGER_PHOTO_ID_5040143884477995490" border="0" /></a><br /><br />以上のような手順で複数値フィールドを扱うテーブルの作成まで出来ました。Microsoft Access上なので、このままでもデータシートビューからの入力もできますので、個人的な用途であればこれでも十分かもしれません。<br /><br />ですが評価としてそうも行かないので、次回・それ以降でForm(画面)作成とAccess2007のデータ・内部構造に触れたいと思います。<br /></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-79461272750253709772007-03-09T18:07:00.000+00:002007-03-09T18:13:03.079+00:00Blogger で「続きを読む」機能を。-- 3.5既にWidget内への実装ではなくなってるので、タイトル変えました。<br /> <br /> 色々と試行錯誤をしている間に、なんか意味不明になりつつある、「続きを読む」機能ですが、<a href="http://isawseashell.blogspot.com/2007/03/blogger-widget-34.html">前回の記事</a>で CSSの機能で「続きを読む」機能の不備は補完できるって話を同僚から聞いたので、それを試してみました。<br /> <br /> 本来ならば即座に前回の記事をUpdateするつもりだっのですが、そのSuggestionをくれた同僚と飲みに行ってしまったので、この時間の別記事での投稿となりました。<br /> <br /> <div class="fullpost"><br /> しかしながら、その同僚からさらなるアドバイスを貰えたりしたのでメリットは多大にありました。<br /> <br /> まず聞かれたのは「PV(Page View)はどれくらい?」と。ちょっと鯖読んでAbout 500 per day.とかって目標としているような数値を答えてしまいましたが、本当の問題は、その中のブラウザの比率を知りたかったらしいです。<br /> <br /> 実はAdjacent sibling selector(隣接セレクター)はCSS2.0な規格で、Firefox(Mozila)、Operaでは早くから対応してらしいけど、IE6は対応してないので、IE6ユーザーが多いならその対応は薦められないと。IE6の使用率は半数近くを占めていて未だに無視できないと。<br /> <br /> Inernet Explorer 7はCSSに本気で対応したというのが売り文句の一つらしいですが、IE6をフォローしようとすると、css的なアプローチをするとしてもBehaviorからスクリプトって流れになるので、先に両方に対応できるScirptを書いたのならばそれでいいじゃないって結論を、人の奢りのビールを飲みながら出してくれました・・。<br /> <br /> こんな話はあったのですが、試してみないとって事で。<br /> <br /> ベースとなるのは、<a href="http://isawseashell.blogspot.com/2007/03/blogger-widget-31.html" alt=" Blogger Widgetで「続きを読む」を自動化。-- 3.1"> Blogger Widgetで「続きを読む」を自動化。-- 3.1</a>で書いた内容になります。<br /> <br /> <br /> 基本的にStyleの設定を変更するだけですので、Template内にstyle指定を追加します。このstyleタグを入れる場所ですが、</head>タグの直前が良いかと思います。別所ではbodyタグ内に入れている例もありますが、DTD的にも正しくないかと思いますので。<br /> <br /> <div class="codeFormat" style="height:auto;"><br /> ]]></<span class="src_typekeyword">b:skin</span>><br><br> <<span class="src_typekeyword">style</span> <span class="src_attributename">type</span>=<span class="src_singlequotation">'text/css'</span>><br> <<span class="src_typekeyword">b:if</span> <span class="src_attributename">cond</span>=<span class="src_singlequotation">'data:blog.pageType == "item"'</span>><br> .fullpost {display:block;}<br> .readmore {display:none;}<br> .readmore2 {display:none}<br> <<span class="src_typekeyword">b:else</span>/><br> .fullpost {display:none;}<br> .readmore {display:block;}<br> .readmore2 {display:none;}<br> .fullpost + .readmore2 {display:block;}<br> </<span class="src_typekeyword">b:if</span>><br> </<span class="src_typekeyword">style</span>><br><br></<span class="src_typekeyword">head</span>><br /></div><br /><br />上記のように通常のTemplateですと</head>の直前には</b:sink>があると思いますので、その間に挿入する形で言いかと思います。<br /><br />classでreadmoreとreadmore2と両方指定していますが、readmoreは以前の投稿した記事に対する為で、記事内部に投稿時に手書きでclass="readmore"なタグがある事を想定しています。<br /><br />readmore2への指定が今回の変更部分です。blog.pageTypeがitemでは無い場合にも基本は隠す(display: none)のですが、直前にclass="fullpost"なタグがあった場合は表示(display:block)しています。<br /><br />この.fullpost + .readmore2 部分が Adjacent sibling selector(隣接セレクター)指定になります。<br /><br />そして投稿記事の直後にreadmoreなソースを自動的に挿入するために、使っているテンプレートにより若干の違いがあるかと思いますが、<data:post.body/>と書いてある直後にタグを追加します。<br /><br /><div class="codeFormat" style="height: auto;"><br /> <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-body'</span>><br> <<span class="src_typekeyword">p</span>><<span class="src_typekeyword">data:post.body</span>/></<span class="src_typekeyword">p</span>><br> </<span class="src_typekeyword">div</span>><br> <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-footer'</span>><br></div><br /><br />上記のような部分を以下のように変更します。<br /><div class="codeFormat" style="height: auto;"><br /><<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-body'</span>><br> <<span class="src_typekeyword">p</span>><br> <<span class="src_typekeyword">data:post.body</span>/><br> <<span class="src_typekeyword">b:if</span> <span class="src_attributename">cond</span>=<span class="src_singlequotation">'data:blog.pageType != "item"'</span>><br> <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'readmore2'</span>><br> <<span class="src_typekeyword">a</span> <span class="src_attributename">expr:href</span>=<span class="src_singlequotation">'data:post.url'</span>><br> 続きを読む・・<br> </<span class="src_typekeyword">a</span>><br> </<span class="src_typekeyword">div</span>><br> </<span class="src_typekeyword">b:if</span>><br> </<span class="src_typekeyword">p</span>> <br></<span class="src_typekeyword">div</span>><br><<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-footer'</span>></div><br /><br />ポイントは、記事データ(<data:post.body/>)の直後に<div class="readmore2">で隣接関係を作り出そうとしている部分です。<br /><br />要約したい記事(「続きを読む」を使う)は投稿される際に以下のような形式である必要があります。<br /><br /><div class="codeFormat" style="height:auto;"><br />ここは序文です。<br><br>要約しないで、一覧表示時にも表示したい部分です。<br><br><<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_doublequotation">"fullpost"</span>><br>ここに要約される記事本文を書きます。<br>このブロックに書いた部分は一覧表示では表示されません。<br></<span class="src_typekeyword">div</span>></div><br /><br />必ず<div class="fullpost">で括る必要があり、それを閉じた以降は改行すらしてはいけません。Bloggerの内部に保存される際に、改行コードが&bt;br/>に置き換えられてしまうために、class="readmore"との隣接関係が崩れてしまうからです。<br /><br />ですが要約を必要としない記事に関してはこの限りではありません、Reaadmoreなタグは隣接にfullpostが無い限り表示されませんので。つまりclass="fullpsot"を使ったら、それが必ず最後の要素となるように記事を作成する必要があるという事です。<br /><br />このような形でCSS的な解決方法も出してみましたが、Javascriptを使わないので、その分制約も出てしまいました。苦労した割にはあまりパッとしたものにはなりませんでした・・。<br /><br /><br /><a href="http://isawseashell.blogspot.com/2007/03/blogger-widget-33.html" alt=" Blogger Widgetで「続きを読む」を自動化。-- 3.3">Javasciptで後からダブったreadmoreタグを消し込む前回の方式</a>の方が気楽なので個人的にはこちらでいこうかと思ってます。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-10810542770974530312007-03-08T18:19:00.000+00:002007-03-08T20:05:26.858+00:00Bloggerに投稿した画像がPicasaに!!なんかダラダラとBloggerの投稿したり・パックアップしたりするアプリを作ろうかとおもって、GData APIからテスト用のBlogに投稿したりしてたですが、なんか適当な画像をと思って自分のPicasaなアルバムからでもと思って<a href="http://picasaweb.google.com/">PicasaWeb</a>を開いてたら・・。<br /><br />なんか変なアルバムが出現!! <br /><br />アルバムの画像は記憶にある。全部BloggerにPostした画像だ。しかもBlog毎にAlbumが分かれてます。だけど一瞬何が起きたのか分からず、「クラックされた??」とかも考えてしまいましたから。<br /><br />状況を把握しようと思って検索すると、<a href="http://googlesystem.blogspot.com/2007/03/major-update-for-picasa-web-albums.html">Google Operating SystemのBlogにこんな記事</a>がありました。<br /><div class="fullpost"><br />つまりは容量の拡大(1GB!!)と検索機能の追加、そしてBloggerからの投稿に対応したそうです。<br /><br />ちなみにAlbumの中にはこんな感じでアルバムが入ってきます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinfxmybLYS_wdkF024ZdtQ7l1Bc4L2u9gd3Fni15i6A5KXBoiu9pqzDzKR40Y9ZK7c6plt5d3-4gwfBIXTSEQboIuxqRQ29OTeulAtmsWEfZR9QFeXospXe3paBxl79nVJe6lBtA/s1600-h/WS000386.JPG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinfxmybLYS_wdkF024ZdtQ7l1Bc4L2u9gd3Fni15i6A5KXBoiu9pqzDzKR40Y9ZK7c6plt5d3-4gwfBIXTSEQboIuxqRQ29OTeulAtmsWEfZR9QFeXospXe3paBxl79nVJe6lBtA/s400/WS000386.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5039621289901508658" /></a><br /><br />ちなみに画像の検索機能は自身で設定からアクティブにする必要があります。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvm8329bZuuzu_x1VF26vWTjY3RI7dZEY2905K4cxtYb2wXLmxDyMS9AYAVVBnQxFAngsNxs8eKKV-bd-o1txh4YV-0k4rvCVU8Q_AElkSZRdL8wLkU81nayYwXxZr1uXLGhSBWg/s1600-h/WS000384.JPG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvm8329bZuuzu_x1VF26vWTjY3RI7dZEY2905K4cxtYb2wXLmxDyMS9AYAVVBnQxFAngsNxs8eKKV-bd-o1txh4YV-0k4rvCVU8Q_AElkSZRdL8wLkU81nayYwXxZr1uXLGhSBWg/s400/WS000384.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5039621294196475970" /></a><br /><br />だけど、このオプションって言語設定を英語、それも "English (United States)"を選ばないと出てきません。普段は"English (UK)"にしている私もこれにはハマりました(笑<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjPYct-Jn5nGuQx6Qge1QGSDBjhGQy4L89elxOSsA2FcaYXPT4QmQV52OZ7Fm2775Veq0-jief-Xhwl_JCfFNdEMeGyAyyiCg6iBPPkZLTaV8KBc4l7Z_xvBSyH35DaF7BVP5lVw/s1600-h/WS000385.JPG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjPYct-Jn5nGuQx6Qge1QGSDBjhGQy4L89elxOSsA2FcaYXPT4QmQV52OZ7Fm2775Veq0-jief-Xhwl_JCfFNdEMeGyAyyiCg6iBPPkZLTaV8KBc4l7Z_xvBSyH35DaF7BVP5lVw/s400/WS000385.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5039621294196475986" /></a><br /><br />そんな感じで、Bloggerに投稿してしまった画像は消せない・管理できないと言われてましたけど、過去の分も含めて<a href="http://picasaweb.google.com/">Picasa Web</a>上で管理できるようになりましたんで、容量の件も含めて、無料のBlogではかなり強力なサービスを提供してくれてるのではないでしょうか?<br /><br />だけどBloggerに投稿した画像の容量分ってPicasa側に入るって何処にも書いてないんだよなぁ・・・。<br /><br />でもPicasaはデスクトップ アプリケーションもGoogleから提供されてるし、これで画像のバックアップも安心ではないかと。ちなみにデスクトップなPicasa側からも写真と合わせてBloggerに投稿できます。<br /><br />アレ、投稿する前にRSS読んでたら<a href="http://www.kuribo.info/2007/03/blogger-picasa.html" name="Blogger の画像投稿が Picasa ウェブアルバムと連携">クリボウさんが既に</a>書いてた・・・・。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com1tag:blogger.com,1999:blog-37681533.post-32666151704573908812007-03-07T19:58:00.001+00:002007-03-07T19:58:28.595+00:00Windows Visata をInstallする前に。既に日本でも一般向けに発売されてから一ヶ月が経過したWindows Vistaですが、売れ行きはどうなんでしょうか?<br /><br />私の周りでの普及率はイマイチです。仕事柄、顧客なり関連会社での導入状況も見てますが、絶対的に比率は低いです。WindowsXPからのUpgradeなんて、担当者の先行的というか趣味的/実験的な例以外では未だ聞いた事がないです。<br /><br />以前に<a href="http://isawseashell.blogspot.com/2007/02/windows-vista-nas-windows-vistanas.html">Windows VistaからNASに接続できない</a>トラブルの件に関して書きましたが、これはあくまでも新規のPCにプレインストールでVistaが入っていたものです。<br /><br />私も職場でやや古いPCにVistaを入れてはありますがRC版であり、最近はあまり触っていません。本来ならばMS<br />製品にはβ版なりRC版に触れる環境にあるので、もっと評価すべきなんでしょうが、Windows VistaのみならずOffice等の評価も遅れがちです。<br /><br />ですがここ最近は、Vistaを少し使い込んで慣れたら新しいPCを購入しようかなと考えているので、少しVista導入に関して事前にいくつかのポイントを調べて列挙しようかと思います。<br /><div class="fullpost"><br />新規のVista対応なPCならば問題なくインストールも出来るでしょうし、プリインストールならば導入そのものは必要ありませんが、購入したPCに何のOSのみでソフトウェアもハードウェアも追加しないなんて事はないので、普段使っているSoftware/Hardwareの対応状況はチェックしておく必要があるかと思います。<br /><br />私の使用環境で最大の問題となっていたのがVisual Studio 2005です。コードを書くのもレビュー/デバッグするのも、そしてBloggerのテンプレートに手を入れるのにも使ってますし、Windows XP上ではすこぶる安定してますので、これが不安定になったり問題が発生するようでは困ります。<br /><br />やっと3月日になって<a href="http://www.microsoft.com/downloads/info.aspx?na=22&p=1&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=&u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d90e2942d-3ad1-4873-a2ee-4acc0aace5b6%26DisplayLang%3den">VS2005 SP1 Update for Vistaがリリース</a>されました。<br /><br />だけど<a href="http://www.microsoft.com/japan/msdn/vstudio/support/windowsvista/adminperms/default.aspx">これだけあった問題点</a>が、どこまで対処されたのかが何処にも書いてないような・・。<br /><br /><blockquote><p id="question21"><strong>タイトル :</strong> Windows Vista ではデータセット デザイナが非常に低速になる</p><ul><li><strong>説明</strong> : Windows Vista では、データセット デザイナの表示が極めて低速です。Windows Vista では Windows 描画のサポート方法が変更になり、この結果デザイナの動作に影響があります。</li><li><strong>回避策</strong> : ありません。</li></ul></blockquote><br /><br />こんな感じて「回避策: ありません」なんてのが結構あったのですが、これらに対応したとかの記述を見つけられませんでした。<br /><br />本来ならVistaインストールのきっかけとなるVS2005 SP1 for Vistaのリリースなんですが、こんな状況であり、自ら人柱的に試す勇気もなく、またしても先送りにされるのでした・・。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-90891838855059851272007-03-07T14:32:00.000+00:002007-03-07T14:35:07.268+00:00Blogger Widgetで「続きを読む」を自動化。-- 3.4βなんか完結させたかった「続きを読む」機能ですが、職場の同僚と話をしていたらCSSに対してのSuggestionを貰ったりしました。<br /><br />私はデザインの人ではないので(言い逃れ)知りませんでしたが、CSSのセレクターのには<a alt="隣接セレクター">adjacent sibling selector</a>ってのがあって、これは隣接する<a alt="要素">Element</a>に対する条件指定が出来るとの事。<br /><br /><div class="fullpost"><br />帰宅後に早々に試す予定・・。<br /><br />でもBloggerに投稿して記事のソースは、最後尾に意図してなかったタグとか入ってる予感が・・。<br /></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-11582350564147422222007-03-06T10:20:00.000+00:002007-03-06T11:15:59.159+00:00BloggerのLabel Feedでエラーが・・。BetaというかNew Bloggerにはラベル機能があって整理・管理するのに便利なんですが、そのラベル毎にフィードがあるのはご存知でしょうか?<br /><br />元ネタというか詳しい解説は<a href="http://www.kuribo.info/2006/11/blogger-beta.html">いつもの如くクリボウさんのページ</a>を読んで頂ければと思うのですが、私のこのBlogではラベルフィード機能を使って、記事の下部に「関連のありそうな記事」とかってちょっと間の抜けたLinksを表示しています。<br /><br />最初は調子良かったのですがレイアウトを修正する為にに何度か自分で試しているとエラーが出ている事がわかりました。<br /><br /><div class="fullpost"><br />実際にはこの「関連のありそうな記事」は <a href="http://isawseashell.blogspot.com/2007/03/blogger.html">"Bloggerに「関連記事リスト」を。"</a>に書いたように、記事のラベルをLabel FeedをJSONP形式で受け取りその中で日付順の上位5つを現在は表示しています。<br /><br />Label FeedのURLに関しては上記の<a href="http://www.kuribo.info/2006/11/blogger-beta.html">クリボウさんのページ</a>に"ラベルフィード URL 作成装置"とかも置いてありますのでそちらを参考にしていただくとして、例えばこのBlogで<a href="http://www2.blogger.com/feeds/37681533/posts/summary/-/Blogger">"Blogger"ってラベルのATOM1.0な要約(summary)されたフィード</a>はブラウザにより表示の仕方は変わりますがFirefox2だとこんな感じになります。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2TiOyOA0Pj9HTIwcN0mD5TqG_E4-v7d6ShqZQ5ZS8OQZLtOv2dTmIKkn43O-pnK71HdI99OL6InxfQfryKohcJE13l1nkHdQV5KJbsuhf8TqiS-wcld4dQJPtGsR7k_VSs_Dfog/s1600-h/WS000371.JPG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2TiOyOA0Pj9HTIwcN0mD5TqG_E4-v7d6ShqZQ5ZS8OQZLtOv2dTmIKkn43O-pnK71HdI99OL6InxfQfryKohcJE13l1nkHdQV5KJbsuhf8TqiS-wcld4dQJPtGsR7k_VSs_Dfog/s400/WS000371.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5038754812142278242" /></a><br /><br />上記画像はATOM1.0な形式のフィードに対してFirefoxがスタイル変更をして表示しいますが、ソースはXML形式ですので、これをAJAXな感じでXMLHttpRequestを使って取得して加工し表示って事もありかもしれませんが、<a href="http://www2.blogger.com/feeds/37681533/posts/summary/-/Blogger">フィードのURL</a>が別サイト(www2.blogger.com)になってしまう為、クロスサイトスクリプティング (cross-site scripting) 的なセキュリティー上の問題があり、XMLHttpRequestでは取得する事が出来ません。<br /><br />ですがBloggerのフィードはJSONそれもCallback指定が可能な<a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">JSONP</a>が使えます。<a href="http://www2.blogger.com/feeds/37681533/posts/summary/-/Blogger?alt=json-in-script&max-results=5&callback=cbBloggerFeed">Callbackを指定したJSONPなURL<</a>はalt=json-in-scriptとパラメータを指定し、Callbackしてもらう関数名として"callback=任意の関数名"をパラメーターとして指定する形になります。(Javascriptに対してネイティブな形で値を返してくれるので、一手間省けて逆に楽だったりします。)<br /><br />そのようにして受け取った結果を、今はレイアウトを少し変更しましたので、こんな感じで表示されます。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiX6mPiYC0LmzBsIb53dSyi4Fcb4khK0PPJdSC_O10NG_MdQYCav3KlH9tUYf6b6fKN2bBA6GuxGhDE1ChCpm-uSxmtukpsGYd1RiITaxeLmiR8LT3RZTsjsJq6qb1638Y_4g_0Q/s1600-h/WS000372.JPG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiX6mPiYC0LmzBsIb53dSyi4Fcb4khK0PPJdSC_O10NG_MdQYCav3KlH9tUYf6b6fKN2bBA6GuxGhDE1ChCpm-uSxmtukpsGYd1RiITaxeLmiR8LT3RZTsjsJq6qb1638Y_4g_0Q/s400/WS000372.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5038756147877107314" /></a><br /><br />ですが、これがこんな感じで表示される事があります。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZPHuZeKghR54e6F6Z_ct4XpBGUkUTiSETSdhMqGrQAItlWWhyphenhyphendFQpRzGFGzCTBASjSSpeC7CPFdziXwQC0yqHEJ5QsfzGHTaTM6xBeNKoDVvRbEmXvH0t2wppUKeoK0Wjog9ihQ/s1600-h/WS000373.JPG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZPHuZeKghR54e6F6Z_ct4XpBGUkUTiSETSdhMqGrQAItlWWhyphenhyphendFQpRzGFGzCTBASjSSpeC7CPFdziXwQC0yqHEJ5QsfzGHTaTM6xBeNKoDVvRbEmXvH0t2wppUKeoK0Wjog9ihQ/s400/WS000373.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5038756860841678466" /></a><br /><br />実はこれはJSONPな呼び出しが非同期であり、エラーの検出も困難な為に事前にラベルを列挙して表示しているのです。つまりJSONPな呼び出しが失敗しているんです。<br /><br />原因はなんだろうと<a href="http://www2.blogger.com/feeds/37681533/posts/summary/-/Blogger">フィードのURL</a>をブラウザで直接開いて見ると、こんなエラー画面が・・・。<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgvUAkf1e6hW4JNrpW_UjGWSSrVmJn9pDJ_Jne9epq7vhS5m_5yU8rrPZyC4oM3rZcgQt3jaMjFY6CmhQEjf9LrQiu23-1J99uAQoC4Fb6a_MJa0nKZNHHDp_-vRpo2sNBvAN4lg/s1600-h/WS000374.JPG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgvUAkf1e6hW4JNrpW_UjGWSSrVmJn9pDJ_Jne9epq7vhS5m_5yU8rrPZyC4oM3rZcgQt3jaMjFY6CmhQEjf9LrQiu23-1J99uAQoC4Fb6a_MJa0nKZNHHDp_-vRpo2sNBvAN4lg/s400/WS000374.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5038757109949781650" /></a><br /><br />別のラベル名で呼び出すとエラーは出ませんが、何度かリロードしてると2~3回でエラーになります。このエラーは暫く時間をおかないと解除されないようで、もしかしたらBloggerの負荷制限なのかとも思っています。<br /><br />そんな感じで、この件に関してはちょっと情報を漁りつつBloggerに質問してみようかと思います。<br /><br />Windows VISTAの実環境で使い始めないといけないなぁと思いつつも、勇気と時間がとれなくていまだメインな環境にはインストール出来ない状況です。必要な時間というのは、インストールそのものに必要な時間よりも、その後の設定やトラブルに対処する時間の方です。トラブルってよりも操作方法なり設定が変わった為に出来なくなったり、不具合が出た事に足して対応する時間が惜しいって感じです。以前はそれそのものも楽しめたんですが・・・・・・・・・。<br /></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-47502664363996146362007-03-05T22:05:00.000+00:002007-03-06T11:15:29.445+00:00Blogger Widgetで「続きを読む」を自動化。-- 3.3そろそろ完結にしたい Bloggerでの<a href="http://www.kuribo.info/2006/12/blogger-beta.html">「続きを読む」</a>機能ですが、簡単に思っていたことが意外と深みに嵌っているような、単なる手抜きの積み重ねのような複雑な様相を呈してきました・・・。<br /><br />全てはBloggerがBetaからNewになっても、実装というか方針が中途半端なんじゃないかと思ってたりもしますが、個人的には「制約は人を育てる」なんて志向があるんで、これもOKと受け止めております。<br /><br />そんな感じですが<a href="http://isawseashell.blogspot.com/2007/03/blogger-widget-32.html">前回の記事</a>の続きとして、早々に余計なReadmoreをタグごと隠すスクリプト(Javascript)を書いてみました。帰宅途中に運転しながら考えて、着替える前に コードを書く⇒テスト の流れの15分ですから例によって寄せ集めですが、それなりに知識なのかスキルなのかが蓄積されてきたらしく、この素早さはちょっと快適。<br /><br /><div class="fullpost"><br />今回のコードはテンプレートへのタグ追加とセットで動く感じでになりますが、テンプレートへの加工であり記事本体には手を入れていないので、前回まで手順を行っていてもテンプレートを書き換えてスクリプトを追加しただけで表示が変わります。<br /><br />つまり元々のテンプレートさえBackupしておけば、直ぐに元に戻せますから安心して試せます。<br /><br />まずはテンプレートの改変。基本的には<a href="http://isawseashell.blogspot.com/2007/03/blogger-widget-31.html">前々回の記事</a>と同様ですが、後で隠す必要があるので判別の為、<p>タグにクラス名を付加しました。<br /><br /><div class="codeFormat" style="height:auto;"><br /><<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-body'</span>><br> <<span class="src_typekeyword">p</span>><br> <<span class="src_typekeyword">data:post.body</span>/><br> </<span class="src_typekeyword">p</span>><br> <<span class="src_typekeyword">b:if</span> <span class="src_attributename">cond</span>=<span class="src_singlequotation">'data:blog.pageType != "item"'</span>><br> <<span class="src_typekeyword">p</span> <span style="background-color:#ccff00;"><span class="src_attributename" >class</span>=<span class="src_singlequotation">'readmore2'</span></span>><br> <<span class="src_typekeyword">a</span> <span class="src_attributename">expr:href</span>=<span class="src_singlequotation">'data:post.url'</span>><br> 続きを読む・・<br> </<span class="src_typekeyword">a</span>><br> </<span class="src_typekeyword">p</span>><br> </<span class="src_typekeyword">b:if</span>><br> </<span class="src_typekeyword">div</span>><br> <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-footer'</span>><br /></div><br /><br />クラス名があるといっても表示・非表示の条件が位置ではなく、「兄弟にfullpostクラスのタグがあるか? 」なんて条件になりますのでスタイルシート指定では対応出来ないのです。(私の知識範囲では)<br /><br />そこで実行時にスクリプトで該当するclass="readmore2"のタグに対してstyle="display:none"で隠す事にします。該当する条件は本文中にclass="fullpost"なタグが含まれてない事になります。<br /><br />Javascriptなソースはこんな感じです。<br /><br /><div class="codeFormat"><br /><span class="src_singlelinecomment">// Remove unnecessarilly ReadMore elements.</span><br><br><span class="src_singlelinecomment">// Add Event Listtener</span><br>{<br> <span class="src_singlelinecomment">// for Mozilla and Opera9</span><br> <span class="src_keyword">if</span>(document.addEventListener){ <br> document.addEventListener(<span class="src_doublequotation">"DOMContentLoaded"</span>, removeExtraReadMore, <span class="src_keyword">false</span>);<br> } <br><br> <span class="src_singlelinecomment">// for Internet Explorer (using conditional comments) </span><br> <span class="src_multilinecomment">/*@cc_on @*/</span><br> <span class="src_multilinecomment">/*@if (@_win32)<br> document.write('<script id="_decoy_removeExtraReadMore" defer src="javascript:void 0"><\/script>');<br> document.getElementById("_decoy_removeExtraReadMore").onreadystatechange = function(){<br> if(this.readyState=='complete'){<br> removeExtraReadMore();<br> }<br> };<br> /*@end @*/</span><br>}<br><br><br><span class="src_singlelinecomment">// removeExtraReadMore</span><br>function removeExtraReadMore(){<br> <span class="src_singlelinecomment">// Get all "div" elements which class name are "post-body"</span><br> var elms=getElementsByClassName(document.body,<span class="src_doublequotation">"div"</span>,<span class="src_doublequotation">"post-body"</span>);<br> <br> <span class="src_keyword">for</span>(var i=<span class="src_digit">0</span>,elm=elms[<span class="src_digit">0</span>];elms.length><span class="src_digit">0</span> &&i<=elms.length;elm=elms[i++]){<br> var eFullPosts = getElementsByClassName(elm,<span class="src_doublequotation">"*"</span>,<span class="src_doublequotation">"fullpost"</span>);<br> <br> <span class="src_keyword">if</span>(eFullPosts.length ><span class="src_digit">0</span>)<span class="src_keyword">continue</span>; <span class="src_singlelinecomment">// has some fullpost tag.</span><br> <br> var eReadMores = getElementsByClassName(elm,<span class="src_doublequotation">"*"</span>,<span class="src_doublequotation">"readmore2"</span>);<br> <br> <span class="src_singlelinecomment">// Remove Readmore tags.</span><br> <span class="src_keyword">for</span>(var l=<span class="src_digit">0</span>,eRm=eReadMores[<span class="src_digit">0</span>];eReadMores.length><span class="src_digit">0</span> &&l<=eReadMores.length;eRm=eReadMores[l++])<br> <span class="src_keyword">if</span> (document.documentElement.getAttribute(<span class="src_doublequotation">"style"</span>) == document.documentElement.style)<br> eRm.style.display=<span class="src_doublequotation">"none"</span>;<br> <span class="src_keyword">else</span><br> eRm.setAttribute(<span class="src_doublequotation">"style"</span>,<span class="src_doublequotation">"display:none;"</span>);<br> <br> }<span class="src_singlelinecomment">// __for(elms) </span><br><br>}<br><br><span class="src_singlelinecomment">//</span><br>function getElementsByClassName(elm, tagName, className){<br> var arRslt = <span class="src_keyword">new</span> Array();<br> var elms = (tagName == <span class="src_doublequotation">"*"</span> && elm.all)<br> ? elm.all : elm.getElementsByTagName(tagName);<br><br> className = className.replace(/\-/g, <span class="src_doublequotation">"\\-"</span>);<br> var re = <span class="src_keyword">new</span> RegExp(<span class="src_doublequotation">"(^|\\s)"</span> + className + <span class="src_doublequotation">"(\\s|$)"</span>);<br><br> <span class="src_keyword">for</span>(var i=<span class="src_digit">0</span>; i<elms.length; i++){<br> var e = elms[i]; <br> <span class="src_keyword">if</span>(re.test(e.className)){<br> arRslt.push(e);<br> } <br> }<br> <span class="src_keyword">return</span> arRslt<br>}<br><br><span class="src_singlelinecomment">//</span><br>function getElementsByClassName(elm, tagName, className){<br> var arRslt = <span class="src_keyword">new</span> Array();<br> var elms = (tagName == <span class="src_doublequotation">"*"</span> && elm.all)<br> ? elm.all : elm.getElementsByTagName(tagName);<br><br> className = className.replace(/\-/g, <span class="src_doublequotation">"\\-"</span>);<br> var re = <span class="src_keyword">new</span> RegExp(<span class="src_doublequotation">"(^|\\s)"</span> + className + <span class="src_doublequotation">"(\\s|$)"</span>);<br><br> <span class="src_keyword">for</span>(var i=<span class="src_digit">0</span>; i<elms.length; i++){<br> var e = elms[i]; <br> <span class="src_keyword">if</span>(re.test(e.className)){<br> arRslt.push(e);<br> } <br> }<br> <span class="src_keyword">return</span> arRslt<br>}<br /></div><br /><br />Sctiptタグが何処に埋められても問題がないように、全てのコンテントが読み込まれてから処理するようになっています。実際にはDOMContentLoadedを使っていて、Onloadで処理する場合は画像等の読み込み後のイベントになるので、それよりも早く処理が開始されてちょっと快適なハズです。<br /><br />まぁこんなのまでテンプレートに書き込むのは大変なので私は外部ファイルにして、テンプレートの最後の方に書き加えています。<br /><br /><div class="codeFormat" style="height:auto;"><br /> </<span class="src_typekeyword">div</span>><br> <span class="src_multilinecomment"><!-- end outer-wrapper --></span><br> <span style="background-color:#ccff00;"><<span class="src_typekeyword">script</span> <span class="src_attributename">src</span>=<span class="src_singlequotation">'http://isawseashells.googlepages.com/RemoveExtraReadMore.js'</span> <span class="src_attributename">type</span>=<span class="src_singlequotation">'text/javascript'</span>/></span><br> <br> </<span class="src_typekeyword">body</span>><br></<span class="src_typekeyword">html</span>><br /></div><br /><br />これで要約設定をしていない記事に対して余計な「続きを読む」が出ることは無くなります。<br /><br />多分これで「続きを読む」シリーズは完結じゃないかと思うですが、どうでしょうか???<br /></div><em></em><em></em><em></em>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-15124525179125656032007-03-05T07:02:00.000+00:002007-03-05T07:29:21.015+00:00Blogger Widgetで「続きを読む」を自動化。-- 3.2またしても 前回書いた <a href="http://isawseashell.blogspot.com/2007/03/blogger-widget-31.html">Blogger Widgetで「続きを読む」を自動化。-- 3.1</a>ですが、まだ問題が残ってました・・。本当にまたしてもって感じで、これが仕事でやってたらトンデモない野郎だって事になってしまうのですが、余暇でやってる事でもあり平にお許し願いたいところです。<br /><br />特にこのネタは仕事中というか休憩中にコーヒー飲んでる時にフッと思いついたのをそのままやって見たら出来ちゃった/出来たような気がしてたって物だったりするので・・・。<br /><br /><div class="fullpost">それで何が問題かとの話ですが、一覧表示(pageType=index or archive)時にcall="fullpost"記述がされていない、全文を表示したいような記事/要約を意識していないような記事に対しても下方に「続きを読む」が表示されてしまうという事です。<br /><br />そしてこの問題の解決方法が未だに見つからない・考え付かない・・・。<br /><br />何故なら、<div class="fullpost"> </div> が無い場合は「続きを読む」を表示しないようにすれば良いのですが、これが難しいというかcss的には解決方法が無いのではないかと思っています。<br /><br /><br />後はGoing(強引)なスクリプト(Javascript)で、fullpost指定がない場合は隠してしまうぐらいかと思っています。どの道テンプレートに手をいれるわけだし、その中にスクリプト埋め込んでもOKじゃないとか。<br /><br />個人的には「続きを読む」が表示されてても、リンク先は記事単体のURLなんで問題はなかろうって事で放置しようかと思ってますが、どうでしょうか?<br /><br />美味いコーヒーでも煎れて、ノンビリとJavascriptでも書くかなぁと思いつつも、その前にWindows Vistaへの環境移行をする時間を作らないといけないような気がしてます。でもVisual Studioがなぁ・・・・。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-31003761599305353312007-03-03T19:50:00.000+00:002007-03-03T20:30:16.102+00:00Blogger Widgetで「続きを読む」を自動化。-- 3.1前回書いた <a href="http://isawseashell.blogspot.com/2007/03/blogger-widget-3.html">Blogger Widgetで「続きを読む」を自動化。-- 3</a>ですが、一部不具合がありました。<br /><br /><a href="http://help.blogger.com/bin/answer.py?answer=47270&query=B:if&topic=&type=#global">Bloggerのヘルプ</a>を真面目に読んだ所、ページ表示状態を示す変数であるpageTypeは値として item,index,archiveの3種類があるとの事でしたが、前回のテンプレートではarchiveである時を考慮していませんでした。<br /><br /><div class="fullpost"><br />このarchiveという状態は、月や週単位でのアーカイブされた記事を表示する場合に代入されてくる値ですので、以下のような設定の場合は記事は要約されていますから、「続きを読む」を表示する必要があります。<br /><div class="codeFormat" style="height:auto;"> <<span class="src_typekeyword">style</span> <span class="src_attributename">type</span>=<span class="src_singlequotation">'text/css'</span>><br> <<span class="src_typekeyword">b:if</span> <span class="src_attributename">cond</span>=<span class="src_singlequotation">'data:blog.pageType == "item"'</span>><br> .fullpost {display:block;}<br> .readmore {display:none;}<br> <<span class="src_typekeyword">b:else</span>/><br> .fullpost {display:none;}<br> .readmore {display:block;}<br> </<span class="src_typekeyword">b:if</span>><br> </<span class="src_typekeyword">style</span>><br></div><br /><br />よってまずは当初のテンプレートから<strong>以下のような部分</strong>を探します。使っているテンプレートにより若干の違いがあるかと思いますが、<<span class="src_typekeyword">data:post.body</span>/>と書いてある部分はテンプレート中に一箇所のみ必ずあるはずです。<br /><div class="codeFormat" style="height:auto;" > <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-body'</span>><br> <<span class="src_typekeyword">p</span>><<span class="src_typekeyword">data:post.body</span>/></<span class="src_typekeyword">p</span>><br> </<span class="src_typekeyword">div</span>><br> <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-footer'</span>><br></div><br /><br />この見つかった部分、つまりは<<span class="src_typekeyword">data:post.body</span>/>直後に「続きを読む」の機能部分のコードを入れます。この例では単純な<a;>タグと文字列によるリンクを作成していますが、これは任意な方法で構いません。ポイントは通常ならばhref="****"となる代わりにexpr:href</span>=<span class="src_singlequotation">'data:post.url'</span>とBloggerの式を利用してい部分です。<br /><div class="codeFormat" style="height:auto;" > <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-body'</span>><br> <<span class="src_typekeyword">p</span>><br> <<span class="src_typekeyword">data:post.body</span>/><br> </<span class="src_typekeyword">p</span>><br> <<span class="src_typekeyword">b:if</span> <span class="src_attributename">cond</span>=<span class="src_singlequotation">'data:blog.pageType != "item"'</span>><br> <<span class="src_typekeyword">p</span>><br> <<span class="src_typekeyword">a</span> <span class="src_attributename">expr:href</span>=<span class="src_singlequotation">'data:post.url'</span>><br> 続きを読む・・<br> </<span class="src_typekeyword">a</span>><br> </<span class="src_typekeyword">p</span>><br> </<span class="src_typekeyword">div</span>><br> <<span class="src_typekeyword">div</span> <span class="src_attributename">class</span>=<span class="src_singlequotation">'post-footer'</span>></div><br /><br />前回の記事とは条件文が違っていて、pageTypeがitemではない場合には「続きを読む」を表示するという条件になっています。<br /><br />本来ならばこれらを組み込んでテンプレートとして提供できれば良いのでしょうが、私にはデザインセンスがないので・・・。</div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-76146180163994147622007-03-02T21:42:00.001+00:002007-03-02T21:51:07.178+00:00Blogger Widgetで「続きを読む」を自動化。-- 3<p>Bloggerでのトップページ等で、複数記事を表示している場合に「続きを読む」リンクを付けて要約(記事の冒頭部分)のみを表示する機能に関して、あれやこれやとJavascriptを使って後加工で強引に自己満足な機能拡張をしてきましたが、どうやらMore Betterな回答が得られたようです。<br /></p><p>結論から書きますと、WidgetでJavascriptなんて使わずにTemplateで対応するのが良さそうというか、手間も自由度も高いです。既にこの記事を書いている段階で適応済みですが、<a href='http://isawseashell.blogspot.com/2007/02/blogger-widget-2-blogger-template.html'>前回の記事</a>の時と出力されるHTMLには際がないので、これを読んでいる方には何が変わったのかわからないかと思います。</p><div class="fullpost"><p></p><p>ちなみに、「この続きを読む」に機能の基本は、<a href='http://www.kuribo.info/2006/12/blogger-beta.html'>クリボウさんのページ</a>とか<a href='http://envyinc.blogspot.com/2006/11/blog-post_16.html'>Envyさんページ</a>を参考にして下さい。</p><p></p><p>結果としては無駄になったJavascriptなコードでしたが、その作成過程で色々なテンプレートを眺めたりした事が功を奏したようで、新BloggerのTemplateに対しての理解が随分と深まりました。まだBlogger Templateのマニュアルとかドキュメントは読んで無いってあたりがアレですが・・。</p><p></p><p>今回私がテンプレートに対して加えた変更は以下のような感じです。(着色部分)<br /></p><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQzwXMgCrA78aZut_rga3m0FXrwlEcgdD4JDueyFEaoedVm6UPf1R7cpbxcEx7kOVcaHsfRETsVOjMrzYcrWS2iTU4w8XWIjKr7VFVytXUwr_PF28c4v4IUwNmh_oW7fPJ9KjdMQ/s1600-h/blogger20070303_01.PNG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQzwXMgCrA78aZut_rga3m0FXrwlEcgdD4JDueyFEaoedVm6UPf1R7cpbxcEx7kOVcaHsfRETsVOjMrzYcrWS2iTU4w8XWIjKr7VFVytXUwr_PF28c4v4IUwNmh_oW7fPJ9KjdMQ/s320/blogger20070303_01.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5037446659181161714" /></a></p><p></p><p>テンプレートをHTML(XML)で直接編集してコードを書き加えています。全てのテンプレートが同じ要素を同様に表現しているとは限らないので、私とまったく同じやり方で対応できるとは限りませんが、それなりに参考にはなるかと思います。</p><p></p><p>ポイントはテンプレートの中から<div class='post-body'>を探して、その次に<p><data:post.body/></p>とかpost-bodyの出力を指示している部分を探し、その次の部分に「続きを読む」のリンクを追加する事です。その際に記事が単体で表示されている時を考慮して、blog.pageTypetがindexの時のみに追加する様に条件文(if文)も加えます。</p><p></p><p>「続きを読む・・」の表示方法自体は普通のHTML構文ですから文言を変えたり、画像を使ったりも問題なく可能です。</p><p></p><p>また以前までの方法で記事中に<div class="readmore">なタグを書き込んでいた方は、テンプレートでのstyle指定でそちらを隠す事で二重に表示される事を防ぐ事ができるかと思います。</p><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZkj666nJxdHqsqos8vITaMstHh9qyqq1L-CT5F-bVILEKNK-3udQs610rfssd6FXhrAhIlaKhEdKu7EAcWFeSw0GRszuEv5TxtLgb3v3FVLuS8eJ5_FubdViHE7ZM-g8pl1ILw/s1600-h/blogger20070303_02.PNG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLZkj666nJxdHqsqos8vITaMstHh9qyqq1L-CT5F-bVILEKNK-3udQs610rfssd6FXhrAhIlaKhEdKu7EAcWFeSw0GRszuEv5TxtLgb3v3FVLuS8eJ5_FubdViHE7ZM-g8pl1ILw/s320/blogger20070303_02.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5037446659181161730" /></a></p><p></p><p>変更の手順は以下のような感じです。テンプレートの編集はやや難易度が高いというか失敗すると困るので事前の保存は欠かさずに。</p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqz3j3tOHTc67Zzuv_bIh19ArJSf03l4duC7nVqAXMCgHoBMomk3lC224qioDeTKNY3BzZJ3dAHiaNjlmKo1qN3ddzcR8St1fA__bVuqW58KiCyD19Na_34MlzBdpg1UcjoasUQ/s1600-h/blogger20070303_03.PNG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqz3j3tOHTc67Zzuv_bIh19ArJSf03l4duC7nVqAXMCgHoBMomk3lC224qioDeTKNY3BzZJ3dAHiaNjlmKo1qN3ddzcR8St1fA__bVuqW58KiCyD19Na_34MlzBdpg1UcjoasUQ/s320/blogger20070303_03.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5037446663476129042" /></a><br /><p></p><p>以上のような感じて結果としてBloggerの機能で対応出来たのですが、これにしても何処かにドキュメントとかあってそれを見逃してる・見つけられなかっただけなんだろうなとか思っています・・・・。<br /></p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-43525610490929102042007-03-01T04:57:00.001+00:002007-03-01T05:04:14.475+00:00Bloggerに「関連記事リスト」を。<p>Read Moreな機能は大体片付いたんですが、Documentationがまだ残ってます。やった事は記録に残そうとは心がけているのですが、次なる創作意欲、むしろ誘惑に負けて「関連記事リスト」を記事の後ろに挿入するコードを書いてみました。 </p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkMRxo5VEJ517BkYCmzI2k2xMmOpVYt6xgJXEMCWY4o5AcW_BQ4_joBswvAmy8kF8yyHFyz-CdGRqIfN8t8K0n3jxWkWqmhBiluh2jv6rIbdoIdpi8qaLLM1Pgmir7UL_CsitXpQ/s1600-h/insertRelativeLinks.PNG"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkMRxo5VEJ517BkYCmzI2k2xMmOpVYt6xgJXEMCWY4o5AcW_BQ4_joBswvAmy8kF8yyHFyz-CdGRqIfN8t8K0n3jxWkWqmhBiluh2jv6rIbdoIdpi8qaLLM1Pgmir7UL_CsitXpQ/s320/insertRelativeLinks.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5036816473788247730" /></a><div class="fullpost"><p>この機能は既に稼動中なんですが、例によってデザインセンスが欠如してますから取り敢えず列挙しましたって感じです。ちなみに複数記事が表示されている時は動かないようにしてあります</p><p>何をもって関連がある記事とするのかって大きな問題があるのですが、とりあえず記事に設定されたラベルを元に、そのラベルの一致している数が多く、そして更新日時の新しい記事って順序で表示しています。</p><p>具体的にはBloggerのFeedをラベル別にGData APIを介して取り込み、それを上記の条件で並べ直して列挙しています。</p><p>詳細に関しては、もう少しデザインとか汎用性を高めてから書きたいと思いますが、気になる方はこのページなりJavascriptなファイルなりを参照して下さい。 </p><p>今一番不安なのは、苦労して車輪を再発明しまくってるだけじゃないかって事・・・・。</p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-19767269392113069552007-02-28T07:47:00.000+00:002007-02-28T07:51:34.899+00:00Blogger Widgetで「続きを読む」を自動化。-- 2<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">本来であれば</span></span>Blogger Template<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のマニュアルなりを読んでから取り掛かるべきなんでしょうが、いつもの如く現物合わせでやっています・・・。</span></span><p class="western" style="margin-bottom: 0in;"> </p> <p class="western" style="margin-bottom: 0in;"> Blogger Template<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に</span></span>Style<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">設定を書き加える事で指定したタグ範囲内を、単独で表示する時とその他の場合で表示</span></span>/<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">表示を切り替える事で実現するのが常道のようで、これは現在の</span></span>Beta<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の取れた新しい</span></span>Blogger<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の枠組になる以前に使われていた方法の転用的な物です。この辺りに関しては<span style="color: rgb(0, 0, 255);"><u><a href="http://www.kuribo.info/2006/12/blogger-beta.html">クリボウさんのページ</a></u></span>が時系列含めて分かりやすいかと思います。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ですが投稿された記事の</span></span>URL<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を変数的な形で</span></span><A><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">タグの参照先として指定できないため、ルールを理解した上で記事の</span></span>URL<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を推測するか、投稿後に確認した</span></span>URL<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を再編集で書き込む必要があります。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">そこで<span style="color: rgb(0, 0, 255);"><u><a href="http://isawseashell.blogspot.com/2007/02/blogger-widget.html">前回の</a></u></span></span></span><span style="color: rgb(0, 0, 255);"><u><a href="http://isawseashell.blogspot.com/2007/02/blogger-widget.html">Post</a></u></span><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">では</span></span>Javascript<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を使い描画時に「続きを読む」リンクを動的に作成する機能を</span></span>Widget<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">内に組み込みました。</span></span></p><br /><div class="fullpost"><p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">他に組み込んでいた</span></span>Script<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">との競合でイベントが無限ループに突入して</span></span>Stack over flow<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が発生というブラクラのような状態になってしまったりとかって問題もありましたが、現在私の環境</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">テンプレート</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">では稼動中です。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">今は次の段階として他のテンプレートでの動作に関して検証しています。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">基本的に私のテンプレートでの</span></span>DOM<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">は以下のように構成されています。</span></span> </p> <p class="western" style="margin-bottom: 0in;" lang=""> <img name="graphics1" src="http://docs.google.com/File?id=dcmj7bx8_133d38dwd" align="bottom" border="0" height="306" width="556" /> </p> <p class="western" style="margin-bottom: 0in;"> <DIV class=”post-body”><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">には記事本文が、続く</span></span><DIV class=”post-footer”><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">以下に記事への</span></span>URL<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">となる</span></span>Link<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が</span></span><a title=”permanent link” class=”timestamp-link”><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で記述されています。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">これにより現在のコードはこの”</span></span>timestamp-link”<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">という</span></span>class<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">名を含む</span></span><a><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">タグを探してその内容を利用していますが、そもそも</span></span>class<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">名は書式指定であり、これに頼る探索では汎用性に欠けるようです。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">そこで他のサイトを</span></span>Inspector<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で調べて回ったのですが、</span></span><a><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">タグの</span></span>title=”permanent link” <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">指定はかなりの割合で設定されているようです。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <br /></p> <p class="western" style="margin-bottom: 0in;"> <img name="graphics2" src="http://docs.google.com/File?id=dcmj7bx8_134fxd7p7" align="bottom" border="0" height="246" width="629" /> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">上記のように</span></span>post- body<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の</span></span><div><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">タグに対して</span></span>post-footer<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">は</span></span><p><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">タグとなっていますが、記事へのリンクは要素 </span></span>title=”permanent link”<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">とされた</span></span><a><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">タグ内で記述されています。</span></span> </p> <p class="western" style="margin-bottom: 0in;"> <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">つまりは</span></span>post-body (<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">本文</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のタグと同列の</span></span>class=”post-footer”<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で指定されたタグ内から要素 </span></span>title=”permanent link”<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">とされた</span></span><a><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">タグから</span></span>URL<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を取得するようにすると、現状のかなりのテンプレートでも動作するかと思います</span></span> </p> <p class="western" style="margin-bottom: 0in;"> </p> <p class="MsoNormal" style="margin: 0mm 0mm 0pt;"> <span style="">現在はこのような変更と合わせて</span><span lang="EN-US"><span style="font-family:Century;">Load</span></span><span style="">時間を短縮できるようにコードに手を入れています。また</span><span lang="EN-US"><a href="http://isawseashells.googlepages.com/bloggerwidget-readmore"><span style="color: rgb(128, 0, 128);"><span style="font-family:Century;">Current</span><span style="" lang="EN-US"><span lang="EN-US">なソース</span></span><span style="font-family:Century;">(Javascipt)</span><span style="" lang="EN-US"><span lang="EN-US">はここ</span></span></span></a></span><span style="">からダウンロードしてください。</span> </p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-58917949598697218412007-02-27T13:30:00.000+00:002007-02-28T03:51:17.208+00:00Blogger Widgetで「続きを読む」を自動化。Bloggerでの「続きを読む」の方法ですが、アンカーの張り方(取得の仕方)がどうにも納得がいかない。<br /><br />一度投稿してURLを見つけてから再度編集するって作業がどうにも面倒だったので、自動的にRead Moreなタグを挿入するWidgetを作ってみました。<br /><div class="fullpost"><br />本当はBloggerの機能自体でキレイにやる方法があるんじゃないかと思ったりもしてるんですが、どこを探してもその方法は見つからない。<br /><br />基本的には<a href="http://www.kuribo.info/2006/12/blogger-beta.html">クリボウさんのページ</a>とか、<a href="http://envyinc.blogspot.com/2006/11/blog-post_16.html">Envyさんページ</a>を参考にはして、手書きで真面目にアンカー張れば動くようにはなったんですが、<div class="fullpost">は許せても、<div class="readmore">の書き方には納得がいかなくて。<br /><br />そんな感じで、他の方法を検索したりするのが面倒になって作ったのがこのWidgetです。(導入済み)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXaHj4ftT0y_6NPUzvaJrReljXULljEEyPDFEIkuH_SfZiivA5e8F3DBiQ2jNCsdA6IWI_cDlVU_naRz2Qc5JB7L4SeyxgNBgL2_cDfUXusfPFykzeNx6nl2-Ft2STo503pvXJ8A/s1600-h/BloggerWidget_ReadMore.PNG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXaHj4ftT0y_6NPUzvaJrReljXULljEEyPDFEIkuH_SfZiivA5e8F3DBiQ2jNCsdA6IWI_cDlVU_naRz2Qc5JB7L4SeyxgNBgL2_cDfUXusfPFykzeNx6nl2-Ft2STo503pvXJ8A/s320/BloggerWidget_ReadMore.PNG" alt="" id="BLOGGER_PHOTO_ID_5036211192673970114" border="0" /></a><br /><br />Widget内でテンプレート的に設定できるようになっていますので、タグの文面の変更や画像を使う事も可能で、動作は InternetExplorer7 Firefox2.0 Opera9.10で確認しました。<br /><br />強引なScriptですので<span style="font-weight: bold;">制約があります</span>。「続きを読む」機能は複数記事を表示している時に働いて欲しい機能ですが、その際に各記事の後ろに<span class="post-timestamp">で括られた記事単体を示すURLにAnchorを張った<a>タグが必要だという事です。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSbu2pkM6CfjxacxZlAN6rUMbwAEQA-f3LwJhJpXlfVTWtAjYN4FWirlyrKoPFPQtkTn5aqEAyrMlosf0OIyfshXiTBeh5nDgiyxavvfiCqQdlVy2H1T8vDL9uvS_R79L-S9iULg/s1600-h/URLisHere.PNG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSbu2pkM6CfjxacxZlAN6rUMbwAEQA-f3LwJhJpXlfVTWtAjYN4FWirlyrKoPFPQtkTn5aqEAyrMlosf0OIyfshXiTBeh5nDgiyxavvfiCqQdlVy2H1T8vDL9uvS_R79L-S9iULg/s320/URLisHere.PNG" alt="" id="BLOGGER_PHOTO_ID_5036212343725205458" border="0" /></a><br /><br />この制約は「続きを読む」で使うURLをその部分から取得しているからです。いくつのBloggerなサイトを見てみましたが、いくつかのサイトでは使われているようです。これは設定されているTemplateに依存するのですが、BloggerのTemplate書式・構造にそんなに詳しくないので未だ検討中ではあります。<br /><br /><span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" >と、ここまで書いて記事タイトルとかから取ってこようと変更中。</span><br /><br />キーワードはpermanet link。これを<a>タグのTitle要素に入れているケースがかなり多いみたいのなので、そちらからURLを引っ張るように調整してみます。<br /><br />興味のある方はどうぞご自由にお試しくださいというか、まて続報 !! (笑<br /><span style="font-style: italic;font-size:85%;" ><span style="font-weight: bold;">※もっと簡単なやり方があるよとかって話が来そうで怖いですが・・・。</span></span><br /></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-20729972994468449562007-02-26T00:01:00.000+00:002007-03-02T09:26:25.621+00:00Dojo -- JSONPに挑む。 【白帯編】<p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">取り敢えずAjaxなライブラリとして使い始めた</span></span>Dojo<span style="font-family:MS P明朝;"><span lang="ja-JP">ですが、使い方というか流儀みたいなのがそれなりに理解出来たような気がするので、次の一歩として</span></span>JSON<span style="font-family:MS P明朝;"><span lang="ja-JP">、それも</span></span>Cross Domain<span style="font-family:MS P明朝;"><span lang="ja-JP">な呼び出しをする為に</span></span>JSONP<span style="font-family:MS P明朝;"><span lang="ja-JP">をと思っています。</span></span><br /></p><p style="MARGIN-BOTTOM: 0in">JSONP<span style="font-family:MS P明朝;"><span lang="ja-JP">の</span></span>Service<span style="font-family:MS P明朝;"><span lang="ja-JP">も他所様のサービスではなく自前で提供をと考えていますので、</span></span>Server<span style="font-family:MS P明朝;"><span lang="ja-JP">側の</span></span>Architecture<span style="font-family:MS P明朝;"><span lang="ja-JP">も合わせて考慮する必要があり、</span></span>PHP<span style="font-family:MS P明朝;"><span lang="ja-JP">というのが</span></span>Private<span style="font-family:MS P明朝;"><span lang="ja-JP">な利用面では</span></span>Majority<span style="font-family:MS P明朝;"><span lang="ja-JP">なんでしょうが、個人的な好みから</span></span>ASP.NET<span style="font-family:MS P明朝;"><span lang="ja-JP">で挑みます。</span></span><br /></p><p style="MARGIN-BOTTOM: 0in">Sever<span style="font-family:MS P明朝;"><span lang="ja-JP">側からはベタな手法として</span></span>Respone.Write()<span style="font-family:MS P明朝;"><span lang="ja-JP">で手作りとかってのもあるんですが、ここはオシャレな</span></span>Library<span style="font-family:MS P明朝;"><span lang="ja-JP">を使ってみたいと思い、今回は</span></span><a href="http://jayrock.berlios.de/">Jayrock</a><span style="font-family:MS P明朝;"><span lang="ja-JP">を使ってみました。</span></span><div class="fullpost"><br /></p><p style="MARGIN-BOTTOM: 0in">Jayrock<span style="font-family:MS P明朝;"><span lang="ja-JP">は</span></span>LGPL<span style="font-family:MS P明朝;"><span lang="ja-JP">でライセンスされており、単純な入出力の</span></span>Formatter/Parser<span style="font-family:MS P明朝;"><span lang="ja-JP">という面の他に、</span></span>HTTP Handler<span style="font-family:MS P明朝;"><span lang="ja-JP">を利用した</span></span>JSON-RPC<span style="font-family:MS P明朝;"><span lang="ja-JP">的な実装も可能なかなり強力な</span></span>Library<span style="font-family:MS P明朝;"><span lang="ja-JP">です。</span></span><br /></p><p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">今回は取り敢えず</span></span>JSONP<span style="font-family:MS P明朝;"><span lang="ja-JP">な出力をする</span></span>aspx<span style="font-family:MS P明朝;"><span lang="ja-JP">なページを取り敢えず作ってみました。</span></span>Jayrock<span style="font-family:MS P明朝;"><span lang="ja-JP">のサンプルから引用したコードを新規の</span></span>aspx.cs<span style="font-family:MS P明朝;"><span lang="ja-JP">に貼り付けた感じですが、</span></span>JSONP<span style="font-family:MS P明朝;"><span lang="ja-JP">の動作</span></span>/<span style="font-family:MS P明朝;"><span lang="ja-JP">雰囲気を掴むにはこんなもので十分かと。</span></span><br /></p><div class="codeFormat"><span class="src_keyword">using</span> System;<br><span class="src_keyword">using</span> System.Data;<br><span class="src_keyword">using</span> System.Configuration;<br><span class="src_keyword">using</span> System.Collections;<br><span class="src_keyword">using</span> System.Web;<br><span class="src_keyword">using</span> System.Web.Security;<br><span class="src_keyword">using</span> System.Web.UI;<br><span class="src_keyword">using</span> System.Web.UI.WebControls;<br><span class="src_keyword">using</span> System.Web.UI.WebControls.WebParts;<br><span class="src_keyword">using</span> System.Web.UI.HtmlControls;<br><span class="src_keyword">using</span> System.IO;<br><span class="src_keyword">using</span> Jayrock.Json;<br><span class="src_keyword">using</span> Jayrock.Json.Conversion;<br><br><span class="src_keyword">public</span> <span class="src_keyword">partial</span> <span class="src_keyword">class</span> jsonpTest : System.Web.UI.Page<br>{<br> <span class="src_keyword">protected</span> <span class="src_keyword">void</span> Page_Load(<span class="src_typekeyword">object</span> sender, EventArgs e)<br> {<br><br> <span class="src_typekeyword">string</span> callBackFunctionName = <span class="src_keyword">null</span>;<br><br> <span class="src_keyword">if</span> (Request[<span class="src_doublequotation">"callback"</span>] != <span class="src_keyword">null</span>)<br> {<br> callBackFunctionName = Request[<span class="src_doublequotation">"callback"</span>];<br> Response.Write(callBackFunctionName + <span class="src_doublequotation">"("</span>);<br> }<br><br> <span class="src_keyword">using</span> (JsonWriter writer = CreateJsonWriter(Response.Output))<br> {<br> writer.WriteStartObject(); <span class="src_singlelinecomment">// {</span><br> writer.WriteMember(<span class="src_doublequotation">"Name"</span>); <span class="src_singlelinecomment">// "Name" : </span><br> writer.WriteString(<span class="src_doublequotation">"John Doe"</span>); <span class="src_singlelinecomment">// "John Doe",</span><br> writer.WriteMember(<span class="src_doublequotation">"PermissionToCall"</span>); <span class="src_singlelinecomment">// "PermissionToCall" :</span><br> writer.WriteBoolean(<span class="src_keyword">true</span>); <span class="src_singlelinecomment">// true,</span><br> writer.WriteMember(<span class="src_doublequotation">"PhoneNumbers"</span>); <span class="src_singlelinecomment">// "PhoneNumbers" :</span><br> writer.WriteStartArray(); <span class="src_singlelinecomment">// [ </span><br> WritePhoneNumber(writer, <span class="src_singlelinecomment">// { "Location": "Home",</span><br> <span class="src_doublequotation">"Home"</span>, <span class="src_doublequotation">"555-555-1234"</span>); <span class="src_singlelinecomment">// "Number": "555-555-1234" },</span><br> WritePhoneNumber(writer, <span class="src_singlelinecomment">// { "Location": "Work",</span><br> <span class="src_doublequotation">"Work"</span>, <span class="src_doublequotation">"555-555-9999 Ext. 123"</span>); <span class="src_singlelinecomment">// "Number": "555-555-9999 Ext. 123" }</span><br> writer.WriteEndArray(); <span class="src_singlelinecomment">// ]</span><br> writer.WriteEndObject(); <span class="src_singlelinecomment">// }</span><br> }<br><br> <span class="src_keyword">if</span> (Request[<span class="src_doublequotation">"callback"</span>] != <span class="src_keyword">null</span>)<br> Response.Write(<span class="src_doublequotation">");"</span>);<br> }<br><br> <span class="src_keyword">private</span> <span class="src_keyword">void</span> WritePhoneNumber(JsonWriter writer, <span class="src_typekeyword">string</span> location, <span class="src_typekeyword">string</span> number)<br> {<br> writer.WriteStartObject(); <span class="src_singlelinecomment">// {</span><br> writer.WriteMember(<span class="src_doublequotation">"Location"</span>); <span class="src_singlelinecomment">// "Location" : </span><br> writer.WriteString(location); <span class="src_singlelinecomment">// "...", </span><br> writer.WriteMember(<span class="src_doublequotation">"Number"</span>); <span class="src_singlelinecomment">// "Number" :</span><br> writer.WriteString(number); <span class="src_singlelinecomment">// "..."</span><br> writer.WriteEndObject(); <span class="src_singlelinecomment">// }</span><br> }<br><br> <span class="src_keyword">private</span> JsonWriter CreateJsonWriter(TextWriter writer)<br> {<br> JsonTextWriter jsonWriter = <span class="src_keyword">new</span> JsonTextWriter(writer);<br> jsonWriter.PrettyPrint = <span class="src_keyword">true</span>;<br> <span class="src_keyword">return</span> jsonWriter;<br> }<br>}</div><br /><p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">ちなみに</span></span>aspx<span style="font-family:MS P明朝;"><span lang="ja-JP">ファイルはこんな感じてデフォルトで作成された物から最初の一行以外は全部削ります。</span></span></p><div class="codeFormat" style="height:auto;overflow:hidden;"><<span class="src_typekeyword">%</span>@ <span class="src_attributename">Page</span> <span class="src_attributename">Language</span>=<span class="src_doublequotation">"C#"</span> <span class="src_attributename">AutoEventWireup</span>=<span class="src_doublequotation">"true"</span> <span class="src_attributename">CodeFile</span>=<span class="src_doublequotation">"jsonpTest.aspx.cs"</span> <span class="src_attributename">Inherits</span>=<span class="src_doublequotation">"jsonpTest"</span> <span class="src_attributename">%</span>></div><p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">そしてクライアントになる</span></span>html<span style="font-family:MS P明朝;"><span lang="ja-JP">ファイルはこんな感じです。</span></span></p><div class="codeFormat"><span class="src_metakeyword"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span><br><<span class="src_typekeyword">html</span> <span class="src_attributename">xmlns</span>=<span class="src_doublequotation">"http://www.w3.org/1999/xhtml"</span> ><br> <<span class="src_typekeyword">head</span>><br> <<span class="src_typekeyword">script</span> <span class="src_attributename">type</span>=<span class="src_doublequotation">"text/javascript"</span> <span class="src_attributename">src</span>=<span class="src_doublequotation">"../dojo/dojo.js"</span>></<span class="src_typekeyword">script</span>><br> <<span class="src_typekeyword">script</span> <span class="src_attributename">type</span>=<span class="src_doublequotation">"text/javascript"</span>><br> <br> dojo.require(<span class="src_doublequotation">"dojo.io"</span>);<br> dojo.require(<span class="src_doublequotation">"dojo.io.ScriptSrcIO"</span>);<br> dojo.require(<span class="src_doublequotation">"dojo.json"</span>);<br><br> <span class="src_keyword">function</span> testJSONP() {<br> dojo.io.ScriptSrcTransport.bind({<br> url: <span class="src_singlequotation">'http://ilgvkteq.sv05.fsdotnet.net/ngm/jsonpTest.aspx'</span><br> ,transport: <span class="src_doublequotation">"ScriptSrcTransport"</span><br> ,jsonParamName: <span class="src_doublequotation">"callback"</span><br> ,load: <span class="src_keyword">function</span>(type, data, event, req) {<br> showResult(data);<br> }<br> });<br> }<br><br> <span class="src_keyword">function</span> showResult(result) {<br> document.getElementById(<span class="src_singlequotation">'output'</span>).innerHTML =dojo.json.serialize(result);<br> }<br> </<span class="src_typekeyword">script</span>><br> </<span class="src_typekeyword">head</span>><br> <<span class="src_typekeyword">body</span>><br><br> <<span class="src_typekeyword">input</span> <span class="src_attributename">type</span>=<span class="src_doublequotation">"button"</span> <span class="src_attributename">onclick</span>=<span class="src_doublequotation">"testJSONP()"</span> <span class="src_attributename">value</span>=<span class="src_doublequotation">"Test JSONP"</span>/><br> <<span class="src_typekeyword">br</span> /><<span class="src_typekeyword">br</span> /><<span class="src_typekeyword">br</span> /><br> <<span class="src_typekeyword">div</span> <span class="src_attributename">id</span>=<span class="src_doublequotation">"output"</span>></<span class="src_typekeyword">div</span>><br><br> </<span class="src_typekeyword">body</span>><br><br></<span class="src_typekeyword">html</span>></div><p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">この</span></span>Blogger<span style="font-family:MS P明朝;"><span lang="ja-JP">の</span></span>Post(<span style="font-family:MS P明朝;"><span lang="ja-JP">記事</span></span>)<span style="font-family:MS P明朝;"><span lang="ja-JP">には</span></span>Script<span style="font-family:MS P明朝;"><span lang="ja-JP">を埋められないので、動作してる画面はこんな感じ。</span></span></p><p style="MARGIN-BOTTOM: 0in"><span style="color:#000080;"><img height="256" src="http://docs.google.com/File?id=dcmj7bx8_130dmfjpf" width="670" align="left" border="1" name="グラフィックス1" /><br clear="left"></span><br /></p><p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">ボタンを押すと、</span></span></p><p style="MARGIN-BOTTOM: 0in"><span style="color:#000080;"><img height="246" src="http://docs.google.com/File?id=dcmj7bx8_131c57jg3" width="606" align="left" border="1" name="グラフィックス2" /><br clear="left"></span><br /></p><p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">かなり手抜きなテストですが、</span></span>Sever<span style="font-family:MS P明朝;"><span lang="ja-JP">からの</span></span>Response<span style="font-family:MS P明朝;"><span lang="ja-JP">が</span></span>Javascript<span style="font-family:MS P明朝;"><span lang="ja-JP">な</span></span>Object<span style="font-family:MS P明朝;"><span lang="ja-JP">として捕らえられている事と</span></span>CallBack<span style="font-family:MS P明朝;"><span lang="ja-JP">の指定の仕方が分かるので、白帯編としてはこれで十分かと。</span></span><br /></p><p style="MARGIN-BOTTOM: 0in"><span style="font-family:MS P明朝;"><span lang="ja-JP">この次は茶帯編として、</span></span>JSONP<span style="font-family:MS P明朝;"><span lang="ja-JP">で得た結果から</span></span>Grid<span style="font-family:MS P明朝;"><span lang="ja-JP">の描画とかをと思っています。</span></span></p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-87087862083409362052007-02-25T07:19:00.000+00:002007-03-02T09:24:29.668+00:00Feedburner.jp に異変??<p class="western" style="MARGIN-BOTTOM: 0in"><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">つい先週に</span></span>RSS<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">を</span></span>Feedburner.jp<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">から配信するように変更したのですが、今朝になってチェックしたら異変が・・・・。</span></span> </p><p class="western" style="MARGIN-BOTTOM: 0in"><br /></p><p class="western" lang="" style="MARGIN-BOTTOM: 0in"><img height="255" src="http://docs.google.com/File?id=dcmj7bx8_123cvn945" width="532" align="bottom" border="0" name="graphics1" /> </p><p class="western" style="MARGIN-BOTTOM: 0in"><br /></p><p class="western" style="MARGIN-BOTTOM: 0in"><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP"><b><span style="color:#ff0000;">燃えています</span></b></span></span><b><span style="color:#ff0000;">! </span></b><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">って<b><i><u>購読者は</u></i></b></span></span><b><u><i>0</i></u></b><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">になってます・・・・・。</span></span> </p><div class="fullpost"><p class="western" style="MARGIN-BOTTOM: 0in"><br /></p><p class="western" style="MARGIN-BOTTOM: 0in"><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">前日の夜に何気なく見たときは購読者数は</span></span>50<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">台だったと思うのですが、何があったんでしょうか・・・。少なくとも私は購読してるのに</span></span>(<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">笑</span></span> </p><p class="western" style="MARGIN-BOTTOM: 0in"><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">よく見ると管理用の</span></span>UI<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">に変更があったみたいで、今まで</span></span>Feedbruner.jp<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">では見れなかったようなログとかまで見れるようになっていますので、そのあたりの変更時にカウントがリセットされたのか機能しなくなったのかしているようです。</span></span> </p><p class="western" style="MARGIN-BOTTOM: 0in"><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">まぁ</span></span>UI<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">がどう変更されてもいいし、講読者数がリセットされても別に構わないのですが、</span></span>Feed<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">の設定を見てみると・・・。</span></span> </p><p class="western" style="MARGIN-BOTTOM: 0in"><img height="345" src="http://docs.google.com/File?id=dcmj7bx8_124gwsrq7" width="734" align="bottom" border="0" name="graphics2" /> </p><p class="western" style="MARGIN-BOTTOM: 0in"><span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">出力フィードの設定が</span></span>Feedburner.jp<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">ではなくて</span></span>com<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">と表記されています。実際には変更なく</span></span>feed.feedburner.jp<span style="font-family:MS 明朝, MS Mincho, serif;"><span lang="ja-JP">から配信さてますから表記ミスだとは思います。多分本家のソースをそのまま流用して更新してないんでしょうね。</span></span> </p><p class="western" style="MARGIN-BOTTOM: 0in"></p><p class="western" style="MARGIN-BOTTOM: 0in">特に騒ぐような事でもないのですが、中の人の苦労を想像しながら観てるのも・・・って悪趣味ですね(笑</p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-2660898224545907892007-02-23T16:17:00.000+00:002007-03-10T04:52:54.760+00:00Access2007 実はDAOが新バージョン。<p class="western" style="margin-bottom: 0in;"><a href="http://isawseashell.blogspot.com/2007/02/attachment-post-open-attachment-control.html">前回</a>まででAttachment<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">型を見ていって</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のバージョンが上がっているという事がわかりました。このバージョンというのがちょっと微妙な感じで、明らかにマイナーレベルの数値が上がっても良いぐらいの拡張はされているのに、この</span></span>Access2007<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で採用された</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">には正式なバージョン番号が付いていないようなんです。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の最新バージョンは</span></span>3.6<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">だったと思うのですが、</span></span>Access2007<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ではそれすら参照されていません。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span>VBA<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">コードエディタを開いて参照設定を見ても、</span></span>DAO(Microsoft Data Access Object)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">への参照は設定されていません。</span></span></p><div class="fullpost"><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_117ddqjcf" name="graphics1" align="bottom" border="0" height="273" width="468" /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">だけれども</span></span>VBA<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のコードからは</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が参照</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">利用</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">出来るという変な状態なんですが、オブジェクトブラウザで見てみると</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">はどのライブラリを参照してるかが判ります。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_118dmsmk3" name="graphics2" align="bottom" border="0" height="516" width="637" /></p><p class="western" style="margin-bottom: 0in;"><br /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">上記のように、ライブラリ名称こそ</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ですがその実態は、”</span></span>Microsoft Office 12.0 Access database engine Object”<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">となっています。略すなら</span></span>ADEO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">とかでしょうか</span></span>?</p><p class="western" style="margin-bottom: 0in;"></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ちなみに</span></span>DAO3.6<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">だはこんな感じでした。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_120f8zjs8" name="graphics3" align="bottom" border="0" height="207" width="445" /></p><p class="western" style="margin-bottom: 0in;"><br /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">素直に</span></span>DAO 3.7<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">とかにしなかった理由が何であるのかはわかりませんが、</span></span>Access2007<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">以降の製品で</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を</span></span>COM Object<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">として利用することは無いでしょうし、脱</span></span>COM<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">的な流れの中ですあるとかそんな事が理由かも知れません。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">今回の</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の拡張されたポイントですが、オブジェクトブラウザで見た限りオブジェクトで目に付いたのは</span></span>Recrodset2<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">と</span></span>Field2<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ぐらいです。</span></span>Field2<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に関してはメゾッドして </span></span>SaveToFile<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">と</span></span>LoadFromFile<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が、プロパティとして</span></span>ComplexType<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">と</span></span>IsComplex<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が追加されています。</span></span>Recordset2<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">にはプロパティとして</span></span>ParentRecordset<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が追加されています。</span></span></p><p class="western" style="margin-bottom: 0in;"><br /></p><table style="color: rgb(0, 0, 0);" border="1" cellpadding="8" cellspacing="0" frame="hsides" rules="groups" width="604"><colgroup><col width="185"><col width="294"><col width="77"></colgroup><tbody><tr valign="top"><td width="185"><p class="western" align="center"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"><b>オブジェクト</b></span></span></p></td><td width="294"><p class="western" align="center"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"><b>新インターフェイス</b></span></span></p></td><td width="77"><p class="western" align="center"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"><b>備考</b></span></span></p></td></tr></tbody><tbody><tr valign="top"><td bgcolor="#c0c0c0" width="185"><p class="western"><b>Reocrdset2</b></p></td><td bgcolor="#c0c0c0" width="294"><p class="western">Property ParentRecordset As Recordset</p></td><td style="color: rgb(192, 192, 192);" bg width="77"><p class="western"><span style="font-size:85%;">Read-Only</span></p></td></tr><tr valign="top"><td width="185"><p class="western"><b>Field2</b></p></td><td width="294"><p class="western">Property ComplexType As ComplexType</p></td><td width="77"><p class="western"><span style="font-size:85%;">Read-Only</span></p></td></tr><tr valign="top"><td bgcolor="#c0c0c0" width="185"><p class="western"><br /></p></td><td bgcolor="#c0c0c0" width="294"><p class="western">Property IsComplex As Boolean</p></td><td style="color: rgb(192, 192, 192);" bg width="77"><p class="western"><span style="font-size:85%;">Read-Only</span></p></td></tr><tr valign="top"><td width="185"><p class="western"><br /></p></td><td width="294"><p class="western"><span style="color: rgb(0, 0, 0);">Sub LoadFromFile(Filename As String)</span></p></td><td width="77"><p class="western"><br /></p></td></tr><tr valign="top"><td bgcolor="#c0c0c0" width="185"><p class="western"><br /></p></td><td bgcolor="#c0c0c0" width="294"><p class="western">Sub SaveToFile(Filename As String)</p></td><td bgcolor="#c0c0c0" width="77"><p class="western"><br /></p></td></tr><tr valign="top"><td width="185"><p class="western"><b>ComplexType</b></p></td><td width="294"><p class="western">Property Fields As Fields</p></td><td width="77"><p class="western"><span style="font-size:85%;">Read-Only</span></p></td></tr></tbody></table><p class="western" style="margin-bottom: 0in;"><br /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">この他にも定数や</span></span>Enumerate(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">列挙型</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">がいくつか追加されているようですが、大きくはやはり添付ファイル型・複数値型を扱う為の拡張であるこの辺りがメインだと思います。今後</span></span>Multi-valued filed(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">複数値型</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に関してもう少し突っ込んでみようと思いますが、添付ファイル型は複数値型の一形態なんだって事がここまで分かるかと思います。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">今回の</span></span>Access<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で使われている</span></span>ACEDAO.DLL<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に関しては</span></span>Web<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">上にもあまり情報がありません。</span></span>Google<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で検索してもほとんどヒットしませんし。これを</span></span>DAO12.0<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">とかって呼ぶのはちょっと無理があるんで、何か素敵な呼び名を付けてあげなくてはとか思ってたりしますけど。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"></span></span><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">余談ではありますが、日本ではコンプレックスって劣等感みたいな意味で使いますが、劣等感そのものは英語では</span></span>Inferior complex<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">って表現になり、</span></span>complex<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">って単語にはネガティブな意味合いはまったくありません。その辺を理解しないで英文を読んでしまうと間違って変な解釈してしまったりしますのでご注意を。</span></span></p><p class="western" style="margin-bottom: 0in;"></p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-60957946177900982202007-02-21T15:10:00.000+00:002007-03-10T04:51:59.240+00:00Access2007 新機能 Attachment型 -- 5<p class="western" style="margin-bottom: 0in;">Attachment<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">型</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">添付ファイル型</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">も、このように扱ってくると色々と深い所が見えてきます。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">個人的にはそれを扱うためのコントロールが力不足じゃないとか思っているのですが、今回はそれを補完する形で。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">まずは<a href="http://isawseashell.blogspot.com/2007/02/attachment-field-multi-valued-field.html">前回</a>の</span></span>Post<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で</span></span>Open<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ボタンを作ったけど、ファイルをどうやって開くって事に関してです。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_110gf338m" name="graphics1" align="bottom" border="0" height="81" width="579" /></p><p class="western" style="margin-bottom: 0in;"><br /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">リストボックス</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">実際はコンボボックス使ってます</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に添付ファイル名を列挙したり、添付ファイルの数を表示する事は、標準の</span></span>Attachment Control<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のプロパティを参照する事で出来ました。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ですがそれ以外のファイルを開く・保存するようなメゾッド</span></span>/<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">プロパティをコントロールが持っていない為に、そのままでは</span></span>Attachment Control<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の</span></span>Management<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ダイアログを介しての操作しか出来ません。</span></span></p><div class="fullpost"><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">そこでコード</span></span>(VBA)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で何とかしようという話ですが、コントロールにそれらのメゾッド</span></span>/<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">プロパティが無い以上、コントロールには何一つ頼れません。ですので</span></span>Recordset<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を直接扱う必要が出てきます。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">そして今回の</span></span>Access<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の更新で重要な事に</span></span>DAO(Data Access Object)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">がバージョンアップしているという事があります。この拡張された</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の機能を使うことで</span></span>Access2007<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">は添付ファイルなり複数値データを扱えるようになっているのです。</span></span>(DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のバージョンアップの扱いに関しては別</span></span>Post<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で書きます。</span></span>)</p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">実は</span></span>Attachment<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">型</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">添付ファイル型</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のフィールドには</span></span>Recordset<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が値として入っているのです。テキストや数値などではなく、</span></span>Object<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">的に</span></span>Recordset<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が</span></span>Value<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">として入る</span></span>/<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">入っています。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ですので、当該</span></span>Field<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の</span></span>Value<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を</span></span>Recordset<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">として扱い、後は今回追加されたメゾッドある</span></span>Field<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">オブジェクトの</span></span>SaveToFile<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">メゾッドを使いファイルを保存する事が出来ます。</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ファイルを開くは、指定ファイルに保存さえ出来れば、特に問題なく従来と同様の方法で可能です。</span></span>)</p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">具体的なコードはこんな感じです。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_111gs3s6f" name="graphics2" align="bottom" border="0" height="437" width="624" /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ファイルに保存先に使った</span></span>Temporary<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ディレクトリを取得する為に、</span></span>Microsoft Scripting Runtime<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に含まれる</span></span>FileSystemObject<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">と、ファイルを関連付けられたアプリケーションから開く為に</span></span>Windows API<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の</span></span>ShellExecute()<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を使っていますが、基本的に難しい事はしていません。</span></span></p><p class="western" style="margin-bottom: 0in;">Form<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">にバインドされている</span></span>Mails<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">テーブルの</span></span>Recordset<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">は常に現在扱っている</span></span>/<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">表示しているレコードにカーソルがありますから、そのレコードの添付ファイルが格納されている</span></span>attachments Field<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の</span></span>Value<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を</span></span><b><u>Recordset2</u></b><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP"><b><u>型</u></b>のオブジェクト変数である</span></span>rAttachments<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に代入しています。</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">参照をセット</span></span>)</p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">後はその添付ファイルの入っている</span></span>Recordset<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">のカーソル位置をリストボックスで選ばれた物と同期させて、</span></span>FileData Field(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ファイルの中身がバイナリで入っている</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を新メゾッドである</span></span>SaveToFile<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">でファイルに保存しています。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">この</span></span>SaveToFile<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">メゾッドですが、</span></span>VBA<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">でコード書いてる時に自動的に</span></span>IntelliSense(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">インテリセンス</span></span>- <span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">プロパティとかメゾッドの候補を表示してくる</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">には出てきませんが、気にせずに使ってください。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">大体こんな感じでファイルを開く機能は実現できました。実際には一時ファイルフォルダにZ存されたファイルは放置されてしまうので消したりとかする方法を考慮しなくていけないのですが・・。Attachment Controlの管理ダイアログボックスから開くと、一時ファイルはインターネット一時ファイルフォルダ(Temporary Internet File)に保存され、またダイアログボックス自体がモーダルで表示されるので、削除や告知したり出来ていますし。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">次はバージョンアップされた</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に関してと</span></span>Recordset2<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">などのオブジェクト、そして</span></span>Attachment<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">型のレコードセットに関しては書く予定です。</span></span></p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0tag:blogger.com,1999:blog-37681533.post-13327035325454303132007-02-20T20:20:00.000+00:002007-03-10T04:50:47.308+00:00Access2007 新機能 Attachment型 -- 4<p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">日本語だと</span></span>Attachment Field<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">は添付ファイルフィールド、</span></span>Multi-Valued Field<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">は複数値フィールドになるみたいなですね。この添付ファイルフィールドに関して<a href="http://isawseashell.blogspot.com/2007/02/access2007-attachment-3-microsoft.html">前回</a>に続いて見ています。</span></span><br /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">まずは</span></span>Attachment Filed<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を扱うコントロールである</span></span>Attachment Control<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に少し手を入れて見たいと思います。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_101fqmpr6" name="graphics1" align="bottom" border="0" height="227" width="584" /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">手を入れるとは言っても</span></span>OCX<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">というか</span></span>ActiveX<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">なカスタムコントロールを作るような時代でもなく、取り敢えず添付ファイルの数とかを表示してみます。</span></span></p><div class="fullpost"><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_102v82s4" name="graphics2" align="bottom" border="0" height="170" width="550" /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">あまり難しい事は考えず、</span></span>Form<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">の</span></span>Current<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">とイベントで表示を書き換える感じで。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_103dzfwbg" name="graphics3" align="bottom" border="0" height="63" width="535" /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">こんな感じで表示されます。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_104gfmz93" name="graphics4" align="bottom" border="0" height="82" width="459" /></p><p class="western" style="margin-bottom: 0in;"><br /></p><p class="western" style="margin-bottom: 0in;">Management Dialog Box<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">が色気ないので、添付ファイルをリストするコンボボックスとそれを開く為のボタンを付けてみました。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_105d87d9m" name="graphics5" align="bottom" border="0" height="147" width="505" /></p><p class="western" style="margin-bottom: 0in;"><br /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">まだこの段階では</span></span>Attachment Control<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">は</span></span>Hidden(Visible=no)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で残してあり、その機能を使っています。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_106d7766g" name="graphics6" align="bottom" border="0" height="44" width="574" /></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_107f94bsq" name="graphics7" align="bottom" border="0" height="174" width="320" /></p><p class="western" style="margin-bottom: 0in;"><br /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">コードはこんな感じです。</span></span></p><p class="western" style="margin-bottom: 0in;"><img src="http://docs.google.com/File?id=dcmj7bx8_108d93b8h" name="graphics8" align="bottom" border="0" height="321" width="535" /></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ここで問題になるのが、ファイルを如何に開くかという部分なんですが、開く方法といっても問題になるのは</span></span>Attachment Control Object<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">からはファイルを取り出す</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">保存とか</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">方法が無いみたいです</span></span>(<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">当然開く方法も無い</span></span>)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">。あくまでも管理用のダイアログボックスを経由する必要があるようで、メゾッド</span></span>/<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">プロパティにそれら操作の為の物がありません。表示を切り替えるための</span></span>Forward<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">と</span></span>Back<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">がある程度です。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">ですので、ファイルをコードから開いたり・保存したりするには</span></span>DAO(Data Access Object)<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">を操作する事が必要になります。</span></span></p><p class="western" style="margin-bottom: 0in;"><span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">これら</span></span>Attachment<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">に対する</span></span>DAO<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">関連に関しては、次の</span></span>Post<span style="font-family:MS 明朝,MS Mincho,serif;"><span lang="ja-JP">で。</span></span></p></div>West Pierhttp://www.blogger.com/profile/00913173325234961493noreply@blogger.com0