Apakah yang dimaksud dengan Software License ?

Android adalah sistem operasi yang bersifat open source.
Namun sudahkah kita tahu apakah itu opensource? Apakah opensource berarti software gratisan?
Software license (lisensi perangkat lunak) adalah perangkat hukum yang legal (bisa melalui kontrak tercetak maupun tidak) yang digunakan sebagai dasar regulasi pendistribusian software tersebut. Kalau kalian sering melihat simbol c dilingkari (© ) nah itu juga ada hubungannya dengan license. © / copyright adalah hak yang legal secara hukum bagi seseorang/sesuatu kelompok atas suatu produk dalam memproduksi, mendistribusi, dan menentukan lisensi atas produk tersebut. Jenis-jenis lisensi dalam konteks copyright (menurut Mark Webbink) ada Trade Secret, Propertiary, Protective FOSS, Non-Protective FOSS, dan Public Domain. ( FOSS = Free and Open Source Software. Free di sini berarti bebas, bukan gratis) Menurut beliau, urutan berdasarkan copyright nya begini :

23c627f4-1da6-434b-9bf7-d4ace09354ab

dari jenis tersebut, biasanya terbagi jadi dua yaitu Propertiary dan FOSS. Perbedaan kedua kubu ini terletak pada ijin/hak yang diberikan untuk memodifikasi ulang kode program. FOSS mengijinkan pengguna untuk memodifikasi ulang kode program dengan menyediakan source code nya (open source) sedangkan propertiary software tidak menyediakan source code programnya (closed source). Contoh untuk software dengan propertiary license : Windows, Adobe, Corel, Winamp (free), dan masih banyak lagi. Sedangkan contoh software dengan FOSS license ada GIMP, Inkscape, Linux kernel, android, MIUI.
Seperti yang saya tuliskan di atas, term Free pada FOSS bukan berarti gratis, melainkan bebas. Dan Free Software Foundation membuat diagram software berdasarkan lisensi yang berbeda-beda:

947e2464-e3a5-471c-845f-823a2a32e73f

FOSS sendiri biasanya dibagi menjadi dua secara garis besar: yaitu lisensi yang tidak memberikan banyak syarat untuk pendistribusiannya (permissive) , dan lisensi yang  bersyarat/protektif (copyleft). Copyleft berarti software yang dikembangkan menggunakan kode program tersebut baik dengan atau tanpa perubahan harus membebaskan penggunanya untuk memodifikasi program tersebut.  Contoh dari software dengan lisensi copyleft ialah yang berlisensi GNU GPL (General Public License). Tujuan lisensi ini ialah untuk memberikan kebebasan penuh pada pengguna, agar mereka bebas dalam mempelajari, memodifikasi, maupun mendistribusikan ulang program tersebut dengan syarat mereka tidak diperbolehkan membatasi akses pengguna lain terhadapnya.
FOSS pun memiliki banyak sekali jenis lisensi. Diantaranya adalah GNU GPLApache LicenseMITBSDDo What The ** You Want To Public License (WTFPL), dan masih banyak lagi lainnya. Untuk penjelasannya bisa dibuka masing-masing link nya ya 🙂
Lalu lisensi apa yang digunakan oleh android dan MIUI?
Ternyata setelah saya lihat di website resminya, Android memilih menggunakan apache license. Sedangkan MIUI saya belum menemukan di web nya tapi menurut wikipedia mereka juga menggunakan Apache License 2.0.
Menjadi sangat penting untuk melihat lisensi perangkat lunak ketika anda adalah seorang software developer yang membutuhkan library-library yang disediakan oleh pihak lain. Seperti yang beberapa hari lalu hangat dibahas mengenai lisensi React.js (framework javascript yang dibuat oleh developer facebook). Mereka menggunakan BSD+patent license, yang berarti anda tidak dapat melawan Facebook untuk patent yang mereka buat.
Demikian gan penjelasan secuplik mengenai software license. Jika ada koreksi/tambahan bisa dituliskan di bawah.
Advertisements

IoT at a glance (Summary)

This was summary from my hard-skill presentation at my office. So starting from February, the Software Engineer team at my office agreed to conduce a weekly sharing. (We’ve had a soft-skill discussion once a week) I volunteer myself as a second presenter (the first turn has taken by the other). At first I was confused to choose the topic that I want to share. Some friends told me to share about PID control system which was being implemented in our system. But I think there are some things that I have not yet understand (about the integral windup parameter and such). So I started to look into another topics. One that comes in mind is IoT. Which couple days before, my friend Marsel, let me brought his Raspberry Pi because he didn’t have a plan about it yet. So I thought it may be fine if I share a little about IoT and Single Board Computer (in this case, Raspberry Pi).

Finally, the day has come, and here’s my presentation:

IoT at a Glance. IoT (Internet of Things) is the inter-networking of physical devices, vehicles (also referred to as “connected devices” and “smart devices”), buildings and other items – embedded with electronics, software, sensors, actuators, and network connectivity – that enable these objects to collect and exchange data. Physical devices could be anything .

