tag:blogger.com,1999:blog-224909992024-03-13T19:13:21.818+01:00Developer's CookbookSome good recipes for web development and related technologies.<br>
Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.comBlogger127125tag:blogger.com,1999:blog-22490999.post-27142826564965275192018-03-29T14:49:00.001+02:002018-03-29T14:49:01.808+02:00Wordpress php performance analysis<p>If you need to check the performance of your Wordpress installation (or any PHP application) you can use the awesome XDEBUG Extension for PHP.</p> <p>Steps to follow:</p> <ul> <li>On the web server open a command/shell and execute <br /><xmp>php -i > c:\phpinfo.txt</xmp> </li>
<li>Copy the output fron the <xmp>phpinfo.txt</xmp> </li>
<li>Connect to <a title="https://xdebug.org/wizard.php" href="https://xdebug.org/wizard.php">https://xdebug.org/wizard.php</a></li>
<li>Copy the phpinfo and analyze it using the wizard:
<br /><a href="https://lh3.googleusercontent.com/-G-_y9JIDVe0/Wrzgjg2xAmI/AAAAAAABTNI/YGI9Cluls0gpbUUr4NSZOHpLrXgFffbPwCHMYCw/s1600-h/image%255B17%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-fVUEksUTfEs/WrzglLQ593I/AAAAAAABTNM/WinD26SWfw4M4Co2RQJBoKsUTk9toynjwCHMYCw/image_thumb%255B9%255D?imgmax=800" width="451" height="435" /></a></li>
<li>Click “Analyze”, they will give you installation instructions:
<br /><a href="https://lh3.googleusercontent.com/-XKU4FX6yeDw/WrzgmXeSF5I/AAAAAAABTNQ/VNHMgGrCvrs3BIRx_SPKlJtB7_mG-8whgCHMYCw/s1600-h/image%255B18%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-cllzY01Fusk/WrzgoAEodEI/AAAAAAABTNU/roDCLUOqiRoPbHtvHscQcaCR7pgqIcFUgCHMYCw/image_thumb%255B10%255D?imgmax=800" width="454" height="405" /></a></li>
</ul>
<p>Here are the steps I followed on windows:</p>
<ul>
<li>On windows download the <a title="http://xdebug.org/files/php_xdebug-2.6.0-7.1-vc14-nts-x86_64.dll" href="http://xdebug.org/files/php_xdebug-2.6.0-7.1-vc14-nts-x86_64.dll">http://xdebug.org/files/php_xdebug-2.6.0-7.1-vc14-nts-x86_64.dll</a>  dll</li>
<li>Copy it in your PHP extension PATH , example : C:\Program Files\PHP\v7.1\ext</li>
<li>Edit the php.ini file, i.e : C:\Program Files\PHP\v7.1\php.ini</li>
<li>Add on the top these commands:
<br />xdebug.profiler_enable = 1
<br />xdebug.profiler_enable_trigger = 0
<br />xdebug.profiler_output_dir = "C:/Temp/"</li>
<li>Be sure the C:\Temp folder exists, the logs will be copied here</li>
<li>Add also this line :
<br />zend_extension = "c:\Program Files\PHP\v7.1\ext\php_xdebug-2.6.0-7.1-vc14-nts-x86_64.dll"</li>
</ul>
<p>After you followed the installation instructions here is the analysis part:</p>
<ul>
<li>Install this tool : <a title="https://sourceforge.net/projects/qcachegrindwin/" href="https://sourceforge.net/projects/qcachegrindwin/">https://sourceforge.net/projects/qcachegrindwin/</a>, it’s the log viewer</li>
<li>Reload your page, the c:\Temp folder should start to be populated with “cachegrind.out” files</li>
<li>Note that the page will be slower…. so don’t forget to comment all commands after your analysis finishes.</li>
<li>Open QCacheGrind</li>
<li>Open the log file</li>
<li>Activate the Callee Map on the right:
<br /><a href="https://lh3.googleusercontent.com/-nqIjU707bz0/Wrzgp9LpbOI/AAAAAAABTNY/T7fvuDBLGPAxN4hyOGs9x4Xt5R6BrcTXwCHMYCw/s1600-h/image%255B14%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-wyRHhA7-ka0/Wrzgr7dWDlI/AAAAAAABTNc/1LyKMVG7u5UZzkhj-efBQvPpMqRdk69awCHMYCw/image_thumb%255B6%255D?imgmax=800" width="576" height="330" /></a></li>
<li>It seems I have a problem related to the “sqli_real_connect”….</li>
<li>Investigate and fix the problem (in my case I used the db name localhost instead of 127.0.0.1  <a title="https://stackoverflow.com/questions/13439817/why-is-my-mysqli-connection-so-slow" href="https://stackoverflow.com/questions/13439817/why-is-my-mysqli-connection-so-slow">https://stackoverflow.com/questions/13439817/why-is-my-mysqli-connection-so-slow</a>)</li>
<li>Analyze again….
<br /><a href="https://lh3.googleusercontent.com/-ZFR2vlxsQZA/WrzgtsRZ0mI/AAAAAAABTNg/5dVfRsRuIDc1vsFl7fPUQahAV9tCWQozwCHMYCw/s1600-h/image%255B15%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-nf5b8XTrl9k/WrzgvJHqb2I/AAAAAAABTNk/6n1OtLGRRZECNbiODqcsrfMhYFQEZD2HQCHMYCw/image_thumb%255B7%255D?imgmax=800" width="582" height="344" /></a></li>
<li>Well, the sqli_real_connect problem seems fixed.</li>
</ul>
<p>Hope it helps! </p>
<ul></ul><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-17972455317358285862018-01-19T16:12:00.001+01:002018-03-29T14:52:24.948+02:00phpLDAPadmin's website backup version<p>If the website phpLDAPadmin is down , if you need the documentation here is a good copy on internet archive:</p> <p><a title="https://web.archive.org/web/20171216005709/http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page" href="https://web.archive.org/web/20171216005709/http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page">https://web.archive.org/web/20171216005709/http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page</a></p> <p><a href="https://lh3.googleusercontent.com/-Cfr1M8pqKtM/WmIKuvrRt_I/AAAAAAABSSE/_ac14sTUzGoZ1_If1nCCEWkXmPdhfAH6gCHMYCw/s1600-h/image%255B3%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-f8x5COLF6rU/WmIKwY53cdI/AAAAAAABSSI/w000-c8kftgzsfO9aoZgWuy-145VsNtzwCHMYCw/image_thumb%255B1%255D?imgmax=800" width="503" height="318" /></a></p><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-19934593971189507142018-01-02T20:00:00.000+01:002018-01-02T20:00:18.159+01:00Chrome dev tools : how to filter css styles by file name<p>Sometimes you need to analyze the css styles coming from a specific file, and the chrome developer tools shows all the style from all the linked css files.</p> <p>Here is an example from NYT website:</p> <p><a href="https://lh3.googleusercontent.com/-PPJ4zI1X3QY/WkufDvCZjwI/AAAAAAABSM0/p8u_G8tujFkN2_UKyP9gZXR-bfVaNocfwCHMYCw/s1600-h/image%255B5%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-oW7RZu3npm4/WkufFetBMKI/AAAAAAABSM4/Cl07mrFm-fYDrwJw0aREC2q2DXfe9xSSACHMYCw/image_thumb%255B3%255D?imgmax=800" width="657" height="420" /></a></p> <p>If you need to focus only on a specific CSS file type the name on the filter box in the right upper corner, i.e. “_story.scss” : </p> <p><a href="https://lh3.googleusercontent.com/-wrd8TY1kQhI/WkufGzas25I/AAAAAAABSM8/mVfs3coUE6QTKDWSz5thGNA27ZJzgQJWwCHMYCw/s1600-h/image%255B10%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-LLJjxWWGfVI/WkufIXV8GEI/AAAAAAABSNA/2ysHdw_Lr_8AAbDrpBLqArEnBgOzKhR6QCHMYCw/image_thumb%255B6%255D?imgmax=800" width="638" height="395" /></a></p> <p>Now you can browse other pages in the same website and you will see only the styles coming from the _story.scss file.</p> <p>It works also if you have multiple css files with the same name but with different query strings:</p> <p>style.css?ver=1.0.1 <br />style.css?ver=2.0.0 <br /> <br />Write in the filter box “ver=2.0.0” and you will see only the styles from the 2.0.0 version.</p> <p>You can also edit and save the css file using <a href="http://devcoma.blogspot.it/2012/07/change-css-and-save-on-local-file.html">this guide</a>.</p> <p>Hope this helps! </p><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-30341500813862651962017-09-15T15:53:00.001+02:002017-09-15T15:53:59.290+02:00Working with public/private certificates using Python<p>If you need to sign a message using the public/private key technology, Python is your best friend.</p> <p>Here is in few lines the creation of public/private keys, a sign of a message using a private key and the check using the public key. </p> <p>First of all install pycryptodomex library using pip.</p> <p>Next here is the code:</p> <pre><code>
from Cryptodome.PublicKey import RSA
from Cryptodome.Signature import PKCS1_v1_5
from Cryptodome.Hash import SHA256
privatekey = RSA.generate(1024)
privatesigner = PKCS1_v1_5.new(privatekey)
publicsigner = PKCS1_v1_5.new(privatekey.publickey())
message = b'Python rocks!'
private_message_sign = privatesigner.sign(SHA256.new(message))
self.assertTrue(publicsigner.verify(SHA256.new(message),private_message_sign))
</code>
</pre><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-17532991151049483042017-04-04T11:43:00.001+02:002017-04-04T11:43:36.713+02:00Google search parameters resources<p>Today I needed to find some information about how google uses url parameters, here are some useful info found on “cached” pages over the web. The original sources are dead or not available.</p> <p><font size="4">June 8, 2012 | Posted by </font><a title="Posts by Rankpanel" href="/web/20140625145138/http://www.rankpanel.com/blog/author/rankpanel/"><font size="4">Rankpanel</font></a><font size="4"> in </font><a title="View all posts in Search engines" href="/web/20140625145138/http://www.rankpanel.com/blog/category/search-engines/" rel="category tag"><font size="4">Search engines</font></a><font size="4"> </font></p> <div id="post-409" class="post-409 post type-post status-publish format-standard hentry category-search-engines post cat-12-id has_thumb"> <div class="featured-image">Knowing the parameters Google uses in its search is not only important for SEO geeks. It allow you to use shortcuts and play with the Google filters. The parameters also reveal more juicy things: Is it safe to share your Google search URLs or screenshots of your Google results? <a href="/web/20140625145138/http://blog.yjl.im/2012/03/not-so-good-urls.html">This post</a> argues that it is important to be aware of the complicated nature of the Google URL. As we will see later posting your own Google URL can reveal personal information about you that you might not feel too comfortable sharing. So read on to learn more about the Google search parameters used in 2012. <br /><span id="more-409"></span></div> <div class="post-content"> <p>Why do I say “in 2012″? Well, the Google URL changed over time and more parameters were added to keep pace with the increasing complexity of the search product, the Google interface and the integration of verticals. Before looking at the parameter table below, though, I encourage you to quickly perform the following 2 things:</p> <ol> <li>Go directly to <a href="/web/20140625145138/http://www.google.com/">Google</a> and search for your name. Look at the URL. </li> <li>Go directly to <a href="/web/20140625145138/http://duckduckgo.com/">DuckDuckGo</a> and perform the same search. Look at the URL. </li> </ol> <p>This little exercise serves well to demonstrate just how simple and how complicated URLs used by search engines can look like. These two cases are at the opposing ends: While DuckDuckGo has only one search parameter, your query, and is therefore quite readable, Google uses a cryptic construct that only IT professionals can try to decipher. What I find interesting is that on my Smartphone, though, the Google search URL is much simpler than on the desktop.</p> <p>This blog post is primarily aimed at Google’s web search. I will not look at their other verticals such as scholar or images. But because image search is so useful, I encourage you to look at the image section of the <a href="/web/20140625145138/http://jwebnet.net/advancedgooglesearch.html#imgRestrict">Unofficial Google Advanced Search guide</a>. Google also shares some of their well-known parameters in their <a href="/web/20140625145138/https://developers.google.com/search-appliance/documentation/50/xml_reference">search protocol reference</a>, so you might want to refer to it for languages, countries and other standard things.</p> <p>Now, without any more interruptions look at the search parameters Google reveals to us.</p> <h2>Normal Search – all you really need</h2> <p>DuckDuckGo shows us all we really need when searching, a “search?” initializer followed by the query. Not more and not less. When sharing Google searches online you might want to limit the URL to only this single one parameter.</p> <table width="100%" border="1"><tbody> <tr> <th>Parameter (with example)</th> <th>Description</th> </tr> <tr> <td>q=your+query</td> <td>Primary Google search parameter containing your query. Usually appears directly after the <em>search?</em> initiator. When you search directly via the Google website you don’t see the <em>search?</em> initiator anymore. But searches from e.g. Browser toolbars still have it.</td> </tr> </tbody></table> <h2>Advanced search operators</h2> <p>Google is quite versatile. It offers many ways to filter results. Therefore, knowing the advanced search operators can significantly enhance your productivity when working with Google. You will find some parameters more interesting than others. Try combining the different values to get the results you are really looking for.</p> <table width="100%" border="1"><tbody> <tr> <th>Parameter (with example)</th> <th>Description</th> </tr> <tr> <td>as_q=should+contain</td> <td>The results should contain all of the words entered, same as normal search</td> </tr> <tr> <td>as_epq=must+include</td> <td>It’s the exact phrase that you’re looking for. It can also be entered in brackets like <strong>“must include”</strong></td> </tr> <tr> <td>as_oq=any+of+these</td> <td>The results should contain any of these words, the search operator is <strong>OR</strong></td> </tr> <tr> <td>as_eq=none+of+these</td> <td>The results should contain none of these words, the search operator is <strong>-</strong></td> </tr> <tr> <td>as_dt=e</td> <td>What as_eq is for queries as_dt is for operators, as_dt=e excludes the following operator, as_dt=i includes it, e.g. as_dt=e&as_filetype=pdf returns results excluding pdfs, can also be entered using the <strong>-</strong> in front of the operator</td> </tr> <tr> <td>as_filetype=pdf</td> <td>Returns results of a certain filetype, e.g. pdf, can be entered into query <strong>filetype:</strong></td> </tr> <tr> <td>as_lq</td> <td>Returns a sample of links to any site, also usable via the <strong>link:</strong> command</td> </tr> <tr> <td>as_sitesearch</td> <td>Search a specified site, you can also use the operator <strong>site:</strong></td> </tr> <tr> <td>as_rq</td> <td>Shows a sample of related websites, also addressable using <strong>related:</strong></td> </tr> <tr> <td>as_occt=any</td> <td>Specify where keywords shall occur on the page  <ul> <li>any </li> <li>title </li> <li>body </li> <li>url </li> <li>links </li> </ul> </td> </tr> <tr> <td>as_nlo=1</td> <td>Numbers range starts with 1</td> </tr> <tr> <td>as_nhi=44</td> <td>Numbers range ends with 44 a range. It can be typed into the search bar using 2 full stops <strong>..</strong> between the first and last number</td> </tr> <tr> <td>as_rights=cc_attribute</td> <td>This attribute limits the search results to pages that have certain rights. It is quite useful for things like image or graphics search. The possible attributes are:  <ul> <li>cc_publicdomain </li> <li>cc_attribute </li> <li>cc_sharealike </li> <li>cc_noncommercial </li> <li>cc_nonderived </li> </ul> <p>You can combine all of these attributes in one query putting them in brackets and combining them via the <strong>|</strong> character.</p> </td> </tr> <tr> <td>num=100</td> <td>Sets the number of results per page. It can only be used if Google Instant results are turned off (see below complete=0). Instant limits results to 10 per page.</td> </tr> </tbody></table> <h2>Country and language</h2> <p>Google uses certain <a href="/web/20140625145138/https://developers.google.com/adwords/api/docs/appendix/countrycodes">country codes</a> and <a href="/web/20140625145138/https://developers.google.com/search-appliance/documentation/64/xml_reference#request_subcollections">language names</a> in its search. For more localized results you can even enter certain <a href="/web/20140625145138/https://developers.google.com/adwords/api/docs/appendix/cities_world">cities</a> or <a href="/web/20140625145138/https://developers.google.com/adwords/api/docs/appendix/provincecodes">provinces</a>.</p> <table width="100%" border="1"><tbody> <tr> <th>Parameter (with example)</th> <th>Description</th> </tr> <tr> <td>hl=en</td> <td>Language settings passed down by your browser, here English</td> </tr> <tr> <td>lr=lang_cs</td> <td>The language the results should be in, here in Czech</td> </tr> <tr> <td>cr=countryZA</td> <td>The region the results should come from, here South Africa</td> </tr> <tr> <td>gl=ca</td> <td>Can be used to find results as if the search was conducted in a specified location, here Canada. However, given the fact that Google uses many cues for determining your actual location the results can be unreliable. Try turning off localization as much as possible to increase accuracy. The following <a href="/web/20140625145138/http://www.johnmcelborough.com/remove-google-localisation">article</a> shows a way to remove localization from the Google results and this <a href="/web/20140625145138/http://www.lgr.ca/blog/2011/08/google-search-by-country.html">blog post</a> offers a concise guide.</td> </tr> <tr> <td>gr=US-NY</td> <td>Just as gl shows you how results look in a specified country, gr limits the results to a certain region, here New York</td> </tr> <tr> <td>gcs=Pittsburg</td> <td>Limits results to a certain city, you can also use latitude and longitude</td> </tr> <tr> <td>gpc=1020547</td> <td>Limits results to a certain zip code, here agin Pittsburg</td> </tr> <tr> <td>gm=619</td> <td>Limits results to a certain metropolitan region, here Springfield MO</td> </tr> <tr> <td>ie=utf-8</td> <td>input encoding</td> </tr> <tr> <td>oe=utf-8</td> <td>output encoding</td> </tr> </tbody></table> <h2>Google’s advanced search tools</h2> <table width="100%" border="1"><tbody> <tr> <th>Parameter (with example)</th> <th>Description</th> </tr> <tr> <td>tbs=rl%3A1%2Crls%3A0</td> <td>Reading level: only basic results</td> </tr> <tr> <td>tbs=rl%3A1%2Crls%3A1</td> <td>Reading level: only intermediate results</td> </tr> <tr> <td>tbs=rl%3A1%2Crls%3A2</td> <td>Reading level: only advanced results</td> </tr> <tr> <td>tbs=rl%3A1</td> <td>Reading level: annotate reading level</td> </tr> <tr> <td>tbs=dfn:1</td> <td>Dictionary: definition of a word</td> </tr> <tr> <td>tbs=img:1</td> <td>Sites with images</td> </tr> <tr> <td>tbs=sts:1</td> <td>More text</td> </tr> <tr> <td>tbs=clir:1</td> <td>Translated foreign pages</td> </tr> <tr> <td>tbs=li:1</td> <td><a href="/web/20140625145138/http://support.google.com/websearch/bin/answer.py?hl=en&answer=1734130">Verbatim</a> results</td> </tr> <tr> <td>tbs=vid:1</td> <td>Video results</td> </tr> <tr> <td>tbs=nws:1</td> <td>Google news results</td> </tr> <tr> <td>tbs=rltm:1</td> <td>Google realtime results</td> </tr> <tr> <td>tbs=qdr</td> <td>You can specify different time periods  <ul> <li>tbs=qdr:s – previous second </li> <li>tbs=qdr:n – previous minute </li> <li>tbs=qdr:h – previous hour </li> <li>tbs=qdr:d – previous day </li> <li>tbs=qdr:w – previous week </li> <li>tbs=qdr:m – previous month </li> <li>tbs=qdr:y – previous year </li> <li>specify filter results by time frame, by appending it with ,sbd:1, such as tbs=qdr:m,sbd:1 you get search results sorted by date </li> </ul> </td> </tr> <tr> <td>oi=video_result</td> <td>The “oi” parameter is used for universal search results. You can use it in Google analytics filter to understand when people come to your site via the universal search results. Different universal search categories have their own parameters, here video results. Other notable categories are:  <ul> <li>Revisions_inline – related searches </li> <li>image_result – image results </li> <li>spell – spelling suggestion </li> <li>Blogsearch_group – blog search results </li> </ul> </td> </tr> </tbody></table> <h2>Other factors</h2> <p>This section contains some of the most important Google parameters. You will learn how to turn off personalization and about the diverse filters that are applied by default.</p> <table width="100%" border="1"><tbody> <tr> <th>Parameter (with example)</th> <th>Description</th> </tr> <tr> <td>pws=0</td> <td>Parameter that allows you to <a href="/web/20140625145138/http://www.seroundtable.com/google-personalized-pws-13224.html">turn-off personalization</a></td> </tr> <tr> <td>cd=2</td> <td>Passes down the keyword rank clicked. In analytics suites this can come in handy if you’d like to track the keyword rank. A guide how this can be applied can be found <a href="/web/20140625145138/http://www.blindfiveyearold.com/track-keyword-rank-in-google-analytics">here</a></td> </tr> <tr> <td>pq=previous+query</td> <td>Shows the previous query. This parameter appears when switching queries during one Google session. It might be quite valuable to extract this parameter for analytics purposes to detect search chains. (thanks for the suggestion Reinier)</td> </tr> <tr> <td>oq=original+query</td> <td>Shows the original query. Try searching for one thing, say <a href="/web/20140625145138/http://www.google.com/search?q=sunflowers">sunflowers</a> and then searching on for sunflower seeds. You’ll notice in the URL that a parameter oq=sunflower+X appears. X might be “seeds” or just nil depending on whether or not you have clicked on the Google suggest query. The query parameter will show the full query “&q=sunflower+seeds”, though. (thanks for the suggestion Reinier) </td> </tr> <tr> <td>filter=0</td> <td>Include omitted results</td> </tr> <tr> <td>complete=0</td> <td>Turn auto-suggest and Google Instant on (=1) or off (=0)</td> </tr> <tr> <td>nfpr=1</td> <td>Turn off auto-correction of spelling</td> </tr> <tr> <td>ncr=1</td> <td>No country redirect: Allows you to set the Google country engine you would like to use despite your current geographic location. Though it works best if no Google cookie has been set yet.</td> </tr> <tr> <td>safe=on</td> <td>Turns the adult content filter on or off</td> </tr> <tr> <td>biw=1920</td> <td>Browser inner width, here 1920px</td> </tr> <tr> <td>bih=832</td> <td>Browser inner height, here 832px</td> </tr> <tr> <td>start=30</td> <td>Show results rankings from this number, so 30 is page four for 10 results per page</td> </tr> <tr> <td>sa=</td> <td>User search behavior parameter  <ul> <li>sa=N – User searched </li> <li>sa=X – User clicked on related searches in the SERP </li> </ul> </td> </tr> <tr> <td>ei=</td> <td>Passes on an alphanumeric parameter that decodes the originating SERP where user clicked on a related search. For instance when looking for <a href="/web/20140625145138/http://www.google.com/search?q=coconut+water&ncr=0&filter=0">coconut water and clicking on “Whole Foods” you will notice the ei=… parameter. This parameter will be equal for all related search links. However, if you click on “Amazon” and then on “Whole Foods” (all through the related results links) you will notice a different “ei” parameter value for the same SERP, because the originating SERP “Amazon coconut water” was different from just “coconut water”.</a></td> </tr> <tr> <td>btnG=”Search”</td> <td>Text that appears on the search button (customization option for including search on one’s own site), here “Search”</td> </tr> <tr> <td>newwindow=1</td> <td>Open the results in a new window</td> </tr> <tr> <td>navclient/client/sourceid=ie7</td> <td>Where the search originated from, e.g.:  <ul> <li>navclient – Google toolbar </li> <li>navclient-ff – Google search toolbar for Firefox </li> <li>firefox-a – Firefox search box </li> <li>chrome </li> </ul> </td> </tr> <tr> <td>rls=org.mozilla:en-US:official</td> <td>Source of query with version of the client and language set, other examples are can be found <a href="/web/20140625145138/http://www.webmasterworld.com/forum80/789.htm">here</a></td> </tr> <tr> <td>source=univ</td> <td>Google navigational parameter specifying where you came from, here universal search</td> </tr> <tr> <td>tbo=1</td> <td>Always show search tools in the left sidebar</td> </tr> <tr> <td>prmd=</td> <td>Parameter that determines which of Google’s vertical search engines are suggested in the left sidebar besides web, they can be combined, the most important ones are:  <ul> <li>prmd=a – only applications </li> <li>prmd=b – only books </li> <li>prmd=c – only places </li> <li>prmd=d – only discussions </li> <li>prmd=i – only images </li> <li>prmd=n – only news </li> <li>prmd=s – only shopping </li> <li>prmd=p – only patents </li> <li>prmd=u – none (only web) </li> <li>prmd=v – only video </li> </ul> </td> </tr> <tr> <td>stick=</td> <td>The stick parameter is one of the newest additions that we will likely see more and more. It encodes the knowledge graph box that is shown on the right next to many different queries. Try <a href="/web/20140625145138/https://www.google.com/search?q=Maranello&stick=H4sIAAAAAAAAAONgVuLQz9U3ME82yAIAC_7r3AwAAAA">playing around with it</a>. Have a look at <a href="/web/20140625145138/http://www.mkbergman.com/1009/deconstructing-the-google-knowledge-graph/">this post</a> that goes into more detail. (Thanks a lot for the suggestion Lev)</td> </tr> </tbody></table> <h2>Unclear Parameters</h2> <p>Google keeps adding new parameters to its URL. While most parameters are known, some aren’t. During my research I could not come up with the function of the following parameters. If you’re aware of what they do please post it into the comments section.</p> <table width="100%" border="1"><tbody> <tr> <th>Parameter</th> <th>Description</th> </tr> <tr> <td>ved=</td> <td>Passes on an alphanumeric parameter. Not clear what it is used for.</td> </tr> <tr> <td>fp=</td> <td>Passes on an alphanumeric parameter. Not clear what it is used for. However, results change when parameter is removed.</td> </tr> <tr> <td>usd=</td> <td>Passes on an alphanumeric parameter. Not clear what it is used for. Often contains part of the query string.</td> </tr> <tr> <td>channel=fflb</td> <td>?</td> </tr> <tr> <td>qscrl=1</td> <td>?</td> </tr> <tr> <td>hs=jXu</td> <td>?</td> </tr> </tbody></table> <p><a href="http://www.t75.org/2012/06/deconstructing-googles-url-search-parameters/" rel="bookmark"><font size="4">Deconstructing Google url search parameters</font></a></p> </div> Posted by <a title="Posts by Tim" href="http://www.t75.org/author/tim/" rel="author">Tim</a> on Jun 20, 2012 </div> <div class="post-381 post type-post status-publish format-standard has-post-thumbnail hentry category-analytics category-stats category-thoughts tag-google"> <p><em>[Quick note: this post </em>isn’t<em> about the Google search url that’s created when you use Google to search the web. If you’re interested in those “request parameters”, you can’t do better than Google’s own resource: <a href="https://developers.google.com/search-appliance/documentation/50/xml_reference">Search Protocol Reference</a>.]</em></p> <p><strong>As a UX designer, I use web stats a lot. Typically Google’s Analytics product is the go-to source with more site analytics than you can shake a stick at.</strong></p> <p>However I also have a fondness for StatCounter, especially after reading their <a onclick="_gaq.push(['_trackEvent', 'External Link', 'Text Link', 'Statcounter letter']);" href="http://gs.statcounter.com/press/open-letter-ms">Open Letter to Roger Capriotti of Microsoft</a>, rubbishing his <a onclick="_gaq.push(['_trackEvent', 'External Link', 'Text Link', 'Microsoft browser share link']);" href="http://windowsteamblog.com/ie/b/ie/archive/2012/03/18/understanding-browser-usage-share-data.aspx">understanding of browser usage share data</a>. I’ve been using StatCounter’s free service for years now and often recommend them to smaller companies because of the simplicity of their results and the ease with which novices can start to get some real insight on their sites.</p> <p>For my own blog stats for this site, my favourite StatCounter page is undoubtedly “Recent Pageload Activity”. I have a modest readership and from this page I can easily see exactly where people are coming from (previous website & geographical location), as well as where they go next, where they exit, what browser they use and their ISP.</p> <p>Increasingly, I’m seeing a Referring Link (the page the visitor was on before they hit your site) of the following form:</p> <p>www.google.com.ua/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CGMQFjAC&url= <br />http%3A%2F%2Fwww.t75.org%2F2011%2F08%2Fhandy-finder-shortcut%2F&ei=ELLhT5SeLcXu-gavpbmdAw&usg=AFQjCNGqhzD-SwHsPkbxvXmjiAr_iM5n8g&sig2=vgJOia59rlFfYmszSkddzw</p> <p>Clicking on this link takes me from StatCounter directly to my own website. That almost suggests that my site is self-referring visitors back to my site, or that people are searching for my exact url? Both situation are obviously very unlikely. For some time I assumed these visitors were coming from another Google property such as <a onclick="_gaq.push(['_trackEvent', 'External Link', 'Text Link', 'Google Reader']);" href="http://www.google.com/reader/">Reader</a>.</p> <p>What’s actually happening is that Google is hiding the referrer data through a redirect on the <abbr title="Search Engine Result Page">SERP</abbr>. The links you see in the result listing look like they go straight to the website you’re interested in, but actually, if you inspect the link you’ll find a url of the type seen above. This allows Google to hide the <strong>q</strong> value from the referring string – used by so many stats packages.</p> <p>Personally, I believe that as a user, that you <em>should</em> be able to hide your Google searches by using Google’s secure search (https). However, as <a onclick="_gaq.push(['_trackEvent', 'External Link', 'Text Link', 'Alex Wall link']);" href="http://www.business2community.com/seo/google-changes-referrer-data-again-co-mingles-search-and-referral-traffic-0153166">Alex Wall says</a>:</p> <blockquote> <p>Paid advertisers continued to receive that data, however, a blow to integrity for Google, who claimed the switch was the sake of privacy. Sure, it was for the sake of privacy unless there was a chance that they could sell that data for money. Okay. <br /><a onclick="_gaq.push(['_trackEvent', 'External Link', 'Text Link', 'Alex Wall link2']);" href="http://www.business2community.com/seo/google-changes-referrer-data-again-co-mingles-search-and-referral-traffic-0153166">Read more</a></p> </blockquote> <p>So what do all these url parameters actually mean? After some research I’ve tracked down the meaning of a few of these parameters and with your help, we might be able to track down the rest!</p> <p>So that url again, broken down to it’s constituent parameters:</p> <ol> <li>url? </li> <li>sa=t </li> <li>rct=j </li> <li>q= </li> <li>esrc=s </li> <li>source=web </li> <li>cd=3 </li> <li>ved=0CGMQFjAC </li> <li>url=http%3A%2F%2Fwww.t75.org%2F2011%2F08%2Fhandy-finder-shortcut%2F </li> <li>ei=ELLhT5SeLcXu-gavpbmdAw </li> <li>usg=AFQjCNGqhzD-SwHsPkbxvXmjiAr_iM5n8g </li> <li>sig2=vgJOia59rlFfYmszSkddzw </li> </ol> <h2> </h2> </div><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-65837955956158667652016-10-11T15:23:00.001+02:002016-10-11T15:23:39.538+02:00Please free source code from patents !<p><em>“[T]he Constitution protects the right to receive information and ideas. . . . This right to receive information and ideas, regardless of their social worth, is fundamental to our free society.” Stanley v. Georgia, 394 U.S. 557, 564 (1969) (citations omitted). Patents, which function as government-sanctioned monopolies,<b>invade core First Amendment rights when they are allowed to obstruct the essential channels of scientific, economic, and political discourse.</b></em></p> <p><em>Software is a form of language—in essence, a set of instructions.... It is inherently abstract because it is merely “an idea without physical embodiment,”... Given that an “idea” is not patentable... and a generic computer is “beside the point” in the eligibility analysis ... <b>all software implemented on a standard computer should be deemed categorically outside the bounds</b> of section 101.</em></p> <p><a title="https://www.techdirt.com/articles/20161005/15280135720/prominent-pro-patent-judge-issues-opinion-declaring-all-software-patents-bad.shtml" href="https://www.techdirt.com/articles/20161005/15280135720/prominent-pro-patent-judge-issues-opinion-declaring-all-software-patents-bad.shtml">https://www.techdirt.com/articles/20161005/15280135720/prominent-pro-patent-judge-issues-opinion-declaring-all-software-patents-bad.shtml</a></p> <p> </p> <p><a href="https://lh3.googleusercontent.com/-eFTUlhZBv4w/V_zn1F5g6eI/AAAAAAABJl8/GSXz_TPjNNA/s1600-h/image%25255B4%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://lh3.googleusercontent.com/-2Ab5hNUhN0c/V_zn2qr7xdI/AAAAAAABJmA/BwgXLeWI02g/image_thumb%25255B2%25255D.png?imgmax=800" width="337" height="551" /></a></p><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-61172309436228510572016-05-23T08:44:00.001+02:002016-05-23T08:55:15.250+02:00Howto: create a large file downloader with resume featureIf you need to create a downloader program for the download of a single large file with the resume feature, here is a solution : <br />WGET  + WINRAR <br />This is the strategy: use wget to download the file, use winrar to package the wget and dependencies files and to call wget after the extraction. <br /> <ol> <li>Download wget and the dependencies from <a href="http://gnuwin32.sourceforge.net/packages/wget.htm">here</a>, GNU Wget is a free utility for non-interactive download of files from the Web. It supports <small>HTTP</small>, <small>HTTPS</small>, and <small>FTP</small> protocols, as well as retrieval through <small>HTTP</small> proxies. <br />This is THE tool if you need to download big files. </li> <li>Copy the files inside a directory , i.e. : “Install” </li> <li>Install <a href="http://www.rarlab.com/download.htm">WinRar</a> </li> <li>Create a new WinRar Archive with these files and settings : </li> <li><a href="https://lh3.googleusercontent.com/-YNDNiTgzlEM/V0KpRdaJ-SI/AAAAAAABIXo/c7SfKeqJraU/s1600-h/image%25255B9%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-o944brMoKYk/V0KpSXuwcBI/AAAAAAABIXs/dziyl3g0LVI/image_thumb%25255B4%25255D.png?imgmax=800" width="449" height="180" /></a></li> <li>Click on the SFX icon in order to create a SelfExtracting archive, and click OK: <br /><a href="https://lh3.googleusercontent.com/-73_toz_0ipQ/V0KpTuRG4pI/AAAAAAABIXw/-is8hg_bWeI/s1600-h/image%25255B13%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-qhPq7Vvsye8/V0KpUtVBZdI/AAAAAAABIX0/AOrk7g3uCxE/image_thumb%25255B6%25255D.png?imgmax=800" width="455" height="179" /></a></li> <li>Change the Setup command, we need to instruct wget on the file we need to download:<a href="https://lh3.googleusercontent.com/-KzW5IAyiSGU/V0KmtmQfzoI/AAAAAAABIXM/Je8qcf9l8L0/s1600-h/image%25255B7%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-10MYNmlbOKU/V0Kmuyk7pKI/AAAAAAABIXQ/uO9UOBQ42PI/image_thumb%25255B3%25255D.png?imgmax=800" width="255" height="330" /></a> </li> <ol> <li>the –c parameter continues getting a partially-downloaded file </li> <li>the –O parameter (uppercase!) sets the path and the file name of the downloaded file. </li> </ol> <li>Run the program and the download will start : <br /><a href="https://lh3.googleusercontent.com/-WX293NznvrQ/V0Kmv3icyZI/AAAAAAABIXU/Qaa6KP9kelo/s1600-h/image%25255B10%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-cVLZd-KPgG8/V0KmxOQw6VI/AAAAAAABIXY/S_ypAwaYB1s/image_thumb%25255B4%25255D.png?imgmax=800" width="244" height="126" /></a> </li> <li>If you close and re-launch the program the download will resume gracefully </li> <li>Use WinRar and not 7Zip for the auto-extracting executable because 7zip doesn’t support windows variables like “%<em>USERPROFILE</em>%”. <br />This is important if you need to control where is downloaded the file. </li> <li>This solution works well if you need to download from the web really huge files : virtual machine images or big archives. </li> </ol> Hope it helps! <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-26968177980835146982016-05-12T09:12:00.001+02:002016-05-12T09:12:58.408+02:00Virtuawin : a free windows virtual desktop manager<p>If you need to organize your work on multiple desktops (Dev. desktop, Production Desktop etc..)  you can try <a href="http://virtuawin.sourceforge.net/">Virtuawin</a> a free virtual desktop manager.</p> <p>You can switch desktop using the keyboard (ex: CTRL + ALT + RIGHT ARROW), you can also move windows from one desktop to the other using keyboard.</p> <p>It supports <a href="http://virtuawin.sourceforge.net/?page_id=50">addon modules</a>, with one of them (<a href="http://virtuawin.sourceforge.net/downloads/modules/SwitchDesk2.0.zip">SwitchDesk</a>) you can also configure different backgrounds on different monitors.</p> <p>If you need to install an additional module you need to copy the executable to “\Program Files (x86)\VirtuaWin\modules”</p> <p>I really suggest it ! </p> <p>Here are some screenshot of the configuration : </p> <p><a href="https://lh3.googleusercontent.com/-cnCIRz2zoMU/VzQs5EsBiuI/AAAAAAABIVk/p5TIujBD_ck/s1600-h/image_thumb%25255B3%25255D.png"><img title="image_thumb" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image_thumb" src="https://lh3.googleusercontent.com/-p5CFiaED4lU/VzQs6COspfI/AAAAAAABIVo/NAhK-6RuD0M/image_thumb_thumb.png?imgmax=800" width="163" height="244" /></a><a href="https://lh3.googleusercontent.com/-XxMZRrechEc/VzQs7NbYvZI/AAAAAAABIVs/zWcQJ2j3-b8/s1600-h/image_thumb1%25255B3%25255D.png"><img title="image_thumb1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image_thumb1" src="https://lh3.googleusercontent.com/-AGYHqd5mAnQ/VzQs8BehTmI/AAAAAAABIVw/nsWdNsryQnc/image_thumb1_thumb.png?imgmax=800" width="163" height="244" /></a><a href="https://lh3.googleusercontent.com/-DS-YIQRsIhA/VzQs9LgE0JI/AAAAAAABIV0/Xn6S2RQkfEI/s1600-h/image_thumb2%25255B3%25255D.png"><img title="image_thumb2" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image_thumb2" src="https://lh3.googleusercontent.com/-cVK08yJOiNU/VzQs-YigSLI/AAAAAAABIV4/oketEirMZvc/image_thumb2_thumb.png?imgmax=800" width="163" height="244" /></a></p><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-66325733005164325202014-03-06T20:00:00.000+01:002014-03-06T20:00:00.693+01:00How to investigate IOS Safari crashes using Chrome<p>I’ve worked some days on a web app application, completely written using  jQuery, jQuery Mobile and Kendo UI Library.</p> <p>The application worked successfully on the Android devices but, on Iphone/Ipad crashed unexpectedly.</p> <p>I’ve tried to investigate the crash logs on the device, with no fortune.</p> <p>I’ve also connected the device to a mac and tried to debug the web application using the Web Inspector, following these steps <a title="http://moduscreate.com/enable-remote-web-inspector-in-ios-6/" href="http://moduscreate.com/enable-remote-web-inspector-in-ios-6/">http://moduscreate.com/enable-remote-web-inspector-in-ios-6/</a> , but , when Safari on IOS crashed, the Remote Web Inspector on my Mac was closed too, with no possibility to find what was the latest javascript instruction.</p> <p>I’ve discovered on the web a great project that enables Chrome debug on Safari for IOS, here is the link:</p> <p><a title="https://github.com/google/ios-webkit-debug-proxy" href="https://github.com/google/ios-webkit-debug-proxy">https://github.com/google/ios-webkit-debug-proxy</a></p> <p>You need to install : </p> <ul> <li>Xcode</li> <li>Brew <a title="http://mxcl.github.com/homebrew/" href="http://mxcl.github.com/homebrew/">http://mxcl.github.com/homebrew/</a></li> <li>Chrome for Mac</li> </ul> <p>After the proxy installation you need to execute it on your mac using :</p> <div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4">ios_webkit_debug_proxy</pre><br /><br /> <br /></div><br /><br /><p><a href="http://lh6.ggpht.com/-YGtqQgpWCIA/UxhOsZm8tuI/AAAAAAAAqLU/vH3Q55Z6GhE/s1600-h/Schermata%2525202014-03-05%252520alle%25252010.12.14%25255B6%25255D.png"><img title="Schermata 2014-03-05 alle 10.12.14" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Schermata 2014-03-05 alle 10.12.14" src="http://lh6.ggpht.com/-DcfowmBkUvQ/UxhOtDgdr4I/AAAAAAAAqLc/VVmBwUoCQ2Y/Schermata%2525202014-03-05%252520alle%25252010.12.14_thumb%25255B2%25255D.png?imgmax=800" width="414" height="267" /></a></p><br /><br /><p>Start the IOS simulator using XCode:</p><br /><br /><p><a href="http://lh3.ggpht.com/-FuDAwLiqUGU/UxhOtt2wVuI/AAAAAAAAqLk/XbNAH8q7UlQ/s1600-h/Schermata%2525202014-03-05%252520alle%25252010.22.45%25255B6%25255D.png"><img title="Schermata 2014-03-05 alle 10.22.45" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Schermata 2014-03-05 alle 10.22.45" src="http://lh4.ggpht.com/-_a5TyNO-fsg/UxhOuU5GjcI/AAAAAAAAqLs/ng9CXadTpEI/Schermata%2525202014-03-05%252520alle%25252010.22.45_thumb%25255B2%25255D.png?imgmax=800" width="482" height="297" /></a></p><br /><br /><p>Connect chrome on your Mac to the address…  <a href="http://localhost:9221">http://localhost:9221</a> </p><br /><br /><p><a href="http://lh4.ggpht.com/-5X4r6S-ei1c/UxhOu5tg0BI/AAAAAAAAqL0/8ILoNA_HlRc/s1600-h/Schermata%2525202014-03-05%252520alle%25252010.13.15%25255B3%25255D.png"><img title="Schermata 2014-03-05 alle 10.13.15" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Schermata 2014-03-05 alle 10.13.15" src="http://lh6.ggpht.com/-3UH_Ar9kBwM/UxhOviiDuPI/AAAAAAAAqL8/gMY1Z6GoqXc/Schermata%2525202014-03-05%252520alle%25252010.13.15_thumb%25255B1%25255D.png?imgmax=800" width="366" height="351" /></a></p><br /><br /><p>Choose the device:</p><br /><br /><p><a href="http://lh5.ggpht.com/-EM3xjhAhJU4/UxhOv4W1HgI/AAAAAAAAqME/Qh0Hpsyt_iQ/s1600-h/Schermata%2525202014-03-05%252520alle%25252010.13.33%25255B3%25255D.png"><img title="Schermata 2014-03-05 alle 10.13.33" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Schermata 2014-03-05 alle 10.13.33" src="http://lh5.ggpht.com/-RGcx4ZruR7I/UxhOwmIS-OI/AAAAAAAAqMM/GxQ2SSNb1NY/Schermata%2525202014-03-05%252520alle%25252010.13.33_thumb%25255B1%25255D.png?imgmax=800" width="459" height="381" /></a></p><br /><br /><p>Here we are: Chrome web tools debugging Safari!</p><br /><br /><p><a href="http://lh5.ggpht.com/-uj8BB5yWZmw/UxhOxdn_xII/AAAAAAAAqMU/IxhPXwn0xSQ/s1600-h/Schermata%2525202014-03-05%252520alle%25252010.15.17%25255B3%25255D.png"><img title="Schermata 2014-03-05 alle 10.15.17" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Schermata 2014-03-05 alle 10.15.17" src="http://lh4.ggpht.com/-Up4rOSp43b0/UxhOx2VAt_I/AAAAAAAAqMY/dJTHF7al8Y8/Schermata%2525202014-03-05%252520alle%25252010.15.17_thumb%25255B1%25255D.png?imgmax=800" width="382" height="276" /></a></p><br /><br /><p>Network Panel:</p><br /><br /><p><a href="http://lh5.ggpht.com/-mQlLxraQGFA/UxhOyqFenDI/AAAAAAAAqMk/Y3wDNTKe6QI/s1600-h/Schermata%2525202014-03-05%252520alle%25252010.15.49%25255B3%25255D.png"><img title="Schermata 2014-03-05 alle 10.15.49" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Schermata 2014-03-05 alle 10.15.49" src="http://lh4.ggpht.com/-kHKL07S1BjM/UxhOzDenJMI/AAAAAAAAqMo/374AIvJFqNA/Schermata%2525202014-03-05%252520alle%25252010.15.49_thumb%25255B1%25255D.png?imgmax=800" width="390" height="282" /></a></p><br /><br /><p>Console window:</p><br /><br /><p><a href="http://lh5.ggpht.com/-PK9Iadx6J8o/UxhOzoQmQ_I/AAAAAAAAqM0/HrtcyMkp27w/s1600-h/Schermata%2525202014-03-05%252520alle%25252010.20.57%25255B3%25255D.png"><img title="Schermata 2014-03-05 alle 10.20.57" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Schermata 2014-03-05 alle 10.20.57" src="http://lh5.ggpht.com/-rLiSQaXz1t8/UxhO0JTwXJI/AAAAAAAAqM8/E3iXeowGjro/Schermata%2525202014-03-05%252520alle%25252010.20.57_thumb%25255B1%25255D.png?imgmax=800" width="471" height="280" /></a></p><br /><br /><p>If Safari crashes… you will be able to see the console message in the web tools window.. this should save a lot of time when you try to find the crash point.</p><br /><br /><p>Some tips: </p><br /><br /><ul><br /> <li>don’t use web apps inside iframes : Safari on IOS in really unstable</li><br /><br /> <li>if you need to use jQuery ready event…. wrap the code inside a function and add a timer and call it after 100-200 ms</li><br /><br /> <li>sometimes working on css style overflox-x overflow-y seems to crash Safari</li><br /><br /> <li>read the <a href="https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW1">Apple guidelines</a> for web apps: </li><br /></ul><br /><br /><p>Hope it helps! </p><br /><br /><p>Matteo</p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-73087706566633097612014-02-14T17:38:00.001+01:002014-02-14T17:41:04.493+01:00DNN 7 / EVOQ : update containers path using SQL queryHere is a little tip if you have configured a lot of modules with different containers and you need to change the name of the containers.<br /><br />
Three step operation:<br />
<ol>
<li>Find the containers you need to update: <div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">select</span> * <span style="color: blue;">from</span> TabModules <span style="color: blue;">where</span> ContainerSrc <span style="color: blue;">like</span> <span style="color: #006080;">'%YourSkinName%'</span> <span style="color: blue;">order</span> <span style="color: blue;">by</span> ContainerSrc </pre>
<br /></div>
</li>
<li><div>
Update the container’s names:<br />
<br />
Old container: EmptyTestRed.ascx<br />
New container:EmptyTestYellow.ascx<br />
Skin Path: [G]Containers/YourSkinName/<br />
Query :<br />
<div id="codeSnippetWrapper">
<br />
<pre id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">update</span> TabModules <span style="color: blue;">set</span> ContainerSrc = <span style="color: #006080;">'[G]Containers/YourSkinName/EmptyTestYellow.ascx'</span> <span style="color: blue;">where</span> ContainerSrc = <span style="color: #006080;">'[G]Containers/YourSkinName/EmptyTestRed.ascx'</span></pre>
<br /></div>
</div>
</li>
<li><div>
Navigate to Host > Host Settings > Advanced Settings > Performance Settings and click on the “Clear cache” button.<br />
<div>
<br /></div>
</div>
</li>
</ol>
<div>
Another option is to disable the DNN Cache, don’t try it , the CMS will become very unresponsive.<br /><br />That’s all! <br />
<br /></div>
<div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-151994033306144862013-09-26T12:45:00.000+02:002013-09-26T12:45:00.111+02:00Browserstack : real web-based testing on VM<p><a href="http://lh4.ggpht.com/-PiZYI-RRzmE/UkPlLNHovSI/AAAAAAAABxo/dAxcLpnfMW8/s1600-h/image%25255B12%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-DlAVIbqaaR8/UkPlLg8jMgI/AAAAAAAABxw/S8EPtety5hA/image_thumb%25255B4%25255D.png?imgmax=800" width="205" height="60" /></a></p> <p>Today I’ve discovered a great testing service : browserstack. <br />You can test using a REAL OS your web pages, and see it using : Windows XP, 7, 8, OSX Snow Leopard, LION … and also IOS/ANDROID using the emulators.</p> <p><a href="http://lh6.ggpht.com/-fhqi0s7qIOc/UkPlL-iT_VI/AAAAAAAABx4/bPqeR_eJ1OQ/s1600-h/image%25255B2%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-wF1wKISpj_A/UkPlMc6piZI/AAAAAAAAByA/tXXWyWGlhlk/image_thumb.png?imgmax=800" width="244" height="153" /></a></p> <p>Available browsers on Windows 7:</p> <p><a href="http://lh4.ggpht.com/-zsiAbrB0Q80/UkPlMxZthfI/AAAAAAAAByI/7zbA7FJzHOY/s1600-h/image%25255B6%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-M66Wv19nQ1s/UkPlNQ3xJ6I/AAAAAAAAByQ/tr8oFdn_ntE/image_thumb%25255B2%25255D.png?imgmax=800" width="352" height="182" /></a></p> <p>You can test a public url over the internet and …. an internal URL. <br /><a href="http://lh4.ggpht.com/-1q6z4FVfdZk/UkPlNx9NGhI/AAAAAAAAByY/WpkUcfLx3eo/s1600-h/image%25255B16%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-iGWMyrxv4_o/UkPlOe6aC2I/AAAAAAAAByg/FaB4wpcO05k/image_thumb%25255B6%25255D.png?imgmax=800" width="365" height="162" /></a> <br /> <br /></p> <h3>Wait! Internal URL? </h3> <br /> <p> <br />Yes you can also test your local web application using a little java proxy program: </p> <p><a href="http://lh3.ggpht.com/-r0UyyC_r_gE/UkPlO_BshlI/AAAAAAAAByo/Kw3XjYk5i6M/s1600-h/image%25255B20%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-D_WpKVR4zzA/UkPlPU1ww-I/AAAAAAAAByw/c2pPhBquI7c/image_thumb%25255B8%25255D.png?imgmax=800" width="316" height="311" /></a></p> <p>And after the connection:</p> <p><a href="http://lh5.ggpht.com/-FQyiLW8ybAw/UkPlP11-kTI/AAAAAAAABy4/HpjaOmxAsUw/s1600-h/image%25255B24%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-uIqzk-qAlP4/UkPlQJ_sqAI/AAAAAAAABy8/8kUv9f9mOu0/image_thumb%25255B10%25255D.png?imgmax=800" width="315" height="316" /></a></p> <p>After the connection: <br /><a href="http://lh5.ggpht.com/-GpgeVfeQrlU/UkPlQgCD1kI/AAAAAAAABzI/NgpbNLS5OrQ/s1600-h/image%25255B27%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-EOfoxzuOkmU/UkPlRFZq5pI/AAAAAAAABzQ/V-XDYWsafgk/image_thumb%25255B11%25255D.png?imgmax=800" width="244" height="213" /></a></p> <p>And here is the test VM (the screenshot refers to a local web page on different port):</p> <p><a href="http://lh5.ggpht.com/-xxKf1b41S1A/UkPlRiXv5RI/AAAAAAAABzY/muIDNpVz4Gs/s1600-h/image%25255B31%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/--DT86KeDyvw/UkPlSMGEGMI/AAAAAAAABzc/Ps8DGsJxp7Q/image_thumb%25255B13%25255D.png?imgmax=800" width="369" height="287" /></a></p> <p>The only word to describe this service is : <strong>MAGIC!!!!!</strong></p> <p><strong>Note: </strong>this is a real OS (with limited features for security reasons), here is the demonstration:</p> <p>XP: <br /><a href="http://lh3.ggpht.com/-C8U70I6YwY4/UkPlSnh9M0I/AAAAAAAABzk/rUuhkCHgowc/s1600-h/image%25255B35%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-cgvG3MjszkM/UkPlTQHSBaI/AAAAAAAABzs/oErEfnJgHZI/image_thumb%25255B15%25255D.png?imgmax=800" width="348" height="261" /></a> <br /></p> <p>OSX: <br /><a href="http://lh5.ggpht.com/-tTRnBNgdL7E/UkPlT_YicCI/AAAAAAAABz4/jxgitbQZq6U/s1600-h/image%25255B39%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-83bxU0grenM/UkPlUZCaz9I/AAAAAAAABz8/nx9Q5616OpU/image_thumb%25255B17%25255D.png?imgmax=800" width="349" height="281" /></a></p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-59411592701010806232013-07-10T13:00:00.000+02:002013-07-10T14:19:46.602+02:00TIP : Visual studio Remote debugging on different domainsHello, you need to debug a remote server, from your workstation, you configure all the things following Microsoft’s specs.. but , you realize that is a hell to configure remote debugging on two machine with different domains.<br />
Here is a trick :<br />
<ol>
<li>Create a new LOCAL user on the target server, with administrative privileges.<br /></li>
<li>Enable this user to remote connection<br /></li>
<li>Create a new LOCAL user on your workstation, <strong>with the same username and same password </strong>and<strong> </strong>with administrative privileges..<br /></li>
<li>Connect to the target server using remote desktop with the new user (this will create the user profile on the server)<br /></li>
<li>Launch the remote debugger on the target server <br /><a href="http://lh3.ggpht.com/-geRi1_XWUuU/Ud01efWU3YI/AAAAAAAABjI/XhN3FPpxdW8/s1600-h/image%25255B3%25255D.png"><img alt="image" border="0" height="81" src="http://lh5.ggpht.com/-naSaGAlBtFk/Ud01e_xI9TI/AAAAAAAABjQ/n0ZYTe3HWjI/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="563" /></a><br /></li>
<li>Go to options and copy the url of the remote debugger: <br /><a href="http://lh6.ggpht.com/-RGtPx6uU04I/Ud01fXMnRJI/AAAAAAAABjY/qKFvtMJeN4U/s1600-h/image%25255B7%25255D.png"><img alt="image" border="0" height="252" src="http://lh4.ggpht.com/-lmQ6W-JgrbQ/Ud01fj_Il1I/AAAAAAAABjc/PwMswqaEkaU/image_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="340" /></a><br /></li>
<li>On your workstation open in visual studio the debug window<br /></li>
<li>Type in the address edit box the value <a href="mailto:NEWUSERNAME@TARGETSERVERNAME">NEWUSERNAME@TARGETSERVERNAME</a> (you just copied it)<br /></li>
<li>Voilà! The remote debugger should connect successfully to the target server.<br /></li>
<li>If you have any problem try disabling the firewall on the two machines.</li>
</ol>
You can skip point 4 , you can execute the remote debugger using the “runas” command. If you connect using remote desktop you will have the profile of the user created on the target server, and I think that this helps.<br />
Let me know if this helps you.<br />
Happy remote debugging! <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-63783963764652191242013-04-15T18:32:00.000+02:002013-04-15T18:32:00.375+02:00Best Spam EVER!!<p>Today I’ve checked up my email and… I saw this message:</p> <blockquote> <p><em>We must transfer from your account at the bank Intesa Sanpaolo  the amount of EUR 1500.</em></p> </blockquote> <ol> <li>They tell me that they need to “transfer” <strong>FROM</strong> my bank account?  Are you kidding me?  Usually the SPAM message tells that they need to “transfer TO my account” not FROM <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://lh6.ggpht.com/-m48I-4JGtik/UWutKPNqVoI/AAAAAAAABUY/RoOhxRe60Gs/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /> <br /></li> <li>The message is in chinese(?) language. I think that the 99% of italian people has problems understanding it! </li> </ol> <p>Is there some chinese guy/girl who can help me to understand this message ?</p> <p>Here is the body of the email in chinese(?) language:</p> <p>䐼噉氠湡㵧湥甭汣獡㵳畏汴潯䵫獥慳敧效摡牥愠楬湧∽敬瑦•䥄㵒䰢剔•瑳汹㵥戧牯敤㩲潮敮戻牯敤潴㩰潳楬䈣䌵䐴⁆⸱瀰㭴慰摤湩㩧⸳瀰⁴椰⸳瀰⁴椰㭮昻湯楳敺ㄺ昻湯慦業祬∺≔㸧㰠㹂㱆䈯‾⁛䈼㹒㰠㹂㱓䈯‾㱳剂‾䈼吾⼼㹂洠䈼㹒†䈼匾⼼㹂⨠䈼㹒†⼼䥄㹖䐼噉㰾剂㰾䐯噉 <br />䠼䵔㹌䠼䅅㹄䴼呅⁁潣瑮湥㵴琢硥⽴瑨汭※档牡敳㵴湵捩摯≥栠瑴⵰煥極㵶潃瑮湥祔数㰾䠯䅅㹄䈼䑏㹙䈼䑏㹙敇瑮洮汃敩瑮ⱥ㰠牢ാ上汥爠湩牧穡慩䱲数癡牥楣挠湯慴瑴瑡慬猠瑥楴慭慮猠潣獲ⱡ戼㹲潶汧慩潭挠浯湵捩牡档瑳慩潭瀠牥瀠条牡慬映瑡畴慲搠㔱〰䔠剕㰮牢‾戼㹲瑓牯潮搠汥搠湥牡癡敶牲❡攠瑮潲ㄠ朠潩湲瑡慬潶慲楴慶㰮牢‾†††愼栠敲㵦栢瑴㩰⼯ㄲ⸶㌱⸹㌲⸵ㄵ椯扮穩栮浴≬㰾㹢楓瀠敲慧搠潶敬敶楲楦慣敲椠爠煥極楳楴搠汥慬映瑡畴慲搠慰慧敲㰮戯㰾愯㰾牢ാ㰊牢ാ匊污瑵Ⱪ戼㹲†††ഠ䴊牡潩䌠牡潤楮戼㹲湉整慳匠湡慰汯戼㹲晕楦楣獡楳瑳湥慺戼㹲⼼佂奄㰾䠯䵔㹌</p> <p>And the google translation <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://lh6.ggpht.com/-m48I-4JGtik/UWutKPNqVoI/AAAAAAAABUY/RoOhxRe60Gs/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /> :</p> <p> Period 㵧, 䐼 taste of Shen Tu say nothing the Jiu Xi 㵳 the fear Bian the of Au 䵫 the window Qianjixiaogai Fangyunjieyong the ∽ King Wu • 䥄 㵒 䰢 tick • luster of gems tumultuous 㵥 berm revolves around using 㩲 tide Xiatiguke retention 㩰 Tu tally 䈣 䌵 䐴 ⁆ ⸱ Mi 㭴 comfort Cheng Breast - feeding 㩧 ⸳ Mi ⁴ coconut ⸳ Mi ⁴ coconut 㭮 Ang soup Mei drive ㄺ Ang soup Jiu Zhi ∺ ≔ 㸧 㰠 㹂 㱆 䈯 ~ ⁛ 䈼 㹒 㰠 㹂 㱓 䈯~ 㱳 agent to 䈼 I centering 㹂 Mou 䈼 㹒 † 䈼 plaque centering 㹂 ⨠ 䈼 㹒 † centering 䥄 㹖 䐼 the taste 㰾 agent 㰾 䐯 taste <br />䠼 䵔 㹌 䠼 䅅 㹄 䴼 bites ⁁ Min the Litu 㵴 Zhuo of the Bang The Client Jin Rui ※ file Vitex methanol 㵴 You transition Zhi ≥ Renjue ⵰ the hwan extremely 㵶 address of Li Tu worship ancestors number 㰾 䠯 䅅 㹄 䈼 䑏 㹙 䈼the 䑏 㹙 Celi Tao Bin Xiao Li ⱥ 㰠 the prison ാ Shangzhijutong animal husbandry, gather in harvest the Lian 䱲 crazy Fangmeinaotang deter Jueshi Jinceon Wenshiyinlv Ceon Min was ⱡ Mao 㹲 Hei reached the confluence of Qian Lian Tan Naowuyoulie, Mu file luster of gems Lian Tan Yingfangyingtiao-Mu Jin Ying Shichoumanshuo 㔱 〰 䔠 the Fei 㰮 prison ~ Mao 㹲 Lian Guchaoshuoji daub Tu Mu crazy Zhen animal ❡ Mili Yingyi, pigwash ㄠ, torrential Shi Jinhei Mandi Qing 㰮 the prison ~ † † † Shenren knock knock on 㵦 Bo Jue 㩰 personnel shall ㄲ ⸶ ㌱ ⸹ ㌲ ⸵ ㄵ Duo play steady Er bath ≬ 㰾 㹢 Feng Ying Hui daub Hei King Zhen Wei lasts customary knock Qian Ju Hwan extremely Mei Shi Shuo Ji Jin Ying Shi domains Man stabbed comfort Hui knock 㰮 play 㰾 spreadsheet 㰾 prison ാ 㰊 prison ാ receive with both hands sewage Zhao Ⱪ Mao 㹲 † † † ഠ 䴊 Mu Yi 䌠 Mu , comforted Hong , Zhengqianjiangyu, the Run of the mulberry Mao 㹲 Tian Mao 㹲 halo last frieze Quemeicuotu Lvmao 㹲 centering Zheng suddenly 㰾 䠯 䵔 㹌</p> <p>Also the spammers make mistakes ….. <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://lh6.ggpht.com/-m48I-4JGtik/UWutKPNqVoI/AAAAAAAABUY/RoOhxRe60Gs/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /></p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-36179398282922848122013-02-15T09:02:00.001+01:002013-02-15T09:12:52.641+01:00Hot to change the DotNetNuke skin “on the fly”<p>Here is how to change dynamically the DNN skin based on the user credentials, in my case I needed to show the standard DNN skin for the “host” user. <br />The code has been injected in the DNN default.vb file, but you can use the code inside a custom module.</p> <div id="codeSnippetWrapper"> <p>VB.NET:</p> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"><span style="color: #0000ff">If</span> <span style="color: #0000ff">Not</span> DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo.Username <span style="color: #0000ff">Is</span> <span style="color: #0000ff">Nothing</span> <span style="color: #0000ff">Then</span><br /> <span style="color: #0000ff">If</span> DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo.Username.ToString() = <span style="color: #006080">"host"</span> <span style="color: #0000ff">Then</span><br /> TabController.CurrentPage.ContainerPath = <span style="color: #006080">"/Portals/_default/Containers/imagicle1/"</span><br /> TabController.CurrentPage.ContainerSrc = <span style="color: #006080">"/Portals/_default/Containers/imagicle1/Article.ascx"</span><br /> TabController.CurrentPage.SkinDoctype = <span style="color: #006080">"<!DOCTYPE html PUBLIC "</span><span style="color: #006080">"-//W3C//DTD XHTML 1.0 Transitional//EN"</span><span style="color: #006080">" "</span><span style="color: #006080">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #006080">">"</span><br /> TabController.CurrentPage.SkinPath = <span style="color: #006080">"/Portals/_default/Skins/MinimalExtropy/"</span><br /> TabController.CurrentPage.SkinSrc = <span style="color: #006080">"/Portals/_default/Skins/MinimalExtropy/index 1280.ascx"</span><br /> <span style="color: #0000ff">End</span> <span style="color: #0000ff">If</span><br /><span style="color: #0000ff">End</span> If</pre><br /></div><style type="text/css"><br />.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }</style><br /><div><p>C#</p><br /><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: 'Courier New', courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"><span style="color: #0000ff">if</span> ((DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo.Username != null)) {<br /> <span style="color: #0000ff">if</span> (DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo.Username.ToString() == <span style="color: #006080">"host"</span>) {<br /> TabController.CurrentPage.ContainerPath = <span style="color: #006080">"/Portals/_default/Containers/imagicle1/"</span>;<br /> TabController.CurrentPage.ContainerSrc = <span style="color: #006080">"/Portals/_default/Containers/imagicle1/Article.ascx"</span>;<br /> TabController.CurrentPage.SkinDoctype = <span style="color: #006080">"<!DOCTYPE html PUBLIC \"</span>-//W3C//DTD XHTML 1.0 Transitional//EN\<span style="color: #006080">" \"</span>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\<span style="color: #006080">">"</span>;<br /> TabController.CurrentPage.SkinPath = <span style="color: #006080">"/Portals/_default/Skins/MinimalExtropy/"</span>;<br /> TabController.CurrentPage.SkinSrc = <span style="color: #006080">"/Portals/_default/Skins/MinimalExtropy/index 1280.ascx"</span>;<br /> }<br />}</pre><br /></div><br /><style type="text/css"><br /><br /><br /><br />.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }</style> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com2tag:blogger.com,1999:blog-22490999.post-5279989245287165322013-02-15T08:47:00.001+01:002013-02-15T08:47:40.461+01:00Convert from VB.NET to C# and C# to VB<blockquote> <p>Code Converter is a free and simple VB to C# and C# to VB code converter. While there are several other good code converters available, none are perfect. Some are buried in busy websites. Some are awkward to use. Some just don't convert accurately! Code Converter, while not yet perfect, aims to address these issues and provide the best free .NET converter available on the web.</p> </blockquote> <p><a href="http://lh5.ggpht.com/-ZXpNMWo1V8Y/UR3oGB-zIWI/AAAAAAAABKs/Kwxz8KnQngs/s1600-h/image%25255B7%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-Y3xFXsQ-qZQ/UR3oG1EN7kI/AAAAAAAABK0/K85H59gxc-M/image_thumb%25255B3%25255D.png?imgmax=800" width="513" height="439" /></a></p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-80878408652590519572013-02-01T18:02:00.000+01:002013-02-01T18:02:00.236+01:00Howto fix _doPostBack is undefined error on DNN 5<p>If you are using IE10 on windows 8 you may receive a strange error on IE 10:</p> <p><a href="http://lh4.ggpht.com/-sLs3Y-TmMc0/UQvnPhNS0JI/AAAAAAAABJ0/slCERWNv1Yg/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-2feiWBie8UQ/UQvnQAQvGNI/AAAAAAAABJ8/wAQbfgO6XdI/image_thumb%25255B1%25255D.png?imgmax=800" width="433" height="258" /></a></p> <p>The problem seems resolved if you force IE10 to IE9 Mode using the The Browser Mode menu  in the Developer Tools Interface.</p> <p>Follow the steps in this article written by Scott Hanselman </p> <p><a title="http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx" href="http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx">http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx</a></p> <p>And…… </p> <ol> <li>Open a command prompt and run \Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regbrowsers.exe –i </li> <li>Do the same on version 2 of the framework </li> <li>Restart IIS (e.g., with iisreset) </li> <li><strong>Delete the .browser files in your DNN App_Browsers folder.ù</strong> </li> </ol> <p>Other useful readings:</p> <p><a title="http://fkauffmann.blogspot.it/2012/01/aspnet-fails-to-detect-ie10-causing.html" href="http://fkauffmann.blogspot.it/2012/01/aspnet-fails-to-detect-ie10-causing.html">http://fkauffmann.blogspot.it/2012/01/aspnet-fails-to-detect-ie10-causing.html</a> <br /><a title="http://geekswithblogs.net/BenBarreth/archive/2012/11/30/asp.net-fails-to-detect-ie10-without-.net-hotfix.aspx" href="http://geekswithblogs.net/BenBarreth/archive/2012/11/30/asp.net-fails-to-detect-ie10-without-.net-hotfix.aspx">http://geekswithblogs.net/BenBarreth/archive/2012/11/30/asp.net-fails-to-detect-ie10-without-.net-hotfix.aspx</a> <br /></p> <p> </p> <p>Hope it helps!</p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-27121596215967107152013-01-23T17:57:00.001+01:002013-01-24T10:08:27.882+01:00How to enable Workspace Experiment on Chrome Canary<p>Today <a href="https://plus.google.com/115133653231679625609/posts" target="_blank">Addy Osmani</a> has announced a new great feature in google Chrome Canary : the Developer Tools Workspaces.</p> <blockquote> <p>Workspaces allow you to select custom directories in your file system which are always available for you to edit within the Sources panel.</p> </blockquote> <p>Here are the instructions on how to enable it:</p> <ol> <li>Download Chrome Canary <a title="https://www.google.com/intl/it/chrome/browser/canary.html" href="https://www.google.com/intl/it/chrome/browser/canary.html">https://www.google.com/intl/it/chrome/browser/canary.html</a> </li> <li>Type <a href="chrome://flags/">chrome://flags/</a> in the url : <br /><a href="http://lh5.ggpht.com/-xxr94mKMMHs/UQAWbXkHuZI/AAAAAAAABD8/KUxo-8RV9mc/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-C1i3dBuNku8/UQAWcF47bdI/AAAAAAAABEA/nDKRmumL8WA/image_thumb%25255B1%25255D.png?imgmax=800" width="406" height="76" /></a> </li> <li>Enable the “<strong>Developer Tools Experiments</strong>” <br /><a href="http://lh4.ggpht.com/-NXy7NFxt5SI/UQAWcwg8-vI/AAAAAAAABEM/sCSQok0ncNQ/s1600-h/image%25255B7%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-KHdE1CRX3TM/UQAWd_NNyyI/AAAAAAAABEQ/hi9aim1tCZA/image_thumb%25255B3%25255D.png?imgmax=800" width="539" height="122" /></a> </li> <li>Close and re-execute chrome canary </li> <li>Open Developer Tools (F12) or type CTRL + SHIFT + I </li> <li>Click on the little settings icon in the bottom right corner of the dev tools: <br /><a href="http://lh5.ggpht.com/-lUr4rNsYpvY/UQAWekImbaI/AAAAAAAABEc/x9mIcRXCFzE/s1600-h/image%25255B11%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-TV0HvspGsN4/UQAWfgqLAiI/AAAAAAAABEg/4Bh0XoZp6oo/image_thumb%25255B5%25255D.png?imgmax=800" width="284" height="482" /></a> </li> <li>Click on “Experiments” –> “File system folders in source panel” <br /><a href="http://lh5.ggpht.com/-ciXjDWsFUHw/UQAWgUL3vmI/AAAAAAAABEs/5-dT2DU6W5g/s1600-h/image%25255B15%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-E8aDRwpo04Y/UQAWhGckbWI/AAAAAAAABEw/tLRP88e9iwo/image_thumb%25255B7%25255D.png?imgmax=800" width="521" height="288" /></a> </li> <li>Close Dev Tools and reopen it </li> <li>Click on the settings icon (like point 6) </li> <li>You will see a new tab on the settings column: <br /><a href="http://lh3.ggpht.com/-X5Ql4LMn4ys/UQAWh_-_23I/AAAAAAAABE4/_FdI_w-xXNs/s1600-h/image%25255B19%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-iOFos4pVkJg/UQAWilLsTOI/AAAAAAAABFE/JW07z2QBSWY/image_thumb%25255B9%25255D.png?imgmax=800" width="580" height="254" /></a> </li> <li><font size="3"><strong>UPDATE</strong>: </font>you need to add a special empty file to the folders that you want to add in the workspace: open a command prompt , change the directory and type : <br /> <br /><em>echo  > .allow-devtools-edit</em> <br /> <br /><a href="http://lh4.ggpht.com/-mJQtiHb4DSw/UQD57Evz_PI/AAAAAAAABIU/uVDzQ0IlQLA/s1600-h/image23.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-PkPNsYKHvws/UQD58sZtArI/AAAAAAAABIY/Xldyw04zQH0/image_thumb11.png?imgmax=800" width="465" height="138" /></a> <br /> <br /><a href="http://lh4.ggpht.com/-b8B019Ut4fI/UQD6AE8PuVI/AAAAAAAABIs/426UV77jqlI/s1600-h/image30.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-WujIazsKJEk/UQD6A0ZYcmI/AAAAAAAABIw/ovJAEPIcSlk/image_thumb14.png?imgmax=800" width="460" height="160" /></a> <br /> <br />You need to use command prompt because file explorer raises an error when you try to create a file starting with a “.” (dot) <br /></li> <li>After this operation the “Add file system” link will work and you will see on the left panel in the dev tools the list of your local files: <br /><a href="http://lh6.ggpht.com/-qUPvYLp_k8A/UQD6B3VaC9I/AAAAAAAABI4/a6bLoOyHMsU/s1600-h/image31%25255B1%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-SipU5HhVMo4/UQD6Ch2U_0I/AAAAAAAABJA/jCb3ZGK_R9A/image31_thumb.png?imgmax=800" width="403" height="244" /></a> </li> <li>Type CTRL + S  if you change the file and you need to save it </li> </ol> <p> </p> <p>Hope it helps! Good Experiments! </p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-76936045200020384412013-01-21T19:00:00.000+01:002013-01-21T19:00:03.490+01:00Windows 8 classic shell utility (free)<p>Here is a great tool that recreate the missing START button in windows 8: <a href="http://www.classicshell.net/" target="_blank">Classic Shell</a></p> <p><a href="http://lh5.ggpht.com/-hUr7lX5SPR0/UP01c__cP5I/AAAAAAAABDQ/80cklY8LCiM/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-7JgASAoYCCo/UP01dtOmC3I/AAAAAAAABDU/ZJVpJ8A8YaE/image_thumb%25255B1%25255D.png?imgmax=800" width="677" height="391" /></a></p> <p>It offers 3 Windows style:</p> <p>Windows 7 Style:</p> <p><img src="http://www.classicshell.net/images/startmenu3.png" width="340" height="451" /></p> <p>Windows Xp Style:</p> <p><img src="http://www.classicshell.net/images/startmenu2.png" width="352" height="466" /></p> <p>Or… Classic style:</p> <p><img src="http://www.classicshell.net/images/startmenu1.png" width="354" height="469" /></p> <p>And here are the (very detailed) settings:</p> <p><a href="http://lh5.ggpht.com/-Cu4cGi3nIRk/UP01eWKiLGI/AAAAAAAABDg/03TId0F0yQo/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-N2UHQqK3p4Q/UP01fcMU_vI/AAAAAAAABDk/Z9NpITE7gIM/image_thumb%25255B4%25255D.png?imgmax=800" width="461" height="690" /></a></p> <p>Hope it helps! </p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-86164696705229955142013-01-21T18:30:00.000+01:002013-01-21T18:30:00.859+01:00Skype for windows 8? No thanks!<p>If you need to install skype on a windows 8 machine…. DON’T INSTALL THE MICROSOFT SUGGESTED VERSION</p> <p>You’ll waist a lot of time…  you :</p> <ul> <li>can’t work with resized chat window</li> <li>can’t send file attachments (no drag & drop of file, to send button… nothing)</li> </ul> <p>and you will only work in 3 different desktop modes:</p> <ul> <ul> <li>full screen</li> <li>1/3 screen</li> <li>2/3 screen</li> </ul> </ul> <p>Here is the link to desktop edition :     <a href="http://www.skype.com/go/getskype-full" target="_blank">http://www.skype.com/go/getskype-full</a></p> <p><a href="http://lh4.ggpht.com/-IFzwGg4Vh38/UP0tZPde9-I/AAAAAAAABCk/8V88CkAv3BI/s1600-h/image%25255B10%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-GErJrJRBNa4/UP0taP_XH8I/AAAAAAAABCo/ohS2kIp1GkI/image_thumb%25255B4%25255D.png?imgmax=800" width="592" height="398" /></a></p> <p><a href="http://lh4.ggpht.com/-aXTKs4CpTV4/UP0tatmoOxI/AAAAAAAABCs/fEROplzKHsg/s1600-h/image%25255B12%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-Ly8XCfooHZg/UP0tbo_HYjI/AAAAAAAABC8/eOYPhthNfrg/image_thumb%25255B6%25255D.png?imgmax=800" width="575" height="393" /></a></p> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-23539145283501333462013-01-09T18:10:00.000+01:002013-01-09T18:10:00.302+01:00A controller for LEGO EV3 Mindstorms based on mobile iOS / Android<br />
The LEGO group these days introduced the next evolution of its robotic kit: Mindstorms EV3.<br />
There is a new controller lego "intelligent brick" based on:<br />
ARM 9 processor with Linux-based operating system <br />On-board program storage Including 16 MB of Flash memory and 64 MB of RAM <br />Hi-resolution 178x128 pixel display <br />other improvements <br />Why The LEGO has not designed an adapter that can accommodate inside a smartphone based on the operating system ios/android?<br />
The smartphone will work as a controller , the LEGO adapter may be powered by batteries in order to operate the servo motors, the input / output would be passed from the adapter to your smartphone and vice versa.<br />
It would be beautiful if the controlling program could be developed using eclipse development environment on linux or visual studio on Windows.<br />
The cost would be lower ... the controller would be provided by lego fans..<br />
Would not it be nice?<br />
A LEGO controller that can communicate with the world .. send emails, communicate with web services, with the displays of today smartphones.<br />
Would not it be nice?<br />
Here is my terrible Paint.Net prototype: <img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://lh4.ggpht.com/-SKjq0J-QI1Y/UO14FVVp4lI/AAAAAAAAA_A/lZzj331PjyU/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /><br />
<a href="http://lh5.ggpht.com/-PgPv1Bqo7R8/UO14Gn252RI/AAAAAAAAA_E/kDTYb5gd5hM/s1600-h/image%25255B3%25255D.png"><img alt="image" border="0" height="310" src="http://lh5.ggpht.com/-JgGWE8hCpfY/UO14HoKxayI/AAAAAAAAA_Q/gxHHUFnxGyc/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="391" /></a><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com2tag:blogger.com,1999:blog-22490999.post-39540927871659649622013-01-09T00:17:00.002+01:002013-01-10T09:36:10.479+01:00Google locale api: find news based on your IP location<script src="https://www.google.com/jsapi?key=ABQIAAAAQLd5290Kjbk-VPuCDYAfnBRYfKp0eaDcp4nidsc0rBpfwGQjWBRfZ98_xA1kmbh3biVQCxgc_Nv5_Q" type="text/javascript">
</script><br />
<script language="Javascript" type="text/javascript">
//<![CDATA[
var position = "";
var latitude = 0;
var longitude = 0;
var city = "";
function loadJson(data)
{
if (data!=null)
{
$('#geolocation').append(data["geoplugin_city"]);
$('#geolocation').append("-");
$('#geolocation').append(data["geoplugin_countryName"]);
position = data["geoplugin_city"] + "," + data["geoplugin_countryName"];
city = data["geoplugin_city"];
OnLoad();
}
}
function jqLoaded()
{
var url = "http://www.geoplugin.net/json.gp?jsoncallback=?";
var urlNearBy = "http://www.geoplugin.net/extras/nearby.gp?radius=50&limit=20&format=json&jsoncallback=?";
$.getJSON(url , loadJson );
}
google.load("jquery", "1.4.3");
google.setOnLoadCallback(jqLoaded);
google.load("search", "1");
function OnLoad() {
// Create a search control
var searchControl = new google.search.SearchControl();
// Add in a full set of searchers
var localSearch = new google.search.LocalSearch();
searchControl.addSearcher(localSearch);
searchControl.addSearcher(new google.search.NewsSearch());
searchControl.addSearcher(new google.search.BlogSearch());
// Set the Local Search center point
localSearch.setCenterPoint(position);
// Tell the searcher to draw itself and tell it where to attach
searchControl.draw(document.getElementById("searchcontrol"));
// Execute an inital search
searchControl.execute(city);
}
//google.setOnLoadCallback(OnLoad);
//]]>
</script><br />
Some experiments with google apis, this page loads the google search control and finds events near your current location.
If the page doesn't work please open this post alone.
<br />
<br />
<div id="geolocation">
Your location is....</div>
<div id="searchcontrol">
Loading...</div>
<br />
Here is the code used:
<br />
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 20px 0px 10px; max-height: 200px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;">
<div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><script src=<span style="color: #006080;">"https://www.google.com/jsapi?key=ABQIAAAAQLd5290Kjbk-VPuCDYAfnBRYfKp0eaDcp4nidsc0rBpfwGQjWBRfZ98_xA1kmbh3biVQCxgc_Nv5_Q"</span> </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">type=<span style="color: #006080;">"text/javascript"</span>></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"></script><br /></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><script language=<span style="color: #006080;">"Javascript"</span> type=<span style="color: #006080;">"text/javascript"</span>></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">//<![CDATA[</span></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">var</span> position = <span style="color: #006080;">""</span>;</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">var</span> latitude = 0;</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">var</span> longitude = 0;</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">var</span> city = <span style="color: #006080;">""</span>;</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">function</span> loadJson(data)</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">{</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">if</span> (data!=<span style="color: blue;">null</span>)</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">{</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">$(<span style="color: #006080;">'#geolocation'</span>).append(data[<span style="color: #006080;">"geoplugin_city"</span>]); </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">$(<span style="color: #006080;">'#geolocation'</span>).append(<span style="color: #006080;">"-"</span>);</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">$(<span style="color: #006080;">'#geolocation'</span>).append(data[<span style="color: #006080;">"geoplugin_countryName"</span>]); </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">position = data[<span style="color: #006080;">"geoplugin_city"</span>] + <span style="color: #006080;">","</span> + data[<span style="color: #006080;">"geoplugin_countryName"</span>];</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">city = data[<span style="color: #006080;">"geoplugin_city"</span>];</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">OnLoad();</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">}</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">}</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">function</span> jqLoaded() </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">{</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">var</span> url = <span style="color: #006080;">"http://www.geoplugin.net/json.gp?jsoncallback=?"</span>;</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">var</span> urlNearBy = <span style="color: #006080;">"http://www.geoplugin.net/extras/nearby.gp?radius=50&limit=20&format=json&jsoncallback=?"</span>;</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">$.getJSON(url , loadJson ); </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">}</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">google.load(<span style="color: #006080;">"jquery"</span>, <span style="color: #006080;">"1.4.3"</span>); </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">google.setOnLoadCallback(jqLoaded);</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> google.load(<span style="color: #006080;">"search"</span>, <span style="color: #006080;">"1"</span>);</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: blue;">function</span> OnLoad() {</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">// Create a search control</span></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: blue;">var</span> searchControl = <span style="color: blue;">new</span> google.search.SearchControl();</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">// Add in a full set of searchers</span></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: blue;">var</span> localSearch = <span style="color: blue;">new</span> google.search.LocalSearch();</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> searchControl.addSearcher(localSearch);</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> searchControl.addSearcher(<span style="color: blue;">new</span> google.search.NewsSearch());</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> searchControl.addSearcher(<span style="color: blue;">new</span> google.search.BlogSearch());</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">// Set the Local Search center point</span></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> localSearch.setCenterPoint(position);</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">// Tell the searcher to draw itself and tell it where to attach</span></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> searchControl.draw(document.getElementById(<span style="color: #006080;">"searchcontrol"</span>));</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">// Execute an inital search</span></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> searchControl.execute(city);</pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> }</pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">//google.setOnLoadCallback(OnLoad);</span></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: green;">//]]></span></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"></script><br /></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Some experiments with google apis, <span style="color: blue;">this</span> page loads the google search control </pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">and finds events near your current location. View the source code of the page </pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">if</span> you want to see the javascript code used.<br /></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><br /></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><br /></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><div id=<span style="color: #006080;">"geolocation"</span>></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Your location <span style="color: blue;">is</span>....</div></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><div id=<span style="color: #006080;">"searchcontrol"</span>></pre>
<!--CRLF-->
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Loading...</div></pre>
<!--CRLF-->
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><br /></pre>
<!--CRLF--></div>
</div>
<div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-56252916462878429352013-01-08T18:00:00.000+01:002013-01-09T09:27:30.900+01:00LEGO announces EV3 : the new Mindstorms generation<img src="http://robotsquare.com/wp-content/uploads/2013/01/ev3rstorm-mindstorms-ev3-small.jpg" /> <br />Lego has announced the new version of the great Mindstorm system : LEGO MINDSTORMS EV3 <br />Here is the official announcement from <a title="http://mindstorms.lego.com/en-us/News/ReadMore/Default.aspx?id=476243" href="http://mindstorms.lego.com/en-us/News/ReadMore/Default.aspx?id=476243">http://mindstorms.lego.com/en-us/News/ReadMore/Default.aspx?id=476243</a> <br /> <br /> <br /> <blockquote><b>Coming Fall 2013: LEGO MINDSTORMS EV3</b> <br /><i>Create and command robots that do what you want. </i> <br />With LEGO MINDSTORMS EV3 you can turn your LEGO creations into live robots that follow your every command. The new LEGO MINDSTORMS EV3 set includes everything you need – motors, sensors, programmable brick, 550+ LEGO Technic elements, remote control – to create and command robots of even your wildest imagination, including 5 cool robot characters. Download the 3D building instructions and the app to command your robot via your smart device. Then program your robots to walk, talk, move and do whatever you want them to do to via the intuitive software program, the programmable brick or your smart device.</blockquote> And here are the latest specs: <br />EV3 Intelligent Brick <br /> <ul> <li>Stronger and faster ARM9 robotic processor </li> <li>Embedded 16MB FLASH memory </li> <li>64 MB RAM plus SD expansion slot </li> <li>LINUX operating system, released under open source </li> <li>USB 2.0 interface allows for WiFi connectivity </li> <li>4 input ports: Connect up to 4 sensors at the same time, including your NXT sensors </li> <li>4 output ports: Now you can power up to 4 motors (Either Large, Medium or NXT) </li> <li>Up to four intelligent bricks to be connected together (Yes, that’s 16 sensor and 16 motor ports!) </li> <li>Matrix display with loudspeaker </li> <li>Button interface with status indication </li> <li>Enhanced on-brick programming </li> <li>Bluetooth ® v2.1 </li> <li>iOS and Android compatible </li> </ul> Hardware <br /> <ul> <li>3 Interactive Servo Motors: 2 large and 1 medium </li> <li>1 Touch Sensor </li> <li>New IR Seeker Sensor measures distance, movements and detects objects, and acts as a receiver for the remote control </li> <li>New IR Beacon remotely controls robot from up to 2 meters (6 feet) away </li> <li>Improved Color Sensor detects 6 colors as well as the brightness of light sources </li> <li>Backwards-compatible with LEGO MINDSTORMS NXT: Connect your NXT Sensors and motors to the new EV3 brick. </li> <li>Assortment of 594 LEGO TECHNIC® elements for easy, more stable building with improved functionality and movement capabilities </li> </ul> Programming Software <br /> <ul> <li>Downloadable software is PC and Mac compatible </li> <li>Icon-based drag and drop environment for “building” programs with new interactive content that helps de-bug programming </li> </ul> <br /> <h3><font color="#ff8000"><font style="font-weight: bold">Update!</font></font><font style="font-weight: bold"> </font></h3> <p>Here is a page with detail about the lego ev3 education program with downlodable product specifications: <br /><a href="http://education.lego.com/en-us/preschool-and-school/secondary/mindstorms-education-ev3/product-range/"> <br />http://education.lego.com/en-us/preschool-and-school/secondary/mindstorms-education-ev3/product-range/</a></p> <p>45544 LEGO® MINDSTORMS® Education EV3 Core Set:</p> <p><img src="http://cache.lego.com/r/education/-/media/LEGO%20Education/Home/Images/Products/MINDSTORMS%20EV3/45544_713x380_MainProduct.png" /></p> <blockquote> <p>This core set is optimized for classroom use and contains all you need to teach using the exciting LEGO® MINDSTORMS® set. It enables students to build, program and test their solutions based on real life robotics technology. It contains the EV3 Intelligent Brick, a powerful small computer that makes it possible to control motors and collect sensor feedback. It also enables BT and WiFi communication as well as providing programming and data logging. Students are encouraged to brainstorm in order to find creative solutions to problems and then develop them through a process of selecting, building, testing and evaluating them. This is also an excellent way of getting students to talk to each other and cooperate as well as giving them hands on experience with an array of sensors, motors and intelligent units. Instructions for additional models are included in the software. The set also comes in a sturdy storage box with a sorting tray for easy classroom use and storage. The software and battery charger are sold separately.</p> <p>The set includes:</p> <ul> <li>Three interactive servo motors </li> <li>Built-in rotation sensor and ultrasonic sensor </li> <li>Color/light sensor, gyro sensor and two touch sensors </li> <li>Rechargeable battery </li> <li>Ball wheel </li> <li>Connecting cables </li> <li>Building instructions </li> <li>LEGO® Technic building bricks for creating a vast variety of models</li> </ul> <p>Key Learning Values:</p> <ul> <li>Design and build programmable robots using motors, sensors, gears, wheels, axles, and other technical components </li> <li>Understand and interpret two-dimensional drawings to create three-dimensional models </li> <li>Build, test, troubleshoot and revise designs to improve robot performance </li> <li>Gain practical, hands-on experience using mathematical concepts such as estimating and measuring distance, time, speed </li> <li>Communicate effectively using scientific and technical language</li> </ul> <p><a href="http://lh5.ggpht.com/-W7eHkxh40_I/UO0p7KKTPSI/AAAAAAAAA-k/sYfbxHrK-iQ/s1600-h/image%25255B8%25255D.png"><img style="display: inline" title="image" alt="image" src="http://lh6.ggpht.com/-j7gMwxY1teg/UO0p8M4QbZI/AAAAAAAAA-o/hTQOPdsZ9e4/image_thumb%25255B6%25255D.png?imgmax=800" width="656" height="500" /></a></p> <p>EV3 Software screenshot, source page is <a href="http://education.lego.com/en-us/lego-education-product-database/mindstorms-ev3/2000046-lego-mindstorms-education-ev3-software-site-licence/">here</a></p> <p><img src="http://cache.lego.com/r/education/-/media/LEGO%20Education/Home/Images/Products/MINDSTORMS%20EV3/2000045_713x380_MainProduct.png" /></p> </blockquote> <p>Here is the new 45500 Intelligent brick: </p> <p><img src="http://cache.lego.com/r/education/-/media/LEGO%20Education/Home/Images/Products/MINDSTORMS%20EV3/45500_713x380_MainProduct.png" /></p> <blockquote> <p>This programmable, intelligent brick serves as the heart and brain of LEGO® MINDSTORMS® Education EV3 robots. It features an illuminated six-button interface that changes color to indicate the brick's active state, a high-resolution black and white display, built-in speaker, USB port, a mini SD card reader, four input ports and four output ports. The brick also supports USB, Bluetooth and WiFi communication with a computer and has a programming interface that enables programming and data logging directly onto the brick. It is compatible with mobile devices and is powered by AA batteries or the EV3 Rechargeable DC Battery.</p> <p>The brick features:</p> <ul> <li>ARM 9 processor with Linux-based operating system </li> <li>Four input ports for data acquisition of up to 1000 samples per/sec </li> <li>Four output ports for execution of commands </li> <li>On-board program storage including 16 MB of Flash memory and 64 MB of RAM </li> <li>Mini SDHC card reader for 32 GB of expanded memory </li> <li>Illuminated, three-color, six-button interface that indicates the brick’s active state </li> <li>Hi-resolution 178x128 pixel display enabling detailed graph viewing and sensor data observation </li> <li>High-quality speaker </li> <li>On-brick programming and datalogging that can be uploaded into the EV3 software </li> <li>Computer-to-brick communication through on-board USB, or external WiFi or Bluetooth dongles </li> <li>USB 2.0 host enabling bricks to be linked in a daisy chain, allows WiFi communication and connection to USB memory sticks </li> <li>Powered by six AA batteries or the 2050 mAh lithium ion EV3 Rechargeable DC Battery</li> </ul> </blockquote> <p>Source page is <a href="http://education.lego.com/en-us/lego-education-product-database/mindstorms-ev3/45500-intelligent-brick/">here</a></p> <div class="blogger-post-footer"> </div> <div class="blogger-post-footer">And here are some Question and answer about the Ev3 project, source page is <a href="http://education.lego.com/en-us/preschool-and-school/secondary/mindstorms-education-ev3/faqs-and-technical-support/">here</a></div> <ul> <li><strong>General Questions </strong></li> <ul> <li><a href="http://education.lego.com/en-US/#">Q:What does EV3 stand for?</a> <br />A:This is the third generation of the LEGO® MINDSTORMS® Education platform and the “EV” stands for evolution. It is a significant upgrade of the second generation of LEGO MINDSTORMS Education NXT, which was launched in 2006. <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:What is Robot Educator?</a> <br />A:Robot Educator is the name of both the basic robot and the tutorials found in the software. The Robot Educator is a very simple, quick-to-build robot that students will have in their hands ready to learn the basics of robotics. It is the robot that introduces the student to the world of robotics. The Robot Educator learning tool is designed to take you and your student’s through the essentials of programming, data logging, and hardware. It does so in a structured and engaging way, ensuring that everyone is constructing, programming, and experimenting within a minimum of time. <br /></li> </ul> <li><strong>Hardware Questions </strong></li> <ul> <li><a href="http://education.lego.com/en-US/#">Q:What comes in the core set?</a> <br />A:Sturdy storage box and sorting tray for easy classroom management <br />Building instructions <br />Rechargeable battery <br />Ball Wheel <br />Connecter Cables <br />USB Cable <br />LEGO Technic Elements – piece count 541 pcs. <br />3x motors (2x large motors & 1x medium motor) <br />5x sensors (2x touch sensors, 1x color sensor, 1x ultrasonic sensor & 1x gyro sensor) <br />1x P-brick <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:How is the LEGO MINDSTORMS Education EV3 programmable brick different from the NXT?</a> <br />A:The EV3 ‘P-brick’ is a completely new component and the most powerful P-brick ever created by LEGO Education. It is built up around a faster and stronger processor, which not only increases performance on all parameters compared to the NXT but also introduces new possibilities not available with NXT. For detailed information on the LEGO MINDSTORMS Education EV3 P-brick see the Product Sheet. <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:Is there on-brick programming?</a> <br />A:Yes. We have continued and improved the on-brick programming with the LEGO MINDSTORMS Education EV3 brick. Students can easily program basic tasks on the brick and also conduct basic data logging. All of the on-brick programs can be uploaded into the LEGO MINDSTORMS Education EV3 software for continued and advanced work. <br /></li> </ul> <li><strong>Software Questions </strong></li> <ul> <li><a href="http://education.lego.com/en-US/#">Q:What is the Content Editor in the software? How does it help educators?</a> <br />A:The Content Editor enables educators to edit, adapt, and customize activities - or create their own from scratch. Teachers can use the Content Editor to customize lessons directly for their student’s needs or customize to the different grade levels. The Content Editor provides a digital space for students where they can capture their work by inserting text, images, videos and sound creating their own digital workbook. The workbook can easily be used for sharing and communication of end-results, among other things making assessment easier. <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:Can you use EV3 Software on both Mac and PC?</a> <br />A:The EV3 software can be used on both Mac and PC platforms to program LEGO® MINDSTORMS® Education EV3 P-bricks. <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:What programming platforms can you use with LEGO MINDSTORMS Education EV3?</a> <br />A:Besides the EV3 software, you can also use LabVIEW and RobotC. EV3 is an open-source platform and, therefore, we anticipate the MINDSTORMS community to develop additional languages such as JAVA. <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:What new software-updates have been made?</a> <br />A:There are many new features and improvements from NXT to EV3. Some of the more remarkable are: <br />Lobby: <br />- New full screen lobby to navigate through the content provided by LEGO Education, third parties and user generated; making sure the teaching objective is in focus. <br /> <br />Content Editor: <br />- Content is editable directly inside the environment, enabling customization of existing projects or creation of new ones from scratch. <br />- The Content Editor provides a digital workbook for students where they can capture their work by inserting text, images, videos and sound creating their own digital workbook. <br /> <br />Tighter integration between the P-brick and the programming environment: <br />- The hardware page enables monitoring the status and values measured by all of the hardware elements. <br />- Hardware elements are automatically recognized thanks to auto-id. <br />- Bluetooth configuration is facilitated by the USB to Bluetooth features. <br /> <br />Debugging features now part of the programming environment: <br />- Execution highlight. <br />- Programming blocks will display a warning symbol if expected hardware by the programming block is different from the detected hardware by auto-id. <br />- Probes enable seeing the values going through the data wires. <br /> <br />New programming blocks possibilities: <br />- Simple strip programming by snapping blocks together (no need to use the beam anymore). <br />- Block parameters configured directly on block. <br />- Read program sequence directly on blocks. <br />- Improved sequence wires that facilitate showing the structure of the program and creating parallel execution. <br />- Wait for change added to easily create robots that behave according to change in the environment, as opposed to wait for threshold that only works by comparing measured values. <br />- Data wires improved and data casting added to simplify data type conversion. <br />- Arrays integrated in the standard blocks. <br />- Loop interruption now possible, enabling creating advance state control mechanisms. <br /> <br />Data logging: <br />- Oscilloscope mode enables live monitoring of the sensors to prepare experiments and validate setup. <br />- Dataset calculation integrated, enabling analysis of the data coming from the sensors. <br />- Graph programming added; this feature enables users to create zones on the graph that will make the robot react in the physical world based on the data on the graph. <br /> <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:In what languages is the LEGO MINDSTORMS Education EV3 software available?</a> <br />A:US English <br />British English <br />Danish <br />Norwegian <br />Swedish <br />German <br />French <br />Spanish <br />Italian <br />Portuguese <br />Dutch <br />Korean <br />Japanese <br />Chinese <br />Russian <br />Arabic <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:Will the LEGO MINDSTORMS Education EV3 software work on my tablet/phone?</a> <br />A:No. At release time, the software works on PC and Mac laptop and desktop systems. Simple control apps are under development and are expected in second half 2013. <br /></li> </ul> <li><strong>Compatability Questions </strong></li> <ul> <li><a href="http://education.lego.com/en-US/#">Q:Can you use NXT parts with the LEGO MINDSTORMS Education EV3?</a> <br />A:LEGO MINDSTORMS Education EV3 uses the same LEGO Technic elements and RJ12 connector cables as the LEGO MINDSTORMS Education NXT, so all your existing sensors, motors and building elements will work with the new platform. The NXT rechargeable battery, however, cannot be used with the LEGO MINDSTORMS Education EV3 P-brick, but you can reuse the DC charger (8887). <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:Can I connect my NXT P-brick to the LEGO MINDSTORMS Education EV3 P-brick?</a> <br />A:No. It is not possible to daisy chain with the NXT brick. <br /></li> <li><a href="http://education.lego.com/en-US/#">Q:Can I program the NXT P-brick using LEGO MINDSTORMS Education EV3 Software?</a> <br />A:You can program your NXT P-brick using the new LEGO MINDSTORMS Education EV3 software. However, not all of the software features are supported by the NXT P-brick.</li> </ul> </ul> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-22258042428260193432013-01-08T13:20:00.001+01:002013-01-08T13:20:58.636+01:00How to use Google search engine in your DNN web site<p>Some days ago I made a great discovery… the Google Custom Search Engine <a title="http://www.google.com/cse/" href="http://www.google.com/cse/">http://www.google.com/cse/</a>:</p> <p><a href="http://lh4.ggpht.com/-3K0q3v-st10/UOwO6jgxcwI/AAAAAAAAA8M/623jr2n5dM4/s1600-h/image3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-ppe9523Uimg/UOwO79S_eHI/AAAAAAAAA8Q/b8DqlhsqBIw/image_thumb1.png?imgmax=800" width="531" height="408" /></a></p> <p>You can create a custom search engine dedicated to your web site, it’s free and it doesn’t show advertisings (if you don’t need them).</p> <p><a href="http://lh6.ggpht.com/-UHkT5KvQ64o/UOwO9MZ95UI/AAAAAAAAA8c/ZspbYBwHcNY/s1600-h/image%25255B5%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-BvRa5vD7Br4/UOwO-dgWrWI/AAAAAAAAA8g/mBCKy19AMHE/image_thumb%25255B2%25255D.png?imgmax=800" width="537" height="387" /></a></p> <p>Configure your web site address:</p> <p><a href="http://lh6.ggpht.com/-1C9EvPBxkPM/UOwO_unjyHI/AAAAAAAAA8o/JStz4FhY75k/s1600-h/image15.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-vOYObFmcBfc/UOwPAjHqIaI/AAAAAAAAA8w/gLswlSbHYus/image_thumb7.png?imgmax=800" width="573" height="452" /></a></p> <p>Try the search :</p> <p><a href="http://lh3.ggpht.com/-g1HVSjEwMGU/UOwPB3Qn7OI/AAAAAAAAA88/jAZbr9eXH7U/s1600-h/image19.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-g3_GpQ3FcYc/UOwPDZeKl4I/AAAAAAAAA9A/yUO4VqYug0g/image_thumb9.png?imgmax=800" width="509" height="435" /></a></p> <p>Get the JavaScript code:</p> <p><a href="http://lh5.ggpht.com/-3djXmmFvHic/UOwPEsMeRhI/AAAAAAAAA9I/3JdBJvcgbq8/s1600-h/image23.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-hmooPF8TkeI/UOwPFXgfoWI/AAAAAAAAA9Q/XDo4-A5l2X4/image_thumb11.png?imgmax=800" width="516" height="335" /></a></p> <p>You can also customize how the search works, add autocomplete, synonyms, add specific pages from other web sites… </p> <p> </p> <p><a href="http://lh6.ggpht.com/-o9D4VxwOrOM/UOwPGoA30HI/AAAAAAAAA9Y/i8-LRgW13M0/s1600-h/image24%25255B1%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-OkJeWVbhKlo/UOwPHzb2V1I/AAAAAAAAA9g/L0FSbH6w5Nw/image24_thumb.png?imgmax=800" width="148" height="335" /></a></p> <p>If you want to add it to DNN you can follow this simple steps:</p> <ol> <li>You need to add one custom page to DNN , this will be the page that will show the search results and you need to connect the DNN search field to the google custom search page.<a href="http://lh3.ggpht.com/-V6Te3Eqmnfc/UOwPI1LzaiI/AAAAAAAAA9o/WAQNpAUT7ao/s1600-h/image31.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/--h4Z2gH-du8/UOwPJwvzbBI/AAAAAAAAA9w/tcTOm5TFLSc/image_thumb15.png?imgmax=800" width="407" height="236" /></a> <br /></li> <li>Change the DNN search field, find the \DotNetNuke5\admin\Skins\Search.ascx.vb file and add this lines of code, a simple redirect to the new search page:  <br />        <pre class="csharpcode"><span class="kwrd">Protected</span> <span class="kwrd">Sub</span> ExecuteSearch(<span class="kwrd">ByVal</span> searchText <span class="kwrd">As</span> <span class="kwrd">String</span>, <span class="kwrd">ByVal</span> searchType <span class="kwrd">As</span> <span class="kwrd">String</span>) <br /> <span class="kwrd">If</span> <span class="kwrd">Not</span> <span class="kwrd">String</span>.IsNullOrEmpty(searchText) <span class="kwrd">Then</span> <br /> Response.Redirect(<span class="str">"/tabid/<YOUR SEARCH PAGE ID>/default.aspx"</span> & <span class="str">"?q="</span> & Server.UrlEncode(searchText)) <br /> <span class="kwrd">return</span> </pre><br /> <style type="text/css"><br />.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }</style><style type="text/css"><br />.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }</style></li><br /><br /> <li>The google search engine automatically uses the query string parameter as search word, you need to use the “q” parameter.<br /> <br /></li><br /><br /> <li>That’s all! </li><br /></ol> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-27540538067675725192012-12-10T11:14:00.000+01:002013-01-08T13:27:40.649+01:00GMAIL: how to open next/previous email when you delete a message<p>If you are using Gmail you will find very useful the ability to automatically open the next/previous message when you delete the current message without loading the gmail index page. <br /> <br />You need to install this google lab :  "Auto-advance" which automatically opens the next conversation after you archive/delete/mute the one you're reading. <br /> <br />Here is the link to the google addon: <br /> <br /><a href="http://gmailblog.blogspot.it/2010/10/new-in-labs-auto-advance-to-next.html">http://gmailblog.blogspot.it/2010/10/new-in-labs-auto-advance-to-next.html</a> <br /> <br />If you need to configure it , look at the "Settings" --> "General Settings Tab" under "Auto-advance" panel.</p> <p><a href="http://lh6.ggpht.com/-oS-RhMM8LTQ/UOwQtkRH1NI/AAAAAAAAA-I/EO7FL4J3NP4/s1600-h/image%25255B3%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-hQwHpDGWWQ4/UOwQugrg6aI/AAAAAAAAA-M/hGhqAzW383U/image_thumb%25255B1%25255D.png?imgmax=800" width="701" height="379" /></a> <br /> <br />Hope it helps and Happy Christmas! <br /> <br />Matteo <br /> <br /> <br /> <br /></p> <div class="blogger-post-footer"><a title="Atom feed" href="<$BlogSiteFeedUrl$>">">Site Feed</a></div> <div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0tag:blogger.com,1999:blog-22490999.post-11194067914296262992012-09-02T07:03:00.001+02:002012-09-02T07:03:57.858+02:00Chrome for IOs ko on google docs, safari worksGoogle Chrome for IOs has problems on google spreadsheet, when you try to add a new script to a spreadsheet you receive the response "page not found".<br />
<br />
On the same page Safari works.....<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator"style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnzNYHNH7o7BEQuvLyiY762yWLzc2bN3A8hT8K4qQaWSEtuIUXv3jgnfplfrNaJg2j9Ne2AiEkS4ZRG2s8kNWn5LQbNhje7jNf5rpS_gtJnCPTLri_9eVLcb-Lznu3yeR7gEmE/s640/blogger-image-1752558733.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnzNYHNH7o7BEQuvLyiY762yWLzc2bN3A8hT8K4qQaWSEtuIUXv3jgnfplfrNaJg2j9Ne2AiEkS4ZRG2s8kNWn5LQbNhje7jNf5rpS_gtJnCPTLri_9eVLcb-Lznu3yeR7gEmE/s640/blogger-image-1752558733.jpg" /></a></div><div class="separator"style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioc-y09fFDCr4jbTHRqKzoso8uk7Aicihm9PcRI1ZpLTgOrRXZHgyFpqImiDXXsrHU7J6F1C9VL-4nsurGn8_r_PbA-RnuT6Zi3px1PYOcZQ_YRJNiqjZTvIMiF66OOroW5S81/s640/blogger-image-61683775.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioc-y09fFDCr4jbTHRqKzoso8uk7Aicihm9PcRI1ZpLTgOrRXZHgyFpqImiDXXsrHU7J6F1C9VL-4nsurGn8_r_PbA-RnuT6Zi3px1PYOcZQ_YRJNiqjZTvIMiF66OOroW5S81/s640/blogger-image-61683775.jpg" /></a></div><div class="blogger-post-footer"><a href="<$BlogSiteFeedUrl$>" title="Atom feed">Site Feed</a></div>Anonymoushttp://www.blogger.com/profile/13741879067586611918noreply@blogger.com0