Pisah Firstname dan Lastname di Excel

Nama Depan

Nama depan dapat diartikan sebagai kata pertama dalam nama lengkap. Anda dapat menggunakan fungsi LEFT. Rumusnya adalah

=IFERROR(LEFT(Nama;FIND(“ “;Nama;1)-1);Nama)

Jika menyesuaikan dengan contoh akan menjadi:
=IFERROR(LEFT(B2;FIND(” “;B2;1)-1);B2)

Nama Belakang

Nama belakang merupakan kata selain nama depan. Dalam hal ini Anda dapat menggunakan perintah RIGHT. Rumusnya adalah

=IFERROR(RIGHT(Nama;LEN(Nama)-FIND(” “;Nama;1));””)

Atau dalam contoh akan menjadi:
=IFERROR(RIGHT(B2;LEN(B2)-FIND(” “;B2;1));””)

Cara Reset Passwd Mysql server yang lupa

masuk ke terminal linux kemudian ketikan perintah seperti di baawah.

service mysql stop
service mariadb stop
mysqld_safe --skip-grant-tables &
UPDATE user SET password=PASSWORD('PASSWORD_BARU') WHERE user='root';
FLUSH PRIVILEGES;

CREATE NEW USER
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

Lalu restart service mariadb dan mysqlnya

service mysql start
service mariadb start
GET DUMP DATABASES
mysqldump -u root db > save.sql --routines

Install PHP 7.3 / PHP 7.3-FPM With Apache2

Step 1: Setup PHP with Apache2 HTTP Server

sudo apt update
sudo apt install apache2
sudo systemctl stop apache2.service
sudo systemctl start apache2.service
sudo systemctl enable apache2.service

Step 2: Install PHP 7.3 with Apache2 Support

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

sudo apt-get install php7.3 libapache2-mod-php7.3 php7.3-cli php7.3-mysql php7.3-gd php7.3-imagick php7.3-recode php7.3-tidy php7.3-xmlrpc

Step 3: Configure PHP 7.3 for Apache2

sudo nano /etc/php/7.3/apache2/php.ini

file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Chicago

sudo systemctl restart apache2.service

Install DnsCrypt + Pihole

Siapkan bahan2

di linux versi2 lama kaya ubuntu bionic 18.04 dnscrypt yg di repo versi 1.xversi 1.x sudah gak diurus lagi jadi wajib pake versi 2.xkalau di repo armbian yang agan2 pake dnscryptnya uda versi 2.x tinggal install dari repo seperti biasa klo belum:Simak video tutorial sederhana inihttps://youtu.be/3zaswxZc8eEtutor singkat yg ada divideo

  1. download dnscrypt-proxy arm64 link diatas kemudian extract
  2. masuk ke folder hasil extract rename example-dnscrypt-proxy.toml menjadi dnscrypt-proxy.toml
  3. edit dnscrypt-proxy.toml dengan notepad ++ / yg lain cari listen_addresses : ganti jadi 127.0.2.1#5300 (boleh ganti port seusai keinginan selain 53), lalu hapus tanda “#” pada server_names lalu save
  4. copy kan file dnscrypt-proxy dan dnscrypt-proxy.toml ke stb dengan winSCP di folder /usr/bin (supaya gampang waktu ketik perintah nanti :v)
  5. ubah permission dnscrypt-proxy ke 0755 pake winSCP jg
  6. masuk ke putty ketik dnscrypt-proxy lalu [enter] kalau running tanpa error berarti sukses

selanjutnya install service dnsryptnya ketik

dnscrypt-proxy -service install && dnscrypt-proxy -service start

7. kalo berjalan tanpa error berarti sukses.. tinggal install pihole8. untuk install pihole liat di video 9. setting pihole waktu install biarkan default saja10. setelah install pihole ketik di putty

pihole -a -p passwordbaru

buka pihole lewat browser lalu login menggunakan passwordbaru yang dibuat lalu ke setting > DNS hilangkancentang di Upstream DNS server bagian kiri lalu centang custom 1 (ipv4) masukan 127.0.2.1#5300 (seusaikan sama setingan di dnscrypt-proxy.toml diawal tadi)lalu saveSELSAI

PING Stabil Ala GW

/ ip firewall mangle
add chain=prerouting protocol=icmp src-address=192.168.10.0/24 action=mark-connection new-connection-mark=icmp-c comment=”–> ping” disabled=no

add chain=prerouting connection-mark=icmp-c action=mark-packet new-packet-mark=icmp-p comment=”” disabled=no

add chain=prerouting packet-mark=icmp-p action=change-tos new-tos=min-delay comment=”” disabled=no

add chain=prerouting src-address=192.168.10.0/24 protocol=tcp dst-port=53 action=mark-connection new-connection-mark=dns-c comment=”–> dns” disabled=no

add chain=prerouting src-address=192.168.10.0/24 protocol=udp dst-port=53 action=mark-connection new-connection-mark=dns-c comment=”” disabled=no

add chain=prerouting connection-mark=dns-c action=mark-packet new-packet-mark=dns-p comment=”” disabled=no

add chain=prerouting packet-mark=dns-p action=change-tos new-tos=min-delay comment=”” disabled=no

Jika pada mangle terdapat mark packet nya koneksi (IIX / INT) letakkan di bagian bawah mangle tersebut, dan jangan diletakkan di bagian atas. Selanjutnya pada queue type:

/ queue type
add name=”64″ kind=pfifo pfifo-limit=64

Pada queue tree:

/ queue tree
add name=”64″ parent=global-in packet-mark=”” limit-at=0 queue=64 priority=5 max-limit=32000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

add name=”ping” parent=64 packet-mark=icmp-p limit-at=8000 queue=64 priority=1 max-limit=16000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

add name=”dns” parent=64 packet-mark=dns-p limit-at=8000 queue=64 priority=1 max-limit=16000 burst-limit=0 burst-threshold=0 burst-time=0s disabled=no

Referensi Moodle API

https://stackoverflow.com/questions/35881584/using-moodle-create-users-and-enroll-them-in-courses-via-sql

http://www.refineddata.com/api

https://stackoverflow.com/questions/22161606/sql-query-for-courses-enrolment-on-moodle?rq=1

    CREATE DEFINER = `your_user`@`%` PROCEDURE `RemoveUserDataFromCourse`(IN `c_id` int,IN `u_id` int)
BEGIN
    # ENROLLMENT
    DELETE FROM mdl_user_enrolments WHERE userid = u_id AND enrolid IN (SELECT id FROM mdl_enrol WHERE courseid = c_id);

  # LOG, EVENT, POSTS
    DELETE FROM mdl_log WHERE course = c_id AND userid = u_id;
    DELETE FROM mdl_event WHERE courseid = c_id AND userid = u_id;
    DELETE FROM mdl_post WHERE courseid = c_id AND userid = u_id;

    # Course completion
    DELETE FROM mdl_course_modules_completion WHERE coursemoduleid IN (SELECT id FROM mdl_course_modules WHERE course= c_id and userid=u_id);
    DELETE FROM mdl_course_completions WHERE course = c_id AND userid = u_id;
    DELETE FROM mdl_course_completion_crit_compl WHERE course = c_id AND userid = u_id;

    # Grades from all modules
    DELETE FROM mdl_grade_grades WHERE userid = u_id and itemid IN (SELECT id FROM mdl_grade_items WHERE courseid = c_id);

    # MODULES

    # ASSIGNMENTS
    DELETE FROM mdl_assign_grades WHERE userid = u_id AND assignment IN (SELECT id FROM mdl_assign WHERE course = c_id);    

    # QUIZ
    DELETE FROM mdl_quiz_attempts WHERE userid = u_id AND quiz IN (SELECT id FROM mdl_quiz WHERE course = c_id);
    DELETE FROM mdl_quiz_grades WHERE userid = u_id AND quiz IN (SELECT id FROM mdl_quiz WHERE course = c_id);

    # SCORM
    DELETE FROM mdl_scorm_scoes_track WHERE userid = u_id AND scormid IN (SELECT id FROM mdl_scorm WHERE course = c_id);

    # CHECK LIST
    DELETE FROM mdl_checklist_check WHERE userid = u_id AND item IN ( SELECT mci.id FROM mdl_checklist mc INNER JOIN mdl_checklist_item mci ON mci.checklist = mc.id WHERE course = c_id );
    DELETE FROM mdl_checklist_comment WHERE userid = u_id AND itemid IN ( SELECT mci.id FROM mdl_checklist mc INNER JOIN mdl_checklist_item mci ON mci.checklist = mc.id WHERE course = c_id );

    # CHOICE
    DELETE FROM mdl_choice_answers WHERE userid = u_id AND choiceid IN (SELECT id FROM mdl_choice WHERE course = c_id);
END;


SELECT c.fullname
FROM mdl_course c 
JOIN mdl_enrol en ON en.courseid = c.id 
JOIN mdl_user_enrolments ue ON ue.enrolid = en.id 
WHERE ue.userid = '788'

SELECT cr.SHORTNAME, 
       cr.FULLNAME, 
       COUNT(ra.ID) AS enrolled 
FROM   MDL_COURSE cr 
       JOIN MDL_CONTEXT ct 
         ON ( ct.INSTANCEID = cr.ID ) 
       LEFT JOIN MDL_ROLE_ASSIGNMENTS ra 
              ON ( ra.CONTEXTID = ct.ID ) 
WHERE  ct.CONTEXTLEVEL = 50 
       AND ra.ROLEID = 5 
GROUP  BY cr.SHORTNAME, 
          cr.FULLNAME 
ORDER  BY ENROLLED ASC 
https://docs.moodle.org/36/en/ad-hoc_contributed_reports

QUERY FOR FINAL GRADE MOODLE


select mc.shortname as course_Id,mu.username, 
case when ABS(ROUND(mgg.finalgrade, 0) - mgg.finalgrade) <= 0.0000005 then cast(mgg.finalgrade as text) else 'Pending...' end as final_grade,
mgi.itemname
from mdl_grade_grades mgg
join mdl_user mu on mgg.userid=mu.id
join mdl_user_enrolments mue on mue.userid=mu.id
join mdl_grade_items mgi on mgg.itemid=mgi.id
join mdl_course mc on mc.id=mgi.courseid
join mdl_enrol me on mue.enrolid=me.id and me.courseid=mc.id
join mdl_role_assignments mra on mu.id=mra.userid
join mdl_role mr on mra.roleid=mr.id
where mc.category = '1' and -- mdl_course_categories.id = '1'; id=1 => name='Spring 2012' as an example 
mr.shortname='student' and -- only get people enrolled with a 'student' role in the course
mgi.itemname ilike '%Final%Grade%'; --anything with 'final' and 'grade' in it regardless of case and surrounding text

Project moodle

$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'moodle';

$u_moodle = 'theusernameyouwant';
$hp_moodle = password_hash('thepasswordyouwant', PASSWORD_DEFAULT); ///IMPORTANT!
$name = 'first name';
$lname = 'last name';
$email = 'e@m.ail'; ///This have to be verified by you as we're inserting it directly
$course = '123'; //Id that you put in moodle admin, not the real id    

$conn = new mysqli($servername, $username, $password, $dbname);

$sql = "INSERT INTO 'mdl_user' (auth, confirmed, mnethostid, username, password, firstname, lastname, email)
    VALUES ('manual', 1, 1, '$u_moodle', '$hp_moodle', '$name', '$lname', '$email')";
// auth = 'manual', confirmed = 1, mnethostid = 1 Always. the others are your variables

if ($conn->query($sql) === TRUE) {
    echo "OKTC";
} else {
    ////Manage your errors
}

$sql = "SELECT * FROM $m_user WHERE email='$email'";
$result = $conn2->query($sql);
if($row = $result->fetch_assoc()) {
    $id = $row['id']; //Id of newly created user. we're using that for to register him on the course
}

////You have to use this if your idnumber for the course is the one you put into moodle (thats not the real id)
$sql = "SELECT id FROM 'mdl_course' WHERE idnumber=$course";
$result = $conn->query($sql);
if(!$result){
    ///Not existing course, manage your error
}
if($row = $result->fetch_assoc()) {
    $idcourse = $row["id"];
}

///I need now the "enrol" id, so I do this:
$sql = "SELECT id FROM 'mdl_enrol' WHERE courseid=$idcourse AND enrol='manual'";
$result = $conn->query($sql);
if(!$result){
    ///Not enrol associated (this shouldn't happen and means you have an error in your moodle database)
}
if($row = $result->fetch_assoc()) {
    $idenrol = $row["id"];
}

///Lastly I need the context
$sql = "SELECT id FROM 'mdl_context' WHERE contextlevel=50 AND instanceid=$idcourse"; ///contextlevel = 50 means course in moodle
$result = $conn->query($sql);
if(!$result){
    ///Again, weird error, shouldnt happen to you
}
if($row = $result->fetch_assoc()) {
    $idcontext = $row["id"];
}

///We were just getting variables from moodle. Here is were the enrolment begins:

$time = time();
$ntime = $time + 60*60*24*$duration; //How long will it last enroled $duration = days, this can be 0 for unlimited.
$sql = "INSERT INTO 'mdl_user_enrolments' (status, enrolid, userid, timestart, timeend, timecreated, timemodified)
VALUES (0, $idenrol, $id, '$time', '$ntime', '$time', '$time')";
if ($conn->query($sql) === TRUE) {
} else {
    ///Manage your sql error
}

$sql = "INSERT INTO 'mdl_role_assignments' (roleid, contextid, userid, timemodified)
VALUES (5, $idcontext, '$id', '$time')"; //Roleid = 5, means student.
if ($conn->query($sql) === TRUE) {
} else {
    //manage your errors
}

mengamankan modem

Yang dibutuhkan :

1. Aplikasi telnet client, kita pake putty dan bisa di download disini :  http://game.amanah.biz/putty/

2. IP Modem ZTE F660

===============

STEP BY STEP :

1. Buka aplikasi putty, masukkan IP modem ke kolom yang tersedia, pada pilihan jenis koneksi dibawahnya pilih “Telnet”, jika sudah klik Open. Lihat gambar :

2. Anda akan berhadapan dengan layar menyeramkan hitam nan kelam dengan tulisan Login disana,

ketik root kemudian tekan ENTER, setelah muncul tulisan password, ketik Zte521 kemudian tekan ENTER.

Pada saat anda menulis password, tidak akan muncul bintang2 atau indikator apapun dilayar, tidak perlu galau karena apa yg anda ketik akan tetap terekam. Ingat! Perhatikan huruf BESAR kecil pada password.

Jika berhasil, anda akan berhadapan dengan kotak sibuk alias BusyBox. Sampai disini anda sudah berhasil masuk ke modem anda via TELNET

Lihat Gambar :

 3. Pengen liat password login web di modem kita? Silahkan copy baris berikut, kemudian klik kanan pada layar putty tadi, kemudian tekan enter.

sendcmd 1 DB p UserInfo

Lihat Gambar :

Jika berhasil, anda akan berhadapan dengan baris info profil account di modem kita, dan silahkan dicek dibagian baris Username Password nya, adakah user password login modem anda disana? PASTI ADA

Lihat gambar : 

4. OK, sekarang kita tes lagi. Kalo diatas kita sudah lihat info account login web modem, kita coba liat info account login telnet modem kita. ketik ulang / copy baris berikut dan kemudian klik kanan pada putty, tekan ENTER.

sendcmd 1 DB p TelnetCfg

Jika berhasil, anda akan melihat baris TelnetCFG, perhatikan pada baris TS_Uname dan TS_UPwd, anda akan melihat user password yang anda pakai untuk login pada telnet putty di awal tadi

Lihat gambar :

5. Sampai disini kita sudah sama2 membuktikan, bahwa user password kita bisa dilihat semuanya oleh siapapun yg punya akses via TELNET ini. Dan yang bisa kita lakukan agar orang lain tidak usil terhadap modem kita adalah, kita ganti password default dari TELNET ini ke password baru. 

Caranya? ketik ulang baris berikut ke layar putty, ganti/sesuaikan passwordbaru ke password anda sendiri, kemudian tekan ENTER

sendcmd 1 DB set TelnetCfg 0 TS_UPwd passwordbaru

Jika berhasil, info account TELNET akan tampil dan anda bisa kembali melihat password anda di bagian info tersebut.

Lihat Gambar : 

6. SELESAI? Belum, anda harus menyimpan telebih dahulu konfigurasi password baru anda agar tidak berubah sewaktu modem restart. Ketik ulang baris berikut ke layar putty, kemudian tekan ENTER.

sendcmd 1 DB save

Lihat gambar : 

7. Sampai disini anda sudah berhasil menyimpan seting penggantian password anda. 

Tapi ingat, perubahan ini baru akan diterapkan setelah modem anda restart/reboot. Jadi jika warnet sepi, coba restart modem anda dan cek ulang dengan mengulang langkah telnet dengan password anda sendiri, jika berhasil maka orang lain tidak akan bisa lagi iseng masuk ke modem anda

Selamat Mencoba!