During learn and experience

۵ مطلب در ارديبهشت ۱۳۸۹ ثبت شده است

کامپایل توزیع شده برنامه های 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
  • برطرف کردن چندین باگ مهم و ...
البته مطمئنا برای کاربران ایرانی (مثل خود من) نبودن قابلیت پشتیبانی از زبان های راست به چپ و زبان فارسی در این لیست خبر از این مطلب دارد که کماکان باید منتظر افزوده شدن این قابلیت ها باشیم.

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

آیا Dashboard Blogger ف-ی-ل-ت-ر شده است ؟

سلام
دیشب واقعا شوکه شدم وقتی صفحه Dashboard بلاگر باز نشد و پیغام Access forbidden رو دیدم. حقیقتش هنوزم توی شوکم و نمی دونم آیا واقعا مخابرات ایران این قسمت بلاگر رو ف-ی-ل-ت-ر کرده یا گوگل دسترسی این قسمت رو از کاربرانی که از ایران وارد می شوند گرفته. البته با توجه به متن بسم الله الرحمن الرحیم که در بالای وبلاگ های blogspot (بجای پنل مدیریتی بلاگر) قرار داده شده به نظر می رسه کار کار خودیاس.
والا دیگه من نمی دونم کجا برم که دم این خودیا اونجا نباشه و سنگ لای چرخ ما نندازن. 
بگذریم ، بهرحال بازم ما هستیم دوستان در خدمت شما.

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

جنگ سیستم عامل های موبایل (قسمت سوم)




آیا مایکروسافت می تواند سهم بیشتری داشته باشد ؟
در حالی که بالای 90 درصد بازار سیستم عامل دسکتاپ در اختیار ویندوز و مایکروسافت می باشد ، در بازار سیستم عامل های موبایل وضعیت معکوسی برای مایکروسافت وجود دارد و تنها 8 درصد این بازار در اختیار سیستم عامل ویندوز موبایل می باشد.
البته مایروسافت با عرضه ویندوز موبایل نسخه 6.5 گام بزرگی برای بدست آوردن سهم بیشتر از این بازار برداشته است اما با وجود رقبای قدرتمندی مانند: symbian ، iPhone OS و android بنظر می رسد مایروسافت راه سختی در پیش دارد. مطمئنا با عرضه ویندوز موبایل 7 می توان در باره آینده این سیستم عامل موبایل تصمیم گیری دقیق تری داشت.

شرکت های تولید کننده تلفن های هوشمند که از سیستم عامل Windows Mobile استفاده می کنند
  • HTC
  • Samsung
  • Sony Ericsson
  • iMate
  • Motorola (بصورت محدود)
  • Del (بصورت محدود)
  • Toshiba (بصورت محدود)
  • Asus (بصورت محدود)
  • Gigabyte (بصورت محدود)
  • Acer (بصورت محدود)
  • LG (بصورت محدود)
برتری ها Windows Mobile
شاید بیشترین مزیت این سیستم عامل یدک کشیدن نام ویندوز است ، بدلیل محبوبیت سیستم عامل ویندور ، کاربران انتظار زیادی از سیستم عاملی که ادعا دارد نسخه موبایل همان سیستم عامل است دارند. وجود نرم افزارهای فروان برای این سیستم عامل به استفاده کنندگان آن امکانات فراوانی را می دهد علاوه بر این وجود ابزارهای توسعه قدرتمند (Visual Studio) برای تولید برنامه برای این سیستم عامل و همچنین پلتفرم .Net برروی این موبایل می تواند در آینده قدرت نرم افزاری بیشتری برای این سیستم عامل به ارمغان آورد.
اما مهمترین نکته ای که نباید از آن غافل شد پشتیبانی بزرکترین شرکت نرم افزاری جهان (مایکروسافت) از این سیستم عامل می باشد که باعث می شود تجربیات غنی نرم افزاری و بودجه بالا همیشه در اختیار تیم توسعه ویندوز موبایل قرار داشته باشد.

چالش های Windows Mobile
عرضه نهایی نسخه 7 می تواند برای این سیستم عامل هم موقیت آمیز و هم چالش زا باشد. در صورتی که قابلیت خارق العاده ای در نسخه جدید این سیستم عامل گنجانده نشده باشد نه تنها نمی تواند سهم این سیستم عامل از بازار را افزایش دهد بلکه با وجود رقبای جدید (مانند android و bada) باعث کاهش سهم بازار این سیستم عامل نیز می شود.

آینده Windows Mobile
ویندوز موبایل بعنوان تنها سیستم عامل موبایل عمومی غیر اپن سورس آینده دشواری برای رقابت با رقبا دارد. اگر مایکروسافت ایده ای برای آوردن امکانات خارق العاده برروی سیستم عامل موبایل خود نداشته باشد مسلما سهمش از این بازار از این نیز کمتر خواهد شد. جواب بسیاری از این سوال ها در زمان عرضه نهایی نسخه 7این سیستم عامل مشخص می شود.

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