The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск GNU Wget 1.21"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск GNU Wget 1.21"  +/
Сообщение от opennews (?), 01-Янв-21, 10:46 
Спустя два года с момента прошлого значительного выпуска состоялся релиз GNU Wget 1.21, программы для автоматизации загрузки контента с использованием протоколов HTTP/HTTPS и FTP. В новой версии:...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=54340

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Любитель патчей (?), 01-Янв-21, 10:46 
С НГ!
Ответить | Правка | Наверх | Cообщить модератору

2. "Выпуск GNU Wget 1.21"  +/
Сообщение от A.Stahl (ok), 01-Янв-21, 11:01 
Серёга, не гони!
Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск GNU Wget 1.21"  –1 +/
Сообщение от Аноним (-), 01-Янв-21, 19:04 
Алкоголизм делает человека заторможенным.
Ответить | Правка | Наверх | Cообщить модератору

86. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (86), 06-Янв-21, 11:03 
В смысле?
Ответить | Правка | Наверх | Cообщить модератору

38. "Выпуск GNU Wget 1.21"  –4 +/
Сообщение от rvs2016 (ok), 01-Янв-21, 19:14 
> Серёга, не гони!

Но лингвисты Опеннета почему-то до сих пор не выдвинули предположения о расшифровках второй части этой фразы - ПНФ! Хотя уже почти прошёл целый первый день нового года!

Полный вариант-то звучит не СНГ, а СНГ ПНФ!

Дескать:

- С Новым годом!
- Пошёл на фиг!

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

5. "Выпуск GNU Wget 1.21"  –5 +/
Сообщение от cubit (?), 01-Янв-21, 11:30 
как сказал покойный Задорнов, эссен, по-немецки- кушать...
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

60. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от еврей (?), 02-Янв-21, 03:09 
Евреи эту хохму про СНГ на идиш рассказывали задолго до Задорнова.
Ответить | Правка | Наверх | Cообщить модератору

4. Скрыто модератором  –1 +/
Сообщение от Ноунейм (?), 01-Янв-21, 11:30 
Ответить | Правка | Наверх | Cообщить модератору

7. Скрыто модератором  +/
Сообщение от смузихлёб (?), 01-Янв-21, 13:45 
Ответить | Правка | Наверх | Cообщить модератору

13. Скрыто модератором  +/
Сообщение от Дочь Офицера (?), 01-Янв-21, 14:43 
Ответить | Правка | Наверх | Cообщить модератору

56. Скрыто модератором  –1 +/
Сообщение от НяшМяш (ok), 01-Янв-21, 23:36 
Ответить | Правка | Наверх | Cообщить модератору

57. Скрыто модератором  +12 +/
Сообщение от Led (ok), 02-Янв-21, 01:04 
Ответить | Правка | Наверх | Cообщить модератору

67. Скрыто модератором  –4 +/
Сообщение от НяшМяш (ok), 02-Янв-21, 18:51 
Ответить | Правка | Наверх | Cообщить модератору

63. Скрыто модератором  +/
Сообщение от Аноним (63), 02-Янв-21, 09:45 
Ответить | Правка | К родителю #56 | Наверх | Cообщить модератору

53. Скрыто модератором  –1 +/
Сообщение от rioko (?), 01-Янв-21, 22:49 
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

10. Скрыто модератором  –1 +/
Сообщение от Дегенератор (ok), 01-Янв-21, 14:12 
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

15. Скрыто модератором  +1 +/
Сообщение от Аноним (15), 01-Янв-21, 15:51 
Ответить | Правка | Наверх | Cообщить модератору

6. "Выпуск GNU Wget 1.21"  –4 +/
Сообщение от Аноним (6), 01-Янв-21, 12:38 
Contributions by

Vyacheslav
Вячеслав Петрищев

Maintainer: DarShit Shah

LMAO

// b.

Ответить | Правка | Наверх | Cообщить модератору

9. "Выпуск GNU Wget 1.21"  +2 +/
Сообщение от Аноним (9), 01-Янв-21, 14:03 
WTF so funny you see?
Ответить | Правка | Наверх | Cообщить модератору

8. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Тот самый (?), 01-Янв-21, 14:02 
В новой версии скрипт configure перестал сам добавлять в CFLAGS опцию -std=gnu99. А без этого оно не собирается. Так что теперь извольте сами вручную.

С Новым годом всех!
С новыми граблями!

Ответить | Правка | Наверх | Cообщить модератору

11. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Аноним (11), 01-Янв-21, 14:29 
Тебе сюда: https://savannah.gnu.org/bugs/?func=additem&group=wget
Ответить | Правка | Наверх | Cообщить модератору

25. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (25), 01-Янв-21, 18:42 
Спокойно ждём 1.21.2
Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

12. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от uis (ok), 01-Янв-21, 14:41 
>В некоторых местах в функции указывался размер непроверенных внешних строк

Вот реальная причина большинства ошибок. А не то, что там говорят хрустанутые.