For example cars (nowadays, there were already cars which has its own operating system), aquarium (you could make automatic feeder or such), bags, shoes, even door or window, and so many things which only limited by our own ideas.

One of an important component of an IoT system is its embedded smart electronic system which connected the non-connected things into world-wide network so it can be accessed through internet. And I take SBC as an example. A single-board computer (SBC) is a complete computer built on a single circuit board, with microprocessor(s), memory, input/output (I/O) and other features required of a functional computer. (*) There are many SBC which are available to buy. Some of them are Raspberry Pi, BeagleBoard, Odroid, etc. And they have their own dis/advantages.

But I choose Raspberry Pi as an example because it’s the one that I currently brought right now (it’s my friend’s actually). The Raspberry Pi is a series of small single-board computers developed in the United Kingdom by the Raspberry Pi Foundation to promote the teaching of basic computer science in schools and in developing countries. The detailed specifications could be read here. Raspberry also develop its own operating system called Raspbian. Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware. Raspbian uses PIXEL, Pi Improved Xwindows Environment, Lightweight as its main desktop environment as of the latest update. It is composed of a modified LXDE desktop environment and the Openbox stacking window manager with a new theme and few other changes.

One thing that makes SBC could be used to create embedded devices is its GPIO. GPIO is general purpose input output. Unlike the other I/O, this port is not specifically designed for specific devices. This is the main feature of SBC and this what differ SBC with PC. We can explore this GPIO as much as we want. Connecting any sensors, or actuators. The GPIO voltage is 3.3v each. It was disabled by default. You can enabled it by runtime. Here’s GPIO port map of Raspberry Pi.

188681-c06f001.jpg

And finally I would like to show how Raspberry run. Default Raspbian user account is pi/raspberry (user/password). And for the latest version (Pi 3 model B) which has included Broadcomm wifi, we could connect to available network via wifi by : edit files in /etc/wpa_supplicant/wpa_supplicant.conf

Add these lines:

network={
ssid=’network-name’
psk=’network-pass’
}

And then restart wifi (sudo ifdown wlan0 , sudo ifup wlan0).

And I also give ideas for sample project using Python and Twitter REST API. With this ideas, you can build a system to automatically switch on/off your water system in your house just by tweets.

And, that’s all.
*sorry for my English

Belajar Memakai Kuda

(x) Dikejar (y) pakai kuda.
(x) Dikejar kuda.

Kalimat pertama berarti subjek (x) dikejar oleh objek lain implisit (y) yang memakai kuda sebagai kendaraan. Hal ini berarti kuda adalah kendaraan untuk mengejar seseorang. Sedang kalimat kedua kuda adalah objek yang mengejar subjek (x).

Beberapa hari terakhir saya menemukan gambar tersebut bertebaran di linimasa, tentu dengan maksud analogi terhadap ucapan Pak Ahok yaitu ‘Dibohongi pake Al Maidah’ yang oleh Buni Yani terdengar dan ter-transkrip menjadi ‘Dibohongi Al Maidah’. Dengan analogi dikejar kuda tersebut mereka bermaksud membela Pak Ahok dengan dasar adanya tambahan kata ‘pakai’ sehingga yang dimaksud berbohong ialah Penyampainya, bukan Al Maidah.

Jadi begini, dengan pernyataan demikian berarti beliau menyebut para ulama yang menyampaikan tafsir surat Al Maidah tersebut sebagai pembohong yang beralatkan ayat Qur’an. Bagaimana bisa seseorang yang tidak memahami Qur’an, mengatakan bahwa ulama, yang tentunya ilmunya mengenai tafsir Qur’an jauh lebih paham, sebagai seseorang yang membohongi umat. Menganggap seorang alim berbohong atas dasar ilmu yang dia miliki, berarti juga menganggap ilmu yang dipelajari seorang alim tersebut adalah kebohongan. Berbeda dengan kuda yang memang seekor hewan, yang tidak ada definisi pasti kegunaannya. Kuda dapat digunakan sebagai alat transportasi, kejar-kejaran, maupun sebagai hewan untuk dikonsumsi. Tentu permaknaan sebuah kalimat tak dapat serta merta dianalogikan dengan kalimat lain yang secara tata bahasa setara. Karena bisa saja secara makna jauh berbeda. (sebenarnya kesalahan analogi ini juga berlaku untuk semua, lebih baik jangan terpancing menggunakan analogi-analogi tak sesuai)

Jangan mudah dibohongi pakai ngasalogi. Ngasal analogi.

NB. Jadilah secerdas cerdas pembaca. Termasuk ketika membaca tulisan ini.

sumber gambar :
https://www.pinterest.com/lapequena01/horses/

Membangun aplikasi menggunakan Android Studio 2.1 (1)

Pada akhir pekan yang panjang ini, saya tertarik kembali mempelajari pembuatan aplikasi android. Terakhir mencoba sudah lama dulu masih memakai Eclipse IDE + Android SDT dan itupun masih menghitung luas segitiga. Dan sejak android meluncurkan IDE sendiri (Android Studio) , saya belum pernah benar-benar mencobanya. Install di laptop sudah pernah, tapi ya itu, dianggurkan saja.

