Wednesday, April 23, 2014

تنظیم کردن XDebug + Phpstorm



اول چک کنین XDebug نصب داشته باشین !!

فایل 20-xdebug.ini  رو از مسیر زیر باز کنید
/etc/php5/conf.d//etc/php5/conf.d

خط زیر رو آخر فایل اضافه کنید و مسیر فایل xdebug.so رو یادداشت کنید
xdebug.remote_enable=1

فایل php.ini رو باز کنید و کانفیگ زیر رو در آخر فایل اضافه کنید

[Zend]
zend_extension=""
xdebug.var_display_max_data=3000
xdebug.var_display_max_depth=30
xdebug.var_display_max_children=512
xdebug.collect_params=4
xdebug.remote_enable = 0
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.profiler_append = 1
End:

دقت کنید ،مسیر xdebug.soی  رو که یادداشت کرده بودید رو در قسمت   وارد کنید
آپاچی رو یه ریستارت کنید و برید سراغ Phpstorm بعد از اجرا شدن به Project Setting رفته و در زیر منوی PHP ، بر روی Servers کلیک کنید ، مطابق با عکس زیر بر روی دکمه ی + کلیک کنید و مثل عکس تنظیم کنید:

بعد از انجام تنظیمات سرور به منوی Edit Configuration برید:

بعد از باز شدن پنجره بر روی دکمه + کلیک کنید و PHP WEB APPLICATION رو انتخاب کنید و مطابق عکس زیر تنظیم کنید:


خوووب حالا همچی تمومه یه قایل PHP باز کنید و یه Break Point بزارید و بر روی اون حشره در نوار ابزار کلیک کنید و یا از کلید ترکیبیه :  Alt + Shift + D استفاده کنید و حالشوو ببرین ;)

دمه اون بچه هایی رو که بهم این مطلب رو یاد دادن گرم ;) 

Tuesday, April 8, 2014

جاوا ۸ وارد می شود


جاوا ۸ در تاریخ ۱۸ مارچ ۲۰۱۴ به صورت رسمی منتشر شد ، با امکانات و پیشرفت هایی که به قول بعضی ها انقلابی در جاوا محسوب می شه.

از آنجایی که توضیح در رابطه با تمام امکانات جاوا ۸ زمان زیادی می بره به چند تا از مهمترین امکانات  اشاره می کنم :
  • Lambda expressions
  • Java fx and new feature
  • Streams
  • Nashorn

Lambda Expressions

Lambda یکی از مهمترین ویژگی های جاوا ۸ محسوب می شه ، که اگه بخوام خلاصه توضیح بدم Lambda Expressions باعث سادگی و جمع و جور شدن کد می شه همین .
وقتی از Lambda استفاده می کنیم در زمان ترجمه به بایت کد ، قطعه کد lambda به یک تابع interface تبدیل می شه ، از این رو می تونیم تو نسخه های قدیمی تر جاوا هم برنامه مون را اجرا کنیم .

مثال زیر نمونه ای است از هنگامی که از Lambda Expressions‌ استفاده می کنیم و زمانی که استفاده نمی کنیم:

button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.out.println(“Action Detected”);}});‍
با استفاده از Lambda
button.addActionListener(e ->{
System.out.println(“Action Detected”);});
یک نمونه از استفاده از نخ ها (Thread خودمون)
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("Running without Lambda");
با استفاده از Lambda
Runnable runnable2 = () -> { System.out.println("Running from Lambda"); };
همانطور که نگاه می کنید قطعه کدهای Lambda ساده تر و از خطوط کمتری استفاده می کنند.
سعی می کنم در آینده ای نزدیک درباره Lambda بیشتر توضیح بدم ;)

Java fx and new feature

Stream

stream یک ویژگی جدیده که قبلا تو زبان scala بوده و حالا به جاوا ۸ اومده ، استریم یک عملی را روی تک تک یک مجموعه اجرا می کنه ! که به دو صورت قابل استفاده است : ترتیبی و موازی مثال زیر نمونه کدی است که تمام فروشنده های تویوتا رو پیدا می کنه :

List toyotaSales;
toyotaSales = sales.filter(s -> s.getCar().getBrand().equals("Toyota"))
.collect(toList());
toyotaSales.forEach(System.out::println);

Nashorn

جاوا  ۸ به ما این امکان رو داده تا بتوانیم کد های جاوا اسکریپت رو در JVM اجرا کنیم ، این یعنی اینکه شما می توانید در سمت سرور هم کد جاوا اسکریپت اجرا کنید و حالشو ببرید چیزی شبیه Node.js . که البته این امکان کاربرد های زیادی داره مثلا شما می تونید کد اعتبارسنج سمت کلاینت رو سمت سرور نیز اجرا کنید و امنیتتون رو بالا ببرید . خیلی جالبه هنوز جاوا ۸ نیومده Intellij  یه دیباگر باسه کدهای جاوا اسکریپت تو جاواتون داده !!
 یه مثال کوچولو از اجرای جاوا اسکریپت در جاوا :

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

String js="";
js += "print('Salam Java 8 !!');";
engine.eval(js);


از لینک زیر می توانید امکانات جدید جاوا ۸ رو در سایت اوراکل ببینید:

برای دانلود جاوا و اطلاعات بیشتر هم به لینک زیر برید: