Joseph Michael Pesch
VP Programming

Setup Git Repo on Digital Ocean Droplet

by 2. April 2016 06:38

This tutorial will show you how to set up a fully fledged Git server using SSH keys for authentication. It will not have a web interface, this will just cover getting Git installed and your access to it set up. We'll use the host "git.droplet.com" in place of the domain you will use for your VPS.

This can be a great option if you want to keep your code private while you work. While open-souce tends to be the status quo, there are some times when you don't want to have your code freely available. An example would be if you are developing a mobile app, especially a paid one. Keep in mind this code can be read by anyone if they know the URL address to use for a clone, but that is only if they know it.

There is one major concern for many and that is a web interface to your repositories. GitHub accomplishes this amazingly well. There are applications that you can install such as Gitosis (https://wiki.archlinux.org/index.php/Gitosis), GitList (http://gofedora.com/insanely-awesome-web-interface-git-repos/), and Goblet (http://git.kaarsemaker.net/). We don't go over those in this tutorial, but if you rely heavily on a graphic interface then you may want to look over those and think about installing one of them as soon as you done installing your Git server.

Next, the VPS will need a user specifically for Git. Most people will simply create a user called "Git", and that is what we'll do for this tutorial but feel free to name this user whatever you'd like.

 

Setup a Git User and Install Git on your VPS

Log into your VPS, and gain root*:

 

su -

*Some people feel uncomfortable using root in this manner. If your VPS is set up to use sudo, then do so.

 

Add the Unix user (not necessarily Git user names) to handle the repositories:

 

useradd git

Then give your Git user a password:

 

passwd git

Now it's as easy as:

 

CentOS/Fedora: yum install git

Ubuntu/Debian: apt-get install git

Add your SSH Key to the Access List

At this point, you'll want to be logged in as the Git user. If you haven't already logged in to that user, use this command to switch to it:

 

su git

Now you need to upload your id_rsa.pub file to your Git user's home directory. Once you have done that, we need let the SSH daemon know what SSH keys to accept. This is done using the authorized keys file, and it resides in the dot folder "ssh". To create this, input:

 

mkdir ~/.ssh && touch ~/.ssh/authorized_keys

Note: Using the double '&' in your command chains them, so it tells the system to execute the first command and then the second. Using the 'tilde' at the beginning of the path will tell the system to use your home directory, so '~' becomes /home/git/ to your VPS.

 

We are going to use the 'cat' command, which will take the contents of a file and return them to the command line. We then use the '>>' modifier to do something with that output rather than just print it in your console. Be careful with this, as a single '>' will overwrite all the contents of the second file you specify. A double '>' will append it, so make sure you know what you want to do and in most cases it will be easier to just use ">>" so that you can always delete what you append rather than looking to restore what you mashed over.

 

Each line in this file is an entry for a key that you wish to have access to this account. To add the key that you just uploaded, type the following, replacing :

 

cat .ssh/id_rsa.pub | ssh user@123.45.56.78 "cat >> ~/.ssh/authorized_keys"

Now you can see the key there if you use cat on the authorized key file:

 

cat ~/.ssh/authorized_keys

If you want to add others to your access list, they simply need to give you their id_rsa.pub key and you append it to the authorized keys file.

 

Setup a Local Repository

This is a pretty simple process, you just call the Git command and initialize a bare repository in whichever directory you'd like. Let's say I want to use "My Project" as the project title. When creating the folder, I'd use all lower case, replace any spaces with hyphens, and append ".git" to the name. So "My Project" becomes "my-project.git".

 

To create that folder as an empty Git repository:

 

git init --bare my-project.git

Thats it! You now have a Git repository set up on your VPS. Let's move on to how to use it with your local computer.

 

Using your Git Server from your Local Computer

On Linux or Mac OS, you need to change the remote origin to your newly created server. If you already have a local repo that you want to push to the server, change the remote using this command:

 

git remote set-url origin git@git.droplet.com:my-project.git

If this is a new repository you are setting up, use this:

 

git init && git remote add origin git@git.droplet.com:my-project.git

Now you may add, push, pull, and even clone away knowing that your code is only accessible to yourself.

 

But what if you want a few trusted people to have access to this server and you want to keep things simple by sorting them by the names of your users? A simple and effective way to do that is to create a folder named after each person, so in the home folder for your Git user list, input:

 

mkdir user1 user2

Now when you specify the remote repository, it would look like this:

 

git remote add origin git@git.droplet.com:user1/user-project.git 

Step 1: Create SSH Public/Private Key Using PuTTY 

1. Download and start the puttygen.exe generator (download location: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html).

2. In the "Parameters" section choose SSH2 DSA and press Generate.

3. Move your mouse randomly in the small screen in order to generate the key pairs.

4. Enter a key comment, which will identify the key (useful when you use several SSH keys).

5. Type in the passphrase and confirm it. The passphrase is used to protect your key. You will be asked for it when you connect via SSH.

6. Click "Save private key" and then "Save public key" to save both keys to your disk.

 

Tags:

Windows Task Scheduler Create Web Request (Web Site Keep Alive)

by 26. March 2016 18:09

Add Windows Schedule and from the "Actions" tab, select "Start a program" dropdown and enter "powershell" (without the quotes) in the "Program/script:" text box then enter a command like the one below in the "arguments" text box:

-Command "Get-Date > c:\pathToLogFile.txt; $req = [System.Net.WebRequest]::Create(\"http://url\"); $res = $req.GetResponse(); $str = $res.GetResponseStream(); $rdr = new-object System.IO.StreamReader $str; $dat = $rdr.ReadToEnd(); $dat >> c:\pathToLogFile.txt; Get-Date >> c:\pathToLogFile.txt;"

Powershell HTTP Request

$r = [System.Net.WebRequest]::Create("http://url/")
$resp = $r.GetResponse()
$reqstream = $resp.GetResponseStream()
$sr = new-object System.IO.StreamReader $reqstream
$result = $sr.ReadToEnd()
write-host $result

Username and passwords
$creds = new-object System.Net.NetworkCredential "username", "password"
$uri = mew-object System.Uri "http://url/"
$credcache = new-object System.Net.CredentialCache
$credcache.Add($uri, "Basic", $creds)
$webrequestobject.Credentials = $credcache

One Liner Version
Powershell -Command "$r = [System.Net.WebRequest]::Create('http://url/'); $resp = $r.GetResponse(); $respstream = $resp.GetResponseStream(); $sr =
new-object System.IO.StreamReader $respstream; $result = $sr.ReadToEnd(); write
-host $result"

Tags:

PowerShell

SQL Backup All User Databases via Windows Task Scheduler

by 22. March 2016 18:14

1) Create the SQL procedure below
2) Add this sqlcmd to a CMD file:
    sqlcmd -S localhost -E -Q "exec master.dbo.prc_BackupUserDatabases"
