Text to Speech dengan responsivevoice.js ala google translate

Kali ini saya membagikan pengalaman saya dengan text ke suara dengan javascript. dulu saya mencoba dengan berbagai cara , dengan plugin flash terus google speach dll, seiring waktu berjalan sekarang makin banyak kemudahan untuk menterjemahkan text ke suara , salah satu caranya dengan responsivevoice.js

berikut kodenya:


<!DOCTYPE html>
<html>
<head>
<title>speak text to speech with Resvonsive Voice</title>
<script src='https://code.responsivevoice.org/responsivevoice.js'></script>
<script type="text/javascript">
function play (){
responsiveVoice.speak(
"Hallo Nama Saya RIfqi.",
"Indonesian Female",
{
pitch: 1,
rate: 1,
volume: 1
}
);
}

function stop (){
responsiveVoice.cancel();
}

function pause (){
responsiveVoice.pause();
}

function resume (){
responsiveVoice.resume();
}
</script>
</head>
<body>
<button onclick="play();">Play</button>
<button onclick="stop();">Stop</button>
<button onclick="pause();">Pause</button>
<button onclick="resume();">Resume</button>
</body>
</html>

catatan: gunakan langsung pada hostingan / vps anda karena akan berjalan dengan baik kalau live online.

semoga bermanfat πŸ™‚

Menerapkan Fitur Payment Gateway dengan PHP LARAVEL

Mungkin kita pernah berfikir ,

bagaimana sie untuk penerapatan payment gateway?

bagaimana caranya integrasi antara program kita dengan rekening bank kita.?Β  nah disini saya akan coba menjelaskan konsep penerapannya.

pertama,

anda membuat akun di mitrands.com nya lalu bisaΒ  menerepakkannya.

anda bisa baca documentasi untuk penerapan di laravel:https://docs.midtrans.com/en/welcome/index.html

yang perlu anda perhatikan adalah gambar di bawah ini untuk penerapannya di laravel.

 

 

di snap api itulah kita akan bisa menerapkannya. untuk code sudah tersedia juga di github gratis:

Kedua

codenya sbb:

https://github.com/harrypujianto/Veritrans-Laravel5#snap

Ketiga

settingan dashboard

selanjutnya setelah anda menerapkan kode tersebut anda juga di minta untuk memasukkan access key, untuk mendapatkan accesskey anda mesti login di dashboard mitrandsnya kira-kira seperti ini:

disini ada dua kategori, yaitu dev [mode] dan production, pastikan code anda sudah berjalan dengan benar sebelum menerapkannya karena ini berhubungan dengan payment.

kalau anda berhasil tampilannya akan seperti ini :

dan uang anda akan masuk ke bank yang dituju dengan sample berikut:

selesai , jika ada yang bingung silahkan komen dibawah πŸ™‚

 

Trik berbagai fitur email pada library laravel

Kali ini kita akan berbagi ilmu tentang beberapa tentang email pada library laravel, karena sebernarnya saya pengguna laravel.

diantara library mail nya adalah sbb:

  1. sendgrid mail.
  2. zoho mail.
  3. redis mail. [biasanya bawaan dari laravel]
  4. mail chimp, mail jet, new relic dll

disini saya akan menerapkan sendgrid laraval.

cara penerapan nya cukup mudah, pertama anda buat account di sendgrid bisa lewat link berikut klik

yang terpenting anda mempunyai akun di sana terlebih dahulu dan pilih bagian sendgrid email api, anda akan dapatkan info seperti berikut:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=username_sendgrid
MAIL_PASSWORD=password_email
MAIL_ENCRYPTION=TLS

anda masukkan ke .env laravel anda code yang di bold diatas.

kemudian di bagian controller anda tinggal menggunakan [ use MAIL ] di bawah namespace dari controllernya.

selanjutnya tinggal input code email dari laravel seperti di bawah ini:


$user = array(
'email'=> 'email tujuan',
'name'=> 'nama tujuan'
);

$data = array(
'email'=>'data email yang akan dikirim',
'name'=> 'data nama yang akan dikirim'
);

