Kamis, 26 November 2009

Using a New Thread for Network Activity

Berawal dari iseng coding malem hari...
dan keisengan itupun berlanjut saat coding J2ME..
nemu error ky gini

Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.

Saking paniknya, nih error sampe ta masukin field search nya google...
Dan akhirnya... taaarrrraaaa....
menemukan kasus yg sama d forum ny SUN
satu demi satu thread dibaca dan dikasih link kesini

http://developers.sun.com/mobility/midp/articles/threading/

dibaca satu persatu... dan nemu tulisan ini

Using a New Thread for Network Activity

public void commandAction(Command c, Displayable s) {
if (c == mExitCommand)
notifyDestroyed();
else if (c == mConnectCommand) {
Thread t = new Thread() {
public void run() {
connect();
}
};
t.start();
}

}


pusing dah, ga tau maksud nya apaan
yang penting copas copas dan copas
dan di Run... yes berhasil...

Om Google menyelamatkan saya lagi
dan malam ini saya bisa tidur nyenyak....

nite all

Rabu, 25 November 2009

JavaScript for Number Validation

Ga tau harus pake cara apa lagi..
ketika harus mem-validasi inputan yg harusnya berupa nomor
dari String diubah ke Long ??? pake spring validasi lagi...
fuih... ga ngerti lah...
maka digunakan cara hardcode seperti ini

function CalcKeyCode(aChar) {
var character = aChar.substring(0,1);
var code = aChar.charCodeAt(0);
return code;
}

function checkNumber(val) {
var strPass = val.value;
var strLength = strPass.length;
var lchar = val.value.charAt((strLength) - 1);
var cCode = CalcKeyCode(lchar);

/* Check if the keyed in character is a number
do you want alphabetic UPPERCASE only ?
or lower case only just check their respective
codes and replace the 48 and 57 */

if (cCode <> 57 ) {
var myNumber = val.value.substring(0, (strLength) - 1);
val.value = myNumber;
}
return false;
}


Nah, cara manggil d field nya tinggal ditulis

onkeyup="checkNumber(namaForm.namaField);"

Ga tau kenapa cara ini gampang d tembus...
ketika tombol dipencet dan ditahan,
maka inputan bukan number dapat masuk
sehingga di field itu juga aku tambahin

onkeydown="checkNumber(namaForm.namaField);"

Awalnya kupikir selesai...
karena setiap inputan yg bukan nomor pada keyboard bakal ditolak.
Teman2ku mencari celah agar inputan bukan nomor masuk kedalam field ini
hahaha, mereka menemukan dengan cara copas dr mouse
sialan... grrrr....
masa harus di tambahin lagi "on mouse bla bla bla.."
ribet man !!

Cara ini ga efektif bgt, jangan dipraktekin boleh,
tp bakal banyak celah untuk menembus kesana....

NB : pusing juga jadi programmer... wkwkwk

Jumat, 20 Maret 2009

Spring - bagian 1

Spring MVC : Hello World

Spring Servlet Declaration

Declare Spring DispatcherServlet dan map "*.html" URL, dalam WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>
jsp/index.jsp
</welcome-file>
</welcome-file-list>

</web-app>


Spring Servlet Configuration

membuat Spring configuration file pada WEB-INF/springmvc-servlet.xml (nama berdasarkan nama servlet di atas):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean name="/hello_world.html" class="springmvc.web.HelloWorldController"/>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>

</beans>

Map URL /hello_world.html ke Controller HelloWorldController

Controller


buat controller HelloWorldController.java

package springmvc.web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloWorldController implements Controller {

public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

String aMessage = "Hello World MVC!";

ModelAndView modelAndView = new ModelAndView("hello_world");
modelAndView.addObject("message", aMessage);

return modelAndView;
}
}

Controller ini memanggil tampilan 'hello_world', melalui 'message' (seperti Struts attribute)

View

buat jsp/hello_world.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<p>This is my message: ${message}</p>
</body>
</html>

Menampilkan message attribute yang telah di-set dalam Controller.

diambil dan di terjemahkan dari :
http://maestric.com/en/doc/java/spring/hello_world

Rabu, 18 Maret 2009

Sitemesh - bagian 1

Sitemesh 2.1

Arsitektur Sitemesh di dasarkan pada Filters, yang namanya PageFilter class. Ketika Container menerima request dari sebuah page, maka ia akan meneruskan ke PageFilter yang akan membuat custom response object, untuk mengumpulkan application's response, dan meneruskan ke web application sesuai dengan permintaan. Web application akan menuliskan resource yang diminta dalam custom response object dan akan mengebalikan ke PageFilter.

library sitemesh-2.1.jar

Cara membentuk sitemesh :
1. setting web.xml
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
<init-param>

<param-name>debug.pagewriter</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>

<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


2. buat decorators.xml dalam folder WEB-INF
<decorators defaultdir="/decorators">
<!-- Decorator for pages which need Sidemenu -->
<decorator name="sidemenu" page="sidemenu.jsp">
<pattern>/home.jsp</pattern>
</decorator>

<!-- Decorator for pages which need header and footer -->
<decorator name="headerfooter" page="headerfooter.jsp">
<pattern>/help.jsp</pattern>
</decorator>
</decorators>


3. buat headerfooter.jsp dalam folder WebContent/decorators
<%@ taglib
uri="http://www.opensymphony.com/sitemesh/decorator"
prefix="decorator" %>
<html>
<head>
<title>
My Site - <decorator:title default="Welcome!" />
</title>
<decorator:head />
</head>
<body>
<table>
<tr>
<td>
<H1>
SiteMesh Corporation
<H1>
</td>
</tr>
<tr>
<td><decorator:body /></td>
</tr>
<tr>
<td> SiteMesh copyright</td>
</tr>
</table>
</body>
</html>


4. buat help.jsp dalam folder WebContent
<HTML>
<HEAD>
<%@ page
language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
%>
<TITLE>Help Page</TITLE>
</HEAD>
<BODY>
Help Page
</BODY>
</HTML>


dan hasil akhirnya adalah



hasil awal headerfooter.jsp


isi folder sitemesh


diambil dari : http://www.onjava.com/pub/a/onjava/2004/09/22/sitemesh.html