newvertex



سلام بعد از مدت خیلی طولانی .

خب یه مرخصی نسبتا کوتاه ولی مفید دیگه


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

یه برنامه برای مدیریت یه آموزشگاه موسیقی که براشون کارای ثبتنام و مدیریت هزینه های شهریه و هزینه های خودشون رو انجام بده

که در ادامه یه مقدار درموردش توضیح میدم

ادامه مطلب

بعد از مدت طولانی دارم مینویسم و در مورد بات فری نایت هست که اینبار ارتقا پیدا کرده و رابط تحت وب به اون اضافه شده.

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

سعی میکنم یکم درموردش تو ادامه ی این پست بنویسم.
ادامه مطلب

بات تلگرام فری نایت

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

اگر دستور /help رو ارسال کنید راهنمای کوتاهی نمایش داده میشه و درمورد دستورات توضیحات مختصری میده، منم اینجا یکم درموردشون توضیح بیشتری می نویسم:
ادامه مطلب

آدرس گیتهاب سورس ماژول

آدرس npm


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

ادامه مطلب

آدرس گیتهاب سورس ماژول



آدرس npm



برای اینکه راحت تر در لیست فیلم های موجود در imdb جستجو کرده و اطلاعات فیلم را دریافت کنیم بصورت مستقیم هیچ api خاصی از طرف خود سایت اصلی ارائه نمیشود، اما میتوان از api سایت omdb استفاده کرد برای دسترسی و جستجوی فیلم ها و سریال ها و دریافت تمامی اطلاعات آنها

ماژول imdb-search که روی ماژول omdb قرار دارد و از آن برای ارسال درخواست و دسترسی به اطلاعات فیلم ها استفاده میکند اما یک رابط خیلی راحت تر بصورت Promise در اختیار توسعه دهنده قرار می دهد تا بدون نیاز به استفاده از callback بتوانند به راحتی درخواست های خود را ارسال کنند

همچنین در این ماژول یک فیلد id به لیست فیلم های پیدا شده از جستجو اضافه می شود تا کاربر بتواند به راحتی با ارسال یک عدد ساده فیلم مورد نظر را انتخاب کرده و جزئیات بیشتر را دریافت کند(نیازی به استفاده از کد مخصوص و متحصر به فرد و طولانی خود imdb نمی باشد)

ادامه مطلب

امروز یکم وقت گذاشتم و ماژول رو آپدیت کردم و امکان استفاده از placeholder برای جایگذاری کردن مقدار ها در متن ها رو بهش اضافه کردم

با این ویژگی جدید دیگه لازم نیست متن ها رو با مقدار های مختلف که توی برنامه عوض میشه و از کاربر معمولا دریافت میشه رو تیکه تیکه و چند بار درخواست کنیم و با مقدار ها جمع کنیم

کافیه مقدار هارو بصورت یه شی به تابع اصلی ماژول(تابع درخواست ترجمه) ارسال کنیم
حالا اگر متن های نوشته شده در فایل ترجمه دارای علامت مشخص %{object-field-name} باشند که داخل اون علامت براکت باید اسم فیلدی از شی ارسالی باشه به عنوان کلید تا مقدار اون جایگزین کل placeholder بشه

اینطوری خیلی کار ها راحت تر شد و خیلی راحت و سریعتر میشه ازش استفاده کرد


کافیه اینطوری تابع رو صدا بزنم :
اگر توی فایل زبان اینطوری نوشته شده باشه :
{
"welcome-text": {
"en": "Welcome %{name}!",
"fa": "خوش اومدی %{name}!"
}
}

حالا وقتی داخل کد تابع رو صدا بزنم و آبجکت رو ارسال کنم

__('welcome-text', { name: 'Marty' }, 'en');
// متن خروجی از تابع بالا متن رو با مقدار ارسال شده برمیگردونه : "Welcome Marty!"

__('welcome-text', { name: 'مارتی' }, 'fa');
// متن خروجی از تابع بالا متن رو با مقدار ارسال شده برمیگردونه: سلام مارتی!

یکی از ویژگی های بات کوتاه کردن لینک هستش، حالا من تصمیم گرفتم اگر لینک مستقیم به فایل بود حجم و نام فایل رو هم توی درخواست به کاربر برگردونه

من برای ارسال درخواست های http از axios استفاده میکردم چون میتونستم از promise که برمیگردوند برای تعیین جواب استفاده کنم

برای دریافت حجم فایل میشه از متد head استفاده کرد که یه درخواست برای دریافت هد صفحه رو ارسال میکنه و کاری به محتوا نداره پس کل فایل یا صفحه خونده نمیشه و نتیجه ای که برمیگرده شامل اطلاعات صفحه هست که اگر فایل باشه پس فیلد content-length هم هست که توی اون حجم فایل مشخص شده

با axios.head میشه اینکارو انجام داد و به خوبی کار میکنه ولی به یه مشکل عجیب برخوردم!

وقتی از یه سرور خاص head request میکردم شروع میکرد به خوندن کل محتوای صفحه که یعنی داشت کل فایل رو دانلود میکرد!!! ( من اینو نمیخواستم و اصلا درست نبود )

با پلاگین rest-client اتم یه درخواست هد ارسال کردم به اون آدرس و جواب رو چک کردم دیدم جواب برگشت بدون مشکل پس چرا وقتی من این درخواست رو میفرستادم کار نمیکرد! وقتی headers رو چک میکردم دیدم که سروری که آدرس اون رو بررسی دارم میکنم متد head request رو اجازه نمیده و غیر مجاز اعلان کرده! برام جالب شد که پس بخاطر همین احتمالا axios درخواست رو به get تغییر میده و شروع به دانلود میکنه!

یه نگاه انداختم و دیدم که خود rest-client داره از پکیج request استفاده میکنه، قبلا دیده بودم این ماژول رو چیزای زیادی ازش خونده بودم ولی هیچ وقت نرفتم که باهاش کار کنم و ازش استفاده نکرده بودم ولی اینبار تصمیم گرفتم ازش استفاده کنم

ماژول request-promise-native رو که نسخه ای request هست که از promise خودت جاوا es6 استفاده میکنه رو نصب کردم و درخواست رو باهاش ارسال کردم و مشکل حل شد

خود کد هم به همراه جدا کردن اسم فایل از آدرس هست اینجا داخل این فایل از بات قرار داره


تبلیغات

آخرین ارسال ها

آخرین جستجو ها

S.F.9 فوق تخصص جراحی زانو-متخصص ارتوپدی آگهی رایگان بقیمت حل المسائل معادلات دیفرانسیل جورج سیمونز stretch ceiling عاشقانه هایی که باید آنها را بلد بود. hack by ali بلاگ رسمی شرکت سلامت آذین پارسیان زعفران