3) Add this command to the CMD file (to delete files older that X days), sample deletes *.bak files older than 5 days:
    forfiles -p "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup" -s -m *.bak -d -5 -c "cmd /c del @path"
4) Add to windows task scheduler with Action = Start a Program (pointed to the CMD file)

SQL Procedure

USE [master]
GO
create procedure [dbo].[prc_BackupUserDatabases] as
begin
  declare @DatabaseName varchar(50)
        , @BackupFolder sysname = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\';
  declare cur cursor for select name from sys.databases where len(owner_sid) > 1
  open cur
  while 1=1 begin
    fetch next from cur into @DatabaseName
    if @@FETCH_STATUS <> 0 break
    declare @BackupFilePath sysname = @BackupFolder + @DatabaseName + N'_' + CONVERT(char(8), GETDATE(), 112) + '.bak';
    backup database @DatabaseName to disk = @BackupFilePath with init, STATS=10;
  end
  close cur
  deallocate cur
end

Tags:

SQL Server

Enable Remote IIS Web Administration with IIS Management Console or Power Shell

by 24. February 2016 05:00

https://technet.microsoft.com/en-us/magazine/dn198619.aspx

Tags:

MP4 File Format Specification Details

by 14. February 2016 14:59

 

 

Tags:

Tools for Apache Cordova for Visual Studio 2013 - Blocking Update and Cannot Uninstall

