
Andrey
14.07.2017
09:01:25
Эти наши похапе еще и компилить умеют в рантайме)

Denis
14.07.2017
09:01:41
Нашли чем хвастаться

Andrey
14.07.2017
09:02:10
Именно)

Denis
14.07.2017
09:06:28
Проверил перегрузку "»" - и правда, компилится. Готов поклясться что не было этого раньше.

Google

Dmitry
14.07.2017
09:12:52
Ребят, подскажите, как мне имя файла выкусить
https://regex101.com/r/vO1LVS/1
мне нужно "SMAP_L3_SM_P_E_20170711_R15060_001.h5" извлечь

Denis
14.07.2017
09:17:30

Dmitry
14.07.2017
09:18:00
а как ты из html будешь ими выкусывать? O.o

Denis
14.07.2017
09:18:01
тут ещё нюанс в том, что http не оперирует файлами, как и html
единственое место где упоминается файл это тэг с закладкой #типа_такой, и то там по случайности оно осталось в стандарте, видимо
эти вот слэши в имени для http или html ничего не значат
так что нельзя думать что это файлы там на той стороне)

Dmitry
14.07.2017
09:22:50
Все, мне Андрей Асякин подсказал)

Denis
14.07.2017
09:23:20
А потом удивляетесь что зарплаты маленькие)

Maxim
14.07.2017
09:28:52

Dmitry
14.07.2017
09:29:24
угу

Denis
14.07.2017
09:29:40
ну и с вероятностью 90% там будет неправильная регулярка, потмоу что html плохо так парсится

Google

Denis
14.07.2017
09:30:04
для html/xml есть специальные парсеры типа как для JSON

Maxim
14.07.2017
09:30:26
а есть простые регулярки, которые покрывают 90% потребностей)

Denis
14.07.2017
09:30:53
а потом начнётся 3 акт драмы ПОТРЕБНОСТИ БИЗНЕСА

Dmitry
14.07.2017
09:30:55
у меня там документ примитивнейший был и из него тока имя файла нужно было
вот так например
string s = `<tr class="odd"><td class="indexcolicon"><a
href="SMAP_L3_SM_P_E_20170711_R15060_001.h5"><img src="/theme/icons/hdf.png"
alt="[ ]" /></a></td><td class="indexcolname"><a
href="SMAP_L3_SM_P_E_20170711_R15060_001.h5">SMAP_L3_SM_P_E_20170711_R15060_001.h5</a></td><td
class="indexcollastmod">2017-07-12 14:28 </td><td
class="indexcolsize">282M</td></tr>`;
int main(string[] args)
{
foreach (m; s.matchAll(`<a\s+href="(SMAP_[^"]+)"`))
{
writeln(m[1]);
}
return 0;
}

Denis
14.07.2017
09:31:25

Dmitry
14.07.2017
09:31:37
не, там только имя мняется
остальная структура неизменна

Denis
14.07.2017
09:31:54

Dmitry
14.07.2017
09:32:07
ну блин, в 99% меняться не будет

Denis
14.07.2017
09:32:10
она неизменна пока на той стороне кодер не захочет подкрутить что-то ручками
Ой всё, устал

Maxim
14.07.2017
09:32:42
@ahdenchik говниться по любому поводу устал?)

Denis
14.07.2017
09:32:53
Молодёжь пошла не та и т.п.

Maxim
14.07.2017
09:33:07
снобизм, скорее)

Denis
14.07.2017
09:33:40
Ну я когда на стороне работодателя был ясно видел что говнокодить дороже чем нормально кодить. Через месяц сайт поменяется и начнутся пляски с бубном.

Dmitry
14.07.2017
09:34:08
тогда и парсер DOM может сломаться
гарантий никаких нет

Denis
14.07.2017
09:34:58

Google

Denis
14.07.2017
09:35:10
так то и на компилятор гарантий нет никаких

Maxim
14.07.2017
09:35:23
если поменяется DOM, тебе все равно придется идти на страницу и смотреть, в каком элементе DOM теперь лежит нужная тебе информация)

Denis
14.07.2017
09:35:26
https://github.com/Bystroushaak/DHTMLParser вон чо

Dmitry
14.07.2017
09:35:45
Я парсер Adom'a обычно юзал

Denis
14.07.2017
09:35:46
Но лень же погуглить - надо РЕШАТЬ ПРОБЛЕМЫ БИЗНЕСА (и создавать их себе)

Dmitry
14.07.2017
09:36:24
в этот мне только одно имя файла нужно было, которое явно было проще выкусить

Denis
14.07.2017
09:36:36

Dmitry
14.07.2017
09:36:51
а если структура DOM поменяется?

Denis
14.07.2017
09:37:10

Dmitry
14.07.2017
09:37:53
тут я тоже замечу
тут фишка в том что эти научные данные не меняют структуру годами

Denis
14.07.2017
09:38:18
Но если бы использовался парсер ничего бы менять не пришлось
аргггх

Maxim
14.07.2017
09:38:37
думаю, пора делать отдельный канал имени ahdenchik, где он будет говорить, какие языки программирования можно называть языками программирования, и какие подходы разработки нужно использовать в том или ином случае)
и все будут туда ходить за разрешением или советом, чтобы тут атмосферу не портить)

Denis
14.07.2017
09:39:00

Maxim
14.07.2017
09:39:46
ну просто, на самом деле, последние два дня канал отравлен снобизмом и попытками доминирования)
не конструктивная атмосфера

Denis
14.07.2017
09:39:55
Да да сорри.

Google

Denis
14.07.2017
09:40:21
Это точно старость. Переоценка стоимости времени и всё такое.
Всем пока

Andrey
14.07.2017
09:48:43
лол

Dmitry
14.07.2017
10:14:17
В итоге правильная регулярка все же:
(SMAP_[^"]+)
Только я не пойму как она конец файла определяет:
SMAP_L3_SM_P_E_20170711_R15060_001.h5
почему дальше ничего не захватывает

Andrey
14.07.2017
10:16:30
[^"]+ - все, кроме кавычки

Dmitry
14.07.2017
10:17:07
начинается с кавычки, а далее любые символы. Но там разве любые кроме кавычки?

Andrey
14.07.2017
10:17:50
ну по факту да. какой смысл проверять, что там, если кавычкой должно завершаться
не надо усложнять)

Admin
ERROR: S client not available

Dmitry
14.07.2017
10:20:03
А что делают?
Shorthands for front.pre, front.post, front.hit.
hit в данном случае это "взять" как я понимаю, а остальные?

Andrey
14.07.2017
10:21:08
видимо, часть строки до совпадения и часть после
проверь)

Dmitry
14.07.2017
10:23:43
угу, так оно и есть

Andrey
14.07.2017
10:41:46
ну, можно такую регулярку, для особо мнительных) <a\s+href\s*=\s*(["'])(SMAP_(?:[^"]+|[^']+))\1 m[2] - файл

Dmitry
14.07.2017
11:22:36
Кто хочет баги в DMD половить с GC? Есть подозрения что он опять тупит т.к. dlang-request при загрузке файла падает в 300МБ
Так, напомните ка мне в какой пакет входит 64-битный линковщик? Чтобы студию не ставить. Поддержка x64 нужна
А то у меня тут все с ошибкой памяти падает
Короче ставлю VS. Как только в LDC оттестируют поддержку 64-битного линкера срану на него перейду

Dmitry
14.07.2017
11:37:00
Есть Visual C++ Build Tools http://landinghub.visualstudio.com/visual-cpp-build-tools

Pavel
14.07.2017
11:55:30

Google

Pavel
14.07.2017
11:56:09
А то бывает что 2 разных человека говорят одно и то же, но к одному стоит прислушаться, а другой просто следует культу карго

Dmitry
14.07.2017
11:56:42
"For example, I've been examining generics recently, but I don't have in my mind a clear picture of the detailed, concrete problems that Go users need generics to solve. As a result, I can't answer a design question like whether to support generic methods, which is to say methods that are parameterized separately from the receiver. If we had a large set of real-world use cases, we could begin to answer a question like this by examining the significant ones." - Russ Cox, расказывая про планы на Go 2. "Я не знаю, как сделать генерики, потому что не вижу юзкейсов как их используют в нашем языке без генериков". Все-таки Go делают идиоты.
https://blog.golang.org/toward-go2

Eto
14.07.2017
12:07:22
Лол, забавно.
А другие языки он конечно посмотреть не может.

Dmitry
14.07.2017
12:17:47
Короче боюсь dlang-request все еще очень глючный. Файл так и не получилось скачать с помощью него.

Pavel
14.07.2017
12:18:50
а в пхп это делается одной функцией )

Andrey
14.07.2017
12:39:17

Dmitry
14.07.2017
12:39:39
автору написал, он говорит это regexp падает
я уже вообще ничерта не понимаю
http://paste.code123.org/abc7903c-ece3

Eto
14.07.2017
12:44:39
Замени regexp на ручной поиск.

Dmitry
14.07.2017
12:48:06
он блин как вообще что-то может ронять? %)

Andrey
14.07.2017
12:54:06
там падает позже, при загрузке файла (загружать кстати было б нечего иначе).

Dmitry
14.07.2017
13:23:34
В следующем куске никто ошибок не видит?
У меня пустой файл записывается:
arrayFullURLs ~= "https://n5eil01u.ecs.nsidc.org/SMAP/SPL3SMP_E.001/2017.07.11/SMAP_L3_SM_P_E_20170711_R15060_001.h5.iso.xml";
foreach(f; arrayFullURLs)
{
writeln("Loading file: ", f);
auto rs1 = request.get(f);
auto stream = rs1.receiveAsRange();
while(!stream.empty)
{
writefln("Received %d bytes, total received %d from document legth %d", stream.front.length, request.contentReceived, request.contentLength);
stream.popFront;
File file = File(baseName(f), "a");
file.write(stream.front);
}
}
У меня упорно в файл записывается:
[][112, 100, 97, 116, 101, 62, 10, 32 ...

Eto
14.07.2017
13:34:23
> file.write(stream.front);
Из документации: Writes its arguments in text format to the file.
Может File file = File(baseName(f), "ab"); надо?

Dmitry
14.07.2017
13:37:50
типа append binary? я заменил на wb т.к. в итоге аппенд мне не нужен был. Сейчас вообще в файл записывается все с середины:
pdate> и далее данные

Eto
14.07.2017
13:51:01
Тут главное чтобы binary было.