koleksi ilmu-ilmu hikmah,kisah 2 tokoh sufi.teknologi tips n trik dll

Tampilkan postingan dengan label bahasa pemrograman. Tampilkan semua postingan
Tampilkan postingan dengan label bahasa pemrograman. Tampilkan semua postingan

Selasa, Juni 04, 2013

Transaksi dan Sisipkan pilih

Kadang-kadang, Anda harus menyalin data antara tabel dengan kolom identik dan ada variasi pernyataan SQL insert yang memungkinkan Anda melakukan itu, disebut Insert Pilih. Tabel Anda berencana untuk memasukkan ke dalam harus sudah ada.
Menggunakan database About.db sama dari tutorial sebelumnya, kita dapat menggunakan SQLiteSpy untuk klik kanan kemudian Tampilkan Buat pernyataan pada tabel peristiwa, itu output membuat perintah sql.
Sekarang mengambil teks ini dan mengubahnya jadi acara table menjadi table events2 dan ievent menjadi ievent2. Ini akan terlihat seperti ini:CREATE TABLE events2 (idevent int,tanggal int,idvenue int,ideventtype int,Teks description);
MENCIPTAKAN ievent2 INDEX pada events2 (tanggal, idevent, ideventtype, idvenue);
Sekarang jalankan bahwa dengan tombol F9. Anda sekarang memiliki acara dan events2 meja. Sekarang jalankan sql ini:masukkan ke events2 pilih * dari peristiwa
Itu akan menyalin setiap baris dalam peristiwa ke events2. Sekarang standar SQL memiliki perintah yang disebut pilih menjadi yang menciptakan meja untuk Anda dan kemudian menyalin baris, pada dasarnya melakukan segala sesuatu yang kita lakukan di sini. Sintaks untuk itu adalahpilih * dari peristiwa ke peristiwa
Tapi SQLite tidak mendukung ini. Namun itu mendukung perpanjangan perintah tabel Buat disebut "Membuat Tabel sebagai pilih" yang tidak sama dengan pilih dalam. Jadi mari kita gunakan ini untuk membuat events3 meja, yang seperti kejadian 2 memiliki kolom yang sama dan data sebagai peristiwa tabel.membuat tabel events3 sebagai pilih * dari peristiwa
Anda akan menemukan informasi lebih rinci tentang itu di SQLite ini Membuat Tabel web dokumentasi.Mempercepat Insert dengan Transaksi
Salah satu hal yang menarik dengan database adalah seberapa cepat dapat beberapa operasi SQL dilakukan, misalnya berapa banyak sisipan dapat dilakukan dalam mengatakan kedua? Menggunakan transaksi untuk melakukan hal ini membantu, tapi apa transaksi?
Jika Anda sedang menulis sql mengatakan uang bergerak dari rekening majikan Anda ke dalam membayar hari, ada dua tindakan (update) terjadi di sini. Kita akan melihat SQL untuk update di tutorial berikutnya, tetapi untuk sekarang menerima bahwa itu mungkin untuk mengubah nilai dalam kolom pada suatu baris dengan pernyataan pembaruan.
Jadi katakan Boss Anda membayar Anda $ 5.000 setiap bulan. Pada beberapa titik dalam jangka penggajian, dua tindakan berikut terjadi.

    
Hapus $ 5.000 dari rekening Bos.
    
Tambahkan $ 5000 ke account Anda.
SQL untuk ini akan menjadi sesuatu seperti ini di mana tabel rekening memiliki baris dengan keseimbangan dan kolom accountid dan Anda accountid = 1503 dan bos Anda adalah 100:rekening pembaruan mengatur keseimbangan = keseimbangan-5000 di mana accountid = 100rekening pembaruan mengatur keseimbangan = saldo 5000 di mana accountid = 1503
Cukup sederhana tapi bagaimana jika gagal setengah jalan setelah dikurangi 5000 dari saldo bos tapi gagal menambah 5000 dengan Anda. Mungkin baris Anda hilang atau alasan lain. Hal ini canggung karena uang yang hilang dan Anda belum dibayar. Ia meninggalkan database dalam keadaan tidak konsisten.
Cara putaran ini adalah untuk membungkus kedua pembaruan dalam transaksi yang log keadaan meja sebelum itu berubah dan memungkinkan untuk digulung kembali.
Jika semua update berhasil maka transaksi dilakukan oleh sql "komit transaksi" perintah. Catatan di SQLite, alternatif "transaksi akhir" tidak persis sama.Coba ini perintah SQL di SQLiteSpy
Dengan asumsi Anda masih memiliki events3 tabel yang dibuat oleh tabel buat sebagai pilih perintah sebelumnya, jalankan SQL ini di satu pergi (atau satu per satu jika Anda ingin tetapi dalam urutan itu).memulai transaksi;menghapus dari events3;pilih * dari events3;
Ini harus menunjukkan tidak ada hasil. Tabel events3 kosong. Jalankan * pilih dari events3, SQL lagi untuk menunjukkan hal ini. Hal ini masih kosong! Sekarang jalankan perintah ini:transaksi rollback;pilih * dari events3;
Dan meja Anda tidak lagi kosong. Semuanya dihapus dipulihkan nDengan rollback.
Itulah kekuatan rollbacks. Anda dapat menggunakannya sebagai semacam membatalkan. Tapi itu hanya bekerja jika Anda mulai melakukan transaksi pertama. Jika data Anda hilang.
Jika Anda melakukan banyak sisipan, membungkus mereka semua dalam transaksi. Ini mempercepat sisipan SQLite. Untuk lebih jelasnya lihat StackOverflow ini pertanyaan tentang mempercepat sisipan SQLite.Sebuah Tips pada Membuat Perubahan Berbahaya untuk Live data
Ini semua terlalu mudah untuk mendapatkan bosan tentang menjalankan update dan delete dari pernyataan di atas meja. Pertimbangkan apa yang terjadi jika Anda melakukan hapus dari pernyataan untuk menghapus semua catatan karyawan untuk David Bolton dan Anda lupa di mana bagian dari sql. Jadi, bukannya mengetik:menghapus dari karyawan mana first_name = 'David dan last_name =' Bolton '
Anda sedikit menyadari dan hanya mengetik:menghapus dari karyawan
Bamn, kekacauan terjadi karena Anda baru saja menyapu bersih setiap karyawan, sekarang tidak akan Anda menjadi populer!
Pada kenyataannya, di perusahaan-perusahaan besar, orang-orang yang dapat melakukan perubahan tersebut sangat dikendalikan dan bahkan mereka mungkin harus melompat melalui lingkaran untuk mendapatkan akses.
Tapi Anda masih akan populer jika Anda menyapu bersih semua data uji karyawan dalam database pengembang begitu sebaliknya, selalu menggunakan transaksi ketika membuat perubahan ke data dalam database sql.
Anda tidak dapat menggunakan transaksi untuk membuat perubahan struktural untuk tabel, seperti menambahkan kolom, hanya untuk perubahan data, seperti insersi atau delesi. Jadi, Anda harus melakukan ini, jalankan setiap baris satu per satu.memulai transaksi;pilih count (*) dari karyawan;menghapus dari karyawan mana first_name = 'David dan last_name =' Bolton ';pilih count (*) dari karyawan;
Dengan asumsi Anda tidak mengacaukan dan hanya ada satu David Bolton, angka kedua harus menjadi salah satu kurang dari yang pertama. Jika yang bekerja, maka Anda harus mengakhiri transaksi dengan ini:transaksi akhir
Jangan pernah melupakan ini, atau hal-hal tidak akan bekerja terlalu baik. Anda dapat melakukan transaksi akhir beberapa kali jika tidak yakin. Segera setelah transaksi saat ini berakhir, transaksi end lagi hanya akan menghasilkan kesalahan.
Dalam tutorial berikutnya saya akan kembali ke kode C dan melihat beberapa fungsi lainnya C di SQLite.

SQL Server Jenis Backup dan Lingkup

Salah satu keuntungan utama yang database kelas enterprise menawarkan lebih dari rekan-rekan desktop mereka adalah cadangan yang kuat dan pemulihan set fitur. Microsoft SQL Server menyediakan database administrator dengan kemampuan untuk menyesuaikan backup database dan rencana pemulihan dengan kebutuhan bisnis dan teknis dari suatu organisasi.
Pada artikel ini, kami mengeksplorasi proses back up data dengan Microsoft SQL Server. Bila Anda membuat rencana cadangan, Anda harus membuat campuran yang tepat backup dengan berbagai [em] backup lingkup [/ em] dan [em] jenis backup [/ em] yang memenuhi tujuan pemulihan organisasi Anda dan cocok untuk lingkungan teknis Anda.Backup ScopesRuang lingkup cadangan mendefinisikan bagian dari database ditutupi oleh cadangan. Ini mengidentifikasi database, file (s) dan / atau filegroup (s) yang SQL Server akan cadangan. Ada tiga jenis lingkup cadangan yang tersedia di Microsoft SQL Server:

    
Backup database menutupi seluruh database termasuk semua informasi skema struktural, isi seluruh data dari database dan setiap bagian dari log transaksi yang diperlukan untuk mengembalikan database dari awal ke keadaan pada saat cadangan. Backup database adalah cara paling sederhana untuk mengembalikan data Anda dalam hal terjadi bencana, tetapi mereka mengkonsumsi sejumlah besar ruang disk dan waktu untuk menyelesaikan.
    
