Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions Part 13 - Preparation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
PERTEMUAN DARK LORD
Halo, akhirnya kita ketemu. kalian excited kan belajar sama @Dark Lord. Gua yang bakal mentorin kalian sampe phase 3, jadi siap siap kalian bakal kangen banget sama @Harkon | Helper .
karna harkon udah ga bisa bantu kalian lagi di stage ini hahahaha 😈

Sesampainya kalian disini, berarti kalian sudah menyelesaikan Live Code Phase 0 dan dinyatakan lulus oleh @Harkon | Helper.
Congratss buat kalian semua yang sampai stage ini 🔥 🔥

Phase 0 itu tidak mudah, gua tau betul perjuangan kalian untuk handle quiz quiz konyol di area phase 0, belum lagi stuck ga nemu nemu jawaban, burn out, kepala pusing, rasa mau muntah stonksss, makanya kalian harus bangga dengan apa yang kalian lalui di phase ini. kalian sudah dapat role @Bisa Ngoding dan kita anggap sudah punya bekal fundamental logic yang lumayan kuat.

Kita expect kalian tidak lagi melakukan error error kecil seperti typo, infinte loop, type undefined, lupa save code, posisi indentasi dan segala macam newbie error. Karna di phase 1 kalian tidak punya waktu banyak untuk handle error error kecil seperti itu.
dan juga di phase 1 kalian bakal lebih mandiri, ga seperti diphase 0 yang masih di guide @Harkon | Helper dan dibantu secara flow sampai codenya. Kalian akan lebih explore sendiri dan membaca dokumentasi dari setiap materi yang ada (inilah proses awakening kalian di phase 1).
EXPLORE ADALAH HAL YANG PALING KUAT DI DUNIA PROGRAMMING
Skill Explore ini bakal ke unlock di phase 1, dan kalian akan pake ini berkali kali sebagai senjata di RPN dari phase 1 - 3.

NEXT STEP
Sebenarnya dari bekal Phase 0 kalian sudah bisa hajar tugas tugas perkuliahan dengan mudah, karena bahasa pemrograman yang lain syntax nya ga jauh beda. kalian cukup cek dokumentasi bahasa yang lain harus nya langsung mengerti untuk mengerjakan soal dengan bahasa tersebut.

Dan juga kalian sudah ready untuk ngambil path apapun, kalau bosan dengan self learning kalian boleh mencoba bootcamp high level seperti Hacktiv8 or purwadhika, atau bagi yang kuliah bisa mencoba google bangkit & Apple Academy saat semester 6-7.
(alias mending belajar di RPN 👨🏻‍🌾 )

NO FLEXING -> TEACHING HABBIT
Kalian akan merasa lebih jago dari pada newbie newbie, dari tim sepuh RPN kami mohon kepada kalian yang sudah menempuh level ini, ketimbang flexing atau memandang rendah orang lain akan lebih baik mengajar dan membantunya agar ilmu ini bermanfaat.

ADA APA SAJA DI PHASE 1 ?
Di phase 1 kalian akan belajar tentang backend development. Inilah mengapa kalian awal belajar di RPN memakai Node Js bukan memakai javascript. karena :

JavaScript: Ini adalah bahasa pemrograman yang digunakan untuk membuat interaksi dinamis di dalam browser. Awalnya diciptakan untuk menjadikan halaman web lebih interaktif dengan melakukan perubahan pada elemen HTML dan CSS setelah halaman selesai dimuat.

sedangkan Node Js : Ini adalah lingkungan runtime yang dibangun di atas mesin V8 JavaScript yang dikembangkan oleh Google. Node.js memungkinkan Anda menjalankan JavaScript di luar lingkungan browser, yaitu pada server. Dengan Node.js, Anda dapat membangun aplikasi berbasis server, mengelola berkas, dan berbagai tugas lainnya.

Jadi Node Js itu bahasa yang di gunakan untuk backend development seperti bahasa backend lain kayak PHP, Java, Golang, Rust, Ruby. Kalian harus sudah mengerti disini bahwa html , css adalah bukan bahasa pemrograman okey.

Karena kalian sudah familiar dengan runtime NodeJs maka kita bakal explore lebih banyak power NodeJs ini di Phase 1 dan memakai berbagai macam senjatanya NodeJs buat Backend Development.





APA ITU BACKEND DEVELOPMENT ?

Backend development adalah proses pengembangan dan pembangunan komponen dari sebuah aplikasi perangkat lunak yang berfokus pada sisi server. Ini melibatkan pembuatan dan pengelolaan bagian aplikasi yang bertanggung jawab untuk pemrosesan data, logika bisnis, interaksi dengan basis data, dan penyediaan layanan kepada klien atau frontend.

Pada dasarnya, ada dua komponen utama dalam pengembangan perangkat lunak:

Frontend (Sisi Klien): Ini adalah bagian aplikasi yang diakses oleh pengguna akhir. Ini termasuk antarmuka pengguna (UI), interaksi pengguna, dan tampilan yang terlihat oleh pengguna di browser atau aplikasi.

Backend (Sisi Server): Ini adalah bagian aplikasi yang berada di server dan bertanggung jawab atas logika bisnis, pemrosesan data, interaksi dengan basis data, otorisasi, otentikasi, dan berbagai tugas lainnya yang tidak terlihat oleh pengguna akhir tetapi penting untuk menjalankan aplikasi dengan benar.

Tugas utama dalam backend development meliputi:

Pengembangan Server: Membangun server web atau aplikasi menggunakan teknologi seperti Node.js, Python, Java, Ruby, atau bahasa backend lainnya.

Pemrosesan Data: Memproses permintaan dari klien, menjalankan logika bisnis, memanipulasi data, dan menghasilkan respons yang tepat.

Interaksi Basis Data: Berkomunikasi dengan basis data (seperti MySQL, PostgreSQL, MongoDB) untuk menyimpan, mengambil, dan mengelola data aplikasi.

Keamanan: Mengimplementasikan otorisasi (pengaturan izin), otentikasi (verifikasi identitas pengguna), dan langkah-langkah keamanan lainnya untuk melindungi data dan sistem.

API (Application Programming Interface): Membangun dan mengelola API yang memungkinkan frontend dan aplikasi lain berkomunikasi dengan backend.

Pengelolaan Permintaan: Mengelola lalu lintas permintaan dari pengguna, memastikan skala dan kinerja yang baik.

Caching: Menggunakan teknik caching untuk mempercepat akses ke data dengan menyimpan hasil permintaan sebelumnya.

Manajemen Sesi: Melacak sesi pengguna, baik melalui cookie, token, atau mekanisme lainnya.

Backend development sangat penting karena bertanggung jawab atas pengelolaan data, keamanan, dan logika bisnis yang mendukung aplikasi. Frontend dan backend harus bekerja bersama untuk memberikan pengalaman pengguna yang mulus dan fungsional.




BUTUH PERSIAPAN APA SEBELUM PHASE 1 ?

Ada beberapa hal yang harus kita lakukan dulu sebelum belajar di phase 1.

JavaScript ES6 : Karena di phase 1 kita bakal memakai teknologi modern, maka kita harus upgrade syntax kita juga untuk adaptasi build in function terbaru.

Introduction Web Development : Phase 1 ini akan berhubungan dengan Phase 2, makanya kita perlu tahu sedikit tentang web development dasar. kita akan belajar sedikit tentang Html, Css dan Javascript untuk membuat website interaktif sederhana. dan berkenalan dengan DOM Javascript.

English (reading) : Ini ga wajib, tapi kalo kalian punya skill english reading yang lumayan kuat akan sangat membantu di phase 1. Karena di phase 1 kalian sering explore berbagai dokumentasi - dokumentasi pemrograman dan itu biasanya menggunakan english.
84 changes: 84 additions & 0 deletions Part 14 - JavaScript ES6/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
ES6 (ECMAScript 2015)
adalah versi dari bahasa pemrograman JavaScript yang menghadirkan banyak fitur baru dan peningkatan sintaksis. Salah satu peningkatan utama dalam ES6 adalah diperkenalkannya arrow function yang sangat bermanfaat dalam memanipulasi array.

Berikut adalah beberapa fitur ES6 dan contoh penggunaan array function:

Arrow Functions
Arrow functions adalah cara singkat untuk mendefinisikan fungsi dalam JavaScript. Mereka memiliki sintaks yang lebih pendek dan lebih mudah dibaca daripada fungsi biasa.

Contoh:
// Fungsi biasa
function multiply(a, b) {
return a * b;
}

// Arrow function
const multiply = (a, b) => a * b;


Let dan Const
let dan const adalah pengganti var dalam ES6. let digunakan untuk mendeklarasikan variabel yang nilainya dapat diubah, sedangkan const digunakan untuk variabel yang nilainya tidak bisa diubah setelah dideklarasikan.

Contoh:
let x = 5;
x = 10; // Nilai x bisa diubah

const y = 20;
// y = 30; // Akan menyebabkan error, karena y nilainya tidak bisa diubah


Template Literals
Template literals memungkinkan Anda menyisipkan variabel atau ekspresi dalam string dengan menggunakan tanda backtick (`). Ini membuat penggabungan string dan variabel lebih mudah dibaca.

Contoh:
const name = 'John';
const age = 25;

const message = `Nama saya ${name} dan saya berusia ${age} tahun.`;
console.log(message);


Spread Operator dan Rest Parameter
Spread operator (...) dapat digunakan untuk menguraikan elemen array atau objek menjadi beberapa elemen terpisah. Rest parameter juga menggunakan sintaks yang serupa untuk mengumpulkan beberapa argumen menjadi sebuah array.

Contoh:
const numbers = [1, 2, 3];
const newArray = [...numbers, 4, 5]; // Menambahkan elemen pada array

function sum(...args) {
return args.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3)); // Output: 6


Array Methods (Array Function)
Beberapa method baru diperkenalkan dalam ES6 untuk memanipulasi array dengan lebih efisien.

Contoh:
const numbers = [1, 2, 3, 4, 5];

const doubled = numbers.map(num => num * 2); // Menghasilkan [2, 4, 6, 8, 10]

const evenNumbers = numbers.filter(num => num % 2 === 0); // Menghasilkan [2, 4]

const sum = numbers.reduce((total, num) => total + num, 0); // Menghasilkan 15


Itu adalah beberapa fitur ES6 beserta contoh array function-nya. Masih ada banyak lagi Function" ES6, nah disini kalian sudah mulai belajar habbit explore (phase 1 habbit) . Coba pelajarin ES6 lainnya selain dari materi ini.

EXPLORE RESOURCES:
W3SCHOOL : https://www.w3schools.com/js/js_es6.asp
javatpoint : https://www.javatpoint.com/es6
MDN : https://developer.mozilla.org/en-US/docs/Web/JavaScript
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
Image

www.javatpoint.com
ES6 Tutorial - javatpoint
ES6 Tutorial with What is ES6, History of ES6, ES6 Versions, ES6 Loops, Environment Setup, ES6 Syntax, ES6 Operators, ES6 Variables, ES6 Functions, ES6 Cookies, ES6 Strings, ES6 Math etc.
JavaScript | MDN
JavaScript (JS) is a lightweight interpreted (or just-in-time compiled) programming language with first-class functions. While it is most well-known as the scripting language for Web pages, many non-browser environments also use it, such as Node.js, Apache CouchDB and Adobe Acrobat. JavaScript is a prototype-based, multi-paradigm, single-threade...
JavaScript | MDN


https://youtube.com/playlist?list=PLFIM0718LjIUGpY8wmE41W7rTJo_3Y46-
77 changes: 77 additions & 0 deletions Part 16 - Web Development/Fucking Number Pattern/soal_1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/*
================
MISSING NUMBER
================
description: Sebuah fungsi untuk mencari angka yang hilang berdasarkan pola dari board atau
papan yang tersedia. Fungsi akan mengembalikan nilai sebuah array yang berisi
angka-angka yang hilang

examples:
INPUT =
[
[ 7 ,' ', 5 ],
[' ', 8 , 9 ]
[ 1 ,' ',' ']
]

ASUMSI PADA PAPAN SUDAH TERDAPAT RANGE TERBESAR DAN TERKECIL YAITU 1 DAN 9 SEHINGGA
OUTPUT:
[ 2, 3, 4, 6]

PADA MASING-MASING TEST CASE SUDAH TERDAPAT RANGE TERBESAR DAN TERKECIL
*/

function missingNum(arr) {
//code here
const flattenedArray = arr.flat(); // Flatten the 2D array
console.log("flattenedArray =>", flattenedArray);
const minNum = Math.min(
...flattenedArray.filter((num) => typeof num === "number")
); // Find the minimum number
const maxNum = Math.max(
...flattenedArray.filter((num) => typeof num === "number")
); // Find the maximum number
console.log("minNum", minNum);
console.log("maxNum", maxNum);
const missingNumbers = [];

for (let i = minNum; i <= maxNum; i++) {
if (!flattenedArray.includes(i)) {
console.log("i", i);
missingNumbers.push(i);
}
console.log("missingNumbers", missingNumbers);
}

return missingNumbers;
}

console.log(
missingNum([
[3, " ", 5],
[1, " ", 7],
[9, " ", " "],
])
); // [ 2, 4, 6, 8 ]
console.log(
missingNum([
[2, " "],
[" ", 5],
])
); // [ 3, 4 ]
console.log(
missingNum([
[11, " ", 13],
[17, " ", 19],
[" ", 16, " "],
])
); // [ 12, 14, 15, 18 ]
console.log(
missingNum([
[3, " ", 5, 15],
[1, " ", 7, 13],
[9, " ", " ", 12],
[" ", 16, " ", " "],
])
); // [ 2, 4, 6, 8, 10, 11, 14 ]
console.log(missingNum([])); // []
104 changes: 104 additions & 0 deletions Part 16 - Web Development/Fucking Number Pattern/soal_2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/**
Square Number

Diberikan sebuah function squareNumber dimana menerima inputan berupa number.
Function ini akan mengembalikan array multidimensi yang isi value tersebut secara
proses menyerupai `board snakes and ladders` (angka 1 dimulai dari KOLOM ATAS) TAPI
alih-alih menuliskan value angka kamu akan menuliskan simbol/karakter dengan syarat sebagai berikut:
- jika value merupakan bilangan genap maka diganti menjadi karakter 'o'
- jika value merupakan bilangan ganjil maka diganti menjadi karakter 'x'
- jika value merupakan kelipatan 4 maka diganti menjadi simbol '#'

Contoh 1:
==========
input: 3
proses:
[
[ 1, 2, 3 ],
[ 6, 5, 4 ],
[ 7, 8, 9 ]
]
output:
[
[x, o, x],
[o, x, #],
[x, #, x]
]

Contoh 2:
==========
input: 4
proses:
[
[ 1, 2, 3, 4 ],
[ 8, 7, 6, 5 ],
[ 9, 10, 11, 12 ],
[ 16, 15, 14, 13 ]
]
output:
[
[ x, o, x, # ],
[ #, x, o, x ],
[ x, o, x, # ],
[ #, x, o, x ]
]
NOTE:
- INPUT PARAMETER MINIMAL 3, JIKA KURANG DARI 3 MAKA RETURN 'Minimal input adalah 3'
**/

function squareNumber(num) {
//code here
if (num < 3) {
return "Minimal input adalah 3";
}

const board = [];
let counter = 1;

for (let i = 0; i < num; i++) {
const row = [];
for (let j = 0; j < num; j++) {
row.push(counter);
counter++;
}
board.push(row);
console.log('row',row);
}

for (let i = 0; i < num; i++) {
if (i % 2 !== 0) {
console.log('reverse',board[i].reverse());
board[i] = board[i].reverse();
}

for (let j = 0; j < num; j++) {
if (board[i][j] % 4 === 0) {
board[i][j] = "#";
} else if (board[i][j] % 2 === 0) {
board[i][j] = "o";
} else {
board[i][j] = "x";
}
}
}

return board;
}

console.log(squareNumber(3));
// [ [x, o, x], [o, x, #], [x, #, x] ]

console.log(squareNumber(4));
// [ [ x, o, x, # ],
// [ #, x, o, x ],
// [ x, o, x, # ],
// [ #, x, o, x ] ]

console.log(squareNumber(5));
// [ [ x, o, x, #, x ],
// [ o, x, #, x, o ],
// [ x, #, x, o, x ],
// [ #, x, o, x, # ],
// [ x, o, x, #, o ] ]

console.log(squareNumber(2)); // Minimal input adalah 3
Loading