Contoh Program XML SOAP menggunakan Java

Contoh Program XML SOAP menggunakan Java


Contoh Program XML SOAP menggunakan Java

Program Client

 package XML_SOAP;

import java.util.List;
import java.util.Scanner;
import org.oorsprong.websamples.ArrayOftLanguage;
import org.oorsprong.websamples.CountryInfoService;
import org.oorsprong.websamples.CountryInfoServiceSoapType;
import org.oorsprong.websamples.TLanguage;
//import library yang akan digunakan dalam program

public class analisa_xml_soap { //kelas yang menjadi web service client
    public static void main(String ags[]){ //kelas yang pertama berjalan ketika program berjalan
        Scanner anam = new Scanner(System.in);
        //membuat objek anam untuk scanner
        CountryInfoService kp = new CountryInfoService();
        //instansiasi service CountryInfoService
        CountryInfoServiceSoapType kpi = kp.getCountryInfoServiceSoap();
        //CountryInfoServiceSoapType = port type, CountryInfoServiceSoap() = port name.
       
        int pilihan=0;
        //membuat variabel pilihan dengan nilai 0
        while(pilihan !=3){
            System.out.println(" ");
            System.out.println("<==================================================>");
            System.out.println("Daftar ISI Program : ");
            System.out.println("1. Mencari Nama Mata Uang  berdasar ISOCode Negara");
            System.out.println("2. Mencari Nama Negara Berdasar ISOCode");
            System.out.println("3. Exit");
            System.out.print("Masukkan pilihan anda : ");
            //menu menu yang ditampilkan pada saat program berjalan
            pilihan = anam.nextInt();
            //memasukkan nilai pada variabel pilihan dari input pada keyboard
            System.out.println(" ");
       
            if(pilihan==1){
                System.out.println("<==================================================>");
                System.out.print("Masukkan ISOCode Negara :");
                String code = anam.next();
                //membuat variabel code dan membaca input pada keyboard.
                String output = kpi.currencyName(code);
                // membuat variabel output dengan isi adalah hasil method currencyname
                System.out.println("Mata uang negara dengan ISOCode == "+code+" ,adalah == "+output);
                //menampilkan hasil pada layar
           
            }else if(pilihan==2){
                ArrayOftLanguage a = kpi.listOfLanguagesByName();
                //membuat objek a yang akan digunakan untuk menampung daftar
                List<TLanguage> languageList = a.getTLanguage();
               
                for(int i=0;i<languageList.size();i++){
                    //perulangan untuk membaca nilai pada array
                    TLanguage temp = languageList.get(i);
                    System.out.println("===========================");
                    System.out.println(temp.getSISOCode());
                    //menampilkan isocode negara
                    System.out.println(temp.getSName());
                    //menampilkan nama bahasa negara
                }
            }else if (pilihan==3){
                System.out.println("program exit");
                //menampilkan program exit
            }else{
                System.out.println("Nomor tidak ada di Menu");
                //jika nomor tidak ada pada menu akan muncul notifikasi nomor tidak sesuai
            }
   
        }
    }
}


Contoh Program XML SOAP menggunakan Java

Hasil running




Contoh Program XML RPC Java Menggunakan MongoDB

Contoh Program XML RPC Java Menggunakan MongoDB



Contoh Program XML RPC Java Menggunakan MongoDB

class handler

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.*;
import java.util.Hashtable;
import java.util.Iterator;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
//libary yang digunakan dalam program
/**
 *
 * @author Anam
 */

public class handler {
        public Vector KonekDatabase(int PortTujuan, int BatasTampil){
            //deklarasi nama method dan parameternya
        String user = "admin";
        //variabel untuk menyimpan user
        String pass = "Maha%40siswa";
        //variabel untuk menyimpan password
   
        MongoClientURI uri = new MongoClientURI("mongodb://"+user+":"+pass+"@10.33.109.17:27017/?authSource=admin");
        MongoClient client = new MongoClient(uri);
        //membuat koneksi ke database mongo client
   
        System.out.println("Connected to the database successfully!");
        //menampilkan keluaran dilayar Connected to the database successfully!
       
        //Accessing the database
        MongoDatabase database = client.getDatabase("dionaea");
        //acces database dionaea
       
        //Retriving a collection
        MongoCollection<Document> collection = database.getCollection("attack");
        //mengakses database log attack pada mongodb
        System.out.println("Collection sampleCollection selected successfully");
       
        Document query = new Document();
        query.append("dst_port", PortTujuan);
        //membuat document dengan nama query dan memasukkan elemen pada dst_port
       
        Document projection = new Document();
        projection.append("_id",0.0);
        //menammbah element id
        projection.append("src_ip",1.0);
        //menambah element src_ip
        projection.append("dst_ip",1.0);
        //menambah element dst_ip
        projection.append("dst_port",1.0);
        //menambah element dst_port
       
        //Getting the iterable object
        FindIterable<Document> iterDoc = collection.find(query).projection(projection).limit(BatasTampil);
        //mencari document yang sesuai dengan nilai query dengan limit batasTampil
        int i = 1;
       
        //Getting the iterator
        Iterator it = iterDoc.iterator();
        //inisialisasi iterator
       
        Vector sendVec = new Vector();
        //membuat vector sendVec untuk menyimpan nilai data
        while(it.hasNext()){
            Document doc = (Document)it.next();
            //perulangan untuk menyimpan document
            //Convert object to String
            String temp_src_ip = String.valueOf(doc.get("src_ip"));
            String temp_dst_ip = String.valueOf(doc.get("dst_ip"));
            String temp_dst_port = String.valueOf(doc.get("dst_port"));
            //data yang dibaca disimpan dalam variabel temp
           
            //Add data to Hash Table
            Hashtable<String,String> Data = new Hashtable<String,String>();
            Data.put("AttackerIP", temp_src_ip);
            Data.put("TargetIP", temp_dst_ip);
            Data.put("Port",temp_dst_port);
            //data yang tersimpan dalam variabel temp di masukkan dalam hashtable data
            //Add Hashtable to Vector
            sendVec.add(Data);
            //hastable data dimasukkan dalam vektor sendvec
        }
        return sendVec;
        //pengembalian nilai dari method koneksidatabase
    }
}


Contoh Program XML RPC Java Menggunakan MongoDB

class HelloClient

import java.io.*;
import java.net.MalformedURLException;
import java.util.Vector;
import java.util.Hashtable;
import java.util.*;
import org.bson.Document;
import helma.xmlrpc.XmlRpc;
import helma.xmlrpc.XmlRpcClient;
import helma.xmlrpc.XmlRpcException;
//import library yang akan digunakan dalam program
/**
 *
 * @author Anam
 */

public class HelloClient {
   public static void main(String args[]){
        try{ //pengkapsulan jika terjadi error
            //Use the Apache Xesces SAX Driver
            XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser");
           
            //Specify the server
            XmlRpcClient client = new XmlRpcClient("http://localhost:8585/");
            //mendeklarasikan server tujuan untuk akses data
           
            //Create request
            Vector params = new Vector();
            //membuat vector param untuk menampung port dan limit data yang ditampilkan
            System.out.print("Masukan Port yang diserang : ");
            Scanner anamlail = new Scanner(System.in);
            //deklarasi object untuk input dari keyboard
            int PortTujuanuest=anamlail.nextInt();
            //memasukkan nilai pada porttujuanuest
            System.out.print("Masukan Jumlah list yang ditampilkan : ");
            int BatasTampiluest=anamlail.nextInt();
            //memasukkan nilai pada batastampiluest
            params.addElement(PortTujuanuest);
            //menambahkan elemen pada array params
            params.addElement(BatasTampiluest);
            //menambahkan elemen pada array params
           
            Vector RetriveDatabase = (Vector)client.execute("RetriveAttack.KonekDatabase",params);
            //membuat vektor untuk menampung vektor dari handler
           
            //Show all data at Hashtable
            for(int i=0;i<BatasTampiluest;i++){
                //perulangan untuk menampilkan nilai sebanyak data limit
                Hashtable<String,String> tempHash = (Hashtable)RetriveDatabase.get(i);
                //membuat hastable sementara untuk menampung nilai yang akan ditampilkan
                System.out.println("-------------------------------------------");
                System.out.print("Attacker IP     : "+tempHash.get("AttackerIP"));
                System.out.print(" ,Destination IP  : "+tempHash.get("TargetIP"));
                System.out.println(" ,Destination Port: "+tempHash.get("Port"));
            }
           
        }catch(XmlRpcException e){
            System.out.println("XML-RPC Exception : "+e.getMessage());
            //pesan yang ditampilkan jika ada kesalahan pada xmlrpcexception
        }catch(IOException e){
            System.out.println("IO EXception: "+e.getMessage());
            //pesan yang ditampilkan jika ada kesalahan IO
        }catch(ClassNotFoundException e){
            System.out.println("Could not locate SAX Driver");
            //pesan yang ditampilkan jika class tidak ditemukan
        }
    }
}


Contoh Program XML RPC Java Menggunakan MongoDB

class HelloServer

