شرط بندی فوتبال : چگونه با خواندن RFC 1034 نیمی از روز هدر ندهیم


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

HEY از سیستم استقرار شاخه ای استفاده می کند که من دارم در اینجا در SvN نوشته شده است و مرتباً در مورد در توییتر. بسیاری از شرکت ها نسخه خود را از استقرار شعبه (به طور معمول با نام دیگری) پیاده سازی کرده اند ، اما این اجرای خود من بود ، بنابراین من به آن افتخار می کنم. ابتدا یک آغازگر نحوه کار:

تنظیمات فعلی ما به خوبی کار می کند ، اما دارای دو عیب بزرگ است:

  • هر شاخه به ALB خاص خود نیاز دارد (این همان چیزی است که توسط منبع Ingress تولید می شود).
  • DNS است DNS است DNS است و بعضی اوقات طول می کشد تا تکثیر شود و ما نیاز به مدیریت یک رکورد (3-5 برای هر شاخه) داریم.

این خطاها بهم پیوسته است: اگر مجبور نباشم به هر شاخه ALB خود را بدهم ، می توانم از یک رکورد wildcard استفاده کرده و هر زیر دامنه را در دامنه اختصاصی شاخه خود به یک ALB هدایت کنم و اجازه دهم مسیر ALB کجا باشد آنها از طریق سرصفحه های میزبان تعلق دارند. این بدان معنی است که من می توانم بدون نیاز به همه آن ALB ها پس انداز کنم و می توانیم زمان DNS-DNS را به صفر برسانیم (و پیچیدگی های حاشیه نویسی و شرطی های خارجی-گسترش یافته در YAML ما).

(در حالی که چند دقیقه انتظار برای انتشار و حل DNS به نظر نمی رسد مشکل بزرگی باشد ، ما با بررسی اینکه واقعاً با استفاده از یک مسیر داخلی در نام میزبان جدید به محض اتمام ساخت استقرار ، باعث می شود که ما قبل از ایجاد رکورد و ذخیره سازی محلی دستگاه خود ، پاسخ NXDOMAIN را تا زمان انقضا TTL برای حل DNS حل کنیم.)

پیش از این ، این کار عملی بود ، اما به تلاش اضافی نیاز داشت که ارزش آن را نداشت – احتمالاً لازم است از طریق یک کنترل کننده سفارشی انجام شود که از اضافه کردن خدمات شما به یک شی object Ingress از طریق حاشیه نویسی های سفارشی مراقبت کند. این مسیر Fine ™ was بود (من حتی یک کنترل کننده اثبات مفهوم درست کردم که این کار را انجام داد) ، اما این بدان معنی بود که یک ابزار اضافی وجود دارد که اکنون باید مدیریت کنیم ، همراه با نیاز به ایجاد و مدیریت آن شی object اصلی Ingress .

وارد نسخه جدید کنترل کننده کنترل ورودی (و نام جدید آن است: aws-load-balancer-controller) که شامل یک جدید است IngressGroup ویژگی که دقیقا آنچه من نیاز دارم این مجموعه ای جدید از حاشیه نویسی را اضافه می کند که می توانم به Ingress خود اضافه کنم که باعث می شود همه منابع Ingress من قوانین هدایت یک ALB منفرد باشد نه ALB های منفرد.

“عالی!” با خودم فکر می کنم صبح که پروژه آزمایش نسخه جدید را شروع می کنم و می فهمم چگونه می خواهم این کار را انجام دهم (با استفاده از آن به عنوان فرصتی برای پاکسازی دسته ای از بدهی های فنی نیز).

من همه چیز را در جای خود قرار می دهم – من کنترل کننده aws-load-balancer-controller را در خوشه آزمایشی خود به روز کردم ، تمام سوابق ALIAS مخصوص شاخه را که برای ALB های قدیمی وجود داشت حذف کردم ، به خارجی-dns گفتم که دیگر منابع Ingress را مدیریت نکنید ، و یک کارت wildcal ALIAS راه اندازی کنید که با اشاره به ALB جدید من که همه این شاخه ها باید به اشتراک بگذارند

کار نمی کند

$ curl --header "Host: alb-v2.branch-deploy.com" https://alb-v2.branch-deploy.com
curl: (6) Could not resolve host: alb-v2.branch-deploy.com

اما اگر من مستقیماً با هدر میزبان مناسب با ALB تماس بگیرم ، این کار را انجام می دهد:

$ curl --header "Host: alb-v2.branch-deploy.com" --insecure https://internal-k8s-swiper-no-swiping.us-east-1.elb.amazonaws.com
<html><body>You are being <a href="https://alb-v2.branch-deploy.com/sign_in">redirected</a>.</body></html>

(╯ ° □ °) ╯︵ ┻━┻

من هیچ سرنخی ندارم که چه خبر است. من به وضوح می بینم که رکورد در Route53 وجود دارد ، اما من نمی توانم آن را به صورت محلی حل کنم ، و همچنین برخی از سرویس های تست DNS (. MX Toolbox) نمی تواند.

ممکن است گزینه “ارزیابی سلامت هدف” در کاراکتر وحشی باشد؟ آن را غیرفعال کرد و دوباره امتحان کرد ، هنوز چیزی نیست.

من کاملاً گیر افتاده و شروع به مرور سایت می کنم اسناد Route53 و این خط را پیدا کنید و فکر کنید این پاسخ به مشکل من است:

اگر رکوردی به نام * .example.com ایجاد کنید و سابقه.com ​​وجود ندارد ، مسیر 53 به درخواست های DNS برای مثال.com پاسخ می دهد با NXDOMAIN (دامنه ناموجود).

بنابراین ، من برای ایجاد رکورد برای branch-deploy.com می روم تا ببینم آیا شاید این باشد. اما هنوز این کار را انجام نمی دهد. این زمانی است که آن سطر را دوباره می خوانم و می فهمم که به هر حال برای من صدق نمی کند – من اولین بار آن را اشتباه خوانده بودم ، سعی نمی کنم شاخه-deploy.com را حل کنم. (خوانش اولیه من این بود که * .branch-deploy.com بدون وجود سابقه برای branch-deploy.com برطرف نمی شود).

Welp ، زمان کاوش در است RFC، چیزهای مبهمی وجود دارد که من اینجا گم کرده ام. تصور درست بود

RC های Wildcard اعمال نمی شوند:

– وقتی پرس و جو در یک منطقه دیگر است. یعنی ، نمایندگی پیش فرض های کارت وحشی را لغو می کند.

– هنگامی که نام پرس و جو یا یک نام بین دامنه wildcard و نام query وجود داشته باشد. به عنوان مثال ، اگر یک wildcard RR دارای نام مالک “* .X” باشد ، و این منطقه همچنین حاوی RR های متصل به BX باشد ، کارتهای wild برای درخواستهای نام ZX اعمال می شوند (با فرض اینکه هیچ اطلاعات صریح برای ZX وجود ندارد) ، اما نه به BX ، ABX یا X.

هوم ، آن گلوله دوم به نظر سرب می رسد. بگذارید به منطقه Route53 خود برگردم و نگاه کنم.

ノ (゜ – ゜ ノ)

آه ، من آن را می بینم.

یکی از ویژگی های سیستم استقرار شعبه ما این است که شما همچنین می توانید خط لوله نامه پستی ویژه شعبه خود داشته باشید. برای استفاده از آن ویژگی ، ایمیل می کنید yourself@your-branch.branch-deploy.com. برای ساخت آن کار ، هر شعبه یک رکورد MX در سایت-branch.branch-deploy.com شما بدست می آورد.

در اینجا مسئله نهفته است. اگر می توانید یک رکورد wildcard برای branch-deploy.com داشته باشید ، اگر یک رکورد MX (یا هر رکورد دیگری واقعاً) برای یک زیر دامنه مشخص وجود داشته باشد و سعی کنید از-branch.branch-deploy.com خود ، A / AAAA / بازدید کنید. وضوح CNAME از درخت به حیوان وحش صعود نمی کند. 🙃

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




سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : افکار نوشتن یک اسکریپت Google App


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

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

Google Sheets یک بستر عالی برای افراد غیر برنامه نویس است

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

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

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

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

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

سخت ترین قسمت احراز هویت است

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

بخش اصلی دریافت لیست ها بود ، نه به معنای واکشی آنها از REST URL (که باز هم آسان است) ، بلکه برای جلب رضایت خدماتی است که اسکریپت برای دریافت این داده ها مجاز است. هر دو سرویس از OAuth برای مرتب سازی احراز هویت استفاده می کنند ، اما این استاندارد حتی با کتابخانه ای که اسکریپت های Google App ارائه می دهد هیچ نشانه ای از تمیز کردن و پخش آن نیست.

در پایان من به احراز هویت نیمه اجتناب و کاملاً اجتناب کردم. Slack مکانیسم خوبی دارد که با استفاده از آن می توانید برنامه ای برای دسترسی به داده های Slack ایجاد کنید ، مجوزهای لازم را به آن بدهید و یک رمز دسترسی ساده در وب سایت خود به شما می دهد. برای این نرم افزار فقط می توانم آن رمز دسترسی را در اسکریپت قرار دهم. معمولاً این یک عمل امنیتی ضعیف است ، اما در این حالت اسکریپت همان صفحه داده ای است که بارگیری می کند (و این داده ها به شدت حساس نیستند). بیشترین پیچیدگی را که OAuth ارائه داد ، قدم برد.

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

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

مستندات Google غیر صفر است

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

سازماندهی صفحه گسترده

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

با توجه به این کمبود ، من با غریزه همیشگی ام رفتم. اولین غریزه این است که داده ها را با حداقل دستکاری در فروشگاه محلی بارگیری کنید. بنابراین اسکریپت من برای بارگیری داده ها از slack کاری بیش از انتخاب زمینه های مورد نظر من و ریختن آنها در یک صفحه صفحه گسترده نبود. به همین ترتیب صفحه من از داده های Patreon یک بارگذاری ساده از پرونده CSV را از Patreon فرض می کند. هر دو این صفحات برای پاک کردن و جایگزینی کل صفحه هنگام تازه سازی ساخته شده اند. صفحه سوم فقط شامل لیستی از موارد استثنائی است که توسط دست نگهداری می شود. هر سه این صفحات ، داده های خالص داده ها ، یک جدول واحد ، عناوین در ردیف 1 ، بدون فرمول هستند. اسکریپت مقایسه از این سه صفحه داده خوانده می شود ، منطق کاربرد (ساده) را انجام می دهد و دو لیست را به یک صفحه خروجی جداگانه منتقل می کند.

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

از appendRow برای افزودن ردیف ها استفاده نکنید

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

با شکار در اطراف API ، دیدم که بسیاری از عملیات صفحه گسترده به تعیین دامنه در صفحه گسترده بستگی دارد. من با استفاده از یک ردیف جدید اضافه می کردم
Sheet.appendRow، اما اگر محدوده ای را تعریف کنم (که می تواند کل صفحه باشد) ، می توانم استفاده کنم Range.setValues بجای. هنگامی که من این کار را کردم ، اضافه کردن ردیف ها به طور فوری انجام شد. من هیچ نکته ای در اسناد یا جای دیگری در وب برای آزمایش این مورد پیدا نکردم ، این مهم از آنجاست که کمبود این نوع اسناد مانع استفاده گسترده مردم از این سیستم عامل است.

به جستجوی API اجازه دهید چندین مقدار را جستجو کند

همانطور که در بالا ذکر کردم ، به دلیل مشکلات موجود در احراز هویت ، در نهایت از رابط REST برای داده های Patreon استفاده نکردم. اما دلیل دیگری برای حمایت از بارگیری CSV وجود داشت. Patreon API منبعی را شامل می شد که به من می گوید همه افرادی که طرفدار یک کمپین هستند ، برای این افراد شناسه Patreon و نام آنها را به من می دهد. اما برای بررسی صحیح لیست slack ، به ایمیل آنها نیز احتیاج داشتم. که من می توانم با گرفتن یک منبع نمایه شده توسط شناسه ، به دنبال آن باشم. با این حال لازم است که این کار را برای چند صد نفر انجام دهم ، و برای هر یک از آنها یک GET جداگانه لازم دارم.

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

من دوست دارم منطق برنامه را از صفحه گسترده IO جدا کنم

روش دستیابی به داده ها از صفحه گسترده استفاده از ستون و سطرهای مرسوم صفحه گسترده است (به عنوان مثال سلول “B22” یا دامنه “A2: E412”). این برای بسیاری از وظایف اسکریپت نویسی منطقی است ، زیرا برنامه نویسان در مورد دستکاری سلولهای صفحه گسترده به این مسئله فکر می کنند.

من تمایل دارم که چیزها را متفاوت ببینم ، داده هایم را به صورت ساختارهای اصلی داده های جاوا اسکریپت ترجیح می دهم ، به ویژه اینکه می توانم از JavaScript استفاده کنم خط لوله جمع آوری
اپراتورهای موجود در آنها

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

extractData(sheetName, firstCol, lastCol, mapper) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName)
  const numRows = sheet.getLastRow()
  const range = `${firstCol}1:${lastCol}${numRows}`
  return sheet.getRange(range).getValues().map(mapper)
}

سپس می توانم از آن با کدی مانند این استفاده کنم:

const mapper = row => ({email: row[3], name: row[0], slackId: row[1]})
slackData = this.extractData("raw-slack-download", "A", "D", mapper)

هنگامی که آن را وارد آرایه کردم ، فهمیدم که نتایج آسان است ، اگرچه مجبور شدم یک مطلب ساده بنویسم Array.difference عملکردی که من به آن دسترسی نداشتم لوداش.

محیط توسعه قابل درک است

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

اگر کار پیچیده تری انجام می دادم ، در مورد ایجاد یک محیط بهتر تحقیق می کردم. یک احتمال این است که ببینم آیا می توانم اسکریپت را با استفاده از حالت عالی Tramp Emacs ویرایش کنم (که اجازه می دهد فایل های از راه دور را ویرایش کنید ، مثل اینکه آنها محلی هستند.) هنوز هم یک راه بهتر برای همگام سازی فایل های محلی با google drive ، به من اجازه می دهد تا آنها را حفظ کنم کد منبع در repo git. اما برای یک کار ساده مانند این ، حدود 150 خط کد ، ارزش بررسی این مسئله را نداشت که آیا این امکان وجود دارد.

خلاصه

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



سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر