Ini ialah arahan mppg yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
makeppgraph -- Analisis grafik bagi graf pergantungan
DESCRIPTION
?: -?, A: -A,
--args-file,
--fail-hujah, B: -b,
--kerana,
--bina-sebab, C: &cwd, D: -D,
-d,
--kebergantungan,
&dir,
--titik,
--bawah,
--ke bawah, G: -g,
--graphviz, H: -h,
--bantuan,
&rumah,
--html, I: -saya,
-saya,
--termasuk,
--include-dir,
--termasuk, L: -l,
--log,
--fail log, M: -M,
-m,
&makepp,
$MAKEPPGRAPHFLAGS,
--bercantum,
--modul, O: -o,
--pengeluaran, P: -p,
--kosong, R: -r,
--menamakan semula, S: -ya,
--arah-asing,
&suf, T: -t,
--teks, U: -u,
--atas,
--ke atas,
&usr, V: -V,
--versi
makeppgraph [ pilihan ... ] [ pola ... ]
mppg [ pilihan ... ] [ pola ... ]
Mereka berkata "Sebuah gambar bernilai seribu perkataan". Jadi mari kita lukis kebergantungan anda atau sertakan
graf dari pelbagai sudut pandangan. Lihat galeri
<http://makepp.sourceforge.net/gallery/> untuk mendapatkan beberapa idea tentang perkara yang boleh anda lakukan.
Setiap nod mewakili fail sumber atau sasaran, diwarnakan mengikut corak nama fail.
Nod fail adalah segi empat tepat. Nod sasaran palsu adalah bujur. Setiap tepi pepejal mewakili
pergantungan langsung. Secara bergantian atau tambahan anda boleh memaparkan sertakan perhubungan sebagai
garis putus-putus. Untuk paparan teks yang lebih terperinci tetapi tidak begitu cantik lihat makepplog.
Tetapi berhati-hati, walaupun untuk binaan kecil kerumitannya boleh mengejutkan! Ini kerana dengan
.o fail dan sistem termasuk anda dengan mudah mempunyai dua kali lebih banyak nod berbanding fail sumber. Tetapi
itu bukan apa-apa -- bilangan tepi selalunya jauh melebihi nod, disebabkan berbilang
sertakan kenyataan. Susun atur bebas lintasan biasanya mustahil.
Dalam projek sebenar kerumitan menjadi gila. Teknik seperti sumber berasaskan templat
penjanaan fail, prapemproses (cth. SQL terbenam, bahasa definisi antara muka, Qt
perpustakaan) atau penerbitan fail ke direktori pusat (cth untuk mempunyai hanya satu "-I" atau "-L"
pilihan) membuat graf meletup. Walaupun tepi hanya satu piksel lebar, anda akan mendapatnya
jalur hitam lebar bersilangan tepi.
Sebaik sahaja anda menyedari apa yang sebenarnya berlaku, jika anda bernasib baik, anda mungkin dapat mencari jalan
memudahkan persediaan binaan anda. Tetapi sebelum anda sampai ke sana, anda mesti mengurangkan secara drastik
jumlah maklumat yang anda paparkan. Untuk itu terdapat pelbagai pemilihan, penamaan semula dan
menggabungkan kemungkinan dalam "makeppgraph". Apabila anda gagal mencapai keseimbangan antara
mengurangkan graf setakat ini supaya ia boleh dipaparkan dengan jelas, sambil masih menunjukkan apa
anda mahu lihat, anda mungkin kembali kepada graf teks.
OUTPUT FORMATS
Susun atur graf, paparan dan manipulasi adalah tugas yang kompleks, yang berada di luar skop
"makeppgraph". Sebaliknya ia menghasilkan fail input untuk alat khusus. Ia mewujudkan satu
fail output menggantikan atau menambah akhiran yang sesuai pada fail input pertamanya. Jika itu
is .makepp/log, lalai, fail output akan melangkau fail .makepp direktori, menuju ke
log.udg. Jika input pertama ialah - (stdin), output pergi ke stdout.
uDraw(Graf)
Dengan uDraw(Graf)http://www.informatik.uni-bremen.de/uDrawGraph/> anda mendapat yang adil
GUI moden, yang membolehkan untuk memilih ibu bapa atau anak-anak, mencari hujung satu lagi tepi, atau
sembunyikan subgraf. Tweak pilihan seperti jarak nod, dan menggunakan splines untuk tepi
boleh menjadikan graf lebih cantik.
Walaupun ciri di atas menjadikannya alat yang sangat berguna, terdapat beberapa yang kecil
halangan:
· Ia agak lapar ingatan, sehingga, selepas meditasi yang panjang, ia mungkin terhempas tanpa
setelah memaparkan apa-apa -- tanda jelas bahawa anda mesti mengurangkan bilangan nod
dan/atau tepi lebih jauh.
· Ia sangat memisahkan atribut graf dan pilihan paparan. Ini bermakna anda tidak boleh
masukkan ke dalam graf yang dijana fakta bahawa ia harus diorientasikan ke sisi (iaitu
secara amnya diperlukan di sini kerana, walaupun dinamakan semula kepada sesuatu yang pendek, nama fail adalah
lebih lebar daripada tinggi). Sebagai penyelesaian, jika anda tidak mahu menjadikannya lalai anda, atau
pilih orientasi dari menu setiap kali, mereka mencadangkan sedikit skrip permulaan:
eksport UDG_HOME=/where/ever/uDrawGraph-3.1
TMP=`mktemp -t udg.XXXXXX` || keluar 1
perangkap "rm -f $TMP" KELUAR
echo "[menu(fail(open_graph(\"${1-log.udg}\"))),menu(layout(orientasi(kiri_kanan))]" >$TMP
$UDG_HOME/bin/uDrawGraph -init $TMP
· Ia belum lagi menyokong warna sempadan nod. Disebabkan oleh ini "--sebab" memaparkan dua kali ganda
sempadan apabila ia sepatutnya merah.
· Apabila menggabungkan beberapa fail ke dalam satu nod membawa kepada tepi diri kedua-duanya dengan
"--dependencies" dan "--includes", hanya satu daripada ini akan dipaparkan, secara rawak
dititik atau dilukis melalui dan dengan label "2*".
Grafviz
grafvizhttp://www.graphviz.org/> terdiri daripada beberapa alat baris arahan, yang membolehkan
banyak lagi format eksport daripada uDraw(Graf). Itu termasuk bukan sahaja format imej statik
tetapi juga input untuk program pereka seperti dia. Terdapat utiliti "twopi" untuk mencipta a
susun atur jejari, yang bagus jika graf anda hampir dengan pokok sebenar, iaitu anda
kebergantungan tersebar, tetapi beberapa nod mempunyai kebergantungan biasa dengan yang lain. Terdapat beberapa
penonton tersedia, tiada satu pun daripadanya membantu anda menavigasi sepanjang struktur graf:
dotty
Alat paparannya sendiri, dotty, mempunyai kelebihan berbanding uDraw(Graf) yang anda boleh bebaskan
seret nod, tanpa terhad kepada tahap yang ditetapkan oleh susun atur. Bila
skrin anda penuh dengan tepi, menyeret satu nod memberikan anda gambaran yang bagus tentang di mana
tepi nod itu mengarah ke. Tetapi ia juga kehilangan maklumat apabila anda mengubah suainya.
Selain daripada itu ia adalah alat Xlib kuno. Ia juga memaparkan sedikit yang menjengkelkan
bulatan di tengah setiap tepi, dan tiada pilihan nampaknya untuk menyingkirkannya.
ZGRViewer
ZGRViewerhttp://zvtm.sourceforge.net/zgrviewer.html> boleh dimuat turun secara berasingan
Pemapar Java yang mempunyai zum dan panning yang selesa. Graf hanya boleh dilihat, tidak
pergerakan nod. Terdapat lima butang di kawasan paparan, yang menawarkan tambahan
variasi zum separa 3D yang mewah, tetapi, tidak seperti fungsi asas, ia boleh
sangat perlahan bergantung pada persediaan Java anda. Untuk Sun Linux Java saya, yang berikut
memberikan dorongan yang luar biasa:
eksport J2D_PIXMAPS=kongsi USE_DGA_PIXMAPS=1
Grappa
Grappa ialah pemapar Java 1.2 yang boleh dimuat turun secara berasingan. Tiada cangkang pembalut
skrip, balang tidak mengandungi manifes, tiada satu pun sumber mengandungi fungsi utama, dan
dengan appletviewer ia menghasilkan dua tingkap tinggi yang tergantung dengan "applet permulaan"
mesej, jadi saya tidak tahu bagaimana untuk menguji ini. Ia boleh dicuba di laman web demo sebagai
applet.
Memilih tepi menjadikannya merah tebal, jadi anda boleh menatal hujungnya yang satu lagi secara manual
pandangan tanpa kehilangannya daripada pandangan. Selain daripada itu dan mengezum dan memadam nod
nampaknya tiada ciri yang berguna. Ia mengabaikan warna perenambelasan yang sah
spesifikasi.
SVG SVG, salah satu jenis fail yang boleh dieksport oleh bahagian belakang, sudah agak lama. Tetapi beberapa
pelayar masih menghadapi masalah dengannya. Apabila membenamkannya dengan teg objek sahaja Opera
skala itu, yang lain klipkannya, yang tidak berguna untuk lakaran kecil. Apabila dilihat sebagai a
dokumen miliknya sendiri, hanya Opera dan Konqueror membenarkan penskalaannya, manakala Firefox menskalakan
hanya label. Walaupun label adalah teks, tiada penyemak imbas boleh mencarinya.
IE6 tidak mempunyai petunjuk, melainkan anda memasang pemalam. Aplikasi khusus, seperti
Inkscape, boleh melayani anda dengan lebih baik.
HTML
Ini ialah format pepohon senarai tidak tertib ringkas yang boleh diteliti dengan mana-mana pelayar. awak
harus mempunyai JavaScript dan CSS, yang membolehkan subpokok lipatan dan melihat warna. Biasanya
graf anda tidak akan menjadi pokok, yang dikerjakan dengan mengulangi nod dalam setiap subpokok
diperlukan, tetapi sebagai pautan kepada kejadian pertama di mana anda boleh melihat semua atributnya. Kerana
kepada sokongan Unicode terhad IE, anak panah menegak digunakan untuk memasukkan hubungan, sebaliknya
daripada anak panah bertitik biasa.
Teks Grafik
Ini ialah format berasaskan lekukan mudah yang boleh diteliti dengan mana-mana pemapar teks. ini
bermakna anda biasanya boleh mengkaji graf yang jauh lebih besar daripada dengan format lain. Dalam Emacs anda
boleh menggunakan garis besar dan lipatan untuk navigasi graf yang sangat berkuasa dengan pembalut kecil ini
mod:
(takrifkan-mod terbitan textgraph-mod outline-mod "Graf"
(mod lihat)
(set (make-local-variable 'outline-regexp) " *.")
(set (make-local-variable 'outline-level)
(lambda () (/ (- (perlawanan-akhir 0) (perlawanan-permulaan 0) -1) 2)))
(tetapkan (buat-pembolehubah-tempatan 'garis-garis-font-kunci-kata kunci)
'(("^ *\\(?:{[az,]+} \\)?\\([^{\n]+\\)" (1 (garis-garis-fon-kunci-muka) tiada t) )))
(setq imenu-generic-expression
'((tiada "^ *\\(?:{[az,]+} \\)?\\(.+?\\)\\(?:{[az,]+}\\)?$" 1))))
Baris boleh mempunyai anotasi dipisahkan koma antara pendakap, melainkan anda turut memberikannya
Pilihan "-p, --plain". Apabila ini datang sebelum sasaran ia berkaitan dengan perhubungan
dengan induk, iaitu baris sebelumnya mengesot kurang. Apabila mereka mengejar sasaran,
ia berkaitan dengan sasaran itu sendiri. Mereka adalah seperti berikut:
kerana
Apabila ini sebelum sasaran, ibu bapa dibina kerana yang ini. Bila ia
selepas itu, sasaran mempunyai beberapa sebab yang wujud untuk dibina semula.
dwiarah
Kebergantungan atau kemasukan ini berlaku dalam kedua-dua arah.
termasuk
Ibu bapa menyertakan fail ini. Anotasi ini hanya diberikan apabila turut dipaparkan
kebergantungan.
palsu
Ini adalah sasaran palsu.
berulang
Maklumat mengenai sasaran ini dan anak-anaknya telah pun diberikan lebih awal.
PILIHAN
Jika anda tidak memberikan corak, makeppgraph akan mula beroperasi dengan semua nod yang boleh
ekstrak dari log makepp. Apabila diberi satu atau lebih corak (menggunakan "?", "*", "**" dan/atau
"[...]"), ia akan sepadan dengan yang ada dalam sistem fail dan beroperasi pada mana-mana yang juga berlaku dalam fail
log. Untuk ini ia secara lalai akan memilih "ke atas", iaitu semua sasaran yang bergantung pada
dan/atau masukkan mana-mana daripadanya dan "ke bawah", iaitu semua sasaran dan/atau sumber, yang mana-mana
mereka bergantung pada dan/atau termasuk. (Arahnya adalah metafora, kerana graf adalah
terbaik dipaparkan dari kiri "atas" ke kanan "bawah" kerana lebar nod.)
-A nama fail
--args-file=nama fail
--arguments-file=filename
Baca fail dan huraikannya seperti yang mungkin dipetik ruang putih dan/atau dipisahkan baris baharu
pilihan.
-b
--sebab
--bina-sebab
Jika nod telah dibina semula kerana kebergantungan, maka tepi itu ditunjukkan dalam warna merah. Malangnya
makepp menggunakan pengoptimuman untuk mengesan apabila sasaran memerlukan pembinaan semula, supaya ia
selalunya tidak dapat menyatakan fail mana yang mencetuskan pembinaan semula. Jika nod telah dibina semula untuk a
sebab tidak dikaitkan dengan fail lain, maka sempadan nod berwarna merah. Dengan
uDraw(Graph) sempadan berganda digunakan, kerana ia tidak menyokong warna sempadan.
-D
--kebergantungan
Lukiskan graf hubungan kebergantungan yang ditentukan oleh makepp. Ini adalah lalai
melainkan "-i, --includes" juga diberikan.
-d
--bawah
--ke bawah
Pilihan ini hanya bermakna jika anda menyediakan satu atau lebih corak. Ia akan kemudian sahaja
pilih sasaran dan/atau sumber yang bergantung pada fail yang dipadankan, atau yang mana ia bergantung
merangkumi.
-g
--graphviz
--titik
Menghasilkan Graphviz .titik fail, bukannya uDraw(Graf) lalai .udg fail.
-h
--html
Menghasilkan pelayar . Html fail, bukannya uDraw(Graf) lalai .udg fail.
-?
- membantu
Cetak ringkasan ringkas pilihan.
-I direktori
--termasuk=direktori
--include-dir=direktori
Tambah direktori ke laluan muat Perl @INC.
-i
--termasuk
Daripada kebergantungan (atau dengan "-D, --dependencies" tambahan kepada mereka) lukis a
graf perhubungan termasuk. Ini hanya akan dilog setakat yang diperlukan
untuk dianalisis. Untuk mendapatkan gambaran penuh anda memerlukan binaan penuh yang baharu.
-l nama fail
--log=nama fail
--fail-log=nama fail
. nama fail adalah ke tempat makepp menulis lognya. Ia juga mungkin sebuah direktori, di mana a
fail dipanggil .makepp/log or log akan dicari. Untuk membaca dari stdin, anda mesti memberi -
sebagai nama fail. Apabila pilihan ini tidak diberikan, ia lalai kepada direktori semasa.
Pilihan ini boleh diberikan beberapa kali, contohnya untuk menggabungkan semua log daripada
"--tradisional-rekursif-buat". Tetapi kebergantungan yang anda sembunyikan daripada makepp melalui
paradigma rekursi jahat sudah tentu tidak boleh muncul di sini.
-M modul[=arg,...]
--modul=modul[=arg,...]
Muatkan modul dan import mana-mana fungsi yang dieksportnya.
-m perlcode
--gabung=perlcode
Melaksanakan perlcode untuk setiap sasaran dan kebergantungannya. Lihat penggabungan untuk mendapatkan butiran tentang
pilihan ini.
-o nama fail
--output=nama fail
Tulis output ke fail ini.
-p
--kosong
Jangan gunakan atribut seperti warna atau garis putus-putus. Ini amat berguna untuk
keluaran "-t, --text" yang tidak kemas. Dalam format itu, tepi dwiarah akan hilang
melainkan anda menggabungkan ini dengan "-s, --separate-directions".
-r perlcode
--namakan semula=perlcode
Melaksanakan perlcode untuk setiap sasaran dan kebergantungannya. Lihat penamaan semula untuk butiran
tentang pilihan ini.
-s
--arah-asing
Lukis dua anak panah berasingan, bukannya setiap anak panah berkembar, untuk memudahkannya
tempat.
-t
- teks
Menghasilkan manusia yang boleh dibaca . Txt fail, bukannya uDraw(Graf) lalai .udg fail.
-u
--naik
--ke atas
Pilihan ini hanya bermakna jika anda menyediakan satu atau lebih corak. Ia akan kemudian sahaja
pilih sasaran yang bergantung pada dan/atau termasuk fail yang dipadankan.
-V
--versi
Cetak nombor versi.
MENULIS SEMULA
Teknik dalam bab ini biasanya penting untuk mendapatkan graf bersaiz munasabah. Sebagai
ia dirumuskan sebagai kod Perl, mengetahui bahasa itu berguna. Tetapi anda sepatutnya boleh
untuk mencapai banyak perkara dengan contoh di sini atau di galeri
<http://makepp.sourceforge.net/gallery/>.
Menamakan semula
Ini ialah penulisan semula nama pertama yang berlaku, jika pilihan "-r, --rename" diberikan. Untuk
setiap nama yang ditemui, perlcode akan dipanggil. Ia mendapat nama fail dalam $_, dan ia mungkin mengubah suai
ia. Ini selalunya diperlukan, kerana makepp merekodkan nama fail yang layak sepenuhnya, jadi satu nod boleh
mudah menjadi separuh skrin lebar.
Untuk satu perkara, anda boleh menulis semula nama kepada "undef" atau rentetan kosong. Ini akan menghapuskan
nod daripada graf. Ambil perhatian bahawa menghapuskan nod dalam peringkat pertama ini akan memecahkan a
rantai pergantungan jika nod ini berada di tengah.
Anda juga boleh menulis semula pelbagai nama pada rentetan yang sama, memaksa mereka semua menjadi sama
nod, yang mengumpulkan gabungan kebergantungan dan tanggungan.
Sebaliknya anda hanya boleh menamakan semula nama kepada (biasanya) nama yang lebih pendek, untuk mengurangkan
lebar nod, yang boleh jauh ke lebar dengan nama fail mutlak. Terdapat beberapa
fungsi yang dipratentukan dalam pakej "Mpp::Rewrite", di mana kod anda juga dijalankan, anda boleh gunakan
untuk ini. Ini kembali benar jika mereka melakukan sesuatu supaya anda boleh menggabungkannya seperti dalam:
--rename='cwd( 1 ) || &rumah || &usr'
&cwd
cwd nombor
cwd nombor, nama [, pemisah]
Mengalih keluar direktori kerja semasa dari permulaan laluan. Dengan nombor, juga
menggantikan direktori induk yang banyak tingkatkan dengan bilangan yang betul ../
direktori, jika berkenaan. Dalam kes ini, anda boleh memberikan alternatif nama, seperti yang
bertimbun ':' bukannya '..' dan tambahan pula alternatif pemisah seperti '' sebaliknya
daripada '/'. Dalam kes pertama anda mungkin mendapat :/:/a/b, pada detik yang lebih pendek ::a/b
bukan ../../a/b. Melepasi nombor berguna jika anda mengambil bahan daripada
pokok jiran. Atau anda mempunyai src direktori, di mana kebanyakan tindakan adalah, jadi anda
hubungi makeppgraph di sana, tetapi ingin melihat hubungan dengan direktori anda yang lain juga.
Jika anda tidak memberikan pilihan "--rename", &cwd ialah lalai. Sekiranya anda tidak mahu menamakan semula,
anda boleh memberi sedikit perlcode seperti "--rename=1" yang tidak melakukan apa-apa.
&dir
Yang ini adalah pengurangan kerumitan graf yang hebat. Ia mengurangkan setiap fail kepada failnya
direktori. Itu berjumlah soalan: "Fail dari direktori mana bergantung pada fail
dari direktori lain?" Ambil perhatian bahawa walaupun graf kebergantungan sentiasa akiklik
(selain itu, makepp tidak tahu di mana hendak mula membina), itu tidak benar tentang pengurangan ini
pandangan. Cth jika dir1/a bergantung kepada dir2/b and dir2/a on dir1/b yang akan dipaparkan sebagai a
saling bergantung antara awak1 and awak2. Oleh kerana graf kitaran tidak mempunyai permulaan yang jelas
titik, susun atur mungkin ganjil.
Tidak seperti fungsi lain dalam bahagian ini, ini tidak eksklusif dengan yang lain. Jadi
anda mungkin tidak mahu menggabungkannya secara logik:
--rename='&dir; &cwd || &rumah'
&rumah
Menggantikan direktori rumah anda dengan ~/.
&makepp
Menggantikan direktori pemasangan makepp dengan |m|.
&suf
mengantuk nombor
Yang ini juga merupakan pengurang kerumitan graf yang hebat. Ia mengurangkan setiap fail yang mempunyai
akhiran kepada asterisk dan akhiran itu. Jadi anda boleh melihat jenis fail yang bergantung
pada yang lain jenis. Dengan hujah 0 ia meninggalkan aksara pertama
direktori, dengan syarat ia adalah salah satu daripada "/", "~" atau "|" (seperti yang dimasukkan oleh &home atau &usr jika anda
dipanggil mereka yang pertama). Dengan hujah yang positif, ia meninggalkan banyak peringkat direktori itu
pada permulaan. Dengan hujah negatif, ia mengalih keluar banyak peringkat direktori di
tamat. Jadi untuk /a/b/c/d/e/xy anda mendapatkan:
&suf *.y
suf 0 /*.y
suf 1 /a/*.y
suf 2 /a/b/*.y
suf -1 /a/b/c/d/*.y
suf -2 /a/b/c/*.y
Untuk saudara a/b/c/d/e/xy anda mendapatkan:
&suf *.y
suf 0 *.y
suf 1 a/*.y
suf -1 a/b/c/d/*.y
&usr
Di bawah /, /usr, /usr/ltempatan, /usr/X11, /usr/X11R6, /usr/X11R7 or /opt, untuk mana-mana
direktori bin, etc, itermasuk, lib or skelinci, huruf awal bagi perkataan ini ialah
bercantum antara bar.
Contohnya /usr/local/bdalam/foobar menjadi |ulb|foobar or /usr/include/net/if.h menjadi
|ui|net/if.h. Ambil perhatian bahawa `l' bermaksud `local' apabila antara dua huruf dan untuk `lib'
sebagai surat terakhir.
Penggabungan
Ini ialah penulisan semula nama kedua yang berlaku, jika pilihan "-m, --merge" diberikan. ini
API masih dalam pembangunan! Pada masa ini sasaran diluluskan dalam $_ dan kebergantungan
sebagai hujah. Jika perlcode mengembalikan nilai, nilai itu menggantikan kedua-dua sasaran dan
pergantungan, menggabungkannya menjadi satu nod. Beberapa fungsi yang telah ditetapkan boleh membantu anda:
c2o Untuk mana-mana sumber C/C++ dan yang terhasil .o fail, gabungkannya ke dalam satu nod, dengan menambah pada
laluan sumber akhiran ">o" seperti some/where/foo.cc>o, walaupun .o fail masuk
direktori lain.
exe Untuk sebarang .o fail dan hasil boleh laku daripada nama asas notdir yang sama tanpa a
akhiran atau dengan .exe, gabungkan mereka menjadi satu nod, dengan menambahkan asterisk pada .o fail.
Ini tidak akan berfungsi bersama-sama pada masa ini c2o.
x2 Untuk mana-mana pasangan fail dengan nama yang sama, biasanya pengepala atau perpustakaan yang diterbitkan ke a
direktori pusat, gabungkannya ke dalam satu nod, dengan menambah *2 kepada pergantungan.
PERSEKITARAN
Makeppgraph melihat pembolehubah persekitaran berikut:
$MAKEPPGRAPHFLAGS
Sebarang bendera dalam pembolehubah persekitaran ini ditafsirkan sebagai pilihan baris arahan sebelum ini
sebarang pilihan yang jelas. Petikan ditafsirkan seperti dalam makefiles.
Gunakan mppg dalam talian menggunakan perkhidmatan onworks.net