0

sysctl: cannot stat /proc/sys/vm/nr_hugepages: No such file or directory

Saya mendapat error ini semasa cuba menggunakan Hugepages pada Ubuntu 16.04. Saya telah mencari di Google namun tiada hasil.

Pada sebelum ini, saya telah cuba menukar saiz Hugepages dengan melakukan command:

$ vm.nr_hugepages = 128

Namun saya mendapat error sysctl: cannot stat /proc/sys/vm/nr_hugepages: No such file or directory

Setelah saya menyiasat, saya dapati ini adalah kerana default kernel yang saya pakai tidak menyokong Hugepages. Oleh kerana itu, saya telah memasang kernel 4.10 daripada repository. Memandangkan saya menggunakan Ubuntu 16.04:

$ sudo apt install linux-generic-hwe-16.04

Kemudian reboot

Cara memasang kernel pada sistem anda mungkin berbeza melainkan anda menggunakan Ubuntu 16.04 seperti saya.

0

[Android] Cara menukar User Certificate kepada System

Mungkin atas sebab-sebab tertentu, anda perlukan sesuatu certificate itu dipasang pada system. Saya menulis entri ini kerana tidak menjumpai cara yang terkini.

Saya telah mencuba cara ini pada Android 7.1 AOSP. Untuk versi android yang lebih lama, path pemasangan user certificate adalah berlainan dan tidak akan anda temui di sini.

Nota:

  1. Akses root diperlukan.
  2. Semak senarai user dan system certificate di Settings > Security > Trusted Credentials.
  3. User certificate: /data/misc/user/0/cacerts-added
  4. System certificate: /system/etc/security/cacerts

Langkah 1:

Buang semua certificate kecuali yang anda mahu pindahkan. Ini untuk memudahkan pencarian kerana certificate tersebut tidak disimpan dengan nama asal.

Langkah 2:

Buka /data/misc/user/0/cacerts-added menggunakan file manager anda. Anda akan melihat senarai certificate yang namanya berakhir dengan 0 sebagai contohnya, c8750f0d. Semua di sini adalah user certificate yang anda telah pasang.

Langkah 3:

Salin certificate tadi ke dalam /system/etc/security/cacerts. Kemudian reboot.

0

[PHP] Masalah menetapkan permission pada mkdir() dan chmod()

Situasi masalah kali ini agak mengelirukan kerana saya sudahpun merujuk pelbagai laman web tentang contoh penggunaan mkdir() serta chmod(). Tetapi, masalah sama tetap muncul di mana permission yang saya tetapkan untuk folder yang saya hendak buat tidak sama dengan permission folder yang diberikan kepada folder tersebut.

Saya menggunakan mkdir() seperti ini:

mkdir("./test", 777);

Tetapi yang terhasil adalah 007.
Jadi saya cuba menggunakan chmod():
mkdir("./test", 777);
chmod("./test", 777);

Tetapi masih juga sama. Lalu saya cuba mengubah mask:

$oldmask = umask(0);
mkdir("./test", 777);
umask($oldmask);

Tekanan semakin terasa apabila hasilnya tetap sama!

Setelah beberapa minit merenung hidup, saya merujuk semula dokumentasi PHP dan mendapati saya mempunyai kesalahan menaip. Permission yang saya taip sepatutnya adalah 0777 dan bukannya 777. Jadi code akhir saya yang berfungsi adalah:

mkdir("./test", 0777);

Pengajarannya adalah sentiasa menumpukan perhatian.

0

[PHP][MYSQL] Statement tidak berfungsi

Saya mengalamai satu masalah di mana query MySQL UPDATE tidak berfungsi. Agak pelik apabila $db->prepare dan $db->query memberi respon yang kosong, tiada perubahan database server tiada juga error dalam log.

Disebabkan itu, saya cuba melakukan query tersebut di sekeliling code untuk mencari di manakah query tersebut berfungsi dan di mana tidak. Lalu saya dapati query tersebut tidak berfungsi selepas code ini:

if($sqlexec = $db->prepare("SELECT time from download_log WHERE userid=? ORDER BY id DESC LIMIT 1")){
    $sqlexec->bind_param("i", $userID);
    $sqlexec->execute();
    $sqlexec->bind_result($time);
    while($sqlexec->fetch()){
        $timeout = (time()-$time);
        if($timeout<5*60){   
          $msg->send("You must wait ".(5*60-$timeout)." seconds before adding a new link.", "HTML"); exit;
        }      
        break;
     }
}

Saya berfikir sejenak lalu memutuskan untuk menutup statement SQL tersebut menggunakan $sqlexec->close():

if($sqlexec = $db->prepare("SELECT time from download_log WHERE userid=? ORDER BY id DESC LIMIT 1")){
    $sqlexec->bind_param("i", $userID);
    $sqlexec->execute();
    $sqlexec->bind_result($time);
    while($sqlexec->fetch()){
        $timeout = (time()-$time);
        if($timeout<5*60){
            $msg->send("You must wait ".(5*60-$timeout)." seconds before adding a new link.", "HTML"); 
            exit;
        }
        break;
    }
    $sqlexec->close();
}

Berjaya! Saya tidak tahu kenapa statement ini tidak tertutup sendiri setelah selesai, tetapi mungkin membiasakan diri untuk menutup prepared statement setelah selesai adalah sesuatu yang bagus sekaligus dapat mengelakkan bug yang tidak dijangka.

1

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915

Ralat ini muncul ketika saya cuba menaik-taraf kernel. Saya tidak membuat penyelidikan yang lebih mendalam untuk mengetahui fungsi fail-fail ini, tetapi cara membetulkannya amatlah mudah.

Apa yang anda perlukan adalah memuat turun fail yang terlibat daripada pautan ini.
Berdasarkan ralat yang saya dapat iaitu

W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

Fail yang saya perlukan adalah kbl_dmc_ver1_01.bin, kbl_guc_ver9_14.bin, bxt_guc_ver8_7.bin.

Setelah saya memuat turun fail-fail berkenaan, saya cuma perlu salin ke lokasi /lib/firmware/i915/.

$ sudo cp kbl_dmc_ver1_01.bin /lib/firmware/i915
$ sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915
$ sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915

Panduan ini ditulis semula pada 2 Ogos 2018

0

Failed to start ghost.service: Unit ghost.service not found

Ghost adalah sebuah blog yang amat cantik dan mudah digunakan. Setelah saya restart server, saya gagal memulakan Ghost. Agak pelik mengapa unit service hilang selepas reboot.

Cara untuk membetulkan masalah ini khas kepada pengguna ghost-cli.

  1. Mula-mula, pergi ke directory blog anda. Lalu edit config.production.json.
  2. Padam line"process": "systemd", dari config berkenaan.
  3. Kemudian setup system init script kembali dengan menaip sudo ghost setup systemd

Setelah selesai, blog anda boleh dimulakan seperti biasa:

$ sudo ghost start
0

autoreconf: failed to run autopoint: No such file or directory

Jika anda mendapat ralat ini, solusinya amat mudah!

Saya menggunakan Ubuntu 16.04 dan log masalah yang saya dapat adalah seperti dibawah:

autoreconf: Entering directory '.'
autoreconf: running: autopoint --force
Can't exec "autopoint": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.
autoreconf: failed to run autopoint: No such file or directory
autoreconf: autopoint is needed because this package uses Gettext

Cara untuk membetulkannya adalah dengan memasang autopoint

$ sudo apt install autopoint
0

Http error 499 Nginx

Pertama kali saya melihat kod ralat ini, saya agak runnsing kerana carian di Google tidak membantu. Cuma informasi yang saya dapat adalah, kod ini khas untuk Nginx dan terjadi apabila klien memutuskan hubungan sebelum Nginx sempat memberikan kod respon.

Setelah saya siasat, saya mengesyaki puncanya adalah dari PHP-FPM. Ini kerana Nginx berfungsi dengan baik, tetapi fail PHP memgambil masa amat lama apabila dibuka dan akhirnya berakhir dengan timeout. Kemudian saya dapati ini adalah kerana kesilapan saya dalam kod PHP di mana while loop berjalan tanpa henti (infiniti). Apa yang saya lakukan adalah memberhentikan PHP-FPM

$ sudo systemctl stop php7.1-fpm

Kemudian saya betulkan kesalahan kod PHP tadi, lalu menghidupkannya semula:

$ sudo systemctl start php7.1-fpm