نصب Subversion نسخه ۷ در Ubuntu

احتمالا شما هم بعد از نصب آخرین نسخه Ubuntu با مشکل عدم تطابق نسخه Subversion با IntelliJ IDEA مواجه شده اید. در آخرین نسخه Ubuntu از نسخه ۹ Subversion استفاده می شود در صورتی که آخرین نسخه IntelliJ IDEA از نسخه ۷ Subversion پشتیبانی می نماید. جهت رفع این مشکل نیاز می باشد که نسخه ۹ را حذف و نسخه ۷ را دانلود و نصب نماییم که در زیر به شرح این موضوع می پردازیم.

حذف آخرین نسخه نصب شده SubVersion در Ubuntu:

در ترمینالی در Ubuntu دستورهای زیر را به ترتیب وارد نمایید. این دستور ها تمامی کتابخانه های مرتبط با Subversion را از سیستم عامل شما حذف می نمایند.

دانلود نسخه ۷ Subversion:

پس از حذف آخرین نسخه Subversion نسخه ۷ را از آدرس زیر دانلود نمایید

نصب نسخه ۷ Subversion در Ubuntu:

جهت نصب در ترمینال دستورات زیر را وارد نمایید.

رستوران Cafe Leon

رستوران Cafe Leon یکی از رستوران های خوب تهران می باشد که در منطقه کردستان و در مجتمع A.S.P واقع شده است. این کافه و رستوران را میتوان از جمله رستوران های ایتالیایی تهران دانست که کیفیت غذای مطلوبی را ارائه میدهد.

از نظر کیفیت محیط و رفتار پرسنل، بسیار کارکنان مودب و آراسته ای در این رستوران حضور دارند.

لاکن این رستوران با توجه به تمام محسناتی که دارد از کیفیت سرویس دهی پایینی بهره میبرد. از جمله فراموشی درخواست های مشتری، وجود خاک بر روی ظرف ها و … مورد دیگر را میتوان از جمله این موارد نام برد.

آدرس: تهران، اتوبان کردستان، مجتمع A.S.P

تفاوت == و equals در مقایسه String در جاوا

وقتی با استفاده از == دو شئ از نوع String را مقایسه میکنیم، در حقیقت ما آدرس دو String در حافظه را مقایسه مینماییم تا به این نتیجه برسیم که آنها یک شی هستند یا دو شی متفاوت. لاکن وقتی از Equals در مقایسه دو String استفاده میکنیم در حقیقت مقدار Value دو String را مقایسه میکنیم.

متغیر s1 به شی ارجاع دارد که با مقدار Hello ایجاد شده است، همچنین شی جدیدی که s2 به آن اشاره دارد توسط s1 مقدار دهی اولیه شده است، پس مقدار دو متغیر s1  و s2 برابر می باشد، لاکن این دو متغیر به دو محل مختلف حافظه ارجاع داده شده اند و این به این معنی می باشد که دو متغیر s1و  s2 یک شی نمی باشند. پس در صورتی که آنها را با == مقایسه نماییم به دلیل اینکه به دو مکان متفاوت در حافظه ارجاع داده شده اند، مقدار false بازگشت داده می شود، اما در صورتی که آنها را با equals مقایسه نماییم به دلیل اینکه محتوای دو متغیر s1 و s2 با هم مقایسه میشود مقدار true  بازگشت داده می شود. اما s1=s3 برابر true می باشد. دلیل آن این است که آنها به شی یکسانی در String Pool اشاره میکند.در Java نسخه ۷ برای اینکه String ها در Cache قرار بگیرند نباید از new در ایجاد String استفاده نمود. همچنین در این نسخه از جاوا String ها در حافظه  Heap در String Pool ذخیره می شوند. به همین دلیل محدودیتی جهت سایز وجود ندارد.

در Java 6 تمامی String ها در حافظه PermGen که بخش ثابتی از حافظه Heap می باشد ذخیره می شود، این بخش وظیفه نگهداری اطلاعات String ها و تمامی کلاس های بارگذاری شده در حافظه را برعهده دارد.

مرجع: Top 50+ Core Java Interview Questions and Answers

معرفی Pane های مختلف در JavaFX

یکی از قابلیت های JavaFX دارا بودن Pane های متفاوت می باشد. بهتر است ابتدا Pane را معرفی کنیم. Pane ها وظیفه مشخص نمودن نحوه نمایش کنترل ها، بر روی پنجره جاری را بر عهده دارند. در JavaFX شش مدل مختلف Pane تعریف گردیده است که عبارتند از BorderPane, StackPane, GridPane, FlowPane,TilePane and AnchorPane و به معرفی آنها در این پست خواهیم پرداخت.

  • StackPane
این Pane این امکان را فراهم می کند که بتوانیم کنترل های مختلف را بر روی یگدیگر (بر بالای سر یکدیگر) قرار دهیم.
۱
  • GridPane
این Pane این امکان را فراهم می کند که بتوانیم کنترل های مختلف را در سطر ها و ستون های مختلف چیده و مرتب نماییم.

۲

  •  FlowPane
این Pane این امکان را فراهم می کند تا کنترل های مختلف را به ترتیب اضافه شدن پشت سر یکدیگر قرار دهیم.

۳

  • TilePane
این Pane نیز مانند FlowPane عمل می کند و کنترل ها در یک Grid با توجه به ترتیب اضافه شدن پشت سر یکدیگر قرار می دهد.

۸

  • AnchorPane
این Pane این امکان را فراهم می کند تا کنترل ها را در جایگاه های top, bottom, left side, right side, or center قرار دهیم.

۶

  • BorderPane
ین Pane پنجره نمایش را به ۵ قسمت ناحیه top, bottom, left, right, and center تقسیم می نماید. می توانیم در هر کدام از این ناحیه ها کنترل های مورد نظر خود را اضافه کنیم. این Pane همچنین این امکان را فراهم میکند تا بتوان در هر یک از ناحیه ها Pane دیگری را قرار دهیم و کنترل ها را در آن بخش به نوع خاصی چینش نماییم.

۱۰-۳۰۰x159

لازم به توضیح می باشد که این پست از سایت blog.idrsolutions.com ترجمه شده است.

روش های دیگر کنترل Events در JavaFX

در پست قبل توانستیم رخداد Button را با استفاده از پیاده سازی EventHandler Interface در کلاس برنامه مدیریت نماییم ولی راه هایی دیگری نیز برای کنترل رخداد ها وجود دارد.  برای شروع ابتدا EventHandler Interface را از تعریف کلاس حذف می نماییم.

در پست قبل به عنوان وروردی تابع button.setOnAction مقدار this را ارسال نمودیم، یکی دیگر از روش ها این است که به عنوان ورودی یک شی جدید EventHandler را به تابع setOnAction ارسال نماییم. در این روش کدبهتری خواهیم داشت و لازم نیست مانند روش قبل در تابع handle که تمامی رخداد های کلاس را مدیریت می کرد با استفاده از if رخداد مورد نظر خود را پیدا کنیم.

راه دیگر استفاده از قابلیت جدید Java 8 به نام Lambda Expression می باشد. در این ساختار e به رخداد ما اشاره می کند و کد بسیار خوانایی خواهیم داشت. فقط فراموش نکنیم جهت اجرای این کد لازم است Java Language Level را به ۸ تغییر دهیم.

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

کنترل Events در یک برنامه ساده JavaFX

در اولین برنامه نوشته شده با JavaFX یک صفحه خالی نمایش داده میشد، در این پست به برنامه قبلی یک Button اضافه میکنیم و رخداد OnClick را بر روی آن فعال میکنیم. در زیرساخت JavaFX امکانات زیادی برای طراحی رابط کاربری در نظر گرفته شده است و بیشتر کنترل های مورد نیاز توسعه یک رابط کاربری خوب پیاده سازی گردیده است. یکی از این کنترل ها Button میباشد که فقط کافی است از آن یک شی جدید ساخته شده و به layout تعریف شده در برنامه آن را اضافه کنیم.

جهت کنترل Event روش های مختلفی در JavaFX وجود دارد، یکی از این روش ها کنترل تمامی Event ارسال شده در فرم برنامه می باشد. جهت دریافت این رخداد ها اینترفیس EventHandler را در کلاس فرم مورد نظر توسعه می دهیم. بعد از اضافه کردن این اینترفیس به کلاس لازم است متد handle را پیاده سازی نماییم. تمامی رخداد هایی که در فرم برنامه دریافت می شود را می توان از طریق این متد تحت کنترل در آورد.

در زیر متن کامل برنامه و همچنین فیلم آموزشی مرتبط با آن آورده شده است.

اولین برنامه JavaFX

اولین برنامه ای که با هر ابزار جدید نوشته می شود برنامه Hello World است. اولین نکته ای که در برنامه های توسعه یافته با JavaFx باید به آن توجه کنیم این است که کلاس اصلی  برنامه که متد main در آن قرار دارد از کلاس Application ارث بری کرده است. نکته دیگری این است که در متد main تابع launch فراخوانی شده است. جهت اطلاعات بیشتر ویدیوی زیر را مشاهده نمایید.

JavaFX چیست؟

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

این ابزار در SDK نسخه ۷ جاوا به صورت کامل یکپارچه شده است و میتوان از نرم افزارهای توسعه یافته توسط این ابزار بر روی تمامی سیستم عامل های Windows, OS X, Linux استفاده نمود. آخرین نسخه این ابزار JavaFx 2.2 می باشد.

ویژگی های نسخه  JavaFX 2.2:

  • JavaAPIs: تمامی Class ها و Interface های JavaFX توسط زبان برنامه نویسی جاوا توسعه یافته است.
  • FXML and Scene Builder: این امکان در JavaFX فراهم شده است تا تمامی رابط کاربری به صورت XML نگاشته شود یا توسط ابزار JavaFX Scene Builder کد های مورد نیاز به صورت خودکار تولید گردد. این کد ها را میتوان در سایر IDE ها وارد نمود و business logic مرتبط را پیاده سازی نمود.
  • WebView: این ابزار امکان یکپارچه سازی کامپوننت های توسعه یافته توسط JavaFX را در صفحات وب فراهم می سازد. JavaScript هایی که در WebView اجرا می شوند می توانند کد های جاوا را به راحتی فراخوانی نمایند و همچنین کد های جاوا نیز می تواند کد های JavaScript را که در WebView اجرا می شوند اجرا نمایند.
  • Swing interoperability: برنامه های توسعه یافته با Swing نیز میتوانند به روز شده و از قابلیت های JavaFX استفاده نمایند.
  • Built-in UI controls and CSS: تمامی کنترل های مورد نیاز جهت پیاده سازی یک رابط کاربری در JavaFX فراهم شده است. رابط های کاربری می توانند با استفاده از CSS ظاهر های متفاوتی به خود بگیرند.
  • Canvas API: امکان طراحی مستقیم را در برنامه های توسعه یافته با JavaFX فراهم می کند.
  • Multitouch Support: در صورتی که سخت افزار شما از امکان لمس چندگانه پشتیبانی کند، زیر ساخت توسعه برنامه ها با قابلیت  Multitouch در JavaFX فراهم می باشد.
  • Hardware-accelerated graphics pipeline: برنامه های توسعه یافته با JavaFX با استفاده از زیر ساخت های سخت افزاری GPU اجرای رابط کاربری را تسهیل می نماید
  • High-performance media engine: امکان اجرای محتواهای چندرسانه ای را با استفاده از GStreamer  به صورت کاملا پایدار و با حداقل تاخیر فراهم می سازد
  • Self-contained application deployment model: زیرساخت JavaFX این امکان را فراهم می کند تا برنامه های توسعه یافته بتوانند به صورت بسته های کاملا بر روی تمامی سیسام عامل ها نصب شوند.