Thursday, September 17, 2026

Debian 13: jakarta tomcat & openjdk 21 installation (part 1)

Assume openjdk 21 installed, it is lts verssion.

Download latest jakarta tomcat from https://tomcat.apache.org/download-11.cgi, i.e. version 11.0.26 (currently).

extract it into your home (user) directory

change permission to start jakarta tomcat

$ cd apache-tomcat-11.0.26/bin/
$ chmod 744 *.sh

Directory structure is:

  • bin
  • conf
  • lob
  • logss
  • temps
  • webapps
  • work 

You must add user to manage your jakarta tomcat. User rules are:

  1. manager-gui - allows access to the HTML GUI and the status pages
  2. manager-script - allows access to the text interface and the status pages
  3. manager-jmx - allows access to the JMX proxy and the status pages
  4. manager-status - allows access to the status pages only 

Edit <tomcat_home>/conf/tomcat-users.xml

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
...
  <role rolename="manager-gui"/>
  <user username="admin" password="admin" roles="manager-gui"/>
</tomcat-users> 

To run jakarta tomcat

$ ./startup.sh&
[1] 6430
~/apache-tomcat-11.0.26/bin$ Using CATALINA_BASE:   <home>/apache-tomcat-11.0.26
Using CATALINA_HOME:   <home>/apache-tomcat-11.0.26
Using CATALINA_TMPDIR: <home>/apache-tomcat-11.0.26/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       <home>/apache-tomcat-11.0.26/bin/bootstrap.jar:<home>/apache-tomcat-11.0.26/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

[1]+  Done                    ./startup.sh

Open your browser and open url http://localhost:8080/. 

To shutdown, run $ ./shutdown.sh.

Your application will on <home>/webapps and root for http://localhost:8080 is on <home>/webapps/ROOT/

For production, go to "List Application", Undeploy any unused applications.  

 

Friday, July 10, 2026

Debian 13: installing mysql-workbench-community

Download apt configuration from https://dev.mysql.com/downloads/repo/apt/ , current version is mysql-apt-config_0.8.39-1_all.deb

here is configuration for non cluster only target to mysql workbench

  • MySql Server & Cluster: mysql 8.4 lts
  • MySql Connector: non/disable -> enable if you need MySql connector e.g. jConnector

# dpkg -i mysql-apt-config_0.8.39-1_all.deb 
Selecting previously unselected package mysql-apt-config.
(Reading database ... 232081 files and directories currently installed.)
Preparing to unpack mysql-apt-config_0.8.39-1_all.deb ...
Unpacking mysql-apt-config (0.8.39-1) ...
Setting up mysql-apt-config (0.8.39-1) ...

mysql-workbench-community is not available for Debian 13  

credit: online html escape https://www.freeformatter.com/html-escape.html#before-output 

Thursday, June 25, 2026

Menelpon keluar negeri berdasarkan operator dan NATO phonetic alphabet

Menelpon keluar negeri berdasarkan operator 

  1.  telkomsel/by.u
    1. 01017+[nomor_lengkap] tarif Rp. 350 per menit terbatas negara: Australia, Bangladesh, Brunei Darussalam, China, Hong Kong, India, Malaysia, Singapura, Korea Selatan, Thailand, dan Amerika Serikat/Kanada (tidak termasuk destinasi Hawaii)
    2. 007+[nomor_lengkap] tarif Rp. 4.550 per menit
  2. indosat im3
    1. 001+[nomor_lengkap] atau 008+[nomor_lengkap] tarif cek https://im3.id/portal/id/psinternationalcallandsms contoh australia Rp. 5.000 per menit.
    2. 01016+[nomor_lengkap] tarif cek https://im3.id/portal/id/psinternationalcallandsms contoh australia Rp. 1.500 per menit.
  3. xl (tidak diinformasikan secara resmi di xl.co.id
    • 01000+[nomor_lengkap] atau 01017 +[nomor_lengkap], memerlukan paket Nelpon Internasional XL
  4. three/3
    1. 001+[nomor_lengkap] atau 008+[nomor_lengkap], memerlukan paket Paket Nelpon Luar Negeri, contoh australia Rp. 7.350 per menit 
    2. 01016+[nomor_lengkap], memerlukan paket Paket Nelpon Luar Negeri, contoh australia Rp. 1.500 per menit.  
    3. paket yang tersedia https://tri.co.id/nelpon-luar-negeri
      1. Nelpon Luar Negeri     30     1 Hari     30 Menit
      2. Nelpon Luar Negeri     100     30 Hari     100 Menit 

 

NATO phonetic alphabet:

  1. A – Alfa
  2. B – Bravo
  3. C – Charlie
  4. D – Delta
  5. E – Echo
  6. F – Foxtrot
  7. G – Golf
  8. H – Hotel
  9. I – India
  10. J – Juliett
  11. K – Kilo
  12. L – Lima
  13. M – Mike
  14. N – November
  15. O – Oscar
  16. P – Papa
  17. Q – Quebec
  18. R – Romeo
  19. S – Sierra
  20. T – Tango
  21. U – Uniform
  22. V – Victor
  23. W – Whiskey
  24. X – X-ray
  25. Y – Yankee
  26. Z – Zulu  

 

ETLE dan stnk terblokir saat perpanjangan

Sebelum perpanjangan stnk coba cek dulu, apakah kendaraan di blok terkait etle (Electronic Traffic Law Enforcement). jangan sampai di samsat baru buka blokiran ya, lama banget. 

Siapkan 

  1. Nomor kendaraan
  2. Nomor kerangka kendaraan
  3. Nomor mesin kendaraan

Buka internet melalui browser lalu cari "ETLE PMJ" melalui mesin pencari. ini link-nya https://etle-pmj.id/ , namun bisa berubah tergantung kondisi.

Masuk menu cek data, dan masukan data yang telah disiapkan. bila kendaraan kamu terkena etle, pastikan itu memang kendaraan milik anda. bila benar anda bisa melakukan konfirmasi. bila tidak benar anda bisa menyanggahnya.

Bila kendaraan terkena etle saat konfirmasi anda akan diminta melengkapi data pribadi untuk dapat dihubungi. berikan data yang benar. Setelah itu anda akan menerima surat perintah bayar dengan nomor "BRIVA" yang berupa 15 angka. Lakukan deposit denda melalui bank bri atau aplikasi bri. Dari bank lain, jumlah tidak muncul. setelah pembayaran, blokir stnk terbuka. 

Note: pastikan anda telah membayar semua pelanggaran yang tertangkap etle.

Setelah dibayar, akan muncul konfirmasi dan anda akan menerima pesan tanggal sidang dan "No Blanko Tilang". 

melalui browser cari "ETLE kejaksaan" atau https://tilang.kejaksaan.go.id/be/ untuk mengecek sidang anda.

setelah tanggal sidang anda bisa melihat besaran denda tilang yang dibebankan ke anda. bisa kurang atau lebih bayar tergantung putusan sidang.  bila lebih bayar, ada 2 pilihan, pengambilan tunai atau transfer ke bank bri.

Wednesday, June 17, 2026

Android java: migrate build to gradle version catalog

create a new gradle catalog, project -> gradle -> new -> Version Catalog, it will prompt "lib" and press enter.

fill libs.version.toml with agp version


[versions]
agp = "9.2.1"
appcompat = "1.7.1"
material = "1.14.0"
constraintlayout = "2.2.1"
junit = "4.13.2"
androidx-junit = "1.3.0"
espresso-core = "3.7.0"
play-services-ads-lite = "25.0.0"

[libraries]
appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
material = { module = "com.google.android.material:material", version.ref = "material" }
constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }

junit4 = { module = "junit:junit", version.ref = "junit" }
androidx-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-junit" }
espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso-core" }

play-services-ads-lite = { module = "com.google.android.gms:play-services-ads-lite", version.ref = "play-services-ads-lite" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }

agp in [version] and [plugin] must exist.

edit build.gradle.kts

change


dependencies {

    implementation("androidx.appcompat:appcompat:1.7.0")
    implementation("com.google.android.material:material:1.12.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.2.1")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
    implementation("com.google.android.gms:play-services-ads-lite:23.3.0")
}

 to


dependencies {

    implementation(libs.appcompat)
    implementation(libs.material)
    implementation(libs.constraintlayout)

    implementation(libs.play.services.ads.lite)

    testImplementation(libs.junit4)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.espresso.core)
}

Synchronize project and change


plugins {
    id("com.android.application")
}

to


plugins {
    alias(libs.plugins.android.application)
}