Ответить | Правка | Наверх | Cообщить модератору

27. "Выпуск GNU Wget 1.21"  –2 +/
Сообщение от Аноним (-), 01-Янв-21, 18:52 
>внешних строк, передаваемых через командную строки или получаемых с внешнего хоста

Я так понимаю, это библиотечная функция для выделения памяти. Тогда не понял, что за дичь с получаемыми через командную строку или с внешнего хоста данными?

Ответить | Правка | Наверх | Cообщить модератору

32. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от sage (??), 01-Янв-21, 19:02 
Видимо, где-то использовались буферы фиксированного размера, в которые принимались данные из внешней системы без проверки длины. Ну а дальше наши любимые уязвимости через переполнение буфера.
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск GNU Wget 1.21"  +/
Сообщение от Michael Shigorinemail (ok), 01-Янв-21, 19:52 
В предыдущей сборке пакета был, например, такой патчик:

--- wget-1.10.1/src/http-ntlm.c.org     2005-10-13 15:29:07 +0300
+++ wget-1.10.1/src/http-ntlm.c 2005-10-13 15:32:16 +0300
@@ -314,7 +314,7 @@
   int domoff;  /* domain name offset */
   int size;
   char *base64;
-  char ntlmbuf[256]; /* enough, unless the host/domain is very long */
+  char *ntlmbuf;

   /* point to the address of the pointer that holds the string to sent to the
      server, which is for a plain host or for a HTTP proxy */
@@ -334,6 +334,7 @@
   default: /* for the weird cases we (re)start here */
     hostoff = 32;
     domoff = hostoff + hostlen;
+    ntlmbuf = (char *)alloca( 32 + hostlen + domlen);

     DEBUGP (("Creating a type-1 NTLM message.\n"));

@@ -437,6 +438,8 @@
       usr = user;
     userlen = strlen(usr);

