juan_gandhi: (VP)
[personal profile] juan_gandhi
Extracting PDF from Mozilla Browser - and Doing it Nicely

That's a detailed account of the thing I already posted a couple of days ago. And what I'm enjoying here is Functional Programming. I don't know why Stroustrup does not know that it works. Worked for me. :p

Date: 2013-10-21 12:01 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
что-то не очень ясно, как устроен runJS. Если runJS может узнать, хорошо ли закончилось extractPdfContent() (т.е. был ли throw), то почему он не может прицепить intBuf2hex(), а вместо этого ждёт 1 секунду. А если не может узнать, был ли throw, то он всегда Good?..

Date: 2013-10-21 02:48 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Он не знает, да. Но Good он не всегда, т.к. что творится в браузере - это нам неизвестно; мало ли что сломалось (селениум хрупок до ужаса).

Date: 2013-10-21 04:47 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
тогда runsJS("return extractPdf()") andThen ... всегда успешен? (разве если сам вызов функции не смог вернуть даже 'JUST WAIT')

Date: 2013-10-21 05:20 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Ну этого мы не знаем. extractPdfContent() делает цепочку вызовов; по хорошему надо бы каждый результат внутри проверять и бросать исключение если чо.

Date: 2013-10-21 08:03 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
дык, вот это вот и не ясно. Вроде бы extractPdfContent просто возвращает фиксированную строчку, а собственно выделение контента в отдельном потоке? Или как? extractPdfContent дожидается завершения?

Я к чему это всё допытываюсь - уточнить, что именно может fail в extractPdfContent() (т.е. практически ничего не может - тривиальная функция?), объяснить, чего дожидается Thread.sleep(1000), куда девается бросаемое исключение и как потом преобразование в хексы работает с null или чего там вместо потока pdf.

Date: 2013-10-21 08:07 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
window.extractPdfContent = function() {
  dataPromise = PDFView.pdfDocument.getData()
  dataPromise.then (function(d) { extractedPdfAsString = intBuf2hex(d)}, function() { throw "Failed to extract pdf content" })
  return 'JUST WAIT'
}


может оказаться, что PDFView не определён
может рухнуть выборка pdfDocument
может рухнуть выборка getData
может оказаться, что then изменил сигнатуру, и рухнет при вызове.

Случается регулярно.

Date: 2013-10-21 08:11 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
ок, но потом куда девается throw "чё-то там"? Сама переменная остаётся нулём? А runJS потом завершается Bad, когда в хексы не получается нуль превратить?

Date: 2013-10-21 10:10 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Да, конечно.

Date: 2013-10-21 10:10 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Он да, где-то в бекграунде возвращает, не в момент исполнения. Там же cps.
завалиться может любой шаг, где что-то откуда-то извлекают; а секунду я даю, чтобы threads, которых в данной задачке не так уж и много, все успели потрудиться. В принципе, можно и цикл всобачить, но по жизни не надо. Ведь данные-то уже тут, в джаваскрипте.

Исключение перебрасывается в драйвер селениума, а мой код их всех ловит и превращает в плохишей.

Date: 2013-10-21 04:04 pm (UTC)
From: [identity profile] fatoff.livejournal.com
Ну конечно, Страустрап очень озабочен извлечением PDF-ов из Firefox при помощи FP, даже не ясно, знает ли он о том...

Date: 2013-10-21 08:08 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Да хрен с ним со Страуструпом, к слову пришелся.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 9 10 11 121314
15161718 192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 20th, 2025 07:15 pm
Powered by Dreamwidth Studios