by 24. January 2016 07:07

I was trying to update Visual Studio 2013 and could not as it was complaining that I needed to remove an older version of "Tools for Apache Cordova for Visual Studio 2013".  I went into my Control Panel and found "Tools for Apache Cordova for Visual Studio 2013 - CTP3.1" as an installed program and tried to uninstall; however, that would immediately say it completed and would not actually remove it.  To force the removal I had to search in my "%ProgramData%\Package Cache" folder for the "MultiDeviceHybridApps_VS.msi" file.  Then run the following command from an administration command prompt using the full path to the MSI.

misexec /x FULL_PATH_TO_MSI_HERE

Tags:

Visual Studio

C# Generic Class Wrapper

by 23. January 2016 07:57

 

public class Wrapper<T>
{
    public Wrapper(T wrapped)
    {
        Wrapped = wrapped;
    }

    public T Wrapped { get; set; }
}

public class WrapperFactory
{
    public static Wrapper<T> Create<T>(T wrapped)
    {
        return new Wrapper<T>(wrapped);
    }
}

var wrappedInt = WrapperFactory.Create(42);

Tags:

C#

Morris.js Charting Issue with Unresponsive JavaScript in Firefox Browser

by 9. January 2016 11:09

After implementing Morris.js for charting I would periodically receive this error message in Firefox:

Warning: Unresponsive script

A script on this page may be busy, 
or it may have stopped responding.  
You can stop the script now, 
open the script in the debugger, 
or let the script continue.

Script: http://.../plugins/morris/raphael.min.js


To resolve this I added the parseTime: false setting to the chart object. It seems that Mozilla tries to parse the "xLabels" attribute as a datetime and goes into a loop.

 

Tags:

JavaScript

SQL Function to Convert Delimited String to Table

by 24. December 2015 07:58

This is a SQL function to convert a delimited string into a table.

create function [dbo].[DelimToTable] 
(@StringInput varchar(max), @Delimiter nvarchar(1))
returns @OutputTable table([String] varchar(255)) as begin
declare @String varchar(255)
while len(@StringInput) > 0 begin
set @String = left(@StringInput
, isnull(nullif(charindex(@Delimiter, @StringInput) - 1, -1)
, len(@StringInput)))
set @StringInput = substring(@StringInput
, isnull(nullif(charindex(@Delimiter, @StringInput), 0)
, len(@StringInput)) + 1, len(@StringInput))
insert into @OutputTable ([String]) values(@String)
end
return
end

Tags:

SQL Server

Visual Studio 2013 Setup/Installer Add In

by 21. October 2015 05:03

https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

NOTE: To create a windows service setup make sure to open the service.cs file and right-click on the screen to "Add Installer" (as shown in screen shot below).

 

Tags:

Migrate Azure Virtual Machine (VM) Between Storage Accounts

by 20. October 2015 04:39

https://azure.microsoft.com/en-us/blog/migrate-azure-virtual-machines-between-storage-accounts/

Tags:

Azure

Sending Email Through SMTP Using TELNET

by 16. September 2015 05:17

1) Open a cmd prompt.

2) Enter telnet <the FQDN of your SMTP server> <the port number>

image

3) Enter EHLO <the DNS domain name where the SMTP server is at>

image

If you get a successful connection you will see this:

image

4) Enter MAIL FROM: <the email address of the Workflow Run As Account>

image

5) Enter RCPT TO: <some email address you want to send to>

image

6) Enter DATA

image

7) Enter SUBJECT: <some subject you want to have> and hit Enter TWO times:

image

8) Enter a message body followed by Enter, then a period, then Enter again.

image

9: Enter QUIT

Tags:

Windows

SQL Server Drop Extended Properties (e.g. MS_Description)

by 8. September 2015 04:38

This script will generate a set of drop statements:

--tables
 select 'EXEC sp_dropextendedproperty
 @name = '''+name+'''
 ,@level0type = ''schema''
 ,@level0name = ' + object_schema_name(extended_properties.major_id) + '
 ,@level1type = ''table''
 ,@level1name = ' + object_name(extended_properties.major_id)
 from sys.extended_properties
 where extended_properties.class_desc = 'OBJECT_OR_COLUMN'
 and extended_properties.minor_id = 0
 union
 --columns
 select 'EXEC sp_dropextendedproperty
 @name = '''+sys.extended_properties.name+'''
 ,@level0type = ''schema''
 ,@level0name = ' + object_schema_name(extended_properties.major_id) + '
 ,@level1type = ''table''
 ,@level1name = ' + object_name(extended_properties.major_id) + '
 ,@level2type = ''column''
 ,@level2name = ' + columns.name
 from sys.extended_properties
 join sys.columns
 on columns.object_id = extended_properties.major_id
 and columns.column_id = extended_properties.minor_id
 where extended_properties.class_desc = 'OBJECT_OR_COLUMN'
 and extended_properties.minor_id > 0

Tags:

SQL Server

BundleConfig EnableOptimizations Breaks Font Awesome

by 30. August 2015 15:13

When using Font Awesome with bundling and optimization you need to add the CssRewriteUrlTransform() to the font awesome bundle (as shown below).

BundleTable.EnableOptimizations = true;

bundles.Add(new StyleBundle("~/bundles/css/font-awesome").Include(
  "~/css/font-awesome.min.css", new CssRewriteUrlTransform()
));

Tags:

CSS

Bootstrap Image Slider Center Image

by 30. August 2015 12:03

div.carousel-wrapper{
    width: 80%; /* for example */
    margin: auto;
}

.carousel-inner > .item > img,
.carousel-inner > .item > a > img{
width: 100%; /* use this, or not */
margin: auto;
}

Tags:

CSS

Bootstrap Image Slider Center Image

by 30. August 2015 12:03

div.carousel-wrapper{
    width: 80%; /* for example */
    margin: auto;
}

.carousel-inner > .item > img,
.carousel-inner > .item > a > img{
width: 100%; /* use this, or not */
margin: auto;
}

Tags:

CSS | Bootstrap

SQL Server TSQL DateDiff Between Weekdays Only

by 20. August 2015 07:04

declare @d1 datetime, @d2 datetime
select @d1 = '8/1/2015',  @d2 = '8/20/2015'

select datediff(dd, @d1, @d2) - (datediff(wk, @d1, @d2) * 2) -
       case when datepart(dw, @d1) = 1 then 1 else 0 end +
      case when datepart(dw, @d2) = 1 then 1 else 0 end

Tags:

SQL Server

Remove hiberfile.sys from Windows C: Drive

by 2. August 2015 09:46

Run CMD as administrator and run the following commands:

POWERCFG -X -hibernate-timeout-dc 0
POWERCFG -X -hibernate-timeout-ac 0
POWERCFG -H OFF

Tags:

iPhone Backup File Locations

by 26. July 2015 14:58

When iTunes backs up your iPhone, iPad or iPod Touch, it saves all your important data into various files within the backup folder.

The filenames are encoded so they appear as strings of letters and numbers. It turns out, however, that for each version of the iPhone operating system (iOS), they're encoded in similar ways.

Here are some of the main files.

iOS 6 iPhone Backup File Locations