import java.io.IOException;
import helma.xmlrpc.WebServer;
import helma.xmlrpc.XmlRpc;
import java.util.Vector;
//librari yang digunakan
/**
 *
 * @author Anam
 */

public class HelloServer {
    public static void main(String[] args){
        try{//pengkapsulan jika terjadi error
            //Use the Apache Xerces SAX Driver
            XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser");
           
            //Start the server
            System.out.println("Starting XML-RPC Server...");
            WebServer server = new WebServer(8585);
            //membuat web server dengan port 8585
           
            //Register the handler class
            server.addHandler("RetriveAttack", new handler());
            //registrasi handler pada server
            System.out.println("Registered RetrievingHandler class to \"RetriveAttack\"");
            System.out.println("Now Accepting request...");
           
        }catch(ClassNotFoundException e){
            System.out.println("Could not locate SAX Driver");
            //pesan yang ditampilkan jika ada error pada kelas
        }catch(IOException e){
            System.out.println("Could not start server: "+e.getMessage());
            //pesan jika terjadi error IO
        }
    }
}

Contoh Program XML RPC Java Menggunakan MongoDB

hasil running :

HelloClient

Contoh Program XML RPC Java Menggunakan MongoDB


HelloServer


Contoh Program XML RPC Java Menggunakan MongoDB

199 Lagu Bebas Copyright Youtube Terpopuler

199 Lagu Bebas Copyright Youtube Terpopuler

199 Lagu Bebas Copyright Youtube Terpopuler

1-50 Lagu Bebas Copyright Youtube Terpopuler

1. Cartoon - On & On (feat. Daniel Levi)
2. Alan Walker - Spectre
3. DEAF KEV - Invincible
4. Different Heaven & EH!DE - My Heart
5. Disfigure - Blank
6. Electro-Light - Symbolism
7. Janji - Heroes Tonight (feat. Johnning)
8. Tobu - Hope
9. Elektronomia - Sky High
10. Cartoon - Why We Lose (feat. Coleman Trapp)
11. Alan Walker - Force
12. Spektrem - Shine
13. Itro & Tobu - Cloud 9
14. Tobu - Infectious
15. Syn Cole - Feel Good
16. Warriyo - Mortals (feat. Laura Brehm)
17. Different Heaven - Nekozilla
18. Tobu & Itro - Sunburst
19. Desmeon - Hellcat
20. Defqwop - Heart Afire (feat. Strix)
21. Unknown Brain - Superhero (feat. Chris Linton)
22. Jim Yosef - Firefly
23. Tobu - Candyland
24. Jo Cohen & Sex Whales - We Are
25. Aero Chord feat. DDARK - Shootin Stars
26. Tobu - Life
27. Elektronomia - Energy
28. Lensko - Let's Go!
29. JJD - Adventure
30. Laszlo - Fall To Light
31. Ship Wrek & Zookeepers - Ark
32. Vanze - Forever (feat. Brenton Mattheus)
33. Diviners - Savannah (feat. Philly K)
34. Anikdote - Turn It Up
35. K-391 - Earth
36. Krys Talk & Cole Sipe - Way Back Home
37. RetroVision - Puzzle
38. Cartoon - C U Again feat. Mikk Mäe (Cartoon vs Futuristik VIP)
39. Jim Yosef - Link
40. Elektronomia - Limitless
41. Razihel - Love U
42. Culture Code - Make Me Move (feat. Karra)
43. Diviners feat. Contacreast - Tropic Love
44. JPB - High
45. JPB - Defeat The Night (feat. Ashley Apollodor)
46. Lensko - Circles
47. Distrion & Electro-Light - Rubik
48. Tobu - Seven
49. Lensko - Cetus
50. Paul Flint - Savage

51-100 Lagu Bebas Copyright Youtube Terpopuler

