Dropbox is a popular, and well implemented cloud-based storage and synchronisation tool. You have a 'Dropbox' (think folder) in the cloud, and can install the Dropbox software on as many PCs or mobile devices you like. Then if you update the Dropbox from any system, the changes are synchronised to all the others.
To get the full details why not just view their video:
https://www.dropbox.com/tour
It really is a great tool, and it is Free up to certain storage limit. You can also gain more free storage by completing the tutorial, and referring other people. As well as all that, it also has in-built version control, so that if you save an incorrect change, or delete a file by accident, you can still go back to the last good version.
Why wouldn't you want this tool!? :)
Feel free to sign-up direct via the above link, but if you want to sign up as my referral we'll both get an extra 250MB - http://db.tt/PQ8dObt
Enjoy!
Monday, 5 September 2011
Sunday, 4 September 2011
Outlook Autocomplete Cache
I've been using Outlook for some time, and had some grumbles about the autocomplete feature remembering e-mail addresses that I no longer use or that I mis-typed once.
Recently realised it is fairly easy to control.
You can delete entires you don't want any more simply by highlighting them in the Autocomplete dropdown list and pressing the Delete key - how simple, and I never knew!
http://www.tech-recipes.com/rx/339/outlook_delete_autocomplete_email_addresses/
Also if you want to, this article shows how you can transfer the autocomplete cache between machines.
http://www.tech-recipes.com/rx/2833/outlook_transfer_autocomplete_addresses_to_a_new_computer/
Thanks to tech-recipes for those details.
Recently realised it is fairly easy to control.
You can delete entires you don't want any more simply by highlighting them in the Autocomplete dropdown list and pressing the Delete key - how simple, and I never knew!
http://www.tech-recipes.com/rx/339/outlook_delete_autocomplete_email_addresses/
Also if you want to, this article shows how you can transfer the autocomplete cache between machines.
http://www.tech-recipes.com/rx/2833/outlook_transfer_autocomplete_addresses_to_a_new_computer/
Thanks to tech-recipes for those details.
Saturday, 14 August 2010
Storing hierarchical data in a relational database
I've seen a fair share of databases, and every now and then you want to store a hierarchy of data. If you want to be able to store a hierarchy of an unknown depth i.e. a family tree, this can be simple to store, but complex to then query. Now I thought the only solution (in a Relational DB), is something called the Adjacency List Model where you have a self-referencing table, for example a Person table, where a person may have a foreign key to Father and Mother, both of whom are also in the Person table. The awkward thing with this, is that to properly query to an unknown depth you need to be able to write Recursive Queries, and not all databases support this. Additionally the queries are a bit complex and do not perform well.
While trying to find out if Access supports recursive queries (which it doesn't without using VBA to do the recursion), I found out about the Nested Set Model. This an alternative to the Adjacency List Model, and something I found very interesting.
Read Mike Hillyer's article for full details on both the Adjacency List, and Nested Set models.
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
While trying to find out if Access supports recursive queries (which it doesn't without using VBA to do the recursion), I found out about the Nested Set Model. This an alternative to the Adjacency List Model, and something I found very interesting.
Read Mike Hillyer's article for full details on both the Adjacency List, and Nested Set models.
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Tuesday, 22 June 2010
Autologon
I thought I'd do a quick post singing the praises of another tool from SysInternals called Autologon.
This is a clever little tool where you can feed in your logon name and password, and then when powered on, it automatically provides these and brings you straight to your desktop. Maybe combine that with starting your e-mail client on startup and you can get ready to go just from pressing the power button. Note that the password is encrypted, so you need not fear it's sitting in the clear in the registry.
DISCLAIMER: I am not recommending this be used in any situations. Username and password logons are there for a reason and you should only use the tool if you fully understand the implications involved and do so at your own risk.
That being said the following two cases seem like ones that may be suitable.
This is a clever little tool where you can feed in your logon name and password, and then when powered on, it automatically provides these and brings you straight to your desktop. Maybe combine that with starting your e-mail client on startup and you can get ready to go just from pressing the power button. Note that the password is encrypted, so you need not fear it's sitting in the clear in the registry.
DISCLAIMER: I am not recommending this be used in any situations. Username and password logons are there for a reason and you should only use the tool if you fully understand the implications involved and do so at your own risk.
That being said the following two cases seem like ones that may be suitable.
- You have some sort of full disk encryption in place (i.e. BeCrypt or PGP). You need to supply one set of logon credentials just to get to the OS, so if you're the only one that knows these credentials, the second logon prompt is somewhat redundant
- You would rather not have a password prompt on logon, and can guarantee the physical security of the laptop, but can't (or wont) change the machines security settings.
Tuesday, 8 June 2010
Issues with NumericUpDown Databinding
After setting up a form using databinding, I realised that my NumericUpDown controls were not properly updating the underlying object if a value was changed, and the user 'tabbed out', but they would work correctly if the user clicked into and out of the control!
numericUpDown.DataBindings.Add("Value", m_InventoryItems, "UnitCost", True, DataSourceUpdateMode.OnPropertyChanged)
Thanks to TonyG for sharing the answer.
numericUpDown.DataBindings.Add("Value", m_InventoryItems, "UnitCost", True, DataSourceUpdateMode.OnPropertyChanged)
Thanks to TonyG for sharing the answer.
Friday, 4 June 2010
Programmatically add a Breakpoint with Debugger.Break()
Most of the time when working with visual studio you can debug your applications by simply running your GUI or command-line project in debug mode.
Now sometimes you might be working with projects that are not so easy to debug. For example a windows service, or an installer custom action.
Now one way around this is to create a custom wrapping exe that exercises the same code, but this wont be equivalent to it being run in the field (i.e. from msiexec.exe).
A handy solution to this is to place a call to Debugger.Break() in your code. When this runs windows will ask if you wish to attach a debugger to the running process, which then allows you to debug from this point forward. Great!
Keep in mind you don't want calls to this in your live code! I'd recommend only using it temporarily or ensure it is only included in debug builds by wrapping it in a method attributed with [System.Diagnostics.Conditional("DEBUG")]
Now sometimes you might be working with projects that are not so easy to debug. For example a windows service, or an installer custom action.
Now one way around this is to create a custom wrapping exe that exercises the same code, but this wont be equivalent to it being run in the field (i.e. from msiexec.exe).
A handy solution to this is to place a call to Debugger.Break() in your code. When this runs windows will ask if you wish to attach a debugger to the running process, which then allows you to debug from this point forward. Great!
Keep in mind you don't want calls to this in your live code! I'd recommend only using it temporarily or ensure it is only included in debug builds by wrapping it in a method attributed with [System.Diagnostics.Conditional("DEBUG")]
Thursday, 3 June 2010
Integrating TortoiseSVN with Bugzilla
My project uses Subversion for version control, and TortoiseSVN as our subversion control client. A very good version control implementation on both fronts.
We also use Bugzilla as our issue tracking tool. The below can also apply to other Issue Trackers, but you will need to do a bit more of the work.
Now I recently found out that you can easily integrate TortoiseSVN with Bugzilla. Linking in this way adds the following benefits:
We also use Bugzilla as our issue tracking tool. The below can also apply to other Issue Trackers, but you will need to do a bit more of the work.
Now I recently found out that you can easily integrate TortoiseSVN with Bugzilla. Linking in this way adds the following benefits:
- Prompts the user for an Issue reference when committing changes
- Records the change against that issue, allowing an indexed search for all changes relating to a given Issue
- Display the Issue reference in the log message - with a clickable URL directly to that Issue
All of this can be enabled simply by setting the relevant bugtraq SVN properties on the top-level folder. For example I set the properties on the root of my development area, but for a project-wide adoption you can set these properties on trunk.
Here are the bugtraq properties I am currently using:
Simple as that!
Note: We use the term OR (Obersvation Report) in place of Issue in my current project.
Now I can understand those that say this doesn't add a great deal of additional features. Which is true *gasp*. But! It took me 2 minutes to do. For so little effort any benefit is worthwhile, and I definitely think there are benefits.
For more detail on how the available bugtraq properties work, check the official docs. Which are quite clear!
Subscribe to:
Posts (Atom)
