June 2005 - Posts

Retrieving Scalar Data from a Stored Procedure

Beberapa waktu di milis ada yang mempertanyakan mengenai cara mengambil nilai skalar dari suatu stored procedure. Ini ada satu artikel bagus.

Check this out :

http://aspnet.4guysfromrolla.com/articles/062905-1.aspx

Share this post: | | | |
Posted by agung | with no comments

Free Publication

Guys there are some nice publication. Just point your site to http://www.progress.com/realtime/products/edgextend/index.ssp , scroll down and watch in the right side. You will find Publication section. They are :

1. Data Considerations for SOAs
2. C# Offers Scalability for .NET
3. Modelling and Mapping Flexibility
4. Is .NET Ready to Challange Java and J2EE ?
5. Increasing Resilience of Database Connectivity
6. Data Access in .NET Application
7. Instinet: Electronic Brokerage Service

Share this post: | | | |
Posted by agung | with no comments

Using Stored Procedure or Dynamic Query

Read this debate first :
------------------------

Posted @ 11/18/2003 4:15 PM
At my company, we have 3 software products that work against SQL Server, Oracle, and DB2 with the flip of a switch. We have built it using dynamic SQL within our code and all 3 have been around for years. These are big apps and, in the end, they are very maintainable.

Imagine trying to sell your product to a company's IT group and saying that it relies on stored procedures. Guess what...the DBA is going to shoot it down because he knows that as new releases come out, it is going to be a huge pain in the ass for them to update and maintain changes to the SP's. Now tell them that they don't have to do anything. All the SQL is managed in the code itself. Well, you know their reaction.

Maybe an in-house application where I know the back-end will always be SQL Server or Oracle or whatever, I would use SP's and love them. That's just not the case for a product-based application. At least in my experience it isn't.


Marc Hoeppner
Posted @ 11/18/2003 4:14 PM
@Frans: Using CommandBuilder?? - This is definitely _not_ a good idea. It may work for simple tables, but as soon as you start to have more complex scenarios, it stops working. 'Complex' scenarios start with using JOINs and multiple PKs etc.

Frans Bouma
Posted @ 11/18/2003 4:19 PM
Marc: no not using commandbuilder:) Using a component you write yourself (or buy). You feed it the objects it should generate DML for and it generates that DML, including parameters. Execute that and you're set. Cache the result on the client if you will so you don't have to regenerate the statement. A dataset has the schema inside itself needed to generate the code you need. (I use the 'dataset' example, since Scott accused me of writing a blog to sell my O/R mapper LLBLGen Pro which is not the case at all :) ).


Mike
Posted @ 11/19/2003 10:39 AM
I'm surprised that noone has mentioned the merits of using SProcs in a secure environment yet. For those DB's where complete access security defines the method of data access, SProcs are really the only way to go.

Say for example I have a DB using Windows Auth to restrict who can view what data. The DB is being accessed by three or four different apps. Now on that DB I have something like 100 tables, which I do NOT want the casual browser (using Query Analyser) to be able to view. I therefore need to lock down access to all tables. Access MUST then be made through SProcs. I know - I could just allow access to the tables through defined logins. But what if I need two different roles (Staff vs. Managers - defined by NT Domain groups) to be able to retrieve different sets of data from the same tables? And what if the access levels that particular users have are to changed? For example - a Manager can only view payslips for those employees that work directly for him instead of the whole department? That would require the code of three or four applications to be changed. I'd rather change one set of SProcs...

The point I'm trying to make is that if you are developing an application in which any kind of sensitive/personal data is involved, or where Role-based access to data is necessary, or you are required to ensure that this data is kept secure - Dynamic SQL will not be your best friend. In these instances only SProcs will help. In fact I'd go to say that if you are designing/developing with security in mind from the start, then you'd be daft not to use the in-built security that SProcs offer you.

Frans Bouma
Posted @ 11/19/2003 10:49 AM
Mike: the time it takes to create all those stored procedures for each role can also be used to create the views you want. The advantage of that is that you can use views in queries (FROM clauses) you can't do that with sprocs.

People think that in a high-secure environment, stored procedures will be much more secure AND it will take way less effort. This is not true: for each byte you want to return as a select result, you have to write a procedure. That code can also be used to write a view.

Frans Bouma
Posted @ 11/19/2003 1:04 PM
"My experience has been that sprocs do provide a dramatic performance increase. The issue is when is this performance boost needed vs. ease of programming. "
While I most of the time agree with your opinions, I have to say this opinion of yours is just what it is: your opinion, not based on fact, just on personal experience. When I look at the theory behind the sql compiler in sqlserver, I can't conclude anything other than that a dyn. parametrized query and a stored proc run as fast, because both will use a cached execution plan. (yes, dyn. query has to be compiled first, so does the proc, which also will have to be recompiled if you're not careful (and the more code you add to make them flexible the more risk you take to cause a recompile of a stored proc on every occasion)


