Wednesday, August 13, 2025

Galaxy S25 Edge: Smartphone Tipis Samsung yang Laris Manis di Pasaran

Samsung kembali menarik perhatian penggemar teknologi dengan varian terbarunya, Galaxy S25 Edge. Dengan desain yang tipis namun tetap membawa spesifikasi kelas atas, smartphone ini terbukti berhasil mencatat angka penjualan mengesankan hanya dalam waktu satu bulan. Apa yang membuatnya begitu menarik? Simak ulasan lengkap berikut ini.


Bukti Nyata Kesuksesan Galaxy S25 Edge

Menurut tipster teknologi ternama dengan akun @UniverseIce, Galaxy S25 Edge berhasil terjual sebanyak 650.000 unit hanya dalam waktu satu bulan sejak peluncurannya di akhir Mei 2025. Angka ini menyumbang besar terhadap total penjualan 20 juta unit Galaxy S25 Series secara global hingga akhir Juni 2025.

Sebagai perbandingan:

  • Galaxy S25 Plus: 1,67 juta unit dalam dua bulan (rata-rata 835.000 per bulan)

  • Galaxy S25 Edge: 650.000 unit hanya dalam sebulan — sangat kompetitif

Ini membuktikan bahwa Galaxy S25 Edge bukan sekadar pelengkap, tapi mulai menjadi pemain utama di lini flagship tipis Samsung.

sumber: https://www.samsung.com/id/smartphones/galaxy-s25-edge/ 

Kenapa Galaxy S25 Edge Begitu Diminati?

Berikut beberapa faktor kunci kesuksesan S25 Edge berdasarkan berbagai sumber dan review pengguna:

  • Desain Super Tipis: Desain ramping membuatnya terlihat elegan dan nyaman digenggam.

  • Prosesor Snapdragon 8 Elite: Performa tinggi untuk gaming, multitasking, dan produktivitas.

  • Kamera 200 MP: Hasil jepretan tajam, bahkan tanpa lensa telefoto.

  • Galaxy AI dan Notifikasi Cerdas: Menambah nilai tambah pengalaman pengguna.

  • Harga Lebih Terjangkau dibandingkan Galaxy S25 Ultra, tanpa kompromi fitur inti.

Strategi Samsung mengenalkan varian Edge dengan positioning harga menengah di lini flagship terbukti sukses.


Tips Memilih Varian Galaxy S25 yang Tepat

Jika kamu sedang mempertimbangkan untuk membeli salah satu varian Galaxy S25, berikut tips singkatnya:

  • Pilih Galaxy S25 Edge jika kamu menginginkan:

    • Desain tipis dan ringan

    • Kamera flagship tanpa harga ultra-premium

    • Fitur AI dan performa tinggi dengan harga lebih rasional

  • Pilih Galaxy S25 Ultra jika kamu:

    • Butuh fitur kamera profesional (termasuk lensa telefoto dan zoom tinggi)

    • Sering menggunakan stylus (S Pen)

    • Ingin spesifikasi tertinggi dari semua lini

  • Galaxy S25 (reguler) cocok untuk kamu yang:

    • Butuh keseimbangan antara harga dan fitur

    • Tidak terlalu mementingkan kamera ekstrem atau bodi ultra tipis


Dengan pencapaian ini, besar kemungkinan Samsung akan terus mengembangkan lini Edge di masa depan, bahkan menggantikan varian Plus yang mulai kurang diminati. Kita tunggu saja seperti apa kejutan Samsung untuk Galaxy S26 tahun depan! 

How to Install Tensorflow With Cuda in GPU Windows

How to Install Tensorflow With Cuda in GPU Windows with Git Bash

- install Anaconda and Git Bash

- create environment with python 3.10.13

- Setup Conda in Git Bash

dell@AHMADROIHAN-DELL MINGW64 /e/Program-Files/anaconda3/etc/profile.d
$ echo ". ${PWD}/conda.sh" >> ~/.bashrc
dell@AHMADROIHAN-DELL MINGW64 /e/Program-Files/anaconda3/etc/profile.d
$ echo ". '${PWD}'/conda.sh" >> ~/.bashrc

- Set up Git Bash to always run as Administrator

- Click the Windows Start button and type bash.

- Right-click the found link and select Open file location.

- Right-click the menu shortcut and select Properties.

- On the Compatibility tab select Run this program as administrator.

- Reopen Git Bash in other project directory and activate environment 

dell@AHMADROIHAN-DELL MINGW64 /f/PYTHON/gpu
$ conda activate p31013
(p31013)
dell@AHMADROIHAN-DELL MINGW64 /f/PYTHON/gpu
conda install -c conda-forge cudatoolkit cudnn
.................





dell@AHMADROIHAN-DELL MINGW64 /f/PYTHON/gpu
$ pip install "tensorflow<2.11"
.................
dell@AHMADROIHAN-DELL MINGW64 /f/PYTHON/gpu
$ python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
2023-12-28 06:46:05.405858: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-12-28 06:46:07.065071: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1616] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 1654 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 3050 Laptop GPU, pci bus id: 0000:01:00.0, compute capability: 8.6
tf.Tensor(1.7581177, shape=(), dtype=float32)
(p31013)
dell@AHMADROIHAN-DELL MINGW64 /f/PYTHON/gpu
$ python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]






Monday, August 4, 2025

Dunia Segitiga: Sains, Petualangan, dan Kejutan!

📘 Masuki Dunia Segitiga: Matematika Tak Pernah Sebegini Seru!

Dari bentuk sederhana yang ada di mana-mana, segitiga menyimpan kekuatan matematika yang luar biasa. Mulai dari anatominya yang unik, hingga rumus-rumus rahasia yang mengubah cara kita memandang dunia—semua dibahas tuntas dalam eBook ini.

Bergabunglah dengan 🤖 PYT, robot pintar berbentuk segitiga, dan 👨‍🏫 Prof. TRIG, guru matematika yang penuh kejutan. Mereka akan membawa kamu menembus dimensi logika, dari Teorema Pythagoras yang legendaris, hingga bahasa universal matematika: Trigonometri.

Buku ini bukan hanya tentang belajar, tapi tentang berpetualang! Ada tantangan logika, proyek kreatif, dan misi rahasia yang akan menguji ketajaman dan kreativitasmu. Bahkan teknologi modern pun tak lepas dari peran segitiga—dijelaskan dengan cara yang bisa dipahami siapa saja!

Jika kamu ingin menguasai segitiga dan membawanya ke level yang tak terbayangkan, maka ini saatnya.

🔥 Dapatkan eBook-nya Sekarang!

Tuesday, July 29, 2025

7 Fast Ways to Burn Belly Fat for a Flat Stomach in 15 Days

Burn Belly Fat in Just 15 Days: The Smart, Science-Backed Way

If you’ve been struggling to lose stubborn belly fat—despite trying different diets or workout plans—you’re not alone. The belly is often the most frustrating area to slim down, especially as we get older. But what if you had a clear, proven system that helps you see real results in just 15 days?

This 15-Day Flat Belly Protocol is a no-nonsense, science-based guide that helps your body burn fat more efficiently—without extreme diets or endless cardio. Designed to work with your body (not against it), this approach combines cutting-edge nutritional science, strategic workouts, and recovery techniques to help shrink your waistline while building habits that last.

What Makes This Program Different?

Unlike trendy fads or “quick fixes,” this guide doesn’t promise magic overnight results. Instead, it uses seven powerful strategies that work together to create a fat-burning environment in your body:

  • Caloric Manipulation – Adjust your intake without starving yourself.
  • Macronutrient Timing – Eat the right foods at the right time.
  • Targeted Training – Focused workouts to melt belly fat.
  • Carb Cycling – Boost metabolism without cutting carbs forever.
  • Hormone Support – Naturally balance fat-burning hormones.
  • Recovery Optimization – Maximize fat loss while you rest.
  • Metabolic Flexibility – Train your body to burn both fat and carbs efficiently.

This isn’t just about a flatter stomach. It’s about resetting your metabolism, gaining energy, and feeling confident in your skin again—all in just two weeks.

Designed for Real Life

Whether you love food, have a busy schedule, or haven’t worked out in months, this guide is built for real people. It offers a flexible, step-by-step plan that you can actually stick with—and see results from.

🔥 Download the 15-Day Flat Belly Protocol Now

Start seeing real results in just 15 days—no crash diets or gimmicks.

Monday, July 28, 2025

Jenis-jenis Ukuran Buku yang Umum Digunakan

Berikut adalah jenis-jenis ukuran buku yang umum digunakan secara internasional maupun di Indonesia, lengkap dengan istilahnya dan ukuran dalam sentimeter (cm):


📚 Jenis Ukuran Buku dan Istilahnya

📏 Ukuran Standar (Umum di Indonesia & Dunia)

Istilah UkuranDimensi (cm)Keterangan Umum
A610.5 × 14.8Buku saku, novel kecil, agenda
A514.8 × 21.0Buku anak, jurnal, modul belajar
B517.6 × 25.0Buku pelajaran, buku teknis
A421.0 × 29.7Laporan, majalah, workbook
A5+ (Custom)15.5 × 23.0Banyak digunakan penerbit lokal untuk novel
B612.5 × 17.6Novel Jepang, buku fiksi mini
C516.2 × 22.9Buku undangan, katalog

📘 Ukuran Buku Berdasarkan Jenis Penerbitan (Internasional)

Istilah (US)Dimensi (cm)Digunakan untuk
Pocket Book10.8 × 17.5Buku saku, novel ringan
Mass Market Paperback10.8 × 17.1Fiksi populer, distribusi massal
Digest14.0 × 21.0Komik, majalah, buku tutorial
Trade Paperback15.2 × 22.9Nonfiksi, self-help, bisnis
US Letter21.6 × 27.9Buku teks, laporan
Royal15.6 × 23.4Buku profesional, bisnis
Crown Quarto18.9 × 24.6Buku teknis, akademik
Demy14.0 × 21.6Umum di Eropa, untuk novel

🧒 Ukuran Buku Anak & Edukatif

Jenis Buku AnakUkuran Umum (cm)
Board Book12.7 × 17.8 (atau custom)
Picture Book20 × 25 / 21 × 28
Big Book (TK/PAUD)30 × 30 atau lebih

🎨 Tips Memilih Ukuran Buku

  • Novel/Fiksi: A5, A5+, B6, Trade Paperback

  • Buku Anak: Board Book, Picture Book (lebih besar, bergambar)

  • Bisnis/Self-Improvement: Royal, A5+, Trade

  • Komik/Majalah: Digest, B5

  • Teknis/Referensi: A4, B5, Crown Quarto


🎨 Tabel Kombinasi Warna yang Cocok Berdasarkan Bidang Buku

Bidang BukuWarna UtamaWarna SekunderWarna AksenKesan / Alasan Pemilihan
Algorithms & Programming#0D47A1 (Navy Blue)#1976D2 (Bright Blue)#FFC107 (Amber)Cerdas, teknis, logis, modern
Computers & Informatics#263238 (Blue Gray)#90A4AE (Grayish Blue)#00E5FF (Cyan)Futuristik, tenang, profesional
Cooking#BF360C (Rusty Orange)#FF7043 (Salmon)#FFD54F (Yellow)Hangat, menggugah selera, menyenangkan
Electronics#37474F (Charcoal Gray)#607D8B (Cool Gray)#FF3D00 (Electric Red)Teknologis, kuat, berenergi
Health#388E3C (Green)#A5D6A7 (Soft Green)#FFEB3B (Lemon Yellow)Sehat, alami, menyegarkan
Mathematics#4A148C (Deep Purple)#9575CD (Lavender Purple)#00ACC1 (Cyan Teal)Intelektual, elegan, logis
Novels / Fiction#6A1B9A (Violet)#CE93D8 (Mauve)#FFAB91 (Peach)Imajinatif, emosional, lembut
Physics#1A237E (Indigo)#5C6BC0 (Cool Indigo)#FFC107 (Amber)Dalam, cerdas, kontras tinggi
Religion#4E342E (Dark Brown)#A1887F (Taupe)#FFE0B2 (Cream)Tradisional, hangat, penuh makna
Self-Improvement / Business#1B5E20 (Forest Green)#C8E6C9 (Mint Green)#F9A825 (Golden Amber)Optimis, bertumbuh, profesional

