PDA

View Full Version : تخصصی متمایز ، این موارد الزامیست ؟



PHPOnline
دوشنبه 25 آذر 1392, 00:25 صبح
برای تبدیل شدن به یک متخصص متمایز در این زمینه دانش هایی مانند تسلط بر سیستم عامل (به خصوص Linux)، تسط بر دیتابیس های مختلف (مانند MySQL، Oracle) برای طراحی، کنترل و نگه داری داده های عظیم، تسلط بر وب سرورهای مخلتف (مانند Apache و nginx و ... )، شناخت تکنولوژی های مختلف و به روز مانند سیستم های Real-Time (مانند APE، Pusher و ... )، اسکریپتینگ های سمت سرور مانند node.js و بسیاری موارد دیگر لازم می باشد .

در برنامه نویسی php چه استفاده ای از لینوکس می شه ؟ کاربرد های لینوکس در برنامه نویسی php چی هست ؟

eshpilen
دوشنبه 25 آذر 1392, 08:01 صبح
PHP توابع زیادی برای ارتباط و استفاده از سیستم عامل داره.
مثلا برای خوندن و دستکاری سیستم فایل (پرمیشن ها و غیره).
توابعی برای اجرای برنامه های خارجی.
مثلا وقتی ffmpeg رو برای تبدیل و تنظیم فایلهای ویدئویی اجرا میکنید، خب دارید با محیط و برنامه های لینوکس کار میکنید دیگه (بخصوص مسلط بودن به خط فرمان لینوکس در اینطور موارد خیلی کارگشا است).
نکته و ارتباطهای ظریف با سیستم عامل کم پیش نمیاد. بالاخره اگر نگیم لازمه، ولی خیلی مفیده که برنامه نویس درمورد محیط اجرای برنامش هم دانش و بینش داشته باشه.
گاهی پیش میاد که حتی برنامهء وبی که روی ویندوز نوشته شده یا روی لوکال، بعد روی سرور که میره درست کار نمیکنه، و مشکل ممکنه با ساختار سیستم عامل هم مرتبط باشه. اونوقت اگر لینوکس بلد نباشی، دچار درماندگی و احساس بدی میشی، و نیاز به کمک دیگران پیدا میکنی؛ این باعث از دست رفتن روحیه، زمان، و انرژی میشه، و شاید نهایت هم کسی پیدا نشه که بجای شما منشاء مشکل رو پیدا و حلش کنه براتون.

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

eshpilen
دوشنبه 25 آذر 1392, 08:24 صبح
اصلا دانش حدی نداره. هرچی بیشتر بهتر. هرچی عمق و گسترهء اون رو افزایش بدید بهتره.
ولی خب اینقدر حجم و پیچیدگی زیاده که اگر مثل من زندگی و هدف غیرعادی و فرصت و فراغت زیاد نداشته باشید، باید دست به اولویت بندی و انتخاب بزنید.
از من بپرسی میگم حتی علم فیزیک و شیمی و زیست شناسی هم میتونه در برنامه نویسی مفید واقع بشه یا ربط پیدا کنه.
چیز عجیبی نیست!
مثلا یه فرایند و پدیده ای در زیست شناسی هست، شما اون رو میدونی و خوب درک کردی، فردا ممکنه از همون ایده بگیری و یک الگوریتم و سیستم مجازی طراحی کنی که بر اساس همون پدیده/اصول کار میکنه.
به همین سادگی!
ضمنا این مسائل فرضی نیستن و تاحالا بارها درمورد چنین چیزهایی خوندیم.
میشه گفت در جهان همه چیز به همه ربط دارن. حالا کم یا بیش. دور یا نزدیک. مستقیم یا غیرمستقیم.
بعد چطور میشه که سیستم عامل که بستر و محیط اجرای برنامه های ماست، با برنامه نویسی ارتباط نزدیک نداشته باشه؟
حتی در زبانهایی که سعی کردن مستقل از پلتفرم باشن، مثلا جاوا، بارها شده که محیط اجرا و بقیهء اجزاء روی اون تاثیر گذاشته و مثلا یه آدم باهوش و یه هکری اومده از توی همون یه ضعف و حفره ای درآورده.