یادداشت های یه برنامه نویس
280 subscribers
39 photos
3 videos
3 files
80 links
این کانال برای در میان گذاشتن یادداشت ها و تجربیات جالب در مورد برنامه نویسی هست امیدوارم دوست داشته باشین.

@one_programmer

https://t.me/one_programmer

ادمین @EngMohsen

Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
Download Telegram
@one_programmer
یکی از ویژگی های جدید 7 #C

C# 7 - Local Functions
توابع محلی هست که امکان تعریف یک تابع را درون یک متد، فراهم می‌کنند. هدف آن‌ها تدارک توابعی کمکی است که به سایر قسمت‌های کلاس مرتبط نمی‌شوند. برای مثال اگر متدی نیاز به کار با یک private method دیگر را دارد و این متد خصوصی در جای دیگری استفاده نمی‌شود، می‌توان جهت بالابردن خوانایی برنامه و سهولت یافتن متد مرتبط، این متد خصوصی را تبدیل به یک تابع محلی، درون همان متد کرد.
static void Main(string[] args)
{
int Add(int a, int b)
{
return a + b;
}
Console.WriteLine(Add(3, 4));
}

مزیت کار با local functions نسبت به Func delegates محلی 

در قطعه کد فوق، کار انجام شده صرفا استفاده‌ی از یک Syntax جدید نیست؛ بلکه از لحاظ کارآیی نیز سربار کمتری را به همراه دارد. زمانیکه Func Delegates تعریف می‌شوند، کار ایجاد یک anonymous type، وهله سازی و فراخوانی آن‌ها توسط کامپایلر صورت می‌گیرد. اما حین کار با توابع محلی، کامپایلر با یک متد استاندارد سروکار دارد و هیچکدام از مراحل یاد شده و سربارهای آن‌ها رخ نمی‌دهند (هیچگونه GC allocation ایی نخواهیم داشت). به علاوه اینبار کامپایلر فرصت in-line تعریف کردن متد را به نحو بهتری یافته و به این ترتیب کار سوئیچ بین متدهای مختلف کاهش پیدا می‌کند که در نهایت سرعت برنامه را افزایش می‌دهند.
@one_programmer
یادداشت های یه برنامه نویس
@one_programmer⁣ امروز میخام با یه ORM خوب آشناتون بکنم همیشه یکی از مهمترین قسمت های برنامه نویسی، نحوه ارتباط برنامه نوشته شده و دیتابیس می باشد. از روش های مختلفی از قبیل ADO.NET Classic یا Entity Framework برای این کار استفاده می کنیم. در اینجا با ORM…
@one_programmer
پیرو صحبت های پیشین در مورد Dapper
بنده تست از این ORM گرفتم که نتایج جالبی داشت.
صورت مسئله: کوئری داریم که محتویات یک رکورد از یک جدول با ۱۰۰۰ رکورد را به همراه ۵ join که ۲ join آن متداخل است و تا ۳ جدول داخل میشود٬ محتویات جداول دیگر حدودا ۲۰۰ رکورد می باشد. این کوئری با رعایت مسائل performance با Entity Framework نوشته شده است.
بنده این کوئری رو با Dapper باز نویسی کردم و به این نتایج رسیدم.
با ۵۰۰ بار run کردن این دستورات٬
EntityFramework: 19ms
Dapper: 16ms
جالبه که Dapper تونست ۳ میلی ثانیه سریعتر از Ef عمل کنه.
این تست نتایج دیگری هم داست٬ دستوری که بنده با Ef میزدم حدودا ۱۰ دقیقه وقت من رو میگرفت اما Dapper نزدیک به ۳۰ دقیقه٬ این به این معنی هست که سرعت توسعه در Dapper حدودا ۴ برابر کند تر پیش میره٬ اما مقایسه sql تولید شده این رو نشون میداد که کوئری تولید شده توسط Ef خیلی زیاد٬ داشتن ۴ عدد sub کوئری که کل کوئری بیش از ۳۰ خط میشد٬ اما کوئری که برنامه نویس با Dapper نوشته خیلی سبک تر با ۲ عدد sub کوئری و کمتر از ۲۰خط کد است٬ این نکته خیلی مهم هست مخصوصا وقتی که سرور زیر فشار باشه کوئری تولید شده توسط Ef به مراتب کند تر میشه.
نکته ایی که در این تست وجود داره این هستش که ممکنه در شرایط دیگری Dapper خیلی سریعتر عمل کنه٬ شرایط دیگر میتونه تعداد رکورد خیلی بیشتر باشه و join های متداخل و بیشتر یا لیست ها بزرگ بازگشتی و... که قطعا Dapper بازدهی بیشتری از خودش نشون میده.
@one_programmer
@one_programmer
انصراف میلیاردی از دانشگاه؛ فرمولی طلایی یا افسانه ای خیالی؟(بیل گیتس٬ مارک زاکربرگ)
انصراف از تحصیلات دانشگاهی ویژگی مشترک دو تن از مشهورترین و بزرگترین میلیاردهای حال حاضر دنیاست. جالب اینجاست که هم مارک زاکربرگ به عنوان بنیان گذار فیسبوک و هم بیل گیتس به عنوان بنیان گذار مایکروسافت ادامه تحصیل در یکی از معتبرترین دانشگاه های دنیا، یعنی هاروارد، را رها کرده اند. آیا واقعاً درس و دانشگاه ما از میلیاردر شدن باز می دارد؟
هردوی این افراد مشهور و اشخاص موفق مشابه این دو، همواره از رها کردن دانشگاه به عنوان بهترین تصمیم زندگی خود یاد می کنند، اما سوال اصلی اینجاست که این راهکار تا چه حد می تواند عمومیت داشته باشد؟

