C# Programming Guide
193 subscribers
113 photos
9 videos
14 files
102 links
سلام دوستان در این کانال نکاتی در مورد مسائل پیشرفته در سی شارپ ارائه میشه که مربوط به بیش از 15 سال تجربه ی کاری من هست.
ممنون از اینکه دنبال میکنید.
اگر نکات خاصی به ذهنتون رسید با ادمین در میون بذارید
تماس با ادمین:
@Ali_Visual_Studio
Download Telegram
برای EF Core یک پکیج بنام InMemory وجود داره که با نصبش براحتی میتونید برای دیتابیسون تست کیس بنویسید.خیلی کاربردی و عالی برای تست توابع سرور و کلاینتتون هست.
به نظر میاد Extension سیگنالگو روی ویژوال استادیو های قدیمی کار نمی کرد امروز مشکلش رو رفع کردم و روی ویژوال استادیو 2012 و 2017 تست گرفتم و اوکی بود، کسانی که مشکلی داشتند ان شالله رفع شده.
سایت https://www.dbdesigner.net یک سایت خوب برای طراحی سریع ساختار دیتابیسون هست، من همیشه از این سایت برای ساختار دیتابیس هام قبل از پیاده سازی استفاده میکنم، رایگانه
C# Programming Guide pinned «شما از چه سیستمی در حال حاضر برای ارتباط بین کلاینت و سرور خود استفاده میکنید؟ anonymous poll Asp.net or Asp.net Core – 10 👍👍👍👍👍👍👍 59% Signal Go – 3 👍👍 18% SignalR – 1 👍 6% NodeJs – 1 👍 6% WebApi – 1 👍 6% Other – 1 👍 6% WCF ▫️ 0% RestApi ▫️ 0% 👥 17…»
این سایت رو شاید اکثرتون بشناسید، ولی برای کسانی که نمیشناسن trello.com یه اسکرام خوبی هست برای مدیریت کارای که باید انجام بدید و اونارو مدیریت کنید.
یه باگ سرسام آوری توی ویژوال استادیو بخش test case ها هست که بعضی وقت ها اجرا نمیشن یا هرکاری میکنی تست کیس ها کار نمی کنن، برای اینکه این مشکل رو حل کنید یکبار پکیج های پروژه ی تست کیس رو مجدد بروزرسانی کنید.
این رو توی پکیج منیجر بزنید:
update-package -reinstall
یا میتونید محدود به پروژه تست کیستون کنید:
update-package -reinstall -projectname name
به جای name نام پروژتون رو بذارید.

همچنین پکیج های تست کیس ها رو با پروژه اصلیتون مقایسه کنید که نسخه هاشون متفاوت نباشن.
اگر برنامه نویس سرور هستید، هروقت طوری کد زدید که اگر سورس سرورتون رو هم به اشتراک گذاشتید کسی نتونست هکتون کنه (یعنی فکر همه جاشو کردید) اونوقت شما یک برنامه نویس حرفه ای سمت سرور هستید که امنیت رو از همه نظر در نظر گرفتید و نگران لو رفتن سورس سرورتون هم نیستید بلکه تضمین امنیت اطلاعات کلاینت هاتون برای شما مهمتر بوده.
بنابراین:
1.مسقتیم connection string به دیتابیس نزنید
2.پورت sql رو باز نذارید که از طریق ip یا دامنه توی کد به sql اتصال برقرار کنید.
3.هیچ رمز و سشن امنیتی رو توی کد سرورتون نزنید، یا توی دیتابیس یا توی فایل config بذارید که سرور منیجر اونو پر کنه.
4.برای توابع سرویس ها دسترسی یا محدودیت آی پی (برای توابع لوکال) تعریف کنید و کار رو برای هرکسی سخت کنید.
#backend
آموزش سیگنالگو قسمت هشتم:
آموزش DataExchanger چگونه تبادل اطلاعات خود را مدیریت کنیم.

https://www.aparat.com/v/vkKm3
در نسخه ی 5 از سیگنالگو شما میتوانید سرویس های خودتون رو که تا الان با سیگنالگو نوشتید به راحتی تبدیل به یک ربات تلگرام کنید، بدون هیچ تغییرات خاصی، مثلا اگر شما لاگین و ثبت نام دارید، کاربران میتونن وارد سرویس ثبت نام بشن (روی دکمه ی ثبت نام/ ورود کلیک میکنن) و توی ربات تلگرام دوتا دکمه ی جدید ورود و ثبت نام میبینن و خود سیستم سیگنالگو با ورودی هایی که برای کاربر در نظر گرفتید تشخیص میده که کاربر چه چیزهایی رو باید وارد کنه و کاربر میتونه با ربات تلگرام توابع شمارو صدا بزنه، خوبیش اینه که همونطور که قبلا کد میزدید بدون هیچ دانشی نسبت به ساختن ربات در تلگرام میتونید api هایی که با سیگنالگو میسازید رو برای کلاینت های تلگرام ساپورت کنید.
یه ارائه در مورد برنامه نویسی سوکت و شبکه و در نهایت سیگنالگو اگر علاقه مند هستید که برنامه نویسی سرور رو شروع کنید میتونید جهت کسب اطلاعات بیشتر در مورد شبکه و چگونگی کار سوکت ها و پروتکل ها این ویدئو رو مشاهده کنید 👇
فقط با دو خط کد کل سرویس هایی که تا الان با سیگنالگو زده بودید رو به یک ربات کامل برای تلگرام تبدیل کنید، نسخه ی 5 از سیگنالگو با قابلیت های جدید از جمله تبدیل سرویس ها به ربات تلگرام انتشار یافت. حالا دیگه نه نگران این هستید که چطوری برای ربات خودتون دکمه ی لاگین بذارید و نه نگران نوشتن سرویس ها و کد های پیچده برای ربات تلگرام، به راحتی کد های تمیز خودتون رو در سیگنالگو به یک ربات کامل تلگرام تبدیل کنید.
فقط کافیه پکیج های سیگنالگو پروژتون رو به نسخه ی 5 بروز رسانی کنید و سمت سرور پکیج جدید SignalGo.Server.TelegramBot رو هم نصب کنید سپس با دو خط زیر سرور خودتون رو تبدیل به ربات تلگرام کنید:
SignalGoBotManager signalGoBotManager = new SignalGoBotManager();
signalGoBotManager.Start("bot token", serverProvider);

به جای bot token در واقع توکن ربات خودتون در تلگرام رو میذارید و به جای serverProvider هم سرور خودتون رو بعد از استارت جای این پارامتر میذارید و ربات سرور شما امادست و کاربران میتونن توابع سرور شمارو با ربات تلگرام صدا بزنن و ورودی بفرستند و خروجی دریافت کنند.
C# Programming Guide pinned «فقط با دو خط کد کل سرویس هایی که تا الان با سیگنالگو زده بودید رو به یک ربات کامل برای تلگرام تبدیل کنید، نسخه ی 5 از سیگنالگو با قابلیت های جدید از جمله تبدیل سرویس ها به ربات تلگرام انتشار یافت. حالا دیگه نه نگران این هستید که چطوری برای ربات خودتون دکمه…»
C# Programming Guide
Photo
داشتم این آموزش های GraphQL رو برای دات نت میدیدم خیلی هم این پروژه ی open source طرفدار داره، یه چیز تو مایه های سیگنالگو هست. میتونم بگم این مسخره بازی ها در کد نویسی چیزی جز کاهنده ی سرعت و گیج کننده ی برنامه نویس ها نیستن، درسته مرتب هستن ولی توی پروژه های بزرگ عملا سر در گم میکنه شما رو حتی اگر اینقدر تمیز کد بزنید.چیزی که در تصویر بالا میبینید همون DataExchaner توی سیگنالگو هست که با یک اتریبوت بالای تابع یا پروپتری یا متد کارشو تموم میکردید اینجا باید کلاس بسازید و از یک چیز ارث ببرید و تک تک فیلد ها رو اینطوری داخلش برای هر کدوم یک خط کد بزنید.
خودم توی پروژه هام این روش ها رو تایید نمی کنم، برنامه نویس بیشترین وقتشو باید برای ساخت مدل هاش بذاره و کمترین وقتش رو برای DataExchanger در غیر اینصورت کلی وقت باید برای آنالیز و پیاده سازی بذاره و کلی انرژی صرف کنه، الان این پروژه با دوتا مدل تبدیل به 6 تا مدل شد اونم در یک پروژه ی ساده و ابتدایی همراه با کلی کانفیگ فقط برای اجرا کردن پروژه...
واقعا به کجا دارن میرن این مایکروسافت و فیسبوک :/
داشتم یکی از ویدئو های آموزش ساخت اپلیکیشن دسکتاپ با الکترون رو میدیدم. 20 دیقه طول کشید تا یک Hello world با جاوا اسکریپت و html بسازه که فقط یک متن رو روی صفحه چاپ کنه.جالبه که بدونید VS Code هم با همین الکترون نوشته شده...البته یکی از مشکلاتش استفاده رم بالاست در حد گیگابایت!
سمت سرور یک کد زدم که اگر حجم فایل بیشتر از 5 مگابایت بود خطا بده که حجم فایل مجاز نیست.وقتی این خطا رو سریع بر میگردونم مرورگر خطای Cross origin میده و کلاینت نمیتونه پاسخ رو دریافت کنه در نتیجه هیچ اتفاقی نمیوفته و کلاینت هم نمیفهمه حجم مجاز نیست، حالا وقتی فایل رو کامل میخونم و بعد خطا رو برمیگردونم کلاینت خطا رو میفهمه، یعنی در این حد این پروتکل داغونه! که مرورگر های کروم و فایرفاکس هر دو در این حالت این خطا رو میدن و سرور رو مجبور به خوندن فایل تا اخر میکنن!😐
نسخه ی جدید سیگنالگو با قابلیت query زدن در خروجی و ورودی های متدهاتون در حال توسعه هست.
توی این نسخه همونطور که در تصویر میبینید میتونید هر نوع کوئری رو حتی از سمت کلاینت برای سرور بزنید یا از سمت سرور برای کلاینت بزنید و ... در واقع ما شکل ساده تر DataExchanger رو به شکل پیشرفته تری ساختیم تا کار رو برای برنامه نویسان آسون تر کنیم، این رو مقایسه کنید با GraphQl و OData و ببینید چقدر تمیز تر و راحت تره.اگر نظر یا پیشنهادی داشتید به خودم بگید