- Linux
- ΠΡΠ²ΠΎΠ΄ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°
- ΠΠ΅ΡΠ΅Π²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
- ΠΠΎΠΈΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°Π½ΠΈΠΌΠ°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡ
- Π€ΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ
- Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠ½ΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ${USERNAME} Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ sudo
- Π‘ΠΌΠ΅Π½Π° Π²Π»Π°Π΄Π΅Π»ΡΡΠ° Π½Π° user2 Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ user1
- Π‘ΠΌΠ΅Π½Π° Π³ΡΡΠΏΠΏΡ Π½Π° user2 Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ Π³ΡΡΠΏΠΏΠΎΠΉ user1
- Π£ΡΠΈΠ»ΠΈΡΠ° ΠΏΠΎΠΈΡΠΊΠ° DNS
- ΠΠΎΡΡΡ
- Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ HTTP Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
- Vim
- SSH
- macOS X
- Nginx
- Database
- MySQL
- PostgreSQL
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΠ
- Database dump (PostgreSQL)
- ΠΠ°ΠΏΠΈΡΡ Π² ΠΠ ΠΈΠ· ΡΠ°ΠΉΠ»Π° (PostgreSQL)
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΏΠΎΠ»Π΅ ΡΠ°Π±Π»ΠΈΡΡ (PostgreSQL)
- ΠΠΎΠΈΡΠΊ Π·Π°Π»ΠΎΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
- ΠΠΎΠ»Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ΡΡ Π·Π°ΠΏΡΠΎΡΡ
- Π£Π±ΠΈΠΉΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠΎ pid
- Python
- Git
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π»ΠΈΠ°ΡΠ° Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π΅ΡΠ΅Π²Π° ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
- ΠΡΠΊΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
- Patch ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
- ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ
- ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³Π°
- ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ
- ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠ°
- ΠΠΎΠ΄Π΄Π΅Π»ΠΊΠ° Π΄Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠ°
- ΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ "Initial commit"
- Git Flow
lsb_release -a
ps -e -o pid,args --forest
netstat -vanp tcp | grep 8000
{command} > {process_log_file | /dev/null} 2>&1 &
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ
jobs
ΠΡΠ²Π΅ΡΡΠΈ Π·Π°Π΄Π°ΡΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½
fg {group}
Π£Π±ΡΠ°ΡΡ Π·Π°Π΄Π°ΡΡ Π½Π° Π·Π°Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½
bg {group}
sudo usermod -a -G sudo ${USERNAME}
find ./ -user user1 -exec chown user2 {} +
find ./ -group group1 -exec chown :group2 {} +
dig {domain} [any | A | MX | TXT | NS | SOA]
ss -nap | grep :{port}
# for mac:
lsof -n -i:{port} | grep LISTEN
iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT
htpasswd -c {filename} {username}
e.g.
htpasswd -c .htpasswd finagin
ΠΠΊΠ»ΡΡΠΈΡΡ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΡΡΠΎΠΊ
:set nu
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ
:e ++enc=cp1251
~/.vimrc
" Configuration file for vim
set modelines=0 " CVE-2007-2438
" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible " Use Vim defaults instead of 100% vi compatibility
set backspace=2 " more powerful backspacing
set clipboard=unnamedplus
" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup nobackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup nobackup
let skip_defaults_vim=1
" Use the Solarized Dark theme
set background=dark
set encoding=utf-8 nobomb
" Centralize backups, swapfiles and undo history
set backupdir=~/.vim/backups
set directory=~/.vim/swaps
if exists("&undodir")
set undodir=~/.vim/undo
endif
" Donβt create backups when editing files in certain directories
set backupskip=/tmp/*,/private/tmp/*
" Enable line numbers
set number
" Enable syntax highlighting
syntax on
" Highlight current line
set cursorline
" Make tabs as wide as two spaces
set tabstop=2
" Show βinvisibleβ characters
"set lcs=tab:~,trail:Β·,nbsp:_
"set list
" Highlight searches
set hlsearch
" Highlight dynamically as pattern is typed
set incsearch
" Enable mouse in all modes
set mouse=a
" Show the cursor position
set ruler
" Show the current mode
set showmode
" Show the filename in the window titlebar
set title
" Show the (partial) command as itβs being typed
set showcmd
ssh-keygen -t {type} -b {bits} -C {comment} -f {file_name}
e.g.
ssh-keygen -t rsa -b 16384 -C "baby@ovh.ft-ru.ru" -f ~/.ssh/baby
~/.ssh/config
Host *
UseKeychain yes
Include config.d/*
~/.ssh/config.d/VCS
# Custom ssh key for bitbucket
Hostbitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/no_pass
# Custom ssh key for bitbucket
Host github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
~/.ssh/config.d/Projects
Host application-load-balancer
Horstname 192.168.0.10
IdentityFile ~/.ssh/secure
Host application-web-1
Horstname 192.168.0.30
IdentityFile ~/.ssh/no_pass
ProxyJump application-load-balancer
Host application-web-2
Horstname 192.168.0.31
IdentityFile ~/.ssh/no_pass
ProxyJump application-load-balancer
Host application-database
Horstname 192.168.0.20
IdentityFile ~/.ssh/no_pass
ProxyJump application-load-balancer
ssh -L 8080:localhost:80 192.168.0.10
ssh -D 12345 {user}@{host}
defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}';
killall Dock;
server {
...
location ~* \.(jpg|jpeg|gif|png)$ {
if (!-f $request_filename) {
rewrite ^/images/(.*) http://example.com/images/$1 break;
}
}
...
}
mysqldump -u {username} -p {database_name} [--tables {table}] [--where="{query}"] > {outputfile}
e.g.
mysqldump -u utalents-test -p utalents-test > "utalents-test_(date +"%Y-%m-%d_%H-%M-%S").sql"
mysql -u {username} -p {database_name} < {inputfile}
psql postgres
CREATE DATABASE {db_name};
CREATE USER {user_name} WITH password '{password}';
GRANT ALL ON DATABASE {db_name} TO {user_name};
pg_dump -U {username} {database_name} > {outputfile}
psql -U {username} {database_name} < {inputfile}
SQL
SELECT
tc.table_name
, kcu.column_name
, tc.table_schema
, ccu.table_schema AS foreign_table_schema
, ccu.table_name AS foreign_table_name
, ccu.column_name AS foreign_column_name
, rk.delete_rule AS on_delete --strategy
, tc.constraint_name
FROM
information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON kcu.constraint_name = tc.constraint_name
AND kcu.constraint_schema = tc.constraint_schema
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
AND ccu.constraint_schema = tc.constraint_schema
JOIN information_schema.referential_constraints AS rk
ON rk.constraint_name = tc.constraint_name
AND rk.constraint_schema = tc.constraint_schema
WHERE
tc.constraint_type = 'FOREIGN KEY'
AND ccu.table_name = 'resolution_to' -- Π’Π°Π±Π»ΠΈΡΠ°
AND ccu.column_name = 'id' -- ΠΠΎΠ»Π΅
;
SELECT pgsa.pid, pgsa.*
FROM pg_stat_activity AS pgsa
WHERE pgsa.wait_event_type = 'Lock';
SELECT pgsa.pid,
now() - pgsa.query_start AS duration,
pgsa.query,
pgsa.state
FROM pg_stat_activity AS pgsa
WHERE (now() - pgsa.query_start) > INTERVAL '5 minutes';
SELECT pg_terminate_backend(pid);
sudo pip install virtualenv
virtualenv --no-site-packages --prompt="({project_name})" {venv_name}
source {path_to_project}/{venv_name}/bin/activate
git config --global alias.tree "log --oneline --decorate --all --graph"
Usage:
git tree
git clean -Xdfe .idea # -e .idea β ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΏΠΊΡ .idea
git reset --hard {commit}
git push --force
git diff {older_commit}..{younger_commit} > my-patch.patch
e.g.
git diff HEAD~2..HEAD > my-patch.patch
or
git diff bea1ccb..b028577 > my-patch.patch
git branch -m {old_branch} {new_branch} # Rename branch locally
git push origin :{old_branch} # Delete the old branch
git push --set-upstream origin {new_branch} # Push the new branch, set local branch to track the new remote
git push origin --delete {branch_name} # Remove branch remotely
git branch -d {branch_name} # Remove branch locally
git tag {new_tag} {old_tag} # Copy tag with new name
git tag -d {old_tag} # Remove tag locally
git push origin :refs/tags/{old_tag} # Remove tag remotely
git push --tags # Push new tag remotely
git clone -b '{branch}' --single-branch {repo} {dir}
git clone -b 'v1.2.1' --single-branch --depth 1 https://github.com/finagin/Gulpfile.js.git v1.2.1
Π Π²Π΅ΡΡΠΈΠΈ 1.9 ΠΈ Π²ΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΠ°ΡΠ°Π»Π΅Π»ΡΠ½ΠΎ:
git clone --recursive -j8 git://github.com/foo/bar.git
Π Π²Π΅ΡΡΠΈΠΈ 1.6.5 ΠΈ Π²ΡΡΠ΅:
git clone --recursive git://github.com/foo/bar.git
ΠΠ»Ρ ΡΠΆΠ΅ ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ Git, Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
git rm --cached {file_name}
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ
git rm --cached -r {directory_name}
git filter-branch --env-filter \
'if [ $GIT_COMMIT = 119f9ecf58069b265ab22f1f97d2b648faf932e0 ]
then
export GIT_AUTHOR_DATE="Mon Feb 20 15:36:17 2017 +0300"
export GIT_COMMITTER_DATE="Mon Feb 20 15:36:41 2017 +0300"
fi'
git update-ref -d HEAD