Gopher Academy
3.33K subscribers
916 photos
40 videos
279 files
1.96K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Generic Interfaces

🟢 خلاصه مقاله:

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

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Serving 200 Million Requests Per Day with cgi-bin

🟢 خلاصه مقاله:

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

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


👑 @gopher_academy
🔥1🕊1
Forwarded from Software Engineer Labdon
جی آی تی JIT یعنی چی؟

در اصل JIT مخفف Just-In-Time compilation هست، یعنی کامپایل هم‌زمان با اجرا. این تکنیک باعث می‌شه که کدهایی که به صورت معمول تفسیر (interpret) می‌شن (مثل PHP یا JavaScript)، در زمان اجرا به کد ماشین تبدیل بشن، و این یعنی اجراشون خیلی سریع‌تر بشه.

مزایای JIT
- سرعت اجرای بهتر
- کاهش مصرف منابع در برخی سناریوها
- عملکرد نزدیک‌تر به زبان‌های کامپایل‌شده (مثل C)

کار JIT در PHP چیه؟
در PHP 8 به بعد، Zend Engine دارای یک JIT Compiler شد. قبل از اون، PHP فقط تفسیر می‌کرد.
کار JIT باعث می‌شه:
بخش‌هایی از کد که زیاد استفاده می‌شن (مثلاً حلقه‌ها یا توابع پرتکرار)، به کد ماشین واقعی تبدیل بشن.
این باعث افزایش سرعت اجرای برنامه‌ها می‌شه، مخصوصاً در کارهای محاسباتی سنگین مثل:
- پردازش تصویر
- بازی‌سازی
- پروژه‌های علمی
- کدهایی که زیاد اجرا می‌شن مثل فریم‌ورک‌ها یا CMSها

<Milwad Khosravi/>
3
Forwarded from AI Labdon
پایان کدنویسی سنتی؛ ۲ ابزار هوش مصنوعی که توسعه را از چند روز به چند ساعت می‌رسانند

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

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

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

#هوش_مصنوعی #برنامه_نویسی

💡 تحول دنیای برنامه‌نویسی را در زومیت بخوانید
5
بیشترین سوالات مصاحبه String + Array

String-Based Questions
1. Reverse a string — without using built-ins.
2. Is it a palindrome? Let's find out.
3. Remove duplicates from a string — efficiently.
4. First non-repeating character — who stands alone?
5. Count how many times each character appears.
6. Flip the words in a sentence, not the letters.
7. Are two strings anagrams? Prove it.
8. Longest substring without repeats — sliding window style.
9. Build your own atoi — string to integer.
10. Compress strings with run-length encoding.
11. Most frequent character — who dominates?
12. List all possible substrings of a string.
13. Is one string a rotation of another?
14. Strip all white spaces from a string.
15. Is this a valid shuffle of two strings?
16. Convert text to Title Case — properly.
17. Find the longest common prefix among words.
18. Break a string into a char array — without confusion.
19. Replace spaces with %20 — classic URL trick.
20. Turn full sentences into acronyms.
21. Check if the string is all digits — no alphabets allowed.
22. Count how many words are in the string.
23. Remove a specific character — cleanly.
24. Find the shortest word in a sentence.
25. Longest palindromic substring — two-pointer style.

Array-Based Questions
26. Reverse an array in-place.
27. Find the largest and smallest element.
28. Check for duplicates in an array.
29. Remove duplicates — return only unique values.
30. Find the missing number from 1 to N.
31. Move all zeros to the end — keep order.
32. Rotate the array left/right by K positions.
33. Find the Kth largest/smallest element.
34. Merge two sorted arrays — without using extra space.
35. Find the intersection of two arrays.
36. Sort 0s, 1s, and 2s without using sort().
37. Find subarrays with a given sum.
38. Detect if a subarray sums to 0.
39. Find the longest increasing subsequence.
40. Kadane’s Algorithm — maximum subarray sum.
41. Check if array is sorted and rotated.
42. Rearrange array in max-min order alternately.
43. Find leaders in an array (no greater element to the right).
44. Calculate frequency of all elements in O(n).
45. Product of all elements except self.

#تجربه
webinar_farsi
6
Forwarded from Database Labdon
🔵 عنوان مقاله
1. Life Altering Postgres Patterns

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

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


👑 @Database_Academy
2
Forwarded from Linux Labdon
#کدنمک

مکانیسم ماشه:
$ rm -rf /
🍾13👍2🕊21🔥1
Forwarded from omid trade 360
🔵 عنوان مقاله
Aave TVL 50% greater than Revolut's (1 minute read)

🟢 خلاصه مقاله:
مقاله حاضر، به بررسی و مقایسه Aave و Revolut می‌پردازد که دو سازمان مالی در عرصه‌های متفاوت هستند. Aave، یک پلتفرم وام دهی غیرمتمرکز است که بر بستر بلاک‌چین فعالیت می‌کند، در حالی که Revolut یک شرکت فناوری مالی است که خدمات بانکی و تبدیل ارز را ارائه می‌دهد. بر اساس این مقاله، میزان کل ارزش قفل‌شده (TVL) در Aave، تقریباً 50 درصد بیشتر از دارایی‌های تحت مدیریت (AUM) در Revolut است. این تفاوت عمده ارزش نشان‌دهنده پذیرش گسترده‌تر و اعتماد بیشتر به پلتفرم‌های مالی بلاک‌چین مانند Aave در مقابل روش‌های سنتی‌تر مدیریت دارایی است که توسط شرکت‌هایی مانند Revolut انجام می‌شود. این خلاصه برجسته‌ کردن این تفاوت اساسی میان دو مدل تجاری و نقش تکنولوژی‌های نوین در تحول عرصه مالی را در بر دارد.

🟣لینک مقاله:
https://threadreaderapp.com/thread/1931735079098921341.html?utm_source=tldrcrypto


👑 @omidtrade360
Forwarded from Linux Labdon
من از ابزارهایی که ساده هستند، بیشتر استقبال می‌کنم. ابزارهایی مثل insomnia و Postman گاهی اوقات برای استفاده من که اغلب امنیتی هست overkill است. گاهی حتی با curl کارم راه می‌افتد.
ابزار http://voiden.md را امروز دیدم و سبک متفاوتی دارد.
شاید آزمایش آن ایده بدی نباشد.


<VAHID NAMENI/>
👍32🍾1
Forwarded from AI Labdon
👤 در سرور آزمایشی تلگرام، یک بات رسمی شناسایی شده که سن کاربران را از طریق اسکن چهره و بدون نیاز به مدارک بررسی می‌کند.

احتمال دارد این روش در آینده برای دسترسی به برخی قابلیت‌های خاص تلگرام مورد استفاده قرار گیرد.

🔞 جزئیات بیشتر درباره قابلیت «تأیید سن از طریق چهره» در تلگرام:

— تلگرام در حال راه‌اندازی سیستمی برای تأیید سن از طریق چهره است تا دسترسی به محتوای ۱۸+ در کانال‌ها و گروه‌ها را کنترل کند.
— این قابلیت ابتدا در انگلستان فعال می‌شود، زیرا طبق قانون جدید، سایت‌ها و اپلیکیشن‌هایی که محتوای محدودشده منتشر می‌کنند، موظف به تأیید سن کاربران هستند. احتمال دارد این ویژگی به‌زودی برای سایر کشورها نیز اعمال شود.

— محدوده سنی قابل تشخیص بین ۱۸ تا ۹۰ سال است.
— فقط چهره واقعی شما قابل قبول است — عکس یا تصویر از فرد، قابل شناسایی و مردود خواهد شد.
— نیازی به ارائه هیچ مدرکی نیست.
— دستگاه شما لازم نیست قابلیت Face ID داشته باشد.
— عکس چهره‌ی شما در تلگرام ذخیره نمی‌شود و این سیستم فقط با ایدی کد هر شخص کار می‌کند.

قابلیت تأیید سن با چهره در تلگرام فعلاً برای جلوگیری از دسترسی نوجوانان به محتوای +18 فعال شده، تا ذهن آن‌ها در سنین حساس رشد، گرفتار تحریک زودهنگام و اعتیاد به دپامین کاذب نشود.

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

در آینده ممکن است این سیستم به مدیران اجازه دهد تا افراد زیر ۱۸ سال را از ارسال پیام‌های توهین‌آمیز یا شرکت در بحث‌های حساس مثل سیاست محدود کنند.
3🕊2
Forwarded from AI Labdon
🔥چطور از این عکسا درست کنیم؟! به راحتی

📰وارد ChatGPT بشید و پرامپت زیر رو بهش بدید ، توی پرامپت باید مشخص کنید این عکسو واسه چه کشوری ایجاد کنه ؛)

A Close-Up Photograph Of A Large Map, All Landmarks Set On A Vintage (IRAN) Map Background Write The County Name With Capital Letters. As A Miniature 3D Landscape Is Sculpted Sand, Featuring Of Most Iconic And Famous Landmarks And Architectural From Same Country famous landmark (Azadi Tower and Milad Tower)
• And 3D Tiny Small Autumn Trees And Leaves Surround The Landmarks, Creating A Surreal, Cozy, Atmosphere.
🍾1
Forwarded from 𓄂 Bardia 𓆃
🤖 علاقه‌مند به دنیای هوش مصنوعی هستی؟

دنبال می‌کنی که چطور AI داره دنیا رو متحول می‌کنه؟

پس جای درستی اومدی!

🎯 در کانال ما هر روز:

🔍 جدیدترین اخبار و دستاوردهای دنیای AI

🧠 تحلیل‌ تخصصی در حوزه یادگیری ماشین، دیپ لرنینگ و مدل‌های زبانی

💼 بررسی کاربردهای هوش مصنوعی در پزشکی، صنعت، آموزش، امنیت و اقتصاد

🛠 معرفی ابزارها، دوره‌ها و منابع یادگیری

📈 بررسی ترندها و آینده‌ فناوری‌های مرتبط با هوش مصنوعی

همه‌ی این‌ها به زبان ساده، خلاصه و قابل فهم برای همه علاقه‌مندان — از مبتدی تا حرفه‌ای


👇👇👇👇👇


https://t.me/ai_labdon
1
🔵 عنوان مقاله
🔒 The FIPS 140-3 Go Cryptographic Module

🟢 خلاصه مقاله:

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

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


👑 @gopher_academy
3
ویندوز XP برگشت... اونم توی مرورگر شما!

اگه دلتون برای ویندوز XP تنگ شده، یه پروژه جالب به اسم Win32.run منتشر شده که محیط کامل XP رو مستقیماً تو مرورگر اجرا می‌کنه!

از صفحه بوت و فایل‌اکسپلورر گرفته تا Paint و حتی برنامه‌های قدیمی - همه‌چی شبیه نسخه واقعی کار می‌کنه!

این پروژه با استفاده از تکنولوژی‌های Svelte و Tailwind ساخته شده و یه شبیه‌ساز واقعیه، نه صرفاً یه پوسته نمایشی.

امتحانش کن! فقط سرچ کن :

Win32.run

#RoidBest
2
🔵 عنوان مقاله
Learn Go with Tests: An Online Book for Learning TDD with Go

🟢 خلاصه مقاله:

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

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


👑 @gopher_academy
3👍2
Forwarded from Software Engineer Labdon
چطور در معماری میکروسرویس، از ناهماهنگی بین دیتابیس و Message Broker جلوگیری کنیم؟
یکی از چالش‌های رایج در میکروسرویس‌ها، تضمین هماهنگی داده (Data Consistency) بین عملیات دیتابیس و ارسال پیام (Event) است.

سناریوی آشنای مشکل‌ساز:
سرویس سفارش (Order) را در نظر بگیرید:
1. سفارش جدید در دیتابیس ذخیره می‌شود. (موفق)
2. قرار است یک رویداد OrderCreated به Kafka یا RabbitMQ ارسال شود تا سرویس نوتیفیکیشن به کاربر ایمیل بزند. (ناموفق)

نتیجه: سفارش در سیستم ثبت شده، اما به دلیل قطعی موقت در Message Broker، ایمیل تأیید هرگز ارسال نمی‌شود! این یعنی یک ناهماهنگی جدی در سیستم.

راه‌حل: الگوی Outbox Pattern
الگوی Outbox یک راه‌حل زیبا و قابل اعتماد برای این مشکل است. به جای ارسال مستقیم پیام، آن را در یک جدول به نام outbox در همان دیتابیس و داخل همان تراکنش ذخیره می‌کنیم.
چرا این روش کار می‌کند؟
چون ذخیره سفارش و ذخیره پیام در جدول outbox، هر دو در یک تراکنش اتمیک (Atomic Transaction) انجام می‌شوند. این یعنی یا هر دو با هم موفق می‌شوند یا هر دو با هم شکست می‌خورند. به این ترتیب، هیچ رویدادی گم نخواهد شد!
سپس، یک پردازشگر پس‌زمینه (Message Relay) مسئول خواندن پیام‌ها از جدول outbox و ارسال مطمئن آن‌ها به Message Broker است.


