Bamdad Dashtban

Developer

English

I’m back

From now on I’ll write my posts here in English.

Why ?

First of all I need to improve my English in someway , so I believe this will be the first step. ( please post comments on my mistakes )

Another reason for that is my friends here in Manchester can see what am I writing.

 

Right now I’m busy with the first semester exams of the MSc course.But I have a lot of things to write and there may be some changes between the posts before and things I’m going to write here . Just wait and you will see

And please wish me luck with the exams 🙂

 

نصب Yii

نصب

نصب Yii شامل 2 مرحله زیر است :

  1. دانلود فریم ورکYii  از yiiframwork.com
  2. باز کردن فایل های Yii در دایرکتوری قابل دسترس وب.

نکته : لازم نیست که حتما Yii در یک دایرکتوری قابل دسترس وب نصب شود. یک اپلیکیشن Yii یک اسکریپت ورودی دارد که معمولا تنها فایلی است که باید در دسترس کاربران وب قرار بگیرد.سایر اسکریپت های PHP شامل آن هایی که مربوط به Yii نباید   از طریق وب  قابل دسترس باشند زیرا امکان آن وجود دارد که برای هک کردن مورد سوء استفاده قرار بگیرند.

  1. پیش نیاز

پس از نصب ، شما می توانید تایید کنید که سرور شما تمامی پیش نیاز ها را براورده می کنید . برای این کار کافی است آدرس اسکریپتی را که این امکان سنجی را انجام می دهد در سایت مرورگر خود وارد کنید.

http://hostname/path/to/yii/requirements/index.php

حداقل پیش نیاز Yii آن است که وب سرور شما از PHP نسخه 5.1.0 یا بیشتر پشتیبانی کند.Yii با وب سرور Apache در ویندوز و لینوکس آزمایش شده . احتمالا با وب سرور ها و پلت فرم های دیگری که PHP 5  را پشتیبانی می کند ، کار کند.

Yii چیست؟

Yii framework

Yii  چیست؟

Yii یک فریم ورک PHP با عملکرد بسیار بالاست که برای ایجاد سریع اپلیکیشن های وب به کار برده میشود.همچنین بیشترین قابلیت استفاده مجدد را در برنامه نویسی وب فراهم می کند و فرایند تولید نرم افزار را سرعت می بخشد.کلمه Yii که ییی (Yee or [jii])  خوانده می شود به معنای آسانی (easy)، کاربردی(efficient) و قابل گسترش(extensible) است .

  1. 1.      پیش نیاز ها :

برای اجرای Yii  شما نیاز به  یک وب سرور با قابلیت پشتیبانی PHP نسخه  5.1.0 یا بیشتر دارید.

برای توسعه دهندگان ، درک برنامه نویسی شی گرا (OOP) بسیار مفید است ، چونکه Yii یک فریم ورک شی گرای خالص است.

  1. 2.      Yii برای چه کارهایی مناسب است؟

Yii یک فریم ورک عمومی برنامه نویسی وب است و واقعا می تواند برای توسعه هر گونه اپلیکیشن وبی به کار برده شود.از آنجایی که بسیار سبک است و به سیستم پیچیده cache  کردن تجهیز می باشد ، مخصوصا برای توسعه اپلیکیشن های پر ترافیک از جمله فروم ،پورتال ، سیستم مدیریت محتوا، سیستم های تجارت الکترونیک و … مناسب است.

  1. 3.      در مقایسه با سایر فریم ورک ها چگونه است؟

مانند سایر فریم ورک های PHP، Yii نیز MVC است.

برتری فریم ورک Yii به سایر فریم ورک در بهروری بیشتر ، غنی بودن ویژگی ها و مستندات واضح آن است.Yii  از پایه با دقت طوری طراحی شده تا نیاز های توسعه اپلیکیش های وبی جدی را به طور کامل براورده کند.همچنین نه نتیجه پروژه دیگری می باشد نه از بهم چسباندن کارهای دیگران است.آن نتیجه تجربه غنی نویسنده آن در توسعه اپلیکیشن های وب و تحقیقات  و انعکاسات فریم ورک ها و اپلیکیشن های دیگر وب است.

برنامه نویسی آیفون با بامداد دشت بان – قسمت اول (پروسه طراحی اپلیکیشن و محیط کاربری)

در این جلسه به  معرفی فرایندی که ساخت یک اپلیکیشن  موفق آیفون طی می کند می پردازیم.
شاید خیلی از شما برنامه آیفونی نوشته و آن را برای فروش قرار داده باشید ،ولی شاید فروش شما آن طور که فکر می کردید نبوده! یا شاید می خواهید که App بعدیتون واقعا خوب باشه، ما امروز و جلسه بعدی به این موضوع می پردازیم  و فرایند ساخت یک App را با هم مرور می کنیم.
در این جلسه اصلا به برنامه نویسی نمی پردازیم بلکه نکات بنیادی برای برنامه نویسی آیفون را بررسی خواهیم کرد.

پس با یک سوال شروع می کنیم : بهترین قدم ها برای ساخت چیزی عالی چیست ؟

به طور کلی 4 مرحله اصلی برای ساخت یک  محیط کاربری قوی آیفون وجود داردطراحی محیط کاربری آیفون

  • مرحله  اول شالوده (Foundation) :
    در این مرحله تفاوت هایی که در استفاده از دستگاه های تاچ بوجود می آید را درک می کنیم و به راه های جدیدی در حل مسائل می اندیشیم.
  • · مرحله دوم – تعریف محصول (Product Definition) :
    اینجا می فهمیم آن چیزی که دست مشتری می دهیم چیست ؟
  • · مرحله سوم طراحی و نمونه سازی (Design & Prototyp) :
    درک می کنیم که طراحی محیط کاربری آیفون چگونه است و از کاغذ برای نمونه سازی استفاده می کنیم.
  • · مرحله چهارم پولیش و بهبود (Polish & Refine):
    مرحله ایست  که نرم افزار پایدار ولی معمولی را تبدیل به اپلیکییشن جذاب و عالی می کند.

در این جلسه به دو مرحله اول می پردازیم و در جلسه بعد به دو مرحلی باقی مانده خواهیم پرداخت.

مرحله  اول شالوده (Foundation) :

آیفون انقلابی

به طور قطع آیفون دستگاهی انقلابی است . آیفون دستگاهی همواره متصل به شبکه های مخابراتی است که درون جیب ما جا می شود و دارای GPS ، قطب نما ، دوربین ، شتاب سنج و یک مرورگر کامل وب  است وبه برنامه نویس اجازه می دهد تا از بهترین ورودی های موجود برای ساخت اپلیکیشن استفاده کند.

وقتی آیفون ارائه شد ، بسیاری از قوانین تغییر کرد. برای مثال در کامپیوتر های دسک تاپ دقت استفاده از ماوس 1 پیکس در 1 پیکسل بود و تنها یک بار در زمان رخ می داد، دقت در کامپیوترها تعریف شده بود ولی در آیفون که دستگاهی مالتی تاچ و دقت آن از 22 پیکسل  تا 55 پیکسل بسته به اندازه و نوع استفاده از انگشتان کاربر بر روی صفحه متغیر است . بر این اساس ما 5 ورودی همزمان داریم که باید آن ها را در یک زمان پیگیری کنیم.لمس در مقابل کلیک

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

  • اولین آن ها Scroll-Bar بود که بسیار کوچک بود و به سختی می توانستیم با آن ارتباط برقرار کنیم.و به طور کل آن ها حذف شد چراکه  دیگر با حرکات انگشتان می توانستیم کار آن ها را شبیه سازی کنیم و در اپلیکیشنContacts و یا مرور وب حتما جایگزین آن را دیده اید .
  • دومین آن ها Drop Down Menu ها بودند که به خوبی کار نمی کرند و در کار با انگشتان بسیار ضعیف بود. چندین جایگزین برای آن معرفی شد که Picker یکی از آن ها بود که بیشترین کاربرد را در داده های از پیش تعیین شده دارد.

