Forwarded from کانون فناوری اطلاعات استان قم
This media is not supported in your browser
VIEW IN TELEGRAM
1. What and why
Forwarded from کانون فناوری اطلاعات استان قم
This media is not supported in your browser
VIEW IN TELEGRAM
2. The Process attending events
Forwarded from کانون فناوری اطلاعات استان قم
This media is not supported in your browser
VIEW IN TELEGRAM
3. Let's see Sample
Forwarded from کانون فناوری اطلاعات استان قم
This media is not supported in your browser
VIEW IN TELEGRAM
4. How we can sell anything
Forwarded from کانون فناوری اطلاعات استان قم
This media is not supported in your browser
VIEW IN TELEGRAM
5. Mistake #1- Cold Hand
Forwarded from کانون فناوری اطلاعات استان قم
This media is not supported in your browser
VIEW IN TELEGRAM
6. Mistake #3- Forget To
Forwarded from حمزه شیخ شعاعی
استاد اشاره کردین به اینکه کیفیت ارتباطات مهم تر از کمیت اونهاست، اما بعضی وقتا اطلاعات درست و یا کاملی از افراد وجود نداره
مثلا درصد زیادی از شرکت کنندگان پروفایل لینکدین ندارن
یا اگه دارن بروز و کامل نیست
و بعضی از تخصص ها یا رفتار افراد غیر قابل شناساییه
شما چه راه حلی برای شناسایی بیشتر افراد گروه پیشنهاد میکنین؟
مثلا درصد زیادی از شرکت کنندگان پروفایل لینکدین ندارن
یا اگه دارن بروز و کامل نیست
و بعضی از تخصص ها یا رفتار افراد غیر قابل شناساییه
شما چه راه حلی برای شناسایی بیشتر افراد گروه پیشنهاد میکنین؟
Forwarded from حمزه شیخ شعاعی
منظورم اقدامات قبل و یا بعد از رویداده
مخصوصا مواردی که قابل اجرا توسط مسئولین رویداد هست
مخصوصا مواردی که قابل اجرا توسط مسئولین رویداد هست
Forwarded from ۰۰
آیا این قبیل موضوعات رو در جای دیگر نیز به صورت وبینار برگزار می کنید؟
Forwarded from حمزه شیخ شعاعی
دقیقا همینطوره
مخصوصا در خصوص ویژگی هایی که بعضی از کارشناسان دارند ولی هیچ وقت ابراز نشده
و وقتی همان شخص در تیم توسعه به کار گرفته میشه، ویژگی ها و یا تخصص هایی غیر از آنچه به اونها شهرت داره بروز پیدا میکنه
مخصوصا در خصوص ویژگی هایی که بعضی از کارشناسان دارند ولی هیچ وقت ابراز نشده
و وقتی همان شخص در تیم توسعه به کار گرفته میشه، ویژگی ها و یا تخصص هایی غیر از آنچه به اونها شهرت داره بروز پیدا میکنه
Forwarded from حمزه شیخ شعاعی
البته تا اونجا که اطلاع دارم جناب آقای عمرانی و منصور نژاد در پی ایجاد سایت رسمی کانون با ویژگی معرفی توانایی افراد هستند
Forwarded from BPM - BPMS - BPMN
انتشار کتاب مدلسازی فرایندهای کسبوکار با استاندارد BPMN2.0.2
موسسه مطالعات مدیریت دانشگاه تربیت مدرس
این کتاب شامل یازده فصل است که فصل ابتدایی آن به توضیح مفاهیم، ابعاد و مزایای مدلسازی فرایندهای کسبوکار میپردازد. فصل دوم مروری کلی بر مدلها و نمادهای استاندارد است. فصول سوم تا نهم به معرفی و تشریح نمادهای این استاندارد میپردازد و در فصول انتهایی مثالهای کاربردی و نمونه فرایندها به همراه تقسیم بندی این نمادها ارایه شده است.
یکی از ویژگیهای منحصر بهفرد کتاب، متن روان بههمراه ارایه سه ساعت فیلمهای کوتاه آموزشی مرتبط به سرفصلهای آن با استفاده از فناوری کد QR است.
نویسندگان: دکتر مهدی مرتضوی، سیدحسین موسوی و امیرحسین حقیقت
https://t.iss.one/ebpm_media/5
لینک فهرست کتاب:
https://goo.gl/cwVVWG
لینک خرید آنلاین بههمراه ۱۵٪ تخفیف ویژه:
https://goo.gl/U3MEk4
موسسه مطالعات مدیریت دانشگاه تربیت مدرس
این کتاب شامل یازده فصل است که فصل ابتدایی آن به توضیح مفاهیم، ابعاد و مزایای مدلسازی فرایندهای کسبوکار میپردازد. فصل دوم مروری کلی بر مدلها و نمادهای استاندارد است. فصول سوم تا نهم به معرفی و تشریح نمادهای این استاندارد میپردازد و در فصول انتهایی مثالهای کاربردی و نمونه فرایندها به همراه تقسیم بندی این نمادها ارایه شده است.
یکی از ویژگیهای منحصر بهفرد کتاب، متن روان بههمراه ارایه سه ساعت فیلمهای کوتاه آموزشی مرتبط به سرفصلهای آن با استفاده از فناوری کد QR است.
نویسندگان: دکتر مهدی مرتضوی، سیدحسین موسوی و امیرحسین حقیقت
https://t.iss.one/ebpm_media/5
لینک فهرست کتاب:
https://goo.gl/cwVVWG
لینک خرید آنلاین بههمراه ۱۵٪ تخفیف ویژه:
https://goo.gl/U3MEk4
Telegram
Ebpm media
💻مجموعه نکات مفید C# :
🔵به جای ساخت نمونه از شیء مورد نظر و سپس مقدار دهی پروپرتی های آن تا جایی که ممکن است از Object Initializer ها استفاده کنید:
// خوب
// بد
🔵در هنگام کار با اشیاء nullable مانند ?int? ،DateTime و ... زمانی که میخواهید چک کنید که دارای مقدار می باشد یا خیر به جای مقایسه با null، از پروپرتی HasValue به صورت زیر استفاده کنید:
🔵برای چک کردن اینکه لیست موردنظرتان خالی است یا خیر به جای مقایسه تعداد داخل لیست (()Count) با 0 از متد ()Any استفاده کنید:
🔵برای if/esle های ساده زمانی که میخواهید بر اساس یک شرط از بین دو مقدار یکی را برگردانید از Ternary Operator یا عملگر سه تایی به صورت زیر استفاده کنید:
🔵برای برگرداندن یک مقدار در صورت نال بودن شیء مورد نظر به صورت زیر عمل کنید:
کد بالا در صورتی که LastEditDate مقدار داشته باشد مقدار آن را داخل متغیر date می ریزد و در غیر این صورت DateTime.Now را داخل متغیر date می ریزد. به طور کلی اگر سمت چپ مقدار داشته باشد مقدارش استفاده خواهد شد و در غیر این صورت از سمت راست استفاده خواهد شد.
🔵زمانی که یک متد دارید و شرط مورد بررسی داخل متد نیز ساده می باشد می توان آن را یکجا در return متد نوشت:
// بد
// خوب
// یک مثال دیگر
🔵برای چک کردن اینکه رشته مورد نظرتان Null یا خالی است از متد IsNullOrEmpty و برای چک کردن اینکه رشته مورد نظر Null است یا فقط شامل کاراکترهای فاصله n/ و v/ و t/ و ... است نیز از متد IsNullOrWhiteSpace استفاده کنید:
🔵سعی کنید تا در طراحی متدهایتان همیشه تنها یک return وجود داشته باشد. این مورد در متدهای بسیار کوچک ممکن است خیلی بد به نظر نرسد ولی در متدهای بزرگتر خوانایی کد را پایین می آورد. در مثال زیر به جای قرار دادن return در هر case از یک متغیر به اسم result استفاده کرده ایم و در انتها result را return می کنیم: (تنها یک راه خروجی برای متد)
🔹اگر از دات نت 4.6 به بعد استفاده می کنید به جای چسباندن رشته با + به هم یا استفاده از string.Format می توانید از روش بهتری نیز استفاده کنید:
🔵در if به جای اینکه مقدار را با true یا false چک کنید می توانید به صورت زیر نیز عمل کنید:
⚪️سعی کنید به صورتی کد بنویسید که نیاز به کامنت گذاری نباشد. کامنت ها در اکثر مواقع باعث گیج شدن خواننده می شوند.
🔘استفاده از region# ها هم برخوانایی کد تاثیر میگذارند:
⚪️بیشتر از foreach به جای for استفاده شود.
🔵به جای ساخت نمونه از شیء مورد نظر و سپس مقدار دهی پروپرتی های آن تا جایی که ممکن است از Object Initializer ها استفاده کنید:
// خوب
var Customer = new Customer
{
FirstName = "saeed",
LastName = "rezayi"
};
// بد
var customer = new Customer();
customer.FirstName = "saeed";
customer.LastName = "rezayi";
🔵در هنگام کار با اشیاء nullable مانند ?int? ،DateTime و ... زمانی که میخواهید چک کنید که دارای مقدار می باشد یا خیر به جای مقایسه با null، از پروپرتی HasValue به صورت زیر استفاده کنید:
public DateTime? LastEditDate { get; set; }
if (LastEditDate.HasValue))
DoSomething();🔵برای چک کردن اینکه لیست موردنظرتان خالی است یا خیر به جای مقایسه تعداد داخل لیست (()Count) با 0 از متد ()Any استفاده کنید:
if (YourList.Any())
DoSomething();
🔵برای if/esle های ساده زمانی که میخواهید بر اساس یک شرط از بین دو مقدار یکی را برگردانید از Ternary Operator یا عملگر سه تایی به صورت زیر استفاده کنید:
bool isEven = myNumber % 2 == 0 ? true : false; 🔵برای برگرداندن یک مقدار در صورت نال بودن شیء مورد نظر به صورت زیر عمل کنید:
public DateTime? LastEditDate { get; set; }
//
var date = LastEditDate ?? DateTime.Now;کد بالا در صورتی که LastEditDate مقدار داشته باشد مقدار آن را داخل متغیر date می ریزد و در غیر این صورت DateTime.Now را داخل متغیر date می ریزد. به طور کلی اگر سمت چپ مقدار داشته باشد مقدارش استفاده خواهد شد و در غیر این صورت از سمت راست استفاده خواهد شد.
🔵زمانی که یک متد دارید و شرط مورد بررسی داخل متد نیز ساده می باشد می توان آن را یکجا در return متد نوشت:
// بد
public bool IsEven(int number)
{
if (number % 2 == 0)
return true;
else
return false;
}
// خوب
public bool IsEven(int number)
{
return number % 2 == 0;
}
// یک مثال دیگر
public string AMorPM()
{
return DateTime.Now.Hour < 12 ? "AM" : "PM";
}
🔵برای چک کردن اینکه رشته مورد نظرتان Null یا خالی است از متد IsNullOrEmpty و برای چک کردن اینکه رشته مورد نظر Null است یا فقط شامل کاراکترهای فاصله n/ و v/ و t/ و ... است نیز از متد IsNullOrWhiteSpace استفاده کنید:
if (string.IsNullOrEmpty(yourText))
// do something
if (string.IsNullOrWhiteSpace(yourText))
// do something
🔵سعی کنید تا در طراحی متدهایتان همیشه تنها یک return وجود داشته باشد. این مورد در متدهای بسیار کوچک ممکن است خیلی بد به نظر نرسد ولی در متدهای بزرگتر خوانایی کد را پایین می آورد. در مثال زیر به جای قرار دادن return در هر case از یک متغیر به اسم result استفاده کرده ایم و در انتها result را return می کنیم: (تنها یک راه خروجی برای متد)
public string MethodName(int number)
{
var result = string.Empty;
switch(number)
{
case 1:
result = "Number is 1";
case 2:
result = "Number is 2";
default:
result = "Number is not 1 or 2";
}
return result;
}
🔹اگر از دات نت 4.6 به بعد استفاده می کنید به جای چسباندن رشته با + به هم یا استفاده از string.Format می توانید از روش بهتری نیز استفاده کنید:
var name = "Saeed";
var text = $"my name is: {name}";
🔵در if به جای اینکه مقدار را با true یا false چک کنید می توانید به صورت زیر نیز عمل کنید:
if (IsPostBack)
{
// if it's True
}
if (!IsPostBack)
{
//if it's False
}
⚪️سعی کنید به صورتی کد بنویسید که نیاز به کامنت گذاری نباشد. کامنت ها در اکثر مواقع باعث گیج شدن خواننده می شوند.
🔘استفاده از region# ها هم برخوانایی کد تاثیر میگذارند:
#region —----|Sum Numbers|------
public void sum(int x, int y)
{
return x+y;
}
#endregion
⚪️بیشتر از foreach به جای for استفاده شود.
📝ویژگی های جدید C# 6.0
🔵عملگر nameof
🔸این عملگر خیلی ساده نام متغیر را برای شما برمی گرداند:
🔵مبحث Argument Exceptions:
🔸تمام Argument Exception ها یک پارامتر می گیرند که مشخص کننده پارامتر نامعتبر می باشد. قبل از این می بایست نام را به صورت رشته وارد می کردیم و مشکل بزرگ این روش زمانی بود که نام پارامتر را تغییر می دادیم و فراموش می کردیم تا پارامتر Argument Exception را نیز تغییر نام بدهیم.
🚮// روش قبلی
// روش جدید
🔵در برنامه های ASP.NET MVC
در MVC از رشته ها زیاد استفاده می شود و این مورد در پروژه های بزرگ ممکن است به مشکل تبدیل شود. به عنوان مثال ایجاد لینک با استفاده از Helper های MVC. در مثال زیر نحوه ایجاد یک لینک با استفاده از این عملگر را مشاهده خواهید کرد:
🔸علت استفاده از Helper سفارشی CusomAction در اینجا به این خاطر است که (nameof(HomeController مقدار HomeController را برمی گرداند ولی ما نیاز به قسمت بدون Controller یعنی Home داریم:
🔸نکته دیگر این که برای استفاده از کلیه ویژگی های 6.0 #C در MVC باید پکیج زیر را نصب نمایید:
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
🔵اتصال رشته یا String Interpolation
🔸با کمک روش جدید اتصال رشته در ورژن جدید #C، دیگر نیازی به String.Format و چسباندن رشته با + بهم ندارید:
عملگر Null-Conditional
🔵روشی سریع برای چک کردن نال و جلوگیری از خطای معروف NullReferenceException
🔵مقدار دهی اولیه به Auto-Property ها یا (Auto-Property Initializers) :
🔸روش جدید مقداردهی اولیه به Auto-Property ها که تا قبل از این تنها از طریق constructor ممکن بود.
🔵Expression Bodied Functions and Properties :
🔸یکی دیگر از ساده سازی های صورت گرفته در ورژن جدید.
🔵عملگر nameof
🔸این عملگر خیلی ساده نام متغیر را برای شما برمی گرداند:
string firstname = "Saeed";
Console.WriteLine(nameof(firstname))
// Prints firstname
🔵مبحث Argument Exceptions:
🔸تمام Argument Exception ها یک پارامتر می گیرند که مشخص کننده پارامتر نامعتبر می باشد. قبل از این می بایست نام را به صورت رشته وارد می کردیم و مشکل بزرگ این روش زمانی بود که نام پارامتر را تغییر می دادیم و فراموش می کردیم تا پارامتر Argument Exception را نیز تغییر نام بدهیم.
🚮// روش قبلی
public double DoSomething(string input)
{
if (string.IsNullOrEmpty(input))
throw new ArgumentNullException("input");
}
// روش جدید
public double DoSomething(string input)
{
if (string.IsNullOrEmpty(input))
throw new ArgumentNullException(nameof(input));
}
🔵در برنامه های ASP.NET MVC
در MVC از رشته ها زیاد استفاده می شود و این مورد در پروژه های بزرگ ممکن است به مشکل تبدیل شود. به عنوان مثال ایجاد لینک با استفاده از Helper های MVC. در مثال زیر نحوه ایجاد یک لینک با استفاده از این عملگر را مشاهده خواهید کرد:
<a href="@Url.CustomAction(nameof(HomeController.Index), nameof(HomeController))">خانه</a>
🔸علت استفاده از Helper سفارشی CusomAction در اینجا به این خاطر است که (nameof(HomeController مقدار HomeController را برمی گرداند ولی ما نیاز به قسمت بدون Controller یعنی Home داریم:
public static string CustomAction(this UrlHelper htmlHelper, string actionName, string controllerName)
{
return htmlHelper.Action(actionName, controllerName.Substring(0, controllerName.Length - 10));
}
🔸نکته دیگر این که برای استفاده از کلیه ویژگی های 6.0 #C در MVC باید پکیج زیر را نصب نمایید:
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
🔵اتصال رشته یا String Interpolation
🔸با کمک روش جدید اتصال رشته در ورژن جدید #C، دیگر نیازی به String.Format و چسباندن رشته با + بهم ندارید:
var firstName = "Saeed";
var lastName = "Rezayi";
// before c# 6
var introduction = string.Format("First Name: {0} - Last Name: {1}", firstName, lastName);
// after c# 6
var introduction = $"First Name: {firstName} - Last Name: {lastName}";
عملگر Null-Conditional
🔵روشی سریع برای چک کردن نال و جلوگیری از خطای معروف NullReferenceException
// Without Null-Conditional Operator
public string Truncate(string input, int length)
{
string result = input;
if (!string.IsNullOrEmpty(input))
result = input.Substring(0, Math.Min(input.Length, length));
return result;
}
// Whit Null-Conditional Operator
public string Truncate(string value, int length)
{
return value?.Substring(0, Math.Min(value.Length, length));
}
🔵مقدار دهی اولیه به Auto-Property ها یا (Auto-Property Initializers) :
🔸روش جدید مقداردهی اولیه به Auto-Property ها که تا قبل از این تنها از طریق constructor ممکن بود.
public class Post
{
public DateTime PublishDate { get; set; } = DateTime.Now;
}
🔵Expression Bodied Functions and Properties :
🔸یکی دیگر از ساده سازی های صورت گرفته در ورژن جدید.
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName => $"{FirstName} {LastName}";
public override string ToString() => $"{FirstName}, {LastName}";
}