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 Linuxor ?
Forwarded from Linuxor ?
Forwarded from Linuxor ?
Forwarded from Linuxor ?
Forwarded from Linuxor ?
Forwarded from Anophel | آنوفل
Forwarded from Anophel | آنوفل
💢 تا حالا شده بخوای کلی فانکشن رو همزمان اجرا کنی، ولی نخوای با دردسرهای Goroutine و WaitGroup کلنجار بری؟
یا شاید دلت بخواد یه بار فانکشن‌ها رو آماده کنی و هر وقت خواستی دوباره اجراشون کنی؟
اینجاست که مفهوم Wrapper Types تو گولنگ میاد وسط. تو این پست، می‌خوام یه راه حل تمیز و شیک بهت معرفی کنم: ConcRunner

Wrapper Types چیه؟
⭐️تو گولنگ، Wrapper Type یه نوع خاصه که یه ساختار ساده می‌سازه و پشتش کلی جادو (یعنی همون منطق و پیچیدگی‌ها) قایم می‌کنه. هدفش اینه که کد رو تر و تمیز نگه داره.

💠مثال عملی:
فرض کن یه چیزی داری مثل اجرای فانکشن‌ها به صورت همزمان (concurrently). خب، این کار خودش یه ذره پیچیدگی داره چون باید با goroutine‌ها و sync.WaitGroup کلنجار بری. حالا ما اومدیم یه نوع جدید به اسم ConcRunner درست کردیم که این داستان رو می‌پیچه تو خودش. دولوپر فقط میگه «هی، این فانکشن‌هام رو بگیر و همزمان اجراشون کن»، دیگه نمی‌پرسه چطور این کار انجام میشه.

مثال تصویر 1

⭐️چرا این خوبه؟
سادگی در استفاده: دیگه کسی لازم نیست نگران goroutine و sync.WaitGroup باشه.
قابلیت استفاده مجدد: فانکشن‌ها رو هر چند بار که بخوای می‌تونی اضافه و اجرا کنی.
محافظت از جزئیات: کل سینک شدن و داستان‌های پشت پرده رو می‌سپری به ConcRunner، تمیز و بی‌دردسر.

⭐️چطوری استفاده کنیم؟ یه چیزی مثل تصویر 2.

💠این روش یه نمونه خوب از Encapsulation تو کده به‌قول معروف: «جادوی گولنگ تو اینجور جاها معلوم میشه!»

💙 Anophel | آنوفل

#گو #گولنگ #go #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from a pessimistic researcher (Kc)
خیلی ها بیخیال نشدن. و خب به لطف بیخیال نشدن این عزیزان ما امروزه foundation مناسبی برای توسعه‌ی تکنیک‌های software model checking داریم. حالا اگر طبق عادتم دوباره نرفتم توی یک غیبت طولانی، براتون اولین تلاش‌ها برای رفع این مشکل رو توضیح میدم و می‌بینیم که چطور با ارائه چند تکنیک ساده تونستن model checker ای بسازن به اسم SPIN که با گذشت بیش از ۳۰ سال هنوزم یکی از قوی‌ترین ابزارهای verification برنامه‌های distributed و multi-thread هستش.

مسئله‌ی Reachability با تمام سادگیش، مسئله‌ی Hard ای محسوب میشه و توی ترک B تئوری علوم کامپیوتر اگر نگم مهم ترین، ولی یکی از مهم‌ترین مسائلی هست که پاسخ دادنش در هر setting ای ارزش بالایی داره.

به شکلی که ما یک کنفرانسی داریم به نام Reachability problems conference یا به اختصار RP که ۱۸ ساله داره برگزار میشه.

این کنفرانس برای ۱۹ امین سال قراره که توی سال ۲۰۲۵ در موسسه‌ی IMDEA software واقع در شهر مادرید برگزار بشه و ددلاین ارسال مقاله‌اش هم ۶ ماهه دیگه. اگر شما هم این موضوع براتون جذابیت بالایی داره، give it a shot و سعی کنید یه چیزی برای این کنفرانس آماده کنید.

