یک وب پشته مرده در هاسکل

     

    

هاکل دارای تعداد زیادی كتابخانه برای انتخاب همه نیازهای اصلی باطن شما ، از ورود به سیستم تا دسترسی به پایگاه داده تا مسیریابی و تعریف سرور وب است. داشتن آزادی انتخاب بسیار خوب است ، اما اگر تازه کار را شروع کنید ، میزان تصمیمات مورد نیاز می تواند بسیار زیاد باشد. شاید حتی به اندازه کافی مطمئن نباشید که می توانید تفاوتهای مهمی را بین همه گزینه های موجود در آنجا تشخیص دهید. شما باید از پایگاه داده خود پرس و جو کنید. آیا می خواهید نام ستون قوی و تعبیه عمیق SQL کهSquealبه شما می دهد ، یا سادگی نسبیOpaleye

را ترجیح می دهید. در حالی که هنوز از نوع ایمنی استفاده می کنید؟ یا شاید بهتر باشد فقط ازpostgresql-سادهاستفاده کنید و چیزهایی را نگه داریدواقعاًآسان؟ یا اینکه در مورد استفاده ازSeldaچطور؟ یا اینکه در مورد …

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

را می توانید در اینجاپیدا کنید.

بیایید به کتابخانه هایی که من انتخاب کردم و آنچه را که باید از آنها انتظار داشته باشید ، بپردازیم و همچنین این برنامه چیست.

خوب ، پس این برنامه وب به هر حال چیست؟

این سایتی است که کاربران می توانند تایمر و یادداشت های سفارشی را برای خود ایجاد کنند.

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

    این به من اجازه می دهد تظاهرات کنم:

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

  • پیکربندی زمان اجرا ، از آنجا که نمی توانیم اطلاعات اتصال دیتابیس را کدکد کنیم.
  • ورود به سیستم. خود توضیحی برای یک برنامه وب.

    کد منبع برنامه در اینجا آمده است.

    خوب ، پس کتابخانه ها چیست؟مسیریابی و وب سرور: Spock

    Spockبه عنوان كتابخانه مورد نظر در اینجا به پایان رسید زیرا از سهولت استفاده اگر تا به حال از سیناترا روبی استفاده شده اید ، اسپاک باید خیلی شبیه هم باشد.1

    Spock همچنین با جابجایی جلسه از جعبه همراه است ، که بسیار خوب است.

    به عنوان مثال ، تعیین سرور با چند مسیر برای ارسال HTML و JSON ممکن است به این صورت باشد:

    دسترسی به بانک اطلاعاتی: postgresql- ساده

    postgresql-سادهاساساً فقط به شما امکان می دهد تا query های SQL خام را در برابر دیتابیس خود اجرا کنید ، با حداقل ویژگی های اضافی مانند محافظت در برابر حملات تزریق. این کاری را انجام می دهد که شما انتظار دارید و نه چیز دیگری.

    پیکربندی: تنظیم کننده

    تنظیم کننده

    پرونده های پیکربندی را می خواند و آنها را به داده های Haskell تجزیه می کند. کمی ویژگی برجسته تر از خواننده فایل پیکربندی معمول شماست. اگر از صفحات پیکربندی استفاده می کنید ، تنظیم کننده چند ترفند دیگر در آستین های خود دارد. ویژگی های پیکربندی را می توان برای گروه بندی لانه کرد و تنظیم کننده نیز در صورت نیاز به آن ، بارگیری مجدد را در تغییر پرونده پیکربندی ارائه می دهد.

    # یک پرونده پیکربندی نمونه. app_name="مه نجوا" db   استخر {     راه راه=4     source_ttl=16   }   نام کاربری="پالاس"   password="thefalloflatinium"   dbname="ایتالیا" }

    (**************************************

    ورود به سیستم: سریع الوار

  • سریع الوار

    یک راه حل ورود به سیستم را برای استفاده مناسب ارائه می دهد. در مثال برنامه وب ، من فقط از آن برای چاپ به stderr استفاده می کنم ، اما گزینه هایی برای ورود به پرونده ها نیز دارد. در حالی که انواع مختلفی دارد ، در اکثر موارد می خواهید توابع کمکی را انتخاب کنید که فقط یک LoggerSet را وارد می کنند و پیامی را که می خواهید وارد آن شوید.

    تولید HTML: blaze-html

    در حالی که HTML زیادی لازم نیست که از پس زمینه این پروژه تولید شود ، قابل ذکر است

    blaze-htmlبرای قطعاتی که منانجام دادمنیاز.

    این در واقع فقط یک جاسازی کم عمق HTML در یک Haskell DSL است. اگر می توانید HTML بنویسید ، می دانید که چگونه از این کتابخانه استفاده کنید.

    ساختمان و جلو: ساخت + npm

    بله ، بله ، این کتابخانه ها نیستند. با این وجود ، ما به نوعی ظاهر JavaScript نیاز داریم ، زیرا زمان سنج ها باید در زمان واقعی بروزرسانی شوند. Webpack بسته نرم افزاری JS را تولید کرد ، در حالی که Make خروجی برنامه نهایی را جمع آوری کرد.

    من در مورد اینها زیاد صحبت نخواهم کرد. منابع زیادی در مورد استفاده از این دو ابزار در جای دیگر وجود دارد.

    آیا باید از اینها استفاده کنم؟ ؟

    هیچ البته نه. اگر در وهله اول کاوشگر هاسکل هستید ، مطمئناً به طور طبیعی کنجکاو هستید. اجازه ندهید که شما را نگه دارم یا آنچه را که باید انجام دهم را دیکته کنم. در حالی که این برنامهکار می کند، بسیاری از قسمت های آن برای تولید هاکل قابل استفاده نیستند. به عنوان مثال ، بسیاری از هاکلرها برای تعیین نقاط پایانی API از Servant به جای Spock استفاده می کنند. اگر به انتخاب سایر کتابخانه ها علاقه مند هستید ، باید تمایلات خود را کاملاً دنبال کنید.

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

  • دسترسی DB را به روز کنید تا به جای استفاده از یک کتابخانه پرس و جو از نوع امن استفاده کنیدpostgresql-Simple. توصیه میکنمOpaleye!تعریف API را برای استفاده به روز کنید

    خدمتگزاربه جای Spock.تست خودکار را با استفاده ازQuickCheckیاجوجه تیغی. به عنوان مثال ، می توانید این ویژگی را آزمایش کنید که هر پاسخ خطایی از سرور نیز یک پیام خطای JSON را ارسال می کند.

    و شما حتی می توانید سعی کنید سیستم جبهه و ساخت را جایگزین کنید.

  • کد مورد استفاده را برای استفاده ارتقا دهید

    PureScript
    یا

    الم

    به جای وانیلی JavaScript.سیستم ساخت را برای استفاده ارتقا دهید

    لرزش 

    به جای Make ، همه چیز را قوی تر می کند.

  • در اینجا پیوند منبع برنامه مثال وجود دارد اگر آن را از دست دادید کد کنید.

    می خواهید مشاوره در مورد شروع به کج کردن؟ این مفید را پیدا کردید؟ هنوز سوالی دارید؟با من حرف بزن!

    شما همچنین ممکن است دوست داشته باشید

  • نحوه استفاده از پرت را برای مهاجرت های DB
  • ↥1

    معنی دارد ، از آنجا که اسناد اسپاک بیان می کند که از سیناترا الهام گرفته است!  

                  قبل از بستن آن برگه …     (**************************     

          آیا می خواهید هاسکل عملی و تولیدی بنویسید؟ خسته از شکسته       کتابخانه ها ، مستندات barebones ، و مقالات بی پایان تئوری نوع فقط یک       postdoc می تواند درک کند؟ می خواهم کمک کنم در زیر مشترک شوید و دریافت خواهید کرد       تکنیک های مفید برای نوشتن برنامه های واقعی و مفید مستقیماً در برنامه های خود است       صندوق ورودی     

             

          کاملاً بدون اسپم ، همیشه. من به خصوصی بودن ایمیل شما احترام می گذارم. لغو اشتراک در هر زمان.     

      

    ادامه مطلب

    Leave a Comment