четверг, 27 февраля 2014 г.

bash scripting. All input parameters

# $@ - all input parameters
# "$@" - all input parameters, but without executions for any special characters

вторник, 25 февраля 2014 г.

понедельник, 24 февраля 2014 г.

Как настроить ssh доступ чтобы не вводить пароль

Нужно создать у себя на локальном пару private/public и public зарегать на удаленке. Делается єто так:
[user@local:~/]$ cd ~/.ssh
[user@local:~/]$
[user@local:~/.ssh/]$ ssh-keygen -t dsa
Enter file in which to save the key (/home/user/.ssh/id_dsa): id_dsa.remote
[user@local:~/.ssh/]$
[user@local:~/.ssh/]$ chmod 600 *
[user@local:~/.ssh/]$ chmod 700 ~/ssh
[user@local:~/.ssh/]$
[user@local:~/.ssh/]$ ssh-copy-id -i id_dsa.remote.pub ruser@remote

Если у нас не установлен ssh-copy-id из пакета openssh-client, то тогда нужно поработать руками:
[user@local:~/.ssh/]$ scp id_dsa.remote.pub ruser@remote:~/.ssh/ 
[user@local:~/.ssh/]$ ssh ruser@remote:~/.ssh 
[ruser@remote:~/.ssh/]$ cat id_dsa.remote.pub >> ~/.ssh/authorized_keys
[ruser@remote:~/.ssh/]$ rm id_dsa.remote.pub
[ruser@remote:~/.ssh/]$ exit

Ну и потом еще в локальном ~/.ssh/config, чтобы меньше вводить буков:
[user@local:~/.ssh/]$ cat >> ~/.ssh/config << "EOF"
Host short-name
        HostName remote
        User ruser
        IdentityFile /home/user/.ssh/id_dsa.remote

EOF
Теперь заходить удаленно вообще просто, особенно когда доменное имя remote, намного длиннее по названию за short-name

Инициализация коллекций

Инициализация хешмапы через инит блок анонимного класса

Это имеет смысле делать для статитик файнал полей
private static final Map<string, string> URLS = new HashMap<string, string>() {
  {
    put("URL to here", "one");
    put("URL to there", "two");
  }
};
Предыдущий пример отформатирован по смыслу, а можно форматнуть под закос на "волшебную инициализацию"
private static final Map<string, string< URLS = new HashMap<string, string>() {{
  put("URL to here", "one");
  put("URL to there", "two");
}};

Инициализация множества

public static final Set example = new TreeSet<>(
    Arrays.asList("String1", "String2"));

суббота, 22 февраля 2014 г.

Git aliases

$ git config --global alias.mylog \
"log --pretty=format: '%h %s [%an]' --graph"

$ git config --global alias.lol \
"log --graph --decorate --pretty=oneline --abbrev-commit --all"


Ежедневные:
$ git config --global alias.st status          # git st
$ git config --global alias.co checkout   # git co
$ git config --global alias.br branch      # git br
$ git config --global alias.ci commit       # git ci




История гита, как не комитить то что не нужно

$ git config --global color.ui true
$ git log

$git log --pretty=oneline
08f2302691c4758475847584754dfgdf787 Commit message

$ git log --pretty=format: "%h %ad- %s [%an]"


placeholder replace with
%adauthor date
%anauthor name
%hSHA hash
%ssubject
%dref names

среда, 19 февраля 2014 г.

Git rebase

Основной сценарий:
git fetch - стягивает удаленные изменения в ветках, но не мерджит с локальными.
git rebase - берет комиты локаного master и размещает в temp, потом берет все удаленные комиты и заливает в локальный master, после этого из temp заливате в след локальные. Так мы получаем не мерджи, а последовательные комиты в истории.

понедельник, 17 февраля 2014 г.

alternatives

alternatives - утилита для установки разных версий одной утилиты в linux.
В убунту и наверно в семействе Debian команда называется update-alternatives 

Делаем это так(установить еще одну альтернативную реализацию утилиты):
# alternatives --install /usr/bin/java java /opt/jdk1.7.0_51/bin/java 20000


Где
alternatives --install {path/to/slink/of/util} {name_of_util} {/real/path/to/util}


Чтобы переключить версию утилиты на другую реализацию:
# alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
*+ 3           /opt/java/jdk-1.7.9/bin/java

Enter to keep the current selection[+], or type selection number:

воскресенье, 16 февраля 2014 г.

Как удалить напиханные стартовые страницы

mail.ru и прочие наглые ресурсы совают себя хрому в настройки, почиститься от них можно тут:

 chrome://chrome/settings/startup


суббота, 8 февраля 2014 г.

Cisco VPN client on ubutu

 apt-get install network-manager-vpnc
И дальше через панель настраиваем впн и выбираем тип циски

пятница, 7 февраля 2014 г.

и снова гит

git is Distributed Version Control System (DVCS)
Official Git Site - http://git-scm.com/

$ git help  - общий хелп
$ git help config - хелп по конкретной команде

$ git config --global user.name "Andrii Ieremenko"
$ git config --global user.email "andrew.yeremenko@gmail.com"
$ git config --global color.ui true pretty command line colors
$ git config --global core.editor emacs
$ git config --global merge.tool opendiff
Чтобы поставить настройку не глобально, а толь дла данного репозитория делаем:
$ git config core.editor emacs

$ git config --list  # увидеть поточное состояние настроек, которые ме настроили выше указанными командами
На одно поле может быть установлено несколько настроек, чтобы быть уверенным какая настройка точно испльзуется  в данном репозитории:
$ git config user.email


Эти команды редактируют файл .git/config префикс у имени это имя блока к которому относится команда.

четверг, 6 февраля 2014 г.

Кеширования лейаутов и кеширования запросов в liferay

Фильтр кеширования лейаутов

Чтобы его включить нужно включить в пропертях portal-ext.properties:
com.liferay.portal.servlet.filters.cache.CacheFilter=true


Дальше те портлеты которые не создают постоянно динамический лейаут должны у себя в liferay-portlet.xml:
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.0.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_0_0.dtd">

<liferay-portlet-app>
...
 <portlet>
  ...
  <layout-cacheable>true</layout-cacheable>
  ...
 </portlet>
...
</liferay-portlet-app>
Таким образом мы не компилируем каждый раз лейаут, а возвращает кеш на него, но это вроде только для гестов.

Фильтр кеширования запросов

В этом случае это не лайфрейная фишка, а стандарта контейнера портлетов. Чему доказательство настраивание фичи в файле portlet.xml:

воскресенье, 2 февраля 2014 г.

Файлы запуска оболочки Bash

/etc/profile - файл определения общесистемных глобальных переменных и запуска стартапных скриптов, которые обычно находятся в директории /etc/profile.d/*.sh

~/.bash_profile (~/.profile) - в этом файле должные неходиться личные общесистемные глобальные переменные и личные стартапные скрипты.
PS1 - общесистемная переменная, которая определяет, как будет выглядеть приглашение баша

/etc/bashrc( /etc/bash.bashrc - debian family) - в этом файле находятся общесистемные алиасы и функции

~/.bashrc - личные общесистемные алиасы и функции

/etc/inputrc - глобальная настройка функциональных клавиш оболочки баш. Этот файл или его юзерспесифик колега управляют функцией readline, применяемой внутри баш для обработки ввода из клавиатуры.
~/.inputrc - личная настройка функциональных клавиш оболочки баш.

Есть несколько оболочек:
1) Interactive login shell. Она читает /etc/profile ~/.bash_profile. Эта интсранция баша запускается после успешного срабатывания утилиты /bin/login, которая читает /etc/passw находит там имя юзера, наличия его пароля хеширует введенное значение и сравнивает из сохраненным паролем для совпадшего юзера. Когда юзер покидает эту оболочку вызывается срипт  ~/.bash_logout.

2) Interactive non-login shell. Эта инстанция баша появляется в результате нашего вызова из командной строки команд /bin/bash или /bin/su. Также при запуске графических консолей xterm или konsole. Этот вид перенимает настройки отцовской консоли, а также запускает ~/.bashrc ( которая также вызывает /etc/bashrc)

3) Non-interactive shell. Эта инстанция баша создается когда запускается какой-то скрипт, в этот момент оболочка никак не реагирует на инпут юзера. Эта инстанция только хранит в себе переменные из отцовской оболочки и не вызывает при своем старте никаких скриптов.


Чтобы обеспечить новозоданных юзеров файлами запуска баш( и наверно других ) нам нужно их разместить в директории /etc/skel/
.bash_logout
.bashrc
...