Md Daily – Telegram
Md Daily
726 subscribers
239 photos
15 videos
21 files
283 links
راجب مقالات و مستندات فنی یا غیر فنی که میخونم و علایقم اینجا مینویسم :)


گروه کانال: https://news.1rj.ru/str/MdDailyGap

کورس ها: https://news.1rj.ru/str/MdDaily/395

وبلاگ: https://mddaily.ir
Download Telegram
چرا توی Js موقع استفاده از fetch باید دوبار منتظر بمونیم؟

داشتم کد js میزدم و برام سوال شد چرا موقع استفاده از fetch باید دوبار منتظر موند.

وقتی ما این کد رو داریم:
// اول منتظر میمونیم
let response = await fetch("/mddaily");


بعد از اینکه response برگردونده شد باید بتونیم بلادرنگ به .json دسترسی داشته باشیم نه؟ ولی با وجود اینکه پارس کردن جیسون async نیست باید از این کد استفاده کنیم تا promise برنگرده :

// بعد هم منتظر میمونیم :)
let myObject = await response.json();


چه اتفاقی میوفته؟

طبق مستندات MDN’s article on the Fetch API:
دستور fetch() یه آدرس اینترنتی می‌گیره و میره سراغ اون آدرس تا اطلاعات رو بیاره. بعد یه قول میده که به محض اینکه جواب گرفت، حتی اگه جوابش اشتباه باشه، بهمون خبر بده.


یعنی fetch سریع جواب میده و هدر رو برمیگردونه، ولی ممکنه هنوز همه اطلاعات رو نگرفته باشه.
پس در نتیجه اینطوری میتونیم اول نتیجه درخواست رو بگیریم و اگه نتیجه اون چیزی بود که میخواستیم body رو بگیریم.


let response = await fetch("/some-url");
// اینجا،
// 1. جواب اولی که سرور میده رو گرفتیم.
// 2. اما ممکنه هنوز همه اطلاعات رو نگرفته باشیم.
let myObject = await response.json();
// اینجا،
// 1. بقیه اطلاعات رو هم گرفتیم.
// 2. اطلاعات رو به شکل JSON خوندیم.


کنجکاو بمونید :)

🆔 @MdDaily
🔥13👍2👌2❤‍🔥1
یه مقاله با عنوان 3 Lessons from the Smartest Developers I’ve Worked With رو می خوندم و تجربه ی کسی بود که تمام عمر برنامه نویسیش کد ها رو کپی پیست میکرده (داستان آشنا) برای کد هاش تست نمی نوشته و به بازبینی کد هاهم اهیمتی نمیداده (اگه اشک تو چشم هات حلقه زد صبر کن تا بقیش رو بگم ) در نهایت در ادامه ی مسیرش با ادمای جالبی آشنا میشه و چیزهایی که ازشون یاد گرفته رو تواین مقاله میگه. من قرار مهم ترین نکات مقاله رو بگم و یه جورایی تجربه های خودمم بهشون اضافه کنم.

1- اگه خوبشو تجربه نکنی، بدشو نمی‌شناسی

بریان جنی قبل از اینکه برنامه‌نویسای حرفه ای رو ببینه، هدفش تو کار خیلی پایین بوده. میگه:
به این فکر نمی‌کردم که خیلی خوب کار کنم، فقط می‌خواستم اخراج نشم. ولی بازم نتونستم به این هدفم برسم. آدما یه سری حرفای تکراری می‌زنن، مثلاً میگن: "روی سیستم من که کار می‌کنه!"، "نمی‌دونم چطور کار می‌کنه، فقط کار می‌کنه!"، "من فقط کد می‌نویسم، نمیدونم بیزینس چطوری کار میکنه!"، "به نظر من که اوکیه!" واسه من هم پیش اومده بود که اینجوری حرف بزنم.


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

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


2- بازرس جهنم... یا شاید از بهشت


جنی کسی بوده که کد های کسیو چک نمیکرده چون تیم پر بود از برنامه‌نویسای حرفه ای. می‌گفته خب دیگه خودشون چک می‌کنن دیگه! ولی چند بار به خاطر چک نکردن کد ها نزدیک بوده برنامه خراب بشه. با پارکر اشنا میشه. جنی ازش میپرسه چطوری کد های بقیه رو چک میکنی؟

* اول کد رو اجرا می‌کرد تا ببینه کار می‌کنه یا نه. اگه کار نکرد، دیگه وقت تلف نمی‌کرد.

* خط به خط کد های جدید رو چک می‌کرد تا بفهمه چیکار داره می‌کنه!


* هر جا گیر می‌کرد، از برنامه‌نویس می‌پرسید تا مطمئن بشه همه چی رو فهمیده.


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


* همیشه صبح زود کدها رو چک می‌کرد تا حواسش پرت نشه.

3- لبه تکنولوژری، آره یا نه

جنی با جیمز یه تیمی از توسعه دهنگان رو شروع میکنن به مدیریت کردن. حالا که جنی مدیر مهندسی شده فرصت رو غنیمت میشماره و شروع میکنه یه نقشه ی راه سه ماهه ریختن و بالاخره می تونسته از تمام تکنولوژی ایی استفاده کنه که مدت‌ها بود آرزوی کار باهاشون رو داشته و باید بگم چه قدر این داستان برای خیلی هامون آشناس .
جیمز میاد پیشش و میگه: "این همه کار می‌کنی برای چی؟" یه عالمه حرف فنی میزنه که فقط بگه من خیلی بروزم و کلی چیز که مثلا بیایم با کوبر ادغام بشیم و از یه ابزار cli خفن استفاده و سایت رو استاتیک کنیم.
جیمز بهش میگه اینا چطوری قرار به اهداف تجاری سه ماهه ما کمک کنه؟ جنی متوجه میشه اصلا به این فکر نکرده بود که کارشون درآمدزایی هم هست! فکر می‌کرد فقط باید از تکنولوژی جدید استفاده کنه.
جیمز گفت: "ما که اینجا نیستیم که فقط با تکنولوژی بازی کنیم! باید کاری کنیم که پول در بیاریم."
جنی با تیم حرف میزنه تا ببینه واقعا به چی نیاز دارن. میبینه اون همه تکنولوژی جدید اصلا به دردشون نمی‌خورد. میفهمه که باید بیشتر به فکر نیازهای کسب‌وکار باشه نه اینکه فقط به فکر تکنولوژی جدید بود.

---

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

کنجکاو بمونید :)

🆔 @MdDaily
🔥144👍2
#شاید_موقت

رفتم بانک سپه حساب باز کنم، طرف گفت ما دیگه حساب فیزیکی باز نمیکنیم. باید بری مجازی باز کنی

گفتم اوکی. اپلیکیشن بانک امید رو نصب کردم و از لحاظ ui و ux یه شاهکاری زده بودند که مسئول شعبه هم گردن نمیگرفت.

بعد از اینکه مراحل رو رد کردم و موقع افتتاح حساب شد، گفت خب ببین احراز هویتت رو که آنلاین انجام دادیم، کارمزدم که باید بدی و هزینه ی پستم هست :)))

یه فاکتور صادر کرد. گفتیم اقا اینم اوکی بریم مرحله بعدی. هرچی صبر کردم دیدم خبری از افتتاح حساب نیست. به مسئول شعبه گفتم پس چیشد؟ زنگ زد پیگیری کرد گفت سامانه قطع شده، صبر کن حسابتو دستی بسازیم😭

بعد از کاغذ بازی های بانکی و گرفتن دوباره ی فی و کارمزد یه حساب فیزیکی ساخت تا حساب دیجیتال فعال شد :)))))

احساس میکنم ازم دزدی شده 😂😂😂
🤣24😁2👍1
سلام سلام!

قرار مطالب رو لول آپ تر کنیم  :)

امیر عزیز به جمعمون اضافه شده که توی حوزه SRE مطالعات و دانش خیلی خوبی داره و قرار مطالب مربوط به این بخش و حوزه رو هم پوشش بدیم 🙃

🆔 @MdDaily
11👌3
درود خدمت همگی من امیر هستم و امروز قراره درباره الستیک سرچ صحبت کنیم و ببینیم اصلا چی هست

الستیک سرچ یک ابزار سرچ و نگه داری داده است که بر اساس Apache Lucene
(من یه توضیح ریزی بدم چیه اینم یه ابزار و موتور سرچ دادس که متن باز و بر پایه زبان برنامه نویسی جاوا نوشته شده)


ساخته شده یک ابزار full text search هست یعنی میتونه جستجوی های حتی با یک کاراکتر انجام بده که برای سایت های مثل دیوار که کوچیکترین تغییر کمک میکنه بهشون در پیشنهاد کردن کمک کنه

ویژگی هایی که باعث میشود شما بخواهید از الستیک سرچ استفاده کنید


⭕️ هر دو نوع دیتا sql و nosql را ساپورت میکند همچنین تمام فرمت های فایل ها را ساپورت میکنه ولی fluentd and logstash به صورت خودکار ان را به json تبدیل میکنه

(پ.ن داده های sql داده های هستند که ساختار بندی و جدول بندی دارن اگه بخوام به زبان ساده بگم
داده ها یه شکلی هست که میشه دسته بندیشون کرد ولی داده های nosql از هردری سخنی هستن و نمیشه دسته بندی خاصی براشون گذاشت که متد های خاص خودشو داره در اینده ای نه چندان دور درباره جفتش صحبت میکنم اگه دوست داشتی)


