https://soundcloud.com/dolly-aswin-harahap/kemenangan-umat-islam

pixel skylines
dirt enthusiast
Cosmic Funnies
Lint Roller? I Barely Know Her
let's talk about Bridgerton tea, my ask is open

No title available
No title available

titsay
Monterey Bay Aquarium
he wasn't even looking at me and he found me
Game of Thrones Daily
will byers stan first human second
No title available

JBB: An Artblog!
🪼
d e v o n
RMH

Product Placement
Alisa U Zemlji Chuda
TVSTRANGERTHINGS

seen from Singapore
seen from United States

seen from Malaysia
seen from Bolivia

seen from Colombia

seen from Malaysia

seen from Malaysia
seen from United States

seen from United States

seen from Malaysia
seen from Germany

seen from Malaysia
seen from Iraq

seen from Germany

seen from United States
seen from United States
seen from United States
seen from United States
seen from United States
seen from United States
@dollyaswin
https://soundcloud.com/dolly-aswin-harahap/kemenangan-umat-islam
I have create a skeleton app for CRUD Image REST API using Apigility and Doctrine 2 ORM. Please check https://github.com/aqilix/apigility-image-skel
Module & Module Manager Di Zend Framework 2
Module Manager di Zend Framework 2 adalah cara yang ampuh untuk membuat kode program yang re-usable yang dapat digunakan kembali di project yang lain dengan mudah.
Di Zend Framework 2, Module adalah sebuah group dari kode program yang biasanya ditujukan untuk menghandle bagian tertentu dari sebuah aplikasi. Module ini bisa berisi Service, Konfigurasi, Controller dan View Script. Karena Module ini bisa berisi konfigurasi, maka Module juga bisa digunakan untuk membuat Route, memuat Service ke dalam Service Manager dan memasang Listener untuk sebuah Event.
Module Manager
Module Manager adalah salah satu komponen yang sangat penting dalam Zend Framework 2 yang berfungsi untuk memuat Module yang sudah didaftarkan, dan men-trigger event - event yang ada di dalam Module . Seringnya developer tidak menggunakan Module Manager ini secara langsung. Untuk itu di sini saya membahas bagaimana sebenarnya sebuah Module bisa dimuat pada Zend Framework 2.
Zend\ModuleManager\ModuleManager adalah implementasi dari Zend\ModuleManager\Interface yang bertanggung jawab untuk memuat module dan membuat Namespace dari Module tersebut bisa digunakan di dalam aplikasi. Module Manager menggunakan array sebagai konfigurasi, yang kemudian dijadikan parameter untuk Constructor. Konfigurasi bisa berisi daftar Module yang akan dimuat, lokasi dari Module, dan lokasi dari konfigurasi file Autoload.
$moduleManager = new ModuleManager([ 'modules' => [ 'Application', 'Blog', 'Catalog', 'Cart', 'Checkout', ], 'module_listener_options' => [ 'module_paths' => [ 'config/autoload/{,*.}{global,local}.php', ]
] ]); $moduleManager->loadModules();
Atau biasanya dibuat sebagai konfigurasi di file config/application.config.php yang akan dimasukkan ke dalam Module Manager sewaktu instansiasi.
Class Module.php
Syarat minimal dari sebuah Module di Zend Framework 2 adalah harus memiliki sebuah file yang diberi nama Module.php. Module.php ini adalah Class yang sangat simpel yang hanya cukup diberi nama Module yang diletakkan di dalam Namespace Module tersebut. Di dalamnya kita bisa membuat array yang mendefenisikan konfigurasi dari module (method getConfig()) dan lokasi dari Class yang digunakan sebagai Autoloaded pada Module ini (method getAutoloaderConfig()).
Dan ketika module dimuat maka yang pertama kali dipanggil adalah method onBootstrap(). Ini merupakan method yang cukup ampuh dan kita bisa menggunakannya untuk memasang Listener dari Event. Ataupun mendefenisikan Routing yang baru dan menambahkan kode yang akan diproses pada setiap request.
Sedangkan method init() dipanggil sebelum Module di-bootstrap, dan bisa digunakan untuk membuat konfigurasi yang dibutuhkan Module tersebut sewaktu proses Bootstrap.
<?php namespace Order;
class Module { }
Zend Framework 2 menyediakan beberapa Interface yang bisa digunakan oleh Class Module yang di dalamnya tersedia fitur - fitur yang bisa digunakan oleh Module tersebut. Interface tersebut mendeskripsikan method - method yang diimplementasikan, walaupun begitu Interface tersebut tidak perlu sepenuhnya diimplementasikan (cukup menuliskan nama Method saja).
Penggabungan Konfigurasi
Konfigurasi dapat diletakkan di beberapa tempat, namun semua konfigurasi itu digabunggakn secara rekursif ke dalam sebuah konfigurasi oleh Zend\Stdlib\ArrayUtils::merge(). Karena konfigurasi digabungkan secara rekursif, urutan penggabungan konfigurasi tersebut harus dipahami untuk menghindari overwriting yang tidak diinginkan.
Konfigurasi digabungkan dengan urutan berikut ini.
Array yang dikembalikan oleh method getConfig() yang ada pada Class Module
config/autoload/global.*.php File Autoload Global
config/autoload/local.*.php File Autoload Lokal
Method - method yang dideskripsikan di dalam Interface yang sudah disediakan get*Config()
Ketika point A - C selesai, maka konfigurasi gabungan yang belum sempurna ini dapat di-cache oleh Module Manager. Jadi, jika ingin menggunakan konfigurasi menggunakan Closure, seharusnya diletakkan di method - method (point D) konfigurasi kustom, bukan di method getConfig() (point A).
Event di Dalam Module
Agar membuat Module se-fleksibel mungkin, ModuleManager men-trigger sejumlah Event selama proses memuat Module. Pada awalnya, event loadModules di-trigger, kemudian event - event lainnya. Sejumlah event tersebut di-trigger setiap Module dimuat. Adapun urutan dari event - event tersebut
loadModules (ModuleEvent::EVENT_LOAD_MODULES)
loadModule.resolve (ModuleEvent::EVENT_LOAD_MODULE_RESOLVE)
loadModule (ModuleEvent::EVENT_LOAD_MODULE)
mergeConfig (ModuleEvent::EVENT_MERGE_CONFIG)
loadModules.post (ModuleEvent::EVENT_LOAD_MODULES_POST)
Untuk lebih detail dari tujuan event - event tersebut di atas, bisa melihat dokumentasi Zend Framework di sini
Referensi:
Zend Framework 2 Certification Study Guide
Learn Zend Framework 2 By Example
Zend Framework 2 event manager component is very powerful, but often misunderstood. This article shows you simple use cases of it.
Event Manager sangat banyak sekali digunakan di dalam Zend Framework 2 (karena itu Zend Framework dapat dikatakan Event-Driven Framework). Dengan begitu sangat bertentangan dengan Zend Framework 1. Di sini sebagian besar element MVC (routing, dispatching, view) tidak dipanggil satu demi satu, melainkan Framework men-trigger Event (dispatch, route, dll). Link yang saya share di sini, sudah yang sangat lengkap membahas Event Manager di Zend Framework 2 dan juga memberikan contoh yang sangat mudah dipahami.
Mengapa Menggunakan Event Manager
Bagaimana Menggunakan Event Manager Men-trigger Event Menggunakan Listener Shared Event Manager MVC Event Aggregate Listener
Service Manager Di Zend Framework 2
Service Manager di Zend Framework 2 digunakan untuk menemukan dan mendapatkan instansi dari sebuah service (class), termasuk juga memenuhi segala dependensi yang dibutuhkan dari sebuah service.
Zend Framework 2 menggunakan Service Manager sebagai kerangka dari framework, dengan Service Manager khusus yang digunakan untuk menemukan service - service tertentu, seperti:
Controllers
Plugins
View Helpers
Input Filters
Validators
Form Elements
Hydrators
Application Service
Service Locators
Service Locator design pattern menggambarkan sebuah method dari dari sebuah abstraction layer. Service Managers di Zend Framework 2, merupakan implementasi dari ServiceLocatorInterface interface yang memberikan dua method, yaitu has() untuk menentukan apakah sebuah service sudah didaftarkan di dalam Service Manager, dan get() untuk mengembalikan sebuah instansi dari service tersebut.
Plugin Manager
Banyak sekali implementasi dari ServiceLocatorInterface yang mempunyai tugas dengan letak yang berbeda dan plugin yang berbeda pula.
Abstract Plugin Manager
AbstractPluginManager adalah sebuah implementasi Service Manager untuk mengatur plugins. Abstract class memberikan method untuk mendefenisikan dan memanggil plugin, selama service tersebut dibuat melalui class invokable, factories, dan object yang dapat dipanggil seperti closure.
Controller Manager
Zend\Mvc\Controller\ControllerManager meng-extend AbstractPluginManager, dan juga merupakan Plugin Manager yang mencari dan memanggil Controller class. Ini digunakan pada internal MVC Router untuk menentukan dan memanggil berdasarkan route url yang sesuai. ControllerManager ini memang sengaja dibuat terpisah untuk alasan kecepatan dan keamanan. Karena jika digabung bersama plugin manager yang lainnya, sangat mudah untuk melakukan dispatch terhadap controller dengan membuat route url untuk mengakses service tertentu yang sebenarnya tidak ditujukan untuk menjadi controller.
Plugin Manager Lainnya
Ada beberapa kelompok Plugin Manager lainnya yang ditugaskan untuk membuat dan memanggil service dan plugin tertentu. Plugin - Plugin Manager tersebut juga meng-extend AbstractPluginManager.
ControllerPluginManager membuat dan memanggil controller plugin
ViewHelperPluginManager membuat dan memanggil view helper
InputFilterPluginManager membuat dan memanggil input filter
FilterPluginManager membuat dan memanggil filter
ValidatorPluginManager membuat dan memanggil validator
FormElementManager membuat dan memanggil form element
HydratorPluginManager membuat dan memanggil hydrator
Plugin - Plugin Manager ini akan menggunakan validatePlugin() untuk memastikan bahwa plugin - plugin yang terdapat dalam kelompok Plugin Manager tersebut sesuai dengan kriteria yang sudah ditentukan oleh Plugin Manager-nya.
Shared Service Manager
Meskipun Plugin Manager sudah dikelompokkan, tidak tertutup kemungkinan juga bagi kita membutuhkan service lainnya yang berada di luar kelompok Plugin Manager tersebut. Maka dari itu dibuatlah Shared Service Manager. Zend\ServiceManager\ServiceManager adalah implementasi dari ServiceLocatorInterface yang digunakan untuk Custom Service. Yang biasanya digunakan unutk menyimpan Service yang dibuat oleh developer. Shared Service Manager ini bisa didapatkan dari getServiceLocator() yang ada pada AbstractPluginManager().
Perlu diingat, "Service Manager" yang dibahas di sini merujuk kepada Service Manager dan juga Plugin Manager
Configuration
Service Manager dan Plugin Manager keduanya dapat dikonfigurasi dengan menggunakan Class yang merupakan implement dari Zend\ServiceManager\ConfigInterface sebagai parameter di constructor. Zend\ServiceManager\Config adalah salah satu bentuk implementasi yang sudah built-in dari Zend Framework 2, yang bisa digunakan untuk mengkonfigurasi Service Manager.
Sedangkan Zend\ServiceManager\Config menggunakan array sebagai constructor parameter. Dan menggunakan array tersebut untuk mengkonfigurasi Service Manager dengan factories, abstract factories, invokables, services, aliases dan initializers. Array tersebut dalam bentuk "key-value pairs", yang mana "key" adalah nama unik dari Service sebagai tanda pengenal Service, dan "value" akan mengembalikan sebuah Service.
Untuk diketahui, nama unik dari Service akan dinormalisasi. Spasi dan karakter - karakter khusus akan dihapus, dan karakter yang tersisa akan diubah ke "huruf kecil". Jadi "user-service" akan sama dengan "User\Service" yang akan dinormalisasi menjadi "userservice".
Invokables Cara yang paling simple untuk membuat service melalui Service Manager adalah dengan menggunakan Invokable. Hanya berisi sebuah Class yang dapat menghasilkan object (instantiasi) tanpa menggunakan dependensi (ataupun dengan dependensi yang bisa dihandle oleh initializer). Untuk mendefenisikannya, gunakan "invokables" key pada array konfigurasi yang digunakan sebagai parameter Zend\ServiceManager\Config object
$config = new Config([ 'invokables' => [ 'hydrator' => 'Zend\Stdlib\Hydrator\ClassMethods' ] ]);
Maka untuk memanggil Service "hydrator" menggunakan Service Manager, bisa langsung seperti ini
$serviceManager = new ServiceManager($config); $serviceManager->get('hydrator');
Factories Factories merupakan sebuah Class ataupun Closure/Anonymous Function yang dapat mengembalikan sebuah object yang sudah dikonfigurasi pada saat Service tersebut dipanggil. Untuk penggunaan Class, harus meng-implement FactoryInterface. Kemudian Service dikonfigurasi di dalam method "createService()".
Closure dan Class keduanya akan menggunakan Service Manager object sebagai parameter. Ini ditujukan agar factory dapat memenuhi dependensi dari Service yang akan dikonfigurasi dengan memanggil dependensi tersebut dengan menggunakan Service Manager ataupun Shared Service Manager (menggunakan getServiceLocator())
Factories didefenisikan menggunakan "factories" key
$config = new Config([ 'factories' => [ 'mailTransport' => 'Aqilix\User\Factory\MailTransport', 'user' => function (ServiceLocatorInterface $serviceManager) { $service = $serviceManager->get('UserService'); $user = new User($service); // $service digunakan sebagai dependency return $user; } ] ]);
Contoh Class yang digunakan sebagai factory
Ketika service diakses melalui Service Manager, maka service tersebut sudah berisi dependencies yang dibutuhkan.
$serviceManager = new ServiceManager($config); $serviceManager->get('mailTransport');
Abstract Factories Abstract Factories adalah factories yang dapat digunakan untuk membuat multiple services. Abstract Factories dibuat dengan sebuah Class yang meng-implement AbstractFactoryInterface. AbstractFactoryInterface mempunyai dua method yaitu canCreateServiceWithName() dan createServiceWithName().
Abstract Factories dipanggil setelah "factories" dan "invokables". Ketika sebuah service tidak ditemukan pada factories atau invokable, maka kemudian service manager akan mencek canCreateServiceWithName() method. Jika method tersebut mengembalikan true, maka service tersebut akan dipanggil melalui createServiceWithName() method. Berikut contoh sebuah class Abstract Factory
Kemudian Abstract Factory ini didefenisikan dengan menggunakan key "abstract_factories"
$config = new Config([ 'abstract_factories' => [ 'Aqilix\Common\Session\Service\AbstractContainerFactory' ] ]);
Class Abstract Factory di atas ditujukan untuk membuat Session Container baru yang bisa diakses melalui Service Manager. Untuk mengaksesnya dengan cara berikut ini:
$serviceManager = new ServiceManager($config); $serviceManager->get('aqilix.common.session.container.user'); // Membuat Session Container User
Aliases Aliases digunakan sebagai aliasing sebuah service yang sudah didefenisikan sebelumnya. Aliases didefenisikan dengan menggunakan key "aliases"
$config = new Config([ 'aliases' => [ 'user' => 'UserService' ] ]);
Memanggil user service melalui Service Manager
$serviceManager = new ServiceManager($config); $serviceManager->get('user');
Initializers Initializers digunakan untuk menjalankan inisialisasi tambahan setelah service dibuat. Service yang baru dibuat tersebut diberikan ke seluruh Initializers. Ini sangat berguna untuk menemukan dependensi menggunakan "setter injection". Initializers melakukan pengecekan dengan menggunakan "Aware" interface untuk memastikan bahwa service menemukan dependensi yang tepat.
Initializers didefenisikan menggunakan “initializers” key, dan memiliki value yang bisa berupa Closure ataupun "Class" yang meng-implement "InitializerInterface". Dan proses initialize tersebut ada pada method "initialize()". Berikut ini contoh Class yang digunakan sebagai initializer
Setter pada class berikut ini akan dipanggil oleh Initializer
interface UserServiceAwareInterface { public function setUserService(UserService $userService); }
interface DbAdapterAwareInterface { public function setDbAdapter(DbAdapterInterface $dbAdapter); }
Konfigurasi Initializer yang akan digunakan oleh Service Manager
$config = new Config([ 'initializers' => [ 'Aqilix\User\Initializer\Db', 'userService' => function ($service, ServiceLocatorInterface $serviceManager) { if ($service instanceof UserServiceAwareInterface) { $userService = $serviceManager->get('UserService); $service->setUserService($userService); } } ] ]);
Dengan defenisi di atas, maka semua Service yang meng-implement UserServiceAwareInterface akan mempunyai UserService karena sudah diset melalui Initializers. Begitu juga dengan Service yang mengimplement DbAdapterAwareInterface
Shared Service Shared Service berbeda dengan Shared Service Manager yang dibahas sebelumnya. Yang dimaksud dengan Shared Service di sini adalah tentang sebuah Service akan menggunakan object yang sama setiap kali dipanggil. Secara default, semua Service adalah shared.
Dalam artian Service Manager akan memberikan object yang sama dari sebuah Service ketika Service tersebut dipanggil melalui Service Manager. Namun adakalanya kita menginginkan sebuah Service, yang ketika dipanggil melalui Service Manager dia akan membuat object yang baru.
Untuk kebutuhan object seperti ini, maka harus didefnisikan di konfigurasi Service Manager dengan "shared" key.
'service_manager' => array( 'factories' => array( 'crypto' => 'Aqilix\User\Crypto\Service\Factory' ), 'shared' => array( 'crypto' => false, ), );
Maka setiap kali Service crypto dipanggil, akan membuat object yang baru
$serviceManager = new ServiceManager($config); $crypto = $serviceManager->get(’crypto’); $newCrypto = $serviceManager->get(’crypto’); assert($crypto !== $newCrypto, 'Each crypto object should not be same’);
Tips
Pada contoh - contoh di atas kita sudah menggunakan Class dan Closure/Anonymous function untuk membuat sebuah Service. Tapi perlu diingat, penggunaan Closure hanya ditujukan untuk mempercepat development dan pengujian dari konsep sebuah aplikasi. Jangan pernah gunakan Closure untuk kode rilis, karena akan menimbulkan beberapa masalah di antaranya:
Cache konfigurasi akan rusak. Karena PHP tidak bisa men-serialize dan men-deserialize Closure. Oleh karena itu, jika ke depannya kita ingin melakukan cache untuk konfigurasi, maka cache ini tidak bisa bekerja.
Autoloading tidak akan bekerja seperti yang diharapkan. Kode yang ada pada Closure bisa jadi bergantung pada Class yang ada pada Modul berikutnya. Ini berarti Class tersebut belum diproses Autoloader, dan kode di Closure akan berhenti. Bahkan lebih buruk lagi, Autoloading dari Modul berikutnya bisa jadi meng-override autoloading dari Class di Modul sekarang. Sedangkan Aplikasi mengharapkan Class yang di-override, tapi yang terjadi yang diproses adalah Class sekarang yang belum di-override. Tentu saja ini akan memicu masalah baru yang akan sulit ditelusuri.
Performa akan menurun
Ketika sebuah Service didefenisikan menggunakan Closure pada file konfigurasi, maka PHP akan memakan waktu untuk mengevaluasinya. Jika ada Modul lain yang meng-overwrite Service tersebut maka waktu yang sudah dihabiskan tersebut akan terbuang percuma. Oleh sebab itu, pikirkan kembali jika ingin menggunakan Closure.
Sampai saat ini, banyak source code Zend Framework 2 beredar di Internet yang menggunakan Closure.
Berikut ini contoh konfigurasi Service Manager pada aplikasi Zend Framework 2
Referensi:
Zend Framework 2 Learn By Example, Slavey Karadzhov
Zend Framework 2 Certification Sudy Guide
Wawancara Founder Group FB "Kami Kerja Remote" dengan saya
Bisa menceritakan tentang siapa Anda?
Saya mulai bekerja sebagai Web Programmer di salah satu ISP di Medan pada tahun 2005. Di perusahaan ini saya mengembangkan sistem informasi internal dan juga mengerjakan project — project dari luar perusahaan jika ada permintaan (karena bukan fokus dari perusahaan). Di akhir tahun 2006 kami membuat video streming online seperti YouTube dengan nama LayarTancap.com, seperti nasib umumnya konten lokal pada waktu itu, layanan tersebut pun kami tinggalkan pada tahun 2008. Kemudian September 2009, saya keluar dari perusahaan tersebut dan memutuskan untuk full time freelancer.
Apa yang membuat Anda ingin terjun ke dunia kerja remote?
Sejak saya lulus kuliah dan mulai bekerja sebagai Web Programmer di benak saya selalu berfikir bahwa pekerjaan ini bisa dilakukan tanpa harus berangkat ke kantor. Seperti programmer pada umumnya, saya juga mengerjakan side job di rumah. Dan ini semakin menguatkan keyakinan saya bahwa pekerjaan saya ini bisa dilakukan tanpa harus bekerja di kantor.
Bagaimana Anda bisa terjun ke dunia kerja remote?
Di awal — awal tahun 2009 tidak sengaja saya membuka oDesk.com, berawal dari melihat profile salah seorang Senior PHP Programmer di Indonesia yaitu bang Riki Risnandar. Kemudian saya pun mencoba membuat akun di oDesk, dan mencoba aply project. Tak lama setelah membuat akun di oDesk, saya pun mendapatkan project pertama saya dari salah satu perusahaan di Jepang.
Anda mendapatkan kerja Remote Dari Situs Apa Saja?
Selain oDesk, saya juga pernah mendapatkan beberapa job dari LinkedIn. Client menghubungi saya setelah melihat profile saya di LinkedIn
Bagaimana cara Anda mendapatkan kepercayaan client?
Sebenarnya tidak mudah untuk meyakinkan client, namun ada beberapa point yang saya lakukan sehingga mereka percaya dengan saya. Saya lulus beberapa test yang sesuai dengan keahlian saya di oDesk, dan ini membuat client yakin bahwa saya benar — benar qualified. Ini adalah hal yang pertama kali saya lakukan ketika join di oDesk. Kemudian setelah itu barulah saya mendapatkan project dan project lain pun menyusul.
Bagi saya tak cukup dengan test dari oDesk untuk mengakui skill saya sebagai programmer PHP. Kemudian saya pun mencoba Zend PHP5 Certification dari Zend di tahun 2010 dan menyusul kemudian Zend Framework Certification Engineer di tahun 2011. Setelah bekerja beberapa tahun melalui oDesk saya pun mempunyai banyak job history dan working hours. Saat ini saya sudah melewati 120+ projects dan 3700+ hours. Dan ini salah satu point yang data meyakinkan client.
Saya pun selalu berusaha untuk mendapatkan feedback yang baik dari setiap project yang saya selesaikan. Dan hal ini tidak mudah untuk menjaga kepuasan klien. Karena banyak faktor yang menjadi penilaian client, baik itu dari sisi teknikal maupun non teknikal. Dan alhamdulillah saya mempunyai rate 4.65/5 di oDesk.
Saya selalu meminta client saya di oDesk untuk memberikan rekomendasi juga di LinkedIn. Dan alhamdulillah saya mendapatkan beberapa project dari client yang melihat LinkedIn.
Bagaimana rutinitas Anda sehari-hari?
Umumnya para pekerja remote mengikuti jam kerja client. Tapi tidak dengan saya. Saya bekerja pada jam kerja biasa 09.00–18.00. Cuma sebelum bekerja saya biasa mengantar anak ke sekolah, dan tengah hari saya jemput anak dari sekolah. Dan saya juga biasa libur pada hari Sabtu — Minggu. Namun, biasanya saya dan client meeting pada jam kerja mereka, dan saya memilih waktu yang tidak terlalu larut sekitar pukul 23.00
Apa suka duka dari kerja remote?
Seperti pekerjaan lainnya, kerja remote ini juga punya suka dan duka. Biasanya sukanya itu: Saya bisa lebih fleksibel mengatur waktu. Jika saya ada keperluan di siang hari, maka saya ganti waktu kerjanya pada malam hari. Saya tidak perlu pergi ke kantor, gak kena macet, dikejar begal atau banci. Dan dukanya: Repot ketika listrik padam. Biasanya di tempat saya ini padam bisa lebih dari 3 jam. Dan Saya harus ke luar rumah untuk mencari tempat yang tersedia listrik
Karena tidak pergi ke kantor, orang menganggap saya tidak punya pekerjaan. Ada yang curiga, dan ada juga yang iba. Terkadang banyak interupsi yang mengganggu waktu kerja saya, seperti teman yang ngajak jalan, istri yang minta diantar belanja, diminta beli sesuatu ke warung, anak yang mengganggu dan banyak variable lainnya.
Apa aplikasi favorit Anda?
Dalam bekerja biasanya saya menggunakan Zend Studio 9.0 (karena untuk versi ini saja saya punya licensenya), OSX Terminal, Vagrant, MySQL Workbench, Robomongo, OSX Messages, Wunderlist dan Google Chrome
Jika tidak sedang kerja remote apa yang biasanya Anda lakukan?
Saya biasa mengisi waktu dengan membaca buku, untuk menambah ilmu.
Ada tips bagi rekan-rekan yang ingin kerja remote?
Sebenarnya kerja secara remote sama saja seperti bekerja di kantor. Kita harus mengkhususkan waktu untuk bekerja dan jangan berfikir bahwa kerja remote bisa nyambil main sama anak, bantuin istri masak, dan segala pekerjan rumah lainnya. Dan untuk masalah penghasilan, pekerjaan remote biasanya hasilnya lebih besar dari bekerja kantoran di Indonesia. Bagi yang ingin mencoba, bisa mulai dengan membuat akun di situs — situs freelance (freelancer.com, odesk.com, elance.com), atau buat profile di linkedIn dengan sebaik — baiknya, sehingga ketika ada yang melihat dia tertarik untuk memberikan project kepada kita
https://soundcloud.com/dolly-aswin-harahap/tulislah-yang-bermanfaat-dan-jangan-bermudah-mudahan-dalam-broadcast
::: Aku Pun Keluar dengan Wanita yang Bukan Istriku
Setelah 21 tahun usia pernikahanku, aku menemukan cahaya baru sebuah cinta. Baru saja aku jalan dengan seorang wanita yang bukan istriku. Itu adalah ide istriku.
“Aku tahu betapa engkau mencintainya,” katanya padaku.
Wanita yang istriku inginkan agar aku keluar dan menghabiskan waktu bersamanya itu adalah ibuku. Iya, ibu kandungku yang telah menjanda sejak 19 tahun silam.
Namun, karena kesibukan bekerja, keseharianku bersama 3 orang anakku ditambah banyaknya tugas membuatku jarang menjenguknya.
Suatu hari aku meneleponnya untuk mengajaknya makan malam bersama.
“Kamu baik-baik saja?” katanya menanyaiku.
Ibuku memang tidak terbiasa ditelepon malam-malam, dia jadi khawatir ada apa-apa.
“Ya Bunda, Nanda sangat baik-baik saja. Tapi, Nanda begitu (ingin -ed) menghabiskan waktu bersama Bunda,” kataku.
“Hanya kita berdua?” kata Ibuku.
Aku berpikir sejenak, lalu menjawab, “Ananda sangat senang jika itu bisa.”
Pada Hari Kamis, setelah bekerja, aku mampir dan menjemput Ibuku. Waktu itu aku sedikit gelisah, ketika aku tiba di rumahnyapun aku mendapati Ibuku juga demikian.
Ibuku menunggu di pintu dengan mengenakan pakaian yang indah. Sepertinya itu adalah gaun terakhir yang dibelikan ayahku untuknya sebelum meninggal dunia.
Ibuku tersenyum, laksana seorang ratu dan berkata:
“Ibu bilang ke semua, bahwa hari ini Ibu akan jalan bersama putra Ibu. Semua senang dan tidak sabar menanti cerita Ibu sepulang nanti.”
Kami pergi ke sebuah restoran yang tidak biasa kudatangi, namun tempatnya bagus dan tenang. Ibuku menggandengku bak seorang nyonya besar.
Setelah kami duduk, aku mulai membaca menu, karena Ibuku sudah tidak bisa membaca, kecuali hurup besar.
Ketika aku sedang membaca menu, Ibuku memandangiku sambil tersenyum lebar, lalu berkata:
“Dulu Ibu yang membacakan menu waktu kamu masih kecil.”
Aku menjawab:
“Sekarang waktunya Nanda membayar sedikit hutang Nanda pada Bunda. Santai saja, wahai Bunda.”
Sambil bersantap malam kami mengobrol panjang, tidak ada yang istimewa, hanya cerita-cerita lama ditambah cerita-cerita baru, namun cukup membuat kami lupa waktu, hingga melewati pertengahan malam.
Ketika kami pulang, sesampai kami di pintu rumahnya, Ibuku berkata:
“Ibu sangat setuju, jika kita bisa jalan-jalan lagi di lain waktu, tapi Ibu yang traktir.”
Akupun mencium tangannya dan pamitan.
Hanya berselang beberapa hari setelah itu, Ibuku meninggal dunia karena sakit jantung. Kejadian yang sangat cepat tanpa sempat aku melakukan apa-apa untuknya.
Beberapa hari kemudian, aku menerima kiriman via pos dari restoran tempat kami makan malam kemarin itu. Selembar bon yang diberi note:
“Ibu sudah membayar di muka bonnya, sebab Ibu tahu, Ibu mungkin tidak ada lagi. Yang penting, Ibu sudah bayar makan malam untuk dua orang: buatmu dan istrimu. Sebab, engkau, wahai Putraku, tidak akan bisa menilai makna malam itu bagiku. Ibu mencintaimu, wahai Putraku.”
Detik ini, aku mengerti nilai bagi makna kata cinta, atau aku mencintaimu.
Aku mengerti., betapa pentingnya membuat orang lain merasakan cinta kita.
Tidak ada yang lebih penting dari kedua orang tua, khususnya ibu, maka persembahkanlah bagi mereka waktu yang menjadi hak mereka.
Sungguh itu adalah hak Allah dan hak mereka dan perkara ini tidak bisa ditunda-tunda.
| Diterjemahkan secara bebas dari: http://kulalsalafiyeen.com/vb/showthread.php?t=55535 | Penerjemah: Ust. Sofyan Saladin (Mahasiswa Univ. Islam Madinah) | Akurator: Fachrian Almer Akiera | Sedikit edit ulang tanpa mengurangi isi dan kandungan oleh Admin Buletin Al-Minhaj
Ibumu…Ibumu…Ibumu
A good resorce for explaining Git Submodules and it's usage
Tepat sekali, dan ini bukan hanya terjadi dalam mengadopsi Scrum, tetapi hampir di setiap sisi kehidupan di Indonesia.
Setiap kali saya mengajar di kelas atau berbincang seseorang mengenai Scrum, selalu saja ada seseorang yang mengajukan p…
I've just upgraded to a new Mac running Mountain Lion (OS 10.8) and I'm having problems getting my fresh install of Zend Studio 9 to debug properly using CLI. Note that I am trying to run and debug
Remember this when do you want to use debugger in Zend Studio on OSX
Kasih Sayang Manhaj Salaf, Tidak Serampangan Menuduh Orang Kafir
Diantara kasih sayang manhaj salaf ialah kehati-hatian mereka dalam menuduh orang lain dengan tuduhan “kafir”. Mereka tidak tergesa-gesa menvonis orang yang berbuat kekufuran dengan vonis “kamu telah kafir” sebelum terpenuhi syarat-syarat serta hilangnya penghalang-penghalang vonis tersebut. Mereka takut kepada ancaman Rasulullah shallallahu ‘alaihi wa sallam,
لا يرمي رجل رجلاً بالفسوق، ولا يرميه بالكفر، إلا ارتدت عليه، إن لم يكن صاحبه كذلك
“Tidaklah seseorang menuduh saudaranya dengan tuduhan ‘fasik’ atau ‘kafir’, kecuali tuduhan itu akan kembali kepadanya bila saudaranya tidak seperti yang ia tuduhkan.” (HR. Bukhori Kitabul Adab bab 44 no. 5698, Ahmad 5/181)
Para ulama’ salaf sangat berhati-hati dalam masalah ini. Syaikh Muhammad bin Abdul Wahhab berkata tatkala membantah tuduhan dusta bahwa beliau mudah mengkafirkan, serta tuduhan bahwa beliau mengkafirkan orang yang tidak mau bergabung dan berperang bersama beliau, dengan perkataanya, “Bila kami tidak mengkafirkan para penyembah berhala yang ada di kuburan Abdul Qodir, Ahmad Badawi, dan yang semisalnya, dikarenakan kebodohan mereka dan tidak adanya orang yang menegur mereka; maka bagaimana mungkin kami mengkafirkan orang yang tidak berbuat syirik kepada Allah hanya karena ia tidak mau ikut-ikut mengkafirkan dan berperang (bersama kami)??! Maha Suci Engkau ya Allah, ini adalah kedustaan yang keji.” (Ad Duror As Saniyah1/104)
Ahlus sunnah meyakini bahwa hanya para ulama’-lah yang berhak dalam urusan mengkafirkan seorang muslim yang melakukan kufur akbar (besar). Hal ini ditinjau dari beberapa sisi :
Pertama, dalam masalah kufur dan iman, pembahasannya adalah mengenai ada dan tidaknyaashlul iman (pokok penentu ada tidaknya iman itu sendiri), dan masalah keimanan ini adalah masalah ushul. Sedangkan dalam masalah halal dan haram, pembahasannya adalah mengenai cabang-cabang dan bagian-bagian iman, serta ibadah-ibadah yang dihukumi sah tidaknya dengan acuan ada tidaknya ashlul iman, dan ini merupakan masalah furu’ (cabang). Apabila dalam masalah furu’ yang berhak terjun (ijtihad) di dalamnya hanyalah para ulama’, maka bagaimana lagi dalam masalah ushul? Tentu hanya mereka yang berhak.
Kedua, Pengkafiran seorang muslim menghantarkan kepada perkara-perkara besar dalam masalah hukum, seperti keyakinan bahwa orang yang divonis kafir tersebut telah murtad (keluar dari islam), wajibnya dia untuk dibunuh, jatuhnya hak kewaliannya, haramnya untuk menikah dengannya dan memakan sembelihannya, larangan untuk waris-mewarisi, larangan mensholati jenazahnya, larangan mendo’akan rahmat dan ampunan untuknya, serta anggapan bahwa bila ia mati –dalam keadaan belum bertaubat- maka Allah tidak akan mengampuninya dan ia kekal selamanya di neraka, tidak bermanfaat baginya do’a dan syafa’at. Maka kesalahan dalam masalah pengkafiran akibatnya lebih berbahaya daripada kesalahan dalam masalah furu’ lainnya, serta akan mengakibatkan mafsadah-mafsadah yang sangat banyak. Karena itulah, lebih berhak untuk kita katakan bahwa masalah pengkafiran hanyalah para ulama’ yang berhak terjun di dalamnya.
Ketiga, Masalah pengkafiran termasuk masalah besar yang rumit bagi kebanyakan manusia, bahkan bagi sebagian ulama’. Ini disebabkan karena sebagian mereka salah dengan tidak membedakan antara pengkafiran secara mutlak dan secara ta’yin (kepada orang tertentu). Serta sebab-sebab lain yang sangat rumit dalam masalah ini (At Takfir wa Dhowabithuhu hal. 300-301 –dengan sedikit perubahan)
Keempat, Dalam masalah pengkafiran, harus diketahui terlebih dahulu apakah perbuatan yang dilakukan oleh seorang muslim tersebut termasuk kufur akbar (besar) yang dapat mengeluarkannya dari Islam ataukah tidak. Dan masalah ini tidak diketahui pula oleh kebanyakan manusia.
Kelima, Harus diketahui syarat-syarat yang harus dipenuhi serta hilangnya penghalang-penghalang dalam masalah pengkafiran. Sedangkan pada setiap orang, bisa jadi penghalangnya berbeda-beda, dan ini merupakan masalah yang sangat rumit dimana hanya para ulma’-lah yang berhak berijtihad di dalamnya. (Tahdzib Tas-hil al Aqidah al Islamiyah hal. 103 –dengan sedikit perubahan)
Kesimpulannya, masalah mengkafirkan seorang muslim pelaku kufur akbar adalah masalah besar yang tidak boleh terjun di dalamnya kecuai para ulama’ yang telah kokoh ilmunya.
Dan di antara hal lain yang perlu dijadikan refleksi adalah tidak dipahaminya perbedaan antara takfir secara mutlak (umum) dengan takfir mu’ayyan (untuk orang tertentu), yang berakibat setiap ada yang mengatakan atau melakukan perbuatan kekafiran langsung divonis sebagai orang kafir dan dinyatakan telah keluar dari Islam.
Para ulama rahimahumullah membedakan antara takfir secara mutlak dan takfir mu’ayyan. Mereka seringkali menyatakan takfir secara mutlak (umum), seperti: “Barangsiapa mengatakan atau melakukan perbuatan demikian dan demikian maka ia kafir (tanpa menyebut nama pelakunya).” Namun ketika masuk kepada takfir mu’ayyan (untuk orang-orang tertentu) maka mereka sangat berhati-hati. Karena tidak semua yang mengatakan atau melakukan perbuatan kekafiran berhak divonis kafir.
Syaikhul Islam Ibnu Taimiyyah berkata: “Suatu perkataan kadangkala termasuk dari bentuk kekafiran, maka pelakunya boleh dikafirkan secara umum, dengan dikatakan: ‘Barangsiapa mengatakan demikian maka ia kafir (tanpa menyebut nama pelakunya -pen).’ Namun untuk pribadi orang yang mengatakannya tidaklah langsung divonis kafir sampai benar-benar tegak (disampaikan) kepadanya hujjah.” (Fitnatut Takfir, hal. 49).
Contoh: ketika suatu kelompok melakukan kesyirikan, maka dapat disebut kelompok tersebut melakukan perbuatan kufur. (Takfir mutlak) Namun pernyataan tersebut tidak berarti memvonis langsung orang - orang di dalamnya sebagai kafir (Takfir Mu'ayyan)
Semoga penjelasan di atas bisa bermanfaat buat kita bersama. Agar kita tidak terlalu gampang mengkafirkan saudara kita sesama muslim. Dan juga dapat menambah wawasan tentang bagaimana takfir itu sesungguhnya, sehingga kita juga tidak merasa saudara kita terlalu gampang mengkafirkan orang lain, yang mana sebenarnya bukanlah mengkafirkan secara pribadi (takfir mu'ayyan) melainkan mengkafirkan secara mutlak/umum.
Referensi: http://muslim.or.id/manhaj/kasih-sayang-manhaj-salaf-3.html http://cintasunnah.com/2013/03/10/vonis-kafir-dan-kaidahnya/
Seandainya sukses itu barang dagangan yang dijual, orang-orang malas kan ramai membelinya.
@nasseralqtami - Nashir Al Qathami, sedang menempuh program Magister di bidang Studi Ilmu Al Qur’an, Imam Masjid Jami’ Al Qadhi Riyadh, Saudi Arabia. • 31/5/2014 (via twitulama)
Like my colleagues at Avisi I’m an avid OSX user. One of the reasons I like OSX is it gives you the power of Unix right under your fingertips while still providing a nice user interface. Now suppose...
Why do I get exhausted really fast while ground fighting?
Jiu Jitsu VS Aikido
I don't know if this is real or not, but that is great jiujitsu armbar and choke!