Karena sudah lama sekali, maka saya lupa bagaimana dasar menggunakan android studio, cara debug langsung pada device androidnya. Kalau bahasanya (XML, Java) saya memang belum menguasainya. Bukan lupa. Ehe.

Oleh sebab itulah, kali ini, saya berusaha mendokumentasikan caranya agar kelak ketika lupa dapat membuka tulisan ini. Dan siapatau ada yang membutuhkan, semoga bermanfaat. Okesip.

Sebagai catatan, saya menggunakan Sistem operasi Ubuntu 16.04 LTS 32bit, Android Studio 2.1 (SDK lolipop dan marsmallow), serta device Xiaomi Mi4i untuk debug.

Pertama, pasang adb pada ubuntu dengan menggunakan commandline :

sudo apt-get install adb

Kemudian unduh android studio dari : https://developer.android.com/sdk/index.html

extract , dan letakkan pada /opt/ .

Jalankan dengan perintah

./opt/android-studio/bin/studio.sh

Akan muncul Android Studio Setup Wizard, untuk pengaturan awal aplikasi. Selesaikan proses tersebut.

Start new project

Isi semua field, dan pilih blank activity sebagai percobaan awal

pilih blank activity buat awal
pilih blank activity buat awal

ketika memilih minimum android version, sesuaikan dengan device kita (yang saya gunakan bersistem operasi Lolipop 5.0.2 , dan saya memilih Kitkat 4.4 pada minimum version)

Ketika selesai kita akan menemui tampilan editor android studio dengan default program Hello World.

tampilan IDE android studio
tampilan IDE android studio

Setelah itu coba jalankan pada device anda (ini yang sempat bermasalah) dengan klik Run, dan pilih device anda. Saat itu error message yang muncul adalah :

Unable to create Debug Bridge: Unable to start adb server: Unable to detect adb version, adb output: /Sdk/platform-tools/adb: 1: /Sdk/platform-tools/adb: Syntax error: “)” unexpected

Dari hasil bertanya dengan sesepuh google, saya menemukan jawaban di stackoverflow, bahwa masalah terletak pada platform-tools versi 23.1.0 pada Sistem Operasi Linux 32-bit. Yang perlu dilakukan ialah downgrade ke platform-tools versi 23.0.1 yang dapat diunduh dari https://dl-ssl.google.com/android/repository/platform-tools_r23.0.1-linux.zip

setelah selesai unduh, pindah file ke direktori sdk ( ~/Android/Sdk/ ) lalu rename folder platform-tools yang ada agar tidak conflict, kemudian unzip.

mv platform-tools_r23.0.1-linux.zip ~/Android/Sdk
cd ~/Android/Sdk
mv platform-tools platform-tools-notworking
unzip platform-tools-r23.0.1-linux.zip

Tutup program android studio, lalu jalankan lagi.

Buka project Helloworld yang sudah dibuat, lalu Run

dan voila! maka program akan dipasang pada device android yang terhubung dan dijalankan.

Tutorial: Komunikasi arduino menggunakan RS485

Tutorial kali ini mengenai komunikasi antara dua buah arduino menggunakan modul RS485. Sebenarnya saya juga merujuk dari tutorial lain berbahasa inggris di sini . RS485 merupakan salahsatu modul komunikasi half duplex, secara serial. Half duplex berarti mampu mengirim atau menerima data pada jalur yang sama, namun bergantian (satu arah dalam satu waktu). Modul RS485 memiliki 8 pin yaitu Vcc, GND, A&B, DE, RE, DI, dan RO. Pada tutorial ini saya menggunakan Arduino Uno dan Leonardo, 2 buah modul RS485, serta 16 kabel jumper, dan sebuah breadboard.

Modul RS485

Rangkaiannya seperti berikut :

rangkaian di fritzing
rangkaian di fritzing

– Pin DI (data in) ke pin 11 Arduino sebagai TX software serial (kabel putih)
– Pin RO (receive out) ke pin 10 Arduino sebagai RX software serial (kabel jingga)
– Pin DE (data enable) dan RE (receive enable) dijumper dan dihubungkan ke pin 3 Arduino (kabel hijau)
– Pin A dan B (RS485 pair) dipasangkan kedua modul RS485 (kabel biru & kuning)
– Vcc dan GND dihubungkan (kabel merah dan hitam)

Modul RS485 ini dihubungkan dengan port serial arduino. Jika arduino yang digunakan hanya memiliki satu port serial (yang dihubungkan ke serial monitor PC), makan gunakanlah software serial (salah satu library arduino yang dapat menggunakan pin digital sebagai port serial).

Kemudian programnya ada 2, masing-masing untuk master dan remote. Program arduino dapat membuka 2 sketch dalam waktu yang sama, namun perhatikan PORT communication yang digunakan. Setelah kedua program diupload ke masing-masing perangkat, pilih port komunikasi dengan master lalu buka serial monitor. Ketikkan suatu karakter maka karakter itu akan dikirim melalui RS485 ke device remote untuk kemudian dikembalikan ke master dan ditampilkan di layar serial monitor.

arduino uno dan leo - RS485 (abaikan bunga)
arduino uno dan leo – RS485 (abaikan bunga)

Kode program Arduino Master :

/* YourDuino SoftwareSerialExample1
   - Connect to another Arduino running "YD_SoftwareSerialExampleRS485_1Remote"
   - Connect this unit Pins 10, 11, Gnd
   - Pin 3 used for RS485 direction control
   - To other unit Pins 11,10, Gnd  (Cross over)
   - Open Serial Monitor, type in top window. 
   - Should see same characters echoed back from remote Arduino

   Questions: terry@yourduino.com
 *edited:
 - addded filter
*/

/*-----( Import needed libraries )-----*/
#include <SoftwareSerial.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define SSerialRX 10 //Serial Receive pin
#define SSerialTX 11 //Serial Transmit pin

#define SSerialTxControl 3 //RS485 Direction control

#define RS485Transmit HIGH
#define RS485Receive LOW

#define Pin13LED 13

/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

/*-----( Declare Variables )-----*/
int byteReceived;
int byteReceivedSerial;
int byteSend;

void setup() /****** SETUP: RUNS ONCE ******/
{
 // Start the built-in serial port, probably to Serial Monitor
 Serial.begin(9600);
 Serial.println("YourDuino.com SoftwareSerial remote loop example");
 Serial.println("Use Serial Monitor, type in upper window, ENTER");

 pinMode(Pin13LED, OUTPUT); 
 pinMode(SSerialTxControl, OUTPUT); 

 digitalWrite(SSerialTxControl, RS485Receive); // Init Transceiver 

 // Start the software serial port, to another device
 RS485Serial.begin(4800); // set the data rate 

}//--(end setup )---

void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
 digitalWrite(Pin13LED, HIGH); // Show activity
 if (Serial.available())
 {
 byteReceivedSerial = Serial.read();

 digitalWrite(SSerialTxControl, RS485Transmit); // Enable RS485 Transmit 
 RS485Serial.write(byteReceivedSerial); // Send byte to Remote Arduino

 digitalWrite(Pin13LED, LOW); // Show activity 
 delay(10);
 digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit 
 }

 if (RS485Serial.available()) //Look for data from other Arduino
 {
 digitalWrite(Pin13LED, HIGH); // Show activity
 byteReceived = RS485Serial.read(); // Read received byte
 if ((byteReceived == byteReceivedSerial) && (byteReceived != NULL))
 {
 Serial.write(byteReceived); // Show on Serial Monitor
 delay(10);
 digitalWrite(Pin13LED, LOW); // Show activity 
 }
 } 

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********

Kode program Arduino Remote

/* YourDuino SoftwareSerialExample1Remote
   - Used with YD_SoftwareSerialExampleRS485_1 on another Arduino
   - Remote: Receive data, loop it back...
   - Connect this unit Pins 10, 11, Gnd
   - To other unit Pins 11,10, Gnd  (Cross over)
   - Pin 3 used for RS485 direction control   
   - Pin 13 LED blinks when data is received  
   
   Questions: terry@yourduino.com 
   *edited:
   - addded delay
*/

/*-----( Import needed libraries )-----*/
#include <SoftwareSerial.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define SSerialRX        10  //Serial Receive pin
#define SSerialTX        11  //Serial Transmit pin

#define SSerialTxControl 3   //RS485 Direction control
#define RS485Transmit    HIGH
#define RS485Receive     LOW

#define Pin13LED         13

/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

/*-----( Declare Variables )-----*/
int byteReceived;
int byteSend;

void setup()   /****** SETUP: RUNS ONCE ******/
{
  // Start the built-in serial port, probably to Serial Monitor
  Serial.begin(9600);
  Serial.println("SerialRemote");  // Can be ignored
  
  pinMode(Pin13LED, OUTPUT);   
  pinMode(SSerialTxControl, OUTPUT);  
  
  digitalWrite(SSerialTxControl, RS485Receive);  // Init Transceiver
  
  // Start the software serial port, to another device
  RS485Serial.begin(4800);   // set the data rate 
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  //Copy input data to output  
  if (RS485Serial.available()) 
  {
    byteSend = RS485Serial.read();   // Read the byte 
    
    digitalWrite(Pin13LED, HIGH);  // Show activity
    delay(10);              
    digitalWrite(Pin13LED, LOW);   

    if(byteSend != NULL)
    {
      digitalWrite(SSerialTxControl, RS485Transmit);  // Enable RS485 Transmit    
      delay(10);
      RS485Serial.write(byteSend); // Send the byte back
      delay(10);   
      digitalWrite(SSerialTxControl, RS485Receive);  // Disable RS485 Transmit      
    } 
//    delay(100);
  }// End If RS485SerialAvailable
  
}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/
//NONE

