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

Angular. Советы

Контроллеры

Используйте controllerAs вместо controller.
Понятнее при чтении кода + код контроллера понятней. Вместо $scope нужно использовать var self = this; чтобы не было конфликта с объявленными функциями.

четверг, 13 ноября 2014 г.

воскресенье, 5 октября 2014 г.

SSH и дампы

С удивлением обнаружил такую фишку ssh, что команды можно выполнять не заходя в консоль удалённого сервера, а указывая их после команды входа:
ssh user@host ls - выведет содержимое ваших домашних папок

Этим же можно пользоваться, когда мы хотим сделать дамп с удалённой базы данных!
ssh user@host pg_dump -U dbuser --no-privileges -Fc -c dbname > dump.sq

воскресенье, 28 сентября 2014 г.

Как включить тачпад на DNS ноутбуке

Вариантов много есть разных. Гуглите по dns travel notebook ps mouse

В моём случае помог вариант - дописать в grub.cfg (это плохой вариант, ищите файл нужный файл из /etc/grub.d, чтобы при обновлении ядра это не сбрасывалось).

Так вот, прописать в grub.cfg параметр ядра при загрузке i8042.noloop=1

А еще лучше поправить файл /etc/grub/default
GRUB_CMDLINE_LINUX_DEFAULT="i8042.noloop=1"
 
И обновить загрузчик 

суббота, 27 сентября 2014 г.

Интеграция composer в phpstorm

Настройки проект - command line tools. Нажать + и указать на файл composer.phar. В Tools появится пункт Composer и можно пользоваться!

понедельник, 11 августа 2014 г.

Windows. Проверка системных файлов

sfс /scannow - просканировать системные файлы винды и исправить их

powercfg energy - проверка энергопотребления

понедельник, 28 июля 2014 г.

Git, рецепты для работы с ветками

Ветки

(!) Очень рекомендуется давать веткам одинаковые имена, тогда будет проще, хотя это не обязательно
git remote add $имя_реп $link_to_git - добавить удаленный репозиторий в текущий

git push -u origin --all - запушить туда все данные

git push -u имя_репозитория -залить в удаленный реп текущую ветку (с таким же именем)

git checkout -b имя_ветки - создать новую ветку и начать в ней работать

git checkout -b $branch $rep/$branch - создать копию определенной ветки(можно удалённой)

git push $реп - залить текущую ветку в удалённые репозиторий. Имена веток одинаковы.

git push $удал_реп $локальная_ветка - залить в удаленный репозиторий указанную ветку

git config --list - показать текущие настройки

git config remote.origin.url git://новый.url/proj.git - поменять урль репозитория

git pull <remote> <branch> - получить данные из ветки

git branch --set-upstream-to=<remote>/<branch> master - поставить основным

git mergetool --tool=kdiff3 - тулза для мёржа


Внутри .git репозитория лежит файл config, где можно поглядеть текущие настройки удаленных веток.

воскресенье, 20 июля 2014 г.

Автономное время работы ноутбука и частота таймера

Недавно вскрылась ошибка в Хроме, что он изменяет таймер винды, ускоряя работу компьютера и не выставляет его обратно в "спокойное" значение.. Подробнее об этом таймере - http://habrahabr.ru/company/intel/blog/186998/

С помощью программы Clockres можно протестировать текущее значение в системе. Ссылка - на программу - http://technet.microsoft.com/ru-ru/sysinternals/bb897568.aspx

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

powercfg -energy duration 5

среда, 16 июля 2014 г.

SQL запросы

Суммы для больших нуля и меньших нуля

SELECT SUM(CASE WHEN x > 0 THEN 1 ELSE 0 END) as GreatherThanZero
    , SUM(CASE WHEN x = 0 THEN 1 ELSE 0 END) as EqualZero
FROM table
WHERE x >= 0

Вывод через запятую + аггрегация

SELECT recipes.recipeid, recipes.name, array_to_string(array_agg(recipetags.tag), ' ')
FROM recipes
LEFT JOIN recipetags ON recipes.recipeid = recipetags.recipeid
GROUP BY recipes.recipeid, recipes.name;

Замена слова
UPDATE Table
SET main_identifier = REPLACE(main_identifier, '6016-', '6109-')
where id_service = 236 and id_gateway = 69 and id_payments_out_status =300

Формат времени

SELECT to_char(time_input, 'DD.MM.YYYY HH24:MI:SS')

воскресенье, 25 мая 2014 г.

Полезные сочетания PhpStorm

Постоянно используемые
Ctrl-Shift-F - поиск по всему проекту текста
Ctrl-K - коммит проекта
Ctrl-F12 - быстрый просмотр функций класса
Ctrl-P - показ параметров функци
Ctrl-/, Ctrl-Shift-/ - комментирование блока
Ctrl-Alt-L - форматирование кода
Ctrl + MouseOver - подсказки
Ctrl-Shift-N - быстрая навигация к файлу
Ctrl-N - быстрая навигация к классу
Ctrl-D - дублировать текущую строку или выделенные строки