در آیفون برای اولین بار کاربران می توانستند به طور مستقیم تغییر ایجاد کنند(Direct Manipulation) و نیازی به استفاده از ماوس و کیبورد نداشت. این تغییرات مستقیم به انواع زیر تقسیم می شود:

  • دستکاری مستیقم (Direct Manipulation): برای مثال در یک بازی تیر اندازی وقتی تنها یک بار صفحه را لمس می کنید تا تیری شلیک شود
  • لمس پی درپی (Sequential Tapping): مثلا وقتی که در نرم افزار Mail پشت سر هم  از لحظه باز شدن برنامه صفحه را لمس می کنید تا به ایمیل مورد نظرتان برسید.
  • لمس و کشیدن(Tapping & Dragging): بیشترین شباهت به دنیای واقعی را دارد زیرا شما می توانید با لمس کردن نقاشی کنی , چیزی را تکان دهید و .. 90 درصد کاربران در هنگام کار با صفحه لمسی برای اولین بار لمس کردن و کشیدن را امتحان میکنند.

پس حتما باید فکر کنید کدامیک از این ها در چه موقعی بیشتر در Application  شما به کار می رود.

خوب بیایید به تغییراتی که در طراحی محیط کاربری ایجاد شده بپردازیم:

فهمیدن اینکه چیزی یک Button یا دکمه است بسیار ساده است و آن با نرم کردن گوشه های مربع قابل درک است. پس معمولا هر موقع دیدید دور چیزی نرم شده و همچنین درخشش خاصی دارد آن یک دکمه است. ولی در ToolBar  نمی توان اطراف همه دکمه ها را نرم کرد پس به جای آن می بینید که از تکنیک عمق دادن به دکمه استفاده شده که به آن یک Inner Shadow داده شده است و خود نوار هم درخشان یا Glossy  شده است که به کاربر یاد آوری می کند که قابل لمس شدن است.

دکمه های آیفون

در اکثر پلت فرم ها اغلب 5 یا 6 درصد وقت طراحی می شود ولی در آیفون پیشنهاد می شود که حداقل نیمی از زمان شما به طراحی پرداخته شود. خیلی از شما با خود میگویید من یک برنامه نویس یا یک مهندس هستم و من طراحی نمی کنم و در فتوشاپ چیز ها را خوشگل نمی کنم ولی وقتی من در مورد طراحی می گویم منظورم تعیین وسعت نرم افزار ، اندیشیدن به سلسله مراتب و یافتن جریان نرم افزار  و درک اشیا موجود است و این ها همان کار های هستند که مهندسان از انجام آن لذت می برندو تنها راجع به نقاشی و زیبا کردن چیز ها صحبت نمی کنم ولی باید بدانید هیچ کسی در دنیای واقعی  چیزی را از شما نمی خرد که طراحی خوبی نداشته باشد و وقت زیادی روی طراحی آن گذاشته نشده باشد.

مرحله دوم – تعریف محصول (Product Definition):چرخه تولید در آیفون

تا به حال ( قبل از آیفون) هر محصول نرم افزاری لیستی طولانی از خصوصیات و ویژگی ها را داشت که بدین منظور برنامه نویس مجبور بود محیطی بزرگ فراهم کند تا می توانست تمامی آن ویژگی ها را پیاده سازی کند، ولی مشکل آنجا است که خیلی از کاربران از تمام آن ویژگی ها استفاده نمی کردند.

باید بدانیم که در آیفون هدف آن است که یک راه حل تعریف کنیم نه اینکه مجموعه ای از ویژگی ها را کنار هم بگذاریم و نشان دهیم.
بهترین اپلیکیشن های آیفون آن هایی هستند که یک مشکل را برای کاربر حل می کنند.یکی از بهترین روش ها به رسیدن به این هدف تعریف کردن “شرح تعریف برنامه”  Application Definition Statement  یا ADS است .

ADS از 3 قسمت تشکیل شده است:

(تفاوت شما) ( راه حل شما) برای (مخاطب شما )

(Your Differentiator)(Your Solution) for (Your Audience)چرخه تولید پلت فرم ها غیر از آیفون

  • تفاوت شما : خاص بودن برنامه شما در مقابل سایر نرم افزار ها را نشان می دهد .برای مثال “استفاده آسان” یا “ظاهری زیبا”.
  • راه حل شما: برای خود تعریف کنید که چه مشکلی را حلی یا آسان خواهید کرد.
  • مخاطب شما : بسیار مهم است که بدانید مخاطبتان کیست ، برای مثال اگر مخاطب شما یک آتش نشان است که باید به سرعت هم تیمی های خود را پیدا کند شما نباید آن طور که برای یک تاجر محیطی طراحی می کنید که برای رسیدن به هدفش چندین بار باید صفحه را

لمس کند برنامه را طراحی کنید.

این مرحله را با یک مثال جلو می رویم:در مک ما نرم افزاری به نام iPhotos  داریم که در iOS مشابه آن Aplication با نام Photos  است که همگی ما در آیفون برای مشاهده تصاویر استفاده کرده ایم.

ADS برنامه iPhotos  این است :

Easy to use , digital photo editing ,organizing & sharing for causal & amateur  photographers

تفاوت ما نسبت به سایر نرم افزار ها easy to use  بودن نرم افزار اس و می بینید که در اینجا 3 راه حل داریم :

1.     Digital Photo Editing

2.     Organizing

3.     Sharing

همچنین مخاطبین ما هم Causal & amateur photographers  هستند.

لیست طولانی خصوصیات نرم افزار در این ADS خلاصه شده است و خیلی از این ها برای آیفون مناسب نیست زیرا انجام این کارها با انگشت سخت و زمانگیر است و کاربر آیفون می خواد به هدفی بسیار سریع برسد.پس با مشاهده راه حل ها می بینیم که تنها یکی به کار ِ کاربران آیفون می آید:

همه دوست دارند که عکس هایشان مرتب و Organize شده باشد و لی افراد کمی هستند که برای مرتب کردن عکس هایشان وقت می گذارند و اکثر مردم از یک لیست طولانی تصویر مورد نظرشان را پیدا می کنند.

همچنین افراد کمی هم هستند تا تصاویرشان را ویرایش یا Edit  کنند , آنها فقط عکس می گیرند و اگر عکسی بد شد آن را پاک می کنندو عکس جدید می گیرند و حوصله بریدن , چرخاندن و تنظیم نور آن ها را ندارند.

ولی به اشتراک گذاشتن یا Sharing کاری است که اکثر مردم آن را انجام می دهند چه از طریق نمایش Slide show برای اطرافیان چه از طریق ایمیل کردن یا آپلود کردن در وب سرور ها.

پس با توجه به مطالب گفته شده ADS برنامه Photos را اینگونه می نویسیم:

Easy to use digital photo sharing for casual iphone users

باید به مخاطب برنامه که در اینجا کاربران عمومی آیفون یاد شده هم توجه کرد که اگر عوض شود ، به طور کل ویژگی های برنامه نیز عوض می شود برای مثال ADS برنامه Apertureکه برنامه ای برای عکاسان حرفه ای است و کاملا متفاوت است به صورت زیر است:

Easy to use digital photo sharing for professional photographers

جمله ای معروف وجود دارد که می گوید :

Pick the few features

Most frequently used

By the majority of your users

Most appropriate for the mobile context

تنها چند ویژگی را انتخاب کنید

که بیشترین استفاده را داشته باشد

توسط اکثر کاربران بکار برده شوند

و مناسب برای دستگاهی قابل حمل باشند.

اگر به لیست ویژگی های iPhoto در مک نگاهی بیندازید می بینید که تنها قسمت کوچکی از ویژگی های آن برای نرم افزار Photos   آیفون پیاده سازی شده و همه با نرم افزار Photos کار کرده ایم.با  یک لیست از آلبوم ها شروع می کنیم و عکس مورد نظرتان را انتخاب می کنید , عکس تمام صفحه را می بینید و Toolbar در پایین کارهای مربوط به اشتراک گذاری را انجام می دهد. همان راه حلی که هدف ما ایجاد آن بود. می توانیم Slideshow  ببینیم ، عکس های بعدی و قبلی را ببینیم و به گالری mobileMe آپلود یا ایمیل کنیم.

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