51. Disfigure - Blank VIP (feat. Tara Louise)
52. Alex Skrindo - Jumbo
53. Tobu & Syndec - Dusk
54. Wontolla, Kasger & Limitless - Miles Away
55. Desmeon - Back From The Dead
56. Jim Yosef - Arrow
57. Jim Yosef - Eclipse
58. TULE - Fearless pt.II (feat. Chris Linton)
59. Unknown Brain - MATAFAKA (feat. Marvin Divine)
60. Audioscribe - Free Fall
61. IZECOLD - Close (feat. Molly Ann) [Brooks Remix] | NCS x FHM Release
62. Distrion & Electro-Light - You And Me (feat. Ke'nekt)
63. RedMoon & Meron Ryan - Heavyweight
64. Different Heaven - Safe And Sound
65. Axol x Alex Skrindo - You
66. Lost Sky - Dreams
67. Tobu - Sound of Goodbye
68. Tobu - Roots
69. Distrion & Alex Skrindo - Entropy
70. Heuse & Zeus x Crona - Pill (feat. Emma Sameth)
71. Jim Yosef - Can't Wait (feat. Anna Yvette)
72. Itro - Panda
73. Sex Whales & Roee Yeger - Where Was I (feat. Ashley Apollodor)
74. Zaza - Be Together
75. Uplink - To Myself (feat. NK) | Official Video
76. Disfigure - Summer Tune
77. Prismo - Stronger
78. Tobu & Marcus Mouya - Running Away
79. Tobu - Good Times
80. Aero Chord - Time Leap
81. Cartoon feat. Jüri Pootsmann - I Remember U [NCS Official Video]
82. Jim Yosef - Lights
83. Geoxor - You & I
84. Unknown Brain - Why Do I? (feat. Bri Tolani)
85. TULE - Fearless
86. Tobu - Mesmerize
87. Waysons - Eternal Minds
88. Vanze - Survive (feat. Neon Dreams)
89. Different Heaven - OMG
90. Kisma - Fingertips
91. Jim Yosef - Forces (feat. Ivan Jamile & Kédo Rebelle)
92. Tobu - Colors
93. Mendum - Elysium
94. Waysons - Daydream
95. Different Heaven - Nekozilla (LFZ Remix)
96. Different Heaven - Far Away
97. Mendum - Stay With Me (Krys Talk Remix)
98. SirensCeol - Coming Home
99. Verm - Explode
100. Spektrem - Shine (Gabriel Drew & Bloom Remix)

101-150 Lagu Bebas Copyright Youtube Terpopuler

101. Glude - Breathe
102. JPB & MYRNE - Feels Right (ft. Yung Fusion)
103. Desmeon - Undone (feat. Steklo)
104. Diamond Eyes - Everything
105. Ellis - Migraine (feat. Anna Yvette)
106. JJD - Halcyon
107. Vexento - Masked Raver
108. Jim Yosef & Anna Yvette - Linked
109. K-391 - Everybody
110. Giraffe Squad - Wait For Me
111. Krale - Frontier (ft. Jasmina Lin & Jay Christopher)
112. Desmeon - On That Day (feat. ElDiablo, Flint & Zadik)
113. Unknown Brain - Inspiration (feat. Aviella)
114. Fransis Derelle - Fly (feat. Parker Pohill)
115. Alex Skrindo - Get Up Again (feat. Axol)
116. Krys Talk - Fly Away
117. 3rd Prototype - Dancefloor
118. it's different - Shadows (feat. Miss Mary)
119. DM Galaxy - Paralyzed (feat. Tyler Fiore)
120. Valence - Infinite
121. Dirty Palm - Oblivion (feat. Micah Martin)
122. Unison - Aperture
123. Alex Skrindo & Stahl! - Moments
124. T & Sugah x NCT - Stardust (feat. Miyoki)
125. Robin Hustin x TobiMorrow - Light It Up (feat. Jex)
126. Ship Wrek - Pain (feat. Mia Vaile)
127. William Ekh - Adventures (feat. Alexa Lusader)
128. Different Heaven feat. ReesaLunn - Pentakill
129. Killercats - Tell Me (feat. Alex Skrindo)
130. Tetrix Bass Feat. Veela - The Light
131. floatinurboat - Spirit of Things
132. K.Safo & Alex Skrindo - Future Vibes (feat. Stewart Wallace)
133. Axol & The Tech Thieves - Bleed
134. Chime & Adam Tell - Whole (Rob Gasser Remix)
135. Unison - Translucent
136. Mendum - One Third
137. LFZ - Popsicle
138. LFZ - Echoes
139. NIVIRO - The Ghost [NCS Official Video]
140. Vidya Vidya - Safari Fruits
141. Music Predators - Adventure Time
142. Elektronomia - Summersong 2018
143. Codeko - Crest
144. Culture Code - Electricity (feat. Michael Zhonga)
145. Halvorsen - She Got Me Like
146. Domastic - Weird Dream
147. Electric Joy Ride - Origin
148. Rob Gasser & Laura Brehm - Vertigo
149. Laszlo - Imaginary Friends
150. Electro-Light - Throwback

151-199 Lagu Bebas Copyright Youtube Terpopuler

151. ÉWN & Whogaux - Start That Fire
152. Raven & Kreyn - So Happy [NCS Official Video]
153. it's different - Outlaw (feat. Miss Mary)
154. RetroVision - Heroes
155. Prismo - Weakness
156. Levianth & Axol - Remember (feat. The Tech Thieves)
157. Krys Talk - Fly Away (JPB Remix)
158. Speo - Make A Stand (feat. Budobo)
159. Kasger - Reflections
160. Sub.Sound - Feel The Buzz
161. TULE - Lost
162. Kontinuum - Lost (feat. Savoi) [JJD Remix] | NCS Release
163. Kasger - Highland
164. Foria - Break Away
165. NAIMA - Let Me See You
166. Fytch - Blinded (feat. Kosta & Theo Hoarau)
167. Cartoon - Immortality (feat. Kristel Aaslaid) [Futuristik Remix] | NCS Release
168. Unknown Brain - Perfect 10 (feat. Heather Sommer) [NCS Lyric Video]
169. Different Heaven & Sian Area - Feel Like Horrible
170. OLWIK - This Life (feat. Johnning)
171. Different Heaven - Far Away (Phantom Sage Remix)
172. NCS: Infinity [Album Mix]
173. Clarx - H.A.Y
174. Omar Varela, Xavi & Gi - Stronger (feat. Miss Lina)
175. Y&V - Lune
176. David Bulla - High Life
177. Killercats - Kaibu
178. Jim Yosef & Alex Skrindo - Passion
179. Mendum - Stay With Me
180. Futuristik - Little Bit (feat. Sethh)
181. Kovan & Electro-Light - Skyline
182. Uplink & Jason Gewalt - Euphoria
183. SKYL1NK - The Wizard
184. Venemy - Rescue Me (feat. Car)
185. David Bulla - Unexpected
186. Anikdote - Life Is Over
187. Disco's Over - Lonely Island PTII (feat. PRXZM)
188. ZEST - You. & Me?
189. NCS: The Best of 2015 [Album Mix]
190. Culture Code - Make Me Move (feat. Karra) [Tobu Remix] | NCS Release
191. Lensko - Titsepoken 2015
192. Elektronomia & JJD - Free
193. Kontinuum - Lost (feat. Savoi)
194. Jo Cohen & BQ - Glowing At Night
195. Ash O'Connor & Curbi - Steeper
196. Vanze x Balco x Fransis Derelle - All I Need (feat. Brenton Mattheus)
197. LarsM - Lovers
198. High Maintenance - Change Your Ways (feat. Charlotte Haining)
199. OLWIK - Taking Over (feat. Alexa Lusader)

199 Lagu Backsound Bebas Copyright Terpopuler

199 Lagu Backsound Bebas Copyright Terpopuler

199 Lagu Backsound Bebas Copyright Terpopuler

1-50 Lagu Backsound Bebas Copyright Terpopuler

1. Cartoon - On & On (feat. Daniel Levi)
2. Alan Walker - Spectre
3. DEAF KEV - Invincible
4. Different Heaven & EH!DE - My Heart
5. Disfigure - Blank
6. Electro-Light - Symbolism
7. Janji - Heroes Tonight (feat. Johnning)
8. Tobu - Hope
9. Elektronomia - Sky High
10. Cartoon - Why We Lose (feat. Coleman Trapp)
11. Alan Walker - Force
12. Spektrem - Shine
13. Itro & Tobu - Cloud 9
14. Tobu - Infectious
15. Syn Cole - Feel Good
16. Warriyo - Mortals (feat. Laura Brehm)
17. Different Heaven - Nekozilla
18. Tobu & Itro - Sunburst
19. Desmeon - Hellcat
20. Defqwop - Heart Afire (feat. Strix)
21. Unknown Brain - Superhero (feat. Chris Linton)
22. Jim Yosef - Firefly
23. Tobu - Candyland
24. Jo Cohen & Sex Whales - We Are
25. Aero Chord feat. DDARK - Shootin Stars
26. Tobu - Life
27. Elektronomia - Energy
28. Lensko - Let's Go!
29. JJD - Adventure
30. Laszlo - Fall To Light
31. Ship Wrek & Zookeepers - Ark
32. Vanze - Forever (feat. Brenton Mattheus)
33. Diviners - Savannah (feat. Philly K)
34. Anikdote - Turn It Up
35. K-391 - Earth
36. Krys Talk & Cole Sipe - Way Back Home
37. RetroVision - Puzzle
38. Cartoon - C U Again feat. Mikk Mäe (Cartoon vs Futuristik VIP)
39. Jim Yosef - Link
40. Elektronomia - Limitless
41. Razihel - Love U
42. Culture Code - Make Me Move (feat. Karra)
43. Diviners feat. Contacreast - Tropic Love
44. JPB - High
45. JPB - Defeat The Night (feat. Ashley Apollodor)
46. Lensko - Circles
47. Distrion & Electro-Light - Rubik
48. Tobu - Seven
49. Lensko - Cetus
50. Paul Flint - Savage

51-100 Lagu Backsound Bebas Copyright Terpopuler

51. Disfigure - Blank VIP (feat. Tara Louise)
52. Alex Skrindo - Jumbo
53. Tobu & Syndec - Dusk
54. Wontolla, Kasger & Limitless - Miles Away
55. Desmeon - Back From The Dead
56. Jim Yosef - Arrow
57. Jim Yosef - Eclipse
58. TULE - Fearless pt.II (feat. Chris Linton)
59. Unknown Brain - MATAFAKA (feat. Marvin Divine)
60. Audioscribe - Free Fall
61. IZECOLD - Close (feat. Molly Ann) [Brooks Remix] | NCS x FHM Release
62. Distrion & Electro-Light - You And Me (feat. Ke'nekt)
63. RedMoon & Meron Ryan - Heavyweight
64. Different Heaven - Safe And Sound
65. Axol x Alex Skrindo - You
66. Lost Sky - Dreams
67. Tobu - Sound of Goodbye
68. Tobu - Roots
69. Distrion & Alex Skrindo - Entropy
70. Heuse & Zeus x Crona - Pill (feat. Emma Sameth)
71. Jim Yosef - Can't Wait (feat. Anna Yvette)
72. Itro - Panda
73. Sex Whales & Roee Yeger - Where Was I (feat. Ashley Apollodor)
74. Zaza - Be Together
75. Uplink - To Myself (feat. NK) | Official Video
76. Disfigure - Summer Tune
77. Prismo - Stronger
78. Tobu & Marcus Mouya - Running Away
79. Tobu - Good Times
80. Aero Chord - Time Leap
81. Cartoon feat. Jüri Pootsmann - I Remember U [NCS Official Video]
82. Jim Yosef - Lights
83. Geoxor - You & I
84. Unknown Brain - Why Do I? (feat. Bri Tolani)
85. TULE - Fearless
86. Tobu - Mesmerize
87. Waysons - Eternal Minds
88. Vanze - Survive (feat. Neon Dreams)
89. Different Heaven - OMG
90. Kisma - Fingertips
91. Jim Yosef - Forces (feat. Ivan Jamile & Kédo Rebelle)
92. Tobu - Colors
93. Mendum - Elysium
94. Waysons - Daydream
95. Different Heaven - Nekozilla (LFZ Remix)
96. Different Heaven - Far Away
97. Mendum - Stay With Me (Krys Talk Remix)
98. SirensCeol - Coming Home
99. Verm - Explode
100. Spektrem - Shine (Gabriel Drew & Bloom Remix)

101-150 Lagu Backsound Bebas Copyright Terpopuler

101. Glude - Breathe
102. JPB & MYRNE - Feels Right (ft. Yung Fusion)
103. Desmeon - Undone (feat. Steklo)
104. Diamond Eyes - Everything
105. Ellis - Migraine (feat. Anna Yvette)
106. JJD - Halcyon
107. Vexento - Masked Raver
108. Jim Yosef & Anna Yvette - Linked
109. K-391 - Everybody
110. Giraffe Squad - Wait For Me
111. Krale - Frontier (ft. Jasmina Lin & Jay Christopher)
112. Desmeon - On That Day (feat. ElDiablo, Flint & Zadik)
113. Unknown Brain - Inspiration (feat. Aviella)
114. Fransis Derelle - Fly (feat. Parker Pohill)
115. Alex Skrindo - Get Up Again (feat. Axol)
116. Krys Talk - Fly Away
117. 3rd Prototype - Dancefloor
118. it's different - Shadows (feat. Miss Mary)
119. DM Galaxy - Paralyzed (feat. Tyler Fiore)
120. Valence - Infinite
121. Dirty Palm - Oblivion (feat. Micah Martin)
122. Unison - Aperture
123. Alex Skrindo & Stahl! - Moments
124. T & Sugah x NCT - Stardust (feat. Miyoki)
125. Robin Hustin x TobiMorrow - Light It Up (feat. Jex)
126. Ship Wrek - Pain (feat. Mia Vaile)
127. William Ekh - Adventures (feat. Alexa Lusader)
128. Different Heaven feat. ReesaLunn - Pentakill
129. Killercats - Tell Me (feat. Alex Skrindo)
130. Tetrix Bass Feat. Veela - The Light
131. floatinurboat - Spirit of Things
132. K.Safo & Alex Skrindo - Future Vibes (feat. Stewart Wallace)
133. Axol & The Tech Thieves - Bleed
134. Chime & Adam Tell - Whole (Rob Gasser Remix)
135. Unison - Translucent
136. Mendum - One Third
137. LFZ - Popsicle
138. LFZ - Echoes
139. NIVIRO - The Ghost [NCS Official Video]
140. Vidya Vidya - Safari Fruits
141. Music Predators - Adventure Time
142. Elektronomia - Summersong 2018
143. Codeko - Crest
144. Culture Code - Electricity (feat. Michael Zhonga)
145. Halvorsen - She Got Me Like
146. Domastic - Weird Dream
147. Electric Joy Ride - Origin
148. Rob Gasser & Laura Brehm - Vertigo
149. Laszlo - Imaginary Friends
150. Electro-Light - Throwback

151-199 Lagu Backsound Bebas Copyright Terpopuler

151. ÉWN & Whogaux - Start That Fire
152. Raven & Kreyn - So Happy [NCS Official Video]
153. it's different - Outlaw (feat. Miss Mary)
154. RetroVision - Heroes
155. Prismo - Weakness
156. Levianth & Axol - Remember (feat. The Tech Thieves)
157. Krys Talk - Fly Away (JPB Remix)
158. Speo - Make A Stand (feat. Budobo)
159. Kasger - Reflections
160. Sub.Sound - Feel The Buzz
161. TULE - Lost
162. Kontinuum - Lost (feat. Savoi) [JJD Remix] | NCS Release
163. Kasger - Highland
164. Foria - Break Away
165. NAIMA - Let Me See You
166. Fytch - Blinded (feat. Kosta & Theo Hoarau)
167. Cartoon - Immortality (feat. Kristel Aaslaid) [Futuristik Remix] | NCS Release
168. Unknown Brain - Perfect 10 (feat. Heather Sommer) [NCS Lyric Video]
169. Different Heaven & Sian Area - Feel Like Horrible
170. OLWIK - This Life (feat. Johnning)
171. Different Heaven - Far Away (Phantom Sage Remix)
172. NCS: Infinity [Album Mix]
173. Clarx - H.A.Y
174. Omar Varela, Xavi & Gi - Stronger (feat. Miss Lina)
175. Y&V - Lune
176. David Bulla - High Life
177. Killercats - Kaibu
178. Jim Yosef & Alex Skrindo - Passion
179. Mendum - Stay With Me
180. Futuristik - Little Bit (feat. Sethh)
181. Kovan & Electro-Light - Skyline
182. Uplink & Jason Gewalt - Euphoria
183. SKYL1NK - The Wizard
184. Venemy - Rescue Me (feat. Car)
185. David Bulla - Unexpected
186. Anikdote - Life Is Over
187. Disco's Over - Lonely Island PTII (feat. PRXZM)
188. ZEST - You. & Me?
189. NCS: The Best of 2015 [Album Mix]
190. Culture Code - Make Me Move (feat. Karra) [Tobu Remix] | NCS Release
191. Lensko - Titsepoken 2015
192. Elektronomia & JJD - Free
193. Kontinuum - Lost (feat. Savoi)
194. Jo Cohen & BQ - Glowing At Night
195. Ash O'Connor & Curbi - Steeper
196. Vanze x Balco x Fransis Derelle - All I Need (feat. Brenton Mattheus)
197. LarsM - Lovers
198. High Maintenance - Change Your Ways (feat. Charlotte Haining)
199. OLWIK - Taking Over (feat. Alexa Lusader)

Contoh Program Serialisasi pada Java dan Hasil Programnya

Contoh Program Serialisasi pada Java dan Hasil Programnya


Class GameCharacter

import java.io.*;
public class GameCharacter implements Serializable
//merupakan kelas yang akan diserialisasi
{
    int power;
    //membuat variabel power dengan tipe data integer
    String type;
    //membuat variabel type dengan tipe data string
    String[] weapons;
    //membuat array weapns dengan tipe data string
   
    public GameCharacter(int p, String t, String[] w)
    //pengkapsulan method untuk mencegah crash jika terjadi kesalahan
    {
        power = p;
        //Memasukkan nilai variabel p ke power
        type = t;
        //Memasukkan nilai variabel t ke type
        weapons = w;
        //Memasukkan nilai variabel w ke weapons
    }
   
    public int getPower(){
        return power;
        //mengembalikan nilai power agar dapat ditampilkan
    }
   
    public String getType(){
        return type;
        //mengembalikan nilai type  agar dapat ditampilkan
    }
   
    public String getWeapons(){
        String weaponList = "";
        for(int i = 0; i < weapons.length; i++)
        //perulangan yang dilakukan selama nilai i lebih kecil dari weapon.length
        {
            weaponList += weapons[i]+" ";
        }
        return weaponList;
        //mengembalikan nilai weaponList
    }
}

Class  SerializedWriter

import java.io.*;
public class SerializedWriter
//kelas yang berfungsi penulis serialisasi
{
    public static void main (String[]args){
        GameCharacter one = new GameCharacter(50, "Elf", new String[] {"bow", "sword", "dust"});
        //membuat instansiasi Game Character dengan objek one beserta isi konstruktornya
        GameCharacter two = new GameCharacter(200, "Troll", new String[] {"bare hand", "big axe"});
        //membuat instansiasi Game Character dengan objek two beserta isi konstruktornya
        GameCharacter three = new GameCharacter(120, "Magician", new String[] {"spells", "invisibility"});
        //membuat instansiasi Game Character dengan objek three beserta isi konstruktornya
       
        try{
            //pengkapsulan method untuk mencegah crash jika terjadi kesalahan
            ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("Game.ser"));
            //membuat object output stream dengan nama os.
           
            os.writeObject(one);
            //menulis objek one pada game.ser
            os.writeObject(two);
            //menulis objek two pada game.ser
            os.writeObject(three);
            //menulis objek three pada game.ser
            os.close();
            //menutup objectoutputstream
        }
        catch(IOException ex){
            ex.printStackTrace();
            //hasil yang ditampilkan jika terjadi error
        }
    }
}

Class  SerializedReader

 import java.io.*;
public class SerializedReader
//kelas yang berfungsi sebagai pembaca kelas serialisasi
{
    public static void main (String[] args){
        try{
            //pengkapsulan method untuk mencegah crash jika terjadi kesalahan
            ObjectInputStream is = new ObjectInputStream(new FileInputStream("Game.ser"));
            //membuat objek objectinputstream dengan nama is
            GameCharacter oneRestore = (GameCharacter) is.readObject();
            //membuat instasiasi objek oneRestore character untuk menampung objek pertama serialisasi
            GameCharacter twoRestore = (GameCharacter) is.readObject();
            //membuat instasiasi objek twoRestore character untuk menampung objek kedua serialisasi
            GameCharacter threeRestore = (GameCharacter) is.readObject();
            //membuat instasiasi objek oneRestore character untuk menampung objek ketiga serialisasi
           
            System.out.println("One's type: " + oneRestore.getType());
            //memanggil method gettype dari class GameCharacter
            System.out.println("One's power: " + oneRestore.getPower());
            //memanggil method getpower dari class GameCharacter
            System.out.println("One's weapons: " + oneRestore.getWeapons());
            //memanggil method getweapon dari class GameCharacter
            System.out.println("two's type: " + twoRestore.getType());
            //memanggil method gettype dari class GameCharacter
            System.out.println("three's type: " + threeRestore.getType());
            //memanggil method gettype dari class GameCharacter
        }
        catch (Exception ex){
            ex.printStackTrace();
            //hasil yang ditampilkan jika terjadi error
        }
    }
}

class SerializedReaderCont

 import java.io.*;
public class SerializedReaderCont
//kelas yang berfungsi sebagai pembaca kelas serialisasi
{
    public static void main (String[] args){
        try{
            //pengkapsulan method untuk mencegah crash jika terjadi kesalahan
            ObjectInputStream is = new ObjectInputStream(new FileInputStream("Game.ser"));
            //membuat objek objectinputstream dengan nama is
           
            boolean check = true;
            //membuat boolean check yang nilainya true
            int cnt = 1;
            //membuat variabel cnt yang bernilai 1
           
            while(check){ //selama keadaan benar makan..
                try{ //pengkapsulan method untuk mencegah crash jika terjadi kesalahan
                    GameCharacter obj = (GameCharacter)is.readObject();
                    //membuat objek obj untuk menampung hasil pembacaan object.
                    System.out.println("Character "+cnt);
                    //menampilkan nilai cnt pada layar
                    System.out.println("Character's type "+obj.getType());
                    //menampilkan nilai type pada layar
                    System.out.println("Character's power "+obj.getPower());
                    //menampilkan nilai power pada layar
                    System.out.println("Character's weapon "+obj.getWeapons());
                    //menampilkan nilai weapons pada layar
                    cnt = cnt +1;
                }catch(EOFException ex){
                    check = false;
                    //hasil yang ditampilkan jika terjadi error
                }
            }
        }
        catch (Exception ex){
            ex.printStackTrace();
            //hasil yang ditampilkan jika terjadi error
        }
    }
}

• Hasil Running
serializewriter
 
Contoh Program Serialisasi pada Java dan Hasil Programnya


Serializereader

Contoh Program Serialisasi pada Java dan Hasil Programnya

Serializereader

Contoh Program Serialisasi pada Java dan Hasil Programnya


Langkah dan Cara Install Linux, DNS dan Web Server 2018

Langkah dan Cara Install Linux, DNS dan Web Server 2018



Install linux, dns, web server dengan ketentuan : nama domain adalah www.namaanda.responsi.net dan tugas.nama-anda.responsi.net

Langkah-Langkah Kerja:
1. Membuat mesin virtual :

a. Menentukan nama dan tipe sistem operasi
Name : responsi17b
Type : linux
Version : redhat 32 bit
b. Menentukan besar memori yang akan dialokasikan untuk mesin virtual
Memory : 768 MB
c. Buat harddisk baru dengan type : vdi(virtual disk image)
d. Klik create untuk membuat mesin virtual

2. Instalasi Linux 

a. Jalankan mesin virtual
b. Masuk cd centos 6 i386.iso
c. Ikuti perintah install dari awal hingga akhir.
d. Keterangan:
Nama mesin virtual  : responsi17b
Hostname   : responsi17b
user    : root
password   : responsi17b
paket instalasi  : minimal

3. Mensetting IP Adress sebagai nat

a. Pada network adapter 1 setting menjadi mode nat
b. Kemudian setting ip eth1 pada centos menjadi dhcp dengan perintah : #vi /etc/sysconfig/network-script/ifcfg-eth0
c. Tambahkan :
BOOTPROTO="dhcp"
ENABLEBOOT="yes"
d. Jalankan #service network restart, untuk menerapkan perubahan yang telah dibuat.
e. Jalankan perintah ping 8.8.8.8 untuk tes koneksi internet

4. Menginstall paket yang diperlukan (DNS dan Web Server)

a. Setelah terkoneksi internet jalankan perintah:
#Yum install bind bind utils httpd mysql nmap nano
b. Tunggu hingga instalasi semua paketnya selesai.

5. Mensetting ip menjadi static untuk setting DNS
a. Ubah adapter menjadi mode terbridge
b. Setting ip menjadi static :
IP : 10.33.108.180
NETMASK : 255.255.255.0
c. Jalankan service network restart untuk menerapkan perubahan yang telah dibuat.

6. Mensetting DNS server:

a. Setting resolv.conf dengan perintah #nano /etc/resolv.conf
Tambahkan nameserver 10.33.108.180
b. Setting named.conf dengan perintah #nano /etc/named.conf
Beberapa parameter yang ditambahkan antara lain:

listen-on port 53 { 127.0.0.1; any;};
allow-query { localhost; any;};
recursion no;
dnssec-lookaside auto;
zone "anam.responsi.net" IN {
type master;
file "anam.responsi.net.zone";
allow-update { none; };
};

c. Masuk kedalam directori /var/named dengan perintah cd /var/named
d. Membuat file database Zone “anam.responsi.net.zone”
e. Konfigurasi agar service DNS Server otomatis berjalan saat PC server hidup dengan perintah chkconfig named on
f. Merestart dns server dengan perintah : #service named restart

7. Pengujian DNS Server:

a. Setelah dns selesai di setting dan telah di restart maka perlu dilakukan pengujian
b. Nslookup anam.responsi.net

Langkah dan Cara Install Linux, DNS dan Web Server 2018

c. Nslookup www.anam.responsi.net

Langkah dan Cara Install Linux, DNS dan Web Server 2018

d. Nslookup tugas.anam.responsi.net

Langkah dan Cara Install Linux, DNS dan Web Server 2018

8. Setting WebServer

a. Setelah setting dns selesai selanjutnya adalah setting webserver
b. Jalankan perintah : nano /etc/httpd/conf/httpd.conf
Tambahkan baris script berikut ini :

ServerAdmin webmaster@anam.responsi.net
ServerName www.anam.responsi.net:80

NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.anam.responsi.net
ServerAdmin webmaster@anam.responsi.net
DocumentRoot /var/www/html/komjar/
</VirtualHost>
<VirtualHost *:80>
ServerName tugas.anam.responsi.net
ServerAdmin webmaster@tugas.anam.responsi.net
DocumentRoot /var/www/html/tugas
</VirtualHost>
c. Membuat folder untuk meletakkan file tugas.anam.responsi.net dan www.anam.responsi.net dengan perintah :

Cd /var/www/html
Mkdir anam
Mkdir tugas

d. Selanjutanya adalah membuat file index untuk tugas.anam.responsi.net dan www.anam.responsi.net.

9. Pengujian web server

a. Setting ip address pada client :
IP : 10.33.108.176

Langkah dan Cara Install Linux, DNS dan Web Server 2018

b. Lakukan nslookup anam.responsi.net

Langkah dan Cara Install Linux, DNS dan Web Server 2018

c. Lakukan nslookup www.anam.responsi.net

Langkah dan Cara Install Linux, DNS dan Web Server 2018

d. Lakukan nslookup www.anam.responsi.net

Langkah dan Cara Install Linux, DNS dan Web Server 2018

e. Akses pada browser client:  www.anam.responsi.net

Langkah dan Cara Install Linux, DNS dan Web Server 2018

f. Akses pada browser client:  www.anam.responsi
Langkah dan Cara Install Linux, DNS dan Web Server 2018


g. Setting DNS dan Web Server telah selesai.

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


Implementasi transaksi pada aplikasi pemesanan maskapai penerbangan online. Dalam pemesanan kita perlu melakukan tiga operasi:

• Pemesanan tiket(seat_collection)
• Pembayaran (payment_collection)
• Update jumlah kursi dan penjualan yang dipesan (audit_collection)

Untuk aplikasi ini, menggunakan tiga koleksi terpisah, seperti yang dijelaskan diatas. Kode program ‘transaction_main.py’ digunakan untuk memperbarui koleksi yang terhubung dengan driver (Pymongo 3.7.1).

Buatlah program dengan pymongo untuk update dan melihat action saat  menggunakan transaksi meliputi
• untuk menyimpan perubahan data dengan commit
• untuk menghapus perubahan data dengan abortTransaction
• untuk transaksi tanpa write konflik dapat dilakukan
• transaksi dengan write konflik dibatalkan


Persiapan Server :
A. Persiapan Server Menggunakan Windows:

1. Pastikan mongodb telah terinstall pada komputer. Disarankan untuk install versi 4.0
2. Install python 3.71 dan tambahkan path pada system variabel windows.
C:\Users\Anam\AppData\Local\Programs\Python\Python371-32\Scripts\;
C:\Users\Anam\AppData\Local\Programs\Python\Python371-32\;
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


3. Install pymongo dengan pip disarankan pymongo 3.71
Syntaks : pip install pymongo   / pip install –upgrade pymongo
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


4. Install mtools dengan pip .
Syntaks : pip install mtools
MTools adalah kumpulan skrip pembantu untuk mengurai, menyaring, dan memvisualisasikan file log MongoDB (mongod, mongos). mtools juga termasuk mlaunch, utilitas untuk dengan cepat mengatur lingkungan pengujian MongoDB yang kompleks pada mesin lokal. Untuk demo ini kita hanya akan menggunakan program mlaunch.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


5. Install psutil dengan pip. Psutils dibutuhkan sebagai pendukung mtools.
Sysntaks : pip install psutil
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

Psutil merupakan modul yang menyediakan sebuah interface untuk mengambil informasi tentang proses yang berjalan dan sistem utilitas secara portable dengan menggunakan python, menerapkan banyak fungsi yang ditawarkan oleh tools ( mtools).

6. Install virtualenv untuk virtualisasi environment
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


7. Buka command prompt di tempat projeck berada. Kemudian jalankan 2 perintah berikut.
Sysntaks : virtualenv env
env\Scripts\activate.bat
Virtualenv membuat lingkungan python virtual yang terisolasi,sehinggga program Python yang berjalan di dalam virtualenv memiliki modul-modulnya sendiri, sehingga dapat menghindari bentrokan antar library dan program dari luar tidak bisa mengaksesnya. Misal, kita mempunyai dua proyek python, yang satu menggunakan Library X1.6 dan satu lagi menggunakan Library X1.9 , hal ini memerlukan virtual environment agar dua proyek ini dapat berjalan bersamaan pada satu mesin.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)