//*********( THE END )***********

Contoh di atas hanyalah sebagai dasar untuk mengetahui cara kerja komunikasi menggunakan RS485. Untuk penerapannya, komunikasi menggunakan RS485 ini dapat digunakan untuk beberapa buah arduino sebagai remote/client dengan maksimum jarak/panjang kabel 1200 meter dengan kecepatan maksimum 20Mbps. Cocok untuk diaplikasikan dalam sebuah sistem sensor network.

Dalam komunikasi menggunakan RS485, setiap perangkat harus secara bergantian mengirim, dan menerima. Seperti bagaimana manusia berkomunikasi seharusnya. Bahwa agar tercipta suatu komunikasi yang baik, maka harus ada yang berperan sebagai pendengar yang setia dan pembicara yang jelas.

Sekian tutorial mengenai komunikasi arduino menggunakan modul RS485.  Jika ada yang hendak ditanyakan bisa melalui kolom komentar di bawah. Semoga bermanfaat.

*sumber:

https://arduino-info.wikispaces.com/RS485-Modules
http://arduino-info.wikispaces.com/SoftwareSerialRS485Example
https://www.arduino.cc

 

Belajar dari Ketoprak Cirebon

Ketoprak merupakan salah satu warisan kuliner favorit di Indonesia, khususon di Pulau Jawa. Dulu waktu kuliah, langganan saya dan rekan-rekan kampus ialah Ketoprak Lik Min yang terletak persis di sebelah SD di Sendowo. Kemudian sekarang, saat saya sedang menjalani misi di Tangerang, ternyata malah semakin banyak penjual ketoprak yang ada di sekitar tempat kos. Dan langganan saya ialah ketoprak cirebon yang hanya berjarak sekian langkah dari kos. Pernah sih nyobain ketoprak lain yang lebih jauh, namun tetap ketoprak cirebon ini yang paling pas. Selain rasa yang konsisten, bumbu yang mantap, jarak yang dekat pun menjadi alasan saya memilih ketoprak ini. Bahkan mas-mas delivery McD pun memilih berhenti di sini untuk mampir makan.

Beberapa bulan berlangganan ketoprak di sini, ada satu pelajaran moral yang dapat saya ambil. Ialah mengenai ekspektasi. Sejak awal saya selalu pesan ketoprak dengan level “sedang”. Bukannya takut pedas, saya hanya males kalau nanti tengah malam harus setor tunai terlalu dini karena efek kepedesan. Hingga pernah suatu ketika, saat saya pesan ketoprak level sedang dengan berekspektasi rasa pedas yang tak berlebih, ternyata rasanya malah terlalu pedas. Sudah beberapa kali terulang sampai saya harus menegaskan bahwa ‘sedang berarti cabe nya dikit’ kepada mas penjual ketoprak.

Pernah juga pada suatu hari, ketika saya sedang ingin merasakan nikmatnya makan pedas, saya pesan ketoprak dengan level pedas. Namun apadaya, sejak suapan pertama (sampai terakhir) ternyata rasa pedasnya malah sedang-sedang saja. Bahkan masih kalah pedas dengan chat di whatsapp yang hanya centang dua biru tanpa balasan. (Maaf, jangan tersungging, ini berdasar pengalaman teman. Kecuali anda teman saya yang saya maksud, ya maaf.)

Dari sini saya belajar, bahwa jangan terlalu berlebihan dalam ekspektasi. Seperti kata Ika natassaIt’s even said that expectation is the root of all dissapointment. ” , dan ditambah lagu Kunto Aji “mana mungkin hari ini terbuai ekspektasi tinggi jika tak berawal indah sampai akhirnya kau hancurkaan. Saaaakit..” .

Kalau kata saya sih,

“Berhati hatilah dalam berekspektasi, terlebih lagi mengenai hati”.

Magento custom order state

magento

Akhirnya diberi kesempatan untuk menuliskan sesuatu di blog ini. Sebenarnya sudah beberapa waktu lalu ingin menulis namun apadaya laptop error dan kerjaan di kantor tidak dapat disambi ngeblog. Dan tulisan kali ini ialah mengenai Magento. Magento adalah platform eCommerce yang cukup lengkap yang berdasar dari ZendPHP framework. Banyak toko jual beli online yang menggunakan platform ini dikarenakan fitur yang sangat banyak, namun salah satu kekurangan dari magento (yang sepertinya sekarang sudah sedikit teratasi) ialah dokumentasi program yang minim.

Kali ini saya akan membagi (sebenarnya sih menyimpan) cara membuat custom order state di Magento. Order state ialah state pesanan yang dikenali oleh program. Pada dasarnya ada 8 state di Magento yaitu :

new, pending_payment, holded, payment_review, cancelled, closed, processing, complete.

Namun ada kemungkinan suatu sistem jual beli membutuhkan state lain pada prosesnya semisal cicilan_pertama atau lainnya. Nah dikarenakan pengguna tidak dapat membuat order state baru melalui menu di backend, maka perlu dibuat modul/extension untuk custom orderstate.