https://rp25.software.imdea.org/index.html
۴ اصل پرامپت نویسی برای مدل‌های استدلالی مثل o1, o3, r1

@DevTwitter | <Reza Jafari/>
Forwarded from ASafaeirad
Cognitive load is what matters
How to make good decisions as a software engineer.

https://minds.md/zakirullin/cognitive

#article #cognitive
Forwarded from Linuxor ?
ابزار های معروفی که DevOps از اونا استفاده می‌کنه :

1. Version Control and Source Code Management (SCM) : Git, GitHub, GitLab, Bitbucket.

2. Continuous Integration/Continuous Delivery (CI/CD) : Jenkins, GitLab CI/CD, CircleCI, TravisCI, Azure DevOps.

3. Infrastructure as Code (IaC) : Terraform, Ansible, Puppet, Chef.

4. Monitoring and Logging : Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), Datadog.

5. Containerization and Orchestration : Docker, Kubernetes, OpenShift.

6. DevSecOps (Security in DevOps) : Snyk, Aqua Security, SonarQube.

7. Collaboration and Communication Tools : Slack, Microsoft Teams, Jira, Trello.

8. Testing and Quality Management : Selenium, JUnit, TestNG.

@Linuxor
شرکت Microsoft در هر ثانیه 7000 حمله به رمزهای عبور را مسدود می‌کند، حملات فیشینگ هم 146٪ رشد داشته است!
با آمدن هوش مصنوعی وضعیت پیچیده‌تر شده و باید آماده‌تر بود.
- استفاده از احراز هویت چندمرحله‌ای (MFA) که sms نباشد!
- استفاده از Password Manager
این دو، لازمه حفظ امنیت شما هستند و البته که به تنهایی کافی نیستند.

https://forbes.com/sites/zakdoffman/2024/12/13/microsoft-confirms-password-deletion-for-1-billion-users-attacks-up-200/

@DevTwitter | <Vahid Nameni/>
بانی مد اعصابش از انحصار اسنپ پی ریخته بهم که نمیزاره سایر پلتفرم های قسطی رو اضافه کنید

حاضر شده جریمه اسنپ پی رو بده ولی همه رو اضافه کنه ( تارا و آپ و بلو بانک و دیجی پی و تپسی همه رو اضافه کرده )

@poinair پوینا
لذت بردم از زیبایی این مقاله
مخصوصا اون قسمتی که از cpu cache line حرف میزنه که مطمئن هستم برای خیلی هامون جدیده…

داستانش مفصله، اما حتما بخونید
کلا استفاده از sync.Pool جاهایی که temp objectهایی دارید که زیاد داره allocate میشه، زیاد منظورم به تعداد دفعات زیاد هست، استفاده از sync.Pool برای reuse کردن اون objectها کمک میکنه garbage collector کمتر به زحمت بیفته و performance برنامه خیلی بهتر بشه

هم تو خود net/http و encode/json و sdk گولنگ زیاد استفاده شده و هم فریمورک هایی مثل fasthttp که خیلی سریع هستن ازش استفاده میکنن

حتما به اون تیکه padding دقت کنید که چرا داره اضافه میشه
از زیبایی های sync.Pool اینه که lock-free طراحی شده، هر چند به خاطر modern cpuها و cache line ممکنه که این مکانیزم درست اجرا نشه بدون اون padding

قسمت pin و victim هم جالب بود، بخونید

https://victoriametrics.com/blog/go-sync-pool/

@DevTwitter | <Hossein Nazari/>
Forwarded from Accio
"A little copying is better than a little dependency."

- Rob Pike

