« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга

Тестирование 64-битных приложений

ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
    Популярное
Глава 4. ИСПОЛЬЗОВАНИЕ РЕЛЯЦИОННЫХ И БУЛЕВЫХ ОПЕРАЦИЙ ДЛЯ СОЗДАНИЯ БОЛЕЕ СЛОЖНЫХ ПРЕДИКАТОВ

ГЛАВА 6 Определение и использование примитивов

Принцип создания плагинов в Delphi

Глава 13. Использование операторов ANY, ALL и SOME

Новые функции Java SE 7

Справочная система

Что дает репозитарий XML DB и как с ним работать

Том Кайт: об удалении дубликатов и порядке срабатывания триггеров

Конструкторы и операции

Сообщения Windows - введение




    Архив файлов



    Сообщества



    Документация

Статьи:: Linux :: Download-менеджеры


отправить ссылку другу версия для печати  Обсудить на форуме

Download-менеджеры





Download-менеджеры

Вы когда-нибудь пробовали скачивать по медленному каналу такой огромный файл, что приходилось держать веб-браузер открытым часы или даже дни напролет? А если на web-странице находятся ссылки на 40 нужных вам файлов - вы будете нудно щелкать по каждому из них? Что, если браузер "упадет" до того, как он закончит скачивание? А ведь GNU/Linux поставляется вместе с удобным набором инструментов для независимой от браузера фоновой загрузки. Они позволяют выходить из системы, возобновлять прерванные задания и даже планировать выполнение заданий в периоды малой загрузки сети.

Когда интерактивность становится на пути

Множество файлов даже при самом быстром соединении требуют для загрузки гораздо больше, чем несколько секунд. Например, образы ISO, популярные среди тех, кто самостоятельно записывает CD-ROM'ы с дистрибутивами GNU/Linux. Некоторые web-браузеры, особенно плохо написанные, при длительном использовании ненадежны, "теряют" память или "падают" в самый неподходящий момент. Несмотря на интеграцию некоторых браузеров с файловыми менеджерами, многие из них все еще не поддерживают операции множественного выбора и "резиновой нити" [имеется в виду выбор нескольких графических объектов, например, файлов, нарисовав вокруг них мышкой "растягивающийся" прямоугольник, которые облегчают пересылку нескольких файлов. Кроме того, приходится оставаться зарегистрированным в системе до тех пор, пока файл не будет скачан полностью. Наконец, для того чтобы щелкнуть по линку, инициализирующему загрузку, вы должны находиться в офисе, к неудовольствию использующих тот же канал коллег. 
Для скачивания больших файлов более пригодны наборы инструментальных средств. В данной статье обсуждается, как скомбинировать разные GNU/Linux утилиты, такие как lynx, wget, at, crontab и т.п., для решения различных задач по передаче файлов. Также будет использовано небольшое количество скриптов, поэтому будет полезно знание оболочки bash. 

Утилита wget

Инструмент загрузки wget включен во все основные дистрибутивы. 
bash$ wget http://place.your.url/ here 
wget также может обрабатывать FTP, временные метки (date stamps), рекурсивно отражать полное дерево каталогов web-сайта, а если вы не будете осторожны, то весь web-сайт и другие сайты, на которые имеются ссылки: 
bash$ wget -m http://target.web. site/subdirectory 
Из-за потенциально высоких нагрузок, которые может создавать wget, при зеркалировании он работает в соответствии с протоколом "robots.txt". Существуют несколько командных опций управления зеркалированием, ограничивающих виды отслеживаемых ссылок и типы загружаемых файлов. Например: следовать только по относительным ссылкам и пропускать изображения GIF: 
bash$ wget -m -L --reject=gif http://target.web.site/subdirectory
Кроме того, wget позволяет возобновлять прерванное задание (опция "-c"), если задан незавершенный файл, к которому добавляются оставшиеся данные. 
bash$ wget -c http://the.url.of/ incomplete/file 
Докачку и зеркалирование можно объединить, позволяя зеркалировать большую коллекцию файлов за несколько отдельных сессий загрузки. Автоматизацию этого процесса мы рассмотрим позже. 
Если у вас процесс загрузки прерывается столь же часто, как и у меня в офисе, вы можете заставить wget повторять URL несколько раз: 
bash$ wget -t 5 http://place. your.url/here 
Тут мы делаем 5 попыток. Чтобы совсем не прерываться, используйте "-t inf". 
Как насчет прокси-файрволлов? Чтобы указать прокси, через который нужно скачивать, используйте переменную окружения http_proxy или конфигурационный файл .wgetrc. Единственная проблема с проксируемыми соединениями по непостоянному каналу в том, что иногда возобновление срывается. Если загрузка через прокси сорвалась, то в кэше прокси-сервера останется неполная копия файла. Когда вы попытаетесь докачать оставшуюся часть файла с помощью команды "wget -c", прокси проверяет свой кэш и ошибочно сообщает, что вы скачали уже весь файл. Большинство прокси можно заставить не использовать свой кэш, добавив в свой запрос на загрузку специальный заголовок: 
bash$ wget -c --header="Pragma: no-cache" http://place.your.url/here
Опция "--header" позволяет добавлять любое количество и виды заголовков, с помощью которых можно изменять поведение web-серверов и прокси. Некоторые сайты не отдают файлы по ссылкам из внешних источников; контент передается браузеру, только если доступ к нему был получен из других страниц этого сайта. Это можно обойти, добавив заголовок "Referer:":
bash$ wget --header="Referer: http://coming.from.this/page"
http://surfing.to.this/page
Некоторые особо недружественные web-сайты предоставляют контент только определенным видам браузеров. Это можно обойти с помощью заголовка "User-Agent:". 
bash$ wget --header="User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 
NT; DigExt)" http://msie.only. url/here 
(Предупреждение: приведенные выше "хитрости" могут быть расценены как обман механизма лицензирования контента, и существуют жесткие законодательные системы, в которых эти действия считаются незаконными. Проверьте свое местное законодательство. У вас могут быть свои особенности.) 

В котором часу начать закачку?
Если вы скачиваете большие файлы на своем офисном компьютере через соединение, разделяемое со вспыльчивыми коллегами, которые не любят, когда их медийный поток замедляется почти до нуля, то вам придется назначить закачку файлов на более свободные часы. Вам не нужно оставаться в офисе, ожидая ухода всех коллег или воспользоваться после ужина удаленным доступом из дома. Используйте таймер заданий at. 
bash$ at 2300
warning: commands will be executed using /bin/sh
at> wget http://place.your.url/here
at>нажмите Ctrl-D 
Тут мы задаем начало скачивания на 23:00. Проверьте, что в фоне для этого задания запущен демон таймера atd. 
И сколько дней потребуется?
Когда нужно скачать много данных в одном или нескольких файлах, а скорость вашего канала сравнима с протоколом голубиной почты, то, приходя утром на работу, вы часто будете обнаруживать, что скачивание, запущенное по таймеру, все еще не завершено. Будучи хорошим соседом, вы убиваете задание и создаете новое задание at, в этот раз с помощью "wget -c", повторяя это, при необходимости, каждый день. Все же это лучше автоматизировать с помощью crontab. Создайте простой текстовый файл с именем "crontab.txt", содержащий что-то типа этого: 
0 23 * * 1-5 wget -c -N http://place.your.url/here 
0 6 * * 1-5 killall wget 
Это и будет вашим файлом crontab, который определяет, какие периодические задания выполнять и когда. Первые пять колонок сообщают, когда выполнить команду, а оставшаяся часть каждой строки указывает, что необходимо выполнить. В первых двух колонках задается время дня - в 0 минут 23 часа запустить wget, в 0 минут 6 часов убить wget. Символы * в 3-й и 4-й колонках указывают, что эти действия повторяются каждый день каждого месяца. 5-я колонка указывает, на какой день недели запрограммирована каждая операция - "1-5" соответствуют Понедельник-Пятница. 
Таким образом, каждую неделю в рабочие дни в 11 часов вечера будет начинаться ваша закачка, а в 6 утра каждого рабочего дня любой все еще выполняющийся wget будет прерван. Для активизации этого расписания crontab вы должны выполнить команду: 
bash$ crontab crontab.txt 
Опция "-N" для wget будет проверять временные метки (timestamp) целевого файла и остановит скачивание, если они совпадут, что является индикатором того, что файл скачан полностью. Таким образом, вы можете просто установить его и забыть. "crontab -r" удалит это запланированное задание. Таким способом я скачал кучу ISO образов через разделяемые dial-up соединения. 