8. Jalankan server dengan mlaunch. Ketika perintah ini dijalankan maka otomatis akan tercipta 3 server. Dengan port 27100, 27101, 27102 dan men set primary dan secondary secara otomatis.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

Mlaunch adalah skrip untuk dapat melakukan pengujian local environment secara cepat termasuk dalam set replica dan sistem yang sharded.


9. Masih di lanjutan dari menjalankan server. Jalankan program transaction_main.py. program ini akan mengenerate daftar secara otomatis.
Syntak : python transaction_main.py
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


10. Untuk melihat perubahan secara live pada daftar collection seat dapat menggunakan watch_transaction.py. (catatan transaction_main.py harus berjalan)
Syntaks: python watch_transactions.py --database SEATSDB --collection seats
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


11. Untuk melihat perubahan secara live pada daftar collection payment dapat menggunakan watch_transaction.py. (catatan transaction_main.py harus berjalan)
Syntaks: python watch_transactions.py --database PAYMENTSDB --collection payments
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


12. Data base yang terbentuk pada server antara lain : AUDITDB, PAYMENTSDB, SEATSDB
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


13. Isi masing-masing database sebagai berikut :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)



B. Persiapan Server Menggunakan Linux(Ubuntu 16 64 bit)

1. Menginstall mongoDB versi 4 pada server ubuntu
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)




2. Mengecek apakah mongoDB sudah dapat dijalankan dengan menjalankan perintah mongo.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


3. Menginstall pip yang nantinya akan digunakan untuk menginstall paket python lainnya. Berbeda dengan windows yang pip sudah terbawa langsung dengan pythonnya. Di linux pip harus diinstall secara terpisah.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


4. Menginstall dan mengupgrade pymongo. Pymongo adalah antarmuka antara python dan mongoDB (API). Agar perintah di mongo dapat dikenali didalam python.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


5. Selanjutnya menginstall mtools menggunakan pip.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


6. Paket selanjutnya yang diinstall adalah pseutil.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


7. Selanjutnya adalah menginstall virtualenv. Virtualenv berfungsi untuk membuat virtual environment.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


8. Setelah semua paket yang dibutuhkan terinstal buat folder di :/root/ dengan perintah mkdir pymongo-transactions. Folder ini akan kita gunakan menyimpan file-file project.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


9. Selanjutnya adalah copy atau upload file transaction_main.py dan program 1 sampai 4 yang telah dibuat ke dalam server.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)



10. Masih dari dalam folder /root/pymongo_transaction jalankan virtual environmet. Dengan perintah : source venv/bin/activate
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


11. Selanjutnya adalah menjalankan server mongo db pada port 27100, 27101 dan 27102 menggunaan perintah  : mlaunch init --port 27100 --replicaset --name "txntest"
Perintah tersebut otomatis membuat 3 buath server dengan settingan replica setnya.
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


12. Berikutnya jalankan program transaction_main.py untuk memulai mengenerate database SEATSDB, PAYMENTSDB dan AUDITDB. Dengan menggunakan perintah : python transaction_main.py
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)




Hasil Running Program dan Analisa :

A. Program untuk menyimpan perubahan data dengan commit

Sourcecode Program :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)





Hasil Running Program :
Di  windows :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


Di Linux
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)




Analisa Program :
Program diatas berfungsi untuk menambahkan data seat 7A pada collection seats pada database SEATSDB dan collection payments pada database PAYMENTSDB.  Dengan melakukan commit pada sesi.
#import library yang dibutuhkan
from argparse import ArgumentParser
import datetime
import time
import sys
import random
import pymongo
import pymongo.errors
from pymongo import MongoClient
import urllib.parse
Analisa : pertama adalah import librari yang akan digunakan didalam program

#membuat koneksi ke mongo DB
parser = ArgumentParser()
parser.add_argument("--host", default="mongodb://localhost:27100,localhost:27101,localhost:27102/?replicaSet=txntest&retryWrites=true",
help="MongoDB URI [default: %(default)s]")
parser.add_argument("--usetxns", default=False, action="store_true", help="Use transactions [default: %(default)s]")
parser.add_argument("--delay", default=1.0, type=float,
help="Delay between two insertion events [default: %(default)s]")
parser.add_argument("--iterations", default=0, type=int, help="Run  N iterations. O means run forever")
parser.add_argument("--randdelay", type=float, nargs=2,
help="Create a delay set randomly between the two bounds [default: %(default)s]")
args = parser.parse_args()
Analisa : setelah import library selanjutnya adalah membuat koneksi mongo DB. Terdapat 3 server localhost dengan port 27100, 27101, dan 27101

client = pymongo.MongoClient(host=args.host)
seatsdb = client["SEATSDB"]
paymentsdb = client["PAYMENTSDB"]
auditdb = client[ "AUDITDB"]
payments_collection = paymentsdb["payments"]
seats_collection = seatsdb["seats"]
audit_collection = auditdb["audit"]
Analisa : setelah terkoneksi dengan server selanjutnya mengkoneksikan ke database SEATSDB, PAYMENTSDB, DAN AUDITDB.

x = seats_collection.count()
Analisa : membuat variable x untuk menghitung jumlah dokumen dalam collection seat

audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : membuat update isi database audit

price = random.randrange(200, 500, 10)
Analisa : membuat perintah untuk mengacak isi price

session1 = client.start_session()
Analisa : membuat session 1

session1.start_transaction()
Analisa : memulai session 1

#fungsi insert (one / many)
seats_collection.insert_one({"flight_no":"Anam", "seat":"7A", "date" : datetime.datetime.utcnow()}, session=session1)
payments_collection.insert_one({"flight_no":"Anam", "seat":"7A", "date" : datetime.datetime.utcnow(), "price" : price}, session=session1)
Analisa : melakukan insert seat 7A ke collection seats dan payments dengan menggunakan sesi 1

print ("============================================ ")
print ("DAFTAR SEATSDB SEBELUM COMMIT")
for x in seats_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB SEBELUM COMMIT")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB SEBELUM COMMIT")
for x in audit_collection.find():
  print(x)

print ("============================================ ")
Analisa : menampilkan isi collection seats, payments dan audit sebelum sesi di commit.

#commit / abort sesi
session1.commit_transaction()
Analisa : melakukan commit session1 dan menyimpan hasil transaksi.

x = seats_collection.count()
audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : melakukan update x untuk menghitung jumlah dokumen seats dan melakukan update pada collection audit.

print ("============================================ ")
print ("DAFTAR SEATSDB")
for x in seats_collection.find().sort("seat",1):
  print(x)
  #cara 2 : print ("data : %s" % x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB")
for x in audit_collection.find():
                  print(x)
Analisa : menampilkan isi collection seats , payments dan audit setelah melakukan transaksi.



B. Program untuk menghapus perubahan data dengan abortTransaction

Sourcecode Program :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)





Hasil Running Program :
Di Windows :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

Di Linux:
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)



Analisa Program :
Program diatas berfungsi untuk menambahkan data seat 7A pada collection seats pada database SEATSDB dan collection payments pada database PAYMENTSDB.  Kemudian program menampilkan isi database ketika terjadi transaksi sebelum dicommit. Perbedaan dengan program nomor 1 adalah bahwa pada program nomor 1 transaksi di commit sehingga perubahan tersimpan. Sedangkan pada program 2 ini transaksi tidak di commit sehingga perubahan tidak disimpan. Dapat dilihat database sebelum diabort dan sesudah di abort tidak mengalami perubahan.
#import library yang dibutuhkan
from argparse import ArgumentParser
import datetime
import time
import sys
import random
import pymongo
import pymongo.errors
from pymongo import MongoClient
import urllib.parse
Analisa : pertama adalah import librari yang akan digunakan didalam program

#membuat koneksi ke mongo DB
parser = ArgumentParser()
parser.add_argument("--host", default="mongodb://localhost:27100,localhost:27101,localhost:27102/?replicaSet=txntest&retryWrites=true",
help="MongoDB URI [default: %(default)s]")
parser.add_argument("--usetxns", default=False, action="store_true", help="Use transactions [default: %(default)s]")
parser.add_argument("--delay", default=1.0, type=float,
help="Delay between two insertion events [default: %(default)s]")
parser.add_argument("--iterations", default=0, type=int, help="Run  N iterations. O means run forever")
parser.add_argument("--randdelay", type=float, nargs=2,
help="Create a delay set randomly between the two bounds [default: %(default)s]")
args = parser.parse_args()
Analisa : setelah import library selanjutnya adalah membuat koneksi mongo DB. Terdapat 3 server localhost dengan port 27100, 27101, dan 27101

client = pymongo.MongoClient(host=args.host)
seatsdb = client["SEATSDB"]
paymentsdb = client["PAYMENTSDB"]
auditdb = client[ "AUDITDB"]
payments_collection = paymentsdb["payments"]
seats_collection = seatsdb["seats"]
audit_collection = auditdb["audit"]
Analisa : setelah terkoneksi dengan server selanjutnya mengkoneksikan ke database SEATSDB, PAYMENTSDB, DAN AUDITDB.

x = seats_collection.count()
Analisa : membuat variable x untuk menghitung jumlah dokumen dalam collection seat

audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : membuat update isi database audit

price = random.randrange(200, 500, 10)
Analisa : membuat perintah untuk mengacak isi price

session1 = client.start_session()
Analisa : membuat session 1

session1.start_transaction()
Analisa : memulai session 1

#fungsi insert (one / many)
seats_collection.insert_one({"flight_no":"Anam", "seat":"8A", "date" : datetime.datetime.utcnow()}, session=session1)
payments_collection.insert_one({"flight_no":"Anam", "seat":"8A", "date" : datetime.datetime.utcnow(), "price" : price}, session=session1)
Analisa : melakukan insert seat 8A ke collection seats dan payments dengan menggunakan sesi 1

