matematikaadit / atklite Goto Github PK
View Code? Open in Web Editor NEWUNMAINTAINED. Animetake Lite Version
Home Page: http://atklite.herokuapp.com
License: MIT License
UNMAINTAINED. Animetake Lite Version
Home Page: http://atklite.herokuapp.com
License: MIT License
Pengunjung pertama http://atklite.herokuapp.com mungkin bakal bingung tentang website tersebut.
Agar pengunjung tidak bingung. Tambahkan keterangan dibawah judul utama halaman, di bagian footer, atau di halaman about tersendiri. Isi keterangan bisa terdiri dari projek/website apa ini, serta link-link penting seperti animetake.com, repo project, dsb.
will complete this issue later.
Tanggal yang di bagian today dan tanggal di item gak sama. Buat keduanya sama.
Just compare this two images.
See what's wrong...
Yes, that's sure are encoding problem.
Maybe I must read The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!).
Will fix it this night. ๐จ (I hope)
Anyway, let's see what curl said in these two address:
$ curl --silent -I http://atklite.herokuapp.com | grep Content-Type
Content-Type: text/html; charset=utf-8
$ curl -I http://www.animetake.com | grep Content-Type
Content-Type: text/html; charset=UTF-8
What?!! They both have UTF-8 encoding...
so, it must be in the scraping process. Time to debug...
Butuh back link/button. Biar browsing lebih nyaman.
scrapy adalah framework untuk scrapping di Python. Coba pertimbangkan ganti modul scrapingnya dengan framework scrapy ini.
Contoh Penerapan:
Alasan: Biar tahu hari apa item tersebut muncul pertama kali di halaman utama (sama seperti di website aslinya).
$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/kenneth/.ssh/id_rsa.pub
Ganti [email protected]
dengan contoh lain, sertakan juga keterangan pada pembaca untuk mengganti email tersebut dengan email mereka.
Setelah itu buat virtualenv baru, aktifkan virtualenv tersebut, dan install semua requirements dengan pip.
Terlalu banyak setelah itu. Paka kata yang lain. Selain itu ada yang janggal ketika membaca bagian tersebut. Perbaiki.
Jika sukses, maka kalian bisa menjalankan perintah berikut:
$ python atklite.py
Jangan lupa untuk memberikan alamat URL untuk dikunjungi pembaca. Plus berikan keterangan untuk mematikan proses jika akan mengeksekusi program yang lain.
Terakhir, jangan lupa berikan keterangan bagaimana mematikan virtualenv.
Ketika klien meminta halaman index maupun item, modul utama akan memanggil modul scraper dan memintanya agar melakukan proses scrapping halaman http://www.animetake.com. Proses itu selalu dilakukan tiap kali ada request baru.
Hal ini tentunya tidak efisien, menghabiskan resources, dan mengakibatkan aplikasi jadi lambat (meskipun sebenarnya tidak kelihatan). Padahal tujuan utama dibikinnya atklite ini adalah agar akses informasi dari website http://www.animetake.com lebih ringan dan cepat.
Rencana awal, atklite sebenarnya inginnya dibuat cuma satu halaman. Jadi tidak perlu masuk ke halaman item segala. Tapi ternyata setelah dicoba, untuk melakukan scrapping 28+1 halaman di animetake membutuhkan waktu yang tidak sebentar. Itulah sebabnya diciptakan halaman item. Tujuannya agar mengurangi beban yang awalnya 28+1 halaman menjadi cuma 2 halaman saja. Sehingga scrapping jauh lebih ringan dari sebelumnya.
Agar atklite bisa jadi satu halaman, maka dibutuhkan alternatif lain proses scrapping. Solusi tersebut dapat dijabarkan dalam dua langkah:
Pertama, gunakan fasilitas database. Simpan hasil scrapping ke dalam database. Dan akses database ketika diperlukan.
Kedua, gunakan fasilitas queue atau cron-job-like process. Sendirikan scrapping, sehingga tidak lagi bergantung pada ada tidaknya request dari klien.
Detil dari dua solusi diatas akan dipikirkan di kemudian hari. Yang pasti dari dua langkah solusi diatas diharapkan nantinya atklite jadi lebih ringan dan cepat. Serta semoga cukup untuk jadi satu halaman saja.
NOTE: 28+1 halaman berasal dari 28 item ditambah 1 halaman index.
TODO:
Template yang sekarang dipakai masih banyak duplikasi. File templates/index.html
dan templates/item.html
punya bagian <head>
yang sama. Style-nya pun sama.
Ganti style biar berlaku untuk kedua template juga jadi susah. Harus ubah satu-satu di kedua file tersebut. Hal ini melanggar aturan DRY (Don't Repeat Yourself). Sangat menyusahkan untuk project kecil ini.
Solusinya adalah dengan menggunakan Template Inheritance. Fasilitas yang diberikan oleh template engine Jinja2. Dengan membuat base template dan mendefinisikan index.html
dan item.html
sebagai child template dari base template tersebut, duplikasi akan bisa dikurangi.
Resources:
Template Designer Documentation
Jelaskan secara singkat bagaimana menginstall atklite ini di heroku. Update cara instalasi sesuai dengan kebutuhan. Misal ketika menggunakan add-on atau module baru.
Coba deploy juga di OpenShift. Dokumentasikan proses deploynya.
Tampilan AtkLite saat ini masih terlalu simpel dan datar.
Berikut screenshot halaman utama (diambil 11 Nov 2013 17:20)
Sedangkan ini screenshot halaman item (diambil 11 Nov 2013 17:23)
Proposal: gunakan tema yang indah dari halaman example text editor brackets.
Berikut tampilan halaman example tersebut:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.