+    ntlmbuf = (char *)alloca( 64 + domlen + userlen);
+
     mkhash(passwd, &ntlm->nonce[0], lmresp
#ifdef USE_NTRESPONSES
            , ntresp

http://packages.altlinux.org/ru/sisyphus/srpms/wget/patches/...
Ответить | Правка | Наверх | Cообщить модератору

64. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (64), 02-Янв-21, 11:24 
> enough, unless the host/domain is very long

Вот понимал же человек, который это писал, что может быть very long! Ну как так:(

Ответить | Правка | Наверх | Cообщить модератору

87. "Выпуск GNU Wget 1.21"  +/
Сообщение от uis (ok), 07-Янв-21, 04:04 
Выделение на стеке без ограничения длинны. Хорошо-то как...
Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

49. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Ordu (ok), 01-Янв-21, 21:18 
> Я так понимаю, это библиотечная функция для выделения памяти.

Да, библиотечная. Но она выделяет на стеке. А стек -- хрупкая штука. Во многих проектах alloca вообще под запретом, и за её использование руки отрывают.

>        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
>       when the function that called alloca() returns to its caller.
> RETURN VALUE
>       The alloca() function returns a pointer to the beginning of the allo‐
>       cated space.  If the allocation causes stack overflow, program behav‐
>       ior is undefined.

Чуешь? Тут документированный UB, и (что очень в стиле unix-way) этот UB невозможно гарантированно обойти. Вызывая alloca, ты никогда не знаешь, будет ли переполнение стека или нет. И узнать не можешь. Но alloca -- это очень быстрый способ выделить/освободить память, гораздо быстрее чем malloc. Поэтому возникает соблазн забить на потенциальные проблемы, и использовать alloca вместо malloc. И есть те, кто перед таким соблазном устоять не может.

Если выделять немного, то в принципе ничего плохого не должно случиться. Но что значит "немного"? И это ж надо проверить, так уж ли немного мы собираемся выделить? А если мы проверили, и оказалось много, то что делать?

То есть, "немного" ведь означает не больше N, где N -- известное на этапе компиляции целое число. А если мы можем написать:

char *buf = NULL;
if(size <= 256) {
    buf = alloca(size);
} else {
    die("Invalid size"); // в смысле die -- это no-return функция
}

то мы с тем же успехом можем написать и:

if(size > 256) {
    die("Invalid size");
}
char buf[256];

Тут выходит, что выделяется 256-size лишних байт, но... и чё с того? Это может иметь значение при рекурсивном вызове, но использовать alloca в рекурсивной функции может только полнейший отморозок.

То есть alloca оказывается не нужен в такой ситуации. А если size может исчисляться мегабайтами, и мы считаем что наша программа должна работать с такими size, то придётся пользовать malloc, потому как условно использовать alloca или malloc в зависимости от размера -- это то же самое, что открывать нараспашку все двери, вешая над ними транспаранты "MEMORY BUGS ARE WELCOME!". Причём, в такой ситуации, скорее всего и выигрыша по скорости не будет никакого существенного: если программа норм работает с мегабайтовыми буферами, выделенными при помощи malloc, она тем более будет норм работать с докилобайтовыми буферами, выделенными при помощи malloc.

Может можно придумать какой-нибудь use-case для alloca, когда это не будет хождениями по граблям переполнения стека AND даст прирост в скорости, но, во-первых, мне не удаётся придумать, во-вторых, это будет очень специальным случаем, и это будет раскладыванием граблей для будущих разработчиков.

Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

51. "Выпуск GNU Wget 1.21"  –1 +/
Сообщение от Аноним (11), 01-Янв-21, 21:33 
> и (что очень в стиле unix-way) этот UB невозможно гарантированно обойти

Причём бы здесь Unix way?
Да и вообще, причём здесь alloca? В C99 можно с точно таким же результатом использовать VLA.

Ответить | Правка | Наверх | Cообщить модератору

52. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 01-Янв-21, 21:55 
> Да и вообще, причём здесь alloca?

Новость не читай, сразу комментируй?

"Проведена чистка кода от использования функции alloca. В некоторых местах в функции указывался размер непроверенных внешних строк, передаваемых через командную строки или получаемых с внешнего хоста."

> В C99 можно с точно таким же результатом использовать VLA.

Можно. С тем же результатом, включая сюда и UB.

Ответить | Правка | Наверх | Cообщить модератору

65. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 02-Янв-21, 16:16 
Я-то новость прочитал, ещё б ты прочитал вопрос, на который отвечаешь… Попрубуем ещё разик: Причём здесь unix way, да и вообще unix? Аргумент, что alloca есть только в этих ваших юниксах, не канает, потому что VLA есть в стандарте языка.
Ответить | Правка | Наверх | Cообщить модератору

66. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 02-Янв-21, 16:33 
> Я-то новость прочитал, ещё б ты прочитал вопрос, на который отвечаешь… Попрубуем
> ещё разик: Причём здесь unix way, да и вообще unix?

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

Ответить | Правка | Наверх | Cообщить модератору

68. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 02-Янв-21, 19:38 
Мдя? Пяток примеров, специфичных именно для юниксов, тебе ведь не составит труда накидать?
Ответить | Правка | Наверх | Cообщить модератору

71. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 02-Янв-21, 19:52 
> Мдя? Пяток примеров, специфичных именно для юниксов, тебе ведь не составит труда
> накидать?

alloca не канает? Из мана к ней:

> CONFORMING TO
>       This function is not in POSIX.1.
>       There is evidence that the alloca() function appeared  in  32V,  PWB,
>       PWB.2,  3BSD, and 4BSD.  There is a man page for it in 4.3BSD.  Linux
>       uses the GNU version.

Если не канает, попробуй собрать пайпами цепочку команд и когда она обвалится, выяснить где собственно произошла ошибка.

Или взять пути в файловой системе, которые позволяют любые символы, даже несмотря на то, что из тысяч софта, может быть единицы могут справится с любыми символами, при том что в подавляющем большинстве случаев нет никакого смысла совать в имя файла ^C или ^M. Смысла нет, но кого колышет? Надо обязательно разложить граблей, без граблей это будет не юникс.

Локали обсуждали недавно, с их черезжопностью.

Пятый пример... Мне не сообразить сходу. Я подумаю, позже отпишу.

Ответить | Правка | Наверх | Cообщить модератору

73. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Аноним (11), 02-Янв-21, 23:39 
> alloca не канает?

Говорят, у золотых рыбок долговременная память всё ж таки работает. А вот у тебя — не особо. Перечитай тред, что ли. Те же грабли есть в стандарте языка, только называются VLA, а посему ­— нет, не канает. Неспецифично.

> попробуй собрать пайпами цепочку команд и когда она обвалится, выяснить где собственно произошла ошибка.

На сишечке — запросто (ну ладно, не очень запросто, несколько десятков строк кода понадобится написать). В шелле сложнее, да. Но покажи, где подобное реализовано лучше. Да и нужно такое бывает крайне редко.

> Или взять пути в файловой системе, которые позволяют любые символы

Ну с натяжкой это можно назвать граблями, хотя, скорее, из-за засилья рукожопов, привыкших к ограничениям вынь-доса, чем по объективным причинам. Однако напомню твой тезис:
> верить в то, что всё пойдёт хорошо, и не оставлять ни единого костылика на случай, если всё пойдёт плохо, чтобы можно было бы ошибку как-нибудь осмысленно обработать.

Где тут может вылезти ошибка, которую *невозможно обработать*? Я что-то такого не вижу.

> Локали обсуждали недавно, с их черезжопностью.

Если ты обсуждал их с голосами в своей голове, это не значит, что все анонимы тоже это слышали. Давай, рассказывай, где там возникают *ошибки, которые невозможно обработать*.

Ответить | Правка | Наверх | Cообщить модератору

74. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 02-Янв-21, 23:56 
>> alloca не канает?
> Говорят, у золотых рыбок долговременная память всё ж таки работает. А вот
> у тебя — не особо. Перечитай тред, что ли. Те же
> грабли есть в стандарте языка, только называются VLA, а посему ­—
> нет, не канает. Неспецифично.

Ты читать умеешь? Изобретена alloca в unix. vla изобрели резко позже по мотивам этой самой alloca.

>> попробуй собрать пайпами цепочку команд и когда она обвалится, выяснить где собственно произошла ошибка.
> На сишечке — запросто (ну ладно, не очень запросто, несколько десятков строк
> кода понадобится написать). В шелле сложнее, да. Но покажи, где подобное
> реализовано лучше.

Где-где, в rust'е вестимо. Когда я пишу file.lines().map(...).filter(...).fold(...).бла-бла-бла, я всегда могу отследить источник ошибки.

> Да и нужно такое бывает крайне редко.

Да, "зелен виноград". Это не нужно, пока ты не начинаешь писать bash-портянки, пытаясь выдавать осмысленные сообщения об ошибках.

>> Или взять пути в файловой системе, которые позволяют любые символы
> Ну с натяжкой это можно назвать граблями, хотя, скорее, из-за засилья рукожопов,

Хаха. Попробуй поработать с путями из шелла, попробуй пописать скрипты, которые будут работать с любыми именами файлов. Может после этого у тебя пропадёт желание говорить о жопах с руками.

>> верить в то, что всё пойдёт хорошо, и не оставлять ни единого костылика на случай, если всё пойдёт плохо, чтобы можно было бы ошибку как-нибудь осмысленно обработать.
> Где тут может вылезти ошибка, которую *невозможно обработать*? Я что-то такого не
> вижу.

Попробуй из шелла поработать с путями. Где-то на просторах интернета был чувак, который исследовал способы работать с путями из шелла, и его вердикт был -- unix suxx.

>> Локали обсуждали недавно, с их черезжопностью.
> Если ты обсуждал их с голосами в своей голове, это не значит,
> что все анонимы тоже это слышали. Давай, рассказывай, где там возникают
> *ошибки, которые невозможно обработать*.

https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02...

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

Но когда общесистемная хрень -- локали -- проектируются таким же образом, причём без единой задней мысли предоставить клиентскому коду, допустим, стек локалей, куда можно сделать push(locale) а потом pop(). То есть вообще просто взяли, присобачили глобал-стейт к каждому процессу, и хрен с ними со всеми потенциальными проблемами -- это либо полнейшая отмороженность, либо просто отсутствие мозга.

Ответить | Правка | Наверх | Cообщить модератору

76. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 03-Янв-21, 02:41 
> Ты читать умеешь? Изобретена alloca в unix. vla изобрели резко позже по мотивам этой самой alloca.

Умею, а что, есть сомнения? Раз притащили в стандарт, значит не посчитали вредным. Могли и не тащить.

> Где-где, в rust'е вестимо.

А rust разве в юниксах не работает?

> Это не нужно, пока ты не начинаешь писать bash-портянки, пытаясь выдавать осмысленные сообщения об ошибках.

Я не пишу bash-портянки. Я пишу скрипты на POSIX shell. И в них почему-то очень редко встречаются конвейеры более чем из двух-трёх команд, причём источником ошибки, как правило, может быть только одна из них. Смею предположить, это не потому что я пишу только хелловорлды, а потому что худо-бедно научился хорошему стилю скриптинга.

> Попробуй поработать с путями из шелла, попробуй пописать скрипты, которые будут работать с любыми именами файлов.

Да я уже немало лет этим занимаюсь (последний год меньше, но, вроде бы, навык пока не утратил).

> Где-то на просторах интернета был чувак, который исследовал способы работать с путями из шелла, и его вердикт был -- unix suxx.

Много я таких чуваков перевидал. Чего далеко ходить, тут половина анонимусов такие же. Не осилят чего-нибудь и начинают вопить про suxx.

> https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02...

wm4 в своём репертуаре. Чем писать эту хрень, мог бы чуть погуглить, узнать про существование C.UTF-8 и не позориться.

> Локаль как глобальное состояние -- это то, за что изобретателям её нужно оторвать руки.

А за концепцию окружения не надо? То ж самое ведь. Подумали только на пяток ходов вперёд, а не на десять. Бывает. Но ты так и не объяснил, где тут *ошибка, которую невозможно обработать*.

Ответить | Правка | Наверх | Cообщить модератору

77. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 03-Янв-21, 03:29 
>> Ты читать умеешь? Изобретена alloca в unix. vla изобрели резко позже по мотивам этой самой alloca.
> Умею, а что, есть сомнения? Раз притащили в стандарт, значит не посчитали
> вредным. Могли и не тащить.

Наличие чего-либо в стандарте на C -- это не показатель безвредности. Там гумна выше крыши.

>> Где-где, в rust'е вестимо.
> А rust разве в юниксах не работает?

Если что-то работает в unix -- это не значит, что оно часть unix. MSO можно в linux запустить, и чо?

>> Это не нужно, пока ты не начинаешь писать bash-портянки, пытаясь выдавать осмысленные сообщения об ошибках.
> Я не пишу bash-портянки. Я пишу скрипты на POSIX shell.

Это разные названия для одного и того же.

> них почему-то очень редко встречаются конвейеры более чем из двух-трёх команд,
> причём источником ошибки, как правило, может быть только одна из них.
> Смею предположить, это не потому что я пишу только хелловорлды, а
> потому что худо-бедно научился хорошему стилю скриптинга.

Хахахахах. "хороший стиль скриптинга"! Лол. Ты сделал мой день. Да будет тебе известно, что хороший стиль скриптинга -- не писать скриптов.

>> Попробуй поработать с путями из шелла, попробуй пописать скрипты, которые будут работать с любыми именами файлов.
> Да я уже немало лет этим занимаюсь (последний год меньше, но, вроде
> бы, навык пока не утратил).

И если ты не знаешь проблем с путями, значит навыка и не было никогда.

>> Локаль как глобальное состояние -- это то, за что изобретателям её нужно оторвать руки.
> А за концепцию окружения не надо?

Нет. Концепция окружения позволяет прокидывать в процессы данные, которые в целом read-only для процесса. Их глобальность для процесса не влияет.

> То ж самое ведь. Подумали только на пяток ходов вперёд, а не на десять.

На фоне всего остального, я бы сказал, не "подумали", а повезло.

> Бывает. Но ты так и не объяснил, где тут *ошибка, которую невозможно обработать*.

Я выше дал ссылку. wm4 описывает ошибку, которую невозможно обработать. Весь его баттхёрт из этой ошибки.

> wm4 в своём репертуаре. Чем писать эту хрень, мог бы чуть погуглить, узнать про существование C.UTF-8 и не позориться.

И чем бы ему это помогло?

Ответить | Правка | Наверх | Cообщить модератору

78. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 03-Янв-21, 13:56 
> Наличие чего-либо в стандарте на C -- это не показатель безвредности.

Это показатель неспецифичности для Unix (третий раз повторяю, больше не буду).

> Если что-то работает в unix -- это не значит, что оно часть unix. MSO можно в linux запустить, и чо?

А bash можно в винде запустить. И там будет такая же фигня с конвейерами. И чё?
Выбирай инструмент, которые подходит для твоих целей. В шелле сделано разумно: покрывает 99% потребностей без чрезмерного усложнения.

> Это разные названия для одного и того же.

Нет. Bash и POSIX shell — разные вещи. Портянка и скрипт — тоже разные вещи.

> хороший стиль скриптинга -- не писать скриптов.

Желаю тебе освоить хороший стиль комментирования.

> если ты не знаешь проблем с путями, значит навыка и не было никогда.

Я знаю проблемы, которые возникают у нубов. Как они решаются — тоже знаю. Мои навыки устраивают работодателей, а твоё мнение на сей счёт меня не волнует.

> Концепция окружения позволяет прокидывать в процессы данные, которые в целом read-only для процесса. Их глобальность для процесса не влияет.

Не распарсил.

> wm4 описывает ошибку, которую невозможно обработать. Весь его баттхёрт из этой ошибки.

Там слишком много баттхёрта, чтобы найти собственно ошибку. Можно TL;DR?

> И чем бы ему это помогло?

Не стонал бы по поводу того, что локаль C не UTF-8, и что UTF-8 нет в POSIX, а понял бы, что эту проблему активно решают, и решение, глядишь, в обозримом будущем докатится и до POSIX. Я понимаю, что ты мне не ради этого ссылку давал, но там 90% — вот эти вот глупые страдашки.

Ответить | Правка | К родителю #77 | Наверх | Cообщить модератору

80. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 03-Янв-21, 19:01 
>> Концепция окружения позволяет прокидывать в процессы данные, которые в целом read-only для процесса. Их глобальность для процесса не влияет.
> Не распарсил.

Попробуй пописать на чём-нибудь кроме bash. Я б рекоменовал функциональщину, тогда проблем парсить эти вещи не будет.

> эту проблему активно решают, и решение, глядишь, в обозримом будущем докатится и до POSIX

Хаха. Проблема с программой есть сейчас, а не через 20 лет.

Ответить | Правка | К родителю #78 | Наверх | Cообщить модератору

81. "Выпуск GNU Wget 1.21"  –1 +/
Сообщение от Michael Shigorinemail (ok), 03-Янв-21, 19:05 
Здрасьте, а чем Вам конвейер не функциональщина? (и, кстати, любимая грабелька с ... | ...; var=val; ... и последующей потерей этой var, которая оказалась в другом экземпляре интерпретатора -- здесь как раз фича "readonly для процесса")
Ответить | Правка | К родителю #80 | Наверх | Cообщить модератору

83. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 03-Янв-21, 19:17 
Функциональщина, да. Но она ему не помогает понимать глобальное ридонли состояние. Поэтому лучше не элементы функциональщины использовать, а взять и освоить функциональное программирование в целом, научится думать в этих терминах.
Ответить | Правка | К родителю #81 | Наверх | Cообщить модератору

84. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 03-Янв-21, 21:11 
> Попробуй пописать на чём-нибудь кроме bash.

Это последний мой ответ тебе, поскольку ты всё равно не утруждаешь себя их чтением. Я не пишу на bash.

Ответить | Правка | К родителю #80 | Наверх | Cообщить модератору

85. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 03-Янв-21, 22:52 
>> Попробуй пописать на чём-нибудь кроме bash.
> Это последний мой ответ тебе, поскольку ты всё равно не утруждаешь себя
> их чтением.

Чё серьёзно?

> Я не пишу на bash.

Продолжай и дальше заниматься этим буквоедством, я уверен люди к тебе потянутся со временем.

Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

75. "Выпуск GNU Wget 1.21"  +2 +/
Сообщение от Хулиган (?), 03-Янв-21, 00:01 
>> Я-то новость прочитал, ещё б ты прочитал вопрос, на который отвечаешь… Попрубуем
>> ещё разик: Причём здесь unix way, да и вообще unix?
> Потому что это вообще очень по юниксовому -- верить в то, что
> всё пойдёт хорошо, и не оставлять ни единого костылика на случай,
> если всё пойдёт плохо, чтобы можно было бы ошибку как-нибудь осмысленно
> обработать.

Нормальное ты себе определение придумал. Только зачем эту дичь другим впаривать заправду?

Ответить | Правка | К родителю #66 | Наверх | Cообщить модератору

82. "Выпуск GNU Wget 1.21"  +/
Сообщение от Michael Shigorinemail (ok), 03-Янв-21, 19:08 
>>> ещё разик: Причём здесь unix way, да и вообще unix?
>> Потому что это вообще очень по юниксовому -- верить в то, что
>> всё пойдёт хорошо, и не оставлять ни единого костылика на случай,
>> если всё пойдёт плохо, чтобы можно было бы ошибку как-нибудь осмысленно
>> обработать.
> Нормальное ты себе определение придумал.

Ну вообще-то это не он придумал.

---
I remarked to Dennis that easily half the code I was writing in Multics was error recovery code. He said, "We left all that stuff out of Unix. If there's an error, we have this routine called panic, and when it is called, the machine crashes, and you holler down the hall, 'Hey, reboot it.'"
--- Tom Van Vleck

(здесь Dennis -- это Ritchie)

Ответить | Правка | Наверх | Cообщить модератору

88. "Выпуск GNU Wget 1.21"  +/
Сообщение от uis (ok), 07-Янв-21, 04:09 
> Можно. С тем же результатом, включая сюда и UB.

Явное выделение на стеке? UB!
Временная переменная функции? UB!
Сохранение регистров и вызов функции? UB!!!11

Стек Шрёдингера

Ответить | Правка | К родителю #52 | Наверх | Cообщить модератору

91. "Выпуск GNU Wget 1.21"  +/
Сообщение от Ordu (ok), 07-Янв-21, 05:36 
>> Можно. С тем же результатом, включая сюда и UB.
> Явное выделение на стеке? UB!
> Временная переменная функции? UB!
> Сохранение регистров и вызов функции? UB!!!11
> Стек Шрёдингера

В целом да. C он вообще такой. Разные другие языки выделяют память под стек динамически, или на этапе компиляции вычисляют необходимый размер стека, или разделяют стек на два: control-stack и data-stack. В C же принято полагаться на "авось". Это даже работает в большинстве случаев. Но выделение памяти динамического размера на стеке -- это явно целенаправленная попытка выйти за границы применимости этого "авось".

Ответить | Правка | Наверх | Cообщить модератору

92. "Выпуск GNU Wget 1.21"  +/
Сообщение от uis (ok), 12-Янв-21, 20:58 
> Разные другие языки выделяют память
> под стек динамически

man mmap
См. MAP_STACK. Достаточно динамически

>или на этапе компиляции вычисляют необходимый размер стека

Implementation-specific. В данном случае это к компилятору.

> или разделяют стек на два: control-stack и data-stack

Implementation-specific. Кстати, есть архитектуры двумя с "аппаратными" стеками. Эльбрусы, например.

> В C же
> принято полагаться на "авось".

В Си, если программа чего-то не делает, то считается, что программисту виднее.

> Но
> выделение памяти динамического размера на стеке -- это явно целенаправленная попытка
> выйти за границы применимости этого "авось".

Стек весь "авось". Везде.

Ответить | Правка | Наверх | Cообщить модератору

14. "Выпуск GNU Wget 1.21"  –4 +/
Сообщение от Аноним (14), 01-Янв-21, 15:30 
Вот где годнота - https://github.com/otavio/rsget
Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск GNU Wget 1.21"  +4 +/
Сообщение от Chromiumemail (ok), 01-Янв-21, 16:02 
Hey, buddy, I think you've got the wrong door. The Rust club is two blocks down!
Ответить | Правка | Наверх | Cообщить модератору

20. "Выпуск GNU Wget 1.21"  –1 +/
Сообщение от Аноним (11), 01-Янв-21, 17:26 
Сам юзай этот хелловорлд.
Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

22. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (22), 01-Янв-21, 17:43 
Годнота может быть написано только на Го https://github.com/melbahja/got
Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

26. Скрыто модератором  +1 +/
Сообщение от Аноним (25), 01-Янв-21, 18:47 
Ответить | Правка | Наверх | Cообщить модератору

31. Скрыто модератором  +/
Сообщение от Аноним (-), 01-Янв-21, 19:02 
Ответить | Правка | Наверх | Cообщить модератору

34. Скрыто модератором  +/
Сообщение от Аноним (34), 01-Янв-21, 19:03 
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

36. Скрыто модератором  –2 +/
Сообщение от Аноним (-), 01-Янв-21, 19:08 
Ответить | Правка | Наверх | Cообщить модератору

43. Скрыто модератором  –3 +/
Сообщение от банан (?), 01-Янв-21, 20:24 
Ответить | Правка | Наверх | Cообщить модератору

44. "Выпуск GNU Wget 1.21"  –1 +/
Сообщение от Аноним (-), 01-Янв-21, 20:29 
Вы что, совсем? А как же безопасность?
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

46. "Выпуск GNU Wget 1.21"  –2 +/
Сообщение от Аноним (46), 01-Янв-21, 20:37 
В Го безопасности сильно больше чем в Храсте. Да даже побольше чем в node.js.
Ответить | Правка | Наверх | Cообщить модератору

62. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Аноним (-), 02-Янв-21, 07:18 
Кто-то успел уже пожаловаться автору программы и он изменил название свое программы с govno на got. Я бы на месте разработчика не поддавался бы на провокации.
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

93. "Выпуск GNU Wget 1.21"  +/
Сообщение от uis (ok), 12-Янв-21, 21:00 
got? Global Offset Table?
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

28. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (-), 01-Янв-21, 18:55 
Растофаны никак не уймутся.
Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

16. "Выпуск GNU Wget 1.21"  –4 +/
Сообщение от Аноним (16), 01-Янв-21, 15:53 
> Повышены требования к версии библиотеки gettext (0.19.3+).

Извините, но --diable-nls всегда и везде, никому это ненужно.

Ответить | Правка | Наверх | Cообщить модератору

18. "Выпуск GNU Wget 1.21"  –3 +/
Сообщение от Аноним (18), 01-Янв-21, 16:25 
Вот кстати да, приятно видеть адеквата в интернете. Ну это до тех пор пока твоё ПО не на китайском/испанском в оригинале, там конечно другие песни начинаются.
Ответить | Правка | Наверх | Cообщить модератору

58. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (58), 02-Янв-21, 01:40 
> ПО  на китайском/испанском в оригинале,

Первый раз вообще слышу что такое бывает, разве что предположу что такое ПО скорее всего не нужно.

Ответить | Правка | Наверх | Cообщить модератору

19. "Выпуск GNU Wget 1.21"  +/
Сообщение от EPIC (?), 01-Янв-21, 17:22 
wget2 еще не довели до ума?
Ответить | Правка | Наверх | Cообщить модератору

89. "Выпуск GNU Wget 1.21"  +/
Сообщение от uis (ok), 07-Янв-21, 04:17 
Хз. Есть ещё aria2
Ответить | Правка | Наверх | Cообщить модератору

21. "Выпуск GNU Wget 1.21"  –5 +/
Сообщение от Аноним (22), 01-Янв-21, 17:39 
Гораздо лучше чем curl от Васяна.
Ответить | Правка | Наверх | Cообщить модератору

23. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (18), 01-Янв-21, 18:01 
Я, конечно, догадываюсь, что это был сарказм, но программы просто решают несколько разные задачи. Wget эта такая скачивалка сайтов (think teleport pro) и больше от неё ничего не требуется.

Хотя, как по мне, если нужен менеджер закачек, лучше бы aria2 пилили -- в ней до сих пор скачивание торрентов поломано, все остальные клиенты уже напихали костылей. Да и с раздачей нескольких хешей одновременно говорят проблемы.

Ответить | Правка | Наверх | Cообщить модератору

24. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (18), 01-Янв-21, 18:23 
Я догадываюсь, почему на неё забили, с такими то пользователями https://github.com/aria2/aria2/issues/1708

Но это могли бы и исправить. Специально нашёл

Exception caught
Exception: [bittorrent_helper.cc:276] errorCode=26 Detected directory traversal directive in *dirname*

https://github.com/aria2/aria2/issues/1131

Ответить | Правка | Наверх | Cообщить модератору

33. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (34), 01-Янв-21, 19:03 
wget скачивалка сайтов? Вот это поворот.
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

37. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (18), 01-Янв-21, 19:09 
Я тоже удивился, когда узнал это (на самом деле нет). При этом, оно плохо справляется со своей основной задачей, httrack лучше. Ну, это считается за менеджер загрузок, но по факту из ценного функционала там только скачивание сайтов (не очень удобное) и для скачивания ссылок aria2 намного предпочтительнее. Видимо, из-за того, что по устаревшим представлениям о сайтах писали.
Ответить | Правка | Наверх | Cообщить модератору

47. "Выпуск GNU Wget 1.21"  –4 +/
Сообщение от Аноним (46), 01-Янв-21, 20:40 
…httrack…, чувак, ты из какой-то параллельной реальности wget у тебя сайты качать. А гвозди палкой забивать. curl наверно ядро собирать.
Ответить | Правка | Наверх | Cообщить модератору

41. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 01-Янв-21, 20:19 
Прикинь, да?

$ apropos wget
wget (1)             - The non-interactive network downloader.

А если ман откроешь, ваще упадёшь:

       Wget can follow links in HTML, XHTML, and CSS pages, to create local
       versions of remote web sites, fully recreating the directory structure
       of the original site.  This is sometimes referred to as "recursive
       downloading."  While doing that, Wget respects the Robot Exclusion
       Standard (/robots.txt).  Wget can be instructed to convert the links in
       downloaded files to point at the local files, for offline viewing.

Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

48. "Выпуск GNU Wget 1.21"  –1 +/
Сообщение от Аноним (46), 01-Янв-21, 20:43 
wget это просто curl здорового человека не надо тут грязи.
Ответить | Правка | Наверх | Cообщить модератору

50. "Выпуск GNU Wget 1.21"  –1 +/
Сообщение от Аноним (11), 01-Янв-21, 21:20 
Это wget 2 пытается им стать. Как выйдет — поглядим, насколько успешно.
Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Алеша (?), 01-Янв-21, 22:59 
> wget это просто curl здорового человека не надо тут грязи.

открой уже ман по вгету что ли. ты и так уже тонну ереси написал, а все продолжаешь гнуть свое.
wget - просто качалка файлов. и он таки может целиком (рекурсивно) качать сайты, там есть функция рекурсивного зеркалирования (ключи -r -m и т.д.).
curl - утилита для полноценной работы по протоколу http, умеет в т.ч. обрабатывать формы, отправлять данные НА СЕРВЕР и вообще почти все, что умеет протокол. и качание файлов это лишь ничтожная часть функционала.
именно по этой причине curl несколько сложен для обывателя, вот им и мерещится в wgete аналог, хотя это совершенно разные утилиты как по предназначению, так и по задачам решаемым.

Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

59. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 02-Янв-21, 02:00 
> умеет в т.ч. обрабатывать формы, отправлять данные НА СЕРВЕР

Ну это-то, положим, и wget умеет, если оно POST-запросом делается. Другое дело, что curl умеет вообще любые типы запросов. И помимо HTTP и FTP ещё пару десятков протоколов знает.

Ответить | Правка | Наверх | Cообщить модератору

90. "Выпуск GNU Wget 1.21"  +/
Сообщение от uis (ok), 07-Янв-21, 04:19 
wget --mirror
Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

42. "Выпуск GNU Wget 1.21"  +2 +/
Сообщение от Аноним (42), 01-Янв-21, 20:21 
И что они даже поддержку FTP не удалили? Как они это сумели? Откуда финансирование его поддержки взяли?
Ответить | Правка | Наверх | Cообщить модератору

45. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (46), 01-Янв-21, 20:34 
Free Software Foundation дало денег.
Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск GNU Wget 1.21"  +/
Сообщение от EPIC (?), 01-Янв-21, 23:20 
lftp лучше.
Ответить | Правка | К родителю #42 | Наверх | Cообщить модератору

61. "Выпуск GNU Wget 1.21"  +/
Сообщение от Nika (??), 02-Янв-21, 03:35 
Как изменить имя ,передаваемое при соединении?
Ответить | Правка | Наверх | Cообщить модератору

70. "Выпуск GNU Wget 1.21"  +1 +/
Сообщение от Michael Shigorinemail (ok), 02-Янв-21, 19:51 
> Как изменить имя ,передаваемое при соединении?

-O

Ответить | Правка | Наверх | Cообщить модератору

72. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (72), 02-Янв-21, 21:05 
Хм... https://packages.debian.org/sid/wget2 (GNU Wget2 is the successor of GNU Wget). И чем пользоваться теперь?
Ответить | Правка | Наверх | Cообщить модератору

79. "Выпуск GNU Wget 1.21"  +/
Сообщение от Аноним (11), 03-Янв-21, 14:23 
Currently GNU Wget2 is being developed.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру