-
Notifications
You must be signed in to change notification settings - Fork 0
/
เกรลส์ หกสิบหก.html
577 lines (561 loc) · 47.1 KB
/
เกรลส์ หกสิบหก.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> เกรลส์ หกสิบหก</title>
<meta name="generator" content="WordPress 3.2.1" /> <!-- leave this for stats -->
<link rel="stylesheet" href="http://www.grails66.com/blog/wp-content/themes/publicizer/style.css" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="เกรลส์ หกสิบหก RSS Feed" href="http://www.grails66.com/blog/?feed=rss2" />
<link rel="pingback" href="http://www.grails66.com/blog/xmlrpc.php" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.grails66.com/blog/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.grails66.com/blog/wp-includes/wlwmanifest.xml" />
<link rel='index' title='เกรลส์ หกสิบหก' href='http://www.grails66.com/blog' />
<meta name="generator" content="WordPress 3.2.1" />
<link rel='shortlink' href='http://wp.me/' />
<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
<link type="text/css" rel="stylesheet" href="http://www.grails66.com/blog/wp-content/plugins/syntaxhighlighter-plus/syntaxhighlighter/styles/shCore.css"></link>
<link type="text/css" rel="stylesheet" href="http://www.grails66.com/blog/wp-content/plugins/syntaxhighlighter-plus/syntaxhighlighter/styles/shThemeDefault.css"></link>
<!--[if IE 6]>
<link rel="stylesheet" href="http://www.grails66.com/blog/wp-content/themes/publicizer/ie.css" type="text/css" media="screen" />
<![endif]-->
</head>
<body>
<div class="wrap">
<div class="header">
<div class="blogtitle">
<h1><a href="http://www.grails66.com/blog" title="เกรลส์ หกสิบหก">เกรลส์ หกสิบหก <span>Blog</span></a></h1>
<span class="desc"></span>
<div class="titleright"></div><div class="clear"></div>
</div>
<div class="searchbox">
<form method="get" id="searchform" action="http://www.grails66.com/blog/">
<img src="http://www.grails66.com/blog/wp-content/themes/publicizer/images/stl.jpg" align="left" /><img src="http://www.grails66.com/blog/wp-content/themes/publicizer/images/str.jpg" align="right" /><span class="clear"></span>
<span class="search">
Search on เกรลส์ หกสิบหก:
<input type="text" class="text" value="" name="s" id="s"></input><input type="image" src="http://www.grails66.com/blog/wp-content/themes/publicizer/images/search.jpg" class="button" id="searchsubmit" value="Search"></input>
<span class="clear"></span></span>
<img src="http://www.grails66.com/blog/wp-content/themes/publicizer/images/sbl.jpg" align="left" /><img src="http://www.grails66.com/blog/wp-content/themes/publicizer/images/sbr.jpg" align="right" /></span class="clear"></span>
</form>
</div>
<div class="clear"></div>
</div>
<div class="spacer"></div>
<div class="menu">
<ul>
<li class="page_item current_page_item"><a href="http://www.grails66.com/blog">Homepage</a></li>
<li class="page_item page-item-2"><a href="http://www.grails66.com/blog/?page_id=2" title="Grails66?">Grails66?</a></li>
<li class="page_item page-item-1094"><a href="http://www.grails66.com/blog/?page_id=1094" title="หนังสือ Grails ภาษาไทย แจกฟรี">หนังสือ Grails ภาษาไทย แจกฟรี</a></li>
<li class="page_item page-item-867"><a href="http://www.grails66.com/blog/?page_id=867" title="สรุปจาก Grails Meeting 1.0">สรุปจาก Grails Meeting 1.0</a></li>
<li class="page_item page-item-436"><a href="http://www.grails66.com/blog/?page_id=436" title="Resources">Resources</a></li>
<span class="clear"></span>
</ul>
<a href="http://www.grails66.com/blog/?feed=rss" class="RSS">Subscribe to RSS</a>
<div class="clear"></div>
</div><div class="content">
<img src="http://www.grails66.com/blog/wp-content/themes/publicizer/images/st.jpg" align="right" style="margin-bottom: -7px;" /><span class="clear"></span>
<div class="leftcontent"><div class="in">
<div id='fb-root'></div>
<script type='text/javascript'>
window.fbAsyncInit = function()
{
FB.init({appId: null, status: true, cookie: true, xfbml: true});
};
(function()
{
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
<div class="article">
<span class="date">October 4, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1223" title="อยากให้เปิดคอร์สสอน Grails & Groovy ครับ">อยากให้เปิดคอร์สสอน Grails & Groovy ครับ</a></h2>
<span class="meta">Author: siamkom - Categories: <a href="http://www.grails66.com/blog/?cat=1" title="View all posts in Uncategorized" rel="category">Uncategorized</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1223' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>ผมอยากเรียน Grails & Groovy นะครับ มีใครพอจะเปิดคอร์สสอนในวันเสาร์และวันอาทิตย์ได้บ้างครับ (มีค่าเรียนอย่าแพงมากนะครับ ;p )</p>
</div>
</div>
<div class="article">
<span class="date">August 4, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1213" title="เผลอนิดเดียวก็ปล่อย Grails 2.0M1 ออกมาแล้ว">เผลอนิดเดียวก็ปล่อย Grails 2.0M1 ออกมาแล้ว</a></h2>
<span class="meta">Author: up1 - Categories: <a href="http://www.grails66.com/blog/?cat=15" title="View all posts in news" rel="category">news</a> - Tags: <a href="http://www.grails66.com/blog/?tag=grails2-0" rel="tag">grails2.0</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1213' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>ไม่ได้เข้ามา update ข่าวสารของ Grails นานพอควร โดยครั้งนี้ทางทีมพัฒนาปล่อย version 2.o M1 ออกมาให้ใช้งานกัน ซึ่งมี feature ใหม่ๆ ที่น่าสนใจ และ ที่เข้าใจได้ง่ายๆ ดังนี้</p>
<p>1. Grails console ที่ใช้ง่ายขึ้น และมี output ที่เป็นมิตรและดูง่ายมากขึ้น ตัวอย่างดังรูป<br />
<img class="alignnone" src="http://grails.org/doc/2.0.0.M1/img/test-output.png" alt="" width="332" height="245" /></p>
<p>และใน Grails console นั้นสามารถใช้ปุ่ม TAB สำหรับ Auto-completion อีกด้วย</p>
<p>2. มี Reload Agent ซึ่งช่วยลดปัญหาสำหรับการ auto-load classes, jar file ต่างๆ เมื่อมีการเปลี่ยนแปลง ซึ่งน่าจะช่วยคนพัฒนาได้มากเช่นกัน จะได้ไม่ต้องมานั่ง clean กันเอง และหวังว่าจะไม่กินหน่วยความจำมากไปจนเต็มนะ !!</p>
<p>3. มี Template ของ Document ใหม่ หน้าตาไฉไล ดังรูป</p>
<p><img class="alignnone" src="http://grails.org/doc/2.0.0.M1/img/doc-template.png" alt="" width="379" height="238" /></p>
<p>4. Test Report ใหม่ ดูไฮโซขึ้นเยอะ ดังรูป</p>
<p><img class="alignnone" src="http://grails.org/doc/2.0.0.M1/img/test-template.png" alt="" width="351" height="118" /></p>
<p> </p>
<p>5. ปรับปรุง error report ต่างๆ ให้ง่ายและเข้าใจได้ง่ายขึ้น ทำให้หาจุดที่ผิดพลาดได้ง่ายขึ้นอีก happy กันไปอีกขั้น</p>
<p>ุ6. ใน version นี้มี default database คือ H2 ซึ่งก็แน่นอนว่ามี Console งามๆ มาให้ใช้งานกันง่ายๆ</p>
<p>7. Feature หลักๆ ใน version นี้ ประกอบไปด้วย ฺBinary plugin, Groovy 1.8 และ Spring 3.1 profile support</p>
<p>8. action ใน Controller สามารถใช้ method ได้แล้ว ซึ่งแต่ก่อนจะสร้างด้วย closure เท่านั้น เช่น</p>
<p>def index() {<br />
}</p>
<p>9. สนับสนุน Servlet Asynchronous ของ Servlet 3.0 แล้ว</p>
<p>10. Scaffolding นั้นสร้างด้วยมาตรฐาน HTML5</p>
<p>11. มี jQuery มาให้ด้วยเลย</p>
<p><strong>Reference Website<br />
</strong></p>
<ul>
<li><a title="Grails 2.0.0.M1 now available!" href="http://grails.org/blog/view/admin/Grails+2.0.0.M1+now+available%21" target="_blank">Grails 2.0.0.M1 now available!</a></li>
<li><a title="What's new in Grails 2.0?" href="http://grails.org/doc/2.0.0.M1/guide/introduction.html#whatsNew" target="_blank">What’s new in Grails 2.0?</a></li>
</ul>
<p> </p>
</div>
</div>
<div class="article">
<span class="date">May 28, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1200" title="Multi-Tenant-Core">Multi-Tenant-Core</a></h2>
<span class="meta">Author: Eros - Categories: <a href="http://www.grails66.com/blog/?cat=14" title="View all posts in misc" rel="category">misc</a> - Tags: <a href="http://www.grails66.com/blog/?tag=core" rel="tag">core</a>, <a href="http://www.grails66.com/blog/?tag=multi" rel="tag">multi</a>, <a href="http://www.grails66.com/blog/?tag=tenant" rel="tag">tenant</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1200' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><div lang="th">ตอนนี้ หนูศึกษาจาก web นี้อยู่ค่ะ<br />
<span style="color: #6600cc"><span style="text-decoration: underline"><a href="http://multi-tenant.github.com/grails-multi-tenant-core/guide/index.html">http://multi-tenant.github.com/grails-multi-tenant-core/guide/index.html</a></span></span> </p>
<p>ลักษณะงานคือ ต้องการสร้าง server ที่ใช้ได้จากหลายบริษัท<br />
คิดว่าน่าจะทำเป็น Database per บริษัท</p>
<p>โดยใช้ชื่อ URL ต่างกันก้อด้าย เช่น<br />
“company1.blue-eye.com”<br />
“company2.blue-eye.com”</p>
<p>หรือจะทำแบบ check login user ก้อด้าย<br />
หรือทำทั้ง 2 แบบ</p>
<p>======================</p>
<p>หัวข้อที่ 2. Multi-Tenant Modes</p>
<p>หนูเลือกเป็น “singleTenant”</p>
<p>แล้วมันบอกว่า มีวิธี Resolving the DataSource 2 วิธี<br />
1) Mapping DataSources through Config.groovy<br />
2) Mapping DataSources through the database<br />
<span style="color: #3333ff">หนูไม่เข้าใจว่ามันต่างกันยังไง แล้วแบบไหนเหมาะกว่า?</span></p>
<p>ถ้าใช้วิธีที่ 1<br />
t1 = “jdbc:mysql://localhost/ets_dev1″<br />
t2 = “jdbc:mysql://localhost/ets_dev2″<br />
t3 = “jdbc:mysql://localhost/ets_dev3″<br />
<span style="color: #3333ff">แล้ว URL ที่ใช้เข้าเว็็บจาก <a href="http://localhost:8080/nuch">“http://localhost:8080/nuch”</a> จะเปลี่ยนเป็นอย่างอื่นรึป่าวคะ?<br />
<span style="color: #000000">พอเข้าไปแล้วมันฟ้อง<br />
org.codehaus.groovy.grails.web.mapping.exceptions.UrlMappingException: Error mapping onto view [/index]: Could not decode mapped tenant id from request server name localhost</span><br />
หรือเพราะโค้ดหนูยังไม่สมบูรณ์?</span></p>
<p>แล้ว เราต้อง CREATE DATABASE ets_dev1 2 3 เองใช่มั้ยคะ?</p>
<p>แล้ว<br />
<span style="color: #33ff33"> <span style="color: #c0c0c0">//JNDI Example</span><br />
t1 = “java:comp/env/myDataSource”</span><br />
<span style="color: #3333ff">ไม่มีได้มั้ยคะ?</span></p>
<p><span style="color: #000000">==================</span></p>
<p>หัวข้อที่ 3. Configure a Tenant Resolver</p>
<p>3.1 DNS Resolver Set Up<br />
มี 2 แบบ คือ<br />
1) Mapping subdomains using Config.groovy<br />
2) Mapping subdomains using the database<br />
<span style="color: #3333ff">มันต่างกันยังไง แล้วมีผลต่อ Database กับ URL อย่างไร?</span></p>
<p><span style="color: #000000">3.2 Acegi Resolver Set Up<br />
<span style="color: #3333ff">เราควรจะลง multi-tenant-acegi ใช่มั้ยคะ?<br />
พอลงแล้ว เราต้องสร้าง class User เองเหรอคะ? เห็นลงแล้วไม่มีให้</span></span></p>
<p>แล้ว “userTenantId” จะเป็น 1 or 2 or 3 … ใครเป็นคนกำหนด หรือว่ามันอัตโนมัติ?<br />
แล้วมีโอกาสที่เค้าจะโกหกเพื่อเอาข้อมูลบริษัทอื่นมั้ยคะ?</p>
<p><span style="color: #000000">รู้สึกว่าหนูจะไม่รู้เยอะมาก ต้องขอรบกวนพี่ๆหน่อยนะคะ ><<br />
ขอบคุณค่ะ</span></p>
<p> </p>
</div>
</div>
</div>
<div class="article">
<span class="date">May 27, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1196" title="Grails 1.4.0 M1 ออกมาแล้ว">Grails 1.4.0 M1 ออกมาแล้ว</a></h2>
<span class="meta">Author: up1 - Categories: <a href="http://www.grails66.com/blog/?cat=15" title="View all posts in news" rel="category">news</a> - Tags: <a href="http://www.grails66.com/blog/?tag=grails1-4-0" rel="tag">grails1.4.0</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1196' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>โดยใน version นี้มีหลายๆ อย่างที่เปลี่ยนแปลง และ ปรับปรุงให้ดีขึ้นมาก ส่วนที่น่าสนใจมีดังนี้</p>
<p>1. มาพร้อม Libraries ต่างๆ ดังนี้</p>
<ul>
<li>Spring Framework 3.1 M1</li>
<li>Groovy 1.8</li>
<li>Hibernate 3.6</li>
<li>Servlet 3.0</li>
<li>Apache Tomcat 7.0</li>
</ul>
<p>2. ฺBinary plugins<br />
3. Reload agent<br />
4. Plugin usage tracking<br />
5. Improve scaffolding UI ให้สนับสนุน HTML5<br />
6. มี Unit Testing ที่ดีขึ้น<br />
7. Abstract Inheritance Support in GORM<br />
8. GORM API now available to Java<br />
9. Include <a title="H2 database" href="http://www.h2database.com/html/main.html" target="_blank">H2</a> Database Engine เข้ามาเป็น default database แทนที่ HSQL</p>
<p>โดยในแต่ละ features นั้นจะนำมาอธิบายๆ อย่างละเอียดในบทความต่อๆ ไปครับ</p>
<p><strong>Reference Website</p>
<ul>
<li><span style="font-weight: normal;"><a title="Grails Release Note 1.4.0 M1" href="http://grails.org/1.4.0.M1+Release+Notes" target="_blank">Release Note of Grails 1.4.0 M1</a></span></li>
<li><span style="font-weight: normal;"><a title="Grails Document" href="http://grails.org/doc/1.4.0.M1/" target="_blank">Documentation</a></span></li>
<li><span style="font-weight: normal;"><a title="Changelog" href=" http://jira.grails.org/browse/GRAILS/fixforversion/11040" target="_blank">Changelog</a></span></li>
<li><span style="font-weight: normal;"><a href="http://dist.springframework.org.s3.amazonaws.com/milestone/GRAILS/grails-1.4.0.M1.zip" target="_blank">Download at Amazon S3</a></span></li>
</ul>
<p></strong></p>
<p> </p>
</div>
</div>
<div class="article">
<span class="date">May 23, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1192" title="[Slide] Groovy 1.8 update จากงาน GR8Conf Europe 2011">[Slide] Groovy 1.8 update จากงาน GR8Conf Europe 2011</a></h2>
<span class="meta">Author: up1 - Categories: <a href="http://www.grails66.com/blog/?cat=14" title="View all posts in misc" rel="category">misc</a> - Tags: <a href="http://www.grails66.com/blog/?tag=groovy" rel="tag">groovy</a>, <a href="http://www.grails66.com/blog/?tag=groovy1-8" rel="tag">groovy1.8</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1192' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>ไปเจอ slide ของ Guillaume Laforge ที่ไป present ในงาน GR8Conf Europe 2011 เลยนำมาบอกต่อครับ น่าสนใจมากๆ เกี่ยวกับ Groovy ครับ</p>
<div style="width:425px" id="__ss_8010619"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/glaforge/groovy-18-update-guillaume-laforge-gr8conf-europe-2011" title="Groovy 1.8 update - Guillaume Laforge - GR8Conf Europe 2011">Groovy 1.8 update – Guillaume Laforge – GR8Conf Europe 2011</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8010619" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/glaforge">Guillaume Laforge</a> </div>
</p></div>
</div>
</div>
<div class="article">
<span class="date">May 13, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1185" title="transaction ใน service">transaction ใน service</a></h2>
<span class="meta">Author: Eros - Categories: <a href="http://www.grails66.com/blog/?cat=14" title="View all posts in misc" rel="category">misc</a> - Tags: <a href="http://www.grails66.com/blog/?tag=service" rel="tag">service</a>, <a href="http://www.grails66.com/blog/?tag=transaction" rel="tag">transaction</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1185' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>ขอคำชี้แนะหน่อยค่ะ เรื่อง transaction ใน service ค่ะ<br />
AnyDomain.withTransaction { … }<br />
มันมีความสามารถในการ rollback แค่ไหนคะ<br />
ทำข้ามหลายๆ service methods กับหลายๆ domain ได้รึป่าว?</p>
<p>อย่างเช่น เรามี 3 methods คือ<br />
newBill( )<br />
newTxaction( )<br />
deleteBill( )<br />
ถ้าเราสั่ง deleteBill( ) แล้วต้องการให้การ save( ) ทั้งหมดใน<br />
newBill( ), newTxaction( ) ไม่ถูก save ในฐานข้อมูล จะทำได้มั้ยคะ?</p>
<p>ขอบคุณค่ะ</p>
</div>
</div>
<div class="article">
<span class="date">March 29, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1172" title="how to make runable jar file from groovy or grail project krub?">how to make runable jar file from groovy or grail project krub?</a></h2>
<span class="meta">Author: siamkom - Categories: <a href="http://www.grails66.com/blog/?cat=1" title="View all posts in Uncategorized" rel="category">Uncategorized</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1172' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>กำลังหัดใช้ groovy และ grails ครับ<br />
แต่ตอนนี้มีปัญหาว่า พอสร้าง Groovy Project ชื่อว่า hello_world เสร็จแล้ว ผมจะไปสร้าง jar file เพื่อมาทดลอง รัน ได้อย่างไรครับ<br />
ช่วยแนะนำด้วยครับ หรืออธิบายให้ด้วยครับ<br />
ขอบคุณมากครับ<br />
siamkom<br />
ปล. ตอนนี้ใช้ eclipse, netbeans และ STS อยู่ครับ </p>
</div>
</div>
<div class="article">
<span class="date">March 26, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1165" title="Error: installing mail plugin">Error: installing mail plugin</a></h2>
<span class="meta">Author: Prakart - Categories: <a href="http://www.grails66.com/blog/?cat=124" title="View all posts in issue" rel="category">issue</a> - Tags: <a href="http://www.grails66.com/blog/?tag=error" rel="tag">error</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1165' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p><strong>ปัญหา : </strong><br />
ใช้ SpringSource Tool Suite (Version: 2.5.2.RELEASE)<br />
ไม่สามารถใช้คำสั่ง grails > install-plugin mail ได้<strong><br />
</strong></p>
<p><strong><br />
Error:</strong><br />
Resolving plugin JAR dependencies …<br />
:: problems summary ::<br />
:::: WARNINGS<br />
::::::::::::::::::::::::::::::::::::::::::::::</p>
<p>:: UNRESOLVED DEPENDENCIES ::</p>
<p>::::::::::::::::::::::::::::::::::::::::::::::</p>
<p>:: org.springframework#org.springframework.test;3.0.5.RELEASE:<br />
configuration not found in<br />
org.springframework#org.springframework.test;3.0.5.RELEASE: ‘master’.<br />
It was required from org.grails.internal#surfsesh;0.29 test</p>
<p>::::::::::::::::::::::::::::::::::::::::::::::</p>
<p>Failed to install plugin [mail-1.0-SNAPSHOT]. Plugin has missing JAR<br />
dependencies.<br />
[delete] Deleting directory<br />
/var/lib/hudson/.grails/1.3.6/projects/workspace/plugins/mail-1.0-SNAPSHOT</p>
<p> </p>
<p><strong>Solution:<br />
</strong>1. เข้าไปที่ file BuildConfig.groovy และ เอา comment ออกที่บรรทัด mavenCentral()<br />
2. ลอง install-plugin mail ใหม่ อีกครั้ง<br />
ผล…<br />
“Download complete.<br />
Plugin mail-1.0-SNAPSHOT installed”<br />
<strong>Reference:</strong></p>
<p>http://grails.1312388.n4.nabble.com/spring-security-ui-depending-on-mail-plugin-gt-dependency-resolution-fails-td3238433.html</p>
</div>
</div>
<div class="article">
<span class="date">February 18, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1156" title="Grails 1.3.7 ออกมาแล้ว">Grails 1.3.7 ออกมาแล้ว</a></h2>
<span class="meta">Author: up1 - Categories: <a href="http://www.grails66.com/blog/?cat=15" title="View all posts in news" rel="category">news</a> - Tags: <a href="http://www.grails66.com/blog/?tag=grails1-3-7" rel="tag">grails1.3.7</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1156' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>โดยสิ่งที่ปรับปรุงใน version นี้ประกอบไปด้วย<br />
- Groovy 1.7.8<br />
- สามารถกำหนด parameters ที่จะไม่เก็บใน log ได้ โดยใช้<br />
grails.exceptionresolver.params.exclude = ['password', 'creditCard']</p>
<p>หรือถ้าไม่ต้องการใช้ development mode ก็สามารถปิดการเก็บ log ได้โดยใช้<br />
rails.exceptionresolver.logRequestParameters = false</p>
<p>ส่วน mode อื่นๆ เช่น testing, production จะปิดอยู่แล้ว</p>
<p>Changelog: <a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=11063&version=17032">See JIRA</a><br />
Download: <a href="http://grails.org/Download">http://grails.org/Download</a><br />
Documentation: <a href="http://grails.org/doc/1.3.x">http://grails.org/doc/1.3.x</a></p>
</div>
</div>
<div class="article">
<span class="date">January 8, 2011</span>
<h2 id="title"><a href="http://www.grails66.com/blog/?p=1143" title="การใช้งาน Redis ใน grails application">การใช้งาน Redis ใน grails application</a></h2>
<span class="meta">Author: up1 - Categories: <a href="http://www.grails66.com/blog/?cat=12" title="View all posts in tutorial" rel="category">tutorial</a> - Tags: <a href="http://www.grails66.com/blog/?tag=redis" rel="tag">redis</a></span>
<div class="postcontent">
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.grails66.com/blog/?p=1143' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p><strong>Redis คืออะไร</strong><br />
- OpenSource<br />
- Memory storage<br />
- NoSQL => Key-value</p>
<p>โดยใน Grails นั้นมี Redis plugin ให้ใช้งาน โดยใช้ Redis library ชื่อว่า JRedis ซึ่งจะเป็นการเปลี่ยน storage ใน GORM จาก Database มาเป็น Memory ซึ่งมี features เหมือนกับ GORM for Hibernate ดังนี้<br />
- Simple persistence methods<br />
- Dynamic finders<br />
- Criteria queries<br />
- Named queries<br />
- Inheritance</p>
<p>ส่วน features ที่ยังไม่สนับสนุนคือ<br />
- HQL queries<br />
- Dirty checking methods<br />
- Composite primary keys<br />
- Many-to-many associations (these can be modelled with a mapping class)<br />
- Any direct interaction with the Hibernate API<br />
- Sorting on strings<br />
- Custom Hibernate user types</p>
<p>ดังนั้นเราลองมาสร้าง project ที่ใช้ Redis กันดีกว่า ซึ่งมีขั้นตอนดังนี้</p>
<p><strong>1. ทำการติดตั้ง Redis Server ที่เครื่องก่อน ซึ่งแบ่งการติดตั้งตาม OS ดังนี้</strong><br />
1.1 สำหรับ Windows<br />
- <a href="http://code.google.com/p/servicestack/wiki/RedisWindowsDownload">ทำการ download จากที่นี่</a><br />
- ทำการ extract zip file ให้ทำการ click file redis-server.exe เพื่อ start redis server ซึ่งจะแสดงผลดังรูป<br />
<a href="http://www.grails66.com/blog/wp-content/uploads/2011/01/redis_001.png"><img src="http://www.grails66.com/blog/wp-content/uploads/2011/01/redis_001-300x68.png" alt="" title="redis_001" width="300" height="68" class="aligncenter size-medium wp-image-1144" /></a></p>
<p>1.2 สำหรับ Linux ให้ทำดังนี้<br />
- ทำการ download จากที่นี่ http://redis.io/download ซึ่งแนะนำให้ใช้ version 2.0.4<br />
- ทำการ extract file ที่ download และ start redis server มาด้วยคำสั่ง<br />
>tar xzf redis-2.0.4.tar.gz<br />
>cd redis-2.0.4<br />
>make<br />
>./redis-server</p>
<p><strong>2. สร้าง project ชื่อว่า test_redis</strong><br />
>grails create-app test_redis</p>
<p><strong>3. ทำการติดตั้ง Redis plugin และ config ดังนี้</strong><br />
>grails install-plugin redis</p>
<p>ทำการ config ใน file /grails-app/conf/Config.groovy ดังนี้</p>
<pre class="brush: java">
grails.redis.host="localhost"
grails.redis.port=6379 // Port ตามรูปด้านบน
//grails.redis.password="secret" //ตัวอย่างนี้ไม่ต้องการใช้ password
grails.redis.pooled=true
grails.redis.resources=15
grails.redis.timeout=5000
</pre>
<p><strong>4. สามารถใช้งาน Redis อย่างเดียว หรือ ใช้งานร่วมกับ Hibernate ได้ดังนี้</strong><br />
4.1 ใช้งาน Redis อย่างเดียว ให้ทำดังนี้<br />
- ทำการ uninstall hibernate plugin ด้วยคำสั่ง<br />
>grails uninstall-plugin hibernate</p>
<p>หลังจากที่ทำการ uninstall แล้ว Domain class จะใช้งาน Redis โดย default ทันที</p>
<p>4.2 ใช้งาน Redis ร่วมกับ Hibernate<br />
- หลังจากที่ทำการติดตั้ง Redis plugin แล้ว Domain class จะใช้งาน Hibernate โดย default แต่ถ้าต้องการใช้ Redis จะต้องเพิ่ม property ชื่อว่า mapWith ใน Domain class ดังนี้</p>
<pre class="brush: java">
static mapWith = "redis"
</pre>
<p>ตัวอย่างเช่น</p>
<pre class="brush: java">
package com.grails66
class User {
static mapWith = "redis"
String username
String password
static constraints = {
username()
password()
}
}
</pre>
<p>ตัวอย่างการใช้งานผ่าน Controller</p>
<pre class="brush: java">
package com.grails66
class UserController {
def scaffold = true
}
</pre>
<p>ทดลองใช้งานผ่าน url <a href="http://localhost:8080/test_redis/user/list">http://localhost:8080/test_redis/user/list</a> จะทำงานตามปกติไม่เปลี่ยนแปลง ดังรูป<br />
<a href="http://www.grails66.com/blog/wp-content/uploads/2011/01/redis_003.png"><img src="http://www.grails66.com/blog/wp-content/uploads/2011/01/redis_003-300x233.png" alt="" title="redis_003" width="300" height="233" class="aligncenter size-medium wp-image-1149" /></a></p>
<p>แต่ถ้าต้องการตรวจสอบว่าทำงานกับ Redis หรือไม่ให้ลองทำการปิด redis server ไปแล้วดูผลการทำงาน</p>
<p>จะแสดง error message ดังนี้<br />
<a href="http://www.grails66.com/blog/wp-content/uploads/2011/01/redis_002.png"><img src="http://www.grails66.com/blog/wp-content/uploads/2011/01/redis_002-300x107.png" alt="" title="redis_002" width="300" height="107" class="aligncenter size-medium wp-image-1145" /></a></p>
<p>นี่ก็เป็นตัวอย่างง่ายๆ สำหรับการใช้งาน Redis ใน Grails application</p>
<p><strong>Reference Website</strong><br />
<a href="http://redis.io/">Redis Server</a><br />
<a href="http://code.google.com/p/jredis/">JRedis :: Redis client library</a><br />
<a href="http://grails.github.com/inconsequential/redis/">Grails :: Redis plugin</a><br />
<a href="http://blog.springsource.com/2010/09/07/announcing-gorm-for-redis/">Announcing GORM for Redis</a><br />
<a href="http://code.google.com/p/servicestack/wiki/RedisWindowsDownload">Redis server for Windows</a></p>
</div>
</div>
<div class="navigation">
<div class="alignleft"><a href="http://www.grails66.com/blog/?paged=2" >« Older Entries</a></div>
<div class="alignright"></div>
</div>
</div></div>
<div class="sidebar">
<div class="leftsidebar"><div class="in">
<h2>Thai Grails User Group</h2> <div class="textwidget"><a href="http://groups.google.co.th/group/thai-grails-user?hl=th">กลุ่มผู้ใช้เกรลส์ในไทย</a></div>
<h2><a class='rsswidget' href='http://feeds.feedburner.com/planet66' title='Syndicate this content'><img style='border:0' width='14' height='14' src='http://www.grails66.com/blog/wp-includes/images/rss.png' alt='RSS' /></a> <a class='rsswidget' href='' title=''>Unknown Feed</a></h2> <h2>Recent Posts</h2> <ul>
<div id='fb-root'></div>
<script type='text/javascript'>
window.fbAsyncInit = function()
{
FB.init({appId: null, status: true, cookie: true, xfbml: true});
};
(function()
{
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
<li><a href="http://www.grails66.com/blog/?p=1223" title="อยากให้เปิดคอร์สสอน Grails & Groovy ครับ">อยากให้เปิดคอร์สสอน Grails & Groovy ครับ</a></li>
<li><a href="http://www.grails66.com/blog/?p=1213" title="เผลอนิดเดียวก็ปล่อย Grails 2.0M1 ออกมาแล้ว">เผลอนิดเดียวก็ปล่อย Grails 2.0M1 ออกมาแล้ว</a></li>
<li><a href="http://www.grails66.com/blog/?p=1200" title="Multi-Tenant-Core">Multi-Tenant-Core</a></li>
<li><a href="http://www.grails66.com/blog/?p=1196" title="Grails 1.4.0 M1 ออกมาแล้ว">Grails 1.4.0 M1 ออกมาแล้ว</a></li>
<li><a href="http://www.grails66.com/blog/?p=1192" title="[Slide] Groovy 1.8 update จากงาน GR8Conf Europe 2011">[Slide] Groovy 1.8 update จากงาน GR8Conf Europe 2011</a></li>
</ul>
<h2>Recent Comments</h2><ul id="recentcomments"><li class="recentcomments">siamkom on <a href="http://www.grails66.com/blog/?p=1223&cpage=1#comment-1083">อยากให้เปิดคอร์สสอน Grails & Groovy ครับ</a></li><li class="recentcomments"><a href='http://narisa.com/blog/up1/' rel='external nofollow' class='url'>up1</a> on <a href="http://www.grails66.com/blog/?p=1223&cpage=1#comment-1081">อยากให้เปิดคอร์สสอน Grails & Groovy ครับ</a></li><li class="recentcomments">Eros on <a href="http://www.grails66.com/blog/?p=635&cpage=1#comment-1077">แนะนำปลั๊กอิน DynamicJapser</a></li><li class="recentcomments">zeton on <a href="http://www.grails66.com/blog/?page_id=1094&cpage=1#comment-1074">หนังสือ Grails ภาษาไทย แจกฟรี</a></li><li class="recentcomments">popzadid on <a href="http://www.grails66.com/blog/?page_id=1094&cpage=1#comment-1065">หนังสือ Grails ภาษาไทย แจกฟรี</a></li></ul><h2>Tags</h2><div class="tagcloud"><a href='http://www.grails66.com/blog/?tag=bdd' class='tag-link-58' title='5 topics' style='font-size: 10.7814569536pt;'>bdd</a>
<a href='http://www.grails66.com/blog/?tag=beta' class='tag-link-102' title='2 topics' style='font-size: 8pt;'>beta</a>
<a href='http://www.grails66.com/blog/?tag=book' class='tag-link-91' title='6 topics' style='font-size: 11.4304635762pt;'>Book</a>
<a href='http://www.grails66.com/blog/?tag=bytecode' class='tag-link-39' title='2 topics' style='font-size: 8pt;'>bytecode</a>
<a href='http://www.grails66.com/blog/?tag=cheat-sheet' class='tag-link-43' title='2 topics' style='font-size: 8pt;'>cheat sheet</a>
<a href='http://www.grails66.com/blog/?tag=concept' class='tag-link-31' title='2 topics' style='font-size: 8pt;'>concept</a>
<a href='http://www.grails66.com/blog/?tag=dsl' class='tag-link-68' title='3 topics' style='font-size: 9.11258278146pt;'>dsl</a>
<a href='http://www.grails66.com/blog/?tag=easyb' class='tag-link-67' title='2 topics' style='font-size: 8pt;'>easyb</a>
<a href='http://www.grails66.com/blog/?tag=file' class='tag-link-106' title='2 topics' style='font-size: 8pt;'>file</a>
<a href='http://www.grails66.com/blog/?tag=gae' class='tag-link-151' title='3 topics' style='font-size: 9.11258278146pt;'>gae</a>
<a href='http://www.grails66.com/blog/?tag=git' class='tag-link-128' title='2 topics' style='font-size: 8pt;'>git</a>
<a href='http://www.grails66.com/blog/?tag=github' class='tag-link-72' title='2 topics' style='font-size: 8pt;'>github</a>
<a href='http://www.grails66.com/blog/?tag=gorm' class='tag-link-25' title='12 topics' style='font-size: 13.8410596026pt;'>gorm</a>
<a href='http://www.grails66.com/blog/?tag=grails' class='tag-link-7' title='96 topics' style='font-size: 22pt;'>grails</a>
<a href='http://www.grails66.com/blog/?tag=grails12' class='tag-link-158' title='6 topics' style='font-size: 11.4304635762pt;'>grails1.2</a>
<a href='http://www.grails66.com/blog/?tag=grails1-3' class='tag-link-191' title='8 topics' style='font-size: 12.357615894pt;'>grails1.3</a>
<a href='http://www.grails66.com/blog/?tag=griffon' class='tag-link-56' title='5 topics' style='font-size: 10.7814569536pt;'>griffon</a>
<a href='http://www.grails66.com/blog/?tag=groovy' class='tag-link-5' title='47 topics' style='font-size: 19.1258278146pt;'>groovy</a>
<a href='http://www.grails66.com/blog/?tag=gui' class='tag-link-52' title='2 topics' style='font-size: 8pt;'>gui</a>
<a href='http://www.grails66.com/blog/?tag=ide' class='tag-link-99' title='4 topics' style='font-size: 10.0397350993pt;'>ide</a>
<a href='http://www.grails66.com/blog/?tag=interview' class='tag-link-3' title='2 topics' style='font-size: 8pt;'>interview</a>
<a href='http://www.grails66.com/blog/?tag=jruby' class='tag-link-41' title='2 topics' style='font-size: 8pt;'>jruby</a>
<a href='http://www.grails66.com/blog/?tag=migration' class='tag-link-123' title='2 topics' style='font-size: 8pt;'>migration</a>
<a href='http://www.grails66.com/blog/?tag=mvc' class='tag-link-23' title='3 topics' style='font-size: 9.11258278146pt;'>mvc</a>
<a href='http://www.grails66.com/blog/?tag=netbeans' class='tag-link-90' title='3 topics' style='font-size: 9.11258278146pt;'>netbeans</a>
<a href='http://www.grails66.com/blog/?tag=newbie' class='tag-link-48' title='12 topics' style='font-size: 13.8410596026pt;'>newbie</a>
<a href='http://www.grails66.com/blog/?tag=news' class='tag-link-15' title='4 topics' style='font-size: 10.0397350993pt;'>news</a>
<a href='http://www.grails66.com/blog/?tag=paw' class='tag-link-18' title='2 topics' style='font-size: 8pt;'>paw</a>
<a href='http://www.grails66.com/blog/?tag=php' class='tag-link-11' title='2 topics' style='font-size: 8pt;'>php</a>
<a href='http://www.grails66.com/blog/?tag=plugin' class='tag-link-19' title='5 topics' style='font-size: 10.7814569536pt;'>plugin</a>
<a href='http://www.grails66.com/blog/?tag=podcast' class='tag-link-47' title='3 topics' style='font-size: 9.11258278146pt;'>podcast</a>
<a href='http://www.grails66.com/blog/?tag=polyglot' class='tag-link-10' title='2 topics' style='font-size: 8pt;'>polyglot</a>
<a href='http://www.grails66.com/blog/?tag=presentation' class='tag-link-115' title='4 topics' style='font-size: 10.0397350993pt;'>presentation</a>
<a href='http://www.grails66.com/blog/?tag=rails' class='tag-link-114' title='2 topics' style='font-size: 8pt;'>rails</a>
<a href='http://www.grails66.com/blog/?tag=release' class='tag-link-127' title='3 topics' style='font-size: 9.11258278146pt;'>release</a>
<a href='http://www.grails66.com/blog/?tag=spring' class='tag-link-80' title='7 topics' style='font-size: 11.8940397351pt;'>spring</a>
<a href='http://www.grails66.com/blog/?tag=springone' class='tag-link-112' title='3 topics' style='font-size: 9.11258278146pt;'>springone</a>
<a href='http://www.grails66.com/blog/?tag=springsource' class='tag-link-113' title='2 topics' style='font-size: 8pt;'>springsource</a>
<a href='http://www.grails66.com/blog/?tag=testing' class='tag-link-28' title='6 topics' style='font-size: 11.4304635762pt;'>testing</a>
<a href='http://www.grails66.com/blog/?tag=tips' class='tag-link-37' title='3 topics' style='font-size: 9.11258278146pt;'>tips</a>
<a href='http://www.grails66.com/blog/?tag=tutorial' class='tag-link-12' title='8 topics' style='font-size: 12.357615894pt;'>tutorial</a>
<a href='http://www.grails66.com/blog/?tag=twitter' class='tag-link-40' title='6 topics' style='font-size: 11.4304635762pt;'>twitter</a>
<a href='http://www.grails66.com/blog/?tag=validation' class='tag-link-100' title='4 topics' style='font-size: 10.0397350993pt;'>validation</a>
<a href='http://www.grails66.com/blog/?tag=vdo' class='tag-link-95' title='5 topics' style='font-size: 10.7814569536pt;'>vdo</a>
<a href='http://www.grails66.com/blog/?tag=zk' class='tag-link-33' title='6 topics' style='font-size: 11.4304635762pt;'>zk</a></div>
<h2>Categories</h2> <ul>
<li class="cat-item cat-item-27"><a href="http://www.grails66.com/blog/?cat=27" title="View all posts filed under article">article</a>
</li>
<li class="cat-item cat-item-16"><a href="http://www.grails66.com/blog/?cat=16" title="View all posts filed under idea">idea</a>
</li>
<li class="cat-item cat-item-3"><a href="http://www.grails66.com/blog/?cat=3" title="View all posts filed under interview">interview</a>
</li>
<li class="cat-item cat-item-124"><a href="http://www.grails66.com/blog/?cat=124" title="View all posts filed under issue">issue</a>
</li>
<li class="cat-item cat-item-14"><a href="http://www.grails66.com/blog/?cat=14" title="View all posts filed under misc">misc</a>
</li>
<li class="cat-item cat-item-15"><a href="http://www.grails66.com/blog/?cat=15" title="View all posts filed under news">news</a>
</li>
<li class="cat-item cat-item-17"><a href="http://www.grails66.com/blog/?cat=17" title="View all posts filed under quickpod">quickpod</a>
</li>
<li class="cat-item cat-item-12"><a href="http://www.grails66.com/blog/?cat=12" title="View all posts filed under tutorial">tutorial</a>
</li>
<li class="cat-item cat-item-1"><a href="http://www.grails66.com/blog/?cat=1" title="View all posts filed under Uncategorized">Uncategorized</a>
</li>
</ul>
<h2>Grails66 Cal.</h2><div id="calendar_wrap"><table id="wp-calendar">
<caption>January 2012</caption>
<thead>
<tr>
<th scope="col" title="Monday">M</th>
<th scope="col" title="Tuesday">T</th>
<th scope="col" title="Wednesday">W</th>
<th scope="col" title="Thursday">T</th>
<th scope="col" title="Friday">F</th>
<th scope="col" title="Saturday">S</th>
<th scope="col" title="Sunday">S</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="3" id="prev"><a href="http://www.grails66.com/blog/?m=201110" title="View posts for October 2011">« Oct</a></td>
<td class="pad"> </td>
<td colspan="3" id="next" class="pad"> </td>
</tr>
</tfoot>
<tbody>
<tr>
<td colspan="6" class="pad"> </td><td>1</td>
</tr>
<tr>
<td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td>
</tr>
<tr>
<td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td>
</tr>
<tr>
<td>16</td><td>17</td><td id="today">18</td><td>19</td><td>20</td><td>21</td><td>22</td>
</tr>
<tr>
<td>23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td>
</tr>
<tr>
<td>30</td><td>31</td>
<td class="pad" colspan="5"> </td>
</tr>
</tbody>
</table></div><h2>Grailsameta</h2> <ul>
<li><a href="http://www.grails66.com/blog/wp-login.php?action=register">Register</a></li> <li><a href="http://www.grails66.com/blog/wp-login.php">Log in</a></li>
<li><a href="http://www.grails66.com/blog/?feed=rss2" title="Syndicate this site using RSS 2.0">Entries <abbr title="Really Simple Syndication">RSS</abbr></a></li>
<li><a href="http://www.grails66.com/blog/?feed=comments-rss2" title="The latest comments to all posts in RSS">Comments <abbr title="Really Simple Syndication">RSS</abbr></a></li>
<li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li>
</ul>
</div></div>
<div class="rightsidebar"><div class="in">
<h2>BlogRoll</h2>
<ul>
<li><a href="http://www.django66.com">django66</a></li>
<li><a href="http://www.rails66.com">rails66</a></li>
<li><a href="http://spring66.com/" title="SpringFramework Information For Thai People" target="_blank">spring66</a></li>
</ul>
</div></div>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div><div style="height: 1px;"></div>
<div class="footer">
<div class="footer1">
<a href="http://www.grails66.com/blog/?feed=rss2" class="footer_rss">Entries (RSS)</a>
<a href="http://www.grails66.com/blog/?feed=comments-rss2" class="footer_rss_comm">Comments (RSS)</a>
<a href="http://www.wordpress.org/" class="footer_wp" target="_blank">WordPress</a>
<a href="http://www.grails66.com/blog/wp-admin/" class="footer_login">Log In</a>
</div>
<div class="footer2">
Theme by: <a href="http://www.sitepronews.com/" target="_blank">SiteProNews</a> Built for <a href="http://www.wordpress.com">Wordpress</a> </div>
</div>
<!--stats_footer_test-->
<!-- SyntaxHighlighter Stuff -->
<script type="text/javascript" src="http://www.grails66.com/blog/wp-content/plugins/syntaxhighlighter-plus/syntaxhighlighter/src/shCore.js"></script>
<script type="text/javascript" src="http://www.grails66.com/blog/wp-content/plugins/syntaxhighlighter-plus/syntaxhighlighter/scripts/shBrushJava.js"></script>
<!-- Reassign aliases -->
<script type="text/javascript">
SyntaxHighlighter.brushes.Java.aliases = ["java"];
</script>
<script type="text/javascript">
SyntaxHighlighter.all();
</script>
</body>
</html>