<Mahdi M./>
9
شروع یک پروژه Go همیشه با یک سؤال مهم همراهه:
ساختار پروژه‌ رو چطور طراحی کنیم؟
یکی از چالش‌های اولیه در پروژه‌های گولنگ، انتخاب یک ساختار ماژولار، خوانا و مقیاس‌پذیره. الکس ادواردز در مقاله‌ی زیر، ۱۱ نکته کاربردی برای ساختاردهی پروژه‌های Go مطرح کرده که خوندنش میتونه توی این مورد بهمون کمک کنه:

https://www.alexedwards.net/blog/11-tips-for-structuring-your-go-projects


<Abbas Pourhadi/>
8
Gopher Academy
شروع یک پروژه Go همیشه با یک سؤال مهم همراهه: ساختار پروژه‌ رو چطور طراحی کنیم؟ یکی از چالش‌های اولیه در پروژه‌های گولنگ، انتخاب یک ساختار ماژولار، خوانا و مقیاس‌پذیره. الکس ادواردز در مقاله‌ی زیر، ۱۱ نکته کاربردی برای ساختاردهی پروژه‌های Go مطرح کرده که…
🧭 راهنمای ساختاربندی پروژه‌های Go

1. ساختار را بر اساس نیاز پروژه انتخاب کنید
سبک‌های ساختاری بسته به نوع پروژه (CLI، کتابخانه، وب‌اپ/میکروسرویس) متفاوت است و «یک ساختار برتر» وجود ندارد .


2. کارآمدی مهم‌تر از کمال
هدف این باشد که ساختار پروژه قابل فهم، قابل تغییر و قابل نگهداری باشد؛ نه لزوماً کامل و بی‌نقص .


3. از روی عادت‌ به ساختار زبان‌های دیگر نقل رعایت نکنید
اGo فلسفه‌ٔ ساده خود را دارد؛ تقلید ساختار Django یا Rails ممکن است منجر به سردرگمی شود .


4. هر پوشه=هر package
ایجاد فولدر فقط به دلیل نظم ظاهری اشتباه است. فقط هنگامی package بسازید که منطق مستقلی بخواهید .


5. با یک skeleton استاندارد شروع کنید

پروژه‌های کوچک: همهٔ فایل‌ها در روت

main.go, foo.go, bar.go

وقتی پکیج‌های داخلی نیاز بود:

internal/foo/foo.go
main.go

پروژه‌های بزرگ‌تر با چند executable:

cmd/app1/, cmd/app2/, internal/, go.mod, README.md


6. اجازه دهید ساختار با رشد پروژه تغییر کند
نیاز به تغییر ساختار را با توسعه واقعی پروژه شناسایی کنید؛ نه از ابتدا همه‌چیز را طراحی کنید .


7. اگر بلاتکلیف هستید، با دو فایل شروع کنید
فقط go.mod و main.go؛ باقی را با نیاز واقعی اضافه کنید .


8. موارد مرتبط را در کنار هم نگه دارید
توابع کمکی، typeها و متدها مرتبط را نزدیک هم نگه دارید تا خوانایی بیشتر شود .


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


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


11. به علائم هشدار توجه کنید

مشکل در پیدا کردن کد

تغییرات کوچک توزیع‌شده در کل پروژه

پیچیدگی در debugging

وابستگی‌های دورانی و مشکل در error handling
→ وقت بازنگری ساختار است .

جمع‌بندی

هدف: ساختاری موثر، خوانا، و قابل نگهداری.

روش:

1. شروع ساده،

2. استفاده از ساختار پیشنهادی (مثل پوشه‌های cmd/, internal/)،

3. اجازه دهید پروژه رشد کند و ساختار با آن عینا وفق پیدا کند.

هشدار: وقتی احساس کردید ساختار کارآمد نیست، فکری برای بازطراحی آن بکنید.

https://t.me/addlist/QtXiQlynEJwzODBk
👍72🍾2
🔵 عنوان مقاله
Kubernetes Best Practices 2025: Comprehensive White Paper

🟢 خلاصه مقاله:

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

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


👑 @gopher_academy
5