Monday, 28 July 2014

Useful commands

To create a patch:
$ diff -rupN orig new > diff.patch

To execute an '.sh' file under Git Bash:
cmd //c "cica.cmd arg1 arg2"

To change file mode bits in git:
$ git update-index --chmod +x cica.txt

Shell programming (Posix)

I had learn some shell programming basis. I summarized the things to here. I suggest you always try to follow the posix (easier to understand and you can avoid specific shell issues).

Rules (I continuously will update it):

  1. Do not use pushd/popd! Use 'cd -'.
  2. Do not use double equal to compare. This is not c++. Use just one ('=').
  3. Do not use double bracket [[ $foo ]]. Use single bracket ('[ $foo ]').
Difference '$foo' and "$foo":
$export foo=cica
$echo "$foo"
cica
$echo "$foo"
$foo
There is substitution at first case while the other one there wasn't.

Shell script usually started with shebang (or hashbang):
#!/bin/sh

Debug features in shell:
set -euxv

e : stop first error
u : check uninitialized variables / prevent undefined behavior
x : print line the executed command
v : print line as read from input

In posix the return values always a positive numbers (0-255).

Friday, 25 July 2014

Useful/basic key combos in Vim:

:map <F7> : tabn<CR>
:map <F8> : tabp<CR>
:set numbers
:set mouse=a
:set smartindent
:set tabstop=4
:set shiftwidth=4
:set expandtab
:e open file

:set noexpandtab    " Use tabs, not spaces
:%retab!            " Retabulate the whole file

caw: delete current word and go into insert mode
daw: delete current word
e: go to end of current word
gg <X>: goto line <X>
G <X>: goto line <X>

% select single bracket

yy to copy the line
dd to delete the line
v enter visual mode
y yunk/copy
d delete
  p paste after curren line
  P paste before current line

yiw: Yank inner word (the word under the cursor). This command also moves the cursor to the beginning of the word.
viwp: Select inner word and paste with clipboard content
b:go to beginning of current word
yw: yank word
vey: visual mode & end word & yank
vex: visual mode & end word & delete
byw: begin & yank & word

Generate tags file to OmniComplete:
ctags -R --sort=1 --languages=C,C++ --c++-kinds=+p --fields=+iasS --extra=+q

Start vim:
vim -t tags

Type in insert  mode:
<C-n> <C-p>

Navigate in Vim:

Keyboard command
Action
Ctrl-]
Jump to the tag underneath the cursor
:ts <tag> <RET>
Search for a particular tag
:tn
Go to the next definition for the last tag
:tp
Go to the previous definition for the last tag
:ts
List all of the definitions of the last tag
Ctrl-t
Jump back up in the tag stack

Sunday, 20 July 2014

My first post - introduction

Ha minden jól megy, akkor ezen a blogon szándékozom megosztani az agymenéseimet/tapasztalataimat... Elsősorban anyanyelvemen, de szándékaim közt van, hogy angol nyelven is írok bejegyzéseket. Nem tudom minek köszönhetően vágok bele, de lehet a kinti 34-35 celsius fokos idő se tett jót. A téma többnyire szakmai: programozás/informatika. De előfordulhat, hogy más ebbe a témakörbe nem illő dolgokról is fogok írni.
A címről, csak annyit, hogy minden népszerű cím foglalt, így hát ki kellet találnom valami okosat és ez lett.

No magamról pár szót:
Lassan 5.dik éve programozok főállásban egy budapesti irodában. Amikor jelentkeztem, akkor simán "c++" programozót keresett a cég, amire jelentkeztem. A felvételi feladatom, OpenGL alkalmazás volt, egy jelenet shadow mapping techinka használatával. Egészen nehezen ment, rengetegett kellett tanulnom hozzá, hogy teljesiteni tudjam a feladatott. Aztán jött egy hívás, hogy ha érdekel a munka, akkor betölthetem. Hát én örültem, mivel, 3 helyre küldtem, csak CV-t. Folytatás később...