Content you want the user to see goes here.

Selasa, 14 Juli 2015

Hallo hallo semua, mpu-nya mau share tentang spesifikasi android keluaran negri tirai bambu nih, yaitu Xiaomi Redmi 2 (2014817)



Spesifikasi :

Menggunakan Antutu Benchmark v5.7.1








Dari data screen shot diatas terbilang cukup untuk kelas2 smartphone era sekarang, dan yang bikin mpu-nya sempet gak percaya yaitu multi touchnya bisa sampai 10 jari, Amazing...

Sekian kilas info tentang gadget dari negri tirai bambu ini, wassalam

Senin, 13 Juli 2015

Membuat CRUD Menggunakan Spring Hibernate Dengan MySQL

Hallo, kali ini mpu-nya mau coba share ilmu lagi dengan bahasa pemrograman JAVA menggunakan Spring Hibernate sambil iseng2 maenin java lagi, Langsung aja :

Sebelum masuk ke langkah pembuatan kodenya, buat settingan project seperti gambar berikut:


Untuk aplikasi yang mpu-nya buat susunan folder project-nya src/main/java/spring_jdbc Pertama buat terlebih dahulu main class aplikasinya, buat class Application.java
package spring_jdbc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

}

Kedua buat class database config-nya dengan nama file DBConfig.java, susunan folder project-nya src/main/java/spring_jdbc/config
package spring_jdbc.config;

import java.util.Properties;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
public class DBConfig {

  @Value("${db.driver}")
  private String DB_DRIVER;
  
  @Value("${db.password}")
  private String DB_PASSWORD;
  
  @Value("${db.url}")
  private String DB_URL;
  
  @Value("${db.username}")
  private String DB_USERNAME;

  @Value("${hibernate.dialect}")
  private String HIBERNATE_DIALECT;
  
  @Value("${hibernate.show_sql}")
  private String HIBERNATE_SHOW_SQL;
  
  @Value("${hibernate.hbm2ddl.auto}")
  private String HIBERNATE_HBM2DDL_AUTO;

  @Value("${entitymanager.packagesToScan}")
  private String ENTITYMANAGER_PACKAGES_TO_SCAN;
  
  @Bean
  public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(DB_DRIVER);
    dataSource.setUrl(DB_URL);
    dataSource.setUsername(DB_USERNAME);
    dataSource.setPassword(DB_PASSWORD);
    return dataSource;
  }

  @Bean
  public LocalSessionFactoryBean sessionFactory() {
    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
    sessionFactoryBean.setDataSource(dataSource());
    sessionFactoryBean.setPackagesToScan(ENTITYMANAGER_PACKAGES_TO_SCAN);
    Properties hibernateProperties = new Properties();
    hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
    hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
    hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO);
    sessionFactoryBean.setHibernateProperties(hibernateProperties);
    
    return sessionFactoryBean;
  }

  @Bean
  public HibernateTransactionManager transactionManager() {
    HibernateTransactionManager transactionManager = new HibernateTransactionManager();
    transactionManager.setSessionFactory(sessionFactory().getObject());
    return transactionManager;
  }

}

Ketiga setting file application.properties untuk koneksi database-nya, di src/main/resources
# Database
db.driver: com.mysql.jdbc.Driver
db.url: jdbc:mysql://(url_apps):(port_mysql)/nama_database
db.username: username
db.password: password

# Hibernate
hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql: true
hibernate.hbm2ddl.auto: update
entitymanager.packagesToScan: (package_main_aplikasi)

Keempat buat Controller dengan nama file UserController.java, susunan folder project-nya src/main/java/spring_jdbc/controller
package spring_jdbc.controller;

import spring_jdbc.model.User;
import spring_jdbc.model.UserDao;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/*
 * buat mapping pemanggilan url untuk controller
 */
@Controller
@RequestMapping(value="/user")
public class UserController {