Guys, this debate about Stored Proc are very interesting, you should read it at :

1. Frans Bouma's Blog --> http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx
2. Don't use stored procedures yet? Must be suffering from NIHS (Not Invented Here Syndrome) 
    http://weblogs.asp.net/rhoward/archive/2003/11/17/38095.aspx

Share this post: | | | |
Posted by agung | with no comments

AGLI, i'll be there

AGLI

I will be there.

Mari kita sukseskan bersama acara AGLI 2005.

Share this post: | | | |
Posted by agung | with no comments

J2EE and .NET

Guys, i think this post from Independent Software Architect Council is good for us. They dont fight between Java and .NET, but they already think how to interop each other. Very wise. We should think of that.
 
 
 
Btw, the site was develop with DotNetNuke !
 
It means .... .NET !
Share this post: | | | |
Posted by agung | with no comments

Banyak membaca, banyak menulis, banyak ilmu

Barusan chatting sama salah seorang peserta ASP.NET Camp, dia menanyakan kenapa kok blogs-nya bisa begitu banyak postingannya ? Dia pengen coba post opini dan artikel, tapi ragu karena nanti diketawain ama yang udah pada jago-jago.

Jawab saya : Friend, jangan takut. Teruskan saja niatmu untuk post opini dan artikel apapun levelnya.

Saya banyak posting di blogs karena memang saya punya prinsip BANYAK MEMBACA, BANYAK MENULIS, BANYAK ILMU. Dan ini berusaha untuk dijadikan kebiasaan. Banyak hal mengenai teknologi ini yang saya belum tahu, dan saya pengen tahu. Internet adalah media sarat informasi, tinggal bagaimana kita bisa meluangkan waktu untuk surfing dan menggali hal-hal yang baru dan berguna bagi kita. Dengan banyak membaca, pengetahuan kita akan bertambah luas, kita tidak akan menjadi katak dalam tempurung. Membaca itu saya usahakan menjadi kebiasaan sama seperti makan. Jadi, kalo tiap hari gak membaca maka rasanya “laper”. Dan itu harus ditumbuhkan. Membaca tidak mesti buku, bisa artikel, cerita, atau bahkan sekedar opini orang yang kenalpun tidak.

Setelah dibaca, usahakan untuk menulis. Tulislah apa saja yang ingin Anda tulis. Jangan takut salah, toh nanti akan ada yang mengkoreksi. Jangan takut tulisan kita itu rasanya “sederhana dan gampang banget”. Tulislah apa yang ada dalam pikiran Anda mengenai apa yang Anda dapat pada hari itu (jika sempat), jika tidak sempat, usahakan selalu luangkan waktu untuk menulisnya pada hari lain. Dengan menulis, apa yang kita baca akan lebih meresap maknanya. Dan percayalah, kita akan semakin cerdas. Jangan takut disindir, atau dicemooh karena isi tulisan kita "semua orang juga tau, ngapain ditulis". Biarkan saja, buatlah kebiasaan untuk mencoba menulis opini kita setelah mengetahui sesuatu. Tulisan tetap dalam kerangka sopan, dan intinya bersifat share. Dengan menulis kita berarti telah "mengikat ilmu". Dan ini benar. Suatu saat nanti Anda akan terkejut ketika merasa “hey, saya sudah tahu ini”, atau saat bicara dengan teman Anda merasa “hey, saya tahu apa yang sedang Anda bicarakan”. Atau mungkin saat bertemu dengan orang dengan karakter “sok tahu segalanya“, kita bisa bergumam dalam hati “hehehe, dia pikir hanya dia saja yang tahu. Saya bahkan bisa melakukan lebih dari itu“. Berbicara dengan orang kalangan apapun, kita dapat dengan mudah terlibat di dalamnya. Apalagi jika itu berbau teknologi, pengetahuan Anda akan semakin banyak, dan percayalah Anda akan semakin bijak. Dengan banyak menulis dan membaca, Anda tidak akan terjebak pada paham ekstrimis dan idealis. Kecuali Anda sudah mapan. Sebab idealisme identik dengan kemapanan.

Meskipun yang Anda tulis itu mungkin disadur dari sumber lain, tapi selama Anda izin dengan penulis aslinya itu tidak lagi jadi masalah. Banyak keuntungannya. Pertama, secara tidak langsung Anda sudah mengasah bahasa Inggris karena Anda menterjemahkan artikel ke dalam bahasa Indonesia dengan bahasa Anda sendiri (tentunya dengan tidak mengurangsi esensi asli artikel tersebut). Kedua, apa yang Anda tulis akan melekat pada otak Anda. Jadi, Anda telah belajar mengenai apa yang Anda tulis itu. Dan ini proses pembelajaran yang sangat baik. Karena otak Anda akan merekam setiap aktivitas pentejemahan dan pengungkapan makna-makna yang dibuat oleh penulis aslinya. Materi yang ditulis akan lebih cepat, dan lebih lama melekat pada otak Anda.

