آموزش پرل ( مقدمات ) - قسمت اول

شروع موضوع توسط mehdvirus ‏16 ژانویه 2006 در انجمن برنامه‌نویسی با Python/Perl/Ruby

  1. mehdvirus

    mehdvirus Member

    ارسال‌ها:
    46
    تشکر شده:
    46
    امتیاز دستاورد:
    6
    سلام

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

    در اين قسمت ياد كيگيريد كه چجوري برنامه هاي سي جي اي خود رو نصب كنيد و اطلاعاتي از چگونگي اجرا شدن برنامه پيدا ميكنيد
    CGI مخفف (Commin Getway Interface) هستش .
    درواقع برنامه نويسي CGI كار طراحي و نوشتن رو برعهده داره كه معمولا از طريق خط فرمان يك صفحه وب شروع به كار ميكنه .مثل فرم ها در اچ تي ام ال .
    فرم هاي اچ تي ام ال روشي است براي ارسال اطلاعات دروب و بخاطر سهولت تنظيمات كاربري يك روش متداول در اومده و شما ميتونيد
    بسادگي با تگ هاي <form> , <input> چك باكس ، تكست باكس ؛ ليست باكس ، منو هاي كشويي و غيره بسازيد
    يك برنامه سي جي آي مجبور نيست از طريق يه صفحه وب اجرا بشه ميتونه بعنوان نتيجه يك دستور SSI
    بكار بره (Server Side Include) }در قسمت هاي بعدي كار كردن با اين دستورات رو ياد ميگيريم{

    حتي ميتونيد يك برنامه سي جي اي رو از طريق خط فرمان هم اجرا كنيد اما ممكنه در اينصورت اونطوري كه شما ميخوايد عمل نكنه
    سروري كه برنامه شما روي اون قرار داره براي برنامه شما يك اطلاعات خاصي رو ميفرسته و همينطور برنامه شما اطلاعاتي رو بر ميگردونه.
    و قبل از اينكه برنامه شما شروع به كار كنه سرور يك محيط خاصي رو براي برنامه شما آماده ميكنه و اون محيط
    درخواست هاي HTTP (HyperText Transfer Protocol) رو ترجمه ميكنه و در اختيار برنامه شما ميزاره و برنامه شما ميتونه براي اطلاعات
    متغيير ها از اون استفاده كنه .

    در مرحله بعد سرور تلاش ميكنه بفهمه نوع فايلي كه توسط برنامه صدا زده شده چيه و عكس العملي كه نسبت به نوع فايل نشون ميده متفاوت
    خواهد بود يعني بر حسب فرمت فايل تصميم ميگيره كه اگه فايل حاوي فرمان هاي SSI بود دستورات رو به پرل بفرسته و اگر نه يه جواب
    اچ تي تي پي ارسال كنه ، يك فايل اچ تي ام ال برگردونه .
    فايل هاي SSI همانند فايل اچ تي ام ال هست و تنها تفاوتي كه دارند نوع برخورد سرور با اونهاست يعني سرور بايد خط به خط دنبال
    فرمان هاي SSI بگرده و اگه يه فرمان اس اس آي پيدا كرد سعي ميكنه اونو اجرا كنه و محتوياتي كه از اجراي دستورات برگشت داده
    ميشه در فايل اچ تي ام ال قرار ميگيره.فرمت فايل هاي اس اس اي shtml هستش .
    بعد از اينكه سرور برنامه شما رو اجرا كرد برنامه شما اطلاعاتي رو به سرور ميده اطلاعات هدر و كمي تگ اچ تي ام ال رو برميگردونه اگه برنامه
    شما اچ تي ام ال برگردونه يه كد مثل Content-Type: text/html
    رو به سرور ميفرسته و همين اطلاعات برا سرور كافيه تا جواب هاي ازسالي رو تشخيص بده .

    دايناميك بودن صفحات وب :

    شما نميتونيد به تنهايي و با اچ تي ام ال براي مثال يك فروشگاه رو طراحي كنيد و فقط ميتونيد شكل ظاهريش رو
    درست كنيد و اينجاست كه برنامه نويسي سي جي اي به كمك مياد .
    حالا نقش برنامه سي جي اي شما در صفحات وب چيه ؟ خوب برنامه شما ميتونه هرچيزي كه شما تصور كنيد باشه و اين چيزيه كه برنامه نويسي
    رو خيلي لذت بخش ميكنه برنامه شما بايد اطلاعات ارسالي رو دريافت كنه و اطلاعاتي رو هم بفرسته و درواقع برنامه شما هركاري كه بخواهد ميتونه بكنه.

    ولي چرا پرل؟

    خوب نميشه اگه برناممون رو با يه زبوني بنويسيم كه احتياج به كامپايل نداره ، با دستورات لينك دهدنه عذاب آور درگير نشيم ،
    خط به خط تفسير نشه دستوراتمون ، فقط بنويس و اون آماده استفاده هستش ، نظتون درباره يه زباني كه مجاني هست چيه ؟
    زباني كه روي هر سيستم عاملي اجرا ميشه ويندوز يا يونيكس يا مك ، ويك زباني مثل سي كه قدرت بسياري داره ؟
    زباني كه كلي مقاله و مطلب در باره اون وجود داره , اين يه تبليغات درباره پرل نبود ! نه من علاقه زيادي به پرل ندارم
    ولي پرل سريعترين زبان در بين زبان هاي اسكريپتي هست اگه شنيديد كه پرل كند هست يا امنيتش پايينه رقيبانش بخاطر پايين آوردن محبوبيتش اينكارو كردن
    . درواقع پرل برا اين ساخته شده كه با متن كار كنه و گزارش دهي كنه و كنترل فايل هارو داشته باشه .
    علاوه بر اينها پرل يك ساختمان داده دوست داشتني به اسم associative arrayداره كه ميتونيد براي كنترل ديتابيس ازش استفاده كنيد .
    نويسندگان پرل زماني كه پرل رو مينوشتن به فكر امنيتش هم بودن و به همين خاطر يك امكان جالب به پرل اضافه كردن به اسم data-flow tracing
    اين امكان به شما اجازه ميده بفهميد كدوم قسمت از كدتون امنيت نداره و بعضي وقتها قبل از اينكه امنيت پايين بره به شما اطلاع ميده .
    قسمت هاي ديگري هم در پرل وجود داره كه در اين سري آموزشي نميتونيم بگيم و درواقع ميخوايم برنامه نويسي سي جي آي رو در پرل ياد بگيريم .
    اين سري آموزشي براي كساني كه تا به حال با پرل كار نكردن يا تازه برنامه نويسي رو يادگرفتن خيلي جالب خواهد بود چون هم پرل رو ياد خواهيد
    گرفت هم سي و با يونيكس هم اشنا خواهيد شد .

    پوشه هاي روي سرور شما :

    در سرور شما دو نوع پوشه وجود خواهد داشت يكي DocumentRoot وServer Root كه شما قادر به تغيير ان نيستيد و اطلاعات برنامه شما از قبيل
    مسير برنامه و كارهايي كه اجازه انجام دادن رو برنامتون داره در اينجا ذخيره ميشه در داخل اين پوشه دو دايركتوري ديگر هم وجود داره به اسم هاي log , conf
    در داخل دايركتوري لاگ همه چيز ثبت ميشه اعم از دستورات اجرا شده توسط برنامه شما دستورات اس اس اي و كدهاي اچ تي ام ال كه باعث ايجاد خطا شده اند
    .و اطلاعات مربوط به بازديدكنندگان سايت شما . و در داخل پوشه conf دو فايل به اسم هاي access.conf , srm.conf وجود داره كه در اكسس كانف مربوط ميشه
    به تعيين دسترسي هاي مربوط به پوشه ها توجه كنيد كه هر تغييري كه در اين فايل ايجاد كنيد لازم هست كه سرورتون رو ريستارت كنيد
    فايل srm.conf سرور رو بعد از اينكه راه اندازي شد كنترل ميكنه علاوه بر اون مسير Document Root رو هم داخلش داره و همينطور دستوراتي كه به سرور ميگه
    كجا بايد اسكريپت هاي سي جي اي رو اجرا كنه
    اين فايل براي فعال كردن دستورات اس اس اي بكار ميره و فرمت فايل هايي كه در مايم تايپ
    (MIME TYPe ) تعريف نشده اند رو به سرور گزارش ميده
    اما پوشه Document Root درواقع شما در اين قسمت كار خواهيد كرد و فايلهايتان رو در اين پوشه قرار خواهيد داد و ميتونيد هرچقدر كه دلتون ميخواد توش پوشه بسازيد

    بعد از اينكه كار با پوشه ها رو ياد گرفتيد نوبت ميرسه به فايل ها :
    سه نوع دسترسي داريم : خواندن ، نوشتن ، اجرا كردن
    نكته : محتويات فايل سي جي اي ما هم از نوع متن و هم اجرا كردني خواهد بود .
    براي تعيين دسترسي از دستور chmod (change file mode) استفاده ميكنيم
    و اين دستور دو پارامتر ميگيره يكي شماره دسترسي و يكي نام فايلي كه ميخوايم دسترسي بديم بهش
    شماره اي كه اختصاص ميديم هم از سه عدد تشكيل شده كه هركدوم براي تعيين دسترسي نوع كاربر هست اولين عدد مربوط به دسترسي ادمين هست
    ومين عدد براي دسترسي گروه هست و سومين عدد براي همه كاربران هست . و هركدوم از عدد ها يا خواندي بودن يا نوشتني بودن يا اجرايي بودن رو مشخص ميكنه .
    خواندي بودن عدد 4 است ، نوشتني بودن عدد 2 است و اجرايي بودن عدد 1 است .
    نكته : اگه ميخوايد به يك فايل هم قابليت نوشتن بودن و هم خواندني بودن رو بديد بنويسيد 6 (4+2) و از عدد 7 براي دادن دسترسي كامل به همه استفاده كنيد.
    براي مثال با دستور
    Chmode 751 filename
    شما ميتونيد ليستي از دستورات رو ببينيد

    مفهوم عددها :

    دسترسي خواندني، نوشتني،اجرايي براي هر سه گره 777
    دسترسي كل براي ادمين و خواندني واجرايي براي گروه و كاربران 755
    دسترسي نوشتني و خواندني براي ادمين و فقط خواندني براي گروه و كاربران 644
    دسترسي خواندني و نوشتني براي همه ، سطح امنيت رو پايين مياره 666

    نكته : منظور از گروه ها : Owner,Group,Web users
    اگه ميخوايد به كاربران اجازه بتونن بخونن ولي به شرطي كه مسير فايل رو بدونن فقط دسترسي خواندني بديد در اين صورت ديگه نميتونن با دادن مسير پوشه
    همه فايل هارو ببينن.

    انواع سرور ها :


    MS-Based Server
    CERN Server
    ncSA Server
    The NetScape Server


    كه در اين ميان سرور هاي ncSA سريعتر هستن و ميشه گفت اينترنت به همين سرور ها متكي است
    :wink:
     
    آخرین ویرایش: ‏18 ژانویه 2006
    نوشته شده توسط mehdvirus در ‏16 ژانویه 2006
    meraj-persian، farik، Amir.Mansoury و 2 نفر دیگر از این ارسال تشکر کرده اند.
  2. mehdvirus

    mehdvirus Member

    ارسال‌ها:
    46
    تشکر شده:
    46
    امتیاز دستاورد:
    6
    حسابي خستم كرد و ميشه گفت سخت بود
    خيلي از جاهاشو بخاطر اينكه حوصله سر نره ننوشتم و سعي كردم فقط مطالب مفيد رو بنويسم
    و فكر ميكنم مفيد باشه چون بعضي چيزارو كه اينجا هست شايد قبلا اطلاعات كمي دربارش داشتيد
    بقيشم بعدا ميگم
     
    نوشته شده توسط mehdvirus در ‏16 ژانویه 2006
    farik و Amir.Mansoury از این پست تشکر کرده اند.
  3. oxygenws

    oxygenws Active Member

    ارسال‌ها:
    4,969
    تشکر شده:
    487
    امتیاز دستاورد:
    36
    ممنون :)
     
    نوشته شده توسط oxygenws در ‏16 ژانویه 2006
    Amir.Mansoury از این پست تشکر کرده است.
  4. mehdvirus

    mehdvirus Member

    ارسال‌ها:
    46
    تشکر شده:
    46
    امتیاز دستاورد:
    6
    فكر كنم كارم بيهوده بود[​IMG]
     
    نوشته شده توسط mehdvirus در ‏17 ژانویه 2006
    farik و Amir.Mansoury از این پست تشکر کرده اند.
  5. oxygenws

    oxygenws Active Member

    ارسال‌ها:
    4,969
    تشکر شده:
    487
    امتیاز دستاورد:
    36
    چرا بیهوده؟!!
    من دو-سه مشکل تو متن ات دیدم، اون این بود که پاراگراف بندی هات زیاد جالب نبود، یه جورایی white space های عمودی کم داشتی، این کار خوندن مطلبت رو سخت می کنه و افراد کمتری متمایل می شن بخونن.
    مشکل دوم این بود که چیزی به عنوان "تیتر" یا "زیر تیتر" یا .. نداشتی، اینا خوندن رو خیلی راحت می کنه، موافق نیستی؟!
    به هر حال، من مقداری از مطلبت رو خوندم، ولی چون سرم کمی شلوغه، هنوز نتونستم کامل بخونمش، ولی مطمئنا خواهم خوند :)

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

    موفق و پیروز باشی.
     
    نوشته شده توسط oxygenws در ‏17 ژانویه 2006
    meraj-persian و Amir.Mansoury از این پست تشکر کرده اند.
  6. mehdvirus

    mehdvirus Member

    ارسال‌ها:
    46
    تشکر شده:
    46
    امتیاز دستاورد:
    6
    CGI Programming In A Week
    از اين كتاب نوشتم
    خوب من اينا رو تو ورد نوشتم تو اونجا هم درشت كنم يا نكنم فرقي نميكنه
     
    نوشته شده توسط mehdvirus در ‏18 ژانویه 2006
    Amir.Mansoury از این پست تشکر کرده است.
  7. oxygenws

    oxygenws Active Member

    ارسال‌ها:
    4,969
    تشکر شده:
    487
    امتیاز دستاورد:
    36
    خوب توی همین برنامه درشتش کن :) همینجا!
     
    نوشته شده توسط oxygenws در ‏18 ژانویه 2006
    Amir.Mansoury از این پست تشکر کرده است.
  8. mehdvirus

    mehdvirus Member

    ارسال‌ها:
    46
    تشکر شده:
    46
    امتیاز دستاورد:
    6
    Part2 Coming Soon;)
     
    نوشته شده توسط mehdvirus در ‏5 فوریه 2006
    Amir.Mansoury از این پست تشکر کرده است.
  9. yaghi

    yaghi Member

    ارسال‌ها:
    281
    تشکر شده:
    3
    امتیاز دستاورد:
    16
    كار جالبيه !
    منم از حالا شروع ميكنم به خوندن وانشاا... همراه با شما ميام جلو ولي مشكلي كه هست اينه كه الان اين مقاله رو مي خوانم 2 ما از تاريخ ارسالش ميگزره اما درس 2ش رو نفرستاديد ؟!!
     
    نوشته شده توسط yaghi در ‏10 فوریه 2006
    Amir.Mansoury از این پست تشکر کرده است.
  10. mehdvirus

    mehdvirus Member

    ارسال‌ها:
    46
    تشکر شده:
    46
    امتیاز دستاورد:
    6
    كجا دوماه گزشته؟
    هنوز يه ماه هم نشده
    قبل اينكه شماره دو رو بدم اول بايد قسمت 12 پي اچ پي رو بزارم بعد:D
    اينو ميزارم:D
    خيلي هم سخته نوشتنش[​IMG]
    كتاب زياد خوب ننوشته[​IMG]
     
    نوشته شده توسط mehdvirus در ‏12 فوریه 2006
    satiseven و Amir.Mansoury از این پست تشکر کرده اند.
  11. nanox2004

    nanox2004 New Member

    ارسال‌ها:
    6
    تشکر شده:
    1
    امتیاز دستاورد:
    1
    ايول آقا دستت درد نكنه شايد شما از معدود آقايوني هستي كه بجاي خريد تن ماهي براي بچه ها بهشون ياد دادي چجوري ماهي بگيرن واقعا دستت درد نكنه
     
    نوشته شده توسط nanox2004 در ‏3 مارس 2006
    Amir.Mansoury از این پست تشکر کرده است.
  12. emad.h

    emad.h Member

    ارسال‌ها:
    192
    تشکر شده:
    75
    امتیاز دستاورد:
    16
    كارت درسته

    ادامه بدهههههههههههههههههههههههههه
     
    نوشته شده توسط emad.h در ‏28 ژوئن 2006
    Amir.Mansoury از این پست تشکر کرده است.
  13. zomorrod

    zomorrod Member

    ارسال‌ها:
    215
    تشکر شده:
    25
    امتیاز دستاورد:
    16
    عالي بود . ما هم با شما جلو ميايم . خسته نباشي .
     
    نوشته شده توسط zomorrod در ‏29 اکتبر 2006
    Amir.Mansoury از این پست تشکر کرده است.

به اشتراک بگذارید