PostgreSQL
coub
express.js
freeware
git
jquery
laravel
links
linux
macos
mysql
node.js
php
powershell
python
ubuntu
vim
virtualbox
анекдот
блог
игры
интересно
стихи
цитаты
Как посчитать количество строк в файлах
April 21, 2013
Пример рекурсивно ищет файлы с расширением .php в выбранной директории, читает их и считает в них строки.
cd ~/projects/project find . -type f -name *.php -exec cat {} \; | wc -l
Zend Framework 2: Paginator example
April 14, 2013
Собственно ничего особенно сложного нет, описано все здесь. Мой пример в общем ничем не уникален, использует Null адаптер, который позволяет передавать в конструктор пагинатора готовое количество записей для расчета массива данных для пагинации.
use Zend\Paginator\Paginator; // $itemsQuant - общее кол-во элементов для просмотра $paginator = new Paginator(new \Zend\Paginator\Adapter\Null($itemsQuant)); $paginator->setCurrentPageNumber($currentPage); $paginator->setItemCountPerPage($pageSize); $pages = $paginator->getPages(); $pagination = array( 'previous' => $pages->previous, 'next' => $pages->next, ); var_dump($pages);Конструкция на мой взгляд перегруженная, но уж как есть. Я только начал работать с ZF2, постараюсь не лениться и собирать здесь интересные и ценные по возможности заметки.
Как загрузить файл jQuery $.ajax
April 01, 2013
Задача тривиальная, но как-то сумбурно пока гуглится. Много разных решений наковырял. Суть в том что нам нужно не перезагружая страницу отправить на сервер файл (и любые другие параметры в комплекте), почитать что нам напишут в ответ и какую-то реакцию показать пользователю. Пример ниже для одного файла, очевидно если у инпута выставлено multuple="multiple" то по массиву файлов можно будет пробежаться и так же все их добавить в запрос.
В html
В html
<input type="file" id="imgFile" />В скрипте
var fd = new FormData(); fd.append('id', '123'); fd.append('type', 'one'); fd.append('img', $('#imgFile')[0].files[0]); $.ajax({ type: 'POST', url: '/url/to/action', data: fd, processData: false, contentType: false, dataType: "json", success: function(data) { console.log(data); }, error: function(data) { console.log(data); } });
Ubuntu: как получить PID запущенного процесса
March 26, 2013
Маленькие "хитрости" bash. На примере перезапуска приложения node.js
Из переменной (правильно называть это переменными??) $$ - можно получить PID текущего скрипта, то есть если вы планируете в нем зависнуть то имеет смысл положить куда-то PID-файл чтобы потом что-то с этим процессом делать. Баш вообще интересная штука, жаль почти не остается времени на глубокие раскопки в этих шаманствах.
#!/bin/bash # чтобы было легче жить, добавим все нужные пути в переменные DAEMON="/usr/local/bin/node" ROOT_DIR="/home/user/project-copy-folder" # тут на основании базовых путей выставляем пути к файлам PID, # логов и скрипта, запускающего само приложение PIDFILE="$ROOT_DIR/pidfile" SERVER="$ROOT_DIR/app.js" LOG_FILE="$ROOT_DIR/app.js.log" # останавливаемся, обратите внимание на то, как получается и обрабатывается PID echo -n "Stopping $SERVER: " kill -9 $(cat $PIDFILE) && echo 'ok stoped' || echo 'error on stop my-funny app' # чистим логи и убираем старый PID (это опционально) >$LOG_FILE >$PIDFILE # стартуем. тут самое как мне кажется, непонятное — это конструкция echo $! > $PIDFILE # здесь $! это PID последнего запущенного приложения (читаем ман по bash), с пониманием # этого нюанса становится понятно все остальное echo -n "Starting $SERVER: " `$DAEMON $SERVER > $LOG_FILE & echo $! > $PIDFILE &` && echo 'ok, started' || echo 'error on start my-funny app'Интересная особенность как мне показалось состоит в том, что если мы выполним например вот такой код
/usr/local/bin/node /home/user_name/project/app.js & echo $!То увидим напечатанный PID. А вот если исполнить тоже самое, но через eval
NODE='/usr/local/bin/node' APP='/home/user_name/project/app.js' `$NODE $APP &` echo $!То не увидим ничего. То есть eval где-то у себя это значение закусывает и нам оно нормально не доезжает. Соответственно решением (скорее всего одним из решений, так как я никакой не специалист по bash), будет получение PID-а прямо внутри этого самого eval-a как показано в первом примере.
Из переменной (правильно называть это переменными??) $$ - можно получить PID текущего скрипта, то есть если вы планируете в нем зависнуть то имеет смысл положить куда-то PID-файл чтобы потом что-то с этим процессом делать. Баш вообще интересная штука, жаль почти не остается времени на глубокие раскопки в этих шаманствах.
Ubuntu: как запустить скрипт от имени другого пользователя
March 24, 2013
Мне это понадобилось для автоматического подъема сервиса после внештатной перезагрузки сервера.
Как всегда, все просто:
Как всегда, все просто:
su USER -c '/home/USER/folder/script.sh'Собственно man su рассказывает всё в примерах.
su man -c catman # Runs the command catman as user man. You will be asked for man's password unless your real UID is 0. su man -c 'catman /usr/share/man /usr/local/man' # Same as above, but the target command consists of more than a single word and hence is quoted for use # with the -c option being passed to the shell. (Most shells expect the argument to -c to be a single word). su -l foo # Simulate a login for user foo. su - foo # Same as above.