Backup parsial merupakan alternatif yang baik untuk backup database database yang sangat besar yang berisi jumlah yang signifikan dari data read-only. Jika Anda memiliki read-only filegroups dalam database Anda, mungkin tidak masuk akal untuk mendukung mereka sering, karena mereka tidak berubah. Oleh karena itu, ruang lingkup cadangan parsial mencakup semua file dalam filegroup utama, semua membaca / menulis filegroups, dan setiap read-only filegroups yang secara eksplisit menentukan.
    
File backup memungkinkan Anda untuk secara individual cadangan file dan / atau filegroups dari database Anda. Mereka dapat digunakan untuk melengkapi backup parsial dengan menciptakan satu-satunya waktu backup read-only filegroups Anda. Mereka juga mungkin memainkan peran dalam model cadangan kompleks.
Jenis BackupKeputusan kedua yang perlu Anda lakukan ketika merencanakan database SQL Server Model cadangan adalah jenis cadangan masing-masing dimasukkan dalam rencana Anda. Cadangan Jenis menggambarkan cakupan temporal backup database. SQL Server mendukung dua jenis cadangan yang berbeda:

    
Backup penuh meliputi semua data dalam lingkup cadangan. Misalnya, backup database penuh akan mencakup semua data dalam database, terlepas dari ketika terakhir dibuat atau dimodifikasi. Demikian pula, cadangan parsial lengkap akan mencakup seluruh isi dari setiap file dan filegroup dalam lingkup bahwa cadangan parsial.
    
Backup Diferensial termasuk hanya bagian dari data yang telah berubah sejak full backup terakhir. Misalnya, jika Anda melakukan backup database penuh pada Senin pagi dan kemudian melakukan backup database diferensial pada Senin malam, cadangan diferensial akan menjadi file yang lebih kecil (yang membutuhkan waktu lebih sedikit untuk menciptakan) yang mencakup hanya data berubah selama hari pada hari Senin.
Anda harus diingat bahwa ruang lingkup dan jenis cadangan adalah dua keputusan yang independen dibuat saat membuat rencana cadangan Anda. Seperti dijelaskan di atas, masing-masing jenis dan lingkup memungkinkan Anda untuk menyesuaikan jumlah data yang termasuk dalam cadangan dan, oleh karena itu, jumlah waktu yang diperlukan untuk backup dan restore database dalam hal bencana.

Ruby: Unit Testing Dengan MiniTest

Unit Pengujian dengan MiniTest
Sementara versi sebelumnya memiliki unit baik-baik saja pengujian kerangka Uji :: Unit dibangun di kanan, Ruby 1.9.x dan sampai datang dengan MiniTest sebagai bagian dari perpustakaan standar. Tidak hanya MiniTest drop-in pengganti Test :: Unit (sebagian besar, Anda mungkin perlu membuat beberapa perubahan pada tes Anda dalam beberapa kasus), juga menambah sejumlah penambahan sambutan. MiniTest juga mendapatkan sedikit penerimaan, menjadi de-facto kerangka pengujian default untuk Ruby dan Ruby on Rails proyek. Apakah ini cukup untuk bergoyang Anda dari kerangka kerja yang lebih besar seperti RSpec?Apa Pengembangan Test-Driven?
Sebuah uji coba unit adalah lulus / gagal metode yang menjamin sebuah metode, sepotong metode, kelas atau seluruh subsistem fungsi kode Anda diharapkan (atau gagal seperti yang diharapkan). Pengembangan tes-driven adalah metodologi pengembangan tangkas di mana unit test menjadi warga negara kelas pertama, dan bahkan mendorong pengembangan sistem. Alih-alih menulis tes setelah fakta, semacam "menenangkan persyaratan ini" jenis tugas, tes tertulis pertama oleh orang-orang yang mematuhi pengembangan tes-driven ketat. Dengan menulis tes pertama, kedua ini memastikan bahwa semua aspek dari program diuji, serta memaksa proses yang konsisten untuk menulis kode.
Tapi mengapa menguji sama sekali? Software yang telah ditulis selama bertahun-tahun tanpa jenis tes, mengapa mulai sekarang? Belum sampai saat ini yang kita lihat pengembangan tes-driven digunakan secara serius oleh pihak lain selain pemrograman ekstrim (AKA XP, metodologi pengembangan yang agak ekstrem atau setidaknya sangat berbeda), tetapi dengan munculnya langauges pemrograman dinamis, TDD telah melihat lebih penggunaan. Pertama, banyak bug yang akan ditangkap oleh C, C + + atau Java compiler (seperti jenis yang salah, jumlah argumen yang salah fungsi, dll) tidak tertangkap oleh Ruby, atau lebih tepatnya bahkan tidak kesalahan dalam Ruby. Anda bisa mengatakan bahwa segala sesuatu adalah subyektif di Ruby, apa yang ada berarti sepenuhnya tergantung pada konteks digunakan. Hanya dengan keterampilan dan pemrograman hati melakukan program Ruby bahkan berfungsi. Tetapi jika Anda adalah untuk memperkenalkan interaksi bahwa programmer tidak melihat, atau programmer membuat kesalahan sederhana yang hanya bekerja dalam banyak kasus, ini adalah bug yang bisa lolos untuk melepaskan. Dan tentu saja modifikasi masa depan oleh programmer pelupa, atau programmer terbiasa dengan tugas atau basis kode dapat memutuskan apa-apa. Dengan menulis unit test untuk semua kode, dan bersikeras bahwa semua unit test lulus setiap saat, Anda dapat memverifikasi bahwa fungsi kode sebagaimana dimaksud. Ini melampaui memperbaiki kurangnya kesalahan saat kompilasi dan fungsi tanda tangan yang ketat dan mengambil langkah untuk verifikasi Program.Menggunakan MiniTest

    
Pernyataan Dasar - Pada inti dari setiap unit test adalah sebuah pernyataan. Sebuah pernyataan menyatakan premis harus (jika program ini berfungsi dengan baik) berupa metode yang benar (menggunakan menegaskan metode) atau salah (menggunakan membantah). Setiap pernyataan dari bantahan adalah inti dari semua unit test.

    
Penegasan Lebih - Sementara dua metode dasar (menegaskan dan membantah) dapat digunakan dalam segala situasi, ada metode yang lebih semantik yang dapat digunakan sebagai singkatan untuk konstruksi lebih rumit, serta menambahkan kejelasan bagi siapa pun yang membaca unit test. MiniTest dilengkapi dengan perpustakaan kecil dari pernyataan yang dapat Anda gunakan.

    
Spesifikasi - Penegasan dasar baik-baik saja, tetapi ada juga spesifikasi. Secara teknis hal yang sama seperti pernyataan, mereka memiliki sintaks yang sangat berbeda. Alih-alih memanggil metode membosankan, mereka metode pada objek mereka menguji. Misalnya, alih-alih mengatakan assert_empty some_array, Anda dapat mengatakan some_array.must_be_empty lebih mudah dibaca dan Ruby-seperti.

OOP Data Encapsulation

Enkapsulasi data adalah konsep yang paling penting untuk memahami ketika pemrograman dengan objek. Dalam Data pemrograman berorientasi obyek enkapsulasi berkaitan dengan:

    
Menggabungkan data dan bagaimana hal itu dimanipulasi di satu tempat. Hal ini dicapai melalui negara (bidang swasta) dan perilaku (metode umum) dari sebuah objek.
    
Hanya memungkinkan keadaan obyek yang dapat diakses dan dimodifikasi melalui perilaku. Nilai-nilai yang terkandung di dalam negara obyek kemudian dapat dikontrol dengan ketat.
    
Penyembunyian detail bagaimana objek bekerja. Satu-satunya bagian dari objek yang dapat diakses oleh dunia luar adalah perilaku nya. Apa yang terjadi dalam perilaku tersebut dan bagaimana negara disimpan tersembunyi dari pandangan.
Menegakkan Enkapsulasi data
Pertama, kita harus merancang benda kami sehingga mereka memiliki negara dan perilaku. Kami menciptakan bidang swasta yang memegang metode negara dan publik yang merupakan perilaku.[Blockquote warna = "no"] Sebagai contoh, jika kita merancang sebuah objek orang yang kita dapat menciptakan lapangan swasta untuk menyimpan nama seseorang depan, nama belakang, dan alamat. Nilai-nilai dari ketiga bidang menggabungkan untuk membuat negara objek. Kita juga bisa menciptakan metode yang disebut displayPersonDetails untuk menampilkan nilai-nilai dari nama depan, nama belakang dan alamat ke layar.
Selanjutnya, kita harus membuat perilaku yang mengakses dan mengubah keadaan objek. Hal ini dapat dicapai dalam tiga cara:

    
Metode Konstruktor: Sebuah instance baru dari sebuah objek dibuat dengan memanggil metode konstruktor. Nilai dapat dilewatkan ke metode konstruktor untuk mengatur keadaan awal dari suatu objek. Ada dua hal yang menarik untuk dicatat, satu, Java tidak bersikeras bahwa setiap objek memiliki metode konstruktor. Jika metode tidak ada maka keadaan objek menggunakan nilai default dari bidang swasta, dua, lebih dari satu metode konstruktor bisa eksis. Metode akan berbeda dalam hal nilai-nilai yang diberikan kepada mereka dan bagaimana mereka mengatur keadaan awal objek.
    
