Wednesday, November 04, 2009

Would you like to add google analytics to your blog (blogspot)?

Today I decided to add 'Google Analytics' to my blog, so I looked around and found couple articles that describes how to do it.

I would like to share it to all who probably think about it: setting up google analyics on your blog

Tuesday, November 03, 2009

How @UserAccess can determine No Access level?

One my fellow asked me how to determine that user don't have access to database using only @formula. So I want to share how it can be done.
We should just check it on @IsError(@UserAccess(..)) and it will return 1 for cases if you don't have access to database at all.

Monday, November 02, 2009

How to show image in LN using HTML

I had trouble with displaying image using html in LN. I did everything correctly, but the image did not appear. So I looked around and found that there is a special field
$DelayedImagesOK = "ok"

So when I added this field (CFD) on the form it started to worked fine.

But then I found if we click on place where the image should display (I meant on that icon) using right click and then click on show image the image would appear and field $DelayedImagesOK with value "ok" would be added.

Monday, October 05, 2009

process image in LN (JPEG and PNG)

I was facing with problem when I got task to process image *.jpg and *.png (get their size and resize big image).

So let me put some code here to show my approach (it is only first version and it means that there are still many issues).

I used LS2J approach.


So here is my Java Library (core):

Options:
Option Public
Option Declare

Use "ImageLib"

Initialize:

import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class JpgImage {
BufferedImage originalImage = null;
String fileName = "";
int type = 0;

public JpgImage (String m_fileName) throws IOException {

try{
fileName = m_fileName;

originalImage = ImageIO.read(new File(fileName));
type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();

}catch(IOException e){
System.out.println(e.getMessage());
}
}

public int ImgResize (int w, int h)
{
String newFileName = "";
String imgFormat = "";
try{
newFileName = fileName.replace(".", "-thumb.");

if(type == 5) {
imgFormat = "jpg";
}
else {
imgFormat = "png";
}

BufferedImage resizeImage = resizeImage(originalImage, type, w, h);
ImageIO.write(resizeImage, imgFormat, new File(newFileName));

}catch(IOException e){
System.out.println(e.getMessage());
}
return 0;
}

public int getWidth (){
return originalImage.getWidth();
}

public int getHeight () {
return originalImage.getHeight();
}

private static BufferedImage resizeImage(BufferedImage originalImage, int type, int w, int h){
BufferedImage resizedImage = new BufferedImage(w, h, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, w, h, null);
g.dispose();

return resizedImage;
}
}




LS code.

Options
Option Public
Option Declare

Use "ImageTest "

Uselsx "*javacon"


function add/change image (it creates Thumbnail version of original image with max size 120x120)
%REM
add image to Body and BodyThumbnail fields
%END REM
On Error Goto processError

Dim jpgClass As JavaClass
Dim jpgImage As JavaObject
Dim jpgImageThumbnail As JavaObject
Dim jError As JavaError

Dim w As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim uidocnew As NotesUIDocument
Dim doc As NotesDocument
Dim body As NotesRichTextItem
Dim bodyThumbnail As NotesRichTextItem
Dim filepath As Variant
Dim vFileNameThumbnail As Variant
Dim tmp As String
Dim filename As String
Dim filenameThumbnail As String
Dim picH As Integer, picW As Integer
Dim picHT As Integer, picWT As Integer
Dim debug As Boolean

debug = True
If debug Then Print Lsi_info(2) & " starts at: " & Now

Set uidoc = w.CurrentDocument
Set doc = uidoc.Document

filepath = w.OpenFileDialog(False, "Please select iamge", "JPG|*.jpg|GIF|*.gif|PNG|*.png|", "", "")

If Not Isarray(filepath) Then Exit Sub

filename = filepath(0)

'** everything we'll need to access our Java classes
Dim jSession As New JavaSession

'** get the JpgImage class and instantiate an instance of it
Set jpgClass = jSession.GetClass("JpgImage")
Set jpgImage = jpgClass.CreateObject("(Ljava/lang/String;)V", fileName)

'get width and height of images
picH = jpgImage.getHeight()
picW = jpgImage.getWidth()
Call doc.ReplaceItemValue("picH", picH)
Call doc.ReplaceItemValue("picW", picW)

'attach image to as it is to body field
Call doc.RemoveItem("Body")
Set body = New NotesRichTextItem(doc, "Body")
Call body.EmbedObject (EMBED_ATTACHMENT, "", filename)

' new image
If picH > 120 Then
picHT = 120
Else
picHT = picH
End If

If picW > 120 Then
picWT = 120
Else
picWT = picW
End If

Call jpgImage.imgResize(picWT, picHT) '** shrink to 50% of the original size

If Instr(filename, ".gif") Then
Dim original_name As String
original_name = Replace(filename, ".", "-thumb.")
fileNameThumbnail = Replace(filename, ".gif", "-thumb.png")
Name original_name As fileNameThumbnail
Else
fileNameThumbnail = Replace(filename, ".", "-thumb.")
End If

Call doc.ReplaceItemValue("picHT", picHT)
Call doc.ReplaceItemValue("picWT", picWT)

'attach thumbnail version of image
Call doc.RemoveItem("bodyThumbnail")
Set body = New NotesRichTextItem(doc, "bodyThumbnail")
Call body.EmbedObject (EMBED_ATTACHMENT, "", fileNameThumbnail)
Kill fileNameThumbnail

doc.SaveOptions = "0"
Call uidoc.Close(True)

Set uidocNew = w.EditDocument(True, doc, , , , True)
Delete uidoc
Call uidocNew.Document.RemoveItem("SaveOptions")

Call uidocnew.Refresh

basta:
If debug Then Print Lsi_info(2) & " starts at: " & Now

Exit Sub
processError:
'** report any errors we get and keep on going
Set jError = jSession.getLastJavaError()
If (jError.errorMsg = "") Then
Print "Notes Error at line " & Erl & ": " & Error$
Else
Print "Error at line " & Erl & ": " & jError.errorMsg
jSession.ClearJavaError
End If

Msgbox Error$

Resume basta

End Sub


btw, then I found more interesting solution (at least I think so :-D) on nsftools.com

Wednesday, August 19, 2009

Gurus of Lotus: DOS Window appear when I run agent using C++ application

Hello guys,

This window appears each time when I run agent in my database (via external application) and this agent create document in mail database. I don't have any idea how it is possible to hide this window. It is non-friendly for user. This window allows to create document in mail database. Looks like just notification. But I don't want to show it to user.

Any ideas?

I tried to find solution and no luck, just one post at IBM
http://www-10.lotus.com/ldd/nd6forum.nsf/ReleaseAllThreadedweb/7b961338e87735ec85256f4700389b74?OpenDocument

Thanks