bildirgec.org

Site arşivi: kodaman

Java Robot Sınıfı ile Kendiliğinden Hareket Eden Fare

admin | 18 January 2009 13:23

java.awt.Robot sınıfı kullanılarak birbirinden enteresan programlar yazabilirsiniz. Robot sınıfı temel olarak fare ve klavyenin kendi kendine otomatik olarak hareket ettirilmesini sağlar. Arcıca ekranın yakalanarak(screeshot) imajını bu sınıf yardımıyla alabilirsiniz.
Ben bir projede kullanmak için fareyi otomatik bir şekilde hareket ettirmem gerekiyordu. Robot sınıfı imdada yetişti. Aşağıdaki kodda öğrenme amaçlı yaptığım bir alıştırma mevcut. Bu uygulamada bir pencerenin tam ortasında “TEST” etiketi bulunmakta.

Fare bu programda otomatik olarak her 2 saniyede pencere içerisinde rasgele noktalara atlıyor. Eğer bu nokta etiket içerisinde ise “HEYY” yazısını görüyorsunuz.

Bu uygulamayı yapmak için Timerve Robot ve diğer bilinen Java sınıflarını kullandım. Şimdide koda geçelim:

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
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class TestFrame extends javax.swing.JFrame {
private JLabel lblTest;
private Robot robot ;
private Random rnd = new Random();
/**
* Constructor
*/
public TestFrame() {
super("Test Penceresi");
initGUI();
try {
robot = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
final Point p = this.getLocation();// pencerenin bulundugu yer sol ust
final Dimension d = this.getSize();// pencerenin buyuklugu
//Her iki saniyede bir mause hareket ettirilecek
Timer t = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
// acilan pencere uzerinde rastele bir noktaya fareyi götür.
robot.mouseMove(rnd.nextInt((int)(d.getWidth()))+(int)(p.getX()),
rnd.nextInt((int)(d.getHeight()))+(int)(p.getY()));
}
});
t.start();
}
/**
* GUI ile ilgili işlemler
*/
private void initGUI() {
try {
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
{
lblTest = new JLabel();
getContentPane().add(lblTest);
lblTest.setText("TEST");
lblTest.setBounds(106, 76, 177, 101);
lblTest.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
lblTest.setFont(new java.awt.Font("Tahoma", 0, 16));
lblTest.setBackground(new Color(255, 255, 179));
lblTest.setForeground(new Color(0, 0, 0));
lblTest.setOpaque(true);
lblTest.setAlignmentX(0.5f);
lblTest.setHorizontalAlignment(SwingConstants.CENTER);
// Fare TEST yazısının üzerine gelince HEYYY yazacak
// Ayrılınca tekrar TEST yazısı yazacak
lblTest.addMouseListener(new MouseAdapter() {
public void mouseExited(MouseEvent evt) {
lblTest.setBackground(new Color(255, 255, 179));
lblTest.setText("TEST");
}
public void mouseEntered(MouseEvent evt) {
lblTest.setBackground(Color.RED);
lblTest.setText("HEYYY!");
}
});
}
setSize(400, 300);
this.setLocation(100, 100);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Main
* @param args
*/
public static void main(String[] args) {
TestFrame inst = new TestFrame();
inst.setVisible(true);
}
}

10 Önemli WordPress Hilesi

admin | 17 January 2009 17:27

2008, WordPress kullanıcıları için çok iyi bir yıl oldu. Yazılım pek çok kez güncellenerek şu anki geçerli sürüm olan 2.7 sürümüne ulaştı ve kendisini WordPress’e adamış pek çok yeni blog faaliyete geçti. Elbette bu sırada bir sürü yeni WordPress hilesi keşfedildi ve bu hileler, bloglarını geliştirmek isyeyen kullanıcılara yardımcı oldu.

Bu makalede size sevdiğiniz bloglama motorunun gizli gücünü açığa çıkarmanıza yardımcı olacak 10 yeni ve kullanışlı WordPress Hilesini göstereceğiz. Her bir hilenin kendine özgü açıklaması da yer alacak, bu sayede sadece ilgili hileyi etkinleştirebilmek için ihtiyacınız olan kod parçacığına sahip olmakla kalmayacak, ayrıca o hilenin nasıl çalıştığını da anlayabileceksiniz.

Tekrarlanan Kolonlarda Margin ve Padding Taşmasından Kurtulmak

admin | 12 January 2009 10:52

CSS ile kolonlar (column) oluşturmak zor olmayan bir şey. Ancak sütunlarınız dinamik bir şekilde oluşuyorsa ve CMS ‘niz kodlarla oynamanıza pek izin vermiyorsa aşağıdaki resimdeki gibi taşmalar söz konusu olabilir.

Uneven Columns with CSS

Normal şartlarda (koda elle müdahele edebileceğiniz basit bir yapıya sahipseniz) son sütuna özel stil tanımlayıp sorundan kurtulabilirsiniz.

Peki dinamik bir yapıda çalışıyorsanız bu sorunun nasıl üstesinden geleceksiniz?
Çözüm
Sırasız listeyi(unordered list) sarmalayarak (wrapping) taşan marginleri saklamak!

Kendi İmalatın Flash Oyun…

admin | 12 January 2009 09:49

Her ne kadar ActionScript 3’ün çıkmasıyla AS 2 önemini yitirmeye başlasada halen daha önemli bir oranda kullanılmakta. En son baktığım bir ankette AS2 kullananlar AS3 kullananlardan daha fazlaydı. Ben de AS3’e geçemeyenlerden(alışamayanlardan)ım. Bunun sebebi okul dersleri ya da tekrardan uğraşmak istememek olabilir ama bence eğer 3 boyuta bulaşmayacaksanız AS2 size yeter. Nitekim ben de böyle düşünüp bir oyun hazırladım. Umarım beğenirsiniz….

İlk olarak oyunun gözünüzün önünde canlanması için sağ üst tarafa doğru ev gibi bir yapı düşünün, buradan aşağıya doğru saksılar atılıyor. Bizim amacımız ise bu saksıları yere değmeden havadayken aşağı yukarı kafasını çevirebildiğimiz top benzeri savaş aletiyle ateş ederek vurmak. Saksılar yere değerse hp_mc isimli, bizim kalan canımızı gösteren bar’ın _xscale’si azalıyor nitekim 0 olunca oyun bitiyor.

IE-Firefox arasındaki farklar için Reset.css

admin | 09 January 2009 11:02

Benim gibi HTML / XHTML arayüz kodlama yapan kişilerin; IE ve Firefox arasınki farklılık herzaman canını sıkmıştır.
Reset.css yada ieHack kullanarak fix etmek mümkün fakat gerek impression gerekse performans açısından, css tag’larına default değer vermek en sağlıklı yol olacaktır.

Bu konuda oluşturduğum css modelinin üzerinden layout’a devam edebilirsiniz.

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
/*=========================================================================== */
/* CSS Document Stylesheet
============================================================================= */
/* ========================================================================== */
/* ---------->>> RESET CSS
/* ============================w============================================= */
/*reset.css*/
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}
table{border-collapse:collapse;border-spacing:0;}
fieldset,img{border:0;}
address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
ol,ul {list-style:none;}
caption,th {text-align:left;}
h1,h2,h3,h4,h5,h6{font-size:11px;font-weight:normal;}
q:before,q:after{content:'';}
abbr,acronym {border:0;}
/*fonts.css*/
body{font-size:11px; font-family:Tahoma,Arial;color:#333333;}
select, input, textarea {font-size:11px; font-family:Tahoma,Arial;}
body * {line-height:16px;}
/* ========================================================================== */
/* ---------->>> BOX CONTROL
/* ========================================================================== */
.aCenter { text-align:center; }
.aRight { text-align:right; }
.aLeft { text-align:left;}
.vCenter { vertical-align:middle; }
.vTop { vertical-align:top; }
.vBottom { vertical-align:bottom; }
.vTopLeft { vertical-align:top; text-align:left; }
.clear { clear:both; }
.fLeft { float:left; }
.fRight { float:right; }
.fix { display:block; }
.posab { position:absolute; }
.b { font-weight:bold; }
.pointer { cursor:pointer; }
.noBorder { border-color:transparent; }
.noBG { background:transparent; }
/* ========================================================================== */
/* ---------->>> FORM OBJECT STARTING
/* ========================================================================== */
input {border:1px solid #d6d6d6; font-family:"lucida grande",tahoma,verdana,arial,sans-serif; font-size:11px; padding:4px; }
input:hover {border:#dcb56b 1px solid}
.button {background:#000 none repeat scroll 0%;border:1px solid #494949;color:#fff;font-family:Tahoma, Arial;
font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;line-height:normal; padding:2px 4px 2px 4px; cursor:pointer}
.button:hover { background:#494949; }
/* ========================================================================== */
/* ---------->>> WİDTH STARTING
/* ========================================================================== */
.w5 { width:5px; }
.w10 { width:10px; }
.w15 { width:15px; }
.w20 { width:20px; }
.w25 { width:25px; }
.w30 { width:30px; }
.w35 { width:35px; }
.w40 { width:40px; }
.w45 { width:45px; }
.w50 { width:50px; }
.w60 { width:60px; }
.w70 { width:70px; }
.w80 { width:80px; }
.w90 { width:90px; }
.w100 { width:100px; }
.w125 { width:125px; }
.w150 { width:150px; }
.w175 { width:175px; }
.w190 { width:190px; }
.w200 { width:200px; }
.w210 { width:210px; }
.w215 { width:215px; }
.w225 { width:225px; }
.w250 { width:250px; }
.w275 { width:275px; }
.w300 { width:300px; }
.w350 { width:350px; }
.w400 { width:400px; }
.w450 { width:450px; }
.w500 { width:500px; }
.w550 { width:550px; }
.w600 { width:600px; }
.w700 { width:700px; }
.w750 { width:750px; }
.w760 { width:760px; }
.w900 { width:900px; }
.wauto { width:auto; }
/* Width end */
/* ========================================================================== */
/* ---------->>> HEIGHT STARTING
/* ========================================================================== */
.h5 { height:5px; }
.h10 { height:10px; }
.h15 { height:15px; }
.h20 { height:20px; }
.h25 { height:25px; }
.h30 { height:30px; }
.h35 { height:35px; }
.h40 { height:40px; }
.h45 { height:45px; }
.h50 { height:50px; }
.h75 { height:75px; }
.h85 { height:85px; }
.h100 { height:100px; }
.h125 { height:125px; }
.h150 { height:150px; }
.h175 { height:175px; }
.h200 { height:200px; }
/* height end */
/* ========================================================================== */
/* ---------->>> PADDING STARTING
/* ========================================================================== */
/* padding style start */
.nopad {padding:0px; }
.pad1 {padding:1px; }
.pad2 {padding:2px; }
.pad3 {padding:3px; }
.pad4 {padding:4px; }
.pad5 {padding:5px; }
.pad10 {padding:10px; }
.pad15 {padding:15px; }
/* padding style end */
/* padding-left style start */
.padL1 {padding-left:1px; }
.padL2 {padding-left:2px; }
.padL3 {padding-left:3px; }
.padL4 {padding-left:4px; }
.padL5 {padding-left:5px; }
.padL10 {padding-left:10px; }
.padL15 {padding-left:15px; }
.padL20 {padding-left:20px; }
/* padding-left style end */
/* padding-right style start */
.padR1 {padding-right:1px; }
.padR2 {padding-right:2px; }
.padR3 {padding-right:3px; }
.padR4 {padding-right:4px; }
.padR5 {padding-right:5px; }
.padR10 {padding-right:10px; }
.padR15 {padding-right:15px; }
.padR20 {padding-right:20px; }
/* padding-right style end */
/* padding-top style start */
.padT1 {padding-top:1px; }
.padT2 {padding-top:2px; }
.padT3 {padding-top:3px; }
.padT4 {paddi ng-top:4px; }
.padT5 {padding-top:5px; }
.padT7 {padding-top:7px; }
.padT10 {padding-top:10px; }
.padT15 {padding-top:15px; }
.padT20 {padding-top:20px; }
/* padding-top style end */
/* padding-bottom style start */
.padB1 {padding-bottom:1px; }
.padB2 {padding-bottom:2px; }
.padB3 {padding-bottom:3px; }
.padB4 {padding-bottom:4px; }
.padB5 {padding-bottom:5px; }
.padB10 {padding-bottom:10px; }
.padB15 {padding-bottom:15px; }
/* padding-bottom style start */
/* PADDING END */
/* ========================================================================== */
/* ---------->>> MARGIN STARTING
/* ========================================================================== */
/* margin style start */
.marLRauto { margin-left:auto; margin-right:auto; }
.nomar {margin:0px; }
.mar1 {margin:1px; }
.mar2 {margin:2px; }
.mar3 {margin:3px; }
.mar4 {margin:4px; }
.mar5 {margin:5px; }
.mar6 {margin:6px; }
.mar10 {margin:10px; }
.mar15 {margin:15px; }
.mar30 {margin:30px; }
/* margin style end */
/* margin-left style start */
.marL1 {margin-left:1px; }
.marL2 {margin-left:2px; }
.marL3 {margin-left:3px; }
.marL4 {margin-left:4px; }
.marL5 {margin-left:5px; }
.marL10 {margin-left:10px; }
.marL15 {margin-left:15px; }
.marL20 {margin-left:20px; }
.marL30 {margin-left:30px; }
.marL40 {margin-left:40px; }
.marL100 {margin-left:100px; }
/* margin-left style end */
/* margin-right style start */
.marR1 {margin-right:1px; }
.marR2 {margin-right:2px; }
.marR3 {margin-right:3px; }
.marR4 {margin-right:4px; }
.marR5 {margin-right:5px; }
.marR7 {margin-right:7px; }
.marR10 {margin-right:10px; }
.marR15 {margin-right:15px; }
.marR20 {margin-right:20px; }
/* margin-right style end */
/* margin-top style start */
.marT1 {margin-top:1px; }
.marT2 {margin-top:2px; }
.marT3 {margin-top:3px; }
.marT4 {margin-top:4px; }
.marT5 {margin-top:5px; }
.marT10 {margin-top:10px; }
.marT15 {margin-top:15px; }
.marT20 {margin-top:20px; }
/* margin-top style end */
/* margin-bottom style start */
.marB1 {margin-bottom:1px; }
.marB2 {margin-bottom:2px; }
.marB3 {margin-bottom:3px; }
.marB4 {margin-bottom:4px; }
.marB5 {margin-bottom:5px; }
.marB10 {margin-bottom:10px; }
.marB15 {margin-bottom:15px; }
/* margin-bottom style start */
/* margin END */

Nesne Yönelimli Javascript Uygulamaları

admin | 07 January 2009 10:50

Javascript, her ne kadar bazı yüksek uçan programcılar tarafından bir programlama dili olarak görülmese de (hatta bu sözcüğü olur olmadık kullanmanıza kızarlar) oldukça sağlam ve kendisine insanı hayran bırakan gelişmiş özellikleriyle, bir çok programlama diline taş çıkartıyor. Tüm bu kabiliyetlerini biz sineye çekiyor ve mütevazilik adına javascript’e, ismi gereği script dili demeyi tercih ediyoruz.

javascript, yapısı gereği, bir uygulama oluşturmaya başladığınız andan itibaren, her işlemi bir nesneye yaptırır. İki adım öteye gitmek için nesnelerden başka seçeneğiniz yoktur. Örneğin bir fonksiyon yazmaya karar verdiniz diyelim.

En Çok Kullanılan CSS Sınıf (Class) İsimleri

admin | 05 January 2009 09:23

Pek çok geliştiricinin, elementlere sınıf isimleri atarken kafası karışır ve genellikle yanlış isimler atarlar. Sınıf isimleri bir elementin nasıl göründüğünü ya da nerede konumlandırıldığını tanımlamamalı. İyi bir sınıf ismi, bir elementin neyi yansıttığını tanımlamalıdr. Bu makalede benim en çok kullandığım 10 sınıf ismini açıklamaları ile birlikte listeleyeceğim. Umarım bu makaleyi okuduktan sonra ne tür sınıf isimleri kullanmanız gerektiği konusunda net bir fikriniz olur.

class=”fixed”
Bu sınıf adını her stil şablonunda, sola/sağa dayalı (float) ast (child) elementleri içeren kapsayıcılar üzerinde, içerisindeki elementleri temizlemek için şu şekilde kullanırım.

Güvenli PHP Uygulamaları Yazmak İçin Edinmeniz Gereken 7 Alışkanlık

admin | 04 January 2009 14:14

PHP uygulamasında güvenlik uzaktan ve yerel güvenlik endişelerini içerir. PHP geliştiricilerinin her iki karakteristiği de içine alan uygulamalar geliştirebilmeleri için sahip olmaları gereken 7 alışkanlığı bu makalede listelemeye çalışacağım.

Konu güvenliğe geldiğinde, işletim sistemi ve platform güvenlik sorunlarının yanısıra kendi yazdığınız uygulamaların da güvenli olduğuna emin olmanız gerekmektedir. PHP uygulamaları yazarken aşağıdaki 7 maddeyi alışkanlık haline getirirseniz uygulamalarınızın mümkün olan en güvenli şekilde olacağına emin olabillrsiniz.

GZip ile Veri Transferini Düşürmek

admin | 03 January 2009 18:45

Bildiğiniz üzere ülkemizdeki internet çok pahalı ve bu yüzden de birçok kişi sınırlı ADSL kullanmak zorunda kalıyor; 4GBcık. Peki, sınırlı ADSL kullanıcıları için ne yapabiliriz? GZip’li veri transveri. GZip ile web sayfaları sunucuda %70 – %80 oranında sıkıştırılır, sıkıştırılmış olarak göderilir, istimcede açılır.

Bu yöntemle internet trafiğini hem ziyaretçi için hem de genel ağı kullananlar için rahatılmış olunur, web sitesi daha hızlı download edilir, 4GB sınırlı internet kullanıcılarının kotaları boşa harcanmaz, bandwidth’den tasarruf edilir… Tabii yan etkileri de var ama çok da önemli olduklarını düşünmüyorum; sunucunun ve istemcinin işlemcileri biraz daha fazla çalıştırcak.

Sizi CSS3 İle Tanıştıracak 5 Teknik

admin | 03 January 2009 18:00

CSS, websitelerini stillemek için iyi bilinen ve geniş kesimler tarafından kullanılan bir dildir. Halen üzerinde çalışılan üçüncü sürümü ile geliştiricilere zaman kazandıracak pek çok özellik CSS’ye dahil edilecektir. Her ne kadar sadece en modern tarayıcılar tarafından bu özellikler desteklense de, yakında geniş kesimler tarafından kullanılabilecek olan bu yeniliklerin neler olduğunu şimdiden görmek güzel. Bu rehberde size CSS3 ile hayatımıza girecek olan 5 tekniği göstereceğim.

1: Genel Biçimlendirme

Dersimize başlamadan önce gelin dersimiz süresince kullanacağımız genel biçimlendirmemizi oluşturalım.