Bagi trainer, banyak membaca dan menulis akan banyak menambah wawasan mengenai materi apa yang akan diberikannya. Mereka tidak akan kekurangan bahan untuk diberikan kepada peserta training. Dan mereka dapat membeikan jawaban yang tepat pada setiap pertanyaan yang ada. Saya ada pengalaman dengan beberapa developer .NET di salah satu BUMN saat terlibat dalam joint development dimana saat itu saya jadi Developer Lead mereka. Setelah kita share, ternyata banyak yang baru, bahkan sama sekali belum pernah, mendengar apa itu Snipper Compiler, SharpDevelop, MonoDevelop, Rotor, ASP.NET Web Matrix. Wah, saya kaget juga mendengarnya. Padahal mereka pernah bangun aplikasi pake .NET di kantornya. Mereka ternyata baru tahu bahwa .NET di share dalam bentuk SSCLI yang bernama Rotor yang bisa mereka oprek, mereka baca bagaimana dalamnya. Jadi, ketika saya bilang bahwa antara penggunaan Convert.ToInt32(obj) dan Int32.Parse(obj) tidaklah terlalu signifikan dalam hal performa saya bisa menunjukkan buktinya, yaitu dengan membuka source Rotor, dan lihat pada kelas Convert. Dari situ akan jelas terlihat. Ini menarik bagi saya, jadi kadang kita sebagai developer, merasa sudah bisa bikin project, bikin aplikasi canggih, tapi gak cukup tahu mengenai perkembangan di luar. Sehingga mereka mengklaim bahwa “akulah yang paling tahu“. Padahal, banyak orang yang jauh lebih tahu dari mereka. Mereka mungkin jago pada satu hal, tapi lemah pada hal lain. Dan manusia itu memang seperti itu. Tak ada yang benar-benar “mumpuni“ pada suatu teknologi. Mereka-mereka ini seperti katak dalam tempurung. Apakah kita ingin seperti itu ? Tentu semua akan menjawab tidak. Jadi, jika ingin sarat ilmu, perbanyaklah membaca, perbanyaklah menulis. Ikatlah ilmu dengan menuliskannya (seperti motto yang digunakan oleh IlmuKomputer.com). Percayalah bahwa dengan menulis, kita tidak akan kehilangan ilmu kita karena diambil orang. Justru ilmu akan bertambah, karena bisa jadi apa yang selama ini kita yakini sebagai kebenaran coding, ternyata memiliki banyak alternatif yang setelah kita gabungkan akan menjadi lebih baik dari sebelumnya. Bagi developer, membaca dan menulis haruslah menjadi suatu kewajiban.

Teman saya yang sedang chating tadi mengatakan. Ah, cuman baca dan nulis tidak menunjukkan kualitas coding. Hm, saya tidak setuju. Memang benar, bagi yang sudah prof semua sudah terbuka bagaikan telapak tangannya. Tapi jangan lupa, awalnya juga dia begitu. Karena sering, maka dia jadi prof dan menjadi cerdas. Dia pasti banyak membaca dan banyak implementasi. Kita tidak mungkin bisa implementasi tanpa mengetahui terlebih dahulu. Pasti mau tidak mau, kita harus membaca. Dan setelah itu pasti menulis. Coding itu ditulis. Jadi, makna menulis setelah kita sudah cukup pengetahuan, maka tulislah dalam bentuk coding (tidak hanya sekedar artikel, atau opini). Tapi benar-benar “membuktikan pengetahuan dan wawasan kita”. Dan sekali lagi, banyak yang ragu nanti disindir ama yang udah jago. Jangan takut, biarkan saja. Justru jadikan itu tantangan agar kita bisa jadi lebih baik setelahnya. Bisa jadi suatu hari nanti kita malah lebih jago dari mereka yang meremehkan kita. Yang sudah jago, kalo selalu merasa puas diri, kalo tidak pernah mau mengasah ilmunya, suatu hari nanti akan terlewati juga oleh kita-kita yang rajin membaca, rajin menulis, dan rajin mengasah kemampuan diri. Dan bahkan kita bisa melebihi mereka.

Share this post: | | | |
Posted by agung | 6 comment(s)

Acrylic

Having just tried "Acrylic", its quite clear its Microsoft's answer to some kind of low-end vector art program.

Its bitmap capbilities leave a lot to be desired, and the UI seems unprofessional and unfinished (I particularly dislike the bevel/shadow effect under the controls) and rather clunky, much like the edges of Adobe Palletes and parts of Corel Painter, and to an extent, Macromedia's MX 2004 interface (the worst ever, imho)