اگر شما به نرم افزار های موفق در App Store نگاهی بیندازین در خواهید یافت که بیش از 70 درصد آن ها وقتی برای نوشتنADS گذاشته اند.

ادامه در مطلب بعدی

خسته نباشید.

بامداد دشت بان

برنامه نویسی آیفون با بامداد دشت بان – قسمت 0

برنامه نویسی آیفون با بامداد دشت بان

سلام

از امروز می خواهم آموزش برنامه نویسی برای iOS را در بلاگم بگذارم. که با استفاده از اون می توانید برای آیفون و آیپد , آیپاد تاچ و سایر دستگاه های شرکت اپل که سیستم عامل آن ها iOS هستش برنامه بنویسید.

چند وقتی است که با کمک دوستانم در سایت i-Phone.ir برنامه نویسی آیفون می کنم و خوب خودم هم در حال یادگیری هستم ولی تلاش می کنم هرچیزی که بلدم را به بهترین نحو آموزش بدم.

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

این مطالب به  صورت همزمان در وبلاگ من , وب سایت i-Phone.ir و x-code.ir قرار می گیره و تلاش می کنم به سوالات در همه سایت ها پاسخ بدم.از سایر اساتید و دوستانی که تجربه دارند درخواست می کنم تا اشتباهات من را بگیرند تا از مسیر خارج نشیم.

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

منابع من برای آموزش مختلف هستش و آموزش ها رو از خودم نمی نویسم ولی تلاش می کنم بهترین و کاملترین  دیسیپلین برای آموزش را پیاده کنم. لیست منابعی که ازشون استفاده می کنم در زیر می نویسم ولی لازم نیست شما آن ها رو تهیه کنید مگر در مواردی که خودم بگم چون بعضی از منابع ویدیویی هستند و حجم بالایی دارند.

  • ویدیو های آموزشی Lynda.com
  • ویدیو های آموزشی myCodeTeacher.com
  • ویدیو های کنفرانس های شرکت اپل در Word Wide Developer Center
  • ویدیو های آموزشی دانشگاه استنفورد
  • کتاب های انتشارات Apress
  • منابع مختلف آموزش زبان Objective-c

باید بگم چون خودم برای برنامه نویسی از آیفون استفاده می کنم از لغت “برنامه نویسی آیفون ” استفاده می کنم ولی شما می تونید آموزش های منو برای برنامه نویسی در کلیه دستگاه های آی او اسی استفاده کنید.

سوال : برای برنامه نویسی آیفون به چه چیز هایی احتیاج داریم؟

  • اول از همه باید یک کامپیوتر اپل مکنتاش که پردازنده اینتل داره داشته باشید . البته شما می توانید از نسخه هک شده سیستم عامل MacOS استفاده کنید که به نام OSx86 project معروفه و میشه از طریق اون روی pc های معمولی macOS x  رو نصب کرد.( البته این کار می تونه سخت باشه و خیلی وقت ها هم نشه روی هر سیستمی نصبش کرد کاملا به سخت افزار ربط داره )
  • دوم اینکه شما به یک اکانت developer اپل نیاز دارید تا بتونید نرم افزار های مورد نیازو دانلود کنید و برنامه خودتون رو توی باهاش بنویسید و روی appStore قرار دهید. هزینه این اکانت سالیانه 99 دلار است.( البته دوستان فایل های مورد نیاز برای توسعه رو برای دانلود در سایت های مختلف به صورت لینک مستقیم قرار داده اند ولی شما نمیتونید بدون داشتن اکانت برنامه رو روی دستگاه خودتون اجرا کنید و روی اپ استور بفروشیدش )

http://developer.apple.com

  • شما در صورتی که احتیاج به کار کردن با دوربین , بلوتوث ، جی پی اس, اکسلومتر و … دستگاه ندارید , احتیاج نیست آیفون یا آی پاد یا آی پد داشته باشیدو می تونید از شبیه ساز آن استفاده کنید. ولی کل حالِ برنامه نویسی آیفون اینه که برنامتونو روی دستگاه امتحان کنید. پس بهتره که یکی از این دستگاه هارو تهیه کنید ، اگه نمی خواهید زیاد خرج کنید می تونید با آیپاد تاچ شروع کنید ولی آیپاد تاچ دوربین نداره
  • دانلود SDK  آیفون برای برنامه نویسی از طریق همون اکانت دولوپر اپل ( یا اگه خواستید از طریق لینک های مختلفی که دوستان در فروم گذاشتند )

سوال :برنامه نویسی آیفون به چه زبانی است؟

به زبان object-c است که توسط شرکت Next( بنیانگذارش استیو جابز بوده ) تولید شده و الآن توسط اپل توسعه پیدا می کنه , این زبان شبیه C است چون از سی گرفته شده ولی تفاوت های زیادی دارید و زبانی شی گرا ( بر خلاف سی ) است . با زبان هایی مثل Java و C++ بسیار تفاوت در سینتکس دارد ولی مفاهیم شی گرایی در اکثر زبان های شی گرا شبیه به هم است گرچه تفاوت هایی در پیاده سازی و برداشت از مفاهیم وجود دارد.

در مورد خودم هم باید اضافه کنم که دانشجوی ترم آخرم مهندسی  نرم افزار هستم و چند سالی است که برنامه نویسی می کنم از c شروع کردم و با PHP کار کردم  , در حال حاضر هم برنامه نویسی java  می کنم و کمتر از 6 ماه است که با برنامه نویسی آیفون از طریق دوستانم شایان و بشیر در i-phone.ir آشنا شدم.

در مورد هدفم هم از نوشتن این آموزش ها اینه که با کمک شما اشکالات خودم برطرف شه , به علاوه اینکه نوشتن آموزش ها می تونه بهم کمک کنه که بیشتر وقت بگذارم برای برنامه نویسی آیفون و مطالب بیشتری برام جا بیوفته و اگه یه روزی خودم چیزی یادم رفت به آموزش های خودم رجوع کنم.

فکر می کنم برای شروع کافی باشه به زودی  با قسمت اول آموزش ها در خدمتتون هستم.

 

برنامه ریزی استراتژیک شرکتهای نرم افزاری

در بخش قبل (اینجا) به مواردی که بحث مدیریت و کنترل جریان نقدینگی را در شرکت های نرم افزاری خاص می سازد پرداختم. در ادامه می خواهم تجربیاتی که خودم در این چند ساله داشته ام را فهرست کنم. اما پیش از شروع، مجددا تاکید می کنم که یک مدیر مالی برجسته و خبره از تکنیک ها و روشهای عمومی و یا اختصاصی استفاده می کند که می تواند یک شرکت ضرر ده را سود ده کند و آنچه من می نویسم نه از سرتجربه مالی است که در این زمینه هیچ نمی دانم بلکه موارد ذیل از سر مشاهداتم به عنوان مدیر یک شرکت کوچک و متوسط نرم افزاری است. نکته بعدی توجه به فرمول های سود اوری و افزایش درآمد و کاهش هزینه ها است که خود بحث دیگری را طلب می کند (تلاش می کنم نوشته بعدی را به بحث کسب سود اختصاص دهم)، اما ده نکته ای که باید در زمینه مدیریت جریان مالی شرکت در نظر بگیرد اینها هستند:

1. مراقب ریسک های پروژه باشید: در بخش قبل اشاره کردم که کسب درآمد در شرکتهای نرم افزاری همراه با ریسکهای رایج در تاخیر یا شکست پروژه های نرم افزاری است. بنابراین علاوه بر لزوم مدیریت ریسک در پروژه، در بحث پرداخت ها هم باید حواستان به تاخیر یا لغو دریافت های پیش بینی شده در پروژه باشد، بنابراین هیچگاه برای پرداختی که وابسته به یک دریافت از یک پروژه است، چک صادر نکنید مگر آنکه به اندازه کافی زمان پس از آن گذاشته باشید و بدانید در صورت عدم توفیق در دریافت پول، می توانید از محل دیگری آن هزینه را تامین کنید و یا می دانید در صورت عدم تامین موجودی لازم، می توانید دریافت کننده چک را به صبر کردن قانع کنید!