print ("============================================ ")
print ("DAFTAR SEATSDB SEBELUM COMMIT")
for x in seats_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB SEBELUM COMMIT")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB SEBELUM COMMIT")
for x in audit_collection.find():
  print(x)

print ("============================================ ")
Analisa : menampilkan isi collection seats, payments dan audit sebelum sesi di commit.

#commit / abort sesi
session1.abort_transaction()
Analisa : melakukan abort session1 dan mengagalkan penyimpanan transaksi.

x = seats_collection.count()
audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : melakukan update x untuk menghitung jumlah dokumen seats dan melakukan update pada collection audit.

print ("============================================ ")
print ("DAFTAR SEATSDB")
for x in seats_collection.find().sort("seat",1):
  print(x)
  #cara 2 : print ("data : %s" % x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB")
for x in audit_collection.find():
                  print(x)
Analisa : menampilkan isi collection seats , payments dan audit setelah melakukan transaksi.



C. Program untuk transaksi tanpa write konflik dapat dilakukan

Sourcecode Program :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)




Hasil Running Program :
Di Windows :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)



Di Linux:
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)



Analisa Program :
Program diatas berfungsi untuk menambahkan data seat 9A dan seat 10A pada collection seats pada database SEATSDB dan collection payments pada database PAYMENTSDB. Serta mengupdate collection audit sesuai jumlah collection setelah ditambahkan.  Penambahan collection dibagi menjadi 2 sesi yang berjalan bersamaan. Namun tidak ada write conflik diantara keduanya.
#import library yang dibutuhkan
from argparse import ArgumentParser
import datetime
import time
import sys
import random
import pymongo
import pymongo.errors
from pymongo import MongoClient
import urllib.parse
Analisa : pertama adalah import librari yang akan digunakan didalam program

#membuat koneksi ke mongo DB
parser = ArgumentParser()
parser.add_argument("--host", default="mongodb://localhost:27100,localhost:27101,localhost:27102/?replicaSet=txntest&retryWrites=true",
help="MongoDB URI [default: %(default)s]")
parser.add_argument("--usetxns", default=False, action="store_true", help="Use transactions [default: %(default)s]")
parser.add_argument("--delay", default=1.0, type=float,
help="Delay between two insertion events [default: %(default)s]")
parser.add_argument("--iterations", default=0, type=int, help="Run  N iterations. O means run forever")
parser.add_argument("--randdelay", type=float, nargs=2,
help="Create a delay set randomly between the two bounds [default: %(default)s]")
args = parser.parse_args()
Analisa : setelah import library selanjutnya adalah membuat koneksi mongo DB. Terdapat 3 server localhost dengan port 27100, 27101, dan 27101

client = pymongo.MongoClient(host=args.host)
seatsdb = client["SEATSDB"]
paymentsdb = client["PAYMENTSDB"]
auditdb = client[ "AUDITDB"]
payments_collection = paymentsdb["payments"]
seats_collection = seatsdb["seats"]
audit_collection = auditdb["audit"]
Analisa : setelah terkoneksi dengan server selanjutnya mengkoneksikan ke database SEATSDB, PAYMENTSDB, DAN AUDITDB.

x = seats_collection.count()
Analisa : membuat variable x untuk menghitung jumlah dokumen dalam collection seat

audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : membuat update isi database audit

price = random.randrange(200, 500, 10)
Analisa : membuat perintah untuk mengacak isi price

session1 = client.start_session()
session2 = client.start_session()
Analisa : membuat session 1 dan session 2

session1.start_transaction()
session2.start_transaction()
Analisa : memulai transaksi pada session 1 dan session 2

#fungsi insert (one / many)
seats_collection.insert_one({"flight_no":"Anam", "seat":"9A", "date" : datetime.datetime.utcnow()}, session=session1)
payments_collection.insert_one({"flight_no":"Anam", "seat":"9A", "date" : datetime.datetime.utcnow(), "price" : price}, session=session1)
seats_collection.insert_one({"flight_no":"Anam", "seat":"10A", "date" : datetime.datetime.utcnow()}, session=session2)
payments_collection.insert_one({"flight_no":"Anam", "seat":"10A", "date" : datetime.datetime.utcnow(), "price" : price}, session=session2)
Analisa : melakukan insert seat 9A ke collection seats dan payments dengan menggunakan sesi 1 dan melakukan insert seat 10A ke collection seats dan payments dengan menggunakan sesi 2.

print ("============================================ ")
print ("DAFTAR SEATSDB SEBELUM COMMIT")
for x in seats_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB SEBELUM COMMIT")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB SEBELUM COMMIT")
for x in audit_collection.find():
  print(x)

print ("============================================ ")
Analisa : menampilkan isi collection seats, payments dan audit sebelum sesi di commit.

#commit / abort sesi
session1.commit_transaction()
session2.commit_transaction()
Analisa : melakukan commit session1  dan session2 sehingga transaksi menjadi tersimpan.

x = seats_collection.count()
audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : melakukan update x untuk menghitung jumlah dokumen seats dan melakukan update pada collection audit.

print ("============================================ ")
print ("DAFTAR SEATSDB")
for x in seats_collection.find().sort("seat",1):
  print(x)
  #cara 2 : print ("data : %s" % x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB")
for x in audit_collection.find():
                  print(x)
Analisa : menampilkan isi collection seats , payments dan audit setelah melakukan transaksi.


D.  Program transaksi dengan write konflik dibatalkan

Sourcecode Program :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)




Hasil Running Program :
Di Windows :
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


Di Linux:
5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


Analisa Program :
Program diatas berfungsi untuk menghapus data seat 3A pada collection seats pada database SEATSDB dan collection payments pada database PAYMENTSDB. Serta mengupdate collection audit sesuai jumlah collection setelah ditambahkan.  Namun didalam program seat 3 A di hapus 2X pada session yang berbeda sehingga terjadi write conflik dan program mengalami error. Atau dibatalkan.
Analisa : menampilkan isi collection seats , payments dan audit setelah melakukan transaksi.#import library yang dibutuhkan
from argparse import ArgumentParser
import datetime
import time
import sys
import random
import pymongo
import pymongo.errors
from pymongo import MongoClient
import urllib.parse
Analisa : pertama adalah import librari yang akan digunakan didalam program

#membuat koneksi ke mongo DB
parser = ArgumentParser()
parser.add_argument("--host", default="mongodb://localhost:27100,localhost:27101,localhost:27102/?replicaSet=txntest&retryWrites=true",
help="MongoDB URI [default: %(default)s]")
parser.add_argument("--usetxns", default=False, action="store_true", help="Use transactions [default: %(default)s]")
parser.add_argument("--delay", default=1.0, type=float,
help="Delay between two insertion events [default: %(default)s]")
parser.add_argument("--iterations", default=0, type=int, help="Run  N iterations. O means run forever")
parser.add_argument("--randdelay", type=float, nargs=2,
help="Create a delay set randomly between the two bounds [default: %(default)s]")
args = parser.parse_args()
Analisa : setelah import library selanjutnya adalah membuat koneksi mongo DB. Terdapat 3 server localhost dengan port 27100, 27101, dan 27101

client = pymongo.MongoClient(host=args.host)
seatsdb = client["SEATSDB"]
paymentsdb = client["PAYMENTSDB"]
auditdb = client[ "AUDITDB"]
payments_collection = paymentsdb["payments"]
seats_collection = seatsdb["seats"]
audit_collection = auditdb["audit"]
Analisa : setelah terkoneksi dengan server selanjutnya mengkoneksikan ke database SEATSDB, PAYMENTSDB, DAN AUDITDB.

x = seats_collection.count()
Analisa : membuat variable x untuk menghitung jumlah dokumen dalam collection seat

audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : membuat update isi database audit

price = random.randrange(200, 500, 10)
Analisa : membuat perintah untuk mengacak isi price

session1 = client.start_session()
session2 = client.start_session()
Analisa : membuat session 1 dan session 2

session1.start_transaction()
session2.start_transaction()
Analisa : memulai transaksi pada session 1 dan session 2

seats_collection.delete_many({"seat":"3A"}, session=session1)
payments_collection.delete_one({"seat":"3A"}, session=session1)
seats_collection.delete_many({"seat":"3A"}, session=session2)
payments_collection.delete_one({"seat":"3A"}, session=session2)
Analisa : melakukan delete seat 3A ke collection seats dan payments dengan menggunakan sesi 1 dan melakukan delete seat 3A ke collection seats dan payments dengan menggunakan sesi 2. Terjadi write conflik karena menghapus 1 dokumen sebanyak 2 x.

print ("============================================ ")
print ("DAFTAR SEATSDB SEBELUM COMMIT")
for x in seats_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB SEBELUM COMMIT")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB SEBELUM COMMIT")
for x in audit_collection.find():
  print(x)

print ("============================================ ")
Analisa : menampilkan isi collection seats, payments dan audit sebelum sesi di commit. Dibatalkan otomatis karena terjadi write conflik.

#commit / abort sesi
session1.commit_transaction()
session2.commit_transaction()
Analisa : melakukan commit session1  dan session2 sehingga transaksi menjadi tersimpan. Dibatalkan otomatis karena terjadi write conflik.

