Forwarded from Anophel | آنوفل
یا شاید دلت بخواد یه بار فانکشنها رو آماده کنی و هر وقت خواستی دوباره اجراشون کنی؟
اینجاست که مفهوم Wrapper Types تو گولنگ میاد وسط. تو این پست، میخوام یه راه حل تمیز و شیک بهت معرفی کنم: ConcRunner
Wrapper Types چیه؟
فرض کن یه چیزی داری مثل اجرای فانکشنها به صورت همزمان (concurrently). خب، این کار خودش یه ذره پیچیدگی داره چون باید با goroutineها و sync.WaitGroup کلنجار بری. حالا ما اومدیم یه نوع جدید به اسم ConcRunner درست کردیم که این داستان رو میپیچه تو خودش. دولوپر فقط میگه «هی، این فانکشنهام رو بگیر و همزمان اجراشون کن»، دیگه نمیپرسه چطور این کار انجام میشه.
مثال تصویر 1
سادگی در استفاده: دیگه کسی لازم نیست نگران goroutine و sync.WaitGroup باشه.
قابلیت استفاده مجدد: فانکشنها رو هر چند بار که بخوای میتونی اضافه و اجرا کنی.
محافظت از جزئیات: کل سینک شدن و داستانهای پشت پرده رو میسپری به ConcRunner، تمیز و بیدردسر.
#گو #گولنگ #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
مسئلهی Reachability با تمام سادگیش، مسئلهی Hard ای محسوب میشه و توی ترک B تئوری علوم کامپیوتر اگر نگم مهم ترین، ولی یکی از مهمترین مسائلی هست که پاسخ دادنش در هر setting ای ارزش بالایی داره.
به شکلی که ما یک کنفرانسی داریم به نام Reachability problems conference یا به اختصار RP که ۱۸ ساله داره برگزار میشه.
این کنفرانس برای ۱۹ امین سال قراره که توی سال ۲۰۲۵ در موسسهی IMDEA software واقع در شهر مادرید برگزار بشه و ددلاین ارسال مقالهاش هم ۶ ماهه دیگه. اگر شما هم این موضوع براتون جذابیت بالایی داره، give it a shot و سعی کنید یه چیزی برای این کنفرانس آماده کنید.
https://rp25.software.imdea.org/index.html
rp25.software.imdea.org
RP 2025
19th International Conference on Reachability Problems 2025; October 1-3 2025, Madrid, Spain; Submission deadline: TBA
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from ASafaeirad
Cognitive load is what matters
How to make good decisions as a software engineer.
https://minds.md/zakirullin/cognitive
#article #cognitive
How to make good decisions as a software engineer.
https://minds.md/zakirullin/cognitive
#article #cognitive
minds.md
Cognitive load is what matters
There are so many buzzwords and best practices out there, but let's focus on something more fundamental. What matters is the amount of confusion developers feel when going through the code.
Forwarded from ASafaeirad
Cognitive load is what matters
How to make good decisions as a software engineer.
https://minds.md/zakirullin/cognitive
#article #cognitive
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
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
Forwarded from DevTwitter | توییت برنامه نویسی
شرکت 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/>
با آمدن هوش مصنوعی وضعیت پیچیدهتر شده و باید آمادهتر بود.
- استفاده از احراز هویت چندمرحلهای (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/>
Forwarded from متخصص وردپرس | پوینا
بانی مد اعصابش از انحصار اسنپ پی ریخته بهم که نمیزاره سایر پلتفرم های قسطی رو اضافه کنید
حاضر شده جریمه اسنپ پی رو بده ولی همه رو اضافه کنه ( تارا و آپ و بلو بانک و دیجی پی و تپسی همه رو اضافه کرده )
@poinair پوینا
حاضر شده جریمه اسنپ پی رو بده ولی همه رو اضافه کنه ( تارا و آپ و بلو بانک و دیجی پی و تپسی همه رو اضافه کرده )
@poinair پوینا
Forwarded from DevTwitter | توییت برنامه نویسی
لذت بردم از زیبایی این مقاله
مخصوصا اون قسمتی که از 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/>
مخصوصا اون قسمتی که از 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
- 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 LearnPOV | لرن پی او وی
یادگیری برنامه نویسی با بازی 🕹️✅
➊ CodeCombat
🚀 @coolycode
➊ CodeCombat
سبک: بازی ماجراجویی➋ CheckiO
مهارتها: یادگیری زبانهای برنامهنویسی (Python, JavaScript)
شما در قالب یک بازی فانتزی شخصیت خود را با نوشتن کد حرکت میدهید و دشمنان را شکست میدهید. این بازی برای مبتدیان و یادگیری اصول برنامهنویسی عالیه.
سبک: بازی حل معما➌ RoboCode
مهارتها: برنامهنویسی Python و JavaScript
این بازی مجموعهای از چالشهای کدنویسی است که با حل آنها مهارتهای خود را تقویت میکنید. مناسب برای افراد با دانش متوسط و پیشرفته.
سبک: مبارزه رباتها➍ TIS-100
مهارتها: یادگیری Java، تفکر الگوریتمی
در این بازی شما باید برای ربات خود کدی بنویسید تا در میدان مبارزه با رباتهای دیگر بجنگد. برای تقویت الگوریتمنویسی و استراتژی عالیه.
سبک: شبیهسازی برنامهنویسی سیستم➎ Human Resource Machine
مهارتها: یادگیری منطق سیستمهای سطحپایین، برنامهنویسی اسمبلی
یک بازی پازل پیچیده که در اون باید مدارها و سیستمهای کامپیوتری رو با کدنویسی درست کنی.
سبک: حل پازل
مهارتها: اصول برنامهنویسی و الگوریتمها
در این بازی شما باید دستورات سادهای برای حل پازلها به کارمندان بدهید. مناسب برای درک ساختارهای پایهای کدنوسی.
#programming
Forwarded from Linuxor ?
برای پردازش تراکنش های بیشتر اومدن دیتابیس ها رو (horizontal scaling) زیاد کردن که سیستم کم نیاره، انتظار میرفت که با تقسیم بار روی چند تا سرور پردازش تراکنش ها بیشتر بشه ولی قضیه برعکس شد بجای اینکه سیستم تراکنش های بیشتری رو ساپورت کنه توان پردازشی کمتری داشت.
همگام سازی روی دیتابیس های توزیع شده یکی از مشکلاتیه که هنوز دارن روش کار میکنن.
@Linuxor
همگام سازی روی دیتابیس های توزیع شده یکی از مشکلاتیه که هنوز دارن روش کار میکنن.
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
مصاحبه کاری به زبان انگلیسی، آلمانی یا هر زبان خارجی کار راحتی نبست و نیاز به تمرین داره، این 10 تا ابزار برای مصاحبه خیلی خیلی بکارتون میاد :
۱. Preply
پلتفرمی برای یادگیری زبان با معلمان خصوصی که امکان برنامهریزی کلاسها به صورت سفارشی را فراهم میکند. شما میتوانید بر روی موضوعاتی مانند مصاحبه شغلی یا واژگان تخصصی در حوزه کاری خود تمرکز کنید.
۲. Speechling
ابزاری برای بهبود تلفظ و مهارتهای صحبت کردن. این ابزار به شما امکان میدهد جملات خاصی را ضبط کرده و بازخورد مستقیم از مربیان بومی زبان دریافت کنید. برای تمرین پاسخ به سوالات مصاحبه فوقالعاده است.
۳. TalkAbroad
این پلتفرم به شما امکان میدهد مکالمات واقعی با افراد بومی داشته باشید و خود را برای مکالمههای طبیعی در مصاحبههای شغلی آماده کنید. برقراری ارتباط با افراد واقعی تجربهای ارزشمند برای مقابله با استرس مصاحبه است.
۴. Elevate
این ابزار به ظاهر فقط برای تقویت مهارتهای شناختی است، اما دارای بخشهایی برای تقویت مهارتهای شنیداری و درک سریع است که در مصاحبهها اهمیت بالایی دارد.
۵. HiNative
پلتفرمی برای دریافت بازخورد از افراد بومی زبان در مورد جملاتی که میخواهید در مصاحبه استفاده کنید. میتوانید سوالاتی مثل «آیا این جمله طبیعی به نظر میرسد؟» بپرسید.
۶. Job Interview Simulator
این ابزار محیطی شبیهسازیشده برای مصاحبه شغلی ایجاد میکند که میتوانید در آن با سوالات رایج به زبانهای مختلف روبهرو شوید. این تجربه به شما کمک میکند استرس را کاهش دهید و پاسخهای خود را بهبود ببخشید.
۷. Beelinguapp
این برنامه به شما کمک میکند مهارتهای شنیداری و واژگان را با مطالعه داستانها و مقالات در کنار متن زبان مادری تقویت کنید. ایدهآل برای گسترش دایره لغات حرفهای.
۸. LingQ
پلتفرمی عالی برای یادگیری زبان از طریق محتوای واقعی مثل اخبار، مصاحبهها و ویدئوها. این ابزار به شما کمک میکند زبان موردنیاز برای مکالمات حرفهای و مصاحبههای شغلی را بیاموزید.
۹. Mondly
یک ابزار تعاملی که مکالمات شغلی و رسمی را شبیهسازی میکند. با این ابزار میتوانید اصطلاحات حرفهای و دیالوگهای مرتبط با مصاحبه را تمرین کنید.
۱۰. FluentU
این ابزار از ویدئوهای واقعی مانند مصاحبهها، سخنرانیها و مستندها استفاده میکند تا شما را با کاربردهای واقعی زبان آشنا کند. تماشای این ویدئوها میتواند اعتمادبهنفس شما را در مصاحبهها افزایش دهد.
@DevTwitter | <Shadi Sepehri (keyworkir)/>
۱. Preply
پلتفرمی برای یادگیری زبان با معلمان خصوصی که امکان برنامهریزی کلاسها به صورت سفارشی را فراهم میکند. شما میتوانید بر روی موضوعاتی مانند مصاحبه شغلی یا واژگان تخصصی در حوزه کاری خود تمرکز کنید.
۲. Speechling
ابزاری برای بهبود تلفظ و مهارتهای صحبت کردن. این ابزار به شما امکان میدهد جملات خاصی را ضبط کرده و بازخورد مستقیم از مربیان بومی زبان دریافت کنید. برای تمرین پاسخ به سوالات مصاحبه فوقالعاده است.
۳. TalkAbroad
این پلتفرم به شما امکان میدهد مکالمات واقعی با افراد بومی داشته باشید و خود را برای مکالمههای طبیعی در مصاحبههای شغلی آماده کنید. برقراری ارتباط با افراد واقعی تجربهای ارزشمند برای مقابله با استرس مصاحبه است.
۴. Elevate
این ابزار به ظاهر فقط برای تقویت مهارتهای شناختی است، اما دارای بخشهایی برای تقویت مهارتهای شنیداری و درک سریع است که در مصاحبهها اهمیت بالایی دارد.
۵. HiNative
پلتفرمی برای دریافت بازخورد از افراد بومی زبان در مورد جملاتی که میخواهید در مصاحبه استفاده کنید. میتوانید سوالاتی مثل «آیا این جمله طبیعی به نظر میرسد؟» بپرسید.
۶. Job Interview Simulator
این ابزار محیطی شبیهسازیشده برای مصاحبه شغلی ایجاد میکند که میتوانید در آن با سوالات رایج به زبانهای مختلف روبهرو شوید. این تجربه به شما کمک میکند استرس را کاهش دهید و پاسخهای خود را بهبود ببخشید.
۷. Beelinguapp
این برنامه به شما کمک میکند مهارتهای شنیداری و واژگان را با مطالعه داستانها و مقالات در کنار متن زبان مادری تقویت کنید. ایدهآل برای گسترش دایره لغات حرفهای.
۸. LingQ
پلتفرمی عالی برای یادگیری زبان از طریق محتوای واقعی مثل اخبار، مصاحبهها و ویدئوها. این ابزار به شما کمک میکند زبان موردنیاز برای مکالمات حرفهای و مصاحبههای شغلی را بیاموزید.
۹. Mondly
یک ابزار تعاملی که مکالمات شغلی و رسمی را شبیهسازی میکند. با این ابزار میتوانید اصطلاحات حرفهای و دیالوگهای مرتبط با مصاحبه را تمرین کنید.
۱۰. FluentU
این ابزار از ویدئوهای واقعی مانند مصاحبهها، سخنرانیها و مستندها استفاده میکند تا شما را با کاربردهای واقعی زبان آشنا کند. تماشای این ویدئوها میتواند اعتمادبهنفس شما را در مصاحبهها افزایش دهد.
@DevTwitter | <Shadi Sepehri (keyworkir)/>
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
🔥 در تکنولوژی مثل DevOps، شبکه و... مفهوم:
💠 بازیابی فاجعه Disaster Recovery
💠 تحمل خطا Fault Tolerance
💠 دسترس پذیری بالا High Availability
وجود دارد عکس ها در درک مسئله مفیداند
❤️ ممنون از حمایت هاتون 💐🌺
#devops
💠 بازیابی فاجعه Disaster Recovery
جلوگیری یا به حداقل رساندن از دست دادن دادهها و اختلال در کسبوکار ناشی از رویدادهای فاجعهبار که با دو معیار هدف زمان بازیابی (RTO) و هدف نقطه بازیابی (RPO) و سه عنصر پیشگیری،تشخیص،اصلاح اجرا میشود
💠 تحمل خطا Fault Tolerance
عدم تأخير در ارائه سرويس و قدرت تحمل در هنگام بروز مشكل، هنگام بروز خطا زمان قطعی سرويس صفر يا بسيار کوتاه و عمليات جايگزينی بدون عوامل انسانی و بطور خودکار
💠 دسترس پذیری بالا High Availability
راهکارهای با هدف اطمینان از عملکرد مداوم سیستم حتی در صورت بروز مشکلات ناگهانی
که با حذف تنها نقاط شکست (Single Points of Failure) به وسیله افزونگی (Redundancy)، توزیع بار (Load Balancing)، جابجایی خودکار (Automatic Failover)،خوشهبندی (Clustering)، تشخیص خرابی (Failure Detection). شاخصهایی مانند SLA (توافقنامه سطح خدمات)، RTO (زمان مورد انتظار برای بازگرداندن سیستم به حالت کاری) و RPO (نقطه زمانی مورد انتظار برای بازیابی دادهها) سنجیده میشه
وجود دارد عکس ها در درک مسئله مفیداند
❤️ ممنون از حمایت هاتون 💐🌺
#devops