[unix] Downloader

mirt1971

Вышла новая версия программы downloader.
ChangeLog:
* часть программы вынесена в библиотеку
* большая часть программы переписана с использованием моей же сетевой библиотеки
* autoconf / automake
* исправлены 2 бага, улучшена стабильность и скорость работы
* возможность закачки больших файлов
скачать: smb://braindead.hackers/pub/nettools-0.0.1.tar.gz
Установка:
export SMBDIR='где у вас стоит самба'
./configure --prefix=/usr (или куда вам удобно)
make
make install

helpall

Не учи плохому.
Всем известно, что для установки программ используются команды apt-get install, installpkg, rpm или еще пара таких же.

mirt1971

У кого как. Я использую Install "make install" packagename-version
Или Uninstall packagename-version

helpall

Да, так тоже нормально, наверное.
То есть, хуже, чем в программах, которые проверяют зависимости и всё такое, но тоже ничего. А вот просто make install - это ужас.

vall

autoconf / automake
export SMBDIR='где у вас стоит самба'
а второе через первое уже никак ?

sergey_m

export SMBDIR='где у вас стоит самба'
./configure --prefix=/usr (или куда вам удобно)
Почему не ./configure --with-smb-includes=XXX --with-smb-libraries=YYY?
Еще можно сделать возможность автоматической проверки стандартных мест, где оно может быть найдено.

sergey_m

> Не учи плохому.
Не пизди и сделай .deb, .spec и прочее.

mirt1971

Оно конечно лучше, но в 6 утра вспоминать как пишется configure.in для такого случая? Увольте...

mirt1971

По просьбам трудящихся я поправил систему сборки. Новый пакет тут: smb://braindead.hackers/pub/nettools-0.0.2.tar.gz
Сборка:
./configure --prefix="/usr" --with-smblibdir="/usr/progs/Samba/lib" --with-smbincdir="/usr/progs/Samba/include"

eee1


Making all in src
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../lib/libnet -I../lib/libproto -I../l
ib/libauth -I../lib/libroom -I/usr/local/include/libxml2 -I/usr/local/include -D
_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -MT client.o -MD -MP -M
F ".deps/client.Tpo" -c -o client.o client.C; then mv -f ".deps/client.Tpo" ".d
eps/client.Po"; else rm -f ".deps/client.Tpo"; exit 1; fi
g++ -I../lib/libnet -I../lib/libproto -I../lib/libauth -I../lib/libroom -I/usr/l
ocal/include/libxml2 -I/usr/local/include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_B
ITS=64 -D_GNU_SOURCE -o client -L../lib/libnet -L../lib/libproto -L../lib/lib
auth -L../lib/libroom client.o -lnet -lproto -lauth -L/usr/local/lib -lxml2 -lz
-liconv -lm
/usr/bin/ld: warning: libm.so.2, needed by /usr/local/lib/libxml2.so, may confli
ct with libm.so.3
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../lib/libnet -I../lib/libproto -I../l
ib/libauth -I../lib/libroom -I/usr/local/include/libxml2 -I/usr/local/include -D
_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -MT server.o -MD -MP -M
F ".deps/server.Tpo" -c -o server.o server.C; then mv -f ".deps/server.Tpo" ".d
eps/server.Po"; else rm -f ".deps/server.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../lib/libnet -I../lib/libproto -I../l
ib/libauth -I../lib/libroom -I/usr/local/include/libxml2 -I/usr/local/include -D
_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -MT ServerWorker.o -MD
-MP -MF ".deps/ServerWorker.Tpo" -c -o ServerWorker.o ServerWorker.C; then mv -
f ".deps/ServerWorker.Tpo" ".deps/ServerWorker.Po"; else rm -f ".deps/ServerWork
er.Tpo"; exit 1; fi
g++ -I../lib/libnet -I../lib/libproto -I../lib/libauth -I../lib/libroom -I/usr/l
ocal/include/libxml2 -I/usr/local/include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_B
ITS=64 -D_GNU_SOURCE -o server -L../lib/libnet -L../lib/libproto -L../lib/lib
auth -L../lib/libroom server.o ServerWorker.o -lnet -lproto -lauth -L/usr/local/
lib -lxml2 -lz -liconv -lm
/usr/bin/ld: warning: libm.so.2, needed by /usr/local/lib/libxml2.so, may confli
ct with libm.so.3
../lib/libnet/libnet.a(Thread.o.gnu.linkonce.t._ZN7Private6Thread4waitEv+0x15)
: In function `Private::Thread::wait':
: undefined reference to `pthread_join'
../lib/libnet/libnet.a(Thread.o.gnu.linkonce.t._ZN7Private6Thread9terminateEv+
0x13): In function `Private::Thread::terminate':
: undefined reference to `pthread_kill'
*** Error code 1
Stop in /usr/home//nettools-0.0.2/src.
*** Error code 1
Stop in /usr/home//nettools-0.0.2.
*** Error code 1
Stop in /usr/home//nettools-0.0.2.
unix%pwd
/usr/home//nettools-0.0.2
unix%~

mirt1971

Попробуй сейчас скачать. У тебя почему-то не было -lpthread. Я их добавил вручную

eee1

Making all in downloader
gmake[2]: Entering directory `/tmp/nettools-0.0.2/downloader'
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -I../lib/libnet -I../lib/libproto -I../lib/libauth -I../lib/libroom -I../lib/libmisc -I/usr/local/include/libxml2 -I/usr/local/include -MT BlockFile.o -MD -MP -MF ".deps/BlockFile.Tpo" -c -o BlockFile.o BlockFile.C; \
then mv -f ".deps/BlockFile.Tpo" ".deps/BlockFile.Po"; else rm -f ".deps/BlockFile.Tpo"; exit 1; fi
BlockFile.C:12:20: alloca.h: No such file or directory
gmake[2]: *** [BlockFile.o] Error 1
gmake[2]: Leaving directory `/tmp/nettools-0.0.2/downloader'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/tmp/nettools-0.0.2'
gmake: *** [all] Error 2
unix%pwd
/tmp/nettools-0.0.2
unix%uname -a
FreeBSD unix.local 5.3-STABLE FreeBSD 5.3-STABLE Wed Jan 5 13:36:33 MSK 2005 unix.local:/mnt/music/Temp/obj/usr/src/sys/kernel i386
unix%

mirt1971

Блин. Ну я фигею На bsd нет alloca? Ладно, сейчас поправлю.

eee1

unix%man alloca
ALLOCA(3) FreeBSD Library Functions Manual ALLOCA(3)
NAME
alloca -- memory allocator
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdlib.h>
void *
alloca(size_t size);
DESCRIPTION
The alloca function allocates size bytes of space in the stack frame of
the caller. This temporary space is automatically freed on return.
..............

mirt1971

Поздно Я уже ликвидировал все alloca. Можешь забирать.

eee1

ладно, но это не все
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -I../lib/libnet -I../lib/libproto -I../lib/libauth -I../lib/libroom -I../lib/libmisc -I/usr/local/include/libxml2 -I/usr/local/include -MT Job.o -MD -MP -MF ".deps/Job.Tpo" -c -o Job.o Job.C; \
then mv -f ".deps/Job.Tpo" ".deps/Job.Po"; else rm -f ".deps/Job.Tpo"; exit 1; fi
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -I../lib/libnet -I../lib/libproto -I../lib/libauth -I../lib/libroom -I../lib/libmisc -I/usr/local/include/libxml2 -I/usr/local/include -MT Download.o -MD -MP -MF ".deps/Download.Tpo" -c -o Download.o Download.C; \
then mv -f ".deps/Download.Tpo" ".deps/Download.Po"; else rm -f ".deps/Download.Tpo"; exit 1; fi
Download.C: In function `bool Download::downloadFile(char**, int*, size_t, const char*)':
Download.C:167: error: `sighandler_t' undeclared (first use this function)
Download.C:167: error: (Each undeclared identifier is reported only once for each function it appears in.)
Download.C:167: error: expected `;' before "u"
Download.C:168: error: expected `;' before "h"
Download.C:172: error: `u' undeclared (first use this function)
Download.C:173: error: `h' undeclared (first use this function)
Download.C:177: error: expected `;' before "last_a"
Download.C:178: error: expected `;' before "last_i"
Download.C:184: error: `last_a' undeclared (first use this function)
Download.C:185: error: `last_i' undeclared (first use this function)
In file included from Download.C:226:
DownloadDir.C: In function `void Download::download_dir(char*, int)':
DownloadDir.C:106: error: `sighandler_t' undeclared (first use this function)
DownloadDir.C:106: error: expected `;' before "last_a"
DownloadDir.C:112: error: `last_a' undeclared (first use this function)
Download.C: In function `bool Download::downloadDir(char*, int)':
Download.C:235: error: `sighandler_t' undeclared (first use this function)
Download.C:235: error: expected `;' before "h"
Download.C:239: error: `h' undeclared (first use this function)
Download.C:243: error: expected `;' before "last_i"
Download.C:248: error: `last_i' undeclared (first use this function)
gmake[2]: *** [Download.o] Error 1
gmake[2]: Leaving directory `/tmp/nettools-0.0.2/downloader'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/tmp/nettools-0.0.2'
gmake: *** [all] Error 2
unix%

mirt1971

А что говорит man signal? Формат запуска... Что она у вас возвращает?

mirt1971

Попробуй сейчас.

helpall

Судя по всему, ты не очень понял, что я хотел сказать.
Я не буду делать .deb, .spec и прочее, я просто не буду компилировать что-то, а поищу готовый пакет.
Комментарий же означал следующее: такой метод установки плохой. Не для меня плохой, вообще плохой.
А "не пизди" говорить - это очень грубо.

sergey_m

А что говорит man signal? Формат запуска... Что она у вас возвращает?
Перевожу, что хотел сказать Fj: signal(3) типа устарел, об этом даже в POSIX написано. Нужно юзать sigaction(2). А Стивенс рекомендует писать свой собственный signal реализованный через sigaction и его использовать, так будет типа портабельно. Если потребуются системнозависимые хачки, то их запихнуть в собственный signal.
Я вот даже нашел программку, которую писал так, что бы она и под Linux работала. В ней используется sigaction никаких ifdef __Linux__ в области работы с сигналами не потребовалось.

mirt1971

никаких ifdef __Linux__ в области работы с сигналами не потребовалось.
Мне тоже. Просто в бсд нет typedef на тип возвращаемого значения signal. Я его определил сам, все замечательно, никаких ifdef.
signal(3) типа устарел, об этом даже в POSIX написано. Нужно юзать sigaction(2).
Я знаю. И что? Все и так хорошо.

sergey_m

Мне тоже. Просто в бсд нет typedef на тип возвращаемого значения signal. Я его определил сам, все замечательно, никаких ifdef.
А должен быть?
signal(3) типа устарел, об этом даже в POSIX написано. Нужно юзать sigaction(2).
Я знаю. И что? Все и так хорошо.
Я не буду спорить с тобой, ибо это бесполезно. Мы все помним спор про библиотеки vs cut'n'paste.

mirt1971

1) Не должен. Признаю ошибку, невнимательно прочел мануал:

The use of sighandler_t is a GNU extension. Various versions of libc prede-
fine this type; libc4 and libc5 define SignalHandler, glibc defines sig_t and,
when _GNU_SOURCE is defined, also sighandler_t.

2) Правильно.

mirt1971

Вышла новая версия. Исправлен баг на FreeBSD системах. Программа пыталась выделить на стеке слишком много памяти(128 килобайт, видимо во FreeBSD стек так ограничен ). Большое спасибо за то что он попытался установить программу на своей машине а потом предоставил мне доступ для того чтобы я отыскал ошибку.

sergey_m

Дефолтные настройки - 65536 Кб.

Julie16

Да я уже разобрался - я имел в виду что программа пыталась выделить 128к.

Julie16

Упс... Я неправильно понял... 64 метра? Странно. Почему же тогда все валилось на строке char buf[128*1024]?

Julie16

Вышла версия 0.1.0 программы Downloader. В основном небольшие изменения, касающиеся вывода на экран разнообразной статистики во время закачки, исправлена пара недочетов, несколько увеличена скорость работы. Забирать тут: smb://braindead.hackers/pub/nettools-0.1.0.tar.gz

Varvara2002

Глупый вопрос наверное: по каким протоколам она качает?

IvladV71

по самбе и фтп

Commandor

а можно намылить? mexmat.net Нет доступа к сетке ГЗ.

IvladV71

лови

Commandor

Че-то оно как-то странно циклится.
например бесконечный url not found
или такое
<1> progress: 100,000000%, el.time: 0s
<1> url smb://10.1.3.21/Music (Pop)/_Oleg/Track13.mp3 started
<10> slave exited due signal, restarting
Unknown parameter encountered: "character set"
Ignoring unknown parameter "character set"
Unknown parameter encountered: "client code page"
Ignoring unknown parameter "client code page"

Julie16

У тебя какая libsmbclient? И это наверное под BSD?

Commandor

libsmbclient 3.0.7 FreeBSD 5.3

Julie16

Блин. Если честно - то я знаю про эту ошибку. Как ее исправить - я не знаю. У меня нет доступа ни к одной BSD системе, так что отладить я не могу. Причем эта ошибка - ну очень странная. Она возникает после того как работа уже практически закончена. Вылетает ексепшн, после которого все и валится. Но этот ексепшн у меня стопудово ловится. Я даже не знаю кого винить Может это у бсд такое странное взаимодействие тредов и ексепшенов? В общем чтобы это починить мне нужен доступ к машине с БСД. Хотябы по ssh.

Julie16

PS: Просьба ко всем! Если есть возможность - предоставьте мне шелл на FreeBSD(желательно 5.3 с установленной libsmbclient). Только с целью отладки, обещаю ничего не портить.

Julie16

О, спасибо

eee1

done

Julie16

Клева. Сейчас же займусь

Julie16

Я конечно извиняюсь, но мне кажется кривые руки не у меня:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 3 (LWP 100055)]
0x08050c62 in Storage::cleanup (this=0x80a9080) at Storage.C:268
268 printf( "here\n" );
(gdb) bt
0x08050c62 in Storage::cleanup (this=0x80a9080) at Storage.C:268
0x080533b6 in Job::run (this=0x8070680) at Job.C:111
0x080571c2 in Thread::execute
0x080597af in ThreadQueued::execute
0x080575b8 in Private::Thread::slave
0x089f8f9b in pthread_create from /usr/lib/libpthread.so.1
0x08db6787 in _ctx_start from /lib/libc.so.5

Причем неважно что стоит вместо printf. Просто сегфолт на первом же операторе.

oleg_n

может опять 64 кило стека не хватает?

eee1

неа, у тебя руки-то хорошие - но только под Линуксом

Julie16

Не смешно Не так там уж и много вызовов стоит... Да и я почистил уже все с этим связанное.

oleg_n

попробуй какие-нибудь другие треды

Commandor

самое интересное, что оно все-таки работает, т.е. качает, а потом впадает в лажу

Marinavo_0507

Наверняка нагадил где-то в памяти.
Сам, или посредством знаменитого libsmbclient

Julie16

Если бы я нагадил в памяти, то отладчик мне бы сказал что вы сделали вызов черти чего черти куда. А так все в порядке. Да даже если бы я сделал Storage*0->cleanup это должно было бы отработать. printf не использует никаких локальных переменных.

Julie16

Расклад такой: если я запускаю программу с одним тредом(по идее она ведет себя как вообще нетредовая то все валится. Если я ее немного переделываю до нетредовой, то все работает. Это как? Где я в памяти сру?

Chupa

> если я запускаю программу с одним тредом(по идее она ведет себя как вообще нетредовая)
какой размер стека одного треда и какой у нетредового приложения?
в линухе такое поведение (SEGV в printf) может соответствовать переполнению стека у треда

Julie16

Честно говоря я понятия не имею какой стек у одного треда. Как это можно узнать?

Chupa

прочитать документацию/исходники
написать прогу, которая создаёт треды и печатает содержимое %esp

Marinavo_0507

а дизассемблировать функцию и посмотреть, на какой инструкции fault, не поможет?

Julie16

Я установил размер стэка в 4000000 байт. Думаю что проблема не в этом.

Julie16

Хотя нет. Именно в этом! Все, проблема решена Сейчас будет патч.

Commandor

пока занимаешься: сделай еще понтовую вещь: file:// == smb://
хотя можешь и не делать - такое я и сам способен дописать

Julie16

А зачем это? Я что-то не очень понимаю...

eee1

нет, или сделай просто //, зачем добавить "smb"?

Julie16

А патамушта я обычно ссылки из konqueror'a копирую Ладно, сейчас сделаю

eee1

так, не слушай все что сказали люди.
ЗЫ. многие KDE не юзают. будет приятнее если есть возможность писать и smb:// и // и file://

eee1

Хотя нет. Именно в этом! Все, проблема решена Сейчас будет патч.
Во, молодец, уже работает

Julie16

Эх, подождал бы минуту
smb://braindead.hackers/pub/nettools-0.1.1a.tar.gz
Все поправлено, добавлена возможность качать с //

Makc500

а чё, z80 уже научился раздавать правильный ссылки для конквы?

Commandor

а мыльцем?

Julie16

Ага.

Julie16

Куда тебе?

Commandor

mexmat.net

Julie16

Скинул

Commandor

ща поиграюсь

eee1

еще один момент, зачем тебе libxml? только для парсинга двух-трех конфиг-файлов? Думаю простой текстовый конфиг-файл лучше.

Julie16

Тут в другом дело. Если ты посмотришь туда поглубже, то поймешь что это далеко не просто downloader. На самом деле это моя библиотека для написания клиент-серверных приложений. Просто я использовал ее часть при написании downloader, а заставлять пользователей еще и библиотеку ставить - у меня рука не поднялась. Поэтому я просто включил ее в проект.

Commandor

А че делать с Unknown parameter " client codepage', Не мешает особо, но некрасиво

Julie16

А для этого тебе нужно настроить самбу. Найди где у тебя лежит smb.conf и проверь что там есть строчки
dos charset = CP866
unix charset = utf-8
display charset = utf-8
(две последних зависят от твоей кодировки) и убери те cтрочки(client codepage = ...) на которые ругается libsmbclient.

eee1

самба 2.x и mc все еще юзал типа client codepage и character set.

Julie16

Ага. Но раз у него ругается - значит уже самба 3.

eee1

для совместимости с mc, две эти строки обычно есть в конфиги самбы 3.x

Julie16

Ааааааа.... Не знал... А оно нужно? Неужели через mc люди по сети ходят? Это же неудобно.

eee1

да, иногда mc юзаю, и мб еще другие юзают тоже
ЗЫ. если память не изменяет, то libsmbclient бывает только с самбой 3.x

Commandor

но при этом стоит самба 2.х. И она не чуствует себя сухо и комфортно без этих строк

Julie16

Ну тогда ничего нельзя сделать. Правда я могу посмотреть на предмет вывода варнингов...

Commandor

Да мне пофиг в принципе на самбу - могу и третью поставить.
Еще оно кроет матом на русские имена: cannot connect. Это тоже править конфиг самбы? Запости свой кусок

Julie16

А это как раз из-за того что у тебя не стоит unix charset/display charset. Я уже кусок приводил.

Commandor

я прежде чем написать, их убирал. ща попробую поставить третью самбу

Julie16

Ну в общем я решил эту проблему. Сейчас вышлю новую версию.

Commandor

Дай строки из конфига smb.conf о кодировке.
у меня без строк
dos charset = cp866
unix charset = koi8-r
пишет такую лажу:
<1> can not connect: smb://10.1.3.21/Video/Классик/Классик.avi, restarting
<1> can not connect: smb://10.1.3.21/Video/Классик/Классик.avi, restarting
<1> can not connect: smb://10.1.3.21/Video/Классик/Классик.avi, restarting
<1> can not connect: smb://10.1.3.21/Video/Классик/Классик.avi, restarting
...
а с ними такую:
<10> slave exited due signal, restarting
<10> slave exited due signal, restarting
<10> slave exited due signal, restarting
<10> slave exited due signal, restarting
...

Julie16

Я уже писал. Выше. Это все что у меня было связано с кодировками.

Julie16

Как ты запускаешь прогу? Только точно.

Commandor

downloader -n 1 -f "smb://10.1.3.21/Video/Классик/Классик.avi"
а в этом могут быть проблемы?

Julie16

Не могут. Но все же. В общем правильно запускаешь. Сейчас буду смотреть.

Julie16

А файлы с английскими названиями он значит качает? Тогда я даже не знаю чем помочь. Это наверное что-то в libsmbclient. Попробуй все же кодировку правильно выставить.

Commandor

downloader -n 1 -d "smb://10.1.3.21/Video"
<1> progress: 0,000000%, el.time: 0s°п&#9580;я&#9484;я&#9600;п&#9577;я&#9618;п&#9576; [Papillon]/
<1> url smb://10.1.3.21/Video/kvn_final.avi started
Ща попробую разобраться с вон теми каракулями
Блин. Они тут плохо отображаются

Landstreicher

Я так понял у вас там уже все работает, но все равно. Хочу напомнить, что libsmbclient не thread-safe. Причем разработчики это открыто заявляют. Я неоднократно наблюдал у себя как два качающих что-то разное треда засирали что-то друг другу. После долгих мучений и отладок я понял что заставить работать его в многопотчной среде невозможно, легче сделать fork. У вас эта проблема как решается?

Julie16

Разве она не thread-safe? Ты каким интерфейсов пользуешься, старым или новым? В новом все данные хранятся в одной структуре, поэтому оно вроде thread-safe. Глобальных переменных(которые и пишут и читают) я у них в коде тоже не нашел...

Landstreicher

Я использовал Perl модуль FileSys::Smbclient. Она использует старый интерфейс. Если новый thread-safe - то это хорошая новость, надо попробовать. Однако, я бы все-таки детально проверил. Что thread-safe -- это ты сам решил или где-то у них написано?
У нового интерфейса есть какие-нибудь bindings к языкам типа Perl, Python?

Julie16

Нет, я ничего по этому поводу не читал. Просто прочекал исходники. Глобальных переменных нет. Все данные хранятся в одной структуре. Что еще нужно? Если использовать одну структуру на тред - все будет в порядке.
PS: по поводу биндингов - понятия не имею
PPS: еще по поводу thread-safe: я уже скачал около терабайта инфы своим downloader. Еще ни разу не было проблем из-за thread-safe. Это о чем-нибудь говорит?

sergey_m

еще по поводу thread-safe: я уже скачал около терабайта инфы своим downloader. Еще ни разу не было проблем из-за thread-safe. Это о чем-нибудь говорит?
Ни о чём.

Julie16

Аххааа... Все мы знаем теорему о том что race condition обязательно случится... Понятное дело что теоретически это не говорит ни о чем. Но практически - говорит.

Julie16

PS: понимаешь ли, я скорее практик, нежели теоретик. Даже если samba team скажет что libsmbclient - thread-safe, то это не будет значить ровным счетом ничего. Вдруг они случайно что-то забыли сделать и подвинтить? Всегда есть риск человеческой ошибки. Поэтому самым важным для меня критерием является практика. Если я скачал терабайт данных, и все было в порядке, значит для меня это достаточный повод считать libsmbclient thread-safe.

sergey_m

Аххааа... Все мы знаем теорему о том что race condition обязательно случится...
Я не знаю такой теоремы.
Понятное дело что теоретически это не говорит ни о чем. Но практически - говорит.
Ты уверен, что в той реализации тредов, на которой ты гонял свои терабайты точки преемпции случаются в любом месте кода? Перенесешь на другую реализацию и увидишь race condition.
Это еще не всё. Ты же гонял на однопроцессорной машине?

sergey_m

Если я скачал терабайт данных, и все было в порядке, значит для меня это достаточный повод считать libsmbclient thread-safe.
Это повод считать, что при точном воспроизведении этих условий, она скачает еще один терабайт данных. Когда загрузка твоей машины будет другая, когда в сети появится PL, когда у процесса будет другой приоритет, когда будет другая реализация тредов, когда будет настоящий SMP, то программа может повести себя по-другому.

Julie16

1) Смотри пост выше.
2) Посмотрим. Будут ошибки - буду править. Уже несколько человек пользуются программой под FreeBSD. Если у них будут проблемы - они обратятся ко мне.
3) На однопроцессорной. Послушай, я прекрасно знаю все эти аргументы. Я их принимаю. Да, я пока не могу быть уверен что у меня все работает правильно. Но пока я и не могу получить ничего лучше.

Julie16

Это повод считать, что при точном воспроизведении этих условий, она скачает еще один терабайт данных.
Пока мне и этого достаточно.
когда в сети появится PL
А что это такое?
когда у процесса будет другой приоритет
это уже протестировано
когда будет другая реализация тредов
это уже проверяется
когда будет настоящий SMP
Я бы это с удовольствием проверил, но пока у меня нет такой возможности.

IvladV71

а есть возможность качать не анонимно?

Julie16

Нет пока.

Commandor

Не знаю, кто там еще будет юзать под БСД, но я пока сессия не закрыта, юзать не буду - потом буду сам встраивать перекодировки под мою кои8-р локаль. Та абракадабра, что я писал выше в кодировке utf-8, как оказалось при игре с iconv

Julie16

Ничего никуда не нужно встраивать. Этим должна заниматься самба. Настрой smb.conf.

Commandor

КАК? Все возможные кодировки перепробовал. Все равно вывод в ЮТФ. Попробую еще может быть

Julie16

Вышла новая версия программы downloader - 0.1.5
ChangeLog:
* возможность качать не анонимно.
* подготовка инфраструктуры для динамической нагрузки(если с какого-то url качается медленно, то заменяем его на url, с которого качается быстрее).
* всякая ерунда
Брать тут: smb://braindead.hackers/pub/nettools-0.1.5.tar.gz

Julie16

Вышла новая версия программы Downloader 0.2.0. Основные изменения:
* Чистка кода
* Добавлена возможность сборки для cygwin
src: smb://braindead.hackers/pub/nettools-0.2.0.tar.gz
сборка для виндов(cygwin):
Предупреждение: сборка для виндов носит экспериментальный характер. Возможны глюки. Пока работает только закачка по smb.
Оставить комментарий
Имя или ник:
Комментарий: