Recent Updates RSS Toggle Comment Threads | Keyboard Shortcuts

  • Desky Natalio 9:07 am on January 3, 2012 Permalink | Reply
    Tags:   

    Menggunakan file properties di Flex 

    Pengguanaan file properties untuk menyimpan nilai-nilai tertentu membuat aplikasi yang dihasilkan jadi lebih dinamis. Di Flex kita bisa menggunakan juga cara seperti ini baik itu yang kemudian di-compile atau yang dipanggil saat run-time. Untuk lebih dinamis maka pilihan yang kedua lebih baik. Berikut adalah contoh class untuk memanggil file external saat run-time dan sekaligus mengambil nilai dari properti-properti yang sudah ditentukan.

    package org.kabanyo.utils {
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.utils.Dictionary;
    import org.kabanyo.error.URLLoaderError;</code>
    
    public class PropertiesFile {
    
    private var propertyDictionary:Dictionary;
    private var urlLoader:URLLoader;
    
    public function PropertiesFile(fileName:String) {
    propertyDictionary = new Dictionary();
    var urlReq:URLRequest = new URLRequest(fileName);
    urlLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE, handleComplete);
    try {
    urlLoader.load(urlReq);
    } catch (error:Error) {
    throw error;
    }
    }
    
    private function handleComplete(event:Event):void {
    var lines:Array = (urlLoader.data as String).split("\n");
    for each (var line:String in lines) {
    var pair:Array = line.split("=");
    propertyDictionary[pair[0]] = pair[1];
    }
    }
    
    public function getValue(property:String):String {
    return propertyDictionary[property];
    }
    }
    }
    

    Dalam penggunaan class ini ada dua hal yang penting yaitu, proses inisialisasi dan proses pengambilan nilai dari propertinya.

    Proses inisialisasi

    propertiesFile = new PropertiesFile("kabanyo.properties");

    Proses pengambilan nilai

    var property = propertiesFile.getValue("url");
     
  • Desky Natalio 11:57 am on December 15, 2011 Permalink | Reply  

    Optimasi Apache2 di VPS 

    Instalasi default di Ubuntu 11.04

    Jika kita menggunakan VPS maka salah satu faktor yang diperhatikan adalah penggunaan memory. Hal ini membuat instalasi tidak bisa standar-standar saja.

    Dalam kasus ini saya menggunakan OS Ubuntu 11.04 dengan memory sebesar 512 MB. Saya menggunakan instalasi standar untuk apache2, php5 dan mysql untuk menjalankan wordpress 3.3, hasilnya penggunaan memory mencapai “120%”. Apa yang salah? Traffic tidak tinggi, semuanya baru diinstall. Setelah diselidiki dengan bantuan Mbah Google, saya sampai pada satu kesimpulan “jangan pernah dalam default mode untuk vps”. Optimasi harus masuk dalam katalog. Awasi selalu penggunaan resources.

    Optimasi Apache2

    Cara sederhana untuk melakukan optimasi apache2 dengan menggunakan multi-processing module.

    apt-get install apache2-mpm-prefork

    Selanjutnya edit /etc/apache2/apache2.conf, temukan bagian prefork MPM, ubah seperti berikut:

    <IfModule mpm_prefork_module>

    StartServers          2

    MinSpareServers       2

    MaxSpareServers       5

    MaxClients           50

    MaxRequestsPerChild 1000

    </IfModule>

    Intinya adalah perkecil jumlah sever yang running secara simultan dan perbesar kemampuan untuk menghandle requestnya.

     
  • Desky Natalio 2:24 pm on April 4, 2011 Permalink | Reply  

    Install SVN di Ubuntu 

    Salah satu aplikasi yang sering dipakai untuk mengkontrol versi adalah SVN. Untuk meng-install aplikasi ini di lingkungan Ubuntu tidaklah sulit. Ditutorial ini akan dicontohkan peng-install-an SVN dengan basic authentication.

    Install SVN, library apache untuk SVN dan buat directory SVN:

    sudo apt-get install subversion libapache2-svn
    
    sudo svnadmin create /svn

    Modifikasi konfigurasi SVN :

    sudo nano /etc/apache2/mods-enabled/dav_svn.conf

    Temukan baris berikut dan ubah menjadi berikut:

    #Uncomment
    <Location /svn>
    DAV svn
    #Ubah ke path-nya SVN dalam tutorial ini /svn
    SVNPath /svn
    
    #Uncomment basic authentication ini
    AuthType Basic
    AuthName “Subversion Repository”
    AuthUserFile /etc/apache2/dav_svn.passwd
    #Uncomment
    </Location /svn>

    Buat user untuk SVN

    sudo htpasswd2 -cm /etc/apache2/dav_svn.passwd <username>

    Restart Apache

    sudo /etc/init.d/apache2 restart
     
  • Desky Natalio 4:26 pm on February 14, 2011 Permalink | Reply
    Tags: ,   

    Flex: Memanggil object Javascript 

    Dalam beberapa kasus dibutuhkan informasi berkaitan dengan browser yang dipakai untuk me-load aplikasi flex. Javascript memiliki kemampuan untuk memberikan informasi-informasi ini. Bisakah object  javascript ini dipanggil dari flex, jawabannya bisa.

    Untuk memanggil object javascript bisa menggunakan: ExternalInterface. Misalkan kita ingin mengambil informasi url dari browser, maka scriptnya sebagai berikut:

    var url:String = ExternalInterface.call("window.location.href.tostring");
     
  • Desky Natalio 5:06 pm on January 13, 2011 Permalink | Reply
    Tags: couchdb   

    CouchDB: Install on Ubuntu 

     sudo apt-get install couchdb

    Untuk bisa diakses selain dari localhost rubah /etc/couchdb/local.ini

    port = 5985
    
    bind_address = 192.168.0.1

    Restart couchdb.

     sudo service couchdb restart

    Jalankan Web Administrator dengan mengakses http://192.168.0.1:5985/_utils

    IP Address dan port disesuaikan dengan configurasi network anda.

     
  • Desky Natalio 10:02 am on December 2, 2010 Permalink | Reply
    Tags:   

    Javascript: Get Elements By Class Name 

    function getElementsByClassName(classname, node)  {
    if(!node) node = document.getElementsByTagName(“body”)[0];
    var a = [];
    var re = new RegExp(‘\\b’ + classname + ‘\\b’);
    var els = node.getElementsByTagName(“*”);
    for(var i=0,j=els.length; i<j; i++)
    if(re.test(els[i].className))a.push(els[i]);
    return a;
    }
    function getElementsByClassName(classname, node)  {
      if(!node) node = document.getElementsByTagName("body")[0];
      var a = [];
      var re = new RegExp('\\b' + classname + '\\b');
      var els = node.getElementsByTagName("*");
      for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
      return a;
    }
     
    • Inteltylype 6:31 pm on January 25, 2011 Permalink

      membaca seluruh blog, cukup bagus

    • BathCypeCrype 9:17 pm on January 28, 2011 Permalink

      Dzieki za ciekawe informacje

  • Desky Natalio 3:06 pm on July 23, 2010 Permalink | Reply  

    Flex: Form Validator 

    Flex sudah menyediakan komponen untuk melakukan tugas validasi. Mulai itu dari String, Date, Email, Currency, Number, dan yang lainnya. Pertanyaannya bagaimana semua kita melakukan validasi untuk suatu form dengan komponen-komponen yang bersesuaian dengan tipe validator ini. Berikut adalah cara yang saya anggap cukup mudah untuk menerapkannya.

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009&quot;
    			   xmlns:s="library://ns.adobe.com/flex/spark"
    			   xmlns:mx="library://ns.adobe.com/flex/mx"
    			   creationComplete="init()">
    	<fx:Script>
    		<![CDATA[
    			import mx.controls.Alert;
    			import mx.events.ValidationResultEvent;
    			import mx.validators.Validator;
    
    			[Bindable]
    			private var validatorArray:Array;
    
    			private function init():void {
    				validatorArray = new Array();
    				validatorArray.push(namaValidator);
    				validatorArray.push(emailValidator);
    			}
    			private function validation(value:Boolean):void {
    				namaValidator.required = value;
    				emailValidator.required = value;
    			}
    			private function validateForm(evt:MouseEvent):void {
    				validation(true);
    				var validatorErrorArray:Array = Validator.validateAll(validatorArray);
    				var isValidForm:Boolean = validatorErrorArray.length == 0;
    				if (isValidForm) {
    					Alert.show("Form sudah valid!", "Form yang valid...");
    				} else {
    					var err:ValidationResultEvent;
    					var errorMessageArray:Array = [];
    					for each (err in validatorErrorArray) {
    						errorMessageArray.push(err.message);
    					}
    					Alert.show(errorMessageArray.join("\n\n"), "Form yang tidak valid...", Alert.OK);
    				}
    			}
    			private function resetForm(evt:MouseEvent):void{
    				validation(false);
    				Validator.validateAll(validatorArray);
    			}
    		]]>
    	</fx:Script>
    	<fx:Declarations>
    		<!-- Place non-visual elements (e.g., services, value objects) here -->
    		<mx:StringValidator id="namaValidator" source="{namaInput}" property="text"
    							minLength="1" requiredFieldError="Nama tidak boleh kosong."/>
    		<mx:StringValidator id="emailValidator" source="{emailInput}" property="text"
    							minLength="1" requiredFieldError="Email tidak boleh kosong."/>
    	</fx:Declarations>
    	<mx:Form>
    		<mx:FormItem required="true" label="Nama">
    			<s:TextInput id="namaInput"/>
    		</mx:FormItem>
    		<mx:FormItem required="true" label="Email">
    			<s:TextInput id="emailInput"/>
    		</mx:FormItem>
    		<mx:FormItem label="Alamat">
    			<s:TextInput id="alamatInput"/>
    		</mx:FormItem>
    		<mx:FormItem>
    			<s:HGroup>
    				<s:Button label="Submit" click="validateForm(event)"/>
    				<s:Button label="Reset" click="resetForm(event)"/>
    			</s:HGroup>
    		</mx:FormItem>
    	</mx:Form>
    </s:Application>
    
     
  • Desky Natalio 11:51 am on July 13, 2010 Permalink | Reply
    Tags: ,   

    Flex: DataGrid dan Kalkulasinya 

    Menariknya data yang disusun dalam bentuk tabel adalah kita dengan mudah melakukan perhitungan untuk data dalam kolomnya, misalnya kolom nilai. Di flex salah satu bentuk visualisasi tabel itu adalah datagrid. Berikut adalah contoh penerapan perhitungan tersebut pada datagrid.

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009&quot;
    			   xmlns:s="library://ns.adobe.com/flex/spark"
    			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    	<s:layout>
    		<s:VerticalLayout/>
    	</s:layout>
    	<fx:Script>
    		<![CDATA[
    			[Bindable]
    			private var source:Array = new Array(
    				{check:false,name:"Row1",value:200},
    				{check:false,name:"Row2",value:150},
    				{check:false,name:"Row3",value:350});
    
    			private function sumRow():void{
    				var r:int = 0;
    				for (var i:int = 0; i < source.length; i++){
    					if(source[i].check){
    						r += source[i].value;
    					}
    				}
    				result.text = r.toString();
    			}
    			private function avgRow():void{
    				var r:Number = 0;
    				var t:int = 0;
    				for (var i:int = 0; i < source.length; i++){
    					if(source[i].check){
    						t++;
    						r += source[i].value;
    					}
    				}
    				r = r / t;
    				result.text = r.toString();
    			}
    			private function maxRow():void{
    				var r:Number = NaN;
    				for (var i:int = 0; i < source.length; i++){
    					if(source[i].check){
    						if(isNaN(r)){
    							r = source[i].value;
    						}else if(r < source[i].value){
    							r = source[i].value;
    						}
    					}
    				}
    				result.text = r.toString();
    			}
    			private function minRow():void{
    				var r:Number = NaN;
    				for (var i:int = 0; i < source.length; i++){
    					if(source[i].check){
    						if(isNaN(r)){
    							r = source[i].value;
    						}else if(r > source[i].value){
    							r = source[i].value;
    						}
    					}
    				}
    				result.text = r.toString();
    			}
    		]]>
    	</fx:Script>
    	<fx:Declarations>
    		<!-- Place non-visual elements (e.g., services, value objects) here -->
    	</fx:Declarations>
    	<s:HGroup>
    		<s:Button label="Sum" click="sumRow()"/>
    		<s:Button label="Avg" click="avgRow()"/>
    		<s:Button label="Max" click="maxRow()"/>
    		<s:Button label="Min" click="minRow()"/>
    	</s:HGroup>
    	<s:HGroup>
    		<s:Label text="Result"/>
    		<s:TextInput id="result" width="100" editable="false"/>
    	</s:HGroup>
    	<mx:DataGrid id="dg" dataProvider="{source}">
    		<mx:columns>
    			<mx:DataGridColumn width="25">
    				<mx:itemRenderer>
    					<fx:Component>
    						<mx:CheckBox selected="{data.check}" click="{data.check=!data.check}"/>
    					</fx:Component>
    				</mx:itemRenderer>
    			</mx:DataGridColumn>
    			<mx:DataGridColumn width="100" dataField="name" headerText="Name"/>
    			<mx:DataGridColumn width="100" dataField="value" headerText="Value"/>
    		</mx:columns>
    	</mx:DataGrid>
    </s:Application>
     
    • irfanf1 3:23 pm on January 14, 2011 Permalink

      Terimakasih buat share tutorial ini, saya lagi nyari script penjumlahan data pada datagrid, dan sesuai yg diharapkan.

    • irfanf1 3:26 pm on January 14, 2011 Permalink

      Oh ya barangkali ada yg sama dengan saya masih memakai flex 3, maka fx:Script dan s: diubah menjadi mx:

  • Desky Natalio 2:44 pm on July 8, 2010 Permalink | Reply
    Tags: ,   

    Flex: Contoh Datagrid dengan Multiple Selected 

    Untuk memudahkan suatu proses yang berulang-ulang pada item-item yang ada di datagrid, bisa digunakan checkbox sebagaipenanda. Dengan satu event akan mengeksekusi beberapa item sekaligus. Pada kasus ini adalah proses penghapusan aka delete.

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009&quot;
    			   xmlns:s="library://ns.adobe.com/flex/spark"
    			   xmlns:mx="library://ns.adobe.com/flex/mx">
    	<s:layout>
    		<s:VerticalLayout/>
    	</s:layout>
    	<fx:Script>
    		<![CDATA[
    			import mx.collections.ArrayCollection;
    
    			[Bindable]
    			private var source:ArrayCollection = new ArrayCollection([
    				{check:false,name:"Row1"},
    				{check:false,name:"Row2"},
    				{check:false,name:"Row3"}]);
    
    			private function deleteData():void{
    				for each(var tmpObj:Object in source){
    					if(tmpObj.check){
    						source.removeItemAt( source.getItemIndex(tmpObj) );
    					}
    				}
    			}
    
    		]]>
    	</fx:Script>
    	<fx:Declarations>
    		<!-- Place non-visual elements (e.g., services, value objects) here -->
    	</fx:Declarations>
    	<mx:Button label="Delete" click="deleteData()"/>
    	<mx:DataGrid dataProvider="{source}">
    		<mx:columns>
    			<mx:DataGridColumn width="25">
    				<mx:itemRenderer>
    					<fx:Component>
    						<mx:CheckBox selected="{data.check}" click="{data.check=!data.check}"/>
    					</fx:Component>
    				</mx:itemRenderer>
    			</mx:DataGridColumn>
    			<mx:DataGridColumn width="100" dataField="name" headerText="Name"/>
    		</mx:columns>
    	</mx:DataGrid>
    </s:Application>
     
    • admin 4:04 pm on July 9, 2010 Permalink

      Untuk menselect semua row bisa dengan menggunakan cara berikut:

      private function selectAll():void{
        for(var i:int=0; i < source.length; i++ ){
      source.getItemAt(i).check = true;
      }
      }

    • Ayi mylee 10:39 am on July 13, 2010 Permalink

      Kalau mau ngejumlahin total dalam datagrid cara nya gmn yak ?
      trus hasil total nya ada di luar grid misal dalam label ?
      Sebelum nya saya ucapkan terimkasih..

    • Ayi mylee 11:15 am on July 13, 2010 Permalink

      dan ngejumlahin data yang masuk ke dalam datagrid tapi hasil jumlahin nya ada di luar data grid dalam tabel ?
      Terimakasih Sebelum ny…

    • admin 11:43 am on July 13, 2010 Permalink

      Untuk menjumlah row di datagrid menggunkan cara yang hampir sama dengan delete. Inti tetap looping dari source terus ditambahin proses penambahan. Kira-kira method yang bisa dipakai seperti ini
      private function sumRow():void{
      var r:int = 0;
      for ( var i:int = 0; i < source.length; i++ ){
      if( source[i].check ){
      r += source[i].value;
      }
      }
      result.text = r.toString();
      }

    • Ayi mylee 9:32 am on July 20, 2010 Permalink

      Pak Mau Tanya Lagi :
              
      kalu pengen nge save data yg sudah muncul ada dlm data grid gmn cara nya ya dan sourc ny
      nah setelah di save data dalam grid data nya hilang ngga muncul dan klw mu di save lagi keluar keterangan data tersebut sudah di simpan..

      dan hasil save yg tadi bisa di cetak di tabel lain misal tebel laporan gituh..
      Sebelum Nya Saya Ucapkan Banyak Terima Kasih…

    • Ayi mylee 10:43 am on July 21, 2010 Permalink

      Pak Kalu Pengen Update Data Yang Sudah Ada Dalam Datagrid cara ny gmn ya Pake PHP.. source di php ny gimana dan source di php ny Pak.??Terimakasih Sebelum Nya…

    • Ayi mylee 10:44 am on July 21, 2010 Permalink

      Pak Kalu Pengen Update Data Yang Sudah Ada Dalam Datagrid cara ny gmn ya Pake PHP.. source di Flex ny gimana dan source di php ny.??Terimakasih Sebelum Nya…

    • Ayi mylee 8:50 am on July 23, 2010 Permalink

      Pak kalau nge save data grid ke tabel cara ny gimana ya mohon bantuan ny ya Pak..
      Sebellum Nya Saya Ucapkan Terimakasih…

    • Ayi mylee 11:33 am on July 28, 2010 Permalink

      Pak kalau bikiin source jumlah terbilang dari data grid gimana ya
      kalu punya minta ya pak he..

    • Marivel Tolleson 7:29 am on December 31, 2010 Permalink

      The most difficult thing is to find a blog with unique and fresh content but i think you offer something different. Keep it like this.

    • medical transcriptionist 2:55 pm on January 22, 2011 Permalink

      Couldnt agree more with that, very attractive article

    • download love and other drugs Free 11:40 pm on February 25, 2011 Permalink

      Whats up, This can be a wonderful summation, I located your blog checking google for any similar subject and observed this. I couldnt discover as well much other tips and facts on this posting, so it was great to find this one. I will most likely be returning to contemplate a number of other content which you have written another time.

    • Queenie Mcclean 11:45 pm on February 25, 2011 Permalink

      Nice post. The information presented here was the best I could find all day lengthy, and I have been searching tough on the Web. I believe you should put this up on a large social bookmarking site, you will discover that it spreads like wildfire – Cheers – dave

  • Desky Natalio 2:14 pm on June 30, 2010 Permalink | Reply
    Tags: alchemy,   

    Alchemy is a research project that allows users to compile C and C++ code that is targeted to run on the open source ActionScript Virtual Machine (AVM2). The purpose of this preview is to assess the level of community interest in reusing existing C and C++ libraries in Web applications that run on Adobe® Flash® Player and Adobe AIR®. – Dari Adobe

    Bukankah ini menarik. Proses porting source code cari C atau C++ ke ActionScript menjadi mudah dan cepat. Ini artinya proses development menggunakan ActionScript akan jadi lebih cepat mengingat banyak aplikasi open source yang dibangun dari C ataupun C++.

    Langkah-langkah instalasinya di platform windows sebagai berikut:

    1. Download Cygwin dan install.
    2. Install paket pearl, zip, dan gcc/g++ di cygwin.
    3. Download paket Alchemy toolkit dan extract ke directory /home/user/alcheny di cygwin. Misalkan cygwin diinstall di c:\cygwin maka directory user ada di c:\cygwin\home\user\alchemy.
    4. Download dan install Java.
    5. Download Flex SDK. Lalu extract misalnya ke c:\flex.
    6. Jalankan cygwin dan mulai proses configurasi.

    cd alchemy
    
    ./config

    7. Edit alchemy-setup di diractory alchemy dalam contoh ini “c:\cygwin\home\user\alchemy\”, uncomment baris ke 22 dan rubah directory adl ke directory flex sdk yang diextract, misalkan “export ADL=c:\flex\bin\adl.exe”.

    8. Edit .bashrc dengan menambahkan baris-baris berikut:

    export FLEX_HOME=/cygdrive/c/flex/bin

    export ALCHEMY_HOME=~/alchemy

    source /home/user/alchemy/alchemy-setup

    PATH=$ALCHEMY_HOME/achacks:$FLEX_HOME:$PATH

    export PATH

    9. Buat link file untuk llvm-stub

    cd ~/alchemy/bin
    
    ln -s llvm-stub llvm-stub.exe

    10. Edit file c:\alchemy\achacks\hack.pl rubah script “if(`uname` =~ /CYGWIN/)” jadi “if(`/bin/uname` =~ /CYGWIN/)”.

    11. Tambahkan System Variable baru di windows dengan name=CYGWIN dan value=nodosfilewaring.

    12. Alchemy siap digunakan.

    Compiling

     cd ~/alchemy/samples/stringecho
    
    alc-on; which gcc
    
    gcc stringecho.c -O3 -Wall -swc -o stringecho.swc

    Kalau tidak ada error maka akan ada file stringecho.swc yang merupakan library actionscript dan siap digunakan.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel