Membuat Branch dengan SVN

Bila dibandingkan dengan Git Tortoise, membuat branch di SVN memang sedikit ribet. Namun, bila hal tersebut tuntutan tempat kerja mau tidak mau kita harus mau dan bisa menggunakannya. Berikut saya share sedikit tentang tahapan-tahapan bagaimana membuat Branch di SVN. Saya sertakan Screen Capturenya semoga bisa lebih memperjelas.

Gunakan context menu untuk membuka Repositoy Browser

Blog-CreateBranch-SVN-win (1)

 

 

 

 

 

Masukan URL repository berada

Blog-CreateBranch-SVN-win (2)

 

 

 

 

 

 

Pada folder Trunk klik kanan dan pilih Copy to ..

Blog-CreateBranch-SVN-win (3)

 

 

 

 

 

Masukan Nama Branch baru

Blog-CreateBranch-SVN-win (4)

 

 

 

 

 

 

Masukan komentar/log branch baru

Blog-CreateBranch-SVN-win (5)

 

 

 

 

 

 

Branch jadi

Blog-CreateBranch-SVN-win (6)

 

 

 

 

 

Check out di Branches

Blog-CreateBranch-SVN-win (7)

 

 

 

 

 

Simpan dimana akan diletakan

Blog-CreateBranch-SVN-win (8)

 

 

 

 

 

 

 

Lalu proses download akan berlangsung.

Blog-CreateBranch-SVN-win (9)

 

 

 

 

 

Selesai.

 

Sumber:

youtube.com/watch?v=7j4tvvYSTIg

Teknologi Baru di Intel Software Day Bandung

Image0148Intel menyelenggarakan acara Software Day di Digital Valley Building, Telkom Bandung hari minggu tanggal 17 Desember 2012. Acara ini diselenggarakan bagi para developer aplikasi. Di acara ini Intel Asia Pacific mengenalkan teknologi-teknologi baru yang akan dirilis di produk-produk intel tahun depan, 2013. Multi-touch technology, multi sensor, perceptual computing, dan paralel computing merupakan teknologi yang akan dikedepankan oleh intel. Semua perangkat yang akan keluar memanfaatkan teknologi touch screen. Dalam hal ini Windows 8 dan Android merupakan perangkat lunak yang sangat cocok untuk memanfaatkan teknologi tersebut. Multi sensor, Intel menanam berbagai macam sensor, seperti sensor cahaya, gyroscope, acceloromeeter, compas, bahkan kamera ‘kineck’ ala intel. Sehingga perangkat intel nantinya akan bisa menangkap object tiga dimensi dihadaapnnya. Paralel computing, intel ingin supaya semua perangkat bila berada dalam suatu area dapat berkomunikasi satu sama lain mesi dia berbeda jenis, seperti smartphone, tab, ultrabook, notebook, bahkan alat rumah tangga. Intel mendorong para developer khususnya developer Indonesia untuk memulai membuat atau menuangkan ide membuat aplikasi untuk diterapkan pada perangkat-perangkat intel yang akan keluar tidak lama lagi. Intel memberi klu untuk memanfaatkan teknologi baru yang diusungnya untuk diterapkan pada aplikasi dibuat para developer, sehingga aplikasi tersebut dapat memberikan pengalaman baru kepada para pengguna.

Produk yang akan dikeluarkan tahun depan adalah smartphone, tab, dan Ultrabook. Ya, intel akan membuat smartphone, intel akan membuat smarphone yang didedikasikan untuk sistem operasi Android. Sehingga nantinya akan ada smartphone dengan bertuliskan “Intel Inside”. Tahun depan di Indonesia intel akan mengeluarkan smartphone dan tab dari dua merek gadget terkemuka.

Hal yang paling wow dari intel ini adalah Ultrabook. Ultrabook yang dikeluarkan intel ini adalah Ultrabook generasi ke-4. Ultrabook ini benar-benar memberikan pengalaman baru kepada pengguna. Ultrabook ini menggabungkan fungsi dari tab dan smartphone dengan notebook atau laptop.  Alhasil Ultrabook ini bisa difungsikan sebagai tab, untuk menikmati konten-konten informasi atau notebook, sebagai alat yang produktif. Banyak hal baru yang merupakan kelebihan dari utrabook ini. Di antaranya adalah ultrathin, perangkat yang sangat tipis, ultrasecure, sekuritas terjamin karena intel telah menggandeng McAfee sebagai partner dalam mengembangkannya, dan ultra responsif, merupakan perangkat sangat cepat dengan dukungan Processor Intel Core. Di demo yang ditunjukkan oleh Pak Firstman, selaku Business Manager Intel Asia Pacific, Ultrabook bisa hidup dan digunakan dalam hitungan ke-5.

So, buat para developer terbuka lebar kesempatan untuk memasarkan aplikasi. Jadilah generasi awal pembuat aplikasi teknologi baru ini, sebelum saat boomingnya. Banyak tools dan teknologi baru yang siap dimanfaatkan. Khusus buat aplikasi dengan bawaan Intel, telah diasediakan  pasar aplikasi sotware yang bernama AppUp.

Konversi Tipe dalam C++

Casting Tipe

Mengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

Konversi implisit

implisit konversi tidak memerlukan operator manapun. Mereka secara otomatis dilakukan ketika nilai akan disalin ke sebuah tipe yang kompatibel. Sebagai contoh:

1
2
3
pendek 2000 =,
int b,
b = a;

Di sini, nilai telah dipromosikan dari pendek int dan kita tidak harus menentukan segala-casting tipe operator. Ini dikenal sebagai konversi standar. Standar konversi mempengaruhi data jenis fundamental, dan memungkinkan konversi seperti konversi antara tipe numerik (singkat ke int, int ke float, double ke int …), ke atau dari bool, dan beberapa konversi pointer. Beberapa dari konversi ini dapat diartikan hilangnya presisi, yang compiler dapat sinyal dengan peringatan. Hal ini dapat dihindari dengan konversi eksplisit.

konversi implisit juga mencakup atau operator konversi konstruktor, yang mempengaruhi kelas-kelas yang mencakup konstruktor spesifik atau fungsi operator untuk melakukan konversi. Sebagai contoh:

1
2
3
4
5
kelas A {};
kelas B {public: B (A a) {}};

A,
B b = a;

Di sini, sebuah konversi implisit terjadi antara objek kelas A dan kelas B, karena B memiliki konstruktor yang mengambil sebuah objek dari kelas A sebagai parameter. Oleh karena itu konversi implisit dari A ke B diperbolehkan.

Explicit konversi

C + + adalah bahasa yang kuat-diketik. Banyak konversi, khususnya mereka yang menyiratkan interpretasi yang berbeda dari nilai, memerlukan konversi eksplisit. Kita telah melihat dua notasi untuk konversi tipe eksplisit: fungsional dan c-seperti casting:

1
2
3
4
pendek = 2000;
int b,
b = (int) a; / /  seperti notasi cast
c-b= int (a); / / notasi fungsional

Menjamin fungsionalitas dari operator konversi eksplisit adalah cukup untuk kebutuhan yang paling mendasar dengan tipe data. Namun, operator dapat diterapkan tanpa pandang bulu di kelas dan pointer ke kelas, yang dapat menyebabkan kode yang sementara sintaksis benar dapat menyebabkan error runtime. Sebagai contoh, kode berikut ini sintaktis benar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/ / kelas jenis-casting
# include <iostream.h>
using namespace std;

kelas CDummy
{floati,
j;};

CAddition kelas
{intx, y;
publik:
CAddition (int a, int b) {x = a, y = b;}
int hasil () {return x +
y;}};

int main ()
{CDummyd;
CAddition * padd;
padd = CAddition *) &d;(();
cout <<hasil padd->
return
0;}

Program ini menyatakan pointer ke CAddition, tapi kemudian akan menetapkan untuk itu referensi ke objek jenis lain yang tidak kompatibel menggunakan eksplisit casting tipe:

padd = (CAddition *) &d;

Tradisional casting eksplisit-tipe memungkinkan untuk mengubah penunjuk apapun ke dalam jenis pointer lain, terpisah dari jenis mereka menunjukkan. Panggilan berikutnya untuk menghasilkan anggota akan menghasilkan baik-time error menjalankan atau hasil yang tak terduga.

Dalam rangka untuk mengontrol jenis konversi antara kelas, kita memiliki empat operator casting spesifik: dynamic_cast, reinterpret_cast, static_cast dan const_cast. format mereka adalah untuk mengikuti tipe baru tertutup antara sudut-kurung (<>) dan segera setelah itu, ekspresi yang akan dikonversikan antara tanda kurung.

dynamic_cast <new_type> (ekspresi)
<new_type> reinterpret_cast (ekspresi)
static_cast <new_type> (ekspresi)
<new_type> const_cast (ekspresi)

Casting tradisional setara tipe ekspresi ini akan menjadi:

(New_type)ungkapan
new_type(ekspresi)

tetapi masing-masing dengan karakteristiknya sendiri yang khusus:

dynamic_cast

dynamic_cast dapat digunakan hanya dengan pointer dan referensi ke obyek. Tujuannya adalah untuk memastikan bahwa hasil konversi tipe obyek yang lengkap yang valid dari kelas diminta.

Oleh karena itu, dynamic_cast selalu berhasil ketika kita melemparkan kelas ke salah satu kelas dasar nya:

1
2
3
4
5
6
7
8
kelas CBase {};
CDerived kelas: CBase public {};

CBase b; CBase pb *;
CDerived d; CDerived * pd;

pb = dynamic_cast <CBase*> (& d); / / ok:-untuk-baseberasal
pd= dynamic_cast <CDerived*> (& b); / / salah: base-ke-turunan

Konversi kedua potongan kode ini akan menghasilkan kesalahan kompilasi sejak-ke-turunan konversi dasar tidak diperbolehkan dengan dynamic_cast kecuali kelas dasar adalah polimorfik.

Ketika kelas adalah polimorfik, dynamic_cast melakukan pemeriksaan khusus selama runtime untuk memastikan bahwa ungkapan menghasilkan objek yang lengkap yang valid dari kelas diminta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/ ​​/ dynamic_cast
# include <iostream.h>
# include <exception>
using namespace std;

kelas CBase dummy {virtual void () {}};
CDerived kelas: CBase public {int a;};

int main ()
{try{CBase
* PBA = CDerived baru;
CBase * PBB = CBase baru;
CDerived * pd;

pd = dynamic_cast <CDerived*> (PBA),
jika (pd == 0) cout <<“Null pointer pada cast pertama ketik” <<endl;

pd = <CDerived*> dynamic_cast (PBB),
jika (pd == 0) cout <<“Null pointer pada cast kedua tipe” <<endl;

} Catch (kecuali & e) {cout <<“Exception:” <e.what <();}
return
0;}

penunjuk Null pada kedua tipe cast
Kompatibilitas catatan: dynamic_cast membutuhkan Run-Time Jenis Informasi (bisa menghentikan) untuk melacak jenis dinamis. Beberapa compiler mendukung fitur ini sebagai pilihan yang dinonaktifkan secara default. Ini harus diaktifkan untuk memeriksa jenis runtime menggunakan dynamic_cast untuk bekerja dengan baik.

Kode mencoba untuk melakukan dua dinamis gips dari obyek penunjuk dari * CBase jenis (PBA dan PBB) untuk objek penunjuk dari tipe CDerived *, tetapi hanya yang pertama berhasil. mereka masing-masing Perhatikan inisialisasi:

1
2
CBase * PBA = baru CDerived;
CBase * PBB = CBase baru;

Meskipun keduanya pointer dari * CBase tipe, poin PBA untuk sebuah objek dari tipe CDerived, sementara poin PBB untuk objek CBase tipe. Jadi, ketika jenis mereka masing-tuang dilakukan menggunakan dynamic_cast, PBA menunjuk ke objek penuh kelas CDerived, sedangkan PBB menunjuk ke objek CBase kelas, yang merupakan objek tidak lengkap dari kelas CDerived.

Ketika dynamic_cast tidak dapat melemparkan pointer karena itu bukan objek lengkap yang diperlukan kelas-seperti pada konversi kedua dalam contoh sebelumnya-ia mengembalikan pointer null untuk mengindikasikan kegagalan. Jika dynamic_cast digunakan untuk mengkonversi ke tipe referensi dan konversi tidak mungkin, suatu pengecualian bad_cast tipe dilemparkan sebagai gantinya.

dynamic_cast juga dapat melemparkan pointer null bahkan antara pointer ke kelas yang tidak terkait, dan juga dapat cast pointer dari jenis apa pun untuk membatalkan pointer (* void).

static_cast

static_castdapat melakukan konversi antara pointer ke kelas yang terkait, tidak hanya dari kelas turunan ke basis, tetapi juga dari kelas dasar untuk menjadi produk turunan. Hal ini memastikan bahwa setidaknya kelas kompatibel jika objek yang tepat akan diubah, namun tidak ada pemeriksaan keamanan yang dilakukan selama runtime untuk memeriksa apakah obyek yang dikonversi pada kenyataannya merupakan objek penuh dari jenis tujuan. Oleh karena itu, terserah kepada programmer untuk memastikan bahwa konversi tersebut aman. Di sisi lain, overhead dari keselamatan-cek jenis dynamic_cast dihindari.

1
2
3
4
kelas CBase {};
CDerived kelas: CBase public {};
CBase * a CBase baru =;
CDerived * b <CDerived*> static_cast = (a);

Ini akan berlaku, meskipun b akan menunjuk ke suatu objek lengkap kelas dan dapat menyebabkan error runtime jika dereferenced.

static_cast juga dapat digunakan untuk melakukan setiap konversi non-pointer lain yang juga dapat dilakukan secara implisit, seperti untuk standar konversi misalnya antara tipe fundamental:

1
2
double d = 3,14159265;
int i = <int> static_cast (d);

Atau konversi antara kelas dengan konstruktor eksplisit atau fungsi operator Anda seperti diuraikan dalam “konversi implisit” di atas.

reinterpret_cast

reinterpret_castmengkonversi semua jenis penunjuk untuk semua jenis pointer lain, bahkan dari kelas yang tidak terkait. Hasil operasi salinan biner sederhana nilai dari satu pointer ke yang lain. Semua konversi pointer diperbolehkan: baik isi maupun menunjuk tipe pointer itu sendiri diperiksa.

Hal ini juga dapat cast pointer ke atau dari tipe integer. Format di mana nilai ini merupakan pointer integer adalah platform-khusus. Jaminan satu-satunya adalah bahwa seorang tokoh pointer ke tipe integer cukup besar untuk sepenuhnya berisi itu, diberikan untuk dapat dibuang kembali ke pointer yang valid.

Konversi yang dapat dilakukan oleh reinterpret_cast tetapi tidak oleh static_cast tidak menggunakan spesifik di C + + yang rendah tingkat operasi, yang hasil interpretasi dalam kode yang umumnya sistem-spesifik, dan dengan demikian non-portabel. Sebagai contoh:

1
2
3
4
kelas A {};
kelas B {};
A * A baru =;
B * b <B*> reinterpret_cast = (a);

Ini berlaku C + + kode, meskipun tidak masuk akal, karena sekarang kami memiliki pointer yang menunjuk ke suatu objek dari kelas yang tidak kompatibel, dan dengan demikian dereferencing itu tidak aman.

const_cast

Jenis casting memanipulasi constness suatu objek, baik untuk mengatur atau untuk dihapus. Sebagai contoh, untuk melewati sebuah argumen const ke fungsi yang mengharapkan-konstanta parameter non:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / const_cast
# include <iostream.h>
using namespace std;

void cetak (char * str)
{cout
<<str
<<endl;}

int main ()
{constchar * c = “contoh teks”;
cetak (*> <char const_cast (c));
return
0;}

contoh teks

typeid

typeidmemungkinkan untuk memeriksa jenis ekspresi:

typeid (ekspresi)

Operator ini mengembalikan referensi ke obyek konstan type_info tipe yang didefinisikan dalam file header <typeinfo> standar. Nilai ini kembali dapat dibandingkan dengan satu lagi operator yang menggunakan == dan! = Atau dapat berfungsi untuk memperoleh diakhiri karakter urutan-null mewakili tipe data atau nama kelas dengan menggunakan namanya () anggota.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/ / typeid
# include <iostream.h>
# include <typeinfo>
using namespace std;

int main ()
{int* a, b,
a = 0 b = 0;
if (typeid (a))! = typeid (b)
{cout
<<“a dan b adalah jenis yang berbeda: \ n”;
pengadilan <<“adalah:” <<typeid (a)  nama () n <<‘\’;
“.cout <<” b adalah: <typeid (b). <name () <‘<‘ \
n;}
return
0;}

a dan b adalah jenisberbeda:
yangadalah:*
bint:int

Ketika typeid diterapkan untuk kelas typeid menggunakan bisa menghentikan untuk melacak jenis objek dinamis. Ketika typeid diterapkan ke sebuah ekspresi yang tipe kelas polimorfik, hasilnya adalah jenis lengkap diturunkan dari objek yang paling:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/ / typeid, kelas polimorfik
# include <iostream.h>
# include <typeinfo>
# include <exception>
using namespace std;

kelas CBase {virtual void f () {}};
CDerived kelas: CBase public {};

int main ()
{try{CBase
* a CBase baru =;
CBase * b = new CDerived;
<cout <adalah: “<<(typeid a).” nama () <‘<‘ \ n;
cout <<” b adalah: “<<typeid (b)  Nama () n <<‘\’;
<.<pengadilan” * adalah: “<<typeid (* a)  Nama () n <<‘\’
<.pengadilan;<“* b adalah:” <<typeid (* b)  nama () n
“.<<‘\’;}catch (kecuali & e) {cout <<” Pengecualian: <e.what <() <<endl; }
return
0;}

adalah: CBase kelas *
b adalah: kelas CBase *
* adalah: kelas CBase
* b adalah: kelas CDerived

Perhatikan bagaimana tipe yang typeid mempertimbangkan untuk pointer adalah jenis pointer itu sendiri (a dan b adalah jenis kelas CBase *). Namun, ketika typeid diterapkan untuk obyek (seperti * a * dan b) menghasilkan typeid tipe dinamis mereka (yaitu jenis objek yang paling lengkap berasal).

Jika jenis typeid mengevaluasi adalah pointer didahului oleh operator dereference (*), dan pointer ini memiliki nilai null, typeid melemparkan bad_typeid pengecualian.

Game Mendidik Bangsa ?!

Game adalah sarana efektif untuk mendoktrin informasi. Game memberikan informasi tanpa harus memaksa, justru gamers sendiri yang mencari game itu sendiri. Lebih ekstrim, gamers bisa menghabiskan berhari-hari untuk bermain hingga lupa dengan aktivitasnya di dunia nyata. Tidak heran untuk kesekian kalinya seorang gamers di Korea meninggal setelah bermain sekitar 2 hari tak henti-henti.

Disadari atau tidak pasti di dalam sebuah game tersisip sebuah misi pembuatnya. Misi itu bisa berdampak positif atau negatif, mengajarkan sejarah, teknologi, dan banyak hal lainnya. Kita ambil contoh, game Age of Empire (AoE) yang dibuat oleh Microsoft. Game tersebut bergenre Real Time Stategy (RTS) atau bisa dikatakan mirip permainan catur tapi setiap pemain bisa memainkan pion-pionnya tanpa harus menunggu pemain lawan selesain memindahkan pionnya. AoE berlatar berlakang abad pertengahan, ketika bangsa eropa akan masuk era industialisasi modern. Subjeknya adalah bangsa eropa barat, bangsa kepulauan malta. Ketika itu mereka gencar berekspansi ke berbagai belahan dunia untuk mencari dunia baru untuk beremigrasi. Di dalamnya terbagi menjadi beberapa stage yang menceritakan tahapan yang dilalui oleh mereka. Dimulai dari alasan mereka pergi ke belahan dunia baru, apa yang terjadi ketika mereka sampai di dunia baru, dan lika-liku mereka di dunia baru.

Disamping memberikan dampak positif, game dapat memberikan dampak negatif. Seperti diulas di atas seorang gamers dapat menghabiskan waktu hingga berhari-hari hingga melupakan aktivitas di dunia nyatanya. Hal ini menjadi kontra produktif yang bila dilakukan secara masal dapat menyebabkan penurunan produktifitas dan intelektualitas. Karena tidak banyak yang bisa didapatkan dari sebiah game selain kesenangan dan sedikit informasi wawasan yang di sisipkan di dalamnya.

Oleh Karena itu tantangan bagi para developer game negri ini untuk membuat game memberikan kontibusi produktif. Tidak menimbulkan candu tapi tetap menyenangkan. Memberikan banyak informasi yang berimbang, sesuai fakta, mendidik , dan membangun karakter bangsa. Lebih condong berkategori simulator dari pada game.

Pengembangan industri perangkat lunak memiliki masa depan cerah dibandingkan industri manufaktur. Hampir rata-rata industri manufaktur raksasa multinasional–yang berasal dari luar–di negeri ini hanya berperan sebagai pemain puzzle. Mereka tidak tahu mengapa dan bagaimana suatu komponen dibuat yang mereka tahu bangaimana komponen itu menjadi barang jadi. Relatif berbeda perangkat lunak, karena para developer perangkat lunak mau tidak mau mengetahui kode sumber suatu komponen berasal dan dibuat. Ini memberikan dampak positif bagi bangsa, yakni secara tidak langsung mendidik anak bangsa tahu membuat sebuah program. Dan bukan tidak mungkin anak bangsa mendirikan perusahaan sejenis di negri ini. (HM’11)