معرفی کتابخانه QueryMock: An Apollo GraphQL Module و توضیح درمورد آن و ویژگی های آن

معرفی کتابخانه QueryMock: An Apollo GraphQL Module


QueryMock بسته NPM عالی برای اضافه کردن به همه برنامه های Apollo GraphQL است.


فرقی نمی‌کند با Apollo GraphQL تازه کار باشید یا یک کهنه کار با این فناوری، بر کسی پوشیده نیست که آزمایش ویژگی‌های مختلف آن‌ها به‌صورت جداگانه دشوار است. مهندسان نرم افزار باتجربه ابراز علاقه کرده اند که بتوانند داده های ساختگی خود را از پرس و جوی ارائه شده بدون نیاز به تنظیم کل سرور خود مشاهده کنند. همچنین، آنها توانایی تمسخر یک طرح واره را از جستجوی سریع پرس و جو می خواهند. QueryMock با ارائه داده های ساختگی یا حتی ایجاد یک فایل طرحواره در پروژه شخصی شما به حل این مشکلات کمک می کند.

طراحی سایت سفارش طراحی سایت سفارش ساخت سایت

Apollo GraphQL چیست؟


GraphQL یک زبان پرس و جو و زمان اجرا است که توسط فیس بوک به منظور پرس و جو و تحویل داده ها به برنامه های مختلف ایجاد شده است. GraphQL به دلیل توانایی اش در پرس و جو کردن جنبه های خاص یک طرحواره و دریافت اطلاعات درخواست شده به عنوان پاسخ محبوب است. GraphQL با پرس و جو از داده ها در رابطه با طرحواره تعریف شده در مقابل جمع آوری داده ها از نقاط پایانی مختلف با REST متفاوت است.


آپولو در رابطه با GraphQL چگونه کار می کند؟ آپولو به طور خاص تحت PaaS یا پلتفرم به عنوان پشته فناوری خدمات قرار می گیرد. نقش آپولو ردیابی طرحواره های ایجاد شده در یک رجیستری است. این به ویژه هنگامی مفید است که با Apollo Studio همراه شود، که پلتفرمی است که به شما امکان می‌دهد با داده‌هایی که دریافت می‌کنید، پرس و جوهایی که ایجاد می‌کنید بازی کنید و آن‌ها را در برابر طرحی که ذخیره کرده‌اید بررسی کنید. آپولو همچنین به بسته‌ها و کتابخانه‌های مختلف برای کمک به ایجاد برنامه GraphQL شما دسترسی دارد.


با این حال GraphQL، حتی همراه با آپولو، دارای یک منحنی یادگیری شیب دار است. علاوه بر آن، به طور کلی یک فناوری نسبتاً جدید است. GraphQL برای اولین بار در سال 2012 ایجاد شد و در سال 2015 منبع باز شد و آپولو در سال 2016 راه اندازی شد. از آنجایی که بسیار جدید است، ویژگی های زیادی وجود دارد که هنوز در حال پیشرفت هستند، که منجر به این می شود که باید خودتان راه حل هایی برای مشکلات خود بیابید یا منتظر بمانید. تا زمانی که ویژگی کار در حال انجام آپولو ایجاد و اجرا شود. هنگام تصمیم گیری در مورد استفاده از Apollo GraphQL برای برنامه خود خوب است این معایب را در نظر داشته باشید.

متلب انجام پروژه متلب با متلب دانان قهار و بزرگ

اولین ویژگی QueryMock چیست؟


یکی از توسعه دهندگان ما در حال ایجاد یک برنامه React کامل پشته ای بود که متوجه شد نمی توانند پرس و جوهای خود را بدون راه اندازی کامل بک اند ابتدا آزمایش کنند. اینگونه بود که ایده ارائه داده های ساختگی فقط از طریق یک پرس و جو ایجاد شد. هنگامی که تیم حفاری بیشتری انجام داد، ما به سرعت متوجه شدیم که این یک ابزار مفید برای بسیاری از توسعه دهندگان Apollo GraphQL خواهد بود. چند ابزار در حال حاضر برای کمک به داده های تمسخر آمیز ایجاد شده اند، از جمله ابزارهایی که توسط خود آپولو ایجاد شده اند. با این حال، آنها هنوز نیاز به یک باطن و یک طرحواره دارند که قبل از اینکه بتوانند از آنها استفاده کنند.


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


تابع mockQuery با ایجاد داده های ساختگی برای توسعه دهندگانی که هنوز به یک باطن کامل دسترسی ندارند، مشکل توصیف شده را حل می کند. تیم ما آن را برای تقلید از useQuery Hook از بسته npm @apollo/client نوشت که فقط به یک آرگومان نیاز دارد: جستجوی GraphQL. در اینجا یک نمونه از useQuery Hook آورده شده است:


تابع DisplayLocations() {


const { بارگیری، خطا، داده } = useQuery(GET_LOCATIONS);


اگر (در حال بارگیری) بازگشت <p>در حال بارگیری…</p>;


if (error) return <p>خطا :(</p>


داده ها را برگرداند

طراحی لوگو با بهترین طراح لوگو و طراحی لوگو حرفه ای

locations.map(({ شناسه، عنوان، تصویر، نام، توضیحات، آدرس، تلفن، پوستر}) => (


[با کد اینجا کاری انجام دهید


))؛


)


}


با جایگزین کردن useQuery با mockQuery، با گذاشتن آرگومان جستجوی GraphQL در محل، تابع ما فقط رشته‌هایی را برای هر فیلد در جستجو برمی‌گرداند.


مثلا:


تابع DisplayLocations() {


const { بارگیری، خطا، داده } = MockQuery(GET_LOCATIONS);


اگر (در حال بارگیری) بازگشت <p>در حال بارگیری…</p>;


if (error) return <p>خطا :(</p>


داده ها را برگرداند

تصویر داده های ارائه شده: title_01 location-reference درباره این مکان: name_01 description_01 address_01 phone_01 location-reference name user_01 age_01


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


const { بارگیری، خطا، داده } = MockQuery (GET_LOCATIONS، "درج");

تصویر پاپ آپ و فیلدهای مورد نظر: QueryMock: سلام! برای استفاده از mockQuery متشکریم! فیلدهای داده های ساختگی را از قبل با متن پر کرده ایم. هر یک از جعبه های ورودی از پیش پر شده را با داده های ساختگی شخصی خود جایگزین کنید

سپس روی ارسال کلیک کنید. می توانید تابع mockQuery را بدون تگ P دوباره اجرا کنید و اطلاعات شما حفظ خواهد شد. اگر سؤالی دارید، لطفاً اسناد ما را بررسی کنید. پرس و جو! فیلدها: شناسه، عنوان، تصویر، نام، توضیحات، آدرس، تلفن، نام کاربری پوستر، سن پوستر و تصویر کوچک پوستر. در پایان یک دکمه ارسال وجود دارد.


به منظور سرعت بخشیدن به این فرآیند، قابلیت استفاده از کلمات کلیدی را برای تعیین نوع داده ای که می خواهید ارائه دهید اضافه کردیم. در تصویر زیر، فیلد "تصویر" دارای یک آدرس اینترنتی است که قبلا ارائه شده است. با این حال، فیلد "تصویر کوچک پوستر" دارای ~عکس است. استفاده از ~photo مانند چسباندن آدرس اینترنتی در فیلد عمل می کند.

تصویری از همان پاپ آپ همانطور که در بالا توضیح داده شد با برخی از فیلدها وارد شده است. اینها فیلدهایی هستند که وارد شده اند: عنوان: بهترین فروشگاه نان تا کنون! تصویر: نام آدرس اینترنتی خودکار: توضیحات Ben’s Baker: ~text299 آدرس: ~ آدرس تلفن: ~ نام کاربری پوستر تلفن: ben_theBaker93 سن پوست: ~int poster thumbnail: ~photo. در پایان یک دکمه ارسال وجود دارد.


می بینید که ما از ~address, ~phone, ~int, ~text299 استفاده کردیم. کلمه کلیدی متن متفاوت است زیرا به شما نیاز دارد که یک عدد زیر ~text ارائه دهید. در مثال ما از عدد 299 استفاده کردیم که تضمین می کند که یک بلوک متنی با 299 کاراکتر دریافت می کنید.

پروژه انجام پروژه سفارش پروژه

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

تصویر رندر شده شامل یک تصویر انتزاعی آبرنگ با رنگ های مختلف از جمله زرد، قرمز، سبز و آبی تیره. عنوان بالای سربرگ می گوید: The Best Bread Store Ever. در زیر تصویر آمده است: درباره این مکان: Ben’s Bakery. متن بعدی نوشته شده: یک دلار و هشتاد و هفت سنت. این همه بود. و شصت سنت آن به سکه بود. پنی ها هر بار یکی و دو نفر را با بولدوزر زدن خواربارفروش و سبزی خوار و قصاب نجات دادند تا اینکه گونه های آدم با انتساب بی صدا انزجاری که چنین برخورد نزدیک حاکی از آن بود، سوخت. سه. 2300 Oracle Way Austin, TX 78741 (737)867–1000. یک تصویر دایره ای با چرخش های رنگی وجود دارد و سپس زیر آن: ben_theBaker93 128.


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


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


این مفهوم هنگام ایجاد یک منوی بازشو برای کاربران برای وارد کردن داده های مورد نظر خود به بهترین وجه نشان داده شد. به طور معمول، ما یک مؤلفه ایجاد می کنیم که به صورت مشروط یک div را ارائه می دهد. با این حال، چون ما فقط به تابعی دسترسی داشتیم که یک شی را برمی گرداند، راه ساده ای برای رندر کردن کامپوننت React وجود نداشت. ما انتخاب کردیم که از دستکاری DOM استفاده کنیم تا آن را به بدنه به عنوان راه حلی در مورد رندر کردن یک جزء React متصل کنیم.


UseQuery Hook از Apollo یک شی را برمی‌گرداند که به طور خاص دارای یک جفت کلید/مقدار «بارگیری» و «true» است در حالی که منتظر نتایج پرس و جو است. در حالی که منتظر ورودی کاربر هستیم، این رفتار را با ارسال یک شی "بارگیری" تقلید می کنیم تا زمانی که کاربر ورودی های مورد نظر خود را ارسال کند، سپس داده ها با useState Hook به روز می شوند.

مجری ذیصلاح لیست مجریان نظام مهندسی اراک مجری ساختمان

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


چگونه اولین ویژگی را نصب می کنید؟


ابتدا مطمئن شوید که @apollo/client، GraphQL و React را نصب کرده اید. سپس می توانید به مخزن github ما بروید تا پروژه را فورک و کلون کنید. دوم، پوشه ای با عنوان MockData را در پروژه خود کپی کنید و سپس تابع mockQuery را به صورت زیر وارد کنید:


وارد کردن mockQuery از «[مسیر شما]/MockData/MockQuery».


اکنون می‌توانید با جایگزین کردن useQuery Hook با mockQuery، برخی از داده‌ها را مسخره کنید.


دومین ویژگی QueryMock چیست؟


ویژگی دوم ما به تولید طرحواره ساختگی برای Apollo GraphQL مربوط می شود. مشابه اولین ویژگی ما، متوجه شدیم که اگر ابتدا برنامه کاربردی خود را توسعه می‌دادید، به طرحی برای آزمایش درخواست‌های خود دسترسی نخواهید داشت. با در نظر گرفتن این موضوع، ما به احتمال mocki فکر کردیم

طرحواره ای را بر اساس پرس و جوی کاربر مورد نظر ایجاد کنید.


ما می‌خواستیم عملکردی را با رابط خط فرمان (CLI) پیاده‌سازی کنیم تا مستقیماً با کاربر و فایل‌های برنامه‌اش ارتباط برقرار کنیم. ما نمی‌خواستیم یک برنامه جدید باز کنیم یا مجبور نباشیم برای استفاده از عملکرد خود در یک صفحه رندر کنیم. بنابراین، تصمیم گرفتیم دستوری را ادغام کنیم که کاربر را برای دریافت اطلاعات راهنمایی کند. ابتدا از کاربر می خواهد که مسیر مستقیمی را به جایی که پرس و جوی او ذخیره شده است بدهد. ما در مورد اینکه کاربر درخواست خود را مستقیماً در ترمینال وارد کند بحث کردیم. با این حال، ما به این نتیجه رسیدیم که برای کاربر ناخوشایند است که مجبور شود خود پرس و جو را بگیرد، به خصوص با توجه به اینکه قالب بندی در مورد جستارهای Apollo GraphQL چقدر پیچیده است. به منظور حفظ فرمت پرس و جو و کاهش ناراحتی کاربر، ما مسیر فایل آنها را درخواست می کنیم. با آن اطلاعاتی که در اختیار ما قرار می‌گیرد، می‌توانیم فایل را تجزیه و جست‌وجو کنیم.

پوشه QueryTest با فایل query.js که در داخل آن قرار دارد.


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

این نمونه ای از پرس و جوی است که با محصول ما کار می کند: const { gql } = require('apollo-graphql'); const dndChar = gql ` query class { class { name hit_die spellcasting { spellcasting_ability { name } } } `

مثال پرس و جو: const{gql} = require('apollo-graphql'); const dndChar = gql ` query class { class { name hit_die spellcasting { spellcasting_ability { name } } } `


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

تصویری از آنچه در داخل ترمینال رخ می دهد: create-schema — پرس و جو شما در کجا ذخیره می شود؟ — ./QueryTest/query.js — لطفاً مسیری را که می خواهید طرحواره شما ذخیره شود، اعلام کنید: — ./QueryTest/schema.js — فایل ضمیمه شده است


سپس کاربر آزاد است تا فایلی را که طرحواره در آن نگهداری می‌شود، ویرایش یا هر گونه تنظیماتی را انجام دهد. لطفاً به یاد داشته باشید که تیک‌های برگشتی را خودتان اضافه کنید زیرا در حال حاضر این تیک‌ها به صورت خودکار پر نمی‌شوند.

تصویر فایل: پوشه QueryTest با فایل‌های query.js و schema.js موجود در آن.

تصویر طرحواره خروجی: `type class { نام: String! hit_die: رشته! spellcasting: رشته! } type spellcasting { spellcasting_ability: String! } spellcasting_ability را تایپ کنید { نام: رشته! } `


لطفاً توجه داشته باشید که یک فایل اضافی به نام QueryTest وجود دارد که یک پرس و جو از قبل ایجاد شده برای شما برای نمایش وجود دارد. این نیز قالبی است که باید مورد استفاده قرار گیرد تا بتوانیم درخواست مورد نظر شما را به درستی پیدا کنیم. شما می توانید هر یک از درخواست های خود را برای آزمایش در این پوشه اضافه کنید. با این حال، برای آزمایش یک پرس و جو فقط به این پوشه محدود نمی شوید.


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


چگونه ویژگی دوم را نصب می کنید؟


ابتدا از مخزن github فورک و کلون کنید و مطمئن شوید که فایل MockSchema به همراه package.json موجود است. دوم، در ترمینال خود npm install را اجرا کنید و سپس npm install -g را اجرا کنید تا فایل به صورت سراسری نصب شود. برای استفاده از دستورات اجرایی، بسته باید در سطح جهانی نصب شود. در مرحله بعد، مطمئن شوید که apollo-graphql را در برنامه خود نصب کرده اید و یک پرس و جوی Apollo GraphQL را با پیروی از تگ gql ایجاد کرده اید و پرس و جو خود را در بکتیک ها قرار داده اید. پس از آن دستور create-schema را اجرا کنید و دستورات برای اجرای عملکرد در ترمینال شما ظاهر می شود!


به زودی ما ویژگی های خود را به عنوان یک بسته npm منتشر خواهیم کرد که می توانید بدون نیاز به فورک کردن و کلون کردن از github نصب کنید. ما مشتاقانه منتظر راه اندازی آن در آینده نزدیک هستیم.


آینده QueryMock چیست؟


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

o کتابخانه را به طور کامل نصب کنید. امیدواریم در آینده نزدیک این را منتشر کنیم. با توجه به اولین ویژگی ما، امیدواریم که به مشکل مربوط به انواع مختلف اشیاء بپردازیم. مشکل این است که ما نمی توانیم ارزیابی کنیم که آیا کاربر انتظار دارد یک شی واحد برگردانده شود یا آرایه ای از اشیا. ما می‌خواهیم قابلیت‌هایی را پیاده‌سازی کنیم تا به کاربر این نوع تنوع را بدهیم. در مورد ویژگی دوم ما می‌خواهیم بتوانیم طرحواره‌ای را مسخره کنیم که می‌تواند پیش‌بینی کند که آیا طرحواره به نوع مورد انتظار دیگری نیاز دارد که رشته‌ای نیست. مشکل از تلاش برای تعیین آنچه کاربر از یک پرس و جو پیش بینی می کند ناشی می شود. ما می‌خواهیم با اجازه دادن به چند دستور دیگر به ترمینال به عنوان راهی برای جمع‌آوری داده‌های پیش‌بینی‌شده از کاربر، سعی کنیم با این مشکل مقابله کنیم. در مورد گام‌های بعدی کلی، ویژگی سومی وجود داشت که باید آن را به یک هدف کششی تبدیل می‌کردیم که تیم هنوز به آن علاقه دارد. امیدوار بودیم به موضوع رسیدگی به درخواست در فدراسیون آپولو بپردازیم. این ایده در حال حاضر هنوز به طور کامل شکل نگرفته است. با این حال، از آنچه ما می‌توانیم استنباط کنیم، مشکلاتی در نحوه رسیدگی به درخواست‌های گره توسط آپولو گیت‌وی وجود داشت که از کار با React Relay ناشی می‌شدند. در نسخه های بعدی QueryMock، ما دوست داریم این قابلیت را اضافه کنیم.


گروه را ملاقات کن!


QueryMock در حال حاضر تیمی متشکل از چهار مهندس نرم افزار است که در مورد امکانات Apollo GraphQL هیجان زده هستند. تیم ما اینجاست:


متشکرم!


از اینکه برای خواندن مقاله ما وقت گذاشتید سپاسگزاریم. اگر این محصول را مفید می‌دانید یا اگر کنجکاو هستید که بیشتر بدانید، از مخزن github ما و صفحه splash ما دیدن کنید! به زودی ما این را در npmjs راه اندازی خواهیم کرد تا بتوانید مستقیماً بسته ما را از آنجا نصب کنید.


تشکر ویژه از کاترین کیم (github، linkedin) برای راهنمایی و راهنمایی ما.



نرم افزار DenoGres 2.0 منتشر شد . توضیح ویژگی های آن

DenoGres 2.0 منتشر شد


DenoGres 2.0 اکنون فعال است! در این نسخه مجموعه جدیدی از ویژگی های ساخته شده بر روی DenoGres 1.0 گنجانده شده است که به توسعه دهندگان ابزارها و دلایل بیشتری برای کار در DenoGres می دهد.

سایت سفارش طراحی سایت با بهترین طراحان سایت

    رابط کاربری گرافیکی کاربرپسند، همگام سازی پایگاه داده دو جهته، بذر پایگاه داده، و گزارش مهاجرت تنها تعداد انگشت شماری از ویژگی های موجود در DenoGres 2.0 هستند!


مقدمه


امروز ما نسخه بعدی DenoGres، نسخه 2.0 را منتشر می کنیم. نسخه 2.0 با تعداد قابل توجهی بهبود در عملکرد اصلی ارائه می شود که DenoGres را نه تنها آسان تر می کند، بلکه یک راه حل ORM جامع تر را ایجاد می کند که PostgreSQL را به زمان اجرا Deno پیوند می دهد.


نکات برجسته در این نسخه عبارتند از:


    همگام سازی دو جهته پایگاه داده/مدل

    بذردهی پایگاه داده

    یک رابط مرورگر پرس و جوی گرافیکی

    گزارش مهاجرت پایگاه داده


همگام سازی پایگاه داده دو جهته

طراحی لوگو با بهترین طراح لوگو و طراحی لوگو حرفه ای

یکی از ویژگی های اصلی که به عنوان بخشی از نسخه 2.0 پیاده سازی شده است، افزودن همگام سازی پایگاه داده دو جهته است. پس از فراخوانی فرمان "-db-pull"، DenoGres یک فایل model.ts ایجاد می کند. این فایل طرحواره پایگاه داده کاربر را از PostgreSQL به شکل شی TypeScript نشان می دهد. هر تغییری که در PostgreSQL رخ می‌دهد را می‌توان با فراخوانی « — db-pull» به دایرکتوری پروژه کاربر کشید، که فایل مدل فعلی را در DenoGres بازنویسی می‌کند. یکی دیگر از قابلیت‌هایی که در این ویژگی وجود دارد، توانایی همگام‌سازی تغییرات در طرح پایگاه داده PostgreSQL از طریق مدل ORM (model.ts) در DenoGres است. اگر کاربر بخواهد تغییراتی را در طرح PostgreSQL خود ایجاد کند، می‌تواند این کار را در IDE خود با تغییر فایل model.ts و فراخوانی فرمان « — db-sync» انجام دهد. فراخوانی « — db-sync» سپس از model.ts به عنوان پایه آن استفاده می کند و طرح پایگاه داده PostgreSQL را برای مطابقت با Models از فایل model.ts همگام می کند.

تصویر فایل model.ts

model.ts


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


پس از ایجاد تغییرات در مدل، دستور " — db-sync" را اجرا کنید و تمام تغییرات ایجاد شده در مدل شما با طرح پایگاه داده PostgreSQL شما همگام سازی می شود.

بذریابی پایگاه داده

متلب انجام پروژه متلب با متلب دانان

با جدیدترین افزوده ما از بذردهی پایگاه داده، اکنون می توانید داده های آزمایشی را مستقیماً از طریق DenoGres در پایگاه داده PostgreSQL خود وارد کنید! برای شروع، ابتدا باید فایلی به نام seed.ts در داخل دایرکتوری ریشه ایجاد کنید. در مرحله بعد، آرایه ای از اشیاء ایجاد کنید و آن را به برچسبی که با نام جدولی که می خواهید در پایگاه داده PostgreSQL ایجاد کنید، اختصاص دهید. در متغیر تازه ایجاد شده شما، هر شی در آرایه یک رکورد (ردیف) را نشان می دهد که باید به پایگاه داده PostgreSQL اضافه شود.


توجه: مطمئن شوید که هر یک از آبجکت های داده مطابق با طرحی که در فایل model.ts آمده است.


نمونه ای از فایل seed.ts به شکل زیر است:

قطعه کد نمونه ای از فایل seed.ts را نشان می دهد.

مثال: مدل seed.ts


اکنون، تنها کاری که باید انجام دهید این است که اجرا کنید: denogres - db-seed

مرورگر GUI Query

صفحه ورود به سیستم DenoGres


نسخه 2.0 یک مرورگر پرس و جو بصری را معرفی می کند که می تواند از طریق رابط خط فرمان باز شود. پیش از این، تمام قابلیت‌های DenoGres باید با اجرای اسکریپت‌ها قابل دسترسی بودند و کاربران به تجزیه داده‌های SQL از داخل خط فرمان محدود می‌شدند. مرورگر پرس و جو برای رسیدگی به چنین چالش هایی طراحی شده است و امکان گردش کار کارآمدتر و کارآمدتر را فراهم می کند.

افزودن یک اتصال

انجام پروژه با بهترین متخصصان پروژه

به عنوان بخشی از نسخه مرورگر پرس و جوی رابط کاربری گرافیکی، دو بخش اصلی معرفی شده است: مدیر اتصالات و جستجوگر پرس و جو. در مدیر اتصالات، کاربران می‌توانند اعتبار پایگاه داده را ایجاد/به‌روزرسانی/حذف کنند که در حسابشان ذخیره می‌شود. در مدیریت اتصال، کاربران همچنین می توانند به پایگاه داده(های) انتخابی خود متصل شوند. هنگامی که کاربر به یک پایگاه داده متصل شد، رابط کاربری گرافیکی کاربران را به جستجوگر جستجو هدایت می کند.

اتصال به یک اتصال ذخیره شده


در جستجوگر پرس و جو، کاربران می توانند کلاس های Model مرتبط با یک پایگاه داده مشخص را ببینند. آنها همچنین می توانند پرس و جوهایی را در برابر مدل های خود ایجاد و اجرا کنند.

تعریف و ذخیره پرس و جو

گزارش مهاجرت پایگاه داده


DenoGres 1.0 فاقد توانایی ردیابی یا ذخیره مهاجرت های پایگاه داده بود. اگر کاربر تصمیم گرفت که شکل مدل خود را تغییر دهد و بعداً یک هفته بعد تصمیم گرفت که آن را تغییر دهد، هیچ راهی برای بازگشت به طرح قبلی خود وجود نخواهد داشت. DenoGres 2.0 این مشکل را حل می کند.

Denogres Log همه مهاجرت ها را ردیابی می کند


قبل از DenoGres 2.0، زمانی که کاربر دستور CLI "-db-pull" را وارد می کند، یک مدل ORM واحد بر اساس طرح PostgreSQL فعلی آنها ایجاد می شود. اگر کاربر تغییراتی در مدل داده ایجاد کند و متعاقباً بخواهد به مدل اصلی خود برگردد، جزئیات مربوط به مدل اصلی برای همیشه از بین می‌رود. اکنون، زمانی که کاربر طرح پایگاه داده خود را به فایل model.ts خود می کشد، DenoGres به طور خودکار یک نسخه پشتیبان از آن مدل ایجاد می کند و آن را برای استفاده بعدی ذخیره می کند.


با افزودن همگام سازی پایگاه داده دو جهته، هر زمان که دستور « — db-sync» اجرا شود، DenoGres به صورت خودکار

y یک نسخه پشتیبان از مدل ORM پس از همگام سازی ایجاد کنید. این به کاربر این امکان را می دهد که مدلی برای همگام سازی مجدد شکل طرحواره پایگاه داده PostgreSQL خود در صورت نیاز به بازگشت به هر مدل ذخیره شده در هر نقطه از زمان داشته باشد.

در حال توسعه


با گسترش پشتیبانی از DenoGres، تیم امیدوار است تغییرات زیر را با نسخه بعدی DenoGres اعمال کند:


    پشتیبانی بیشتر از dbSync - در نهایت برای چندین ارتباط و کلیدهای منحصر به فرد ترکیبی در مدل DenoGres در نظر گرفته شود.

    دستور جدید «مقایسه» - تفاوت‌های مدل‌های قبلی (در صورت وجود) را در کنار هم نمایش دهید.

    به روز رسانی های بیشتر برای گزارش مهاجرت - گزارش در رابط کاربری گرافیکی قابل مشاهده خواهد بود تا کاربران بتوانند نسخه های مدل را ردیابی/مشاهده/مقایسه کنند.

    نمودارهای به سبک ERD - در رابط کاربری گرافیکی ایجاد می‌شوند، بنابراین کاربران می‌توانند دید جامعی از مدل داده‌های خود داشته باشند.

    پشتیبانی اضافی برای MySQL، SQL Server و غیره




چارچوب تست منبع باز از اکوسیستم جاوا اسکریپت

تست های واحد در جاوا اسکریپت با Jest


مقاله پایه تست نرم افزار. مفاهیم پایه و آزمون های واحد به عنوان یک کل چارچوب Jest.


انجام پروژه در فریلنس پروژه

Jest یک چارچوب تست منبع باز از اکوسیستم جاوا اسکریپت است. Jest در حال حاضر محبوب‌ترین فریمورک تست امروزی است که توسط شرکت‌های بزرگی مانند فیس‌بوک، Airbnb، توییتر و اسپاتیفای استفاده می‌شود، همچنین دارای پلاگین‌های متعددی است که به راحتی با تمام فریم‌ورک‌های مدرن چه در قسمت جلویی و چه در سمت باطن (React، Angular، Vue) یکپارچه می‌شوند. ، گره).


برخی از ویژگی‌های آن پیکربندی آسان، استفاده از عکس‌های فوری کد، و شامل گزارش‌های پوشش است.

تست های واحد


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


تست های واحد شامل موارد زیر است:


    کارکرد.

    کلاس ها.

    مواد و روش ها.

    در میان قطعات کوچک دیگر.

سفارش طراحی سایت با بهترین طراحان

مفاهیم کلیدی برای آزمایش با Jest


مفاهیم زیر به ما کمک می کند تا اصطلاحات و کلمات رزرو شده را که معمولاً در تمام چارچوب های آزمایشی جاوا اسکریپت استفاده می شود، با تمرکز بر عملکردهایی که Jest برای استفاده از آن استفاده می کند، درک کنیم.


    توضیح دهید: تابعی که به ما کمک می کند بلوک هایی ایجاد کنیم که چندین تست مرتبط را گروه بندی می کنند.

    تست: تابعی که در آن کاسوئیستری آزمایش خواهد شد. با توجه به اینکه تابع تست حاوی نام مستعار به نام آن است که از همان عملکرد استفاده می کند.

    Expect: تابعی که امکان اعتبارسنجی مسابقات را در طول آزمایش فراهم می کند. این منطبق‌ها همان مواردی هستند که Jest با برگرداندن نتایج بر اساس معیارها تأیید می‌کند. تابع انتظار زمانی استفاده می شود که یک مقدار نیاز به اعتبارسنجی داشته باشد. انتظار داشته باشید که در ارتباط با عملکردهای دیگر برای رسیدگی به موارد متعدد کار کند.


در زیر ترتیب سلسله مراتب استفاده آمده است:


describe('set of math test', () => {

test('it is pair', () => {
expect(6 % 2).toEqual(0);
});
test('it is not pair', () => {
expect(7 % 2).not.toEqual(0);
});
});


نکته: در فایل‌های تست، Jest هر یک از این روش‌ها و اشیاء را در محیط جهانی قرار می‌دهد، برای استفاده از آنها نیازی به نیاز یا وارد کردن نیست.

پیکربندی محیط ما

انجام پروژه متلب با بهترین برنامه نویسان

قبل از شروع، لازم است Nodejs را در محیط کاری خود نصب کنیم. پس از نصب، دستورات زیر را اجرا کنید:


> mkdir unit-test-with-jest
> cd unit-test-with-jest/
> npm init -y
> npm i jest --save-dev

یک اسکریپت NPM نیز برای اجرای تست های واحد و یک اسکریپت برای تولید گزارش پوشش پیکربندی خواهد شد. package.json را باز کنید و اسکریپت زیر را پیکربندی کنید:


{
"name": "unit-test-with-jest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest",
"coverage": "jest --collect-coverage"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"jest": "^29.0.3"
}
}

فایل math.js


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


function sum(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
function mul(a, b) {
return a * b;
}
function div(a, b) {
return a / b;
}
module.exports = {
sum,
sub,
mul,
div
}


فایل math.test.js


مرحله بعدی ایجاد یک فایل جاوا اسکریپت به نام math.test.jst است که شامل تست های واحد هر عملیات وارد شده از math.jsfile است. با تاکید بر اینکه فایل در داخل پوشه ای به نام __tests__ ایجاد خواهد شد.


const { sum, sub, mul, div } = require('../math.js');describe('set of arithmetic operations', () => {

test('sum of numbers', () => {
expect(sum(1, 1)).toBe(2);
});
test('subtraction of numbers', () => {
expect(sub(1, 1)).toBe(0);
});
test('multiply of numbers', () => {
expect(mul(1, 1)).toBe(1);
});
test('divide of numbers', () => {
expect(div(1, 1)).toBe(1);
});
});

توجه: به عنوان یک ملاحظه، Jest به طور پیش‌فرض به دنبال پوشه‌ای به نام __tests__ برای جستجوی تست‌ها می‌گردد و تمام فایل‌هایی را که حاوی نام هستند با انتهای .test.js یا .spec.js پوشش می‌دهد، همچنین به‌طور پیش‌فرض، همه چیز داخل node_modules را نادیده می‌گیرد.

تست ها را اجرا کنید


برای اجرای تست های دقیق، توسط کنسول دستور npm run test را نشان دهید. با این کار، جست بررسی ها را انجام می دهد و نتایج را نشان می دهد.

گزارش پوشش


گزارش های پوشش به شما این امکان را می دهد تا تخمین بزنید که چند درصد کد تست شده است. این گزارش ها معیارهای کلی را برای تجزیه و تحلیل بیشتر ارائه می دهند. برای اجرای گزارش پوشش، دستور npm run covergare را از طریق کنسول نشان دهید. با این Jest معیارها را هم توسط کنسول و هم گزارش‌های HTML تولید شده در فهرست فعلی ارائه می‌کند.

منابع جاوا اسکریپت شوخی


    Home web Jest: وب سایت اصلی، راهنما، وبلاگ و مستندات.

    کتابچه راهنمای کاربر Jest: مراحل اولیه، نصب و نمونه‌ها.

    Jest CLI: خط فرمان Jest، گزینه‌ها و موارد دیگر.

    Jest documentation API: استفاده از API، متدها و kickstarters.

    GitHub Jest: مخزن رسمی منبع باز.


پایان یافتن


در این مقاله به مفاهیم اساسی فریم می پردازیم

ework، به یاد داشته باشید که چندین تابع و دستورات CLI وجود دارد که به ما کمک می کند تا همه موارد ممکن را پوشش دهیم. خواندن مستندات برای ادامه گسترش دانش این ابزار توصیه می شود.

طراحی لوگو با بهترین طراحان لوگو

از اینکه تا اینجای کار آمدید متشکریم، اگر این را مفید یافتید، به اشتراک بگذارید. برای دریافت مطالب بیشتر عضو شوید

Singular در فهرست نهایی برای 5 دسته در جوایز eGR 2017

Singular در فهرست نهایی برای 5 دسته در جوایز eGR 2017 قرار گرفت

جوایز eGR B2B 2017


MALTA، ژوئن 2017 - Singular، یک ارائه‌دهنده راه‌حل نرم‌افزاری بین‌المللی بازی، در فهرست نهایی پنج دسته در جوایز سالانه EGR B2B قرار گرفته است.


یکی از معتبرترین رویدادهای صنعت، جوایز EGR B2B، در تاریخ 6 ژوئن در کلوپ هورلینگهام لندن برگزار می شود. شرکت های پیشرو جهان در تجارت iGaming گرد هم می آیند تا دستاوردهای محصولات و شرکت های خود را جشن بگیرند. طراحان لوگو


Singular در دسته بندی های زیر در فهرست نهایی قرار گرفته است:


    نوآوری در نرم افزار RNG Casino - Keno

    تامین کننده چند کاناله - راه حل خرده فروشی

    پلتفرم سال - پلتفرم بازی منفرد

    نرم افزار پوکر - مشتری پوکر سه بعدی

    تامین‌کننده شرط‌بندی ورزشی - کتاب ورزشی Singular


کنو یک بازی قرعه کشی است که در فروشگاه های شرط بندی محبوبیت دارد. Singular's Keno به صورت زنده به صورت سه بعدی رندر می شود و محصول را در بازار منحصر به فرد می کند. راه‌حل خرده‌فروشی دارای بی‌نظیرترین تجربه مشتری است، از جمله BetCast، یک سیستم مدیریت چند صفحه‌ای. پلتفرم بازی Singular به دلیل قابلیت اطمینان و مقیاس‌پذیری بی‌نظیر خود جایگاهی را در فهرست نهایی کسب کرد.


3D Poker قابل شخصی‌سازی بصری‌ترین مشتری در صنعت iGaming است و دارای ویژگی‌هایی مانند میزهای ناشناس و ثبت نام دیرهنگام است. Singular Sportsbook یکی از راه‌حل‌های پیشرو شرط‌بندی ورزشی در بازار است که اولین شریک معتبر Betradar Gold است.

متلب انجام پروژه متلب انجام پروژه 

این سومین بار متوالی است که محصولات Singular نامزد جوایز EGR B2B می شوند.


درباره Singular / www.singular.uk


Singular یک شرکت توسعه نرم افزار است که در صنایع iGaming و FinTech فعالیت می کند و دفاتری در مالت، انگلستان، مقدونیه و گرجستان دارد.سفارش طراحی سایت

Singular طیف کاملی از محصولات را در همه موارد عمودی ارائه می دهد، از جمله پلتفرم بازی برجسته، کتاب ورزشی، پوکر، بازی های کازینو، بازی های مهارتی، خرده فروشی و راه حل های Omnichannel.


تماس: Mariam Talakhadze (CMO) / mariam[at]singular[dot]uk

نرم افزار، الگوریتم ها و داده ها.

 نرم افزار، الگوریتم ها و داده ها.


این وبلاگ یک پروژه برای واحد مطالعاتی DGA3008، دانشگاه مالت است.


یک مقدمه: ( نقل قول از طرف متیو اسپیتری )


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


من دانشجوی لیسانس هنرهای زیبا هستم که در دانشگاه مالت تحصیل می کنم و در حال حاضر در حال مطالعه برای مدرک هنرهای دیجیتال هستم. به طور خلاصه، من یک تولید کننده محتوا در نظر گرفته می شوم، اما سازنده محتوا دقیقاً چیست؟ این اساساً به دیدگاه شما بستگی دارد. از نظر حرفه ای، یک تولید کننده محتوا کسی است که در ایجاد محتوا (شوک) برای مصرف کنندگان متخصص است، به گونه ای که آنها را وادار به بازگشت بیشتر کند. این نیاز به حالت ذهنی خاصی دارد که افراد زیادی نمی توانند به آن دست پیدا کنند، زیرا باید راه هایی را بیابند تا حتی خسته کننده ترین تخته سنگ روی کره زمین را به موضوعی جالب تبدیل کنند که در نهایت باعث ایجاد ترافیک برای هر رسانه ای می شود که در آن منتشر می شود و در نتیجه سود ایجاد می کند. (توضیحات دقیق تر را می توانید در مقاله سارا استاسیک اینجا بیابید). این همه خوب و خوب است، اما همه تولیدکنندگان محتوا برابر نیستند. همانطور که شما خواننده احتمالاً آگاه هستید، چندین پلتفرم برای مصرف محتوا وجود دارد، از رادیو، تلویزیون، سینما و بازی های ویدیویی. اینها به تعداد زیادی از ساعات صرف شده در روز در رسانه های جمعی کمک می کنند، در واقع طبق گزارش نیلسن در سال 2018، متوسط ​​بزرگسالان آمریکایی کمتر از 11 ساعت در روز را با نوعی حواس پرتی در قالب رسانه صرف می کنند.انجام پروژه متلب در فریلنس پروژه

داده ها: داده های گزارش کل مخاطبان سه ماهه اول 2018 Nielsen، بر اساس جمعیت ایالات متحده، توسط خبرنگار اشلی رودریگز در کوارتز گردآوری شده است.


و همه اینها حتی بدون اشاره به غول موجود در اتاق است که اینترنت بسیار مخوف است. مصرف وب روی گوشی‌های هوشمند، تبلت‌ها و رایانه‌های رومیزی در مجموع به 24 ساعت در هفته می‌رسد (منبع) که مقدار خیره‌کننده‌ای است، و این چیزی نیست که شرکت‌ها با افزایش تمایلشان به دیجیتالی کردن تمام محتوا و پلتفرم‌های خود، آن را نادیده بگیرند. مصرف کنندگان می توانند به مصرف خود ادامه دهند و سود آنها همچنان جریان داشته باشد.


با این حال، همه چیز تلخ و تاریک نیست، زیرا ظهور اینترنت عصر جدیدی از محتوا، بحث‌ها و خلاقیت‌های مبتنی بر جامعه را به وجود آورده است که اگر شبکه عظیم آنلاینی که افراد از سراسر جهان را به هم متصل می‌کند، امکان‌پذیر نبود. کره زمین دو ذینفع اصلی این راه ارتباطی جدید، ساکنان یوتیوب و اینستاگرام با توجه به منبع دنیای اطلاعات دیجیتال (اگر صرفاً بر تولید محتوا به خاطر سرگرمی و سود تمرکز کنید) خواهند بود. برای چنین رسانه نوپایی، اینترنت جامعه را به روشی غیرقابل برگشت شکل داده است، به طوری که هر فردی 20 ساله و کمتر (به اصطلاح "هزاره ها") حتی نمی تواند عصری را درک کند که در آن اینترنت چیزی نبود (خواه این باشد یا نباشد). مشکلی است که قابل بحث است، اما من پرت می شوم). همه اینها تنها به دلیل آگاهی عمومی صاحبان پلتفرم از اینترنت و نحوه استفاده (و سوء استفاده از آن) برای تولید هر چه بیشتر پول، چه خوب و چه بد، امکان پذیر است. یوتیوب با استفاده از تبلیغات و جمع‌آوری داده، دقیق‌ترین الگوریتم ممکن را تا به امروز ایجاد کرده است که دقیقاً آنچه را که می‌خواهید تماشا کنید، به شما نشان می‌دهد، قبل از اینکه بدانید می‌خواهید آن را تماشا کنید (همه ما ده‌ها ویدیو را در 4 اینچ مشاهده کرده‌ایم. صبح، تو تنها نیستی). همین امر در مورد اینستاگرام (و سایر شبکه های رسانه های اجتماعی) نیز صدق می کند. به محض اینکه یک «اینفلوئنسر» را اضافه می‌کنید، میلیون‌ها پیشنهاد دیگر ظاهر می‌شوند که به طرز عجیبی دقیقاً همان چیزی است که شما به آن علاقه دارید. این برای سازنده عالی است، اما آیا به نفع کاربر است؟ در وبلاگ آینده در مورد این موضوع بیشتر بحث خواهیم کرد، بنابراین برای اطلاعات بیشتر در ارتباط باشید!سفارش طراحی سایت