برنامه نویسی وب

بسم الله الرّحمن الرّحیم

اوّلین مقدّمه ی برنامه نویسی حوصله یا علاقه است اگر انگیزه و لذّت بردن از حل کردن مشکل های پیاپی برنامه نویسی هم باشد که دیگر عالی است!


امّا از این که بگذریم  مقدّمات فنی لازم برای asp.net برنامه ای به نام Visual Studio است که ورژن های مختلفی دارد.

مورد های دیگری هم هست مثلاً دانش ابتدایی شبکه های کامپیوتری (در حد دونستن این که آی پی و پکت و Http چی هست) و یک انگلیسی دست و پا شکسته هم برای خواندن منابع دست اوّل که همشون انگلیسین!


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

این چهار قسمت را ببینید:


قسمت اوّل: فرهنگ واژگان شبکه

قسمت دوم: آشنایی با مدل OSI

قسمت سوم: آشنایی با کابل های شبکه (برای برنامه نویسی وب خیلی ضروری نیست!)

قسمت چهارم: آشنایی با تجهیزات شبکه (بازم برای برنامه نویسی وب خیلی ضروری نیست!)

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ مرداد ۹۴ ، ۱۲:۳۶
محمد حقیقت

اگر تصمیم قاطعانه دارید برنامه نویسی وب رو شروع کنید و از این آدمای بی قرار و دنبال آموزش و برنامه نویسی هستید این مطلب و جلسه دوم یکم تعریف های اوّلیّه داره و ممکنه کسلتون کنه امّا قول می دهم اگر پای کار باشید جلسه های بعدی بحث قشنگ و قشنگ تر میشه پس لطفاً زود قضاوت نکنید!


توی این مجموعه سعی کرده ام کمی (بعضی جا ها بیش از کمی!) از زبان محاوره استفاده کنم در زبان فارسی 3 نوشته اند در مطالب نوشتاری نباید از محاوره استفاده کرد و غلطه ولی خُب کتاب ها و مقالات برنامه نویسی یک ذرّه کسل کننده هستند برای همین من از این زبان استفاده کردم تا شاید در راغب تر کردن بعضی ها تاثیری داشته باشه!


بریم سر اصل مطلب! برنامه نویسی وب چیست؟

وای دوباره تعریف کردن مفاهیم بدیهی که نمی دونیم چطوری تعریفشون کنیم! مثل تعریف نقطه و ... ببین اگر حوصله داری برو به:

https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D8%B3%D8%B9%D9%87_%D9%88%D8%A8


اگر بخواهم روند کاری که ما انجام می دهیم را به زبان ساده بگویم ما یک سرور (Server) داریم توش اطلاعات و کد ها هستند یک کلاینت (Client) هم داریم حالا می خواهیم این اطلاعات را با یک سری برنامه نویسی و سایر چیز ها ببریم روی مرور گر کلاینت نشان بدهیم همین!


اطلاعات معمولاً توی پایگاه داده هستند پایگاه داده ها هم چند تا مدل دارند و معروف ترین هاشون هم MySQL و SQL Server هستند.

بعد اون اطلاعات را با برنامه نویسی می کشیم بیرون میگذاریم توی یک قالب زیبا می فرستیم برای مرور گرِ کلاینت این کار رو هم برنامه ای به نام WebServer انجام میده یعنی کد های ما را اجرا می کنه بعد می گذاره توی یک قالب (معمولاً صفحه ی HTML) و کار های اتصال و ... که مربوط به شبکه میشه را در مورد کلاینت اجرا می کنه داده ها را بخش بندی می کنه میریزه توی Packet ها می فرسته برای کلاینت


اون طرف هم مرورگر کلاینت (منظورم همان گوگل کروم یا فایرفاکس، ... است)  این ها را دریافت می کنه کد های HTML را به اشکالی که روی صفحه ی نمایش نشان داده می شوند تبدیل می کنه به ما نشون میده


در مراحل برنامه نویسی وب سرور و کلاینت هر دو روی کامپیوتر برنامه نویس اجرا می شوند یعنی شما برنامه رو می نویسی مثلاً توی ویژوال استادیو بعد برنامه می ره توی وب سرور که روی کامپیوتر خودته (برنامه نویس) و بعد هم نتیجه میاد توی مرورگر خودت (برنامه نویس)

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

مثلاً وقتی یک سایتِ ثبت نام کوچک برای یک مدرسه یا یک مسابقه ایجاد می شود خوب میریم از یکی از این شرکت های هاست یک سرور مشترک (Shared Host) می گیریم اون ها هم یک سرور را به چندین نفر همزمان اجرا می دهند! ما هم که پردازش زیادی نداریم پس سرور مشترک هم کارمون رو راه می اندازه تازه پول کمتری هم می دهیم.


امّا این برنامه نویسی وب می تونه برای پروژه های بسیار بزرگ هم باشه مثلاً همین سایت gmail.com یا sanjesh.org خیلی کاربر دارند و باید روی سرور های بزرگ اجرا بشوند.


می رویم سر پلتفرم و زبان برنامه نویسی! سایت های ایرانی دو دسته هستند (البته اکثر سایت های دنیا هم توی یکی از این دو دسته قرار می گیرند)

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

توصیه می کنیم اگر تازه شروع می کنید سراغ این پلتفرم بروید و از آموزش های این پلتفرم استفاده کنید، سایت رسمی جنگو که شامل آموزش هایی نیز می باشد:

https://www.djangoproject.com/