2. یک جریان ثابت مالی ایجاد کنید: همانگونه که در نوشته قبل هم به آن اشاره کردم، یکی از دشواری های شرکتهای پروژه محور آن است که یک جریان ثابت و مشخص از ورودی مالی وجود ندارد و همه چیز بسته به موفقیت در گرفتن پروژه جدید و موفقیت در دریافت ها صورتحساب ها و صورت وضعیت های آن پروژه است. هنر شما به عنوان مدیر آن است که برای جبران هزینه های ثابت و جاری، بتوانید یک جریان درآمدی هر چند اندک -همان آب باریکه خودمانی!- را ایجاد کنید. برای کسب این درآمد ثابت می توانید روی فعالیت های زود بازده تر و یا دائمی تر توجه کنید: برای مثال در کنار واحد تولید و گروه های مجری پروژه، یک واحد آموزش ایجاد کنید، فروش سخت افزار داشته باشید، درآمد های پشتیبانی را به یک سطح مطلوب و دائمی دربیاورید و یا فروش بسته های نرم افزاری آماده (Package) را در دستور کار قرار دهید و با با شرکتهایی برای اجرای خدمات مرتبط به صورت سالانه با پرداخت های منظم قرارداد ببندید.

3. رسوب پول ایجاد کنید: یکی از مشکلات مهم ما آن است که همیشه دریافت های مالی مستقیما صرف هزینه ها می شود و یا در خوشبینانه ترین حالت بلافاصله از آن سود برداشت می کنیم، اما اگر بتوانیم با مجتمع سازی حساب های مالی، ایجاد گردش های منظم، ،تاخیر در پرداخت ها نسبت به زمان دریافت ها و یا تشکیل صندوق های پس انداز مشخص از درآمد، یک میزان متوسط اندوخته را در حساب های شرکت نگه داشت، می توان روی سود پول، اخذ وام و یک پشتوانه مشخص در زمان تغییرات بنیادی در شرکت و یا شروع پروژه های جدید حساب باز کرد، این اندوخته، برای روز مبادای شما است!

4. دولتی ها متفاوت از خصوصی ها هستند: در مورد هرکدام از تقسیم بندی های بازار باید در همه بخشهای فروش و پشتیبانی و مالی رفتار متفاوتی داشته باشید. در بحث مالی هم رفتار خرید و رفتار پرداخت ها در دولتی ها و خصوصی ها با یکدیگر تفاوت دارد، برای اینکه خیالتان از پرداخت ها راحت باشد تلاش کنید حتی در فروش Package های آماده در دولتی ها قرارداد ببنید و در خصوصی ها فاکتور با پرداخت یک مرحله ای داشته باشید، حتی اگر در خصوصی ها مایل به عقد قرارداد هستید تلاش کنید برای همه مراحل پرداخت در همان زمان عقد قرارداد چک مدت دار دریافت کنید. به این ترتیب می توانید خیالتان نسبت به عدم سوخت و سوز پولتان اندکی راحت باشد.

5. مراقب ۸۰/۲۰ باشید. تئوری ۸۰/۲۰ در بحث مدیریت تقریبا در همه موارد دیده می شود، حواستان باشد ۸۰% مشتریانتان خوش حساب باشند و ۲۰% بدحساب، بنابراین در بخش فروش یا عقد پروژه با هر مشتری کار نکنید، حواستان باشد حداقل ۸۰% دریافت های مالی پروژه را تا قبل از تحویل نهایی پروژه دریافت کنید و حداکثر ۲۰% را به مرحله پرداخت آخر موکول کنید تا در صورت عدم موفقیت در دریافت ضرر مالی چندانی به شما وارد نشود، تلاش کنید قسط های اول پروژه حداقل ۸۰% هزینه های ثابت شما را پوشش دهند و از پرداخت های مراحل بعد، حداکثر ۲۰% صرف هزینه های پروژه گردد و بتوانید از باقیمانده روی سود و سرمایه گذاری حساب کنید. تلاش کنید ۲۰% مشتریانی که ۸۰% درآمد های شما از آنها تامین می شود را شناسایی کنید و روی آنها حساب ویژه باز کنید. از آن سو وقتی می دانید که اکثر هزینه های شرکت نرم افزاری شما (۸۰%) مربوط به نیروی انسانی است، چرا ۲۰% توجه خود را به آن معطوف کنید، شما باید به نیروی انسانیتان به عنوان یک سرمایه نگاه کنید و برای آن سرمایه گذاری کنید (توانمند سازی، آموزش،افزایش بهره وری(کارایی + اثر بخشی) فراهم کردن شرایط مناسب برای محیط کار و ….)

6. پشتیبانی یا فروش، سود در کدام است؟ ایده آل آن است که شما بتوانید از طریق پشتیبانی (یا همان جریان ثابت مالی مورد ۲) هزینه های شرکت را پوشش دهید و در آمدهای حاصل از فروش را به عنوان سود، سرمایه گذاری و یا توسعه محصول یا بازار کنار بگذارید. البته اینکار برای شرکتهای نوپا و یا با محصولات غیر حیاتی دشوار است و اینگونه شرکتها می توانند به صورت معکوس عمل کنند تا زمانیکه یک سهم قابل توجه از بازار بدست آوردند و نیاز مشتریان به نرم افزار آنها واقعی و اساسی باشد و به تدریج این روند را معکوس نمایند. در کنار این باید مراقب بود که فعالیت های فروش و خدمات پس از فروش خود به یک مرکز هزینه جدی که سود اقتصادی ندارد تبدیل نشود و منابع حاصل از فروش صرف آن نگردد. ایجاد یک نرم افزار درست از طریق تست های چند لایه متعدد، ساده سازی محصول، تهیه یک رویه سیلابس آموزشی استاندارد و مشخص، مستند سازی کامل و جامع نرم افزار، فروش یک نرم افزار مشخص به چندین مشتری و تقسیم هزینه بین آنها، توانمند سازی تیم پشتیبانی، ارانه خدمات به صورت راه دور و یا از طریق نمایندگی های محلی، کاهش زمان نصب از طریق ارائه زمانبندی دقیق برای انجام کار و معتقد بودن به آن، عینی سازی نرم افزار از طریق ایجاد الگوها (prototype) و مدل های مشخص و … تکنیک هایی برای کاهش هزینه های پشتیبانی است.

7. بحث تولید قبل از فروش را جدی بگیرید. پیشتر به بحث فروش قبل از تولید یا تولید قبل از فروش اشاره کرده ام (اینجا) اصولا تولید تحت فشار و یا تولید پس از فروش هزینه بالاتری نسبت به تولید قبل از فروش دارد. بنابراین هزینه های تولید را تا آنجا که می توانید کاهش دهید. برای شرکتهای فروشنده محصول آماده، ایجاد نرم افزار های پویا و دقت در فرآیند نسخه بندی (versioning) نرم افزارها و فروش نرم افزار در تیراژ بالا می تواند موجب کاهش منطبق سازی (customization) اختصاصی برای هر مشتری و طبیعتا کاهش هزینه های تولید و قیمت تمام شده محصول گردد و در شرکتهای پروژه محور، ساخت کتابخانه های آماده، ایجاد کامپوننت ها و مولفه های پرکاربرد، حرکت به سمت نرم افزار های متن باز، ساده سازی و اختصاصی سازی متدولوژی های توسعه نرم افزارها می تواند مد نظر قرار گیرد.

8. بازار خود را درست انتخاب کنید:اگر بهترین محصول را تولید کنید اما بازار هدفی که انتخاب می کنید مناسب آن نباشد به سود دست پیدا نخواهید کرد. باید دقت کنید که قیمت تمام شده محصول برای آن بازار مناسب باشد و هزینه های بازاریابی و تبلیغات صرف امور موثر برای ان بازار باشد. با هدفمند کردن و کاهش هزینه های سربار فروش از طریق انتخاب بازار درست، تبلیغات موثر، افزایش اثربخشی فرآیند فروش، هرس کردن مشتریان و تمرکز بر یک گروه مشخص، وجود بازارهای چندگانه که بتوان در مواقع افت یک بخش یا ورود رقبای جدی به آن، بخش دیگری را جایگزین کرد، باعث می شود شما به یک نرخ فروش پایدار دست پیدا کنید، این پایداری به شما کمک می کند که در بخش هزینه ها نیز به یک ثبات و برنامه ریزی مشخص دست پیدا کنید و کار شما در مدیریت مالی شرکت ساده تر شود.

9. با دولت شوخی نکنید! این اشتباه بزرگی است که سازمانهایی مثل دارایی، تامین اجتماعی و ادارات کار را دست کم بگیرید و هزینه های بیمه، مالیات تکلیفی، مالیات بر ارزش افزوده، مالیات حقوق و یا قراردادهایی مانند کار را سرسری گرفته، در آنها تعویق بیاندازید و یا با بکارگیری حسابدار ناوارد، دچار مشکلات و سوء تفاهم با این سازمانها شوید. شاید بکار گیری یک حسابدار با تجربه گران باشد، اما اگر واقعا ارزشش را داشته باشد، بسیار به شما کمک خواهد کرد و می تواند هزینه های جاری و کسورات قانونی شما را تا حد قابل توجه ای پایین نگه داشته و کنترل کند.

10. بازی کنید. رابرت کیوساکی کتابی نوشته است به نام “بابای پولدار، بابای بی پول”، اگر چه این کتاب برای ما ایرانی ها نوشته نشده است اما خواندن آن بد نیست. یک بازی هم ساخته است به نام بازی “گردش پول”. “گردش پول” برای ما فنی ها که دید مالی نداریم، ابزار خوبی است برای یادگیری و کسب دیدگاه، تجربه و شناخت مالی از طریق بازی. فرصت کردید همراه با خانواده، دوستان و یا حتی مدیران و کارکنان شرکت خود این بازی را انجام دهید. البته دقت کنید که به خاطر این بازی گمراه نشوید و ریسک های بدون منطق انجام ندهید. دنیای واقعی با محیط بازی متفاوت است!

مجدا تاکید می کنم که دقت کنید ما فنی ها عقل کل نیستیم و باید از کمک افراد خبره در زمینه مسائل مالی کمک بگیریم. بنابراین به موارد بالا صرفا به عنوان یک به اشتراک گذاری تجربه نگاه کنید تا یک دستورالعمل شفا بخش!

همین!

منبع : رادمان

مشکلات من در تهیه کتب خارجی

دیگه تقریبا همه دوستان و اطرافیان من در جریان هستند که به خاطر مطالعه Ebook با کامپیونر مدتی است که چشمانم آسیب دیده و باعث شده که از زمانبندی و انتظاری که از خودم داشتم عقب بیوفتم.

برای همین  چند روزیه که با همه مشورت می کنم که یه راهی برای اینکه کتاب هایی رو که می خونم به صورت کاغذی تهیه کنم تا بلکه چشمام آروم تر بشه.

البته چند سری به فکر خرید تبلت و ایبوک ریدر افتادم ولی چیزهایی که نظرم رو جلب کرد خیلی گرون تر از خرید سالیانه کتاب من بود که منصرفم کرد البته یک دلیل سخت پیدا شدن این دستگاه ها در بازار ایران و عدم امکان تست و بررسی آنها قبل از خرید بود

از اونجایی که کتب مورد نظر من هیچ یک در ایران حتی چاپ افست هم نمیشه تنها راه حل خرید آنها از سایت هایی مثل آمازون و ارسال آنها به ایران هستش

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

  • اگر تا به حال سری به آمازون زده باشید حتما متوجه شده اید که در اکثر مواقع کتاب ها با مقداری تخفیق ارائه میشه برای مثال کتابی که من در نظر داشتم قیمتش 40 دلار بود که تخفیف خورده بود و به 31 دلار رسیده بود که نسبتا قیمت معقولی داشت, ولی آدینه بوک تخفیف آمازون رو حساب نمی کنه و کتاب رو با قیمت بدون تخفیف براتون تهیه می کنه
  • آدینه بوک به ازای خرید هر کتاب مقدار زیادی پول ازتون  برای هزینه ارسال و سود می گیره که با قیمت اصلی کتاب برابری می کنه و اگه کتابتون ارزون باشه شاید از قیمت اصلی کتاب هم بیشتر بشه , برای کتابی که من سفارش دادم 27 هزار تومان هزینه ارسال در نظر گرفته شد
  • کتاب اگه برسه پس از 25 روز به دستتون می رسه که حتما توی اون 25 روز ایبوک کتابو خوندید و چشمانتوتم اذیت کردید

سایت های دیگری مثل آدینه بوک هم وجود دارند که با کمی قیمت بالا و پایین میشه کتاب رو تهیه کرد ولی باز هم برای من قیمت کتاب ها غیر منصفانه است و زمان تحویل هم خیلی دیره!

هدف من از نوشتم این مطلب این بود تا از دوستان بخواهم اگه راهی میشناسند که کتاب های آمازون را با قیمتی منصفانه تر در تهران تحویل بگیرم به من هم بگویند …

ممنون

Java EE چه هست و چه نیست ؟

داشتم در انجمن برنامه نویس به دنبال مطالبی در مورد جاوا ای ای می گشتم که به تاپیکی برخوردم که دیدم برای شروع نوشتنم در مورد جاوا ای ای خیلی خوبه که این مطلب را اینجا بگذارم

در ادامه این پست کاربران و برنامه نویسان سایت برنامه نویس به پرسش و پاسخ در مورد Java EE پرداخته اند که گزیده ای از آن ها را هم اینجا قرار خواهم داد.

نکته : این تاپیک مربوط به بهمن ماه سال 1384 است پس امکان قدیمی بودن خیلی از محتوای مطالب وجود دارد گرچه برای آشنایی بسیار مطلوب است.

zehs_sha  نوشته است :

J2EE چه هست و چه نیست؟

“Java2 Platform-Enterprise Edition” یک تکنولوژی میان افزار است که توسط شرکت سان میکروسیستم ابداع شده است و در حال حاضر به عنوان یک راه حل اساسی جهت برآورد کردن نیازها و مسائل مختلف در نظر گرفته می شود. تکنولوژی های میان افزار از Corba و IDLS تا سیستم های پیغام گرا، راه بسیاری را پیموده اند و تکامل آنها مرحله به مرحله بوده است که طرح آن فراتر از محدوده این مقاله است.
J2EE شرکت سان یک نقطه تحول قطعی در تاریخ تکنولوژی های میان افزار و سبب پذیرش و تشخیص تشکیلات کامپیوتری شناخته می شود.
در ادامه مطلب در مورد “J2EE” چیست و چه نیست؟ بررسی دقیق تری صورت می گیرد. به هر حال، با وجود مجموعه ای بزرگ از استانداردها و ویرایش ها از یک سو و وجود سرورهای برنامه های کاربردی گوناگون از سوی دیگـر، معمولا J2EE غیرقابل درک می نماید.
J2EE چیست؟
قبل از آن که تعریف کنیم J2EE چیست بهتر است درک کنیم که J2EE زبان بـرنامه نویسی بسته نرم افزاری، یک ابزار و یا یک سرویس نیست. به عبارت ساده تر J2EE لزوما یک میان افزار استاندارد است که شرکت سان میکروسیستم آن را برای توسعه و به کارگیری برنامه های کاربردی تجاری در مقیاس گسترده و با قابلیت الکترونیکی و به صورت توزیعی و چندلایه ارائه کرده است.
برنامه های کاربردی که برای استانداردهای J2EE نوشته می شوند مزایای زیادی را در بر می گیرند که قـابلیت جابه جایی، امنیت، مقایس پذیری، توازن بار و قابلیت استفاده مجدد از آن جمله است.
میان افزارها، راه حل های نرم افزاری سمت سروری هستند که بنیاد و اساس مورد نیاز در اتصال سیستم های نامتجانس و منابعی توزیعی در شبکه را فراهم می کنند. پیش از J2EE، راه حلهای میان افزار و محدود به محصولات و عرضه کننده ها بودند. این میان افزارهای قدیمی ویژگی های محدودی داشتند و سازگاری آنها نیز کم بود و حتی در قابلیت های عملکردی و جابه جایی در مسائل مختلف نیز محدود بودند. به عبارت دیگر، هیچ استاندارد صنعتی مشترک و قابل قبولی برای این منظور وجود نداشت و بسیرای از ویژگی ها به انتخاب عرضه کننده بود.
J2EE با یادگیری از اشتباهات گذشته و ارائه نیازمندی های ضروری صنعت سبب رشد و کمال تکنولوژی میان افزار شد. همچنین امکان گسترش و توسعه های آتی نیز در آن لحاظ گردید.
در توسعه این استاندارد، سان با دیگر عرضه کننده های اصلی میان افزار، سیستم عامل و سیستم های مدیریت پایگاه داده از جمله IBM و اوراکل همکاری کرد.
در اصل J2EE مجموعه ای از اتانداردها و خط مشی هایی است که تعریف می کند چگونه برنامه های کاربردی در لایه توزیعی می توانند با استفاده از زبان جاوا ساخته شوندً؟ توسعه دهنده ها، برنامه های کاربردی خودشـان را تحت این استانداردها می سازند و عرضه کننده های زیرساختار، سازگاری با این مجموعه خط مشی ها را از طریق J2EE تضمین می کنند. از این طریق، برنامه های J2EE می توانند به صورت مدخلی برای به کارگیـری چندین سرور برنامه های کاربردی با حداقل تغییرات در سطح کم (و حتی بدون تغییر) در نظر گرفته شوند.

اعمال J2EE

J2EE به ارائه محیط های مختلفی می پردازد که این محیط ها در ادامه بررسی شده است:
J2EE ترکیبی برای میان افزار توزیعی چندلایه
J2EE کاملا بین لایه های مختلف درگیر در محیط برنامه کاربردی حد فاصل قایل می شود و مولفه های قرار گرفته در هر لایه را تعریف می کند. این لایه ها می توانند هر یک از لایه های Client، لایه طرح، لایه تجارت و یا ارائه سیستم های اطلاعاتی گسترده باشند.
کلیه برنامه های کاربردی J2EE براساس این قالب کاری ساخته شده است.
همچنین هر لایه در سیستم چندلایه ممکن است در چند سرور توزیع شده باشد.
با J2EE توسعه برنامه های کاربردی توزیعی دیگر یک وظیفه پیچیده نیست. مولفه های J2EE هیچ فرضی درباره محیط سرور و منابعی که از طریق دایرکتوری های گسترده دسترسی می یابند، ندارند. این بدان معناست که توسعه دهندگان برنامه های کاربردی برای توزیع مولفه ها و منابع اشان به تلاش زیادی نیاز ندارند.
J2EE محیطی برای برنامه های کاربردی در مقیاس گسترده
J2EE به صورت سرورهای برنامه های کاربردی مانند BEA WEB Logic یا IBM WEB Sphere پیاده سازی شده که محیطی برای برنامه های کاربردی توزیعی در مقیاس گسترده است.
برنامه های کاربردی می توانند براساس مدل برنامه نویسی برنامه های کاربردی J2EE ساخته شوند و حتی در یک یا چند سرور برنامه های کاربردی وب سازگار با J2EE به کار گرفته شوند.
به عبارت دیگر می توان مناسب ترین محیط سرور برنامه کاربردی از محصولات گسترده سازگار J2EE را انتخاب کرد. حتی بدون توجه به این ویژگی های منحصر به فرد نیز، کلیه سرورهای برنامه های کاربردی J2EE یک حیطه کاری مشترک برای توسعه و به کارگیری برنامه های کاربردی گسترده فراهم می کنند.
J2EE مدلی برای توسعه برنامه های کاربردی با قابلیت الکترونیکی
برنامه های کاربردی J2EE به راحتی می توانند بر روی وب، پالم و دستگاه های دستی، تلفن های همراه و بسیاری دیگر از دستگاه های نمایش داده شوند. به عبارت دیگر، مولفه های برنامه های کاربردی می توانند بدون هیچ مشکلی دارای قابلیت الکترونیکی باشند. مدل برنامه نویسی J2EE تضمین می کند که منطق تجاری و سیستم های BackOffice بدون تغییر باقی بمانند و به عنوان تسهیلاتی برای نمایش به راه های گوناگون و دسترسی Clientها به کار روند.
یکی دیگر از ویژگی های خوب محیط J2EE توازن بار اتوماتیک، مقایس پذیری و تحمل خرابی است. مولفه های به کار رفته در محیط J2EE به طور اتوماتیک این تسهیلات را به دنبال خواهند داشت که به این ترتیب دیگر نیازی به کدنویسی نخواهد بود. این ویژگی ها در ساخت مدخل های وب مورد نیاز Clientها اهمیت چشمگیری دارند.
J2EE استاندارد سازگار در سرورهای برنامه های کاربردی وب
J2EE را می توان اولین استاندارد صنعتی در پذیرش و تشخیص دنیای میان افزار دانست. تقریبا تمام سرورهای برنامه های کاربردی وب (BEA WEB Logic, IBM WEB Sphere, HP’S Application Server, Sun-Netscapes’s inlanet, Macromedia’s Jrunو غیره(، سرورهای تایید شده برنامه کاربردی J2EE هستند. تاکنون هیچ استاندارد دیگری تا این حد پشتیبانی و تایید نشده بود.
همگام بافًـزوده شدن دیگر مولفه های برنامه های کاربردی به خصوصیات J2EE، می توان آنها را در سرورهای گوناگون برنامه های کاربردی در شبکه های گسترده به کار برد. از این رو، به منظور تضمین سازگاری و همبستگی بین سرورهای متفاوت برنامه های کاربردی J2EE، مجموعه تست سازگاری را ارائه کرده است.

بینش J2EE

بینش اولیه خلق و ایجاد J2EE را می توان به صورت زیر خلاصه نمود:
“توسعه دهندگان باید کدهای مختلفی را بنویسند تا تجارت و منطق طرحشان را شرح دهند، در همین حین، زیرساختار میان افزار از مسائل سطحی سیستم مانند مدیریت حافظه، تخصیص منابع، عملیات چندرشته ای، دسترس پذیری و جمع آوری آشغال به طور اتوماتیک مراقبت می کند.
آیا J2EE مشـکلات را رفع می کند؟
حال بهتر است بررسی شود که J2EE چگونه مسائل و مشکلات اصلی ناشی از گستردگی را رفع می نماید و چگونًـًـه امکان توسسعه آتی برقرار می شودً؟
استقلال از سیستم عامل و سخت افزار
J2EE runtime بر روی ماشین مجازی جاوا (JVM) قرا رمی گیرد. شکل 2 نشانگر این امر است. JVM مستقل از سخت افزار و سیستم عامل است. محیط (JRE) Java runtime تقریبا برای تمام سخت افزارها و سیستم عامل های مشهود در دسترس است. بنابراین با پذیرش جاوا، J2EE تشکیلات کامپیوتـری را از سرمایه گذاری در سیستم عامل ها و سخت افـزارگران و پرهزینه خلاصی می بخشد.
امکان نزدیک تر ساختن لایه یکپـارچه گسترده J2EE به سیستم های Backoffice مزیت ویژه دیگری است. در برخی موارد، می توان لایه J2EE را در خود محیط سرور EES جای داد و از این طریق ترافیک شبکه را کاهش و عملکرد آن را افزایش داد.

پیوستگی با طراحی شی گرا و متدولوژی مولفه

ارتباط تنگاتنگ با شی گرایی، جاوا را به یک زبان کدنویسی و خوش ترکیب تبدیل کرده است. تقریبا کلیه ویژگی های برنامه نویسی شی گرا در جاوا پشتیـانی شده است. مدل برنامه نویسی J2EE براساس متدولوژی های شی گرا و طراحی مبتنی بر مولفه ساخته شده است.
J2EE مدل های مولفه ای گوناگونی برای لایه های متفاوت دارد. بنابراین با پذیرش ترکیب های مناسب یک پروژه، توسعه دهندگان می توانند مولفه های بسیاری را فراهم کرده و گسترش دهند که در نتیجه توسعه برنامه های کاربردی تسریع می شود.
با این تفاسیر و قابلیت ها در تشکیلات کامپیوتری، برنامه های کاربردی خوش ساختار، انعطاف پذیر و قابل استفاده مجدد شکل خواهند گرفت.

انعطاف پذیری، قابلیت جابه جایی و قابلیت عملیات متقابل

کدهای جاوا را می توان از یک سیستم عاملی به سیستم عامل دیگر انتقال داد و مولفه های J2EE را نیز می توان از محیط یک سرور برنامه های کاربردی به محیط دیگر سرور برنامه های کاربردی انتقال داد. این بدان معناست که دیگر لزومی به قراردادن تشکیلات کامپیوتری بر روی یک محیط توسعه خاص نخواهد بود. برنامه های کاربردی را می توان در بیش از یک سرور برنامه کاربردی J2EE می توانند به خوبی با هم کار کنند. این ویژگی قابلیت عملیات متقابل بی سابقه ای را در جمع آوری مولفه های برنامه های کربردی می دهد. به عنوان مثال ممکن است که EJB را مستقیما در ارتباط متقابل با محیط های mainframelcics د رمحیط IBM قرار داد و از سرورهای BEA WEB Logic به EJB دست یافت.
یکپارچه سازی سیستم های اطلاعاتی گسترده

J2EE به سرعت در استانداردهای صنعت مانند JMS, JOBC و JCA به کار گرفته شده و موجب سادگی و یکپارچه سازی سیستم های اطلاعاتی گسترده مانند سیستم های قانونی، پیاده سازی های EID و پایگاه های داده شده است.
تقریبا تمام عرضه کننده های اصلی پایگاه های داده JDBC را پشتیبانی می کنند. بنابراین برنامه های کاربردی J2EE از قابلیت ارتباط با کلیه پایگاه های داده مشهور با کمک درایورهای مورد نیاز JDBC بهره می برند. متقابلا تعدادی از adapterهای EI مبتنی بر استانداردهای معماری متصل کننده جاوا به بازار شده اند که یکپارچه سازی نامریی با سیستم های قانونی متفاوت و پیاده سازی های ERP/CRM را انجام می دهد.

پذیرش معماری های سرویسگرا در J2EE

با ظهور سروریس های وب و استانداردهای باز مانند SOAP، قابلیت کار متقابل در سیستم های مجزا در تشکیلات کامپیوتری امکان پذیر شد. J2EE محیط قابل گسترشی است که می توان از مولفه ها و منابع آن در سرویس های وب استفاده کرد.
شرکت سان مجوعه بهم پیوستهای از API ها به نام بسته JAX ارائه کرده که تمامی انواع نیازمندیهای سرویس های وب مانند XML Binding, XML Parsing ترخیص و دریافت پیغام SOAP، جست وجو در XML RPC, Registry و پیغام دهی XML را پشتیبانی می کند.
اگرچه محیط J2EE بسیار پیش از ظهور تکنولوژی های سرویس های وب پشتیبانی شده است، لیکن متناسب بودن با آخرین توسعه را نیز لحاظ کرده است. با اطمینان می توان J2EE را قادر به فًـًـًـًـراهم نمودن و ارائه پیشرفت های بیش تر تکنولوژی بدون اعمال اثرات منفی در قالب کاری مرکزی و مدل برنامه نویسی برنامه کاربردی ساخت.
نتیجه

J2EE یک استاندارد میان افزار است که به طور گسترده ای در صنعت پذیرفته شده است. یک محیط ایده آل برای توسعه برنامه های کاربردی گسترده مستقل از محیط، توزیعی و چندلایه که قادر به مقیاس دهی شود و توازن بار است. مزیت اولیه J2EE فراهم سازی زیرساختار میان افزار استانداردشده ای است که کلیه مشکلات سطح پایین سیستم را نظارت می کند که در نتیجه توسعه دهندگان می توانند صرفا روی کدگذاری منطق و تجاری و کاری شان تمرکز نمایند.
J2EE با ایجاد یک محیط مستقل از سیستم عامل نیازهای صنعت را کاملا و به طور کارا رفع می نماید؛ بدین ترتیب، برنامه های کاربردی نهایی، انعطاف پذیر، متحرک و قابل استفاده مجدد در پیاده سازی های مختلف عرضه کننده هستند.
علاوه بر تمام این موارد، زیرساختار J2EE قادر به پشتیبانی تکنولوژی های جدیدتر و توسعه صنایع است.

منبع :

در صورت تمایل روی ادامه کلیک کنید

این جاوا اصلا چی هست ؟

باید بگم که با دوستانم راجع به مطالبی که در بلاگم نوشتم صحبت کردم ، از اونجایی که خیلی ها خودشون برنامه نویسند کلی نظرات خوب دادند و همچنین خیلی از دوستان که آشنایی نداشتند سوالات خوبی کردند که من را بر آن داشت [:دی ] تا از بیخ و بن به معرفی جاوا بپردازم چون اون طور که فهمیدم برداشت دوستان نسبت به جاوا خیلی متفاوته.
اول از همه بگو ببنینم کلا جاوا چی هست ؟
جاوا یک زبان برنامه نویسی است که در ابتدا توسط جیمز گاسلینک در شرکت سان ( که در حال حاضر قسمتی از شرکت اوراکل است ) توسعه و تولید پیدا کرد و در سال 1995 ارائه شد ،شکل و سینتکس دستور ها از زبان های سی و سی پلاس پلاس گرفته شد و رشد داده شد ولی تفاوت های عمده ای در مدل شی گرایی ارائه شده و همچنین دسترسی های محدود تر شده به امکانات سطح پایین مثل رم و هارد و .. داره .

به چه دردی می خوره ؟
به همه درد ، شما میتونید با استفاده از جاوا برنامه ای برای کنسول خط فرمان , محیط دسکتاپ , دستگاه های جیبی و دستی مثل موبایل و تبلت  و همچنین برای وب برنامه بنویسید .
پس واقعا زبون کاملیه البته باید بدونید هر قسمتییش واسه خودش دنیایی داره ولی اگه علاقه داشته باشید می تونید همه بخش هارو امتحان کنید .

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

چه بخشایی داره هر کدوم به چه کاری می آیند ؟

در حال حاضر میشه برنامه ها و SDK  های جاوا رو به 4 دسته تقسیم کرد که این دسته بندی بر اساس کاربرد نرم افزار هاست که به صورت زیره :

  • Java Micro Edition  یا همون JavaME
    برای برنامه نویسی دستگاه های موبایل و دستی  به کار میره
  • Java Standard Edition یا همون JavaSE
    برای برنامه نویسی برنامه های کنسول و دسکتاپ ازش استاده میشه البته باهاش میشه به سختی اپلیکیشن وب  هم تولید کرد.
  • JavaFX
    برای تولید برنامه هایی که بیشتر با اینترنت سرو کار دارند هستش ، قابلیت تولید برنامه هایی که روی موبایل , دسکتاپ و مرورگر رو داره ، کلا یه چیزی تو مایه های ادوبی ایر هست اگه میشناسید .
  • Java Enterprise Edition  یا همون Java EE
    اصل داستان جاوا به نظر من همین نسخه سازمانی جاوا هستش  که باهاش میشه برنامه های بزرگ ، سایت های بزرگ و سیستم های توزیع شده تولید کرد .

هزینه تولید برنامه توش زیاده ؟
نمیشه درست پاسخ داد ، قاعدتا اگه بخواهید باهاش سایت راه بندازید نیازمند استفاده از یک سرور یا سرور مجازی رو داره که هزینیش می تونه از وب هاست های اشتراکی بالا تر باشه ولی خوب پروژه تون باید این قدر بزرگ باشه که برید طرف جاوا وگرنه نمی ارزه!

میشه باهاش سایت ساخت ؟
بله ، تکنولوژی هایی مثل Java Server Faces  و Java Server Pages  برای همین کارند البته کتابخانه های دیگه ای هستند که باهاشون میشه سایت ساخت مثل Google Web Toolkit که همگی روی بستر جاوا هستند.

می ارزه از زبان هایی مثل PHP  یا .NET  گذشت و جاوا یاد گرفت ؟
صد درصد باید وارد دنیای جاوا شید اگه می خواهید برنامه نویسی حرفه ای رو دنبال کنید ، به محض وارد شدن لذت خواهید برد.

بازار کارش چه طوره ؟
این طوری که من دیدم خوب میشه ازش پول در آورد اگه حرفه باشید ( یه سر به ایران تلنت بزنید ) ولی حرفه شدن توش تجربه می خواد. برنامه نویس هاشم تو ایران کمند و بازار بکری داره!

می گن تولید و دیپلویمنت و به پا کردن نرم افزار پایانی توش سخته ؟
شاید اگه خودتون بخواهید این کارو بکنید این طور باشه ولی ابزار های قدرمندی به وجود اومده که اصلا شما رو با این پیچیدگی ها درگیر نمی کنند مثل نت بینز که کلی داستانه واسه خودش. کلا خیلی از سیستم های اتوماسیون توش بسیار پیشرفته تر از زبان های دیگس و توی تیم هم خیلی راحت می شه باهاش کد زد.

من بیشتر می خوام بدونم چیکار کنم ؟
عزیز دلم یه سر به ویکی پدیا فارسی بزن بعدش به انگلیسیش بزن بعدشم از گوگل استفاده کن ، اگه به جواب نرسیدی خودم اینجام


اپلیکیشن های بزرگ را فقط با جاوا بنویسید!

شاید بد نباشه بدونید برنامه نویسی من وقتی سوم راهنمایی بودم با VB 6  شروع شد ( البته قبلش با کیو بیسیک و لوگو بازی بازی می کردم ) و در دوران دبیرستان بود که با سی آشنا شدم، آن زمان عاشق  اکسپلویت نوشتم بودم  و با کمک دوستانم در تیم آی اچ اس و آشیانه تونسته بودم یه کارایی بکنم ، اعتراف می کنم هیچ کدام از این فعالیت ها را نمیشد برنامه نویسی نامید چون با هیچ روال مهندسی نرم افزاری جور در نمیومد ، من  فقط از زبان های برنامه نویسی برای رسیدن به هدفی کوچک استفاده می کردم و برنامه های من هیچ معماری و استانداردی نداشت ،‌خط به خط می نوشتم تا به یه جایی میرسید به قول اشکان “کثافت می نوشتم “…
فکر می کنم زیاد ازآن زمان نگذشت که با PHP آشنا شدم و به دلیل شبیه بودن سینتکس های PHP به C  شروع به برنامه نویسی وب کردم و خوش حال بودم که توی PHP محدودیت های C وجود نداشت و راحت تر کد می زدم.

همین موقع ها بود که با اشکان آشنا شدم  و با تجربه ای که داشت منو به سمت آبجکتیو نوشتن برد و همکار شدنمون در شرکت باعث شد که بیشتر وقتمو از اشکان یاد بگیرم.به نظر خودم استارت برنامه نویسیم با اشکان زده شد و اون بود که به من مفاهیمی مثل مهندسی نرم افزار و متدولوژی های مختلف و .. را یاد گرفتم. (‌اشکان هم PHP می نوشت و سابقه برنامه نویسی با C++ را داشت)

دوستی به نام آرش داشتم که برنامه نویس جاوا بود و خیلی حالیش بود  ، همیشه یه چیزایی می گفت ( می گه )‌که من نمی فهمیدم و مجبور می شدم کلی سرچ کنم و مطلب بخونم تا یه چیزایی بفهمم … آرش هم خیلی کمکم کرد تا برنامه نویسی آبجکتیو برام جا افتاد و علاقه مند شدم…آرش سال ها تلاش کرد تا منو برنام نویس جاوا کنه … اویل دوران دانشگاه به پیشنهاد آرش کتاب Java The Complete Reference  را با کمک شادی دوستم  از آمازون تهیه کردم ، کتابی حدود 1000 صفحه بود که واقعا خوندش طول کشید ولی خوب کلی یاد گرفتم..

از اون موقع هم PHP ‌نوشتم هم جاوا ولی این زیبایی زبان جاوا کلی محسورم کرده بود… همیشه آرش بهم پیشنهاد می کرد که JavaEE هم مطالعه کنم و تنها به Java SE  اکتفا نکنم که واقعیتش یه مقدار می ترسییدم ،‌چون به نظر خودم خیلی از SE  بلد نبودم و نمی خواستم تا حرفه ای نشدم برم طرف EE ولی خوب من عاشق برنامه نویسی تحت وب بودم و EE  تحت وب واسه خودش سالاری بود 😀
یک بار من و اشکان باهم یه پروژه با نام “گالی” نوشتیم که حجم و اندازه پروژه در حد EE بود ولی ما با SE  انجام دادیم و کلی سختی کشیدیم ( کلی هم یاد گرفتیم ) چون EE  بلد نبودیم کلی پیشرفت پروژه کند بود…(کاش با ای ای می نوشتیم )

تابستان امسال وقت شد تا من Java EE بخوانم و واقعا خوشحالم که این کارو کردم ، معماری و طراحی EE آنقدر کامل و زیباست که همش دارم تعجب می کنم که به چه چیزایی دقت شده …

قبل از اینکه ای ای بخونم فکر می کردم چقدر سخته ولی الان باید بگم این طور نیست شاید ساده تر از SE  هم باشه برای اینکه به همه چیز توش فکر شده و واقعا سرعت توسعه توش خیلی بالا هستش.
واقع از اینکه الآن با جاوا کد می زنم راضی هستم و امیدوارم بتونم اولین اپلیکیشن سازمانیمو هرچه زودتر ارائه بدم

باید بگم اگه خیلی از پروژه  های مشابهو که تو PHP  با صرف زمان زیادی بخواهید بنویسد شاید نوشتنش توی JavaEE بسیار ساده تر و سریع تر باشه دلیلش هم این اینه که جاوا ای ای برای سمت سرور و برای پروژه های بزرگ ساخته شده  و خیلی از مفاهیم واقعا توش وجود داره  همچنین لایه ها واقعا از هم جدا هستند ولی چیزی که مثلا من در یک نوع پیاده سازی معماری MVC در PHP دیدم  این بود که خیلی از لایه ها  توی هم رفته بودند البته شاید این باعث سرعت در پیاده سازی شه ولی مطمئنا در مواقعی که احتیاج به گسترش نرم افزار هست مشکل ایجاد می کنه. درسته که PHP  هم بسیار پیشرفت کرده ولی در پروژه های بزرگ تنها از JavaEE  استفاده کنید …

جاوا  با کمک ابزار های توسعه قوی مثل نت بینز و اکلایپس  میتونه سرعت توسعه رو خیلی بالا ببره ،‌فیلم هایی هست که بعدا در تصدیق این موضوع بهشون اشاره می کنم .

پیشنهاد می کنم اگه هدفتون از برنامه نویسی تولید برنامه های بزرگ ،‌قابل گسترش با کاربران زیاد هستش حتما یادگیری جاوا رو در کنار مطالعاتتون قرار بدید یه روزی می رسه که دیگه غیر از جاوا کد نمیزنید. ولی یادتون نره در پروژه های کوچک امکانش هست که استفاده از جاوا پیشرفت پروژه کند بشه ،‌هزینه تولید و Deploy کردن بالا بره ،‌تهیه سرور براش مشکل و هزینه بر بشه پس زیادم افراطی نباشیم و برای ساخت پروژه های سبک به زبان هایی که توسعه ارزان تر و سریعتر دارند استفاده کنید
این همه گفتیم پروژه ” کوچک ” و “بزرگ” حالا به نظرتون چه پروژه ای بزرگه چه پروژه ای کوچک ؟