30 Mart 2010 Salı

Why You Can’t Work at Work


Big Think Interview with Jason fried - Why you can't work at work?



"
The modern workplace is structured completely wrong. It’s really optimized for interruptions.

Everyone’s calling meetings all the time, everyone’s screaming people’s names across the thing, there’s phones ringing all the time. People are walking around. It’s all about interruptions.

I’m working 50-60 hours this week. It’s not that there’s 50 or 60 hours worth of work to do, it’s because you don’t work at work anymore. You go to work to get interrupted.

Like before you know it, it’s 4:00 and you’ve got nothing done today.

If someone’s calling my name, or tapping on my shoulder, or knocking on my door, I can’t ignore those things.

Managers are the biggest problem because their whole world is built around interruption. That’s what they do. Management means interrupting. Hey, what’s going on? How’s this going? Let me call a meeting because that’s what I do all day, I call meetings. And so, managers are the real problems here and that’s got to change too.  


Some more useful advices from Uncle Jason:

Real World ?
Whatever you’re doing, cut it in half





18 Şubat 2010 Perşembe

Barbie Artık Bilgisayar Mühendisi

Ve barbie sonunda doğru yolu buldu ve bilgisayar mühendisi oldu.


Peki barbie nasıl oldu da bilgisayar mühendisi oldu? Barbie resmi sitesinde Barbienin mesleğini belirlemek iin anket yapılınca, bilişim meraklıları da örgütlenip barbienin bilgisayar mühendisi olması için oy kullandılar. Yetkililer bunu farketmiş olmalı ki barbienin bu sene bilgisayar mühendisi olmasının dışında sadece kızların verdiği oyları dikkate alarak haber spikeri de olmasını uygun görmüşler.

Sonuçlar İçin

16 Şubat 2010 Salı

Configuring Database Character Encoding

Veritabanı Karakter Kodlaması Ayarı (UTF-8)
Configuring Database Character Encoding


Geçenlerde üzerinde çalıştığım bir projede web sayfasından FORM ile gönderdiğim verilerin veritabanında türkçe karakterlerinin bozuk çıktığını farkettim. Bunu çözmek için çok çeşitli yollar denedim ve sonunda aşağıda anlatacağım çözüm yolunu buldum.

Web Sayfasındaki formlardan database'e veri kaydederken sık sık encoding problemleriyle karşılaşılır. Bu sorunları aşmak için database tarafındaki iki yerde "character-encoding" ayarlarının yapılması gerekir.

1-) Örneğin verileri UTF-8 encodinginde tutmak istiyorsak öncelikle veritabanını UTF-8 encodingi ile oluşturmalı ve tablo ve alanlarda da aynı encodinge sadık kalmalıyız.

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin;

NOT: Bunun dışında veritabanının encodingini de UTF-8 yapmalı (default-character-set=utf8) ve tabloları ve onların karakter tutan alanlarını da UTF-8 encodingine ayarlamalısınız. (ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;)


2-) İkincisi veritabanına bağlanırken de encodingi belirtmemiz gerekmekte. Örneğin veritabanı bağlantısını (connection string) aşağıdaki gibi tanımlamalıyız:

jdbc:mysql://hostname:port/database?autoReconnect=true&useUnicode=true&characterEncoding=utf8

NOT: XML dosyasında bağlantı tümcesi tutulacaksa "&" karakterini "&" olarak yazmaya dikkat etmeliyiz.

3-) Ayrıca TOMCAT'in server.xml dosyasından URI encoding ayarı da yapmanız gerekli:


<Connector port="8080" URIEncoding="UTF-8"/>










12 Şubat 2010 Cuma

Hibernate Distinct Query With Join

Aşağıdaki gibi iki tablonun birleştirildiği (join) bir distinct sorgu düşünelim. Ayrıca sorgu bir sütuna göre de filtrelensin:

SELECT DISTINCT ud.birthDate FROM user u, userDetail ud WHERE u.id=ud.userId AND u.membershipType=?


Bunun hibernatedeki karşılığını veren fonksiyon aşağıdaki gibi olmalı:


public List<Date> findDistinctBirthDates(String membershipType) {
        try {
            Session session = getSession();
            Criteria userCriteria = session.createCriteria(User.class);
            Criteria userDetailCriteria =
                        userCriteria .createCriteria("userDetail","ud");
            userDetailCriteria.setProjection(
                        Projections.distinct(
                                    Projections.property("ud.birthDate")
                        )
            );
            userCriteria.add(Restrictions.eq("membershipType",membershipType));
            return userCriteria.list();
        } catch (HibernateException e) {
            throw new DBInfrastructureException(e);
        }
}


5 Şubat 2010 Cuma

SVN ve Proje Yönetim Sistemi

Projelerinizi web üzerinden yönetmek mi istiyorsunuz? Bunun için de açık kaynak bir yönetim sistemi mi arıyorsunuz?

Öyleyse size Proje Yönetim Sistemi (Issue Tracking) ve SVN yönetim sistemi olarak kullanabileceğiniz UNFUDDLE isimli ücretsiz aracı şiddetle tavsiye ederim.



Ücretsiz planında 200MB alan ve iki kullanıcıya izin veriliyor. Bazı özellikleri paralı olsa da genel olarak kişisel projeniz için kullanacaksanız ihtiyaçlarınızı fazlasıyla karşılayacaktır.


http://unfuddle.com/


12 Ocak 2010 Salı

En iyi 20 Programcı Mazareti



The Top 20 replies by programmers when their programs do not work:
  1. That’s weird…
  2. It’s never done that before.
  3. It worked yesterday.
  4. How is that possible?
  5. It must be a hardware problem.
  6. What did you type in wrong to get it to crash?
  7. There is something funky in your data.
  8. I haven’t touched that module in weeks!
  9. You must have the wrong version.
  10. It’s just some unlucky coincidence.
  11. I can’t test everything!
  12. THIS can’t be the source of THAT.
  13. It works, but it hasn’t been tested.
  14. Somebody must have changed my code.
  15. Did you check for a virus on your system?
  16. Even though it doesn’t work, how does it feel?
  17. You can’t use that version on your system.
  18. Why do you want to do it that way?
  19. Where were you when the program blew up?
  20. It works on my machine.”


Kaynak: http://www.thatwasfunny.com/top-20-programmers-excuses

6 Ocak 2010 Çarşamba

Oracle PL/SQL Free Unused Memory

Oracle'ın XML kütüphanesindeki bir memory leak problemi bizi uzun süredir uğraştırıyordu. Başta hatanın yazdığımız koddan kaynaklandığını düşünmüştük, ancak anladık ki bu Oracle'ın bir bug'ıymış:

Miracle Benelux isimli blog'da bu problem için dbms_session.free_unused_user_memory() metodunun kullanılmasını tavsiye edilmiş. Bu da bizim problemimize 100% bir çözüm sağladı.

6 Aralık 2009 Pazar

Google Public DNS

DNS adresi olarak 8.8.8.8 and 8.8.4.4 ayarlayarak hem youtube gibi Türkiyedeki yasak sitelere girebilir hem de google'ın iddiası doğru ise interneti daha hızlı ve güvenli dolaşabilirsiniz.

http://code.google.com/speed/public-dns/


11 Kasım 2009 Çarşamba

10 skills developers will need in the next five years


1: One of the “Big Three” (.NET, Java, PHP)
2: Rich Internet Applications (RIAs)
3: Web development
4: Web services
5: Soft skills
6: One dynamic and/or functional programming language
7: Agile methodologies
8: Domain knowledge
9: Development “hygiene”
10: Mobile development

Article: 10 Skills Developers Will Need


11 Eylül 2009 Cuma

Super Cookies

You Deleted Your Cookies? Think Again
More than half of the internet’s top websites use a little known capability of Adobe’s Flash plug-in to track users and store information about them, but only four of them mention the so-called Flash Cookies in their privacy policies, UC Berkeley researchers reported Monday.
Unlike traditional browser cookies, Flash cookies are relatively unknown to web users, and they are not controlled through the cookie privacy controls in a browser. That means even if a user thinks they have cleared their computer of tracking objects, they most likely have not.

Better Privacy extension for Firefox
Better Privacy serves to protect against not deletable longterm cookies, a new generation of 'Super-Cookie', which silently conquered the internet.

6 Eylül 2009 Pazar

Arama Sayfalarında Encoding Problemi

unun Seam'e özgü bir problem olduğunu sanmıyorum ama ben Seam ile geliştirdiğim bir projede şöyle bir probleme rastladım.

Arama için bir inputText kutusuna türkçe karakterler yazdığımda beklediğim sonuçlar dönmediği gibi, sonuçlar döndüğünde de inputText'in içine karışık karakterler geliyordu. Anladım ki bu server'ın encoding ayarı ile ilgili bir hataymış

JBoss server.xml'e http connector ayarına  useBodyEncodingForURI="true" URIEncoding="UTF-8" şeklinde belirtince problem çözülüyor.


Server.xml dosyam'daki Connector satırım şöyle:



Belirttiğim gibi Arama kutusuna Şarkı yazdığımda



Hiç sonuç dönmüyor ve arama kutuma aşağıdaki bozuk karakterler geliyordu:




26 Ağustos 2009 Çarşamba

Oracle Örnek Sorgu #1



WITH data_set AS (


SELECT
is_running, datetime
FROM
(
SELECT is_running, datetime, row_number() over (ORDER BY DATETIME DESC) rn
FROM mon_host_stat_hist
WHERE institution_id='TUB' and host = 'Client'
)
WHERE rn = 1;

)