x = seats_collection.count()
audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : melakukan update x untuk menghitung jumlah dokumen seats dan melakukan update pada collection audit. Dibatalkan otomatis karena terjadi write conflik.

print ("============================================ ")
print ("DAFTAR SEATSDB")
for x in seats_collection.find().sort("seat",1):
  print(x)
  #cara 2 : print ("data : %s" % x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB")
for x in audit_collection.find():
                  print(x)
Analisa : menampilkan isi collection seats , payments dan audit setelah melakukan transaksi. Dibatalkan otomatis karena terjadi write conflik.


Perbaikan Soal 3 :
Kasus : Pembatalan Insert Seat jika nomor seats telah ditemukan !.

Sourcecode Program :

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)




Hasil Running Program :
Di Windows :

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)

5 Contoh Program Menggunakan Session di MongoDB Dengan Python (Pymongo)


Analisa Program :
Program diatas berfungsi untuk menambahkan data seat 1A pada collection seats pada database SEATSDB dan collection payments pada database PAYMENTSDB. Serta mengupdate collection audit sesuai jumlah collection setelah ditambahkan. Jika seat 1 A telah ada di database maka transaksi akan dibatalkan (abort_commit) tapi jika seat 1A belum terdapat di database maka seat 1A dapat ditambahkan.
#import library yang dibutuhkan
from argparse import ArgumentParser
import datetime
import time
import sys
import random
import pymongo
import pymongo.errors
from pymongo import MongoClient
import urllib.parse
Analisa : pertama adalah import librari yang akan digunakan didalam program

#membuat koneksi ke mongo DB
parser = ArgumentParser()
parser.add_argument("--host", default="mongodb://localhost:27100,localhost:27101,localhost:27102/?replicaSet=txntest&retryWrites=true",
help="MongoDB URI [default: %(default)s]")
parser.add_argument("--usetxns", default=False, action="store_true", help="Use transactions [default: %(default)s]")
parser.add_argument("--delay", default=1.0, type=float,
help="Delay between two insertion events [default: %(default)s]")
parser.add_argument("--iterations", default=0, type=int, help="Run  N iterations. O means run forever")
parser.add_argument("--randdelay", type=float, nargs=2,
help="Create a delay set randomly between the two bounds [default: %(default)s]")
args = parser.parse_args()
Analisa : setelah import library selanjutnya adalah membuat koneksi mongo DB. Terdapat 3 server localhost dengan port 27100, 27101, dan 27101

client = pymongo.MongoClient(host=args.host)
seatsdb = client["SEATSDB"]
paymentsdb = client["PAYMENTSDB"]
auditdb = client[ "AUDITDB"]
payments_collection = paymentsdb["payments"]
seats_collection = seatsdb["seats"]
audit_collection = auditdb["audit"]
Analisa : setelah terkoneksi dengan server selanjutnya mengkoneksikan ke database SEATSDB, PAYMENTSDB, DAN AUDITDB.

x = seats_collection.count()
Analisa : membuat variable x untuk menghitung jumlah dokumen dalam collection seat

audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : membuat update isi database audit

price = random.randrange(200, 500, 10)
Analisa : membuat perintah untuk mengacak isi price

seatno = "1A"
flightno = "EI178"
Analisa : membuat variabel yang akan menyimpan memuat data seat dan flight yang akan di tambahkan.

session1 = client.start_session()
Analisa : membuat session 1

session1.start_transaction()
Analisa : memulai session 1

#fungsi insert (one / many)
seats_collection.insert_one({"flight_no":" flightno ", "seat":"seatno", "date" : datetime.datetime.utcnow()}, session=session1)
payments_collection.insert_one({"flight_no":" flightno ", "seat":"seatno", "date" : datetime.datetime.utcnow(), "price" : price}, session=session1)
Analisa : melakukan insert nilai variabel seatno dan flightno ke collection seats dan payments dengan menggunakan sesi 1

print ("============================================ ")
print ("DAFTAR SEATSDB SEBELUM COMMIT")
for x in seats_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB SEBELUM COMMIT")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB SEBELUM COMMIT")
for x in audit_collection.find():
  print(x)

print ("============================================ ")
Analisa : menampilkan isi collection seats, payments dan audit sebelum sesi di commit.

#seleksi kondisi jika seat telah ada maka transaksi dibatalkan.
y = seats_collection.count({"seat":seatno, "flight_no":flightno})
if y>0:
 session1.abort_transaction()
 print(" ")
 print ("==============================================================" )
 print ("TRANSAKSI DIBATALKAN KARENA SEAT : ",seatno," SUDAH DIPESAN!!!!" )
 print ("==============================================================" )
 print(" ")
else:
 session1.commit_transaction()
 print(" ")
 print ("==============================================================" )
 print ("SEAT TELAH DITAMBAHKAN" )
 print ("==============================================================" )
 print(" ")
Analisa : seleksi kondisi untuk menentukan apakan transaksi dapat disimpan atau tidak. Dalam contoh hasil program diatas telah terdapat data seat 1 A. Jadi ketika program dijalankan program menghitung jumlah seat 1A dan hasilnya tidaklah 0. Maka transaksi akan dibatalkan.

x = seats_collection.count()
audit_collection.update_one({ "audit" : "seats"}, {"$set":{"count" : x}})
Analisa : melakukan update x untuk menghitung jumlah dokumen seats dan melakukan update pada collection audit.

print ("============================================ ")
print ("DAFTAR SEATSDB")
for x in seats_collection.find().sort("seat",1):
  print(x)
  #cara 2 : print ("data : %s" % x)

print ("============================================ ")
print ("DAFTAR PAYMENTSDB")
for x in payments_collection.find().sort("seat",1):
  print(x)

print ("============================================ ")
print ("DAFTAR AUDITDB")
for x in audit_collection.find():
                  print(x)
Analisa : menampilkan isi collection seats , payments dan audit setelah melakukan transaksi.



Kesimpulan :

• MongoDB mendukung berbagai bahasa pemrograman: RUBY, PYTHON, JAVA, C ++, PHP, C#.
• Pymongo Adalah library yang menjembatani MongoDB dan Python. sehingga perintah-perintah dalam mongoDB dapat di tranlasikan dalam python.
• Di dalam mongoDB dapat dibuat banyak sesi sekaligus. Untuk memulai transaksi harus dimulai dengan start_transaction() dan untuk menyimpan hasil transaksi dapat menggunakan commit_transaction() sedangkang untuk mendiscard hasil transaksi dapat dengan abort_transaction().
• Sesi-sesi yang diciptakan dalam mongoDB dapat melakukan read dan write secara bersamaan tanpa mengganggu satu sama lain.
• Apabila terdapat 2 sesi yang memiliki write konflik. Misal menghapus 1 objek yang sama. Maka transaksi akan otomatis dibatalkan.


Referensi :

• http://api.mongodb.com/python/current/api/pymongo/client_session.html

• http://api.mongodb.com/python/current/api/pymongo/client_session.html#pymongo.client_session.ClientSession.start_transaction

• http://api.mongodb.com/python/current/api/pymongo/client_session.html#pymongo.client_session.TransactionOptions

• http://api.mongodb.com/python/current/api/pymongo/database.html

• http://api.mongodb.com/python/current/api/pymongo/read_concern.html#pymongo.read_concern.ReadConcern

• http://api.mongodb.com/python/current/api/pymongo/write_concern.html

• http://api.mongodb.com/python/current/api/pymongo/write_concern.html#pymongo.write_concern.WriteConcern

• http://api.mongodb.com/python/current/api/pymongo/write_concern.html#pymongo.write_concern.WriteConcern

• http://api.mongodb.com/python/current/tutorial.html#getting-a-database

• http://www.w3big.com/id/mongodb/mongodb-replication.html

• https://askubuntu.com/questions/766131/set-static-ip-ubuntu

• https://docs.mongodb.com/manual/installation/

• https://docs.mongodb.com/manual/reference/read-concern/#read-concern-levels

• https://docs.mongodb.com/manual/reference/write-concern/

• https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

• https://docs.mongodb.com/master/core/transactions/?_ga=2.5877171.1029531569.1543461561-206042806.1536800450

• https://dzone.com/articles/mongodb-transactions-your-very-first-transaction-w

• https://dzone.com/articles/multi-document-transactions-on-mongodb-40

• https://github.com/jdrumgoole/pymongo-transactions

• https://linuxize.com/post/how-to-install-pip-on-ubuntu-18.04/

• https://programwithus.com/learn-to-code/Pip-and-virtualenv-on-Windows/

• https://servernesia.com/2977/cara-install-python-linux/

• https://solarianprogrammer.com/2017/06/30/building-python-ubuntu-wsl-debian/

• https://stackoverflow.com/questions/45072617/default-values-of-path-variables-in-windows-10

• https://stackoverflow.com/questions/51705212/how-to-get-a-database-and-collection-from-mongodb-clientsession

• https://www.mongodb.com/blog/post/introduction-to-mongodb-transactions-in-python

• https://www.mongodb.com/transactions

• https://www.petanikode.com/python-list/

• https://www.tecmint.com/command-line-web-browsers/