По ситуации
Ctrl-Q - быстрая документация
Ctrl-Shift-A - открыть список доступных менюшек в ИДЕ
Ctrl-Alt-J - обврапить тэгами
Alt-Enter - показать варианты решения прболем
Shift-F6 - рефакторинг. Переименовать клас
Shift-Shift - показ всех действий во всей среде

Редко используемые
Ctrl-E - открыть список последних доступных файлов
Ctrl-J - показ шаблонов циклов, условий и пр
Ctrl-Shift-Backspace - вернуться в последнее место правки кода
Alt-9 - Список изменненых файлов
Ctrl-Shift-J - объединять в строку
Middle mouse move - прямоугольный селект текста

Что попробовать
Сtrl-Alt-T - обернуть код в условие, цикл и т.д.

воскресенье, 18 мая 2014 г.

Regexp cheatsheet

Метасимволы
\ - экранирование
. -  любой символ кроме \n
? - ноль или одно совпадение
+ - одно или более совпадений, например /a+b/ = ab, aab, aaaaab, но не b
* ноль или более совпадений
{m}, {m,n} - точное число повторений. Например для '/tre{1,2}f/ будет tref, treef, но не treeef. Если n не указано, то максимальное число совпадений не определено, если m не указан, то минимальное число = 0
^ - начало строки
$ -  конец строки
[ ...] - класс искомых символов, с помощью - диапазон. если дефис - часть класса, то ставить его последним. Если же [^...] то значит отрицание класса. /[0-9]+/, /[^0-9]+/  Метасимволы внутри использовать нельзя!
( ... ) - вложенный шаблон
(?: ... ) - шаблон участка строки, который не должен попасть на выход выражения. preg_match('@([A-Za-z ]+)(?:hans)@', 'Derick Rethans', $matches);  $matches = Derick Rethans, Derick Ret
(?P<имя> ... ) - именованный шаблон.

Cпец символы
\t - табуляция
\d - любая цифра, тоже что [0-9]
\D - не цифра [^0-9]
\s - любой пробельный символ [\t\f\r\n]
\S - любой не пробельный символ
\w - любой символ, часть слова, т.е. буква, цифра или _
\W - наоборот
\b - граница слова, позиция между \w и \W
    $string = "##Testing123##";
    preg_match('@\b.+\b@', $string, $matches);
    Результат: Testing123
\B любая позиция кроме начала и конца слова
    $string = "Testing";
    preg_match('@\B.+\B@', $string, $matches);
    Результат: estin
\Q...\E - отключение шаблона. @\Q.+*?\E@ будет строкой '.+*?'

Жадность
Пример. <a href="http://php.net/">PHP</a> has an <a href="http://php.net/menual">excellent</a>. Нужно выбрать содержимое ссылок. Например через '@<a.*>(.*)</a>@'. Но он выберет всё от начала и до manual". Если после + или * поставить ? то будет браться минимальное совпадение
'@<a.*?>(.*?)</a>@

Модификаторы
/[a-z]/ - любой символ из a..z
/[a-z]/i - любой из a..z и A..Z
m - многострочный поиск '@^DEF@m'
s - однострочный поиск
х - пропуск пробелов и комментариев в тексте шаблона. типа '@A B C@'x = '@ABC@"
U - по дефолту все станут ленивыми а с ? жадными
u - режим кодировки UTF-8

Примеры
/^([0-9a-f][0-9a-f]:){5}[0-9a-f][0-9a-f]$/ - макадрес
/^(0-9a-f]{2}:){5}[0-9a-f]{2}$/
'/\w+\s+\w+/' - два слова разделенные пробелами
'/(\d{1,3}\.){3}\d{1,3}/' - ip адрес

Чо делать с регэкспами?
Поиск
preg_match - поиск в строке по шаблону и если совпадает то true
preg_match_all - поиск всех совпадений
preg_grep - поиск в строках

Замена
preg_replace
Ссылаются на совпадения с помощью обратных ссылок
заменим все [link url="www.php.net"]PHP[/link] на настоящие
$str = '..';
$pattern = '@\[link\ url="([^"]+)"\](.*?)\[/link\]@';
$repl = "<a href="\\1">\\2</a>";
$str = preg_replace($pattern, $replacement, $str);

\\1 и \\2 - обратные ссылки, можно записать как $1 $2

Пример замен
$text = preg_replace('#(\:|\;|\,|\.|\?|!|\(|\)){2,}#', '\1', $text); - замена повторяющихся более двух раз подряд знаков препинания на один
$text = preg_replace('/(?<!\d)[,.;:]|[,.;:](?!\d{3})/', '$0 ', $text); - установка пробелов после знаков препинания с учетом цифр