Check this out :

http://www.microsoft.com/products/expression/

I'm guessing either Acrylic will have a Developer Edition for creating XAML stuff, or portions of Acrylic will be ported into a Visual Studio 2005 designer. As I write this, I have about 20 minutes left in the download of Acrylic Beta. Let's see what it holds.

Share this post: | | | |
Posted by agung | with no comments

ZAM 3D

Has anyone tried it?  What do you think?

http://www.erain.com/products/zam3d/

Share this post: | | | |
Posted by agung | with no comments

Video Game Development, Learn to Write C# the Fun Way

Seneng maen video game ? Saya juga. Kadang pengen banget cari tahu gimana cara bikinnya. Browsing-browsing di Internet, trus dapet tutorial yang sangat bagus. Tak menyia-nyiakan waktu lagi, donlod ajah. Kalo mau tau, klik pada link ini : http://www.digipen.edu/webcast/

Cocok juga buat yang baru mau belajar C#.

Share this post: | | | |
Posted by agung | with no comments

About Deployment

Wanna know something about deployment, i wrote an article about it.

http://blogs.netindonesia.net/agung/articles/3589.aspx

Share this post: | | | |
Posted by agung | with no comments

Making Wrong Code Produce Compiler Errors

Joel, of Joel on software wrote an interesting blog (Making Wrong Code Look Wrong) and I just read it. I would largely agree with him. Really quick summary: he argues for variable prefixes to prevent accidentally doing the wrong thing with variables that are the correct 'type' (example: string), but not the correct 'kind' (example: trusted string vs. untrusted string). 

I would largely agree with Joel. However, I would like to make one critique – where possible, I would prefer 'types' over 'kinds'. Joel starts out with an example of using 'kinds' to prevent cross site scripting (XSS) attacks. It sounds like a good programming practice, but I think it would be even better to create two classes: 'UserString' and 'ResponseString'.

What I like about classes:

  • You can make the compiler do the work of verifying safety. It is pretty easy to use the wrong variable. Compilers do a better job of finding problems then I could.
  • Easier for the guy down the hall. In order for 'kinds' to be practical, they need to be abbreviations. This means that when the guy down the hall reads my code, he probably won't understand all of my 'kinds'. Hopefully the guy down the hall is just reading my code. If I decided to go join a different team, all of my 'kinds' might loose their value forever. This is not the true for classes.
  • Easier to review. Using Joel's example, come security review time, I would need to look through my entire code base to make sure that I did use my kinds correctly. If I used types, I would just have one file to review.

Anyway, that is my two cents. Just read his post and you will know much about your programming technique.

Share this post: | | | |
Posted by agung | with no comments

Free Microsoft .NET training for Java Developers

Hari ini lagi cari e-books dan artikel-artikel bagus mengenai Java, trus ketemu satu free content training yang bagus sekali. Free training ini termasuk slide2 presentasi, student notes, demo video, dan juga hands-on lab yang bisa didownload. Follow this link : http://msdn.microsoft.com/vstudio/java/migrate/workshop/

Share this post: | | | |
Posted by agung | with no comments

Primer to ConnectionStringBuilder in ADO.Net v2.0

Shusil Chordia, a SDET - ADO.NET Team said :

We had got good amount of feedback from developers in 1.0 and 1.1 versions for need to have a Connection-String Builder. Consider that you want to develop an application that needs to dynamically build a connection string depending on the Data Source Name, User ID and Password values given by the user; then open the connection based on this values and do data access. 

Introducing ConnectionStringBuilder in ADO.NET 2.0. Wanna see more, check this out : http://blogs.msdn.com/dataaccess/archive/2005/03/30/403926.aspx

Share this post: | | | |
Posted by agung | with no comments

Computer Programming History

Eh, lagi iseng surfing tiba-tiba nemu site yang sangat berguna ini. Jika Anda ingin tahu bagaimana sejarah bahasa pemrograman komputer yang pernah ada di dunia ini, Anda bisa merujuk pada situs ini :

http://www.levenez.com/lang/

Share this post: | | | |
Posted by agung | with no comments

Next IE will support Tabbed browsing

Pernah pake Opera / Firefox ? Fitur tabbed akan sangat memudahkan kita untuk berpindah tidak pada window yang terpisah. Nah, di versi IE berikutnya fitur ini akan ada loh.

Check this out :

http://blogs.msdn.com/ie/archive/2005/05/26/422103.aspx

Atau mungkin IE6 Anda yang sekarang ingin memiliki fitur seperti ini ? Coba lihat ini. Saya gunakan ini di komputer saya, dan sekarang surfing di IE jauh lebih nyaman. :-)

http://www.avantbrowser.com/

Share this post: | | | |
Posted by agung | 2 comment(s)
More Posts Next page »