tag:blogger.com,1999:blog-308048332024-03-13T21:08:27.602+02:00energy in code ... not so active anymore, yet still stuff and code that works in Perl, bash, sh, PLSQL, TSQL, NZPLSQL , XML, HTML, XSL, C#, Scala , Python, Teradata SQL, cmd batch scripts, Oracle , MySql some old Java stuff , Linux , DB2 , Sun Solaris , NSIS , VB 6.0 , some old Essbase VB API and plain English - all this in non-user friendly fashion combined with occasionally strong statements and opinions about IT best practices, Agile Development , energy
... dump end ...Wait - https://qto.fiYordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.comBlogger1005125tag:blogger.com,1999:blog-30804833.post-36606306826302840642018-12-13T23:17:00.001+02:002019-05-23T18:11:55.573+03:00one more reason to have short unix like naming conventions <!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"># shortly </pre>
<pre style="line-height: 125%; margin: 0;">
</pre>
<pre style="line-height: 125%; margin: 0;">while read -r subproj ; do lines=$(find $subproj -type f -exec cat {} + | wc -l); printf "%-20s %12d \n" $subproj $lines ; done < <(find . -name src) | sort -nr
</pre>
<pre style="line-height: 125%; margin: 0;">ls -1
cnf
dat
doc
lib
src
<span style="color: #888888;"># how-many lines in source ?!</span>
<span style="color: #007020;">export </span><span style="color: #996633;">dir</span><span style="color: #333333;">=</span><span style="background-color: #fff0f0;">"src"</span> ; find <span style="color: #996633;">$dir</span> -type f -exec cat <span style="color: #333333;">{}</span> + | wc -l
49943
<span style="color: #888888;"># how-many lines in configuration files ?!</span>
<span style="color: #007020;">export </span><span style="color: #996633;">dir</span><span style="color: #333333;">=</span><span style="background-color: #fff0f0;">"cnf"</span> ; find <span style="color: #996633;">$dir</span> -type f -exec cat <span style="color: #333333;">{}</span> + | wc -l
952
<span style="color: #888888;"># so how-many lines in docs ?!</span>
<span style="color: #007020;">export </span><span style="color: #996633;">dir</span><span style="color: #333333;">=</span><span style="background-color: #fff0f0;">"doc"</span> ; find <span style="color: #996633;">$dir</span> -type f -exec cat <span style="color: #333333;">{}</span> + | wc -l
41335
<span style="color: #888888;"># how-many lines alltogether in source files , cnf files and docs</span>
<span style="color: #007020;">export </span><span style="color: #996633;">dir</span><span style="color: #333333;">=</span><span style="background-color: #fff0f0;">"src cnf doc"</span> ; find <span style="color: #996633;">$dir</span> -type f -exec cat <span style="color: #333333;">{}</span> + | wc -l
92230
<span style="color: #888888;"># so how about data </span>
<span style="color: #007020;">export </span><span style="color: #996633;">dir</span><span style="color: #333333;">=</span><span style="background-color: #fff0f0;">"dat"</span> ; find <span style="color: #996633;">$dir</span> -type f -exec cat <span style="color: #333333;">{}</span> + | wc -l
171453
</pre>
</div>
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-32217755057506086652018-11-13T11:41:00.002+02:002018-11-13T11:42:30.912+02:00the most abstract model of an IT System<div>
<h2 style="text-align: center;">
So what is this diagram all about !?</h2>
<div>
<br /></div>
<div>
<br /></div>
This diagram defines the most abstract 7 components in an IT System - to comprehend it just assume you have problems in one of the components, while all others have been functioning properly and through it reflect the result onto the others and overall the System as a whole unit. <br />
<br />
<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRwm6ew8dZ3bL7cd3m6KXBxbKP5aU-JppEsgIjX2-A7uZj7omVYC3OBi-F72MPqW4pJyyPvsK5cjY34Q7f7O2HzXSfX3PwLhUpxwp2uQyWZ12vidaNPoJJXDk0b5o25Bey5U8onw/s1600/IT-System-Model.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1425" data-original-width="1405" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRwm6ew8dZ3bL7cd3m6KXBxbKP5aU-JppEsgIjX2-A7uZj7omVYC3OBi-F72MPqW4pJyyPvsK5cjY34Q7f7O2HzXSfX3PwLhUpxwp2uQyWZ12vidaNPoJJXDk0b5o25Bey5U8onw/s640/IT-System-Model.png" width="630" /></a></div>
<br />Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-51534840617548399002018-01-20T15:37:00.001+02:002018-01-20T15:37:10.614+02:00why copy paste is a smell of bad quality in code ... If you find yourself copy pasting a lot while coding it just smells that you are not using proper techniques for abstraction, inheritance, interfacing etc.Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-88154302999426679992018-01-19T11:26:00.001+02:002018-01-19T11:29:46.274+02:00The Input-Output Model-Controller Architecture DescriptionIn the previous <a href="https://ysgitdiary.blogspot.fi/2018/01/the-input-output-model-controller.html" target="_blank">post</a> I put shortly the diagram of the Input-Output Model Controller architecture ...<br />
The name seems kind of bombastic , but let me explain quickly why I think this kind of architecture could provide enough abstraction to implement ALMOST ANY type of application / tool / library ...<br />
Basically if you think what the software written by you ( or somebody else in your organisation for that manner ) is, you will realise that it is just an entity which has input and output that hopefully brings some kind of added value in the output ...<br />
<br />
Thus, ALWAYS you could:<br />
- use readers ( db , file , s3 , UI controls or whatever ) to read your input<br />
- use writers ( db , file , s3 , UI controls or whatever ) to write your output<br />
- use converters to convert the data ingested into different format<br />
- use controllers to control the whole hassle<br />
- use a Dispatcher to be able to navigate from the app entry points to the controllers<br />
<br />
That's it ! Is that simple ... Why aren't you already coding ?!<br />
<br />Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-78686373347939914352018-01-10T13:22:00.001+02:002018-01-19T11:20:00.401+02:00The Input-Output Model-Controller Architecture diagram<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhJagYSvaa_OxeFWV0QaiIsw8m8DlJkbuzz4fiGKHc-_5erD7eCAEDLjpe7RbvVF-RizKurcEzHFAis8xQ3hMV99TGUH6vfTNNyGf6NlDk6mw071uvn26i9bZ8jklJhuVQxGVP3Q/s1600/io-cm-arch.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="or simply : "shit in - shit out"" border="0" data-original-height="1600" data-original-width="1200" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhJagYSvaa_OxeFWV0QaiIsw8m8DlJkbuzz4fiGKHc-_5erD7eCAEDLjpe7RbvVF-RizKurcEzHFAis8xQ3hMV99TGUH6vfTNNyGf6NlDk6mw071uvn26i9bZ8jklJhuVQxGVP3Q/s640/io-cm-arch.jpeg" title="Input Output Model Controller Architecture" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-71093152952060704092017-12-09T15:04:00.002+02:002017-12-09T15:04:44.916+02:00a nifty bash script testing technique via loggingIn the following <a href="https://github.com/YordanGeorgiev/issue-tracker/blob/dev--run-mysql-scripts/src/bash/issue-tracker/tests/run-mysql-scripts.test.sh">git hub link to the testing code</a> a simple technique to check whether something has been set or went via a particular execution path is demonstrated.
In this particular use case <a href="https://github.com/YordanGeorgiev/issue-tracker/blob/dev--run-mysql-scripts/src/bash/issue-tracker/funcs/run-mysql-scripts.func.sh">the actual code to test </a>
should implement a logic as follows:
- check that a var is set , if not set to default value ( the var is the "mysql_scripts_dir"
As the time of writing the function is not even ready ... the challenge was how-to test that the var was set according to the desired logic ... echoing the var into the /tmp/ or /var/log / dir is out of question - since ( at least for this tool ) the tool should write data only bellow its root dir ...
The solution ?!
Echo the value of the var into the implementation code's tool log file ( the line contains the pid of the run ), build the desired log line result into the testing code and verify it by the child pid - after the code has executed there should be 1 and only 1 occurrence of that log line ...
I might be doing something reeeaally wrong here ... if you do have better ideas please comment ...
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-84822311975321692162017-11-30T10:13:00.000+02:002017-11-30T10:13:05.695+02:00git-cheat-sheet revised <!-- HTML generated using hilite.me --><div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"><pre style="margin: 0; line-height: 125%"><span style="color: #888888">#file: git-cheat-sheet.sh</span>
<span style="color: #888888"># who has done what in the current branch</span>
git log --format<span style="color: #333333">=</span><span style="background-color: #fff0f0">'%h %ai %an %m%m %s'</span>
<span style="color: #888888"># get the commit from which you wanto to change the history </span>
<span style="color: #996633">last_own_commit_hash</span><span style="color: #333333">=</span>babba7c
<span style="color: #888888"># start eding the history</span>
git rebase -i <span style="color: #996633">$last_own_commit_hash</span>
<span style="color: #888888"># on the first opening of the file change ONLY the picks -> squash or whatever</span>
<span style="color: #888888"># on the second opening of the commit msg file change the commit msg to add</span>
<span style="color: #888888"># how-to remove a file added accidentally from the whole history</span>
git filter-branch --tree-filter <span style="background-color: #fff0f0">'rm -f passwords.txt'</span> HEAD
<span style="color: #888888"># how-to remove all the files from staging</span>
git reset HEAD -- .
<span style="color: #888888"># who has done what in the current branch</span>
git log --format<span style="color: #333333">=</span><span style="background-color: #fff0f0">'%h %ai %an %m%m %s'</span>
<span style="color: #888888"># how-to list which files were added to the 6804322 commit</span>
git diff-tree --no-commit-id --name-only -r 6804322
<span style="color: #888888"># who has done what on a specific file</span>
git log --format<span style="color: #333333">=</span><span style="background-color: #fff0f0">'%h %ai %an %m%m %s'</span> --follow some/file
<span style="color: #888888"># how-to check all the current branches with less in colors</span>
git branch -a --color<span style="color: #333333">=</span>always | less -r
<span style="color: #888888"># how-to remove deleted files from git</span>
git ls-files --deleted -z | xargs -0 git rm
<span style="color: #888888">#how-to delete a remote branch </span>
git push --force remote_name :branch_to_delete
git push origin --delete feature/feature_to_delete
<span style="color: #888888"># compare the a tmp branch and the master branch</span>
git log --graph --decorate --pretty<span style="color: #333333">=</span>oneline --abbrev-commit master origin/master tmp
<span style="color: #888888"># how-to reset the local repo branch to be just like the remote one</span>
<span style="color: #888888"># you could skip those 2 lines if you do not want to save your local changes</span>
git commit -a -m <span style="background-color: #fff0f0">"Saving my work, just in case"</span>
git branch my-saved-work
<span style="color: #888888"># overwrite you local master with the remote one - or another branch ... </span>
git fetch origin
git reset --hard origin/master
<span style="color: #888888"># how-to compare the same file contents in the </span>
git diff mybranch master -- path/to/file
git fetch --all
git fetch -p origin
<span style="color: #888888"># push my cool feature to my repo fork</span>
git push myrepofork feature/mycoolfeature
<span style="color: #888888">#how-to delete a branch locally and remotely</span>
git branch -D branch_to_delete
git push -d origin branch_to_delete
<span style="color: #888888"># how-to list your existing tags</span>
git tag
git push origin tag_name
<span style="color: #888888"># how-to tag a version </span>
<span style="color: #007020">export </span><span style="color: #996633">msg</span><span style="color: #333333">=</span><span style="background-color: #fff0f0">"a simple scala console project"</span>
<span style="color: #007020">export </span><span style="color: #996633">version</span><span style="color: #333333">=</span><span style="background-color: #fff0f0">'v0.9.0.1'</span>
<span style="color: #007020">export </span><span style="color: #996633">tag_msg</span><span style="color: #333333">=</span><span style="background-color: #fff0f0">" $version -- "`</span>date <span style="background-color: #fff0f0">"+%Y-%m-%d %H:%M:%S"`" -- $msg"</span>
git tag -a <span style="color: #996633">$version</span> -m <span style="background-color: #fff0f0">"$tag_msg"</span>
<span style="color: #888888">#how-to check a version </span>
git show <span style="color: #996633">$version</span>
<span style="color: #888888"># to check a specific commit </span>
git show <span style="color: #996633">$git_obj</span>
<span style="color: #888888"># howo show which files have been commited </span>
git diff-tree --no-commit-id --name-only -r <span style="color: #996633">$git_obj</span>
<span style="color: #888888"># how-to check all the branches </span>
git branch -a
<span style="color: #888888"># chekout as specific branch</span>
git fetch --all
git checkout feature/feature_name
<span style="color: #888888"># how-to delete local branches deleted already on the remote</span>
git fetch -p --all
git checkout develop -- <span style="background-color: #fff0f0">`</span>git ls-tree --name-only -r develop | egrep <span style="background-color: #fff0f0">'*.zip'`</span>
<span style="color: #888888"># how-to compare 2 brancches </span>
git diff branch1 branch2
git log
<span style="color: #888888"># git status in colors</span>
git -c color.status<span style="color: #333333">=</span>always status | less -REX
<span style="color: #888888"># before rebasing </span>
git pull --rebase
<span style="color: #888888"># remove the unneeded commits from the last 10 </span>
git rebase -i HEAD~10
<span style="color: #888888"># how-to apply a commit from specific branch to the current branch</span>
git cherry-pick <span style="color: #996633">$commit_sha_to_apply</span>
<span style="color: #888888"># list all the remote branches</span>
git branch --all
git branch --remotes
<span style="color: #888888">#how-to install git on Ubuntu, RH and cygwin</span>
apt-get install -y git
yum install -y git
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P <span style="background-color: #fff0f0">"inetutils,wget,open-ssh,curl,grep,egrep,git"</span>
<span style="color: #888888"># pretend starting from different directory </span>
git -C ..
<span style="color: #007020">alias </span><span style="color: #996633">git</span><span style="color: #333333">=</span><span style="background-color: #fff0f0">"git -C $dir"</span>
<span style="color: #888888"># to to the tmp dir </span>
<span style="color: #007020">cd</span> /tmp
<span style="color: #888888"># set a pw run-time store in the cache </span>
git config --global credential.helper cache
git config --global core.editor <span style="background-color: #fff0f0">"vim"</span>
git config credential.helper <span style="background-color: #fff0f0">'cache --timeout=3600'</span>
<span style="color: #888888"># configure the user name and e-mail for git </span>
git config --global user.name <span style="background-color: #fff0f0">"YordanGeorgiev"</span>
git config --global user.email <span style="background-color: #fff0f0">"yordan.georgiev@gmail.com"</span>
<span style="color: #888888"># configure push behaviour</span>
git config --global push.default simple
<span style="color: #888888"># and verify</span>
less ~/.gitconfig
<span style="color: #888888"># generate your ssh keys to authenticate yourself against github</span>
ssh-keygen -t ecdsa -b 521
<span style="color: #888888"># paste the output as new key into the https://github.com/settings/keys section</span>
cat ~/.ssh/id_ecdsa.pub
<span style="color: #888888"># add the remote </span>
<span style="color: #888888"># this one asks usually a pw</span>
git remote add origin https://github.com/YordanGeorgiev/isg-pub.git
<span style="color: #888888"># this one does not ask for pw if you have ssh keys set up in github</span>
git remote <span style="color: #007020">set</span>-url origin git+ssh://git@github.com/YordanGeorgiev/aspark-starter
<span style="color: #888888"># initialize a new git repo</span>
git init
<span style="color: #888888"># clone the existing repo from the Internet</span>
git clone https://github.com/YordanGeorgiev/isg-pub.git
<span style="color: #888888"># move the .git dir to the </span>
<span style="color: #888888"># ups something went rong should redo </span>
git rm --cached -r .
<span style="color: #888888"># add the product version dir </span>
git add -v --all isg-pub.0.8.9.dev.ysg
<span style="color: #888888"># force remote repo rebuild </span>
git push --force -u origin master
git push -u origin master
<span style="color: #888888"># initialize</span>
git init
<span style="color: #888888"># add remote origin</span>
git remote add origin https://github.com/YordanGeorgiev/isg-pub.git
https://github.com/YordanGeorgiev/nzbackup-runner.git
<span style="color: #888888"># verify</span>
git remote -v
git config --global user.name <span style="background-color: #fff0f0">"YordanGeorgiev"</span>
git config --global user.email <span style="background-color: #fff0f0">"yordan.georgiev@gmail.com"</span>
<span style="color: #888888"># make git remember your pass </span>
git config --global credential.helper cache
git config credential.helper <span style="background-color: #fff0f0">'cache --timeout=3600'</span>
<span style="color: #888888"># stop make git remember your pass </span>
<span style="color: #888888"># get help </span>
<span style="color: #888888"># git --help</span>
<span style="color: #888888"># simly add all the files from the current directory</span>
git add --all
git rm --cached -r <span style="background-color: #fff0f0"><<dir_i_did_not_want_to_add>></span>
<span style="background-color: #fff0f0"># dry run adding verbose a dir</span>
git add -v -n --all isg-pub.0.8.9.dev.ysg
<span style="color: #888888">#create the master branch </span>
git push --force -u origin master
git push -u origin master
git commit -m <span style="background-color: #fff0f0">"Adding $component_name $component_version files recursively "</span>
git push
<span style="color: #888888"># to remove all the files</span>
git rm *
<span style="color: #888888"># to force master branch re-creation</span>
man git-branch
wget --no-check-certificate https://github.com/<span style="color: #996633">$MyGitUserName</span>/nzbackup-runner/archive/master.zip
<span style="color: #888888"># how-to clone </span>
<span style="color: #996633">git_repo_url</span><span style="color: #333333">=</span>https://yordan.georgiev@git.aktia.biz/scm/~yordan.georgiev/core-5971.git
git clone <span style="background-color: #fff0f0">"$git_repo_url"</span>
<span style="color: #888888"># add the reamde file for the new project </span>
touch README.md
git add README.md
git pull origin master
<span style="color: #888888"># how-to add all the files ( except those matching the $issue/.gitignore ) </span>
git add --all
git commit -m <span style="background-color: #fff0f0">"vw_INTIME_GL-create-view.sql v1.0.3 - re-write start with GL accounts"</span>
git push origin master
<span style="color: #888888"># well this is more of an jira git integration , but anyway </span>
<span style="color: #888888"># how-to link Stash commits to jira issues </span>
git commit -m <span style="background-color: #fff0f0">"$issue_id 0.4.1 foo bar"</span>
git log --pretty<span style="color: #333333">=</span>format:<span style="background-color: #fff0f0">"%cr %cn %s"</span> --author<span style="color: #333333">=</span><span style="background-color: #fff0f0">"Georgiev Yordan"</span> -3
<span style="color: #888888"># create a srong key for encryption with github</span>
ssh-keygen -t ecdsa -b 521
<span style="color: #888888">#how-to highlight a single line by http link from github</span>
<span style="color: #888888"># obs the #L<<line-number>></span>
https://github.com/futurice/lp_calculator_ui/blob/master/app/index.html#L47
<span style="color: #888888"># how-to pass a one time config variable to git</span>
git -c color.status<span style="color: #333333">=</span>always status | less -REX
<span style="color: #888888"># how-to delete all the obsolete feature branches</span>
<span style="color: #008800; font-weight: bold">while </span><span style="color: #007020">read</span> -r f; <span style="color: #008800; font-weight: bold">do </span>git push ygeo :<span style="color: #996633">$f</span> ; <span style="color: #666666; font-weight: bold; background-color: #fff0f0">\</span>
<span style="color: #008800; font-weight: bold">done</span> < <<span style="color: #333333">(</span>git branch -a | grep -i <span style="background-color: #fff0f0">'ygeo/feature'</span> | grep -v <span style="background-color: #fff0f0">'kiky'</span>| <span style="color: #666666; font-weight: bold; background-color: #fff0f0">\</span>
perl -nl -e <span style="background-color: #fff0f0">'s/remotes\/ygeo\///g;print'</span><span style="color: #333333">)</span>
<span style="color: #007020">alias </span><span style="color: #996633">glol</span><span style="color: #333333">=</span><span style="background-color: #fff0f0">'git log --graph --pretty="%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset""</span>
<span style="background-color: #fff0f0"> --abbrev-commit'</span>
<span style="color: #888888"># how-to fix the file permissions to the state git thinks they should be</span>
git diff -p <span style="color: #666666; font-weight: bold; background-color: #fff0f0">\</span>
| grep -E <span style="background-color: #fff0f0">'^(diff|old mode|new mode)'</span> <span style="color: #666666; font-weight: bold; background-color: #fff0f0">\</span>
| sed -e <span style="background-color: #fff0f0">'s/^old/NEW/;s/^new/old/;s/^NEW/new/'</span> <span style="color: #666666; font-weight: bold; background-color: #fff0f0">\</span>
| git apply
<span style="color: #888888"># check the following resources:</span>
<span style="color: #888888"># https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging</span>
<span style="color: #888888"># https://gist.github.com/JamesMGreene/cdd0ac49f90c987e45ac</span>
<span style="color: #888888">#eof file: git-cheat-sheet.sh</span>
</pre></div>
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-66838170731209706082017-11-03T09:50:00.005+02:002018-03-14T17:51:34.630+02:00the ScalaFmt plugin for IntelliJ IDEAYou could install the ScalaFmt to your IntelliJ ( File – Preferences – Plugins , search from repositories ). Than Command + Shift + L will automatically re-format …
You could also :
cat << "EOF" >>
#!/usr/bin/env bash
# remove ^^ this line if you already have a content in the pre-hook
set +x
echo 'checking for own todo left-overs ... '$(grep -ri 'todo:yourLDAPusername' . | grep -v 'pre-commit' | wc -l) ' found. '
grep -rnHi 'todo:yourLDAPusername' . | grep -v 'pre-commit'
sleep 2
set -e
echo "running scalafmt tasks ..."
sbt 'scalafmt::test' 'test:scalafmt::test' 'sbt:scalafmt::test'
echo "building sbt docs ..."
sbt doc
exit 0
EOF
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-57019745902651955012017-08-15T09:14:00.003+03:002017-08-15T09:14:45.552+03:00oracle virtual box cheat sheet<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"><span class="rem">#file: docs/cheat-sheets/vbox/vbox-cheat-sheet.sh</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># get the uuid's of your vms</span></pre>
<pre>VBoxManage list vms | column -t | sort</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to use host's vpn with host-only network on nic1 and nat on nic2 confs</span></pre>
<pre class="alt">VBoxManage modifyvm 8e2562ee-61e3-48da-9381-092fc1ab909c --natdnsproxy1 on</pre>
<pre>VBoxManage modifyvm 8e2562ee-61e3-48da-9381-092fc1ab909c --natdnshostresolver1 on</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to start a vm without ui </span></pre>
<pre class="alt">VBoxManage startvm <span class="str">"vm-name"</span> --type headless</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to start a vm with detachable ui ( no 3D acceleration )</span></pre>
<pre>VBoxManage startvm <span class="str">"vm-name"</span> --type separate</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to save the current state of the vm </span></pre>
<pre class="alt">VBoxManage controlvm <span class="str">"vm_name"</span> savestate</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to start a vm with ui </span></pre>
<pre>VBoxManage startvm <span class="str">"vm-name"</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to shutdown a vm</span></pre>
<pre class="alt">VBoxManage controlvm <span class="str">"vm_name"</span> poweroff</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># add port forwarding from host to guest</span></pre>
<pre>VBoxManage modifyvm <span class="str">"vm_name"</span> --natpf1 <span class="str">"5001,tcp,,5001,,5001"</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem">#how-to check network settings </span></pre>
<pre class="alt">VBoxManage showvminfo <span class="str">"vm_name"</span> | grep NIC</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># in bash how-to export all myy Virtual box vms in Windows in the current dir</span></pre>
<pre><span class="kwrd">while</span> read -r vms ; do echo VBoxManage export <span class="str">"$vms"</span> -o <span class="str">"$vms"</span>.ova ; done < <(VBoxManage list vms|cut -d<span class="str">'"'</span> -f2)</pre>
<pre class="alt"> </pre>
<pre><span class="rem">#in cmd how-to export all myy Virtual box vms in Windows in the current dir in cmd</span></pre>
<pre class="alt"><span class="kwrd">for</span> /f <span class="str">"tokens=1 delims= "</span> %i <span class="kwrd">in</span> (<span class="str">'VBoxManage list vms'</span>) do VBoxManage export %i -o %i.ova</pre>
<pre> </pre>
<pre class="alt"><span class="rem">#how-to resize the virtual disk</span></pre>
<pre>VBoxManage modifyhd <span class="str">"C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk1.vmdk"</span> --resize 20000</pre>
<pre class="alt"> </pre>
<pre><span class="rem">#you reserved too little space during installation ?! No problem resize the virtual disk :</span></pre>
<pre class="alt">VBoxManage clonehd <span class="str">"C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk1.vmdk"</span> <span class="str">"C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk.vdi"</span> --format vdi</pre>
<pre>VBoxManage modifyhd <span class="str">"C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk.vdi"</span> --resize 20480</pre>
<pre class="alt"> </pre>
<pre>VBoxManage guestproperty enumerate doc-pub-host | grep -i Net | grep -i ip</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># nok Add an IDE controller with a DVD drive attached, and the install ISO inserted into the drive:</span></pre>
<pre class="alt">VBoxManage storagectl lp_host --name <span class="str">"IDE"</span> --add ide</pre>
<pre><span class="rem"># ok </span></pre>
<pre class="alt">VBoxManage storageattach lp_host --storagectl <span class="str">"IDE"</span> --port 0 --device 0 --type dvddrive --medium <span class="str">"C:\var\pckgs\gnu\Ubuntu\ubuntu-16.04.1-desktop-amd64.iso"</span></pre>
<pre> </pre>
<pre class="alt">VBoxManage modifyvm %VM% --ioapic on</pre>
<pre>VBoxManage modifyvm %VM% --boot1 dvd --boot2 disk --boot3 none --boot4 none</pre>
<pre class="alt">VBoxManage modifyvm %VM% --memory 1024 --vram 128</pre>
<pre>VBoxManage modifyvm %VM% --nic1 bridged --bridgeadapter1 e1000g0</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem">#</span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># VersionHistory: </span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># export version=1.1.0</span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># 1.1.0 -- 2016-12-01 08:42:59 -- ysg -- </span></pre>
<pre class="alt"><span class="rem"># 1.0.0 -- 2016-08-16 22:40:16 -- ysg -- </span></pre>
<pre><span class="rem"># ---------------------------------------------------------</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem">#eof file: docs/cheat-sheets/vbox/vbox-cheat-sheet.sh</span></pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-58458081200265533172017-08-10T16:14:00.001+03:002017-08-10T16:14:26.581+03:00the isg-pub and issue-trackers merging arcitectures<br />
The <a href="https://github.com/YordanGeorgiev/issue-tracker" target="_blank">issue-tracker</a> and the <a href="https://github.com/YordanGeorgiev/isg-pub" target="_blank">isg-pub</a> begin to merge ...<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjUndKg9Aru9Uszmis8MNmeInu4bSVcf2E0J3zwDHrRHxu7iruh73Chwo3XgzNdiu2F2gdvGuTP2Bu5qUt59VFTxZ7CN_qWWQwU06IbWCI4naUgcmymYaY72QJMSO1SnpPG8dLlA/s1600/snap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="384" data-original-width="512" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjUndKg9Aru9Uszmis8MNmeInu4bSVcf2E0J3zwDHrRHxu7iruh73Chwo3XgzNdiu2F2gdvGuTP2Bu5qUt59VFTxZ7CN_qWWQwU06IbWCI4naUgcmymYaY72QJMSO1SnpPG8dLlA/s640/snap.png" width="640" /></a></div>
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-2321793005268227192017-08-08T16:26:00.002+03:002017-08-08T16:26:49.918+03:00aws cli cheat sheet ( revised ) <!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"> </pre>
<pre><span class="rem"># ok</span></pre>
<pre class="alt"><span class="rem"># how-to loop trough all your load balancer names </span></pre>
<pre><span class="kwrd">while</span> read -r lb ; do \</pre>
<pre class="alt"> echo -e <span class="str">"\n\n start lb: $lb "</span> ; \</pre>
<pre> aws elb add-tags --load-balancer-name $lb --tags \</pre>
<pre class="alt"> <span class="str">"Key=Team,Value=odinId-834"</span> \</pre>
<pre> <span class="str">"Key=ODINAPPID_ENV_ROLE_STACK,Value=834_dev_app_nps"</span> \</pre>
<pre class="alt"> --profile dev; \</pre>
<pre> echo <span class="str">" stop lb: $lb"</span> ; \</pre>
<pre class="alt">done < <(aws elb describe-load-balancers --query \</pre>
<pre><span class="str">'LoadBalancerDescriptions[].LoadBalancerName'</span> \</pre>
<pre class="alt">--profile dev|perl -nle <span class="str">'s/\s+/\n/g;print'</span>)</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to loop trough all your lb instances </span></pre>
<pre><span class="kwrd">while</span> read -r lb ; do \</pre>
<pre class="alt"> echo -e <span class="str">"\n\n start lb: $lb "</span> ; \</pre>
<pre> echo run cmd on lb: $lb ; \</pre>
<pre class="alt"> echo <span class="str">" stop lb: $lb"</span> ; \</pre>
<pre>done < <(aws elb describe-load-balancers --query \</pre>
<pre class="alt"><span class="str">'LoadBalancerDescriptions[].Instances[].InstanceId'</span> \</pre>
<pre>--profile dev|perl -nle <span class="str">'s/\s+/\n/g;print'</span>)</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to query all the instance id's in <<env>></span></pre>
<pre class="alt"><span class="kwrd">while</span> read -r i ; do echo instance-id: $i; done < <(aws ec2 describe-instances --query <span class="str">"Reservations[].Instances[].InstanceId"</span> --profile dev|perl -nl -e <span class="str">'s/\s+/\n/g;print'</span>)</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to list the tags in the instances</span></pre>
<pre><span class="kwrd">for</span> i <span class="kwrd">in</span> $(aws ec2 describe-instances --query <span class="str">"Reservations[].Instances[].InstanceId"</span> --profile prd) ; do echo instance $i tags : ; aws ec2 describe-tags --filters <span class="str">"Name=resource-id,Values=$i"</span> --profile prd --output table ; done ;</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to add tags to all instances in env</span></pre>
<pre class="alt"><span class="kwrd">for</span> i <span class="kwrd">in</span> $(aws ec2 describe-instances --query <span class="str">"Reservations[].Instances[].InstanceId"</span> --profile dev) ; do echo -e <span class="str">"instance $i :\n"</span> ; aws ec2 create-tags --resources $i --tags <span class="str">"Key=TheKey,Value=TheValue"</span> --profile dev ; echo -e <span class="str">"stop instance : $i \n"</span> ; done ;</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># add the ODINAPPID_ENV_ROLE_STACK tag to all the istances in dev </span></pre>
<pre class="alt"><span class="kwrd">for</span> i <span class="kwrd">in</span> $(aws ec2 describe-instances --query <span class="str">"Reservations[].Instances[].InstanceId"</span> --profile dev) ; do echo -e <span class="str">"instance $i :\n"</span> ; aws ec2 create-tags --resources $i --tags <span class="str">"Key=ODINAPPID_ENV_ROLE_STACK,Value=834_dev_app_nps"</span> --profile dev ; echo -e <span class="str">"stop instance : $i \n"</span> ; done ;</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># add the Team tag to all the instances in prd</span></pre>
<pre><span class="kwrd">for</span> i <span class="kwrd">in</span> $(aws ec2 describe-instances --query <span class="str">"Reservations[].Instances[].InstanceId"</span> --profile prd) ; do echo -e <span class="str">"instance $i :\n"</span> ; aws ec2 create-tags --resources $i --tags <span class="str">"Key=Team,Value=odinId-834"</span> --profile prd ; echo -e <span class="str">"stop instance : $i \n"</span> ; done ;</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="kwrd">for</span> i <span class="kwrd">in</span> $(aws ec2 describe-instances --query \</pre>
<pre class="alt"><span class="str">"Reservations[].Instances[].InstanceId"</span> --profile prd) ; do \</pre>
<pre>echo instance $i tags : ; aws ec2 describe-tags \</pre>
<pre class="alt">--filters <span class="str">"Name=resource-id,Values=$i"</span> \</pre>
<pre>--profile prd --output table | egrep -i <span class="str">'team'</span> ; \</pre>
<pre class="alt">done</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="kwrd">while</span> read -r i ; do </pre>
<pre class="alt"> echo instance-id: $i ; </pre>
<pre>done < <(aws ec2 describe-instances --query \</pre>
<pre class="alt"><span class="str">"Reservations[].Instances[].InstanceId"</span> --profile dev) ;</pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-68328559984458579162017-08-08T11:52:00.001+03:002017-08-08T11:52:12.177+03:00aws cli cheat sheet<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"><span class="rem"># file: docs/cheat-sheets/aws/aws-cli-cheat-sheet.sh</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># aws ec2</span></pre>
<pre>aws ec2 describe-instances --profile prd</pre>
<pre class="alt">aws ec2 describe-instances --region us-east-1 --output=text --profile rnd | grep -i INSTANCES</pre>
<pre>aws ec2 describe-dhcp-options --region us-east-1 --output=text --profile rnd</pre>
<pre class="alt">aws ec2 describe-internet-gateways --output=text --profile prd</pre>
<pre>aws ec2 monitor-instances --instance-ids i-033b311170f00db51 --region us-east-1 --output=text --profile rnd</pre>
<pre class="alt">aws ec2 describe-vpcs --profile prd</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># aws elb</span></pre>
<pre class="alt">aws elb describe-load-balancers --profile prd | grep -i listener</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># aws route53 </span></pre>
<pre class="alt">aws route53 list-resource-record-sets --hosted-zone-id <span class="str">"$hosted_zone_id"</span> --profile prd</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># test the dns answer in the aws route53</span></pre>
<pre class="alt"><span class="kwrd">for</span> record_type <span class="kwrd">in</span> $record_types ; do \</pre>
<pre> aws route53 test-dns-answer \</pre>
<pre class="alt"> --hosted-zone-id <span class="str">"$hosted_zone_id"</span> \</pre>
<pre> --record-name <span class="str">"$record_name"</span> \</pre>
<pre class="alt"> --record-type <span class="str">"$record_type"</span> \</pre>
<pre> --resolver-ip <span class="str">"$resolver_ip"</span> \</pre>
<pre class="alt"> --profile <span class="str">"prd"</span> ;</pre>
<pre>done</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># aws iam</span></pre>
<pre>aws iam list-server-certificates --profile prd</pre>
<pre class="alt"> </pre>
<pre>aws iam upload-server-certificate \</pre>
<pre class="alt"> --server-certificate-name <span class="str">"$server_certificate_name"</span> \</pre>
<pre> --certificate-body file://<span class="str">"$certificate_body_file"</span> \ <span class="rem"># BEGIN CERTIFICATE -> END CERTIFICATE</span></pre>
<pre class="alt"> --certificate-chain file://<span class="str">"$cerftificate_chain_file"</span> \ </pre>
<pre> --<span class="kwrd">private</span>-key file://<span class="str">"$private_key_file"</span> \ <span class="rem"># rsa start -> rsa stop</span></pre>
<pre class="alt"> --profile prd</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># install aws cli via python pip package manager</span></pre>
<pre>curl <span class="str">"https://bootstrap.pypa.io/get-pip.py"</span> -o <span class="str">"get-pip.py"</span> </pre>
<pre class="alt">sudo python get-pip.py</pre>
<pre>sudo pip install --upgrade awscli</pre>
<pre class="alt">sudo apt-get install python-pip</pre>
<pre>sudo pip install awscli</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># or via os package manager </span></pre>
<pre class="alt"><span class="rem"># install the aws-cli package</span></pre>
<pre>sudo apt-get install -y awscli</pre>
<pre class="alt">sudo yum install -y awscli</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># aws cloudformation </span></pre>
<pre>aws cloudformation describe-stacks --output=table --profile prd</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># in aws admin console :</span></pre>
<pre><span class="rem"># Services => iam => users => <<your_username>> => Security Credentials => Access Keys</span></pre>
<pre class="alt"><span class="rem"># configure the aws cli</span></pre>
<pre>cat << <span class="str">"EOF"</span> > ~/.aws/credentials</pre>
<pre class="alt">[dev]</pre>
<pre>aws_access_key_id = <<your_aws_access_key_id_in_the_dev_environment>></pre>
<pre class="alt">aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>></pre>
<pre>[prd]</pre>
<pre class="alt">aws_access_key_id = <<your_aws_access_key_id_in_the_prd_environment>></pre>
<pre>aws_secret_access_key = <<your_aws_secret_access_key_in_prd_env>></pre>
<pre class="alt">[<span class="kwrd">default</span>]</pre>
<pre>aws_access_key_id = <<your_aws_access_key_id_in_the_dev_environment>></pre>
<pre class="alt">aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>></pre>
<pre>EOF</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># set-up the ~/.boto confs</span></pre>
<pre class="alt">cat << <span class="str">"EOF"</span> > ~/.boto</pre>
<pre>[profile dev]</pre>
<pre class="alt">aws_access_key_id = <<your_aws_access_key_id_in_the_dev_environment>></pre>
<pre>aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>></pre>
<pre class="alt">[profile prd]</pre>
<pre>aws_access_key_id = <<your_aws_access_key_id_in_the_prd_environment>></pre>
<pre class="alt">aws_secret_access_key = <<your_aws_secret_access_key_in_prd_env>></pre>
<pre>[profile <span class="kwrd">default</span>]</pre>
<pre class="alt">aws_access_key_id = <<your_aws_access_key_id>></pre>
<pre>aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>></pre>
<pre class="alt">EOF</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to configure your default regions and formats</span></pre>
<pre class="alt"><span class="rem"># src: http://docs.aws.amazon.com/cli/latest/topic/config-vars.html</span></pre>
<pre>cat << <span class="str">"EOF"</span> > ~/.aws/config</pre>
<pre class="alt"> </pre>
<pre>[profile rnd]</pre>
<pre class="alt">output = text</pre>
<pre>region = us-east-1</pre>
<pre class="alt">[profile prd]</pre>
<pre>output = text</pre>
<pre class="alt">region = us-east-1</pre>
<pre>[<span class="kwrd">default</span>]</pre>
<pre class="alt">output = text</pre>
<pre>region = Global</pre>
<pre class="alt"> </pre>
<pre>EOF </pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"># eof file: docs/cheat-sheets/aws/aws-cli-cheat-sheet.sh</pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-77659569283059284452017-08-07T17:57:00.003+03:002017-08-07T17:57:53.997+03:00openssl + aws lb cheat sheet<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"><span class="rem"># openssl + aws iam cheat sheet</span></pre>
<pre><span class="rem"># src: https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-prerequisites.html</span></pre>
<pre class="alt">The certificate, <span class="kwrd">private</span> key, and certificate chain must all be PEM-encoded. PEM stands <span class="kwrd">for</span> Privacy Enhanced Mail but was never widely adopted an Internet mail standard. Instead, the PEM format is often used to represent a certificate or certificate request. It is base64-encoded and placed between a -----BEGIN CERTIFICATE----- header and an -----END CERTIFICATE----- footer</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># download the sq.crt VerisignRoot CA certtificate</span></pre>
<pre>curl -O http://sg.symcb.com/sg.crt</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># ok</span></pre>
<pre class="alt"><span class="rem"># convert the root certificate to pem format</span></pre>
<pre>openssl x509 -text -inform DER -<span class="kwrd">in</span> sg.crt > sg.crt.pem</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># OK</span></pre>
<pre>aws iam upload-server-certificate \</pre>
<pre class="alt"> --server-certificate-name <<service>>-<<app>>-<<date-valid-to>>-<<Issuer-CA>> \</pre>
<pre> --certificate-body file://body.pem \ <span class="rem"># BEGIN CERTIFICATE -> END CERTIFICATE</span></pre>
<pre class="alt"> --certificate-chain file://sg.crt.pem \ </pre>
<pre> --<span class="kwrd">private</span>-key file://<span class="kwrd">private</span>-key.key \ <span class="rem"># rsa start -> rsa stop</span></pre>
<pre class="alt"> --profile prd</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># ok</span></pre>
<pre class="alt"><span class="rem"># create pem files from the cert files</span></pre>
<pre><span class="kwrd">while</span> read -r f; do openssl x509 -<span class="kwrd">in</span> $f -text > $f.pem ; echo done with $f ; done < <(find . -type f -name <span class="str">"*.cert"</span> |sort)</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># ok</span></pre>
<pre class="alt"><span class="rem"># check the private keys ( *.key ) files</span></pre>
<pre><span class="kwrd">while</span> read -r f ; do echo <span class="str">'### START '</span>$f | less; openssl rsa -<span class="kwrd">in</span> $f -check 2>&1 | less ; echo <span class="str">'### STOP '</span>$f | less ; done < <(find . -name <span class="str">'*.key'</span>)</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># ok</span></pre>
<pre class="alt"><span class="rem"># check the cert ( *.cert ) files</span></pre>
<pre><span class="kwrd">while</span> read -r f ; do echo <span class="str">'### START '</span>$f | less; openssl x509 -<span class="kwrd">in</span> $f -text -noout 2>&1 | less ; echo <span class="str">'### STOP '</span>$f | less ; done < <(find . -name <span class="str">'*.cert'</span>)</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># ok</span></pre>
<pre class="alt"><span class="rem"># create the cert ( *.cert ) files</span></pre>
<pre><span class="kwrd">while</span> read -r f ; do echo <span class="str">'### START '</span>$f | less; openssl x509 -<span class="kwrd">in</span> $f -text -noout > <span class="str">"$f"</span><span class="str">".pem"</span> 2>&1 | less ; echo <span class="str">'### STOP '</span>$f | less ; done < <(find . -name <span class="str">'*.cert'</span>)</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># ok </span></pre>
<pre><span class="rem"># check the private key file</span></pre>
<pre class="alt">openssl rsa -<span class="kwrd">in</span> key-file.key -check</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># src: https://www.sslshopper.com/article-most-common-openssl-commands.html</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># Generate a new private key and Certificate Signing Request</span></pre>
<pre>openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># Generate a self-signed certificate </span></pre>
<pre class="alt">openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># Generate a certificate signing request (CSR) for an existing private key</span></pre>
<pre>openssl req -out CSR.csr -key privateKey.key -new</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># Generate a certificate signing request based on an existing certificate</span></pre>
<pre>openssl x509 -x509toreq -<span class="kwrd">in</span> certificate.crt -out CSR.csr -signkey privateKey.key</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># Remove a passphrase from a private key</span></pre>
<pre>openssl rsa -<span class="kwrd">in</span> privateKey.pem -out newPrivateKey.pem</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># Check a Certificate Signing Request (CSR)</span></pre>
<pre>openssl req -text -noout -verify -<span class="kwrd">in</span> CSR.csr</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># Check a private key</span></pre>
<pre class="alt">openssl rsa -<span class="kwrd">in</span> privateKey.key -check</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># Check a certificate</span></pre>
<pre class="alt">openssl x509 -<span class="kwrd">in</span> certificate.crt -text -noout</pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-42161222069739146822017-08-06T12:01:00.001+03:002017-08-06T12:01:36.108+03:00VT-x is not available (VERR_VMX_NO_VMX) code E_FAIL error after Windows update or Why Microsoft is still evil Once and a while after a Windows Update MSFT keeps pushing the Hyper-V features on ... even after the users have explicitly removed them beforehand ... This is evil !!!
<a href="https://stackoverflow.com/a/42889976/65706">from this stackoverflow quesstion</a>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-12835356879260412472017-08-02T17:43:00.002+03:002017-08-02T17:43:35.220+03:00linux cheat sheet ( revised ) <!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<pre class="csharpcode">
<span class="rem"># file:linux-cheat-sheet.sh v.1.9.5 docs at the end </span>
<span class="rem"># dns troubleshooting</span>
dig host-dns.name
<span class="rem"># how-many Answers !? </span>
host host-dns.name
nslookup
<span class="rem"># type g=max</span>
<span class="rem"># type host-dns.name</span>
<span class="rem"># how interfaces on host </span>
ip link show
<span class="rem"># trace tcp with tcpdump</span>
sudo tcpdump -i enp0s3 -l > dat & tail -f dat
<span class="rem"># trace ssl trafic with sssldump</span>
ssldump -k /etc/stealmykeys/test.key -i eth0 -dnq host 10.41.12.50
<span class="rem"># list all the tmux sessions</span>
tmux ls
<span class="rem"># create a new tmux session</span>
tmux new -s <span class="str">"mngmt-1"</span>
<span class="rem">#find in files with colors</span>
export to_srch=perl
find . -type f -exec grep -nHi --color=always -R $to_srch {} \; | less -R
find . -name <span class="str">'*.pm'</span> | xargs -P 5 grep -nHP --color=always -P $to_srch | less -R
<span class="rem"># how-to search for cygwin packages having the "perl" string in their names, requires wget and perl</span>
wget -qO- <span class="str">"https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64"</span> | \
perl -l <span class="preproc">-ne</span> <span class="str">'m!(.*?)<\/a>\s+\-(.*?)\:(.*?)<\/li>!;print $2'</span>
<span class="rem"># install multiple packages at once, note the</span>
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P <span class="str">"inetutils,wget,open-ssh,curl,grep,egrep,git,vim,zip,unzip,tmux"</span>
<span class="rem"># and test </span>
<span class="kwrd">for</span> bin <span class="kwrd">in</span> `echo ftp telnet wget ssh sftp curl grep egrep`; do echo <span class="str">"$bin path:"</span>; which $bin ;done ;
<span class="rem"># while loop</span>
find `pwd` | { <span class="kwrd">while</span> read -r file ; do echo <span class="str">"$file"</span> ; done ; }
<span class="rem"># fork processes with while</span>
c=0
cat <span class="str">"$list_file"</span> | { <span class="kwrd">while</span> read -r jira_issue ; do c=$((c+1)) ; test $c <span class="preproc">-eq</span> 5 && sleep $c && export c=0 ; \
( sh /maintenance/ip/sfw/sh/jira --action progressIssue --issue $jira_issue --step 41 )& done }
<span class="rem">#-- start - search and replace recursively in both files and file paths</span>
to_srch=<span class="str">'what_to_srch'</span>
to_repl=<span class="str">'what_to_replace'</span>
<span class="rem">#-- srch and repl %var_id% with var_id_val in dirs in $component_name_dir_tmp</span>
find <span class="str">"$dir"</span> -type d |\
perl -nle <span class="str">'$o=$_;s#'</span><span class="str">"$to_srch"</span><span class="str">'#'</span><span class="str">"$to_repl"</span><span class="str">'#g;$n=$_;`mkdir -p $n` ;'</span>
find <span class="str">"$dir"</span> -type f |\
perl -nle <span class="str">'$o=$_;s#'</span><span class="str">"$to_srch"</span><span class="str">'#'</span><span class="str">"$to_repl"</span><span class="str">'#g;$n=$_;rename($o,$n) unless -e $n ;'</span>
<span class="rem">#-- stop - search and replace recursively in both files and file paths</span>
<span class="rem">#-- start - srch and repl %var_id% with var_id_val in files in $component_name_dir_tmp</span>
find <span class="str">"$dir"</span> -type f -exec perl -pi -e <span class="str">"s#$to_srch#$to_repl#g"</span> {} \;
find <span class="str">"$dir/"</span> -type f -name <span class="str">'*.bak'</span> | xargs rm -f
<span class="rem">#-- stop - srch and repl %var_id% with var_id_val in files in $component_name_dir_tmp</span>
<span class="rem"># get a nice prompt </span>
3
export PS1=<span class="str">"\h [\d \t] [\w] $ \n\n "</span>
<span class="rem"># nice listing</span>
find . -type f -exec stat -c <span class="str">'%n %y'</span> {} \; | sort -n | less
<span class="rem"># check permissions effectively </span>
find . -type f -exec stat -c <span class="str">"%U:%G %a %n"</span> {} \; | less
<span class="rem"># aliases</span>
<span class="rem"># show dirs with nice time newest modified on top </span>
alias ll=<span class="str">'ls -alrt --time-style=long-iso'</span>
alias tarx=<span class="str">'tar -zxvf'</span>
alias tarc=<span class="str">'tar -zcvf'</span>
<span class="rem"># find the only the uniq file names of specific file type </span>
find `pwd` -name <span class="str">'*.xml'</span> | perl -pe <span class="str">'s/(.*)(\\|\/)(.*)/$3/;'</span> | sort | uniq -u
<span class="rem"># how-to find in files - e.g. search by a perl regex in files and redirect the output to vim </span>
find `pwd` -name <span class="str">'*.pm'</span> -exec grep -inHP -A 1 <span class="str">'sub [a-zA-Z0-9]*\s+\{'</span> {} \; | vim -
<span class="rem"># how-to search for a regex and build the ready open vim to found line cmds</span>
find $dir -name <span class="str">'*.ext'</span> -exec grep -nHP <span class="str">'regex'</span> {} \; | perl <span class="preproc">-ne</span> <span class="str">'m/^(.*):(\d{1,10})(.*)/g;print "vim ". "+$2 " . "$1 \n"'</span>
<span class="rem"># go the previous dir you where </span>
cd -
pushd .; popd
<span class="rem">#how-to check opened ports with nmap</span>
nmap -sT -O localhost
<span class="rem"># get selinux security context</span>
ls -al --lcontext $dir
<span class="rem"># change the selinux security context </span>
chcon -vR -u system_u -r object_r -t httpd_sys_content_t $dir
<span class="rem"># use rsync to preserve permissions</span>
rsync -v -X -r -E -o -g --perms --acls $src_dir $tgt_dir
rsync -v -r --partial --progress --human-readable --stats $src_dir $tgt_dir
rsync -v -r --partial --progress --human-readable --stats $src_dir/$f $tgt_dir/$f
<span class="kwrd">while</span> read line_with_spaces ; do sh /path/to/<span class="kwrd">script</span>.sh <span class="str">"$line_with_spaces"</span> ; done < $file_with_lines_with_spaces
export file_name_to_filter=infa-reporter
stat -c <span class="str">"%n %y"</span> *.zip | perl <span class="preproc">-ne</span> <span class="str">'m/^(.*?) (.*)/g; printf "%-70s %-50s \n" , "$1" , "$2"'</span> | sort -r -k 2 | grep -i $file_name_to_filter
stat -c <span class="str">"%y %n"</span> *.zip | sort -nr | less
<span class="rem"># The ultimate "find in files"</span>
find /etc/httpd/ -type f -print0 | xargs --null grep -nHP <span class="str">'StartServers\s+\d'</span> | less
<span class="rem"># for loop</span>
<span class="kwrd">for</span> file <span class="kwrd">in</span> `find / -type f \( -name <span class="str">"*.pl"</span> -or -name <span class="str">"*.pm"</span> \) -exec file {} \; | grep text | perl -nle <span class="str">'split /:/;print $_[0]'</span> `; do grep -i --color -nH <span class="str">'string_to_search'</span> $file ; done ;
<span class="rem"># or even faster , be aware of funny file names xargs -0</span>
find / -name <span class="str">'*bak'</span> -print0 | xargs --null grep -nPH <span class="str">'curl'</span>
<span class="rem"># find and replace recursively</span>
find . -name <span class="str">'*.html'</span> -print0 | xargs -0 perl -pi -e <span class="str">'s/foo/bar/g'</span>
<span class="rem"># how-to check disk space</span>
find $dir -maxdepth 2 -type d -exec du -B M --max-depth=1 {} \; | sort -nr | less
<span class="rem"># find all the files greather than 100 MB , sort them by the size and print their sizes </span>
find $dir -type f -size +2M -exec du -B M {} \; | sort -nr | less
du -B M --max-depth 3 $dir | perl -nle <span class="str">'s#\s+# #g;print'</span> | perl <span class="preproc">-ne</span> <span class="str">'m/^(.*?) (.*)/g; printf "%10s %-50s \n" , "$1" , "$2"'</span> | sort -nr -k1 | less
<span class="rem"># how-to search bunch of tar.gz files </span>
cmd=<span class="str">"zgrep $StringToFind '{}' >> $FileToOutput"</span>
find ${DirFindRoot} -type f -name ${nameFilter} -print0 | xargs -0 -I <span class="str">'{}'</span> sh -c <span class="str">"$cmd"</span>
<span class="rem"># disk usage of users under the /home directory in MB</span>
export dir=/data/reseller/tmp/;
clear;du -all --block-size=1M $dir --max-depth=2 | sort -n | perl <span class="preproc">-ne</span> <span class="str">'@a=split /\s+/g;$a[0]=~s/(?<=\d)(?=(?:\d\d\d)+\b)/ /g;printf "%15s %10s",$a[0],"$a[1] \n" '</span>
<span class="rem"># show in megs and sort each folder</span>
find $dir -type d -exec du --summarize -B M {} \; | sort -nr | perl <span class="preproc">-ne</span> <span class="str">'@a=split /\s+/g;$a[0]=~s/(?<=\d)(?=(?:\d\d\d)+\b)/ /g;printf "%15d %10s",$a[0],"$a[1] \n" '</span>| less
tcpdump dst 10.168.28.22 and tcp port 22
tcpdump dst 1.2.81.2.8.212
<span class="rem"># record the current session via script</span>
mkdir ~/scriptlogs
<span class="kwrd">script</span> -a ~/data/log/<span class="kwrd">script</span>/`date +%Y%m%d%H%M%S`_script.log
<span class="rem">#/usr/bin is for normal user executables, /usr/sbin is for superuser executables, /usr/sfw is for external software (like gnu one), but provided with bundle of OS, /usr/ccs is for development utilities, usually not need for daily tasks like make, lex, yacc, sccs</span>
<span class="rem"># take the last 5 commands for faster execution to the temp execution script</span>
tail -n 5 /root/.bash_history >> /var/run.sh
<span class="rem"># I saw the command cd /to/some/suching/dir/which/was/very/long/to/type</span>
echo so I redid it and saved my fingers
!345
<span class="rem">#how-to check my history without the line numbers </span>
history | cut -c 8- | grep env
<span class="rem"># how to deal with command outputs</span>
command | filtercommand > command_output.txt 2>errors_from_command.txt
<span class="rem"># find the files having os somewhere in their names and only those having linux</span>
find . -name <span class="str">'*os*'</span> | grep linux | less
<span class="rem"># find all xml type of files and display only the rows having wordToFindInRow</span>
find . -name <span class="str">'*.xml'</span> -exec cat {} \;| grep wordToFindInRow | less
<span class="rem"># START === bash shortcuts </span>
<span class="rem"># Go to the beginning of the line you are currently typing on</span>
Ctrl + A
<span class="rem"># Go to the end of the line you are currently typing on</span>
Ctrl + E
<span class="rem"># move a word forward </span>
Alt + F
<span class="rem"># move a word backwards</span>
Alt + B
<span class="rem"># STOP === bash shortcuts </span>
<span class="rem"># how-to mount an usb stick</span>
<span class="rem"># remember to change the path other wise you will get the device is busy errror</span>
mkdir /mnt/usbflash
mount /dev/sdb1 -t vfat /mnt/usbflash
mount /vagrant -t /mnt/hgfs/vagrant
mount -t vmhgfs .host:/mnt/hgfs/vagrant /vagrant
umount /mnt/usbflash
<span class="rem">#display the first 20 lines of the file</span>
head -n 20 too-long-file
<span class="rem">#start e-mail </span>
<span class="rem"># how to restart a service initiated at startup</span>
/etc/rc.d/init.d/sendmail start | stop | status | restart
<span class="rem"># how-to send via e-mails the files of a dir with mailx</span>
export dir=`pwd`
export attachments=$(find $dir -type f| perl <span class="preproc">-ne</span> <span class="str">'print "-a $_"'</span>| xargs)
echo $attachments | mailx $attachments -s <span class="str">"$dir files"</span> $MyEmail
mailx $(find $dir -type f| perl <span class="preproc">-ne</span> <span class="str">'print "-a $_"'</span>| xargs) -s <span class="str">"$fir files"</span> $MyEmail < `echo $(find $dir -type f| perl <span class="preproc">-ne</span> <span class="str">'print "-a $_"'</span>| xargs)`
<span class="rem">#stop e-mail</span>
<span class="rem"># see all the rules associated with the firewall</span>
iptables -L -n -v --line-numbers
gunzip *file.zip
<span class="rem"># To start remote session click on the putty screen , configure putty</span>
<span class="rem"># settings to pull full screen with alt + Enter</span>
<span class="rem"># right click on the title bar , settings , change the font , copy</span>
<span class="rem"># paste from and to the terminal window text</span>
<span class="rem"># how to ensure the sshd daemon is running</span>
ps -ef | grep sshd
<span class="rem"># how to kill process interactively</span>
killall -v -i sshd
<span class="rem"># the most efficent way to search your history is to hit Ctrl R and</span>
<span class="rem">#type the start of the command. It will autocomplete as soon as theres</span>
<span class="rem">#a match to a history entry, then you just hit enter. If you want to</span>
<span class="rem">#complete the command (add to it ) use the right arrow to</span>
<span class="rem">#escape from the quick search box ...</span>
<span class="rem">#How to see better which file were opened , which directories were visited</span>
<span class="rem">#type always the fullpath after the vi - use the $PWD env variable to</span>
<span class="rem">#open files in the current directory , thus after opening the file</span>
<span class="rem">#after:</span>
<span class="rem">#vi /$PWD , press tab to complete the name of the current directory ,</span>
<span class="rem">#type the name of the file. THUS AFTER RUNNING</span>
history | grep vim
<span class="rem">#of course the same could be seen from the /home/username/.viinfo file /files</span>
<span class="rem">#where to set the colors for the terminal (if you are lucky to have one</span>
<span class="rem"># with colors ; )</span>
/etc/DIR_COLORS
open a file containing <span class="str">"sh"</span> <span class="kwrd">in</span> its name bellow the <span class="str">"/usr/lib"</span> directory
:r !find /usr/lib -name *sh*
go over the file and gf
<span class="rem">#which version of Linux I am using</span>
uname -a
<span class="rem">#How to copy paste text in the putty window from client to server -</span>
<span class="rem">#click the right button of your pointing device</span>
<span class="rem">#How to copy paste text from the putty window from server to client -</span>
<span class="rem">#right-click the window title and select copy all to Clipboard.</span>
<span class="rem">#To restart a service</span>
service sshd restart
<span class="rem"># </span>
service --status-all --- show the status of all services
<span class="rem"># change the owneership of the directory recursively</span>
chown -vR user$group $dir
<span class="rem"># perform action recursively on a set of files</span>
find . -name <span class="str">'*.pl'</span> -exec perl -wc {} \;
<span class="kwrd">for</span> file <span class="kwrd">in</span> `find . -type f`;do echo cp $file ./backups/; done;
<span class="kwrd">for</span> file <span class="kwrd">in</span> `ls *.docx -1`;do echo cp $file ./backups/$file.`date +%Y%m%d%H%M%S`.docx;done;
<span class="rem"># make Bash append rather than overwrite the history on disk:</span>
shopt -s histappend
<span class="rem"># henever displaying the prompt, write the previous line to disk:</span>
PROMPT_COMMAND=<span class="str">'history -a'</span>
<span class="rem"># than run the script</span>
<span class="rem">#how-to replace single char in file</span>
tr <span class="str">'\t'</span> <span class="str">','</span> < FileWithTabs > fileWithCommas
<span class="rem"># Allow access to the box from only one ip address</span>
<span class="rem"># create a backup file based on the timestamp on bash</span>
cp -v fileName.ext fileName.ext.`date +%Y%m%d_%H%M%S`.bak
<span class="rem">#check disk space left</span>
df -a -h | tail -n +2 | perl -nle <span class="str">'m/(.*)\s+(\d{1,2}%\s+(.*))/g;printf "%-20s %-30s %-90s \n","$2",$3,$1'</span> | sort -nr | less
df -a -B M | column -t | sort -nr -k 5
df -h ***
<span class="rem"># how-to get running processes </span>
ps -ef --forest
<span class="rem"># how-to kill misbehaving process ... you will need to adjust the -f 2 part </span>
<span class="rem"># depending on the output of the ps -ef command above </span>
<span class="kwrd">for</span> pid <span class="kwrd">in</span> $(ps -ef | grep procToFind | perl <span class="preproc">-ne</span> <span class="str">'s/\s+/ /g;print $_ . "\n";'</span> | cut -d <span class="str">' '</span> -f 2) ; do echo kill -9 $pid ; done ;
<span class="kwrd">for</span> pid <span class="kwrd">in</span> $(ps -ef | grep chrome | perl <span class="preproc">-ne</span> <span class="str">'s/\s+/ /g;print $_ . "\n";'</span> | cut -d <span class="str">' '</span> -f 2) ; do echo kill -9 $pid ; done ;
<span class="rem">#how-to create relative file paths tar package recursively fromm a dir</span>
cd $RootDirToStartRelativePathsFrom
tar -cvzpf $pckg_to_create.tar .
<span class="rem"># exctract tar file into cd </span>
tar -xvf $pck_to_exctract_to_cwd.tar
<span class="rem">#how-to create tar archieve</span>
tar cvf $archive_name.tar $dir/
<span class="rem">#how-to unpack tar file</span>
tar xvf $file
<span class="rem">#how-to unpack gz archive</span>
gzip -cd $file | tar -xvf -
<span class="rem"># print line number 52</span>
sed -n <span class="str">'52p'</span> <span class="rem"># method 1</span>
sed <span class="str">'52!d'</span> <span class="rem"># method 2</span>
sed <span class="str">'52q;d'</span> <span class="rem"># method 3, efficient on large files</span>
<span class="rem"># START === create symlink</span>
export link_path=/opt/csitea/isg-pub/isg-pub.0.9.7.tst.ysg/doc_pub/public/img/apps/futu_lp_en
export target_path=/opt/futurice/futu-lp/futu-lp.1.0.1.prd.ysg/doc_pub/public/img/
mkdir -p `dirname $link_path`
unlink $link_path
ln -s <span class="str">"$target_path"</span> <span class="str">"$link_path"</span>
ls -la $link_path;
<span class="rem"># STOP === create symlink</span>
export link_path=/var/www/html/core_dw
export target_path=/var/aktia/core-dw/core-dw.0.8.6.dev.aktia/docs/site
mkdir -p `dirname $link_path`
unlink $link_path
ln -s <span class="str">"$target_path"</span> <span class="str">"$link_path"</span>
ls -la $link_path;
<span class="rem"># START === user management</span>
<span class="rem">#how-to add a linux group</span>
export group=futu
export gid=10002
sudo groupadd -g <span class="str">"$gid"</span> <span class="str">"$group"</span>
sudo cat /etc/group | grep --color <span class="str">"$group"</span>
export user=ysg
export uid=10001
export home_dir=/home/$user
export desc=<span class="str">"the user of the gogo app"</span>
<span class="rem">#how-to add an user</span>
useradd --uid <span class="str">"$uid"</span> --home-dir <span class="str">"$home_dir"</span> --gid <span class="str">"$group"</span> \
--create-home --shell /bin/bash <span class="str">"$user"</span> \
--comment <span class="str">"$desc"</span>
cat /etc/passwd | grep --color <span class="str">"$user"</span>
<span class="rem"># modify a user</span>
usermod -a -G $group $user
<span class="rem"># change the password for the specified user (own password)</span>
passwd $user
<span class="rem">#how-to forces to change password when logging in for the first time</span>
passwd -f login
<span class="rem">#change user pass to expire never </span>
chage -I -1 -m 0 -M 99999 -E -1 $user
<span class="rem"># and check results </span>
chage -l $user
<span class="rem">#Ei should not return anything !!!</span>
passwd -s -a | grep NP (=No Password)
<span class="rem">#delete an user</span>
userdel $user
<span class="rem">#administer the /etc/group file</span>
gpasswd:
<span class="rem"># START === user management</span>
<span class="rem">#how-to extracts rpm packages contents</span>
export ins=foo-bar.rpm
rpm2cpio $ins | cpio -id
<span class="rem">#how-to extract *.tar.gz </span>
gzip -dc *.tar.gz | tar xvf -
cd foo-bar-dir
<span class="rem">#--- show all installed packages</span>
rpm -dev
<span class="rem"># search for package name</span>
rpm -qa | grep --color $package
<span class="rem">#how-to build binaries as a non-root </span>
./configure --prefix=$HOME && make && make install
<span class="rem">#exctract a single file:</span>
gzip -dc fileName.tar.gz | tar -xvf - $file
find . -name <span class="str">'*.log'</span> -print | zip cipdq`date +%Y%m%d%H%M%S` -@
<span class="rem"># find several types of files </span>
find . -type f \( -name <span class="str">"*.pl"</span> -or -name <span class="str">"*.pm"</span> \)
find / -type f | xargs grep -nH <span class="str">'curl'</span>
<span class="rem"># print the word to find + the next 3 lines</span>
grep -A 3 -i <span class="str">"theWordToFind"</span> demo_text
find . -type f -name <span class="str">'*.sh'</span> -print -exec grep -n gpg {} \;
<span class="rem"># create a list of files</span>
find . -print0 | xargs -r0 echo <span class="str">"$@"</span>
<span class="rem">#how-to encrypt a file</span>
gpg -c $file
<span class="rem">#how-to decrypt a file</span>
gpg $file
<span class="rem"># where am I</span>
uname -a ;
<span class="rem"># who am I </span>
id ;
<span class="rem"># when this is happening </span>
date <span class="str">"+%Y.%m.%d %H:%M:%S"</span> ;
<span class="rem"># reboot ... !!! BOOM BOOM BOOM !!!</span>
shutdown -r now
<span class="rem"># shutdown the whole system </span>
shutdown -f -s 00
<span class="rem">#how-to kill a process </span>
ps -aux | grep $proc_to_find
pidof $prod_to_find
kill -9 $proc_to_find
<span class="rem"># which processes are listening on my system</span>
netstat --tcp --listening --programs
netstat --tcp
netstat --route
<span class="rem"># STOP === system monitoging commands</span>
<span class="rem"># get system info</span>
cat /proc/cpuinfo | less
cat /proc/meminfo | sort -nr -k 2 \
| perl <span class="preproc">-ne</span> <span class="str">'split /\s+/;printf ("%-15s %20d MB \n" , "$_[0]" , ($_[1]/1024))'</span>
fdisk -l
<span class="rem"># check memory usage</span>
egrep --color <span class="str">'Mem|Cache|Swap'</span> /proc/meminfo
<span class="rem"># show the top processes</span>
top
<span class="rem"># now press Shift + o, and choose the field to sort by </span>
<span class="rem"># running processes status </span>
ps -auxw | less
ps -ef | less
<span class="rem">#List all currently loaded kernel modules</span>
lsmod | less
<span class="rem">#Displays the system's current runlevel.</span>
/sbin/runlevel
<span class="rem"># get the Processes attached to open files or open network ports:</span>
lsoff | less
<span class="rem"># monitor the virtual memory </span>
vmstat
<span class="rem"># show the free memory</span>
free -m
<span class="rem">#Display/examine memory map and libraries (so). Usage: pmap pid</span>
ps -aux | grep $proc_name_to_pmap
pmap $prod_id_to_pmap
<span class="rem"># STOP === system monitoging commands</span>
<span class="rem">#how-to sort output by a delimited by single delimiter column </span>
<span class="rem"># in this example the - char is used for delimiter , the output is </span>
<span class="rem"># by their sending sequence , use proper file naming convention files </span>
<span class="rem"># ls -1 gives us:</span>
<span class="rem"># fileBeginningTillFirstDelimiter-TheColumnToSortBy-TheRestFromTheFileNameDelimiter</span>
ls -1 | awk -F1 <span class="str">'BEGIN {FS="-"};{print $2 "¤" $1 "-" $2 "-" $3 }'</span> | sort -nr | cut -d ¤ -f 2,5
<span class="rem"># the same approach with perl</span>
ls -1 | perl -p -i -e <span class="str">'s/^([^\-]*)(\-)([^\-]*)(\-)([^\-]*)/$3¤$1.2.8$4$5/g'</span> | sort -nr | cut -d ¤ -f 2,5
<span class="rem"># how-to use sftp with remoteUserName having publicIdentity of PublicIdentityUserName</span>
sftp -v -o <span class="str">"IdentityFile /var/www/.ssh-id/PublicIdentityUserName"</span> \
-o <span class="str">"UserKnownHostsFile /var/www/.ssh-id/known_hosts"</span> remoteUserName@ServerHostNameOrIpd
ssh -v -o ServerAliveInterval 300 -o ServerAliveCountMax 1
<span class="rem"># ==================================================================</span>
<span class="rem"># START Jobs control </span>
<span class="rem"># start some very long lasting command </span>
find / -name <span class="str">'*.crt'</span> | less
<span class="rem"># now press Ctrl + Z </span>
<span class="rem"># the terminal says "Jobs stopped"</span>
<span class="rem"># now check the open jobs </span>
jobs
<span class="rem"># you should see something like </span>
<span class="rem"># [1]+ Stopped find / -name '*.crt' | less</span>
<span class="rem"># now put the job in the background and start working on something else by Ctrl + Z </span>
bg 1
<span class="rem"># run the next command </span>
<span class="rem"># how-to copy file via scp by using specificy identity</span>
scp -v -o <span class="str">"IdentityFile /home/userName/.ssh/id_rsa"</span> /data/path/dir/* \
userName@ServerHostName.Domain.com:/Server/Target/Dir/
<span class="rem"># now again stop the job first by Ctrl + Z </span>
<span class="rem"># check again the running jobs </span>
jobs
<span class="rem"># use should see the both of the jobs started </span>
<span class="rem"># now put the first on in the forground </span>
fg 1
<span class="rem"># Repeat that several times untill you get it ; ) !!!</span>
<span class="rem"># start command in the background</span>
command1 &
<span class="rem"># how-to redirect STDERR STDOUT to log file </span>
sh $<span class="kwrd">script</span>.sh | tee 2>&1 $log_file
<span class="rem"># how-to start a separate shell </span>
( command &) &
<span class="rem"># get the STDERR and STDOUTPUT </span>
output=$(command 2>&1)
<span class="rem"># how-to detach an already started job from the terminal</span>
jobs
disown -h %1
<span class="rem"># how-to start </span>
nohup log_script.sh &
<span class="rem"># run a proc every 2 seconds</span>
watch -n 2 <span class="str">"$cmd_to_run"</span>
<span class="rem"># END Jobs control </span>
<span class="rem"># ==================================================================</span>
nicedate=`date +%Z-%Y%m%d%H%M%S`
<span class="rem"># kill a process by name </span>
ProcNameToKill=listener-nat_filter_caller.sh
<span class="rem"># ps -ef | grep wget | perl -ne 'split /\s+/;print "kill $_[7] with PID $_[1] \n";`kill -9 $_[1];`'</span>
ps -ef | grep $ProcNameToKill | grep -v <span class="str">"grep $ProcNameToKill"</span> | \
perl <span class="preproc">-ne</span> <span class="str">'split /\s+/;print "kill $_[7] with PID $_[1] \n";`kill -9 $_[1];`'</span>
<span class="rem"># how-to display human readable file sizes on systems with stupid du</span>
<span class="rem"># of course you would have to have perl next_line_is_templatized</span>
find $dir -type f -exec du -k {} \; | \
perl <span class="preproc">-ne</span> <span class="str">'split /\s+/;my $SizesInMegs=$_[0]/1024; \
printf ( "%10d %10s \n" , "$SizesInMegs" , "MB $_[1]")'</span> | sort -nr
export dir=/
echo sizes <span class="kwrd">in</span> MB
find $dir -type f -exec du -k {} \; | \
perl <span class="preproc">-ne</span> <span class="str">'split /\s+/;my $SizesInMegs=$_[0]/1024; \
printf ( "%10d %-100s \n" , "$SizesInMegs" , "$_[1]")'</span> | sort -nr | more
<span class="rem">#who has been accessing via ssh </span>
<span class="kwrd">for</span> file <span class="kwrd">in</span> `find /var/log/secure* | sort -rn` ; do grep -nHP <span class="str">'user'</span> $file ; done; | less
<span class="rem">#print files recursively </span>
dir=/opt/
clear;find $dir -type f -exec ls -alt --time-style=long-iso --color=tty {} \; | \
perl <span class="preproc">-ne</span> <span class="str">'split(/\s+/);printf ( "%10s %2s %-20s \n" , "$_[5]", "$_[6]", "$_[7]") ; '</span> | sort -nr
<span class="rem">#how-to print relative file paths to /some/DirName with perl one liner </span>
find /some/DirName -type f | perl <span class="preproc">-ne</span> <span class="str">'split/DirName\//;print "$_[1]" '</span>
<span class="rem"># see nice dir recursively listing newest first</span>
dir=/tmp
find $dir -name <span class="str">'*.tmp'</span> -exec ls -alt --time-style=long-iso --color=tty {} \; | \
perl <span class="preproc">-ne</span> <span class="str">'split/\s+/;print "$_[5] $_[6] $_[7] \n" ;'</span> | sort -nr | less
<span class="rem"># how-to sort files based on a number sequence in their file names</span>
<span class="rem"># list dir files , grap a number from their names , print with NumberFileName, sort , \</span>
<span class="rem"># print finally the names without the Number but sorted </span>
ls -1 | perl <span class="preproc">-ne</span> <span class="str">'m/(\d{8})/; print $1 . $_ ;'</span> | sort -nr | perl <span class="preproc">-ne</span> <span class="str">'s/(\d{8})//;print $_'</span>
<span class="rem"># START === how-to implement public private key ( pkk ) authentication </span>
<span class="rem"># create pub priv keys on server</span>
<span class="rem"># START copy </span>
ssh-keygen -t rsa
<span class="rem"># Hit enter twice </span>
<span class="rem"># copy the rsa pub key to the ssh server</span>
scp ~/.ssh/id_rsa.pub $ssh_user@$ssh_server:/home/$ssh_user/
<span class="rem"># STOP copy</span>
<span class="rem"># now go on the server</span>
ssh $ssh_user@$ssh_server
<span class="rem"># START copy </span>
cat id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
chmod -v 0700 ~/.ssh
chmod -v 0600 ~/.ssh/authorized_keys
chmod -v 0600 ~/.ssh/id_rsa
chmod -v 0644 ~/.ssh/id_rsa.pub
find ~/.ssh -exec stat -c <span class="str">"%U:%G %a %n"</span> {} \;
rm -fv ~/id_rsa.pub
exit
<span class="rem"># and verify that you can go on the server without having to type a pass</span>
ssh $ssh_user@$ssh_server
<span class="rem"># STOP COPY</span>
<span class="rem"># START copy </span>
ssh-keygen -t dsa
<span class="rem"># STOP copy </span>
<span class="rem"># Hit enter twice </span>
<span class="rem"># START copy </span>
cat id_dsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
chmod -v 0700 ~/.ssh
chmod -v 0600 ~/.ssh/authorized_keys
chmod -v 0600 ~/.ssh/id_dsa
chmod -v 0644 ~/.ssh/id_dsa.pub
find ~/.ssh -exec stat -c <span class="str">"%U:%G %a %n"</span> {} \;
rm -fv ~/id_dsa.pub
<span class="rem"># STOP COPY</span>
<span class="rem"># STOP === how-to implement public private key authentication</span>
<span class="rem"># show me a nice calendar </span>
cal -m -3
<span class="rem"># local port forwarding</span>
ssh -L [BIND_ADDRESS:]PORT:HOST:HOSTPORT HOSTNAME
<span class="rem"># remote port forwarding</span>
ssh -R [BIND_ADDRESS:]PORT:HOST:HOSTPORT HOSTNAME
<span class="rem"># START === how-to enable port forwarding or tunnelling</span>
export local_port=22
export remote_port=13306
export ssh_user=type_here_ssh_user
export ssh_server=type_here_the_hostname
export db_server=type_here_the_db_hostname
<span class="rem">#[-L [bind_address:]port:host:hostport] </span>
ssh -L localhost:$local_port:$db_server:$remote_port $ssh_user@$ssh_server
<span class="rem"># STOP === how-to enable port forwarding or tunnelling</span>
<span class="rem"># START === cron scheduling </span>
<span class="rem">#edit the crontab</span>
crontab -e
<span class="rem"># view the crontab</span>
crontab -l
0 1 * * *
<span class="rem"># * * * * * command to be executed</span>
<span class="rem"># - - - - -</span>
<span class="rem"># | | | | |</span>
<span class="rem"># | | | | +- - - - day of week (0 - 6) (Sunday=0)</span>
<span class="rem"># | | | +- - - - - month (1 - 12)</span>
<span class="rem"># | | +- - - - - - day of month (1 - 31)</span>
<span class="rem"># | +- - - - - - - hour (0 - 23)</span>
<span class="rem"># +--------------- minute</span>
<span class="rem"># STOP === cron scheduling </span>
<span class="rem">#how-to limit the resources of the current session </span>
help ulimit
nameTerminal $USER@`hostname`_ON_`pwd`__at__`date +%Y-%m-%d_%H:%M:%S`
<span class="rem"># change user password expiry information</span>
<span class="kwrd">for</span> usr <span class="kwrd">in</span> <span class="str">"$userlist"</span>; do sudo passwd $usr; sudo chage -E -1 -M -1 $usr; sudo chage -d0 $usr; done
<span class="rem">#how-to check the file encoding</span>
file_encoding=$(file -bi $file | sed -e <span class="str">'s/.*[ ]charset=//'</span>)
<span class="rem"># Purpose: </span>
<span class="rem"># to provide a simple cheat sheet for most of the Linux related commands</span>
<span class="rem"># usefull web sources: http://www.cyberciti.biz</span>
<span class="rem"># how-to add new repository to yum</span>
yum-config-manager --add-repo http://www.example.com/example.re
<span class="rem">#how-to view installed packages with yum on RH</span>
yum list installed | less
yum clean all
yum -y install perl
<span class="rem"># update all but the linux kernel packages</span>
yum -y --exclude=kernel\* update
/nz/kit/sbin/sendMail -dst first.last@company.com -msg <span class="str">"subject line"</span> -bodyTextFile $outfile -removeFile
<span class="rem"># start putty with preloaded session on windowz</span>
cmd /c start /max putty -load username@hostname
<span class="rem"># how-to enable pw auth on apache</span>
pw_file=/var/www/html/maint/.htpasswd
user=mmt
htpasswd -c $pw_file $user
<span class="rem">#how-to change the access and mofication timestamp</span>
ts=<span class="str">'201401181205.09'</span>
touch -a -m -t <span class="str">"$ts"</span> <span class="str">"$file"</span>
<span class="rem"># how-to install packages on ubuntu</span>
apt-get -y install $package_name
<span class="rem"># howto install packages on red-hat</span>
yum install $package_name
<span class="rem">#v1.9.5 how-to use text editor for longer command typing</span>
set EDITOR=vim
<span class="rem">#Ctrl+X,E</span>
<span class="rem">#v1.9.5 - how-to get variations by curly expansions</span>
echo {A,B,C}{0,1,3}
<span class="rem">#how-to convert file encoding </span>
iconv -f <span class="str">'iso-8859-1'</span> -t <span class="str">'utf-8'</span> <span class="str">"$file"</span>
<span class="rem"># how-to load document with wget by using cookies.txt</span>
export url=www.google.com
export out_file=$proj_dir/docs/site/data/issues/
wget $url --user-agent=agent --load-cookies=~/.cookie.txt --output-document=$out_file
<span class="rem">#how-to perform a command frequintly </span>
<span class="kwrd">while</span> $(sleep 0.2); do date <span class="str">"+%Y:%m:%d %H:%M:%S"</span>; done
<span class="rem"># how-to </span>
cat << <span class="str">"EOF"</span> > path/to/instructed.cnf
{
foo_var=bar_val
}
EOF
<span class="rem">#^^^ no space after the new line</span>
# eof file:linux-cheat-sheet</pre>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-33399548444369776462017-07-26T14:16:00.002+03:002017-07-26T14:16:14.354+03:00how-to format nicely long file paths in bash both in console and log files<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<pre class="csharpcode">
<span class="rem"># how-to format nicely long paths in both console and log files</span>
msg=<span class="str">"created the following relative package:
"</span>$(stat -c <span class="str">"%y %n"</span> <span class="str">"$product_dir/$zip_file_name"</span>)
doLog <span class="str">"INFO $msg"</span></pre>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-51052546523440446372017-05-27T07:39:00.000+03:002017-05-27T07:39:02.161+03:00how-to search and replace recursively in file paths and contents<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"><span class="rem"># START -- how-to search and replace recursively in file paths and contents</span></pre>
<pre>export dir=/var/aktia/3rdparty/docs/docx; </pre>
<pre class="alt">export to_srch=<span class="str">"emric"</span></pre>
<pre>export to_repl=<span class="str">"t24"</span></pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem">#-- search and replace in file names, skip those in .git</span></pre>
<pre>find <span class="str">"$dir/"</span> -not -path <span class="str">"./.git/*"</span> -type d |\</pre>
<pre class="alt">perl -nle <span class="str">'$o=$_;s#'</span><span class="str">"$to_srch"</span><span class="str">'#'</span><span class="str">"$to_repl"</span><span class="str">'#g;$n=$_;`mkdir -p $n` ;'</span></pre>
<pre>find <span class="str">"$dir/"</span> -not -path <span class="str">"./.git/*"</span> -type f |\</pre>
<pre class="alt">perl -nle <span class="str">'$o=$_;s#'</span><span class="str">"$to_srch"</span><span class="str">'#'</span><span class="str">"$to_repl"</span><span class="str">'#g;$n=$_;rename($o,$n) unless -e $n ;'</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem">#-- search and replace in file contents, skip those in .git</span></pre>
<pre>find <span class="str">"$dir/"</span> -not -path <span class="str">"./.git/*"</span> -type f -exec perl -pi -e <span class="str">"s#$to_srch#$to_repl#g"</span> {} \;</pre>
<pre class="alt">find <span class="str">"$dir/"</span> -not -path <span class="str">"./.git/*"</span> -type f -name <span class="str">'*.bak'</span> | xargs rm -f"</pre>
<pre><span class="rem"># STOP -- how-to rename files recursively in file paths and contents</span></pre>
<pre class="alt"> </pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-1799740831351649762017-05-09T15:33:00.003+03:002017-05-09T15:33:53.946+03:00my ~/.tmux.conf (revised) + how-to build tmux from source<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"><span class="rem"># file: ~/.tmux.conf</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># v1.0.1</span></pre>
<pre><span class="rem"># this is your <<prefix>></span></pre>
<pre class="alt"><span class="rem"># remap prefix from 'C-b' to 'C-j', because it is the only letter left from the </span></pre>
<pre><span class="rem"># bash shortcuts with the Control option</span></pre>
<pre class="alt">unbind C-b</pre>
<pre>set-option -g prefix C-j</pre>
<pre class="alt">bind-key C-j send-prefix</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># v1.0.2</span></pre>
<pre><span class="rem"># enable vi mode</span></pre>
<pre class="alt">set-window-option -g mode-keys vi</pre>
<pre><span class="rem"># confirm by <<prefix>> :list-keys -t vi-copy</span></pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># v1.0.3</span></pre>
<pre><span class="rem"># increase the number of lines - obs RAM consuming</span></pre>
<pre class="alt">set-option -g history-limit 9000</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem">#v 1.0.4 easier copy paste </span></pre>
<pre class="alt"><span class="rem"># src: https://leanside.com/2014/01/copy-paste-in-tmux/</span></pre>
<pre>setw -g mode-keys vi <span class="rem"># vim-style movement</span></pre>
<pre class="alt"><span class="rem"># in normal tmux mode# </span></pre>
<pre><span class="rem"># `tmux prefix + Escape` starts copy mode.</span></pre>
<pre class="alt">bind Escape copy-mode</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># `prefix + p` pastes the latest buffer</span></pre>
<pre>bind p paste-buffer </pre>
<pre class="alt"><span class="rem">#</span></pre>
<pre><span class="rem"># # in copy mode…</span></pre>
<pre class="alt"><span class="rem"># `v` begins a selection. (movement keys to select the desired bits)</span></pre>
<pre>bind -t vi-copy v <span class="kwrd">begin</span>-selection </pre>
<pre class="alt"><span class="rem"># `y` copies the current selection to one of tmux's "paste buffers"</span></pre>
<pre>bind -t vi-copy y copy-selection </pre>
<pre class="alt"><span class="rem"># `V` changes between line- and columnwise selection</span></pre>
<pre>bind -t vi-copy V rectangle-toggle </pre>
<pre class="alt"><span class="rem"># when in copy mode act like vim for Yanking</span></pre>
<pre>bind -t vi-copy Y copy-<span class="kwrd">end</span>-of-line </pre>
<pre class="alt"><span class="rem"># ?!</span></pre>
<pre>bind + delete-buffer</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># </span></pre>
<pre class="alt"><span class="rem"># start ::: how-to build tmux from source on older boxes ?!</span></pre>
<pre><span class="rem"># mkdir -p /tmp/tmux-install; cd /tmp/tmux-install</span></pre>
<pre class="alt"><span class="rem"># wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz</span></pre>
<pre><span class="rem"># tar xzvf libevent-2.0.21-stable.tar.gz</span></pre>
<pre class="alt"><span class="rem"># cd libevent-2.0.21-stable</span></pre>
<pre><span class="rem"># ./configure && make</span></pre>
<pre class="alt"><span class="rem"># sudo make install</span></pre>
<pre><span class="rem"># # on GentOS</span></pre>
<pre class="alt"><span class="rem"># sudo yum install -y ncurses-devel</span></pre>
<pre><span class="rem"># # or Ubuntu</span></pre>
<pre class="alt"><span class="rem"># sudo apt-get install -y ncurses-dev</span></pre>
<pre><span class="rem"># # clone the latest stable master branch version</span></pre>
<pre class="alt"><span class="rem"># git clone https://github.com/tmux/tmux.git</span></pre>
<pre><span class="rem"># cd tmux/</span></pre>
<pre class="alt"><span class="rem"># sh autogen.sh</span></pre>
<pre><span class="rem"># /configure && make</span></pre>
<pre class="alt"><span class="rem"># # and verify </span></pre>
<pre><span class="rem"># which tmux </span></pre>
<pre class="alt"><span class="rem"># tmux -V</span></pre>
<pre><span class="rem"># stop ::: how-to build tmux from source on older boxes ?!</span></pre>
<pre class="alt"><span class="rem">#</span></pre>
<pre><span class="rem"># v1.1.2</span></pre>
<pre class="alt"><span class="rem"># Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)</span></pre>
<pre><span class="rem"># mkdir -p ~/.tmux/plugins</span></pre>
<pre class="alt"><span class="rem"># git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm</span></pre>
<pre><span class="rem"># git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tmux-copycat</span></pre>
<pre class="alt"><span class="rem">## and verify by:</span></pre>
<pre><span class="rem"># find ~/.tmux/plugins -type d -maxdepth 2</span></pre>
<pre class="alt"><span class="rem">## stdout should look like</span></pre>
<pre><span class="rem"># ~/.tmux/plugins/</span></pre>
<pre class="alt"><span class="rem"># ~/.tmux/plugins/tpm</span></pre>
<pre><span class="rem"># ~/.tmux/plugins/tmux-copycat</span></pre>
<pre class="alt"><span class="rem">#</span></pre>
<pre><span class="rem"># start ::: how-to enable <<prefix>> + / = highlighted search back in terminal !!!</span></pre>
<pre class="alt"><span class="rem"># install by : <<prefix> , I</span></pre>
<pre><span class="rem"># v1.0.5 </span></pre>
<pre class="alt"><span class="rem"># enable search results highlighting in copy mode</span></pre>
<pre><span class="rem"># src: https://github.com/tmux-plugins/tmux-copycat</span></pre>
<pre class="alt">set -g @plugin <span class="str">'tmux-plugins/tmux-copycat'</span></pre>
<pre>run <span class="str">'~/.tmux/plugins/tpm/tpm'</span></pre>
<pre class="alt"><span class="rem">#</span></pre>
<pre><span class="rem">#</span></pre>
<pre class="alt"><span class="rem"># Usage: </span></pre>
<pre><span class="rem"># ---------------------------------------------------------</span></pre>
<pre class="alt"><span class="rem"># place into your ~/.tmux.conf</span></pre>
<pre><span class="rem"># reload by :</span></pre>
<pre class="alt"><span class="rem"># <<prefix>>, :source-file ~/.tmux.conf when in tmux session</span></pre>
<pre><span class="rem">#</span></pre>
<pre class="alt"><span class="rem"># reload plugings by: </span></pre>
<pre><span class="rem"># Ctrl + J, U</span></pre>
<pre class="alt"><span class="rem">#</span></pre>
<pre><span class="rem"># v1.0.6</span></pre>
<pre class="alt"><span class="rem"># A short cheat-sheet</span></pre>
<pre><span class="rem"># source: https://tmuxcheatsheet.com</span></pre>
<pre class="alt"><span class="rem"># tmux sessions management</span></pre>
<pre><span class="rem"># tmux new -s sess-name</span></pre>
<pre class="alt"><span class="rem"># tmux attach -t sess-name</span></pre>
<pre><span class="rem">#</span></pre>
<pre class="alt"><span class="rem"># tmux sessions handling</span></pre>
<pre><span class="rem"># those require <<prefix>> </span></pre>
<pre class="alt"><span class="rem"># :new<CR> new session</span></pre>
<pre><span class="rem"># ----------------------</span></pre>
<pre class="alt"><span class="rem"># s list sessions</span></pre>
<pre><span class="rem"># $ rename session</span></pre>
<pre class="alt"><span class="rem"># d exit a session without killing it</span></pre>
<pre><span class="rem"># </span></pre>
<pre class="alt"><span class="rem"># tmux windows handling</span></pre>
<pre><span class="rem"># those require <<prefix>> </span></pre>
<pre class="alt"><span class="rem"># tmux windows handling</span></pre>
<pre><span class="rem"># ----------------------</span></pre>
<pre class="alt"><span class="rem"># c new window</span></pre>
<pre><span class="rem"># , rename window</span></pre>
<pre class="alt"><span class="rem"># w list windows</span></pre>
<pre><span class="rem"># f find window</span></pre>
<pre class="alt"><span class="rem"># q show windows numbers</span></pre>
<pre><span class="rem"># x kill window</span></pre>
<pre class="alt"><span class="rem"># swap-window -t 0</span></pre>
<pre><span class="rem"># </span></pre>
<pre class="alt"><span class="rem"># how-to save the pane ouput to a file</span></pre>
<pre><span class="rem"># <<prefix>></span></pre>
<pre class="alt"><span class="rem"># :capture-pane -S -2000</span></pre>
<pre><span class="rem"># where 2000 is the amount of lines to capture</span></pre>
<pre class="alt"><span class="rem"># <<prefix>></span></pre>
<pre><span class="rem"># :save-buffer /tmp/tmux-buffer.log</span></pre>
<pre class="alt"><span class="rem">#</span></pre>
<pre><span class="rem"># VersionHistory</span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># export version=1.1.3</span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># 1.1.3 -- 2017-05-09 15:31:24 -- ysg -- add full instruction for src build</span></pre>
<pre class="alt"><span class="rem"># 1.1.2 -- 2017-04-10 11:22:01 -- ysg -- instruction for faster plugins setup </span></pre>
<pre><span class="rem"># 1.1.1 -- 2016-12-07 13:50:49 -- ysg -- save buffer instructions </span></pre>
<pre class="alt"><span class="rem"># 1.1.0 -- 2016-12-07 13:21:01 -- ysg -- better docs for copy-cat , shortcut for sessions</span></pre>
<pre><span class="rem"># 1.0.9 -- 2016-09-01 13:01:46 -- ysg -- swap window</span></pre>
<pre class="alt"><span class="rem"># 1.0.8 -- 2016-08-29 11:24:09 -- ysg -- more shortcuts in doc</span></pre>
<pre><span class="rem"># 1.0.7 -- 2016-08-29 09:20:29 -- ysg -- more shortcuts in doc</span></pre>
<pre class="alt"><span class="rem"># 1.0.6 -- 2016-08-23 23:12:29 -- ysg -- added cheat-sheet</span></pre>
<pre><span class="rem"># 1.0.5 -- 2016-08-23 22:04:23 -- ysg -- search highlight with plugins</span></pre>
<pre class="alt"><span class="rem"># 1.0.4 -- 2016-08-17 08:38:02 -- ysg -- easier copy paste</span></pre>
<pre><span class="rem"># 1.0.3 -- 2016-07-20 09:34:18 -- ysg -- vi copy mode</span></pre>
<pre class="alt"><span class="rem"># 1.0.2 -- 2016-07-20 09:28:18 -- ysg -- vi copy mode</span></pre>
<pre><span class="rem"># 1.0.1 -- 2016-07-12 23:29:33 -- ysg -- Ctrl + J as prefix </span></pre>
<pre class="alt"><span class="rem"># 1.0.0 -- 2016-07-12 23:29:10 -- ysg -- orginal version</span></pre>
<pre><span class="rem">#</span></pre>
<pre class="alt"><span class="rem"># eof file: ~/.tmux.conf</span></pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-27505237288462586622017-05-06T23:15:00.001+03:002017-05-06T23:15:28.694+03:00the disconnect between human readable documentation and source codeIt is amazing how long the whole software industry has continued to rally without a proper connection / association / mutual understanding of the people understanding rather source code and the people understanding mostly human readable documentation.<br />
For the poor guys like me, which have to constantly read code without full understanding of what it is supposed to do I got the following idea:<br />
<br />
- single record specs for userstories, requirements , issues, etc.<br />
- each single record is identifiable via UUID<br />
- do_run_log <<uuid>> in the src code implementing an requirement or userstory<br />
- saving to a single execution run log file with timestamp<br />
- run-translation-tool - generating human readable log : <<ts>> reg for userstory : <<title>><br />
<br />
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-88292353397008734272017-04-04T15:52:00.002+03:002017-04-04T15:52:11.887+03:00git cheat sheet ( revised )<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"><span class="rem">#file: git-cheat-sheet.sh</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to remove all the files from staging</span></pre>
<pre>git reset HEAD -- .</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># who has done what in the current branch</span></pre>
<pre>git log --format=<span class="str">'%h %ai %an %m%m %s'</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># who has done what on a specific file</span></pre>
<pre class="alt">git log --format=<span class="str">'%h %ai %an %m%m %s'</span> --follow some/file</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to check all the current branches with less in colors</span></pre>
<pre>git branch -a --color=always | less -r</pre>
<pre class="alt"> </pre>
<pre><span class="rem">#how-to delete a remote branch </span></pre>
<pre class="alt">git push --force remote_name :branch_to_delete</pre>
<pre>git push origin --delete feature/feature_to_delete</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># compare the a tmp branch and the master branch</span></pre>
<pre class="alt">git log --graph --decorate --pretty=oneline --abbrev-commit master origin/master tmp</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to reset the local repo branch to be just like the remote one</span></pre>
<pre><span class="rem"># you could skip those 2 lines if you do not want to save your local changes</span></pre>
<pre class="alt">git commit -a -m <span class="str">"Saving my work, just in case"</span></pre>
<pre>git branch my-saved-work</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># overwrite you local master with the remote one - or another branch ... </span></pre>
<pre class="alt">git fetch origin</pre>
<pre>git reset --hard origin/master</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to compare the same file contents in the </span></pre>
<pre class="alt">git diff mybranch master -- path/to/file</pre>
<pre> </pre>
<pre class="alt">git fetch --all</pre>
<pre>git fetch -p origin</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># push my cool feature to my repo fork</span></pre>
<pre class="alt">git push myrepofork feature/mycoolfeature</pre>
<pre> </pre>
<pre class="alt"><span class="rem">#how-to delete a local branch</span></pre>
<pre>git branch -D branch_to_delete</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to list your existing tags</span></pre>
<pre class="alt">git tag</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to tag a version </span></pre>
<pre>export msg=<span class="str">"a simple scala console project"</span></pre>
<pre class="alt">export version=<span class="str">'v0.9.0.1'</span></pre>
<pre>export tag_msg=<span class="str">" $version -- "</span>`date <span class="str">"+%Y-%m-%d %H:%M:%S"</span>`<span class="str">" -- $msg"</span></pre>
<pre class="alt">git tag -a $version -m <span class="str">"$tag_msg"</span></pre>
<pre><span class="rem">#how-to check a version </span></pre>
<pre class="alt">git show $version</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to undo the last commit</span></pre>
<pre class="alt"><span class="rem"># http://stackoverflow.com/a/6866485/65706</span></pre>
<pre>git reset --hard HEAD~1</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># to check a specific commit </span></pre>
<pre class="alt">git show $git_obj</pre>
<pre><span class="rem"># how-to show which files have been commited </span></pre>
<pre class="alt">git diff-tree --no-commit-id --name-only -r $git_obj</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to check all the branches </span></pre>
<pre class="alt">git branch -a</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># chekout as specific branch</span></pre>
<pre>git fetch --all</pre>
<pre class="alt">git checkout feature/feature_name</pre>
<pre> </pre>
<pre class="alt">git checkout develop -- `git ls-tree --name-only -r develop | egrep <span class="str">'*.zip'</span>`</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to compare 2 brancches </span></pre>
<pre>git diff branch1 branch2</pre>
<pre class="alt"> </pre>
<pre>git log</pre>
<pre class="alt">git status</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># remove the unneeded commits from the last 10 </span></pre>
<pre>git rebase -i HEAD~10</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to apply a commit from specific branch to the current branch</span></pre>
<pre class="alt">git cherry-pick $commit_sha_to_apply</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># list all the remote branches</span></pre>
<pre class="alt">git branch --all </pre>
<pre>git branch --remotes</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem">#how-to install git on Ubuntu, RH and cygwin</span></pre>
<pre>apt-get install -y git</pre>
<pre class="alt">yum install -y git</pre>
<pre>setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P <span class="str">"inetutils,wget,open-ssh,curl,grep,egrep,git"</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># pretend starting from different directory </span></pre>
<pre class="alt">git -C ..</pre>
<pre>alias git=<span class="str">"git -C $dir"</span></pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># to to the tmp dir </span></pre>
<pre>cd /tmp </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># set a pw run-time store in the cache </span></pre>
<pre class="alt">git config --<span class="kwrd">global</span> credential.helper cache</pre>
<pre>git config --<span class="kwrd">global</span> core.editor <span class="str">"vim"</span></pre>
<pre class="alt">git config credential.helper <span class="str">'cache --timeout=3600'</span></pre>
<pre><span class="rem"># configure the user name and e-mail for git </span></pre>
<pre class="alt">git config --<span class="kwrd">global</span> user.name <span class="str">"YordanGeorgiev"</span></pre>
<pre>git config --<span class="kwrd">global</span> user.email <span class="str">"yordan.georgiev@gmail.com"</span></pre>
<pre class="alt"><span class="rem"># configure push behaviour</span></pre>
<pre>git config --<span class="kwrd">global</span> push.<span class="kwrd">default</span> simple</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># and verify</span></pre>
<pre class="alt">less ~/.gitconfig</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># generate your ssh keys to authenticate yourself against github</span></pre>
<pre>ssh-keygen -t ecdsa -b 521</pre>
<pre class="alt"><span class="rem"># paste the output as new key into the https://github.com/settings/keys section</span></pre>
<pre>cat ~/.ssh/id_ecdsa.pub</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># add the remote </span></pre>
<pre>git remote add origin https://github.com/YordanGeorgiev/isg-pub.git</pre>
<pre class="alt"><span class="rem"># initialize a new git repo</span></pre>
<pre>git init</pre>
<pre class="alt"><span class="rem"># clone the existing repo from the Internet</span></pre>
<pre>git clone https://github.com/YordanGeorgiev/isg-pub.git</pre>
<pre class="alt"><span class="rem"># move the .git dir to the </span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># ups something went rong should redo </span></pre>
<pre>git rm --cached -r .</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># add the product version dir </span></pre>
<pre class="alt">git add -v --all isg-pub.0.8.9.dev.ysg</pre>
<pre><span class="rem"># force remote repo rebuild </span></pre>
<pre class="alt">git push --force -u origin master</pre>
<pre>git push -u origin master</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># initialize</span></pre>
<pre class="alt">git init</pre>
<pre><span class="rem"># add remote origin</span></pre>
<pre class="alt">git remote add origin https://github.com/YordanGeorgiev/isg-pub.git</pre>
<pre>https://github.com/YordanGeorgiev/nzbackup-runner.git</pre>
<pre class="alt"><span class="rem"># verify</span></pre>
<pre>git remote -v</pre>
<pre class="alt">git config --<span class="kwrd">global</span> user.name <span class="str">"YordanGeorgiev"</span></pre>
<pre>git config --<span class="kwrd">global</span> user.email <span class="str">"yordan.georgiev@gmail.com"</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># make git remember your pass </span></pre>
<pre class="alt">git config --<span class="kwrd">global</span> credential.helper cache</pre>
<pre>git config credential.helper <span class="str">'cache --timeout=3600'</span></pre>
<pre class="alt"><span class="rem"># stop make git remember your pass </span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># get help </span></pre>
<pre><span class="rem"># git --help</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># simly add all the files from the current directory</span></pre>
<pre class="alt">git add --all </pre>
<pre>git rm --cached -r <<dir_i_did_not_want_to_add>></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># dry run adding verbose a dir </span></pre>
<pre class="alt">git add -v -n --all isg-pub.0.8.9.dev.ysg</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem">#create the master branch </span></pre>
<pre class="alt">git push --force -u origin master</pre>
<pre>git push -u origin master</pre>
<pre class="alt"> </pre>
<pre>git commit -m <span class="str">"Adding $component_name $component_version files recursively "</span> </pre>
<pre class="alt"> </pre>
<pre>git push</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem"># to remove all the files</span></pre>
<pre class="alt">git rm *</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># to force master branch re-creation</span></pre>
<pre>man git-branch</pre>
<pre class="alt"> </pre>
<pre>wget --no-check-certificate https://github.com/$MyGitUserName/nzbackup-runner/archive/master.zip</pre>
<pre class="alt"><span class="rem"># how-to clone </span></pre>
<pre>git_repo_url=https://yordan.georgiev@git.aktia.biz/scm/~yordan.georgiev/core-5971.git</pre>
<pre class="alt">git clone <span class="str">"$git_repo_url"</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># add the reamde file for the new project </span></pre>
<pre>touch README.md</pre>
<pre class="alt">git add README.md</pre>
<pre> </pre>
<pre class="alt">git pull origin master</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to add all the files ( except those matching the $issue/.gitignore ) </span></pre>
<pre>git add --all</pre>
<pre class="alt">git commit -m <span class="str">"vw_INTIME_GL-create-view.sql v1.0.3 - re-write start with GL accounts"</span></pre>
<pre>git push origin master</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># well this is more of an jira git integration , but anyway </span></pre>
<pre><span class="rem"># how-to link Stash commits to jira issues </span></pre>
<pre class="alt">git commit -m <span class="str">"$issue_id 0.4.1 foo bar"</span></pre>
<pre> </pre>
<pre class="alt">git log --pretty=format:<span class="str">"%cr %cn %s"</span> --author=<span class="str">"Georgiev Yordan"</span> -3</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># create a srong key for encryption with github</span></pre>
<pre>ssh-keygen -t ecdsa -b 521</pre>
<pre class="alt"> </pre>
<pre><span class="rem">#how-to highlight a single line by http link from github</span></pre>
<pre class="alt"><span class="rem"># obs the #L<<line-number>></span></pre>
<pre>https://github.com/futurice/lp_calculator_ui/blob/master/app/index.html<span class="rem">#L47</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to delete all the obsolete feature branches</span></pre>
<pre class="alt"><span class="kwrd">while</span> read -r f; do git push ygeo :$f ; \</pre>
<pre>done < <(git branch -a | grep -i <span class="str">'ygeo/feature'</span> | grep -v <span class="str">'kiky'</span>| \</pre>
<pre class="alt">perl -nl -e <span class="str">'s/remotes\/ygeo\///g;print'</span>)</pre>
<pre> </pre>
<pre class="alt">alias glol=<span class="str">'git log --graph --pretty="%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset""</pre>
<pre> --abbrev-commit'</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem"># check the following resources:</span></pre>
<pre class="alt"><span class="rem"># https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging</span></pre>
<pre><span class="rem"># https://gist.github.com/JamesMGreene/cdd0ac49f90c987e45ac</span></pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt">#eof file: git-cheat-sheet.sh</pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-35195252661684646402017-03-30T22:40:00.001+03:002017-03-30T22:40:19.739+03:00how-to run pgsql scripts with bash<a href="https://github.com/YordanGeorgiev/pgsql-runner">https://github.com/YordanGeorgiev/pgsql-runner</a>
Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-80427733462908923832017-03-29T17:08:00.001+03:002017-03-29T17:08:09.797+03:00Oracle Virtual Box cheat sheet ( revised ) <!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt"><span class="rem">#file: docs/cheat-sheets/vbox/vbox-cheat-sheet.sh</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to start a vm without ui </span></pre>
<pre>VBoxManage startvm <span class="str">"vm-name"</span> --type headless</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to start a vm with detachable ui ( no 3D acceleration )</span></pre>
<pre class="alt">VBoxManage startvm <span class="str">"vm-name"</span> --type separate</pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to save the current state of the vm </span></pre>
<pre>VBoxManage controlvm <span class="str">"vm_name"</span> savestate</pre>
<pre class="alt"> </pre>
<pre><span class="rem"># how-to start a vm with ui </span></pre>
<pre class="alt">VBoxManage startvm <span class="str">"vm-name"</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to shutdown a vm</span></pre>
<pre>VBoxManage controlvm <span class="str">"vm_name"</span> poweroff</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># add port forwarding from host to guest</span></pre>
<pre>VBoxManage modifyvm <span class="str">"vm_name"</span> --natpf1 <span class="str">"5001,tcp,,5001,,5001"</span></pre>
<pre class="alt"> </pre>
<pre><span class="rem">#how-to check network settings </span></pre>
<pre class="alt">VBoxManage showvminfo <span class="str">"vm_name"</span> | grep NIC</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre>:: how-to export all myy Virtual box vms <span class="kwrd">in</span> Windows <span class="kwrd">in</span> the current dir <span class="kwrd">in</span> cmd</pre>
<pre class="alt"><span class="kwrd">for</span> /f <span class="str">"tokens=1 delims= "</span> %i <span class="kwrd">in</span> (<span class="str">'VBoxManage list vms'</span>) do VBoxManage export %i -o %i.ova</pre>
<pre> </pre>
<pre class="alt"><span class="kwrd">for</span> f <span class="kwrd">in</span> $(VBoxManage list runningvms | awk -F\<span class="str">" '{print $2}'); do \</pre>
<pre> echo "</span>$f:<span class="str">"; VBoxManage guestproperty enumerate "</span>$f<span class="str">" | grep IP; done ;</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt">#how-to resize the virtual disk</pre>
<pre>VBoxManage modifyhd "</span>C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk1.vmdk<span class="str">" --resize 20000</pre>
<pre class="alt"> </pre>
<pre>#you reserved too little space during installation ?! No problem resize the virtual disk :</pre>
<pre class="alt">VBoxManage clonehd "</span>C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk1.vmdk<span class="str">" "</span>C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk.vdi<span class="str">" --format vdi</pre>
<pre>VBoxManage modifyhd "</span>C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk.vdi<span class="str">" --resize 20480</pre>
<pre class="alt"> </pre>
<pre>VBoxManage guestproperty enumerate doc-pub-host | grep -i Net | grep -i ip</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre>:: nok Add an IDE controller with a DVD drive attached, and the install ISO inserted into the drive:</pre>
<pre class="alt">VBoxManage storagectl lp_host --name "</span>IDE<span class="str">" --add ide</pre>
<pre>:: ok </pre>
<pre class="alt">VBoxManage storageattach lp_host --storagectl "</span>IDE<span class="str">" --port 0 --device 0 --type dvddrive --medium "</span>C:\var\pckgs\gnu\Ubuntu\ubuntu-16.04.1-desktop-amd64.iso"</pre>
<pre> </pre>
<pre class="alt">VBoxManage modifyvm %VM% --ioapic on</pre>
<pre>VBoxManage modifyvm %VM% --boot1 dvd --boot2 disk --boot3 none --boot4 none</pre>
<pre class="alt">VBoxManage modifyvm %VM% --memory 1024 --vram 128</pre>
<pre>VBoxManage modifyvm %VM% --nic1 bridged --bridgeadapter1 e1000g0</pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"><span class="rem"># how-to backup all my vms ?!</span></pre>
<pre><span class="rem"># no need to export to ova , just copy recursively the dir with the *.vbox , *.vdi files</span></pre>
<pre class="alt"><span class="rem"># than add the machines via the UI , machine add , paste the path to the vbox file</span></pre>
<pre><span class="rem"># you might need to unregisster vhdds as follows:</span></pre>
<pre class="alt">vboxmanage closemedium disk <span class="str">'5a5b03ef-0d1e-4708-9c68-11f40b61940f'</span> --delete</pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre> </pre>
<pre class="alt"> </pre>
<pre><span class="rem">#</span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># VersionHistory: </span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># export version=1.2.0</span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre><span class="rem"># 1.2.0 -- 2017-03-29 17:06:24 -- ysg -- backup instructios</span></pre>
<pre class="alt"><span class="rem"># 1.1.0 -- 2016-12-01 08:42:59 -- ysg -- </span></pre>
<pre><span class="rem"># 1.0.0 -- 2016-08-16 22:40:16 -- ysg -- </span></pre>
<pre class="alt"><span class="rem"># ---------------------------------------------------------</span></pre>
<pre> </pre>
<pre class="alt"><span class="rem">#eof file: docs/cheat-sheets/vbox/vbox-cheat-sheet.sh</span></pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-21984947728174606692017-03-28T13:12:00.000+03:002017-03-28T13:12:16.174+03:00vm-stop.cmd<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt">:: vm-stop.cmd</pre>
<pre>:: purpose to speed up Oracle VirtualBox vm top</pre>
<pre class="alt">:: usage: Start , Run , type: vm-stop vm_name</pre>
<pre>:: confs: add to %PATH% VBoxManage.exe and vm-stop.cmd</pre>
<pre class="alt"> </pre>
<pre>VBoxManage controlvm <span class="str">"%1"</span> poweroff</pre>
<pre class="alt">@echo off</pre>
<pre>ping -n 6 localhost > NULL</pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-61329288828036832512017-03-28T13:10:00.001+03:002017-03-28T13:11:18.296+03:00vm-start.cmd<!-- code formatted by http://manoli.net/csharpformat/ -->
<style type="text/css">
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: Consolas, "Courier New", Courier, Monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #a31515; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div class="csharpcode">
<pre class="alt">:: purpose to speed up Oracle VirtualBox vm top</pre>
<pre>:: usage: Start , Run , type: vm-start vm_name</pre>
<pre class="alt">:: confs: VBoxManage.exe should be <span class="kwrd">in</span> your %PATH%</pre>
<pre>:: confs: add to %PATH% VBoxManage.exe and vm-stop.cmd</pre>
<pre class="alt"> </pre>
<pre>VBoxManage startvm <span class="str">"%1"</span> --type headless</pre>
<pre class="alt">@echo off</pre>
<pre>ping -n 6 localhost > NULL</pre>
</div>Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0tag:blogger.com,1999:blog-30804833.post-22421959352895105342017-03-02T09:12:00.000+02:002018-03-26T11:27:20.173+03:00IT System overview ?!<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCE-DweuJ-23wAPe_ODuqzfsKF4btFPrFGowzF-3d3vvNZV6e3j8bMR034IIy5HCJHNgXnTruVLQLZQODg1VwP_fGY6GoHLMu6mTZgpMIbe3NA88jI020cKfQa4mF67l_BNr6onA/s1600/it-system-overview.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCE-DweuJ-23wAPe_ODuqzfsKF4btFPrFGowzF-3d3vvNZV6e3j8bMR034IIy5HCJHNgXnTruVLQLZQODg1VwP_fGY6GoHLMu6mTZgpMIbe3NA88jI020cKfQa4mF67l_BNr6onA/s1600/it-system-overview.jpg" /></a></div>
<br />Yordan Georgievhttp://www.blogger.com/profile/03314222795726618555noreply@blogger.com0