C# Friends
خب ابتدا بیایم و رزومه جناب سی شارپ رو بررسی کنیم.🙂 ❓سی شارپ چیه؟ این زبان برپایه سادگی، مدرن بودن، همه منظوره و شئ گرا بودن ساخته شد که یک زبان برنامه نویسی سطح بالاست، بدین معنی که به زبان محاوره ای (انگلیسی) بسیار نزدیک میباشد زبان هایی مانند C و ++C سطح…
اصول برنامه نویسی C#.Net
Part 2
خلاصه:
چارچوب برنامه نویسی دات نت Net Framework.
OOP برنامه نویسی شئ گرا، پارادایم شئ گرایی OOPS
نکته قابل توجه:: مباحث اصلی شئ گرایی شامل وراثت(Inheritance)، چند ریختی(Polymorphism)، کپسوله سازی(Encapsulation) و برخی قوانین معروف و شهودی برنامه نویسی میباشد که اکثرا وابسته به زبان برنامه نویسی خاصی نبوده و یادگیری و بکار بردن آنها برای هر برنامه نویس واقعی لازم میباشد.
الگوهای طراحی Design Patterns، برنامه نویسی چند لایه N-Layer
چارچوب فریم ورک دات نت
BCL (Base Class Library)
BCL stands for Base class library also known as Class library (CL). BCL is a subset of Framework class library (FCL). Class library is the collection of reusable types that are closely integrated with CLR. Base Class library provides classes and types that are helpful in performing day to day operation e.g. dealing with string and primitive types, database connection, IO operations.
CLR (Common Language Runtime)
محیط اجرای مشترک بین تمام زبان های برنامه نویسی که وظایفی چون کامپایل کردن کد، برقراری امنیت اجرای کد و ایجاد ارتباط بین زبان های برنامه نویسی دات نت و مدیریت حافظه را بر عهده دارد.
به برنامه های تحت net. اصطلاحا مدیریت شده یا Managed گفته میشود(تحت مدیریت CLR)، زبان های مثل C++,Pascal UnManaged هستند.
CLS (Common Language Specification)
یک سری قوانین را بیان میکند که اگر هر زبان برنامه نویسی آن را رعایت کند، همه زبان های تحت دات نت میتوانند کد نوشته شده آن را اجرا کنند.
برخی قوانین CLS:
عدم استفاده از Pointer
عدم استفاده از انواع داده ای بدون علامت(uint, ulong=>در c#)
عدم استفاده از لیست متغیر در آرگومانهای توابع Params یا ParamArray (اندیس شروع تمام آرایه ها باید صفر باشد)
اینترفیس ها(Interface) نمی توانند توابع استاتیک static داشته باشند
یک سازنده Constructor باید قبل از هرکاری سازنده کلاس پدر Parent را فراخوانی نماید
CTS (Common Type System)
مشخص کننده یک سری نوع داده ئ قوانینی در مورد این نوع داده هاست که در مورد تمام زبان های تحت دات نت مشترک است. مثلا تابع نوشته شده در vb.net با نوع برگشتی single را در c# فراخوانی کنید بصورت float میبینید؛ زیرا float و single یکی هستند و در نهایت به ساختار System.Single تبدیل میشوند.
MSIL (Microsoft Intermediate Language)
کدهای برنامه نویسی در هر یک از زبان های تحت Net. به زبان IL تبدیل خواهند شد و سپس توسط JIT یا همان Just In Time Compiler به زبان ماشین ترجمه میشوند.
:مسیر کامپایلر های دات نت در ویندوز
[windows drive]:\windows\Microsoft.Net\framework\[version]\csc.exe (for c#.net)- vbc.exe (for vb.net) - vjc.exe (for j#.net)
Csc CompileMe.cs => CompileMe.exe مثال نحوه کامپایل دستی
Csc /target:Library خروجی کتابخانه کلاس
Csc /out:OutputName.exe خروجی اجرایی با نام دلخواه
Assembly (اسمبلی)
اسمبلی یا جداسازی فیزیکی، کوچکترین واحد مستقل است که می تواند نصب شود، به عنوان مثال یک فایل dll یا exe
NameSpace (فضای نام)
فضای نام یک جور حدا سازی بین کلاس ها به صورت منطقی است. مثلا تمام enum ها و class های مربوط به کار با فایل ها را در فضای نام System.IO داریم، یا هر چیز مربوط به XML داخل System.XML قرار دارد و داخل آن فضای نام های دیگری مانند System.XML.XPath وجود دارد(انسجام کلاس های مرتبط) و میتوانیم دو کلاس هم نام ولی در دو فضای نام متفاوت داشته باشیم.؟؟
GC (Garbage Collection)
یکی از ویژگی های مهم دات نت جمع آوری زباله یا GC است و به این معنی است که پس از ایجاد متغیر ها و زمانی که کارمان با آنها تمام شد، CLR حافظه آن ها را آزاد کرده و در اختیار Runtime قرار میدهد (مدیریت خودکار حافظه)
پس ایجاد و تخصیص حافظه در Stack بسیار سریعتر از Heap انجام میشود و GC فقط روی Heap انجام میشود.
هر چیزی در دات نت، از کلاس Object مشتق میشود(System.Object). مفهوم بحث اشتقاق یا ارث بری(Inheritance) یعنی یک کلاس، ویژگی های یک کلاس دیگر را به ارث ببرد، مانند فرزند که برخی از ویژگی های والدین خود را به ارث میبرد.
مثلا چون کلاس object متد عمومی به نام ToString دارد، پس تمامی کلاس ها و Struct ها و داده ها، متد ToString را خواهند داشت.
@csharpfriends
Part 2
خلاصه:
چارچوب برنامه نویسی دات نت Net Framework.
OOP برنامه نویسی شئ گرا، پارادایم شئ گرایی OOPS
نکته قابل توجه:: مباحث اصلی شئ گرایی شامل وراثت(Inheritance)، چند ریختی(Polymorphism)، کپسوله سازی(Encapsulation) و برخی قوانین معروف و شهودی برنامه نویسی میباشد که اکثرا وابسته به زبان برنامه نویسی خاصی نبوده و یادگیری و بکار بردن آنها برای هر برنامه نویس واقعی لازم میباشد.
الگوهای طراحی Design Patterns، برنامه نویسی چند لایه N-Layer
چارچوب فریم ورک دات نت
BCL (Base Class Library)
BCL stands for Base class library also known as Class library (CL). BCL is a subset of Framework class library (FCL). Class library is the collection of reusable types that are closely integrated with CLR. Base Class library provides classes and types that are helpful in performing day to day operation e.g. dealing with string and primitive types, database connection, IO operations.
CLR (Common Language Runtime)
محیط اجرای مشترک بین تمام زبان های برنامه نویسی که وظایفی چون کامپایل کردن کد، برقراری امنیت اجرای کد و ایجاد ارتباط بین زبان های برنامه نویسی دات نت و مدیریت حافظه را بر عهده دارد.
به برنامه های تحت net. اصطلاحا مدیریت شده یا Managed گفته میشود(تحت مدیریت CLR)، زبان های مثل C++,Pascal UnManaged هستند.
CLS (Common Language Specification)
یک سری قوانین را بیان میکند که اگر هر زبان برنامه نویسی آن را رعایت کند، همه زبان های تحت دات نت میتوانند کد نوشته شده آن را اجرا کنند.
برخی قوانین CLS:
عدم استفاده از Pointer
عدم استفاده از انواع داده ای بدون علامت(uint, ulong=>در c#)
عدم استفاده از لیست متغیر در آرگومانهای توابع Params یا ParamArray (اندیس شروع تمام آرایه ها باید صفر باشد)
اینترفیس ها(Interface) نمی توانند توابع استاتیک static داشته باشند
یک سازنده Constructor باید قبل از هرکاری سازنده کلاس پدر Parent را فراخوانی نماید
CTS (Common Type System)
مشخص کننده یک سری نوع داده ئ قوانینی در مورد این نوع داده هاست که در مورد تمام زبان های تحت دات نت مشترک است. مثلا تابع نوشته شده در vb.net با نوع برگشتی single را در c# فراخوانی کنید بصورت float میبینید؛ زیرا float و single یکی هستند و در نهایت به ساختار System.Single تبدیل میشوند.
MSIL (Microsoft Intermediate Language)
کدهای برنامه نویسی در هر یک از زبان های تحت Net. به زبان IL تبدیل خواهند شد و سپس توسط JIT یا همان Just In Time Compiler به زبان ماشین ترجمه میشوند.
:مسیر کامپایلر های دات نت در ویندوز
[windows drive]:\windows\Microsoft.Net\framework\[version]\csc.exe (for c#.net)- vbc.exe (for vb.net) - vjc.exe (for j#.net)
Csc CompileMe.cs => CompileMe.exe مثال نحوه کامپایل دستی
Csc /target:Library خروجی کتابخانه کلاس
Csc /out:OutputName.exe خروجی اجرایی با نام دلخواه
Assembly (اسمبلی)
اسمبلی یا جداسازی فیزیکی، کوچکترین واحد مستقل است که می تواند نصب شود، به عنوان مثال یک فایل dll یا exe
NameSpace (فضای نام)
فضای نام یک جور حدا سازی بین کلاس ها به صورت منطقی است. مثلا تمام enum ها و class های مربوط به کار با فایل ها را در فضای نام System.IO داریم، یا هر چیز مربوط به XML داخل System.XML قرار دارد و داخل آن فضای نام های دیگری مانند System.XML.XPath وجود دارد(انسجام کلاس های مرتبط) و میتوانیم دو کلاس هم نام ولی در دو فضای نام متفاوت داشته باشیم.؟؟
GC (Garbage Collection)
یکی از ویژگی های مهم دات نت جمع آوری زباله یا GC است و به این معنی است که پس از ایجاد متغیر ها و زمانی که کارمان با آنها تمام شد، CLR حافظه آن ها را آزاد کرده و در اختیار Runtime قرار میدهد (مدیریت خودکار حافظه)
پس ایجاد و تخصیص حافظه در Stack بسیار سریعتر از Heap انجام میشود و GC فقط روی Heap انجام میشود.
هر چیزی در دات نت، از کلاس Object مشتق میشود(System.Object). مفهوم بحث اشتقاق یا ارث بری(Inheritance) یعنی یک کلاس، ویژگی های یک کلاس دیگر را به ارث ببرد، مانند فرزند که برخی از ویژگی های والدین خود را به ارث میبرد.
مثلا چون کلاس object متد عمومی به نام ToString دارد، پس تمامی کلاس ها و Struct ها و داده ها، متد ToString را خواهند داشت.
@csharpfriends
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ لیست برترین CMS های سورس باز ASP.NET Core
✔️ مرتب شده بر اساس محبوبیت
🔸1- nopCommerce (e-commerce)
🔹2- OrchardCMS
🔸3- SimplCommerce (e-commerce)
🔹4- Miniblog.Core
🔸5- Squidex (headless CMS)
🔹6- GrandNode (e-commerce)
🔸7- Weapsy
🔹8- Piranha CMS
🔸9- Cofoundry
🔹10- Blogifier
🔸11- Platformus
🔹12- SimpleContent
🔸13- Awesome CMS Core
🔹14- BlogCore (Blazor blog)
🔸15- Lynicon CMS
🔹16- NetCoreCMS
🔸17- VirtoCommerce (e-commerce)
https://dottutorials.net/top-open-source-asp-net-core-cms
__________________
@IranAspMvc
✔️ مرتب شده بر اساس محبوبیت
🔸1- nopCommerce (e-commerce)
🔹2- OrchardCMS
🔸3- SimplCommerce (e-commerce)
🔹4- Miniblog.Core
🔸5- Squidex (headless CMS)
🔹6- GrandNode (e-commerce)
🔸7- Weapsy
🔹8- Piranha CMS
🔸9- Cofoundry
🔹10- Blogifier
🔸11- Platformus
🔹12- SimpleContent
🔸13- Awesome CMS Core
🔹14- BlogCore (Blazor blog)
🔸15- Lynicon CMS
🔹16- NetCoreCMS
🔸17- VirtoCommerce (e-commerce)
https://dottutorials.net/top-open-source-asp-net-core-cms
__________________
@IranAspMvc
DotTutorials
Top Open Source ASP.NET Content Management System (CMS)
Introduction Unlike PHP, ASP.NET Core Developers don’t have many options available when It comes to…
C# Friends via @vote
موافقید دوره ای توسط اینجانب برای آموزش گنو/لینوکس در قبیله گیک ها ساخته بشه یا دوره آموزش C#.net و Asp.net Core؟
anonymous poll
آموزش مباحث سطح متوسط تا پیشرفته لینوکس، مثل پیکربندی، مدیریت سرویس ها و kernel لینوکس، اسکریپت نویسی و خط فرمان پیشرفته – 6
👍👍👍👍👍👍👍 50%
آموزش مباحث اولیه شامل نصب، راه اندازی و پیکربندی سیستم عامل و سخت افزار، خط فرمان و نصب محیط های گرافیکی – 4
👍👍👍👍👍 33%
هیچکدام😕 – 2
👍👍 17%
آموزش C# دات نت مقدماتی، مباحث پایه و دستورات زبان برنامه نویسی در Console/Win
▫️ 0%
کدنویسی C#.Net سطوح متوسط تا پیشرفته، آموزش مباحث کاربردی و Asp.net Web forms/Mvc
▫️ 0%
برنامه نویسی وب با Asp.net Core 2 و پیشنیاز C#، نصب، راه اندازی- کار با پلتفرم متن باز Net Core. در لینوکس❤️
▫️ 0%
پشتیبانی و حمایت میکنم Donate @mrgrayhat
▫️ 0%
👥 12 people voted so far.
anonymous poll
آموزش مباحث سطح متوسط تا پیشرفته لینوکس، مثل پیکربندی، مدیریت سرویس ها و kernel لینوکس، اسکریپت نویسی و خط فرمان پیشرفته – 6
👍👍👍👍👍👍👍 50%
آموزش مباحث اولیه شامل نصب، راه اندازی و پیکربندی سیستم عامل و سخت افزار، خط فرمان و نصب محیط های گرافیکی – 4
👍👍👍👍👍 33%
هیچکدام😕 – 2
👍👍 17%
آموزش C# دات نت مقدماتی، مباحث پایه و دستورات زبان برنامه نویسی در Console/Win
▫️ 0%
کدنویسی C#.Net سطوح متوسط تا پیشرفته، آموزش مباحث کاربردی و Asp.net Web forms/Mvc
▫️ 0%
برنامه نویسی وب با Asp.net Core 2 و پیشنیاز C#، نصب، راه اندازی- کار با پلتفرم متن باز Net Core. در لینوکس❤️
▫️ 0%
پشتیبانی و حمایت میکنم Donate @mrgrayhat
▫️ 0%
👥 12 people voted so far.
Forwarded from کدهک
نقشه ی راه
مایکروسافت برنامه ی بلند مدت خود را برای توسعه ی نسخه های بعدی دات نت اعلام کرد.
نسخه ی 3.1 از NET Core در اواخر ماه نوامبر (یک ماه دیگر) منتشر میشود که شامل پشتیبانی LTS یا بلند مدت سه ساله است.
در دوره های پشتیبانی بلند مدت برای باگها و مشکلات امنیتی پچ و آپدیت ارائه میشود که به صورت رایگان در اختیار همه قرار میگیرد.
در سال 2020 قرار است نسخه ی یک پارچه ی دات نت به شماره 5.0 منتشر شود و همه ی فریم ورکهای مختلف دات نت را زیر یک چتر مشترک جمع آوری کند.
از سال 2021 هر سال نسخه ی جدیدی از دات نت منتشر خواهد شد و یک سال در میان هم پشتیبانی LTS ارائه میشود.
مایکروسافت برنامه ی بلند مدت خود را برای توسعه ی نسخه های بعدی دات نت اعلام کرد.
نسخه ی 3.1 از NET Core در اواخر ماه نوامبر (یک ماه دیگر) منتشر میشود که شامل پشتیبانی LTS یا بلند مدت سه ساله است.
در دوره های پشتیبانی بلند مدت برای باگها و مشکلات امنیتی پچ و آپدیت ارائه میشود که به صورت رایگان در اختیار همه قرار میگیرد.
در سال 2020 قرار است نسخه ی یک پارچه ی دات نت به شماره 5.0 منتشر شود و همه ی فریم ورکهای مختلف دات نت را زیر یک چتر مشترک جمع آوری کند.
از سال 2021 هر سال نسخه ی جدیدی از دات نت منتشر خواهد شد و یک سال در میان هم پشتیبانی LTS ارائه میشود.
#DI #AspCore #DependencyInjection #DesignPattern #LooselyCoupled
#LifeTime #تزریق_وابستگی
AddTransient :
در این طول عمر، هر بار که یک سرویس/کلاس درخواست شود یک نمونه جدید ایجاد خواهد شد.
این یعنی، شما میتوانید نمونه های مختلفی از همان کلاس را در همان گراف
وابستگی داشته باشید.
AddScoped :
در این طول عمر، به ازای هر درخواست HTTP یک نمونه از سرویس ایجاد
و در پایان کار درخواست از حافظه حذف میشود.
مانند DbContext انتیتی فریمورک.
AddSingleton :
در این طول عمر، شما در طول کل حیات اپلیکیشن تنها یک نمونه از سرویس
را دریافت خواهید کرد. بدین صورت که کلاس تنها یک بار ایجاد و در مراجعات بعدی از همان استفاده خواهد شد.
این حالت مشابه کلاس های استاتیکه و معمولا برای سرویس هایی که هزینه نمونه سازی مجدد و پاکسازی حافظه در اونها زیاده، و یا نیاز به نگهداری حافظه متغیر هاست به کار میره.
مانند HttpContextAccessor
#LifeTime #تزریق_وابستگی
AddTransient :
در این طول عمر، هر بار که یک سرویس/کلاس درخواست شود یک نمونه جدید ایجاد خواهد شد.
این یعنی، شما میتوانید نمونه های مختلفی از همان کلاس را در همان گراف
وابستگی داشته باشید.
AddScoped :
در این طول عمر، به ازای هر درخواست HTTP یک نمونه از سرویس ایجاد
و در پایان کار درخواست از حافظه حذف میشود.
مانند DbContext انتیتی فریمورک.
AddSingleton :
در این طول عمر، شما در طول کل حیات اپلیکیشن تنها یک نمونه از سرویس
را دریافت خواهید کرد. بدین صورت که کلاس تنها یک بار ایجاد و در مراجعات بعدی از همان استفاده خواهد شد.
این حالت مشابه کلاس های استاتیکه و معمولا برای سرویس هایی که هزینه نمونه سازی مجدد و پاکسازی حافظه در اونها زیاده، و یا نیاز به نگهداری حافظه متغیر هاست به کار میره.
مانند HttpContextAccessor
Forwarded from کدهک
نسخه ی نهایی NET Core 3.1 منتشر شد
این نسخه قابلیت جدید خاصی ندارد اما بیش از 150 مورد رفع باگ و بهبود پرفورمنس را شامل میشود که در دو ماه گذشته روی نسخه 3.0 اعمال شده است.
نکته ی مهم پشتیبانی بلند مدت مایکروسافت یا LTS است که به مدت سه سال روی این نسخه اعمال میشود. به این ترتیب هر باگ یا مشکل امنیتی که در این نسخه وجود داشته باشد تا سه سال آینده رفع و در قالب نسخه های مینور آپدیت خواهد شد.
برای استفاده از این نسخه می توانید به سایت dot.net سر بزنید یا نسخه ی جاری VS 2019 خود را آپدیت کنید.
همچنین ASP NET Core 3.1 به همراه Entity Framework 3.1 و EF 6.4 هم به همراه این نسخه منتشر شدند.
ابزار Blazor Web Assembly هنوز در وضعیت Preview قرار دارد اما سازگاری با iOS 13 به آن اضافه شده است.
این نسخه قابلیت جدید خاصی ندارد اما بیش از 150 مورد رفع باگ و بهبود پرفورمنس را شامل میشود که در دو ماه گذشته روی نسخه 3.0 اعمال شده است.
نکته ی مهم پشتیبانی بلند مدت مایکروسافت یا LTS است که به مدت سه سال روی این نسخه اعمال میشود. به این ترتیب هر باگ یا مشکل امنیتی که در این نسخه وجود داشته باشد تا سه سال آینده رفع و در قالب نسخه های مینور آپدیت خواهد شد.
برای استفاده از این نسخه می توانید به سایت dot.net سر بزنید یا نسخه ی جاری VS 2019 خود را آپدیت کنید.
همچنین ASP NET Core 3.1 به همراه Entity Framework 3.1 و EF 6.4 هم به همراه این نسخه منتشر شدند.
ابزار Blazor Web Assembly هنوز در وضعیت Preview قرار دارد اما سازگاری با iOS 13 به آن اضافه شده است.
Forwarded from جادی، کیبورد آزاد - Jadi (Jadi)
ربات مد در روزهای تلخ
https://jadi.net/2020/01/robot-mode/
خلاصه اش اینه که این روزها سعی می کنم با کار سرم رو گرم کنم تا سلامت نسبی روان حفظ بشه. و بخشی از نتیجه اش چند تا ویدئو شده تو کانال های آپارات و یوتوب که شاید بخواین ببینین. در مورد رمزارزها و پایتون و لینوکس.
https://jadi.net/2020/01/robot-mode/
خلاصه اش اینه که این روزها سعی می کنم با کار سرم رو گرم کنم تا سلامت نسبی روان حفظ بشه. و بخشی از نتیجه اش چند تا ویدئو شده تو کانال های آپارات و یوتوب که شاید بخواین ببینین. در مورد رمزارزها و پایتون و لینوکس.
جادی دات نت | کیبرد آزاد
ربات مد در روزهای تلخ
روزهای تلخی رو می گذرونیم. وقاحت و دروغ تمومی نداره ولی ما سعی میکنیم دوام بیاریم. یکی از راه های دوام آوردن من در این شرایط، رفتن سراغ تو دو لیست و تیک زدن کارهای قدیمی ای است که توشه ولی با الویت پایین. چیزهایی مثل لینک دانلود آمازون کتاب توروالدز کار نمی…
نسخه جدید NET Core 3.1.1 منتشر شد
این نسخه با هدف رفع چند باگ امنیتی منتشر میشود که مربوط به تهدید Remote Code Execution است.
در این تهدید مهاجم سعی میکند با دستکاری Request کد غیر مجاز در سرور اجرا کند.
هرچند مایکروسافت جزئیات مشکلات امنیتی این چنینی را منتشر نمیکند ( با هدف جلوگیری از سو استفاده هکرها) اما اعلام کرده چند مورد از این نوع تهدید را حل کرده است.
این نسخه با هدف رفع چند باگ امنیتی منتشر میشود که مربوط به تهدید Remote Code Execution است.
در این تهدید مهاجم سعی میکند با دستکاری Request کد غیر مجاز در سرور اجرا کند.
هرچند مایکروسافت جزئیات مشکلات امنیتی این چنینی را منتشر نمیکند ( با هدف جلوگیری از سو استفاده هکرها) اما اعلام کرده چند مورد از این نوع تهدید را حل کرده است.
#قبیله_گیک_ها
#علی_بابا
#گردشگری
#اینترنت
#اپلیکیشن
#سرور
#امنیت
علی بابا هک شد!
علیبابا، بزرگترین ارائه دهنده خدمات اینترنتی گردشگری در بیانیهای اعلام کرد که تعدادی از سرورهایش مورد حمله هکرها قرار گرفته و برخی اطلاعات کاربرانش به سرقت رفته است.
مدیر ارشد اجرایی گروه علیبابا در رشته توییتی خبر از درز اطلاعات کاربران این شرکت طی حمله سایبری هکرها به سرورهای این شرکت داد:
مسعود طباطبایی مدیر ارشد اجرایی علی بابا در چند توییت اعلام کرد: "متاسفانه تعدادی از سرورهای علیبابا موردحمله هکرها قرارگرفته و به برخی از اطلاعات کاربران و سورسکدها دسترسی پیدا کردن. تیم امنیت علیبابا اقدامات لازم را انجام داده و با توجه به سرنخهای موجود، این موضوع از طریق نهادهای ذیربط در حال پیگیری است.
مسئولیت این رخداد را میپذیریم و از کسانی که به نحوی آسیب دیدن، عذرخواهی میکنم. حفاظت از اطلاعات همواره اولویت ما بوده و هست. این اطمینان را به شما میدم که اقدامات لازم برای جلوگیری از تکرار این اتفاق صورت گرفته و با قدرت بیشتر در جهت حفاظت از حریم خصوصی کاربران پیش خواهیم رفت."
#علی_بابا
#گردشگری
#اینترنت
#اپلیکیشن
#سرور
#امنیت
علی بابا هک شد!
علیبابا، بزرگترین ارائه دهنده خدمات اینترنتی گردشگری در بیانیهای اعلام کرد که تعدادی از سرورهایش مورد حمله هکرها قرار گرفته و برخی اطلاعات کاربرانش به سرقت رفته است.
مدیر ارشد اجرایی گروه علیبابا در رشته توییتی خبر از درز اطلاعات کاربران این شرکت طی حمله سایبری هکرها به سرورهای این شرکت داد:
مسعود طباطبایی مدیر ارشد اجرایی علی بابا در چند توییت اعلام کرد: "متاسفانه تعدادی از سرورهای علیبابا موردحمله هکرها قرارگرفته و به برخی از اطلاعات کاربران و سورسکدها دسترسی پیدا کردن. تیم امنیت علیبابا اقدامات لازم را انجام داده و با توجه به سرنخهای موجود، این موضوع از طریق نهادهای ذیربط در حال پیگیری است.
مسئولیت این رخداد را میپذیریم و از کسانی که به نحوی آسیب دیدن، عذرخواهی میکنم. حفاظت از اطلاعات همواره اولویت ما بوده و هست. این اطمینان را به شما میدم که اقدامات لازم برای جلوگیری از تکرار این اتفاق صورت گرفته و با قدرت بیشتر در جهت حفاظت از حریم خصوصی کاربران پیش خواهیم رفت."
Forwarded from C# Programming Guide
تقلید چیز خوبی نیست، نه در دین و نه در برنامه نویسی، تقلید چیزیه که انسان رو گمراه میکنه، آدم باید خودش به حقیقت برسه و تقلید چیزیه که باعث تعصب میشه اگر ما از یک سری ساختار در برنامه نویسی به عنوان استاندارد جهانی تقلید میکنیم خودبخود برای اینکه اون ساختار رو برای کسی توجیه کنیم و یا توضیح بدیم میگیم این یک "استاندارده" و همه دارن ازش استفاده میکنن من به شخصیه با این قضیه به شدت مخالفم، هیچ استانداردی وجود نداره و اگر داره، کاری که شما میکنید، ساختاری که شما میچینید هم میتونه یک استاندارد باشه و اینکه کلا جهان ساختار شمارو متوجه نمیشن به این معنی نیست که شما نمیفهمید یا در اشتباهید بلکه به این معنی میتونه باشه که شما از اینده اومدید و تفکری پیشتازتر دارید.
توی برنامه نویسی اصلا دوست ندارم از ساختار و استاندارد های دیگران استفاده کنم همه چیز توی ذهن من به طور پیشفرض مسیر اشتباهی رو طی میکنن مگر اینکه دلیل منطقی ای براش باشه، استفاده از کلمه های استاندارد جهانی یا چیزی که همه قبولش دارن برای من سیستم و درست بودن ساختار رو توجیه نمی کنه، اگر اینطور فکر کنید همیشه برای کارهایی که میکنید راه کار های بهتر و راحت تر به ذهنتون میرسه، متفاوت فکر کردن اشتباه نیست همه ی تکنولوژی ها ایده ها و ساختار های جدید وقتی تولید شدن که افراد متفاوت فکر کردن. متفاوت فکر کردن که دات نت کور ساخته شد متفاوت فکر کردن که برق اختراع شد متفاوت فکر کردن که هواپیما اختراع شد و دنیا رو متحول کردن.
استاندارد خودتون رو داشته باشید، شاید یه روزی اونی که دنیا رو متحول میکنه شما باشید.
آرزوی موفقیت.
#تقلید
#استاندارد
@CsharpTips
توی برنامه نویسی اصلا دوست ندارم از ساختار و استاندارد های دیگران استفاده کنم همه چیز توی ذهن من به طور پیشفرض مسیر اشتباهی رو طی میکنن مگر اینکه دلیل منطقی ای براش باشه، استفاده از کلمه های استاندارد جهانی یا چیزی که همه قبولش دارن برای من سیستم و درست بودن ساختار رو توجیه نمی کنه، اگر اینطور فکر کنید همیشه برای کارهایی که میکنید راه کار های بهتر و راحت تر به ذهنتون میرسه، متفاوت فکر کردن اشتباه نیست همه ی تکنولوژی ها ایده ها و ساختار های جدید وقتی تولید شدن که افراد متفاوت فکر کردن. متفاوت فکر کردن که دات نت کور ساخته شد متفاوت فکر کردن که برق اختراع شد متفاوت فکر کردن که هواپیما اختراع شد و دنیا رو متحول کردن.
استاندارد خودتون رو داشته باشید، شاید یه روزی اونی که دنیا رو متحول میکنه شما باشید.
آرزوی موفقیت.
#تقلید
#استاندارد
@CsharpTips
ساختارها(structure)،تفکر ها و الگوهای (patterns) برنامه نویسی برای این ساخته و برخی استاندارد شده اند تا طراحی و پیاده سازی زیرساخت و برنامه ها اسون تر و قابل فهم تر باشن. به شکلی که بقیه برنامه نویس ها بتونن پروژه شمارو درک کنن و توسعه بدن بدون اینکه بخوان همش با سازنده در ارتباط باشن و داکیومنت های مختلف بخوان، روی توسعه تمرکز کنن.
فریم ورک هایی مثل ABP,asp.net zero وجود دارن که زیرساخت اپلیکیشن رو از پیش پی ریزی کردن، به عنوان مثال مباحث احراز هویت، سرویس ها و دیتابیس(ef) و یک رابط کاربری پیش فرض که هم نسخه angular و هم و mvc ajax داره که پیشفرض برپایه SPA هست.
فریمورک abp بر پایه معماری و تفکر DDD و الگوهایی مثل Dependency injection همراه قابلیت هاو پترن های دیگه ای مثل auto mapper, entity framework, identity, service injection و ...که برخی توسط خود abp کاستوم شده و قابلیت extensions هایی بهشون اضافه شده که چهارتاشم بیشتر استفاده نمیکنین حالا ولی خوبن.
پروژه ها و لایه هاتون. برای هر کدوم شما دامین ها و dto هاتون رو پیاده سازی میکنید. logic و سرویس هاتون رو مینویسید و اینترفیس هاتون رو برای هر کدوم تعریف میکنید، همچنین از برخی کلاس ها و اینترفیس های abp ارث بری میکنید مثل application service و crud تا براتون سرویس های restful ساخته بشه و عملیات های کلاینتتون رو انجام بدین.
اگه میخواین یکمتمیز تر باشین لایه های core, contract و shared رو برای شما گزاشتن.
البته یادتون نره کامنتم بزنین بلکه یکی دیگم بفهمه!
دیتابیس تون و جداولتون رو مینویسین و به کاستوم مپ auto mapper میفهمونین( یا حداقل سعی میکنین بفهمونین) که باید با چه DTO هایی در ارتباط باشه. یک طرفه باشه یا دو reverse یا همشو؟!
مدلهای dto صفحه بندی شده paged با ارث بری از کلاس های پیشفرضش میسازید و خواص، فیلتر ها رو برای سرچ تعیین میکنین(اگر به Paging و Huge List ها نیاز هست)
مباحثی مثل نقش ها و دسترسی ها، چند مستاجری (Tenant) و چند زبانی (multi lingual) پیشفرض وجود داره و میتونین کانفیگ کنین.
وقتی backend رو پیاده کردین نسخه کلاینت رو میگیرین. آنگولار یا mvc/jquery
با استفاده از swagger و اسکریپت خودش، میتونین تمام dtoهای سرویس هاتون رو برای کلاینت بسازید(Generate) و شروع به نوشتن کامپوننت و سرویس هاتون برای استفاده بکنین و از شیوه خودش بهره ببرین به لطف type noscript.
اگر آنگولار رو برای ui انتخاب میکنین باید حوصله بیشتری خرج کنین، پکیج ها و کتابخونه ها رو با npm یا yarn نصب و اپدیت کنین(اپدیت پیشنهاد نمیشه این اول چون احتمال سفید شدن موهاتون زیاده تا کانفلیکت ها و compatibility ها رو تنظیم کنین. به نسخه ۹ که اصن هیییچ) و از داکیومنت های بی انتهای abp یا zero بهره ببرید تا منوها، صفحه ها و سرویس هاتون رو توسعه بدین.
باشد تا متوجه شوید که هر کدوم چکار میکنن.
اگر Mvc رو انتخاب میکنین باید با js و jquery سر و کله بزنین و کلاینتتون رو برای اسفاده طراحی کنین. مواظب باشین دچار سندروم جاوا اسکریپت نشین!!
ویژوال استادیو هم هنوز یکم نفهمه درست جاوا اسکریپت نمیفهمه.
vscode پیشنهاد میکنم برای هر دو.
تا اینجای کار که بدک نیست و سریع میشه پروژه زد و توسعه داد و فیچر هارو بالای هم چید و پابلیش بدیم مشتری حال کنه مام حال کنیم با یک عالمه کد :)
در یک پست دیگه منظورم رو کاملتر میگم و از اندک تجربم هم براتون بیشتر مینویسم.
@csharpfriends @CsharpTips
فریم ورک هایی مثل ABP,asp.net zero وجود دارن که زیرساخت اپلیکیشن رو از پیش پی ریزی کردن، به عنوان مثال مباحث احراز هویت، سرویس ها و دیتابیس(ef) و یک رابط کاربری پیش فرض که هم نسخه angular و هم و mvc ajax داره که پیشفرض برپایه SPA هست.
فریمورک abp بر پایه معماری و تفکر DDD و الگوهایی مثل Dependency injection همراه قابلیت هاو پترن های دیگه ای مثل auto mapper, entity framework, identity, service injection و ...که برخی توسط خود abp کاستوم شده و قابلیت extensions هایی بهشون اضافه شده که چهارتاشم بیشتر استفاده نمیکنین حالا ولی خوبن.
پروژه ها و لایه هاتون. برای هر کدوم شما دامین ها و dto هاتون رو پیاده سازی میکنید. logic و سرویس هاتون رو مینویسید و اینترفیس هاتون رو برای هر کدوم تعریف میکنید، همچنین از برخی کلاس ها و اینترفیس های abp ارث بری میکنید مثل application service و crud تا براتون سرویس های restful ساخته بشه و عملیات های کلاینتتون رو انجام بدین.
اگه میخواین یکمتمیز تر باشین لایه های core, contract و shared رو برای شما گزاشتن.
البته یادتون نره کامنتم بزنین بلکه یکی دیگم بفهمه!
دیتابیس تون و جداولتون رو مینویسین و به کاستوم مپ auto mapper میفهمونین( یا حداقل سعی میکنین بفهمونین) که باید با چه DTO هایی در ارتباط باشه. یک طرفه باشه یا دو reverse یا همشو؟!
مدلهای dto صفحه بندی شده paged با ارث بری از کلاس های پیشفرضش میسازید و خواص، فیلتر ها رو برای سرچ تعیین میکنین(اگر به Paging و Huge List ها نیاز هست)
مباحثی مثل نقش ها و دسترسی ها، چند مستاجری (Tenant) و چند زبانی (multi lingual) پیشفرض وجود داره و میتونین کانفیگ کنین.
وقتی backend رو پیاده کردین نسخه کلاینت رو میگیرین. آنگولار یا mvc/jquery
با استفاده از swagger و اسکریپت خودش، میتونین تمام dtoهای سرویس هاتون رو برای کلاینت بسازید(Generate) و شروع به نوشتن کامپوننت و سرویس هاتون برای استفاده بکنین و از شیوه خودش بهره ببرین به لطف type noscript.
اگر آنگولار رو برای ui انتخاب میکنین باید حوصله بیشتری خرج کنین، پکیج ها و کتابخونه ها رو با npm یا yarn نصب و اپدیت کنین(اپدیت پیشنهاد نمیشه این اول چون احتمال سفید شدن موهاتون زیاده تا کانفلیکت ها و compatibility ها رو تنظیم کنین. به نسخه ۹ که اصن هیییچ) و از داکیومنت های بی انتهای abp یا zero بهره ببرید تا منوها، صفحه ها و سرویس هاتون رو توسعه بدین.
باشد تا متوجه شوید که هر کدوم چکار میکنن.
اگر Mvc رو انتخاب میکنین باید با js و jquery سر و کله بزنین و کلاینتتون رو برای اسفاده طراحی کنین. مواظب باشین دچار سندروم جاوا اسکریپت نشین!!
ویژوال استادیو هم هنوز یکم نفهمه درست جاوا اسکریپت نمیفهمه.
vscode پیشنهاد میکنم برای هر دو.
تا اینجای کار که بدک نیست و سریع میشه پروژه زد و توسعه داد و فیچر هارو بالای هم چید و پابلیش بدیم مشتری حال کنه مام حال کنیم با یک عالمه کد :)
در یک پست دیگه منظورم رو کاملتر میگم و از اندک تجربم هم براتون بیشتر مینویسم.
@csharpfriends @CsharpTips
Interface چیست ؟
به طور کلی Interface ها یک قالب اجرائی برای کلاسها میباشند. بدین صورت که با تعریف مشخصات کلی متدها، بدون پیاده سازی آنها، کلاسهای مشتق شده را ملزم به پیاده سازی کامل آن متدها میکند. بنابراین فقط مشخصات متدها یک بار در Interface تعریف میشوند و هر جا که لازم باشد پس از ارث بری، متدهای آنها پیاده سازی میشوند.
در حالت عادی ارث بری از چند کلاس به طور هم زمان امکان پذیر نیست ولی Interfaceها این مزیت را دارند که به هر تعداد که لازم است، کلاسهای مشتق شده از آنها ارث بری کنند. این موضوع یکی از مهمترین مزایای Interface میباشد. هم چنین با استفاده از Interfaceها کدها قابلیت بهتری در نگهداری، انعطاف پذیری و استفاده مجدد پیدا میکنند.
به طور کلی Interface ها یک قالب اجرائی برای کلاسها میباشند. بدین صورت که با تعریف مشخصات کلی متدها، بدون پیاده سازی آنها، کلاسهای مشتق شده را ملزم به پیاده سازی کامل آن متدها میکند. بنابراین فقط مشخصات متدها یک بار در Interface تعریف میشوند و هر جا که لازم باشد پس از ارث بری، متدهای آنها پیاده سازی میشوند.
در حالت عادی ارث بری از چند کلاس به طور هم زمان امکان پذیر نیست ولی Interfaceها این مزیت را دارند که به هر تعداد که لازم است، کلاسهای مشتق شده از آنها ارث بری کنند. این موضوع یکی از مهمترین مزایای Interface میباشد. هم چنین با استفاده از Interfaceها کدها قابلیت بهتری در نگهداری، انعطاف پذیری و استفاده مجدد پیدا میکنند.
آیا شرکت خوبی هست که قدر من رو بدونه
این مطلب مدت ها است که قراره نوشته بشه. چون مدت ها قبل یک دوست خیلی عزیزم ازم پرسیده:
من سالهاست که وبلاگت رو می خونم و از طرفدارای پر پر و پا قرصشم. طرز نوشتن و بیانت حرف نداره. خیلی وقت ها پیش میاد که بعد از هفته ها یا حتی ماه ها برمیگردم و بعضی از مطالبت رو می خونم. مثل پست «چیزهایی که در مدرسه یاد نمی دهند» که دو باری خونده بودمش و برای بار سوم امروز خوندم.
...
سوالی که برام پیش اومده اینه که آیا واقعا باید هر روز به خودت اون قوانین رو تکرار کنی و بمونی و بجنگی به قیمت به تحلیل رفتن زمان، سلامت روح و جسم و توانایی هایی که می تونی شکوفاشون کنی اما فرصتی برات نیست، یا که نه، شرایط مطلوب تری هم یه جایی ممکنه پیدا بشه؟
تو تجربه ای که در کار با شرکت های خارجی دارم، دستم اومده که همچین جاهایی هستن که قدر بدونن و احترام بذارن و البته به نظرم شاید بی عدالتی هم نباشه اگر وقتی کاری رو درست انجام نمی دی، رفتار خوب دریافت نکنی، اما وقتی کارت به بهترین نحو ممکن انجام می شه، آیا بازم باید رفتار زشت و بد ببینی؟
متاسفانه جواب من خیلی دلگرم کننده نیست. شرکت ها بهتر و بدتر دارن ولی چیزی به اسم شرکت قدردان خوب مهربون باشعور قابل وفاداری دوستانه فلان فلان وجود نداره. دلیلش هم ساده است: سرمایه داری. هدف سرمایه داری شکوفا کردن انسان ها نیست بلکه کسب سود بیشتره.
ما توی عصری توی کرهای زندگی می کنیم که سیستم تولیدش سرمایه داری است. شاید کشورها اسم خودشون رو بذارن «جمهوری خلق» یا «جمهوری اسلامی» یا هر چیز دیگه ولی در نهایت چیزی که کشورها و در سطح بالاتری کل سیاره رو می چرخونه سرمایه داری است. سرمایه داری یعنی کسی که سرمایه داره قوانینی رو وضع می کنه برای بیشتر کردن سرمایه اش و اگر هم این وسط یکی دلش برای بقیه بسوزه و سعی کنه مهربونتر باشه یا مثلا خدمات بیشتری بده یا کار کمتری بکشه یا هر چی، سریعا توسط شرکت هایی (یا در سطح کلان بخونین کشورهایی) که این «سوسول بازی»ها رو ندارن خورده میشه. مثلا شرکت اروپایی فنلاندی من که توش شخصیت آدم ها مهم بود و انسان ها حق داشتن در ابعادی که دوست دارن توش پیشرفت کنن و سفرهاشون کاملا راحت و نسبتا لوکس باشه و ... سریعا توسط شرکت چینی رقیب که توش همه باید مثل سرباز کار کنن وگرنه با یکی از اون یک میلیارد و دویست میلیون و خورده ای (که رقم یکان اون خوردهای اش برابر جمعیت فنلاند است) جایگزین میشن، تهدید می شه و مجبوره اون خدماتش رو قطع کنه.
البته نه اینکه همه جا مثل هم باشه و همه جا وحشتناک باشه و اینها. ولی یکسری توهم رو نباید داشته باشیم. مثلا این توهم که در خارج کار راحت تره و توی ایران ما خیلی زحمت می کشیم یا مثلا این توهم ریشه ای تر که می رم یک شرکتی و خیلی مهم می شم و توش به من احترام میذارن و ارزش کارم رو درک می کنن. مشکل این نیست که شرکت ها نفهم هستن، مهم اینه که هدف شرکت ها با هدف ما فرق داره. شرکت ها دنبال حداکثر کردن سودشون هستن و ابتکار و خلاقیت و .. شما معمولا هنر خیلی بزرگی در این جریان بازی نمی کنه. همونطور که گفتم بعضی شرکت ها بهتر هستن چون بهتر میفهمن که یک کارمند راضی می تونه سود بهتری برسونه یا مثلا شرایط کاری بهتر باعث جذب نیروهای بهتر می شه که در نهایت سود بهتری می دن یا مثلا با شعورترهاشون شروع می کنن به جایگزین کردن سیستم هرمی با سیستمهای ماتریسی که توش شما یک رییس ندارین که بتونه شما رو ناراحت کنه (دو تا دارین که تا حدی با هم تضاد منافع دارن و در نتیجه شما راحت تر زندگی می کنین). اینها شرکت ها رو با هم متفاوت می کنن. به قول سوفیا لورن «پول خوشبختی نمی آره ولی من ترجیح می دم توی یک کادیلاک گریه کنم تا توی یک فولکس». شرکت ها هم با هم فرق دارن. شرکت خیلی جذابی وجود نداره که به شما هم حقوق بده هم توش کاملا خوشحال باشین ولی معلومه که بدون شک بعضی شرکت ها از بعضی شرکت ها بهتر یا با شعورتر هستن اما هیچ تضمینی نیست که در دوران بد اقتصادی، لوس بازیهای اروپایی رو بذارن کنار تا بتونن با رقبایی که مثل ماشین جنگی کار می کنن، رقابت کنن.
این مطلب مدت ها است که قراره نوشته بشه. چون مدت ها قبل یک دوست خیلی عزیزم ازم پرسیده:
من سالهاست که وبلاگت رو می خونم و از طرفدارای پر پر و پا قرصشم. طرز نوشتن و بیانت حرف نداره. خیلی وقت ها پیش میاد که بعد از هفته ها یا حتی ماه ها برمیگردم و بعضی از مطالبت رو می خونم. مثل پست «چیزهایی که در مدرسه یاد نمی دهند» که دو باری خونده بودمش و برای بار سوم امروز خوندم.
...
سوالی که برام پیش اومده اینه که آیا واقعا باید هر روز به خودت اون قوانین رو تکرار کنی و بمونی و بجنگی به قیمت به تحلیل رفتن زمان، سلامت روح و جسم و توانایی هایی که می تونی شکوفاشون کنی اما فرصتی برات نیست، یا که نه، شرایط مطلوب تری هم یه جایی ممکنه پیدا بشه؟
تو تجربه ای که در کار با شرکت های خارجی دارم، دستم اومده که همچین جاهایی هستن که قدر بدونن و احترام بذارن و البته به نظرم شاید بی عدالتی هم نباشه اگر وقتی کاری رو درست انجام نمی دی، رفتار خوب دریافت نکنی، اما وقتی کارت به بهترین نحو ممکن انجام می شه، آیا بازم باید رفتار زشت و بد ببینی؟
متاسفانه جواب من خیلی دلگرم کننده نیست. شرکت ها بهتر و بدتر دارن ولی چیزی به اسم شرکت قدردان خوب مهربون باشعور قابل وفاداری دوستانه فلان فلان وجود نداره. دلیلش هم ساده است: سرمایه داری. هدف سرمایه داری شکوفا کردن انسان ها نیست بلکه کسب سود بیشتره.
ما توی عصری توی کرهای زندگی می کنیم که سیستم تولیدش سرمایه داری است. شاید کشورها اسم خودشون رو بذارن «جمهوری خلق» یا «جمهوری اسلامی» یا هر چیز دیگه ولی در نهایت چیزی که کشورها و در سطح بالاتری کل سیاره رو می چرخونه سرمایه داری است. سرمایه داری یعنی کسی که سرمایه داره قوانینی رو وضع می کنه برای بیشتر کردن سرمایه اش و اگر هم این وسط یکی دلش برای بقیه بسوزه و سعی کنه مهربونتر باشه یا مثلا خدمات بیشتری بده یا کار کمتری بکشه یا هر چی، سریعا توسط شرکت هایی (یا در سطح کلان بخونین کشورهایی) که این «سوسول بازی»ها رو ندارن خورده میشه. مثلا شرکت اروپایی فنلاندی من که توش شخصیت آدم ها مهم بود و انسان ها حق داشتن در ابعادی که دوست دارن توش پیشرفت کنن و سفرهاشون کاملا راحت و نسبتا لوکس باشه و ... سریعا توسط شرکت چینی رقیب که توش همه باید مثل سرباز کار کنن وگرنه با یکی از اون یک میلیارد و دویست میلیون و خورده ای (که رقم یکان اون خوردهای اش برابر جمعیت فنلاند است) جایگزین میشن، تهدید می شه و مجبوره اون خدماتش رو قطع کنه.
البته نه اینکه همه جا مثل هم باشه و همه جا وحشتناک باشه و اینها. ولی یکسری توهم رو نباید داشته باشیم. مثلا این توهم که در خارج کار راحت تره و توی ایران ما خیلی زحمت می کشیم یا مثلا این توهم ریشه ای تر که می رم یک شرکتی و خیلی مهم می شم و توش به من احترام میذارن و ارزش کارم رو درک می کنن. مشکل این نیست که شرکت ها نفهم هستن، مهم اینه که هدف شرکت ها با هدف ما فرق داره. شرکت ها دنبال حداکثر کردن سودشون هستن و ابتکار و خلاقیت و .. شما معمولا هنر خیلی بزرگی در این جریان بازی نمی کنه. همونطور که گفتم بعضی شرکت ها بهتر هستن چون بهتر میفهمن که یک کارمند راضی می تونه سود بهتری برسونه یا مثلا شرایط کاری بهتر باعث جذب نیروهای بهتر می شه که در نهایت سود بهتری می دن یا مثلا با شعورترهاشون شروع می کنن به جایگزین کردن سیستم هرمی با سیستمهای ماتریسی که توش شما یک رییس ندارین که بتونه شما رو ناراحت کنه (دو تا دارین که تا حدی با هم تضاد منافع دارن و در نتیجه شما راحت تر زندگی می کنین). اینها شرکت ها رو با هم متفاوت می کنن. به قول سوفیا لورن «پول خوشبختی نمی آره ولی من ترجیح می دم توی یک کادیلاک گریه کنم تا توی یک فولکس». شرکت ها هم با هم فرق دارن. شرکت خیلی جذابی وجود نداره که به شما هم حقوق بده هم توش کاملا خوشحال باشین ولی معلومه که بدون شک بعضی شرکت ها از بعضی شرکت ها بهتر یا با شعورتر هستن اما هیچ تضمینی نیست که در دوران بد اقتصادی، لوس بازیهای اروپایی رو بذارن کنار تا بتونن با رقبایی که مثل ماشین جنگی کار می کنن، رقابت کنن.