четверг, 21 ноября 2013 г.

Несколько слов о загрузке файлов с помощью Resumable.js

На днях познакомился с javascript-плагином для загрузки файлов Resumable.js и его код на GitHub-e. Вот появились некоторые соображения по поводу загрузки файлов.

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

Мне кажется, что при загрузке файлов есть несколько интересных вопросов. Один из таких вопросов это загрузка файлов большого размера (больше 2 ГигаБайт). Пишут, что у браузеров есть ограничения на размер загружаемых файлов.

Используя стандартный способ загрузки в HTML '<input type="file">' (php-пример)  пользователь, который загружает большой файл, должен ждать долгое время. Для него не понятно, насколько реально загружен файл, будет ли удачной загрузка, возникнут ли ошибок при загрузке, придется ли начинать загрузку заново. С появлением HTML5 FILE API (пример) можно решить эту проблему, реализовав возможность возобновлять загрузку файлов с того состояние, в котором они были прерваны, а не начинать все с самого начала. Такая возможность есть и у Resumable.js. Есть ограничения на браузеры, в которых доступна эта возможность (Firefox 4+ и Chrome 11+).

Общая идея о том, как это реализовано. Resumable.js разбивает файл на несколько небольших фрагментов (chunk), используя HTML5 FILE API.  Затем каждый фрагмент загружается по одному, пока весь файл не будет загружен. Если какой-то из фрагментов файла невозможно загрузить правильно, то этот фрагмент будет загружен повторно.

Resumable.js также позволяет пользователю приостанавливать и возобновлять загрузку без потери состояния. Плагин работает также в случаях, если происходит потеря соединения, если сервер завершает работу или перезапускается.

Продолжение следует =)

четверг, 7 ноября 2013 г.

Zip и Unzip файлов в Ubuntu

Столкнулся с простой задачей, нужно создать zip-архив и нужно распаковать zip-архив под Ubuntu.

Решение было быстро найдено в Google. Здесь основные команды, что бы не забыть.

Установка архиватора

По умолчанию в Ubuntu не установлены zip/unzip инструменты, поэтому их нужно установить:

# sudo apt-get install zip
# sudo apt-get install unzip
или

# sudo apt-get install zip unzip
Работа с архивами

Для создания архива data.zip из всех файлов в текущей директории, т.е. взять все файлы из текущей директории, где вы сейчас находитесь, сжать их и положить в архив data.zip, нужно выполнить следующую команду:

# zip data *
Замечание: расширение .zip будет добавлено автоматически командой zip. Мы указываем только имя архива.

Если нужно добавить в архив не только все файлы в текущей директории, но и все поддиректории, то используем команду:
# zip -r data *
Вывести список всех файлов в архиве data.zip
# unzip -l data.zip
Извлечь все файлы и поддиректории из архива data.zip в текущую директорию:
# unzip data.zip
Извлечь из архива data.zip файл с именем index.html:
# unzip data.zip index.html
Извлечь из архива data.zip все файлы из директории /tmp: