tag:blogger.com,1999:blog-2030807331116102292024-02-19T14:12:49.892+10:00The Big ByteLife, the universe and everything. The state of the world, from the perspective of one in it.Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.comBlogger261125tag:blogger.com,1999:blog-203080733111610229.post-70641908299239812582013-07-03T10:06:00.000+10:002013-07-03T10:09:17.149+10:00Linux Printer Drivers - Fuji Xerox DocuPrint P255 dwThe Fuji Xerox DocuPrint line of printers are not officially supported on Linux. But it is possible to get them working under Ubuntu Linux using the PPD file from the Windows Drivers.<br />
<br />
Here's how I got my Fuji Xerox DocuPrint P255 dw working under Ubuntu 12.10:<br />
<br />
<ol>
<li>First, download the Windows PostScript Printer Drivers from the Fuji website:<br /><a href="http://www.fujixeroxprinters.com.au/en/Downloads.aspx?product=11252&category=5726&dl=1">http://www.fujixeroxprinters.com.au/en/Downloads.aspx?product=11252&category=5726&dl=1</a></li>
<li>Extract the zip file to a local directory.</li>
<li>Find the folder which matches your architecture - x64 for 64-bit machines, or x32 for 32-bit machines.</li>
<li>Inside this folder you'll find a .cab file. Open this with your favourite archiver (I used <i>Ark</i>), and extract the contents.</li>
<li>One of the extracted files is called "fxtpn1a.ppd". This is the PPD file you'll need to install the driver on Linux.<br /><i>NOTE: You may need to run dos2unix over this file, to convert from Windows to Unix line endings. I also had to correct one line which was supposed to begin with an asterisk, but had a single space preceding it at the start of the line.</i></li>
<li>Under Ubuntu settings, open Printers, and click "Add".</li>
<li>Find the network printer, and connect using AppSocket/HP JetDirect.</li>
<li>When asked for a driver, choose "Local Driver", and "Provide PPD file".</li>
<li>Browse to the PPD file extracted earlier, and click through the rest of the wizard to finish adding the printer.</li>
<li>Print a test page to verify the drivers are working properly.</li>
</ol>
<div>
Here is a copy of my PPD file for reference:<br />
<a href="https://mega.co.nz/#!pw9lyDoT!GtM0fFw09QzuB8b4gLiWR00VMAFM2i0NibmnprYkwFQ">https://mega.co.nz/#!pw9lyDoT!GtM0fFw09QzuB8b4gLiWR00VMAFM2i0NibmnprYkwFQ</a></div>
Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com14tag:blogger.com,1999:blog-203080733111610229.post-75299524933384273282011-12-25T16:39:00.000+10:002011-12-25T16:39:18.413+10:00Secure VPN ServicesI've been looking recently at options for a secure VPN connection to the US or Europe. There are many websites which treat traffic from Australia differently to other countries, and it helps to be able to test sites from different locations. In particular, when using CloudFlare I'd like to be able to check if my website is up & running for users in America, not just the local Oceania area.<br />
<br />
One of the best services I found was <a href="http://www.supervpn.net/">Super VPN Service</a>. They offer VPNs for anonymous surfing with an IP address located in the United States or Germany. They include a torrent VPN service, and even a free account with the following features:<br />
<ul>
<li>Connection using PPTP&L2TP protocol.</li>
<li>Servers are located in United States and Germany</li>
<li>Unlimited amount of traffic</li>
<li>High speed internet connection</li>
<li>128 bit encryption</li>
<li>Works for PC on Windows /Linux/Mac OS</li>
<li>Works for mobile phones with Android/Windows/Mobile/iPhone/Blackberry/Symbian platform</li>
</ul>
<div>
That's a pretty full featured service, and the free option sounds like it would do me fine. What VPN service do you use, and how much does it cost per month?</div>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com9tag:blogger.com,1999:blog-203080733111610229.post-4726807434941016232011-06-07T08:37:00.000+10:002011-06-07T08:37:36.928+10:00Google Music Terms of Service<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9s_ZPhTaY1Amx76znhfCMV7iClh61v7u9zFjClRWj0QpjGbGJvZaM7DIsfscchlxjBZSiAVKF8XXl0UC-1uY3RcN_4QfXUsBlVMNQGdZPEYCiMo4YJdlQJ6k_65G3fc467YMKORvkB0k/s1600/Google-Music-Beta.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9s_ZPhTaY1Amx76znhfCMV7iClh61v7u9zFjClRWj0QpjGbGJvZaM7DIsfscchlxjBZSiAVKF8XXl0UC-1uY3RcN_4QfXUsBlVMNQGdZPEYCiMo4YJdlQJ6k_65G3fc467YMKORvkB0k/s200/Google-Music-Beta.png" width="200" /></a></div>I just got an invite to Google Music Beta =D Of course, I read through the entire <a href="http://music.google.com/about/terms.html">terms and conditions</a> before signing up (doesn't everyone?) They were quite interesting, so I've posted them here for your interest. Note at the bottom there is a section for "<a href="http://en.wikipedia.org/wiki/Gracenote">Gracenote</a>", a music data provider which has partnered with Google for this enterprise. I wouldn't be surprised if Google acquires Gracenote (or a similar company) some time down the track. It's not often that Google licenses the core data set for one of their services from a third party.<br />
<br />
Listed below is the Google Music Beta Terms of Service, current as of 7th June 2011.<br />
<blockquote><h2 style="color: #222222; font-family: arial, sans-serif; font-size: 1.23em; line-height: 1.25; margin-bottom: 0.81em; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Additional Terms of Service for Music Beta by Google</h2><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">Last modified: May 10, 2011</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">Thank you for your interest in Music Beta by Google! By using Music Beta by Google ("Music Beta" or the "Service"), you accept and agree to be bound by the <a href="http://www.google.com/accounts/TOS" style="color: #1111cc;">Google Terms of Service</a>, the <a href="http://www.google.com/privacy/privacy-policy.html" style="color: #1111cc;">Google Privacy Policy</a>, and the<a href="http://music.google.com/about/privacy.html" style="color: #1111cc;">Music Beta by Google Privacy Policy</a>, each of which is incorporated into this agreement by this reference, as well as these Additional Terms of Service for Music Beta by Google (collectively, the "Terms"). It is important for you to read each of these documents, as they form a legal agreement regarding your use of the Service between you and Google Inc. ("Google") whose principal place of business is 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States. This document explains how your agreement with Google is made up and sets out some of the terms of that agreement. Capitalized terms not otherwise defined in these Additional Terms have the meaning given to them in the Google Terms of Service.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">The Music Beta Service and Your Music</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">Music Beta is a Service as defined in Section 1.1 of the <a href="http://www.google.com/accounts/TOS" style="color: #1111cc;">Google Terms of Service</a> and is provided to you for your personal, non-commercial use solely in connection with lawfully acquired music files from your personal collection that you choose to make available to yourself through the Service, including all data comprising, describing, or associated with each music file that you choose to upload, such as audio data, metadata, and album art for each selected file (whether referring to individual uploaded files or to your entire uploaded library, "Your Music"). Music Beta consists of (a) Google-provided server space that you can use for storage of Your Music, and (b) software applications and related web sites and services that allow you to upload, manage, access, and play back Your Music through a web browser or through any supported, Service-enabled device. To the extent that you use the Music Application for Android devices in conjunction with Music Beta, those uses are governed by the Terms, including these Additional Terms.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Trial Service Availability and Limitations</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">Music Beta is a trial or "beta" Service from Google that requires you to register with your new or existing Google account. It is available free for a limited time to residents of the United States (including its territories and protectorates) who have received an invitation from Google and accept the invitation by signing into their Google account to register for use of the Service. As a beta Service, certain limits on storage or usage may apply; these limits may be set or changed by Google at any time, at Google's discretion, and you agree that you will not attempt to obstruct or prevent the application of those Service limits at any time, or to manipulate your usage of the Service to avoid or circumvent them. You can find more information about applicable Service limits through the Music Beta Help Center.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Third Party Fees</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">Music Beta is available without charge from Google; however, you may incur access or data fees from third parties (such as your internet provider or mobile carrier) in connection with your use of the Service. You are responsible for all such third-party charges for your use of Music Beta on or through third party services and devices.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Privacy and Your Personal Information</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">Section 7 of the Google Terms of Service governing Music Beta by Google is replaced in its entirety by the following:</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">7.1 For information about Google's data protection practices, please read the Music Beta by Google Privacy Policy at <a href="http://music.google.com/about/privacy.html" style="color: #1111cc;">http://music.google.com/about/privacy.html</a>. This policy explains how Google treats your personal information, and protects your privacy, when you use the Service.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">7.2 You agree to the use of your data in accordance with Google's privacy policies.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Your Permissions and Instructions to Google</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">Section 11 of the Google Terms of Service governing Music Beta by Google is replaced in its entirety by the following:</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">11.1 You retain any rights you already hold in Your Music. You acknowledge and agree that you are solely responsible for your own conduct and Content (including Your Music) while using the Service and for any consequences thereof. You agree to use the Service only for purposes that are legal, proper, and in accordance with these Terms, and that by using the Service you are requesting that Google make all of the necessary functions and features of the Service available to you in order to facilitate your use of Your Music according to the Terms. Without limiting the generality of this overall permission and instruction, you specifically agree that you are instructing Google to perform the functions described in Sections 11.2, 11.3, and 11.4 below.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">11.2 By uploading or submitting Your Music to or through the Service, you are directing Google to store a unique copy of Your Music on your behalf and to make it accessible to you through the use of your login credentials.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">11.3 By accessing, managing, playing back, displaying, or using all or any part of Your Music on or through the Service, you are directing Google to initiate and perform the corresponding functions on your behalf, together with any related steps necessary to achieve them, through the Service.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">11.4 You understand that Google, in performing the required technical steps to provide you with the Service as described in the Terms, may (a) transmit Your Music over various public networks and in various media; and (b) make such changes to Your Music as are necessary to conform and adapt it to the technical requirements of connecting networks, devices, services, or media. You agree that in each such instance, your use of the Service includes a direction to Google to take these actions on your behalf.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">11.5 You confirm and warrant to Google that you have all the rights, power and authority to grant any permissions and give any instructions to Google that may be required to perform the actions necessary to provide you with the Service. You agree that you will not upload, submit, access, manage, play back, display or use any Content (including any portion of Your Music), or direct Google to do anything with Your Music on your behalf, unless you have all of the necessary rights to do so without infringing the rights of any third party or violating any laws or agreements that apply to you, the Content, or Your Music.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Copyright Notices</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">It is Google's policy to respond to notices of alleged copyright infringement that comply with applicable intellectual property law (including, in the United States, the Digital Millennium Copyright Act) and to terminate the accounts of repeat infringers. Details of Google's policy can be found at <a href="http://www.google.com/dmca.html" style="color: #1111cc;">http://www.google.com/dmca.html</a>.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Third Party Software</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">To the extent that Music Beta includes components governed by third party or open source licenses with provisions inconsistent with the Terms, those components are instead governed solely by the applicable third party or open source licenses. Information regarding those licenses (except for software provided by Gracenote, Inc., for which the terms are included at the end of this agreement) can be obtained at the following location:<a href="http://music.google.com/about/thirdparty.html" style="color: #1111cc;">http://music.google.com/about/thirdparty.html</a>.</div><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Acceptance of Terms</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">You accept the Terms either by clicking to accept the Additional Terms presented to you when you first access the Service or by using Music Beta by Google. Your continued use of the Service constitutes your consent to the Terms (as may be modified from time to time, in whole or in part, with or without notice). It is your responsibility to review the Additional Terms regularly for updates. If you do not agree to the Terms, you may not use the Service.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">You can review, print or save a copy of these Additional Terms of Service for Music Beta by Google (and navigate to other links referenced in the Additional Terms) by visiting the Additional Terms web page at:<a href="http://music.google.com/about/terms.html" style="color: #1111cc;">http://music.google.com/about/terms.html</a>.</div><hr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><h3 id="information" style="color: #222222; font-family: arial, sans-serif; font-size: 1.08em; line-height: 1.2; margin-bottom: 0.93em; margin-left: 0px; margin-right: 0px; margin-top: 1.4em;">Gracenote Software</h3><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">This application or device may contain software from Gracenote, Inc. of Emeryville, California ("Gracenote"). The software from Gracenote (the "Gracenote Software") enables this application to perform disc and/or file identification and obtain music-related information ("Gracenote Data") from online servers or embedded databases (collectively, "Gracenote Servers") and to perform other functions. You may use Gracenote Data only by means of the intended end-user functions of this application or device.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">This application may contain content belonging to Gracenote's providers. If so, all of the restrictions set forth herein with respect to Gracenote Data shall also apply to such content and such content providers shall be entitled to all of the benefits and protections set forth herein that are available to Gracenote. You agree that you will use Gracenote Data, the Gracenote Software, and Gracenote Servers for your own personal non-commercial use only. You agree not to assign, copy, transfer or transmit the Gracenote Software or any Gracenote Data to any third party. YOU AGREE NOT TO USE OR EXPLOIT GRACENOTE DATA, THE GRACENOTE SOFTWARE, OR GRACENOTE SERVERS, EXCEPT AS EXPRESSLY PERMITTED HEREIN.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">You agree that your non-exclusive license to use the Gracenote Data, the Gracenote Software, and Gracenote Servers will terminate if you violate these restrictions. If your license terminates, you agree to cease any and all use of the Gracenote Data, the Gracenote Software, and Gracenote Servers. Gracenote reserves all rights in Gracenote Data, the Gracenote Software, and the Gracenote Servers, including all ownership rights. Under no circumstances will Gracenote become liable for any payment to you for any information that you provide. You agree that Gracenote, Inc. may enforce its rights under this Agreement against you directly in its own name.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">The Gracenote service may use a unique identifier to track queries for statistical purposes. The purpose of a randomly assigned numeric identifier is to allow the Gracenote service to count queries without knowing anything about who you are. For more information, see the web page for the Gracenote Privacy Policy for the Gracenote service.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">The Gracenote Software and each item of Gracenote Data are licensed to you "AS IS." Gracenote makes no representations or warranties, express or implied, regarding the accuracy of any Gracenote Data from in the Gracenote Servers. Gracenote reserves the right to delete data from the Gracenote Servers or to change data categories for any cause that Gracenote deems sufficient. No warranty is made that the Gracenote Software or Gracenote Servers are error-free or that functioning of Gracenote Software or Gracenote Servers will be uninterrupted. Gracenote is not obligated to provide you with new enhanced or additional data types or categories that Gracenote may provide in the future and is free to discontinue its services at any time. GRACENOTE DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. GRACENOTE DOES NOT WARRANT THE RESULTS THAT WILL BE OBTAINED BY YOUR USE OF THE GRACENOTE SOFTWARE OR ANY GRACENOTE SERVER. IN NO CASE WILL GRACENOTE BE LIABLE FOR ANY CONSEQUENTIAL OR INCIDENTAL DAMAGES OR FOR ANY LOST PROFITS OR LOST REVENUES.</div><div style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;">© 2011. Gracenote, Inc. All Rights Reserved</div><hr style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /></blockquote>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com4tag:blogger.com,1999:blog-203080733111610229.post-80564226530203481872011-05-27T16:15:00.000+10:002011-05-27T16:15:47.383+10:00$100 Free Google Adwords Credit - from Hong Kong to Australia<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheb5oOjs-m8WDDb2ZKjOze561vhKaO1_N5x_nH2bNbL9lTAgLnJ2v28Xm-tR-EOLwVcp8EOXnvl0znkcl5kKdAefjh01FlX8ByyRNtcK5kqu0OVTHs5vg1-XroJF9rHf8ZIwmySdj4O4Q/s1600/Google+AdWords+Envelope.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheb5oOjs-m8WDDb2ZKjOze561vhKaO1_N5x_nH2bNbL9lTAgLnJ2v28Xm-tR-EOLwVcp8EOXnvl0znkcl5kKdAefjh01FlX8ByyRNtcK5kqu0OVTHs5vg1-XroJF9rHf8ZIwmySdj4O4Q/s320/Google+AdWords+Envelope.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Mail from Hong Kong</td></tr>
</tbody></table>Today I received a letter from Google. The postmark and return address were both labeled "Hong Kong". Naturally I was more than a little curious as to what Google might be sending me from Hong Kong. As it turns out, the letter wasn't anything to do with Hong Kong at all.<br />
<br />
The envelope contained a $100 gift card from Google Adwords, and a letter signed by Lucinda Barlow, Head of Marketing for Google <i>Australia</i>. Not Hong Kong. Either Google Australia uses Hong Kong for some of their mailouts, or they're sending out a global campaign and attaching local signatures depending on the destination. Either way, it's pretty crazy that mail sent to Australia comes from Hong Kong.<br />
<br />
The full letter transcript is below:<br />
<blockquote><b>Come back to AdWords and get $100 in free advertising</b><br />
<br />
Hello from Google!<br />
<br />
We understand how important it is for a business to stand out online - and that's one of the main reasons small businesses use Google AdWords everyday. Over the past year, we've made a lot of changes to make AdWords easier to use, and to help ensure your online ad campaigns deliver the results you expect. We hope you'll try AdWords again and are giving you $100 to get started.<br />
<br />
There are a lot of things you can do to make your campaign more successful - refine your keywords, change your bid, or maybe try a new headline. We'd like to recommend the AdWords Online Classroom (<a href="http://www.google.com.au/adwords/classroom">www.google.com.au/adwords/classroom</a>). It's a free resource that offers a series of video tutorials covering quick tips designed to help you get the most out of AdWords.<br />
<br />
The first step is redeeming your $100 and reactivating your campaign. Then, it's just a matter of time, and a little bit of effort, before you start attracting new customers to your business.<br />
<br />
Sincerely,<br />
<br />
Lucinda Barlow<br />
Head of Marketing, Google Australia</blockquote>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com6tag:blogger.com,1999:blog-203080733111610229.post-30653546486002303432011-04-14T14:17:00.000+10:002011-04-14T14:17:53.173+10:00Reset buttons - useful or not?<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG7qrrZNef5_dOhS-IdxlAziUq70L2R-30BkW88BVtrYMBcGUw4e231bDBLfePCgrRp99VFiuxrTiqjersA33c3R3fEuwxF6abyoJ8S8FIwd-_1-I-a6D0oVQtGEAKjgWDHzNcq5SGqyM/s1600/logo-128.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG7qrrZNef5_dOhS-IdxlAziUq70L2R-30BkW88BVtrYMBcGUw4e231bDBLfePCgrRp99VFiuxrTiqjersA33c3R3fEuwxF6abyoJ8S8FIwd-_1-I-a6D0oVQtGEAKjgWDHzNcq5SGqyM/s1600/logo-128.png" /></a></div>I've seen quite a few blogs posts lately complaining about the HTML Reset button. You know, the one that often sits beside the "Submit" button. I think everyone must have accidentally hit Reset at least once. So what's the use of it? Personally I have never seen a web form where a Reset button is necessary. And I <i>have</i> accidentally hit Reset many times - especially when it's placed in the position you normally find the Submit button.<br />
<br />
This afternoon I wrote up a quick <a href="https://chrome.google.com/webstore/detail/dfpgegiedgjkfdnfoenjabppfeemmicl">Google Chrome extension to hide all Reset buttons</a>. Are you sick of accidentally clicking the wrong button? Try out the extension and let me know what you think.Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com1tag:blogger.com,1999:blog-203080733111610229.post-43245174762372314892011-04-07T14:02:00.000+10:002011-04-07T14:02:17.801+10:00Google AdMob Earnings Checker (Chrome Extension)Earlier this week I wrote up my first Chrome extension - the <a href="https://chrome.google.com/extensions/detail/ckdhdeeobkehagfgbmfgahljgldnmiib">AdMob Earnings Checker</a>. It's really easy to build extensions for Chrome - basically just stick a bunch of HTML and Javascript in a zipped folder, upload it and you're done. It took me less than an hour to build this guy (taking reference from a similar extension for AdSense).<br />
<br />
The hardest part was actually decoding the AdMob page with the JQuery parser - take a look at the source of your AdMob sites page and you'll see what I mean. Not valid HTML by any means. I had to manually strip some tags in order to get JQuery to accept it as pseudo-html. Once I got over that difficulty though, it was pretty straight forward.<br />
<br />
So if you develop <a href="http://makingmoneywithandroid.blogspot.com/">Android apps</a>, or operate any kind of mobile website using Google's advertising services, you might like to <a href="https://chrome.google.com/extensions/detail/ckdhdeeobkehagfgbmfgahljgldnmiib">check out the extension</a>. Any feedback would be appreciated!Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com1tag:blogger.com,1999:blog-203080733111610229.post-37754345064679577872011-03-20T13:48:00.000+10:002011-03-20T13:48:21.305+10:00PHP Error: Permission denied in Unknown at line 0 [FIX]I was setting up a quick PHP test in my home directory today, but when I tried to load my file (http://localhost/~david/test.php) I encountered a strange error:<br />
<br />
<pre><code>Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 Fatal error: Unknown: Failed opening required '/home/david/public_html/test.php' (include_path='.:/usr/share/php5/PEAR:/usr/share/php5') in Unknown on line 0</code></pre><br />
My code was pretty simple - no "include" or "require" statements anywhere, and perfectly valid syntax. This puzzled me for some time - it appeared as if PHP was trying to "require" my test file in itself. As it turns out, that wasn't too far from the truth.<br />
<br />
This error was simply caused by Apache (and therefore PHP) not having read permissions to my PHP file. So it could tell that the file was there (otherwise I would get a 404 error), but when PHP tried to open the file for reading it failed, due to my file permissions (in this case, 007). To fix the problem, I simply had to run:<br />
<br />
<pre><code>chmod 777 /home/david/test.php</code></pre><br />
After this my PHP code ran perfectly. It's worth knowing that this kind of error can occur - it might save a lot of Googling like I had to do!<br />
<br />
Note: Normally I wouldn't change the permissions on a PHP file to 777 (everyone has full access, including write). However, in this case it was just a simple test page running on localhost, so I wasn't too worried about security.Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com1tag:blogger.com,1999:blog-203080733111610229.post-67807729919860498232011-03-09T10:35:00.000+10:002011-03-09T10:35:12.695+10:00[FIX] qt-facetrainer does not generate model for user (pam-face-authentication on openSuSE)I was setting up the <a href="http://code.google.com/p/pam-face-authentication/">pam-face-authentication</a> module using opencv on openSuSE today (following <a href="http://en.opensuse.org/openSUSE:Pam-face-authentication_project">this guide</a>). The installation process went well, using the <a href="http://software.opensuse.org/ymp/home:cabelo:pam-face-authentication/openSUSE_Factory/pam-face-authentication.ymp">one-click-install package</a>. However, after running <code>qt-facetrainer</code> and adding the correct entries to <code>/etc/pam.d/sudo</code> I encountered the following error:<br />
<blockquote><code><br />
david@laptop:~> sudo -s<br />
> Camera 0<br />
mmap: Invalid argument<br />
munmap: Invalid argument<br />
munmap: Invalid argument<br />
munmap: Invalid argument<br />
munmap: Invalid argument<br />
Unable to stop the stream.: Bad file descriptor<br />
munmap: Invalid argument<br />
munmap: Invalid argument<br />
munmap: Invalid argument<br />
munmap: Invalid argument<br />
Face Verification Pluggable Authentication Module Started<br />
Biometrics Model not Generated for the User.<br />
Giving Up Face Authentication. Try Again=(.<br />
root's password:<br />
root's password:<br />
sudo: pam_authenticate: Authentication token manipulation error<br />
</code></blockquote>The fix turned out to be simple. Instead of running <code>qt-facetrainer</code> as myself, I had to run it as root (<code>kdesu qt-facetrainer</code>). This generated a face model for the root user, which allows me to authenticate myself as root using <code>sudo</code>. I still encounter the munmap errors, but I am now able to authenticate myself for <code>su</code> and <code>sudo</code> using face recognition!Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-75335083453921049902010-09-09T17:45:00.000+10:002010-09-09T17:45:16.691+10:00Testing Google InstantGoogle Instant was released today, for a certain subset of users only. <a href="http://googleblog.blogspot.com/2010/09/search-now-faster-than-speed-of-type.html">Google announced in their blog post</a> that <a href="http://www.google.com/instant">Google Instant</a> is a new means of "googling". Instant search means that you only have to type a few letters of your search query, and Google search will instantly show you search results (before you press the enter key). As you enter more letters, the search results will instantly update, without having to reload the page. This search system was developed using JavaScript in the front end, along with Google's highly developed and fast search system behind it all. Query times of 0.3 seconds are very significant when your search results are updating as every character is typed!<br />
<br />
Please note: This post is a test for Google Instant. I went to google.com, typed in "testing" and one of the top suggestion results was "<a href="http://www.google.com/?q=testing+google+instant">testing google instant</a>". I'll test and see if this blog post appears in the results quickly.Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-38051360646113347562010-08-31T13:42:00.003+10:002010-09-21T10:26:57.524+10:00Book Review - The Shadow Of The Bear (Regina Doman)<h2 title="Book Review for The Shadow of the Bear">The Shadow of the Bear</h2>by <a href="http://phoenixreviews.info/author/regina-doman">Regina Doman</a> <br />
<div class="cover"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><img src="http://ecx.images-amazon.com/images/I/51aZ-5rrv2L._SL500_AA300_.jpg" style="margin-left: auto; margin-right: auto;" title="The Shadow of the Bear" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>The Shadow of the Bear</b></td></tr>
</tbody></table></div><h3>Description</h3>When Bear, a mysterious young man, lands on Blanche and Rose Brier's doorstep in New York City, the two sisters have conflicting opinions on whether or not he is dangerous. Even as Blanche learns to trust him, her fears that Bear's friendship threatens their family prove terrifyingly true. A modern retelling of the classic Brothers Grimm fairytale.<br />
<br />
<a href="http://www.amazon.com/dp/0981931804/?tag=pxr-20">Read more on Amazon...</a> <br />
<h3>Personal Review</h3>This book is a classic - one that I've read many times and will read again. The adaptation of the fairy tale "Snow White and Rose Red" is set in modern New York City, and fits in very well with this environment. But don't think this is just a children's fairy tale - anyone who has read Chesterton or is versed in classical literature will appreciate the quotes that come up throughout the story in casual conversation. The characters are engaging and varied - some are drug dealers, some classical poets, while others appear to be both! And surprisingly all the dialog sounds natural, despite dealing in some depth with many aspects of faith and life.<br />
<br />
Some of the topics covered in a unique and realistic manner include modesty, judging people, revenge and peer pressure. You might think that having such a strong Christian moral the storyline would be weak - quite the opposite! The action and events in this story themselves make for a great read, the moral values simply add to this book's appeal.<br />
Anyone from early teens on would definitely enjoy reading this book, although older teens would have a greater appreciation of the relationship aspects. This book is suitable for younger readers than Waking Rose or The Midnight Dancers (which deal with relationships at a higher level).<br />
<h3>Violence (6/10) <img alt="Rating: 6/10" class="ratingbar" src="http://phoenixreviews.info/ratingbar/6/10" title="Rating: 6/10" /></h3>There are some moderately violent scenes in this book. However, the level of violence seems appropriate to the story, and adds a level of realism without being overly graphic.<br />
<br />
Some of the violent aspects include:<br />
<ul><li>A gang of boys attack a boy and girl, and the girl is thrown to the ground</li>
<li>One character is nearly asphyxiated</li>
<li>A girl is forced into a car, and held against her will</li>
<li>People are held at gunpoint several times</li>
<li>One character is shot and wounded (not life-threatening)</li>
<li>A character threatens suicide</li>
</ul>Anyone from early teens onward should be able to handle the level violence in this book. More conservative parents might wish to read the book first though, to be sure.<br />
<h3>Immorality (6/10) <img alt="Rating: 6/10" class="ratingbar" src="http://phoenixreviews.info/ratingbar/6/10" title="Rating: 6/10" /></h3>One of the major themes of this book is drug dealing. While innocent characters are sometimes suspected of illicit dealings, it's always very clear that using or handling drugs is wrong.<br />
<br />
Some high school students are smoking cigarettes without permission or adult supervision. These are students with a bad reputation, and it's obvious that what they're doing is wrong.<br />
<br />
In once scence, a boy is alone with a girl and tries to force a kiss (nothing further ensues though). This particular issue is handled very well, and later on in the book the girl gives a marvelous treatise on morality and character.<br />
<h3>Language (1/10) <img alt="Rating: 1/10" class="ratingbar" src="http://phoenixreviews.info/ratingbar/1/10" title="Rating: 1/10" /></h3>The language is exceptionally clean throughout this book, a remarkable achievement considering some of the characters involved.<br />
<h3>SN Themes (3/10) <img alt="Rating: 3/10" class="ratingbar" src="http://phoenixreviews.info/ratingbar/3/10" title="Rating: 3/10" /></h3>The characters' moral struggles feature prominently in this book, but no real supernatural themes. A Catholic church is regarded as "sacred" but this feature isn't dwelt on. There is a brief scene where the number "666" is used by the "bad guy".<br />
<br />
Overall, the story is very light on supernatural elements, despite it's strong moral content. It's written as a fairy tale, and can be read as such.<br />
<h3>Catholic Perspective</h3>Catholics will love this book. The author has portrayed strong Catholic values in a way that makes sense. Anyone who comes from a Catholic background will find a lot to relate to.<br />
<br />
But <i>The Shadow Of The Bear</i> also has strong appeal for Christians of any kind. The characters are current-day teenagers with many of the real-world challenges faced in this role. The specifically Catholic aspects aren't overbearing - they're just part of the characters' lives. Overall, this is a refreshing and energising book for any young Christian. It shows that belief in God is not irrelevant or boring, and can even lead to adventure!<br />
<br />
<a href="http://www.amazon.com/dp/0981931804/?tag=pxr-20">Read more on Amazon...</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com1tag:blogger.com,1999:blog-203080733111610229.post-74366257449999011522010-08-30T09:29:00.001+10:002010-08-30T10:00:10.557+10:00Symfony 'String could not be parsed as XML'I was receiving this error on my symfony project (using the sfWhoIsOnline plugin):<br />
<br />
<pre><code>[28-Aug-2010 21:50:54] PHP Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/xxxxxxx/plugins/sfWhoIsOnlinePlugin/lib/sfWhoIsOnlineUserFacade.class.php:38
Stack trace:
#0 /home/xxxxxxx/plugins/sfWhoIsOnlinePlugin/lib/sfWhoIsOnlineUserFacade.class.php(38): SimpleXMLElement->__construct('')
#1 /home/xxxxxxx/plugins/sfWhoIsOnlinePlugin/lib/filter/sfWhoIsOnlineFilter.class.php(14): sfWhoIsOnlineUserFacade::registerUser(Object(myUser))
#2 /home/xxxxxxx/cache/frontend/prod/config/config_core_compile.yml.php(1026): sfWhoIsOnlineFilter->execute(Object(sfFilterChain))
#3 /home/xxxxxxx/plugins/sfDoctrineGuardPlugin/lib/sfGuardRememberMeFilter.class.php(56): sfFilterChain->execute()
#4 /home/xxxxxxx/cache/frontend/prod/config/config_core_compile.yml.php(1026): sfGuardRememberMeFilter->execute(Object(sfFilterChain))
#5 /home/xxxxxxx/cache/frontend/prod/config/config_core_compile.yml.php(990): sfFilterChain->execute()
#6 /home/xxxxxxx/cache/frontend/prod/config/config_core_compile.yml.php(1026): sfRenderingFilt in /home/xxxxxxx/plugins/sfWhoIsOnlinePlugin/lib/sfWhoIsOnlineUserFacade.class.php on line 38
[29-Aug-2010 00:06:48] String could not be parsed as XML
[29-Aug-2010 02:14:47] String could not be parsed as XML</code></pre><br />
Turns out, SimpleXMLElement can't handle empty strings or badly encoded documents well. As a patch of sorts, I replaced the code at line 38 in the sfWhoIsOnlineUserFacade class with the following lines (original lines in bold):<br />
<br />
<pre><code>/* Begin Hack to fix error 'String could not be parsed as XML' */
try {
<b>$xml = new SimpleXMLElement($xmlString); // <-- Original line 38</b> <b> </b></code></pre><pre><b>$instance->fromXml($xml); </b><b>// <-- Original line 39</b>
} catch (Exception $e) {
sfContext::getInstance()->getLogger()->crit('sfWhoIsOnline failed to create SimpleXMLElement');
sfContext::getInstance()->getLogger()->crit('xmlString: '.$xmlString);
}
/* End Hack */</pre><br />
References:<br />
<a href="http://drupal.org/node/541892">http://drupal.org/node/541892</a><br />
<a href="http://weierophinney.net/matthew/archives/111-mbstring-comes-to-the-rescue.html">http://weierophinney.net/matthew/archives/111-mbstring-comes-to-the-rescue.html</a><br />
<a href="http://www.google.com/search?hl=en&q=String+could+not+be+parsed+as+XML&aq=f&aqi=&aql=&oq=&gs_rfai=">http://www.google.com/search?hl=en&q=String+could+not+be+parsed+as+XML&aq=f&aqi=&aql=&oq=&gs_rfai=</a><br />
<a href="http://ketarin.canneverbe.com/forum/viewtopic.php?id=384">http://ketarin.canneverbe.com/forum/viewtopic.php?id=384</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-49275046770697371702010-08-22T10:29:00.000+10:002010-08-22T10:29:32.251+10:00Undelete a Linux file<a href="http://spin.atomicobject.com/2010/08/18/undelete?utm_source=y-combinator&utm_medium=social-media&utm_campaign=technical">Undelete! | Atomic Object, Software Design & Development</a>:<br />How to undelete a file removed with the 'rm' command on Linux<br />"grep -a -B 25 -A 100 'some string in the file' /dev/sda1 > results.txtAnonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-29473244015553308872010-08-19T09:55:00.000+10:002010-08-19T09:55:02.630+10:00Install phploc on openSuSE 11.3 [HOWTO]Once you've got PEAR installed, run these commands (as root): <br />
<br />
<code>pear channel-discover pear.phpunit.de</code><br />
<code> pear channel-discover components.ez.no</code><br />
<code>pear install phpunit/phploc<br />
<br />
</code><br />
At first I was getting errors:<br />
<code><br />
phpunit/File_Iterator requires PEAR Installer (version >= 1.9.1), installed version is 1.9.0<br />
phpunit/phploc requires package "phpunit/File_Iterator" (version >= 1.2.0)<br />
No valid packages found<br />
install failed<br />
</code><br />
<br />
But running:<br />
<code><br />
pear upgrade-all<br />
</code><br />
<br />
fixed all the errors.Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-38790993420555124982010-08-09T13:08:00.000+10:002010-08-09T13:08:46.745+10:00Use ssh-copy-id on a non-default port<code><a href="http://linux.die.net/man/1/ssh-copy-id">ssh-copy-id</a></code> has <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=99785">known</a> <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=510932">problems</a> with handling non-standard ports (e.g. connecting to a different port than 22). To overcome this issue, use a command like:<br />
<br />
<code class="syntax"><span class="nv">$ </span>ssh-copy-id <span class="s2">"user@host -p 6842" </span></code><br />
<br />
Source:<a href="http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html">http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-12399482307263592882010-07-13T15:58:00.000+10:002010-07-13T15:58:09.086+10:00How to Enable SSH in ESXi – VMware « Code Ghar<a href="http://codeghar.wordpress.com/2009/06/10/ssh-in-esxi/">How to Enable SSH in ESXi – VMware « Code Ghar</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-83554056394949954162010-07-07T10:58:00.000+10:002010-07-07T10:58:31.403+10:00[FIX] Migrate Windows Server 2003 to VMWare ESXi fails to boot - white non-flashing curserI recently used VMWare Standalone Converter to migrate a physical Windows Server 2003 machine to a Virtual machine Infrastructure host. However, the machine would not boot up on ESXi 4. All that appeared on the screen was a white, non-blinking cursor at the top left of the screen.<br />
<br />
Turns out, after a lot of troubleshooting, that ESXi can't handle virtual IDE drives - they must be SCSI, either LSI Logic or Bus Logic. After following this <a href="http://codeghar.wordpress.com/2009/06/10/ssh-in-esxi/">guide to setup SSH on ESX server</a>, I then followed the instructions at the VMWare help site to <a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1016192">convert the virtual IDE disk to SCSI</a> (with LSI Logic controller). I used vi to edit the required file, as nano is not available on ESXi.<br />
<br />
After the conversion was complete, the machine booted perfectly.Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-76869810851877448472010-06-24T12:58:00.000+10:002010-06-24T12:58:54.406+10:00Symfony / sfGuardUser: MySQL errno: 150 Failing Query "ALTER TABLE sf_guard_user......."I've been trying to link up my symfony project (using Doctrine) to <a href="http://trac.symfony-project.org/wiki/sfGuardPluginExtraDocumentation">sfGuardPlugin with profiles</a>. However, when trying to rebuild the schema and insert sql, I encountered the following error:<br />
<code><br />
SQLSTATE[HY000]: General error: 1005 Can't create table 'phoenix.#sql-740_d7' (errno: 150). Failing Query: "ALTER TABLE sf_guard_user_profile ADD CONSTRAINT sf_guard_user_profile_user_id_sf_guard_user_id FOREIGN KEY (user_id) REFERENCES sf_guard_user(id)". Failing Query: ALTER TABLE sf_guard_user_profile ADD CONSTRAINT sf_guard_user_profile_user_id_sf_guard_user_id FOREIGN KEY (user_id) REFERENCES sf_guard_user(id) <br />
</code><br />
<br />
This isn't an incredibly useful error message. Turns out that it's to do with the way MySQL handles cascading constraints. To cut a long story short, there's more info in the links posted below, but basically you need to remember that "type: integer" <i>does not mean it will be stored as INTEGER in MySQL</i>. As a matter of fact, "type: integer" in a schema.yml file translates into a "BIGINT(20)" in MySQL - which means when you add a constraint to a normal INTEGER field, it fails.<br />
<br />
To store an integer value in schema.yml, use "type: integer(4)". This will translate into a type of INTEGER in MySQL.<br />
<br />
Explained in a comment I found:<br />
<dl><dd class=" "> Something you might be interested in, that took me quarter an hour. integer(11) in schema.yml does not result in int(11) in MySQL, but instead you have to write integer(4) in your schema.yml.
integer integer int/serial
integer(1) tinyint smallint/serial
integer(2) smallint smallint/serial
integer(3) mediumint int/serial
integer(4) int int/serial
integer(5) bigint bigint/bigserial
However, in my case integer without a number resulted in BIGINT.
</dd></dl><br />
<br />
More info:<br />
<a href="http://trac.symfony-project.org/wiki/sfGuardPluginExtraDocumentation">http://trac.symfony-project.org/wiki/sfGuardPluginExtraDocumentation</a><br />
<a href="http://mirmodynamics.com/post/2009/04/02/SQLSTATE%5BHY000%5D%3A-General-error%3A-1005-Can-t-create-table-*-%28errno%3A-150%29">http://mirmodynamics.com/post/2009/04/02/SQLSTATE%5BHY000%5D%3A-General-error%3A-1005-Can-t-create-table-*-%28errno%3A-150%29</a> (especially see the last comment)<br />
<a href="http://bytes.com/topic/mysql/answers/865699-cant-create-table-errno-150-foreign-key-constraints">http://bytes.com/topic/mysql/answers/865699-cant-create-table-errno-150-foreign-key-constraints</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com5tag:blogger.com,1999:blog-203080733111610229.post-5465742658935727802010-06-04T21:47:00.000+10:002010-06-04T21:47:02.348+10:00WeReward brings incentive advertising to iPhone<p><em>This is a Sponsored Post written by me on behalf of <a href="http://socialspark.com/metrics/click/disclosure?slot_id=300792&url=http%3A%2F%2Fbit.ly%2FboFzgu" rel="nofollow">IZEA</a>. All opinions are 100% mine.</em></p><br />
<img alt="Chops" src="http://socialspark.com/uploads/socialspark/public/assets/3282/Chops.png" style="float: right;" /> WeReward (<a href="http://socialspark.com/metrics/click/post?slot_id=300792&url=http%3A%2F%2Fbit.ly%2FboFzgu" rel="nofollow">WeReward.com</a>) is a new iPhone app from Izea (the makers of PayPerPost and Sponzai, among various similar services).<br />
<br />
Their latest offering is basically a way for iPhone users to make money by performing small, easy-to-do actions on their mobile device. The application integrates with Facebook, Twitter and Foursquare, and offers a variety of incentiv-ized postings.<br />
<br />
According the the official website:<br />
<blockquote>Earn WeReward points by completing tasks and checkins at your favorite businesses with your iPhone. Each point is worth a penny, earn 1,000 points and cashout to PayPal.</blockquote>1000 points is equal to $10 at that conversion rate, which is pretty decent. Of course, it will take a long time to make much money when you're getting paid one penny for each tweet/checkin/share. But it all adds up.<br />
<br />
The key to this application succeeding is the location-based relevance. Because offers are tailored to your location, many of the offers you see will actually be useful. In fact, your friends may find your posts helpful, because in many cases they are things that you would already be posting about anyway.<br />
<br />
If you can get paid to do stuff that's useful to your friends, and takes little or no extra effort on your behalf, what's the catch? Nothing, really. If you're prepared to take a small amount of time and risk your reputation posting advertisements on your profile, there's nothing else that could really go wrong. Personally I would do it - provided the offers are relevant. <br />
<br />
If you have an iPhone you can <a href="http://socialspark.com/metrics/click/post?slot_id=300792&url=http%3A%2F%2Fbit.ly%2FboFzgu" rel="nofollow">Download the App</a> today - it only takes a minute. I'd love to hear your feedback (as I don't have an iPhone myself - I use Android). It's something I would definitely use myself, and helps to progress the whole micro-payments infrastructure. Interesting also that they use PayPal for payments. This is a sensible choice, but given MasterCard's entry into the market is something that could change relatively quickly.<br />
<br />
Check out the video of how it works in action:<br />
<object height="385" width="640"><param name="movie" value="http://www.youtube.com/v/acDOZheA7GA&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/acDOZheA7GA&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><br />
<a href="http://socialspark.com/metrics/click/disclosure?slot_id=300792&url=http%3A%2F%2Fbit.ly%2FboFzgu" rel="nofollow"><img alt="Visit my sponsor: WeReward for iPhone" border="0" src="http://socialspark.com/metrics/view/post?slot_id=300792&url=http%3A%2F%2Fsocialspark.com%2Fimages%2Fdisclosure_badges%2Fdisclosure_badge_grey_three.png" style="border:0" /></a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com1tag:blogger.com,1999:blog-203080733111610229.post-9006288610466660802010-06-02T09:06:00.016+10:002010-06-04T21:17:46.238+10:00Javascript Card Guessing Game - Sample CodeI've been doing some coding in Javascript lately, and thought I would share some of the code I've been writing. Hopefully some of it will be useful for anyone looking for some sample code in Javascript, or examples of looping, keeping tallies, or writing basic functions.<br />
<br />
Without further ado, here is the code. It's a simple playing card guessing game.<br />
<a href="http://sites.google.com/site/wwwbigbyte/javascript-card-guessing-game.html?attredirects=0&d=1">Javascript Card Guessing Game</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-52785839362998951782010-06-01T14:00:00.023+10:002010-06-04T21:29:27.180+10:00Android: Using Accelerometer to Calculate Total ForceI'm in the process of building an app that calculates how far you could throw something, based on the speed you swing your phone. This involves tracking your phone's movement as you swing it, and calculating the total maximum force involved. I couldn't find any examples on how to do this, so I've mocked up a bit of a tutorial below.<br />
<br />
How do we get the accelerometer values?<br />
<code><br />
private SensorManager mgr=null;<br />
mgr=(SensorManager)ctxt.getSystemService(Context.SENSOR_SERVICE);<br />
mgr.registerListener(listener,<br />
mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),<br />
SensorManager.SENSOR_DELAY_UI);</code><br />
<code><br />
</code><br />
<code>private SensorEventListener listener=new SensorEventListener() {<br />
public void onSensorChanged(SensorEvent e) {<br />
if (e.sensor.getType()==Sensor.TYPE_ACCELEROMETER) {<br />
//Total acceleration will be sqrt(x^2+y^2+z^2)<br />
double netForce=e.values[0]*e.values[0]; //X axis <br />
netForce+=e.values[1]*e.values[1]; //Y axis<br />
netForce+=(e.values[2])*(e.values[2]); //Z axis (upwards)<br />
<br />
netForce = Math.sqrt(netForce) - SensorManager.GRAVITY_EARTH; //Take the square root, minus gravity<br />
<br />
Log.d("ForceCalculator", "Net force:"+netForce+"");<br />
}<br />
}<br />
<br />
public void onAccuracyChanged(Sensor sensor, int accuracy) {<br />
// unused<br />
}<br />
};<br />
</code><br />
<br />
This will create and register an event listener for the accelerometer. This listener then calculates the net force.<br />
<br />
This calculation is pretty self-explanatory. It involves three components - X axis, Y axis, and Z axis. To calculate the magnitude of these vector components, we simply take the square root of their combined squares:<br />
netForce = sqrt( x^2 + y^2 + z^2 )<br />
The only point to note is that we then subtract the acceleration due to gravity (approx. 9.8m/s^2). Otherwise we could have a resting acceleration of +9.8.<br />
<br />
Full code will be coming later, when I've got some more time to play around with it. For now, this should show you how to get net force using the accelerometer. Still to come is code to calculate maximum force over a specified period of time, with threshold starting and finishing velocities.Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com6tag:blogger.com,1999:blog-203080733111610229.post-852572127387748682010-05-26T13:27:00.000+10:002010-05-26T13:27:29.831+10:00How to lock & unlock the KDE4 screensaver from command lineHere are two DBUS commands you can use to start or stop the KDE4 screensaver (previously known as kscreensaver or kscreenlock) from the command line.<br />
Enter one of the following two commands into your linux shell (bash):<br />
<br />
<b>Lock:</b><br />
dbus-send --type=method_call --dest=org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock<br />
<br />
<b>Unlock without password:</b><br />
dbus-send --type=method_call --dest=org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.SetActive boolean:false<br />
<br />
Both these commands work with the latest KDE 4.3.5Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com1tag:blogger.com,1999:blog-203080733111610229.post-49044769888825770082010-05-14T16:04:00.002+10:002010-05-14T16:10:14.449+10:00HOW TO Install MetaTrader 4 on Linux<b>How to run Meta Trader 4 on Linux using WINE. </b><br />
<ol><li><b>Sign up for an account at a forex broker</b>, and download their MT4 installer. I used <a href="http://www.easy-forex.com/">Easy-Forex</a>, but this procedure should work for any version of <a href="http://www.metaquotes.net/en/metatrader4">Meta Trader 4.x</a>.</li>
<li><b>Install wine on your linux machine</b> (I used wine 1.1.44 on an openSuSE 11.2 machine). Also <a href="http://wiki.winehq.org/winetricks">download winetricks</a> (used to install additional libraries required by MetaTrader).</li>
<li>If you haven't used wine before, <b>run 'winecfg'</b> to create your installation directory. You can then click 'OK' to exit the dialog, or have a look around at the options (I used the defaults).</li>
<li><b>Start up a Windows computer</b>, and copy all the files in <span style="font-family: "Courier New",Courier,monospace;">C:\WINDOWS\Fonts</span> into the wine directory (<span style="font-family: "Courier New",Courier,monospace;">/home/username/.wine/drive_c/windows/Fonts</span>)</li>
<li><b>Run winetricks</b> to install mfc40 and mfc42:<br />
<span style="font-family: "Courier New",Courier,monospace;"><code> sh ./winetricks mfc40 mfc42</code></span></li>
<li><b>Run the MetaTrader installer</b> executable.<br />
<span style="font-family: "Courier New",Courier,monospace;"><code>wine ./mt4setup.exe</code></span></li>
</ol>That's it! You should now be able to run MetaTrader4 by clicking on the icon on the desktop, or running the following command in your Linux shell:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><code>wine /home/username/.wine/drive_c/Program\ Files/yourmt4installdirectory/terminal.exe</code></span><br />
<br />
If you have any more problems or questions, please contact me by leaving a comment. <b>MetaTrader is running fine for me under openSuSE 11.2 with the latest WINE</b> from the repositories, once MFC40, MFC42 and the correct fonts had been installed.<br />
<br />
<b>More information:</b><br />
<a href="http://appdb.winehq.org/objectManager.php?sClass=version&iId=2893">http://appdb.winehq.org/objectManager.php?sClass=version&iId=2893</a><br />
<a href="http://www.aboutcurrency.com/university/metatrader/installing_metatrader4_under_linux.shtml">http://www.aboutcurrency.com/university/metatrader/installing_metatrader4_under_linux.shtml</a><br />
<a href="http://easyforextrading4u.com/metatrader-linux/">http://easyforextrading4u.com/metatrader-linux/</a><br />
<br />
<b>Appendix</b>:<br />
When you first start MetaTrader4, it might take a while to initialise. You'll see something like the following in the shell output:<br />
<br />
<code>fixme:reg:GetNativeSystemInfo (0x58c4c8) using GetSystemInfo() <br />
fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot <br />
MetaQuotes Language 4 compiler version 4.00 build 224 (14 May 2009) <br />
Copyright 2001-2009, MetaQuotes Software Corp. <br />
<br />
Exp file "Z:\home\david\.wine\drive_c\Program Files\MT4 at easy-forex\experts\MACD Sample.ex4" produced - 0 error(s), 0 warning(s)<br />
Xlib: extension "Generic Event Extension" missing on display ":1000.0". <br />
fixme:reg:GetNativeSystemInfo (0x58c4c8) using GetSystemInfo() <br />
fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot <br />
MetaQuotes Language 4 compiler version 4.00 build 224 (14 May 2009) <br />
Copyright 2001-2009, MetaQuotes Software Corp. <br />
<br />
Exp file "Z:\home\david\.wine\drive_c\Program Files\MT4 at easy-forex\experts\Moving Average.ex4" produced - 0 error(s), 0 warning(s)<br />
Xlib: extension "Generic Event Extension" missing on display ":1000.0". <br />
fixme:reg:GetNativeSystemInfo (0x58c4c8) using GetSystemInfo() <br />
fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot <br />
MetaQuotes Language 4 compiler version 4.00 build 224 (14 May 2009) <br />
Copyright 2001-2009, MetaQuotes Software Corp. <br />
<br />
Exp file "Z:\home\david\.wine\drive_c\Program Files\MT4 at easy-forex\experts\indicators\Accumulation.ex4" produced - 0 error(s), 0 warning(s)<br />
Xlib: extension "Generic Event Extension" missing on display ":1000.0". <br />
fixme:reg:GetNativeSystemInfo (0x58c4c8) using GetSystemInfo() <br />
fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot <br />
MetaQuotes Language 4 compiler version 4.00 build 224 (14 May 2009) <br />
Copyright 2001-2009, MetaQuotes Software Corp.</code><br />
<br />
Some errors I was encountering before installing the mfc40 and mfc42 libraries:<br />
<code><br />
err:module:import_dll Library KERNELBASE.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Debug-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-ErrorHandling-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-File-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Handle-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Interlocked-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-LibraryLoader-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Localization-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-LocalRegistry-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Memory-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Misc-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-ProcessThreads-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Profile-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-String-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-Synch-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library API-MS-Win-Core-SysInfo-L1-1-0.dll (which is needed by L"C:\\windows\\system32\\MFC42.DLL") not found <br />
err:module:import_dll Library MFC42.DLL (which is needed by L"Z:\\home\\david\\.wine\\drive_c\\Program Files\\MT4 at easy-forex\\MetaEditor.exe") not found <br />
err:module:LdrInitializeThunk Main exe initialization for L"Z:\\home\\david\\.wine\\drive_c\\Program Files\\MT4 at easy-forex\\MetaEditor.exe" failed, status c0000135<br />
</code>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com1tag:blogger.com,1999:blog-203080733111610229.post-67920642344979044052010-04-29T16:13:00.000+10:002010-04-29T16:13:15.152+10:00Dual Monitor VNC on Ubuntu - with scalingTo get dual-monitor remote desktop over VNC working withUbuntu, I had to install x11vnc. With the default VNC server, only half of my desktop would appear with the other half blacked out. Also, the whole two screen layout would not fit within my VNC client window.Ultimately this is the command I came up with the start the VNC server:<br />
<br />
<b>x11vnc -xinerama -xwarppointer -scale 3/4 -noxdamage -ncache 10</b><br />
<br />
The first two arguments setup dual screen mode. The next one (<b>-scale 3/4</b>) scales the screen to 3/4 of it's original size (the scaling is done server-side). The <b>-noxdamage</b> argument prevented some annoying server errors that were appearing. And the <b>-ncache 10</b> option enables client-side pixel caching, which speeds up things considerably.<br />
<br />
References:<br />
<a href="http://ubuntuforums.org/showthread.php?t=535574">http://ubuntuforums.org/showthread.php?t=535574</a><br />
<a href="http://ubuntuforums.org/archive/index.php/t-252888.html">http://ubuntuforums.org/archive/index.php/t-252888.html </a><br />
<a href="https://help.ubuntu.com/community/VNC?action=show&redirect=VNCOverSSH">https://help.ubuntu.com/community/VNC?action=show&redirect=VNCOverSSH</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-38473660121779879642010-04-16T18:27:00.001+10:002010-04-16T18:29:47.546+10:00openSuSE 11.2 sound on HP dv7t-1000 - ALSA, Pulseaudio, and JACKIt took a lot to get this setup. I made the mistake of installing PulseAudio, and had to uninstall it before my sound would work in the slightest. But even then, I had jerky sound. The solution was to make some edits to my /etc/modprobe.d/50-sound.conf so that it appears as follows:<br />
<blockquote>options snd-hda-intel model=hp-m4 enable_msi=1<br />
# u1Nb.Jqboh86TqAC:82801I (ICH9 Family) HD Audio Controller<br />
alias snd-card-0 snd-hda-intel</blockquote>After making these changes, and restarting my computer, the sound worked again. I could start JACK with Rosegarden with no troubles (after doing the standard realtime permissions fix).<br />
<br />
Some links:<br />
<a href="http://www.alsa-project.org/main/index.php/SoundcardTesting">http://www.alsa-project.org/main/index.php/SoundcardTesting</a><br />
<a href="http://en.opensuse.org/SDB:AudioTroubleshooting">http://en.opensuse.org/SDB:AudioTroubleshooting</a><br />
<a href="http://en.opensuse.org/HCL/Laptops/HP#dv_7">http://en.opensuse.org/HCL/Laptops/HP#dv_7 </a><br />
<a href="http://en.opensuse.org/Alsa-update">http://en.opensuse.org/Alsa-update</a><br />
<a href="http://en.opensuse.org/SDB:Intel-HDA_sound_problems">http://en.opensuse.org/SDB:Intel-HDA_sound_problems</a><br />
<a href="http://hg.alsa-project.org/alsa-kernel/raw-file/5082de4abb26/Documentation/ALSA-Configuration.txt">http://hg.alsa-project.org/alsa-kernel/raw-file/5082de4abb26/Documentation/ALSA-Configuration.txt</a><br />
<a href="http://www.alsa-project.org/main/index.php/Matrix:Module-hda-intel">http://www.alsa-project.org/main/index.php/Matrix:Module-hda-intel</a><br />
<a href="http://akoskm.blogspot.com/2009/01/laptop-extra-keys-howto.html">http://akoskm.blogspot.com/2009/01/laptop-extra-keys-howto.html</a><br />
<a href="http://en.opensuse.org/Pulseaudio">http://en.opensuse.org/Pulseaudio</a><br />
<a href="http://pulseaudio.org/wiki/BrokenSoundDrivers">http://pulseaudio.org/wiki/BrokenSoundDrivers</a>Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0tag:blogger.com,1999:blog-203080733111610229.post-54584787420015091192010-04-14T14:57:00.000+10:002010-04-14T14:57:18.065+10:00ebay USB MIDI Interface on Ubuntu Linux (1a86:752d)I recently bought a USB MIDI interface off ebay. It was just a generic, pretty cheap made-in-china kind of model, with a red, orange and green light. It lit up red when I plugged it into my (Linux) computer, but showed up in lsusb as "Unknown" device:<br />
<blockquote>root@theta:~# lsusb<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 005 Device 003: ID 0461:0010 Primax Electronics, Ltd <br />
Bus 005 Device 002: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical<br />
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 002 Device 003: ID 046d:09b8 Logitech, Inc. <br />
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
<b>Bus 008 Device 004: ID 1a86:752d Unknown </b><br />
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub</blockquote>Turns out, even though it's listed as an unknown device, it still worked as a MIDI input. I just started up JACK Audio Server, Rosegarden, and ZynAddSubFx for an organ simulation. Then i plugged in the MIDI In and Out ports to my keyboard, hooked up the connections in JACK and it all worked!<br />
<br />
Being USB of course, there was some delay, and for some peculiar reason no keys below Middle C would work for me. But it works well on Sibelius!Anonymoushttp://www.blogger.com/profile/10926083515508779822noreply@blogger.com0