post

مقایسه React native و PhoneGap

React Native VS Phonegap

React native و Phonegap برای ساخت اپلیکیشن موبایل با استفاده از javascript دو رویکرد کاملاً متفاوت دارند.

React native بر مبنای یک پل (bridge) مابین پلتفرم native و JS طراحی شده است، این مکانیزم اجازه می دهد که به جای webview کامپوننت های واقعاً native رندر شوند. این مساله موجب میشود که امکانات بسیار بیشتری برای برنامه نویسی فراهم شود چرا که با استفاده از bridge به بخش بزرگی از API های Android و یا IOS دسترسی داریم. این مکانیزم تفاوت میان اپلیکیشن های native و JS را کم کرده و مزایای بزرگی ایجاد می کند:

  • اپلیکیشن های تولید شده سریعتر و بهینه تر هستند چرا که به جای webview کامپوننت های native را رندر می کنند.
  • اپلیکیشن تولید شده بیش از آنکه شبیه به یک اپلیکیشن تحت وب ریسپانسیو باشد شباهت زیادی به native app خواهد داشت

برخی از معایب

  • شما باید از React استفاده کنید
  • شما نمی توانید از HTML استفاده کنید بلکه باید از native componentها استفاده کنید
  • از آنجا که این تکنولوژی بر اساس bridge طراحی شده است، لذا شما باید به ازای هر پلتفرم یک اپلیکیشن بنویسید (برخی از کامپوننت ها مختص به یک پلتفرم هستند)

در مقابل PhoneGap/Cordova مکانیزم متفاوتی دارد به نحوی که یک اپلیکیشن HTML/CSS/JS را در یک webview رندر می کند. با این روش شما این امکان را خواهید داشت که از هر فریم ورک و یا کتابخانه JS برای ساخت اپلیکیشن خود بهره ببرید. همچنین شما قادر خواهید بود به کامپوننت های دستگاه خود با استفاده از navigator API دسترسی داشته باشید.

مزایای اصلی

  • استفاده از هر فریم ورک و یا کتابخانه ی دلخواه
  • یک بار نوشتن اپلیکیشن و استفاده از آن بر روی همه پلتفرم ها

معایب:

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

در نهایت می توان اینگونه نتیجه گرفت که React native برای افرادی که تجربه و دانش استفاده از React را دارند یک انتخاب مناسب می باشد. ولی برای افراد ناآشنا با آن PhoneGap انتخاب مناسب تری خواهد بود.

post

JAVA vs Python

Pythonدر مقابل JAVA:

Duck Typing, Parsing on whitespace and other cool differences

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

بزرگترین شباهت های آنها یکی طراحی شیء گرا در آنها می باشد به نحوی که هر دو زبان جمله ی "(almost) everything is an object" را در پس طراحی خود دارند، و دوم cross-platform بودنشان می باشد که این موضوع شامل مواردی از قبیل immutable strings و کتابخانه های استاندارد deep relative می باشد.

همچنین تفاوت های بزرگی میان این دو زبان وجود دارد. در سطح community جاوا همواره از یک اسپانسر مالی بزرگ بهره مند بوده است در حالی که پشتیبانی پایتون بیشتر به صورت توزیع شده می باشد. از نظر Syntax نیز هر چند هر دو زبان در خانواده Algol-like می گنجند ولی Syntax پایتون بر پایه Whitespace می باشد در حالی که جاوا به مانند زبان های خانواهد C از پرانتزها و سمی کالن ها استفاده می کند.

سختی کار در درک whitespace باعث شده برخی از برنامه نویسان از پایتون صرف نظر کنند، مثل برنامه نویسانی که به استفاده از ابزارهای مبتنی بر SGML عادت دارند. ولی استفاده از whitespace فی نفسه بد نیست و با استفاده از آن و غلبه بر عادت های قبلی برخی از افراد ادعا می کنند که این روش طبیعی تر و فطری تر نیز می باشد.

هر دو زبان با عمل کامپایل به کد میانی bytecode ترجمه می شوند که بر روی ماشین های مجازی قابل اجرا می باشد. اما نکته اینجاست که پایتون به صورت خودکار و در زمان اجرا و اصطلاحاً به صورت Interpreter این کار را انجام می دهد و این در حالیست که جاوا یک برنامه مجزا به نام javac را برای این کار در نظر گرفته است.

