Thursday, December 29, 2011

Class -> Character -> Modifier -> BaseItem -> Item

Monday, December 19, 2011

Friday, December 16, 2011

Tadinya saya mengira bahwa spring JdbcTemplate dan TransactionTemplate memiliki method-method yang sama, ternyata beda.

Monday, December 12, 2011

Hari ini, pagi kira-kira jam 9 kurang busway koridor 8 di sekitar Green Garden macet. Ngga tau apa sebabnya.

Tuesday, December 6, 2011

Friday, December 2, 2011

Thursday, December 1, 2011

ExactGemMoveFinder
- move only atau move and process
- lining up maksudnya lurus aja atau belok2

Wednesday, November 30, 2011

Move = 0 (horizontal), 2 (third row), 3 (step)

0 1 2 2 0
0 0 0 1 3
2 1 0 3 1
3 3 0 2 1
0 2 3 1 3

Friday, November 25, 2011

Hasil tally nya ga sesuai dengan limit persentase/perbandingan karena sebelum mencapai minAmount ada satu jenis gem yang udah melebihi limit persentase/perbandingan nya.
Kalau minAmount diset 0, sesuai dengan limit persen nya.

===

GemBlitz GB-31 LimitPercentGemProducer GB-62
use normalizedPercentage to calculate limitPerTotal
=> Incompatible types

===

Board position for RecursiveMoveEvaluator test
0 3 0 1 0 1
0 1 2 3 3 2
2 2 2 1 2 2

Move type : 1 (vertical), index : 1

Thursday, November 24, 2011

GemBlitz

GB-32 PoolGemProducer

GB-55 make sure to pass testNormalizedPercentage2 and testNormalizedPercentage3

testNormalizedPercentage2 nya ga ada

Monday, November 21, 2011

2. Java Generics and Collections ( 2007 - 9780596527754 )

45

Tuesday, November 8, 2011

2. Java Generics and Collections ( 2007 - 9780596527754 )

36

Monday, November 7, 2011

Gemblitz

this.newBoard = board; -> board.clone() atau new Board(board);

===

2. Java Generics and Collections ( 2007 - 9780596527754 )

32

Wednesday, November 2, 2011

1 86801 Paket SMS Anda bisa dipakai s/d 02-NOV-11 jam 24. Pulsa otomatis akan terpotong Rp.18000. Dptkan harga hemat 10% utk perpanjangan paket 2011-11-02 10:05:14.58 N

2 86801 Pulsa telah terpakai Rp 18rb (termasuk diskon 10%) utk perpanjangan Paket SMS UNLIMITED selama 30 hari, berlaku s/d 02-12-11 jam 12 mlm 2011-11-02 10:05:14.852 R

===

Test Plan
1. 2 batch yg startTime nya udah lewat -> NG -> In RestartSender.send() use synchronized -> OK

2. 2 batch yg startTime nya future
3. 2 batch yg startTime nya 1 future 1 udah lewat

Friday, October 28, 2011

SmsManager
- Add Canceled/Stopped status in SmsOutGroup table
- Restart batch which have Stopped status only

Thursday, October 27, 2011

2. Java Generics and Collections ( 2007 - 9780596527754 )

29

Wednesday, October 26, 2011

3. Java Concurrency in Practice ( 2006 - 0321349601 )

xix

8


2. Java Generics and Collections ( 2007 - 9780596527754 )

xiii

23

Wednesday, October 12, 2011

Jewel Game

- When printing, give background color. Different color for each gem type.

- Test compare boolean and int which one is faster.

- When generating allow adjacent board, so that more efficient, if the previous adjacent is already different, record it to boolean, and use it for the next iteration. Because boolean is faster than compare.

Monday, September 26, 2011

Development of SMS Sending Application for Marketing.
The application has the following functions :
- upload phone numbers from ms-excel document
- send an sms to some receivers.
- display list of sent sms (outbox)
- display list of received sms (inbox)
- select one sms from the list then display the detail of selected sms
- reply an sms and etc.
This project using Java Programming language and the following libraries/framework :
- Spring (DI/IOC, JdbcTemplate),
- H2 Database
- Swing,
- SmsLib,
- MigLayout,
- SLF4J, logback,
- JGoodies Binding,

Development of messenger system.
This system is divided into 2 parts, Server part and Client part.
In the client part, user can login by entering username then the list of logged in user will appear in the server side. In the server side, message can be sent to a selected user or broadcasted to all user.
This project using Spring framework, Swing, JMS, ActiveMQ, SLF4J, Logback, MigLayout.

===

Learn about Joomla CMS, Zend Cart, Affiliation programs from Amazon.com and etc.

Thursday, September 15, 2011

sender='86801', content='SMS Kapan Aja makin gampang! Nikmati SMSan UNLIMITED ke semua operator utk 7hr, berlaku s/d 21-09-11 jam 00:00. Utk 1x pembelian', dateTime=2011-09-15 11:01:33.107

it is better to have many functions than to pass some code into a function to select the behavior.

311
342

Wednesday, September 14, 2011

To write clean code, you must first write dirty code and then clean it.

288

319

Friday, September 9, 2011

The length of a name should correspond to the size of its scope
-
Passing a boolean into a function is a truly terrible practice

--

44

-

132

Thursday, September 8, 2011

If it turns out that developers must write these tests, then take
care that the developer who writes the test is not the same as the developer who
implements the tested feature.

--

But the real reason these tests aren’t redundant is that their primary function is
not testing. The fact that they are tests is incidental. Unit tests and acceptance
tests are documents first, and tests second. Their primary purpose is to formally
document the design, structure, and behavior of the system. The fact that they
automatically verify the design, structure, and behavior that they specify is
wildly useful, but the specification is their true purpose.

--

Design experts have been telling us
for decades to separate our GUIs from our business rules.

==

Most software is created by teams. Teams are most effective when the team
members collaborate professionally. It is unprofessional to be a loner or a
recluse on a team.

--

We didn’t become programmers because we like working with people. As a rule
we find interpersonal relationships messy and unpredictable. We like the clean
and predictable behavior of the machines that we program. We are happiest
when we are alone in a room for hours deeply focussing on some really
interesting problem.

--

One of the worst symptoms of a dysfunctional team is when each programmer
builds a wall around his code and refuses to let other programmers touch it.
I have been to places where the programmers wouldn’t even let other
programmers see their code. This is a recipe for disaster.

--

Professional developers do not prevent others from working in the code. They
do not build walls of ownership around code. Rather, they work with each other
on as much of the system as they can. They learn from each other by working
with each other on other parts of the system.

---

199

130

Wednesday, September 7, 2011

The professional developer is calm and decisive under pressure. As the pressure
grows he adheres to his training and disciplines, knowing that they are the best
way to meet the deadlines and commitments that are pressing on him.

--

The difference is important. Professionals will always help the business find a
way to achieve its goals. But professionals do not necessarily accept commitments
made for them by the business. In the end, if we can find no way to meet
the promises made by the business, then the people who made the promises
must accept the responsibility.
This is easy to say. But when your business is failing, and your paycheck is
delayed because of missed commitments, it’s hard not to feel the pressure. But if
you have behaved professionally, at least you can hold your head high as you
hunt for a new job.

157

Tuesday, September 6, 2011

If you are tired or distracted, do not code. You’ll only wind up redoing what you
did. Instead, find a way to eliminate the distractions and settle your mind.

page 98, 141

Thursday, August 11, 2011

Number: 528
Content:
Nomor XL Anda memasuki masa tenggang pada 14-08-2011. Segera isi ulang utk tetap menikmati tarif murah & layanan terbaik XL Prabayar. Abaikan jika sdh isi ulang
Time: 11/08/2011 14:10:27

---

select g.datetime, 'me', g.content
from smsout o, smsoutgroup g
where o.smsoutgroupid = g.id

union

select datetime, sender, content
from smsin

order by datetime


951

Tuesday, August 9, 2011

SmsManager feedback :
1. Inbox/reply (the UI like instant messenger)
2. Import process still too slow -> make it faster
3. Sending, add option to skip duplicate number or not
4. Support multipart message, when more than 160 show dialog, show how many parts

select distinct max(datetime) dt, sender
from smsin a
group by sender

inner join

select content

order by dt desc




959
1912

Monday, August 8, 2011

One of SmsManager issue is the application crashed when starting service of more than one modem.

In this forum post http://smslib.org/forum/topic/number-of-gsm-modems-limit the creator of smslib said,
Make sure that the multiple-modem connectivity is ok. Many of the reported problems were attributed to usb hubs and stuff like that. From my experience, it's better to invest in a good multi-serial "intelligent" expansion board.


957

Thursday, August 4, 2011

todo :
- export -> bug, if user click cancel button, succes dialog showed
- export -> ask overwrite confirmation if the file is already exists
- import -> show/report skipped/already exist numbers

done :
- import -> set wait cursor while importing -> done
- group -> set phone numbers textarea taller
- export -> save previous path


944

Wednesday, August 3, 2011

todo :
sending -> content textarea -> display typed / remaining message length

123456789
223456789
323456789
423456789
523456789
623456789
723456789
823456789
923456789
103456789
113456789
123456789
133456789
143456789
153456789
1634567890

946

Wednesday, July 20, 2011

940

todo:
in outbox
add some checkboxes (NEW, INPROGRESS, SENT, UNSENT, DELIVERED)
change resend unsent button to resend button to resend selected status

http://wiki.jetbrains.net/intellij/Developing_applications_for_Android_in_IntelliJ_IDEA

Swing, Second Edition ( 2003 - 193011088X ) page 24 :

the following code shows a typical way to build your own separate
thread to do some time-intensive work while using invokeLater() or invokeAnd-
Wait() in order to safely update the state of any components in the event-dispatching thread:

Thread workHard = new Thread() {
public void run() {
doToughWork(); // do some time-intensive work
SwingUtilities.invokeLater( new Runnable () {
public void run() {
updateComponents(); // do some work in event thread
}
});
}
};
workHarder.start();

1910

Monday, July 4, 2011

todo for tomorow:
test connect and send toolbar button

943
1923

Friday, July 1, 2011

Monday, June 27, 2011

junit-3.8.1.jar is used by
- slf4j-api-1.6.1.jar; and
- commons-pool-1.5.6.jar
- jcl-over-slf4j-1.6.1.jar

junit-4.4.jar is used by
- jgoodies-binding-2.0.6.jar
- miglayout-3.7.4.jar

slf4j-jdk14-1.6.1.jar is used by
jcl-over-slf4j-1.6.1.jar
log4j-over-slf4j-1.6.1.jar

todo :

1.
When sending sms, log it to database.
User can view the sent sms log.

2.
Modem setting such as :
- smsc number and etc.







948

Wednesday, June 22, 2011

Intellij IDEA Live Templates

iter Iteration according to Java SDK 1.5 style
inst Check object type with instanceof and downcast it
itco Iterate elements of java.util.Collection
itit Iterate elements of java.util.Iterator
itli Iterate elements of java.util.List
itve Iterate elements of java.util.List
iten Iterate elements of java.util.Enumeration
itar Iterate elements of array
ritar Iterate elements of array in reverse order
lst Fetch the last element of an array
toar Store elements of java.util.Collection into an array
mn Set lesser value to a variable
mx Set greater value to a variable
psf public static final
psvm main() method declaration
serr Print a string to System.err
sout Print a string to System.out
soutm Print current class and method names to System.out
soutv Print a value to System.out
thr throw new

Friday, June 17, 2011

try to use my cellphone as modem

important things :
java collection -> use map instead of list
google guava
apache common collection

ibatis
http://www.justingordon.org/2008/10/in-memory-dbs-for-tdd-h2-versus-hsqldb.html
It is relatively simple to switch between them. Mostly, it's a matter of switching the JDBC connection string.


http://www.encorewiki.org/display/encore/Open+Source+Databases+Comparison

http://stackoverflow.com/questions/2746201/which-is-better-h2-or-hsqldb
HSQLDB highly outperforms H2 in DDL operations as well as when starting/shutting down the instance, even for a small database.


http://3rdstage.blogspot.com/2009/03/comparion-of-hsqldb-h2-sqlite.html
http://database-management-systems.findthebest.com/compare/6-15-16/Apache-Derby-vs-HSQLDB-vs-H2


http://www.h2database.com/html/faq.html
running out of memory should be avoided. In older versions, OutOfMemory errors while using the database could corrupt a databases.



try ozeki in berghie's pc


tomorow:
create Common module
move common package to Common module



907

Wednesday, June 15, 2011

ozeki vs now
ozeki have more API support to java. both can send sms from java through http, but there is no java api in nowsms. ozeki has java api to send and receive sms through tcp.
http://www.ozekisms.com/index.php?owpn=584&infoe=java-sms-sdk-sms-over-tcp-ip
http://www.nowsms.com/discus/messages/1/24601.html

learn about jetty
http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty

The trial version of NowSMS has a 30 message per minute limitation.
http://www.nowsms.com/discus/messages/1/16578.html
Try enabling "SMS Access" = "GPRS" in the properties for the GSM modem in the "SMSC" list. 
P.S. - Keep in mind that you can also add additional modems to improve throughput.


SMSLib
1 sms per 3 seconds
19 sms / minute


947

Wednesday, June 8, 2011

Tuesday, June 7, 2011

About new sms notification :
if there are more than one sms then show the list of new smses

Tarif SMS
http://anasyusuf.com/tarif-sms-termurah-ke-semua-operator-2011-yang-mana

Spring in Action ( 2007 - 1933988134 )
read about hibernate from 5.4 (183) until (194)
684
158

Spring Recipes ~ A Problem-Solution Approach ( 2010 - 1430224991 )
639
647
654
656
-
541

---
836

Monday, June 6, 2011

Problem with JGoodies Binding
How to bind enum to JLabel ?

Tuesday, May 31, 2011

Development of messenger system.
The messenger system is divided into 2 parts, Server part and Client part.
In the client part, user can login by entering username then the list of logged in user will appear in the server side. In the server side, message can be sent to a selected user or broadcasted to all user. This system utilize Spring framework, Swing, JMS, ActiveMQ, SLF4J, Logback, MigLayout.

Development of SMS system.
There are 2 parts in this system, Marketing and Customer Service parts.
Marketing part can do the following functions :
- upload phone numbers from ms-excel document
- send an sms to some receivers.
- display list of sent sms (outbox)
Costumer Service part can do the following functions :
- display list of received sms (inbox)
- select one sms from the list then display the detail of selected sms
- reply an sms.
This project utilize Spring framework, Swing, SLF4J, logback, JGoodies Binding, Ozeki SMS Gateway, MySQL, MigLayout.



http://www.ibm.com/developerworks/java/tutorials/j-springswing/
http://sciencefair.math.iit.edu/about/tortoisesvn_tutorial.html

Thursday, May 26, 2011

http://smslib.org/doc/

JGoodies Binding
http://jnb.ociweb.com/jnb/jnbJun2005.html

------------------------------------------------------------------------------------------

MigLayout
http://www.devx.com/Java/Article/38017/1954

Although MigLayout comes with a wide variety of keywords, there are certain ones that you will find yourself using most often, namely:
  • wrap: Used on a control (e.g., add(new JButton("OK"),"wrap")), it tells the layout to wrap to the next line.
  • wrap x: Used as a global layout constraint (e.g., new MigLayout("wrap 3")), it tells the layout to automatically wrap to the next line every x controls that are added.
  • span: Used on a control, it tells the control to occupy the remainder of the row.
  • span x | span x y: Used on a control, it tells the layout that this control will occupy a cell that spans x columns (or x columns and y rows)
  • split | split x: Used on a first control in a cell, it tells the layout manager to split the cell so that multiple controls can be added into it. The next x controls that will be added will automatically be in the same cell (or if the split is used without a value, it will wait until the next wrap keyword is encountered).
  • grow: Used at a layout, column, row, or control level, it tells basically the layout to occupy the full available space. For example, if you wanted to define a layout with three columns where the middle one grows as the window expands, you would define it as new MigLayout("","[] [grow] []").
  • top, left, bottom, right: These are basic vertical and horizontal alignment indicators that can be used at any level (layout, column, row, or control).
  • flowy: It changes the flow from horizontal to vertical.
  • sg x: Used on a control, sg stands for size group. It allows you to indicate that multiple controls should have the same size. This is very useful when you want all command buttons to be of the same width.






1006

Monday, May 23, 2011

Learn about
- SLF4J (and Logback)
- JUnit
------------------------------------------
SLF4J

http://www.catosplace.net/blogs/personal/?p=442

http://blog.springsource.com/2009/12/04/logging-dependencies-in-spring/

http://blog.espenberntsen.net/
In addition to the extra flexibility, the API also contains a nice feature with support for arguments.
logger.debug("The date is: {}", date);
The old way with Log4J:
if (logger.isDebugEnabled()) {
logger.debug("The date is: " + date);
}
Both examples prints:
DEBUG [demo.Slf4jDemo] - <The date is: Sun Jun 06 11:34:11 CEST 2010>
The difference is that SLF4J doesn’t merge the dynamic and static data into a new string in the debug method, but sends the dynamic part(s) as argument(s). If the logger is configured to only log messages with info level or higher, the debug message above gets discarded without any string processing and without the need for an extra if sentence for performance reasons.

------------------------------------------

JUnit

http://www.jaredrichardson.net/articles/junit-tutorial.html
http://efreedom.com/Question/1-4183021/Looking-Tutorial-Using-JUnit-Intellij-IDEA-9x

http://tutorials.jenkov.com/java-unit-testing/running-tests-with-idea.html

------------------------------------------

http://code.google.com/intl/id-ID/javadevtools/wbpro/layoutmanagers/swing/miglayout.html

------------------------------------------

Spring Recipes ~ A Problem-Solution Approach ( 2010 - 1430224991 )
until page 130

------------------------------------------

1003
sammy yusuf - asma Allah

Friday, May 20, 2011

There are 2 options for broadcast :
1. server send message to a topic then the client must listen to the topic (clients also have to listen to their temp queue).
2. server send message to all temporary queue of connected clients, in this case clients don't have to listen to the topic.

We will chose option #1 as planned before.

Todo:
- make the list of clients taller (learn swing, layout mgr & etc.)
spClients.setBorder(new TitledBorder(BorderFactory.createEmptyBorder(), "Choose Client :"));
spClients.setPreferredSize(new Dimension(100, 200));
spClients.getViewport().add(lstClients);
pnClients.add(spClients);

1011

Thursday, May 19, 2011

solution:
When a client connect, server create a temporary queue for the client.
When the client disconnect, the temporary queue will be deleted.

JMS book page 260 :
While any client may send messages on another client’s temporary queue, only the sessions that are associated with the JMS client connection that created the temporary queue may receive messages from it.

1002

Thursday, May 12, 2011

Spring in Action ( 2007 - 1933988134 )
until page 428

about JMS in Spring book
384 - 423 = 39 pages

---

Spring Recipes ~ A Problem-Solution Approach ( 2010 - 1430224991 )
JMS 803 - 829 = 26 pages

---

about Spring in JMS book
177 - 213 = 36 pages











1005

Wednesday, May 11, 2011

Spring in Action ( 2007 - 1933988134 )
until page 135, 203, 228, 249, 308, 408











glodok - harmoni = 20 menit

Tuesday, May 10, 2011

Read
Swing, Second Edition ( 2003 - 193011088X )
until page 116

Read
Spring Recipes ~ A Problem-Solution Approach ( 2010 - 1430224991 )
until page 41

Spring in Action ( 2007 - 1933988134 )
72

0835 -> 0940

Monday, May 9, 2011

Read
Swing, Second Edition ( 2003 - 193011088X )
until page 105

Read and try Swing Tutorial

until table

0830 -> 0930

Friday, May 6, 2011

Read Thinking in Java Book until page
641
804

Beginning Java Objects - Modelling 466

1010

1139-1236 = 57

Thursday, May 5, 2011

Read Thinking in Java Book until page 332

-- about container/collection

* container/collection is important


1020

Wednesday, May 4, 2011

* What's new in Java 5
-- Enhanced for Loop
-- Autoboxing/Unboxing
-- Typesave Enums
-- Varargs
-- Static Import
-- Annotations (metadata)

* Read Thinking in Java Book until page 258
-- protected can be accessed by
--- same package
--- derived classes

Tuesday, May 3, 2011

* Spring

- Read and try Introduction to Spring using Swing tutorial

- Concept of Dependency Injection (Inversion of Control)

- Spring Hello World


* Swing

- Swing JForm


* Java

- Java Annotation


tomorow :
what's new in java 6 & 5