Metode pengakses: Untuk setiap bidang swasta kita dapat membuat metode umum yang akan mengembalikan nilainya.
    
Metode pemutasian: Untuk setiap bidang swasta kita dapat membuat metode umum yang akan menetapkan nilainya. Jika Anda ingin bidang swasta untuk dibaca saja tidak menciptakan metode mutator untuk itu.
[Blockquote teduh = "no"] Sebagai contoh, kita dapat merancang obyek seseorang untuk memiliki dua metode konstruktor. Yang pertama tidak mengambil nilai-nilai dan hanya menetapkan objek memiliki keadaan default (yaitu, nama depan, nama belakang, dan alamat akan menjadi string kosong). Kedua, menetapkan nilai awal untuk nama depan dan nama belakang dari nilai yang dikirimkan ke sana. Kita juga bisa membuat tiga metode accessor disebut getFirstName, getLastName dan getAddress yang hanya mengembalikan nilai dari bidang swasta yang sesuai, dan menciptakan lapangan mutator disebut setAddress yang akan menetapkan nilai dari bidang swasta alamat.
Terakhir, kami menyembunyikan rincian implementasi objek kami. Selama kita tetap menjaga bidang negara swasta dan masyarakat perilaku tidak ada cara bagi dunia luar untuk mengetahui bagaimana benda bekerja secara internal.Alasan Enkapsulasi data
Alasan utama untuk menggunakan enkapsulasi data:

    
Menjaga keadaan obyek hukum. Dengan memaksa bidang swasta dari suatu objek yang akan dimodifikasi dengan menggunakan metode umum, kita dapat menambahkan kode ke metode pemutasian atau konstruktor untuk memastikan nilai adalah hukum. Misalnya, bayangkan orang objek juga menyimpan username sebagai bagian dari negaranya. Username digunakan untuk login ke aplikasi Java kita sedang membangun tetapi terkendala dengan panjang sepuluh karakter. Apa yang dapat kita lakukan adalah menambahkan kode ke metode username yang mutator yang memastikan username tidak diatur ke nilai yang lebih dari sepuluh karakter.
    
Kita dapat mengubah implementasi dari sebuah objek. Selama kita menjaga metode umum yang sama kita dapat mengubah bagaimana objek bekerja tanpa melanggar kode yang menggunakannya. Tujuannya dasarnya adalah sebuah "kotak hitam" ke kode yang menyebutnya.
    
Re-penggunaan benda. Kita dapat menggunakan objek yang sama dalam aplikasi yang berbeda karena kami telah menggabungkan data dan bagaimana hal itu dimanipulasi di satu tempat.
    
Independensi setiap objek. Jika suatu benda salah kode dan menyebabkan kesalahan mudah untuk menguji dan memperbaiki karena kode ini di satu tempat. Bahkan, objek dapat diuji secara independen dari sisa aplikasi. Prinsip yang sama dapat digunakan dalam proyek-proyek besar di mana programmer yang berbeda dapat diberikan penciptaan differen

Lanjutan Pemrograman C Dengan Fungsi

Ini adalah tutorial kesembilan dalam seri Online C Tutorial untuk pemula dan tentang fungsi, meskipun pada awalnya ditujukan untuk menjadi sekitar pointer fungsi. Seperti yang telah kita tidak tercakup fungsi, yang akan menjadi sedikit terlalu banyak menempatkan hourse sebelum gerobak.
Tutorial pertama dalam seri adalah C Tutorial Online. Tutorial sebelumnya tentang terkait daftar.

    
Bertanya-tanya apa C adalah tentang? Membaca profil C.
Ini adalah penulisan ulang dari tutorial C asli ke halaman gigitan tutorial ukuran yang biasanya dapat dijalankan di kedua codepad.org atau ideone.com.Apa Fungsi sebuah?
Fungsi adalah tempat di mana nama kode yang sering digunakan dapat ditempatkan dan kemudian disebut. C memiliki banyak fungsi, meskipun sebagian besar termasuk dalam perpustakaan dan Anda harus # mencakup perpustakaan spcific untuk mendapatkan akses ke fungsi.
Misalnya printf (nilai ...) adalah fungsi yang output nilai yang dikirimkan ke dalamnya ke konsol. Pada dasarnya ada dua jenis fungsi, mereka yang kembali data dan orang-orang seperti printf () yang tidak!
Berikut ini adalah program yang sangat pendek yang mendefinisikan addTwo function () yang lewat di dua ints dan mengembalikan mereka.# Include
int addTwo (int a, int b) {
        
kembali + b;}
int main (int argc, char * argv []){
        
printf ("% d", addTwo (3,4));
        
return 0;}
Dua nilai yang berlalu dalam dan mendapatkan disalin ke dalam variabel dan b. Kemudian mereka ditambahkan dan pernyataan kembali memberikan nilai kembali ke kode panggilan. Anda mungkin tidak akan terkejut melihat hasil 7.
Jalankan contoh ini di atas pada ideone.com untuk melihatnya.
Parameter dapat jenis apa pun dan disalin ke penyimpanan lokal. Dengan fungsi-fungsi C compiler menghasilkan kode yang mengalokasikan ruang untuk parameter ini pada stack dan kemudian menyalin nilai ke dalam penyimpanan lokal. Ini disebut Pass-by_value.
apa artinya bagi Anda adalah bahwa Anda tidak harus membuat fungsi yang melintas di benda-benda besar seperti struct seperti itu akan disalin dan itu sangat tidak efisien.
Sebaliknya cara yang lebih baik adalah untuk lulus pointer sebagai gantinya. Ini memiliki dua manfaat:

    
Ini berarti bahwa hanya pointer disalin, tidak seluruh objek.
    
Pointer menunjuk ke sebuah variabel hidup yang dapat diubah oleh fungsi.
Berikut adalah contoh yang menunjukkan bagaimana Anda harus berhati-hati dengan pointer. Aku sudah berubah addTwo (sehingga bukannya menambahkan dua ints yang berlalu dalam, itu menambah dua ints yang alamat yang lulus masuk
Ingat * berarti alamat yang ditunjuk oleh. Deklarasi di addTwo (int * a memberitahu kita bahwa apapun yang menunjuk ke, harus diperlakukan sebagai int.# Include
int addTwo (int * a, int * b) {
        
* B + = * a;
        
(* A) + +;
        
kembali (* a + b *);}
int main (int argc, char * argv []){
        
int c = 8;
        
int d = 11;
        
int e = addTwo (& c, & d);
        
printf ("c =% d d =% d e =% d", c, d, e);
        
return 0;}
Jalankan contoh ini di atas pada ideone.com untuk melihatnya.
* B + = * adalah mudah. The * Operator jauh lebih tinggi diutamakan daripada + = sehingga mengevaluasi hal ini sebagai "menambahkan nilai yang ditunjuk oleh kepada nilai ditunjuk oleh b".

    
Link ke Urutan Operator Precedence di C.
Kedua pointer int * a dan int * b yang menunjuk ke variabel c dan d, karena addTwo disebut dengan & c dan d &. & C adalah alamat sebenarnya dari variabel C dalam memori.
Jadi secara riil baris * b + = * dalam kasus ini adalah sama seperti d + = c, yaitu menambah nilai c untuk d. Seperti c = 8 dan d = 11, setelah melaksanakan baris ini, d sekarang memiliki nilai 19.Apa (* a) + + artinya?
Mengapa saya tidak ingin hanya melakukan * a + +? Idenya adalah untuk menambahkan satu ke apa yang menunjuk ke, yaitu variabel c. Sayangnya * dan + + adalah tingkat prioritas yang sama, dan kenaikan yang tidak apa yang menunjuk ke. Cobalah dan variabel * a pergi dari memiliki nilai 8 untuk memiliki nilai seperti -858.993.460.
Jadi apa yang baru saja terjadi? Nah bukannya incrementing c (nilai dalam * a), maka bertambah pointer dan kembali apa itu menunjuk ke. Mungkin cara terbaik untuk mengerti ini adalah debug dalam Visual Studio atau GDB dan melihat memori untuk & a.
Menurut jendela penduduk setempat pada PC saya alamat disimpan dalam = 0x002dfd54. Jika Anda melihat delapan byte dimulai pada alamat memori ini, Anda akan melihat:08 00 00 00 cc cc cc cc.
Empat byte pertama membuat int upan dengan nilai = 8, jadi kami akan mencari lokasi dari variabel c dalam memori. Setelah melangkah melalui ini, alamat disimpan dalam telah berubah menjadi 0x002dfd58. Ini telah meningkat sebesar 4 yang khas ketika Anda kenaikan pointer ke int.
Ingat cc cc cc cc? Dalam Visual Studio Anda dapat mengetikkan 0xcccccccc ke jendela segera dan melihat nilai yang 3435973836 sebagai nomor ditandatangani. Namun ketik dalam (int) 0xcccccccc untuk melihatnya sebagai nomor ditandatangani -858.993.460. Sekarang kita tahu mana yang datang dari.
Jadi versi singkatnya adalah bahwa * a + + increment pointer sehingga itu tidak lagi menunjuk ke c dan salah. Kita perlu baik menggunakan yang sangat membingungkan + + * (it karya dan bertahap apa yang menunjuk ke) atau kurang membingungkan (* a) + +.
Dalam tutorial berikutnya, saya akan melihat manajemen memori dalam fungsi dan menunjukkan betapa mudahnya untuk membuat kebocoran memori!

Menulis SQL Server Stored Prosedur


 


Menulis SQL Server Stored Prosedur

Microsoft SQL Server menyediakan mekanisme prosedur yang tersimpan untuk menyederhanakan proses pengembangan database dengan mengelompokkan pernyataan Transact-SQL ke dalam blok dikelola.Manfaat Prosedur TersimpanMengapa Anda harus menggunakan prosedur yang tersimpan? Mari kita lihat manfaat utama dari teknologi ini:

    
Eksekusi dikompilasi. SQL Server mengkompilasi setiap prosedur yang tersimpan sekali dan kemudian reutilizes rencana eksekusi. Ini menghasilkan kinerja yang luar biasa meningkatkan ketika disimpan prosedur yang disebut berulang kali.
    
Mengurangi client / server lalu lintas. Jika bandwidth jaringan merupakan masalah di lingkungan Anda, Anda akan senang mengetahui bahwa prosedur yang tersimpan dapat mengurangi query SQL lama untuk satu baris yang ditransmisikan melalui kawat.
    
Reuse efisien kode dan abstraksi pemrograman. Prosedur yang disimpan dapat digunakan oleh beberapa pengguna dan program klien. Jika Anda memanfaatkan mereka secara terencana, Anda akan menemukan siklus pengembangan membutuhkan waktu kurang.
    
Kontrol keamanan ditingkatkan. Anda dapat memberikan pengguna izin untuk menjalankan prosedur yang disimpan secara terpisah dari izin tabel yang mendasarinya.
Prosedur yang disimpan sangat mirip dengan fungsi yang ditetapkan pengguna, tetapi ada perbedaan halus. Untuk informasi lebih lanjut, baca Membandingkan Stored Prosedur dan Fungsi User-Defined.StrukturProsedur yang disimpan sangat mirip dengan konstruksi terlihat pada bahasa pemrograman lain. Mereka menerima data dalam bentuk parameter input yang ditentukan pada waktu eksekusi. Parameter input (jika diterapkan) yang digunakan dalam pelaksanaan serangkaian pernyataan yang menghasilkan beberapa hasil. Hasil ini dikembalikan ke lingkungan menelepon melalui penggunaan recordset, parameter output dan kode kembali. Itu mungkin terdengar seperti mulut penuh, tetapi Anda akan menemukan bahwa prosedur yang tersimpan sebenarnya cukup sederhana.ContohMari kita lihat contoh praktis. Asumsikan kita memiliki tabel yang ditampilkan di bagian bawah halaman ini, bernama Persediaan. Informasi ini diperbarui secara real-time dan manajer gudang terus-menerus memeriksa tingkat produk disimpan di gudang mereka dan tersedia untuk pengiriman. Di masa lalu, setiap manajer akan menjalankan query yang mirip dengan berikut:

    
SELECT Produk, Kuantitas
    
DARI Persediaan
    
MANA Gudang = 'FL'
Hal ini mengakibatkan kinerja yang sangat tidak efisien di SQL Server. Setiap kali seorang manajer gudang dieksekusi query, database server terpaksa ulang query dan menjalankannya dari awal. Hal ini juga diperlukan manajer gudang untuk memiliki pengetahuan tentang hak akses SQL dan tepat untuk mengakses informasi tabel.
Kita dapat menyederhanakan proses ini melalui penggunaan prosedur yang tersimpan. Mari kita membuat prosedur yang disebut sp_GetInventory yang mengambil tingkat persediaan untuk gudang tertentu. Berikut kode SQL:

    
CREATE PROSEDUR sp_GetInventory
    
@ Lokasi varchar (10)
    
AS
    
SELECT Produk, Kuantitas
    
DARI Persediaan
    
MANA Gudang = @ lokasi
Kami manajer Florida gudang kemudian dapat mengakses tingkat persediaan dengan mengeluarkan perintah

    
Jalankan sp_GetInventory 'FL'
The New York Manajer gudang dapat menggunakan prosedur yang tersimpan yang sama untuk mengakses persediaan yang daerah.

    
Jalankan sp_GetInventory 'NY'
Memang, ini adalah contoh sederhana, tapi manfaat abstraksi dapat dilihat di sini. Para manajer gudang tidak perlu memahami SQL atau inner prosedur. Dari perspektif kinerja, prosedur yang tersimpan akan bekerja keajaiban. SQL Sever menciptakan rencana eksekusi sekali dan kemudian reutilizes dengan menghubungkannya dengan parameter yang tepat pada waktu eksekusi.
Sekarang bahwa Anda telah belajar manfaat dari prosedur yang tersimpan, keluar sana dan menggunakannya! Cobalah beberapa contoh dan mengukur peningkatan kinerja dicapai - Anda akan kagum!

Rabu, Mei 29, 2013

alat pembantu bahasa pemrograman

Manfaat dari anak-anak Anda belajar bahasa pemrograman, bagaimana membangun halaman web dan mengetahui dasar-dasar penulisan web banyak. Diantaranya adalah kemampuan untuk berpikir lebih logis dan berurutan dan mampu bersaing di dalam masyarakat global yang terus semakin teknis. Mengetahui bahwa, ada sejumlah pengembang yang telah menciptakan alat untuk membantu anak-anak belajar lebih banyak tentang pemrograman.

1. Gores

Logo Screenshot: Amanda Morin
Scratch adalah bahasa pemrograman visual untuk anak-anak. Ini dikembangkan oleh MIT Media Lab dan didukung oleh perusahaan dan organisasi seperti National Science Foundation, Microsoft, Intel Foundation, MacArthur Foundation dan Google (untuk beberapa nama). Ini adalah bahasa yang dirancang untuk membantu anak-anak semuda usia TK-membuat proyek interaktif dan kreatif seperti cerita dan permainan animasi.

Anggota kemudian berbagi apa yang telah mereka dibuat di bawah lisensi Creative Commons sehingga anak-anak lain dapat memeriksa kode, gunakan proyek dan menggunakan kembali bagian-bagian dari kode untuk membuat sendiri, versi yang sama mereka proyek. Scratch dapat didownload secara gratis untuk digunakan pada Windows, Mac dan Linux.


2. Pindahkan Turtle

Logo Screenshot: Amanda Morin
Pindahkan Turtle adalah aplikasi pemrograman yang tersedia untuk iPad dan iPhone. Ini adalah berbasis grafis "permainan" yang mengajarkan anak Anda untuk program dengan menyelesaikan tugas-tugas yang bergerak kura-kura dengan cara yang ditentukan. Program ini mengajarkan anak Anda untuk berpikir dalam logika pemrograman, mengajarkan tentang hal-hal seperti loop, prosedur bersyarat dan variabel.

Anak Anda bisa melompat tepat ke menggunakan perintah lanjutan untuk membuat urutan pemrograman untuk membantu penyu menyelesaikan tugas, atau dia dapat mengambil beberapa waktu menjelajahi memberikan contoh. Dia juga bisa hanya bermain dengan perintah untuk melihat apa yang mereka lakukan dan menyimpan karyanya untuk analisis masa depan.

3. Alice

Logo Screenshot: Amanda Morin
Sebuah proyek kolaborasi seniman dan insinyur perangkat lunak di Carnegie Mellon University, Alice adalah bahasa pemrograman lain gratis yang dikembangkan untuk anak-anak. Seperti Scratch, dapat membantu anak-anak membuat interaktif, animasi proyek, tapi Alice menggunakan lingkungan 3D dan drag 'n' menjatuhkan ubin grafis untuk mendapatkan anak-anak berpikir seperti seorang programmer.

Ubin grafis berisi instruksi yang sesuai dengan kode dari berbagai bahasa pemrograman, seperti C + + dan Java. Segera setelah anak Anda turun ubin ke dalam program, dia akan melihat apa yang dilakukannya, yang memungkinkan dirinya untuk membuat perubahan dan memiliki umpan balik langsung tentang bagaimana program ini bekerja.

4. Hopscotch HD

Logo Screenshot: Amanda Morin
Seperti Pindahkan Turtle, Hopscotch HD adalah anak-ramah bahasa pemrograman lain visual untuk iPad. Ini sebenarnya didasarkan pada Scratch MIT, menggunakan metode yang sama menyeret dan menjatuhkan blok kode.

Setelah anak Anda telah menyeret semua blok kode ke dalam tempat, ia dapat menekan bermain untuk melihat apa program dia telah menciptakan tidak. Mudah-mudahan dia sudah direncanakan sebelumnya!

5. Hackety-Hack

Logo Screenshot: Amanda Morin
Hack Hackety merupakan aplikasi untuk mengajarkan anak Anda dasar-dasar bahasa pemrograman Ruby. Aplikasi ini berjalan pada semua sistem operasi desktop berbasis dan merupakan aplikasi open-source, yang berarti bahwa idealnya, setelah anak Anda akan benar-benar baik di pemrograman, ia dapat menggunakan source code untuk membuat versi sendiri Hack Hackety!

Berbeda dengan yang disebutkan sebelumnya tutorial coding berbasis visual, latihan Hack Hackety ke mengajar anak Anda sintaks dasar Ruby sehingga ia dapat mulai membangun aplikasi dan program sendiri.

Catatan: Ada juga cara yang menarik untuk menarik perhatian anak Anda sebelum memulai dengan Hack Hackety. Pencipta sistem tutorial, Why the Lucky Stiff (mengapa alias atau _why), yang adalah seorang penting dan menonjol - kontributor ke dunia pemrograman Ruby sangat misterius menghilang dari komunitas online di tahun 2009 - namun anonim. Tidak ada jejak dia, meskipun banyak programmer telah berspekulasi mengenai identitasnya dan mengapa _why mungkin sudah benar-benar bawah tanah.

Selasa, Mei 21, 2013

Tutorial dua - Membuat database, mengisi dan menjalankan query SQL


Tutorial ini adalah yang kedua dalam seri pemrograman SQLite di C. Jika Anda menemukan tutorial pertama ini, silakan kunjungi Pertama tutorial Pemrograman SQLite di C.

Baru ke database? Baca Apa adalah sebuah database relasional?
Dalam tutorial sebelumnya saya menjelaskan bagaimana untuk set-up Visual Studio 2010/2012 (baik gratis Express versi atau yang komersial) untuk bekerja dengan SQLite sebagai bagian dari program atau disebut melalui dll mandiri. Kami akan melanjutkan dari sana.

Database dan Tabel

SQLite menyimpan koleksi tabel dalam database file tunggal, biasanya berakhir dengan. Db. Setiap tabel seperti spreadsheet, terdiri dari sejumlah kolom dan setiap baris memiliki nilai.

Jika membantu, memikirkan setiap baris sebagai struct, dengan kolom dalam tabel sesuai dengan bidang dalam struct.

Sebuah tabel dapat memiliki banyak baris yang akan muat pada disk. Ada batas atas tapi besar 18.446.744.073.709.551.616 nya harus tepat.

Anda dapat membaca batas SQLite di situs web mereka. Sebuah tabel dapat memiliki hingga 2.000 kolom atau jika anda mengkompilasi ulang sumber, Anda dapat max untuk awesome 32.767 kolom.

THE SQLite API

Untuk menggunakan SQLite, kita perlu untuk membuat panggilan ke API. Anda dapat menemukan pengenalan API ini pada Pengenalan resmi SQLite C / C + + halaman web Interface. Ini adalah kumpulan fungsi dan mudah digunakan.

Pertama kita perlu pegangan ke database. Ini adalah tipe sqlite3 dan dikembalikan oleh panggilan untuk sqlite3_open (nama file, ** PPDB). Setelah itu kita jalankan SQL.

Mari kita sedikit menyimpang pertama meskipun dan membuat database yang dapat digunakan dan beberapa tabel menggunakan SQLiteSpy. (Lihat tutorial sebelumnya untuk link ke itu dan SQLite Database Browser).

Acara dan Raga

Database about.db akan menggelar tiga meja untuk mengelola kegiatan di beberapa tempat. Peristiwa ini akan menjadi pesta, disko dan konser dan akan berlangsung di lima tempat (alpha, beta, charlie, delta dan echo). Ketika Anda pemodelan sesuatu seperti ini, sering kali membantu untuk memulai dengan spreadsheet. Demi kesederhanaan, saya hanya akan menyimpan tanggal tidak waktu.

Spreadsheet memiliki tiga kolom: Tanggal, Venue, Jenis Acara dan sekitar sepuluh peristiwa seperti ini. Tanggal dijalankan dari tanggal 21 sampai 30 Juni 2013.

Sekarang SQLite tidak memiliki eksplisit jenis tanggal, sehingga lebih mudah dan lebih cepat untuk menyimpannya sebagai int dan cara yang sama bahwa Excel menggunakan tanggal (hari sejak Jan 1, 1900) memiliki nilai-nilai int 41.446-41.455. Jika Anda meletakkan tanggal dalam spreadsheet kemudian format kolom tanggal sebagai nomor dengan 0 tempat desimal, itu terlihat seperti ini:

Tanggal, Venue, Event Type
41.446, Alpha, Partai
41.447, Beta, Konser
41.448, Charlie, Disco
41.449, Delta, Konser
41.450, echo, Partai
41.451, Alpha, Disco
41.452, Alpha, Partai
41.453, Beta, Partai
41.454, Delta, Konser
41.455, Echo, Bagian
Sekarang kita bisa menyimpan data ini dalam satu meja dan untuk suatu contoh sederhana, mungkin akan diterima. Namun praktek desain database yang baik memerlukan beberapa normalisasi.

Data barang-barang unik seperti jenis tempat harus dalam tabel sendiri dan jenis acara (pesta dll) juga harus dalam satu. Akhirnya seperti yang kita dapat memiliki beberapa jenis acara di beberapa tempat, (a banyak hubungan) kita membutuhkan tabel ketiga untuk menampung.

Tiga tabel adalah:

tempat - memegang semua lima tempat
eventtypes - memegang semua tiga jenis acara
Peristiwa - memegang tanggal ditambah tempat id ditambah acara Jenis id. Saya juga menambahkan bidang deskripsi untuk acara ini misalnya "Jim Birthday".
Dua tabel pertama memegang jenis data sehingga tempat memiliki nama alpha echo. Saya telah menambahkan sebuah id integer sebagai baik dan membuat indeks untuk itu. Dengan sejumlah kecil tempat (5) dan jenis acara (3), itu bisa dilakukan tanpa indeks, tetapi dengan tabel yang lebih besar itu akan menjadi sangat lambat. Jadi setiap kolom yang kemungkinan akan dicari, menambahkan indeks, sebaiknya bilangan bulat

SQL untuk membuat ini:

membuat tempat tabel (
idvenue int,
teks venue)

membuat indeks ivenue di tempat (ideventtype)

membuat tabel eventtypes (
ideventtype int,
Eventtype teks)

membuat indeks ieventtype pada eventtypes (idvenue)

membuat acara tabel (
idevent int,
tanggal int,
ideventtype int,
idvenue int,
Teks deskripsi)

membuat indeks ievent pada peristiwa (tanggal, idevent, ideventtype, idvenue)
Indeks pada peristiwa meja memiliki tanggal, idevent, jenis acara dan tempat. Itu berarti kita bisa query tabel acara "semua acara kencan", "semua peristiwa di tempat yang", "semua pihak" dll dan kombinasi dari orang-orang seperti "semua pihak di tempat yang" dll

Setelah menjalankan SQL membuat tabel query, tiga tabel dibuat. Catatan Aku telah menempatkan semua yang sql dalam file teks create.sql dan itu termasuk data untuk mengisi beberapa tiga tabel.

Jika Anda menempatkan, di akhir baris seperti yang saya lakukan di create.sql maka Anda dapat batch dan menjalankan semua perintah dalam satu pergi. Tanpa, Anda harus menjalankan masing-masing dengan sendirinya. Dalam SQLiteSpy, klik F9 untuk menjalankan semuanya.

Saya juga termasuk sql untuk menjatuhkan ketiga tabel di dalam komentar multi-line menggunakan / * .. * / Sama seperti di C. Cukup pilih tiga baris dan melakukan ctrl + F9 untuk mengeksekusi teks yang dipilih.

Perintah-perintah ini memasukkan lima tempat:

masukkan ke dalam tempat (idvenue, venue) nilai (0, 'Alpha');
masukkan ke dalam tempat (idvenue, venue) nilai (1, 'Bravo');
masukkan ke dalam tempat (idvenue, venue) nilai (2, 'Charlie');
masukkan ke dalam tempat (idvenue, venue) nilai (3, 'Delta');
masukkan ke dalam tempat (idvenue, venue) nilai (4, 'Echo');
Sekali lagi saya telah menyertakan tanda komentar teks ke tabel kosong, dengan menghapus dari baris. Ada tidak membatalkan jadi hati-hati dengan ini!

Hebatnya, dengan semua data dimuat (memang tidak banyak) database seluruh file pada disk hanya 7KB.

Data acara

Daripada membangun sekelompok sepuluh pernyataan insert, saya menggunakan Excel untuk membuat file csv untuk data acara. Dan kemudian digunakan SQLite3 utilitas baris perintah (yang datang dengan SQLite) dan perintah berikut untuk mengimpor.

Catatan: (.) ​​Setiap sejalan dengan periode prefix adalah perintah. Gunakan. Membantu untuk melihat semua perintah. Untuk menjalankan SQL ketik saja di tanpa awalan periode.

Pemisah.,
Impor. "C: \ \ data \ \ aboutevents.csv" peristiwa
pilih * dari peristiwa;
Anda harus menggunakan blackslashes ganda \ \ di jalur impor untuk setiap folder. Hanya melakukan baris terakhir setelah. Impor telah berhasil. Ketika SQLite3 menjalankan pemisah standar adalah: sehingga harus diubah menjadi koma sebelum impor.

Kembali ke Kode

Sekarang kita memiliki database penuh diisi, mari kita menulis kode C untuk menjalankan query SQL yang mengembalikan daftar partai, dengan deskripsi, tanggal dan tempat.

Baru SQL? Baca Apa itu SQL?
pilih tanggal, deskripsi, tempat dari peristiwa, tempat
mana ideventtype = 0
dan events.idvenue = venues.idvenue
Hal ini bergabung menggunakan kolom idvenue antara peristiwa dan meja tempat sehingga kami mendapatkan nama tempat yang tidak idvenue nilai int.

SQLite C API Fungsi

Ada banyak fungsi tetapi kita hanya perlu segelintir. Urutan pengolahan:

Buka Database dengan sqlite3_open (), keluar jika telah kesalahan membukanya.
Siapkan SQL dengan sqlite3_prepare ()
Lingkaran menggunakan slqite3_step () sampai catatan tidak lebih
(Dalam loop) memproses setiap kolom dengan sqlite3_column ...
Akhirnya panggilan sqlite3_close (db)
Ada langkah opsional setelah memanggil sqlite3_prepare mana setiap disahkan pada parameter terikat, namun kami akan menyimpan itu untuk tutorial masa depan.

Jadi dalam program yang tercantum di bawah kode semu untuk langkah-langkah utama adalah:

Buka database.
Siapkan sql
do {
  if (Langkah = SQLITE_OK)
    {
      Ekstrak tiga kolom dan output)
    }
  } Sementara langkah == SQLITE_OK
Tutup Db
Sql kembali tiga nilai jadi jika sqlite3.step () == SQLITE_ROW maka nilai-nilai yang disalin dari jenis kolom yang sesuai. Saya telah menggunakan int dan teks. Saya menampilkan tanggal sebagai nomor tetapi merasa bebas untuk mengubahnya menjadi kencan.

Ambil contoh kode (juga tercantum di bawah).
Daftar Contoh Kode

/ / Sqltest.c: Program SQLite3 sederhana dalam C dengan D. Bolton (C) 2013 http://cplus.about.com

# Include
# Include "sqlite3.h"
# Include <string.h>
# Include <windows.h>

char * dbname = "C: \ \ devstuff \ \ devstuff \ \ CPLUS \ \ tutorial \ \ c \ \ sqltest \ \ about.db";
char * sql = "pilih tanggal, deskripsi, tempat dari peristiwa, tempat di mana ideventtype = 0 dan events.idvenue = venues.idvenue";

sqlite3 * db;
sqlite3_stmt * stmt;
Char pesan [255];

int tanggal;
char * deskripsi;
char * tempat;

int main (int argc, char * argv [])
{
        / * Membuka database * /
        int hasil = sqlite3_open (dbname, & db);
        if (hasil! = SQLITE_OK) {
                printf ("Gagal membuka database% s \ n \ r", sqlite3_errstr (hasil));
                sqlite3_close (db);
                kembali 1;
        }
        printf ("Dibuka db% s OK \ n \ r", dbname);

        / * Mempersiapkan sql, biarkan STMT siap untuk loop * /
        hasil = sqlite3_prepare_v2 (db, sql, strlen (sql) +1, & stmt, NULL);
        if (hasil! = SQLITE_OK) {
                printf ("Gagal untuk menyediakan database% s \ n \ r", sqlite3_errstr (hasil));
                sqlite3_close (db);
                kembali 2;
        }

        printf ("SQL disiapkan ok \ n \ r");

        / * Mengalokasikan memori untuk decsription dan tempat * /
        description = (char *) malloc (100);
        tempat = (char *) malloc (100);

        / * Lingkaran membaca setiap baris sampai langkah mengembalikan apa pun selain SQLITE_ROW * /
        do {
                Hasil = sqlite3_step (stmt);
                if (hasil == SQLITE_ROW) {/ * dapat membaca data * /
                         date = sqlite3_column_int (stmt, 0);
                         strcpy (deskripsi, (char *) sqlite3_column_text (stmt, 1));
                         strcpy (venue, (char *) sqlite3_column_text (stmt, 2));
                         printf ("Pada% d di% s untuk '% s' \ n \ r", tanggal, tempat, deskripsi);
                }
       } Sementara (hasil == SQLITE_ROW);

    / * Finish off * /
        sqlite3_close (db);
        bebas (deskripsi);
        gratis (tempat);
        return 0;

Tutorial-mendapatkan pertama dimulai dengan SQLite


Tutorial ini adalah untuk membantu Anda memulai dengan pemrograman SQLite dari C. SQLite memiliki basis kode menit (400 KB ketika dikompilasi) belum adalah file database berbasis kuat. Ini gratis dan penulis Dr Richard Hipps memungkinkan Anda untuk menggunakannya untuk apapun yang Anda inginkan.

FYI: SQLite selalu dieja dengan SQL dalam huruf besar.

Saya baru-baru melakukan konversi singkat dari beberapa perangkat lunak lama yang saya tulis di akhir tahun 90an untuk menggunakan SQLite dan saya menulis tentang hal itu dalam Pemikiran tentang Bekerja dengan SQLite.

SQLite juga diimplementasikan dalam C dan kode sumber tersedia secara bebas sebagai file C tunggal dari halaman download SQLite. Ada API didefinisikan dengan baik dan Anda dapat menanamkan dalam aplikasi Anda statis atau menggunakannya sebagai DLL Win32. Untuk tutorial ini, saya akan pergi dengan mantan.

Gratis Alat untuk SQLite Pembangunan

Saya sebutkan ini di artikel saya saya link sebelumnya tapi hanya untuk kenyamanan di sini mereka lagi.

SQLiteSpy
SQLite Database Browser
SQLite keterbatasan

Aku pindah 750MB MS Access 95 database ke SQLite dan menulis ulang beberapa lusin pernyataan SQL untuk bekerja dengan beberapa SQLite. Itu berjalan sangat lancar dan tentang pembatasan hanya saya alami adalah melakukan update berdasarkan join antara dua tabel.

Pembaruan ini dengan bergabung tidak didukung oleh SQLite dan aku harus membagi menjadi pernyataan Pilih berdasarkan bergabung, membaca hasil ke dalam memori dan dalam daftar dan kemudian dihasilkan beberapa ribu SQL pernyataan pembaruan dan kemudian dieksekusi maka salah satu per satu. Kedengarannya lambat tapi dilakukan di dalam transaksi hanya butuh beberapa detik.

Memulai

SQLite file berdasarkan dan seluruh database cocok dalam satu file. Hal ini membuatnya sangat mudah digunakan, konfigurasi nol, sehingga Anda dapat menggunakannya pada SSD, hard disk, memory stick atau bahkan dalam memori jika Anda memiliki cukup ram.

Sejauh ini, cara termudah untuk memulai adalah dengan menggunakan salah satu alat SQLite gratis yang tercantum di atas. Favorit saya adalah SQLiteSpy tetapi tidak memiliki impor atau fasilitas ekspor sehingga open source C + + SQLiteBrowser bisa melakukan itu atau Anda dapat menggunakan perintah shell sqlite3.

Shell, yang datang dengan SQLite sering dapat menjadi cara tercepat untuk melakukan sesuatu. Dalam tutorial berikutnya kita akan menggunakannya untuk mengimpor tabel yang didefinisikan dalam file csv untuk digunakan dengan tutorial, tapi pertama-tama kita harus menyiapkan Visual Studio / Visual C + + Express untuk mengembangkan dengan SQLite.

Buat baru C + + proyek (Win 32 aplikasi konsol) dalam Visual Studio atau Visual C + + 2010/2013 Express. Seperti itu C bukan C + +, menghapus (atau menghapus) stdafx.h, targetver.h, dan stdafx.cpp dan mengubah nama ekstensi file sumber untuk. C. Juga mengedit program sumber kode file (saya adalah sqltest.c) dan decruft itu (yaitu menghapus # include "stdafx.h" dan komentar) menjadi sesuatu seperti ini:

# Include

int main (int argc, char * argv [])
{
  return 0;
}
Jika Anda ingin pergi rute DLL

Sekarang unzip file zip Win 32 SQLite dan ekstrak sqlite3.def dan sqlite3.dll ke folder sumber Anda. Sekarang kita perlu untuk menghasilkan sqlite3.lib sehingga membuka Command line Visual Studio. Dari tombol Start pilih All Programs, menemukan Microsoft Visual Studio 2010 (atau express) folder dan klik, Anda akan melihat daftar item, salah satunya Studio Command Prompt Visual. Mengklik itu membuka baris perintah dengan semua jalan diatur untuk alat.

Sekarang lakukan cd ke folder sumber Anda dan ketik baris ini:

LIB / DEF: sqlite3.def
Voila Anda akan melihat sqlite3.lib dan sqlite3.exp dibuat. Sekarang kembali SQLite halaman download dan download file zip amalgamasi. Biasanya file pertama pada halaman dan pada saat penulisan adalah versi 3.7.16.2 dan besar er 1,3 MB.

Anda harus menambahkan sqlite3.h ke Header File proyek Solusi. Untuk membangun dll, Anda perlu menambahkan sampai ke tab Input Linker di halaman Properti dan kemudian menambahkan sqlite3.lib ke Dependensi Tambahan. Juga Anda perlu Tambahkan path ke lib ke dalam daftar Direktori Perpustakaan di VC + + Direktori tab.

Atau Apakah SQLite terhubung statis dalam aplikasi Anda

Cukup tambahkan sqlite3.c ke sumber proyek dan ketika Anda mengkompilasi, Anda akan memiliki SQLite sendiri dipanggang ke dalam aplikasi Anda. Sesederhana itu. Sekarang mari kita mulai menggunakannya.

Menulis Program SQLite di C

Jika Anda belum pernah menggunakan database relasional sebelumnya, saya sarankan Anda mulai dengan Apa yang dimaksud dengan database relasional? diikuti oleh Apa SQL?.

Singkatnya database relasional memungkinkan Anda menyimpan data dalam tabel yang sedikit seperti spreadsheet kecuali setiap baris memiliki kolom yang sama.

Dalam tutorial berikutnya saya akan memberikan beberapa kode SQL dan menjelaskan bagaimana kode C dapat menggunakannya.

SQLite Tutorial tiga - Query Update dan Binding



Tutorial ini adalah yang ketiga dalam seri pemrograman SQLite di C. Jika Anda menemukan tutorial pertama ini, silakan kunjungi Pertama tutorial Pemrograman SQLite di C.

Baru ke database? Baca Apa adalah sebuah database relasional?
Dalam tutorial sebelumnya saya menjelaskan bagaimana untuk membuat tabel dalam database SQLite, cara memasukkan data dan kemudian dalam program cara mengekstrak data menggunakan SQL Pilih pernyataan.

Dalam tutorial ini, saya akan melihat memasukkan data menggunakan pernyataan insert dan bagaimana untuk mengikat kolom.

Masukkan pernyataan

Dalam tutorial sebelumnya, saya membuat lima pernyataan insert untuk mengisi tabel tempat. Umumnya ketika menulis aplikasi SQL ada empat instruksi SQL yang berbeda Anda perlu menggunakan:

Pilih - Data Pengembalian dari satu atau lebih tabel.
Sisipkan - Masukkan data ke dalam tabel.
Update - Memodifikasi dfata yang ada dalam sebuah tabel.
Hapus - menghapus data yang ada dari suatu tabel.
Insert mengasumsikan bahwa tabel sudah ada. Sebuah baris insert menyisipkan pernyataan baris data ke tabel yang ditentukan. Biasanya Anda harus memasukkan nilai untuk setiap kolom tetapi beberapa kolom mungkin memiliki sifat seperti nilai default, dan jika kolom yang tidak ditentukan dalam Insert sql nilai default digunakan.

Ingat bahwa tidak seperti dengan spreadsheet, setiap kolom dalam setiap baris dalam tabel dalam database relasional harus memiliki nilai, tidak ada kekosongan diperbolehkan, meskipun nilai NULL mungkin.

Sekarang mari kita menyisipkan baris ke dalam peristiwa tabel. Ini adalah tabel yang sama yang telah dibuat dalam tutorial sebelumnya. Berikut adalah menciptakan sql dan indeks menciptakan.

MENCIPTAKAN peristiwa TABLE (
idevent int,
tanggal int,
idvenue int,
ideventtype int,
Teks description);

CREATE INDEX ievent pada peristiwa (tanggal, idevent, ideventtype, idvenue);
Untuk pernyataan insert sederhana kita perlu nilai untuk kolom ini: idevent, tanggal, idvenue, ideventtype dan deskripsi. Pernyataan insert dasar terlihat seperti ini:

memasukkan ke dalam tabel (nama kolom) nilai (...)
Nama kolom tercantum dalam kurung dan nilai-nilai serta dengan 1-1 korespondensi. Harus ada jumlah kolom yang sama karena ada nilai-nilai.

Untuk peristiwa tabel kita membutuhkan kolom yang ditentukan, sehingga terlihat seperti ini

masukkan ke dalam peristiwa (idevent, tanggal, idvenue, ideventtype, deskripsi) nilai (?,?,?,?,?)
Mengapa pertanyaan bukannya menandai nilai-nilai yang tepat. Yah aku hanya bisa menulis kode untuk menggantikan nilai-nilai langsung ke string sql. Dalam hal bahwa setiap kolom teks, seperti deskripsi harus dikelilingi dengan tanda kutip, tapi itu umumnya lebih baik untuk mengikat kolom menggunakan fungsi untuk masing-masing kolom. Ada beberapa jenis sqlite3_bind ... fungsi yang tersedia yang kita butuhkan untuk ini seperti

sqlite3_bind_int - untuk int kolom
sqlite3_bind_text-untuk kolom teks
sqlite3_bind_double - untuk kolom mengambang
Ada orang lain tetapi ini adalah yang utama kita akan menggunakan. Gagasan ini adalah bahwa untuk setiap? dalam string sql, kita sebut fungsi sqlite3_bind tepat. Ini dihitung dari 1 (bukan 0) dan nilai-2 dalam panggilan fungsi mengikat adalah indeks ini. Engkau harus menjadi salah satu panggilan mengikat per tanda tanya.

sqlite3_bind_int (stmt, 1, maxid); / * paling baik dilakukan oleh autoincreement * /
sqlite3_bind_int (stmt, 2, 41456); / * tanggal * /
sqlite3_bind_int (stmt, 3, 4); / * idvenue 4 = Echo * /
sqlite3_bind_int (stmt, 4, 1); / * ideventtype - disco * /
sqlite3_bind_text (stmt, 5, deskripsi, strlen (deskripsi), SQLITE_STATIC);
Autoincrement

Ada indeks pada kolom idevent pertama tapi mungkin lebih baik memiliki kolom yang telah dibuat dengan pernyataan sql ini sebagai gantinya:

membuat acara tabel (
...
idevent int PRIMARY KEY,
...
Ini akan membuat idevent autoincrementing dan itu bisa telah ditinggalkan keluar dari insert pernyataan sql. Sebaliknya, kode panggilan getmaxidevent function () yang menjalankan query sql untuk mengembalikan idevent tertinggi dan tambahkan 1 untuk itu. Catatan, ini memiliki itu variabel lstmt sendiri sehingga tidak akan mengganggu stmt utama.

Setelah memasukkan sql dijalankan memanggil getmaxidevent () lagi menegaskan bahwa baris tambahan telah ditambahkan ke meja dan berjalan * pilih dari peristiwa menunjukkan hal itu.

Waspadalah terhadap Gotcha Teks

Pernyataan mengikat 5th untuk teks (sqlite3_bind_text) lewat di panjang teks, dan ini tidak adalah 1 dan tidak termasuk nol terminator. The SQLITE_STATIC konstan mengatakan itu tidak untuk membebaskan string teks setelah panggilan. Lihat Bind dokumentasi SQLite untuk lebih jelasnya.

Ambil contoh kode.
Dalam tutorial berikutnya saya akan melihat sedikit lebih di "insert pilih" pernyataan dan memperbarui sql.

ImageMagick - Powerfull Programatik Image Processing


ImageMagick adalah sumber paket perangkat lunak bebas dan terbuka untuk memodifikasi dan menciptakan gambar. Tidak seperti paket grafis seperti GIMP yang menyediakan alat-alat untuk pembuatan manual dan manipulasi gambar, ImageMagick dimaksudkan untuk digunakan oleh program untuk menghasilkan dan menyesuaikan gambar secara otomatis. Interface yang tersedia untuk banyak bahasa pemrograman, termasuk Ada, C, C + +, Java, Lisp, Pascal, Perl, PHP, Python, Ruby, dan Tcl / TK. Hal ini juga dapat digunakan dari baris perintah.
ImageMagick dapat membaca, menulis, dan mengkonversi antara sekitar 100 format file gambar yang berbeda, termasuk semua yang umum digunakan seperti GIF, JPEG, PDF, PNG, Postscript, dan TIFF. Di antara berbagai kemampuan ImageMagick adalah mengubah ukuran gambar, rotasi, cropping, membalik, pemangkasan, membuat bagian-bagian gambar yang tidak terlihat, menambahkan bentuk atau teks ke foto, berbagai efek khusus, membuat animasi GIF, menggabungkan gambar, dan penanganan gambar giga-pixel .

Perangkat lunak ini bekerja dengan baik pada gambar besar dan membuatnya mudah untuk secara otomatis mengkonversi gambar ke dalam thumbnail. Namun, perlu diingat bahwa hal itu menciptakan file besar di direktori / tmp yang mungkin tertinggal jika crash program.

File instalasi biner untuk berbagai sistem operasi yang tersedia dari situs web proyek.

Daftar Gratis C Compiler


Jika Anda tertarik untuk belajar program di C Anda akan menemukan daftar ini Compiler C berguna. Anda akan membutuhkan satu untuk The C Programming tutorial yang ada di situs. Kebanyakan kompiler ini tidak C + + dan C. Hanya mengubah nama file untuk memiliki. Ekstensi C.

Microsoft Visual Studio Express untuk Windows Desktop. Tidak semua orang menyukai Microsoft tetapi tidak ada menyangkal bahwa mereka memberikan kode yang sangat baik dengan IDE yang sangat baik. Perlu NET. Dan Windows 7 atau lambat anda dapat mengkompilasi untuk menang 32, (tidak ada MFC) dengan C + + bagian serta VB.NET / C #. Hal ini membutuhkan pendaftaran gratis.

Buka Watcom. Semakin sedikit lama di gigi dan IDE tidak besar tapi berjalan pada Windows 2000 (mungkin 98) serta Windows yang lebih baru.

GCC. Klasik open source C compiler untuk Linux dan banyak sistem operasi lain (dan Windows di bawah Cygwin atau Ming). Sebuah proyek yang telah sekitar selamanya. Excellent open source software berkualitas. Itu tidak datang dengan IDE (yang umumnya tergantung platform) tetapi ada banyak di luar sana misalnya MonoDevelop di Linux.

Digital Mars C / C + + Compiler. Biaya IDE mereka ($ 42,55) tapi dasar C / C + + Win 32 compiler gratis.

Xcode. Ini adalah untuk Apple Mac dan versi mereka GCC tetapi murni untuk Mac Apple sendiri Sistem Operasi OS. Memiliki dokumentasi yang sangat baik dan SDK untuk Mac dan iPhone. Jika Anda memiliki Mac ini adalah apa yang Anda gunakan.

Kecil C - Compiler. TinyCC (alias TCC) adalah sebuah kompiler C cepat kecil yang dimaksudkan untuk menjadi diri mengandalkan: Anda tidak perlu assembler eksternal atau linker karena TCC melakukan itu untuk Anda. Dengan bantuan perpustakaan lain dapat digunakan sebagai generator kode backend. TCC mengkompilasi begitu cepat sehingga bahkan untuk proyek-proyek besar Makefiles mungkin tidak diperlukan.

Portabel C Compiler. Ini dikembangkan dari salah satu Compiler C awal dan pada awal tahun 80-an kebanyakan c compiler didasarkan pada itu. Portabilitas dirancang ke dalamnya dari awal berbeda dengan Dennis Ritchie C compiler yang sangat tergantung pada perangkat keras. Ini sekarang sedang dikembangkan menjadi C99 kompatibel.

Failsafe C. Sebuah proyek Jepang dari Tim Riset Security Software di Pusat Penelitian Keamanan Informasi (RCIS), National Institute of Advanced Industri Sains dan Teknologi (AIST), JAPAN, versi C untuk Linux mendukung lebih dari 500 fungsi (tidak C99 atau WideChar). Hal ini memberikan perlindungan lengkap terhadap blok memori over-batas mengakses membuatnya seaman Java dan C #.

Pelles C adalah development kit gratis untuk Windows dan Windows Mobile yang berisi mengoptimalkan kompiler C, assembler makro, linker, sebuah kompiler sumber daya, sebuah kompiler pesan, yang membuat utilitas dan menginstal pembangun untuk Windows dan Windows Mobile. Ia juga memiliki IDE dengan manajemen proyek, debugger, source code redaksi dan editor sumber daya untuk dialog, menu, tabel tali, tabel akselerator, bitmap, ikon, kursor, kursor animasi, video animasi (AVI tanpa suara), versi dan XP memanifestasikan.

CC65 merupakan sumber lintas paket pengembangan terbuka untuk 65 (C) 02 sistem, termasuk makro assembler kuat, kompiler C, linker, pustakawan dan beberapa alat lainnya. Ini mencakup dukungan untuk Commodore C64, sistem operasi GEOS untuk Commodore C64, Commodore C128, Commodore C16, C116 dan Ditambah / 4, Commodore P500, Commodore 600/700 keluarga komputer, Apple] [, Atari mesin 8bit, para Atmos Oric, Nintendo Entertainment System (NES), Pengawasan Game Konsol dan Atari Lynx Console

LCC adalah kompiler retargetable untuk Standard C. Ini menghasilkan kode untuk ALPHA tersebut, SPARC, MIPS R3000, dan Intel x86 dan penerusnya. Sudah kompilasi program produksi sejak tahun 1988 dan digunakan oleh ratusan programmer C. Addison-Wesley menerbitkan sebuah buku tentang hal itu, mendokumentasikan cara kerjanya kembali pada tahun 1995 bahwa Anda masih dapat membeli.

SDCC juga retargettable, dan mengoptimalkan ANSI - C compiler menargetkan Intel 8051, Maxim 80DS390, Zilog Z80 dan Motorola 68HC08 berbasis MCUs. Ia memiliki kemampuan untuk menambahkan kode inline assembler mana saja dalam fungsi, serta pelaporan pada kompleksitas fungsi untuk membantu memutuskan apa yang harus ditulis ulang dalam assembler dan dilengkapi dengan sumber tingkat debugger SDCDB.

Borland C + + 5.5 hanya 8,5 MB download. Ini mencakup compiler bcc32, 32 bit linker (tlink32), Borland Sumber Daya Compiler / Binder (brc32, brcc32), C + + Win32 Preprocessor (cpp32) dan utilitas lain beberapa untuk mengimpor definisi dari perpustakaan, dan sekitar dll, ongkos ditambah hlp. berkas.

nesC adalah perluasan dengan bahasa pemrograman C dirancang untuk mewujudkan konsep penataan dan Model pelaksanaan TinyOS. TinyOS adalah sistem operasi-event yang dirancang untuk node jaringan sensor yang memiliki sumber daya yang sangat terbatas (misalnya, 8K byte dari memori program, 512 byte RAM).

Cc386 adalah gratis Win 32 C compiler, yang mendukung C99 (atau akan segera). Hal ini telah bersama-sama oleh David Lindauer lebih dari 8 tahun dan termasuk kode sumber untuk compiler dan alat-alat. Ini juga mencakup IDE yang menyediakan kompilasi, mengedit dan debugging. Yang sangat terkesan prestasi untuk satu individu.

SUBC adalah yang cepat, sederhana compiler domain publik untuk subset bersih dari bahasa pemrograman C di Linux, FreeBSD, dan platform Windows. Hal ini dapat mengkompilasi sendiri dan merupakan subyek dari sebuah buku "PRAKTIS compiler KONSTRUKSI" menjelaskan anatomi Compiler C.

Sekarang Anda punya kompiler Anda, Anda siap untuk tutorial Pemrograman C!

mempercepat loading halaman web


Gambar
Mengoptimalkan gambar Anda adalah cara terbaik untuk meningkatkan kecepatan download halaman Web Anda. Aturan praktis yang baik adalah mengupayakan tidak ada satu gambar yang lebih besar dari 10 Kb. Hal ini terutama keras dengan animasi, tetapi jika Anda bisa melakukannya, Anda akan memiliki beberapa gambar cepat besar.

Juga, setelah Anda mengoptimalkan gambar Anda, Anda harus menghubungi mereka dalam HTML dengan tinggi dan lebar ditentukan dalam tag gambar. Hal ini akan memungkinkan browser untuk terus render halaman web sementara download gambar di latar belakang.

HTML
Setelah Anda memiliki gambar Anda ke ukuran yang wajar, mencoba menyederhanakan HTML Anda. Anda akan menemukan situs keluar di internet yang menganjurkan menghapus semua tag asing, sampai menghapus akhir </ body> dan </ html>. Saya tidak berpikir ini adalah ide yang baik, tetapi Anda dapat menghapus semua atribut yang tidak perlu diciptakan oleh beberapa editor, dan menggunakan default tag sebanyak mungkin. Misalnya, jika Anda membuat tabel dan Anda ingin cellpadding dan cellspacing menjadi 2, kemudian meninggalkan atribut. Itulah default untuk tabel.

Ukuran halaman
Dengan gambar kecil dan HTML bersih, Anda masih dapat berakhir dengan halaman yang memakan waktu lama untuk men-download karena ada begitu banyak informasi. Jika Anda sedang berjuang untuk download cepat, membatasi total ukuran halaman Anda (termasuk gambar) untuk sekitar 30 Kb. Anda masih akan berada di sisi yang tinggi jika Anda berada di 30 Kb, tetapi 50% dari halaman di Web adalah 32 Kb atau kurang, sehingga Anda akan berada di perusahaan yang baik. (Dari Ketujuh Georgia Tech GVU WWW survei seperti dikutip dalam "Berapa Banyak Terlalu Banyak")

Tabel
Tabel bersarang adalah penyebab umum dari halaman lambat. Mereka begitu menggoda untuk digunakan sebagai mereka meningkatkan tata letak sangat besar, tetapi mereka mengambil waktu yang lama untuk browser untuk membuat. Ini bukan berarti bahwa halaman tidak men-download, tetapi dengan beberapa tabel dalam tabel, browser harus bekerja lebih keras untuk menampilkan halaman. Hal ini tidak bisa menampilkan setiap bagian dari halaman di tabel sampai telah menemukan cara untuk membuat semua tabel yang bersarang.

Iklan
Banyak iklan yang disajikan dari server web yang berbeda dari halaman Web. Jika server yang sedang down atau lambat, itu akan berdampak pemuatan halaman manapun mereka dipanggil dari. Hal yang sama berlaku untuk counter dan CGIS eksternal lainnya dan gambar yang tidak pada server Web yang sama.

Web Server
Jika Anda telah dioptimalkan grafis dan HTML dan terus ukuran halaman untuk minimum dan masih membutuhkan selamanya untuk memuat, periksa server Web Anda. Apakah mendapatkan hits lebih dari itu bisa menangani? Mungkin sudah saatnya untuk meng-upgrade mesin atau sambungan antara itu dan dunia, jika tidak menunjukkan bandwidth yang Anda inginkan.

KLINIK CENAYANG STROOM09

KLINIK CENAYANG STROOM09
KLINIK CENAYANG STROOM09

pengunjung

RENTAL MOBIL CIREBON

RENTAL MOBIL CIREBON
RENTAL MOBIL CIREBON,TAXI ONLINE CIREBON,SEWA MOBIL CIREBON MINAT HP/WA :089537731979

Total Tayangan Halaman