یک تفاوت کلیدی: Dock Typing

بزرگ ترین تفاوت میان پایتون و جاوا اینست که جاوا Statically Typed بوده ولی پایتون Dynamically Typed می باشد. یعنی در زمان تعریف یک متغیر در پایتون نیاز به مشخص نمودن نوع داده آن نخواهیم داشت. هر چند پایتون نسبت به نوع متغیر ها حساس می باشد ولی تعیین نوع متغیر را به زمانی موکول می کند که این کار را واجب بداند یعنی زمانی که یک عملگر بر روی متغیر اعمال می شود و این عملگر خاص یک نوع داده یا کلاس خاص می باشد. پایتون در این زمینه یک جمله جالب دارد: "if it walks like a duck and talks like a duck, it's a duck" Dock Typing باعث می شود کد نویسی در پایتون بسیار ساده شود، خواندن کد نیز نسبتاً راحت خواهد بود ولی تحلیل کد کار دشواری می باشد. کلاس ها در برنامه نویسی شیء گرا معادل مفهوم مدل می باشند ولی این مفهوم یک ساختار ذهنی برای ما می باشد که سعی دارد ذهن ما را به دنیای واقعی نزدیک تر سازد. Dock Typing این کار را به زیبایی انجم می دهد چرا که دیگر نیاز نداریم از نوع یک شیء به دقت آگاه باشیم و فقط کاربرد پذیر بودن شیء است که برای ما جذابیت ایجاد می کند. بعنوان مثال یک تکه سنگ و یا یک چکش در برخی از کاربردها مثل شکستن گردو عملکرد یکسانی دارند.

یک نکته منفی در مورد نداشتن اطلاعات نوع داده

ایراد عدم آگاهی از نوع داده اینست که تحلیل کد دشوار شده و نمی توان فهمید در چه قسمتی از برنامه چه اتفاقی خواهد افتاد به خصوص وقتی که نام گذاری متغیرها به صورت معنادار انجام نشده باشد که معمولاً هم اینگونه است. بعنوان یک مثال افراطی دستور b.polish() مشخص نیست که قرار است چه کاری انجام دهد. در مقابل، جاوا Statically Typed می باشد متغیر ها در زمان کامپایل به انواع داده مقید می شوند. این بدان معناست که بسیاری از خطاهای نوع داده که در زبان پایتون در زمان اجرا رخ می دهند در جاوا در زمان کامپایل و قبل از اجرای برنامه کشف می شوند. و تقید متغیرها به نوع داده هایشان درک انسان و نیز کامپایلر را نسبت به کدها بالا می برد.

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

پایتون کار راه انداز است

پایتون به شما این امکان را می دهد که به سرعت کار خود را انجام دهید چرا که کدنویسی در آن ساده بوده و نیز در فضای وب کدهای آماده زیادی برای استفاده وجود دارد. از طرف دیگر تست های کاربردی نشان داده است که پایتون قابلیت ارائه سرویس ها و اپلیکیشن های بزرگ را دارد. همچنین پایتون این امکان را به شما می دهد که کتابخانه های ریاضی Fortran را در الگوریتم های آماری R به خدمت بگیریم. در آخر باید به این نکته هم اشاره کنیم که یک نسخه از پایتون به نام Jython نیز وجود دارد که به JVM byte-code کامپایل می شود، که به خوبی امکان بهره مندی همزمان از محاسن پایتون و کتابخانه های جاوا را فراهم می سازد.

ارزش یک بار دیدن را برای برنامه نویسان جاوا دارد

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

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


در پایان لازم می دانیم یک دوره آموزشی ساده و با کیفیت پایتون که رایگان نیز می باشد را معرفی کنیم. این دوره آموزشی شامل ویدئو و نیز کنسول آنلاین برنامه نویسی می باشد و از مجموعه دوره های Code School می باشد: https://www.codeschool.com/courses/try-python

post

تغییر آدرس فرستنده در جیمیل

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

  •  ابتدا باید آدرس ایمیل دوم خود را در تنظیمات جیمیل خودتان وارد کنید برای این کار در جیمیل خود وارد تنظیمات شوید:

gmail-panel-1

  •  روی گزینه Accounts and Import کلیک نمایید و در قسمت Send Mail As روی Add another email address that you own کلیک نمایید:
gmail-panel-2
  • در فیلد های Name و Email address به ترتیب اسم و آدرس ایمیل دوم خود را وارد نمایید. (ایمیلی که میخواهید با آن ارسال صورت گیرد) و تیک گزینه Treat as an alias را بزنید و گزینه Next Step را انتخاب نمایید:
gmail-panel-3
  • در صفحه بعد اطلاعات سرور ایمیل شما (از قبیل آدرس سرور و شماره پورت ارسال ایمیل که بر روی سرور ایمیل شما تنظیم شده است) مورد نیاز خواهد بود. از ادمین سرور ایمیل خود بخواهید تا این اطلاعات را برای شما ارسال کند.
آدرس سرور، شماره پورت ارسال ایمیل (که یکی از مقادیر ۵۸۷، ۴۶۵ و یا ۲۵ می باشد)،یوزرنیم و پسوورد خود را وارد کنید و مابقی تنظیمات را به همان حالت باقی بگذارید. یوزرنیم همان آدرس ایمیل شما هست که باید بطور کامل آن را وارد نمایید. و گزینه Add Account را انتخاب نمایید. gmail-panel-4
  • پس از اتمام مراحل، یک ایمیل از طرف گوگل به شما ارسال می شود که حاوی کد تایید (Confirmation code) است با وارد کردن این کد تایید در فیلد خواسته شده ، تنظیمات به اتمام می رسد.تبریک ، در صورت انجام صحیح این مرحله ، از این پس قادر خواهید بود که هنگام ارسال ایمیل در رابط کاربری جیمیل خود ، آدرس فرستنده را به همان ایمیلی که اضافه کردید تغییر دهید.
gmail-panel-5
post

معیارهای موفقیت CRM

CRM مخفف عبارت Customer Relationship Management است و به روش نرم افزاری اطلاق می شود كه به سازمان كمك می كند به شیوه ای سازمان یافته ارتباط با مشتریانش را مدیریت كند. نمونه ساده ای از CRM ، یك بانك اطلاعاتی حاوی اطلاعات مربوط به مشتریان یك سازمان است كه مدیریت و كاركنان فروش یا خدمات سازمان به كمك آن می توانند نیازهای مشتریانشان را با محصولات خود تطبیق دهند، نیازهای خدماتی آنها را یادآور شوند و غیره.

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

● معیارهای موفقیت CRM

عوامل موفقیت یك برنامه CRM در هر سازمان و بازاری، به واسطه قابل دسترس بودن و سطح كیفیت اطلاعات مشتریان تعیین می شود. هر چقدر بیشتر در مورد نیازها، مشكلات، انتظارات و شكایات مشتریان بدانید، بهتر می توانید یك برنامه مدیریت ارتباطات پایدار بسازید.

امروزه برای فعالیت های بازاریابی در هر فعالیت تجاری، نتایج قابل اندازه گیری وجود دارد. برای مثال براساس تحقیقات انجام شده،۶۶ درصد مدیران معتقدند بزرگترین نیاز بازاریابی، تحلیل واقعی بازگشت سرمایه (ROI) است. برخی معیارهای مورد استفاده در سنجش موفقیت CRM عبارتند از:

▪ رضایت مشتری:

افزایش وفاداری مشتری به سازمان را می توان در تكرار خرید در یك دوره زمانی معین و افزایش ضریب نفوذ محصول مشاهده كرد.

▪ منفعت مشتری:

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

▪ سهم بازار:

میزان نفوذ در بازار را می توان به كمك مقایسه عملكرد سازمان نسبت به سایر رقبا سنجید.

▪ تحلیل مالی:

معیارهای مالی كمی برنامه CRM سازمان، مانند هزینه كل مالكیت، بازگشت سرمایه، ارزش فعلی خالص، نرخ بازگشت داخلی و نسبت درآمد به سهم است.

▪ حاشیه درآمد و سود:

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

▪ صرفه جویی در هزینه:

میزان صرفه جویی های ناشی از كنترل بهتر و افزایش كارایی عملیاتی و غیره را می توان سنجید.

از آنجا كه ممكن است این معیارها تصویر كاملی از موفقیت برنامه CRM ارایه نكند، باید یك راهبرد اندازه گیری جامع طراحی كنیم تا ارزیابی مناسب تری نسبت به عملكرد CRM به دست آوریم.

● فرایند و مسیر تكوین CRM موفق:

۱) مرحله اول؛ آگاهی:

اگر سازمان شما به سختی می تواند مشتریان خود را در بیرون سازمان بشناسد، در مرحله اول قرار دارد. چنین سازمانی محصول گراست و دارای نظام ارزیابی و فروش خاصی است. گام بعدی برای چنین سازمانی، تعریف فرایندهای بازاریابی و فروش و تهیه یك بانك اطلاعاتی است.

۲) مرحله دوم؛ تمركز:

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

۳) مرحله سوم؛ رضایتمندی:

در این مرحله سازمان رضایتمندی را اندازه گیری می كند و سعی دارد از رقبای خود پیشی بگیرد. این شركت ها سطح رضایتمندی را به مدل های جبرانی درون سازمانی مرتبط می كنند. گام بعدی برای این سازمان ها، تعریف سیستم های انگیزشی برای تمركز روی مشتریان و ادامه روند بهبود فرایندهای بازاریابی و فروش است.

۴) مرحله چهارم؛ ارزش:

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

۵) مرحله پنجم؛ وفاداری:

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

● پنج اصل برای موفقیت CRM

۱) اصل اول: CRM خرید نرم افزار نیست

همان گونه كه قبلاً نیز اشاره شد،CRM یك راهبرد است كه فناوری، آن را به عمل در آورده است. هیچ فناوری (هر چقدر هم كه پیچیده باشد)، بدون وجود یك راهبرد هدایتگر، نمی تواند موفق باشد. راهبردهای تجاری و فناوری با كمك یكدیگر باعث می شوند برنامه های مشتری مدار، ثمر بخش باشد.

راهبرد CRM نمی تواند مستقل از سایر برنامه های راهبردی سازمان عمل كند و باید همخوان و همسو با سایر اهداف كلان و راهبردهای سازمان باشد. پیش از اجرای هر برنامه CRM ، ابتدا باید نیازهای سازمان و به دنبال آن راهبرد CRM تعریف شوند.

در این زمینه باید همواره در نظر داشت كه مشتریان تنها كسانی هستند كه بهتر از ما سازمان را می شناسند. اگر به درستی از آنها سئوال شود، حرف های زیادی در مورد كارایی و اثربخشی بازاریابی، فروش و خدمات خواهند داشت كه می تواند اثری مستقیم بر روی شیوه اداره سازمان داشته باشد. بنابراین بهتر است سازمان و تجارت خود را براساس مفاهیمی كه مشتریان بیان می كنند، هدایت كنیم. اگر هدف سازمان این است كه در زمان مناسب، پیشنهادی مناسب به مشتری مناسب بدهد، باید نیازهای مشتری را به طور كامل درك كند.

نكته مهم دیگر در تببین راهبرد CRM ، نگرش كل نگر است. سازمان باید نگرش جامع و كل نگر داشته باشد و این نگرش را در عملكرد محدود خود به كار گیرد. سازمان های بزرگ بین المللی باید بتوانند به كمك CRM اطلاعات خود را با مشتریانی كه در محدوده جغرافیایی بزرگی پراكنده هستند، به اشتراك بگذارند. ممكن است سازمان هایی شعب متعددی در شهرهای مختلف داشته باشند، اما همواره باید به خاطر داشت كه مشتری در محدوده جغرافیایی محل سكونتش خرید را انجام می دهد.

همچنین باید به خاطر داشت كه در دنیای امروز، قدرت در حال انتقال از سازمان ها به سمت مصرف كننده نهایی است، یعنی هر چقدر هم كه برنامه CRM برای سازمان مناسب باشد، اما در نهایت مصرف كننده است كه باید كارایی و عملكرد برنامه شما را پذیرفته و از آن رضایت داشته باشد. این نكته به این معناست كه مصرف كننده از قدرت زیادی برای ایجاد تغییر در سازمان شما برخوردار خواهد بود.

۲) اصل دوم: CRM باید با اولویت های تجاری منطبق شود

با هر نوع تغییر در محیط خارجی سازمان ممكن است نیاز به حركت و تغییر در فرایندها و راهبرد درون سازمانی به وجود آید.

سازمان برای تغییر سریع، به زیرساخت های فناوری نیاز دارد. همان گونه كه برای یك مجموعه مبلمان، انعطاف پذیری برای تطبیق با فضاهای مختلف یك امتیاز محسوب می شود، برای سازمان ها نیز توانایی تغییر سریع فرایندها به كمك فناوری های انعطاف پذیر، یك امتیاز رقابتی محسوب می شود.

یك ساختار مناسب CRM باید امكان انتخاب ایجاد كند و برای اینكه برنامه CRM بتواند به قابلیت تغییر سریع و تطبیق با سایر راهبردها و نیازهای مشتری دست پیدا كند، باید دارای معماری و ساختار پایه متناسب باشد.

ز سوی دیگر برای اینكه سازمان بتواند انتخاب و رقابت كند، باید انعطاف پذیر باشد. خدمات به مشتری كلیدی ترین عاملی است كه تفاوت بین سازمان ها را ایجاد می كند. خدمات عالی به مشتری نیازمند یك برنامه CRM سریع و انعطاف پذیر است.

۳) اصل سوم: CRM منافع قابل اندازه گیری به وجود می آورد

اگر سازمان توانایی لازم برای جمع آوری اطلاعات صحیح را نداشته باشد، شناسایی معیارهایی مانند نرخ بازگشت سرمایه، به هدفی متحرك تبدیل خواهد شد كه دستیابی به آن چندان ساده نیست.

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

در این زمینه باید به این نكته توجه داشت كه بازاریابی به كمك فناوری های جدید، كارایی بازاریابی را افزایش خواهد داد. این افزایش كارایی نسبت به روش های سنتی بازاریابی با هزینه ای اندك انجام خواهد شد. CRM ارایه خدمات سریع تر و بهتر را تسهیل می كند، یعنی درآمد بیشتر با هزینه كمتر، ضمن اینكه با ارتقای سطح توقع مشتریان، نیاز به ارایه سریع تر خدمات نیز بیشتر احساس می شود.

۴) اصل چهارم: قیمت و هزینه كل مالكیت را به دقت در نظر داشته باشید

در اغلب سازمان ها معمولاً یك دوره۳ ساله را برای اجرای CRM در نظر می گیرند و نتایج حاصل از اجرای آن نیز پس از راه اندازی قابل مشاهده خواهد بود. از سوی دیگر، بودجه همه سازمان ها محدود است و هزینه راه اندازی CRM هزینه ای نیست كه یك بار انجام شود. حدود۶۰ درصد سرمایه گذاری مورد نیاز CRM ، در سال اول انجام می شود و با توجه به عدم مشاهده نتایج قابل اندازه گیری، این سرمایه گذاری ریسك بزرگی به شمار می آید. بدین ترتیب در طول دوره اجرای CRM باید هزینه كل مالكیت به دقت زیرنظر باشد. بدین منظور باید چهارچوب شفافی برای اندازه گیری نتایج پروژه تعریف شود.

در این زمینه باید در نظر داشت كه اگر در یك سازمان بتوان برنامه CRM ویژه آن نوع سازمان را اجرا كرد، هزینه كل مالكیت كاهش خواهد یافت. یك برنامه CRM كه برای یك سازمان یا صنعت خاص طراحی شده است، حداقل۷۵ درصد نیازهای آن سازمان یا صنعت را برآورده می كند.

۵) اصل پنجم: تجارت شما منحصر به فرد است، پس معیارهای انتخاب نیز همین گونه هستند

CRM می تواند در هر سازمانی متفاوت از سازمان های دیگر باشد. به طور كلی سازمان ها به كمك CRM اطلاعات، افراد و فرایندها را در

بخش هایی مانند فروش، بازاریابی و خدمات (كه با مشتری سر و كار دارند)، به یكدیگر مرتبط می كنند. اما توانایی های مورد نیاز هر سازمان برای پشتیبانی از جریان كار و اهداف تجاری، با سازمان های دیگر تفاوت دارد.

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


منبع: نشریه روش، شماره۹۶ - نوشته: فرهاد صدارت
منبع : ماهنامه نفت پارس

post

آموزش نصب WampServer و WordPress

نصب WampServer

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

آدرس سایت رسمی WampServer عبارت است از:

http://www.wampserver.com

بعد از مراجعه به این آدرس یکی از نسخه های مورد نظرتان را انتخاب و دانلود کنید:

wampsite

اولین توصیه ما این است که آخرین نسخه را انتخاب کنید و توصیه دوم اینکه از نسخه ۶۴ بیتی استفاده نکنید. در زمان نوشتن این مستند مسیر دانلود نسخه مناسب این است:

http://downloads.sourceforge.net/project/wampserver/WampServer%203/WampServer%203.0.0/wampserver3_x86_apache2.4.17_mysql5.7.9_php5.6.15.exe?r=&ts=1466769020&use_mirror=liquidtelecom

بعد از دانلود WampServer باید آن را نصب کنید.

wamp-install

در طول مراحل نصب مسیر نصب از شما سوال می شود که شما می توانید آن را به حالت پیش فرض یعنی c:\wamp قبول کنید.

نصب وردپرس

پس از تکمیل مراحل نصب WampServer نوبت به دانلود و راه اندازی WordPress می رسد.

۱٫ آخرین نسخه وردپرس فارسی را از سایت رسمی ورد پرس که در زیر آمده است دانلود کنید: https://fa.wordpress.org/

wordpress-site

وردپرس به صورت یک فایل zip دانلود می شود که نام این فایل چیزی شبیه به wordpress-4.5.2-fa_IR.zip می باشد. درون این فایل zip یک پوشه به نام wordpress وجود دارد.

۲٫ ابتدا شما باید این فایل zip را از حالت فشرده خارج کنید.

۳٫ سپس پوشه ای که نام آن wordpress است را به site تغییر نام دهید.

۴٫ حالا به مسیر c:\wamp\www رفته و پوشه site را در آن کپی کنید.

۵٫ استارت windows را کلیک کنید و برنامه Start WampServer را اجرا کنید.

۶٫ حالا مرورگر خود را باز کرده و در نوار آدرس آن عبارت زیر را تایپ کنید:

http://localhost/site

۷٫ با این کار شما به صفحه نصب وردپرس وارد می شوید و حالا با طی مراحل نصب ورد پرس یک سایت خواهید داشت که همیشه با طی مراحل ۵ و ۶ به آن دسترسی خواهید داشت.

post

Base 64 چیست و چه کاربردی دارد؟

images

فرض کنید شما یک داده ی باینری دارید و می خواهید آن را در بستر شبکه انتقال دهید. به طور کلی شما این کار را تنها از طریق Stream کردن بیت ها و بایت های خام انجام نخواهید داد. چرا؟ زیرا ابزارهایی برای Stream کردن متن وجود دارد. شما هرگز اطلاع ندارید که برخی از پروتکل ها ممکن است داده های باینری شما را به عنوان کاراکترهای کنترلی تفسیر کنند ( درست به مانند یک مودم) و یا برخی دیگر از پروتکل ها همانند FTP ممکن است تصور کنند که شما یک کاراکتر خاص مانند ending را وارد کرده اید.

mccaffrey-fig3

بنابراین برای مقابله با این مشکلات داده های باینری را به رشته ای از کاراکترها کد گذاری (encode) می کنند. Base64 یکی از انواع این گونه کد گذاری می باشد. چرا Base64؟ زیرا با استفاده از آن شما می توانید همواره بر ۶۴ کاراکتری که در اغلب مجموعه کاراکترها (character set) ارائه می شود حساب کنید و بنابراین از نحوه ی صحیح نمایش داده های خود در سمت گیرنده اطمینان بیشتری کسب کنید.

استفاده از Base64 برای طراحان وب کاربردهای بسیار مفیدی دارد. بعنوان مثال می توان برای جلوگیری از ارسال یک Request اضافه از سمت Client آیکون معروف به Favicon را به جای فایل درون تگ جاسازی نمود که در زیر نمونه آن را می بینیم:

<link href="data:image/png;base64,iVBORw0KGgoAAAANSUhEU. ..." rel="icon" type="image/x-icon">

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

https://www.base64-image.de/  

RunLevel در لینوکس چیست؟

مقدمه:

ابتدا با مقدمه ای در مورد بوت شدن لینوکس آغاز می کنیم.کرنل لینوکس،بلافاصله بعد از بارگذاری،فایل init را در شاخه /sbin/ پیدا می کند و آن را اجرا می کند.این برنامه خود به خود والد(parent) تمام پراسسها می شود.سپس شروع به خواندن فایل /etc/inittab می کند.این فایل اطلاعات لازم را برای آغاز سیستم شامل می شود.(مانند چک کردن فایل سیستم،تخصیص حافظه و …).به طور کلی،این فایل اطلاعات لازم را برای آماده سازی بستر اصلی سیستم را فراهم می آورد.

Run Level چیست؟

پس از این مرحله،init به خواندن فایل ادامه می دهد.در این قسمت ،مشخص می شود که سیستم باید در چه سطح اجرایی(RunLevel) اجرا شود.سطح اجرایی یا Run Level تنظیماتی مشخص از پراسسها (برنامه ها) هستند.هر سیستم یونیکسی ،می تواند در سطوح اجرایی متفاوتی اجرا شود.

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

چند سطح اجرایی در لینوکس وجود دارد؟هر کدام شامل چه تنظیماتی است؟

سطوح اجرایی در فایل /etc/inittab تشریح شده اند.

۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
# Default runlevel. The runlevels are&#58;
# ۰ - halt &#40;Do NOT set initdefault to this&#41;
# ۱ - Single user mode
# ۲ - Multiuser, without NFS
# &#40;The same as 3, if you do not have networking&#41;
# ۳ - Full multiuser mode
# ۴ - unused
# ۵ - X11
# ۶ - reboot &#40;Do NOT set initdefault to this&#41;
#
id&#58;5&#58;initdefault&#58;
&lt;--cut-->

۰:حالت Halt:برای خاموش کردن سیستم به کار می رود.

۱یا S:حالت تک کاربره:این حالت برای کارهای بسیار ضروری به کار می رود.تنها مدیر سیستم می تواند در این حالت وارد شود.موارد استفاده: از این حالت می توان برای نجات سیستم هنگام خراب شدن فایل inittab یا فراموش کردن کلمه عبور استفاده کرد.

۲:چند کاربره(بدون فایل سیستم شبکه):این حالت (در صورتیکه از شبکه استفاده نکنید)همانند حالت ۳ است.

۳:حالت چند کاربره کامل:این حالت،حالت متنی چند کاربره است.از آن می تواند برای تمامی کارهای تحت کنسول استفاده کرد.مثلا مدیران شبکه برای تنظیم سریع و بی دردسر تنظبمات شبکه،از این حالت استفاده می کنند.

۴:استفاده نشده.

۵:حالت گرافیکی(X11):این حالت،برای اجرای محیط گرافیکی است.محیطهایی مانند KDE و GNOME .این حالت برای کارهای خانگی پراستفاده ترین سطح اجرایی است.

۶:reboot:همان طور که مشخص است برای reboot به کار می رود.

نکات:

۱:هرگز از سطوح اجرایی ۱ و ۶ به عنوان سطح اجرایی پیش فرض استفاده نکنید!

۲:برای ورود به سطح اجرایی مورد نظر خود،کافی است در پرامپت GRUB عدد سطح اجرایی را وارد کنید.

۳:برای تعیین سطح اجرایی پیش فرض فایل inittab را باز کنید.

عبارت id:5:initdefault: پیدا کنید.و شماره دلخواه خود را به جای عدد مذکور وارد کنید.


  منبع: http://barnamenevis.org/