Oct 22
[youtube=http://www.youtube.com/watch?v=5VaSlFuZre0&w=448&h=252&hd=1]
Amber Shade Memory, Often played in” こんな素敵な日本が” in NHK

 

“Kohakuiro No Kioku” (composed by Toshiaki Matsumoto) – Piano Instrumental from Toshiaki Matsumoto’s 3rd album “Pianoia”. Theme from NHK “Konna Sutekina Nippon Ga” (Japanese TV program).”

Pemain : sweetmelody602

Lagu ini membuat saya terharu dan saya takjub dengan composer yang dapat membuat lagu seperti ini

Pemainnya juga mengekspresikan lagunya dengan baik dan sangat menyentuh

Arti dari  Kohakuiro no kioku atau Amber Shade Memory dalam bahasa indonesia adalah “Kenangan berwarna Amber”, suatu musik yang mengutamakan kehangatan dan kenangan.

Lagu ini dipakai dalam acara こんな素敵な日本が yang berarti “This Beautiful Japan”, suatu acara yang memperlihatkan keindahhan Jepang dari yang paling kecil hingga paling besar, dalam lagu ini dapat dirasakan jiwa Nasionalisme yang tinggi terhadap negara kampung halamannya.

Definisi Amber dapat berbagai macam, salah satunya yaitu dari bahasa sanskrit yang berarti “langit” pada link di bawah ini

http://www.thinkbabynames.com/meaning/0/Amber

“Kenangan berwarna langit”

Oct 18

Vieitor

Hello, everyone

Today I wanna share a bit about a Vi command that have been discussed on The System Programming Class today,

The Vi command that I am going to talk about is the Replace command built in Vi, below is the simple example of Replace command :

s/<string1>/<string2>

ex: s/Menye/Unyu

string1 is the string that we want to match, if the string1 is found, string1 will be replaced with string2. We can also write in another form with flags like :

s/<string1>/<string2>/<flag>

ex: s/Menye/Unyu/gc

Above command will replace string “Menye” with “Unyu”” but due to “c” flag, computer will ask user to confirm each matched items whether to be replaced or not.

Enough the intro, today’s class main challenge is using regex with replace command, for example if there are strings like this :

microsoft windows microsoft windows microsoft windows microsoft

microsoft windows microsoft windows microsoft windows microsoft

and if we want to replace the second occurrence of “microsoft” with “macrohard” each line, we could use some manipulation of regex as the solution (detail of regex can be found vastly in internet),

:1,$s/microsoft.{-}\zsmicrosoft/macrohard

and the output will look like this

microsoft windows macrohard windows microsoft windows microsoft

microsoft windows macrohard windows microsoft windows microsoft

If you want to replace the third occurrence instead of the second one, you can easily change the command like this :

:1,$s/microsoft.{-}microsoft.{-}\zsmicrosoft/macrohard

There are a lot of ways to do in Vi to reach a same goal, so experimenting is the best practice from what I’ve been through all this time,

Good luck ;)

Oct 14

Fasilkom (4)

Setiap hari saya duduk di depan komputer saya mengerjakan sesuatu dari yang jelas sampai yang tidak jelas, kadang sambil tidur, kadang sambil makan (dengan hati-hati), kadang sambil main, Ini semua terjadi di rumah kedua, kampus tercinta saya di Fasilkom-UI atau dengan kepanjangan Fakultas Ilmu Komputer Universitas Indonesia.

Kehidupan di kampus bisa dikatakan sangat menyenangkan karena dipenuhi dengan teman-teman yang baik hati dan musuh-musuh yang terlihat baik hati walaupun  setiap harinya dipenuhi dengan tugas-tugas yang jujur saja banyak dan susah-susah >_<,