Berikut beberapa langkah yang saya coba (dan telah diuji keberhasilannya) untuk membuat custom order state pada magento:

pertama buatlah modul dan tentukan namanya (misal. CustomState)

daftarkan modul pada aplikasi anda dengan membuat file pada : app/etc/modules/(nama_toko_anda)_CustomState.xml

format:

<?xml version="1.0"?>
    <config>
        <modules>
            <(nama_toko_anda)_CustomState>
                <active>true</active>
                <codePool>local</codePool>
            </(nama_toko_anda)_CustomState>
         </modules>
    </config>

kemudian buat configuration files dari modul anda pada : app/code/local/<nama_toko_anda>/CustomState/etc/config.xml

berikut contoh file konfigurasinya :

<?xml version="1.0"?>
<config>
<modules>
<(nama_toko_anda)_CustomState>
<version>0.1.0</version>
</(nama_toko_anda)_CustomState>
</modules>
<global>
<resources>
<orderstate_setup>
<setup>
<module>(nama_toko_anda)_CustomState</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</orderstate_setup>
<orderstate_write>
<connection>
<use>core_write</use>
</connection>
</orderstate_write>
<orderstate_read>
<connection>
<use>core_read</use>
</connection>
</orderstate_read>
</resources>
<sales>
<order>
<statuses>
<payment translate="label">
<label>Angsuran 1</label>
</payment>
</statuses>
<states>
<payment translate="label">
<label>Diangsur</label>
<statuses>
<payment default="1"/>
</statuses>
</payment>
</states>
</order>
</sales>
</global>
</config>

dan tahap berikutnya ialah membuat skrip untuk memasukkan dalam SQL database dengan membuat file pada:

app/code/local/<your_store>/CustomState/sql/customstate_setup/mysql4-install-0.1.0.php

<?php
    $installer = $this;

    // Required tables
    $statusTable = $installer->getTable('sales/order_status');
    $statusStateTable = $installer->getTable('sales/order_status_state');

    // Insert statuses
    $installer->getConnection()->insertArray(
        $statusTable,
        array('status', 'label'),
        array(
            array(
                'status' => 'angsuran_1', 
                'label' => 'Angsuran 1'
            )
        )
    );

    // Insert states and mapping of statuses to states
    $installer->getConnection()->insertArray(
        $statusStateTable,
        array('status', 'state', 'is_default'),
            array(
                array(
                    'status' => 'angsuran_1', 
                    'state' => 'Diangsur', 
                    'is_default' => 1
                )
            )
        );

setelah semua selesai, masuk ke backend, system → cache management → flush magento cache.

flush cache magento
flush cache

Logout kemudian login kembali, dan cek state dan status baru anda di System → order statuses.

Capture
new order state

Sekian, semoga tidak menyesatkan, semoga bermanfaat.

Tutorial membuat efek tiny planet

Akhirnya posting tutorial lagi setelah sekian lama absen dari kategori ini. Kali ini bukan tutorial programming maupun elektronika, apalagi tutorial hijabers. Kali ini saya akan berbagi tutorial cara membuat sebuah tiny planet dari foto panorama yang ada. Mungkin ada yang belum tahu, tinyplanet adalah.. duh bingung menjelaskannya. Ini contohnya :

sanset
spherical-sunset sunset before (atas) dan after (bawah) pembuatan tinyplanet

Kali ini saya akan menuliskan cara membuatnya menggunakan software GIMP. GIMP (GNU Image Manipulation Program) adalah aplikasi pengolah gambar gratis dengan lisensi GNU GPL. Kalau versi berbayar yang paling menyerupainya ialah Adobe Photoshop. Langsung menuju langkah pertama, pilih foto yang akan direkayasa. (akan lebih keren kalau fotonya ialah panorama 360o). Namun foto yang saya gunakan foto pemandangan di Kalimantan. Usahakan fotonya memiliki garis batas horizon yang lurus dan jelas.

1
foto awal

Setelah itu, ubah ukurannya menjadi persegi. (Width = Height) Gambar memang jadi aneh, tapi jangan terlalu dihiraukan.

2
adjust size. square

Setelah itu, putar gambar 180o atau flip vertical.

3
vertically flipped

Kemudian ke bagian yang ditunggu, pilih Filter -> Distort -> Polar Coordinate. Atur offset untuk memutar/merotasi gambar.

4
after polar coordinate effect

Dan untuk memperoleh gambar lebih besar bagian tengah serta menghilangkan sudut sudut putih, crop gambar dengan menahan tombol shift untuk menjaga agar bentuk seleksi crop ialah persegi.

5
setelah cropping dan ‘pembersihan’

Pada setiap perlakuan Polar coordinate pada gambar dengan kedua ujung sisi tidak sama, maka akan terjadi kontras warna dan bentuk objek. Untuk menghaluskan dapat menggunakan healing tools maupun clone stamp sesuai kebutuhan. Dan tambahkan sedikit adjusment pada gambar, hingga hasil akhirnya :

final
and, the final result. tinyplanet of meliau, kalimantan

Demikian hasil akhir, kalau ada yang kurang jelas bisa ditanyakan. Oh iya, semua cara di atas dapat juga dengan mudah dilakukan pada Adobe Photoshop karena menu yang serupa. Sekian, banyak kurangnya mohon maaf dan mohon koreksi jika ada kesalahan.

[update] tiny planet tegal alun, papandayan:

tnplnt
tiny planet tegal alun-papandayan (mi4i camera + adobe photoshop cs2)

Instalasi dan kompilasi TinyOS pada Ubuntu 13.10

downloadSistem operasi dari komputer yang saya gunakan ialah Ubuntu Saucy (13.10). Pada ubuntu, karena merupakan sistem operasi LINUX/UNIX maka hal yang pertama di lakukan untuk melakukan instalasi ialah menambahkan daftar repositori pada direktori /etc/apt/source.list.

 

Kemudian, lakukan instalasi tinyos dengan perintah

$ sudo apt-get install tinyos-source tinyos-tools nescc

Pada awal percobaan, nescc (nested-c compiler) gagal diinstall karena crash dengan paket aplikasi kate-data (dependency dari aplikasi video editor : KDEnlive). Hal ini membuat saya harus menghapus program editor video tersebut demi terpasangnya nescc.. Oleh karena itu saran saya untuk dapat menggunakan nescc anda harus menghapus segala sesuatu yang berhubungan dengan KDE (yang kira-kira memiliki dependency kate-data) terlebih lagi untuk pengguna desktop environment KDE, sebaiknya ganti dan hapus KDE tersebut.

Setelah semuanya berhasil dipasang, kemudian dilakukan pengecekan environment dengan perintah

$ tos-check-env

Setelah itu masuk ke direktori tinyos. Pada mulanya saya tidak tahu lokasinya, namun dengan bantuan perintah ‘locate tinyos’ akhirnya ditemukan bahwa instalasi tinyos disimpan dalam direktori /usr/src/tinyos . Kemudian, masuk ke direktori /tinyos/apps/. Di dalam direktori tersebut terdapat beberapa macam contoh aplikasi tinyOS yang sudah dibuat. Karena ingin mencoba kompilasi, maka saya menggunakan contoh kode dari sini. Program yang saya pilih ialah Radio Sense To leds. Program ini merupakan contoh pada platform sensor node dengan standar 4Hz dan mengirimkan paket data dalam AM packet. Node yang menerima broadcast menampilkan 3 bit nilai paling dasar yang diterima. Aplikasi ini sebagai contoh dasar penggunaan komunikasi AM, timer, dan kerja sensor dalam TinyOS. Untuk melakukan kompilasi diperlukan compiler untuk platform msp430. Maka dari itu saya melakukan instalasi paket msp430-gcc. Setelah itu, saya coba melakukan kompilasi. Daftar platform yang dapat digunakan sebagai target dapat dilihat di direktori /usr/src/tinyos/tos/platforms . Saya mencoba melakukan kompilasi untuk platform EyesIFX yang merupakan sensor node dengan mikrokontroler MSP430, dengan memori eksternal 8Mbit dan support TinyOS (http://en.wikipedia.org/wiki/List_of_wireless_sensor_nodes).

Untuk kompilasi digunakan perintah make <platform> , maka saya ketikkan di terminal :

$ make eyesIFX

Namun ternyata masih ditemukan error dengan pesan :

make: javac: Command not found

download (1)Ternyata diperlukan instalasi JDK (java development kit) untuk melakukan kompilasi aplikasi TinyOS. Maka saya melakukan instalasi lagi paket java jdk :

$ apt-get install openjdk-7-jdk

 

Setelah paket JDK berhasil dipasang, saya coba lagi perintah make, dan alhamdulillah, berhasil.
Berikut bukti screenshoot nya :

build for eyeIFXv2 success
build for eyeIFXv2 success

 

Program yang berhasil dibuat tersimpan dalam direktori:

/usr/src/tinyos/apps/<nama aplikasi>/build/<nama platform>

*contoh kalau punya saya di dalam direktori :

/usr/src/tinyos/apps/RadioSenseToLeds/build/eyesIFXv2

Sekian pengalaman instalasi dan kompilasi aplikasi TinyOS untuk platform msp430 menggunakan notebook Lenovo G460 dengan sistem operasi Linux (Ubuntu 13.10).

KONSEP EMBEDDED SYSTEM PADA NOKIA LUMIA 920

Nokia Lumia 920 adalah salah satu ponsel cerdas terbaru keluaran dari Nokia. Seperti versi pendahulunya, ponsel ini masih setia menggunakan sistem operasi Windows. Hanya, kali ini digunakan seri terbaru yaitu Windows phone 8.

metro ui windows phone
metro ui windows phone

            Seperti yang telah kita sepakati, suatu Embedded System (sistem benam) merupakan sebuah sistem l menyerupai komputer yang melakukan suatu fungsi tertentu. Fungsi tertentu tersebut diantaranya sebagai media penyimpanan data, alat komunikasi, pengambil gambar, dan lain sebagainya. Dikarenakan hanya melakukan fungsi tertentu, maka komponen penyusun embedded system lebih kecil jika dibandingkan dengan personal computer. Dan menurut konsep tersebut, Nokia Lumia 920 dapat kita sebut sebagai embedded system dengan jenis smartphone.

            Telah kita ketahui bahwa trend embedded system dewasa ini ialah penggunaan System on Chip (SoC), yaitu Intregated Circuit yang mengintegrasikan beberapa macam komponen dari sebuah komputer atau sistem elektronik lain dalam sebuah chip tunggal. SoC dapat berisi sinyal digital, analog, maupun campuran, serta kadang juga radio-frequency function dalam sebuah chip tunggal. Pada umumnya Soc tersusun atas mikrokontroler, mikroprosesor atau DSP (Digital Signal Processor) core. Ada yang single core, namun belakangan ini kebanyakan smartphone menggunakan dualcore bahkan quadcore. Lalu ada blok memori (RAM, ROM, EEPROM), oscilator, timer, interface eksternal (USB, USART, SPI, dll), Analog interface, pengatur tegangan dan sirkuit manajemen sumber daya. Untuk Nokia Lumia 920 sendiri menggunakan Soc Snapdragon manufaktur Qualcomm dengan seri MSM8960. Chip dengan fabrikasi 28 nm ini menggunakan CPU ARMv7 dual-core dengan kemampuan clock speed mencapai 1,7 GHz. Sedangkan GPU(Graphical Processing Unit)  yang digunakan ialah Adreno 225 dengan dual channel memori yang sudah mendunkung Direct3D feature level 9_3. Untuk teknologi jaringan nirkabel radio-frequency, SoC ini dibenamkan Bluetooth 4.0, 802.11a/b/g/n (2.4/5 GHz), World Mode (LTE FDD/TDD CAT3, SVLTE-DB, TD-SCDMA, Rel9 DC-HSPA+, GSM/GPRS/EDGE, EGAL, 1× Adv., 1× EV-DO Rev. A/B).

            Selain sistem chip, juga ada sistem tampilan/layar dan pada Lumia 920 ini digunakan LCD berukuran (diagonal) 4.5 inch dengan resolusi 1280×768 WXGA yang memiliki kerapatan piksel 332 ppi. Layar tersebut juga dilengkapi dengan panel IPS (in-plane-switching) yang menghasilkan sudut pandang lebih luas dengan akurasi produksi warna yang tinggi serta dapat mereduksi motion-blur.

Selain itu juga ada kamera, yang menggunakan teknologi PureView dengan resolusi 8,7 MP yang memiliki fitur optical image-stabilization. Sensor yang digunakan ialah Back Side Illumination (BSI), yang mampu meningkatkan performa kamera dalam kondisi cahaya yang kurang (redup), dengan lensa Carl Zeiss yang mampu merekam video HD beresolusi 1080p. Sebagai data masukan, terdapat berbagai sensor yaitu Multitouch capacitive touchscreen, sensor kelembapan, sensor cahaya, gyroscope, magnetometer, dan accelerometer 3 axis.

            Teknologi sumber daya yang dibenamkan dalam Nokia Lumia 920 ini ialah Lithium Polimer BP-4GW dengan kapasitas 2000 mAH. Smartphone ini sudah mendukung teknologi inductive charging yaitu proses pengisian ulang daya baterai nirkabel (sering disebut wireless charging). Memang tanpa kabel, namun menggunakan coil untuk memindah energi dari charger (primary coil) ke device (secondary coil).

            Sistem Operasi yang ditanamkan pada Nokia Lumia 920 ini ialah Windows Phone 8. Sistem Operasi ini dapat digolongkan sebagai Embedded Operating System.Windows Phone merupakan generasi kedua dari Windows Phone mobile operating system.Sistem operasi ini memiliki interface sederhana, kotak-kotak, tersusun dalam grid yang dikenal dengan nama Metro UI / Modern UI, dan merupakan sistem operasi Closed-Source (commercial and also propertiary).Kernel yang digunakan ialah Microsoft NT kernel, sama seperti yang digunakan oleh Windows 8. NT kernel menggunakan teknologi hybrid kernel yaitu kombinasi beberapa aspek dari arsitektur microkernel dan monolithic kernel. Dengan NT Kernel, Windows Phone 8 mendukung multi-core CPU serta NTFS File System. Windows Phone 8 juga mendukung multi-tasking, sehingga pengguna dapat menjalankan suatu aplikasi tanpa harus menutup aplikasi lainnya, serta dapat berganti dari aplikasi yang sedang aktif dengan aplikasi yang sedang berjalan di background. Sistem Operasi ini juga memiliki kemampuan NFC (Near Field Communication) yang memungkinkan dua device bersistem operasi windows 8 bertukar informasi/data melalui fitur Tap and Send.