  @Autowired
  protected UserDao _userDao;
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi insert/create data kedalam table
   */
  @RequestMapping(value="/save")
  @ResponseBody
  public String create(String email, String name) {
    try {
     User user = new User(email, name);
     _userDao.save(user);
    }
    catch(Exception ex) {
      return ex.getMessage();
    }
    return "User succesfully saved!";
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi delete data di table
   */
  @RequestMapping(value="/delete")
  @ResponseBody
  public String delete(long id) {
    try {
      User user = new User(id);
      _userDao.delete(user);
    }
    catch(Exception ex) {
      return ex.getMessage();
    }
    return "User succesfully deleted!";
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi update data di table
   */
  @RequestMapping(value="/update")
  @ResponseBody
  public String update(long id, String email, String name) {
   try {
    _userDao.update(id, email, name);
    return "Update succesfully";
   }
   catch(Exception ex) {
    return ex.getMessage();
   }
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data ID berdasarkan email
   * yang di inputkan
   */
  @RequestMapping(value="/get-by-email")
  @ResponseBody
  public String getByEmail(String email) {
    String userId = null;
    try {
     User user = _userDao.getByEmail(email);
        userId = String.valueOf(user.getId());
    }
    catch(Exception ex) {
     return ex.getMessage();
    }
    return "The user id is: "+userId;
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data ID berdasarkan email
   * yang di inputkan dan nilai pengembaliannya berupa json
   */
  @SuppressWarnings("unchecked")
  @RequestMapping(value="/get-by-mail")
  @ResponseBody
  public List<User> getByMail(String email) {
   try {
    return (List<User>) _userDao.getByMail(email);
   }
   catch(Exception ex) {
    return (List<User>) ex;
   }
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data secara keseluruhan
   * dan nilai pengembaliannya berupa json
   */
  @SuppressWarnings("unchecked")
  @RequestMapping(value="/get-all")
  @ResponseBody
  public List<User> getAll(String id) {
   try {
    return _userDao.getAll();
   }
   catch(Exception e) {
    return (List<User>) e;
   }
  }

  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data secara keseluruhan
   * tanpa menggunakan tanda (?) dalam pemanggilan
   * variabel-nya dan nilai pengembaliannya berupa json
   */
  @SuppressWarnings("unchecked")
  @RequestMapping(value="/get_by_mail/{email:.+}", method=RequestMethod.GET)
  @ResponseBody
  public List<User> getByGender(@PathVariable("email") String email, ModelMap model) {
   try {
    return (List<User>) _userDao.getByMail(email);
   }
   catch(Exception ex) {
    return (List<User>) ex;
   }
  }
  
}

Kelima buat file User.java dan UserDao.java, susunan folder project-nya src/main/java/spring_jdbc/model.
file User.java berfungsi untuk men-set variabel2 yang akan di panggil oleh file UserDao.java. berikut file User.java
package spring_jdbc.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity
@Table(name="customer")
public class User {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;
  
  @NotNull
  @Size(min = 3, max = 80)
  private String email;
  
  @NotNull
  @Size(min = 2, max = 80)
  private String name;

  protected User() { }
  
  /*
   * buat method User dengan attribute hanya ID
   * berfungsi untuk pencarian atau menampilkan informasi
   * berdasarkan ID saja
   */
  public User(long id) { 
    this.id = id;
  }

  /* 
   * buat method User dengan attribute selain ID
   * berfungsi untuk input data
   */
  public User(String email, String name) {
 this.email = email;
    this.name = name;
  }

  /*
   * buat method id, kemudian buat method pemanggilannya
   * yang mana nilai method-nya akan di kembalikan ke method pemanggilnya
   */
  public void setId(long id) {
    this.id = id;
  }
  public long getId() {
    return id;
  }

  /*
   * buat method email, kemudian buat method pemanggilannya
   * yang mana nilai method-nya akan di kembalikan ke method pemanggilnya
   */
  public void setEmail(String email) {
    this.email = email;
  }
  public String getEmail() {
    return email;
  }
  
  /*
   * buat method name, kemudian buat method pemanggilannya
   * yang mana nilai method-nya akan di kembalikan ke method pemanggilnya
   */
  public void setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
  
}
berikut file UserDao.java
package spring_jdbc.model;

import java.util.List;
import javax.transaction.Transactional;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
@Transactional
public class UserDao {
  
  @Autowired
  private SessionFactory _sessionFactory;
  
  private Session getSession() {
    return _sessionFactory.getCurrentSession();
  }

  /*
   * menyimpan data berdasarkan id
   */
  public void save(User user) {
    getSession().save(user);
    return;
  }
  
  /*
   * menghapus data berdasarkan id
   */
  public void delete(User user) {
    getSession().delete(user);
    return;
  }
  
  /*
   * mengupdate data berdasarkan id
   */
  public void update(long id, String email, String name) {
    getSession().createQuery("UPDATE User SET email=:byEmail, name=:byName WHERE id=:byId")
     .setParameter("byEmail", email)
     .setParameter("byName", name)
     .setParameter("byId", id)
     .executeUpdate();
  //getSession().update(user);
    return;
  }
  
  /*
   * menampilkan data berdasarkan email yang dimasukkan
   * dan mengembalikan nilainya berupa string
   */
  public User getByEmail(String email) {
    return (User) getSession()
      .createQuery("select b from User b where email = :byEmail")
      .setParameter("byEmail", email)
      .uniqueResult();
  }
  
  /*
   * menampilkan data berdasarkan email yang dimasukkan
   * dan mengembalikan nilainya berupa json
   */
  @SuppressWarnings("unchecked")
  public List<User> getByMail(String email) {
   return getSession()
       .createQuery("select b from User b where email = :byEmail")
       .setParameter("byEmail", email)
       .list();
  }
  
  /*
   * menampilkan data secara keseluruhan dan
   * mengembalikan nilainya berupa json
   */
  @SuppressWarnings("unchecked")
  public List<User> getAll() {
    return getSession().createQuery("from User").list();
  }
  
}

Setelah selesai membuat file2 diatas, langkah selanjutnya ketikan url berikut untuk membuat data. Jangan lupa di mysql-nya buat database-nya terlebih dahulu.
http://localhost:8080/user/save?email=chocolate@gmail.com&name=cocolatos (insert)
http://localhost:8080/user/update?id=1&email=change@gmail.com&name=strawberry (update)
http://localhost:8080/user/delete?id=1 (delete)
http://localhost:8080/user/get-all (select)
http://localhost:8080/user/get-by-mail?email=(nama_email) (select)
http://localhost:8080/user/get_by_mail/(nama_email) (select)
* (http://localhost:8080/) tergantung setting tomcat masing2

Sekian share yang mpu-nya kasih, semoga bermanfaat ^_^

Minggu, 14 Desember 2014

Hai, kali ini mau corat coret query MySQL dulu ah!

-- Untuk melihat waktu kebelakang dari tanggal yang ditentukan
select date_sub(curdate(), interval 2 hour);

-- Untuk melihat selisih waktu
select timediff(date_sub(curdate(), interval 2 hour),date_sub(curdate(), interval 6 hour));

-- Mengambil karakter yang diinginkan dari sekumpulan karakter, contoh(Saya Sedang Belajar MySQL Query)
select SUBSTRING_INDEX(SUBSTRING_INDEX(nama_kolom, 'Belajar ":"', -1),' Query', 1) AS index_karakter
FROM nama_table

Query berlanjut...

Jumat, 12 Desember 2014

Hai, mau share salah satu cara untuk men-checklist semua checkbox yang ada

File javascript-nya
<script type="text/javascript">
function checkAll(bx) {
  var cbs = document.getElementsByTagName('input');
  for(var i=0; i < cbs.length; i++) {
    if(cbs[i].type == 'checkbox') {
      cbs[i].checked = bx.checked;
    }
  }
}
</script>

Untuk checkbox parent
<input type="checkbox" onclick="checkAll(this)">

Untuk checkbox yang anaknya
<?php for($i=1; $i<10; $i++) { ?>
  <input type="checkbox" id="checkboxes" name="check[]" value="<?=$i;?>">
<?php } ?>

Hai semua, mau post ulang nih cara buat Ribbon pake CSS dari blog sebelah dan kebetulan ada problem yang sama. Thanks untuk perampokeren.capungbalap.net

CSS Code
  
    .ribbontd {
      font-size: 20px !important;
      width: 50%;
      position: relative;
      background: #EB1C46;
      color: #fff;
      text-align: center !important;
      padding: 1em 1em !important;
      margin: 1em auto 3em;
    }
    .ribbontd:before, .ribbontd:after {
      content: "";
      position: absolute;
      display: block;
      bottom: -1em;
      border: 1.5em solid #C8145F;
      z-index: -1;
    }
    .ribbontd:before {
      left: -2em;
      border-right-width: 1.5em;
      border-left-color: transparent;
    }
    .ribbontd:after {
      right: -2em;
      border-left-width: 1.5em;
      border-right-color: transparent;
    }
    .ribbontd-content {
      color: #fff;
    }
    .ribbontd .ribbontd-content:before, .ribbontd .ribbontd-content:after {
      content: "";
      position: absolute;
      display: block;
      border-style: solid;
      border-color: #A6114D transparent transparent transparent;
      bottom: -1em;
    }
    .ribbontd .ribbontd-content:before {
      left: 0;
      border-width: 1em 0 0 1em;
    }
    .ribbontd .ribbontd-content:after {
      right: 0;
      border-width: 1em 1em 0 0;
    }
    .block-content { position: relative; z-index: 1; }
  
HTML Code

   <div class="block-content">
      <h1 class="ribbontd"><strong class="ribbontd-content">RIBBON</strong></h1>
   </div>


Hasilnya

Sumber : http://perampokeren.capungbalap.net/2013/12/cara-membuat-efek-ribbon-atau-pita.html

Rabu, 22 Oktober 2014

Hallo semua, kali ini mpu-nya mau share lagi nih
kali ini tentang CSS dan JQuery untuk meng-handle screen orientasi untuk tampilan web menggunakan JQuery.

$(document).ready(function(){
   $('body').append('<div id="screencss"></div>');
   adjustCSS();
   $(window).resize(function(){ adjustCSS() });
})
function adjustCSS(){
   var pageWidth = $(window).width();
   var sizeSelected = "css/blue-800.css";
   if (pageWidth > 900) { sizeSelected = "css/blue-1024.css"; }
   if (pageWidth > 1010) { sizeSelected = "css/blue-1280.css"; }
   if (pageWidth > 1420) { sizeSelected = "css/blue-1600.css"; }
   $("#screencss").html('');
}


Referensinya dari sini
Silahkan dicoba ^_^

Senin, 20 Oktober 2014

Hallo semua, mpu-nya mau share file .htaccess yang biasa mpu-nya pake untuk Framework Codeigniter

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

Silahkan dicoba ^_^

Rabu, 08 Oktober 2014

Hallo semua, mpu-nya mau me-review android lokal lagi nih keluaran Evercoss seri A7E
berikut adalah review-nya



Spesifikasi

Prosesor : MTK MT8382 32bit Quad Core 1.3 GHz
Display : GPU Mali-400 MP, OpenGL ES 2.0, 240 dpi, 4.0", 480 x 800, TFT Capacitive Touchscreen, 16M Colors
Dimension : 126mm x 62.7mm x 9.1mm
Android : Android 4.4.2 Kitkat
RAM : 457MB aka 512Mb
Kamera : Rear 8.3 Mega Pixel (3840x2160), Front 2.0 Mega Pixel (1840x1104)
Video : Resolution max (1920x1088)
Storage : Internal ROM 4GB shared System Storage 1.52GB, Slot SD Card
Network : Dual Sim GSM-GSM, Slot 1(HSPA with Micro SimCard) and Slot 2(GPRS/Edge with Nano SimCard)
Featured : Bluetooth, GPS (Direction Sensor, Acceleration Sensor, Light Sensor, E-Compass, Proximity Sensor)
Battery : 1650 mAh

Hasil tes menggunakan Antutu Benchmark v5.1


Kelebihan
  • Dari segi kecepatan gadget ini bisa di bilang mantab lah, karena dukungan processor quad core untuk kelas Entry Level sih ^_^
  • Kualitas kamera dan video menurut mpu-nya ajib banget dah untuk gadget di bawah 1jt, kualitas kamera bening dan pencahayaan dari flashnya gak kalah kayak gadget merek ternama, untuk kualitas video recorder-nya ajib banget dan mulus gak rugi beli gadget ini ^_^

    Hasil Jepretan Kamera Belakang


    Hasil Jepretan Kamera Depan

Kekurangan
  • Untuk gadget spesifikasi quad core dibekali RAM 512Mb sangatlah kurang, karena gak bisa jalanin game-game HD dan untuk multitaskingnya juga kurang mantab
  • Dari segi daya, ini yang sangat tidak puas karena untuk sekelas prosessor quad core daya segitu membutuhkan power bank bila pergi jauh, untuk sosial media saja bisa 4x isi dan untuk maen game-game standar bisa berulang kali O_o

Sekian hasil review dari mpu-nya, jika review yang mpu-nya sajikan kurang akurat atau detail mpu-nya mohon maaf ^_^

Kamis, 11 September 2014

Assalamu'alaikum Wr Wb dan salam sejahtera

Long time mpu-nya blog gak nulis dan sekarang hati terketuk kembali ingin membuat coretan yang mungkin bisa bermanfaat bagi mpu-nya blog khususnya dan untuk anak-anak bangsa umumnya ^_^

kali ini mpu-nya blog mau corat coret query SQL dan yang mpu-nya blog lagi pegang sekarang adalah SQL Server 2012, ini query untuk catatan aja sih biar gak lupa sebab manusia sarangnya lupa ^_^

Langsung aja Query nya



Menampilkan Minggu dalam angka dari tanggal H-1
Select Datepart(Week, DATEADD(Month, -1, getdate()))

Menampilkan bulan dalam angka dari tanggal H-1
Select Datepart(Month, DATEADD(Month, -1, getdate()))

Menampilkan tanggal awal minggu di current date (di mulai hari senin)
Select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),0),112)

Menampilkan tanggal akhir minggu di current date (di mulai hari senin)
Select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),6),112)

