Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Go Casts 🚀
واقعا لذت بردم از این مقاله

نکات ساده و مهمی رو درباره تست نویسی با گولنگ میگه، یه ابزار رو هم معرفی میکنه برای visualize کردن تست ها که خودش نوشته و کمبودش حس میشد در tooling گولنگ.

خودم بارها حین اجرای تست ها در پایپلاین های ci/cd به مشکلات متفاوتی برخوردم در مورد نحوه اجرای موازی یا سریالی تست ها، مخصوصا setup و cleanup کردن ها و migration های دیتابیس برای پکیج های متفاوت که تست دارند میتونه چالش زا باشه و تست ها رو با random behaviour و random failure مواجه کنه.

Optimising and Visualising Go Tests Parallelism: Why more cores don't speed up your Go tests
https://threedots.tech/post/go-test-parallelism/

در مورد تست نویسی این ویدیوهارو در یوتیوب دو سه سال پیش ضبط کردم، بد نیست ببینید
https://t.iss.one/gocasts/153


همچنین این سری مقاله ای که معرفی کردم ساده و خوبه، سر فرصت بخونید و استفاده کنید
https://t.iss.one/gocasts/37



توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515


@gocasts

#unit_test #test #gocasts #golang
Forwarded from Arsham's Tech Mastery (Arsham)
The devil is in the details
شیطان در جزئیات خفته

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

اما از دید من، هیچ تغییری بی اهمیت نیست،
یه اسپیس اضافه توی فایل یمل میتونه کلا کانفیگ رو خراب کنه و پاد کلا بالا نیاد.

و کاش ته فاجعه بالا نیومدن یه پاد باشه!
یه سری اشتباهات در همین اندازه کوچیک،
موشک ها منفجر کردن و بیزنس ها به خاک نشوندن!

|-×-×-×-|

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

الان اینجوری ام که حتی به تک تک اسپیس ها و فرمتینگ های نامناسب کد هم اشاره میکنم.

ولی خودمونیما، چه دلیلی وجود داره که کد فرمت نشه؟
اونم با وجود کلی ابزار برای اتومات شدن این فرآیند؟
چیزی جز مایندست "بزن بره"؟
و چه تضمینی هست کسی که رو فرمت کردن کدش تنبلی کرده، بقیه جاها مثل ساعت کوارتز، دقیق باشه؟

|-×-×-×-|

برای من کد مثل یه اثر هنری میمونه، که هر چی بیشتر به ظرافت هاش توجه بشه زیباتر میشه.
و تو مهندسی، علاوه بر زیبایی، پارامتر هایی مثل کارایی، بهینگی، قابل اتکایی و... هم تاثیر پذیر از توجه به ظرافت ها و جزئیات هستن.

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

دیر رسیدن، بهتر از رو پروداکشن ترکیدن!

|-×-×-×-|

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

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

|-×-×-×-|

از این موارد و عدم توجه به جزئیاتی که باعث فاجعه شدن زیاد توی تاریخ دنیای نرم افزار وجود داره،
ولی مایندست "بزن بره" هم همچنان به قوت خودش باقیه 🔥😂

واقعیت اینکه گاهی وقتا یه چیزایی برامون شفاف نشده،
و همین باعث میشه ندونیم چه وقت حساس باشیم و چقدر حساس باشیم.

میخوایم جلوی premature optimisation رو بگیریم،
اشتباها کد باگی میفرستیم رو پروداکشن.
چون مرز بهینگی رو مشخص نکردیم،
چون تعریف باگ رو (برا خودمون) مشخص نکردیم،
چون هیچ فریمورکی برای کد ریویو نداریم و کاملا سلیقه ای انجام میشه.
و...

|-×-×-×-|

نظر شما چیه؟ چه مثال ها و نکاتی رو دوست دارید در مورد مطالب گفته شده مطرح کنید؟
💎توضیح Dirty Read، Non-Repeatable Read، Phantom Read و Deadlock 💎

خب بچه‌ها امروز می‌خوایم درباره چند تا مشکل رایج توی تراکنش‌های دیتابیس حرف بزنیم که ممکنه به دردتون بخوره. وقتی چند تا تراکنش به صورت همزمان توی دیتابیس کار می‌کنن، بعضی وقتا اتفاقای غیرمنتظره‌ای می‌افته که ممکنه به بی‌نظمی و باگ منجر بشه. این مشکلات شامل Dirty Read، Non-Repeatable Read، Phantom Read و Deadlock هستن. بیاید دونه دونه بررسیشون کنیم.

اول Dirty Read 💾

خب Dirty Read یعنی وقتی یه تراکنش داده‌هایی رو می‌خونه که هنوز توسط یه تراکنش دیگه نهایی (commit) نشده. این یعنی شما دارید چیزی رو می‌خونید که ممکنه عوض بشه یا حتی برگرده.

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

دوم Non-Repeatable Read 🔄

خب Non-Repeatable Read وقتی پیش میاد که یه تراکنش، داده‌ای رو چند بار می‌خونه و دفعه‌های بعدی اون داده فرق می‌کنه، چون یه تراکنش دیگه اومده و اون داده رو وسط کار تغییر داده.

مثال: شما قیمت یه محصول رو برای یه مشتری نشون می‌دید. همزمان یه کاربر دیگه قیمت همون محصول رو تغییر می‌ده. وقتی مشتری دوباره صفحه رو رفرش کنه، قیمت متفاوتی می‌بینه.

سوم Phantom Read 👻

خب Phantom Read یعنی وقتی یه تراکنش یه مجموعه داده رو می‌خونه و در طول اجرای تراکنش، رکوردهای جدیدی به اون مجموعه اضافه یا حذف می‌شن. اینطوری وقتی دوباره همون پرس‌وجو رو انجام بدی، نتیجه متفاوتی می‌بینی.

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

چهارم Deadlock 🔐

خب Deadlock وقتی اتفاق می‌افته که دو یا چند تراکنش همزمان منتظر همدیگه بمونن و نتونن کاری کنن. یعنی تراکنش‌ها همدیگه رو قفل می‌کنن و نمی‌تونن ادامه بدن.

مثال: فرض کن تراکنش A می‌خواد رکورد ۱ رو قفل کنه و منتظر رکورد ۲ هم هست. همزمان تراکنش B رکورد ۲ رو قفل کرده و منتظر رکورد ۱ هست. اینجا تراکنش‌ها همدیگه رو بلاک کردن و هیچ‌کدوم نمی‌تونن کاری بکنن.


جمع بندی 🎯

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

امیدوارم مفید بوده باشه :)

#db #dead_lock #programing


@ninja_learn_ir
Forwarded from Geek Alerts
نسخه رسمی ChatGPT برای ویندوز منتشر شد.
چون آزمایشی هست فعلا کاربرهای پلاس فقط میتونن لاگین کنن. احتمالا به‌زودی دسترسی برای همه باز میشه.
این چون آزمایشی هست یک سری از ویژگی‌های نسخه وب یا موبایل رو نداره، مثل دستیار صوتی و ورود به گوگل درایو، ولی همه این‌ها در نسخه نهایی منتشر میشه.
یه گزینه چت فوری هم داره که با دکمه‌ای Alt + Space فوری باز میشه و میتونید چت کنید.
این چت حتی آخرین موقعیتی که داخلش بودید رو یادش میمونه، حتی وقتی برنامه رو ببندید و مجدد باز کنید.
https://apps.microsoft.com/detail/9nt1r1c2hh7j
@geekalerts
Forwarded from Geek Alerts
خب Perplexity اینجوری کار میکنه که میتونید بر اساس دیتایی که داخل وب و اینترنت هست جستجو کنید.
یه ویژگی جدید به اسم Internal Knowledge معرفی کرده که میتونید بهش دیتاهای داخلی خودتون رو بدید، مثلا کلی فایل PDF وورد و ... دارید پرپلکسیتی میتونه همرو بخونه و ازشون یاد بگیره، حالا وقتی ازش سوال کنید فقط تو اینترنت نمیگرده و به کمک دیتاهای شما هم بهتون جواب میدن.
از طرفی این فضای دیتایی که میسازید رو میتونید با بقیه هم به اشتراک بذارید یا گروهی روش کار کنید.
خودش چند تا پیشنهاد داده، گفته مثلا تیم‌های منابع انسانی شرکت‌ها میتونن دیتاهایی رو آماده کنن تا سایر نیروی شرکت اگه سوالاتی داشتن سریع تر به جواب برسن.
یا مثلا تیم فروش به کمک تجارب و دیتاهایی که از قبل داره و ترکیبش با اخبار و ترند‌های روز بتونه از پرپلکسیتی برای اهدافش بهتر استفاده کنه.
ویژگی خیلی خوبه اما برای دسترسی بهش اشتراک پرو ۲۰ دلاری باید تهیه بشه که البته یکی از ویژگی‌های این اشتراک ساخت فضاهایی از دیتاهای داخلی هست.
https://www.perplexity.ai/
perplexity
@geekalerts
Forwarded from ASafaeirad
This media is not supported in your browser
VIEW IN TELEGRAM
an Amazing guide to "Drag to Select" implementation.

Read

#article #select
Forwarded from Syntax | سینتکس (Daimon)
Forwarded from Linuxor ?
تفاوت سرور اختصاصی با Bare Metal چیه؟

تقریبا هردو شبیه هم دیگه بهتون دسترسی کامل به سرور رو میدن اما توی Bare Metal یکم دسترسی بیشتره مثلا میتونید به BIOS دسترسی داشته باشید و مثلا CPU رو کانفیگ کنید یا گرافیک رو Over Clock کنید.

برای کنترل کردنش یه کنسول بهتون میدن که بهش میگن IPMI باهاش از راه دور میتونید تنظیمات سخت افزاری رو تغییر بدید.


🐧 @Linuxor
Forwarded from SoniaCircuit
۲ عدد عجوبه.
Forwarded from Gopher Academy
🔵 عنوان مقاله
Modview: Go Project Dependency Graph Visualizer

🟢 خلاصه مقاله:
مقاله مورد بحث روشی ساده را برای تجسم وابستگی‌ها در پروژه‌های برنامه‌نویسی Go ارائه می‌دهد، که این امر از طریق نمودارهای گرافیکی و واضح انجام می‌گیرد. روش پیشنهادی به توسعه‌دهندگان کمک می‌کند تا به راحتی ساختار و تعاملات بین مولفه‌های مختلف پروژه خود را درک کنند. این فرآیند نه تنها باعث بهبود کیفیت کدنویسی می‌شود، بلکه در شناسایی و حل مسائل احتمالی وابستگی‌ها نیز مؤثر است. استفاده از نمودارهای گرافیکی به عنوان ابزاری بصری، فرآیند تحلیل و بررسی کدها را سریع‌تر و دقیق‌تر از روش‌های متنی سنتی می‌کند. این مقاله به بررسی ابزارها و روش‌های موجود برای ایجاد این نمودارها می‌پردازد و نحوه عملیاتی کردن آن‌ها در محیط‌های توسعه واقعی را شرح می‌دهد.

🟣لینک مقاله:
https://golangweekly.com/link/160488/web


👑 @gopher_academy
Forwarded from Geniuses Group (Omid Hekayati)
🔗 با همفکری و همراهی چند تن از دوستان جلسات نقد و بررسی روش های پیاده سازی (سینتکس زبان) الگوهای پایه ای در زبان های برنامه نویسی (مثل encapsulation و abstraction و ...) را ترتیب دادیم.
جلسات بدلیل فیلتر شدن نرم افزار دیسکورد در ایران، در گوگل میت برگزار میشه. در کامنت های همین پست، جزییات شرکت در جلسات و صوت ضبط شده جلسات را قرار میدیم.

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

🧠 یکم در این جلسات می خوایم با #تفکر_انتقادی به نحوه پیاده سازی این موضوعات بپردازیم. سعی می کنیم قبل از ورود به نقد قطعا هر اصل را به شکل خوبی تبیین کنیم که با دیدگاه مشترک از اصل مورد نظر، سینتکس زبان ها را نقد کنیم.

🎯 اگر نتیجه گری قابل قبولی هم در جلسات داشتیم بنده در زبان خیام (#زبان_خیام) که در حال توسعه آن هستیم قرار میدهم. پس قطعا مشارکت شما چه در جلسات چه در تعریف این زبان قطعا با استقبال فراوان از طرف ما خواهد بود. در زبان خیام قصد ایجاد یک زبان عادی مثل دیگر زبان ها نیستیم، موضوعات شاید در نگاه اول عجیب ولی در عین حال جذاب خواهیم داشت. مثلا یکی از تصمیمات بنیادی ما این هست که به شکل کلی primitive data type برای این زبان در سطح سینتکس نداشته باشیم! در جلسات درباره این تصمیمات بیشتر صحبت خواهیم کرد.
Forwarded from Normal Developer
ممکنه شما هم برای هاستینگ سایت یا اپلیکیشنتون از لیارا (liara.ir) استفاده کنید.
حدودا از سال ۱۴۰۰ سرویسای دم دستی که لازم داشتم رو میبردم روی لیارا یا حداقل نسخه اولیه رو اونجا ران میکردم.
سایت شخصی خودم رو هم اونجا ران کردم چون میخواستم از قابلیت های آماده ش استفاده کنم و زیاد روی تنظیم زیرساخت زمان نذارم و بیشتر روی توسعه تمرکز کنم.
ولی تو چند ماه اخیر واقعا با لیارا مشکل پیدا کردم و برام نه صرفه داره که ازش استفاده کنم و نه کیفیتشون مثل قبل خوبه.
تو ماه های جدید برای هر قابلیتی دارن یه قیمتی میدن.
فرض کنید یه سایت ساده با مثلا پایتون با کمترین منابع ران کنید روی لیارا. ببینیم چقد در میاد:

هزینه PaaS ماهانه: ۹۹ هزار تومن (512 مگابایت رم - ۰.۵ هسته پردازنده- ۵ گیگ حافظه)
هزینه بسته امکاناتی: ۷۴ هزار تومن (برنزی)
هزینه دیتابیس پستگرس: ۹۹ هزار تومن (۵۱۲ مگابایت رم - ۰.۵ هسته پردازنده - ۵ گیگ فضای ذخیره سازی)

جمعا: ۲۷۲ هزار تومن ماهانه معادل حدود 4.5 دلار در ماه
حالا اگه شما بخواید یه سرور مجازی بگیرید از یه دیتاسنتر خوب مث هتزنر یا OVH هم حدود ۵ دلار در ماه هزینه داره.
ولی منابعی که مثلا هتزنر دراختیارتون قرار میده میشه ۴ گیگابایت رم، ۲ هسته پردازنده، ۴۰ گیگ فضا!
به اضافه اینکه کیفیت زیرساختی خیلی بهتری داره.
در ادامه بنچمارک GTMetrics از یه سرویس نسبتا پرتصویر و عکس که روی هتزنر دارم و سایت شخصی خودم که هیچی نداره رو میذارم.

@Normal_Developer
Forwarded from Normal Developer
میبینید که یه سایت ساده لیارا بنچ C گرفته
در مقابل یه سایت که تصویر هم زیاد داره روی هتزنر بنچ A گرفته!

@Normal_Developer
Forwarded from Normal Developer
بگذر، یک فیلترشکن متن‌باز با رابط کاربری ساده برای دورزدن فیلترینگ اینترنت هست، که با استفاده از کانفیگ‌های رایگان انتشار یافته در اینترنت کار میکنه. نسخه ۵ از این‌اپ برای سیستم‌عامل اندروید منتشر شده، اما توسعه‌دهندگانش این‌وعده رو دادن که در نسخه‌های بعد علاوه بر پشتیبانی از iOS، روی اضافه‌کردن پروتکل‌های جدید تمرکز کنن.

👉 github.com/Begzar/BegzarApp/releases/latest

🔍 ircf.space/software
@ircfspace‏⁧
Forwarded from سعید
چه طور از ایجاد کوئری اضافی در پکیج
spatie/laravel-medialibrary

جلوگیری کنیم ؟

فقط کافی هست که کد زیر را
$products = Product::get();

به
$products = Product::with('media')->get();

تغییر دهید

در این صورت در صورتی که تصاویر را به صورت زیر فراخوانی کنید ، کوئری اضافی نخواهید داشت:
<img src="{{ $product->getFirstMediaUrl() }}" />


#laravel
#tip
#performance
دوستان ۶۸۶ نفریم ولی واقعا کسی حمایت نمیکنه. 🙃
ممنون میشیم برای این که انرژی بگیریم و بیشتر فعالیت کنیم لایک و شیر کنید ومارو به دوستانتون معرفی کنید. 🙂

با تشکر از همگی ❤️
Forwarded from Linuxor ?
چقدر از هک/امنیت وب می‌دونید؟ کاربر tib3rius یه مجموعه ای از سوالات Security وب اپلیکشن ها درست کرده که با یه کلیک می‌تونید جوابشو ببینید.

https://tib3rius.com/interview-questions.html


🐧 @Linuxor
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy Raymond)
🔶 خبر بد کپی رایت تلگرام

متاسفانه چند روزی هست که کپی رایت تلگرام شدیدتر شده است.

چند روزی هست که تمام کانال های انیمه و مانگا تلگرام کپی رایت خوردند و قادر به دسترسی به آرشیو نیستند و البته شاید با خصوصی کردن کانال به آرشیو دسترسی داشت.

احتمالا شاهد کپی رایت خوردن بیشتر کانال های فیلم و سریال باشیم.

#خبر

@TheRaymondDev