Showing posts with label Backend. Show all posts
Showing posts with label Backend. Show all posts

Wednesday, January 24, 2018

Quick Back End. Membuat API Sederhana dalam 10 menit dengan MockAPI

Hai Geeks

Di posting pertama tahun 2018 ini kita akan mencoba hal simple, dalam waktu kurang dari 10 menit kita akan membuat API sederhana tanpa ngoding sama sekali dan fully function dengan MockAPI.

Langkah pertama login, bisa menggunakan pilihan email biasa, authentikasi email yang terintegrasi GMail ataupun Github




Langkah kedua, buat project sebagai grouping beberapa API yang akan digunakan dalam 1 project


Langkah ketiga, buat resource. Resource name adalah endpoint nya dan diibaratkan nama tabelnya. Schema adalah response body sekaligus request body dan diibaratkan nama kolomnya


Langkah keempat, generate data dummy dengan mengubah angka disebelah resource. Dapat generate hingga 100 data dummy


Terakhir, Silahkan coba endpoint tersebut di Postman untuk GET,  POST,  PUT dan DELETE

Kelebihan mockAPI
- Mudah
- Cepat
- Fully Function
- Tanpa ngoding back end
- Bisa menggunakan template

Kelemahan
- Tidak bisa yang kompleks
- Bisa diakses publik

Selamat mencoba


Saturday, December 16, 2017

Enable Asynchronous on Spring Boot

Halo teman-teman pembaca setia blog Nostra. Pada kesempatan kali ini kami akan membagikan bagaimana cara agar bisa menjalankan suatu method secara asynchronous pada framework yang Nostra gunakan, yaitu Spring Boot. Mungkin ada yang belum tau, apa itu asynchronous? Asynchronous secara bahasa artinya 'happening at the same time'. Intinya, asynchronous bisa menjalankan proses lain secara bersamaan dengan proses yang sedang berlangsung.

Kenapa kita perlu menggunakan asynchronous? Tentunya karena beberapa alasan, tetapi disini akan kami berikan satu alasan utamanya, yaitu menjalankan banyak proses tanpa harus menunggu proses sebelumnya, sehingga proses tersebut tidak saling tunggu.

Gimana cara agar method yang ada dijalankan secara asynchronous? Di Spring Boot hal ini sangat mudah, karena Spring Boot sudah menyediakan fitur tersebut. Hanya dengan memberikan annotation `@EnableAsync` pada configuration file dan `@Async` pada method yang ingin dijalankan secara asynchronous. Berikut langkah-langkah lebih lengkapnya:

- Buat configuration file yang me-enable async

Diatas menggunakan Bean annotation dengan nama "executor", tentunya anda dapat mengganti nama tersebut. Gunanya adalah untuk memudahkan dalam memanggil executor asynchronous.

- Gunakan @Async pada method yang ingin dijalankan secara asynchronous

Menggunakan @Async("executor") dengan "executor" adalah nama Bean yang sudah dibuat pada langkah sebelumnya. Pada contoh kali ini membutuhkan return value, untuk method yang akan dijalankan secara asynchronous, perlu menggunakan Future<{tipe data yang ingin di return}>.

- Call method yang akan dijalankan secara asynchronous


Dan walaaa, method anda sudah berjalan secara asynchronous. :)

Sudah cukup sharing nya pada kesempatan kali ini, semoga apa yang kami bagikan dapat bermanfaat bagi anda. Sekian, semoga sukses selalu!

Friday, December 15, 2017

HTML Text to Document with DOX4J

HTML Text to Document with DOCX4J


Pada kesempatan ini, kami akan menjelaskan salah satu fungsi dari DOCX4J untuk merubah text HTML menjadi dokumen bertipe .docx atau .doc. DOCX4J adalah sebuah library yang dikhususkan untuk melakukan manipulasi kepada Office open XML document, seperti DOCX, XLSX dan PPTX. Untuk keterangan lebih lengkap dapat dilihat pada PDF yang dapat diunduh pada link berikut :

Langkah pertama adalah untuk mendefinisikan class HtmlToDocVO yang berisi objek yang terdiri dari 2 variable, yaitu : input yang berisi text HTML yang akan diubah menjadi dokumen dan  fileName yang berisi nama dari dokumen hasil dari dari perubahan :

@Data
public class HTMLToDocVO
{
    private String fileName;
    private String input;
}

Selanjutnya adalah membuat sebuh fungsi di dalam servis yang bernama uploadHtmlToDoc yang menerima input objek HTMLToDocVO yang mengembalikan String :

public String uploadHtmlToDoc(HTMLToDocVO htmlToDocVO) {
       String output="";

        return output;
    }

Di dalam fungsi tersebut sebuah objek bawaan dari DOCX4J yang berfungsi sebagai untuk membuat sebuah blank word document package yang nantinya akan menjadi file dokumen hasil perubahan dari HTML text ke dokumen word :

WordprocessingMLPackage wordMLPackage = null;
 try { 
wordMLPackage = 
            WordprocessingMLPackage.createPackage();
} catch (InvalidFormatException e) {
            e.printStackTrace();
}

Selanjutnya yang kita butuhkan adalah XHTMLImporterImpl dan HTMLSettings yang berfungsi untuk memproses input HTML text yang kita berikan dan mengubahnya menjadi konten yang mengisi dokumen :

HTMLImporterImpl XHTMLImporter = 
            new XHTMLImporterImpl(wordMLPackage);
try {
wordMLPackage.getMainDocumentPart().getContent().addAll(
            XHTMLImporter.convert( input, null) );
} catch (Docx4JException e) {
            e.printStackTrace();
}
HTMLSettings htmlSettings = Docx4J.createHTMLSettings();
htmlSettings.setWmlPackage(wordMLPackage);

Tahap terakhir adalah menyimpan wordMLPackage menjadi file dokumen word yang sebenarnya di path yang sudah ditentukan sebelumnya :

try {
  wordMLPackage.save(actualFile);
} catch (Docx4JException e) {
            e.printStackTrace();
}

Untuk merangkum semua servis untuk merubah HTML text ke document adalah seperti berikut :


    public String uploadHtmlToDoc(HTMLToDocVO htmlToDocVO) {

        String destPath="C:/Users/Lenovo/Documents/Temp";

        //for creating temporary document file
        File dir = new File (destPath);
        File actualFile = 
          new File (dir, htmlToDocVO.getFileName());
        String input=htmlToDocVO.getInput();

        //e.g /home/oracle/temp/test.docx
        String namePathFile = 
          destPath+"/"+htmlToDocVO.getFileName();


        try {
            input = java.net.URLDecoder.decode
                    (input, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        //To remove <br> and add </img> 
        //so that the html script will be proper
        input = input.replaceAll("<br>","<br/>");
        input = input.replaceAll("<img(.+?)>", 
            "<center><img$1></img></center>");
        input = input.replaceAll
            ("width(.+?)\"", "width:30%;\"");
 
        WordprocessingMLPackage wordMLPackage = null;
        try {
            wordMLPackage = 
              WordprocessingMLPackage.createPackage();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
        XHTMLImporterImpl XHTMLImporter = 
            new XHTMLImporterImpl(wordMLPackage);
        try {
            wordMLPackage.getMainDocumentPart()
                    .getContent().addAll(
                    XHTMLImporter.convert( input, null) );
        } catch (Docx4JException e) {
            e.printStackTrace();
        }
        HTMLSettings htmlSettings = 
            Docx4J.createHTMLSettings();
        htmlSettings.setWmlPackage(wordMLPackage);


        try {

            wordMLPackage.save(actualFile);
        } catch (Docx4JException e) {
            e.printStackTrace();
        }
        
        String output="Done";

        return output;
    }