-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
273 lines (240 loc) · 10.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Muhammad Ikhwan Fathulloh - Implementasi Metode / Algoritma Teknik ke dalam Pemrograman</title>
<link rel="stylesheet" href="dist/reset.css">
<link rel="stylesheet" href="dist/reveal.css">
<link rel="stylesheet" href="dist/theme/black.css">
<!-- Theme used for syntax highlighted code -->
<link rel="stylesheet" href="plugin/highlight/monokai.css">
</head>
<body>
<div class="reveal">
<div class="slides">
<!-- Slide Introduction -->
<section data-markdown>
<textarea data-template>
## Implementasi Metode / Algoritma Teknik ke dalam Pemrograman
Halo Saya [Muhammad Ikhwan Fathulloh](https://ikhwanfathulloh.netlify.app/)
</textarea>
</section>
<!-- Slide Definisi -->
<section>
<section data-markdown>
<textarea data-template>
## Memahami Metode / Algoritma Teknik ke dalam Pemrograman
</textarea>
</section>
<section data-markdown>
<textarea data-template>
**Metode Pengembangan:**
Kerangka kerja sistematis untuk merancang, mengembangkan, dan memelihara perangkat lunak.
- **Contoh:**
- Agile: Iterasi fleksibel, fokus kolaborasi.
- Waterfall: Pendekatan linier, tahap berurutan.
- Scrum: Sprint pendek, hasil terukur.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
**Metode Teknik:**
Pendekatan spesifik atau algoritma untuk menyelesaikan masalah teknis.
- **Contoh:**
- Algoritma Sorting: Quick Sort, Merge Sort.
- Neural Networks: Memodelkan pola kompleks.
- Backpropagation: Pelatihan model jaringan saraf.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
#### Perbedaan Utama
| **Aspek** | **Metode Pengembangan** | **Metode Teknik** |
|--------------|------------------------------|----------------------------|
| **Definisi** | Kerangka kerja sistem. | Algoritma/teknik spesifik. |
| **Fokus** | Proses & tahapan. | Solusi teknis masalah. |
| **Tujuan** | Efisiensi & manajemen waktu. | Solusi efisien. |
| **Contoh** | Agile, Scrum, Waterfall. | Sorting, Neural Networks. |
</textarea>
</section>
</section>
<!-- Slide Macam-macam -->
<section>
<section data-markdown>
<textarea data-template>
## Macam-macam Metode / Algoritma Teknik dalam Pemrograman
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### 1. **Metode Struktur Data**
- **FIFO**: Elemen pertama masuk, pertama keluar. Contoh: Queue.
- **LIFO**: Elemen terakhir masuk, pertama keluar. Contoh: Stack.
- **Queue**: Antrean data dengan operasi enqueue dan dequeue.
- **Priority Queue**: Queue dengan prioritas. Contoh: Sistem antrian rumah sakit.
- **Graph**: Struktur node dan edge. Contoh: Pencarian rute.
- **Tree**: Struktur hierarki. Contoh: Struktur folder.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### 2. **Metode Keamanan**
- **RBAC**: Akses berdasarkan peran pengguna.
- **Kriptografi**: Enkripsi untuk melindungi data.
- **Enkripsi & Dekripsi**: Mengubah dan mengembalikan data. Contoh: HTTPS.
- **Hashing, Digital Signature**: Teknik keamanan tambahan.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### 3. **Metode Pola Desain Pemrograman**
- **SOLID**: Prinsip desain kode.
- **SRP**: Tanggung jawab tunggal.
- **OCP**: Kode terbuka untuk ekstensi.
- **LSP**: Penggantian objek turunan.
- **ISP**: Antarmuka spesifik.
- **DIP**: Ketergantungan terbalik.
- **Design Repository Service**: Pemisahan logika akses data dan bisnis.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### 4. **Metode Numerik**
- **Rumus Matematika**: Metode numerik untuk menghitung solusi.
- **Finite Difference, Euler's Method**: Teknik numerik lainnya.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### 5. **Metode Kecerdasan Buatan**
- **Data Science**: Analisis data untuk prediksi dan klasifikasi.
- **Computer Vision**: Pengolahan gambar. Contoh: OCR.
- **NLP**: Pengolahan teks. Contoh: Chatbot.
- **Reinforcement Learning**: Pembelajaran berbasis penghargaan.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### 6. **Metode Web3**
- **Blockchain**: Struktur data terdesentralisasi. Contoh: Cryptocurrency.
- **Smart Contract**: Program otomatis di blockchain. Contoh: DeFi.
- **DApps**: Aplikasi terdesentralisasi. Contoh: NFT Marketplace.
- **Wallet Integration**: Pengelolaan kunci pribadi. Contoh: MetaMask.
- **NFT**: Aset digital unik di blockchain.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### 7. **Metode Embedded System**
- **RTOS**: Sistem operasi real-time.
- **Fuzzy Logic**: Pengambilan keputusan berbasis ketidakpastian.
- **PID**: Pengendalian sistem dinamis.
- **Machine Learning on Edge Devices**: Pembelajaran mesin pada perangkat terbatas.
- **Neural Network on FPGA**: Jaringan saraf pada perangkat keras untuk latensi rendah.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### **Dan masih banyak lagi sesuai dengan definisi Metode Teknik**
</textarea>
</section>
</section>
<!-- Slide Implementasi -->
<section>
<section data-markdown>
<textarea data-template>
## Menggabungkan Metode / Algoritma Teknik ke Aplikasi
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Monolith (Metode / Algoritma Teknik)
![Monolith](https://raw.githubusercontent.com/Muhammad-Ikhwan-Fathulloh/Implementation-of-Techniques-into-Programming/refs/heads/main/Assets/Diagram/Metode-Teknik-Monolith.png)
Monolith adalah sebuah arsitektur perangkat lunak di mana seluruh komponen dan fungsionalitas aplikasi digabung menjadi satu kesatuan tunggal. Semua bagian aplikasi dijalankan dalam satu proses dan dipaketkan sebagai satu entitas.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Proses Menggabungkan Metode / Algoritma Teknik
1. **Implementasi dalam Basis Kode**: Algoritma ditulis dalam basis kode monolith.
2. **Integrasi Modul**: Algoritma dipanggil oleh modul lain.
3. **Testing dan Deployment**: Aplikasi diuji dan di-deploy bersama algoritma.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Microservice (Metode / Algoritma Teknik)
![Microservice](https://raw.githubusercontent.com/Muhammad-Ikhwan-Fathulloh/Implementation-of-Techniques-into-Programming/refs/heads/main/Assets/Diagram/Metode-Teknik-Microservice.png)
Microservice adalah arsitektur perangkat lunak yang memecah aplikasi menjadi layanan-layanan kecil yang berdiri sendiri. Metode atau algoritma teknik diisolasi dalam layanan terpisah untuk efisiensi dan skalabilitas.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Proses Menggabungkan Metode / Algoritma Teknik
1. **Pengembangan Terpisah**: Algoritma diimplementasikan dalam microservice.
2. **API Endpoint**: Microservice menyediakan API untuk permintaan.
3. **Integrasi dengan Aplikasi**: Aplikasi utama memanggil API microservice.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
### Monolith + Microservice (Metode / Algoritma Teknik)
![Monolith + Microservice](https://raw.githubusercontent.com/Muhammad-Ikhwan-Fathulloh/Implementation-of-Techniques-into-Programming/refs/heads/main/Assets/Diagram/Metode-Teknik-Monolith-Microservice.png)
Pendekatan hybrid yang menggabungkan arsitektur monolith dengan microservice. Metode atau algoritma teknik dipisahkan ke dalam layanan microservice, sementara aplikasi utama tetap monolith.
</textarea>
</section>
<section data-markdown>
<textarea data-template>
#### Proses Menggabungkan Metode / Algoritma Teknik
1. **Identifikasi Algoritma Berat**: Tentukan algoritma yang sumber daya tinggi.
2. **Isolasi ke Microservice**: Implementasikan algoritma dalam microservice.
3. **API Endpoint**: Microservice menyediakan API.
4. **Integrasi API ke Monolith**: Aplikasi monolith memanggil microservice.
5. **Kembalikan Data**: Hasil dari microservice dikembalikan ke aplikasi.
</textarea>
</section>
</section>
<!-- Slide Live Coding -->
<section data-markdown>
<textarea data-template>
## Gaskeun <span style="color: red;">Live Coding</span> lur!
</textarea>
</section>
<!-- Slide Conclusion -->
<section data-markdown>
<textarea data-template>
## Kesimpulan
**Metode Pengembangan** berfokus pada pengelolaan dan alur kerja proyek perangkat lunak secara keseluruhan, sementara **Metode Teknik** lebih berfokus pada penerapan teknik atau algoritma tertentu untuk menyelesaikan masalah dalam pengembangan atau analisis data. Keduanya saling melengkapi dalam menciptakan solusi perangkat lunak yang efisien dan efektif.
</textarea>
</section>
<!-- Slide Thanks -->
<section data-markdown>
<textarea data-template>
## Terima Kasih
<span style="color: red;">Udah siap berkarya?</span>
[Dokumentasi](https://github.com/Muhammad-Ikhwan-Fathulloh/Implementation-of-Techniques-into-Programming)
</textarea>
</section>
</div>
</div>
<script src="dist/reveal.js"></script>
<script src="plugin/notes/notes.js"></script>
<script src="plugin/markdown/markdown.js"></script>
<script src="plugin/highlight/highlight.js"></script>
<script>
// More info about initialization & config:
// - https://revealjs.com/initialization/
// - https://revealjs.com/config/
Reveal.initialize({
hash: true,
slideNumber: (slide) => {
// Ignore numbering of vertical slides
return [Reveal.getIndices(slide).h];
},
// Learn about plugins: https://revealjs.com/plugins/
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
});
</script>
</body>
</html>