@dlangru

Страница 212 из 719
Denis
11.07.2017
10:26:36
исключение это неплохо, если его сразу отловить - тогда оно не сильно тормозит

Pavel
11.07.2017
10:26:47
Ну кидается Resource temporary not available, что логично

Denis
11.07.2017
10:27:21
Я бы нашёл доку за 1989 год про сокеты и серверы и сделал как там. безо всяких тредов

Google
Denis
11.07.2017
10:27:36
Pavel
11.07.2017
10:27:51
В обычном си более элегантно сделано, просто выставляется в error флаг что на сокете нету данных, его можно быстренько проверить и идти дальше.

Я бы нашёл доку за 1989 год про сокеты и серверы и сделал как там. безо всяких тредов
Скоро выложу бенчмарк трех способов хендлинга сокетов :) Надеюсь на выходных будет готово.

Denis
11.07.2017
10:28:58
да, будет интересно взглянуть

только —build=release не забудь

Pavel
11.07.2017
10:29:59
Там цифр не генерится как таковых, просто можно тремя способами поднять сервер и к нему послать запросов через ab

И что очень забавно, у меня получилось что треды работают очень даже сравнимо с селектом и файберами. Где-то на 20% медленнее.

Denis
11.07.2017
10:31:17
дык это пока тредов мало

сколько ядер в проце?

Pavel
11.07.2017
10:34:10
4

Denis
11.07.2017
10:46:51
Значит без тредов работает в 4 раза быстрее

)

Dmitry
11.07.2017
11:04:49
Где для винды взять следующие либы? Warning 2: File Not Found libssl32.lib Warning 2: File Not Found libeay32.lib В Win32 OpenSSL v1.1.0f их нет

Google
Maxim
11.07.2017
11:07:42
можно самому сделать, можно у vibe.d позаимствовать)

https://github.com/rejectedsoftware/vibe.d/tree/master/lib/win-i386 — это вот для dmd

Dmitry
11.07.2017
11:09:33
о спасибо

libssl32.lib там не вижу

libeay32.dll а нужен lib

Maxim
11.07.2017
11:11:42
ну там же lib для них лежат

или тебе нужна статическая линковка?

Dmitry
11.07.2017
11:12:23
видимо статическая мне для http://code.dlang.org/packages/requests

Maxim
11.07.2017
11:14:26
короче, берешь из vibe ssl.lib и eay.lib, а в каталог с .exe кладешь ssleay32.dll и libeay32.dll, все должно взлететь

ну или, если есть конкретные DLL, можно с помощью implib сделать для них .lib

ты, кстати, чем проект собираешь?

Dmitry
11.07.2017
11:16:25
dub

у тебя нет случайно готовых уже?

Maxim
11.07.2017
11:16:41
компилятор какой? dmd или ldc?

Dmitry
11.07.2017
11:16:44
dmd

Dmitry
11.07.2017
11:19:54
угу, скомпилилось

спасибо

Так, а на скрине выше мне форм-дата нужно отправить чтобы куки получить поулчается?

вот тут

Google
Dmitry
11.07.2017
11:24:29


Стоило убрать вайб из зависимостей, как стало падать

Maxim
11.07.2017
11:26:13
а .lib в зависимостях указал?

Dmitry
11.07.2017
11:26:51
это в app.d надо?

Maxim
11.07.2017
11:27:54
можешь в dub.json добавить "sourceFiles-windows-x86-dmd": ["path-to/ssl.lib", "path-to/eay.lib"],

Dmitry
11.07.2017
11:28:39
а pragma(lib, "ssl"); не тоже самое делает?

Maxim
11.07.2017
11:29:09
по идее, то же самое, но я бы в dub.json засунул бы для унификации)

а то так рассуешь зависимости по исходникам, потом сиди вспоминай, от чего проект зависит

хотя, конечно, всегда есть grep, но лучше все хранить в одном месте)

Dmitry
11.07.2017
11:30:28
ну пока у меня тут понять вообще можно будет сайт спарсить или нет

пока проект игрушечный

через pragma заработало

Maxim
11.07.2017
11:32:21
обычно эта бывает так: — ну пока проект маленький, можно и так; — ну сейчас нужно отдебажить, потом уже красоту наводить; — ну сейчас сроки поджимают, новую фичу сделаю, потом отрефакторю; — черт, какого хрена тут творится?

так что, с самого начала нужна дисциплина)

Dmitry
11.07.2017
11:33:18
так, а дальше то мне auto content = postContent("https://scihub.copernicus.eu/dhus//login", queryParams("login_username", "Suliman", "login_password", "123")); отправлять чтобы куки получить?

Maxim
11.07.2017
11:33:58
подозреваю, queryParams — это get, а тебе нужно отправить post

Dmitry
11.07.2017
11:35:28
https://github.com/ikod/dlang-requests точно get ?

по доке вроде бы пост или ошибсюсь?

блин, это походу вообще forma-data

Maxim
11.07.2017
11:36:55
обычно под queryParams подразумевают именно параметры в адресе, а тебе нужно передать параметры в POST

Google
Maxim
11.07.2017
11:37:10
дай ссылку на страницу логина

Dmitry
11.07.2017
11:37:35
https://scihub.copernicus.eu/dhus/#/home

Maxim
11.07.2017
11:43:34
короче, теле логин и пароль нужно передать в форме Content-Type: application/x-www-form-urlencoded

т.е. эти queryParams должны передаваться в теле POST запроса

только меня смущает заголовок Authorization: Basic MTIzOjEyMw==, что-то тут нечисто)

Dmitry
11.07.2017
11:44:26
а форма это типа отдельная сущность?

а что может быть?

Maxim
11.07.2017
11:45:46
там могут быть дополнительные проверки)

короче, попробуй, посмотри, что тебе сервер ответит

Admin
ERROR: S client not available

Dmitry
11.07.2017
11:46:50
так а тип данных "MultipartForm" это что-то отличающееся от гет и пост?

Maxim
11.07.2017
11:52:14
ты с протоколом http знаком?

Dmitry
11.07.2017
11:53:07
видимо не достаточно хорошо

как понимаю Форма может быть как пост так и гет

Maxim
11.07.2017
11:53:58
при отправке формы может генерироваться как post, так и get запрос

при get параметры формы передаются прямо в url после знака ? разделенные &

при post они передаются в теле запроса в форме application/x-www-form-urlencoded либо, если есть бинарные данные, multipart/form-data, от этого зависит формат тела post запроса

Dmitry
11.07.2017
11:57:22
В итог ругается на неправильный логин-пароль в ответе, хотя их вроде бы правильно указал...

Maxim
11.07.2017
11:58:20
судя по всему, каким-то образом еще проверяется Authorization: Basic

Dmitry
11.07.2017
11:59:16
м... а в какую сторону хотя бы думать?

Google
Maxim
11.07.2017
11:59:36
лезть на страницу и смотреть, что там происходит при логине)

Dmitry
11.07.2017
11:59:52
О, это логин-пароль в base64

Maxim
11.07.2017
11:59:53
ну, если конкретнее, там вызывается js функция login()

ну, значит, это простая http-аутентификация)

Dmitry
11.07.2017
12:01:50
блин, я туплю — что еще можно попробовать сделать чтобы можно было с ресурсом поработать

Maxim
11.07.2017
12:02:41
в каком плане?

Dmitry
11.07.2017
12:03:03
ну авторизоваться и дальше запросы туда слать

мне оттуда нужно данные тянуть

Maxim
11.07.2017
12:04:17
ну что, передаешь логин и пароль + http basic auth

получаешь куки, и погнал)

Dmitry
11.07.2017
12:05:38
запрос для базовой авторизации отдельно делать? rq.authenticator = new BasicAuthentication("user", "passwd");

MultipartForm form; form.add(formData("login_username", "Suliman")); form.add(formData("login_password", "123")); auto content = postContent("https://scihub.copernicus.eu/dhus/login", form); writeln("Output:"); writeln(content);

Maxim
11.07.2017
12:07:47
запрос для базовой авторизации — это заголовок, который ты должен добавить в POST запрос с логином и паролем

Dmitry
11.07.2017
12:09:32
блин, дико туплю, не могу понять ка к форме заголовко добавить

Maxim
11.07.2017
12:09:55
не к форме, а к запросу, это зависит от того, чем ты пользуешься)

как в dlang-requests это делается, я не знаю)

Denis
11.07.2017
12:49:11
Я правильно понимаю что в C такая конструкция значит NOOP ? #define SPI_push() ((void) 0)

Maxim
11.07.2017
12:50:38
вроде да)

Denis
11.07.2017
13:00:29
ок спс

Andrey
11.07.2017
15:24:08
запрос для базовой авторизации отдельно делать? rq.authenticator = new BasicAuthentication("user", "passwd");
навскидку: https://pastebin.com/JEDuyyE9 через std.net.curl. надо просто при логине добавлять заголовок Authorization: "Basic " ~ base64("login:password")

Dmitry
11.07.2017
15:24:54
Ок спасибо, завтра утром попробую

Буду дальше внедрять Ди где только можно..))

Страница 212 из 719