During learn and experience

۶ مطلب در تیر ۱۳۸۸ ثبت شده است

عرضه GWT 1.7

GWT 1.7 عرضه شد.

این نسخه بصورت کامل از IE8 ، Firefox 3.5 و Safari 4 پشتیبانی کرده و علاوه بر این تعداد کمی از bug های با اولویت بالا نیز در این نسخه رفع شده است.
بسیاری از خصوصیات این نسخه شبیه نسخه 1.6 است ، سایت GWT تغییر release از 1.6 به 1.7 را بدلیل تغییراتی می داند که برای پشتیبانی از مرورگرهای جدید در کتابخانه هایی که از deferred binding استفاده می کنند بوجود آمده است.

بدلیل اینکه IE8 چندین تغییر قابل توجه behavioral به نسبت نسخه های قبل داشته است و این تغییرات نیز به اندازه کافی بزرگ می باشد. در نسخه 1.7 مقدار جدید ie8 بعنوان مقدار جدید خصوصیت سمت کلاینت user.agent برای عملیات deferred binding اضافه شده است.

bug های رفع شده:
  • بروزرسانی کتابخانه های GWT برای پشتیبانی از IE8
  • خطای جاوااسکریپت در متد ()Node.is
  • Mouse wheel در Firefox 3
  • خطای java.sql.Date.valueOf
  • و...
توسعه دهنده گان ایرانی بمنظور دانلود GWT می توانند از این لینک استفاده کنند (در صورتی که GWT 1.7 در این لینک وجود نداشت در چند روز آتی اضافه خواهد شد).

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

مقایسه Apache Wicket با GWT




امروز مطلبی درباره Apache Wicket خوندم (Apache Wicket یک Framework تولید برنامه های تحت وب با استفاده از تکنولوژی جاوا است).
دلیل اینکه تصمیم گرفنم این مقایسه رو انجام بدم ، شبا هت هایی بود که این Framework با GWT دارد. اصلی ترین شباهتی که بین این دو Framework وجود دارد ، نحوه برنامه نویسی با این دو Framework است. برنامه نویسی با آنها شبیه برنامه نویسی Swing (یا اصطلاحا Swing Like) است. بدین معنی که توسعه دهندگان وب بجای سرو کار داشتن با tag برای تولید برنامه وب خود با کلاس های جاوا و برنامه نویسی شئ گرا روبرو هستند (که این سبک مزیت های خاص خود را دارد).

تفاوت اصلی این دو Framework درمعماری آنها و چگونگی عملکرد آنها در زمان اجرا است.
Apache Wicket همانند JSF یک Framework سمت سرور (server side) است و در خواست های کاربر در زمان اجرا و در سمت سرور render می شود در حالی که GWT یک Framework سمت کلاینت (client side) است و در خواست های کاربر در زمان اجرا در سمت کلاینت و توسط جاوااسکریپت پاسخ داده می شود. این امر سبب می شود بار پردازشی سمت سرور در GWT کاهش یافته و همچنین حجم اطلاعات ردوبدل شده بین کلاینت و سرور نیز کاهش می یابد.
GWT Compiler یکی دیگر از برتری های GWT به نسبت Apache Wicket است. این کامپایلر برنامه نویسی جاوااسکریپت را برای کاربران آسان می سازد و کاربر می تواند به راحتی کامپونت های سازگار با تمامی مرورگرها با جاوااسکریپت تولید کند.

بطور حتم تفاوت ها و شباهت های بیشتری بین این دو Framework وجود دارد.

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

Named Query ها در JPA

JPA بمنظور تعریف EJBQL های از پیش تعریف شده مکانیزمی را فراهم کرده است که Named Query نام دارد. با این مکانیزم شما می توانید در زمان ساخت query با استفاده از نام Named Query به آن ارجاع بزنید.
به چند دلیل ممکن است شما بخواهید از این مکانیزم استفاده کنید ، اول اینکه با این روش می توانید از یک query در چندین موقعیت مختلف استفاده کنید ، دوم اینکه می توانید آن query را بدون نگرانی از اینکه در مکان های مختلف برنامه مورد استفاده قرار گرفته است بهبود دهید و بهینه سازید و یا ویرایش کنید.

مثال:
@Entity
@
Table(name = "ole_exam")
@
NamedQueries({
@
NamedQuery(name = "Exam.findByExamId", query = "SELECT e FROM Exam e WHERE e.examId = :examId")})
@
Entity
public class Exam implements Serializable {
...
}

در مثال بالا برای کلاس Exam یک Named Query تعریف شده است که یک پارامتر نیز می گیرد. شما می توانید با استفاده از تکه کد زیر این Named Query را فراخوانی کنید و همچنین به آن query پارامتر ارسال کنید:

Query query = em.createNamedQuery("Exam.findByExamId");
query.setParameter("
examId", 13);

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

چگونه زمانی که یک DialogBox را نمایش می دهیم پنل پشت آن را Mask کنیم ؟

همانطور که در بسیاری از برنامه های AJAX مشاهده کرده اید پس از نمایش یک DialogBox عناصر پشت DialogBox همگی تیره و شفافیت آنها نیز کم می شود. در GWT در زمان نمایش یک DialogBox این اتفاق نمی افتد و فقط می تواند عناصر پشت DialogBox را غیر فعال کرد با استفاده از تکه کدهای زیر می توانید به راحتی به این functionality برسید.
.mask-panel {
filter:alpha(opacity=50);
-moz-opacity:.50;
opacity:.50;
background: gray;
}

ابتدا css rule بالا را درون فایل css خود کپی کنید.
فرض می کنیم که برنامه شما یک پنل دارد که 100 درصد صفحه را پوشانده است وتمامی عناصر صفحه درون آن افزوده می شود و نام آن mainPanel است. کافی است شما هر زمانی که می خواهید DialogBox خود را نمایش دهید با استفاده از کد زیربه mainPanel یک style جدید اضافه کنید (همان css rule که در بالا تعریف شد):

mainPanel.addStyleName("mask-panel");

و زمانی که DialogBox بسته می شود آن style را حذف کنید:

mainPanel.removeStyleName("mask-panel");

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

نیاز به برنامه نویس GWT (موقعیت شغلی)

سلام
به برنامه نویس GWT جهت همکاری در یک شرکت بزرگ نرم افزاری (واقع در تهران) با مهارت های زیر بصورت تمام وقت نیازمندیم:

مهارت ها :
  • GWT
  • JPA
  • JSP و Servlet
علاقمندان می توانند resume خود را به پست الکترونیکی zarinfam.s@gmail.com ارسال کنند.

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

RootPanel در GWT

RootPanel اصلی ترین پنلی است که شما در تولید یک برنامه GWT به آن احتیاج دارید ، این پنل در رابط کاربری که توسط شما تولید می شود نمایان نیست در حقیقت این پنل یک container برای عناصر پویای برنامه شما می باشد. این پنل در بالاترین سطح سلسله مراتب رابط کاربری هر برنامه GWT قرار دارد. دو دلیل برای استفاده از RootPanel وجود دارد ، یکی برای ایجاد بدنه داخلی صفحه برنامه شما می باشد و دیگری برای ایجاد عناصر خاص بصورت توکار در بدنه برنامه می باشد.
پنل اصلی با wrap کردن (بسته بندی کردن) یک عنصر در صفحه HTML کار می کند. بصورت پیش فرض RootPanel عنصر body صفحه HTML را wrap می شود. البته شما می توانید هر کدام از عناصر صفحه را wrap کنید بشرطی که آن عنصر HTML را نام گذاری کنید (id داشته باشد)و در زمان فراخوانی RootPanel آن نام را بعنوان پارامتر ارسال کنید.

RootPanel.get() // Default. Wraps the HTML body element.
RootPanel.get("yourHTMLElementName") // Wraps any HTML element with an id of "stockList"

یک صفحه اصلی می تواند حاوی چندین RootPanel باشد. برای مثال اگر شما چندین کامپوننت GWT یا پنل را درون صفحه اصلی قرار دهید ، هر کدام از آنها می توانند بصورت مستقل پیاده سازی شوند و درون RootPanel مخصوص به خود قرار گیرند.
پس از اینکه با استفاده از متد get به ارجاع RootPanel مورد نظر خود دسترسی پیدا کردید می تواند با استفاده از متد add کامپوننت ها و پنل های مورد نظر خود را درون آن قرار دهید.

RootPanel.get() .add(...);

شاد باشید.

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