Javascript

<script type=”text/javascript” >
$(document).ready(function() {

var msg = 2;
$.urlParam = function(name) {
var results = new RegExp(‘[\\?&amp;]’ + name + ‘=([^&amp;#]*)’).exec(window.location.href);
return results[1] || 0;
};
$.ajax({
type: “POST”,
url: “TweetLazyLoad”,
cache: false,
data: “iduser=” + $.urlParam(‘userid’),
success: function(html) {
var obj = $.parseJSON(html);
var lang = “”;

$.each(obj, function() {
lang += “<tr>”;
lang += “<td hidden=’true’>” + this[‘idtweet’] + “</td>”;
lang += “<td id=’tdcontent’>” + this[‘content’] + “</td>”;
lang += “<td>” + this[‘date’] + “</td>”;
lang += “</tr>”;
msg = this[‘idtweet’];
});

$(“#tTable”).append(lang);
}
});

$(“.more”).click(function() {
$.ajax({
type: “POST”,
url: “TweetLazyLoad”,
data: “lasttweet=” + msg,
cache: false,
success: function(html) {
var obj = $.parseJSON(html);
var lang = “”;

$.each(obj, function() {
lang += “<tr>”;
lang += “<td hidden=’true’>” + this[‘idtweet’] + “</td>”;
lang += “<td id=’tdcontent’>” + this[‘content’] + “</td>”;
lang += “<td>” + this[‘date’] + “</td>”;
lang += “</tr>”;
msg = this[‘idtweet’];
});

$(“#tTable”).append(lang);
}
});
return false;
});
});
</script>

Html

<table id=”tTable” border=”2″>
</table>
<div id=”btn”>
<div id=”morebutton” >
<a id=”” href=”#” >
<div id=”moretext”>More</div>
</a>
</div>
</div>

Servlet

PrintWriter out = response.getWriter();
try {
HttpSession session = request.getSession(true);
if (request.getParameter(“lasttweet”) != null){
TweetDAO tweetDAO = new TweetDAO();
int lasttweetid = Integer.parseInt(request.getParameter(“lasttweet”));
List <Tweet> tweets = tweetDAO.timeline2(lasttweetid,Integer.parseInt(session.getAttribute(“idx”).toString()));
Gson gson = new Gson();
out.print(gson.toJson(tweets));
}else{
TweetDAO ttdao = new TweetDAO();
int iduser = Integer.parseInt(request.getParameter(“iduser”));
List <Tweet> ts = ttdao.timeline1(iduser);
Gson gs= new Gson();
out.print(gs.toJson(ts));
session.setAttribute(“idx”, iduser);
}

} finally {
out.close();
}

Functions:

public List<Tweet> timeline1(int iduser) {
List<Tweet> tweetlist = new ArrayList();
ResultSet rs;

try {
//sql code
rs = st.executeQuery(“Select * from tweet WHERE iduserfk=” + iduser + ” ORDER BY date desc limit 2;”);

} catch (Exception e) {
System.out.println(e);
}
return tweetlist;
}

public List<Tweet> timeline2(int idtweet, int iduser) {
List<Tweet> tweetlist = new ArrayList();
ResultSet rs;

try {

rs = st.executeQuery(“Select * from tweet WHERE idtweet<” + idtweet + ” AND iduserfk=” + iduser
+ ” ORDER BY date desc limit 2;”);
//sql code
} catch (Exception e) {
System.out.println(e);
}
return tweetlist;
}

Dikkat edilmesi gereken nokta timeline2 de where şartında son gönderdiğimiz tweet id sinden büyük olanın çekilmesi.

JSF Management Bean Yapısı

Yayınlandı: Aralık 1, 2013 / JSF

Management Bean JSF Framework e özel bir yapıdır. Management Bean sayesinde sayfa üzerinde yaşayan objelerin yaşam döngülerini kontrol edebiliriz. Asıl görevi ise class yapılarımızdaki objelerin JSF sayfalarında tanımlanması ve kullanılmasına yarar. Bu normal bir java classıdır. Kullanabilmek istenen class da class ın üst tarafına @ManagementBean yazmalıyız.

Management Bean’e isim verilmek istenirse şu şekilde yazılmalıdır: @Management(name=”beanName”)

JSF sayfalarında Bean çağırılırken bu isimle çağırılacaktır.

Management Beanlerin bir de Scope alanları mevcuttur.

Scope Alanları

SessionScoped : Bean’in Session boyunca yaşamasını sağlayan Scope alanıdır. Session sonlanana kadar objeler yaşamaya ve girilen değerlerini korumaya devam edecektir.

RequestScoped: Bir request – Response süresince yaşayan Bean alanıdır. Yani sayfa refresh olursa Bean ölür ve objeler değerlerini kaybeder.

ViewScoped: sayfa görünümü değişmediği sürece yaşayan Bean ler yaratmamızı sağlar. Yani Bean sayfa refresh olsada ölmez. Başka bir seyfaya geçiş yapılırsa Bean ölür.

Bunlar eklenirken @Management(name=”beanName”) yazdığımız yerin üst kısmına örneğin @SessionScoped şeklinde yazılmalıdır.

Basit bir kütüphane ekleyerek bilgisayara girdiğimiz yazının nasıl seslendirilebileceğini adım adım göstereceğim.  Bundan bir sonraki yazı ise sizin sesinizi algılayarak bilgisayara nasıl komut verilebileceği ile ilgili olacak (Speech to text).

1. Öncelikle http://sourceforge.net/projects/freetts/files/ bu linkten dosyamızı indirip masaüstüne çıkartıyoruz.

2. Eclipse açıp yeni bir Java Project oluşturuyoruz.

3. Oluşturduğumuz projeye sağ tıklıyarak Properties kısmına tıklıyoruz.

4. Properties > Java Build Path kısmına geliyoruz. Add External JARs butonuna tıklıyoruz. Buradan masaüstüne çıkarttığımız dosyayının yolunu buluyoruz. Dosyadaki lib klasörünün içindeki .jar uzantılı dosyaların hepsini seçiyoruz ve tamam diyoruz.

5. Gerekli kaynakları eklemiş olduk. Şimdi projemizde Speech adında yeni bir class oluşturuyoruz.

6. Kod içeriğini şu şekilde yapıyoruz.

Aşağıdaki kevin16 kısmı seslendiricidir. İstenilirse aşağıdakilerden biri de kullanılabilir;

kevin, kevin16, mbrola_us1, mbrola_us2, or mbrola_us3

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;
public class Speech { //Speech benim verdiğim class ismi siz kendinize göre değiştirmelisiniz.

public static void main(String args[]){

Voice v;
VoiceManager vm=VoiceManager.getInstance();
v=vm.getVoice(“kevin16”);

v.allocate();
v.speak(“Hi, I’m software engineer”);//Seslendirilecek kelime

}
}

Boolean: True yada false değerlerini alabilir.

Byte: Byte veri tipinin İhtiyacı olan bellek boyutu 1 Byte’dır.

Aldığı değer aralığı -128 ila 127 arasıdır.

Integer: Integer veri tipinin İhtiyacı olan bellek boyutu 4 Byte’dır.

Aldığı değer aralığı -2.147.483.648 ila 2.147.483.647 arasıdır.

Long: Long veri tipinin İhtiyacı olan bellek boyutu 8 Byte’dır.

Aldığı değer aralığı 9.223.372.036.854.775.808    ila 9.223.372.036.854.775.807 arasıdır.

Float: Float veri tipinin İhtiyacı olan bellek boyutu 4 Byte’dır.

Aldığı değer aralığı 1,40239846 * 10-45 ile 3,40282347 * 1038 

Double: Double veri tipinin İhtiyacı olan bellek boyutu 8 Byte‘dır.
Aldığı değer aralığı: 4,94065645841246544 * 10-324 ile 1,79769313486231570 * 10308

Short: Short veri tipinin İhtiyacı olan bellek boyutu 2 Byte’dır.

Aldığı değer aralığı -32.768 ila 32.767 arasıdır.

Char: Karakter veri tipi 2 Byte bellek boyutuna ihityaç duymaktadır. Karakter veri tipi char, sadece bir adet harf,rakam,sembol veya alfanumerik değeri alabilir.

String: String değişken tipi alfnumerik değişkenler tanımlamak için kullanılır. Yani string değişkenlere girilen değer bilgisayar tarafından yazı olarak algılanır ve üzerinde matematiksel işlem yapılamaz.

Oluşturduğumuz tabloda satır ve sütun koordinatlarını kullanarak veriye ulaşmak istiyorsak ;

String deger = String.valueOf(tabloAdi.getValueAt(kaçıncı satır,kaçıncı sütun)); burada dikkat edilmesi gereken ise değerler 1 den değil 0dan başlıyor. Örneğin ilk satır ilk sütundaki bir ifadeyi almak istiyorsak tabloAdi.getValueAt(0,0); yazmalıyız.

Eğer kullanıcının tablodan seçtiği bir değeri almak istiyorsak;

int tablo1satir=sirketTablo.getSelectedRow();//Hangi satır olduğunu alıyor.
int tablo1sutun=sirketTablo.getSelectedColumn();//Hangi sutun olduğunu alıyor

String secilendeger=String.valueOf(sirketTablo.getValueAt(tablo1satir,tablo1sutun));

“java.sql.SQLException: Too many connections” geçenlerde karşılaştığım bu hatanın sebebi oluşturduğumuz statementi kapatmayı unuttuğumuzdan dolayı oluşuyormuş. Örneğin bir formumuz var ve statement’i kapatmayı unuttuk bu formu sürekli açıp kapattığımızda statement tekrar tekrar oluşuyor ve sql güvenlik sebebiyle buna izin vermiyor.Yapacağımız tek şey ise;

Statement st;//Bir statement oluşturduk

try{
st=executeQuery(“select * from tablo”); //st ile sorgumuzu vs. yaptırdık
}catch(Exception ex){
ex.printStackTrace();
}

//işlemlerimizi yaptık.

try{
st.close(); //Bunu yaptığımızda st yi kapatacak ve too many connections hatasını ekrana gelmeyecek.
}catch(Exception ex){
ex.printStackTrace();
}

Formumuza yazdirButton adında bir button ve jtable adında bir tablo koyuyoruz ve tıklandığında tablonun yazdırılmasını istiyoruz.

//import etmemiz gerekenler.

import java.text.MessageFormat;

import java.awt.print.*;

private void yazdirButtonActionPerformed(java.awt.event.ActionEvent evt) {
MessageFormat header = new MessageFormat(“Üst Başlık”);
MessageFormat footer = new MessageFormat(“Alt Başlık”);

try{
jtable.print(JTable.PrintMode.FIT_WIDTH, header, footer);
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane, ex);
}
}

Bu kodları eklediğimizde yazdır butonuna tıkladığımızda sadece tablodaki verileri yazdıracaktır.

Java Try Catch Yapısı

Yayınlandı: Ocak 30, 2013 / Java
Etiketler:, ,

Çalışma zamanında herhangi bir hata oluştuğunda yapılacak işlemleri belirlememizi sağlar.SQL ifadelerinde çokça kullanılır.

Örneğin;

package trycatch;

public class Main {

public static void main(String[] args) {

try {

int a = 42 / 0;

} catch (Exception Hata) {

System.out.print(” Hata oluştu :” + Hata);

}
}
}

Javada kullanabileceğiniz bazı matematiksel fonksiyonlar:Java Matematiksel Fonksiyonlar

Textfield’den kullanıcı veri girerek sql tablomuzda nasıl yeni satır oluşturacağımızın kodlarını vereceğim:
1

Önce textfieldlerimizi oluşturalım ve bir tane buton ekleyelim. Daha sonra javayla SQL baglantimizi yapalım. ve ekleyeceğimiz tabloyu statement ile select yapalım.

personellerSonucKumesi = st.executeQuery(“SELECT * FROM  personeller”);

Ekle butonuna 2 kere tıkladığımız java kullanıcı butona tıkladığında neler yapılacağını yazacağımız kısmı açacaktır. ve kodlar:

//Adi, Soyadi, DogumTarihi, Gorevi sql’deki tablomuzda bulunun kolonların ismidir. 

//moveToInsertRow() ile javaya yeni kayıt ekleyeceğimizi söylüyoruz.

//personellerSonucKumesi.updateString(“Adi”,adTextField.getText()); ile

// “Adi” kolonuna oluşturduğumuz adTextField ‘den kullanıcının yazdığı kayıdı alarak eklemesini söylüyoruz.

private void ekleButonActionPerformed(java.awt.event.ActionEvent evt) {
try{
personellerSonucKumesi.moveToInsertRow();
personellerSonucKumesi.updateString(“Adi”,adTextField.getText());
personellerSonucKumesi.updateString(“Soyadi”,soyadTextField.getText());
personellerSonucKumesi.updateString(“DogumTarihi”,yasTextField.getText());
personellerSonucKumesi.updateString(“Gorevi”,goreviTextField.getText());
personellerSonucKumesi.updateString(“TelefonNumarasi”,telnoTextField.getText());
personellerSonucKumesi.insertRow();
JOptionPane.showMessageDialog(rootPane, “Yeni Kayit Eklendi”);

}catch(SQLException ex){
JOptionPane.showConfirmDialog(null, “Kayıt Eklenemedi”, “Kişiler Tablosu”, JOptionPane.PLAIN_MESSAGE);
}
}