Pages

Selasa, 03 Februari 2015

Mencari tanggal dalam seminggu

dengan bahasa PHP untuk mencari tanggal dalam seminggu dimulai hari sabtu ke jumat selanjutnya

public function getIntervalDateOnWeek($date, $year=null){
        $regex_date = '/^[1-2]{1}[0-9]{3}\-[0-9]{1,2}\-[0-3]{1}[0-9]{1}|[0-9]{1}$/';
        if(strlen($date)<=2){ 
            if(preg_match('/^[0-9]{1,2}$/', $date)>0){ //minggu ke berapa
                $return = array();//var_dump($date);var_dump($year);
                for($i=1;$i<=7;$i++){ //find date interval on week
                    $return[] = date('Y-m-d',strtotime($year.'W'.$date.$i)); //
                }
                return $return;
            }else{
                return "salah format";
            }
        }else{ echo "test";
            if(preg_match($regex_date, $date)>0){
                $ex = explode('-',$date); 
                $week = date('W',strtotime($date));

                return self::getIntervalDateOnWeek($week, $ex[0]); 
            }else{
                return "salah format";
            }    
        }
    }
 
contoh penggunaan :
 
getIntervalDateonWeek('2015-02-04');
 
atau dengan urutan minggu dalam setahun
 
getIntervalDateonWeek('05');

Selasa, 02 April 2013

Selisih tanggal dengan php

Fungsi untuk melakukan pengurangan tanggal pada PHP.
<?php
public function cekSelisihHari($start, $end) {
        $hari1 = explode(" ", $start); //memisahkan date dengan time
        $tgl1 = $hari1[0];
        $tgl1 = explode("-", $tgl1);//memisahkan tahun, bulan dan tanggal
        $hari2 = explode(" ", $end);
        $tgl2 = $hari2[0];
        $tgl2 = explode("-", $tgl2);
        if (((int)$tgl2[0] - (int)$tgl1[0]) == 0) {
            if (((int)$tgl2[1] - (int)$tgl1[1]) == 0) {
                if (((int)$tgl2[2] - (int)$tgl1[2]) == 0) {
                    return 0;
                } else {
                   return (int)$tgl2[2] - (int)$tgl1[2];
                }
            } else { 
                if(((int)$tgl2[1]-(int)$tgl1[1])>0){
                    $num = cal_days_in_month(CAL_GREGORIAN, $tgl1[1], $tgl1[0]);
                    for($i=1; $i<((int)$tgl2[1]-(int)$tgl1[1]);$i++){                      
                        $num += cal_days_in_month(CAL_GREGORIAN, (int)$tgl1[1]+1, $tgl1[0]);                   
                    }
                }                
                $temp = $num - (int)$tgl1[2];
                return $temp + (int)$tgl2[2];
            }
        } else {
            $num = cal_days_in_month(CAL_GREGORIAN, $tgl1[1], $tgl1[0]);
            echo $num;
            $temp = $num - (int)$tgl1[2];
            return $temp + (int)$tgl2[2];
        }
        return 0;
    }

?>
contoh penggunaan :
$a = "2013-02-25"; //bisa dengan format datetime seperti '2013-02-25 03:03:55'
$b = "2013-04-02";
echo cekSelisihHari($a,$b);

Minggu, 31 Maret 2013

Angka Romawi

kemarin pernah ada temen yang nanya-nanya tentang gimana cara mengkonversi angka romawi ke dalam angka arab (angka latin) yang biasa kita gunakan. sebetulnya teorinya mudah, cuman ternyata menerapkannya susah juga :D
aturan penulisan romawi pada dasarnya seperti ini :
1. tidak mungkin lebih dari 4 angka sama yang berjajar, maksimal 3 seperti iii, xxx, mmm
2. memiliki urutan sebagai berikut i,v,x,l,c,d,m
3. terdapat aturan pengurangan hanya dengan angka dengan urutan +1 dan +2, misal i dan v, jika digabung iv hasilnya 5-1=4, begitu juga dengan ix, tetapi tidak ada il, ic dst
4. aturan diatas tidak berlaku untuk angka yang bila dikonversi, memiliki kepala 5, misal v=5, l=50 dan d=500, mungkin emang krn menunjukkan nilai 1/2 (nebak aja :D)
5. 1990=mcmxc dan bukan mdcdxc yang berarti prioritas penulisan adalah nilai 5+3 dan bukan 5+4, mudahnya jika kita ingin menuliskan 19 maka bukan dengan 10+5+4 tetapi 10+10-1, tetapi jika kita ingin menuliskan 18 maka 10+5+3. (maaf gak tau cara njelasinnya, pokoke gitu deh :D)

kodingan java ini masih memiliki kekurangan yaitu belum memiliki method validasi apakah penulisannya benar, jadi tidak bisa mendeteksi xix dengan xviv yang sama-sama 19.
sudah aku coba beberapa nilai romawi dan udah benar, gak tau ntar teman2 menemukan bug hasil yang tidak sesuai :D

oke ini kodingan javanya +++++++++++++++++++++++++++

