During learn and experience

Equivalent of Gang of Four notations in UML

In the following image you can see equivalent of Gang of Four notations in UML. this is very useful for reader of GOF book.


have a nice time.
۰۸ دی ۸۹ ، ۲۳:۰۶ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

GWT Data Presentation Widgets

Finally GWT team add some advance component for handle and display data in a consistence way.

more information :


have a nice time.
۰۸ دی ۸۹ ، ۱۱:۴۲ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

GWT roadmap

Last night i searched about GWT future and i found a good sentence about GWT mission in Making GWT Better page of GWT site in google code:

"GWT's mission is to radically improve the web experience for users by enabling developers to use existing Java tools to build no-compromise AJAX for any modern browser."

this page describe all the word of this mission sentence and also has a part that describe design axioms.

have a nice time.
۰۶ آذر ۸۹ ، ۲۳:۴۹ ۱ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

How to making AJAX web application crawlable for search engines ?

In the following link Google offer a specification that allows for dynamically created content in the AJAX web application (like GWT application) to be visible to search engine crawlers.  Google announce that currently supports this agreement.


have a nice time.
۲۸ آبان ۸۹ ، ۱۱:۵۱ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

GWT Developer Plugin for Chrome on Linux


With the following link you can download prerelease of GWT Developer Plugin for Chrome on Linux. GWT issue tracking system set the final release for releasing GWT 2.1.1.

http://google-web-toolkit.googlecode.com/svn/trunk/plugins/npapi/prebuilt/gwt-dev-plugin.crx

have nice time.
۱۵ آبان ۸۹ ، ۰۷:۳۷ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

How to use Client Bundle in Google Web Toolkit (GWT)

Client Bundle was a new feature in GWT 2 and replaced with Image Bundle . The following developer guide link can help you for better understanding about GWT Client Bunlde. 


have a nice time.
۱۴ آبان ۸۹ ، ۱۲:۰۷ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

GWT 2.1 Release Candidate 1

Finally GWT 2.1 release candidate come:

http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html

That is great , i want to learn more about its new feature as soon as possible. I like MVP Framework and Cell Widget features.

MVP Framework feature can standard views in large scale GWT application s and we can share views in different projects.

have a nice time.

۲۸ مهر ۸۹ ، ۱۰:۰۰ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

Finally i migrate to Linux

After about 2 years and try 3 different distribution of Linux (Ubuntu , Fedora , open Suse) finally i migrate completely into Linux operating system.
I am very happy now because i think i use my hardware efficiently compare to past that i was on Windows. At last i select Ubuntu from different Linux distribution.
Almost all my software need are exist in Ubuntu (Office , IDE , Web Browser , Media Player , ...) but my major problem in this migration was (already is) hardware driver , some of my hardware device installed hardly (very hard) and some other did not install yet or did not work in good performance (e.g. WIFI).
But in overall i am glad , Linux world is very nice , stable and fast (compare to Windows).

have a nice time.
۱۹ مهر ۸۹ ، ۰۰:۰۹ ۱ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

How to run a bin file in Linux ?

bin is executable extension for files in linux. some program distribute in this format. for executing a bin file from command line you can use following command:

first change the permission of file with this command:

$ chmod +x yourfile.bin
e.g
# chmod +x jdk-6u14-linux-i586.bin

then run file with this command:

$ ./yourfile.bin

have a nice time.
۰۶ مهر ۸۹ ، ۲۳:۵۸ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

Migrating from NetBeans to Eclipse

I migrated from NetBeans to Eclipse IDE after 6 year. There were some critical shortcut keys in NetBeans that i used them regularly. One of the most important thing for Migrating from one IDE to another IDE is equivalent shortcut keys in target IDE.
In the following list , there are some important shortcut keys in NetBeans and equivalent in Eclipse:
 
Shortcuts NetBeans Eclipse
Next editor Ctrl + Tab Ctrl + F6
Delete row Ctrl + E Ctrl + D
Organize imports Ctrl + Shift + I Ctrl + Shift + O
Quick fix Alt + Enter Ctrl + 1
Open type Ctrl + O Ctrl + Shift +T
Run F6 Ctrl + F11
Format code Alt + Shift + F Ctrl + Shift +F
Incremental search (like Firefox) Ctrl + F Ctrl + J
Open resource Alt + Shift + O Ctrl + Shift +R
Comment Ctrl + / Ctrl + /
Move line(s) up or down Alt + Shift + Up/Down Alt + Up/Down
Duplicate line(s) up or down Ctrl + Shift + Up/Down Ctrl + Alt + Up/Down
Go to line Ctrl + G Ctrl + L
 
have a nice time.
۱۵ شهریور ۸۹ ، ۱۸:۱۳ ۳ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

Scala : a mixed programming language

Scala’s design has been influenced by many programming languages and ideas in programming language research. In fact, only a few features of Scala are genuinely new; most have been already applied in some form in other languages. Scala’s innovations come primarily from how its constructs are put together. In the following list you can see main influences programming language to scala:

  1. Java : Large part of the syntax , basic type , class libraries and execution model.
  2. C# : Large part of the syntax.
  3. Smalltalk : uniform object model and treating.
  4. Ruby : uniform object model.
  5. Eiffel : uniform access principle for method invocation and field selection.
  6. Haskell : functional programming approach and implicit parameters.
  7. F# : functional programming approach.
  8. Erlang : actor-based concurrency library.
  9. C++ : operator overloading and template system.
  10. Lisp : flexible syntax for building internal domain-specific languages.
Scala has also contributed some innovations to the field of programming languages. For example:
  1. abstract types (alternative to generic types)
  2. traits for flexible component assembly.
  3. extractors a representation-independent way to do pattern matching.
source : Programming in Scala: A Comprehensive Step-by-step Guide by Martin Odersky, Lex Spoon, and Bill Venners

have a nice time.
۲۹ مرداد ۸۹ ، ۱۴:۳۳ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

How to configure UTF-8 URIEncoding in Tomcat

If you have a problem with GET parameters in URL. Edit Tomcat's conf/server.xml file and add the following attribute to the correct Connector element: URIEncoding="UTF-8".


   8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
               URIEncoding="UTF-8"
   />

have a nice time.
۲۷ مرداد ۸۹ ، ۰۹:۲۶ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

Best definition of C programming language

"C is not a ``very high level'' language, nor a ``big'' one, and is not specialized to any particular area of application.
A C program consists of  functions and  variables. A function contains  statements that specify the computing operations to be done, and variables store values used during the computation."

I believe that This is the best definition about C programming language. It has only two main concept (function & variable) so it is very simple to study.

have a nice time.
۲۶ مرداد ۸۹ ، ۲۲:۴۲ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

My first cup of Python programming language

At the my first view , python programming language is :
  • easy to lean.
  • object oriented.
  • dynamic type.
  • interpreting language.
  • suitable for scripting.
  • suitable for rapid development.
  • cross platform.
  • and ...
Python is simple to use, but it is a real programming language, offering much more structure and support for large programs than shell scripts or batch files can offer. Python is an interpreted language, which can save you considerable time during program development because no compilation and linking is necessary. Programs written in Python are typically much shorter than equivalent C, C++, or Java programs.

# my first python program
print("hello word")
input()

have a nice time.
۲۱ مرداد ۸۹ ، ۲۳:۵۴ ۲ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

تشکر از مسئولین سایت plusdownload

