Archive for September, 2015

Starting command line program/script in background as job (Linux, Mac)

It is important to  use the command “nohup” and also redirect everything, otherwise the job will be killed after leaving console

nohup ./your_program_or_script_here > copyout.log 2> copyout.err < /dev/null &

On the other side, if you need just to run something in background because you are afraid that you will loose the session, the best way for it is using tmux, it can be installed with “apt-get install tmux” in Ubuntu Linux or “brew install tmux” on Mac

Open new session:

tmux new -s session_name

Attach to the lost session:

tmux attach -t session_name

, , , , ,

Leave a comment

How to create simple webservice using GO (golang) on GAE

This tutorial will show how to create simple webservice application using GO on Google Application Engine (GAE), I’m going to cover the following topics:

  1. Creating project in GAE
  2. Creating and testing application locally
  3. Using martini package to simplify service development
  4. Deployment of the services to GAE

First of all, go to Google Developer Console and create new project:

https://console.developers.google.com/project

Screenshot 2015-09-09 09.22.54

Select project name and open advanced options, make sure that you are selecting the proper region you want to use, it is important as if we are going to add SQL Cloud later to our project and the region of the project & SQL Cloud should be the same to work together.

Screenshot 2015-09-09 09.29.28

Give some minutes to Google and you should see the picture as shown below with your project ready to be developed. Copy Project ID (in my case it is tutorial-golang, you will defenitely have different name) to you favourite text editor on your computer, we will need it later when we prepare our first deploy of the application

Screenshot 2015-09-09 09.35.42

Read the rest of this entry »

, , , , , , , , , ,

Leave a comment

Using GO + Sublime Text + GoSublime + GAE

Sometimes easy things are not so obvious as they really are. If you are using GO language together with Sublime Text and want to have in place such features as code completion, you obviously will start using GoSublime plugin. If you are using GO in GAE (Google Application Engine) for your developments than you need small tuning to make it work.

  1. First of all, make sure  GOROOT and GOPATH are set in your environment (or in Sublime Text settings) and pointing to the GAE version of GO
  2. Go to GOROOT/bin folder and make a symlink for “goapp” naming it “go”
  3. Go to GOROOT/pkg folder and make a symlink for “darwin_amd64_appengine” naming it “darwin_amd64”

Enjoy.

, , , , , , , , , , ,

1 Comment

How to use basic authentication on GAE with PHP

As you probably noticed PHP in Google Application Engine does not provide the variables $_SERVER[‘PHP_AUTH_USER’] and $_SERVER[‘PHP_AUTH_PW’]. You can perform basic authentication anyway using the variable $_SERVER[‘HTTP_AUTHORIZATION’]

PHP code to parse HTTP authorization header looks the following way:

if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
 $nobasic = substr($_SERVER['HTTP_AUTHORIZATION'],6); // removing 'Basic ' from the string
 $decoded = base64_decode($nobasic); // decoding string with user:password
 list($client_user, $client_pass) = explode(':',$decoded);
 if ($client_user == "username" && $client_pass == "password") {
   // Successfully authenticated
 } else {
   // Authentication failed, username or password are wrong
 }
} else {
 // Not authenticated as there is no appropriate header in HTTP request
}

You can check if your authentication is working sending appropriate header in HTTP request, check here to get the information how to form the header

, , , , , , , ,

Leave a comment

How to create manually string for basic http authentication

If you need to test Basic authentication, you can manually add header like this into HTTP request:

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

The line after Basic is formed from your username and password the following way in Mac or Linux command line:

echo -n "username:password"  | openssl base64 -base64

On the other hand, you can use “curl” directly from command line to call the request with basic authentication, use the following command (it is GET in the example below):

curl --user username:password https://your_webservice_here

, , , ,

1 Comment