SVN is short for Subversion
This article will deal with the problem of running your own Windows Based SVN Tracker on your own Pc so you controll your files and do not have to pay a subscription.
Free Windows Based SVN Servers
Collabnet Subversion Edge | VisualSVN Server | XAMPP Based | TortoiseSVN | |
---|---|---|---|---|
Free Windows Based SVN Servers | ||||
Info |
|
|
||
Pros |
|
|
|
|
Cons |
|
|
|
|
Binaries Only
This is the most difficult of all windows setup options, you basically are install another stack and have to configure the settings mainly through the command line. These are most definately installed as seperate software and are not portable. Unless you have any particular reason for installing binaries i would consider using Xammp as a abaase and install the SVN into that, you can then easily backup all of your work and configuration. I personally prefere the AIO packages where there is a central management of the SVN and stack.
Binaries' Installation Docs
currently if you are using windows you can select either VisualSVN Server or CollabNet Subversion Edge (i need to try both). If you are running linux you really only have the choice of CollabNet if you want an AIO Package. I have not examined the Xampp setups yet, but these are more hands on for people to set up.
CollabNet Subversion Edge - Most feature, is free, opensource and actively developed by the founders of Subversion (CollabNet)
Setting up the online presences of your windows subversion server so you can access it from the internet.
At the moment your subversion server is currently only available to your local network, so neither you or other people working on projects can access the server. The following instruictions will bridge the final gap to having your own SVN server running under your control with no montly fees and where you can keep your files private.
Theses instructions assume you have a cpanel account
You can now access you SVN server from the outside world using drguosdh334lkkjsad34.ddns.net (FQDN) but you cannot use your FQDN locally. To fix that do the following
127.0.0.1 drguosdh334lkkjsad34.ddns.net
Done, you now have a fully working Subversion server online via http://svn.mydomain.com/. you might be wondering why i have added an extra domain step to the instructions above. I have used a random domain name that should be hard for hackers to find and then use that to probe my netwrok, because using NOIP i basically give a domain name to my IP. I can use http://svn.mydomain.com/ to make my life easier to configure Matis and any other required software such as TortoiseSVN but while maintaining some extra security.
Hostname (in WebAdmin)
NB:
When you install collabnet all goes well and you get to the webpage at the end saying that it is waiting for the service to start. It eventually times out and point you towards their help page.
The server does not start because according to the CollabNet official wikie there is something wrong with the Java Path. Whether it is missing or pointing to the wrong version, either way this prevents the service getting installed properely.
The remedy suggested, is to run there installservice.bat (located in {subversioin}/scwrapper/bat/), which does indeed install the missing WebAdmin service. When you then start the WebAdmin service you get the following error:
Causes
NB You should note that the Apache Subversion Service will not start because it does not have a httpd.conf yet. You use the Web Admin to make this file on the intial setup of Subversion Edge so dont worry about the subversion service yet. When you get this service running you can save your settings which will fix the Subversion service.
Solution to these issues can be one of the following
"C:\Program Files\Java\jre7/bin/java.exe" "-classpath" "D:\Documents\Developer\SubversionEdge\svcwrapper\wrapper.jar" "-Xrs" "-Dwrapper.service=true" "-Dwrapper.working.dir=D:\Documents\Developer\SubversionEdge\svcwrapper\..\appserver" "-Dwrapper.config=D:\Documents\Developer\SubversionEdge\svcwrapper\conf\wrapper.conf" "-Dwrapper.additional.1x=-Xrs" "org.rzo.yajsw.boot.WrapperServiceBooter"
Notice that it points to java 7
when running SFC you get the following error
There is a system repair pending which requires reboot to complete. Restart windows and run SFC again.
This is caused by an update that has not been completed and can be fix in several ways:
When you load windows you get a blue screen with the BSOD 0x0000007B error. This is generally caused by the 'Mass Storage Drivers' not loading for one reason or another such as
Below are some tested fixes for this issue in windows 7. You might find that some of these fixes work for ohter versions of windows and not every solution will fix the 0x0000007B error.
Select the last known Good Configuration and see if your windows boots. It either will or it wont. If it does i would create a system restore point.
Let windows try a Startup Repair. When your PC fails to boot it will ask you if you want to repair windows (Black and White Screen), select 'Repair Windows' and see if that fixes the boot issue
This is a very common issue especially when you move your windows installtion to a new PC.
Windows is configured to use IDE or AHCI (or possibly a type of RAID) to boot windows and if the setting in your BIOS does not match this.
Solution
Enter the BIOS and cycle through the the different types of AHCI/SATA controller settings and see if you can boot windows on any of them.
Basically this is a script that can handle the automatic installation of the correct driver by matching the installed hardware IDs to a driver, either those that are already install or from a specified folder which is handy when you have forgot to install them before moving changing your hardware. This script can be run from a windows DVD/Repair Console
This is an easy fix to try if you have the correct instructions. The instructions for running this script are not the best, so after trial and error i have written some.
The script utilises DISM utility to install the drivers.
Usage: cscript Fix_7hdc.vbs [options]
Options: | ||
---|---|---|
/enable | enable, installed but disabled MassStorage drivers (or 'Enable existing Mass Storage drivers in system) | |
/target:<drive> | target Win7 drive | |
/install:<folder> | Path to the folder that will be the top of the Plug & Play folder tree. | |
/search:<file> | search flag file to find target Win7_drive (default: \windows\system32\winload.exe) |
|
/restore | restore registry system file | |
/log:<file> | (Optional) Location of the output file | |
Remmed out in code but might still be valid | ||
/class:<class> | (Optional) Filter the output by device Class | |
/provider:<vendor> | (Optional) Filter the output by driver Provider | |
/excludeclass | (Optional) Filtering excludes Class filtered items from output. Default filtering in inclusive (only the filtered items are output). |
|
/excludeprovider | (Optional) Filtering excludes Provider filtered items from output. Default filtering in inclusive (only the filtered items are output) |
|
End of Remmed Items | ||
/q | (Optional) Suppresses all data output to the console. | |
/? | (Optional) Displays this help text. |
Examples:
cscript Fix_7hdc.vbs /enable /search
cscript Fix_7hdc.vbs /enable /search:\users
cscript Fix_7hdc.vbs /enable /install:F:\x86 /search
cscript Fix_7hdc.vbs /install:D:\amd64 /target:C:
cscript Fix_7hdc.vbs /install /search:\label.txt
cscript Fix_7hdc.vbs /restore /target:C:
My Notes
Fix_7hdc.vbs /enable /search
cscript Fix_7hdc.vbs /enable /search
If you run
Fix_7hdc.vbs
Fix_7hdc.vbs /search
(either implies Fix_7hdc.vbs /enable /search )
This is what it does
What i Would Type
cscript fix_7hdc.vbs /enable /search /install:g:\ahci
Because you use cscript there are no prompts but instead outputs to the console
dism.exe /Image:C:\ /Add-Driver /Driver:"G:\AHCI\W64A\amdsata.ing" /LogLevel:4 /LogPath:G:\hdc\dism.offline.log
Links
Other Notes
sometimes windows gets mixed up with which SATA mode to work. This can be changed easily in the windows registry. As long as you can access the windows registry you can do it either online (proactively) or after the fact by mounting the offline registry.
This is a new method that new versions of microsoft windows natively supports. It allows you to inject drivers to offline windows installs on normal harddrives or VHD (Virtual Harddisk). This is particulary handy if you have forgotten to install required SATA Drivers or you are creating a deployable image.
When using this command you must make sure your drive letters are correct. ie when you boot of the harddrive into the console your windows install drive will be C:\ , but when you load of a seperate WinPE disk it will most likely be D:\.
Examples
Dism /image:C:\windows /Add-Driver /driver:D:\64-bit /recurse
All sub folders from D:\64-bit are queried for drivers to add to the offline windows install @ C:\windows
Dism /image:C:\windows /Add-Driver /driver:D:\64-bit\
The drivers in the folder D:\64-bit\ will be installed to the offline windows install @ C:\windows
Links
I got a 0x000007b after installing windows updates, i think this is because it upgraded some driver files that had been interfered with by driver updating software
This is quite a popular question to which i needed an answer, so i have listed the relevant pros and cons for the most popular Bug Trackers below.
Redmine | Bugzilla | Mantis | |
---|---|---|---|
Comparison of Bug Trackers | |||
Pros |
|
|
|
Cons |
|
|
|
Redmine is a more indepth Bug Tracker, it takes more to setup but seems to have more features, including the roadmap. The downside to Redmine is that you most likely need a VPS or dedicated server to run it and in which cas you probaly already have SVN setup so i would use this. I now use Redmine on my windows PC using Xampp and other free software packages. Search my website for Redmine installation Instructions.
If you want some thing easy to setup and use i would choose Mantis. It will work on most hosting packages and is easily setup. The roadmap feature for me is a must, which this has so i can concentrate on programming rather than setting a Bug Tracker up. The softaculous install feature will also allow easy 1 touch upgrading.
Bugzilla sits in between the other two Bug Trackers because it has a lot of features making it more complicated to use but for some reason it does not have a roadmap feature. Bugzilla is definately aimed at collaborative works rather than just one person.The other Bug Trackers will handle multiple users bug Bugzilla seems to have a lot of Project Management aspects built in to it.
Do you want to start a marketing campaign and send it to all of the people you have ever had contact with, where better to start than the peopel you have had email correspondance with. These peopel will all have either sent you and email or recieved one from you. These emails will all be in outlook.
You can configure the script to scan for any variable you want so with a little bit of programming you can scan the emails to see if a customer was interested in certain type og motor bike or wheather he selected certain answers in a survey.
What You Need
Instructions
These are my instructions on how to scrape emails, Sender Names and other information from emails in your outlook.
My process has a couple of steps and can be configured to grab what information you want.
Overview
Dump Selected Emails
Unknown to me at the time, outlook has an export feature where you can export selected emails (or folders) to an excel spreadsheet and once there you can perform data manipulation as required.
The location of the Export function varies with each version of office so you need to do a quick google search for Exporting Outlook Emails.
I would recommend to use ASAP Utilities to perform data manipulation on your Excel Spreadsheets.
Why do i need this article? Can you not just create an email signature in outlook and add images in its own editor? Yes and No!
You can create signatures with images using outlooks signature editor but it does not always work correctly. The image might appear to be embeded but when the recipient receives the email, the image in the signature is not present.
The recipients email client can also have a bearing on whether it appears correctely at the other end, also the editor you are using in outlook to edit emails might also have an effect, as you know you can edit emails in outlook's Basic Editor or you can use Word which forces emails to be in Rich Text Format (RTF)
If your email signature is working correctely you do not need to do anything, this is for the occassions when it does not, most likely this is just with older version of outlook. I know outlook 2003 has this issue sometimes.
My solution is to create a manually crafted email in HTML and then install this into outlook. The images in the signature have had their locations manually specified. Using this method forces outlook to properly embed images in the signature. You can edit the signature in outlook but you can never edit the image in outlook because it mangles the code and then the image becomes attached rather than embedded, you will always have to edit the image code manually in the .htm file.
The Code
This is my sample email signature that can be aeasily modified for your needs via the .htm or in outlook itself (not the image though)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Dynamic Email Signature</title> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta content="MSHTML 6.00.6000.16705" name=GENERATOR> <style type="text/css"> .signature-style { font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 11px; } </style> </head> <body> <div class="signature-style"> <p> <strong>Joe Bloggs<br> <strong>Marketing Assistant</strong></strong><br> <strong>Tel:</strong> 01772 1234569<br> Twitter: <a href="http://twitter.com/twitter">My Twitter Feed</a><br> Facebook: <a href="http://www.facebook.com/facebook">My Facebook Page</a><br> <br> QuantumWarp<br> Rocky Lane<br> Manchester <br> MA1 1QW<br> <br> <strong>Box Office:</strong> 01772 123456<br> <a href="http://quantumwarp.com/" title="QuantumWarp">QuantumWarp.com</a> </p> <p> <a href="http://quantumwarp.com/"><img src="/./dynamic_files/emailsignature.jpg"></a><br> </p> <p><em>QuantumWarp, Rocky Lane, Manchester, Lancashire MA1 1QW Company Registered No: 1234567 (England)</em></p> </div> </body> </html>
NB:
The Image
Create a folder called dynamic_files and add the image you want to use in to it.
Install the Signature and Image into Outlook
This method will show you how to create an email signature from scratch. If you already have a corporate email it should be fairly easy for you to modify my example signature into your corporate colours and details etc..
NB: You will be required to visit everyones machine to create their dynamic email signature once.
You can use several different ways to reference images in your email signature
There might be more that I have not added.
To be embed images in these version of outlook requires a registry change. By default outlook disables the embedding of images because there is a thought that you should be using cloud resources and links.
This method is quite robust and once set should keep working and your signatures will always correctly show the image in your outlook and in the recipients client.
Do you run a small business, a theatre perhaps where all of your staff have the latest show in their signature? Do you need to go around everyones PC to change this signature everytime the shows changes, then this article is for you.
I will show you how to create a 'Dynamic' email signature. Well part of it anyway. My solution is that you have all of the show details in an image, the phone and contact number just like you would on a website banner and embed this image in your signature. This image is located on the server and all you have to do to update everyones email signature/banner is to change this image on the server and have you staff close and open outlook to update to the latest image.
Obviously there is some confifuration required to set up the signature in outlook and it must be done in a specific way and this is where these instructions come in to their own
NB: you need a server or PC that you can share this image out publicly
This method works by having outlook download an image from the server and have outlook embed it. You cannot just add an image into an email signature because outlook alters the assets location before embedding it and will create a static image, but by creating the code directely you bypass outlook's code sanitisation and as a consequence the image is always dynamically loaded from the server before embedding (download once per outlook session).
Server
Create the Signature
You need to create a signature template to use for your signature. The following code is a great example of a simple email signature. You can edit this in either a text file or a html editor as long as it does not mangle the code. You might like to experiment. You will note that you can use in-line CSS to style items, you can also style the signature with outlook when the signature installed but it can make a mess of the code. The other thing to note is the image location for the banner, and this is the key to making this whole exercise working. It can never be altered with outlook, if you ever want to change this you will need to alter the code by directly editing the .htm file.
The Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Dynamic Email Signature</title> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta content="MSHTML 6.00.6000.16705" name=GENERATOR> <style type="text/css"> .signature-style { font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 11px; } </style> </head> <body> <div class="signature-style"> <p> <strong>Joe Bloggs<br> <strong>Marketing Assistant</strong></strong><br> <strong>Tel:</strong> 01772 1234569<br> Twitter: <a href="http://twitter.com/twitter">My Twitter Feed</a><br> Facebook: <a href="http://www.facebook.com/facebook">My Facebook Page</a><br> <br> QuantumWarp<br> Rocky Lane<br> Manchester <br> MA1 1QW<br> <br> <strong>Box Office:</strong> 01772 123456<br> <a href="http://quantumwarp.com/" title="QuantumWarp">QuantumWarp.com</a> </p> <p> <a href="http://quantumwarp.com/"><img src="/\\server\Shared Files\Marketing\emailsignature.jpg"></a><br> </p> <p><em>QuantumWarp, Rocky Lane, Manchester, Lancashire MA1 1QW Company Registered No: 1234567 (England)</em></p> </div> </body> </html>
NB:
Install the Signature into Outlook
This method will show you how to create an email signature from scratch. If you already have a corporate email it should be fairly easy for you to modify my example signature into your corporate colours and details etc..
NB: You will be required to visit everyones machine to create their dynamic email signature once.
You can use several different ways to reference images in your email signature
There might be more that I have not added.
To be embed images in these version of outlook requires a registry change. By default outlook disables the embedding of images because there is a thought that you should be using cloud resources and links.
You have now created a system that allows you to have a Dynamic Email Signature for all of your staff and all you have to do is change the banner to reflect you new show or event.
NB: Remember that users have to logout of outlook and then back in again for changes in the banner to be reflected in the Signature.
Here i will show you how to chain multiple javascript functions (chained functions). This is not as simple as it seems because the functions can be dependant on the previous, they can run out of order or they can run independantly.
function combinedFunction { runFunction1 (); runFunction1 (); runFunction1 (); }
You can use operators here but the main purpose of this method is to allow you to declare only 1 script in your HTML and arrange the functions you want running neatly.
<form method="post" id="contact_form" onsubmit="runFunction1(); runFunction2(); runFunction3();">
See notes on operators. it is particularly important when using a submit button
function runFunction1 { // Do some stuff runFunction2(); }
you can keep expanding the number of functions you have and also can apply logic to them
This section will focus on the different outcomes of using operators for the submit button with functions. It must be noted that most of these rules will apply to other Javascript circumstances.
Example 1
<form method="post" id="contact_form" onsubmit="runFunction1(); runFunction2(); runFunction3();">
Example 2
<form method="post" id="contact_form" onsubmit="return myFunction();">
Example 3
<form method="post" id="contact_form" onsubmit="return validator1() && validator2()">
Example 4
<form method="post" id="contact_form" onsubmit="validateCaptchaCode() && postForm(); return false;">
type="button"
so the return from Javascript works.return false;
adds an extra method, it prevents default action if there is an exception in your Javascript code. This is toptional.<button type="button">Button</button>
I have tried for hours to get this script to work and i have come to the conclusion, it does not do want i want.
These scripts are asyncronous, which i think mean they are running all the time. My captcha code that i was trying to validate using the code by performing a lookup on a php file (validatecaptcha.php) was resonable successful.
My code
<!-- validate the code via ajax using validate.php to perform the validation --> <script> var interval; var result = null; // function myFunction(response){result = response;} // Alert the value of result and clear interval function getResult() { // once we get a result, turn interval off. if(result != null) { interval = clearInterval(interval); alert(result); // we're clearly out of the onreadystatechange scope with our result. } } function validateCaptchaCode() { result = null; enteredCaptchaCode = document.getElementById('ct_captcha').value; var xmlhttp = new XMLHttpRequest(); // actually POST the data (GET is slighlty different syntax) xmlhttp.open("POST", 'handlers/validatecaptcha.php', true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send("enteredCaptchaCode=" + enteredCaptchaCode); // http://www.w3schools.com/php/php_ajax_php.asp xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // document.getElementById("txtHint").innerHTML = xmlhttp.responseText; // myFunction(); //myFunction(xmlhttp.responseText); /*if (xmlhttp.responseText == 'true') { alert("Stuff Working"); } else { alert("Stuff Not Working"); }*/ result = xmlhttp.responseText; } } // every second (1000 milliseconds) run getResult() interval = setInterval("getResult()", 1000); // this statement does not always work because xmlhttp.responseText is sometimes empty if (result == 'true'){alert('true code'); return true;} else {alert('false code'); return false;} } </script>
What Worked
What doesnt work
What would i use this for?
A good example is live updates for an autofill text box (PHP - AJAX and PHP - w3schools). This sort of coding should be considered a process unto itselfs.
You cannot use this for validating stuff if function exit state (true / false) depends on it.
You can use this for loading external content that will change the content on your page, like adding notifications. This will be independant of other javascript on the page.
This is the one where i got the interval idea.
It is worth a read of this thread. Store responseText value to a global variable in JavaScript JavaScript and AJAX forum at WebmasterWorld . The interval setting might not make any difference in this example where i tried to use it to perfom validations. I think that all this does is pass the alert output down a function chain. Remember that httpobj.onreadystatechange occurs outside the normal Javascript runtime because it is asyncronous (run at the same time!).
http://www.webmasterworld.com/javascript/3952568.htm <script> var interval; var result = null; // Set this accordingly based on various return values from your PHP file httpobj = new XMLHttpRequest(); //FF for now httpobj.open('get', 'file.php', true); httpobj.send(null); httpobj.onreadystatechange = function() { if (httpobj.readyState == 4 && httpobj.status == 200) { result = httpobj.responseText; } } interval = setInterval("getResult()", 1000); // Alert the value of result and clear interval function getResult() { // once we get a result, turn interval off. if(result != null) { interval = clearInterval(interval); alert(result); // we're clearly out of the onreadystatechange scope with our result. } } </script>
This explains the issues i have had with this method and why
Return xmlhttp.responseText From AJAX Function - The SitePoint Forums
"The onreadystatechange function executes long after the other parts of the script have finished, so there is nothing to return anything to. Instead, you can pass the value to another function."
This useful bit of code allows you to run a function and see if it returns true or false.
function testFunction(){ if (validateCaptchaCode() == true) { alert('true'); } else { alert('false');} return; }