Sunday, July 27, 2025

Cara Menambahkan Tombol Login/Register dengan Google (OAuth) ke Proyek Website

Cara menambahkan tombol Login/Register dengan Google (OAuth) ke proyek backend Flask dan frontend React Anda, berikut langkah-langkah lengkapnya:


🛠️ Bagian 1: Daftar dan Konfigurasi Google OAuth

1. Masuk ke Google Developer Console

🔗 https://console.developers.google.com/

2. Buat Project Baru

  • Klik Select a project > New Project

  • Isi nama proyek, klik Create

3. Aktifkan Google OAuth API

  • Di sidebar: APIs & Services > Library

  • Cari "Google Identity Services" atau "OAuth 2.0" dan klik Enable

4. Buat OAuth 2.0 Client ID

  • Menu: APIs & Services > Credentials

  • Klik + CREATE CREDENTIALS > OAuth client ID

  • Pilih:

    • Application type: Web Application

    • Name: Web Client for E-Book Store

    • Authorized JavaScript origins:

      • http://localhost:3000 (React frontend)

    • Authorized redirect URIs:

      • http://localhost:5000/auth/google/callback (Flask backend route)

  • Simpan client_id dan client_secret


⚙️ Bagian 2: Backend Flask Setup (Google OAuth)

1. Install dependency

pip install flask-dance

2. Tambahkan ke Flask App

from flask import Flask, redirect, url_for, session, jsonify
from flask_dance.contrib.google import make_google_blueprint, google from flask_jwt_extended import create_access_token from models import User # sesuaikan dengan model user Anda from extensions import db app = Flask(__name__) app.secret_key = "secret" app.config["GOOGLE_OAUTH_CLIENT_ID"] = "YOUR_GOOGLE_CLIENT_ID" app.config["GOOGLE_OAUTH_CLIENT_SECRET"] = "YOUR_GOOGLE_CLIENT_SECRET" google_bp = make_google_blueprint(scope=["profile", "email"]) app.register_blueprint(google_bp, url_prefix="/auth/google")

3. Buat Callback Route

@app.route("/auth/google/callback") def google_login_callback(): if not google.authorized: return redirect(url_for("google.login")) resp = google.get("/oauth2/v2/userinfo") user_info = resp.json() email = user_info["email"] name = user_info.get("name", "") user = User.query.filter_by(email=email).first() if not user: user = User(email=email, name=name) db.session.add(user) db.session.commit() access_token = create_access_token(identity=user.id) return jsonify({"access_token": access_token, "email": email})

💻 Bagian 3: React Frontend Setup

1. Install Library

npm install @react-oauth/google

2. Setup Google OAuth Provider di index.jsx

import { GoogleOAuthProvider } from '@react-oauth/google'; import App from './App'; const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <GoogleOAuthProvider clientId="YOUR_GOOGLE_CLIENT_ID"> <App /> </GoogleOAuthProvider> );

3. Buat Tombol Login

import { GoogleLogin } from '@react-oauth/google'; const GoogleLoginButton = () => { const handleLogin = async (credentialResponse) => { const response = await fetch("http://localhost:5000/auth/google/callback", { method: "GET", credentials: "include", }); const data = await response.json(); localStorage.setItem("token", data.access_token); // redirect or update UI }; return ( <GoogleLogin onSuccess={handleLogin} onError={() => console.log("Login Failed")} /> ); };

🧪 Testing

  1. Jalankan Flask backend (localhost:5000)

  2. Jalankan React frontend (localhost:3000)

  3. Klik tombol Google login → pastikan akun Anda muncul di database → token tersimpan di localStorage

Saturday, July 26, 2025

PETUALANGAN MATEMATIKA Menjelajah Dunia Bidang Datar & Volume dengan Mudah dan Menyenangkan!

📘 Petualangan Matematika: Belajar Jadi Menyenangkan!

Buku "Petualangan Matematika" adalah teman belajar yang seru dan ramah anak untuk menjelajahi dunia bidang datar dan volume! 📚✨ Dirancang khusus untuk anak-anak usia 8–12 tahun, buku ini mengajak pembaca cilik belajar matematika dengan cara yang asyik dan tidak menakutkan.


Melalui cerita petualangan, karakter-karakter lucu seperti Miki, Lala, Bu Lingkaran dan Koko Kubus, serta contoh nyata dari kehidupan sehari-hari, anak-anak akan belajar:
  • 📏 Bagaimana bentuk bidang datar ada di sekitar kita (misalnya jendela persegi, pizza berbentuk lingkaran).
  • 🎲 Cara menghitung luas & keliling sambil bermain.
  • 🧪 Konsep volume lewat eksperimen seru seperti mengukur kapasitas kotak bekal.
Setiap bab dilengkapi dengan:
  • 🎨 Ilustrasi penuh warna yang bikin matematika jadi menyenangkan.
  • 🔍 Contoh soal langkah demi langkah untuk melatih logika.
  • 💡 Aplikasi praktis, misalnya: "Jika kamu ingin membuat bingkai foto, berapa panjang kayu yang dibutuhkan?"
  • 🎯 Permainan dan tantangan seru untuk menguji pemahaman!
Dengan pendekatan belajar sambil bermain, buku ini membantu anak-anak mengatasi rasa takut terhadap angka dan membangun percaya diri dalam memecahkan masalah matematika. 🚀

Siapa bilang matematika itu sulit? Di sini, matematika adalah petualangan penuh kejutan!

Thursday, July 24, 2025

Why Traditional Stock Analysis Fails You—And How AI Can Unlock NVIDIA’s True Potential

 

Why Traditional Stock Analysis Fails You—And How AI Can Unlock NVIDIA’s True Potential



If you’ve ever felt overwhelmed analyzing fast-moving stocks like NVIDIA, you’re not alone.

Between outdated metrics, conflicting advice, and emotional decision-making, traditional investment strategies simply can’t keep up with today’s AI-driven market shifts.

And here’s the hard truth:

🔴 Relying on generic tools and expensive advisors might actually cost you more—in money, time, and missed opportunities.

The New Way to Invest in AI Market Leaders Like NVIDIA

DeepSeek AI is not another short-term trading gimmick or overpriced advisory subscription. It’s a comprehensive, 167-page PDF guide that introduces battle-tested, AI-enhanced investment strategies specifically for NVIDIA and other AI innovators.

What you’ll learn isn’t just theory—it’s a full investment framework grounded in technical, fundamental, and sentiment analysis, combined with risk management tactics that work even in volatile markets.

Inside the guide, you’ll discover how to:

✅ Use cutting-edge AI insights to evaluate NVIDIA’s stock with confidence
✅ Build a research routine that fits your lifestyle
✅ Avoid emotional trading and stay strategic
✅ Set clear risk boundaries—and respect them
✅ Escape the trap of outdated financial models

This isn’t about hype—it’s about clarity and control.

Stop Chasing Trends. Start Investing with Insight.

The AI revolution isn’t coming—it’s already here. And NVIDIA is leading it.

Whether you’re a cautious investor or a growth seeker, understanding how to evaluate NVIDIA with modern tools could be the difference between stagnation and serious portfolio growth.

🚀 Don’t let traditional stock analysis hold you back.
👉 Download the FREE guide now and start mastering NVIDIA’s stock with DeepSeek AI


For Serious Investors Seeking AI Market Mastery...

Best-Selling Market Analyst Reveals a NEW Data-Driven Approach to Analyze NVIDIA's AI Market Position and Capture Unprecedented Growth Opportunities.

Discover how to evaluate NVIDIA's true market potential, identify key entry points, make confident investment decisions, and build significant long-term wealth – WITHOUT expensive advisory services, complex trading algorithms, or high-risk options strategies.

Perfect for both retail and institutional investors.

Marcus Chen
AI Investment Strategist & Wall Street Veteran
+87,403 portfolio success stories

DeepSeek AI: Unlocking NVIDIA's Stock Potential

4.9/5 based on 912 verified reviews
🧠 100 AI-Powered Market Analysis Strategies
📊 Technical frameworks to turn uncertainty into confidence
🔍 Independent research system for clear due diligence
🧘 Risk & Position Sizing strategies to protect returns
📂 Templates, spreadsheets & tools included
♾️ Lifetime access

🎉 AI Summit Special Offer

TODAY ONLY: $10-14 $133
Lock in your >89% discount now!

🔒 Secure Checkout | 🚀 Instant Delivery

Consider this: While other investors struggle to understand NVIDIA's true potential in the AI revolution, you'll have a complete analytical framework at your fingertips within the next 2 minutes.

Don't wait until after the next big market move. Every day you delay is another opportunity missed in the fastest-growing tech sector.

Your Investment is Protected.

Friday, June 27, 2025

Cara restart otomatis Debian, ketika penggunaan memory mencapai 99%

Restart otomatis Debian ketika penggunaan memori mencapai 99% dapat diimplementasikan dengan beberapa cara. Pendekatan yang paling umum melibatkan penggunaan script yang dipadukan dengan cron job atau systemd service untuk memantau penggunaan memori dan memicu restart jika ambang batas tercapai.

Penting untuk Dipertimbangkan Sebelum Menerapkan:

  • Penyebab Penggunaan Memori Tinggi: Restart otomatis adalah solusi sementara. Anda harus mencari tahu akar penyebab penggunaan memori yang tinggi (misalnya, memory leak di aplikasi, konfigurasi yang salah, atau beban kerja yang terlalu besar untuk kapasitas server Anda). Restart otomatis hanya mengatasi gejalanya.
  • Risiko Restart Otomatis: Restart paksa dapat menyebabkan kehilangan data jika aplikasi tidak dimatikan dengan benar. Pastikan aplikasi Anda dapat menangani pemadaman yang tiba-tiba, atau pertimbangkan untuk mengimplementasikan graceful shutdown sebelum restart.
  • Alternatif: Daripada langsung restart, Anda mungkin ingin mencoba membersihkan cache memori (sync; echo 3 > /proc/sys/vm/drop_caches) atau me-restart layanan spesifik yang mengonsumsi memori paling banyak terlebih dahulu. Restart sistem adalah upaya terakhir.

Berikut adalah beberapa metode yang bisa Anda gunakan:

Metode 1: Menggunakan Script Bash dengan Cron Job (Paling Sederhana)

Ini adalah cara yang paling cepat dan mudah untuk diimplementasikan.

  1. Buat Script Pemantau Memori: Buat file baru, misalnya /usr/local/bin/mem_monitor.sh, dan isi dengan kode berikut:

    Bash
    #!/bin/bash
    
    # Ambang batas penggunaan memori (dalam persen)
    # Sesuaikan sesuai kebutuhan, misalnya 95 atau 99
    MEM_THRESHOLD=99
    
    # Dapatkan penggunaan memori saat ini dalam persen
    # Menggunakan 'free -m' untuk MB, lalu kalkulasi persen
    # -m: menampilkan dalam MB
    # awk '{print $NF}' di baris kedua (Mem:) adalah kolom 'used' (kolom 3)
    # kolom 4 adalah 'free', kolom 6 adalah 'available'
    # Pada sistem Linux modern, 'available' adalah metrik yang lebih baik untuk ketersediaan memori bagi aplikasi baru.
    # Namun, untuk deteksi 99% usage, 'used' masih relevan jika Anda ingin mencegah server crash.
    # Atau bisa juga pakai: PERCENTAGE=$(free | awk '/Mem:/ { printf("%d\n", ($3/$2)*100) }')
    # Atau jika ingin pakai available memory: PERCENTAGE=$(free | awk '/Mem:/ { printf("%d\n", ($3/$2)*100) }')
    # Atau lebih tepatnya pakai: PERCENTAGE=$(free | awk '/Mem:/ { print 100 - ($7/$2)*100 }' | cut -d'.' -f1) # ($7 adalah available, $2 adalah total)
    
    # Contoh yang lebih robust menggunakan available
    TOTAL_MEM=$(free -m | awk 'NR==2{print $2}')
    AVAILABLE_MEM=$(free -m | awk 'NR==2{print $7}') # Available memory, lebih akurat
    USED_MEM_PERCENT=$(( (TOTAL_MEM - AVAILABLE_MEM) * 100 / TOTAL_MEM ))
    
    LOG_FILE="/var/log/mem_monitor.log"
    DATE=$(date +"%Y-%m-%d %H:%M:%S")
    
    echo "$DATE - Current memory usage: $USED_MEM_PERCENT%" >> "$LOG_FILE"
    
    if [ "$USED_MEM_PERCENT" -ge "$MEM_THRESHOLD" ]; then
        echo "$DATE - Memory usage ($USED_MEM_PERCENT%) reached threshold ($MEM_THRESHOLD%). Restarting system." >> "$LOG_FILE"
        /sbin/shutdown -r now # Perintah untuk restart
    fi
    
  2. Buat Script Bisa Dieksekusi:

    Bash
    sudo chmod +x /usr/local/bin/mem_monitor.sh
    
  3. Tambahkan ke Cron Job: Edit crontab untuk user root:

    Bash
    sudo crontab -e
    

    Tambahkan baris berikut di akhir file untuk menjalankan script setiap 5 menit (Anda bisa sesuaikan frekuensinya):

    Code snippet
    */5 * * * * /usr/local/bin/mem_monitor.sh >> /var/log/mem_monitor_cron.log 2>&1
    
    • */5 * * * *: Menjalankan setiap 5 menit.
    • >> /var/log/mem_monitor_cron.log 2>&1: Mengalihkan output standar dan error ke file log terpisah untuk debugging cron.

Metode 2: Menggunakan Systemd Service (Lebih Modern dan Robust)

Metode ini lebih disukai pada sistem Linux modern karena menawarkan integrasi yang lebih baik dengan systemd dan kontrol yang lebih granular.

  1. Buat Script Pemantau Memori: Sama seperti Metode 1, simpan script Anda di /usr/local/bin/mem_monitor.sh. Pastikan tidak ada perintah shutdown -r now di dalamnya untuk saat ini. Kita akan memicu restart dari service systemd itu sendiri.

    Bash
    #!/bin/bash
    
    MEM_THRESHOLD=99
    TOTAL_MEM=$(free -m | awk 'NR==2{print $2}')
    AVAILABLE_MEM=$(free -m | awk 'NR==2{print $7}')
    USED_MEM_PERCENT=$(( (TOTAL_MEM - AVAILABLE_MEM) * 100 / TOTAL_MEM ))
    
    echo "Current memory usage: $USED_MEM_PERCENT%"
    
    if [ "$USED_MEM_PERCENT" -ge "$MEM_THRESHOLD" ]; then
        exit 1 # Keluar dengan status non-nol jika ambang batas tercapai
    else
        exit 0 # Keluar dengan status nol jika OK
    fi
    
  2. Buat Script Bisa Dieksekusi:

    Bash
    sudo chmod +x /usr/local/bin/mem_monitor.sh
    
  3. Buat Unit Systemd Timer: Buat file baru bernama /etc/systemd/system/mem_monitor.timer:

    Ini, TOML
    [Unit]
    Description=Run memory monitor script every 5 minutes
    
    [Timer]
    OnBootSec=1min
    OnUnitActiveSec=5min
    Unit=mem_monitor.service
    
    [Install]
    WantedBy=timers.target
    
  4. Buat Unit Systemd Service: Buat file baru bernama /etc/systemd/system/mem_monitor.service:

    Ini, TOML
    [Unit]
    Description=Monitor memory usage and restart if necessary
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/mem_monitor.sh
    # Perintah di bawah ini akan dijalankan jika ExecStart keluar dengan status non-nol (yaitu, memori tinggi)
    OnFailure=reboot.target # Trigger reboot.target jika script gagal (exit 1)
    # Atau, jika Anda ingin lebih spesifik:
    # ExecStopPost=/sbin/shutdown -r now
    
    [Install]
    WantedBy=multi-user.target
    
    • OnFailure=reboot.target: Ini akan memicu system reboot jika script mem_monitor.sh keluar dengan status non-nol.
    • Catatan: Type=oneshot berarti service akan berjalan sekali dan kemudian berhenti. OnFailure hanya berlaku jika service gagal.
  5. Reload Systemd, Enable, dan Start Timer:

    Bash
    sudo systemctl daemon-reload
    sudo systemctl enable mem_monitor.timer
    sudo systemctl start mem_monitor.timer
    
  6. Cek Status:

    Bash
    sudo systemctl status mem_monitor.timer
    sudo systemctl status mem_monitor.service
    journalctl -u mem_monitor.service -f # Untuk melihat log dari service
    

Pertimbangan Keamanan dan Robustness:

  • Pengguna (User): Pastikan script dieksekusi dengan hak akses yang memadai (root untuk shutdown -r now). Cron job sudo crontab -e menjalankan sebagai root. Systemd service juga berjalan sebagai root secara default.
  • Logging: Selalu tambahkan logging yang cukup untuk melacak kapan script berjalan dan apa hasilnya.
  • Ambang Batas: Pilih ambang batas dengan hati-hati. Terlalu rendah bisa menyebabkan restart yang tidak perlu. Terlalu tinggi bisa menyebabkan server crash sebelum restart.
  • Prioritas: Pastikan tidak ada proses lain yang memiliki prioritas lebih tinggi yang dapat mencegah perintah shutdown dijalankan.
  • drop_caches (Alternatif yang Lebih Lembut): Pertimbangkan untuk membersihkan cache memori terlebih dahulu sebelum restart. Anda bisa menambahkan baris ini ke script Anda:
    Bash
    # Dalam mem_monitor.sh, sebelum perintah shutdown
    if [ "$USED_MEM_PERCENT" -ge "$MEM_THRESHOLD" ]; then
        echo "$DATE - Memory usage ($USED_MEM_PERCENT%) reached threshold ($MEM_THRESHOLD%). Trying to drop caches." >> "$LOG_FILE"
        sudo sync
        sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
        sleep 10 # Beri waktu untuk sistem menyesuaikan
        # Hitung ulang memori, dan baru restart jika masih tinggi
        TOTAL_MEM_AFTER=$(free -m | awk 'NR==2{print $2}')
        AVAILABLE_MEM_AFTER=$(free -m | awk 'NR==2{print $7}')
        USED_MEM_PERCENT_AFTER=$(( (TOTAL_MEM_AFTER - AVAILABLE_MEM_AFTER) * 100 / TOTAL_MEM_AFTER ))
        echo "$DATE - Memory usage after dropping caches: $USED_MEM_PERCENT_AFTER%" >> "$LOG_FILE"
        if [ "$USED_MEM_PERCENT_AFTER" -ge "$MEM_THRESHOLD" ]; then
            echo "$DATE - Still high. Restarting system." >> "$LOG_FILE"
            /sbin/shutdown -r now
        fi
    fi
    

Pilih metode yang paling sesuai dengan tingkat kenyamanan dan kebutuhan pengelolaan sistem Anda. Systemd adalah pendekatan yang lebih modern, tetapi cron job lebih cepat untuk disiapkan.