tag:blogger.com,1999:blog-901152036027959972024-03-14T00:13:10.062+01:00Frédéric MauroyA little bit of anything...Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.comBlogger99125tag:blogger.com,1999:blog-90115203602795997.post-577636026026144252019-10-02T19:53:00.002+02:002019-10-02T20:21:10.221+02:00Raspberry 4 available at AmazonA great little device:<br />
<br />
<center>
<table>
<tr>
<th>USA</th>
<th>Europe</th>
</tr>
<tr>
<td>
<iframe style="width:120px; height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=US&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=fredmauroy-20&language=en_US&marketplace=amazon®ion=US&placement=B07TD42S27&asins=B07TD42S27&linkId=262d81353c6f6a80fa0633240ea3c4d2&show_border=true&link_opens_in_new_window=true"></iframe>
</td>
<td>
<iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=FR&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=fredmauroy-21&language=fr_FR&marketplace=amazon&region=FR&placement=B07TD42S27&asins=B07TD42S27&linkId=7927cd9e1d52fe46af8125a22a790dda&show_border=true&link_opens_in_new_window=true" style="height:240px; width:120px;"></iframe>
</td>
</tr>
</table>
</center>
<br />
<i>Note: The links above are affiliate links</i>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-3908229467095770492018-08-22T20:37:00.002+02:002018-08-22T20:37:16.229+02:00ERR_SPDY_PROTOCOL_ERRORI have recently moved the nameservers of my domains from fastmail (where the email is still hosted) to Cloudflare in order to benefit from their caching and performance improvements. All seemed well, except for the fact that my main homepage (https://mauroy.eu) was not accessible from Chrome anymore. Firefox didn't have any issue though.<br />
<br />
The developer tools (F12) gave me the error: ERR_SPDY_PROTOCOL_ERROR. I googled a bit and found many articles, but none gave me the solution. One did give a part of the clue: a post on the Cloudflare forum talked about a discrepancy between the length of the content and the value of the content-length header. What could cause that? I thought about a compression issue and checked the settings of my IIS server. Both the static and dynamic content compression settings were enabled, something I do by default when I create a site on IIS. Apparently, when HTTP2/SPDY is enabled, Chrome does an additional check on the content length. A possible solution was to disable SPDY on Cloudflare, something that can only be done through the API. I preferred to disable compression at the source, and presto, the site was available again on Chrome...<br />
<br />
To disable compression you can do it through the web.config file of the site:<br />
<blockquote class="tr_bq">
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<span style="color: grey;"><</span><span style="color: #569cd6;">urlCompression</span> <span style="color: #9cdcfe;">doStaticCompression</span>=<span style="color: #ce9178;">"false"</span> <span style="color: #9cdcfe;">doDynamicCompression</span>=<span style="color: #ce9178;">"false"</span> <span style="color: grey;">/></span></div>
</blockquote>
inside the <b>webServer </b>node or use the GUI that will update the file for you:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-SQR_Yqvx9y4/W32sFXa4ecI/AAAAAAAAh_s/oAHyRaHt5oULN56pO3lUgQUiEfWbqbf8ACLcBGAs/s1600/IIS-Compression-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="464" data-original-width="517" height="572" src="https://1.bp.blogspot.com/-SQR_Yqvx9y4/W32sFXa4ecI/AAAAAAAAh_s/oAHyRaHt5oULN56pO3lUgQUiEfWbqbf8ACLcBGAs/s640/IIS-Compression-1.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-S0Yv7pgEbjk/W32roBRZRkI/AAAAAAAAh_k/A1LBDv7AD1cEvUUnGLjCA9rBtYHpPEGxgCLcBGAs/s1600/IIS-Compression.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="145" data-original-width="934" height="97" src="https://4.bp.blogspot.com/-S0Yv7pgEbjk/W32roBRZRkI/AAAAAAAAh_k/A1LBDv7AD1cEvUUnGLjCA9rBtYHpPEGxgCLcBGAs/s640/IIS-Compression.png" width="640" /></a></div>
<br />
And click "Apply" in the "Actions" pane on the right side.<br />
<br />
Simple solution to this problem, I just needed to find out about it ;-)<br />
<br />
Hope this helps anyone.Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-35236792296501291552016-03-16T17:55:00.000+01:002016-03-16T17:55:02.941+01:00Integrating Azure CDN into an ASP.Net MVC application<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Using a CDN has a multitude of advantages. I won't go into details about them here. You can Google around for more info ;-)</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">In the examples one can find online on how to integrate a CDN into an MS MVC application, we see typical examples using the CDN of common libraries like jQuery:</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">See "Using a CDN" at <a href="http://www.asp.net/mvc/overview/performance/bundling-and-minification">http://www.asp.net/mvc/overview/performance/bundling-and-minification</a></span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">It's plain and simple:</span><br />
<pre class="prettyprint prettyprinted" style="background: rgb(239, 239, 239); border: 1px solid rgb(210, 210, 210); color: #505050; font-family: Consolas, monospace; font-size: 13.008px; line-height: 18.2112px; margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline;"><span class="kwd" style="background: transparent; border: 0px; color: blue; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">var</span><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> jqueryCdnPath </span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="str" style="background: transparent; border: 0px; color: #a31515; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">"http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">;</span><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
bundles</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="typ" style="background: transparent; border: 0px; color: #2b91af; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Add</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kwd" style="background: transparent; border: 0px; color: blue; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">new</span><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="typ" style="background: transparent; border: 0px; color: #2b91af; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">ScriptBundle</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="background: transparent; border: 0px; color: #a31515; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">"~/bundles/jquery"</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
jqueryCdnPath</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="typ" style="background: transparent; border: 0px; color: #2b91af; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">Include</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="str" style="background: transparent; border: 0px; color: #a31515; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">"~/Scripts/jquery-{version}.js"</span><span class="pun" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">));</span><span class="pln" style="background: transparent; border: 0px; color: black; font-size: 13.008px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
</span></pre>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">But what if you want to use your own scripts through a CDN like Azure? This works nicely (in BundleConfig):</span><br />
<pre class="prettyprint prettyprinted" style="background: rgb(239, 239, 239); border: 1px solid rgb(210, 210, 210); margin-bottom: 30px; margin-top: 18px; outline: 0px; overflow: auto; padding: 5px; vertical-align: baseline;"><span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Consolas, monospace;"><span style="font-size: 13.008px; line-height: 18.2112px;">bundles.<span style="color: #38761d;">Add</span>(<span style="color: blue;">new</span> <span style="color: #38761d;">ScriptBundle</span>("<span style="color: #990000;">~/bundles/jquery</span>", CdnRoot + "<span style="color: #990000;">/bundles/jquery</span>")
</span></span><span style="background-color: transparent; font-family: Consolas, monospace; font-size: 13.008px; line-height: 18.2112px;"> </span><span style="font-family: Consolas, monospace;"><span style="font-size: 13.008px; line-height: 18.2112px;">.<span style="color: #38761d;">Include</span>("<span style="color: #990000;">~/Content/Scripts/Lib/jquery-{version}.js</span>"));</span></span><span style="font-family: Consolas, monospace;"><span style="font-size: 13.008px; line-height: 18.2112px;">
</span></span></span></pre>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">where CdnRoot is the path to the CDN endpoint, like: //my-endpoint.azureedge.net</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">This way, the CDN will load the resources from the bundle like in a normal case, store it in its cache, and return it the next times a user requests them. No need to upload the files to the CDN, and changes to the code behind the bundle is taken into account automatically.</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-42465917734303616012014-11-22T13:51:00.000+01:002014-11-22T14:02:08.268+01:00Using Lucene search in DotNetNuke / Evoq Content 7+<h3>
Intro</h3>
I've recently improved a DNN module to use the new search engine present in the latest version of DotNetNuke. Before, I implemented my own search tool using SQL queries, but it was not very efficient (with LIKEs) and users always found ways not to find what they where looking for (using diacritic and other special characters, using quotes a.s.o...). In short, it was not good ;-)<br />
<br />
I googled a bit to find examples, but didn't find many. So instead, I looked up the in the DNN source code. Here is a summary of my findings...<br />
<br />
There were 2 areas I wanted to cover:<br />
<br />
<ul>
<li>submit items to the DNN search engine (there are examples of that);</li>
<li>use the engine to retrieve my items and display them in my module (didn't find any example);</li>
</ul>
<span style="font-size: xx-small;"><br /></span>
<br />
<h3>
Submitting items to crawl</h3>
<div>
To use Lucene, you have to use the latest "ModuleSearchBase" base class for your FeatureController instead of implementing the ISearchable interface as in older versions.</div>
<div>
You then override the GetModifiedSearchDocuments method and return a list of SearchDocument:</div>
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">using System;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">using DotNetNuke.Entities.Modules;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">using DotNetNuke.Services.Search;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">using DotNetNuke.Services.Search.Entities;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">using DotNetNuke.Services.Search.Internals;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">public class FeatureController : ModuleSearchBase</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> private static readonly int ModuleSearchTypeId = SearchHelper.Instance.GetSearchTypeByName("module").SearchTypeId;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> public override IList<searchdocument> GetModifiedSearchDocuments(ModuleInfo oModuleInfo, DateTime beginDate)</searchdocument></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var oDocuments = new List<searchdocument>();</searchdocument></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var oDocument = new SearchDocument();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.Keywords.Add("keyword1", "value1");</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.UniqueKey = "some unique key to your app";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.Title = "Title of the document";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.Body = "Content of the document...";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.AuthorUserId = oModuleInfo.LastModifiedByUserID;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.ModuleId = oModuleInfo.ModuleID;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.ModuleDefId = oModuleInfo.ModuleDefID;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.PortalId = oModuleInfo.PortalID;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.TabId = oModuleInfo.ParentTab.TabID;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.SearchTypeId = ModuleSearchTypeId;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.QueryString = "Parameters to pass to the page where my module is inserted into";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.ModifiedTimeUtc = DocumentLastModifiedDate;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;"><br /></span></span>
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> </span><span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: xx-small;">// Important, if false, the document will be deleted from the search index</span></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocument.IsActive = true; </span><br />
<div>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oDocuments.Add(oDocument);</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> return oDocuments;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span><br />
<br />
You then run the site crawler job (or wait for it to run automatically) and you should be able to find your documents in the standard search. Clicking on an item will call the page where the module is located and add the querystring you specified for each document.<br />
<br />
<u>Note:</u> you should take the "beginDate" parameter into account to only return new and modified documents, otherwise duplicate entries will show up. Unfortunately, if you purge the index in DNN, that date is not updated, and your module will return modified entries instead of returning all of them to refill the index... This is a bug I have reported to support, hopefully it will be fixed someday.<br />
<br />
<h3>
Using the DNN search in a module</h3>
A query is very simple to make. You make a new instance of SearchQuery, fill in some data, run it and display the results:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">using DotNetNuke.Services.Search.Controllers;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">using DotNetNuke.Services.Search.Entities;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">protected void btnSearch_Click(object sender, EventArgs e)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var oSearchQuery = new SearchQuery();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oSearchQuery.KeyWords = "Search query";</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oSearchQuery.ModuleId = this.ModuleId;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oSearchQuery.TabId = this.TabId;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oSearchQuery.PortalIds = new List<int>() { this.PortalId };</int></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> oSearchQuery.WildCardSearch = true;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var results = SearchController.Instance.ModuleSearch(oSearchQuery);</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if (results != null)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if (results.Results == null || results.Results.Count == 0)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> plhSearchResults.Controls.Add(new LiteralControl("<div class='alert alert-info'</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">" + LocalizeString("NoSearchResults") + "</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/div</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">"));</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> else</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> plhSearchResults.Controls.Add(new LiteralControl("</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">ul style='list-style-type: none;'</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">"));</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> foreach (var oRes in results.Results)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> plhSearchResults.Controls.Add(new LiteralControl(string.Format("</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">li</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">a href='{0}'</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">{1}</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/a</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">p</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">{2}</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/p</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/li</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">", oRes.Url, oRes.Title, oRes.Snippet)));</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> plhSearchResults.Controls.Add(new LiteralControl("</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/ul</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">></span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">"));</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> }</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span><br />
<div>
<br /></div>
<div>
Where plhSearchResults is an asp:placeholder receiving the list of results.</div>
<div>
<br /></div>
<div>
Hope that helps!</div>
<div>
<br /></div>
Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-88767840144770785122014-03-06T14:37:00.001+01:002014-03-06T14:39:08.756+01:00ASP.Net Web API + OData + $inlinecount<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">So, I had a nice single page application querying data from a Web API backend. As I wanted to allow searching and paging, I used the OData extensions and all was well. Until I needed to know the total number of items in the dataset after having it filtered using $filter, $top and $skip. At the time, I didn't find any easy way to do it, so I implemented a second query to the API to return the total number of items. Problem is, this second query returned the total number of items and didn't take into account any filtering I had applied in the OData query (using $filter). I let that dormant for a while...</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Then came the need to have a nice navigation footer, and I used this component: <a href="http://botmonster.com/jquery-bootpag/">http://botmonster.com/jquery-bootpag/</a></span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">This component just needs to know the number of pages and at which page it currently is. But then again, we need to know the number of items to know the number of pages to display. Back at square one ;-)</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">I looked for ways to implement this once again and found more info this time (technology matured or better search query in Google?). Some articles suggested to force the verbose mode of OData (by using "&$format=verbosejson" or adding an accept header with a value of "application/json;odata=verbose"), to no avail. I would always receive an array with the X items I requested using the $top parameter and nothing else.</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Until I came across these 2 posts on <a href="http://stackoverflow.com/" target="_blank">SO</a>:</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><a href="http://stackoverflow.com/questions/18428763/web-api-odata-inlinecount-not-mapped">http://stackoverflow.com/questions/18428763/web-api-odata-inlinecount-not-mapped</a></span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">and <a href="http://stackoverflow.com/questions/18197041/reconstructing-an-odataqueryoptions-object-and-getinlinecount-returning-null">http://stackoverflow.com/questions/18197041/reconstructing-an-odataqueryoptions-object-and-getinlinecount-returning-null</a></span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">In short, here is what I had to change:</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">public IQueryable<item> Get()</item></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">{</span><br />
<span style="font-size: x-small;"><span class="Apple-tab-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; white-space: pre;"> </span><span style="font-family: Courier New, Courier, monospace;">return m_oItems.AsQueryable();</span></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">changed to:</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">public PageResult<item> Get(ODataQueryOptions<item> options)</item></item></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>IQueryable results = options.ApplyTo(m_oItems.AsQueryable());</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>return new PageResult<item>(results as IEnumerable<item>, Request.GetNextPageLink(), Request.GetInlineCount());</item></item></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Then in my JS file, I added "&$inlinecount=allpages" to my query and</span><span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"> where I would treat the data blob returned by $.getJSON as an array, I simply use data.Count to have the number of items that match my query, and data.Items as my array of items.</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">The solution looks so simple now, but took me some time to figure out. Hope this helps...</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-40488138404429946872013-02-22T18:34:00.001+01:002013-02-22T18:34:41.831+01:00viashopia Android appMy first mobile application, made using PhoneGap 2.3.0, is available on the Google Play Store:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://play.google.com/store/apps/details?id=lu.cobalt.viashopia" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-Sqe67AlegLA/USeroIeWqEI/AAAAAAAABkk/LabX8mzm6B0/s320/device-2013-02-19-124748.png" width="192" /></a></div>
<br />
<div style="text-align: center;">
<a href="https://play.google.com/store/apps/details?id=lu.cobalt.viashopia">https://play.google.com/store/apps/details?id=lu.cobalt.viashopia</a></div>
<div style="text-align: center;">
<br /></div>
Also visit the brand new web site of viashopia here: <a href="http://www.viashopia.com/">http://www.viashopia.com</a><br />
<br />Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-60210458530888076312012-09-11T13:31:00.001+02:002012-09-11T13:31:28.544+02:00You play, we play<p>If you want to play Euromillions and increase your odds, a lottery syndicate is the best way to do just that. By pooling your ticket with 49 other players, your odds of winning something is multiplied by 50, for a price a tad higher than buying your own ticket in the shop.</p>
<p>I've played with the below syndicate and have won something on every single draw, albeit small prizes so far.</p>
<p><center><a href="http://www.youplayweplay.com/info.php?ref=fmauroy"><img border="0" src="http://www.youplayweplay.com/images/ypwp_468x60_play.gif"></a></center></p>
<p>You also have the benefit of the British Euromillion draw that gives away 1 million pounds during each draw to a ticket sold in the UK. In fact, each draw gives you 50 changes to get that lucky ticket and share it between 50, which gives you 20.000£ in such a case. Gladly welcome.</p>
<p>Enjoy!</p>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-76330981577937120512012-08-16T11:32:00.000+02:002012-08-16T11:32:23.024+02:00Mariage de Sandrine & Davy<p>Sandrine et Davy se sont mariés le samedi 2 juin 2012 à Enghien.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://photos.mauroy.eu/Weddings/Sandrine%20%26%20Davy/" target="_blank" style="margin-left:1em; margin-right:1em"><img border="0" height="922" width="615" src="http://photos.mauroy.eu/Weddings/Sandrine%20%26%20Davy/Parc%20d%27Enghien/slides/VI7M0354.jpg" /></a></div>
Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com1Enghien, Belgium50.6947421 4.041858250.6142756 3.8839297 50.7752086 4.1997867tag:blogger.com,1999:blog-90115203602795997.post-38039021486482808832012-05-07T10:15:00.002+02:002012-05-07T10:16:51.912+02:00Mariage Hélène et CharlesHélène et Charles se sont mariés à Aubange le 28 avril 2012.
<br><br>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://photos.mauroy.eu/Weddings/H%C3%A9l%C3%A8ne%20%26%20Charles/" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="360" width="560" src="http://photos.mauroy.eu/Weddings/H%C3%A9l%C3%A8ne%20%26%20Charles/slides/IMG_2961.jpg" /></a></div>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-18672242184360194012012-03-13T08:58:00.000+01:002012-03-13T08:58:51.082+01:00freshnews.frLa vidéo du jour chez freshnews.fr:<br />
<br><br><br />
<div style="text-align: right;"><iframe id="dm_jukebox_iframe"
style="overflow: hidden; margin: 0; padding: 0; width: 100%;
height: 562px;" src="http://www.dailymotion.com/widget/jukebox?list[]
=%2Fplaylist%2Fx1p7xh_FreshnewsTV_freshnews-tv%2F1&skin
=default&autoplay=1"frameborder="0" marginwidth="0"
marginheight="0" align="center" width="100%" height="240"><br />
</iframe><a style="font-size: 10px; color: #193d5e;
text-decoration: none;" title="retrouvez-nous sur freshnews.fr"
href="http://www.freshnews.fr" target="_blank"><br />
Retrouvez-nous sur <span style="text-decoration: underline;"><br />
freshnews.fr</span></a></div>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-24351550026849260442011-06-29T17:57:00.003+02:002011-06-29T18:15:57.594+02:00Journée en Famille 2011Ce 26 juin 2011, Céline Asselborn animait l'atelier sur le portage respectueux à Volaiville. Buffets, stands d'information, activités diverses, et bien sûr, la 2ème édition de la Balade des enfants portés complétaient cette journée très ensoleillée !<br />
<br />
Photos ici:<br />
<center><br />
<a href="http://photos.mauroy.eu/Other/Journ%C3%A9e%20en%20Famille%202011/" target="_blank"><img src="http://photos.mauroy.eu/Other/Journ%C3%A9e%20en%20Famille%202011/slides/IMG_0338.jpg" border="0"></a><br />
</center>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-69180300634098151002011-04-05T16:42:00.002+02:002011-04-15T15:05:35.258+02:00Anne-Lise & FabienPetite vidéo prise lors de la séance photos précédent la cérémonie de mariage d'Anne-Lise et Fabien, le samedi 2 avril 2011...<br />
<br />
<center><br />
<iframe frameborder="0" height="360" src="http://player.vimeo.com/video/21974933?title=0&byline=0&portrait=0" width="640"></iframe><br />
<a href="http://vimeo.com/21974933">Anne-Lise & Fabien</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com/">Vimeo</a>.<br />
</center><br />
<i>Canon 5D MkII + Canon EF 200 1.8L</i><br />
<br />
<p>Les photos sont ici:<center><br />
<a href="http://photos.mauroy.eu/Weddings/Anne-Lise%20%26%20Fabien/index.html" target="_blank"><img src="http://photos.mauroy.eu/Weddings/Anne-Lise%20%26%20Fabien/data/thumbnails1/img_8551.jpg" border="0"></a><br />
</center></p>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-18717607209952135502010-12-22T11:44:00.002+01:002010-12-22T12:27:16.972+01:00Green DIY energyI found a great way to conserve and produce clean energy from home. Check this out:<br />
<br />
<br />
<center><br />
<a href="http://0f7e8dyzzkssfo9dtdkcr6bn6m.hop.clickbank.net/" target="_blank"><img border="0" src="http://1.bp.blogspot.com/_wlpMq-6QGLE/TRHf298KVdI/AAAAAAAAAO8/ZzT1OfzLxJY/s1600/GreenDIYEnergy-300x250-1.gif" /></a><br />
<br />
<a href="http://0f7e8dyzzkssfo9dtdkcr6bn6m.hop.clickbank.net/" target="_blank">Green DIY Energy</a><br />
<br />
</center>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-81686678773881023562010-11-15T19:26:00.000+01:002010-11-15T19:26:21.502+01:00DSM 3.0 Video Sharing EventAnother very cool video from Synology:<br />
<br />
<object><param name="movie" value="http://www.youtube.com/v/0QcpGnW74Qc?fs=1&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/0QcpGnW74Qc?fs=1&hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-29842802938368059572010-09-13T18:30:00.000+02:002010-09-13T19:12:27.764+02:00VTT Wisbecq 2010<p>Les photos de l'édition 2010 du VTT de Wisbecq sont ici:</p><br /><br /><p><center><a href="http://photos.mauroy.eu/Sports/VTT/VTT%20Wisbecq%202010/" target="_blank"><img src="http://photos.mauroy.eu/Sports/VTT/VTT%20Wisbecq%202010/slides/IMG_6342.jpg"></a></center></p><br /><br /><iframe src="http://player.vimeo.com/video/14933342?title=0&byline=0&portrait=0" width="640" height="360" frameborder="0"></iframe><p><a href="http://vimeo.com/14933342">VTT Wisbecq 2010 - 1</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com">Vimeo</a>.</p>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-53230358314893071932010-09-05T14:24:00.000+02:002010-09-06T09:15:50.765+02:00Barbecue des jardinets 2010L'édition 2010 du traditionnel barbecue des jardinets de Nivelet s'est tenue le 4 septembre.<br /><br />Les photos sont disponibles ici:<br /><br /><a href="http://photos.mauroy.eu/Other/Nivelet/BBQ%20Septembre%202010/" target="_blank"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 360px; DISPLAY: block; HEIGHT: 540px; CURSOR: hand" border="0" alt="" src="http://photos.mauroy.eu/Other/Nivelet/BBQ%20Septembre%202010/slides/IMG_5874.jpg" /></a><br /><br /><center><br /><iframe src="http://player.vimeo.com/video/14713403?title=0&byline=0&portrait=0" width="600" height="338" frameborder="0"></iframe><p><a href="http://vimeo.com/14713403">BBQ 3</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com">Vimeo</a>.</p></center>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-28013785816429515542010-08-01T11:03:00.000+02:002010-08-01T11:17:13.199+02:00Mariage de Fanny & HervéFanny et Hervé se sont mariés le 3 juillet 2010, à Assenois.<br /><br /><a target="_blank" href="http://2.bp.blogspot.com/_wlpMq-6QGLE/TFU57sB493I/AAAAAAAAAOs/wBnMgYCUM2E/s1600/2010-07-03+10.18.33+FH_.jpg"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 214px; DISPLAY: block; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5500366217497081714" border="0" alt="" src="http://2.bp.blogspot.com/_wlpMq-6QGLE/TFU57sB493I/AAAAAAAAAOs/wBnMgYCUM2E/s320/2010-07-03+10.18.33+FH_.jpg" /></a><br /><br />A la demande des époux, il n'y a pas de galerie online. Pour voir leurs photos, s'adresser à Fanny.<br /><br />Une vidéo prise durant la cérémonie:<br /><center><br /><object width="460" height="260"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13727513&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00adef&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13727513&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00adef&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="460" height="260"></embed></object><p><a href="http://vimeo.com/13727513">Mariage Fanny & Hervé - Alleluia</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com">Vimeo</a>.</p><br /></center>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-63050220632423304412010-05-20T17:19:00.000+02:002010-05-20T17:23:55.960+02:00Communion de Flavie<a href="http://photos.mauroy.eu/Kids/Flavie/Premi%C3%A8re%20communion%20-%209%20mai%202010/" target="_blank"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 600px;" src="http://photos.mauroy.eu/Kids/Flavie/Premi%C3%A8re%20communion%20-%209%20mai%202010/slides/VI7M9851.jpg" border="0" alt="" /></a>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-38919178419932997322010-04-22T16:46:00.000+02:002010-04-22T16:48:58.475+02:00Save dolphins!<object style="height: 344px; width: 425px"><param name="movie" value="http://www.youtube.com/v/k62kc07m1Dc"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/k62kc07m1Dc" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object><br /><br />Take part too: <a href="http://www.takepart.com/thecove" target="_blank">www.takepart.com/thecove</a>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-30813084131275694832010-04-16T19:07:00.000+02:002010-04-16T19:10:00.227+02:00Synology - Master Your DataA cool video about the Synology NAS. I have 2 of these great boxes :-)<br /><br /><center><br /><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/mxpL7kVBq9E&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/mxpL7kVBq9E&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object><br /></center><br /><br />See more here: <a href="http://www.synology.com/enu/index.php" target="_blank">http://www.synology.com/</a>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com1tag:blogger.com,1999:blog-90115203602795997.post-20662098768358484592010-03-10T13:43:00.000+01:002010-03-10T13:58:24.356+01:00Open Jazz Festival - 5 mars 2010L'<a href="http://openjazz.be/" target="_blank">Open Jazz Festival</a> 2010 s'est déroulé du 3 au 11 mars à Louvain-la-Neuve.<br /><br />J'ai eu la chance de rencontrer le Roméo Swing Quartet/Quintet ainsi que les Escargots du Dimanche, le vendredi 5 mars. Voici un résumé en photo, et en vidéo:<br /><br /><a href="http://photos.mauroy.eu/Concerts/Open%20Jazz%20Festival/" target="_blank"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 360px; DISPLAY: block; HEIGHT: 540px; CURSOR: hand" border="0" alt="" src="http://photos.mauroy.eu/Concerts/Open%20Jazz%20Festival/slides/IMG_2674.jpg" /></a><br /><br />Vidéos ici: <a href="http://vimeo.com/album/192133" target="_blank">Open Jazz Festival</a><br /><br />Aperçus:<br /><center><br /><object width="360" height="200"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10038700&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10038700&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="360" height="200"></embed></object><p><a href="http://vimeo.com/10038700">Open Jazz Festival: Les Escargots du Dimanche</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com">Vimeo</a>.</p><br /><br /><object width="361" height="203"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10035564&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00adef&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10035564&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00adef&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="361" height="203"></embed></object><p><a href="http://vimeo.com/10035564">Open Jazz Festival: Roméo Swing Quintet</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com">Vimeo</a>.</p><br /><br /></center>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-14344804675156157862010-03-02T12:58:00.000+01:002010-03-04T09:09:33.251+01:00Concert de Jean-François MALJEANConcert de Jean-François MALJEAN, ce samedi 27 février 2010, à <a href="http://www.gelbressee.be" target="_blank">Gelbressée</a>, avec, en première partie, Jasmine Daoud et Manon Vincent.<br /><br />Les photos sont ici:<br /><br /><a target="_blank" href="http://photos.mauroy.eu/Concerts/Gelbress%C3%A9e/Jean-Fran%C3%A7ois%20Maljean%20-%2027%20f%C3%A9vrier%202010/"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 360px; height: 540px;" src="http://photos.mauroy.eu/Concerts/Gelbress%C3%A9e/Jean-Fran%C3%A7ois%20Maljean%20-%2027%20f%C3%A9vrier%202010/slides/IMG_2465.jpg" border="0" alt="" /></a><br />Vidéos:<center><br /><object width="360" height="200"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9883143&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9883143&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="360" height="200"></embed></object><p><a href="http://vimeo.com/album/190414">Gelbressée: Jean-François Maljean</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com">Vimeo</a>.</p></center>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-23403068495721977182009-12-30T19:50:00.000+01:002009-12-31T17:49:19.882+01:00Soirée de NoëlLes photos de la soirée de Noël chez Lucie et Jean sont ici:<br /><br /><a href="http://photos.mauroy.eu/Marie-Eve/No%C3%ABl%202009/" target="_blank"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 360px; DISPLAY: block; HEIGHT: 540px; CURSOR: hand" border="0" alt="" src="http://photos.mauroy.eu/Marie-Eve/No%C3%ABl%202009/slides/IMG_0396_raw.jpg" /></a><br /><p>Vidéos:</p><br /><object width="320" height="180"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8472657&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8472657&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="320" height="180"></embed></object><p><a href="http://vimeo.com/8472657">Noël chez Lucie</a> from <a href="http://vimeo.com/mauroy">Frédéric Mauroy</a> on <a href="http://vimeo.com">Vimeo</a>.</p>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-21984195225661063812009-12-16T15:35:00.000+01:002009-12-16T15:39:33.958+01:00Commémoration de la bataille des Ardennes<p>Commémoration de la bataille des Ardennes, il y a 65 ans, à Bastogne, le dimanche 13 décembre 2009.<br><br>Photos ici:</p><div><a href="http://photos.mauroy.eu/Other/Bastogne%2065%20ans/" target="_blank"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 360px; DISPLAY: block; HEIGHT: 540px; CURSOR: hand" border="0" alt="" src="http://photos.mauroy.eu/Other/Bastogne%2065%20ans/slides/VI7M7756.jpg" /></a></div>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0tag:blogger.com,1999:blog-90115203602795997.post-67068847802866619872009-12-03T17:46:00.001+01:002009-12-03T17:49:30.878+01:00Just geeks: Adding Regular Expressions (Regex) to SQL Server 2005Excellent post on how to add Regular Expressions to SQL Server 2005:<br /><br /><a href="http://justgeeks.blogspot.com/2008/08/adding-regular-expressions-regex-to-sql.html">Just geeks: Adding Regular Expressions (Regex) to SQL Server 2005</a>Frédéric Mauroyhttp://www.blogger.com/profile/09165107314034093697noreply@blogger.com0