سایت plusdownload اولین نمونه از سایتهای فارسی زبانی است که با استفاده از آن می توانید نرم افزارهای رایگان و اپن سورس را دانلود کنید. نمونه های غیر فارسی این سایت از پیشتر در دنیای وب وجود داشتند (مانند : filehippo) اما خوبی این نمونه ایرانی در این که مسئولان این سایت هم ایرانی هستند و با مفهومی به نام تحریم آسنا هستند و می شود با آنها تامل کرد.
چند روز پیش بنده با فرستادن یک email و تشریح وضعیت دشوار دانلود نرم افزارهای مورد نیاز توسعه دهندگان جاوا (JDK ، NetBeans ، GWT و ...) در ایران برای مدیران این سایت خواستار قرار دادن این نرم افزار های اپن سورس و رایگان برروی وب سایتشان شدو که خوشبختانه به سرعت جواب مثبت به email بنده داده شد.
امروز هم که سایتشون رو چک کردم دیدم که لینک دانلود آخرین نشخه GWT رو برروی سایتشون گذاشتن. امیدوارم که به سرعت امکان دانلود سایر نرم افزارهای درخواستی کاربران را نیز فراهم کنم.

در انتها باید تشکر فراوانی از لطف بزرگ دوستانمان در سایت plusdownload بکنم ، که این لطف بزرگ رو به جامعه توسعه دهندگان برنامه های جاوا در ایران می کنند.

شاد باشید.
۲۸ خرداد ۸۹ ، ۱۰:۴۱ ۱ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

Apple بالاتر از Microsoft

بلاخره پس از سالها یک شرکت توانست در بازارهای سهام آمریکا در بخش تکنولوژی بالاتر از شرکت  Microsoft قرار بگیرد و سهم تسخیر بازار (market capture) خود را از غول بزرگ نرم افزاری بیشتر کند. حتما تا چند سال تنها شرکتی که سهام بازهای آمریکایی پتانسیل رقابت با مایکروسافت را در آن می دیدند گوگل بود اما حالا شرکت Apple با محصولات سخت افزاری محبوب و مشهور خود رتبه یک را از آن خود گرده است و به سلطنت چندین ساله مایکروسافت در بازار سهام آمریکا خاتمه داده است.
در تاریخ ارسال این پست رده بندی شرکت های بخش تکنولوژی در بازاهای سهام آمریکا  بر طبق آمار سایت Google Finance به قرار زیر بود:



Company name Symbol Market cap  P/E ratio  Div yield (%)  52w price change (%)
Apple Inc.   AAPL 230.53B 21.50 0.00 100.18
Microsoft Corporation   MSFT 227.86B 13.44 2.00 32.00
International Business Machines Corp.   IBM 162.08B 12.29 2.09 22.21
Google Inc.   GOOG 156.20B 22.22 0.00 21.24
Cisco Systems, Inc.   CSCO 135.18B 20.06 0.00 30.22
Intel Corporation   INTC 121.07B 19.90 3.02 38.54
Oracle Corporation   ORCL 113.33B 20.18 0.90 19.03
Hewlett-Packard Company   HPQ 110.08B


همانطور که در جدول بالا مشاهده می کنید شرکت Apple با اختلاف ناچیزی از شرکت مایکروسافت در رتبه اول این رده بندی قرار دارد.
سهم تسخیر بازار (market capture) یکی از پارامترهای مهم در بازار سهام می باشد و از حاصلضرب تعداد سهام فروخته در قیمت هر واحد سهام بدست می آید و قیمت کل سهام فروخته شده توسط یک شرکت را نشان می دهد.

آیا دوران تسلط مطلق مایکروسافت پایان یافته است. بمنظور مشاهده زنده جدول رده بندی بالا اینجا کلیک کنید.

شاد باشید.
۰۷ خرداد ۸۹ ، ۱۹:۰۱ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

میزان حافظه مصرفی در یک برنامه جاوا

در بعضی موارد شما بمنظور مونیتور کردن حافظه مصرف شده توسط یک برنامه جاوا در زمان اجرا، احتیاج دارید از میزان حافظه مصرف شده توسط JVM ، مقدار کل حافظه تخصیص داده شده به JVM و ... اطلاع داشته باشید.
به همین منظور در کلاس Runtime در پکیج java.lang متدهایی به قرار زیر وجود دارد:

Runtime.getRuntime().freeMemory();
متد فوق مقدار حافظه آزاد درون JVM را به بایت باز می گرداند.
Runtime.getRuntime().maxMemory();
متد فوق حداکثر مقدار حافظه ای که JVM مجاز به استفاده آن است را به بایت باز می گرداند.
Runtime.getRuntime().totalMemory();
متد فوق مقدار حافظه مصرفی برنامه را به بایت باز می گرداند.
با استفاده از متدهای فوق براحتی می توانید اطلاعات دقیقی از حافظه مصرفی برنامه خود بدست آورید.

شاد باشید.
۰۴ خرداد ۸۹ ، ۲۱:۴۹ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

کامپایل توزیع شده برنامه های GWT !!!

Distribute Build یکی از قابلیت های فوق العاده کامپایلر GWT می باشد. از زمانی که یک مطلب درباره این قابلیت در قسمت wiki سایت GWT مطالعه کردم تصمیم گرفته ام هر چه زودتر از این قابلیت برای پروژه خودم در آن مشغول به کار هستم استفاده بکنم.
یکی از فرایند های زمانگیر در GWT کامپایل نهایی پروژه به جاوااسکریپت برای استقرار آن برروی سرور می باشد. برای مثال پروژه ای که در حال حاضر من روی آن کار می کنم انقدر بزرگ شده که حدود 8 دقیقه کامپایل آن به جاوااسکریپت زمان از ما می گیرد.
با استفاده از Distribute Build شما می توانید فرایند کامپایل برنامه GWT خود را برروی چندین ماشین پخش کنید و هر ماشین وظیفه کامپایل یک یا چند permutation را داشته باشد.
فرایند کامپایل برنامه های GWT سه مرحله دارد:
  1. Precompile
  2. CompilePerms
  3. Link
هر کدام از این مراحل توسط یک کلاس پیاده سازی شده اند و در کتابخانه های GWT قرار دارند و بعنوان دستور در command line قابل استفاده می باشند.
دستور Precompile و Link باید برروی ماشین اصلی (build server) که وظیفه مدیریت کامپایل را بر عهده دارد انجام شود ولی هر کدام از permutation می تواند توسط دستور CompilePerms برروی یک ماشین صورت پذیرد.
برای هر سه دستورباید بعنوان آرگومان ( -workDir) یک دایرکتوری مشترک معرفی کرد. این دایرکتوری نقش مهمی در فرایند کامپایل بر عهده دارد دستورات ، خروجی های خود را درون این دایرکتوری مشترک قرار می دهند و همچنین وروردی های خود را از این دایرکتوری دریافت می کنند.
در محله اول دستور Precompile نام ماژول GWT را بعنوان ورودی دریافت کرده و بعنوان خروجی فایل precompilation.ser را درون دایرکتوری مشترک قرار می دهد.


 java -cp ... com.google.gwt.dev.Precompile com.google.gwt.sample.hello.Hello \


    -workDir work
در گام بعدی دستور CompilePerms نام ماژول و لیست شماره permutation هایی که باید کامپایل کند را بعنوان آرگومان دریافت کرده و نتیجه فرایند کامپایل را درون دایرکتوری مشترک قرار می دهد (شماره permutation  ها از 0 شروع می شود و تعداد آنها می توان از فایل permCount.txt که در دایرکتوری مشترک قرار دارد بدست آورد ).


  java -cp ... com.google.gwt.dev.CompilePerms com.google.gwt.sample.hello.Hello \
   
-workDir work
   
-perms 0
  java
-cp ... com.google.gwt.dev.CompilePerms com.google.gwt.sample.hello.Hello \
   
-workDir work
   
-perms 1
ودر مرحله آخر دستور Link تمامی permutation هایی که درون دایرکتوری مشترک قرار دارد را ترکیب کرده و خروجی نهایی را می سازد.

  java -cp ... com.google.gwt.dev.Link com.google.gwt.sample.hello.Hello \
   
-workDir work
   
-war www
   
-extra aux
البته مطمئنا در عمل این فرایند پیاده سازی دشواری خواهد داشت ولی بدلیل اینکه برای پروژه ای که من برروی آن کار می کنم ضروری است مطمئنا ارزش پیاده سازی دارد و پیاده سازی آن با استفاده از ant و یک build server می تواند انجام شود.

مطالب مرتبط:

GWT CodeSplitting

قابلیت GWT Java to JavaScript Compiler

GWT Java to JavaScript Compiler


شاد باشید.
۲۱ ارديبهشت ۸۹ ، ۲۱:۰۷ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

Apache POI - the Java API for Microsoft Documents

کتابخانه Apache POI بمنظور کار با فرمت های رایج اسناد office مانند OOXML و OLE2 می باشد. به عبارت دیگر شما با استفاده از این کتابخانه می توانید اسناد Excel ، Word و PowerPoint را در برنامه جاوای خود باز کرده و یا اسناد جدیدی ایجاد کنید.
علاوه برموارد فوق جدیدا پروژه هایی برای پشتیبانی این کتابخانه برای کار با فایل های Outlook ، Visio و Publisher نیز راه اندازی شده است.
یکی از مزیت های کار با این کتابخانه راحتی استفاده از آن می باشد برای مثال با استفاده از تکه کد زیر براحتی می توانید یک فایل Excel بعنوان خروجی برای برنامه خود ایجاد کنید:

 
 
package exceltest;

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;


/**
*
* @author Saeed Zarinfam
*/
public class Main {

public static void main(String[] args) {
Workbook wb = new HSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");

// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow((short) 0);
// Create a cell and put a value in it.

Cell cell = row.createCell(0);
cell.setCellValue(1);

// Or do it on one line.
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue(createHelper.createRichTextString("This is a string"));
row.createCell(3).setCellValue(true);

// Write the output to a file
FileOutputStream fileOut;
try {
fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
} catch (Exception ex) {
ex.printStackTrace();
}

}
}


اطلاعات بیشتر درباره این کتابخانه را می توانید  از وب سایت این کتابخانه http://poi.apache.org/ دریافت کنید.

شاد باشید.
۱۹ ارديبهشت ۸۹ ، ۲۱:۱۶ ۲ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

android 2.2

بر اساس خبرهای منتشر شده در اواسط ماه may میلادی نسخه 2.2 سیستم عامل اندروید با نام Froyo عرضه خواهد شد. البته هنوز بصورت رسمی این خبر و نحوه بروزرسانی موبایلهای مجهز به سیستم عامل اندروید منتشر نشده است اما با توجه به قابلیت هایی که قرار است در این نسخه به اندروید افزوده شود به نظر می رسد کاربران اندروید برای عرضه این نسخه لحظه شماری می کنند.
  • JIT compiler : شاید این قابلیت یکی از مهمترین قابلیت های افزوده شده در این نسخه باشد. از این پس ماشین مجازی اندروید قابلیت Just In Time Compile دارد که باعث می شود سرعت اجرای برنامه های اندروید بالاتر از گذشته شود.
  • Update Linux Kernel : با بروزرسانی کرنل لینوکس استفاده شده در اندروید از نسخه 2.6.29 به 2.6.32 که باعث می شود اندروید بتواند مقدار حافظه RAM بیشتری را آدرس دهی کند.
  • بهبود در OpenGL ES 2.0 : امکان طراحی نرم افزارها و بازی هایی با گرافیک بهتر برای اندروید را برای توسعه دهندگان فراهم می سازد.
  • پشتیبانی از Flash 10.1 : مطمئنا افزودن این قابلیت مرور صفحات وب را برای کاربران اندروید لذت بخش تر می سازد.
  • فعالسازی FM radi
  • فعالسازی قابلیت چندرنگی شدن Trackball
  • برطرف کردن چندین باگ مهم و ...
البته مطمئنا برای کاربران ایرانی (مثل خود من) نبودن قابلیت پشتیبانی از زبان های راست به چپ و زبان فارسی در این لیست خبر از این مطلب دارد که کماکان باید منتظر افزوده شدن این قابلیت ها باشیم.

شاد باشید.
۰۷ ارديبهشت ۸۹ ، ۲۳:۳۲ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام