Jump to content

Bitmap

Üye
  • Posts

    1676
  • Joined

  • Last visited

7 Followers

Profile Information

  • Male
  • /bin/bash

Recent Profile Visitors

10621 profile views

Bitmap's Achievements

Newbie

Newbie (1/14)

  • First Post Rare
  • Collaborator Rare
  • Posting Machine Rare
  • Week One Done Rare
  • One Month Later Rare

Recent Badges

44

Reputation

  1. CocoCut diye bir eklenti var. Benim gördüğüm en kapsamlı video downloader eklentisi bu. Deneyebilirsin https://chrome.google.com/webstore/detail/video-downloader-cococut/gddbgllpilhpnjpkdbopahnpealaklle
  2. Merhaba, evimde kullandığım 10 yıllık bir masaüstü bilgisayar var. Şu an kullandığım da 8 yıllık bir laptop. İkisinde de SSD var. Bir problem yaşamazsın. Masaüstü - Laptop arasındaki tek fark, SSD'ler 2.5' olduğundan dolayı masaüstündeki 3.5' HDD yuvalarına bir aparat ile beraber takıyorsun. Ama Laptop olduğu için sorun olmaz, girişler yıllardır aynı standart. Benim laptopta kullandığım SSD "WD 3D Nand 250 SSD". Gayet güzel bir cihaz, 2 yıldır kullanıyorum. Memnunum. 100 TB yazma ömrü var. Çok uzun süre götürecektir. Masaüstünde ise OCZ Vector 128 GB. Bu da 5 yıllık bir SSD. Bir problem yaşamadım şimdiye kadar. Bu SSD'yi 3 yıl laptopta kullanıp sonra PC'ye taktım. İş bilgisayarımda ise Sandisk marka bir SSD vardı. 2 yıl kullandım, yine bir problem yaşamadım. Ama "WD 3D Nand 250 SSD" baya güzel bir parça. SSD alırken tek önerim küçük kıyaslara girme. Bu SSD okuma 560 MB/s miş, diğeri 530 MB/s yavaş olur gibi küçük kıyaslara girmeni önermem. Zaten o ufak tefek farkları hissetmiyorsun bile. Onun yerine yazma ömrüne ve kullanılan teknolojilere bakıp kıyaslayarak almanı öneririm. Umarım yardımcı olur.
  3. Merhaba, İlk olarak C#'ta propert'leri override etmeni önermem. Ama bunun yerine event'ları override edebilirsin. input'a girildiğinde varolan değerini al, değiştiğinde validate et, eğer uymuyorsa eskiye döndür, uyuyorsa devam et. Aşağıdaki gibi bir kod parçası ile çözebilirsin. Denemedim ama hemen hemen böyleydi. private string _previous; protected override void OnGotFocus(EventArgs e) { _previous = base.Text; } protected override void OnTextChanged(EventArgs e) { if(!validation()){ /// eski değere dön base.Text = _previous; } else{ /// eski değeri set et base.OnTextChanged(e); /// optional: eski değer şimdiki değer yap. _previous = base.Text; } } Bana kalsa databinding ile yapıp, model property'lerini input'lara bind ederdim. MVVM style.. İkinci olarak PHP'deki düşünce tarzını C#'ta uygulamaya çalışırsan çok zorlanırsın, hele ki Desktop app'e uygulamaya çalışırsan 2 kat daha çok zorlanırsın.
  4. valla 6 yıl sonra konu hala devam ediyo ha, evime internet bağlandıktan 2 ay sonra açmıştım bu konuyu, lise bitti üniversite bitiyo, teknoloji de gelişiyo tabi şimdi indirmeler, sync, cloud, falan filan 300 gb falan oluyo aylık normal kullanımda 3 pc eğer download oyun film falan girmişsem 460 470 i görüyor
  5. Blog'uma yazdığım yazıyı sizinle de paylaşmak istedim, İyi okumalar :) Mvc 1.0 nedir? Java EE’de bir eksikliği gidermek üzere oluşturulan JSR 371 koduyla bildiğimiz bir web çatısı olarak Java EE 8 ile hayatımıza girecek bir framework var: Java EE8 MVC 1.0 API. Bu yazımda, uzun süredir ilgimi çeken MVC 1.0 ile ilgili anladıklarımı yazmaya çalışacağım. Bu API ile Java EE çatısındaki istek-tabanlı(request-based) bir web çatısı eksikliği de çözülmüş oluyor. Yani Spring MVC gibi 3. Parti uygulamalar gerekmeksizin Java’da da istek tabanlı web uygulamaları kolaylıkla yazılabilecek. Java içinde zaten MVC Framework yokmuydu? Aslında Java EE içinde hali hazırda bir MVC web çatısı bulunmaktaydı : JSF(Java Server Faces). Ancak JSF bileşen tabanlı(component-based)ydı ve karmaşıklığı üst düzeydeydi. Haliyle öğrenmesi ve geliştirmesi biraz daha zaman alıyordu. Bunun yanında özelleştirmeleri uygulamak biraz daha zordu. View olarak XHTML dosyalarını kullanıyor, Controller olarak ManagedBean’ler vardı ve tüm işlemler HTTP POST istekleri üzerinden yapılıyordu. GET isteklerini desteklemiyordu. Bir nevi masaüstü programı gibi çalışıyordu diyebiliriz. MVC1.0 çatısı ise JAX-RS web servis altyapısı üzerine kurulu geliyor. Yani JAX-RS‘in bize sunduğu herşeyi kullanabiliyoruz. Diğer taraftan View katmanında basit jsp dosyalarını kullanıyor. Controller olarak ise ise @Controller anotasyonu ile işaretlenmiş bir sınıf kullanmamız yeterli. HTTP isteklerinin hepsini destekliyor ve HTTP üzerinden gelen isteklerini metotlar ile yakalayıp kullanıcıya cevap verebiliyoruz. Bu da daha sade, daha az kod ile daha hızlı geliştirme yapmamızı sağıyor ve bakımı kolaylaştırıyor. Bir uygulama yaparak nasıl çalıştığına bir göz atalım Demo Uygulamayı çalıştırabilmek için Glassfish Nightly Build'lerden birini kullanmamız gerekmektedir. Ben son sürümünü kullandım Şimdi bir Hello World uygulaması yazalım. 1.pom.xml dosyamıza gereken bağımlılıkları ekliyoruz. 2.Ardından bir adet Jax-RS Application Configuration Class tanımlıyoruz. jax-rs kökdizin olarak mvc yazdım. İsterseniz siz değiştirebilirsiniz. -------- 3.Ardından ise Controller'ımızı hazırlıyoruz Models class'ı javax.mvc içinde bulunan ve model verilerini view'a taşıyan classtır. Java CDI'ın @Inject anotasyonu ile Modelimize gerekli Nesneyi Runtime'da enjekte ediyoruz. --------- 4.Son olarakta message.jsp dosyamızı hazırlıyoruz Burada jsp'nin tüm nimetlerinden faydalanabilirsiniz. view içinde tamamen özgürsünüz. Models içine gönderdiğimiz tüm veriler değişken olarak jsp dosyamıza aktarılacaktır. --- Sonuç olarak http://localhost:8080/JavaMVC1.0/mvc/message/kazimadresine girdiğimde ise Şeklinde websayfasının yüklendiğini görüyoruz. Eclipse içindeki browser'dan çalışmayabiliyor, Firefox ile görüntülediğimde ise sorunsuz çalıştığını gördüm. --- Ozark (MVC 1.0) projesi şu anda Milestone1 aşamasında ve bir yıl içinde birçok özelllik (hata denetimi, form validation gibi) eklenmiş şekilde kullanıma sunulacak. Bu şekilde en azından temel kullanımını görmüş olduk. Uygulamadaki Kullanılan kod parçalarına "bu adresten", tüm projeye ise "github üzerinden" ulaşabilirsiniz.
  6. Sistemin 64 bit ise "Microsoft.ACE.OLEDB.12.0" kullanman lazım. Ayrıca Access Database Engine'i kurarsan problem kalmaz.
  7. Program.cs içinden kontrol edersen eğer kapatıp açabilirsin, ama pek sağlıklı bir yöntem değil.
  8. Form_Load'a ClearSelection ekle, ardından click event'ına istediğini yaptır.
  9. İki farklı dataset oluşturup onları veritabanı ile senkronize etmeden okutuyor olabilir misin?
  10. Dediğin "aynı kolona kaydetme" SQL mantığına tamamen ters, verileri tablolara kaydedersin. kolonlar tablonun yapısını oluşturur.   SQL sorgularını ve programda veriye eriştiğin bölümleri belirtirsen yardım alman kolaylaşacaktır. Ayrıca verdiğin bilgi kısıtlı, biraz daha geniş anlatır mısın?
  11. Connection String ile ilgili olma ihtimali yüksek.. Connection Stringi yazar mısın?
  12. Merhaba, bugün java ile sqlite’ın java’da nasıl kullanıldığını anlatmaya çalışacağım. Öncelikle Sqlite nedir Ondan başlayalım. Sqlite sunucu gerektirmeyen (dolayısıyla kolayca taşınabilir), açık kaynak kodlu ve ilişkisel bir veritabanıdır. Sqlite birçok android projesinde, gömülü sistemlerde, ve tek kullanıcılı (Aynı anda bir kullanıcının kullandığı) uygulamalarda kullanılabilir. Oldukça küçük ve hızlıdır. Şimdi Java ile nasıl entegre edeceğimizi inceleyelim: Kurulum Sqlite JDBC kütüphanesini indirmemize gerekiyor. Bu adresten indirebilirsiniz. Bunu indirdikten sonra oluşturduğumuz projeye ekliyoruz. Projeye sağ tık->properties->”java built path"->"libraries"e geldikten sonra "add external jar" diyoruz ve indirdiğimiz .jar dosyasını seçip projeye ekliyoruz. Aşağıdaki örneği görebilirsiniz: Program Projeye Github üzerinden ulaşabilirsiniz. Telefon rehberi benzeri bir senaryomuz var. Rastgele oluşturulacak verileri programa kendisi girecek, günceleyecek, listleyecek ve silecek. Veritabanımız Aşağıdaki biçimde hazırlandı: Öncelikle SqliteDatabase classımızı oluşturalım. Yüklediğimiz sqlite kütüphanesindeki org.sqlite.JDBC classını kullanarak bağlantı nesnemizi oluşturacağız ve jdbc:sqlite:C:\\Database\\Adresi.sqlite şeklinde bir bağlantı cümlesi ile veritabanına bağlanacağız. Aşağıdaki class’tan connect() methodunu inceleyebilirsiniz: protected void connect() throws SQLException { try { Class.forName("org.sqlite.JDBC"); /// sınıfı yükledik conn = DriverManager.getConnection("jdbc:sqlite:" + dbName); ///dbName değişken olarak geliyor. } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Geri kalanı ise diğer veritabanları ile aynı, sorgu yapacağız ve sonucu gelecek. PHP’den alışkanlık olarak bir Database class’I yazma ihtiyacı hissettim. Aşağıda bulabilirsiniz. Sorguları ise bu class’taki iki metot execute ve query ile işlemlerimizi gerçekleştireceğiz. Execute’i update,insert,delete komutları ile, query’i ise select komutu ile kullanacağız. Bu class’I düzenleyip istediğiniz DBMS ile kullanabilirsiniz. SqliteDatabase.java package com.github.kbayram; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class SqliteDatabase { private Connection conn; private String dbName; public SqliteDatabase(String dbName) { this.dbName = dbName; } /** * This method for select statement * * @param sql : sql query * @param params Prepared statement parameters * @return ResultSet * @throws SQLException */ public ResultSet query(String sql, Object... params) throws SQLException { PreparedStatement stmt = prepare(sql, params); stmt.execute(); return stmt.getResultSet(); } public ResultSet query(String sql) throws SQLException { return query(sql, new Object[] {}); } /** * This method for insert,delete,update statements * * @param sql query sentence * @param params Prepared statement parameters * @return int count of affedted rows * @throws SQLException */ public int execute(String sql, Object... params) throws SQLException { PreparedStatement stmt = prepare(sql, params); stmt.execute(); return stmt.getUpdateCount(); } public int execute(String sql) throws SQLException { return execute(sql, new Object[] {}); } /** * Create a preperared statement and add parameters to this statement. * @param sql * @param params * @return * @throws SQLException */ private PreparedStatement prepare(String sql, Object... params) throws SQLException { connect(); PreparedStatement stmt = conn.prepareStatement(sql); int i = 0; for (Object param : params) { stmt.setObject(++i, param); } return stmt; } /** * Create connection to database. * @throws SQLException */ protected void connect() throws SQLException { try { Class.forName("org.sqlite.JDBC"); conn = DriverManager.getConnection("jdbc:sqlite:" + dbName); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * Close connection from database; * @throws SQLException */ protected void disconnect() throws SQLException { if (conn != null && !conn.isClosed()) { conn.close(); conn = null; } } /** * Close connection when object swept by GC * @throws SQLException */ @Override protected void finalize() throws Throwable { disconnect(); super.finalize(); } } Ana programımıza gelirsek SqliteMain.java package com.github.kbayram; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Random; public class SqliteMain { public static void main(String[] arg) { Random rnd = new Random(); try { // oluşturduğumuz class'ı kullanarak sqlite nesnemizi tanımladık SqliteDatabase db = new SqliteDatabase("PhoneBook.sqlite"); // E:\\PhoneBook.sqlite gibi adresler gelebilir. System.out.println("Yeni Kayıt Ekleniyor"); /// veritabanıne veri giriyoruz... db.execute("insert into people(firstname,lastname,phone) values(?,?,?)", "Person" + rnd.nextInt(100), "Lastname" + rnd.nextInt(100), "0 (123) " + rnd.nextInt(10000000)); System.out.println("Yeni Kayıt Eklendi! Bilgiler Listeleniyor."); /// veritabanından olan verileri çekiyoruz. ResultSet rs = db.query("select * from people"); while (rs.next()) { System.out.printf("%d \t %-15.15s \t %-10.10s \t %-10.10s %n", rs.getInt("ID"), rs.getString("Firstname"), rs.getString("Lastname"), rs.getString("Phone")); } System.out.println("\nBilgiler Listelendi\n\nKayıtlar Düzenleniyor"); // ilk veriyi güncelliyoruz. db.execute("update people set firstname=? where id = (select id from people limit 1)", "Updated Person" + rnd.nextInt(100)); System.out.println("Kayıtlar Düzenlendi! Tekrar Bilgiler Listeleniyor\n"); /// tekrar listeletiyoruz. ResultSet rsYeni = db.query("select * from people"); while (rsYeni.next()) { System.out.printf("%d \t %-15.15s \t %-10.10s \t %-10.10s %n", rsYeni.getInt("ID"), rsYeni.getString("Firstname"), rsYeni.getString("Lastname"), rsYeni.getString("Phone")); } System.out.println("\nKayıtlar Siliniyor.."); ///verileri siliyoruz. db.execute("delete from people where id = (select id from people limit 1)"); System.out.println("Silindi!"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Çalıştırıldığında ise böyle bir ekran bizi bekliyor: Java'da veritabanları platform bağımsız olduğundan jdbc ile bağlantı neredeyse tüm dbms'ler ile aynıdır. Bu şekilde Tek sayfa üzerinde listeleme, ekleme, silme ve güncelleme işlemlerini yaptık. Sorularınız olursa sorabilirsiniz. Projeye Github üzerinden ulaşabilirsiniz.
  13.   belki çok büyük bir inovasyon olmadığı için minor sürüm mantığı ile yapmışlardır :)
  14. socket connection yapabilirsin remooting kütüphaneleri vardı. Ayrıca istersen longpooling de yapabilirsin ama socket en sağlamı olur. sürekli istek atmak yerine socket aç bir tane, güncelleme olduğunda müdahale edebilirsn. yada observer pattern implementasyonu yapabilirsin. http://en.wikipedia.org/wiki/Observer_pattern
  15. Virüs yemişsin.flasın içinde arama kutusuna *.* yaz. dosyaların çıkar, onları yedekle sonra formatla flashı. sakın o kısayola tıklama!
×
×
  • Create New...