Разделение
preg_split

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

Linux tips & tricks

Массовые действия над файлами

rename 's/\.foo$/\.bar/' * - переименовать все файлы с расширением foo в bar
rename 's/^flag_//' * - убрать у всех файлов из начала имени flag_
rename 's/-[A-Za-z0-9_]+.m4a$/.m4a/' * - удаление фрагмента текста из имени файла
for f in *.jpg; do convert $f -resize 1024  - массовая конвертация картинок
find / -nmin -3 - файлы изменённые за последние 3 минуты
find ~/oggs/ -iname \*.mp3 -exec rm {} \; - удаление файлов
find . -maxdepth 1 -type f -exec sed -i 's/abc/abcd/g' {} \; - замена текста в найденых файлах

File encoding

file -bi file.txt - показать кодировку указанного файла

Бенчмарки

Iperf - измерение скорости сети между узлами
sar - статистика нагрузки системы

Linux

cat /etc/lsb-releast - какой дистрибутив линуха используется

cat /etc/issue - какой дистрибутив линуха используется

type - показать описание программ
cal - показ календарика
nl - фильтр для текста. Добавляет номера строк

Alt+SysRq+ - последовательность нажатий при зависании системы
R - возвращение управления клавиатуре
E - прекращение процессов
I - остановка процессов с ошибками
S - синхронизация дисков
U - размонтирование дисков
B - ребут

dpkg

dpkg -S /path/file - показать какому пакету принадлежит файл

Утилиты

bc - текстовый калькулятор
cloc - подсчет строчек кода в проекте
watch -n 1 cat /proc/mdstat - с интервалом в одну секунду выводить значение команды в консоль
hexdump -C имя_файла - показать в 16ом виде файл
echo '1' | sudo tee /proc/any_file - запись данных от судо в запрещенный файл
tac  - аналог cat, только выводит текст наоборот
sudo !! - выполнить прошлую команду с судо

Системные действия

strace -f bash -c ‘/bin/echo foo | grep bar’ - просмотр лога системных вызовов
cat /proc/cmdline - параметры загрузки ядра
cat /proc/partitions - разделы в системе
sysctl -a - показать список переменных ядра
их также изменять. например обнулить
sysctl -w net.ipv4.ip_forward или sysctl net.ipv4.ip_forward=0
эти настройки системы хранятся в /etc/sysctl.conf и оттуда же читаются при перезагрузке
sysctl -p или -w - прочесть файл с настройками и применить
gpasswd -a <USER> games - добавить юзера в группу. Сделать релог

Работа с дисками

smartctl - показать smart дисков
blkid - показать ид дисков
iotop - просмотр загрузки ввода вывода в системе
dd if=/dev/sda of=mbr.bin bs=512 count=1 - сохранение mbr
dd if=mbr.bin of=/dev/sda bs=512 count=1 - восстановление mbr

Сеть

ab -kc 10 -t 30 http://localhost/app.php/esi/get_navbar - тестирование нагрузки сайта
ethtool - инфа о сетевой карте, дуплекс, скорости.
mtr - замена пингу и трейсроуту
ifconfig/ip - новая/старая утилиты для настройки уровня ip
ifconfig eth0 192.168.0.12 - сменить ip
ip link show dev eth0 или ip link - показать инфу по интерфейсам
ip a - показать адреса
ip -4 a - все адреса ip4
ip route - показать маршрут
ip route del default - удалить маршрут
ip route add default via 213.222.12.34 - установить гейт
sudo pi -4 a add 192.168.1.12 dev eth0 - можно присвоить на одну карту разные адреса. (ifconfig не может)

Grep

http://habrahabr.ru/post/229501/ - статья о grep в FreeBSD
есть параметр годный --color
grep -v ^# имя_файла - не выводить (-v) строки, начинающиеся с #
grep ^#.*ip_forward - уже через регэкспы
grep -o '/[0-9]*' file.html - выводить совпадения, а не строки.
cat access.log | grep '200 [0-9]\{5\}' > jslow.txt

Скрипты

#!/usr/bin/env ruby -w - пишем в начале файла. и юзаем как скрипт
 

Включаем все bashcomp в gentoo
eselect bashcomp enable --global  $(eselect bashcomp list | sed -e 's/ //g'| cut -d']' -f2 | sed -e 's/\*//'| xargs)

for x in $(eselect bashcomp list | sed -e 's/ //g' | cut -d']' -f2 | sed -e 's/\*//');do eselect bashcomp enable $x --global;sleep 0.5s;done

for i in `eselect bashcomp list | awk '{print $2}'`; do eselect bashcomp enable $i; done