⭕️ همچنین میتوانیم ۴ نوع (phase (hot warm cold freeze البته فاز فرییز الان حذف شده که ما میتوانیم این فازهارو به نودهامون اضافه کنیم (پ.ن بزارید بگم اصلا چی هستش نود ببینید ) خب اینا اصلا به چه درد میخورن و چی هستن فاز hot قابلیت read and write باهم دارد و برای سرور هایی که هارد SSD دارن خیلی خوبه ولی فاز های دیگر فقط برای read هستن ولی لولهاشون فرق داره و برای جاهایی که از هارد HDD استفاده میکنن خیلی خوبه که به منظور دخیره داده و خواندن از روی ان استفاده میکنیم


⭕️ قابلیت بسیار اسان اد کردن سرور به صورت ریسورس اضافه تنها در ۳۰ ثانیه شما کانفیگ الستیک سرچ کپی میکنید در قسمت دیسکاوری آی‌پی سور جدید می‌دهید و اکنون شما سرور جدیدی اضافه کردید


⭕️همونطور که پیش تر گفتم قابلیت full-text search را دارد و در سایت های خرید مانند دیوار دیجیکالا ترب میتواند استفاده شود( این مبنی بر این نیست که استفاده میکنند تا انجایی که من میدونم دیوار استفاده میکنند )

🆔 @MdDaily
761👍1
اما خب طرز کار الاستیک سرچ به چه صورتی هستش ؟
قبل از رفتن سراغ این قسمت چند مورد تاپیک خدمتون معرفی میکنم و در اخر میگم چجوری این ها به هم متصل میشوند


خب تاپیک هایی که باید بدونیم ایناس

الستیک سرچ موتورجستجو و کلا قلب تپنده ی این محصول است و همه چیز هستش (به همین راحتی)

کیبانا رابط گرافیکی الستیک سرچ برای استفاده راحت تر هستش و خیلی راحت استفاده ازش اگه الستیک سرچ بلد باشید

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

خب حالا در عمل ما میخواهیم لاگ های بخشی از سیستم جمع کنیم چکار انجام میدیم؟
اول از همه چند سرور اماده میکنیم و در کانیفیگ هایشان ip بقیه سرورهارو و میزاریم سپس نوع نود های که توضیح خواهم داد میزاریم مهمترین نوع نود همان master and replica (یعنی یک سرور نقش اصلی و پردازش دارد و بقیه کپی دیتا از روی اون هستن )هستش بعد از اون ادرس الاستیک سرچ به fluentd میدهیم و کانفیگ اون را هم درست میکنیم که نمونه هاشو میزارم و در نهایت کانفیگ kibana ست خواهیم کرد
خب مهمترین قسمت شاید میتونم بگم fluentd یا ابزار دیگه ای که مثل همین هستش logstash هست چون ۲ نوع کانفیگ داره یکی کانفیگ جمع اوری لاگ و یکی کانفیگ ارسال لاگ ولی همگی در فایلی به عنوان fluent.conf هستند
این یک مثال ساده از جمع اوری لاگ nginx ارسال ان به الستیک سرچ هست
<source>
@type tail
path /var/log/nginx/access.log
pos_file /var/log/td-agent/httpd-access.log.pos
tag nginx.access
format nginx
</source>
<match **>
@type elasticsearch
logstash_format true
logstash_prefix "nginx"
host "localhost"
port 9200
index_name "ngnix"
</match>


در قسمت source تنطیمات مربوط به لاگ nginx را گذاشتیم و در قسمت match تنظیمات مربوط به elasticsearch(مثلا یکیشن اینه چون جفتش روی یه سرور روی لوکال هاست گذاشتم یا اسم ایندکس هامو اونجا گذاشتم)
در این مثال لاگ ها از nginx جمع شده و به الستیک سرچ ارسال میشوند
خب حالا یه نکته ریز هم اشاره کنم که چرا بجای logstash باید از fluentd استفاده کنیم
اول از همه fluentd رم بسیار کمتری مصرف میکنه بخاطر سیستمی که داره و همچنین برای سیستم روتتینگ ایونت هاش از تگ استفاده میکنه که خیلی کمک بهتری به سبک شدن پروسه میکنه ولی مشکلی که داره اینه کانفیگور کردنش خیلی سخت تره از logstash

پ.ن : چند تا تعربف هم میگم ولی چون اهمیت کمتری دارن این زیر میگم این تعریف index که اولیش هست تو تمام دیتا بیس ها و ابزارها یکی خب اولیش index که دقیقا مثل یه پوشه هستش که داخلش یکسری مدرک احتمالا کارنامه هاتون شما یه جا نگه میدارید اون یه جا index داخل دیتا بیس هم به همین صورت
چیزی که احتمالا دیدین پورت بخوام به صورت خیلی ساده بگم پورت ها دوروازه هایی هستن که ورود و خروج کنترل میکنن اینم به زبون ساده گفتیم
لاگ هم یکسری داده درباره فعل و انفعالات بخش خاصی از سیستم که ۳ تا پارامتر داره کی لاگو انداخته چرا لاگو انداخته چقدر لاگی که انداخته مهم هستش

در آخر هم بگم چرا اصلا رفتم سراغ الستیک سرچ اونجایی که هستیم خیلی مهم اون بحث full text. سرچ گه خدمتتون گفتم و دلیل اصلیش این بود ولی خب قابلیت هایی که گفتم ببینید و مقایسه کنید برای کاربری خودتون یه چیزی هم که در دنیای کامپیوتر هستش اینه که هیچ محصول بد و خوبی وجود نداره صرفا باید ببینی تو به کدومش نیاز داری!

🆔 @MdDaily
75👍3
دو محصول WebStorm و Rider جت برینز رایگان شدند :)

به تازگی شرکت jetbrains تو یه توئیت و مقاله ای که منتشر کرد گفته که این دو محصول برای اهداف غیر تجاری مثل یادگیری و پروژه های اپن سورس رایگان شدند.

پ ن:
احتمالا این کارا برای رقابت با vscode انجام داده چون با رایگان کردن webstorm میتونه خیلی از فرانت کار ها را به خودش جذب کنه.

اگه خواستید از محصولات این شرکت استفاده کنید پیشنهاد میکنم از jetbrians toolbox برای نصب و مدیریتشون استفاده کنید:

🔗 https://www.jetbrains.com/toolbox-app/

🌐 لینک مقاله

🆔 @MdDaily
🔥8👍2
Forwarded from Abrha
🔴 دومین صبحانه کاری ابرها (اصفهان)

🍮 قهوه، صبحانه، ارائه و گفتگوی کاری در کنار متخصین

🎤 ارائه‌ تجربه محور توسط محمدمستأجران

🎤 موضوع: سیستم دیزاین؛ معجزه پایداری و مقیاس پذیری کد

🔜 زمان: جمعه ۱۱ آبان ۱۴۰۳ ، ساعت ۹ تا ۱۲ صبح

👇👇👇
abrh.ir/isfenjoy
👆👆👆


📣@abrhacom
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥31
🔥 امشب منتظر قسمت دوم پادکست دواپس باشید :)

منتشر شد :)
❤‍🔥5🔥2
Audio
💫 دومین اپیزود دواپس با سید مهدی عزیز

🔗 می‌تونید قسمت قبلی رو از اینجا گوش بدید

00:00 مقدمه
01:40 چیشد که به اینجا رسیدیم؟
12:46 چطوری فیدبک باعث رشد شد
18:48 تبدیل باگ به تست
19:44 معرفی کوبار
23:00 توی کوبر عمیق تر بشیم
46:45 جمع بندی



توی هر اپیزود سعی میکنیم بهتر بشیم و ببخشید اگه کمو کاستی هایی وجود داشت :)


🆔 @MdDaily 🫱🏻‍🫲🏻 @seyedmahdidiary
🔥10👍2
چرا parseInt(0.0000005) تو جاوا اسکریپت عدد "5" رو برمی‌گردونه؟

قبلا تو یه این پست یه اتفاق بی منطق تو JS رو با منطق پشتش راجبش نوشتم. حالا وقتشه بریم سراغ یه مورد دیگه :)

از تابع parseInt() برای تبدیل رشته به عدد صحیح تو JS استفاده میشه و خب تا اینجا همه چیز طبیعیه تا وقتی که این کد رو اجرا کنیم:

parseInt(0.0000005)


و بجای اینکه یه عدد کوچیک بده، به ما 5 رو بر میگردونه.

دقیقا پشت صحنه داره چی میشه؟

تابع parseInt() فقط به خود عدد نگاه نمیکنه. اول مقدار را به یک رشته تبدیل می‌کنه. پس، وقتی 0.0000005 رو بهش می‌دیم، جاوا اسکریپت اون رو به طور خودکار به رشته "5e-7" تبدیل میکنه .

حالا، parseInt() شروع به خوندن رشته از سمت چپ می‌کنه و در اولین کاراکتر غیرعددی متوقف میشه. در "5e-7"، اول "5" را میبینه، پس همونجا متوقف میشه و "5" را بر میگردونه. قسمت نماد علمی (e-7) رو هم کلا ایگنور میکنه و رقم های اعشاری رو نادیده میگیره .

خلاصش اینه که:

تابع parseInt() اول عدد رو به متن تبدیل می‌کنه.
فقط اولش رو می‌خونه تا به یه عدد برسه.
هر چی بعدش باشه براش مهم نیست.

—-
مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
🔥7🆒4👍3
دارم دوره ی هدف گذاری متمم رو گوش میکنم نکات جالبی گفته و میخوام این نکات رو بذارم کنار مقاله ی How I Make Learning New Things Feel Easy and Avoid Burnout و حاصلش بشه این پست :)

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

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

مهندسان، توسعه‌دهندگان، تحلیلگرها، دانشجوها. این نقش‌ها نیازمند مهارت‌هایی در موضوعات پیچیده زیادی هستن. اما با این همه چیز برای یادگیری و کمبود وقت، ممکنه احساس غرق شدن کنی.

خوشبختانه، یادگیری یه مهارت پیچیده، زمان کمتری از اون چیزی که فکر می‌کنی می‌گیره.

جاش کافمن میگه:
"تحقیقات نشون داده که چند ساعت اول یادگیری یه مهارت خاص، هم موثرترین و هم کارآمدترین زمان هست.
شما می‌تونید از صفر مطلق، خیلی سریع‌تر از چیزی که فکر می‌کنید، به سطح قابل قبولی از مهارت برسید.
[بر اساس تحقیقات من] حدود ۲۰ ساعت تمرین هدفمند کافیه."


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

اما چطوری:

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

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

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

