Page 5 of 7
Re: http качалка
Posted: Fri Jun 01, 2012 8:38 pm
by Leency
Какие на то причины? Марио вот наоборот на трекере сказал ,что неплохо бы прикрутить.
Ну и... Я ЧУТЬ НЕ ВЫУЧИЛ АСМ ПОКА ЕГО ПРИКРУЧИВАЛ И ОНО РАБОТАЕТ потому если придётся удалять, будет немного грусно.
Re: http качалка
Posted: Fri Jun 01, 2012 9:29 pm
by Leency
Network Downloader 0.6
- прикручен edit_box
- используются ситемные цвета
- удалён старый код
Editbox я прикручивал основываясь на изменениях IgorA в программе hex2dec2bin, и ему же огромное спасибо за
статью об EditBox'e на Вики. Реально без этого ничего бы не вышло.
Осталась одна проблема: не работает мышь. Как к этой строке добавить обработку мыши?
Code: Select all
mcall 40, 10000000b ; only net event!!!
Re: http качалка
Posted: Fri Jun 01, 2012 9:33 pm
by Mario
Как однажды сказал один человек "Мнение пишущего код более приоритетно, чем мнение советующих".
Вообще можно было подойти к проблеме с другой стороны - написать GUI часть отдельным приложением, которое будет вызывать программу, также как это сейчас делает HTMLv. В этом случае вообще не было бы вопросов. Кстати даже прикрутить edit_box можно так чтобы в безоконном режиме box_lib вообще не загружался.
Re: http качалка
Posted: Fri Jun 01, 2012 9:45 pm
by Mario
Leency wrote:Осталась одна проблема: не работает мышь. Как к этой строке добавить обработку мыши?
Code: Select all
mcall 40, 10000000b ; only net event!!!
Установкой нужного бита.
http://wiki.kolibrios.org/wiki/SysFn40/ru
ebx = маска: бит i соответствует событию i+1 (см. список событий)
http://wiki.kolibrios.org/wiki/Ru/api/kernel
Spoiler:
Список событий
Очередное событие можно получить вызовом одной из функций 10 (ожидать события), 11 (проверить без ожидания), 23 (ожидать в течение заданного времени). Эти функции возвращают только те события, которые входят в маску, устанавливаемую функцией 40. По умолчанию это первые три, чего вполне достаточно для многих приложений. Коды событий:
1 = сообщение о перерисовке (сбрасывается при вызове функции 0)
2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша";
сбрасывается, когда все клавиши из буфера считаны функцией 2
3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит;
поступает, только когда окно активно;
сбрасывается, когда все кнопки из буфера считаны функцией 17)
4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке функцией 40)
5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)
6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
7 = произошло событие IPC (смотри функцию 60 - Inter Process Communication; сбрасывается при прочтении)
8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью)
9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему)
16..31 - ранее использовались для проверки соответвующих IRQ (16=IRQ0, 31=IRQ15) (на новых версиях ядра не генерируются)
Следовательно из номера события вычитаем единицы и получаем порядковый номер бита который надо установить. Бит нумеруются с нулевого.
6 - 1 = 5 получается 100000b
10000000b + 100000b = 10100000b
Только сдается мне комментарий
; only net event!!!
там не просто так стоит, и возможно ты хочешь исправить не то место.
В коде есть еще один участок:
Code: Select all
prepare_event:
; Report events
; Stack 8 + defaults
mcall 40,10000111b
И если немного использовать верхнее утолщение позвоночника, то можно догадаться, что первый вызов ф. 40, используется для безоконного режима работы - добавление в него лишних событий не будет полезным. Более того оно не решит возникшую проблему с мышкой.
Re: http качалка
Posted: Fri Jun 01, 2012 9:57 pm
by Rock_maniak_forever
Leency wrote:Осталась одна проблема: не работает мышь. Как к этой строке добавить обработку мыши?
Code: Select all
mcall 40, 10000000b ; only net event!!!
5-ый бит отвечает за мышь.
Code: Select all
mcall 40, 10100000b ; only net event!!!
Вот таблица. По ней легко определить, какой бит надо включить/выключить.
Code: Select all
; |----------------------------------------------------------------------------| ;
; | Таблица желаемых событий. | ;
; |----------------------------------------------------------------------------| ;
; | 00000000 00000000 00000000 00000111b Cобытия: | ;
; | I Перерисовка окна. | ;
; | I Клавиша в буфере. | ;
; | I Кнопка в буфере. | ;
; | I Забранировано. | ;
; | I Перерисовывается фон рабочего стола. | ;
; | I Мышь. | ;
; | I IPC | ;
; | I Сетевое событие. | ;
; | I Отладочное событие. | ;
; | I---------------I Данные IRQ. | ;
; |----------------------------------------------------------------------------| ;
Re: http качалка
Posted: Fri Jun 01, 2012 10:08 pm
by Leency
Спасибо! С битами буду разбираться.
Программу залил на SVN.
Что хотелось бы сделать в будущем: отображение статуса процесса в окне. Ну или хотя бы индикатор окончания загрузки.
P.S. Да, исправление было для другого места.
Re: http качалка
Posted: Tue Mar 19, 2013 4:17 pm
by SoUrcerer
Сейчас качалка не поддерживает коды 301/302. Особенность в том, что часто адрес, куда делается редирект, не сообщается в содержимом документа, а только в качестве ответа качалке (HTTP/1.1 301 Moved .. и тут адрес). Без обработки этих кодов ошибок зачастую невозможно посещать некоторые сайты.
Re: http качалка
Posted: Tue Mar 19, 2013 4:25 pm
by Leency
Я уже писал, что часты случаи, когда сайт
http://ololo.lo не будет работать просто потому он посылает 301/302 на http://
www.ololo.lo или
http://ololo.lo/[b]index.php[/b], что делает неработоспосособными чуть менее, чем половину хостов.
Re: http качалка
Posted: Wed Mar 20, 2013 9:17 am
by Mario_r4
Re: http качалка
Posted: Thu Apr 18, 2013 8:51 am
by Mario_r4
По мотивам "Винни Пух и
все-все-все 256 байт адреса"
http://paradigm.ru/url-max-length
http://www.manhunter.ru/webmaster/481_k ... a_url.html
По первой ссылке похвалили Opera, обосрали IE и скромно промолчали про Хром.
По второй ссылке похвалили Opera, обосрали IE и Хром все равно сосет.
Фуррифокс и Сафари бодрячком.
Итого делаем вывод -
долбодятлы криворукие веб-мастера могут взять любое значение полной длинны ссылки.
В Колибри в случае использования расшаренной "именованной" памяти для передачи полного пути можно также использовать любой доступный объем памяти.
Re: http качалка
Posted: Thu Apr 18, 2013 8:54 am
by SoUrcerer
Я еще года два назад делал такие тесты, Хром вешается на 65534м байте адреса. Ну, или вешался. Опера действительно работала стабильно, а фуррифокс просто малеха подтормаживал на мегабайтных ссылках. Но на статью это не тянуло.
Re: http качалка
Posted: Fri Apr 19, 2013 2:21 am
by Mario_r4
SoUrcerer wrote:Сейчас качалка не поддерживает коды 301/302. Особенность в том, что часто адрес, куда делается редирект, не сообщается в содержимом документа, а только в качестве ответа качалке (HTTP/1.1 301 Moved .. и тут адрес). Без обработки этих кодов ошибок зачастую невозможно посещать некоторые сайты.
На каких сайтах кроме
http://google.com можно гарантированно получить такое перенаправление? Нужна статистика, поскольку придется разбирать содержимое выдаваемой страницы.
Re: http качалка
Posted: Fri Apr 19, 2013 9:16 am
by SoUrcerer
На
http://kolibrios.org
Разбирать содержимое страницы не нужно, потому что в ответе 301/302 передается конкретно адрес, куда нужно сделать редирект. Это уже поддерживается в тестовой сборке HTMLv со своей встроенной качалкой HTTP.
Re: http качалка
Posted: Fri Apr 19, 2013 9:18 am
by Mario_r4
SoUrcerer wrote:На
http://kolibrios.org
Разбирать содержимое страницы не нужно, потому что в ответе 301/302 передается конкретно адрес, куда нужно сделать редирект. Это уже поддерживается в тестовой сборке HTMLv со своей встроенной качалкой HTTP.
Хорошо, тогда я не буду тратить время на решение этой проблемы.
Re: http качалка
Posted: Fri Apr 19, 2013 9:19 am
by SoUrcerer
Code: Select all
telnet kolibrios.org 80
GET / HTTP/1.0
Host: kolibrios.org
Code: Select all
HTTP/1.0 301 Moved Permanently
Location: http://kolibrios.org/en/
Content-Length: 0
Connection: close
Date: Fri, 19 Apr 2013 06:18:29 GMT
Server: lighttpd/1.4.32