Tampilkan postingan dengan label komputer. Tampilkan semua postingan
Tampilkan postingan dengan label komputer. Tampilkan semua postingan

08 Desember 2015

command abbreviation in gnuplot

Basically it can be anything, as long as not conflicting with others, for example:
  • filledcurves; filledcu
  • transparent; trans trasp transpa
  • using; u
  • title; t, ti
  • solid; sol, soli
  • closed; clo, clos
Funny eh?

20 Februari 2013

simple solution of slow treeview in pygtk

I found out that the solution was pretty simple. Instead of putting every value into _attached_ treeview's model, it is much faster to detach the model first, fill it with data, then reattach the model into treeview again. The improvement was very significant.
here is the sample code.
treeVw.set_model(None)
batch_insertdata(dataList)
treeVw.set_model(dataList) 

15 Februari 2013

detecting loop in single linked list

Very nice write up about this problem that made me finally understand. The key explanation is finally the fast pointer (hare) will overlap the slower one (tortoise).

The tortoise moves one step, the hare moves two steps. When there's a loop, no matter when/where, for sure they will on the same position. Amazingly, its complexity is only O(n).

05 Januari 2013

hello, world in django

creating project

$ django-admin startproject DOC
$ ls DOC/
__init__.py  manage.py  settings.py  urls.py
test the server
DOC$ ./manage.py runserver
get this page http://localhost:8000/
untouch project page


creating apps inside the project
$ cd DOC/
DOC$ ./manage.py startapp doc_ui
new folder doc_ui created
DOC$ ls
doc_ui  __init__.py  __init__.pyc  manage.py  settings.py  settings.pyc  urls.py

DOC$ ls doc_ui/
__init__.py  models.py  tests.py  views.py
showing a "hello, world":
  1.  make following changes 
    •  add
    (r'^doc_ui/', 'DOC.doc_ui.views.index'),
    to url_patterns in file urls.py
    • add
    'DOC.doc_ui', 
    to INSTALLED_APPS in file settings.py
  2. write this to file views.py
        from django.http import HttpResponse
        def index(request):
                return HttpResponse("Hello, world.")
run/restart the server
DOC$ ./manage.py runserver

Access through http://localhost:8000/doc_ui/ and then hello, world should show up thats all :D, but it is useless.

So far it is a beginning to write the controller part in MVC paradigm. If you have entities in your system that can be modelled as objects, django provides stunning approach to handle them as model (of MVC). The class declaration, the persistent database and the interface are seamlessly connected and provided instantly.

23 Oktober 2011

coq au curry

Math is always a fascinating subject for me. Particularly the one related to proof and type theory that coined out in curry howard isomorphism. Strange somehow, that I could graduate from bachelor in informatics without knowing this theorem.
My curiousity grows even wilder when I work around people who acquintance with this and using incredible tool such as Coq. It's so cool! Then I dig further into this. Let's see what can I learn from this curiosity.

05 September 2011

hiding menu on xournal



Before shorten menu

Two rows of toolbar while working with xournal on small screen might be difficult. They consume too much space. Xournal manual point out how to hide these toolbar.
check your ~user/.xournal/config. It can be generated by saving preference.
Then edit the value of this line:
shorten_menu_items=toolbarMain toolbarPen hbox1
toolbarMain for top toolbar
toolbarPen for below top toolbar
hbox1 for status bar


After shorten menu

I got these values from xournal.glade of the xournal source code as pointed out by xournal user manual. The lines on xournal.glade are:
widget class="GtkToolbar" id="toolbarMain"
widget class="GtkToolbar" id="toolbarPen"
widget class="GtkHBox" id="hbox1"

28 Februari 2011

PalmOS

First time I learnt to write program on non-pc machine was on the last year of my bachelor degree, using palm sdk. Nothing special except the input output that must be done through strange GUI interface. I used emulator that claimed to be exact emulation of the real hardware. In old Linux distribution this emulator known as pose, but it no longer exists on new distribution.

Now I have the real Palm gadget, with PalmOS v3.5.2. There are some resources that show how to install linux on it, but I don't want to dismiss the graffiti, though unnatural it is just so cool.
I think I should write a fun stuff on this platform again. The problem is the dead link of the development tools. From this exploration, I learn a notion of cross compiler. Really interesting.
I think I wrote a lot after having this cool historical gadget.

Good Bye Lenny, I've got squeeze

last updated: 1,2 May 2011

Hopefully Squeeze will solve problems on my lenny, yes indeed.
Installation was done smoothly. Faster booting and shutdown. At first there are still problem with brightness and touchscreen to work together, but lenny trick on manipulating grub loader works perfectly, and anything else just perfect. Even sleep and hibernation features that were unsolved in lenny, now work flawlessly.
Now my laptop is just like an expensive laptop should be.

  1. Warning: probably terrible bug on my BIOS. The touchscreen does not work unless it is in working state in windows. Weird no?

    My computer arrived with windows XP professional installed. I don't want to remove it because I want to be able to play some oldskool game during my happy university life. Once I boot my windows sometimes the touchscreen doesn't work. Then I have to reboot it and by chance it work. Before I boot my linux, I have to make sure that the touch screen is working state in windows.

    Rumour says that there are bugs in Windows Vista related to the BIOS, then the BIOS manufacturer accommodate this bug and change the correct implementation of the BIOS into something wrong.
    Yup it is definitely an ill fate design.
    Update: I was wrong. It was caused by additional input device that shift the device numbering N on /dev/input/eventN. However the BIOS rumour is not wrong.


23 Februari 2011

New PDAs

Last week I bought a Palm m105, and today I bough another one, a Handspring visor which was released earlier. They have the same operating system, PalmOS v3.x though different minor version.

I prefer visor appearance that looks modern, like today high-end pda-phone. But both hardware is almost the same, Motorola dragonball 16MHz, infra red and stylus. However I feel m105 has better response, maybe the newer version OS is faster. The power is provided by 2 AAA batteries that are easily found. Though apparently consume more power, visor can preserve its state, when the batteries are removed for short time, unlike m105 that will lose its state once it lose the power.

The m105 was completely new, came with all inside the package box, except the box itself. Meanwhile the visor came with nothing, so I can only use the IrDA connection to communicate with computer.

Paragraphs above are written on Handspring visor which has larger screen, but there is something missing there, note pad, that gives possibility to draw scratches. However I tried to install a third party drawing software. It worked, but I haven't figured out how to transfer the artwork to a pc.

The connection scheme is visor-m105-pc. The m105 uses serial port, so I have to provide usb to serial converter for my laptop which doesn't have serial port. Fortunately my friend gave me one, great! It cost more expensive than the PDAs both. I also eye an apparently usb infrared extension in the 2nd hand shop, it's cheap, but my mean mind still reluctantly agree.

17 Februari 2011

ins dtx and sty

Often when we need an extra package on latex we get a zip file contains *.ins and *.dtx. I just learn today that those files will create the *.sty and the documentation.
First run latex on the *.ins (mainly for creating the *.sty) and then run *.dtx several times (mainly for creating the documentation).
More explanation is here.

13 Februari 2011

Graffiti

Graffiti(1) is an old handwriting input method from Palm. Very fast and accurate, though unnatural. Probably this is the best input method for handwriting, at least a newly released version for Android has just been released.

It maybe a very nice example of an awful impact of a patent infringement. The lost of Palm over Xerox in this case forced Palm to ship its gadget without Graffiti, instead they are shipped with Graffiti2 which is less intuitive. It caused outcry to Palm fans, who have been well trained with Graffiti. Furthermore it might be the cause of the plummet of its market.

31 Desember 2010

correct

From a short lecture of this guy, which was very interesting, I tried to crawl internet further.
Taken from the site of weakmemory:
Multiprocessors are now dominant, but real multiprocessors do not provide the sequentially consistent memory that is assumed by most work on semantics and verification. Instead, they have subtle relaxed (or weak) memory models, usually described only in ambiguous (and sometimes flawed) prose, leading to widespread confusion.


Very scary short information. In fact processors specification which is written on their manual are usually written in obscured sentence, instead of in mathematical notation. There are several reasons for that, either they are simply bug, accommodating future changes or avoid patent infringement.

So the lesson from this is to make sure that your code is robust against this obscure features, particularly when you have to deal with critical software.

last posting on this year, and again about computer? what a pity!

13 Oktober 2010

Configuration for 'optimal' eco performance linux on USB disk

It has been around 1 year I've been using my USB-disk linux installation as my main computing platform. Generally it is slow, particularly for writing. I even feel it runs much slower during shutdown. Just like general flash-disk devices, USB-disks have limited read-write lifetime, therefore I try to minimize any access to the disk. The idea is maximizing the usage of memory for read-write operations that occur very often.
Here are my configuration:

  1. /tmp. This directory is used for temporary read-write by default. I think in some distro this directory is put on memory by default when there are vast amount of memory. I also put the cache of favorite application there. Add a starting script on /etc/rcS.d/. Copy from one of it, change the name into Ssomething and modify the content as the following:

    ...
    ### END INIT INFO

    . /lib/init/vars.sh
    . /lib/lsb/init-functions

    make_tmp() {
    #preparing /tmp
    mkdir /dev/shm/tmp
    chmod 777 /dev/shm/tmp
    #we also prepare the browsers cache
    mkdir /dev/shm/tmp/google-chrome
    chmod 777 /dev/shm/tmp/google-chrome
    mkdir /dev/shm/tmp/epiphany
    chmod 777 /dev/shm/tmp/epiphany
    }
    case "$1" in
    start)
    # Using 'no !=' instead of 'yes =' to make sure async nfs
    # mounting is the default even without a value in
    # /etc/default/rcS
    make_tmp
    ;;
    ...
    Note: I usually use those two browser, haven't found out where are the cache of opera nor firefox/iceweasel.
  2. Swap file. Never ever use the flash disk as swap file/swap partition, I think it will shortened the lifespan of the disk a lot. I use my unused VGA memory as my swap file. The script is following. Note that sometime you need to run it twice, I don't know why.
    modprobe slram map=VRAM,0xc4000000,+0x0c000000
    modprobe mtdblock
    mkswap /dev/mtdblock0
    swapon /dev/mtdblock0
    swapon -s

  3. Installation cache and configuration (/var/cache/apt/) can be put on external disk and make a symlink to its proper directory
Warning: you must aware that having cache on memory may cause your computer runs out of memory, and using VGA card as swap file is unsafe.

14 September 2010

CUPS page size error on HP laserjet

From today's experience, I found that it might be caused by wrong PCL option. When I chose PCL6 the page size printed was only halfsized. But after I chose PCL4/5 it was OK.


Printing using command line is the following(watch out the CAPITAL P for specifying page!):
For two sides:
lp -d dest_print -o media=a4 -o sides=two-sided-long-edge -P 1-3 file.pdf


For two sides, each side two pages (for this setting the page numbering is strange, e.g. for printing page 1 to 8 you write -P 1-4, for 15-22 write -P 8-11, and the sides SHORT option is important to prevent having upside down pages):
lp -d dest_print -o media=a4 -o sides=two-sided-short-edge -o number-up=2  -P 1-4 file.pdf

23 Agustus 2010

Challenge of amd64

Last update: 22 Sept 2010, 1 Oct 2010, 2,4,17 Jan 2011, 1 Feb 2011, 25 March 2011




Succeed with installing 64 bit lenny on my computer, now I have many problem with this 64 bit. At first it was fun, that I had to compile or configure many things, which were not available as is. Now I'm deeply considering of moving back to 32 bit, even on the first day I've asked myself how long I will stand with this 64 bit stuffs. Today I get a bitter experience that I cannot compile a software platform on which I'm working on. The compiler run for hours, but a lot of trailing errors afterward.
The amount of time needed for compilation has discouraged me for doing further observation. I'd like to make it works actually. [Hi this platform uncompiled was not amd64 fault!]
Since the platform only compatible to 32 bit OS, I have to provide all the libraries
needed in 32 bit. Therefore instead of using synaptic debian package manager(which provides 64 bit libraries only by default), I have
to grab the library source code and then recompile it into 32 bit. Details are provided below under installing 32 bit library matter.
Note: many resources in internet about the trouble of linux 64 bit mostly a bit out of date. Lenny has fixed a lot of thing. One useful tips when we cannot find 64bit version of debian is just taking the 64 bit version of ubuntu, it works for me for skype.


Now let me list my footprints until I arrive here:

  1. Wireless, using iwlagn. Note that you must have access to the backport of lenny. If you don't have wired access you can also download the files one by one, and run dpkg -i packageName.deb
    Somehow you need to call ifconfig wlan0 up before calling iwconfig
  2. flash plugin was taking a very long way, until I found Debian Lenny 64 bit installation. It is really good. It points to How to get flash working in 64 bit. Follow the instruction! Just remember to download the keyring manually before touch the repository.
    Update: Adobe has just provided native 64 bit flash player plugin. Just untar and put the library on place
    cp libflashplayer.so  /usr/lib/mozilla/plugins/

  3. Screen off just using vbetool from official repository
  4. skype, just grab ubuntu64 deb package from skype's website
  5. pidgin, need to compile the newest distribution from scratch. The binary from repository doesn't provide client for yahoo and msn messenger.
  6. Speaker. My speaker is mono (written as monaural to be cooler). It didn't output sound, even though the headphone jack is work perfectly. Following ubuntuforum about "Headphones work-no internal speaker sound?", I found that debian has a bit different configuration. Debian doesn't have /etc/modprobe.d/alsa-base.conf, instead it split it into /etc/modprobe.d/alsa-base and another file /etc/modprobe.d/sound. I change the options on /etc/modprobe.d/sound from
    alias snd-card-0 snd-hda-intel
    options snd-hda-intel index=0
    into
    alias snd-card-0 snd-hda-intel
    options snd-hda-intel model=laptop


  7. Compile latest kernel. It's supposed to fix backlight problem but gain nothing.
    Other thing I get is it "How easy it is to compile kernel". In newer kernel Intel wireless driver is given out of the box. Here the step for kernel compilation, an experience version of this instruction with a fix for lenny:

      Download the latest stable kernel from here
      Extract it
      Prepare/clean everything there. It will delete everything you put there

      make clean && make mrproper

      copy configuration file from /boot/. Its name is config-your-kernel-name. It is the most convenient way instead of create configuration from scratch.
      Name the new file as ".config"
      REFINE ".config"
      make menuconfig

      there should be ....coutinued...sorry I forgot some steps. There is a mandatory step to copy some generated code to the kernel source include folder. please look for it on internet.


  8. network manager. I got no luck with gnome network manager with lenny, unlike when I installed ubuntu. Fortunately there is wicd package that work out of the box. Give it a try if you have the same experience :^).

  9. Installing 32 bit library on it. It was a desperate effort, that finally turn into a hack. First install the 64 bit version as usual using synaptic. Then delete the 64 bit library. Afterwards put the 32 bit library on the same place as the location of deleted 64 bit, no need to copy the symlink, ldconfig will do it for you. Run ldconfig. voila! Here is the illustration. RESULT: program is compiled, but not run!
    kompie# ls /usr/lib|grep gsl
    libgsl.a
    libgslcblas.a
    libgslcblas.so
    libgslcblas.so.0
    libgslcblas.so.0.0.0
    libgsl.so
    libgsl.so.0
    libgsl.so.0.12.0
    kompie# rm /usr/lib/libgsl*
    kompie# ls /usr/lib|grep gsl

    All 64 bit libs have been deleted. Now put the 32 bit ones.

    kompie# cd gsl-1.0/
    kompie/gsl-1.0# cp .libs/libgsl.a /usr/lib
    kompie/gsl-1.0# cp .libs/libgsl.so.0.0.0 /usr/lib
    kompie/gsl-1.0# cp cblas/.libs/libgslcblas.
    libgslcblas.a libgslcblas.lai libgslcblas.so.0
    libgslcblas.la libgslcblas.so libgslcblas.so.0.0.0
    kompie/gsl-1.0# cp cblas/.libs/libgslcblas.a /usr/lib
    kompie/gsl-1.0# cp cblas/.libs/libgslcblas.so.0.0.0 /usr/lib/
    kompie/gsl-1.0# ls /usr/lib|grep gsl
    libgsl.a
    libgslcblas.a
    libgslcblas.so.0.0.0
    libgsl.so.0.0.0
    kompie/gsl-1.0# ldconfig
    kompie/gsl-1.0# ls /usr/lib|grep gsl
    libgsl.a
    libgslcblas.a
    libgslcblas.so.0
    libgslcblas.so.0.0.0
    libgsl.so.0
    libgsl.so.0.0.0
    kompie/gsl-1.0#
    Warning!!! All this hacking trick DID NOT work! Finally I do this following to compile my GSL library into 32 bit
    $ CFLAGS="-m32 -g -O2" LDFLAGS="-m32" ./configure i386

  10. Backlight control....again. Didn't get any luck from recompiling kernel, again a retried my with other driver module, now it is from Regis Prevot, watchout, the ssl configuration in your browser might be nasty. Just take panasonic_acpi.c and the Makefile. This driver was intended to be used with W7 and W7, that have DVD drive. Since mine is T-series I have to remove all DVD related code. I don't know if it was caused by my highly abusive kernel recompilation so the compilation related to DVD device was failed.

    Before loading the new driver, first I have to remove panasonic_laptop module, I dont know how to do it. So I do it brutally, remove the file from the kernel ;^(, then reboot. Run "depmod -a" to remove its entry as well. Finally run "modprobe panasonic_acpi" to load the new driver, this command will not succeed unless you remove the panasonic_laptop module.
    Result: The driver is succesfully loaded, but the screen back light is still inaccessible.

  11. Fullscreen problem with mplayer. It's only simple fix on xorg.conf, just add driver to the device.
    Section "Device"
    Identifier "Configured Video Device"
    Driver "intel"
    EndSection


  12. Touchscreen that haunted me from the beginning finally works pretty well. I use evtouch. Instead of using the installation from debian repository, I used the latest version (0.8.8) and compile it. A simple trick about the installation directory; by default it installs on /usr/local/lib/ but my X cannot find it, and I cannot find how to make it works. So I change the prefix entry on the Makefile, instead of /usr/local, I change it into /usr.

    The main issue with the driver from debian repository is its ability to act like mouse. It can only draw horizontal or vertical line.

    Here is my xorg.conf entry as the result of try and error calibration process:
        
    Option "MinX" "50"
    Option "MaxX" "3900"
    Option "MinY" "150"
    Option "MaxY" "4050"
    Note that the log from /var/log/Xorg.0.log has an entry "Setting screen physical size to 270 x 203"

  13. Screen rotation is pretty simple using xrandr. From shell just type:
     xrandr -o left


  14. Brightness, a success story :D. Just make sure you have "panasonic_laptop" module in your kernel. Run "depmod -a" to make sure everything properly listed, check using "lsmod -a", if not listed run "modprobe panasonic-laptop". Yup that's the preliminary.
    This is the most important thing, set the grub! Look for this similar line code on /boot/grub/menu.lst
    kernel /boot/vmlinuz-2.6.35.3-intel-amd64 root=UUID-...-xxxx ro
    then change into [the "=" sign is not a cosmetic]
    kernel /boot/vmlinuz-2.6.35.3-intel-amd64 root=UUID-...-xxxx ro acpi_osi=

    Voila brightness accessible trough:
    root# echo BRIGHTNESS > /sys/class/backlight/panasonic/brightness
    Note root access is mandatory, therefore we need to fix the acpi script ... where BRIGHTNESS value between 0 to 21
  15. I upgrade to Squeeze

  16. Still many things to go ...

07 Agustus 2010

Installing debian 64 bit on intel laptop from USB flash disk


First of all, in debian, 64 bit for ordinary intel processor is denoted as AMD64
instead of IA64, which is totally different architecture that is die casted
on unpopular intel Itanium processor only.

The procedure is quite simple.

  1. Use unetbootin to create a bootable usb disk debian linux installer. I personally
    suggest using [Distribution], then I choose "Debian" and "Stable_HdMedia_x64".
    After the process done, check whether /dev/sdX1 mountable. If not try to plug the stick off
    and plug it in again, hopefully it will be automounted. From this point forward
    I assume we can mount and write into /deb/sdX1, e.g. mount into /mnt/usb/

  2. Download debian-505-amd64-CD-1.iso from debian.org and copy the file into mount point
    of /dev/sdX1 (eg. /mnt/usb/). The installer is supposed to fetch this file from
    the network. But when we cannot configure our laptop to have internet connection
    this should help. Moreover the inetbootin can be configured in Windows!

Voila...
We have a USB installer with full support from CD1 of debian lenny.

warning: this procedure is proven doesn't work for squeeze

20 Juni 2010

specification pattern


a very nice site about specification patterns to be verified using formal method :


16 Juni 2010

some useful daily scripts

Last update: 13 Feb 2011
I wrote several simple scripts to manipulate the content of files. Most of them are written in bash, but due to my lack of expertise sometimes I mixed bash with make, and perl. It will be very practical.. almost no explanation, but I'll try to gradually improve this article. Here are they:

  1. Find the files with specific content
    find . -type f -name "*.bash" -print0|xargs -0  grep -ne "keyword"


  2. Change certain content of files in batch manner. Just copy these script into a command.bash, and change the permission then run it (command filenamepattern old new)
    ./command.bash "tt*" tir ti
    The script:
    #!/bin/bash
    
    TMPDIR=/tmp
    
    fname=${1}
    old=${2}
    new=${3}
    tmpfile=${TMPDIR}/$$.tmp
    #echo "ls ${fname}"
    for mydataset in `ls ${fname}`; do
    echo "${mydataset}"
    cat ${mydataset} | sed -e "s/${old}/${new}/g" > ${tmpfile}
    mv ${tmpfile} ${mydataset}
    done
    
    
    


  3. Delete a bunch of file
    If you have thousand of files, rm * will not work, therefore here is an alternative. Create a makefile with the following entry and call make clean.
    clean:
    find . -name "*.log" -print -exec rm {} \;
    
    
    

  4. Creating tags for emacs
     find . -name "*.[chCH]" -print | etags -

    In case you have only few files
     etags file1 file2 ...
  5. Removing Hijriah calendar from islamicfinder.com praying timetable :). Often the hijriah date make me confuse and pick a wrong time. I do it in vi using this search and replace command.
    :%s/[0-9]*\/[0-9]*\t//g

  6. Cleaning carriage return/line feed (crlf) but left double crlf. I use this for formatting my latex style text file (which uses crlf extensively) before I upload it into blogger.
    cat fileinput |sed -n 'H;${g;s/\n/crlf/g;p}'| sed -n 'H;${g;s/crlfcrlf/\n\n/g;p}'| sed -n 'H;${g;s/crlf/ /g;p}' > file output

  7. Resize pictures/images, 1024 is the width
    mogrify -resize 1024 *.jpg
  8. Montage/combine/collate pictures into one
    montage *.jpg -tile 1x2 -geometry 1024 combine.jpg
  9. Convert  images into pdf
     mogrify -format pdf *.jpg
  10. Download Al-Quran ayats.
    #usage:
    # want to download albaqarah ayat 1 to 10
    # to download other ayat you must change this script accordingly
    # just to list the download commands
    #$ bash dlayat.sh 1 10
    # actually download
    #$ bash dlayat.sh 1 10 download
     
    i="${1}"
    j="${2}"
    download=0
    if [ "${3}" == "download" ]
    then
        download=1
        echo download
    fi
    
    while [ $i -le  $j ] 
    do
    padd=""
    if [ $i -lt 100 ] 
    then
     padd="0"
    fi
    if [ $i -lt 10 ]  
    then
     padd="00"
    fi
    
    if [ $download -eq 1 ]
    then
        wget http://www.everyayah.com/data/Ghamadi_40kbps/002${padd}${i}.mp3
    else
        echo wget http://www.everyayah.com/data/Ghamadi_40kbps/002${padd}${i}.mp3
    fi
    i=$[$i+1]
    done
    
  11. Converting raw images into jpg in batch manner
    #change the raw file extension accordingly
    thepath=${1}
    
    for file in `ls ${thepath}*.CR2`; do
        ufraw-batch --out-type=jpg ${file}
    done
    
  12. To be continued..

06 Juni 2010

service bagus telkom speedy


Hari itu pas hari minggu, hujan deras. Pas mau magrib internet gak jalan.
Telpon ke customer service telkom disuruh restart dsb, tapi tetap
saja tidak jalan. Akhirnya dijanjikan akan dicek ke rumah.

Sekitar jam 7 malam, beneran ada petugas yang datang, ngecek koneksi dsb.
Eh ternyata memang koneksi ADSL nya yang lepas di central stationnya.
Mas petugasnya nelpon temannya yg bagian jaringan dan akhirnya dibenerin
di centralnya.
Salut.. hari minggu malam2 hujan deras pula. Salut telkom speedy.

Sejauh ini hanya itu saja masalah yg terjadi, speed ke lokal baik2
selalu, sekitar 300kbps. Begitu ngakses di luar IIX.. mampus deh..
tapi masih acceptable. berikut screen shotsnya:











Ini speed waktu download package dari shol.vlsm.org