ContentsReal FilenameFilename in Backup
SMS sms.db 3d0d7e5fb2ce288813306e4d4636395e047a3d28
Contacts AddressBook.sqlitedb 31bb7ba8914766d4ba40d6dfb6113c8b614be442
Calendar Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858
Reminders Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858
Notes notes.sqlite ca3bc056d4da0bbf88b5fb3be254f3b7147e639c
Call hist. call_history.db 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca
Locations consolidated.db Removed from iTunes backup, not iDevice

iOS 5 iPhone Backup File Locations

ContentsReal FilenameFilename in Backup
SMS sms.db 3d0d7e5fb2ce288813306e4d4636395e047a3d28
Contacts AddressBook.sqlitedb 31bb7ba8914766d4ba40d6dfb6113c8b614be442
Calendar Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858
Reminders Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858
Notes notes.sqlite ca3bc056d4da0bbf88b5fb3be254f3b7147e639c
Call hist. call_history.db 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca
Locations consolidated.db Removed from iTunes backup, not iDevice

iOS 4 iPhone Backups

ContentsReal FilenameFilename in Backup
SMS sms.db 3d0d7e5fb2ce288813306e4d4636395e047a3d28
Contacts AddressBook.sqlitedb 31bb7ba8914766d4ba40d6dfb6113c8b614be442
Calendar Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858
Notes notes.sqlite ca3bc056d4da0bbf88b5fb3be254f3b7147e639c
Call hist. call_history.db 2b2b0084a1bc3a5ac8c27afdf14afb42c61a19ca
Locations consolidated.db 4096c9ec676f2847dc283405900e284a7c815836

iOS 3 iPhone Backups

ContentsReal FilenameFilename in Backup
SMS sms.db 3d0d7e5fb2ce288813306e4d4636395e047a3d28
Contacts AddressBook.sqlitedb 31bb7ba8914766d4ba40d6dfb6113c8b614be442
Calendar Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858
Notes notes.db 740b7eaf93d6ea5d305e88bb349c8e9643f48c3b
Call hist. call_history.db ff1324e6b949111b2fb449ecddb50c89c3699a78

iOS 2 iPhone Backups

ContentsReal FilenameFilename in Backup
SMS sms.db 3d0d7e5fb2ce288813306e4d4636395e047a3d28
Contacts AddressBook.sqlitedb 31bb7ba8914766d4ba40d6dfb6113c8b614be442
Calendar Calendar.sqlitedb 2041457d5fe04d39d0ab481178355df6781e6858
Notes notes.db 740b7eaf93d6ea5d305e88bb349c8e9643f48c3b
Call hist. call_history.db ff1324e6b949111b2fb449ecddb50c89c3699a78

iOS 1 iPhone Backups

ContentsReal FilenameFilename in Backup
SMS sms.db 3d0d7e5fb2ce288813306e4d4636395e047a3d28
Contacts AddressBook.sqlitedb adb8c77534444e97c31ff15924d50f3ed1fbd3b1
Calendar Calendar.sqlitedb 14ee8cdc3e6e0220399ff210246e1c92b7df89a0
Notes notes.db 740b7eaf93d6ea5d305e88bb349c8e9643f48c3b
Call hist. call_history.db a49bfab36504be1bf563c1d1813b05efd6076717

From: http://www.iphonebackupextractor.com/blog/2012/apr/23/what-are-all-files-iphone-backup/

 

Tags:

Bitnami Wordpress How To Remove the Manage Banner

by 7. June 2015 20:58


How to remove the banner

In case you wan't to remove the banner, you will just need to SSH into your machine and then execute the following command:

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
Please note the actual path will depend on the installed application so it may be different in your case (/opt/bitnami/apps/drupal/bnconfig for Drupal, /opt/bitnami/apps/joomla/bnconfig for Joomla...).

And then restart Apache:

sudo  /opt/bitnami/ctlscript.sh restart apache

Please note the above steps will only remove the corner banner, the Bitnami info page will still be availble by visiting  http://example.com/bitnami/index.html

Original source: https://wiki.bitnami.com/Components/Bitnami_info_page

Tags: