среда, 30 октября 2013 г.

LESS - системная переменная для less

$ export LESS='-i-P%f (%i/%m) Line%lt/%L'
-i - ignore case -P - use promt Все остальное это формат и контент подсказки в нашем случае: [имя поточного файла] ([номер поточного файла]/[количество всего файлов подошедших под маску] Line[номер поточной строки]/[всего строк в поточном файле]

И снова find


Выполнение какой-нибудь команды на каждую строку результата поиска (найденного места(пути к файлу/директории))
find [path/to/dig/into] -exec [command] [command_params] {} \;
{}


Интересные примеры:
# Найти файлы проекта с указанной строкой
find . -exec grep "string_to_find_in_next_path" {} \;

# Вывести список всех директорий проекта
find my_prjdir_in_cur_dir -type d

# Удалить все файлы и директории с именем .svn в директории проекта
find my_prjdir_in_cur_dir "-name" .svn -exec rm -rf "{}" \;

# Найти файлы проекта с указанной строкой и при этом вывести не только строку в файле, но и путь к файлу
find my_prjdir_in_cur_dir  -exec grep --with-filename "string_to_find_in_next_path" {} \;

# Вывести в консоль содержимое файлов; -print это ключ для find
# именно он выведет не только в стандартный аутпут, но и в еррор поток пути к найденным файлам,
# так find выводит в консоль путь к файлу, а cat за каждым путем содержимое файла
find my_prjdir_in_cur_dir -type f -print  -exec cat {} \;


вторник, 29 октября 2013 г.

Правила приорите символов в Scala

Precedence Rules
The precedence of an operator is determined by its first character.
The following table lists the characters in increasing order of priority
precedence:
(all letters)
|
^
&
< >
= !
:
+ -
* / %
(all other special characters)

Поэтому a + b ^? c ?^ d less a ==> b | c

 ((a + b) ^? (c ?^ d)) less ((a ==> b) | c) 

Scala Syntax Summary

Types

Type               =  SimpleType | FunctionType
FunctionType  =  SimpleType ‘= > ’ Type
                       | ‘( ’ [ Types ] ‘) ’ ‘= > ’ Type
SimpleType     =  Ident
Types              =  Type { ‘ , ’ Type }

Расширенная форма записи Бекуса-Наура для представления синтаксиса

Extended Backus-Naur form (EBNF):

| denotes an alternative,
[...] an option (0 or 1),
{...} a repetition (0 or more)

Как писать из Scriptlet прямо в JSP

<%
out.println("lya-lay");
%>

Начало проекта с мавеном

$ mvn archetype:generate
Выбириаем пустой проект, например, который по умолчанию.
Вводим код групы, проекта, выбираем имя проета и версию.

Чтобы запустить, то что у нас получилось
 
$ mvn compile exec:java -Dexec.mainClass="com.pathto.App"
Здесь мы пользуемся услугой плагина Exec(Mojo project) для запуска конкретного класса с методом мейн, кроме того этот плагин умеет передавать аргументы в этот класс через аргемент плагина Exec -Dexec.args.

понедельник, 28 октября 2013 г.

Удаление бинарных логов mysql

В этих логах логируются все запросы в базу.
Кстати они тоже испльзоуются репликами для применения у себя тех же изменений.
Чтобы их коректно удалить нужно в шеле mysql:
purge binary logs before '2013-06-01 00:00:00';


Замена через Vim

Vi: Search and Replace

Change to normal mode with .
Search (Wrapped around at end of file):
  Search STRING forward :   / STRING.
  Search STRING backward:   ? STRING.

  Repeat search:   n
  Repeat search in opposite direction:   (SHIFT-n)

Replace: Same as with sed, Replace OLD with NEW:

 First occurrence on current line:      :s/OLD/NEW
  
 Globally (all) on current line:        :s/OLD/NEW/g 

 Between two lines #,#:                 :#,#s/OLD/NEW/g
  
 Every occurrence in file:              :%s/OLD/NEW/g 

пятница, 25 октября 2013 г.

logrotate

Утилита для ротации логов, работает не как сервис, а обслуживается кноном.
У него есть настройки в
/etc/logrotate.config -- они общие для всех ротированей
Есть также директория
/etc/logrotate.d/ - в нее записываются настройки для конкретных ротированей.

Чтобы проверить конкретную настройку ротации делаем


# cd /etc/logrotate.d/
# logrotate --force name_of_rot_cnfgs

вторник, 22 октября 2013 г.

High Order Functions

Functions - first-class values. Тоесть в функциоанльных языках мы можем передавать функции как простых/сложных значений в методы и функции.

High Order Functions - функции, которые получают другие функции в параметрах, и/или возвращают функции в своих результатах.

Function type - тип, который определяет, что в параметр будет передаваться функция.
A => B
(A,B...X) => Z
A,B...Z - some types


Currying - название происходит от имени ученого, который это придумал впервые.
Это процесс, который позволяет вводить часть параметров сейчас, а остальные потом, что по факту означает создает функцией функцию.
def sum(f: Int=>Int): (a: Int, b: Int) => Int

В Scala есть сахар этого
def sum(f: Int=>Int)(a: Int, b: Int): Int

Anonynous function syntax: по принципу функционального типа
(x1: T1, ..., xn: Tn) => E


воскресенье, 20 октября 2013 г.

Blocks and Lexical Scopes in Scala

Блок:
- ограничивается фигурными скобками {...};
- является наборов определений и выражений;
- последний элемент в блоке и будет результатом блока;
- сам по себе блок является выражением;
- блок определяет область видимости определений(констант и переменных), созданных внутри его.


Lexical Scope:
пространство видимости, которое определяет граници видимости опредения - определение видимо в блоке, в котором оно было определено, а также во вложенных блоках. Опредения в отцовских блоков, перекрываются локальными определениями поточного блока с теми же самыми именами, и отцовсткие не изменяются в поточном и во вложенных блоках.

Expressions and statement

Expressions - выражение программного кода, которое вернет конкретное значение после его выполнения, элементы которого часто вложены и служат для вычисления или принятия решения в вычислении, являются звеном в общей цепочке вычисления результирующего значения.

Statement - может быть выражением, а вообще это любой набор программного кода, составные части которого могут быть независимы, стейтмент не обязан возвращать результат, он просто обьединяет некие значения и выражения.