Menampilkan tanggal awal bulan di current bulan (hanya tanggal)
Select CONVERT(varchar,dateadd(d,-(day(getdate()-1)),getdate()),112)

Menampilkan tanggal awal bulan di current bulan (tanggal dan waktu)
Select Dateadd(mm, Datediff(mm, 0, getdate()), 0)

Menampilkan tanggal akhir bulan di current bulan (hanya tanggal)
Select CONVERT(varchar,dateadd(d,-(day(dateadd(m,1,getdate()))),dateadd(m,1,getdate())),112)

Menampilkan tanggal akhir bulan di current bulan (tanggal dan waktu)
Select Dateadd(mm, Datediff(mm, -1, getdate()), -1)

Menampilkan tanggal awal bulan di current quarter
Select Dateadd(qq, Datediff(qq,0, getdate())-1, 0)

Menampilkan tanggal doang
Select Cast(convert(varchar(10),GETDATE(),112) as date)

Konfersi dari week ke date
Declare @wk int  set @wk = 2
Declare @yr int  set @yr = 2014
Select dateadd(week,@wk,dateadd(year, @yr-1900,0))-4 - Datepart(dw,dateadd(week,@wk,dateadd(year,@yr-1900,0))-4) + 1

Konfersi dari month ke string date
Declare @mt int set @mt = 6
Select DateName(month, DateAdd(month, @mt, 0)-1) as [Month String]

Cek jumlah data di tanggal itu berdasarkan jam
Select count(convert(date, [nama_kolom_tanggal])) as jum_date
from [nama_db].[schema].[nama_tabel]
where [nama_kolom_tanggal] >= @tanggal_awal and [nama_kolom_tanggal] <= @tanggal_akhir
group by convert(date, [nama_kolom_tanggal])
order by convert(date, [nama_kolom_tanggal])

Set Limit Data
Select * 
from [nama_db].[schema].[nama_tabel]
offset 0 rows fetch next 6 rows only

Update Query Berlanjut... ^_^
Hallo, kali mpu-nya mau me-review seakurat mungkin tentang android keluaran lokal, yaitu brand MITO, MITO Fantasy A77 Selfie dengan fitur kamera putar untuk penggila photo selfie ^_^

Mito_Fantasy_A77 photo mito_a77_image_zps87d3e438.jpg

Specification :

Processor : Mediatek MT6572 Dual-Core 1.3 Ghz Cortex A7
Display : Mali-400 MP Res.(480x854) OpenGL ES 2.0, 4.5 inchi, 240dpi, IPS (in plane switching), Multitouch
Dimension : 141 x 67.5 x 9.5 mm
Android : Jelly Bean (4.2.2)
RAM : 972 MB aka 1GB
Camera : Rear Camera 8 Mega Pixel (3264x2448), Autofocus, Led Flash
Video : Recorder Res. max (1280x720) 3gp Format
Support MP4, WMV, 3gp
Storage : Internal ROM 3.69GB shared System 1.27GB, External microSD upto 32Gb
Network : 2G Network Dual GSM 900/1800 MHz, 3G Network WCDMA 2100 MHz (Slot 1 - HSPA with Micro SimCard and Slot 2 - GPRS/Edge with Nano SimCard)
Featured : Bluetooth, USB Port, Wifi 802.11 b/g/n, GPS
Battery : 1500 mAh

Hasil tes menggunakan Antutu Benchmark v5.1


Kelebihan
Dengan kemampuan processor yang sudah Dual Core dan Ram yang berkapasitas 1GB, maka Mito A77 sudah mampu menjalankan multitasking dengan baik hanya sekala selain menjalankan game

Kekurangan

  • Kualitas photo yang kurang jernih untuk ukuran Kamera 8 Mega pixel dibanding Brand ternama lainnya. (Ya iyalah harga kisaran 1juta mau kualitas bagus ^_^)
  • Menjalankan game2 berat masih kurang smooth. (Plisss deh masih dual core itu ^_^)
  • Lifetime-nya kurang memuaskan, sehari bisa 2x sampe 3x isi ulang battery padahal cuma buat sosial media sama browsing

Sekian Review-nya semoga bermanfaat dan kalo ada salah penulisan Mohon Maaf yah! ^_^v