C# Programming Guide
193 subscribers
113 photos
9 videos
14 files
102 links
سلام دوستان در این کانال نکاتی در مورد مسائل پیشرفته در سی شارپ ارائه میشه که مربوط به بیش از 15 سال تجربه ی کاری من هست.
ممنون از اینکه دنبال میکنید.
اگر نکات خاصی به ذهنتون رسید با ادمین در میون بذارید
تماس با ادمین:
@Ali_Visual_Studio
Download Telegram
سرعت بارگزاری اطلاعات رو از سرور سیگنالگو ببینید:
دوستان عزیز، ویدئوی زیر که میبینید سرعت بارگزاری اطلاعات، رکوئست به سرور و دریافت اطلاعات از دیتابیس و ارسال به کلاینت توسط سرور سیگنالگو هست، همونطور که در ویدئو میبینید اصلا احساس نمیشه که اطلاعات داره از سرور دریافت میشه و حتی لودینگ هم نمایش داده نمیشه ولی وقتی سرور رو می بندم چیزی که مشاهده میکنید لودینگ و دریافت اطلاعات هست. حتما سیگنالگو رو امتحان کنید.
https://www.aparat.com/v/ODkjx
نسخه ی 4.0 افزونه سیگنالگو برای ویژوال استادیو با قابلیت ساخت مدل ها برای زبان جاوا و سوییفت منتشر شد
نسخه جدید ابزار سیگنالگو تست با قابلیت کد جنریتور برای کلاینت های سی شارپ، جاوا، سوییفت،انگولار
دانلود نسخه ی ویندوز، مک و لینوکس:
https://github.com/SignalGo/SignalGoTest/releases
یکی از مسخره بازی هایی که پروتکل اچ تی تی پی داره در قسمت آپلود فایل هست، برای اینکه بتونید یک پاسخ به کلاینت بفرستید باید کل فایل رو اول بخونید، سرور های شما معمولا کل فایل رو میارن روی حافظه و این فاجعه ی بزرگ رو همیشه انجام میدن بدون اینکه شما متوجه اش باشین، سپس فایلی که شما توی توابع سرور استریم می کنید در واقع فایل هایی هستند که کامل روی حافظه ی سرور دانلود شدن، منظورم از حافظه، حافظه ی رم هست.
چطور من متوجه اش شدم؟ چون من توی سیگنالگو پروتکل اچ تی تی پی رو بطور کامل از صفر نوشتم، برای همین استریم کردن فایل توی سرور های سیگنالگو به طور واقعی انجام میشه و اصلا توی حافظه ی سرور نمیاد، حالا مشکل کجاست؟ مشکل اونجاست که اگر شما استریم رو نخونید، مثلا کلاینت داره یک فایل یک گیگی میفرسته و میخواید جلوشو از سمت سرور بگیرید تابع سرور کل یک گیگ رو میاره روی حافظه سپس شما میبینید که حجمش یک گیگه و بهش خطا میفرستید که حجم فایلتون زیاده، و این مسخره بازی این پروتکل هست و بسیار هم خطرناکه، حالا وقتی با سیگنالگو میخوام قبل از اینکه استریم رو کامل بخونم به کلاینت ریسپانس بدم مرورگر ها خطای کراس اوریجین میدن (یعنی عدم تایید هاست کلاینت توسط سرور رخ داده، یک خطای کاملا بی ربط) و وقتی استریم رو تا اخر میخونم خطای کراس اوریجین نمیده، این دنیای پروتکل مسخره اچ تی تی پی هست که شما سرور هاتون رو سالهاست باهاش مینویسید و شاید از خیلی از مسائلش خبر ندارید، و توی مباحث پرفورمنس سمت بک اند بسیار مهمن
#استخدامی
#مشهد
#فول_تایم

سلام دوستان، ما دنبال نیروی برنامه نویس میگردیم، بیمه و مزایا و تشویقی و ... حقوق ثابت تا سقف 5 میلیون

نیرویی که میخوایم بیشتر خلاق و فعال در زمینه های یاد گیری زبان های جدید و تکنولوژی های جدید برنامه نویسی مثلا فلاتر باشه، بنابراین مهم نیست در زمینه های دیگه خیلی حرفه ای باشه، چون مدیر پروژه های قوی ای دارید که از نظر معماری و ساختار همه ی کارهارو انجام میدن پس از تمامی کسانی که تجربه در زمینه برنامه نویسی آی او اس،اندروید، ویندوز یا وب و ... دارن که هم دنبال کار میگردن یا دنبال حقوق بهتر میگردنیا میخوان با تکنولوژی های روز کدنویسی رو در کنار ما تجربه کنن پیشنهاد میکنم با کاربری خودم توی لینکدین یا تلگرام زیر اقدام به ارسال رزومه کنید، با تشکر
تلگرام:
@ali_visual_studio
ایمیل:
[email protected]
گوگل بعد از پانزده سال که ما WPF کار کردیم تکنولوژی ای به نام Flutter داد، و ادعا کرد توی فلاتر everything is widget یعنی چون همه ی کنترلر ها از کلاسی به نام widget ارث بردن در نتیجه همه چیز میتونه بره توی همدیگه، دقیقا چیزی که ما بیش از پانزده سال پیش توی wpf داشتیم و هنوز با اون ساختار مایکروسافت به صورت کراس پلتفرم داریم عشق میکنیم، جالب اینجاست وقتی ویدئوی ارائه ی گوگل رو ببینید همه کف و هورا میزنن انگار تا بحال همچین تکنولوژی ای ندیده بودن و گوگل فکر میکنه کار جدیدی کرده، حالا کاری ندارم که توی زبان جدید گوگل که اسمش دارت هست بر خلاف جاوا شما پروپرتی دارید، توی فلاتر شما با زبان دارت کد میزنید و جالب اینجاست که بدونید گوگل توی فلاتر خاصیت Padding رو یک پروپتری قرار نداده بلکه padding یک ویجت هست یعنی اگر بخواید به یک کنترل padding بدید باید اونو داخل کلاس padding بذارید!! و بدتر از اون اینه که پیاده سازی رابط کاربری و منطق هر دو به زبان دارت هست یعنی هیچ زبان نشانه گذاری ای مثل XAML یا HTML برای پیاده سازی رابط کاربری نداره و همین درک و خوانایی کد نویسی رو بشدت میاره پایین یعنی شما اگر معماری MVC رو رعایت نکنید نمیتونید تشخیص بدید که کلاسی که ساختید برای UI هست یا منطق،ما هم میتونیم توی سی شارپ به جای استفاده از XAML همه رو با کد خام سی شارپ بزنیم ولی کی اینکار رو میکنه؟ اصلا زبان نشانه گذاری اومد تا کد زدن سمت رابط کاربری سریعتر و راحت تر بشه و کاملا از منطق جدا بشه، واقعا فلاتر میتونست خیلی چیز قشنگی بشه اگر گوگل فقط به جای عجله یکم روی معماری و ساختار کارهاش بیشتر وقت میذاشت.
@CsharpTips
سایت https://menno.ir یکی از سایت هایی هست که بکند اون به طور کامل با EF Core و سیگنالگو پیاده سازی شده و روی Asp.net Core هاست شده.
این پروژه در خیلی از رستوران های مشهد در حال اجرا هست و مشتری ها با یک منوی دیجیتال سفارش خودشون رو ثبت میکنن، بخش پنل این سرور که برای رستوران هاست علاوه بر مشاهده جزئیات کامل، دارای پوش نوتیفیکشن هم هست که به محض اینکه کاربران سفارش بدن به پنل نوتیف میشه و رستوران رو با خبر میکنه. حتی پنل ادمین هم داره یعنی توابع با دسترسی های مختلفی که دارن خروجی های متفاوتی به کاربران ارائه میکنن.البته menno یکی از ده ها اپلینیشنی هست که با سیگنالگو نوشته شده منتهی یکی از اپ هایی هست که امروز داره نمایندگی تهرانش هم گرفته میشه و داره خیلی بزرگتر میشه.
@CSharpTips
Forwarded from Simorgh (Hassan Hajisharifi)
Windows Phone is dead!
تولید ویندوز فون متوقف شد
مایکروسافت از کاربران ویندوز موبایل خواسته از سیستم عامل Android یا iOS استفاده کنند

https://support.microsoft.com/en-us/help/4485197
Simorgh
Windows Phone is dead! تولید ویندوز فون متوقف شد مایکروسافت از کاربران ویندوز موبایل خواسته از سیستم عامل Android یا iOS استفاده کنند https://support.microsoft.com/en-us/help/4485197
برای منکه خبر ناراحت کننده ای بود، هرچند ویندوز فون نداشتم ولی دوستش داشتم 😆و دوست داشتم یه روزی داشته باشم، باریکلا به برنامه نویس های Internet Explorer که تا ویندوز ده این نرم افزار رو آوردن هرچند کسی ازش استفاده نکرد 😆
Media is too big
VIEW IN TELEGRAM
با افراد سرکش سازمان چکار کنیم؟
#یکم_تخصصی

یه مدتی دهنم سرویس شد تا توی جاوا بتونم Type یک کلاس از نوع Generic رو بگیرم، در نهایت متوجه شدم که اصلا این قابلیت توی جاوا وجود نداره و غیر ممکنه و کلی کار دستی باید انجام بدی که اسمش رو میذارم کثیف کاری چون توی برنامه نویسی اگر یک کاری ممکن نباشه مجبوری کثیف کاری کنی.مثلا برنامه نویسی که از کامپوننت شما استفاده میکنه باید به صورت دستی بگه تایپ جنریکی که داره میده چیه یعنی قوانین وضع کنی و مجبورش کنی بیشتر کد بزنه

بعدش حالا دارم توی زبان دارت (ِDart) همین کار رو انجام میدم عملا مدیریت Runtime Type ها توی جاوا بهتر از دارت بود، توی دارت اگر یک مقدار پیشفرض برای یک فیلد نذارید یعنی نال باشه نمیتونید بفهمید تایپ فیلده چیه (چون عملا داینامیکه و فقط ادعا میکنه تایپ سیفه) همچنین نمیشه فهمید نوع جنریک تایپ چیه. کل الگوریتم Serialize و Deserialize کردن جیسون توی سی شارپ رو توی سه ساعت انجام دادم حالا برای تبدیل کردنش به دارت دو روز (دوازده ساعت) وقتم گرفته شد و تموم شد ولی تهش با کثیف کاری و قانون تعیین کردن برای استفاده کننده ها

#سی_شارپ
#دارت
#جاوا
به وسیله اتریبیوت OutExclude همونطور که در تصویر میبینید میتونید در سیگنالگو از خروج بعضی پروپتری های حساس در تمامی متد ها و سرویس ها سمت سرور جلوگیری کنید، با این روش سیستم هرگز پسورد رو به مشتریان نمیده مخصوصا جاهایی که میخواید به کاربران دیگه ای لیست کاربران رو نشون بدید.حتی اگر فراموش کنید سیگنالگو فراموش نمی کنه
آیا میتوانیم از سیگنالگو در asp.net core استفاده کنیم؟ مزیت آن چیست؟
بله شما میتوانید از سیگنالگو در پروژه های asp.net یا asp.net core هم استفاده کنید یا در یک پروژه خام کنسول و هر جایی که میخواهید استفاده کنید.پکیج های سیگنالگو کاملا cross platform ,و بسیار کم حجم هستن و محدودیتی برای شما ایجاد نمی کنن.
مزیت های آن چیست؟
1.کد تمییز و بدون محدودیت در ورودی و خروجی، شما از تمامی امکانات سیگنالگو میتونید در asp.net core استفاده کنید سیگنالگو کلاس خام شمارو تبدیل به سرویس های api میکنه شما فقط کافیه متد ها و ورودی و خروجی هاتونو اونطور که دوست دارید بدون محدودیت بسازید.همونطور که قبلا کلاس و مدل میساختید کلاینت های شما میتونن با هر پروتکلی که asp.net core ساپورت میکنه اعم از http, https , websocket از سرویس های شما استفاده کنن.
2.کلاینت های سیگنالگو میتونن از code generator استفاده کنن و حتی یک خط کد اضافه هم برای صدا زدن سرویس های شما نزنن. اصلا نه درگیر این میشن که بدونن json چیه یا Xml چیه یا ورودی و خروجی ها چطوری میاد، کلاینت ها تنها و تنها آبجکت های ورودی و خروجی ای که شما در سرویس ها ساختید رو میبینن و میتونن اونارو پر کنن بدون اینکه درگیر این بشن که بک کار چطوری کار میکنه و درگیر این نمیشن که هرلحظه با برنامه نویس سرور تعامل داشته باشن و این خودش یعنی حفظ بسیار زیادی از زمان برای توسعه.
3.بکند کار میتونه بدون وجود یک کلاینت سرویس هاش رو با استفاده از نرم افزار "سیگنالگو تست کلاینت" تست کنه.
4.میتونید از تمامی قابلیت های سیگنالگو استفاده کنید مثلا سرویس هاتونو تبدیل به ربات تلگرام کنید.

آیا استفاده از سیگنالگو در asp.net core به سرویس های core که قبلا زدم اسیبی میزنه؟
خیر سیگنالگو اصلا با سرویس های core شما کاری نداره شما میتونید از تمامی قابلیت های Asp.net core و سیگنالگو همزمان استفاده کنید کاربر میتونه هم سرویس های Asp.net core شمارو صدا بزنه و هم سرویس های سیگنالگو رو...

از این پروژه بومی و اپن سورس حمایت و استفاده کنید منم بهتون قول میدم که بعد از استفاده می فهمید که ما حتی از مایکروسافت و گوگل هم تمییز تر فکر کردیم و کار شمارو در توسعه اپلیکیشن ها راحت تر و سریعتر کردیم.
پکیج های nuget سیگنالگو در حال حاضر بالای بیست هزار دانلود و استفاده داشته، این خیلی امیدوار کنندست و ما میتونیم حرف اول رو در ارائه سرویس های توسعه ی اپلیکیشن های بک اند و فرانت اند بزنیم.

کانال تلگرام:
@csharptips

برای ورودی به گروه توسعه و پرسش و پاسخ سیگنالگو به گروه زیر وارد بشید:
https://t.iss.one/joinchat/CVPIBkMqzRLziBiEBK7UyQ
C# Programming Guide pinned «آیا میتوانیم از سیگنالگو در asp.net core استفاده کنیم؟ مزیت آن چیست؟ بله شما میتوانید از سیگنالگو در پروژه های asp.net یا asp.net core هم استفاده کنید یا در یک پروژه خام کنسول و هر جایی که میخواهید استفاده کنید.پکیج های سیگنالگو کاملا cross platform ,و بسیار…»
ویدئو آموزش ساخت یک اپلیکیشن سرور + کلاینت WPF و Xamarin موبایل با سیگنالگو

https://www.aparat.com/v/oqWAP
@CSharpTips
Forwarded from Agrin (Ali Yousefi ˢᵒᶠᵗʷᵃʳᵉ ᴰᵉᵛᵉˡᵒᵖᵉʳ)
دیروز داشتم از اپلیکیشن #روبیکا استفاده میکردم و میخواستم یک سرویس ازش خریداری کنم متوجه شدم که یک دیالوگ آورد بالا و شماره کارت و رمز رو ازم میگرفت، بلافاصله بستم و کلا دیگه از اپش قطع امید کردم.
حواستون باشه یکی از نکات مهم حریم خصوصی و امنیت کاربران اینه که به هیچ عنوان اطلاعات رمز کارت کاربران در اپلیکیشن دریافت نشه حتی در مرورگر داخلی نرم افزار و حتما باید به یکی از مرورگر های سیستم عامل مثل فایرفاکس و کروم ریفرنس داده بشه و کاربر از اونجا خرید کنه.
اگر دیدید نرم افزاری حتی اگر مطمئن هستید صاحب امتیازش دزد نیست توی خود نرم افزار اطلاعات کارت شمارو میگیره بلافاصله اون اپ رو حذف کنید و یا به سازنده اطلاع بدید که اینطوری از کاربران اطلاعات شخصیشون رو دریافت نکنه.
#امنیت
#حریم_خصوصی
@AgrinDM
اون دسته از عزیزانی که مثل من vs 2017 رو به صورت offline installer دانلود و نصب کردند و حدود 100 گیگ شده و میخوان به ویژوال استادیو 2019 بروز رسانی کنند لازم نیست همه ی پکیج ها رو از اول دانلود و نصب کنند.
فقط کافیه به همون روش قبلی عمل کنند و از سایت زیر فایل نصبی رو جایگزین کرده و سپس ستاپ ویژوال استادیو 2017 رو به 2019 تبدیل و نصب کنند.سپس فایل installer خودش نیازمندی های جدید رو دانلود میکنه و قبلی هایی که روی 2017 داشتید مجدد دانلود نمیشن.

https://developerinsider.co/download-visual-studio-2019-web-installer-iso-community-professional-enterprise
انتظار میرود در نسخه ی بعدی یعنی نسخه ی 6 سیگنالگو چه قابلیت هایی داشته باشیم؟
1.ساپورت پترن Dependency Injection
2.ریفکتور کردن پروژه و بالا بردن پرفورمنس سیگنالگو به بهترین حالت ممکن (در حال انجام)
3.ساپورت پروتکل UDP
4.بهبود و بالابردن استفاده های راحت تر از مباحث OperationContext و مدیریت راحت تر کلاینت ها به صورت Real-Time
5.سیستم لاگ

اهداف آینده؟
1.ساخت متد هایی که تا الان در سرویس های سیگنالگو نوشتید به صورت یک Test Case بدون زدن کد. این روش باعث میشه که شما متد هاتون رو تست کنید بدون اینکه برای پروژتون test case بنویسید!!
2.پیاده سازی Data Exchanger به صورت Queryable و حرفه ای که برنامه نویسی و ارتباط و کوئری های بین کلاینت و سرور رو داینامیک و نا محدود میکنه. تا الان هم بخشی زیادی از این سیستم پیاده سازی شده.

دوستان عزیز هر گونه کامنت یا سوال رو میتونید همینجا بزنید یا به خودم ارسال کنید @ali_visual_studio