Сортировка многомерного массива PHP

sortingСначала хотел городить огород с asort(), но после поисков, нашел что разработчики PHP уже давным давно все придумали до нас. Оказывается есть функция array_multisort. Как работает эта функция:
array_multisort( array &$arr [, array &$arr [, array &$arr… ]] )
Грубо говоря каждый массив будет отсортирован в соответствии с предыдущим массивом. Вот пример:

//Сортируемый масив
 $array_main=array('foo','bar','foobar',);
//Определяющий массив
 $array_id=array(3,1,2,);
array_multisort($array_id, $array_main);
 var_dump($array_main);

Выведет:

array(4) {[0]=> string(3) «bar»[1]=> string(3) «foobar»[2]=> string(3) «foo»}

А это как раз то что нам надо!

Пример сортировки массива по полю year:

$data_year=array();
 //Генерируем "определяющий" массив
 foreach($data as $key=>$arr){
 $data_year[$key]=$arr['year'];
 }
 array_multisort($data_year, SORT_NUMERIC, $data);

Пример сортировки массива по полям year и author:

$data_author=array();
 foreach($data as $key=>$arr){
 $data_author[$key]=$arr['author'];
 }
$data_year=array();
 foreach($data as $key=>$arr){
 $data_year[$key]=$arr['year'];
 }
array_multisort($data_year, SORT_NUMERIC, $data_author, $data);

Сжатие pdf файла Linux

Ситуация: бухгалтерия отсканировала кипу документов в 300dpi, чтобы отослать письмом. Файлы получились 20-30мб.  Задача: сжать.

Способ 1:

Устанавливаем Ghostscript и pdftk

sudo apt-get install ghostscript pdftk

Далее кидаем файлы pdf в какую-то папку,далее создаем и запускаем следующий скрипт:

for file in *.pdf; do 
ps=".ps";
pdf2ps $file "$file+$ps"; 
done
for file in *.ps; do 
pdf=".pdf";
pdf2ps $file "$file+$pdf"; 
done

В итоге получаем сжатые в несколько раз файлы.

Способ 2:

Воспользуемся ghostscript. Убедимся, что он установлен:

sudo apt-get install ghostscript

А затем сожмем PDF:

for file in *.pdf; do
 pdf=".pdf";
 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$file$pdf" $file
 done

-dPDFSETTINGS=configuration
Presets the «distiller parameters» to one of four predefined settings:
/screen selects low-resolution output similar to the Acrobat Distiller «Screen Optimized» setting.
/printer selects output similar to the Acrobat Distiller «Print Optimized» setting.
/prepress selects output similar to Acrobat Distiller «Prepress Optimized» setting.
/default selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file.

Установка МФУ Kyocera M2035DN

0248519_1Вход с системное меню с панели принтера: кнопка системное меню. Пароль/логин по умолчанию на новом принтере 3500/3500 После того как пропишете IP адрес, дальнейшее конкурирование принтера возможно через WEB интерфейс (http://IP:80). Пароль/Логин на вход администратора по умолчанию Admin/Admin. Из прелестей: сканирование с лотка на почтовый ящик, в папку

ClipBucket и проигрывание видео в браузере без FLASH

Снимок экрана от 2014-03-25 14:14:18А именно, как оказалось, по умолчанию оба плеера доступные в ClipBucket 2.6 не проигрывают видео в браузере без поддержки FLASH.  Например на любом планшете с Android и браузером Chrome. Непорядок. Нужно исправлять. В первых подправил движок, чтобы он принудительно конвертировал в mp4, а не в flv по умолчанию, т.к. оный не поддерживается в html5. Для этого в файле video_convert.php заменил строчку:

if($ffmpeg->input_details[‘video_height’]>’719′)

на

if($ffmpeg->input_details[‘video_height’]>’1′)

, ибо по какой-то  причине, создатели ClipBucket решили что если высота маленькая, то пользователь обойдется только форматом flv.

Ну а далее я добавил еще один плеер в систему, сделав его на основе video.js, который хорош тем, что если обнаруживает поддержку FLASH в браузере, то использует плеер на основе FLASH (в нем побольше «рюшечек»), а в противном случае использует только возможности HTML5 по воспроизведению видео.

Плагин для ClipBucket 2.6 можно взять здесь. Для установки достаточно скопировать в папку с плеерами и активировать его из админки.

UPDATE: тот-же самый плагин, но с поддержкой плейлистов можно взять здесь.

UPDATE2: оказывается videojs, будет «из коробки» в версии ClipBucket 3 и выше. Так что мартышкин труд, чуток подождать просто.