Kalau sudah di rumah kedua, dari sisi waktu, saya dapat menghabiskan setengah hari lebih (dari jam 8 pagi sampai jam 8 malam ) bersinggah di Fasilkom-UI, alasannya? karena masih ada kerjaan di kampus yang harus dilakukan walaupun sebenarnya ingin cepat pulang demi menyelesaikan pekerjaan rumah (bukan PR tapi house work ) orz, kalau nge-kost, mungkin saya bisa santai saja ngenet di kampus sampai malam,

DSCF0215

Oh iya baru-baru ini fakultas kedatangan mahasiswa baru , angkatan 2010 dengan nama TURBO! ^^)b, namanya sedikit di-inherit dari nama angkatan 2008 ULTRA. TURBO itu anak-anaknya ganteng-ganteng, manis-manis, cantik-cantik, pinter-pinter tetapi memang sebagian dari crewnya kurang bersosialisasi dengan seniornya, sama halnya dengan para senior --, atau lebih tepatnya malu-malu nih anak 2010nya? cobalah berkenalan

Well apapun itu, Selamat datang untuk angkatan 2010 di environment Fasilkom –UI Smile semoga enjoy di Home kalian yang baru

Oct 1

Hello guys,

Again, another bug (is it?) is found inside Windows Phone 7 Silverlight, Actually this time I was working on creating input for date and time, But here I will just use simple number to show the bug.

Oh by the way if you want to try this code on WP7, you have to download the WP7 developer tools in its official site :) ,

[sourcecode language="CSharp"] //ListBox __ListBox1_ is instantiated inside xaml so no codes for instantiation in code-behind public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent();

        for(int i=0; i&lt;10 ; i++)
        {
            ___ListBox1_.Items.Add(i.ToString());
        }
            ___ListBox1_.SelectedIndex = 2;
        ___ListBox1_.UpdateLayout();
        ___ListBox1_.ScrollIntoView(___ListBox1_.SelectedItem);// scroll to selected items
        ___ListBox1_.UpdateLayout();

    }
}

[/sourcecode]

The code above is just a simple example, and what happened? Nothing happened

the __ListBox1_ didn’t scroll to the selected object (in this case it is 2), I googled and got that someone with the same problem got solved by using above codes it seems that person is using Silverlight that is not in WP7, and this just happened in WP7

if someone could give me some clues regarding this, I will feel very appreciated

Microsoft Innovation Center

Oct 1

Beberapa waktu yang lalu ketika sedang mengoprek Windows Phone 7 dengan bahasa C# dan Silverlight, ada saatnya Saya harus menghapus Items di dalam instansi dari sebuah List. Dengan simple saja, pemikiran yang muncul dalam kehendak saya adalah memakai code seperti berikut :

[sourcecode language="CSharp"] List<Int32> listInteger = new List<Int32>();

        listInteger.Add(0);
        listInteger.Add(1);
        listInteger.Add(2);
        listInteger.Add(1);

        foreach(int angka in listInteger)
        {
            listInteger.Remove(1);

        }

[/sourcecode]

kode diatas diasumsikan akan dapat menghapus element angka 1 dalam listInteger, tetapi bila kita meng-eksekusi program diatas apa yang kita dapat :

InvalidOperationException orz

mengapa dapat terjadi seperti ini? ini terjadi karena List menggeser element-element nya setelah dihapus >_< Jadi problem terjadi setelah program menghapus items yang ingin kita hapus, setelah iterasi penghapusan data, semua element list setelah yang dihapus menggeser dan ini yang menyebabkan Exception diatas muncul, walaupun misalkan InvalidOperationException diatas tidak muncul, yang akan muncul adalah IndexOutOfBoundException karena Capacity List menjadi lebih kecil.

Salah satu solusi yang saya asumsikan dapat bekerja adalah dengan menggunakan method RemoveAll(Predicate match) yang biasa dipakai di .NET Framework dan terdapat dalam class List, cara kerja method ini sebagai contoh:

[sourcecode language="CSharp"] listInteger.RemoveAll(x => x == 1); [/sourcecode]