public class Romawi {  
    String [] order = {"I","V","X","L","C","D","M"};
    String [] rom;
    int [] nilai; //attribut ini tidak dipakai
    int sum = 0;
    public Romawi(){
        nilai = new int[7];
        for(int i=0; i<7;i++){
            nilai[i]=0;
        }
    }
    public int romawiValue(String x){
        int len = x.length();
        if(len==1){
            return getValue(x);
        }else{
            return getValue(x,len);
        }
        //return 0;
    }
    /*
     * mendapatka nilai satu digit
     */
    private int getValue(String rom){
        String x = rom.toUpperCase();
        if(x.equalsIgnoreCase("I")){
            return 1;
        }else if(x.equalsIgnoreCase("V")){
            return 5;
        }else if(x.equalsIgnoreCase("X")){
            return 10;
        }else if(x.equalsIgnoreCase("L")){
            return 50;
        }else if(x.equalsIgnoreCase("C")){
            return 100;
        }else if(x.equalsIgnoreCase("D")){
            return 500;
        }else if(x.equalsIgnoreCase("M")){
            return 1000;
        }
        return 0;
    }
    /*
     * mendapatkan nilai > 1 digit
     */
    private int getValue(String rom, int length){
        if(length==2){
            if(cekOrder(rom)){
                return getValue(rom.substring(1, 2))-getValue(rom.substring(0, 1));
            }else{
               return getValue(rom.substring(1, 2))+getValue(rom.substring(0, 1));
            }
        }else{
            if(this.romValidate(rom)){
                return this.sum;
            }
        }
        return 0;
    }
    /*
     * hanya berlaku untuk 2 digit angka romawi
     */
    private boolean cekOrder(String rom){
        int len = this.order.length;
        for(int i=0; i<len-2; i++){
            if(rom.substring(0, 1).equalsIgnoreCase(this.order[i]) && rom.substring(1, 2).equalsIgnoreCase(this.order[i+1])){               
                return true;              
            }else if(rom.substring(0, 1).equalsIgnoreCase(this.order[i]) && rom.substring(1, 2).equalsIgnoreCase(this.order[i+2])){
                return true;
            }
        }
        return false;
    }
    private boolean cekOrder(int start){
        int len = this.order.length;           
        for(int i=0; i<len-2; i++){
            if(start<this.rom.length-2){               
                    if(this.rom[start].equalsIgnoreCase(this.order[i]) && this.rom[start+1].equalsIgnoreCase(this.order[i+1])){                       
                        return true;            
                    }else if(this.rom[start].equalsIgnoreCase(this.order[i]) && this.rom[start+1].equalsIgnoreCase(this.order[i+2])){                       
                        return true;
                    }
            }else if(start==this.rom.length-2){
                    if(this.rom[start].equalsIgnoreCase(this.order[i]) && this.rom[start+1].equalsIgnoreCase(this.order[i+1])){                       
                        return true;            
                    }else if(this.rom[start].equalsIgnoreCase(this.order[i]) && this.rom[start+1].equalsIgnoreCase(this.order[i+2])){                       
                        return true;
                    }
            }
        }
        return false;
    }
    private void splitToArray(String rom){
        char[] romchar = rom.toCharArray();
        int jml = romchar.length;
        this.rom = new String[jml];
        for(int i=0;i<jml;i++){
            this.rom[i] = ""+romchar[i];           
        }
    }
    /*
     * 1.validasi apakah huruf romawi benar huruf2nya
     * 2.validasi apakah huruf romawi benar urutannya.
     */
    public boolean romValidate(String rom){
        //pecah dulu menjadi array, biar mudah ngolahnya
        this.splitToArray(rom);
        int jml = this.rom.length;      
        //cek apakah huruf romawi benar per hurufnya
        for(int i=0;i<jml;i++){
            for(int j=0;j<this.order.length;j++){
                if(this.rom[i].equalsIgnoreCase(this.order[j].trim())) {
                    break;
                }
                if(j==this.order.length-1 && !this.rom[i].equalsIgnoreCase(this.order[j].trim())){
                    return false;
                }
            }
        }
        int len = this.order.length;      
        this.sumRom(this.rom, 0, jml);  
        return true;
    }
    public void sumRom(String[] rom, int start, int len){       
        if(start < len-2){          
            if(rom[start].equalsIgnoreCase(rom[start+1]) && rom[start+1].equalsIgnoreCase(rom[start+2])){               
                this.sum += (this.getValue(rom[start])+this.getValue(rom[start+1])+this.getValue(rom[start+2]));
                this.sumRom(rom, start+3, len);             
            }else if(rom[start].equalsIgnoreCase(rom[start+1]) && !rom[start+1].equalsIgnoreCase(rom[start+2])){             
                this.sum += (this.getValue(rom[start])+this.getValue(rom[start+1]));
                this.sumRom(rom, start+2, len);             
            }else if(!rom[start].equalsIgnoreCase(rom[start+1])){
                if(this.cekOrder(start)){                  
                    this.sum += (this.getValue(rom[start+1])-this.getValue(rom[start]));
                    this.sumRom(rom, start+2, len);                 
                }else{                 
                    this.sum += this.getValue(rom[start]);                  
                    this.sumRom(rom, start+1, len);
                }
            }
        }else if(start == len-2){
            if(this.cekOrder(start)){                  
                    this.sum += (this.getValue(rom[start+1])-this.getValue(rom[start]));                   
                }else{                  
                    this.sum += this.getValue(rom[start])+ this.getValue(rom[start+1]);                   
            }
        }
    }
    public static void main(String[] args) {
        // TODO code application logic here      
        Romawi rom = new Romawi();
        String x = "mmmcdxlix";
        System.out.println(x);
        System.out.println(rom.romawiValue(x));       
    }
}

contoh hasilnya :
mmmcdxlix
3449
BUILD SUCCESSFUL (total time: 0 seconds)

mcmxcix
1999
BUILD SUCCESSFUL (total time: 0 seconds)

Jumat, 01 Maret 2013

Russian Roullette ... entah apa namanya

berhubung kemarin sempat iseng-iseng ngobrol sama teman. dapat deh istilah ini, iseng-iseng lagi bikin kodingannya. semoga algo-nya bener
Kelas 

public class Chamber {
    
    private int id;
    private boolean bullet;
    
    public Chamber(){
        this.id=0;
        this.bullet = false;
    }
    
    public Chamber(int id, boolean bullet){
        this.id = id;
        this.bullet = bullet;        
    }
    
    public void setId(int id){
        this.id = id;
    }
    
    public void setBullet(boolean bullet){
        this.bullet = bullet;
    }
    
    public int getId(){
        return this.id;
    }
    
    public boolean getBullet(){
        return this.bullet;
    }    
    
    
} 



yang bawah ni, kelas utamanya :
import java.util.Random;
import java.util.Scanner;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author aisyah
 */
public class Pistol {
    
    private Chamber[] roller;
    public final int numHole = 7;
    //private int startPoint;
    private Chamber currentChamber;
    private Random random = new Random();
    public String[] player;
    public int numPlayer;
    
    
    
    public Pistol(int player){
        this.numPlayer = player;
        this.roller = new Chamber[this.numHole-1];        
        this.player = new String[player];
        for(int i=0;i<this.numHole-1;i++){
            this.roller[i] = new Chamber();
            this.roller[i].setId(i);
            this.roller[i].setBullet(false);
        }
        this.currentChamber = this.roller[0];
    }
    
    public void setPlayer(int player, String name){
        if(player<this.numPlayer-1 && player>-1){
            this.player[player] = name;
            //System.out.println(this.player[player]);
        }else{
            System.out.println("nomor pemain tidak sesuai jumlah pemain");
        }
        
    }
    
    public void fillBullet(int chamber){
        if(chamber>this.numHole-1){
            System.out.println("chamber hanya enam buah");            
        }else{
            this.roller[chamber].setBullet(true);
        }
        
    }
    
    /*
     * memutar roller
     */
    public boolean spinRevolver(){
        int current = this.randNum(this.numHole);        
        while(true){
            current = (current == 0) ? this.randNum(this.numHole) : current;
            if(current>0){
                this.setCurrentChamber(current);
                return true;
            }
        }  
    }
    
    public void initChamber(int i){
            this.roller[i] = new Chamber(i,false);
            //this.roller[i].setId(i);
            //this.roller[i].setBullet(false);
       
    }
    
    /*
     * memicu pemantik
     */
    public void strikeFire(int player){
        //this.spinRevolver();
        int current = this.currentChamber.getId();
        this.currentChamber = (current==5)?this.roller[0]:this.roller[current+1];
        if(this.currentChamber.getBullet()==true){
            System.out.println("BAM!! player : "+this.player[player]+ " die!");
            System.out.println("Permainan selesai!");
            System.exit(0);
        }else{
            System.out.println("klik!! you are still safe!");
        }
        
    }
    
    /*
     * random number, untuk memutar roller
     * @param titik mulai, 
     * @param nomor lubang di roller
     */
    private int randNum(int numChamber){
        
        return this.random.nextInt(numChamber);
    }
    
    /*
     * titik mulai pada hole yg selaras dengan pemantik.
     * default titik 0. setelah berputar akan berubah
     */
    private Chamber getCurrentChamber(){
        
        return this.currentChamber;
    }
    
    /*titik mulai
     * set titik mulai
     */
    private void setCurrentChamber(int current){
        for(int i=0; i<this.roller.length; i++){
          int j = i+1;
          if((j == current)) this.currentChamber = this.roller[i];
        }
        
        
    }
    
    public static void main(String[] args){
        
        int player = 6;
        Pistol pispot = new Pistol(player);
        /*for(int b=0;b<6;b++){
            //System.out.println(b);
            pispot.initChamber(b);
        }*/
        Scanner scanner = new Scanner(System.in);
        //======= isi peluru di chamber
        System.out.println("Isi peluru dulu !");
        int bull = scanner.nextInt();
        pispot.fillBullet(bull);
        //======= set pemain
        System.out.println("\nSet nama pemain dulu !");
        
        for(int c=0; c<player;c++){
            //System.out.println(c);
            String pemain = scanner.next();
            pispot.setPlayer(c, pemain);
        }
        
        //======= permainan dimulai
        int i = 0;
        while(i < player ){
            System.out.println("\nPilihan :"+i);
            System.out.println("1. puter revolver");
            System.out.println("2. tarik pemicu");
            System.out.println("Giliran pemain ke-"+(i+1)+" : "+pispot.player[i]);
            int pilihan = scanner.nextInt();
            
            switch(pilihan){
                case 1:
                    pispot.spinRevolver();
                    break;
                case 2:
                    pispot.strikeFire(i);
                    i++;
                    break;
                default:
                    System.out.println("pilihan tidak ada\n\n");
                    break;
            }
            
            
            if(i==player){
                i=0;
            }
        }
    }
    
}

klo tampilannya masih gini :
Pilihan :2
1. puter revolver
2. tarik pemicu
Giliran pemain ke-3 : d
2
BAM!! player : d die!
Permainan selesai!

Jumat, 04 Mei 2012

Set Proxy di Terminal Linux

Sempet kesulitan nyari tahu bagaimana mengatur proxy melalui terminal. waktu itu butuh karena ingin install beberapa aplikasi di linux keluarga ubuntu melalui wifi kampus yang membutuhkan validasi proxy dan user. caranya mudah ternyata :

masuk ke terminal

ketik perintah  
export http_proxy='http://user:password@proxy_id:port/'

ketika tidak digunakan lagi perintahnya
unset http_proxy

semoga bermanfaat.

Jumat, 27 April 2012

mengganti halaman login Windows 7

walaupun windows 7 memiliki tampilan yang menawan, terkadang kita bosan dengan tampilan windows 7. banyak hal yang dapat di kustomasi pada windows 7. salah satunya adalah halaman login. terdapat cara manual dengan memodifikasi registry dan folder di sistem, atau bahkan kita bisa menggunakan software, dan tentunya cara ini lebih mudah. :D

cari pertama :

  • buka registry editor dengan menekan Windows+R, ketik regedit dan tekan enter, atau ketik saja regedit di kolom pencarian startmenu, kemudian ketika file regedit.exe ditemukan, langsung tekan enter atau klik dengan mouse.
  • cari key HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background 

registry editor


  • di jendela sebelah kanan cari key OEMBackground. jika tidak ada, klik kanan kemudian pilih New > DWORD (32 bit) value
  • beri nama OEMBackground, kemudian beri nilai 1 dan pilih Hexadecimal.

tambah DWORD value








atur nilainya

  • tutup registry editor, masuk ke folder sistem windows berada, misal di C:. masuk ke C:\Windows\System32\oobe cari folder bernama info.jika tidak ada buat folder bernama info dan buat juga folder backgrounds di dalam folder info tersebut.

buat folder backgrounds

  • masukkan gambar yang akan dipakai sebagai gambar logon dengan ukuran kurang dari 256 KB tipe file jpg dan beri nama backgroundDefault.jpg
gambar logon

  • selesai, silahkan di cek dengan WIndows+L untuk masuk ke halaman logon.

cara kedua dengan aplikasi :

tweakslogon

  • banyak jenis aplikasi yang dapat digunakan untuk mengganti latar halaman logon. salah satunya adalah TweaksLogon yang dapat di download di http://tweaks.com/software/tweakslogon/.
  • download software-nya
  • jalankan
  • untuk mengubah latar halaman logon, klik tombol Change Logon Screen, pilih gambar. gambar yang dapat digunakan untuk halaman logon harus berukuran 245 KB atau kurang. tetapi jangan khawatir, software ini dapat melakukan kompresi ukuran file seandainya kita hanya memiliki gambar dengan ukuran yang lebih besar dari itu.
  • untuk melihat perubahan, silahkan tekan tombol Test
  • untuk mengembalikan ke latar bawaan windows, tinggal tekan Revert to Default Logon Screen.

semoga bermanfaat.

Kamis, 19 April 2012

donwload video dari youtube

mungkin ada sebagian dari kita yang kesulitan mendownload video dari youtube. sebetulnya banyak cara untuk melakukannya.
pada kesempatan ini saya menyajikan dua cara, yang pertama dengan add-ons mozilla firefox dan kedua dengan aplikasi internet download manager.


CARA 1 : Add-ons mozilla firefox