This is such a nice take. We mostly tend to be so strict about the DRY principle. Duplication is not always evil, nor it is always the root of evil. In fact a little redundancy in exchange for dependency is totally worth it.
Let's say you have multiple components that have their own build processes and operate separately with loose couplings between them. And now you can't stand that you have implemented a logic on both component A and component B. So you decide that there should be a dependency between these components.
You are slowly moving towards tight coupling, and while there are ways to avoid it (introducing a third component ,...), they tend to just consume more of your time and effort so you'd probably just let them be.
This will not only make changes have their effects distributed throughout your entire system, but will impact your build-process/run-time of your components.

#DRY #components
Forwarded from Accio
More on componenets here:
یادگیری برنامه نویسی با بازی 🕹️

CodeCombat
سبک: بازی ماجراجویی
مهارت‌ها: یادگیری زبان‌های برنامه‌نویسی (Python, JavaScript)
شما در قالب یک بازی فانتزی شخصیت خود را با نوشتن کد حرکت می‌دهید و دشمنان را شکست می‌دهید. این بازی برای مبتدیان و یادگیری اصول برنامه‌نویسی عالیه.
CheckiO
سبک: بازی حل معما
مهارت‌ها: برنامه‌نویسی Python و JavaScript
این بازی مجموعه‌ای از چالش‌های کدنویسی است که با حل آن‌ها مهارت‌های خود را تقویت می‌کنید. مناسب برای افراد با دانش متوسط و پیشرفته.
RoboCode
سبک: مبارزه ربات‌ها
مهارت‌ها: یادگیری Java، تفکر الگوریتمی
در این بازی شما باید برای ربات خود کدی بنویسید تا در میدان مبارزه با ربات‌های دیگر بجنگد. برای تقویت الگوریتم‌نویسی و استراتژی عالیه.
TIS-100
سبک: شبیه‌سازی برنامه‌نویسی سیستم
مهارت‌ها: یادگیری منطق سیستم‌های سطح‌پایین، برنامه‌نویسی اسمبلی
یک بازی پازل پیچیده که در اون باید مدارها و سیستم‌های کامپیوتری رو با کدنویسی درست کنی.
Human Resource Machine
سبک: حل پازل
مهارت‌ها: اصول برنامه‌نویسی و الگوریتم‌ها
در این بازی شما باید دستورات ساده‌ای برای حل پازل‌ها به کارمندان بدهید. مناسب برای درک ساختارهای پایه‌ای کدنوسی.


#programming

🚀 @coolycode
Forwarded from Linuxor ?
برای پردازش تراکنش های بیشتر اومدن دیتابیس ها رو (horizontal scaling) زیاد کردن که سیستم کم نیاره، انتظار می‌رفت که با تقسیم بار روی چند تا سرور پردازش تراکنش ها بیشتر بشه ولی قضیه برعکس شد بجای اینکه سیستم تراکنش های بیشتری رو ساپورت کنه توان پردازشی کمتری داشت.

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

@Linuxor
مصاحبه کاری به زبان انگلیسی، آلمانی یا هر زبان خارجی کار راحتی نبست و نیاز به تمرین داره، این 10 تا ابزار برای مصاحبه خیلی خیلی بکارتون میاد :

۱. Preply

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

۲. Speechling

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

۳. TalkAbroad

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

۴. Elevate

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

۵. HiNative

پلتفرمی برای دریافت بازخورد از افراد بومی زبان در مورد جملاتی که می‌خواهید در مصاحبه استفاده کنید. می‌توانید سوالاتی مثل «آیا این جمله طبیعی به نظر می‌رسد؟» بپرسید.

۶. Job Interview Simulator

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

۷. Beelinguapp

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

۸. LingQ

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

۹. Mondly

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

۱۰. FluentU

این ابزار از ویدئوهای واقعی مانند مصاحبه‌ها، سخنرانی‌ها و مستندها استفاده می‌کند تا شما را با کاربردهای واقعی زبان آشنا کند. تماشای این ویدئوها می‌تواند اعتمادبه‌نفس شما را در مصاحبه‌ها افزایش دهد.

@DevTwitter | <Shadi Sepehri (keyworkir)/>