SELECT
datetime, next_datetime, (next_datetime-datetime) as diff
FROM
(
SELECT
datetime,
lead(datetime, 1, null) OVER (ORDER BY datetime) AS next_datetime,
FROM data_set
)



2 Ağustos 2009 Pazar

Oracle Text - Özel Karakterleri Indeksleme İncelikleri

Oracle text Normalde * = gibi özel karakterleri indekslemez, bunların indekslenmesini siz sisteme index oluştururken bildirmelisiniz. BASIC_LEXER tanımlayarak alfanümerik karakterlerin nasıl indeksleneceğini belirleyebilirsiniz.

Tanımlayabileceğiniz üç tip karakter vardır:

1-) Printjoin Characters: Alfanümerik olmayan bir karakteri indekslenen karakterlerin listesine eklemek için kullanılır. Örnek vermek gerekirse "web-site" kelimesi normalde "website" şeklinde indekslenir. Tire (-) işaretini printjoin listesine eklerseniz artık "web-site" şeklinde indekslenecektir ve website şeklinde sorgular "web-site" sonucunu vermeyecektir.

2-) Skipjoin Characters : Printjoin'in tersi olarak indeslenmemesini istediğiniz alfanümerik olmayan karakterleri tanımlayabilirsiniz.

3-) Diğer karakterler : Satır sonunda bir kelimeyi ayırmak için kullanılan karakteri (-) tanımlamak için continuation; noktalama işaretlerinin indeslenip indekslenmeyeceğini belirtmek için punctuations ; satır sonu karakterini (\n) belirlemek için newline ; u-ü o-ö gibi noktalı noktasız harfleri beraber olarak aramak istiyorsak base_letter; büyük küçük harf ayrımını belirlemek için mixed_case kullanılabilir.


Aşağıdaki AUCTION tablosunun oluşturulduğunu ve bu tablo üzerinde çalıştığımızı varsayalım.



Aşağıdaki şekilde AUCTION tablosuna Oracle Text Indexsi ekliyoruz:

-- set up the special characters as printjoins if you wish to search for them
EXEC CTX_DDL.CREATE_PREFERENCE ('special_chars_lexer', 'BASIC_LEXER');
EXEC CTX_DDL.SET_ATTRIBUTE ('special_chars_lexer', 'PRINTJOINS', '*=-');

-- create an index set and add a sub-index
EXEC CTX_DDL.CREATE_INDEX_SET('auction_iset');
EXEC CTX_DDL.ADD_INDEX('auction_iset','price');

-- Create the combined catalog index on the AUCTION table
DROP INDEX auction_titlex;
CREATE INDEX auction_titlex ON AUCTION(title)
INDEXTYPE IS CTXSYS.CTXCAT
PARAMETERS ('LEXER special_chars_lexer index set auction_iset');

Şimdi bu indekslediğimiz veri üzerinde aşağıdaki sorgulamaları yapıyoruz :

1-) Aşağıdaki sorgu yanlızca yanında boşluk olan Tire "-" işaretli veriyi yani sadece ve sadece "-" işareti varsa sonuç dönüyor.

>> SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{\-}') > 0;

5 - STAR (*****) CAMERA , 2500

2-) Tire işaretini "-" içeren tüm verileri bulmak için aşağıdaki sorgulamayı yapmak gerekiyor:

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\-*}',)>0;

5-STAR(*****) CAMERA,2500
5-STAR (*****) CAMERA,2500
5 - STAR (*****) CAMERA,2500

3-) Eşittir işaretini "=" içeren tüm verileri bulmak için de benzer şekilde aşağıdaki sorgulamayı yapmak gerekiyor:

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\=*}',)>0;

EQUAL (=) CAMERA,25
=======================================,100
============== Cash ==================,102
============= Success ================,103
============== Cash ==================4,104


4-) Yıldız işaretini "*" içeren tüm verileri bulmak için ise aşağıdaki sorgu işe yaramıyor. Bu sorgu tüm verileri döndürüyor:

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\**}',)>0;

5-) 1 ve 1'den fazla Yıldız işaretini "*" içeren tüm verileri bulmak için ise aşağıdaki gibi bir sorgu yazmak gerekiyor. Bu farkın nedeni CATSEARCH'ün "*" işaretini wildcard olarak kullanması olabilir.

>> SELECT title, price FROM auction WHERE CATSEARCH(title, '{\*} | {\*\*} | {\*\*\*} | {\*\*\*\*} | {\*\*\*\*\*}',)>0;

* STAR CAMERA,2500
444 ** *** ***** 444,101
5-STAR(*****) CAMERA,2500
5-STAR (*****) CAMERA,2500
5 - STAR (*****) CAMERA,2500