Mail::send('nama_folder.nama_file_php',$datas , function($message) use ($users){
$message->to($users['email'],$users['name'])->subject('Isi Subject');

SEMOGA BERMANFAAT πŸ™‚

Trik berbagai SMS API dengan PHP dan MYSQL

Sudah Cukup Lama tidak menulis lagi di blog di karena kan kesibukan dan hal penting lainnya.

sudah banyak keinginan untuk menulis lagi di blog TOPIDESTA.

Sekarang saya coba berbagi ilmu tentang sms api dengan PHP.

beberapa contoh di internet diantaranya adalah:

  1. nexmo sms API.
  2. twilio sms API
  3. sinch sms API
  4. facebook SMS API
  5. zenziva sms API
  6. dll

kalau penulis biasanya menggunakan zenziva sms API dan facebook sms API. karena lebih mudah dan cocok untuk pemula, tapi untuk beberapa perusahaan besar sudah memiliki API sendiri.

contoh code dari zenziva:


$hp = $_POST['no_hp'];

$userkey = "key_anda"; // ini didapat setelah kita mendaftar di websitenya, posisinya di API setting.
$passkey = "pass_anda";
$nohp = $hp;
$message = rand(0000,9999);
$url = "https://reguler.zenziva.net/apps/smsapi.php";
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, 'userkey='.$userkey.'&passkey='.$passkey.'&nohp='.$nohp.'&pesan='.urlencode($message));
curl_setopt($curlHandle, CURLOPT_HEADER, 0);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
curl_setopt($curlHandle, CURLOPT_POST, 1);
$results = curl_exec($curlHandle);
curl_close($curlHandle);

contoh diatas kita bisa pakai untuk validasi no hp seperti web kelas atas, atau pun bisa untuk promo-promo tertentu.

dari code diatas anda akan mendapatkan sms kode dari rand(00000,99999) yang kita buat tadi.

selamat mencoba , πŸ™‚

[trick] Menambahkan Library ESC/POS di Codeigniter

Bismillah…

Kebetulah dikantor lagi dapet maenan baru, printer epson series tm-u220d kayak gini:

Terus, karena ngoding langsung pake RAW-TEXT dari printer ribet, contoh RAW-TEXT dari Vendor Zebra kayak gini neh:

^FN11 : NO Rekam medis
^FN12 : Nama Pasien
^FN13 : No Rekam medis bentuk barcode
^FN61 : Nama obat
^FN62 : kwantitas makan, brp tablet/kapsul perhari
^FN63 : sblm atau ssedh makan
^PQ  : kwantitas label identik

^XA
^XFE:PHARMA01.ZPL
^FN11^FD111212121212^FS
^FN12^FDKomarudin Ibrahim Saleh^FS
^FN13^FD>;111212121212^FS
^FN61^FDPanadol Expectoran 250mg^FS
^FN62^FD3 x 1 Tablet / hari^FS
^FN63^FDMinum Setelah Makan^FS
^PQ2,0,0
^XZ

Nah, karena yang dipake itu dari EPSON, akhirnya searching eh dapet deh di Github yang senang hati berbagi ini linknya:

https://github.com/mike42/escpos-php/tree/master

Ternyata TM-U220 didukung sama libarary ini, yaudah oprek deh, cara gunanya gampang banget, karena udah pake bootstrap auotloader, jadi yah tinggal load sebagai library … selebihnya bisa dicek di repo gw:

https://github.com/RSUP/ESC-POS

Gw Kagak fork, soalnya gw pake manual download dan upload file git nyah …. hehehe.

Have a nice day!

source:

  1. https://github.com/mike42/escpos-php/tree/master
  2. https://github.com/RSUP/ESC-POS

[trick] Crud dengan menggunakan angular-js

berikut ini adalah tricky dari membuat crud dengan menggunakan php dan angular.js

Insert.html


<!DOCTYPE html>
<html data-ng-app="latihan">
<head>
<meta charset="utf-8" />
<title>Insert Multiple Data</title>
<script src="vendor/angular/angular.js"></script>
</head>
<body ng-controller="MainController" >
{{ data }}
<div data-ng-repeat="key in data">
Nama <input type="text" data-ng-model="data[$index].nama"> <br>
Kelas <input type="text" data-ng-model="data[$index].kelas"> <br>
</div>

<button data-ng-click="tambah()">Tambah Data</button>
<button data-ng-click="cancel()" data-ng-show="data.length > 1">Cancel</button>
<button data-ng-click="simpan()">Simpan</button>
<p>{{ pesan }}</p>
</body>
</html>
<script>
angular.module('latihan', [])

.controller('MainController',function($scope,$http){
//set type data 'data' dengan object
$scope.data = [{nama : '',kelas : ''} ];
//fungsi tambah inputan
$scope.tambah = function(){
$scope.data.push({nama : '', kelas : ''});
};
//fungsi kurangi inputan
$scope.cancel = function(){
$scope.data.splice($scope.data.length-1);
};
//fungsi simpan
$scope.simpan = function(){
$http.post('http://localhost/latihan/server.php?action=insert',$scope.data).success(function(response){
if(response > 0){
$scope.data = [{nama : '',kelas : ''} ];
$scope.pesan = response +' Data telah berhasil di simpan';
$scope.$apply();
}
});
}
})
</script>

Edit.html


<!DOCTYPE html>
<html data-ng-app="latihan">
<head>
<meta charset="utf-8" />
<title>Edit Multiple Data</title>
<script src="vendor/angular/angular.js"></script>
</head>
<body ng-controller="MainController" >

<table>
<tr>
<td>No</td>
<td>Nama</td>
<td>Kelas</td>
<td>Action</td>
</tr>
<tr data-ng-repeat="(k,v) in data">
<td>{{ $index +1 }}</td>
<td> <input type="text" data-ng-model="v.nama" data-ng-if="v.isedit"><p data-ng-if="!v.isedit">{{v.nama}}</p></td>
<td><input type="text" data-ng-model="v.kelas" data-ng-if="v.isedit"><p data-ng-if="!v.isedit">{{v.kelas}}</p></td>
<td><button data-ng-click="edit($index)">Edit</button></td>
</tr>
</table>
<button data-ng-click="update()">Update</button>
{{ pesan }}
</body>
</html>
<script>
angular.module('latihan', [])

.controller('MainController',function($scope,$http){
// set type data dataedit dengan array kosong
$scope.dataedit = [];
// fugsin menggambil data ke server
$scope.getdata = function(){
$http.get('http://localhost/latihan/server.php?action=get').success(function(response){
$scope.data = response;
$scope.$apply();
});
};
// init data
$scope.getdata();
//ketika user klik button edit
$scope.edit = function(index){
//set agar ketika user input
//munculkan input type
$scope.data[index]['isedit'] = true;
// masukan data yang di pilih ke array dataedit
$scope.dataedit.push($scope.data[index]);
};
$scope.update = function(){
//kirim data yang di edit saja ke server
$http.post('http://localhost/latihan/server.php?action=update',$scope.dataedit).success(function(response){
if(response > 0){
//munculkan list baru yang sudah berhasil di edit
$scope.getdata();
//tampilkan pesna sukses
$scope.pesan = response +' Data telah berhasil di update';
$scope.$apply();
}
});
}
});
</script>

delete .html


<!DOCTYPE html>
<html data-ng-app="latihan">
<head>
<meta charset="utf-8" />
<title>Delete Multiple Data</title>
<script src="vendor/angular/angular.js"></script>
</head>
<body ng-controller="MainController" >

<table>
<tr>
<td></td>
<td>Nama</td>
<td>Kelas</td>
</tr>
<tr data-ng-repeat="(k,v) in data">
<td><input type="checkbox" data-ng-click="check(v.siswaid)"></td>
<td> <input type="text" data-ng-model="v.nama" data-ng-if="v.isedit"><p data-ng-if="!v.isedit">{{v.nama}}</p></td>
<td><input type="text" data-ng-model="v.kelas" data-ng-if="v.isedit"><p data-ng-if="!v.isedit">{{v.kelas}}</p></td>
</tr>
</table>
<button data-ng-click="delete()">Delete</button>
{{ pesan }}
</body>
</html>
<script>
angular.module('latihan', [])

.controller('MainController',function($scope,$http){
// set type data datadelete dengan array kosong
$scope.datadelete = [];
// fugsin menggambil data ke server
$scope.getdata = function(){
$http.get('http://localhost/latihan/server.php?action=get').success(function(response){
$scope.data = response;
$scope.$apply();
});
};
// init data
$scope.getdata();
//ketika user klik button edit
$scope.check = function(siswaid){
//buat variabel tmp bernilai true
//ini digunakan untuk chek apakah sudah ada
//siswa id di dalah array data delete
//jika sudah ada delete array dengan splce dan set
// tmp jadi false agar tidak di push(dimasukan ke dalam array) kembali di bawah
var tmp = true;
for(var i = 0; i < $scope.datadelete.length;i++){
if($scope.datadelete[i] == siswaid){
$scope.datadelete.splice(i);
tmp = false;
break;
}
}
if(tmp)$scope.datadelete.push(siswaid);
};
$scope.delete = function(){
//kirim data yang di edit saja ke server
$http.post('http://localhost/latihan/server.php?action=delete',$scope.datadelete).success(function(response){
if(response > 0){
//munculkan list baru yang sudah berhasil di delete
$scope.getdata();
//tampilkan pesna sukses
$scope.pesan = response +' Data telah berhasil di delete';
$scope.$apply();
}
});
}
});
</script>

server.php


<?php

$hostname = "localhost";
$user = "root";
$pass = "";
$database = "latihan";

$conn = mysql_connect($hostname,$user,$pass);
if(!$conn) die ("gagal melakukan koneksi");
mysql_select_db($database,$conn) or die("database tidak ditemukan");

switch($_GET['action']){
case 'insert' :
$data = json_decode(file_get_contents("php://input"));
$i = 0;
foreach($data as $k => $v){
$query = "INSERT INTO siswa(nama,kelas) VALUES ('".$v->nama."','".$v->kelas."')";
mysql_query($query);
$i++;
};
echo json_encode($i);
break;
case 'get' :
$query = "SELECT * FROM siswa";
$sql = mysql_query($query);
$data = array();
while($row=mysql_fetch_array($sql)) {
$data[] = $row;
}

echo json_encode($data);
break;
case'update' :
$data = json_decode(file_get_contents("php://input"));
$i = 0;
foreach($data as $k => $v){
$query = "UPDATE siswa set nama = '".$v->nama."' , kelas = '".$v->kelas."' where siswaid = '".$v->siswaid."'";
mysql_query($query);
$i++;
};
echo json_encode($i);
break;
case'delete' :
$data = json_decode(file_get_contents("php://input"));
$i = 0;
foreach($data as $k => $v){
$query = "DELETE FROM siswa where siswaid = '".$v."'";
mysql_query($query);
$i++;
};
echo json_encode($i);
break;
}