3. مهارت رو تجزیه کن
یک مهارت معمولاً مجموعه ای از مهارت های کوچکتره که برای تشکیل اون مهارت ترکیب می کنیم.

برای مثال، یک مهندس کلود باید بدونه چطوری زیرساخت رو از طریق کد مستقر کنه. این مهارت نیازمند زیرمهارت هایی مثل درک دستورات ترمینال و پلتفرم های ابریه. با درکش شروع کنید و بعد مهارت رو به اجزای اصلی کوچکتر تقسیم کنید. الان باید روی چی تمرکز کنی و چی میتونه برای بعد باشه؟ اولین توجه خودتون رو به چیزی که بیشترین نتیجه رو خواهد داشت بدید.

4. به اندازه کافی یاد بگیر تا بتونی خودت رو تصحیح کنی
توانایی تصحیح اشتباهات نیازمند درک تفاوت بین خوب و بده.

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

5. حواس‌پرتی‌ها رو حذف کن
آخرین مورد اما نه کم‌اهمیت‌ترین، حذف همه حواس‌پرتی‌هاست.

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

—-
مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
👍932🔥1🤔1
Md Daily
دارم دوره ی هدف گذاری متمم رو گوش میکنم نکات جالبی گفته و میخوام این نکات رو بذارم کنار مقاله ی How I Make Learning New Things Feel Easy and Avoid Burnout و حاصلش بشه این پست :) خیلی خلاصه بخوام بگم، دو مدل هدف داریم: عملکردی و یادگیری. هدف عملکردی یعنی فقط…
جا داره چنتا نکته ی دیگه به این پست اضافه کنم. توی بحث هدف گذاری ای که مببتی بر اعداد و خروجی باشه مواظب باشید از یه جایی به بعد صرفا به خاطر اینکه به اون عدده برسید اون کار را انجام ندید مگر نه به احتمال زیاد یادگیری به پایین ترین حد خودش میرسه. مثلا اپ دولینگو، از یه جایی به بعد واردش نمی شید که یادگیریتون رو کامل کنید واردش میشید چون امتیازتون کم نشه.

میبینم هرجا صحبت از هدف گذاری میشه سریع میرن سراغ هدف گذاری SMART که آره اقا هدف باید قابل اندازه گیری باشه و مشخص و انقدری که یه سری از دوستان روی این نوع هدف گذاری تعصب دارن خود کسی که این ایده رو داده تعصب نداره و دست شما را باز گذاشته :)‌

این نوع هدف گذاری هایی که مثل SMART هستند بیشتر مناسب کسبوکار هستند تا زندگی شخصی همینکه شما تصمیم بگیرید فقط برید تو یه موضوعی تحقیق و گشتو گذار کنید صرفا برای اینکه ببنید نظرتون نسبت بهش چیه یه نوع ای از هدف گذاریه

مورد بعدی اینکه یه جایی از پست گفتم:

4. به اندازه کافی یاد بگیر تا بتونی خودت رو تصحیح کنی
توانایی تصحیح اشتباهات نیازمند درک تفاوت بین خوب و بده.


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

🆔 @MdDaily
❤‍🔥7👍21🔥1
Forwarded from 0xDay
(Register Flags 1/1)
ثبات پرچم یا همان Register Flag چیست؟

رجیستر فلگ چیزی هست که داخل Central Processing Unit (CPU) یا همون پردازنده هست که یک سری Bit رو نگه‌‌داری می‌کنه که این Bit‌ها نمایش دهنده وضعیت‌ عملیلت‌های مختلفی هست که CPU انجام داده.

حالا در معماری X86 رجیستر فلگ 16 بیت (Bit) هست که شامل اطلاعاتی هست که پس از انجام یک کاری انجام شده. به این اطلاعات وضعیت پرچم یا Status Register هم گویند به این دلیل که نتیجه آخرین عملیات اجرا شده توسط CPU رو نشون می‌ده. حالا این فلگ‌ها به بیت‌های مختلفی تقسیم می‌شن که هر Bit نشان دهنده یک Flag یا به اصطلاح نشان دهنده وضعیت است.
رجیستر فلگ‌های مهمی داریم مثل:

1 - Carry Flag 🫥 CF
2 - Zero Flag 🫥ZF
3 - Sign Flag 🫥 SF
4 - OverFlow Flag 🫥 OF
5 - Parity Flag 🫥 PF
6 - Auxiliary Carry Flag 🫥 AF


حالا که با فلگ‌های مهم آشنا شدیم، باید بدونیم نسبت به هر عملیاتی که توسط CPU مثل عملیات حسابی (Arithmetic) - عملیات منطقی (Logical Operations) انجام می‌شه مقدار اون Flag‌ها به 0 یا 1 تغییر می‌کند.

توضیح هر Register Flag:

1 - اگر در فلگ Carry Flag که آن را با CF نشان می‌دهیم، یک Carry از Most Significant Bit (MSB) هنگام جمع (Addition) به دست آوریم یا همینطور تفریق (Subtraction) که یک Borrow در MSB داریم مقدار CF را 1 قرار می‌دهیم اما در غیر این صورت مقدار CF برابر با 0 خواهد بود.

2 - اگر در فلگ ZF نتیجه برابر با 0 بود مقدار ZF می شود 1 اما برای نتیجه‌ای که 0 نیست یا به اصطلاح Non-Zero است مقدار ZF برابر با 0 است.

3 - اگر در فلگ SF مقدار MSB برابر 1 باشد بنابراین مقدار SF هم 1 است اما اگر مقدار MSB برابر با 0 قرار گرفت مقدار SF هم 0 می شود.

4 - اگر در فلگ OF سر ریز بافر رخ دهد مقدار OF برابر با 1 است اما در غیر این صورت مقدار OF برابر با 0 خواهد بود.

5 - اگر در فلگ PF تعداد Low Byte زوج یا همان Even باشد مقدار PF برابر با 1 است اما اگر تعداد Low Byte فرد یا Odd بود بنابراین مقدار PF هم برابر با 0 خواهد بود.

6 - اگر در فلگ AF عملیات حسابی یا همان (Arithmetic Operations) یک Carry یا یک Borrow رخ دهد مقدار AF برابر با 1 است در غیر این صورت مقدار AF برابر با 0 خواهد بود.

References:
- https://en.wikipedia.org/wiki/FLAGS_register
- https://www.geeksforgeeks.org/flag-register-8086-microprocessor/
- https://www.cs.princeton.edu/courses/archive/fall09/cos375/IA32StatusFlags.pdf
- https://stackoverflow.com/questions/73362953/how-is-the-overflow-flag-not-set-after-this-addition
- https://www.eecg.toronto.edu/~amza/www.mindsec.com/files/x86regs.html
- https://www.cs.uaf.edu/2009/fall/cs301/lecture/12_07_flags.html


@ZeroX_0Day
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
چند وقت پیش دنبال یه اپ حسابداری بودم که کار اصلیشو فقط یعنی ثبت هزینه و در آمد به دور از هرگونه پچیدگی انجام بده :)

چیزی که میخواستم رو پیدا نکردم،‌ پس تصمیم گرفتم منم نسخه ی خودم رو بسازم 🤷‍♂️

پس پروژه ی md fnancial رو استارت زدم. فعلا کار اصلیش یعنی ثبت هزینه و در آمد رو انجام میده و بهتون مجموعش رو نشون میده ولی خب هنوز خیلی کار داریم. با فلاتر نوشته شده و برای دیتابیس از ObjectBox استفاده میکنه، به زودی سینک با فضا های ابری هم بهش اضافه میشه و خروجی پلفتورم های مختلف رو ازش میگیرم.

رود مپ پروژه رو تو گیت هاب گذاشتم و آروم آروم داره جلو میره. خوشحال میشم ایده ها و پیشنهادتتونم بشنوم .

🔗 https://github.com/mdpe-ir/md_financial

🆔 @MdDaily
🔥18👍7👌1🤝1
🌟 معرفی ObjectBox: یک پایگاه داده Embedded با کارایی بالا برای برنامه‌های مدرن

📦 دیتابیس ObjectBox یک پایگاه داده NoSQL تعبیه شده و ACID-compliant هست که برای سرعت، کارایی و سهولت استفاده طراحی شده.
این پایگاه داده برای محیط‌های محدود از نظر منابع و برنامه‌های با کارایی بالا ساخته شده و در سناریوهایی که نیاز به ذخیره‌سازی سریع داده‌ها، دسترسی آفلاین و عملیات با تأخیر کم دارند، بسیار عالی عمل می‌کنه.

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

🔸 بخش Atomicity: هر کاری که انجام می‌دید یا کامل انجام میشه یا اصلاً انجام نمیشه.
🔸 بخش Consistency: هر کاری باید با قوانین پایگاه داده هماهنگ باشه.
🔸 بخش Isolation: هر کار به‌صورت جداگونه انجام میشه و روی کارهای دیگه تأثیر نمی‌ذاره.
🔸 بخش Durability: هر تغییری که ایجاد می‌کنید به‌طور دائم ذخیره میشه و حتی اگر مشکلی پیش بیاد، اطلاعات از بین نمیره.


چه در حال ساخت برنامه‌های موبایل، سیستم‌های IoT یا راه‌حل‌های محاسباتی Edge باشید، ObjectBox یک راه‌حل سبک و کاربرپسند برای مدیریت داده‌ها بدون سربار پایگاه‌های داده رابطه‌ای سنتی ارائه میده.

---

🎯 حالا ObjectBox دقیقاً چیه؟

یک پایگاه داده شیءگرا که به‌طور مستقیم اشیاء رو ذخیره می‌کنه و نیاز به (ORM) رو از بین می‌بره. با حذف ORM، عملکرد سریع‌تر و توسعه ساده‌تری رو تجربه می‌کنید.

این پایگاه داده به‌ویژه برای موارد زیر مناسب هست:

اپلیکیشن‌های موبایل: برای ذخیره‌سازی داده‌های محلی با سرعت بالا.

دستگاه‌های IoT و Edge: اولویت با حالت آفلاین، سبک‌وزن و بهینه‌سازی شده برای دستگاه‌های کم‌منبع.

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

---

⚙️ حالا ObjectBox چطوری کار می‌کنه؟

1️⃣ پایگاه داده شیءگرا
🛠 اشیاء بدون نیاز به کوئری‌های پیچیده SQL یا ORM، مستقیماً ذخیره و بازیابی میشن. این کار توسعه رو سریع‌تر می‌کنه و احتمال خطاهای زمان اجرا رو کاهش میده.

2️⃣ طراحی Embedded
📲 به‌عنوان بخشی از برنامه شما اجرا میشه بدون نیاز به یک سرور پایگاه داده خارجی. برای سیستم‌های توزیع‌شده، اپلیکیشن‌های موبایل و دستگاه‌های IoT که منابع محدودی دارن، ایده‌آله.

3️⃣ ایندکس‌گذاری با پرفورمنس بالا
⚡️ مکانیزم‌های ایندکس‌گذاری بهینه‌شده‌ای رو فراهم می‌کنه که جستجوها و کوئری‌ها رو سریع می‌کنه.

4️⃣ همگام‌سازی داده‌ها
🔄 پشتیبانی از حالت اولویت با آفلاین به برنامه‌ها اجازه میده بدون اتصال به اینترنت 🌐 کار کنه و از سینک بین دستگاه‌ها هم پشتیبانی می‌کنه.

5️⃣ سازگاری بین پلتفرم‌ها
💻 روی Android, plain-Java, Kotlin (Linux and Windows), POSIX, MacOS, iOS, Go, Python, Dart/Flutter, and C/C++ کار می‌کنه.

6️⃣ پشتیبانی از Vector Search
🧠 پشتیبانی داخلی برای اپلیکیشن‌های AI و ML که نیاز به جستجوهای مبتنی بر بردار دارن.

---

📌 از کجا شروع کنم؟

🌐 وبسایت: ObjectBox
📂 مخزن گیت‌هاب: ObjectBox SDK
🤖 اینترنت اشیا و همگام‌سازی: ObjectBox Sync

---

🆔 @MdDaily
👍5🔥2