Jumat, 29 Juni 2018

AOP (Aspect-Oriented Programming)


1. Perbandingan Prosedural, OOP, dan AOP

- Pemrograman Prosedural

Pemrograman prosedural adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program. Selain pengertian diatas Pemrograman prosedural merupakan suatu aktifitas pemrograman dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami.
  1. Diselesaikan dalam bentuk prosedur atau fungsi
  2. Program merupakan urut-urutan instruksi
  3. Program dipecah-pecah ke dalam sub program yang lebih sederhana
  4. Fokus utama pada prosedur dan fungsi
  5. Fungsi dan prosedur digunakan untuk memanipulasi data, Sedangkan data sendiri bersifat pasif

- Pemrograman berorientasi Obyek

Pemrograman berorientasi objek (OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Jika dibandingkan dengan logika pemrograman terstruktur maka setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.
  1. Fungsi dan data menjadi satu kesatuan yang disebut obyek
  2. Obyek-obyek dalam OOP bersifat aktif
  3. Cara pandang : program bukan urut-urutan instruksi tapi diselesaikan oleh obyek-obyek yang bekerjasama untuk menyelesaikan masalah
Pemrograman berorientasikan objek dikatakan lebih baik apabila Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

- Pemrograman berorientasi Aspek

Pemrograman berorientasi Aspek (AOP) sering didefinisikan sebagai teknik yang mempromosikan pemisahan kekhawatiran dalam sistem perangkat lunak. Sistem terdiri dari beberapa komponen, masing-masing bertanggung jawab untuk bagian tertentu dari fungsi. Namun seringkali komponen ini juga membawa tanggung jawab tambahan di luar fungsi inti mereka. Layanan sistem seperti logging, manajemen transaksi, dan keamanan sering menemukan jalan mereka ke dalam komponen yang tanggung jawab utamanya adalah sesuatu yang lain. Layanan sistem ini biasanya disebut sebagai cross-cutting concerns karena mereka cenderung memotong beberapa komponen dalam suatu sistem.

2. Konsep Dasar AOP

AOP (Aspect Oriented Programming) merupakan sebuah metodologi sebagai tambahan untuk melengkapi metodologi OOP dimana OOP dianggap tidak cukup baik untuk memecahkan masalah crosscutting concern yang umumnya digunakan untuk aplikasi enterprise. Aspect Oriented Programming memerlukan pemecahan logika program menjadi bagian-bagian yang berbeda yang disebut so-called concerns. Fungsi yang menjangkau banyak titik dari suatu aplikasi disebut sebagai cross-cutting concerns. cross-cutting concerns ini secara konseptual terpisah dari logika bisnis aplikasi. Ada berbagai contoh umum baik dari aspek seperti logging, audit, transaksi deklaratif, keamanan, caching, dll.

Unit kunci dari modularitas dalam OOP adalah kelas, sedangkan dalam AOP unit modularitas adalah aspeknya. Dependency Injection membantu memisahkan objek aplikasi antara satu sama lain, sementara AOP membantu memisahkan cross-cutting concerns dari objek yang mereka pengaruhi. AOP seperti pemicu pada dalam bahasa pemrograman Perl, .NET, Java, dan lainnya.

Dalam pengembangan perangkat lunak berorientasi aspek, cross-cutting concerns adalah aspek dari program yang memengaruhi masalah lainnya. Kekhawatiran ini sering tidak dapat diuraikan secara bersih dari sistem yang lain baik dalam desain maupun implementasinya, dan dapat menghasilkan scattering (duplikasi kode), tangling (ketergantungan signifikan antar sistem), atau keduanya.

Misalnya, jika menulis aplikasi untuk menangani rekam medis, pengindeksan catatan tersebut merupakan perhatian utama, sementara mencatat riwayat perubahan pada basis data rekam atau basis data pengguna, atau sistem autentikasi, akan menjadi cross-cutting concerns karena mereka berinteraksi dengan lebih banyak bagian dari program.

Terdapat beberapa konsep dan terminologi yang dipakai dalam AOP. Berikut istilah-istilah terkait dengan AOP:

1. Aspect
Modul yang memiliki sekumpulan API yang menyediakan persyaratan cross-cutting. Misalnya, modul pencatatan akan disebut aspek AOP untuk pencatatan log. Aplikasi dapat memiliki sejumlah aspek tergantung pada kebutuhan.
2. Join point
Suatu titik selama pelaksanaan suatu program, seperti pelaksanaan suatu metode atau penanganan pengecualian. Ini mewakili titik di aplikasi Anda di mana Anda dapat memasukkan aspek AOP. Anda juga dapat mengatakan, itu adalah tempat yang sebenarnya dalam aplikasi di mana tindakan akan diambil.
3. Advice
Tindakan yang diambil oleh suatu aspek pada join points tertentu. Ini adalah tindakan nyata yang harus diambil sebelum atau sesudah eksekusi metode. Ini adalah potongan kode aktual yang dipanggil selama eksekusi program oleh kerangka Spring AOP.
Berdasarkan strategi eksekusi Advices, terdapat beberapa jenis yaitu:
- Before Advice: Advice ini berjalan sebelum pelaksanaan metode join point. Kita dapat menggunakan anotasi @Before untuk menandai jenis advice sebagai Before advice.
- After Advice: Advice yang dijalankan setelah metode join point selesai dieksekusi, baik secara normal atau dengan melempar pengecualian. Kita dapat membuat After advice menggunakan anotasi @After.
- After Returning Advice: Kadang-kadang kita ingin metode advice untuk dijalankan hanya jika metode join point dijalankan secara normal. Kita bisa menggunakan anotasi @AfterReturning untuk menandai metode after returning advice.
- After Throwing Advice: Advice ini dijalankan hanya ketika metode join point melempar pengecualian(exception), kita dapat menggunakannya untuk mengembalikan transaksi secara deklaratif. Kita dapat menggunakan anotasi @AfterThrowing untuk jenis advice ini.
- Around Advice: Ini adalah advice yang paling penting dan kuat. Advice ini mengelilingi metode join point dan kita juga dapat memilih apakah akan mengeksekusi metode join point atau tidak. Kita dapat menulis kode advice yang dijalankan sebelum dan sesudah eksekusi metode titik gabungan. Ini adalah tanggung jawab di sekitar saran untuk memanggil metode join point dan mengembalikan nilai jika metode mengembalikan sesuatu. Kita dapat menggunakan anotasi @Around untuk membuat metode around advice.
4. PointCut
Predikat yang cocok dengan join points. Advice dikaitkan dengan ekspresi pointcut dan berjalan pada join points apa pun yang dicocokkan oleh pointcut (misalnya, eksekusi metode dengan nama tertentu). Ini adalah satu atau lebih gabungan titik di mana Advice harus dijalankan. Anda dapat menentukan PointCuts menggunakan ekspresi atau pola.
5. Introduction
Juga dikenal sebagai deklarasi antar-jenis, mendeklarasikan metode atau bidang tambahan atas nama tipe. Memungkinkan untuk menambahkan metode atau atribut baru ke kelas yang ada.
6. Target object
Objek yang disarankan oleh satu atau lebih aspek. Objek ini akan selalu menjadi objek proksi. Juga disebut sebagai objek yang disarankan.
7. AOP proxy
Objek yang dibuat oleh kerangka kerja AOP untuk mengimplementasikan kontrak aspek (menyarankan eksekusi metode dan sebagainya)
8. Weaving
Weaving adalah proses menghubungkan aspek dengan jenis aplikasi atau objek lain untuk membuat objek yang disarankan. Ini dapat dilakukan pada waktu kompilasi, waktu buka, atau saat runtime. Menautkan aspek dengan jenis aplikasi atau objek lain untuk membuat objek yang disarankan.

3. Contoh Script AOP dalam Spring

- Before Advice
@Component
@Aspect
public class LoggingAspect {

    private Logger logger = Logger.getLogger(LoggingAspect.class.getName());

    @Pointcut("@target(org.springframework.stereotype.Repository)")
    public void repositoryMethods() {};

    @Before("repositoryMethods()")
    public void logMethodCall(JoinPoint jp) {
        String methodName = jp.getSignature().getName();
        logger.info("Before " + methodName);
    }
}

- After Advice
@Component
@Aspect
public class PublishingAspect {

    private ApplicationEventPublisher eventPublisher;

    @Autowired
    public void setEventPublisher(ApplicationEventPublisher eventPublisher) {
        this.eventPublisher = eventPublisher;
    }

    @Pointcut("@target(org.springframework.stereotype.Repository)")
    public void repositoryMethods() {}

    @Pointcut("execution(* *..create*(Long,..))")
    public void firstLongParamMethods() {}

    @Pointcut("repositoryMethods() && firstLongParamMethods()")
    public void entityCreationMethods() {}

    @AfterReturning(value = "entityCreationMethods()", returning = "entity")
    public void logMethodCall(JoinPoint jp, Object entity) throws Throwable {
        eventPublisher.publishEvent(new FooCreationEvent(entity));
    }
}

- Around Advice
@Aspect
@Component
public class PerformanceAspect {

    private Logger logger = Logger.getLogger(getClass().getName());

    @Pointcut("within(@org.springframework.stereotype.Repository *)")
    public void repositoryClassMethods() {};

    @Around("repositoryClassMethods()")
    public Object measureMethodExecutionTime(ProceedingJoinPoint pjp) throws Throwable {
        long start = System.nanoTime();
        Object retval = pjp.proceed();
        long end = System.nanoTime();
        String methodName = pjp.getSignature().getName();
        logger.info("Execution of " + methodName + " took " +
          TimeUnit.NANOSECONDS.toMillis(end - start) + " ms");
        return retval;
    }
}

Selasa, 20 Maret 2018

Sentiment Analysis API Facebook Using Python (Black Campaign)


Dibuat Oleh :
 Abi Fadhillah Surya
Agung Wicaksono
Raditya Abdurrafi

Pada kesempatan kali ini kami akan membahas cara membuat program sentiment analysis dengan menggunakan bahasa pemrograman Python. Sentiment analysis ini kami lakukan pada social media Facebook. Sebelum crawling data dari Facebook, sebelumnya kita harus mempunyai API key Facebook terlebih dahulu dimana didalam Facebook disebut Token. Langkah – langkahnya adalah sebagai berikut :

1. Buka website https://developers.facebook.com/ pada browser. Lakukan login dengan menggunakan akun facebook maka kita terlebih dahulu.

2.     Buat aplikasi baru dengan mengklik Create New App. Isi sesuai kebutuhan.

3.     Jika sudah, akan muncul halaman Dashboard seperti berikut.


4.    Buka website https://developers.facebook.com/tools/explorer/ untuk mengambil token dari Graph API


5.     Klik Graph API Explorer pada atas kanan halaman dan pilih Aplikasi yang tadi sudah dibuat.


6.     Lalu klik Get Token di bawah Graph API Explorer dan pilih Get User Access Token.


7.     Pilih permissions yang ingin digunakan pada program ini. Jika sudah klik Get Access Token.


8.     Setelah itu token bisa didapatkan pada field yang tertera berikut.

Setelah mendapatkan token pada Graph API Facebook maka lanjut ke kode program. Berikut akan dijelaskan beberapa potongan kode program. 


Masukkan kode di atas untuk meng-import semua library yang dibutuhkan. Dalam PyCharm kita dapat menginstall library atau package secara otomatis dengan menekan Alt+Enter lalu install package pada line import.


Kode di atas untuk mengakses Graph API dengan mengguakan token yang sudah didapatkan tadi.

Corpus dan datasets ini digunakan untuk menampung comment yang akan diambil dari Facebook.


Lalu kode tersebut digunakan untuk filter search yang diinginkan dengan keyword tertentu. Kami menggunakan keyword ‘pilpres’ karena berhubungan dengan black campaign. Lalu limit pencariannya yaitu cukup 5.


  Kode di atas berfungsi untuk mendapatkan comment dari post dan page yang ditentukan. Semua comment tersebut akhirnya akan disimpan di corpus untuk selanjutnya dijadikan report.


Pada kode tersebut terjadi proses penilaian komentar apakah komentar tersebut negative ataupun positive dengan library TextBlob yang sudah diimport di awal program.

Selanjutnya adalah untuk memberikan output ke console python dan memberikan report berupa file bertipe csv yang akan disimpan pada directory yang sama dengan project python dibuat.

Gambar di atas merupakan output yang tertera di console python.

Gambar di atas adalah report komentar yang sudah diambil beserta klasifikasi negative atau positif nya. Untuk penggolongan klasifikasi, tidak sesuai dengan yang diinginkan karena pada dasarnya library TextBlob menggunakan kata-kata dalam bahasa Inggris.

Sabtu, 09 Desember 2017

Membuat Bisnis yang Bertahan Lama

            Data statistic membuktikan bahwa 60% bisnis skala kecil dan menengah akan tutup di tahun ketiga. Hal itu menunjukkan sulitnya sebuah bisnis bertahan di tengah ketatnya persaingan usaha. Sebelum menentukan ide bisnis, seharusnya kita melakukan pengujian dulu menggunakan sejumlah faktor. Sehingga dapat diketahui apa yang menentukan bisnis  dapat bertahan atau tidak. Secara umum, berikut adalah beberapa cara agar bisnis yang dijalankan bisa bertahan lama:
           
Pastikan perusahaan telah memberikan pelayanan maksimal bagi konsumen

            Konsumen merupakan sumber keuntungan dari bisnis dan perusahaan. Karena, dengan adanya konsumen, maka produk atau jasa yang ditawarkan akan memiliki daya jual. Saat mengunjungi perusahaan, tentu saja konsumen ingin diperlakukan dengan maksimal. Oleh karenanya fokus untuk memberikan kepuasan kepada konsumen anda, merupakan suatu hal yang wajib.

-  Berinovasi

            Menciptakan produk atau jasa baru memang bukan sesuatu yang mudah, dan juga tidak murah. Mungkin anda dapat memperkerjakan karyawan yang memiliki ide sangat luas, serta pengalaman yang matang dalam bidangnya bila ingin berinovasi dan menciptakan produk baru. Namun, modal untuk berinovasi sepertinya cukup kecil, bila dibandingkan dengan keuntungan yang akan didapatkan setelah produk atau jasa laku terjual.

- Mengikuti trend dan perkembangan yang ada di pasaran

            Di poin ini, anda dituntut untuk selalu mengikuti perkembangan trend yang ada di pasaran. Hanya saja, pada produk atau jasa yang ditawarkan, perlu diberikan sedikit pembeda agar tidak menimbulkan kesan menjiplak produk orang lain.
            Mengikuti perkembangan dan trend sangat dibutuhkan agar bisnis tetap eksis. Bila perusahaan terlalu mempertahankan satu produk saja, tentu saja masyarakat akan cepat merasa bosan dengan produk yang terkesan monoton, sehingga produk anda mulai kehilangan peminat.
            Bisnis yang baik adalah bisnis yang tetap dibutuhkan tanpa dibatasi oleh musim dan trend. Lebih hebat lagi jika sebuah bisnis dibutuhkan oleh banyak orang tanpa melihat gender dan usia. Contohnya seperti tranportasi ojek online. Jika bersipat musiman, pengusaha akan mengalami kesulitan pemasukan. Padahal, saat bisnis berjalan biaya operasional tetap ada.

- Siasati pergerakan kompetior bisnis anda

            Tips agar bisnis anda tetap eksis yang selanjutnya, yakni selalu perhatikan dan siasati pergerakan kompetitor bisnis. Persaingan sudah menjadi “bumbu” dalam perjalanan bisnis dan perusahaan anda. Bahkan, bisa saja persaingan tersebut berasal dari banyak perusahaan.
            Maka dari itu, selalu perhatikan perkembangan serta strategi apa yang mereka terapkan. Karena, dengan mengetahui cara mereka melakukan strategi perdangangan, maka semakin mudah juga untuk mengatasi “larinya” semua konsumen ke perusahaan mereka. Tentunya selalu perhatikan agar persaingan yang anda lakukan, adalah persaingan yang sehat.

-  Perluas jaringan bisnis

            Memperluas jaringan bisnis, bisa ditempuh dengan melakukan beberapa teknik promosi yang hasilnya terbukti sangat ampuh dalam menarik hati masyarakat. Salah satu teknik berpromosi yang terbukti ampuh saat ini, yakni dengan memanfaatkan media internet sebagai sarana dalam mempromosikan produk serta jasa yang ditawarkan. Selain melakukan promosi, memperluas jaringan bisnis, bisa anda lakukan dengan membangun relasi dalam bisnis anda. Membangun relasi, atau kerjasama antar pedagang juga merupakan cerminan dari persaingan yang dilakukan secara sehat.
            Saat memulai bisnis, pendiri biasanya mencari mitra yang mampu mewujudkan bisnisnya. Pada tahap ini, sebuah ide bisnis bisa diketahui dapat bertahan atau tidak. Caranya dengan melihat reaksi dan pendapat rekan bisnis setelah mendengar ide dan gagasan bisnis Anda. Ide bisnis yang baik biasanya sederhana, tidak rumit, namun dibutuhkan orang dan orang yang membutuhkan produk Anda rela mengeluarkan uang untuk memperolehnya.

- Berikan harga produk yang berkualitas dengan harga yang lebih murah dari pesaing

            Berbicara tentang harga, tentu saja akan langsung berkaitan dengan keuntungan yang akan didapatkan. Kebanyakan perusahaan selalu mengambil keuntungan, dengan menetapkan harga yang sangat mahal untuk setiap produk atau jasa yang ditawarkannya. Namun, bila anda menetapkan harga yang lebih murah, untuk produk atau jasa yang berkualitas, tentu saja konsumen akan menggunakan jasa, serta membeli produk anda tanpa berpikir panjang. Tentu saja, mematok harga yang murah, yakni dengan mengambil keuntungan yang sedikit saja dari penjualan produk atau jasa, agar anda tetap mendapatkan untung dari penjualan produk serta jasa tersebut.

- Buatlah bisnis anda memiliki ciri khasnya sendiri

            Ciri khas bisnis sangat penting agar bisnis anda tetap eksis di pasaran. Tentu saja karena saat bisnis anda memiliki ciri khas yang berbeda dari perusahaan sejenis, maka masyarakat akan semakin tertarik untuk menjadi konsumen anda, selain itu ciri khas juga mempermudah masyarakat untuk menghafal perusahaan anda.

- Fokus dan serius untuk mengembangkan bisnis sehingga mendapat keuntungan

            Fokus dan serius merupakan hal yang sangat penting bila ingin bisnis berkembang. Anda dapat berfokus kepada pelayanan, kualitas serta mutu dari produk atau jasa yang anda tawarkan. Jangan teralu berbangga hati ketika bisnis yang dijalankan direspon bagus meski baru sekedar perkenalan. Sebab, belum tentu bisnis ini menghasilkan keuntungan. Untuk menakar apakah bisnis tersebut dapat menghasilkan keuntungan caranya mudah. Namun, syaratnya bisnis harus dijalankan terlebih dahulu. Saat bisnis berjalan, perhatikan apabila keseluruhan pemasukan yang dikurangi biaya operasional seperti gaji karyawan, biaya transportasi, ATK, sewa kantor atau tempat usaha masih menyisakan cukup banyak laba bersih, maka usaha tersebut dapat dikatakan memberi keuntungan karena laba bersih tersebut dapat dialokasikan untuk banyak kebutuhan lain seperti investasi usaha.

- Pekerjakan SDM yang berkualitas

            Perkembangan serta eksistensi perusahaan sangat bergantung bukan hanya kepada pemimpin perusahaan, tetapi sumber daya manusia atau kariawan yang anda pekerjakan juga meruakan kunci sukses dalam mempertahankan eksistensi sebuah bisnis atau perusahaan. Maka dari itu, pastikan anda benar-benar menyeleksi pekerja yang memiliki kemampuan yang benar-benar baik dalam bidangnya, selain itu penting untuk memperkerjakan karyawan yang bertanggung jawab akan pekerjaan, serta perusahan tempat dia bekerja.

- Pikirkan sejak jauh hari, penanganan bila bisnis mengalami keterpurukan

            Memikirkan penanganan saat bisnis anda mengalami keterpurukan merupakan hal yang sangat penting untuk dilakukan. Meskipun tidak ingin terpuruk, namun mencegah tentunya lebih baik bukan. Karena tidak ada yang dapat memperediksi kapan tepatnya bisnis anda akan mengalami masa krisis serta keterpurukan, maka memikirkan penanganan sejak dini merupakan pilihan yang tepat. Hal ini bertujuan agar anda tidak kebingungan dalam menentukan keputusan apa yang mau diambil, pada saat bisnis benar-benar berada pada masa sulitnya.



Referensi :