دسته اوّل php و دسته دوم asp.net

 پی اچ پی Open Source است هم روی لینوکس و هم ویندوز اجرا می شود راه اندازی آن ساده است ولی برنامه نویسی آن ظاهراً سخت تر است (ظاهراً را بخاطر این گفتم که من php کار نکرده ام)

ای اس پی دات نت توسّط مایکروسافت ایجاد شده است و Open Source نیست امّا توی این چند سال با اضافه شدن nuget به آن بخش بزرگی از API های آن Open Source شده اند امّا خودش هنوز متن باز نیست راه اندازی آن نیاز به نصب ویژوال استادیو برای برنامه نویسی است و برای سرور هم باید حتماً روی سرور ویندوز نصب شود که هاست های ویندوز هم همیشه یکم از لینوکسی های مشابه گران تر هستند امّا برنامه نویسی باهاش آسان تره و مشکلات اعصاب خوردکنش کم است. (البته من چون پی اچ پی کار نکرده ام نمی دونم از پی اچ پی بهتره یا نه)


به نظر من اگر آدم خفن (پیشرفته و اهل دردسر و خوره کار های سطح بالا مثل کانفیگ های سخت لینوکس)  هستید بروید پی اچ پی یاد بگیرید امّا اگر می خواهید یک شروع داشته باشید ای اس پی دات نت خوب است.

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

من چند وقتی هست که ای اس پی دات نت کار کردم و به نظر من در کل خیلی خوبه و برای شروع فوق العاده خوبه حتی دوستانی بوده اند که با asp.net شروع کرده اند و بعد که اصول برنامه نویسی را یادگرفته اند رفتند سراغ پی اچ پی من هم فکر کنم اگر این کار را کنید بهتر باشد.

لازم به ذکر است (خیلی رسمی شد!) این جلسات راجع به asp.net هستند.

راستی php خیلی شبیه زبان سی است امّا ای اس پی دات نت را با دو زبان می توان نوشت: C# , Visual Basic نکته بسیار خوب در مورد ای اس پی دات نت این است که شما می توانید یک سری از توابع به زبان ویژوال بیسیک را در یک وب سایت سی شارپ به کار ببرید و امکان استفاده از دو زبان در یک وبسایت فوق العاده است!

برای این که میگم برنامه نویسی و کار کردن با ای اس پی دات راحت است چند تا مثال می زنم:

اوّل: فرض کنید یک سایت نوشتید حالا کاربر هاش زیاد شده اند می خواهید محتوا کش (cache) بشود تا سرعت بالاتر برود خوب توی لینوکس من دقیقاً نمی دونم چکار می کنند امّا خوب یک چیز هایی راجع به کانفیگ های پیچیده برای کش و مهاجرت از apache به nginx شنیدم امّا در ای اس پی دات نت هیچ کاری نمی خواد بکنید! با افزایش پردازش ها کش و ... همه چیز به صورت خودکار انجام می شود!

دوم: امنیت! خیلی وقت ها کسایی که با نوشتن یک سایت شروع می کنند اطلاعات زیادی راجع به حملات SQL injection و XSS ندارند و طرز دفاع در برابر این حملات را نیز نمی دانند امّا ای اس پی دات نت به طور خودکار از سایت دفاع می کند و نیاز نیست برنامه نویس اطلاعاتی از این حملات داشته باشد!

من خودم یک سایت نوشتم بعد بهش حمله ی SQL injection شد! وقتی حمله دفع شد تازه من فهمیدم حمله شده و مهاجمی می خواسته فلان کد ها را روی پایگاه داده اجرا کنه!


خوب دیگه برای جلسه یک بسه!

برید جلسه دو!

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ مرداد ۹۴ ، ۱۲:۲۵
محمد حقیقت

همه چیز از یک روز در مدرسه شروع شد...

زنگ تفریح بود توی اتاق کامپیوتر دبیرستان با هزار زحمت یک برنامه ی Windows Forms Application آماده کرده بودیم که از طریق سوکت در دات نت به سرور وصل می شد (تازه سرورش هم کلی دردسر داشت!) بعد یک فرمان را می فرستاد و  نتیجه را دریافت می کرد تازه بعضی وقت ها هم همین طوری ارور Exception:Object reference not set to an instance of an object پیش میامد!

یک دفعه یکی از بچه های اهل کامپیوتر (مهدی رفعت جاه) بزرگتر (دو سال از ما بزرگ تر بود کنکوری 92) گفت این چه کاریه؟! برید از IIS و Asp.net استفاده کنید من هم توی دلم گفتم "وای یک زبان برنامه نویسی جدید!" ولی اشتباه می کردم خیلی ساده تر از چیزی بود که فکر می کردم.

بعد سعی کردم قانعش کنم ما سراغ یک پلتفرم جدید نمی رویم امّا او مصر بود و همان جا توی یکی از کامپیوتر ها Visual Studio را باز کرد و زد Create new website همان وقت نشانم داد و کمی توضیح داد و من هم همان جا فهمیدم که این هیچ کدوم از دردسر های برنامه نویسی شبکه را نداره اصلاً Handshake ها را نمی نویسیم و ...

گفتم "آقا ما رفتیم تو کارش"! و شروع شد...

با یک asp.net webforms vb شروع شد و ادامه پیدا کرد رسید به جاهای مختلفی و هنوز هم ادامه دارد...


جا دارد این جا از آقای مهدی رفعت جاه تشکّر کنم و همین طور از آقای علی عسگری که همراهی های ایشان تأثیر زیادی در ادامه ی مسیر داشت. ما دو نفری وارد این مسیر شدیم ...

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ مرداد ۹۴ ، ۱۲:۲۴
محمد حقیقت