یادداشت های یه برنامه نویس
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

چگونه بازماندگان شما را فریب می‌دهند؟
نویسنده: فرزاد مینویی
تصمیم_گیری

در خلال جنگ جهانی دوم، نیروی هوایی انگلستان و آمریکا به دنبال کاهش تلفات بمب افکن های خود بودند. رهبران نظامی به این نتیجه رسیده بودند که باید زره تقویتی بیشتری به هواپیماهای خود اضافه کنند تا آن‌ها را در برابر آتش ضدهوایی و جنگنده‌ها حفاظت کند؛ اما افزودن زره به همه قسمت‌های هواپیما امکان‌پذیر نبود و سرعت آن را کم می‌کرد؛ بنابراین آنان باید تصمیم می‌گرفتند که به کدام قسمت‌های هواپیما زره بیفزایند.

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

آبراهام والد با این نتیجه‌گیری کاملاً مخالف بود. او جزء ریاضی‌دانی بود که در جنگ جهانی دوم برای ارتش آمریکا کار می‌کرد. والد نشان داد که خطای مهمی در تحلیل‌ها صورت گرفته چراکه نتیجه‌گیری تنها بر اساس داده‌های هواپیماهایی است که از مأموریت بازگشته‌اند؛ اما در مورد هواپیماهایی که در طول مأموریت سقوط کردند، چه می‌دانیم؟ او نشان داد که دقیقاً برعکس، آن قسمت‌هایی از هواپیما نیاز به حفاظت دارند که کمترین اصابت را داشته‌اند. درواقع نقاط آسیب در هواپیماهای بازگشتی بیانگر آن است که اگر هواپیما در این نقاط هدف قرار داده شود، با احتمال بیشتری می‌تواند سالم بازگردد. پیشنهاد‌های والد در عمل به بهبود نرخ برگشت هواپیماها کمک کرد.

سوگیری بازماندگی (Survival Bias) یک خطا در استدلال است و زمانی پیش می‌آید که تنها بر روی افراد یا چیزهایی که از یک فرآیند انتخاب گذشته‌اند، تمرکز کنید و آن‌هایی را که نتوانستند عبور کنند، عمدتاً به این خاطر که دیگر قابل‌مشاهده نیستند، نادیده بگیرید.

به‌عنوان‌مثال، ساختمان‌های با ساخت مستحکم، معماری زیبا، کاربری خوب و نگهداری مناسب در چندین نسل دوام می‌آورند و باقی می‌مانند. افراد ممکن است تنها با مقایسه ساختمان‌های قدیمی باقی‌مانده با ساختمان‌های امروزی این‌طور نتیجه بگیرند که درگذشته ساختمان‌های بهتری ساخته می‌شده است؛ اما آنان هزاران بنای دیگر را که درگذشته خوب ساخته نشده‌اند و در طول زمان از بین رفته‌اند و دیگر قابل‌مشاهده نیستند، در نتیجه‌گیری خود لحاظ نمی‌کنند. این سوگیری می‌تواند برای آثار هنری برجسته گذشته که در طول زمان از رقابت سربلند بیرون آمده‌اند و مقایسه آن با آثار هنری معاصر مصداق پیدا کند. یکی از دلایل وجود حس نوستالژی نسبت به گذشته این نوع مقایسه‌هاست.

می خواهید استیو جابز بعدی باشید؟ از دانشگاه انصراف بدهید و با یکی از رفقای خود در گاراژ خانه پدری یک کسب و کار راه بیندازید! اما چند نفر مدل استیو جابز را جلو رفتند و شکست خوردند؟ کسی نمی داند، درباره آنها کتابی نوشته نمی شود کسی آنها را نمی بیند. اما براساس اتحادیه سرمایه گذاران خطرپذیر آمریکا تنها 13 درصد استارتاپ ها به مرحله عرضه سهام خود در بورس می رسند یا می توانند آن را بفروش برسانند.

من در مقاله زیر نشان می دهم چطور کتاب های موفقیت مانند "از خوب به عالی" جیم کالینز به طور سیستماتیک دارای خطا هستند.

این مثال‌ها روشن می‌کند که برای نتیجه‌گیری نیاز دارید تا به همه نمونه‌ها توجه کنید حتی نمونه‌هایی که بلافاصله نمی‌توانید آن‌ها را مشاهده کنید. همین‌طور روشن می‌کند یادگیری از شکست‌ها همواره فرآیند ساده‌ای نیست. یادگیری نیازمند مشاهده و بررسی دقیق و فراتر رفتن از فرضیات سطحی است. وقتی تنها به نمونه‌های موفق نگاه می‌کنید ممکن است از رفتارها و اشتباهات مهلکی که نمونه‌های ناموفق به آن دچار شدند، غفلت کنید. شاید به همین دلیل است وقتی از آن حکیم پرسیدند “ادب از که آموختی؟” پاسخ داد: “از بی‌ادبان”.

@one_programmer
@one_programmer

سرویس پرداخت اینترنتی Paypal پلتفرم خود را با سرویس های RESTful طراحی کرده است. تیم توسعه ی PayPal روش ها و Pattern های مورد استفاده خود را در سایت GitHub منتشر کرده است تا تیم های دیگر نیز بتوانند در پروژه های خود از این روش ها استفاده کنند. این دستور العمل ها شامل موارد همچون Versioning، Backward Compatibility، Error Handling و ... می باشد. مطالعه ی این 2 سند به دوستان پیشنهاد می شود.

دستورالعمل های طراحی API :

https://github.com/paypal/api-standards/blob/master/api-style-guide.md

الگوها و Pattern های طراحی API :

https://github.com/paypal/api-standards/blob/master/patterns.md

@one_programmer
@one_programmer

مقاله خوبی در مورد دلایل مهاجرت به Net Core.

Why you should join .NET Core and ASP .NET Core train

Let’s see why you should switch and use ASP .NET Core and ASP .NET Core MVC:

1-.NET Core is a cross-platform version of .NET, that supports almost all that .NET supported (except things like WPF, Windows Forms, Web Forms and Active Directory)

2-.NET Core and ASP .NET Core are FREE and Open Source but also they are supported by Microsoft.

3-ASP .NET Core is cross-platform web framework built on top of .NET Core. It is built from scratch, however, a lot of old concepts and patterns are still the same.

4-Both, ASP .NET Core and .NET Core are faster and easier to work with, than their predecessors.

5-If you wanna update your system and it uses Web Forms or old MVC, you should really consider ASP .NET Core MVC instead of ASP .NET MVC 5 (last updated Feb 2015)

6-C# is awesome!

7-Visual Studio is amazing

لینک: https://codingblast.com/asp-net-core-train/

@one_programmer
@one_programmer

Internet Exlorer :))))
@one_programmer

آنالیز کد های سی شارپ، که داخل گیتاب قرار دارند
آمار های جالبی در اومده، برای مثال چه مقدار از tab یا space استفاده شده ؟
یه مقدار از کلمات async و await استفاده شده ؟
پیشنهاد میکنم حتما ببینید

Analysing C# code on GitHub with BigQuery
http://mattwarren.org/2017/10/12/Analysing-C-code-on-GitHub-with-BigQuery/#tabs-or-spaces

@one_programmer
@one_programmer

میگن ماکروسافت ie رو برای این گذاشته بود که وقتی ویندوز عوض میکنید باهاش chrome رو دانلود کنید :)😂
@one_programmer
@one_programmer

#معرفی_کتاب
امروز میخام کتاب The Clean Coder رو بهتون معرفی کنم، نویسنده این کتاب آقای Robert Cecil Martin معروف به عمو باب است، این کتاب در مورد منطق و آموزه های رفتاری یه برنامه نویس حرفه ایی هست.
توصیه میکنم حتما بخونید، سر فصل های خیلی خوبی داره مثل، بله گفتن، نه گفتن و...

@one_programmer
@one_programmer

🔴 راهنمای اسکرام نسخه 2017 رسما معرفی شد

امروز 7 نوامبر- 16 آبان به طور رسمی از نسخه 2017 راهنمای اسکرام رونمایی شد. در این نسخه بخش های جدید و اصلاحاتی در این راهنما انجام شده است.

همزمان با کل دنیا، نسخه فارسی نیز در دست علاقمندان قرار گرفت، نسخه فارسی 2017 جزو 9 نسخه پیشرو بوده است که همزمان با نسخه اصلی بروزرسانی شده است و پرچم کامیونیتی ایران در بین کشورهای مختلف دوباره بالا رفت.
از تمامی دوستانی که در آماده سازی این برگردان فارسی همراه بودند، تشکر و قدردانی می‌کنیم.

برای دریافت نسخه انگلیسی یا فارسی می توانید از این لینک اقدام کنید.

http://www.scrumguides.org/download.html

@one_programmer
2017-Scrum-Guide-Persian.pdf
1.3 MB
دانلود نسخه فارسی - راهنمای اسکرام 2017

@one_programmer
@one_programmer
هفت‌ ویدئو که هر برنامه‌نویسی بهتره ببیینه☺️

1️⃣ ویدئوهای برنامه‌نویسی یوتیوب بدون فیلترشکن با دیدئو
https://m.dideo.ir/7Or

2️⃣ اگر به شغل‌های کامپیوتری علاقه داری و می‌خوای بدونی که کدومشون بیشترین تقاضا، بالاترین حقوق و بهترین فرصت‌ها رو دارن، این کلیپ رو ببین و علاقه‌ت رو تو دنیای کامپیوتر پیدا کن
https://m.dideo.ir/KZe

3️⃣ دانش پایه کامپیوتری‌تون رو با این ویدئو محک بزنین
https://m.dideo.ir/ZZZ

4️⃣ پول‌سازترین زبان‌های برنامه‌نویسی سال و کاربردشون

https://m.dideo.ir/XZk

5️⃣ چجوری یک برنامه‌نویس front end بشم؟

https://m.dideo.ir/o6n

6️⃣ چجوری یک برنامه‌نویس back end بشم؟

https://m.dideo.ir/Bbw

7️⃣ محیّرالعقول‌جات روبی و جاوااسکریپت

https://m.dideo.ir/DZv


منبع:
@dideoblog

@one_programmer
@one_programmer
تصویری طنزآمیز از چرخه تولید نرم‌افزار. واقعیتی از مشکلات ناشی از برآورد غلط و مدیریت ضعیف پروژه های نرم افزاری.

@one_programmer
@one_programmer

✔️می‌خوای به یکی کمک کنی؟ خفه شو و گوش بده!

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

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

ما در دستادست معتقدیم هیچ‌کس بیشتر از زنان همکار ما به مشکلات‌شان آگاهی ندارد و تنها کاری که ما می‌توانیم بکنیم کمک به حل این مشکلات به بهترین شکل ممکن است.

لینک پست مربوط به سخنرانی:
https://t.me/one_programmer/131

@one_programmer
@one_programmer

اعتماد یا بی اعتمادی؟

پاسخ این سوال را می توانید با استفاده از "نظریه بازی ها" ببینید. نظریه بازی می‌تواند روشن کند که چرا بی‌اعتمادی همه گیر شده است و ما چطور می‌توانیم برای آن چاره‌ای پیدا کنیم.
بازی کوتاه "تکامل اعتماد" بر اساس نظریه بازی ها که توسط دکتر حامد سیدعلایی از پژوهشکده علوم شناختی IPM ترجمه شده است.

https://hamed.github.io/trust/

@one_programmer
تلگرام رو خدا آزاد کرد :)
@one_programmer

پیغام های مزخرف "نام کاربری یا رمز عبور اشتباه هست"
یکی از best practice هایی که همیشه رعایت میشه ، زمانی هست که کاربر login میکنه . اگه رمز عبور یا نام کاربری اشتباه زده بشه ، پیغام "نام کاربری یا رمز عبور اشتباه هست" داده میشود ، اینکار برای این است که هکر ها متوجه اشتباه بودن نام کاربری نشوند.
این مقاله به این موضوع اشاره میکنه که اینکار مزخرف است !

“username or password incorrect” is bullshit

https://hackernoon.com/username-or-password-is-incorrect-is-bullshit-89985ca2be48

@one_programmer
Forwarded from Software Philosophy
مقایسه ایران با مایکروسافت ۱۰ سال پیش! تلگرام را فیلتر کنیم؟

تلگرام یک تهدید است برای اجتماع ایران؟ تلگرام یک تهدید است برای اقتصاد؟ همه اینها درست هستند ولی قضیه عمیق‌تر از خود تلگرام است. در حقیقت تلگرام نماینده یک شبکه باز است که در آن همه آزادانه حق دارند صحبت کنند بدون ترس از دستگیر شدن! و در آینده همه حق دارند با ازر دیجیتالی معامله کنند . در حقیقت این دو عبارت است که تهدید است نه خود تلگرام. تلگرام فقط ابزاری است که این دو را در اختیار قرار داده.
فیلتر کردن تلگرام فقط فیلتر کردن یک برنامه است. نکته مهم این طرز تفکر است، آن را چطور فیلتر کنیم؟ مثل صدا و سیما، ماهواره را ممنوع کردند تا صدا و سیما بیشتر دیده شود. فیلتر کردن ابزار به جای حل کردن مشکل. مشکل اصلی سلیقه مردم است که صدا و سیما همخوانی ندارد. با ممنوع کردن ماهواره هم این طرز فکر عوض نشد.

مشکل ما با بستری است که مردم در آن با یک #تکرار_می‌کنم رئیس جمهورشان را انتخاب کرده‌اند. مشکل اصلی ما این است که اگر مردم بتوانند در یک شبکه باز صحبت کنند چه کنیم؟ اگر در گروه‌ها یا کانال‌هایی عضو شوند که ما دوست نداریم چه کنیم؟ مشکل ما با طرز فکر مردم است که نمی‌توانیم آن را تحمل کنیم، پس ترجیح می‌دهیم آن را نبینیم! با فیلتر کردن هم این طرز فکر عوض نمی‌شود فقط تا مدتی دیده نمی‌شود.

از این لحاظ رویکرد ما خیلی شبیه مایکروسافت ۱۰ سال پیش است. مایکروسافتی که با دنیای open-source مخالف بود و سعی در نادیده گرفتن آن داشت تا جایی که به مرز حذف از بازار برنامه‌نویسی رسید. ولی آنها فهمیدند، خود را تغییر دادند، اوپن‌سورس بودن را درک کردند. به جای مقابله با آن شروع به استفاده از مزایای آن کردند و اکنون فعال‌ترین open-souce community در github هستند. و آرام آرام در حال بازگشت به بازار.

اگر تلگرام را تهدید می‌بینیم، به خاطر این است که «باز بودن« یا «open-source بودن» را تهدید می‌بینیم و باید به حال آن فکری کنیم. با فیلتر کردن ابزار، این طرز فکر از بین نمی‌رود، فقط تبدیل به حالت جنگجویانه‌ترش می‌شود و فیلتر کننده را از بین می‌برد.

اگر می‌خواهیم رفع انحصار کنیم، باید مسنجری بسازیم که به واسطه طرز فکر بی‌نظیرش اعتماد خارجی‌ها را نیز جذب کند تا عضو آن شوند، چه برسد به خودمان.
ارز دیجیتال به هر حال می‌آید، اگر از آن می‌ترسیم و برایمان تهدید است باید ارز دیجیتالی بسازیم که به خاطر طرز فکر بی‌نظیرش بقیه جهان را نیز جذب کند، چه برسد به خودمان.

اعتماد خود و بقیه را نمی‌توان با بسته نگه داشتن به دست آورد. باید در شفاف بودن و باز بودن ابتکار داشته باشیم تا اعتماد خلق کنیم. اگر بزرگ فکر نکنیم، کوچک می‌شویم. اگر کوچک فکر کنیم، بعد از مدتی وجود نخواهیم داشت.

نکته بعدی تکنولوژی blockchain است. قبل از آنکه باز هم دیر شود باید از الان روی آن کار کنیم. به جای اینکه از آن بترسیم باید آن را یاد بگیریم و از آن استفاده کنیم. من از آقای کورنگی، مدیرعامل MAPS متشکرم که سال پیش من را با این مفهوم آشنا کردند و باعث شدند مطالعاتی را در این زمینه شروع کنم. معتقدم باید از قدرت آینده‌بینی و آینده‌نگاری افرادی مثل ایشان نهایت استفاده را ببریم.

http://mehrandvd.me

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:

http://ow.ly/wJ6i30jn1B4

#مهران_داودی (http://ow.ly/GwIl309lFEm)

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


___
@one_programmer

این Regex.CacheSize لعنتی !!
مدت ها بود که میدیدم میکرو سرویس هامون بعضی مواقع دان میشن و کلا جواب نمیدن...
کلی لاگ گذاشته بودیم و مانیتور میکردیم اما باز هم این اتفاق می افتاد. بعد از کلی بررسی و وقتی که شخصا روی این موضوع گذاشتم به این نکته رسیدم. شما وقتی از Regex استفاده میکنید، به این صورت Regex.x . متد x میتونه هر متدی باشه، اگر به صورت option بیایید Compiled رو بدید ممکنه دچار اشتباه وحشتناکی بشید !!!
مشکل جایی شروع میشه که Regex.x میاد پترنی که شما بهش میدید رو کش میکنه و سایز کش اون برابر ۱۵ هست !!!
اگر تعداد پترن های regex های شما بیشتر از ۱۵ باشه با کندی شدیدی رو به رو میشید. کندی که ریسورس سخت افزاری زیادی نمیگیره اما برنامه تون دیگه به درخواست ها جواب نمیده.
راحل: افزایش سایز cache
Regex.cacheSize= 100;

مقاله ماکروسافت در مورد best practice های Regex

https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices

@one_programmer