واقعیت اینجاست که بررسی های آماری متعدد نشان می دهند که افرادی مانند زاکربرگ و گیتس در اقلیت مطلق قرار دارند. به بیان دیگر، اکثریت قریب به اتفاق افراد موفق در جامعه ای مثل آمریکا دارای مدارک بالای دانشگاهی هستند.
جالب است بدانید که بر اساس بررسی آماری دقیقی که توسط نشریه «businessinsider» انجام گرفته، از میان ۱۱۷۴۵ نفر از موفق ترین افراد جامعه (چه از لحاظ مالی و چه موقعیت های اجتماعی یا سیاسی) ۹۴ درصد آنها با پایان تحصیلات تکمیلی به موفقیت دست پیدا کرده اند. حدود ۵۰ درصد این افراد نیز تحصیلات دانشگاهی خود را در بهترین و معتبرترین کالج های این کشور گذرانده اند. لازم به ذکر است که نسبت مذکور در فهرست «قدرتمندترین آمریکایی های» مجله فوربس به حدود ۸۰ درصد می رسد.
همه این ها در حالی است که تعداد افراد موفقی که تحصیلات در کالج های معتبر را نیمه کاره رها کرده اند چیزی مابین ۲ تا ۵ درصد برآورد شده است. به عبارت دیگر، کسانی مثل زاکربرگ و گیتس استثناهایی واقعی به شمار می روند.

پرواضح است که نمی توان یک راهکار یکسان جهت موفقیت را به تمام افراد توصیه کرد. استعدادها، توانایی ها و خصوصیات فردی هرکس مختص اوست. پس همان گونه که انصراف از تحصیلات عالیه به هیچ وجه به عنوان راهکار موفقیت توصیه نمی شود، رفتن به بهترین دانشگاه ها نیز هرگز به معنی رسیدن به بهترین موقعیت های مالی و اجتماعی نیست.
با این همه، مطالعه زندگی تعداد زیادی از افراد موفق نشان می دهد که برای بسیاری مسیر موفقیت از میان راهروهای دانشگاه می گذرد. به یاد داشته باشیم که حتی گیتس و زاکربرگ هم گرچه در نهایت از دانشگاه انصراف دادند، اما دست کم در ابتدا به سراغ تحصیلات تکمیلی رفته اند.
منبع: http://digiato.com/article/2017/04/21/انصراف-میلیاردی-از-دانشگاه؛-فرمولی-طل/

@one_programmer
@one_programmer
فیسبوک به کارآموزهای خود چقدر حقوق می دهد؟
هر سال این موقع که می شود شرکت های بزرگ فناوری در سیلیکون ولی اقدام به جذب کارآموز می کنند و علاقمندان فرصت کمی در اختیار دارند تا درخواست خود برای همکاری را تسلیم این شرکت ها کنند.

موسسه ای به نام Glassdoor گزارشی در رابطه با بالاترین حقوق های پرداختی به کارآموزان شرکت های فعال در این حوزه منتشر کرده که در ادامه برخی جزئیات آن را با شما در میان خواهیم گذاشت.

در لیست منتشر شده، فیسبوک با پرداخت مبلغ 8000 دلار در ماه (96 هزار دلار در سال) به کارآموزان خود صدرنشین است.
در اینجا لازم است اشاره کنیم در گزارش Glassdoor اثری از استارتاپ ها به چشم نمی خورد. محض اطلاع شما شرکت هایی نظیر دراپ باکس و اسنپ هم اکنون بالاترین دستمزدها را به نیروهای کارآموز خود پرداخت می کنند و آنطور که دیتای به دست آمده نشان می دهد، این مبالغ بعضا به رقم 9 هزار دلار در ماه هم می رسد.

در نظر داشته باشید که تمامی کارآموزان این شرکت ها حقوق های یکسان دریافت نمی کنند و برای نمونه آنهایی که قرار است صرفا کارهای دفتری را انجام دهند دستمزدی به مراتب پایین تر را می گیرند.

در واقع شرکت هایی نظیر فیسبوک بیشتر تمایل دارند دانش آموختگان مقطع دکترای استنفورد در رشته هوش مصنوعی برایش کارآموزی کنند و مبلغ پرداختی به این گروه حتی از کارمندان استخدامی آن هم بیشتر است.

اضافه نماییم اغلب شرکت هایی که نامشان در لیست ذکر شده در شهرهایی استقرار دارند که هزینه زندگی در آنها بالاست و از آن جمله می توان به سانفرانسیسکو و نیویورک سیتی اشاره کرد.

در برخی موارد کارآموزها مبلغی را هم به عنوان حق مسکن دریافت می کنند که رقم های ذکر شده در پایین را حتی از این نیز بیشتر می کند.

1- فیسبوک: میانگین پرداخت ماهانه: 8000 دلار

2- مایکروسافت: میانگین پرداخت ماهانه: 7100 دلار

3- آمازون: میانگین پرداخت ماهانه: 6400 دلار

4- اپل: میانگین پرداخت ماهانه: 6400 دلار

5- بلومبرگ: میانگین پرداخت ماهانه: 6400 دلار

6- یاهو: میانگین پرداخت ماهانه: 6080 دلار

6- گوگل: میانگین پرداخت ماهانه: 6000 دلار

7- انویدیا: میانگین پرداخت ماهانه: 5440 دلار

8- ادوبی: میانگین پرداخت ماهانه: 5120 دلار

9- کوالکام: میانگین پرداخت ماهانه: 5040 دلار
@one_programmer
@one_programmer
هم اکنون ماکروسافت در جریان کنفرانس بیلد ۲۰۱۷ که در حال برگزاری هست نسخه مک Visual Studio را در دسترس کاربران قرار داد.
https://www.visualstudio.com/vs/visual-studio-mac/
#کنفرانس_بیلد_ماکروسافت
@one_programmer
@one_programmer
سرویس جدید مهاجرت پایگاه داده مایکروسافت، مشتریان اوراکل را هدف گرفته است
در سال 2015 آمازون سرویس مهاجرت پایگاه داده خود را معرفی کرد که به کسب و کارهای بزرگ اجازه می داد به راحتی از اوراکل به وب سرویس های این کمپانی منتقل شوند. این خدمات موفقیت قابل توجهی را به همراه داشت و طی فقط یک هفته بیش از 1000 پایگاه داده عظیم به سرورهای آمازون منتقل شد. این رقم در جدید ترین آمار به بیش از 23 هزار پایگاه داده رسیده است.

حال مایکروسافت نیز در جریان کنفرانس توسعه دهندگان بیلد که در حال برگزاریست، رویکرد مشابهی را در نظر گرفته و سرویس مهاجرت خودش را به راه انداخته تا به شرکت ها کمک کند از اوراکل یا دیتابیس های قدیمی SQL Server به روی پلتفرم کلاود آژور (Azure) بیایند. این سرویس هنوز به صورت مقدماتی عرضه شده و هنوز قیمت آن مشخص نیست.

مایکروسافت همچنین اعلام کرد که پشتیبانی از نرم افزارهای پایگاه داده متداول مانند MySQL و PostgreSQL را تقویت می کند تا پس از مهاجرت، کاربران به راحتی با شرایط جدید سازگار شوند. گفتنیست مایکروسافت آژور که پس از سرویس AWS آمازون در جایگاه دوم خدمات ابری جهان قرار دارد، یکی از بخش های اصلی کسب و کار ردموندی ها را تشکیل می دهد و با توجه به رشد تقاضای بازار، روز به روز بیشتر مورد توجه قرار می گیرد.
#کنفرانس_بیلد_ماکروسافت
@one_programmer
@one_programmer
ابزار تازه مایکروسافت، محتویات نمایش یافته در کلیپ های ویدیویی را جستجوپذیر می کند.
توسعه دهندگان و ناشران می تونن ویدیو خودشون رو آپلود کنن و سپس اطلاعات مختلفی اعم از چهره های شناسایی شده, متون داخل ویدیو دریافت کنن.
@one_programmer
@one_programmer
متاسفانه این سرویس خوب رو ما از ایران نمیتونیم استفاده کنیم, در حالی که شرکت های بزرگی مثل Adobe , Autodesk, Symantecاز آژور استفاده میکنن. این سرویس حتی برای برنامه نویس ها اکانت رایگان داره اما نیاز به کارت اعتباری هست.
@one_programmer
@one_programmer
نرم‌افزار SQL Server 2017 با پشتیبانی از لینوکس معرفی شد

@one_programmer
@one_programmer
مایکروسافت نسخه 15.2 ویژوال استودیو 2017 را منتشر کرد
https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

@one_programmer
@one_programmer
ماکروسافت نسخه 15.3 ویژال استودیو 2017 را به صورت preview منتشر کرد
https://www.visualstudio.com/en-us/news/releasenotes/vs2017-Preview-relnotes

@one_programmer
مطلب خیلی مهمی براتون آماده کردم، امیدوارم با آخرش بخونید و ازش استفاده کنید.
ارزش خواندن رو داره حتما بخوانید
@one_programmer
@one_programmer

Net Core. چیست و چرا ماکروسافت دست به همچین تغییر عظیمی زده؟
⁣برای مدت زمان طولانی ، زمانی که توسعه دهندگان NET. نیازمند این بودند که Solution خود را به پلتفرم دیگری غیر از ویندوز بیاورند ، عموما این شامل زبان های دیگر همانند Java و C میشد ، و این بدان معنا بود که پایگاه های داده همواره تقسیم شده و تکراری و با تکنولوژی های مختلف می‌شدند . پیاده سازی راه حل با جاوا یا دیگر زبان های Cross Platform در این مورد ، اجرا شدنش زیاد راحت و بی دردسر نیست و همواره شامل یکسری توافقات می‌باشد . تا همین اواخر این امر همیشه یک مشکل و چالش بزرگ برای توسعه دهندگان و سازمان ها بود ... . یا برنامه نویس هایی که میخواستن پروژه ایی به صورت Cross Platform یا مخصوص سیستم عامل دیگر(لینوکس) بنویسن Net. گزینه خوبی برای اون ها نبود، چون Cross Paltfrom نبود(با پروژه MONO میشه Net. رو روی لینوکس اجرا کرد منتها به خوبی و بی باگ بودن ویندوز نیست) و سراغ راه حل های دیگه میرفتن مثل java, java script, ++c میرفتن، که دردسر های خودشون رو داشتن. برای مثال جاوا عمدا برای کارهای بزرگ کارآمد بود چون هزینه نیرو و زمان توسعه و نوع توسعه زمانگیر بود و برنامه نویس های جاوا حقوق های به نسبت بالاتری داشتن، هر پروژه ایی ارزش استفاده از جاوا رو نداره. از اونو ++C توسعه سختی تو وب داره و هرکسی نمیره سمت، و نیرو متخصص کمی تو حوضه وب کار میکنن. اما Java Script تفاوتی بین این دو داشت و روز به روز در حال گسترش هست، با استفاده از Node js توسعه سخت و زمانبری نداره، از طرفی بازدهی خیلی عالی از خودش به جا میزاره البته قبل Net Core. !!، از سمتی Cross Platform هست، از طرف دیگه خیلی راحت میشه با استفاده از ابزار هایی مثل Electron برنامه Desktop به صورت Cross Platform نوشت مانند Atom, Slack, Visual Studio Code و.. برنامه های بزرگی هستن که با Electron نوشته شدن.
⁣برگردیم سر بحث اصلی⁣ ماکروسافت در گذشته یک سیاست داشت که بر دور هر کدی دیوار می‌کشید و کدهای Open Source را بد میدانست، حتی استیو بالمر مدیریت قبلی ماکروسافت، لینوکس رو سرطان نامید که داره دنیا رو فرا میگیره. اما حالا تحت رهبری ساتیا نادلا ، سیاستی را در پیش گرفته است که همه چیز Open و با جامعه باشد، سیاست ساتیا نادلا ماکروسافت رو به فروغ گذشته و بیشتر از اون رسانده، تو این مدت چند سال اخیر ماکروسافت همیشه جزو شرکت هایی بوده که بیشترین کامیت و repo رو روی گیتاپ داشته، حتی مواقعی بیشترین کامیت همواره در اختیار ماکروسافت بوده. الآن ماکروسافت سورس های خیلی زیادی رو روی گیتاپ قرار داده که نشان از این سیاست خوب دارد. در حال حاظر پروژه های بزرگی که روی گیتاپ هستن، میشه از Asp , Entity Framework, visual studio code, kestrel ,dot net ... .

⁣خب NET Core. چیست و به چه دلیل برای ما مهم است ؟

Net Code. از ابتدا نوشته شده و بسیار سبک و ماژولار و Cross Platform و Open Source هست. خود ماکروسافت در مورد فرق بین Net. و Net Core . این شکلی بیان میکنه
چرا باید از Net Core. استفاده کنیم؟
1- اگه نیاز به مستقل بودن از Platform داریم (به معنی Cross Platform بودن و اجرا شدن پروژه روی لینوکس-مک-ویندوز است)
2- اگه نیاز به معماری ⁣Microservices داریم (این معماری به شدت در حال رشد و استفاده در شرکت های بزرگ هست و Auzre ماکروسافت هم داحل سرویس خود از این امکان پشتیانی میکنه)
3- استفاده از ⁣Containers ها (مثل داکر)
4- نیاز به سرعت و بازدهی بالا در مقیاس بزرگ
نمیخام زیاد وارد بحث Net Core. بشم، بیشتر بحث رو سمت وب میبرم یعنی Asp Net Core که از Net Core. که بالا بحث کردیم استفاده میکنه.

@one_programmer
@one_programmer


برنامه هایی که با Asp Net Core نوشته میشن مزیت های زیر دارن:
1- مستقل از Platform: یعنی برنامه وب شما در همه سیستم عامل ها مک، لینوکس، ویندوز به راحتی اجرا میشن.
2- فریمورک Open Source هست و همه افراد جهان میتونن سورس رو ارتقا بدن
3- وب سرویس ⁣Kestrel: به این معنی هست که ماکروسافت پروژه اپن سورسی رو روی گیتاپ قرار داده به اسم ⁣KestrelHttpServer که میتونه پروژه رو بدون IIS اجرا کنه. جالب اینجا هست این وب سرویس از کتابخونه ⁣libuv استفاده میکنه که برای هاست کردن Node Js نوشته شده بود و تاکید اون اجرای عملیات IO به صورت Async هست. جالبته بدونید در تست هایی که ماکروسافت از این سرویس گرفته که سورس اون تو گیتاپ هست بنده بعدا براتون میزارم، این وب سرویس نزدیک به 8 برابر از Node Js که به سرعت معروف هست سریعتره !! واقعا جای تقدیر داره فکر کنید 8 برابر :)
4- تزریق وابستگی به صورت توکار: به صورت توکار IOC Container با امکانات خوب برای بحث Inversion Of Controll داره
5- با فریمورک های مدرن سمت کلاینت یکپارچه شده: فریمورک های مثل Gulp ,...
6- بازدهی (Performance): طبق تست های انجام شده برنامه های نوشته شده به شدت بازدهی بالایی دارن، نزدیک به 8 برابر سریعتر از Node Js , نزدیک به 3 برابر سریعتر از زبان Go , نزدیک به 2/5 برابر سریعتر از Java Servlet
7- محیط توسعه Cross Paltfrom: شما میتونید داخل هر سیستم عامل برنامه Asp Net Core رو توسعه بدید مثل لینوکس و مک
8- پشتیبانی از DBMS های معرف: با Entity Framework جدید خیلی راحت میتونید با دیتابیس های اراکل، Mysql،DB2،Sqllite و.. متصل شوید.
9- باز نویسی Asp: این فریمورک از ابتدا باز نویسی شده و بسیار ماژولار و سبک هست، مهندسی نویسی شده. شما همه جاها باید از Interface ها استفاده کنید که خیلی راحت میتونید Class خودتون رو داخل کانفیگ پروژه Impl و Inject کنید⁣


@one_programmer
@one_programmer

طبق صحبت ها گذشته راجبه ماکروسافت و open source کردن پروژه هاش، ماکروسافت سایتی معرفی کرده که تمام پروژه های open source خودش رو‌معرفی کرده.
@one_programmer