فرق api تلگرام با cli یا کلاینت چیه؟
api چیه؟
هر سرویسی میتونه روی بستر http یک سری api ارائه بده که بر اساس درخواست ها یا همون request ها یک سری عملیات رو توی اون سرویس برای ما انجام بده. api های مختلفی وجود داره که میتونن پولی یا بعضا رایگان باشن. مثل api قیمت ارز و طلا، api صرافی های ارز دیجیتال برای انجام معاملات خودکار و ...
شبکه های اجتماعی و پیام رسانها هم در چند سال اخیر api هایی ارائه میدن که برنامه نویسها به کمک اون api ها بتونن یک سری کارهارو در بستر اون شبکه اجتماعی انجام بدن و برنامه های جانبی بسازن که به کاربران اون شبکه اجتماعی یا پیام رسان کمک کنه یا قابلیت های متنوعی برای تعامل بیشتر ایجاد کنه. از این موارد میشه به توییتر، واتسآپ و ... اشاره کرد.
اما یکی از قویترین عملکردها رو در این زمینه تلگرام ارائه داد که با کمک api بشه ربات هایی ساخت که بسیار پرکاربرد باشن و تجربه کاربری رو در این پیامرسان افزایش بده. هممنون با ربات های تلگرامی با کاربرد های متنوع آشنا هستید. از نمونه های اونها میتونم به ربات مدیریت گروه و ربات مدیریت کانال خودم اشاره کنم.
@mnrg1bot
@mnrcbot
اما قبل از اومدن ربات های api به تلگرام بعضا شما ربات هایی دیده بودید که ربات نبودن شبیه یک کاربر بودن ولی عملکردشون شبیه به ربات بود. به اونها میگن ربات های cli یا client bot. اگر توی گیتهاب سرچ کنید کلاینت بات ها هم برای برنامه هایی مثل اینستاگرام هم وجود دارن.
تول تلگرام هم از اونجایی که open source هست و TDLIB رو در اختیار همه گذاشته که پایه و اساس همون تلگرام های غیر رسمی هست در نتیجه با همین کتابخونه میشه بات های cli ساخت.
مزیتی که میتونه نسبت به ربات های api داشته باشه این هست که در بعضی موارد ربات های api محدودیت هایی دارند که بسته به سیاست های شرکت اضافه نشدند به api. برای مثال دیدن مقدار بازدید از یک پست رو نمیشه با ربات api انجام داد. یا پاکسازی کامل یک گروه و کانل رو نمیشه با ربات api انجام داد. ولی با ربات cli میشه این موارد رو انجام داد.
یکی از ریپوهایی که به زبان php هم نوشته شده برای ساخت ربات cli ریپو MadelineProto هست. ولی کار باهاش یه کم عذاب آور و پردردسر هست. به همین جهت تو فکر این بودم که یک سرویس بسازم که با استفاده از همین ریپو کار کنه ولی بشه به صورت api باهاش کار کرد وقتی امشب داشتم این کار رو شروع میکردم دیدم که مدتی قبل افراد دیگری زحمتشو کشیدن. TelegramApiServer که به کمک همین کتابخونه اومده و به صورت داکرایز شده یک سرویس api ساخته که به راحتی میتونید ازش استفاده کنید.
لینک ها
https://github.com/danog/MadelineProto
https://github.com/xtrime-ru/TelegramApiServer
https://core.telegram.org/tdlib/docs/
https://core.telegram.org/bots/api
api چیه؟
هر سرویسی میتونه روی بستر http یک سری api ارائه بده که بر اساس درخواست ها یا همون request ها یک سری عملیات رو توی اون سرویس برای ما انجام بده. api های مختلفی وجود داره که میتونن پولی یا بعضا رایگان باشن. مثل api قیمت ارز و طلا، api صرافی های ارز دیجیتال برای انجام معاملات خودکار و ...
شبکه های اجتماعی و پیام رسانها هم در چند سال اخیر api هایی ارائه میدن که برنامه نویسها به کمک اون api ها بتونن یک سری کارهارو در بستر اون شبکه اجتماعی انجام بدن و برنامه های جانبی بسازن که به کاربران اون شبکه اجتماعی یا پیام رسان کمک کنه یا قابلیت های متنوعی برای تعامل بیشتر ایجاد کنه. از این موارد میشه به توییتر، واتسآپ و ... اشاره کرد.
اما یکی از قویترین عملکردها رو در این زمینه تلگرام ارائه داد که با کمک api بشه ربات هایی ساخت که بسیار پرکاربرد باشن و تجربه کاربری رو در این پیامرسان افزایش بده. هممنون با ربات های تلگرامی با کاربرد های متنوع آشنا هستید. از نمونه های اونها میتونم به ربات مدیریت گروه و ربات مدیریت کانال خودم اشاره کنم.
@mnrg1bot
@mnrcbot
اما قبل از اومدن ربات های api به تلگرام بعضا شما ربات هایی دیده بودید که ربات نبودن شبیه یک کاربر بودن ولی عملکردشون شبیه به ربات بود. به اونها میگن ربات های cli یا client bot. اگر توی گیتهاب سرچ کنید کلاینت بات ها هم برای برنامه هایی مثل اینستاگرام هم وجود دارن.
تول تلگرام هم از اونجایی که open source هست و TDLIB رو در اختیار همه گذاشته که پایه و اساس همون تلگرام های غیر رسمی هست در نتیجه با همین کتابخونه میشه بات های cli ساخت.
مزیتی که میتونه نسبت به ربات های api داشته باشه این هست که در بعضی موارد ربات های api محدودیت هایی دارند که بسته به سیاست های شرکت اضافه نشدند به api. برای مثال دیدن مقدار بازدید از یک پست رو نمیشه با ربات api انجام داد. یا پاکسازی کامل یک گروه و کانل رو نمیشه با ربات api انجام داد. ولی با ربات cli میشه این موارد رو انجام داد.
یکی از ریپوهایی که به زبان php هم نوشته شده برای ساخت ربات cli ریپو MadelineProto هست. ولی کار باهاش یه کم عذاب آور و پردردسر هست. به همین جهت تو فکر این بودم که یک سرویس بسازم که با استفاده از همین ریپو کار کنه ولی بشه به صورت api باهاش کار کرد وقتی امشب داشتم این کار رو شروع میکردم دیدم که مدتی قبل افراد دیگری زحمتشو کشیدن. TelegramApiServer که به کمک همین کتابخونه اومده و به صورت داکرایز شده یک سرویس api ساخته که به راحتی میتونید ازش استفاده کنید.
لینک ها
https://github.com/danog/MadelineProto
https://github.com/xtrime-ru/TelegramApiServer
https://core.telegram.org/tdlib/docs/
https://core.telegram.org/bots/api
👍4❤1🥰1🌚1
آماده سازی محیط ویندوز برای برنامه نویسی
توی این آموزش تموم کارهایی که خودم همیشه برای آماده سازی ویندوز برای برنامه نویسی انجام میدم رو آموزش دادم. مواردی که در این ویدیو انجام دادیم.
00:00 شروع
03:15 نصب wsl
11:20 نصب گیت روی اوبونتو (wsl)
13:25 نصب php
17:25 نصب کامپوزر
19:03 نصب node و npm
22:18 نصب پاورشل 7.4 روی ویندوز
25:55 نصب vscode
28:24 سفارشی سازی windos terminal
31:40 نصب فونت fira code روی ویندوز
34:08 نصب vscode روی wsl ویندوز
34:15 نصب powertoys روی ویندوز
41:55 نصب داکر روی ویندوز
44:40 پایان
https://youtu.be/12f6Guf5L3U
توی این آموزش تموم کارهایی که خودم همیشه برای آماده سازی ویندوز برای برنامه نویسی انجام میدم رو آموزش دادم. مواردی که در این ویدیو انجام دادیم.
00:00 شروع
03:15 نصب wsl
11:20 نصب گیت روی اوبونتو (wsl)
13:25 نصب php
17:25 نصب کامپوزر
19:03 نصب node و npm
22:18 نصب پاورشل 7.4 روی ویندوز
25:55 نصب vscode
28:24 سفارشی سازی windos terminal
31:40 نصب فونت fira code روی ویندوز
34:08 نصب vscode روی wsl ویندوز
34:15 نصب powertoys روی ویندوز
41:55 نصب داکر روی ویندوز
44:40 پایان
https://youtu.be/12f6Guf5L3U
YouTube
آماده سازی محیط ویندوز برای برنامه نویسی
توی این آموزش تموم کارهایی که خودم همیشه برای آماده سازی ویندوز برای برنامه نویسی انجام میدم رو آموزش دادم. مواردی که در این ویدیو انجام دادیم.
00:00 شروع
03:15 نصب wsl
11:20 نصب گیت روی اوبونتو (wsl)
13:25 نصب php
17:25 نصب کامپوزر
19:03 نصب node و npm…
00:00 شروع
03:15 نصب wsl
11:20 نصب گیت روی اوبونتو (wsl)
13:25 نصب php
17:25 نصب کامپوزر
19:03 نصب node و npm…
👍8❤1👌1
به ریپو ساختم برای ران کردن لاراول با داکر اگر نمیخواین از sail استفاده کنید میتونید از این ریپو استفاده کنید
https://github.com/mnr73/laravel-docker-compose
https://github.com/mnr73/laravel-docker-compose
GitHub
GitHub - mnr73/laravel-docker-compose: run latest Laravel version with docker compose
run latest Laravel version with docker compose. Contribute to mnr73/laravel-docker-compose development by creating an account on GitHub.
👍2👏1🙏1
توی انتخاب شغل آیندمون رفتار گلهای نداشته باشیم
البته توی هیچ کاری نباید کورکورانه تقلید کنیم و قبل از هر کاری اون رو بسنجیم و به نتیجه اون کار فکر کنیم ولی مسیر شغلی بخش مهمی از زندگی ما هست و رفتار گلهای توی این مورد میتونه زمان زیادی از زندگی ما رو تحت تاثیر قرار بده.
خیلی از آدمها نمیدونن که به چی علاقه دارن یا اصلا میخوان در آینده چکار کنن. هیچ برنامهای ندارند و فقط دنبال یک راهی برای پول در آوردن میگردن که البته حق هم دارن و درک میکنم که شرایط اقتصادی و وضعیت کار توی این کشور چطوریه. ولی نباید کورکورانه دنبال پول باشیم.
دقیقا خیلی از پیجهای اینستاگرام و پکیج فروش ها از این رفتار گلهای آدم ها سواستفاده میکنند و سود زیادی هم میبرن.
یک مثال خیلی واضح برای این موضوع شغل کاشت ناخن یا ناخن کار هست. چند سال پیش توی صفحه های اینستاگرم استوری هایی گذاشته میشد که مثلا من ناخن کار هستم و ماهی 200 میلیون یا حتی مبالغ خیلی بیشتر درآمد دارم. که خوب احتمالا بعضی از این مبالغ هم نادرست نبوده. ولی خیلی از افراد با دیدن اینها رفتن سراغ آموزش ناخن کاری بدون اینکه اصلا علاقه ای به این کار داشته باشن.
در نتیجه این کار ناخن کارهای قدیمی پول بیشتری هم به دست آوردن، با آموزش به افراد جدید. ولی رفته رفته با ادامه دار شدن این وضع کار به جایی رسید که بازار اشباع شد. یعنی اگر مثلا 5 سال پیش به ازای هر 20 دختر 1 ناخن کار وجود داشت در حال حاضر به ازای هر 20 دختر دست کم 40 ناخن کار وجود داره. خوب طبیعیه که دیگه افراد جدید نمیتونن موفق بشن چون مشتری نیست. این وسط افرادی هم شروع به وارد کردن محصولات متنوع کردن و با فروش لوازم کار ناخن کاری سود زیادی به جیب زدن. دقیقا مثل بیل فروشان در آمریکا در دوره ای که همه دنبال طلا بودن.
این فقط یک مثال خیلی ساده بود تقریبا رفتار مردم همیشه اینطوری بوده که به صورت گلهای عمل کردن همونطور که گفتم حق هم دارن. اگر میخوای رفتار گله ای رو توی مردم یک کشور افزایش بدی و بتونی ازشون سو استفاده کنی باید مردم اون کشور رو تا جایی که میشه فقیر کنی. وقتی مردم فقیر باشند و هر روز توی شبکه های اجتماعی زندگی ها و لایف استایل های لاکچری ببینن دیگه عنان عقلشون رو از دست میدن و بدون تفکر هر کاری میکنن تا پولدار بشن. وقتی به خودشون میان میبینن کلی از عمرشون رفته و نه پولی دارن و نه دیگه انرژی چند سال قبل رو.
دقیقا همین رفتار گله ای رو ما توی سایر حوزه ها و حوزه برنامه نویسی هم داریم یعنی یه عده فقط به خاطر درآمد و پول وارد این حوزه میشن و وقت و انرژی خودشون رو هدر میدن.
مارک زاکربرگ میگه برای اینکه توی کاری موفق باشی یا باید اولین باشی یا بهترین باشی.
وقتی رفتار گلهای داشته باشیم قطعا اولین نیستیم. و برای بهترین بودن هم علاقه نیازه. شما وقتی به کارت علاقه نداشته باشی نمیتونی توش بهترین باشی.
اگر یه ناخن کاری علاقه نداشته باشی نمیتونی بهترین ناخن کار بشی.
اگر به برنامهنویسی علاقه نداشته باشی نمیتونی بهترین برنامهنویس بشی.
و همینطور تا ادامه.
سخن آخر اینکه، اول از همه سعی کنید کاری رو کنید که بهش علاقه دارین. اینطوری احتمال اینکه توی اون کار بهترین بشید خیلی بیشتره. ولی اگر صرفا دنبال پول هستید ایده های جدید رو امتحان کنید، سعی کنید اولین یا جزو اولین ها باشین.
و مولانا چه زیبا میگه:
مر مرا تقلیدشان بر باد داد
که دو صد لعنت بر آن تقلید باد
البته توی هیچ کاری نباید کورکورانه تقلید کنیم و قبل از هر کاری اون رو بسنجیم و به نتیجه اون کار فکر کنیم ولی مسیر شغلی بخش مهمی از زندگی ما هست و رفتار گلهای توی این مورد میتونه زمان زیادی از زندگی ما رو تحت تاثیر قرار بده.
خیلی از آدمها نمیدونن که به چی علاقه دارن یا اصلا میخوان در آینده چکار کنن. هیچ برنامهای ندارند و فقط دنبال یک راهی برای پول در آوردن میگردن که البته حق هم دارن و درک میکنم که شرایط اقتصادی و وضعیت کار توی این کشور چطوریه. ولی نباید کورکورانه دنبال پول باشیم.
دقیقا خیلی از پیجهای اینستاگرام و پکیج فروش ها از این رفتار گلهای آدم ها سواستفاده میکنند و سود زیادی هم میبرن.
یک مثال خیلی واضح برای این موضوع شغل کاشت ناخن یا ناخن کار هست. چند سال پیش توی صفحه های اینستاگرم استوری هایی گذاشته میشد که مثلا من ناخن کار هستم و ماهی 200 میلیون یا حتی مبالغ خیلی بیشتر درآمد دارم. که خوب احتمالا بعضی از این مبالغ هم نادرست نبوده. ولی خیلی از افراد با دیدن اینها رفتن سراغ آموزش ناخن کاری بدون اینکه اصلا علاقه ای به این کار داشته باشن.
در نتیجه این کار ناخن کارهای قدیمی پول بیشتری هم به دست آوردن، با آموزش به افراد جدید. ولی رفته رفته با ادامه دار شدن این وضع کار به جایی رسید که بازار اشباع شد. یعنی اگر مثلا 5 سال پیش به ازای هر 20 دختر 1 ناخن کار وجود داشت در حال حاضر به ازای هر 20 دختر دست کم 40 ناخن کار وجود داره. خوب طبیعیه که دیگه افراد جدید نمیتونن موفق بشن چون مشتری نیست. این وسط افرادی هم شروع به وارد کردن محصولات متنوع کردن و با فروش لوازم کار ناخن کاری سود زیادی به جیب زدن. دقیقا مثل بیل فروشان در آمریکا در دوره ای که همه دنبال طلا بودن.
این فقط یک مثال خیلی ساده بود تقریبا رفتار مردم همیشه اینطوری بوده که به صورت گلهای عمل کردن همونطور که گفتم حق هم دارن. اگر میخوای رفتار گله ای رو توی مردم یک کشور افزایش بدی و بتونی ازشون سو استفاده کنی باید مردم اون کشور رو تا جایی که میشه فقیر کنی. وقتی مردم فقیر باشند و هر روز توی شبکه های اجتماعی زندگی ها و لایف استایل های لاکچری ببینن دیگه عنان عقلشون رو از دست میدن و بدون تفکر هر کاری میکنن تا پولدار بشن. وقتی به خودشون میان میبینن کلی از عمرشون رفته و نه پولی دارن و نه دیگه انرژی چند سال قبل رو.
دقیقا همین رفتار گله ای رو ما توی سایر حوزه ها و حوزه برنامه نویسی هم داریم یعنی یه عده فقط به خاطر درآمد و پول وارد این حوزه میشن و وقت و انرژی خودشون رو هدر میدن.
مارک زاکربرگ میگه برای اینکه توی کاری موفق باشی یا باید اولین باشی یا بهترین باشی.
وقتی رفتار گلهای داشته باشیم قطعا اولین نیستیم. و برای بهترین بودن هم علاقه نیازه. شما وقتی به کارت علاقه نداشته باشی نمیتونی توش بهترین باشی.
اگر یه ناخن کاری علاقه نداشته باشی نمیتونی بهترین ناخن کار بشی.
اگر به برنامهنویسی علاقه نداشته باشی نمیتونی بهترین برنامهنویس بشی.
و همینطور تا ادامه.
سخن آخر اینکه، اول از همه سعی کنید کاری رو کنید که بهش علاقه دارین. اینطوری احتمال اینکه توی اون کار بهترین بشید خیلی بیشتره. ولی اگر صرفا دنبال پول هستید ایده های جدید رو امتحان کنید، سعی کنید اولین یا جزو اولین ها باشین.
و مولانا چه زیبا میگه:
مر مرا تقلیدشان بر باد داد
که دو صد لعنت بر آن تقلید باد
👍5❤🔥1❤1
اگر شما هم از Docker روی WSL ویندوز استفاده میکنید حتما به این مورد بر خوردید که بعضی وقت ها خطا میده که این پورت ها بسته هست
Error response from daemon: Ports are not available: exposing port TCP ...
ولی شما از اون پورت ها استفاده نمیکنید. برای حل این مشکل لازم نیست ویندوز رو ریاستارت کنید😭 . کافیه PowerShell رو به صورت Administrator باز کنید و دستورهای زیر رو به ترتیب بزنید.
همچنین با دستور زیر میتونید رنج پورت هایی که محروم شدن رو ببینید🥳
#داکر #wsl #docker
Error response from daemon: Ports are not available: exposing port TCP ...
ولی شما از اون پورت ها استفاده نمیکنید. برای حل این مشکل لازم نیست ویندوز رو ریاستارت کنید
net stop winnat
net start winnat
همچنین با دستور زیر میتونید رنج پورت هایی که محروم شدن رو ببینید
netsh int ipv4 show excludedportrange protocol=tcp
#داکر #wsl #docker
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍2🔥1
چند روز پیش به طور اتفاقی متوجه شدم وقتی توی صفحه مرورگر از تاچ پد لپتاپ برای zoom کردن استفاده میکنم رفتارش با zoom کردن معمولی که با ctrl+scroll wheel موس انجام میدیم متفاوته. یعنی zoop مرورگر افزایش پیدا نمیکنه و خود اون قسمت زوم میشه.
به نظرم قابلیت خوبی اومد سعی کردم راهی پیدا کنم تا همین رفتار رو با موس بشه انجام داد ولی راهی نبود. دست آخر توی اکستنشن ها دنبالش گشتم تا اکستنشن زیر رو پیدا کردم.
✅ به نظرم این قابلیت خیلی مفیده برای وقت هایی که میخوای توی یه سایتی یه چیزی رو بزرگتر ببینی مثلا عکس پروفایل.
✅ یا مثلا اگر برنامه نویس فرانت هستی و میخوای جزئیات بیشتری رو ببینی میتونی از این اکستنشن استفاده کنی.
😜 بعد از نصب باید مرورگر رو از اول باز کنی
https://chromewebstore.google.com/detail/mouse-pinch-to-zoom/pffiadlahfhoniddbipeiiohjnlongfi
به نظرم قابلیت خوبی اومد سعی کردم راهی پیدا کنم تا همین رفتار رو با موس بشه انجام داد ولی راهی نبود. دست آخر توی اکستنشن ها دنبالش گشتم تا اکستنشن زیر رو پیدا کردم.
https://chromewebstore.google.com/detail/mouse-pinch-to-zoom/pffiadlahfhoniddbipeiiohjnlongfi
Please open Telegram to view this post
VIEW IN TELEGRAM
Google
Mouse Pinch-To-Zoom - Chrome Web Store
Zoom in on a specific part of the website, like you would with a touchpad gesture!
👍5❤🔥2❤1
mnr tech
اگر شما هم از Docker روی WSL ویندوز استفاده میکنید حتما به این مورد بر خوردید که بعضی وقت ها خطا میده که این پورت ها بسته هست Error response from daemon: Ports are not available: exposing port TCP ... ولی شما از اون پورت ها استفاده نمیکنید. برای حل این…
از این روش اگر استفاده کنید داکر درست میشه ولی git push و git pull کار نمیده دیگه. گفتم در جریان باشید تا سر فرصت بررسی کنم ببینم چطور باید این مشکل رو حل کرد.
👍2
Forwarded from زرینپال | ZarinPal
📣 اختلال سراسری به دلیل Iran Access
🟡 پذیرندگان گرامی زرینپال
به اطلاع میرساند با توجه به اعلام شاپرک و نهادهای امنیتی، تا اطلاع بعدی تمام پرداختهای حضوری و غیر حضوری شبکه بانکی و مالی کشور، فقط با IP ایران و از داخل کشور قابل دسترس است. در غیر این صورت ممکن است پرداختها با اختلال همراه باشد.
با تشکر از همراهی و همدلی شما
💛 @zarinpal
🟡 پذیرندگان گرامی زرینپال
به اطلاع میرساند با توجه به اعلام شاپرک و نهادهای امنیتی، تا اطلاع بعدی تمام پرداختهای حضوری و غیر حضوری شبکه بانکی و مالی کشور، فقط با IP ایران و از داخل کشور قابل دسترس است. در غیر این صورت ممکن است پرداختها با اختلال همراه باشد.
با تشکر از همراهی و همدلی شما
💛 @zarinpal
🤬1
زرینپال | ZarinPal
📣 اختلال سراسری به دلیل Iran Access 🟡 پذیرندگان گرامی زرینپال به اطلاع میرساند با توجه به اعلام شاپرک و نهادهای امنیتی، تا اطلاع بعدی تمام پرداختهای حضوری و غیر حضوری شبکه بانکی و مالی کشور، فقط با IP ایران و از داخل کشور قابل دسترس است. در غیر این صورت…
تمام درگاه ها ایران اکسس شده و اگر هاست یا سروری دارین با ip خارج پرداخت های کاربران به مشکل میخوره. امیدوارم این اتفاق موقت باشه و به زودی حل بشه. در غیر این صورت این یک گام بزرگ به سمت محدودیت اینترنت و اینترنت ملی هست.
👍1
پلتفرم پایش و کنترل شیواامواج
نمونه اولیه این پلتفرم در کمتر از یک ما برای دمو در بیست و چهارمین نمایشگاه بینالمللی تهران آماده شد و در حال حاظر با موفقیت در غرفه شیواامواج در نمایشگاه قرار دارد.
در حال حاظر این پلترفم برای پایش ترانس های برق کاربرد دارد ولی به زودی محصولات دیگری در زیمنه IOT به این سامانه اضافه میشود.
برای وبسایت این محصول از vue.js و Laravel و برای ارتباط با دستگاه از پروتکل MQTT استفاده شده که که ارتباط لحظه ای را فراهم میکند، همچنین برای بخش سخت افزاری از ماژول Quectel EC200U استفاده شده که برنامه نویسی آن را همکارم به عهده داشت.
خوشحالم که افتخار این رو داشتم و شرکت شیواامواج این فرصت رو بهم داد که در طراحی سیستم و تعریف این پروژه نقش پررنگی داشته باشم و همچنین مواردی مانند طراحی بکند، فرانت سامانه، ui/ux و پیاده سازی زیرساختها را انجام دهم و همچنین داشتن ارتباط نزدیک با همکارم که بخش الکترونیکی آن را به عهده داشت موجب موفقیت اولیه در این پروژه شد.
البته این فقط نسخه اولیه و شروع کار است و در روزهای پیش رو این پروژه هر روز کاملتر میشود.
پست در لینکدین
نمونه اولیه این پلتفرم در کمتر از یک ما برای دمو در بیست و چهارمین نمایشگاه بینالمللی تهران آماده شد و در حال حاظر با موفقیت در غرفه شیواامواج در نمایشگاه قرار دارد.
در حال حاظر این پلترفم برای پایش ترانس های برق کاربرد دارد ولی به زودی محصولات دیگری در زیمنه IOT به این سامانه اضافه میشود.
برای وبسایت این محصول از vue.js و Laravel و برای ارتباط با دستگاه از پروتکل MQTT استفاده شده که که ارتباط لحظه ای را فراهم میکند، همچنین برای بخش سخت افزاری از ماژول Quectel EC200U استفاده شده که برنامه نویسی آن را همکارم به عهده داشت.
خوشحالم که افتخار این رو داشتم و شرکت شیواامواج این فرصت رو بهم داد که در طراحی سیستم و تعریف این پروژه نقش پررنگی داشته باشم و همچنین مواردی مانند طراحی بکند، فرانت سامانه، ui/ux و پیاده سازی زیرساختها را انجام دهم و همچنین داشتن ارتباط نزدیک با همکارم که بخش الکترونیکی آن را به عهده داشت موجب موفقیت اولیه در این پروژه شد.
البته این فقط نسخه اولیه و شروع کار است و در روزهای پیش رو این پروژه هر روز کاملتر میشود.
پست در لینکدین
🔥5
اگر از wsl روی ویندوز استفاده میکنید حتما شده که فایلی رو از ویندوز به wsl کپی کنید یا انتقال بدید. وقتی این کار رو میکنید یه فایل به همون اسم با پسوند
فایلهای Zone.Identifier فایلهای متادادهای هستند که توسط ویندوز ایجاد میشوند تا اطلاعات مربوط به منطقه امنیتی فایلها (security zone) را ذخیره کنند. این اطلاعات مشخص میکنند که یک فایل از چه منبعی آمده است (مثلاً اینترنت، شبکه محلی، یا سیستم محلی) و به ویندوز کمک میکنند تصمیم بگیرد که آیا فایل باید با احتیاط بیشتری باز شود یا نه.
آیا حذف این فایلها مشکلی ایجاد میکند؟
حذف فایلهای Zone.Identifier معمولاً مشکلی ایجاد نمیکند و باعث نمیشود فایل اصلی تحت تأثیر قرار بگیرد، زیرا این فایلها تنها اطلاعات متاداده هستند. با این حال، با حذف آنها ممکن است برخی ویژگیهای امنیتی ویندوز از کار بیفتند (مثلاً هشدار درباره باز کردن فایلهای دانلود شده).
نکنه اول اینکه حتما این فایل هارو به .gitignore اضافه کنید تا الکی توی پروژه هاتون پوش نشن.
بعد اگر فایل ها رو اعصابتونن و الکی ریپویی که روش کار میکنید رو شلوغ کردن دو راه دارین یا برین توی روت پروژه و دستور زیر رو بزنید تا همه فایل ها کلا حذف بشن
یا اینکه ولشون کنین و بذارین به زندگی خودشون ادامه بدن (سازمان حمایت از حقوق فایل های Zone.Identifier 😂) ولی یه کاری کنید که توی vsCode نشون داده نشن برای این کار کافیه کانفیگ زیر رو به فایل setting.json اضافه کنید
محتوای این پست با کمک chat GPT درست شده
:Zone.Identifier ساخته میشه.فایلهای Zone.Identifier فایلهای متادادهای هستند که توسط ویندوز ایجاد میشوند تا اطلاعات مربوط به منطقه امنیتی فایلها (security zone) را ذخیره کنند. این اطلاعات مشخص میکنند که یک فایل از چه منبعی آمده است (مثلاً اینترنت، شبکه محلی، یا سیستم محلی) و به ویندوز کمک میکنند تصمیم بگیرد که آیا فایل باید با احتیاط بیشتری باز شود یا نه.
آیا حذف این فایلها مشکلی ایجاد میکند؟
حذف فایلهای Zone.Identifier معمولاً مشکلی ایجاد نمیکند و باعث نمیشود فایل اصلی تحت تأثیر قرار بگیرد، زیرا این فایلها تنها اطلاعات متاداده هستند. با این حال، با حذف آنها ممکن است برخی ویژگیهای امنیتی ویندوز از کار بیفتند (مثلاً هشدار درباره باز کردن فایلهای دانلود شده).
نکنه اول اینکه حتما این فایل هارو به .gitignore اضافه کنید تا الکی توی پروژه هاتون پوش نشن.
*.Identifier
// یا این
*:Zone.Identifier
بعد اگر فایل ها رو اعصابتونن و الکی ریپویی که روش کار میکنید رو شلوغ کردن دو راه دارین یا برین توی روت پروژه و دستور زیر رو بزنید تا همه فایل ها کلا حذف بشن
find . -type f -name "*:Zone.Identifier" -exec rm -f {} +یا اینکه ولشون کنین و بذارین به زندگی خودشون ادامه بدن (سازمان حمایت از حقوق فایل های Zone.Identifier 😂) ولی یه کاری کنید که توی vsCode نشون داده نشن برای این کار کافیه کانفیگ زیر رو به فایل setting.json اضافه کنید
"files.exclude": {
"**/*:Zone.Identifier": true
}محتوای این پست با کمک chat GPT درست شده
👍2❤1
امروز با همکارم احسان توی سمینار 900 نفری Sisoog که در مورد IOT و سیستم های امبدد بود شرکت کردیم و مطالب جالبی یاد گرفتیم.
برای اولین بار جادی رو از نزدیک دیدم که در مورد RTOS صحبت کرد و بسیار لذت بردم و استفاده کردم. همچنین سخنرانی محسن طهماسبی در مورد امنیت در IOT که دید خیلی خوبی بهم داد تا در پروژه های پیش رو استفاده کنم. و همچنین محمد مزارعی که در مورد ECU ماشین ها اطلاعات ارزشمندی رو با شرکت کنندگان به اشتراک گذاشت.
در آخر ممنونم از تیم سیسوگ و دانشگاه صنعتی اصفهان که سمیناری با این تعداد افراد را با مدیریت خوب برگذار کردن و امیدوارد در آینده شاهد برگذاری سمینار های بیشتری در این حوزه در اصفهان باشیم.
برای اولین بار جادی رو از نزدیک دیدم که در مورد RTOS صحبت کرد و بسیار لذت بردم و استفاده کردم. همچنین سخنرانی محسن طهماسبی در مورد امنیت در IOT که دید خیلی خوبی بهم داد تا در پروژه های پیش رو استفاده کنم. و همچنین محمد مزارعی که در مورد ECU ماشین ها اطلاعات ارزشمندی رو با شرکت کنندگان به اشتراک گذاشت.
در آخر ممنونم از تیم سیسوگ و دانشگاه صنعتی اصفهان که سمیناری با این تعداد افراد را با مدیریت خوب برگذار کردن و امیدوارد در آینده شاهد برگذاری سمینار های بیشتری در این حوزه در اصفهان باشیم.
❤5
اگر قرار باشه توی یک پروژه کاربرای بینالمللی داشته باشیم چطور باید شماره هارو هندل کنیم؟
شاید توی پروژه های بزرگ بینالمللی براتون سوال بشه که ما چطور میتونیم شماره موبایل ها با کد های کشور های مختلف رو هندل کنیم؟
خوب قسمت راحت کار اینجاست که بگیم کاربر رو مجبور میکنیم طبق استاندارد E.164 شماره کامل رو با کد کشور وارد کنه مثلا برای ایران به این صورت
+98901*******
خوب این ساده ترین حالته ولی ux خوبی نداره مخصوصا برای کاربرای ایرانی که معمولا شمارشون رو با 0 وارد میکنن.
پس باید چکار کرد؟ شاید به ذهنتون برسه که یه ولیدیشن ساده مینویسیم و با چند تا شرط هندلش میکنیم ولی قراره به چالش های زیادی بخوریم. پس بیاین اول به سوالات زیر جواب بدیم.
آیا کد کشور ها همه تعداد ارقامش یکسانه؟
خیر. مثلا کد ایران 98 و آمریکا 1 هست
آیا طول شماره های موبایل کشور های مختلف بدون کد کشور یکسان هست؟
خیر. طول شماره موبایل در خیلی از کشور ها 10 رقم هست (بدون کد کشور)
ولی استثنا هم داریم برای مثال شماره موبایل توی آلمان میتونه بین 10 تا 13 رقم متغییر باشه.
آیا شماره موبایل همه کشور ها وقتی از کد استفاده نمیکنیم از 0 ابتدای شماره استفاده میکنیم؟ و آیا با اضافه کردن کد 0 اول شماره حذف میشه؟
در بیشتر کشور ها شماره های موبایل با صفر شروع میشه و با اضافه شدن کد کشور صفر حذف میشه ولی همیشه اینطوری نیست
ایران:
09123456789 → +989123456789
هند:
09876543210 → +919876543210
آلمان:
015123456789 → +4915123456789
در شماره های بالا دقیقا همینطوره ولی در بعضی موارد مثل موارد زیر اینطوری نیست
استثناها و نکات:
برخی کشورها اصلاً از صفر ابتدایی استفاده نمیکنند: مثلاً در ایالات متحده، شمارهها مستقیماً با کد منطقه (area code) شروع میشوند، و وقتی کد کشور اضافه میشود، هیچ تغییری در ساختار داخلی شماره رخ نمیدهد:
آمریکا:
1234567890 → +11234567890
صفر ممکن است حفظ شود: در برخی از کشورها، حتی در حالت بینالمللی، صفر ابتدایی شماره حفظ میشود:
ایتالیا: (صفر حفظ میشود).
03491234567 → +3903491234567
استاندارد E.164: این استاندارد که در مخابرات جهانی استفاده میشود، تأکید میکند که شمارهها در قالب بینالمللی باید بدون صفر ابتدایی نوشته شوند، مگر اینکه صفر بخشی از شماره واقعی باشد.
خوب حالا برای ولیدیشن و ux بهتر باید چکار کرد؟ شاید به ذهنتون رسیده باشه که بشینید و از اول یه کلاسی بنویسید که با توجه به کشور انخاب شده یه سری rule هایی در نظر گرفته بشه و بر اساس اونها شماره ولیدیت بشه یا برای ux بهتر در صورت نیاز فرمتش به صورت خودکار عوض بشه و بعد توی دیتابیس ذخیره بشه.
ولی نیاز به این کار نیست چون از قبل پکیج هایی برای این کار نوشتن. مثلا libphonenumber برای جاوااسکریپت و پایتون
همچنین این پکیج برای لاراول
https://github.com/Propaganistas/Laravel-Phone
مثلا به کمک این پکیج وقتی کاربر کشورش رو انتخاب میکنه دیگه توی فیلد شماره موبایل فرقی نمیکنه کاربر شماره رو با 0 وارد کنه یا بدون 0 چون به راحتی شما توی بکند میتونید با توجه به کشورش شماره رو به فرمت استاندارد E.164 در بیارین و بعد توی دیتابیس ذخیره کنید.
دقت کنید حتما وقتی همچین پکیج هایی اضافه میکنید به پروژتون برای عملکرد مورد انتظارتون چند تا تست بنویسید.
شاید توی پروژه های بزرگ بینالمللی براتون سوال بشه که ما چطور میتونیم شماره موبایل ها با کد های کشور های مختلف رو هندل کنیم؟
خوب قسمت راحت کار اینجاست که بگیم کاربر رو مجبور میکنیم طبق استاندارد E.164 شماره کامل رو با کد کشور وارد کنه مثلا برای ایران به این صورت
+98901*******
خوب این ساده ترین حالته ولی ux خوبی نداره مخصوصا برای کاربرای ایرانی که معمولا شمارشون رو با 0 وارد میکنن.
پس باید چکار کرد؟ شاید به ذهنتون برسه که یه ولیدیشن ساده مینویسیم و با چند تا شرط هندلش میکنیم ولی قراره به چالش های زیادی بخوریم. پس بیاین اول به سوالات زیر جواب بدیم.
آیا کد کشور ها همه تعداد ارقامش یکسانه؟
خیر. مثلا کد ایران 98 و آمریکا 1 هست
آیا طول شماره های موبایل کشور های مختلف بدون کد کشور یکسان هست؟
خیر. طول شماره موبایل در خیلی از کشور ها 10 رقم هست (بدون کد کشور)
ولی استثنا هم داریم برای مثال شماره موبایل توی آلمان میتونه بین 10 تا 13 رقم متغییر باشه.
آیا شماره موبایل همه کشور ها وقتی از کد استفاده نمیکنیم از 0 ابتدای شماره استفاده میکنیم؟ و آیا با اضافه کردن کد 0 اول شماره حذف میشه؟
در بیشتر کشور ها شماره های موبایل با صفر شروع میشه و با اضافه شدن کد کشور صفر حذف میشه ولی همیشه اینطوری نیست
ایران:
09123456789 → +989123456789
هند:
09876543210 → +919876543210
آلمان:
015123456789 → +4915123456789
در شماره های بالا دقیقا همینطوره ولی در بعضی موارد مثل موارد زیر اینطوری نیست
استثناها و نکات:
برخی کشورها اصلاً از صفر ابتدایی استفاده نمیکنند: مثلاً در ایالات متحده، شمارهها مستقیماً با کد منطقه (area code) شروع میشوند، و وقتی کد کشور اضافه میشود، هیچ تغییری در ساختار داخلی شماره رخ نمیدهد:
آمریکا:
1234567890 → +11234567890
صفر ممکن است حفظ شود: در برخی از کشورها، حتی در حالت بینالمللی، صفر ابتدایی شماره حفظ میشود:
ایتالیا: (صفر حفظ میشود).
03491234567 → +3903491234567
استاندارد E.164: این استاندارد که در مخابرات جهانی استفاده میشود، تأکید میکند که شمارهها در قالب بینالمللی باید بدون صفر ابتدایی نوشته شوند، مگر اینکه صفر بخشی از شماره واقعی باشد.
خوب حالا برای ولیدیشن و ux بهتر باید چکار کرد؟ شاید به ذهنتون رسیده باشه که بشینید و از اول یه کلاسی بنویسید که با توجه به کشور انخاب شده یه سری rule هایی در نظر گرفته بشه و بر اساس اونها شماره ولیدیت بشه یا برای ux بهتر در صورت نیاز فرمتش به صورت خودکار عوض بشه و بعد توی دیتابیس ذخیره بشه.
ولی نیاز به این کار نیست چون از قبل پکیج هایی برای این کار نوشتن. مثلا libphonenumber برای جاوااسکریپت و پایتون
همچنین این پکیج برای لاراول
https://github.com/Propaganistas/Laravel-Phone
مثلا به کمک این پکیج وقتی کاربر کشورش رو انتخاب میکنه دیگه توی فیلد شماره موبایل فرقی نمیکنه کاربر شماره رو با 0 وارد کنه یا بدون 0 چون به راحتی شما توی بکند میتونید با توجه به کشورش شماره رو به فرمت استاندارد E.164 در بیارین و بعد توی دیتابیس ذخیره کنید.
دقت کنید حتما وقتی همچین پکیج هایی اضافه میکنید به پروژتون برای عملکرد مورد انتظارتون چند تا تست بنویسید.
GitHub
GitHub - Propaganistas/Laravel-Phone: Phone number functionality for Laravel
Phone number functionality for Laravel. Contribute to Propaganistas/Laravel-Phone development by creating an account on GitHub.
👍4🙏1