Skip to content

Commit e259606

Browse files
committed
Added lessons
1 parent 789bf59 commit e259606

9 files changed

Lines changed: 68 additions & 8 deletions

File tree

Lesson_03/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ edition = "2021"
55

66
[dependencies]
77
chrono = "0.4.40"
8-
rand = "0.9.0"
9-
serde = { version = "1.0.219", features = ["derive"] }
8+
#rand = "0.9.0"
9+
#serde = { version = "1.0.219", features = ["derive"] }
1010
sysinfo = "0.33.1"

Lesson_03/src/main.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ fn main() {
3636
let mut cpu_usages = Vec::new();
3737

3838
// Sürekli metrik çekeceğimiz için bir sonsuz döngü işimizi görebilir
39-
//TODO@buraksenyurt loop gibi sonsuz döngü yerine komut satırı argümanları ile çalıştıralım
4039
/*
4140
cargo run -- 100 2 cpu json
4241
(2 saniyede bir CPU kullanımlarından toplam 100 tane log çek ve json formatında yaz)
@@ -59,14 +58,16 @@ fn main() {
5958
/*
6059
Plan :
6160
62-
CPU kullanım değeri %50 ile %75 arasında olanlar için log seviye HEAT
63-
CPU kullanım değeri %70 ile %90 arasında olanlar için log seviye BURN
61+
CPU kullanım değeri %0 ile %50 arasında olanlar için log seviyesi NORMAL
62+
CPU kullanım değeri %50 ile %75 arasında olanlar için log seviye WARM
63+
CPU kullanım değeri %70 ile %90 arasında olanlar için log seviye BURNING
6464
CPU kullanım değeri %90 üstü olanlar için log seviye ALARM
65-
diğer CPU kullanım değerleri için log seviye NORMAL
65+
diğer CPU kullanım değerleri için log seviye UNKNOWN
6666
6767
Bu planı uygulamak için pattern matchin'i aşağıdaki gibi kullandık
6868
6969
*/
70+
7071
for (idx, cpu) in system.cpus().iter().enumerate() {
7172
// print!(" {} {:2.2}%", idx, cpu.cpu_usage());
7273
let description = format!("{} ({:2.2}%)", idx, cpu.cpu_usage());

Lesson_04/src/case_00.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
pub fn run() {
2+
// message isimli değişken String türünden. (Heap üzerinde allocation söz konusu)
3+
let message = String::from("Houston! We have a problem");
4+
do_something(message); // Burada message değişkenin sahipliği (ownership) do_something metoduna geçer
5+
// Uyarı! Hatayı görmek için aşağıdaki satırı etkinleştirelim
6+
// println!("{}", message); // do_something içerisinde drop edilmiş olan bellek bölgesini message işaret etmeye devam edebilir
7+
// message değişkenin sahipliği do_something'e geçtiği için value borrowed here after move hatası alınır
8+
}
9+
10+
fn do_something(input: String) {
11+
println!("Incoming message; '{}'", input);
12+
// Bir değişkenin ömrü tanımlandığı scope sonlanınca biter(default)
13+
// do_something fonksiyonundan çıkılırken input değişkeni bellekten düşürülür(drop)
14+
}

Lesson_04/src/case_01.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
pub fn run() {
2+
let message = "Houston! We have a problem";
3+
do_something(message); // Burada fonksiyon veri değil de veriyi referans eden değişken taşınır
4+
println!("{}", message);
5+
}
6+
7+
fn do_something(input: &str) {
8+
println!("Incoming message; '{}'", input);
9+
}

Lesson_04/src/case_02.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
pub fn run() {
2+
let message = String::from("Houston! We have a problem");
3+
do_something(&message); // & sebebiyle verinin kendisini değil referansını gönderiyoruz
4+
println!("{}", message);
5+
}
6+
7+
fn do_something(input: &String) {
8+
println!("Incoming message; '{}'", input);
9+
} // scope sonu, sadece kopylanan referans düşer, run fonksiyonundaki orjinal veri yaşamaya devam eder

Lesson_04/src/case_03.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
pub fn run() {
2+
let average = 3.14; // f64 stack bazlı bir primitive type.
3+
calculate(average); // Burada sahiplik el değiştirirken verinin kopyalanarak taşınması söz konusudur
4+
println!("Average value : {}", average); // Bu nedenle dönüşte average kullanılmaya devam eder
5+
// Dolayısıyla burada Value used after being moved [E0382] hatası söz konusu olmaz
6+
}
7+
8+
fn calculate(input: f64) {
9+
println!("Incoming message; '{}'", input);
10+
}

Lesson_04/src/main.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
/*
2+
Scope, Ownership, Borrowing, Lifetimes
3+
Resource Acquisition is Intialization (RAII)
4+
*/
5+
mod case_00;
6+
mod case_01;
7+
mod case_02;
8+
mod case_03;
9+
110
fn main() {
2-
println!("Hello, world!");
11+
// case_00::run(); // value borrowed here after move hatası
12+
// case_01::run(); // &str kullanımı sebebiyle case 00'daki ihlal oluşmaz
13+
// case_02::run();
14+
case_03::run();
315
}

collector/src/terminal.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ use std::env;
44
pub fn parse() -> Result<Command, String> {
55
let args: Vec<String> = env::args().collect();
66
// println!("{:?}", args);
7+
8+
// early return
79
if args.len() < 2 {
810
return Err("Wrong number of arguments".to_string());
911
}

collector/src/view.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ pub fn print_cpu(system: &mut System) {
1919
}
2020

2121
pub fn show_usages() {
22+
//todo@buraksenyurt json veya xml formatta çıktı işlevi ekleyelim
2223
println!(
2324
r"
2425
A tiny system metrics collector about
@@ -29,10 +30,12 @@ pub fn show_usages() {
2930
kind : cpu or mem
3031
count : Number of total metric
3132
period : Number of periodic metric in seconds
33+
format : Output format (json / xml)
3234
3335
Usages :
3436
35-
-k cpu -c 100 -p 2 (Get cpu usage every 2 seconds for 100 times)
37+
kind cpu count 100 period 2 format json
38+
(Get cpu usage every 2 seconds for 100 times and save all into json/xml file)
3639
"
3740
);
3841
}

0 commit comments

Comments
 (0)