Динамически генерируемые Web-страницы
Некоторые web-страницы генерируются по запросу, так как они часто изменяются, иногда несколько раз за день. Поскольку технически наша цель файлом не является, то у нее нет длины, и, следовательно, докачка становится бессмысленной - опция "-c" не работает. Пример - PHP-сгенерированная страница на Linux Weekend News: 
bash$ wget http://lwn.net/bigpa-ge.php3 
Если закачка прерывается и вы пытаетесь докачать, то все начнется с самого начала. Временами мой сетевой канал в офисе настолько плох, что мне пришлось написать простой скрипт, обнаруживающий момент полного скачивания динамической HTML-страницы: 
#!/bin/bash 

#создаем, если его нет 
touch bigpage.php3
#Проверяем, все ли мы скачали 
while ! grep -qi '</html>' bigpage.php3 
do 
rm -f bigpage.php3 
#Скачиваем LWN в одну большую страницу 
wget http://lwn.net/bigpage.php3 
done 
Этот bash-скрипт удерживает загрузку документа, пока не будет найдена строка "</html>", обозначающая конец файла. 

SSL и Cookies
URL'ы, начинающиеся с "https://", обязаны предоставлять доступ к удаленным файлам через защищенное соединение SSL (Secure Sockets Layer). Вы обнаружите, что в этой ситуации более удобна другая утилита скачивания под названием curl. 
Некоторые web-сайты запихивают cookies в браузер до предоставления затребованного контента. Необходимо добавить заголовок "Cookie:" с правильной информацией, которую можно получить из cookie-файла вашего web-браузера. Для lynx и Mozilla формат файла cookie: 
bash$ cookie=$( grep nytimes ~/. lynx_cookies |awk '{printf("%s=%s;",$6,$7)}') 
создает требуемый cookie для скачивания подборки с http://www.nytimes.com, полагая, что вы уже зарегистрировались на этом сайте с помощью браузера. w3m использует немного другой формат файла cookie: 
bash$ cookie=$( grep nytimes ~/. w3m/cookie |awk '{printf("%s=%s;",$2,$3)}' ) 
Теперь скачивание можно выполнить таким образом: 
bash$ wget --header="Cookie: $cookie" 
http://www.nytimes.com/reuters/technology/tech-tech-supercomput.html
или с помощью инструмента curl: 
bash$ curl -v -b $cookie -o supercomp.html  
http://www.nytimes.com/reuters/technology/tech-tech-supercomput.html 

Создание списков URL
До этого момента мы скачивали либо единичные файлы, либо полностью зеркалировали весь веб-сайт. Иногда необходимо скачать множество файлов с разными URL, указанными на веб-странице, но полномасштабное зеркалирование всего сайта не нужно. Например, требуется скачать первые 20 музыкальных файлов с сайта со списком ТOP-100 самых популярных песен. В данном случае, опции "--accept" и "--reject" работать не будут, поскольку они работают только с расширениями файлов. Вместо них используем "lynx -dump". 
bash$ lynx -dump ftp://ftp.ssc. com/pub/lg/ |grep 'gz$' |tail -10 |awk '{print $2}' > urllist.txt 
Затем вывод lynx можно отфильтровать с помощью различных GNU утилит обработки текста. В приведенном выше примере мы выделили URL'ы, заканчивающиеся на "gz", и сохранили в файле последние 10. Крошечная скриптовая команда bash автоматически скачает любые URL'ы, перечисленные в этом файле: 
bash$ for x in $(cat urllist.txt)
> do
> wget $x
> done

"Купаясь" в широком канале
Если вы один из немногих избранных, имеющих широкий канал, и скорость скачивания файлов ограничивается только на стороне web-сервера, то ускорить процесс пересылки файла может помочь следующий трюк. Вам потребуется применение curl и наличие нескольких зеркальных веб-сайтов, на которых хранятся идентичные копии нужного файла. Например, вам нужно скачать ISO Mandrake 8.2 из следующих трех мест: 
url1=http://ftp.eecs.umich.edu/ pub/linux/mandrake/iso/Mandrake82-inst.iso
url2=http://ftp.rpmfind.net/linux/Mandrake/iso/Mandrake82-inst.iso 
url3=http://ftp.wayne.edu/linux/ mandrake/iso/Mandrake82-inst.iso 
Длина файла равна 677281792, поэтому запустим три одновременных скачивания с помощью опции curl "--range" option: 
bash$ curl -r 0-199999999 -o mdk-iso.part1 $url1 & 
bash$ curl -r 200000000-399999999 -o mdk-iso.part2 $url2 & 
bash$ curl -r 400000000- -o mdk-iso.part3 $url3 & 
Создаются три фоновых процесса скачивания, каждый из которых копирует разные части ISO-образа с разных серверов. Опции "-r" задают поддиапазоны байтов, выбираемых из целевого файла. По завершению просто объедините с помощью cat все три части вместе - cat mdk-iso.part? > mdk-82.iso. (Настоятельно рекомендуем проверить md5 hash до записи на CD-R.) Запуск каждого curl в своем собственном окне с опцией "--verbose" позволяет отследить каждый процесс скачивания. 

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

По материалам Adrian J. Chung
Подготовил X-Stranger

Источник: www.lib.k6.ru




Рубрика: Linux




Инструменты Internet Explorer 8 Beta 2 для разработчиков.

Вебмастеру

В марте этого года мы уже писали об инструментах для разработчика в IE8 Beta 1, но IE8 Beta2 позволяет более полно использовать инструменты за счет значительных изменений в имеющихся функциях, а также новых возможностей. В принципе инструменты для разработчика должны обладать следующими свойствами: Быть интегрированными и простыми в использовании; Иметь визуальный интерфейсC их помощью можно быстро протестировать сайт.


Подробнее... | Рубрика: Вебмастеру | Добавлено: 05.09.2008

Google Developer Day 2008 в Москве.

Мероприятия

Дата проведения: 28 октября 2008 г.; Место проведения: Амбер Плаза, Москва, Россия. Конференция для веб-разработчиков и разработчиков мобильных приложений в Москве. Узнайте, как наилучшим образом использовать инструменты разработки и API от Google, чтобы создавать социальные, мобильные и картографические приложения, как использовать AJAX/JavaScript инструменты и библиотеки от Google и многое другое из первых уст.


Подробнее... | Рубрика: Мероприятия | Добавлено: 05.09.2008

ТОП 10 самых раздражающих факторов для программиста.

Разное

Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…


Подробнее... | Рубрика: Разное | Добавлено: 03.09.2008

Остальные статьи:

Windows Server 7, 8 и 9
jQuery для JavaScript-программистов
Инновационный веб-броузер Google Chrome стартует уже сегодня
Windows 7: подход к производительности системы
Trac + Subversion @ Ubuntu: Revisited
[g]Vim в режиме Python: Рекомпиляция в Windows
Java + JSON. Пути к дружбе
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения


Цитата дня (все,добавить):



    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование

Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 79
Пользователей: 0