sabato, settembre 08, 2018

Git Hooks - A way to automate deploy tasks

During my work I use git for automate the deploy on production system. Sometimes I need execute some command or script immediately after checkout. Git has a very powerful mechanism called hooks (you can read more about it on official documentation follow this link).
On client side to install hooks what you have to do is to create a dir called hooks under .git/ . But  you do not have to do any of this because when you have initialized your project git create it for you.
If you list the content of hooks dir you can found a list of samples script to use (all of them are bash scripts). Most of this script start with the prefix  pre- or post- followed by action name.
The script that I found helpful is post-checkout that is automatically executed after a successful git checkout. My post-checkout script contain commands for adjust permissions on files and ask to restart web server.

#!/bin/bash
git ls-files -z --with-tree="$2" --directory | xargs -0 chmod o-rxw --
git ls-files -z --with-tree="$2" --directory | xargs -0 chown www-data:www-data --
find . -type d | xargs -I {} chown www-data:www-data {}
find . -type d | xargs -I {} chmod o-rwx {}
exec < /dev/tty

while true;
   do
      read -p "Do you want to restart apache?  [Y/N]:" choice
      case "$choice" in
         y|Y) service apache2 restart;break;;
         n|N) break;;
         *) echo "invalid" && break;;
      esac
   done

Remember to add execute permission to this script or git won't execute it after the checkout.

venerdì, marzo 16, 2018

Git Handbook

How to setup git with SSH Key

# git remote set-url origin git@github.com:<Username>/<Project>.git

Windows CRLF chars.

Su windows bisogna disattivare questa funziona altrimenti non funzionano i caratteri CRLF.
# git config core.autocrlf false

How can I debug git/git-shell related problems?

If you have problem with Git and you need to debug you can run this:

# GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull
Ref: https://stackoverflow.com/questions/6178401/how-can-i-debug-git-git-shell-related-problems

How to get list of files between change log ?

If you need to get list of files (included directory tree) from change list you can use:

# git diff-tree -r --name-only 2c636a^ 5b47402 | xargs -I {} rsync -aR {} output/

Delete files from git index when they are already deleted


# git ls-files --deleted -z | xargs -0 git rm


How do I show my global git config?

# git config --list

Show remote branches

# git branch -vr

Filename too long in git for windows


git config --system core.longpaths true

Note: You need to run as administrator.

Ref: https://stackoverflow.com/questions/22575662/filename-too-long-in-git-for-windows

venerdì, marzo 02, 2018

How to improve reading of log files

There are hard times when a sysadmin have to read a lot of rows of log files for troubleshoot a system error. In this times can be helpful to use some tools to improve reading of these files.

I've found two tools:

  • Generic Colouriser (GRC)https://github.com/garabik/grc - there are programs: grc and grcat. The main is grcat, which acts as a filter, i.e. taking standard input, colourising it and writing to standard output. Then you can use configuration files for customize color ouput depend on you application output log. 
  • Log File Navigator (LNAV)http://lnav.org/ - this is a real log file navigator that parse content of file and follow the stream for read latest lines. Lnav can help highlight the parts that are important and filter out the noise. 

martedì, agosto 29, 2017

How to view all ssl certificates in a bundle?

This morning I got a problem with a certificate bundle and how to get single certificate inside it.
I found the answer on ServerFault (link).

# openssl crl2pkcs7 -nocrl -certfile bundle.crt | openssl pkcs7 -print_certs -text -noout



lunedì, marzo 06, 2017

martedì, dicembre 27, 2016

Ping host and log output with timestamp

If you have some random network issue (specially on virtual machine) and you have to collect the time when it occur this command line can be helpful for you.

ping host | perl -nle 'BEGIN {$|++} print scalar(localtime), " ", $_' > outputfile

Source: http://stackoverflow.com/questions/10679807/how-to-timestamp-every-ping-result

venerdì, ottobre 28, 2016

httpie - http for everyone!

The life for a web app developer it's so difficult without a real tool for test HTTP request/response, in particular with xhr ajax near-realtime apps.

HTTPie - aitch-tee-tee-pie - (httpie.org) is an open source CLI HTTP client that will make you smile: a user-friendly curl alternative that provides a simple http command designed for painless debugging and interaction with HTTP servers, RESTful APIs, and web services.

For example, it's very simple to make a simple GET request with only one parameter:

# http httpbin.org/ip

It's available on multiplatform (Linux, Windows, MacOS X) and it's well documented.

So, what else ? Go to documentation, read all and make your http request easy!

giovedì, febbraio 04, 2016

Windows Shortcuts

General

  • Win+Up Maximize
  • Win+Down Restore / Minimize
  • Win+Left Snap to left
  • Win+Right Snap to right
  • Win+Shift+Left Jump to left monitor
  • Win+Shift+Right Jump to right monitor
  • Win+Home Minimize / Restore all other windows
  • Win+T Focus the first taskbar entry (Pressing again will cycle through them, you can can arrow around.)
  • Win+Shift+T cycles backwards.
  • Win+Space Peek at the desktop
  • Win+P External display options (mirror, extend desktop, etc)
  • Win+# (# = a number key) Launches a new instance of the application in the Nth slot on the taskbar. Example: Win+1 launches first pinned app, Win+2 launches second, etc.
  • Win + + and Win + – (plus or minus key) Zoom in or out.

Explorer

  • Alt+P Show/hide Preview Pane


Taskbar modifiers

  • Shift + Click on icon Open a new instance
  • Middle click on icon Open a new instance
  • Ctrl + Shift + Click on icon Open a new instance with Admin privileges
  • Shift + Right-click on icon Show window menu (Restore / Minimize / Move / etc) Note: Normally you can just right-click on the window thumbnail to get this menu
  • Shift + Right-click on grouped icon Menu with Restore All / Minimize All / Close All, etc.
  • Ctrl + Click on grouped icon Cycle between the windows (or tabs) in the group



sabato, gennaio 23, 2016

How to get the sizes of the tables of a mysql database

If you have a very big database with a lot of tables and you want to know which tables use more spaces, run the following query replacing %DB_NAME% with your database and %TABLE_NAME% if you know the table name.

SELECT 
    table_name AS `Table`, 
    round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` 
FROM information_schema.TABLES 
WHERE table_schema = "$DB_NAME"
    AND table_name = "$TABLE_NAME";


Ref: http://stackoverflow.com/questions/9620198/how-to-get-the-sizes-of-the-tables-of-a-mysql-database