قدیمها به این فکر کرده بودم که اگه کسی url فایل ربات تلگرامی روی سرورمون رو بدونه، میتونه آپدیتهای فیک براش بفرسته و خیلی کارها کنه. جوابم هم این بود که کسی قرار نیست url رو بدونه. ختم جلسه.
اما خب تلگرام اومده و یه ایده خوب برای پیشگیری از این مشکل ارائه کرده. یه پارامتر جدید به متد setWebhook به اسم secret_token اضافه شده که بعدا همین رو توی header براتون میفرسته تا از اعتبار آپدیت مطمئن بشید. این secret token رو هم میتونید پیش خودتون (مثلا اگه حرفهای هستید توی فایل env و اگه نوب هستید هاردکدشده) داشته باشید تا با هر ریکوست این اعتبارسنجی انجام بشه.
https://core.telegram.org/bots/api#setwebhook
یه کاربر روی Gituhb زحمت کشید و این رو به عنوان pull request برای پروژه TeleBot فرستاد:
https://github.com/muhammadmp97/TeleBot/pull/6
بعدش خودم دردسر شدیدی کشیدم تا برای این قابلیت جدید تست بنویسم که باعث شد کد خود پکیج رو تغییر بدم و به جای
https://github.com/muhammadmp97/TeleBot/commit/4ca12eba865476869887705446fb2e11c95889fd
انشاءالله همین روزها یه مقاله درباره این مشکل که نمیشه برای
اما خب تلگرام اومده و یه ایده خوب برای پیشگیری از این مشکل ارائه کرده. یه پارامتر جدید به متد setWebhook به اسم secret_token اضافه شده که بعدا همین رو توی header براتون میفرسته تا از اعتبار آپدیت مطمئن بشید. این secret token رو هم میتونید پیش خودتون (مثلا اگه حرفهای هستید توی فایل env و اگه نوب هستید هاردکدشده) داشته باشید تا با هر ریکوست این اعتبارسنجی انجام بشه.
https://core.telegram.org/bots/api#setwebhook
یه کاربر روی Gituhb زحمت کشید و این رو به عنوان pull request برای پروژه TeleBot فرستاد:
https://github.com/muhammadmp97/TeleBot/pull/6
بعدش خودم دردسر شدیدی کشیدم تا برای این قابلیت جدید تست بنویسم که باعث شد کد خود پکیج رو تغییر بدم و به جای
()die از exceptionها استفاده کنم:https://github.com/muhammadmp97/TeleBot/commit/4ca12eba865476869887705446fb2e11c95889fd
انشاءالله همین روزها یه مقاله درباره این مشکل که نمیشه برای
()die تست نوشت مینویسم و راهحلهایی که چک کردم رو به همراه معایبشون میگم. به پکیج TeleBot ستاره بدید و حتما ازش برای توسعه رباتهاتون استفاده کنید. برای خونه خودمون هم از همین بردم.🔥4😁2👍1
package main
type Duration int64
func main() {
var dur Duration
dur = int64(1000)
}
این کد توی Go ارور میده. از بس سر تایپ سختگیره!
حالا کوروش کمپانی فرار کرد ولی یه پنج تومن به من بدید، اگه رفتم و یه زمانی دیدمش، پولتون رو ازش میگیرم. هیچ چشمداشت مادی هم ندارم و این کار رو برای کشور عزیزم ایران انجام میدم. 🇮🇷❤️
۷۶
۷۶
😁10
برای یکی از مشتریها شک داشتم HTML/CSS تکراری بنویسم یا اینکه کمی وقت بذارم و قضیه رو اتوماتیک کنم. تصور کنید یه سری سرویس وجود داره که هر کدوم قیمت جدایی دارند. توی ویو، میشد برای هر کدوم یه سکشن درست کنم و...
الآن که درخواست ادیت دادند و خیلی چیزها تغییر کرد، مطمئن شدم که تصمیمم درست بوده. این تصمیم رو گرفتم، چون مطمئن بودم سرویسها تغییر خواهند کرد. انعطاف پیچیدگی میاره، پس تصمیم اینکه انعطاف رو ترجیح بدید دشواره.
الآن که درخواست ادیت دادند و خیلی چیزها تغییر کرد، مطمئن شدم که تصمیمم درست بوده. این تصمیم رو گرفتم، چون مطمئن بودم سرویسها تغییر خواهند کرد. انعطاف پیچیدگی میاره، پس تصمیم اینکه انعطاف رو ترجیح بدید دشواره.
👍3
میخوایید هر وقت روی ریپازیتوریتون Issue/PR خورد، توی تلگرام براتون نوتیفیکیشن بیاد؟ از این اکشن که تازگی نوشتم استفاده کنید:
https://github.com/marketplace/actions/blue-octocat
https://github.com/marketplace/actions/blue-octocat
GitHub
Blue Octocat - GitHub Marketplace
Github action for getting Telegram notifications
🤩4👍2
Philocode
میخوایید هر وقت روی ریپازیتوریتون Issue/PR خورد، توی تلگرام براتون نوتیفیکیشن بیاد؟ از این اکشن که تازگی نوشتم استفاده کنید: https://github.com/marketplace/actions/blue-octocat
خیلی درگیر این بودم تا اینکه مشکلاتش رو رفع کردم و فایل readme هم آپدیت شد. اگه خواستید به ریپازیتوریتون ادش کنید و بلد نبودید، توی کامنت یا پیوی بگید تا راهنمایی کنم. 😍🍓
❤2
از مصاحبه بر میگردم... نتیجه اخلاقی بازم اینه که انگلیسیتون رو هرچی قوی کنید کمه. 😂
اون آخرش یه جمله گفت توش recap داشت، امیدوارم جواب پرت نداده باشم. 😂
اون آخرش یه جمله گفت توش recap داشت، امیدوارم جواب پرت نداده باشم. 😂
😁2
کانفیگهای لاراول چطوری به دست ما میرسه؟
public/index.php
خب الآن بریم سراغ متد handle:
Illuminate\Foundation\Http\Kernel
بعد بریم سراغ متد sendRequestThroughRouter:
حالا بریم سراغ این یکی متد:
اینجا میبینیم روی app که در واقع instance از کلاس Application بوده، متد bootstrapWith رو صدا میزنه و یه آرایه رو بهشون پاس میده که لیست bootstrapperهاست که یکیشون اینه: LoadConfiguration.
حالا توی این کلاس هم یه متد bootstrap هست که صدا زده میشه، و داخل این متد، متد loadConfigurationFiles صدا زده میشه که اصل اتفاق میافته؛ فایلهای کانفیگ رو لیست میکنه و بعد یکی یکی محتواشون رو توی Repository ست میکنه. به require هم دقت کنید. کد:
Illuminate\Foundation\Bootstrap\LoadConfiguration
این هم از متد set:
Illuminate\Config\Repository
حالا نخواستم وارد جزئیات بشم، چون نخواستم طولانی بشه و خودتون میتونید دقیقتر نگاه کنید.
سوالی هم داشتید میتونید بپرسید.
$response = $kernel->handle(
$request = Request::capture()
)->send();
public/index.php
خب الآن بریم سراغ متد handle:
$response = $this->sendRequestThroughRouter($request);
Illuminate\Foundation\Http\Kernel
بعد بریم سراغ متد sendRequestThroughRouter:
$this->bootstrap();
حالا بریم سراغ این یکی متد:
if (! $this->app->hasBeenBootstrapped()) {
$this->app->bootstrapWith($this->bootstrappers());
}اینجا میبینیم روی app که در واقع instance از کلاس Application بوده، متد bootstrapWith رو صدا میزنه و یه آرایه رو بهشون پاس میده که لیست bootstrapperهاست که یکیشون اینه: LoadConfiguration.
حالا توی این کلاس هم یه متد bootstrap هست که صدا زده میشه، و داخل این متد، متد loadConfigurationFiles صدا زده میشه که اصل اتفاق میافته؛ فایلهای کانفیگ رو لیست میکنه و بعد یکی یکی محتواشون رو توی Repository ست میکنه. به require هم دقت کنید. کد:
$files = $this->getConfigurationFiles($app);
if (! isset($files['app'])) {
throw new Exception('Unable to load the "app" configuration file.');
}
foreach ($files as $key => $path) {
$repository->set($key, require $path);
}
Illuminate\Foundation\Bootstrap\LoadConfiguration
این هم از متد set:
$keys = is_array($key) ? $key : [$key => $value];
foreach ($keys as $key => $value) {
Arr::set($this->items, $key, $value);
}
Illuminate\Config\Repository
حالا نخواستم وارد جزئیات بشم، چون نخواستم طولانی بشه و خودتون میتونید دقیقتر نگاه کنید.
سوالی هم داشتید میتونید بپرسید.
👍1🤩1
ملت شریف ایران؛ با تشکر از نمایندههایی که به اون مجلس فرستادید، قانون بازنشستگی جدید مبارک.
😁7❤1😢1🤩1
فکت: خیلی از کلمات انگلیسی که بلدیم رو اشتباه تلفظ میکنیم!
من از دیشب فهمیدم که certain و wound رو اشتباه تلفظ میکردم. 🤦♂️
من از دیشب فهمیدم که certain و wound رو اشتباه تلفظ میکردم. 🤦♂️
👍3