kode diatas mengatakan “menghapus semua element dalam listInteger dimana element tersebut (atau x) bernilai 1″, suatu penentuan kondisi dalam C# disebut sebagai “predicate”, kode diatas sangat cocok untuk dapat menyelesaikan problem InvalidOperationException diatas.

TETAPI satu hal lagi masalah muncul yaitu didalam Silverlight, tidak ada method RemoveAll(Predicate match) orz, sehingga Saya harus mencari solusi yang lain.

karena tidak ada di Silverlight, maka secara terpaksa Saya harus membuat sendiri Method yang diperlukan diatas, method tersebut adalah sebagai berikut :

[sourcecode language="CSharp"] public static T Find<T>(this List<T> data, Predicate<T> test) { for (int i = 0; i < data.Count; i++) { if (test(data[(i)])) //mengecek apakah predicate test bernilai true dengan input data[(i)] return data[(i)]; } return default(T); }

    public static int RemoveAll&lt;T&gt;(this List&lt;T&gt; data, Predicate&lt;T&gt; test)
    {
        int removed = 0;

        for (int i = data.Count - 1; i &gt;= 0; i--)
        {
            if (test(data[(i)]))//mengecek apakah predicate test bernilai true dengan input data[(i)]
            {
                data.RemoveAt(i);
                removed++;
            }
        }

        return removed;
    }

[/sourcecode]

Kode Find() diatas berguna untuk mencari data di list yang bersangkutan dengan predicate yang valid, dan RemoveAll() yang akan dipakai untuk menghapus semua element yang cocok dengan predicate yang kita inginkan.

Silverlight coders, bila ada yang ingin ditanyakan silahkan saja ya, kalau bisa akan Saya jawab :)

Microsoft Innovation Center

Sep 5

Hello everybody,

Pada posting kali ini, gw akan bercerita sedikit tentang pengalaman gw dalam memakai Bootcamp dengan partisi Windows 7 32 bit dan OS Apple Snow Leopard 64 bit versi 10.6.4

Mohon maaf bila tidak terdapat gambar yang dapat membantu pembaca, kalau ada waktu nanti gw tambahkan ;)

Waktu itu situasi gw seperti dibawah ini :

Tujuan gw: Mengkonversi Bootcamp Windows 32 bit menjadi Windows 64 bit Masalah : Ketika ingin membuat partisi baru Windows(setelah menghapus dan backup data windows 32 bit) di Bootcamp Assistant di MACOSX, bootcamp mengatakan hal berikut :

“The disk cannot be partitioned because some files cannot be moved” Backup the disk and use Disk Utility to format it as a single Mac OSX Extended (journaled) volume. Restore your information to the disk and try using Boot Camp Assistant again.

Mendengar ini muka gw menjadi : O_O + OMG

Penjelasan Masalah : Mengapa bisa terjadi seperti ini? padahal pertama kali kita meng-install bootcamp bisa-bisa saja, ternyata ini berujung pada masalah fragmentasi pada partisi windows, jadi ketika kita menghapus partisi windows, fragmentasi pada partisi windows tidak di Defragmentasi sehingga tersisa DAN BootCamp hanya dapat membuat partisi pada bagian yang masih “bersih”

Solusi : Setelah menerima message diatas dari bung BootCamp, gw langsung mencari informasi mengenai masalah ini di internet, solusinya yang gw tahu antara lain :

  • Menggunakan aplikasi seperti iDefrag untuk mendefragmentasi partisi sisa windows
  • Membeli Harddisk untuk backup satu partisi MACOSX, kemudian format Harddisk utama yang harus di format dan meng-copy Harddisk backup ke Harddisk utama

Dari pilihan diatas, gw melakukan yang opsi kedua, mengapa? karena lebih aman dan di internet pun terdapat rumor mengenai DiskFail atau semacamnya yang membuat gw takut menggunakan aplikasi seperti iDefrag -.-

Dan hanya untuk ini, gw sampai pergi ke Mangga Dua hari itu juga untuk membeli Harddisk backupan, tidak nyesel juga karena dapet Harddisk 2TB (harga cukup murah pada waktu itu). Dalam pemilihan Harddisk backup, gw mengambil ukuran yang aman, maksudnya karena OSX gw ukurannya 500GB, maka Harddisk backupan 500GB juga sudah cukup, tetapi karena gw juga membeli untuk backup data yang lain selain data MAC, maka gw membeli yang 2TB. Pada akhirnya gw hanya memakai 500GB dari 2TB untuk backup MACOSX ( dengan partisi 500GB dan 1,5TB pada 2TB yang baru dibeli ) sehingga tidak mungkin Harddisk backup tidak cukup untuk backup walaupun Harddisk utama penuh.

Sekarang ditangan gw terdapat alat-alat berikut :

  • Macbook Pro dengan Harddisk Utama 500GB, Harddisk ini yang akan dibackup dan diformat
  • Harddisk backup, Harddisk yang akan menampung data harddisk utama
  • Aplikasi SuperDuper! ( Shareware tetapi fungsi yang akan kita pakai terdapat pada versi gratisan jadi download saja di site officialnya :Klik disini )

Aplikasi SuperDuper! akan dipakai untuk Cloning Harddisk utama ke Harddisk backupan, dengan begitu kita bisa nge-booting di Harddisk backup.

Step yang gw lakukan :

  • 1. (Kalau belum) Backup semua data Windows 32 bit ke tempat lain (bukan Harddisk backupan yang untuk MACOSX)
  • 2. Boot dengan MACOSX
  • 3. (kalau belum) Hapus partisi Windows 32 bit dengan BootCamp Assistant
  • 4. Pasang Harddisk Backup ke Macbook, buka aplikasi Disk Utility dan format dengan format Journaled Partition sebesar ukuran Harddisk Utama
  • 5. Setelah selesai Format, buka SuperDuper! ganti Copy .[Harddisk utama]. to .[Harddisk backup]., pilih “backup – all files”, dan klik Copy Now
  • 6. Kemudian, boot lah dengan Harddisk Backupan, dengan membuka System Preference > Startup disk > dan pilih Mac OSX yang terdapat pada Harddisk External ( atau ketika booting tekan [alt] dan pilih yang dari Harddisk External )
  • 7. Boot Mac anda ( silahkan tekan [alt] untuk jaga-jaga atau tidak juga tidak apa )
  • 8. Setelah masuk kedalam menu MACOSX, gunakan Disk Utility untuk format Harddisk Utama dengan cara yang sama pada Harddisk Backup
  • 9. Selesai format, buka SuperDuper! dan sekarang Copy.[Harddisk Backup]. to .[Harddisk Utama]., klik Copy Now
  • 10. Lakukan kembali step 6 tetapi kali ini boot dengan Harddisk Utama
  • 11. Masalah fragmentasi seharusnya sudah teratasi dan dapat melanjutkan ke tahap pembuatan partisi di Bootcamp seperti biasanya

Cukup panjang ya?, sebenarnya ingin dibuat lebih singkat dengan gambar yang memadai,

Sedikit penjelasan mengenai SuperDuper!, mengapa ketika nge-Clone Harddisk Utama ke Harddiks Backup fragmentasinya tidak ikut ter-clone? ini dikarenakan SuperDuper! melakukan Cloning pada tingkat File saja, sehingga bagian fragmentasi yang tingkatnya dibawah file tidak ter-clone

Singkat pengalaman dari gw, mudah-mudan berguna Avoir ;)

Aug 11

Bonjour, tout le monde,

Pada posting pertama kali ini, gw akan mencoba untuk membuat aplikasi yang akan sangat berguna dalam keseharian gw di kampus tercinta gw bernamakan FASILKOM UI di Depok.

Sebenarnya sudah dari satu tahun lalu sejak bersinggah di FASILKOM UI, gw merasakan bahwa setiap kali gw pindah koneksi dari rumah gw ke kampus, gw merasa lelah harus ganti konfigurasi Internet. Karena untuk mendapatkan koneksi ke Internet, diperlukan konfigurasi proxy address untuk dapat surf ke dalam internet, dan setiap hari gw harus membuka Start > Control Panel > Network and Internet >  Internet Option > dan dibagian Connection, aktifkan proxy.

Proses ini memerlukan waktu yang tidak sedikit sehingga diperlukan adanya efisiensi waktu. Karena itu gw mencoba membuat simple proxy on off yang akan dipasang di desktop, seharusnya sih pembuatan ini tidak dengan WPF tetapi dengan widget ( HTML) supaya lebih bagus, tapi untuk saat ini gw akan membahas WPF saja.

Pertama untuk User Interface-nya, gw membuat memakai Microsoft Expression Blend 4. Tetapi Visual Studio 2008 dan 2010 juga tidak masalah, keduanya dapat membuat WPF application.

Kode User Interface dapat dilihat dibawah ini

MainWindows.xaml

[sourcecode language="XML"] <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="SimpleProxy.MainWindow" x:Name="Window" Title="MainWindow" Width="640" Height="480" Background="{x:Null}" Foreground="{x:Null}" WindowStyle="None" AllowsTransparency="True">

&lt;Grid x:Name=&quot;LayoutRoot&quot;&gt;
    &lt;Grid.ColumnDefinitions&gt;
        &lt;ColumnDefinition Width=&quot;0.739*&quot;/&gt;
        &lt;ColumnDefinition Width=&quot;0.261*&quot;/&gt;
    &lt;/Grid.ColumnDefinitions&gt;
    &lt;Rectangle x:Name=&quot;OuterWindow&quot; Margin=&quot;177,180,-8.04,175&quot; Stroke=&quot;Black&quot; RadiusY=&quot;16.5&quot; RadiusX=&quot;16.5&quot; MouseDown=&quot;OuterWindow_MouseDown&quot;&gt;
        &lt;Rectangle.Fill&gt;
            &lt;LinearGradientBrush EndPoint=&quot;0.5,1&quot; MappingMode=&quot;RelativeToBoundingBox&quot; StartPoint=&quot;0.5,0&quot;&gt;
                &lt;GradientStop Color=&quot;#FF7752E2&quot; Offset=&quot;0&quot;/&gt;
                &lt;GradientStop Color=&quot;#FF4C0FF9&quot; Offset=&quot;1&quot;/&gt;
            &lt;/LinearGradientBrush&gt;
        &lt;/Rectangle.Fill&gt;
    &lt;/Rectangle&gt;
    &lt;TextBlock x:Name=&quot;LabelStateText&quot; TextWrapping=&quot;Wrap&quot; Text=&quot;Current State :&quot; Foreground=&quot;White&quot; FontSize=&quot;18.667&quot; Margin=&quot;209,222.666,141.436,232.503&quot; d:LayoutOverrides=&quot;Height&quot;/&gt;
    &lt;TextBlock x:Name=&quot;LabelStateOnOff&quot; HorizontalAlignment=&quot;Right&quot; TextWrapping=&quot;Wrap&quot; Text=&quot;OFF&quot; Foreground=&quot;#FF8F9F7E&quot; FontSize=&quot;64&quot; Margin=&quot;0,193,8,201.873&quot; d:LayoutOverrides=&quot;Height&quot; TextAlignment=&quot;Center&quot;/&gt;
    &lt;Button x:Name=&quot;ButtonChangeState&quot; Content=&quot;Change State&quot; Margin=&quot;209,0,141.436,201.873&quot; Click=&quot;ButtonChangeState_Click&quot; RenderTransformOrigin=&quot;0.085,0.675&quot; VerticalAlignment=&quot;Bottom&quot;/&gt;
&lt;/Grid&gt;

</Window> [/sourcecode]

Kode-kode diatas merupakan XAML code yang berperan sebagai “tampilan” dari suatu program. Sebenarnya kode diatas tidak terlalu penting untuk di perhatikan karena dapat di-generate oleh Visual Studio secara langsung dengan beberapa tambahan yang pada akhirnya akan menjadi seperti ini :

The Image of SimpleProxy

Sekarang kita akan lanjut ke bagian Code-Behind dari program ini, kode-kodenya dapat dilihat berikut ini :

MainWindow.xaml.cs

[sourcecode language="CSharp"] using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using Microsoft.Win32;

namespace SimpleProxy { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { this.InitializeComponent(); CheckProxy();

        // Insert code required on object creation below this point.
    }

    /// &lt;summary&gt;
    /// This method will on/off the proxy setting on the Internet Setting
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;sender&quot;&gt;&lt;/param&gt;
    /// &lt;param name=&quot;e&quot;&gt;&lt;/param&gt;
    private void ButtonChangeState_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        RegistryKey cUser = Registry.CurrentUser.OpenSubKey(&quot;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings&quot;, true);

        if(int.Parse(cUser.GetValue(&quot;ProxyEnable&quot;).ToString()) == 1 )
        {
            cUser.SetValue(&quot;ProxyEnable&quot;, 0);
            CheckProxy();
        }
        else
        {
            cUser.SetValue(&quot;ProxyEnable&quot;, 1);
            CheckProxy();
        }


    }

    /// &lt;summary&gt;
    /// This method will check the update of changement in proxy
    /// &lt;/summary&gt;
    public void CheckProxy()
    {
        RegistryKey proxyRegKey = Registry.CurrentUser.OpenSubKey(&quot;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings&quot;, true);

        int enabled = int.Parse(proxyRegKey.GetValue(&quot;ProxyEnable&quot;).ToString());

        if(enabled == 1)
        {
            LabelStateOnOff.Text = &quot;ON&quot;;
        }
        else
        {
            LabelStateOnOff.Text = &quot;OFF&quot;;
        }

    }


    /// &lt;summary&gt;
    /// This method enable drag function in the window
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;sender&quot;&gt;&lt;/param&gt;
    /// &lt;param name=&quot;e&quot;&gt;&lt;/param&gt;
    private void OuterWindow_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        this.DragMove();
    }
}

} [/sourcecode]

Diatas terdapat 3 method :

  • ButtonChangeState_Click,
  • CheckProxy,
  • dan OuterWindow_MouseDown,

ButtonChangeState_Click akan dipanggil ketika User menekan pada tombol “change state” pada program, dan method ini akan berfungsi mengubah state proxy Internet Explorer menjadi aktif atau tidak. CheckProxy adalah method yang berfungsi untuk mengubah tampilan program ketika terjadi perubahan pada Registry proxy, perubahan tersebut berupa text dimana bila proxy menjadi aktif maka “ON” yang akan tampil, bila tidak aktif maka akan menjadi “OFF” OuterWindow_MouseDown berfungsi supaya program menjadi drag-able

yang menarik buat gw dalam pemrograman kali ini adalah bagaimana cara mengakses register ( maklum baru tahu ^^;), jadi cara mengaksesnya itu dengan mengetik berikut :

[sourcecode language="CSharp"] RegistryKey proxyRegKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings", true); [/sourcecode]

RegistryKey adalah suatu Class yang terdapat pada Library Microsoft.Win32 dan merupakan class, OpenSubKey berfungsi untuk mendapatkan instansi dari RegistryKey, pasti semuanya yang pernah ngutak-atik windows pernah membuka regedit.exe pada windows, nah dengan RegistryKey kita dapat mengakses setiap subkeys

Dengan semua kode diatas, program seharusnya dapat berjalan dengan baik, permasalahan yang timbul dengan merombak registry adalah masalah security, penulis pernah mendengar bahwa seharusnya ada cara yang lebih baik untuk dapat mengakses register.

Untuk tutorial ini gw akhiri disini, mudah-mudahan bermanfaat Avoir ;)

Microsoft Innovation Center