Сайт на домине

Gandliar

Lotus Team
16.02.2004
564
26
BIT
110
может кто подскажет скриптик, который бы выдергивал бы размеры картинки?
с одной стороны, выгружаю картинку в тем на диск, запускаю скрипт из лотуса с ява-библиотекии получаю размеры, однако не могу потом удалить картинку из темпа, она блокируется.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
запускаю скрипт из лотуса с ява-библиотекии получаю размеры, однако не могу потом удалить картинку из темпа, она блокируется.
покажи весь свой код
у меня аналогичное всё пашет

команду на LS: Yield

используешь?
 

Gandliar

Lotus Team
16.02.2004
564
26
BIT
110
yield не использую

Код:
Sub SetImageDimensions(doc As NotesDocument)
   Dim jSession As New JavaSession()
    Dim toolkit As JAVACLASS
    Set toolkit  = jSession.GetClass("java/awt/Toolkit")
    Dim image As JavaObject
   Dim rtitem As NotesRichTextItem
   Dim tmpFolder As String
   Dim filePath As String
       
   tmpFolder = getTmpFolder()
       
   Set rtitem = doc.Getfirstitem("Files")
   If IsEmpty (rtitem.Embeddedobjects) Then Exit Sub
   ForAll o In rtitem.Embeddedobjects
       If (o.Type = EMBED_ATTACHMENT) Then
           Select Case LCase(o.Source)
           Case LCase(doc.PictureName(0))               
               filePath = tmpFolder + Format(Now,"hhnnss")+"_"+o.Source
               Call o.ExtractFile(filePath)               
               Set image = toolkit.getDefaultToolkit().getImage( filePath )
               doc.PictureWidth = image.getWidth()
               doc.PictureHeight = image.getHeight()
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Код:
Call AgentLog(False, "Выкладываем на диск: " & sNF)
    Call object.ExtractFile(sNF)
   
    Set jSession = New JavaSession
    Set imgClass = jSession.GetClass("ImageResizer")
    FileName = sNF
    Set jImage = imgClass.CreateObject("(Ljava/lang/String;)V", FileName)
    ImageHeight = jImage.getHeight()
    ImageWidth = jImage.getWidth()
думаю трабла в том, что всё делаете явой
попробуйте скриптом выложить файл а потом по нему пройтись явой
 

Gandliar

Lotus Team
16.02.2004
564
26
BIT
110
думаю трабла в том, что всё делаете явой
попробуйте скриптом выложить файл а потом по нему пройтись явой

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

может явой и удалять
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
464
@Gandliar код в агенте исполняется?
[doublepost=1487674486,1487674382][/doublepost]да и в любом случае - сначала деструктор класса, работавшего с файлом, а потом - удаление файла
 

Gandliar

Lotus Team
16.02.2004
564
26
BIT
110
вобщем пробовал агентом, не агентом, деструктор класса, ниче не помогло.

накатал строчку чтобы удаляло файл на яве и все равно не удаляет.

причем если скрипт пошагово запускать в отладчике - удаляет, если просто запускать - нет
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
464
@Gandliar смысл того что я написал - агент дестроит объекты не сразу и удалить не получится...
надо отследить - какие потоки открыты и их закрывать принудительно, в конце кода
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
засуньте узнавание размеров к отдельную функцию, чтобы класс явы создавался после выкрадывания файла
 

Gandliar

Lotus Team
16.02.2004
564
26
BIT
110
Посмотрел класс imageResizer, посмотрел как там берутся размеры.
Переделал свою функцию, заработало, все удаляет.
То есть проблема была в том, что предыдущий вариант держал файл, а тут имадж загоняется в память, а файл можно закрыть и удалить.

Код:
Dim jSession As New Javasession
   Dim FileInputStream As Javaclass
   Set FileInputStream = jSession.GetClass("java/io/FileInputStream")  
   Dim fis As Javaobject
   Set fis = FileInputStream.Createobject("(Ljava/lang/String;)V",filePath)
   Dim ImageIO As Javaclass
   Set ImageIO = jSession.GetClass("javax/imageio/ImageIO")
   Dim bi As Javaobject
   Set bi = ImageIO.read(fis)
   Call fis.close()
   Call doc.Replaceitemvalue(widthName,bi.getWidth())
   Call doc.Replaceitemvalue(heightName,bi.getHeight())
   Dim File As Javaclass
   Set File = jSession.GetClass("java/io/File")
   Dim f As Javaobject  
   Set f = File.Createobject("(Ljava/lang/String;)V",filePath)
   Call f.delete()
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
464
@Gandliar у AWT имеджа есть ф-ция flush() может её надо было звать
 
  • Нравится
Реакции: Gandliar

Gandliar

Lotus Team
16.02.2004
564
26
BIT
110
Спасибо за советы.

Очередной вопрос :)

Может кто тестил/использовал варианты для сайта

Например есть на сайте 10 000 документов квартир на продажу
Надо сделать возможность выборки по параметрам (дофига параметров)+ выборка должна быть отсортирована по некоторым параметрам (две сотрировки на выбор)

Вот вопрос как лучше реализовать, чтобы работало быстро.

1. Сделать ряд сортированных видов и по ним запускать ftSearch и рисовать html
2. Загнать в mySql базу данные и доставать запросом через odbc
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
464

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
464
больше вопрос - про динамический набор параметров...
как обычно делают... типа изменил параметр - других стало меньше (основываясь на сокращении выборки)
и указывать кол-во сразу
и такая динамика на реляционке (в классич. понимании) - это неудобно
тут надо смотреть на "другие" варианты, сходу не готов посоветовать
такое лучше смотреть здесь -
 

Gandliar

Lotus Team
16.02.2004
564
26
BIT
110
принтовать агентом

ну мне удобнее открывать документ и потом в ричтекст выкладывать wqo агентом.

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

Поэтому и спрашиваю, у кого какой опыт есть
[doublepost=1487754526,1487754031][/doublepost]
больше вопрос - про динамический набор параметров...
как обычно делают... типа изменил параметр - других стало меньше (основываясь на сокращении выборки)
и указывать кол-во сразу
и такая динамика на реляционке (в классич. понимании) - это неудобно
тут надо смотреть на "другие" варианты, сходу не готов посоветовать
такое лучше смотреть здесь -

Ну мне хотя бы реализовать по-простому, форма с параметрами, отправил, получил результат.
Вопрос как лучше двигаться, через лотусовые виды и фтсерч
или загонять в реляционку и тащить черз одбс например
главное чтобы быстро было )
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
43
1
один вид со всеми нужными категориями сразу, и простой лукап
не пойдёт -
выборка должна быть отсортирована по некоторым параметрам (две сотрировки на выбор)
- "две сотрировки на выбор" требуют N*2 лукапных видов (N кол-во параметров)
2 лукап вернёт ВСЁ, что сможет, а нафига? Если на показ только 30 (к примеру)
3 штоб быстро - должно быть всё предсортировано (что в видах, что в реляционных таблицах. и того и другого N штук). По этому нафига SQL?
4 поиск (c ограничением выборки) в ViewEntryCollection тут будет шустрее, чем ftsearch (ftsearch с сортировкой двухэтапен - сначала, по сути, dbsearch, а потом сортировка видом, полнотекстовый индекс то у базы всего один)

вроде так
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!