Pages

Sunday, September 11, 2016

Membuat Objek Singleton ( Design Pattern : Singleton )

Object Oriented Programming memiliki beberapa macam design pattern. Salah satu yang paling umum dan dikenal adalah Singleton.
Singleton adalah salah satu bagian deign pattern yang berurusan dengan cara mengatur instantiasi objek dalam aplikasi. Objek hanya di buat sekali selama aplikasi hidup.

Berikut adalah syarat untuk membuat suatu class mengikuti design pattern singleton.

1. Membuat private constructor
Private constructor menyebabkan instantiasi objek tidak bisa dilakukan dari luar class.

Class ObjectSingleton {
    // memaksa instantiasi objek di level class ini sendiri
    private ObjectSingleton(){
        // optional code
    }
}

2. Membuat static method getter object singleton
Menyediakan wadah agar class lain bisa mendapatkan objek singleton tanpa harus instantiasi objek itu sendiri dikarenakan method getter nya menggunakan static.

Class ObjectSingleton {
    private static ObjectSingleton objectSingleton;
    private ObjectSingleton(){
        // optional code
    }
    // memaksa agar hanya lewat method ini saja instantiasi 1x dan pemanggilan objek singleton.
    public static getOjectSingleton (){
       if (objectSingleton == null) {
         objectSingleton = new ObjectSingleton();
     }
}
3. Meng-override clone method
Mengantisipasi dan menghalangi cloning pada objek singleton.

// memaksa throw exception ketika ada yang mencoba meng clone ObjectSingleton.
public Object clone() throws CloneNotSupportedException {
       throw new CloneNotSupportedException();
}

4, (Optional) Membuat method getter object singleton menjadi synchronized
Jika berhadapan dengan multi thread aplikasi, makan synchronized diperlukan untuk mengantisipasi ada 2 thread yang secara bersamaan mengakses method untuk mendapatkan objek singleton.

public static synchronized getOjectSingleton (){
       if (objectSingleton == null) {
         objectSingleton = new ObjectSingleton();
     }

Design Pattern Singleton adalah salah satu pemecahan masalah masalah umum yang dihadapi dalam rekayasa perangkat lunak (Software Engineering). Implementasi Singleton dapat ditemui dalam class Connection milik Java.

Semoga sharing ini membantu kita semua.


Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one

Friday, November 28, 2014

Mengupas Tentang Usus Buntu

Oleh: dr. Adithia Kwee
Klikdokter.com - Usus buntu (umbai cacing) adalah sebuah organ yang bentuknya menyerupai cacing, dan merupakan perpanjangan dari sekum (bagian dari usus besar). Panjang dari usus buntu biasanya sekitar 8-10 cm namun dapat bervariasi dari 2 hingga 20 cm.
Apendisitis (radang usus buntu) merupakan sebuah prosses peradangan yang terjadi pada lapisan dalam dari apendiks (usus buntu), yang menyebar hingga ke area disekitarnya. Peradangan pada daerah ini menyebabkan rasa nyeri yang luar biasa dan dapat menyebabkan kematian jika terlambat mencari pertolongan.
Beberapa mitos yang sering terdengar mengenai apendisitis misalnya:


  1. MITOS: Makan jambu biji, atau cabai dapat menyebabkan terjadinya radang usus buntu.
FAKTA: SALAH.
Seorang rekan spesialis bedah yang sudah lebih dari sering melakukan apendectomi (operasi pengangkatan usus buntu) tidak pernah menemukan sebutir biji jambu maupun biji cabai. 


  1. MITOS: Lari setelah makan menyebabkan usus buntu.
FAKTA: SALAH.
Sama sekali tidak ada hubungannya. Sebenarnya, secara medis radang usus buntu ini terjadi karena adanya sumbatan pada lumen usus. Penyumbatan ini menyebabkan terjadinya peningkatan tekanan didalam lumen usus, sumbatan ini yang menyebabkan sekresi cairan usus menumpuk dan dimanfaatkan oleh bakteri-bakteri dalam usus yang bertumbuh subur. Bakteri ini mengaktifasi pertahanan tubuh melalui sel darah putih, maka terbentuklah pus (nanah) yang  membuat tekanan didalam usus semakin tinggi.

  1. MITOS: Usus buntu adalah salah satu organ yang tidak memiliki fungsi
FAKTA: SALAH.
Prof, Loren G. Martin dari Oklahoma State University, berpendapat bahwa usus buntu memiliki dwifungsi pada manusia, yakni:
·         Ketika manusia berupa janin di kandungan ibu
Pada usia janin 11 minggu, apendiks mengambil peran penting dalam proses mekanisme kontrol biologis. Dimana apendiks mengambil kendali dalam proses ketahanan atau mekanisme pengaturan lingkungan keseimbangan yang dinamis secara konsisten. Dimana Martin dalam penelitiannya berhasil membuktikan bahwa ditemukan sel endokrin pada janin yang berusia 11 minggu.
  ·         Ketika manusia berusia dewasa
Sementara pada tubuh manusia berusia dewasa, apendiks memiliki fungsi sebagai organ limfatik. Dalam penelitiannya pula Martin menemukan bahwa apendiks memiliki kandungan sel limfoid yang mengindikasikan kuatnya kemungkinan apendiks mengambil peran dalam mekanisme sistem imun manusia.
Setelah mengetahui penyebab dari penyakit berbahaya ini, tentunya sekarang pikiran kita jadi semakin terbuka bukan? Bagi Anda yang ingin mengetahui lebih jauh mengenai topik ini, silakan ajukan pertanyaan Anda di fitur Tanya Dokter Klikdokter.com di laman website kami.[](AK)

Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one.


http://id.she.yahoo.com/fakta-mitos-usus-buntu-100849447.html

Thursday, January 23, 2014

A Brief Description about JSP, Servlet and JSF

Java Server Pages (JSP)

JSP is a Java view technology running on the server machine which allows you to write template text in (the client side languages like HTML, CSS, JavaScript and so on). JSP supports the so-called taglibs which are backed by pieces of Java code with which you can control the page flow and/or output dynamically (programmatically). A well known taglib is JSTL. JSP also supports Expression Language which can be used to access backend data (actually, the attributes which are available in page, request, session and application scopes), mostly in combination with taglibs.

When a JSP is requested for the first time or when the webapp starts up, the servlet container will compile it into a class extending HttpServlet and use it during the webapp's lifetime. You can find the generated source code in the server's work directory. In for example Tomcat, it's the /work directory. On a JSP request, the servletcontainer will execute the compiled JSP class and send the generated output (usually just HTML/CSS/JS) through the webserver over network to the client side which in turn displays it in the webbrowser.

Servlets

Servlet is an Java application programming interface (API) running on the server machine which can intercept on the requests made by the client and can generate/send a response accordingly. A well known example is the HttpServlet which provides methods to hook on HTTP requests using the popular HTTP methods such as GET and POST. You can configure HttpServlets to listen on a certain HTTP URL pattern, which is configureable in web.xml, or more recently with Java EE 6, with @WebServlet annotation.

When a Servlet is requested for the first time or when the webapp starts up, the servlet container will create an instance of it and keep it in memory during webapp's lifetime. The same instance will be reused for every incoming request whose URL matches the servlet's URL pattern. You can access the request data by HttpServletRequest and handle the response by HttpServletResponse. Both objects are available as method arguments inside any of the overridden methods of HttpServlet, such as doGet() and doPost().

JSF (JavaServer Faces)

JSF is a component based MVC framework which is built on top of the Servlet API and provides components in flavor of taglibs which can be used in JSP or any other Java based view technology such as Facelets. Facelets is much more suited to JSF than JSP. It namely provides great templating capabilities such as composite components, while JSP basically only offers the for templating, so that you're forced to create custom components with raw Java code (which is a bit opaque and a lot of tedious work in JSF) when you want to replace a repeated group of components by a single component. If you can, I recommend to drop JSP and go for Facelets when you want to develop with JSF.

As being a MVC (Model-View-Controller) framework, JSF provides the FacesServlet as the sole request-response Controller. It takes all the standard and tedious HTTP request/response work from your hands, such as gathering user input, validating/converting them, putting them in model objects, invoking actions and rendering the response. This way you end up with basically a JSP or Facelets (XHTML) page for View and a Javabean class as Model. The JSF components are been used to bind the view with the model (such as your ASP.NET web control does) and the FacesServlet uses the JSF component tree to do all the work.

Just collecting notes and sharing..
Source : stackoverflow.com posted by BalusC

Thursday, October 31, 2013

Metering Configuration in Smartphone Camera

Sekedar catatan
Baru dapet info tentang "Metering" konfigurasi yang pada umumnya dimiliki kamera smartphone atau handphone.

Metering itu fungsinya untuk pengaturan Exposure nya. Apa itu exposure?
Exposure itu sendiri adalah jumlah cahaya yang digunakan untuk menerangi setiap area dalam fotografi.
exposure is the amount of light allowed to fall on each area unit of a photographic medium (photographic film or image sensor) during the process of taking a photograph
  Kan kalo pada hp, kita ga bisa ngatur Shutter Speed, Aperture, semua automatic. Nah untuk mengitung apakah terang nya segini cukup / tidak kan butuh dihitung oleh si software, si metering itu adalah jenis / metode pengitungannya.

Ini contohnya :

Center Weighted

Pada Center Weighted, zona merah adalah zona yang diperhitungkan sebagai dasar penentuan apakah keterangan ( overexposed ) atau kegelapan ( underexposed ) atau pas.



Center Weighted biasanya dipakai untuk foto orang, foto headshot, atau foto objek yang letaknya di tengah-tengah frame.

Matrix



Pada Matrix, seluruh titik pada frame digunakan untuk penentuan exposure nya. [B]Mode Matrix ini lah yang cocok untuk penggunaan sehari-hari[/B] :)

Spot



Pada spot, yang dipergunakan sebagai penentuan exposure hanyalah titik yang di tengah-tengah frame. Spot biasanya dipakai untuk foto Bulan, siluet, atau foto orang dengan keadaan background yang sangat terang ( backlit ).


Ini contoh foto bulan pakai metering spot

exposure bulannya pas, karena pada Spot, yang diitung hanya si bulannya, tidak memperhitungkan keadaan seklilingnya yang gelap.

bandingkan dengan pakai metering center weighted / matrix

bulannya menjadi keterangan / gak keliatan. Ini karena mengkompensasi sekelilingnya yang gelap, jadi si software menganggap fotonya underexposure, makanya dinaikin. Akibatnya, si bulan malah jadi overexposure.


Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one.

Wednesday, July 3, 2013

6 Makanan Murah Meriah Bernutrisi Tinggi Pencegah Kanker

Superfood adalah setiap jenis makanan yang mengandung nutrisi lengkap penunjang kesehatan. Sederhananya, superfood adalah makanan yang kaya akan bahan kimia tertentu yang mempromosikan perbaikan sel secara efisien, terutama bagi Anda yang memiliki aktivitas yang tinggi. Dan yang paling penting, superfood tidak harus makanan dengan harga mahal, karena di sekitar kita banyak sekali superfood yang memberikan manfaat terbaik bagi kesehatan dengan harga terjangkau. Berikut di antaranya:

Tomat

Tomat mengandung lycopene yang sangat tinggi. Lycopene merupakan antioksidan yang mendukung kesehatan prostat dan membantu mencegah penyakit kardiovaskular. Para ahli medis sering menganjurkan para pria untuk gemar mengonsumsi tomat untuk kesuburan dan umur panjang.
Kelebihan lainnya, tomat bisa menjadi makanan fleksibel yang bisa dikonsumsi dalam keadaan mentah dan dapat dihidangkan dengan makanan lain tanpa mengganggu penampilan atau cita rasa makanan tersebut.

Brokoli

Seperti halnya tomat yang mengandung nutrisi penting untuk mencegah kanker prostat dan meningkatkan kesehatan secara keseluruhan, brokoli juga diperkaya zat anti kanker yang disebut sulforaphane. Beberapa jenis kanker yang bisa dicegah dengan brokoli adalah kanker payudara, rahim, kelenjar prostat, usus, ginjal, hati dan paru-paru.
Dalam beberapa literatur disebutkan brokoli juga mengandung vitamin C dan serat makanan dalam jumlah banyak, sehingga baik untuk meningkatkan daya tahan tubuh dan menjaga kesehatan sistem pencernaan.

Kerang

Sebuah penelitian di Jepang yang di muat dalam jurnal Circulation, Januari 2006 menyebutkan, mengonsumsi kerang minimal 1-3 kali per bulan dapat mencegah serangan stroke iskemik dan serangan jantung. Kerang mengandung asam lemak omega 3 yang berperan menurunkan risiko terjadinya penyakit jantung koroner dan penyakit kardivaskular lainnya.
Kerang juga diperkaya dengan zinc yang ditengarai dapat meningkatkan produksi hormon testosteron pada pria. Hormon ini berperan penting untuk meningkatkan kesuburan pria.

Tempe

Tempe bisa dijadikan alternatif pengganti daging. Sebab, tempe merupakan bahan pangan berprotein nabati yang bernilai tinggi. 100 gram tempe mengandung 18,3 protein, sedangkan 100 gram daging mengandung 18,8 dan 100 gram telur mengandung 12,2 protein. Karena proteinnya yang hampir sama dengan daging, maka tempe bisa dijadikan pilihan tepat sebagai superfood murah meriah.

Jamur

Jamur adalah ciptaan alam yang paling unik karena mereka bukanlah tanaman sungguhan yang bahkan tidak memiliki akar. Jamur adalah anggota dari keluarga fungi. Anda tidak perlu meragukan kehebatan jamur karena semua jenis jamur mengandung kandungan gizi yang tinggi seperti selenium, vitamin B kompleks, tryptophan, tembaga, dan kalium bersamaan dengan fitonutrien. Jamur memiliki kekuatan antioksidan hebat untuk membersihkan tubuh dari radikal bebas berbahaya.

Semangka

Lebih dari 90 persen komposisi semangka terdiri dari air. Kandungan air dalam semangka diperkaya dengan vitamin dan mineral penting seperti beta karoten, lutein, zeaxanthin, kalium dan magnesium.
Beta karoten, lutein, dan zeaxanthin bekerja sama melindungi kesehatan mata dari macular degenaration, atau penurunan fungsi mata akibat bertambahnya usia. Sedangkan kalium dan magnesium membantu fungsi insulin dalam mengendalikan gula darah (mencegah diabetes).


Sumber: yahoo
Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one.

Thursday, May 9, 2013

Media Transfer Porotocol (MTP) pada Android v4.0 ICS keatas

Sudah lama banget pengen tulis artikel tentang MTP pada Android

Sebuah standarisasi yang ditetapkan oleh Google sebagai protocol media sharing antara PC dan Handheld Android sejak versi 4.0 release.
Sebenarnya MTP sendiri sudah muncul /diperkenalkan sejak Honeycomb, namun baru dijadikan standard semenjak versi 4.0 ICS. (Correct me if Im wrong).
Protocol ini agak berbeda dari USB Mass Storage (UMS) yang kita kenal dulu. Dimana setiap kali mencolok kabel data ke PC, kita harus memilih sebagai Mass Storage Mode.


Sebenarnya jujur, saya lebih prefer menggunakan Mass Storage Mode dibandingkan dengan MTP karena terlihat lebih mudah dan cepat. Tapi ternyata MTP lebih memiliki banyak benefit dibandingkan dengan USB Storage.
MTP adalah bagian dari custom extension PTP (Picture Transfer Protocol) yang memperbolehkan transfer file berikut "metada" nya. Jika belum tau metada, metada semacam informasi kecil yang menempel pada file. Contoh simplenya seperti file MP3 yang memiliki informasi Judul, Artist, Genre, Album, dll.

Tahun 2008, USB Implementer Forum Device melakukan standarisasi MTP sebagai tipe USB Device.
Jika anda menyadari, MP3 Player, PDA jadul sangat mungkin mereka menggunakan MTP. Kamera digital juga menggunakan PTP sebagai perantaranya. Loh, berarti ini teknologi lama dong?
Tepat, ini adalah teknologi yang lama namun baru diperkenalkan oleh Android versi 3.0 dan dijadikan standard sejak versi 4.0.




Singkatnya MTP menghentikan OEM dan operator (jika di US ato negara lain smartphone dijual dan dicustom oleh operator seluler) memberikan banyak "storage space" (sisa memory hp) tapi memberikan sedikit ruang / space untuk aplikasi.
Berikut kutipan dari Dan Morril seorang Android Engineer
We didn't do this because we wanted to use ext3 (although that is a side benefit.) We did it because we wanted to be able to merge the "public shared storage" (i.e. for music and photos) with the internal private app storage.
We got tired of seeing OEMs include many GB of internal storage for music, while users were still running out of space for apps and data. This approach lets us merge everything on one volume, which is way better. 

Intinya adalah Ia ingin storage untuk penyimpanan aplikasi dan user storage (music, video, document, foto) pada smartphone bisa saling sharing, sehingga kapasitas memori benar benar digunakan seluruhnya, tidak terpisah-pisah.

Dengan MTP, maka tidak ada lagi kapasitas (storage) yang dianggap partisi lain sehingga penggunaan jd maksimal. Android juga jadi bisa menggunakan partisi ext3 (Linux partition type) yg performanya lebih cepat.

OEM bisa menyediakan slot SDCard external untuk penambahan kapasitas. Karena itu kita sering melihat akan ada keanehan atau kerusakan jika kita menginstall aplikasi di external memory dan ini biasanya terjadi pada widget ato core aplikasi seperti monitoring dll.

Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one.


Sumber: http://www.androidcentral.com

IP ( Ingress Protection ) Rating

Latar Belakang:
IP57 dan IP67. Dua kode tersebut pernah saya dengar dari sebuah spesifikasi smartphone Android seperti Motorola Defy, Xperia Active, dan yang terakhir adalah hp sangat powerful saat tulisan ini ditulis yaitu Sony Xperia Z.
Sejauh yang saya tau jarang ada hp dengan sertifikasi IP57 namun memiliki hardware yang sangat high end (Xperia Z)
Ok, cukup promosinya mungkin, yang saya mao dokumentasikan disini adalah tentang sertifikasi tersebut.

IP atau Ingress Protection adalah sertifikasi suatu benda terhadap material debu dan air.
IP rating ini di develop oleh European Committee for Electro Technical Standardization (CENELEC(NEMA IEC 60529 Degrees of Protection Provided by Enclosures - IP Code) yang biasanya ditunjukkan oleh 2 atau 3 angka.
contoh: IP56, dll
Angka pertama menunjukkan rating terhadap benda/objek padat (solid objects). Sedangkan angka kedua menunjukan rating terhadap objek cair.
Angka ketiga (jika ada) menunjukkan ketahanan terhadap benturan mekanik (biasanya dihilangkan karena tidak sesuai spesifikasi IEC.

Berikut tabelnya yang saya ambil dari sumber terpercaya (tanpa diterjemahkan lagi)
IP First number - Protection against solid objects
0  No special protection
1  Protected against solid objects over 50 mm, e.g. accidental touch by persons hands.
2  Protected against solid objects over 12 mm, e.g. persons fingers.
3  Protected against solid objects over 2.5 mm (tools and wires).
4  Protected against solid objects over 1 mm (tools, wires, and small wires).
5  Protected against dust limited ingress (no harmful deposit).
6  Totally protected against dust.
IP Second number - Protection against liquids
0  No protection.
1  Protection against vertically falling drops of water e.g. condensation.
2  Protection against direct sprays of water up to 15o from the vertical.
3  Protected against direct sprays of water up to 60o from the vertical.
4  Protection against water sprayed from all directions - limited ingress permitted.
5  Protected against low pressure jets of water from all directions - limited ingress.
6  Protected against temporary flooding of water, e.g. for use on ship decks - limited ingress permitted.
7  Protected against the effect of immersion between 15 cm and 1 m.
8  Protects against long periods of immersion under pressure.

IP Third number - Protection against mechanical impacts (commonly omitted, the third number is not a part of IEC 60529)
0  No protection.
1  Protects against impact of 0.225 joule (e.g. 150 g weight falling from 15 cm height).
2  Protected against impact of 0.375 joule (e.g. 250 g weight falling from 15 cm height).
3  Protected against impact of 0.5 joule (e.g. 250 g weight falling from 20 cm height).
4  Protected against impact of 2.0 joule (e.g. 500 g weight falling from 40 cm height).
5  Protected against impact of 6.0 joule (e.g. 1.5 kg weight falling from 40 cm height).
6  Protected against impact of 20.0 joule (e.g. 5 kg weight falling from 40 cm height).
Jika dilihat, Xperia Z memiliki sertifikasi IP57 maka:
5 --->  Terlindung dari debu dalam jumlah terbatas dan aman?
7 -->   Terlindung jika ditenggelamkan / didiamkan antara 15cm - 1meter kedalaman air

Semoga informasi berguna buat saya dan juga buat pembaca.
Thanks!

Source:
http://www.engineeringtoolbox.com
http://gerranek.blogspot.com
http://www.sensorsone.co.uk

Just collecting notes and sharing..

Sunday, May 5, 2013

Adding or Removing IDENTITY in existing Column SQL Server


Hi all, this is just a documented version from http://stackoverflow.com/ question and the best answers.

We can't alter the existing columns for identity.

Approach 1
We have 2 options,
1. Create a new table with identity and drop the existing table 
2. Create a new column with identity and drop the existing column 
Option 1:
you can retain the existing data values on the newly created identity column.
CREATE TABLE dbo.Tmp_Names
    (
      Id int NOT NULL
             IDENTITY(1, 1),
      Name varchar(50) NULL
    )
ON  [PRIMARY]
go
SET IDENTITY_INSERT dbo.Tmp_Names ON
go
IF EXISTS ( SELECT  *
            FROM    dbo.Names ) 
    INSERT  INTO dbo.Tmp_Names ( Id, Name )
            SELECT  Id,
                    Name
            FROM    dbo.Names TABLOCKX
go
SET IDENTITY_INSERT dbo.Tmp_Names OFF
go
DROP TABLE dbo.Names
go
Exec sp_rename 'Tmp_Names', 'Names'

Option 2:
you can’t retain the existing data values on the newly created identity column, The identity column will hold the sequence of number.
Alter Table Names Add Id_new Int Identity(1, 1)
Go
Alter Table Names Drop Column ID
Go
Exec sp_rename 'Names.Id_new', 'ID', 'Column'


Approach 2:

In SQL 2005 and above, there's a trick to solve this problem without changing the table's data pages. This is important for large tables where touching every data page can take minutes or hours. The trick also works even if the identity column is a primary key, is part of a clustered or non-clustered index, or other gotchas which can trip up the the simpler "add/remove/rename column" solution.
Here's the trick: you can use SQL Server's ALTER TABLE...SWITCH statement to change the schema of a table without changing the data, meaning you can replace a table with an IDENTITY with an identical table schema, but without an IDENTITY column. The same trick works to add IDENTITY to an existing column.
Normally, ALTER TABLE...SWITCH is used to efficiently replace a full partition in a partitioned table with a new, empty partition. But it can also be used in non-partitioned tables too.
I've used this trick to convert, in under 5 seconds, a column of a of a 2.5 billion row table from IDENTITY to a non-IDENTITY (in order to run a multi-hour query whose query plan worked better for non-IDENTITY columns), and then restored the IDENTITY setting, again in less than 5 seconds.
Here's a code sample of how it works.
 CREATE TABLE Test
 (
   id int identity(1,1),
   somecolumn varchar(10)
 );

 INSERT INTO Test VALUES ('Hello');
 INSERT INTO Test VALUES ('World');

 -- copy the table. use same schema, but no identity
 CREATE TABLE Test2
 (
   id int NOT NULL,
   somecolumn varchar(10)
 );

 ALTER TABLE Test SWITCH TO Test2;

 -- drop the original (now empty) table
 DROP TABLE Test;

 -- rename new table to old table's name
 EXEC sp_rename 'Test2','Test';

 -- see same records
 SELECT * FROM Test; 
This is obviously more involved than the solutions in other answers, but if your table is large this can be a real life-saver. There are some caveats:
you'll need to drop foreign keys before you do the switch and restore them after.
same for WITH SCHEMABINDING functions, views, etc.
new table's indexes need to match exactly (same columns, same order, etc.)
old and new tables need to be on the same file group.
only works on SQL Server 2005 or later
I previously believed that this trick only works on the Enterprise or Developer editions of SQL Server (because partitions are only supported in Enterprise and Developer versions), but Mason G. Zhwiti in his comment below says that it also works in SQL Standard Edition too. I assume this means that the restriction to Enterprise or Developer doesn't apply to ALTER TABLE...SWITCH.
There's a good article on TechNet detailing the requirements above.

Just collecting notes and sharing..
Source: stackoverflow.com


Wednesday, January 23, 2013

Bore And Stroke Pada Kendaraan Bermotor

Berhubung saya kurang mengerti tentang otomotif, jadi kepikiran buat dokumentasi'in istilah yang paling sering ditemui dalam spesifikasi kendaraan bermotor yakni BORE dan STROKE :-)

Bore dan Stroke
Bore adalah diameter silinder blok mesin, sedangkan Stroke adalah jarak pergerakan silinder dalam blok mesin (untuk lebih jelas silakan liat gambar). 


Dari penjelasan dimensi bore dan stroke, kita dapat menghitung kapasitas mesin dengan rumus volume silinder.
Kapasitas mesin (cc) = Luas Silinder x Panjang Stroke


Dengan mengenal spek bore dan stroke kita bisa mengenal karakter performance motor, apakah berkarakter overbore atau overstroke.
Overbore :
Karakter mesinnya adalah panjang bore lebih panjang daripada panjang stroke ( bore length > stroke lenth)
Power motor muncul terutama saat putaran mesin tinggi. Ini disebabkan panjang pergerakan naik turun piston lebih cepat karena jarak stroke yang pendek.

Overstroke :
Karakter mesinnya adalah panjang stroke lebih panjang atau relatif sama panjangnya dengan panjang bore (bore length =< stroke length ) maka dipastikan performance mesin dirancang untuk mengeluarkan kemampuannya di putaran mesin rendah sampai menengah.

Jadi dengan melihat spek bore dan stroke sekarang kita bisa dengan gamblang melihat karakter mesin motor tersebut.

Untuk urusan Power (biasanya satuannya PS ato HP per *rpm*):
Mesin overbore mendapat power tertinggi pada putaran tinggi, sedangkan mesin overstroke mendapat power tertinggi pada putaran yang rendah. Dengan kata lain, mesin overstroke top speed nya tidak setinggi mesin overbore

Untuk urusan Torsi (biasa satuannya Nm per *rpm*):
Mesin overbore relatif lebih rendah dibanding mesin overstroke. Karena torsi max yang bisa didapat pada putaran mesin yang rendah (rpm) maka mesin overstroke secara acceleration speed diatas mesin overbore.

Perbandingan karakter mesin tersebut terbatas pada mesin cc yang sama. Bagaimanapun juga, kompresi mesin, rangka motor, dan alat2 penunjang lainnya juga mempengaruhi realita top speed dan akselerasi motor yang bersangkutan.
Untuk hal tersebut mungkin akan didokumentasikan pada artikel selanjutnya! :)

Jika anda melihat gambar dibawah ini, sudah bisakah anda membedakan mana yg lebih unggul di top speed atau akselerasi dan mana yang overbroke dan overstroke?
:)

Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one.

Sumber:
http://wendakalubis.wordpress.com

Wednesday, January 16, 2013

10 Gejala Umum Infeksi HIV Yang Terabaikan

Hingga saat ini Human Immunodeficiency Virus atau yang kita kenal dengan HIV masih menjadi penyakit mematikan dan belum ditemukan obat untuk menyembuhkannya. Secara umum sulit sekali membedakan gejala infeksi virus HIV dengan penyakit lain. Bahkan pada beberapa kasus, keterlambatan diagnosa penyakit HIV bisa berujung pada kematian.

Virus HIV ditularkan melalui cairan tubuh seperti sperma, cairan vagina, atau transfusi darah. Virus ini hanya memerlukan waktu maksimal dua bulan sebelum masuk ke dalam tubuh dan menggerogoti sistem pertahanan tubuh kita.
Antara 40-90 persen orang yang terpapar virus HIV pada awalnya akan mengalami gejala seperti flu yang dikenal dengan Acute Retroviral Syndrome disingkat ARS. Namun terkadang gejala HIV tidak dapat terdeteksi bahkan hingga beberapa tahun ke depan pasca terinfeksi virus HIV.
“Karena HIV tidak dapat terdeteksi sejak dini dan apakah tubuh kita terpapar HIV atau tidak maka sangat direkomendasikan untuk melakukan tes laboratorium untuk mengetahuinya. Terutama bagi Anda yang gemar berhubungan seks dengan orang-orang yang berbeda,” ungkap Michael Horberg, MD, Direktur HIV/AIDS for Kaiser Permanente, di Oakland.
Berikut 10 gejala umum virus HIV yang patut Anda waspadai
  1. Demam
    Demam ringan adalah gejala awal yang paling umum terjadi saat seseorang terpapar virus HIV. Demam ringan ini seringkali disertai dengan sakit tenggorokan, kelelahan yang ekstrim, dan pembekakan kelenjar getah bening.
    Demam adalah reaksi dari sistem kekebalan tubuh sebagai akibat dari masuknya virus HIV ke aliran darah dengan jumlah yang berlipat ganda.
  2. Nyeri Otot
    Nyeri otot dan persendian tak hanya dialami oleh orang-orang yang mengalami gejala penyakit hepatitis dan sifilis, tapi juga dirasakan seseorang yang telah terpapar virus HIV. Gejala ini seringkali diabaikan hingga paparan virus HIV benar-benar masuk ke tingkat yang mengkhawatirkan.
  3. Ruam Kulit
    Ruam bisa berupa bercak-bercak kemerahan pada kulit atau benjolan menyerupai jerawat dalam jumlah banyak yang tak sembuh-sembuh. Gejala ini akan muncul jika paparan virus HIV telah mencapai pada tingkat yang lebih parah.
  4. Mual, Muntah, dan Diare
    Antara 30- 60 persen pengidap HIV akan mengalami gejala singkat mual, muntah, dan serangan diare. Selain sebagai gejala HIV tahap lanjut, gejala-gejala di atas juga bisa muncul sebagai efek samping dari terapi pengobatan.
  5. Berat Badan Turun Drastis
    Berat badan turun drastis merupakan gejala tahap lanjut bahwa tubuh telah terinfeksi HIV. Berat badan turun drastis bisa terjadi akibat diare atau kurangnya nutrisi tubuh akibat sering memuntahkan makanan.
  6. Batuk Kering
    Biasanya batuk kering akan terjadi setelah satu tahun terjangkit virus HIV, sekaligus menjadi tanda bahwa penyakit ini semakin memburuk. Penggunaan obat batuk sekali pun tidak dapat meredakan batuk akibat paparan virus HIV.
  7. Perubahan pada Kuku
    Tanda lain dari infeksi HIV adalah perubahan pada kuku seperti penebalan, kuku melengkung, dan perubahan warna seperti kuku menghitam atau muncul garis coklat vertikal atau horisontal dipermukaan kuku.
    “Perubahan kuku ini dapat terjadi akibat infeksi jamur seperti kandida. Mengingat penderita HIV mengalami penurunan sistem kekebalan tubuh, maka jamur tersebut bisa sangat mudah berkembang,” kata Horberg.
  8. Infeksi Jamur pada Mulut
    Infeksi jamur tak hanya menyerang permukaan kuku, tapi juga organ lain seperti mulut. Jika jamur sudah menginfeksi mulut, maka pengidap HIV akan sulit untuk mengunyah dan menelan makanan.
  9. Kebingungan dan Sulit Konsentrasi
    Masalah kognitif bisa menjadi tanda demensia terkait HIV. Selain mengalami kebingungan dan sulit berkonsentrasi, demensia terkait HIV juga dapat mempengaruhi memori dan masalah perilkau seperti mudah marah dan tersinggung. Gejala ini diiringi dengan menurunnya keampuan motoris tubuh seperti menjadi ceroboh, menurunnya kordinasi tubuh, dan bahkan hilangnya kemampuan untuk menulis.
  10. Herpes Genital
    Herpes genital yang terjadi pada penderita HIV umumnya tidak memiliki gejala yang khas. Namun luka yang muncul cenderung lebih besar dan lebih dalam. Penyakit ini lebih banyak menular melalui hubungan kontak kulit dengan penderita, terutama saat berhubungan seks. Umumnya gejalanya adalah timbul bintil-bintil di bagian luar alat kelamin yang bentuknya memerah dan membengkak.
Sumber tulisan:
http://id.she.yahoo.com

Just collecting notes and sharing..
Please let me know if there are wrong statements in this article or a copy-paste one.

Monday, October 15, 2012

Locking Table [Tablock vs Tablocks]

If you are in a transaction and you grab an exclusive lock on a table, EG:

SELECT 1 FROM TABLE WITH (TABLOCKX)

No other processes will be able to grab any locks on the table, meaning all queries attempting to talk to the table will be blocked until the transaction commits.

TABLOCK only grabs a shared lock, shared locks are released after a statement is executed if your transaction isolation is READ COMMITTED (default). If your isolation level is higher, for example:SERIALIZABLE, shared locks are held until the end of a transaction.

Shared locks are, hmmm, shared. Meaning 2 transactions can both read data from the table at the same time if they both hold a S or IS lock on the table (via TABLOCK). However, if transaction A holds a shared lock on a table, transaction B will not be able to grab an exclusive lock until all shared locks are released. Read about which locks are compatible with which at msdn.

Both hints cause the db to bypass taking more granular locks (like row or page level locks). In principle, more granular locks allow you better concurrency. So for example, one transaction could be updating row 100 in your table and another row 1000, at the same time from two transactions (it gets tricky with page locks, but lets skip that).

In general granular locks is what you want, but sometimes you may want to reduce db concurrency to increase performance of a particular operation and eliminate the chance of deadlocks.

In general you would not use TABLOCK or TABLOCKX unless you absolutely needed it for some edge case.

Quite an old article on mssqlcity attempts to explain the types of locks:
Shared locks are used for operations that do not change or update data, such as a SELECT statement.
Update locks are used when SQL Server intends to modify a page, and later promotes the update page lock to an exclusive page lock before actually making the changes.
Exclusive locks are used for the data modification operations, such as UPDATE, INSERT, or DELETE.
What it doesn't discuss are Intent (which basically is a modifier for these lock types). Intent (Shared/Exclusive) locks are locks held at a higher level than the real lock. So, for instance, if your transaction has an X lock on a row, it will also have an IX lock at the table level (which stops other transactions from attempting to obtain an X lock on the table until your transaction completes or rolls back).

The concept of "sharing" a lock is quite straightforward - multiple transactions can have a Shared lock for the same resource, whereas only a single transaction may have an Exclusive lock, and an Exclusive lock precludes any transaction from obtaining or holding a Shared lock.

Exclusive locks are always held until the end of the transaction.

all shared locks are released at the end of a statement in a read committed transaction, if you want to hold the locks you need hints or a higher isolation level. tablockx will grab an X lock.


Just collecting notes and sharing..
Source: www.stackoverflow.com

Wednesday, August 15, 2012

Makanan yang melemahkan Tulang

Ghiboo.com - Selain mengetahui makanan mana saja yang memperkuat tulang, kita juga perlu tahu makanan yang bisa merusak tulang.

Bisa saja, beberapa makanan favorit Anda justru melemahkan kekuatan tulang Anda. Yuk, cari tahu agar Anda bisa membatasi konsumsinya sebelum terlambat.

Makanan asin dengan garam tinggi

Makanan olahan atau makanan asin membuat kalsium dalam tulang menghilang. Hal ini terjadi karena garam dapat menyebabkan ekskresi kalsium yang berlebihan melalui ginjal. Sebaiknya, asupan garam tak lebih dari 1.200 mg per hari.

Makanan manis

Ternyata makanan manis tak hanya memengaruhi kesehatan gigi saja, tetapi juga menimbulkan masalah baru pada tulang Anda. Kelebihan gula dapat menghambat penyerapan kalsium dan mengikis fosfor. Jika Anda menyukai makanan manis, ganti dengan buah-buahan dan hindari makanan olahan.

Cola

Minuman bersoda mengurangi kepadatan mineral tulang yang meningkatkan risiko patah tulang. Cola mengandung asam folat yang dapat melemahkan usus dan penyerapan kalsium.

Kafein

Kafein dapat melarutkan kalsium dalam tulang dan melemahkan fungsinya. Sekitar 6 miligram kalsium akan hilang setiap kali Anda mengonsumsi 100 mg kafein. Terlebih lagi, jika ditambahkan gula yang malah memberikan efek merugikan bagi kesehatan tulang.

Alkohol

Alkohol berkontribusi pada rendahnya massa tulang, penurunan pembentukan tulang, meningkatkan risiko patah tulang dan menghambat pemulihan patah tulang.

Kacang

Hampir semua kacang-kacangan mengandung phytates. Sayangnya, hampir semua kacang-kacangan mengandung phytate. Phytate dapat mengganggu kemampuan tubuh untuk menyerap kalsium. Tapi, sebaiknya tak perlu takut dan memilih menghindari kacang. Makanan ini mengandung magnesium, serat dan nutrisi lainnya yang diperlukan tubuh. Untuk mengatasinya, pengurangan tingkat phytate dapat dilakukan dengan merendam biji kacang dalam air beberapa jam sebelum direbus.

Just collecting notes and sharing..

Wednesday, June 6, 2012

Java Notes: Comparable dan Comparator

Comparable - java.lang package

@ this.compateTo(object o)
 same -> = 0
 less than -> <0
 greater than -> >0

Comparator - java.util package

@compare(object o1, object o2)
 same -> = 0
 less than -> <0
 greater than -> >0

Both are interface.
The different is "this" reference

Comparable is used by most java class like String, Date, Array, wrapper classes, etc
Comparable implement natural ordering of object.
If any object implements Comparable and collection of that object is either List or Array can be sorted automatically.

Oject that implement Comparable in Java can be used as keys in sorted map or elements in a sorted set. Eg. TreeSet, without specifiying any Comparator


Just collecting notes & sharing..
Please let me know if there are wrong statements in this article or a copy-paste one.

Saturday, May 19, 2012

About Color Banding

Do you know about Color banding?

If you are working in design animation, video rendering, digital coloring and its friends, you must know well about this, otherwise you may unfamiliar with this. The only reason I post about this one because somehow it is interested me.

After read about the newest video encoding in 10bit depth, I accidentally know about what is the color banding is. I get this from watching my favorite anime with 10bit depth encoding. That's how I get know about color banding.

Color Banding sample


Banding happens when video is compressed or decompressed and similar colors get posterized. This undesirable, visible bands of color that can be distracting, and in some cases downright ugly. It can happen in many situation, like video, picture or games. If it is in a small area, we wont notice and nobody got annoyed. But if we see in a large area, a large screen, it will very-very disturbing our eyes.

There are quite a few ways to remove color banding. Everyone seems to have their own formula.And for those kind of matters, I dont have any knowledge to explain it in here.



Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one.

Thursday, May 17, 2012

Comparing Date in Java


import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class HashtableDemo {

    public static void main(String args[]) throws AssertionError, ParseException {

        DateFormat df = new SimpleDateFormat("dd-MM-yyyy");

        //comparing date using compareTo method in Java
        System.out.println("Comparing two Date in Java using CompareTo method");
        compareDatesByCompareTo(df, df.parse("01-01-2012"), df.parse("01-01-2012"));
        compareDatesByCompareTo(df, df.parse("02-03-2012"), df.parse("04-05-2012"));
        compareDatesByCompareTo(df, df.parse("02-03-2012"), df.parse("01-02-2012"));

        //comparing dates in java using Date.before, Date.after and Date.equals
        System.out.println("Comparing two Date in Java using Date's before, after and equals method");
        compareDatesByDateMethods(df, df.parse("01-01-2012"), df.parse("01-01-2012"));
        compareDatesByDateMethods(df, df.parse("02-03-2012"), df.parse("04-05-2012"));
        compareDatesByDateMethods(df, df.parse("02-03-2012"), df.parse("01-02-2012"));

        //comparing dates in java using Calendar.before(), Calendar.after and Calendar.equals()
        System.out.println("Comparing two Date in Java using Calendar's before, after and equals method");
        compareDatesByCalendarMethods(df, df.parse("01-01-2012"), df.parse("01-01-2012"));
        compareDatesByCalendarMethods(df, df.parse("02-03-2012"), df.parse("04-05-2012"));
        compareDatesByCalendarMethods(df, df.parse("02-03-2012"), df.parse("01-02-2012"));

    }

    public static void compareDatesByCompareTo(DateFormat df, Date oldDate, Date newDate) {
        //how to check if date1 is equal to date2
        if (oldDate.compareTo(newDate) == 0) {
            System.out.println(df.format(oldDate) + " and " + df.format(newDate) + " are equal to each other");
        }

        //checking if date1 is less than date 2
        if (oldDate.compareTo(newDate) < 0) {
            System.out.println(df.format(oldDate) + " is less than " + df.format(newDate));
        }

        //how to check if date1 is greater than date2 in java
        if (oldDate.compareTo(newDate) > 0) {
            System.out.println(df.format(oldDate) + " is greater than " + df.format(newDate));
        }
    }

    public static void compareDatesByDateMethods(DateFormat df, Date oldDate, Date newDate) {
        //how to check if two dates are equals in java
        if (oldDate.equals(newDate)) {
            System.out.println(df.format(oldDate) + " and " + df.format(newDate) + " are equal to each other");
        }

        //checking if date1 comes before date2
        if (oldDate.before(newDate)) {
            System.out.println(df.format(oldDate) + " comes before " + df.format(newDate));
        }

        //checking if date1 comes after date2
        if (oldDate.after(newDate)) {
            System.out.println(df.format(oldDate) + " comes after " + df.format(newDate));
        }
    }

    public static void compareDatesByCalendarMethods(DateFormat df, Date oldDate, Date newDate) {

        //creating calendar instances for date comparision
        Calendar oldCal = Calendar.getInstance();
        Calendar newCal = Calendar.getInstance();

        oldCal.setTime(oldDate);
        newCal.setTime(newDate);

        //how to check if two dates are equals in java using Calendar
        if (oldCal.equals(newCal)) {
            System.out.println(df.format(oldDate) + " and " + df.format(newDate) + " are equal to each other");
        }

        //how to check if one date comes before another using Calendar
        if (oldCal.before(newCal)) {
            System.out.println(df.format(oldDate) + " comes before " + df.format(newDate));
        }

        //how to check if one date comes after another using Calendar
        if (oldCal.after(newCal)) {
            System.out.println(df.format(oldDate) + " comes after " + df.format(newDate));
        }
    }
}

Output:

Comparing two Date in Java using CompareTo method
01-01-2012 and 01-01-2012 are equal to each other
02-03-2012 is less than 04-05-2012
02-03-2012 is greater than 01-02-2012
Comparing two Date in Java using Date's before, after and equals method
01-01-2012 and 01-01-2012 are equal to each other
02-03-2012 comes before 04-05-2012
02-03-2012 comes after 01-02-2012
Comparing two Date in Java using Calendar's before, after and equals method
01-01-2012 and 01-01-2012 are equal to each other
02-03-2012 comes before 04-05-2012
02-03-2012 comes after 01-02-2012


Source: roseIndia.net

Just collecting notes & sharing..

Sunday, May 13, 2012

ConcurrentHashMap and hashTable

So what is the difference between hashtable and ConcurrentHashMap , both can be used in multithreaded environment but once the size of hashtable becomes considerable larg,e performance degrade because for iteration it has to be locked for longer duration.

Since ConcurrentHashMap indroduced concept of segmentation , how large it becomes only certain part of it get locked to provide thread safety so many other readers can still access map without waiting for iteration to complete.

In Summary ConcurrentHashMap only locked certain portion of Map while Hashtable lock full map while doing iteration.

Just collecting notes and sharing..
Please let me know if there're wrong statements in this article or copy-paste one.

Monday, May 7, 2012

Tertawa itu sehat dan menguntungkan

Setiap orang pasti akan tertawa beberapa kali setiap hari. Mendengarkan lelucon, menonton film komedi atau membaca cerita lucu dengan mudah membuat kita tertawa.
Tertawa ternyata tak hanya mengungkapkan perasaan bahagia, namun juga membuat tubuh menjadi lebih sehat. Berikut ini beberapa manfaat dari tertawa yang bisa Anda rasakan bagi kesehatan.

1. Tertawa membantu meningkatkan sistem kekebalan tubuh dengan meningkatkan jumlah antibodi yang memproduksi sel T. Sel-sel ini membantu tubuh melawan virus dan tumor.

2. Tertawa membantu penderita hipertensi karena dapat menurunkan tekanan darah. Tertawa juga mengurangi kadar hormon kartisol yang menghalangi proses penyembuhan penyakit dan juga membantu menstabilkan tingkat gula darah.

3. Tertawa merangsang perubahan zat kimia dalam otak yang membantu menahan tubuh terhadap efek kumulatif dari stres.

4. Tertawa membantu membakar kalori. Menurut penelitian, tertawa 10-15 menit setiap hari dapat membakar kalori hingga 40 kalori. Tertawa juga meningkatkan denyut jantung dan mempercepat metabolisme yang memengaruhi berat badan.

5. Tertawa merangsang otak untuk memproduksi hormon endorfin, yang membantu menaikkan suasana hati seseorang dan membuat perasaan bahagia.

6. Tertawa membantu mengurangi peradangan di seluruh tubuh, sehingga baik bagi kesehatan jantung, otak dan peredaran darah.

7. Tertawa menjadi 'pijat' bagi organ internal karena efeknya mirip dengan melakukan olahraga.

8. Tertawa juga memberikan latihan ringan untuk jantung, paru-paru, diagfragma dan bahkan otot-otot perut.

9. Tertawa membantu melepaskan ketegangan di otot-otot wajah, leher, bahu dan perut, dimana semua bagian tubuh ini sering mengalami ketegangan akibat rutinitas sehari-hari.

10. Tertawa itu menular. Orang yang tertawa atau melucu dengan membuat lelucon akan mengundang tawa sehingga meningkatkan semangat dan menciptakan energi positif bagi orang-orang sekitarnya.

Just collecting notes and sharing..
Source: Ghiboo.com

Friday, April 20, 2012

Bakteri Titanic


Kanada (AFP/ANTARA) - Dalam waktu kurang dari 30 tahun, mungkin tidak akan ada yang tersisa dari kapal Titanic kecuali "rusticle,” formasi karat yang mirip stalaktit, kata penelilti Henrietta Mann, yang menghabiskan empat tahun untuk mempelajari bakteri yang menggerogoti kapal karam tersebut.

Ekspedisi penelitian pada 1991 ke bangkai kapal yang terletak sekitar 12.400 kaki (3.780 meter) di dasar laut itu mengungkapkan formasi gugusan karat yang serupa dengan es atau stalaktit menggatung di kapal besar tersebut. Mereka biasanya terjadi di bawah air ketika besi tempa teroksidasi.
Mann, seorang pakar biologi dan geologi dari Universitas Dalhouseie di Halifax, memperoleh sempel dari Institut Oceanografi Bedford dan menelitinya dengan mikroskop elektronik. Dia menemukan fakta kalau bakteri itu, bukan karena proses kimia, menjadi alasan terbentuknya formasi yang terjadi di perairan dalam tesebut.


Peneliti Kanada itu mengidentifikasi puluhan bakteri, termasuk satu yang tidak pernah terlihat sebelumnya, yang ia juluki sebagai Halomonas titanicae, telah "mengunyah" lambung baja kapal tersebut dan mengubahnya, atom per atom, menjadi "rusticle," beberapa bahkan setinggi pria dewasa.
Tak terlihat dengan mata telanjang, berukuran hanya 1,6 mikrometer panjangnya, bakteri ini berkembang biak menjadi miliaran selama bertahun-tahun.


"Titanic terdiri dari 50.000 ton baja," kata Mann kepada AFP. "Jadi, ada banyak makanan untuk bakteri saya."
Bakteri itu juga memakan jendela, tangga, dan gerbang – semuanya yang terbuat dari besi kasar - serta tungku besi. "Mereka makan itu juga," kata Mann. Hanya kuningan yang tidak disentuh.
"Saya tidak tahu kecepatan mereka memakan besi," tapi membandingkan foto-foto awal dari bangkai itu dengan foto yang terbaru, jelas terlihat perubahan yang cepat telah terjadi.

"Mungkin dalam 20 atau 30 tahun dari sekarang bangkai kapal ini akan runtuh (menjadi) tumpukan karat," katanya.
Mann mancatat 27 bakteri yang hidup di rusticle, beberapa memiliki tentakel, serta cacing tabung dan makhluk kecil lainnya, bergerak dalam "koloni yang bersimbiosis."
Bakteri pertama mungkin diciptakan oleh diatom (ganggang uniseluler) dalam "salju laut" - kotoran dari permukaan.


Salah satu bakteri kemudian menghasilkan bakteri lain dan bersama-sama mereka membentuk rantai dan kemudian jaring, lebih banyak bakteri tumbuh pada jaring dan mengisi lubang-lubang dan akhirnya mengeras menjadi struktur rusticle dengan di dalam sirkulasi air. "Struktur bakteri ini seperti spons," jelas Mann.
Kehancuran Titanic sudah pasti akan menjadi kerugian besar warisan dunia, kata Mann. Tapi pada saat yang sama penemuannya menawarkan harapan: semua kapal tua, rig minyak dan kargo yang jatuh ke dasar laut tidak akan menumpuk seperti sampah.
Bakteri akhirnya akan menghancurkan semuanya.


Just collecting notes and sharing..
Sumber: id.berita.yahoo.com (AFP)