fa
Feedback
Syntax | سینتکس

Syntax | سینتکس

رفتن به کانال در Telegram
Buy Ad
3 184
مشترکین
-124 ساعت
-17 روز
+1930 روز
آرشیو پست ها
شما در چه حوزه‌ای فعالیت می‌کنید؟
Anonymous voting

کدام گزینه جنسیت یا هویت جنسیتی شما توصیف می‌کند؟
Anonymous voting

محدوده سنی شما کدام است؟
Anonymous voting

⚡️ درود خدمت همه‌ی دوستان سینتکسی! در چند ساعت آینده، چندین نظرسنجی در کانال منتشر می‌شود. در این نظرسنجی سوالاتی بیشتر در زمینه تجارب شما برنامه‌نویسان مطرح خواهد شد؛ بنابراین لطفا در پاسخ به سوالات صادق باشید. همچنین حتی اگر به یکی از سوالات هم پاسخ داده‌اید، باید به تمام سوالات دیگر نیز پاسخ دهید. برخی سوالات نیاز به پاسخ متنی و نوشته شده دارند بنابراین اگر چنین سوالی را دید، در کامنت‌های مربوط به آن سوال پاسخ دهید. #news @Syntax_fa

خبر دارین که میتونین با js به اس ام اس OTP دسترسی پیدا کنید دیگه ؟ اینو فکنم 6 ماه پیش بهش بر خوردم و دارم الان پستشو میسازم
خبر دارین که میتونین با js به اس ام اس OTP دسترسی پیدا کنید دیگه ؟ اینو فکنم 6 ماه پیش بهش بر خوردم و دارم الان پستشو میسازم توی خیلی از PWA هایی که توسعه دادم سعی میکردم که شبیه به native اپ ها بشن و این حس خوبی بهم میداد ولی وقتی به قسمت OTP میرسید قشنگ میخورد تو ذوقم به دنبال راهی بودم که بتونم OTP SMS رو بخونم ولی Js و Browser چنین امکانی رو بهم نمیداد اما پس از سرچ بسیار متوجه شدم که Chrome ای پی ای جدیدی ارائه داده به اسم WebOTP API /Web Auth Api که به شما تحت شرایطی اجازه میده با استفاده از js و این API به پیام OTP دسترسی پیدا کنید و کد رو بخونید و دیگه کاربر مجبور نباشه که بره پیام رو بخونه کد رو حفظ کنه و بیاد وارد کنه و شاید باورتون نشه خیلی حرکت خفن و کولی میباشد این حرکت 😁 لینک پیاده سازی و استفاده ازش: https://developer.chrome.com/docs/identity/web-apis/web-otp Source: Link #note @Syntax_fa

تحلیل BSOD پتچ امنیتی CrowdStrike مشکل اصلی که در نرم‌افزار CrowdStrike رخ داد، به دلیل دسترسی نادرست به حافظه از طریق یک اشاره‌گر تهی (NULL pointer) در زبان برنامه‌نویسی C++ بود. حافظه در کامپیوتر به صورت یک آرایه بزرگ از اعداد سازماندهی شده است. اگر برنامه‌ای تلاش کند به یک آدرس حافظه نامعتبر دسترسی پیدا کند، سیستم‌عامل بلافاصله برنامه را متوقف می‌کند و این موضوع منجر به خرابی سیستم می‌شود. در این حالت خاص، برنامه سعی کرد به آدرس حافظه 0x9c (که معادل 156 در مبنای 10 است) دسترسی پیدا کند. این آدرس حافظه نامعتبر است و دسترسی به آن باعث می‌شود که سیستم‌عامل برنامه را متوقف کند. این مسئله به دلیل عدم بررسی اشاره‌گر تهی توسط برنامه‌نویس اتفاق افتاد. برای مثال:
struct Obj {
    int a;
    int b;
};

Obj* obj = NULL;

print(obj->a);
در این مثال، اشاره‌گر obj تهی (NULL) است. هنگامی که برنامه سعی می‌کند به عضو a از شیء obj دسترسی پیدا کند، به دلیل تهی بودن اشاره‌گر، به یک آدرس نامعتبر دسترسی پیدا می‌کند و باعث خرابی برنامه می‌شود. این مشکل به‌خصوص خطرناک بود زیرا در یک درایور سیستمی رخ داد. درایورهای سیستمی دسترسی‌های سطح بالایی به منابع سیستم دارند و خرابی در این درایورها می‌تواند منجر به توقف کل سیستم‌عامل و نمایش صفحه آبی مرگ (BSOD) شود. برای جلوگیری از چنین مشکلاتی، برنامه‌نویسان باید همیشه قبل از دسترسی به اشاره‌گرها، آن‌ها را بررسی کنند. استفاده از زبان‌های برنامه‌نویسی مدرن مانند Rust که از دسترسی‌های نادرست به حافظه جلوگیری می‌کنند، می‌تواند به کاهش این خطرات کمک کند. Source: @GoInsights #note @Syntax_fa

بحث اینروزا بین لینوکسیا و ویندوزیا #fun @Syntax_fa
بحث اینروزا بین لینوکسیا و ویندوزیا #fun @Syntax_fa

👑 این فرصت طلایی رو برای برنامه نویس خفن شدن توی بک اند رو از دست ندید👇👇🔥 🔹آموزش نکات مهم و کلیدی در زبان برنامه نویسی گولنگ 🔹 نکات مهم طلایی در مصاحبه فنی و لایو کد ها 🔹مقالات بروز در زمینه گولنگ 🔹مقالات جدید در مورد اصول مهندسی نرم افزار , سیستم دیزاین , انواع دیتابیس ها و ابزارهای رایج برای بک اند کارها در کانال گوفر آکادمی👇👇 ➖➖➖➖➖➖➖➖ 🕊 @gopher_academy

وقتی حالم خوب شد، میخوام یه برنامه نویس PHP بشم #fun @Syntax_fa
وقتی حالم خوب شد، میخوام یه برنامه نویس PHP بشم #fun @Syntax_fa

البته یه نکته رو اضافه کنم: توی گولنگ ما میتونیم از atomic operation استفاده کنیم. یک تایپ integer بسازیم که تو سطح پایین(سی پی یو) تضمین میکنه که race condition رخ نمیده الان مقاله مرتبط باهاشو میفرستم

تفاوتهای Go و Rust در مدیریت Race Condition فرض کنید برنامه‌ای می نویسید که چندین ترد یا پروسس به طور همزمان در حال اجرا هستن
+1
تفاوتهای Go و Rust در مدیریت Race Condition فرض کنید برنامه‌ای می نویسید که چندین ترد یا پروسس به طور همزمان در حال اجرا هستند. این ترد ها ممکن است به داده های مشترکی دسترسی داشته باشند و آنها را بروزرسانی کنند. حال اگر این دسترسی و به‌روزرسانی بدون کنترل و نظم انجام شود، به طوری که ترتیب دقیق دسترسی و به‌روزرسانی داده ها توسط ترد ها مشخص نباشد، شرایط رقابتی (Race Condition) رخ می دهد. در این مثال، متغیر counter به عنوان یک شمارنده استفاده می شود. 10 تابع به طور همزمان مقدار counter را با استفاده از تابع increment افزایش می دهند. در Rust با وجود اینکه ما با چندین ترد به شمارنده دسترسی داریم، سیستم مالکیت Rust تضمین میکند که فقط یک ترد میتواند همزمان شمارنده را به‌صورت تغییرپذیر یا میوتیبل در اختیار بگیرد و با قطعیت میتوان گفت که عدد ۱۰ چاپ خواهد شد. در Go با استفاده از یک اشاره گر مستقیماً به متغیر شمارنده دسترسی داریم. این یک Race Condition بالقوه ایجاد می کند زیرا چندین گوروتین می توانند همزمان آن را تغییر دهند. مقدار نهایی شمارنده بسته به اینکه کدام گوروتین در مسابقه برای دسترسی به آن "برنده" شود، می تواند غیرقابل پیش بینی باشد. ** البته که در Go هم با مکانیزمهای میشه جلوش رو گرفت ولی بهرحال نبود race condition در زبان راست چیز باحالیه https://www.linkedin.com/posts/hemanhosseinpana_rust-go-golang-activity-7220074271119736833-26sk?utm_source=share&utm_medium=member_android

لیستی از چند تا کانال خوب هم حوزه با سینتکس https://t.me/addlist/z-0bTITt5CIwMGE0

تستر اول: من توی دو ساعت پنج تا باگ پیدا کردم 😃 برنامه نویسا: چی؟ به چه جراتی باگ پیدا کردی؟😠 میزنیم دهنشو سرویس میکنیم 🙁�
تستر اول: من توی دو ساعت پنج تا باگ پیدا کردم 😃 برنامه نویسا: چی؟ به چه جراتی باگ پیدا کردی؟😠 میزنیم دهنشو سرویس میکنیم 🙁😟 تستر دوم و QA: منو تو نفر بعدی هستیم تو پونزده تا باگ پیدا کردی و من بیستو پنج تااا 😥😥😔 #fun @Syntax_fa

یک تمرین کاربردی برای کار با فایل و اپلیکیشن های تحت خط فرمان سیستم مدیریت کتابخانه شخصی امکانات پروژه: افزودن کتاب جدید: کاربران می‌توانند کتاب‌های جدیدی با عنوان، نویسنده، سال انتشار و ژانر اضافه کنند. اطلاعات کتاب‌ها فقط در فایل متنی (txt یا csv و ..) ذخیره می‌شود. مشاهده لیست کتاب‌ها: کاربران می‌توانند لیستی از همه کتاب‌های موجود را مشاهده کنند. نمایش اطلاعات کتاب‌ها شامل عنوان، نویسنده، سال انتشار و ژانر. ویرایش اطلاعات کتاب‌ها: کاربران می‌توانند اطلاعات کتاب‌های موجود را ویرایش کنند. انتخاب کتاب بر اساس شناسه یا عنوان و ویرایش جزئیات مانند عنوان، نویسنده، سال انتشار و ژانر. حذف کتاب‌ها: کاربران می‌توانند کتاب‌ها را از سیستم حذف کنند. انتخاب کتاب بر اساس شناسه یا عنوان و حذف آن از فایل ذخیره‌سازی. جستجوی کتاب‌ها: امکان جستجوی کتاب‌ها بر اساس عنوان، نویسنده، سال انتشار یا ژانر. نمایش نتایج جستجو به کاربر. علامت‌گذاری کتاب‌ها به عنوان خوانده شده/نشده: کاربران می‌توانند وضعیت کتاب‌ها را به عنوان خوانده شده یا نشده علامت‌گذاری کنند. امکان فیلتر کردن کتاب‌ها بر اساس وضعیت خوانده شده یا نشده. نیازمندی‌های پروژه: ساختار فایل: استفاده فقط از فایل txt و csv و ... برای ذخیره اطلاعات کتاب‌ها. هر کتاب شامل فیلدهای عنوان، نویسنده، سال انتشار، ژانر و وضعیت خوانده شده. رابط کاربری CLI: پیاده‌سازی دستورات مختلف برای افزودن، مشاهده، ویرایش، حذف و جستجوی کتاب‌ها. ارائه منوی انتخاب به کاربر برای اجرای دستورات. مدیریت ورودی و خروجی فایل: خواندن و نوشتن اطلاعات کتاب‌ها به/از فایل. اطمینان از حفظ اطلاعات موجود در فایل و جلوگیری از از دست رفتن داده‌ها. این پروژه به کاربران اجازه می‌دهد تا کتاب‌های خود را به راحتی مدیریت کنند و یک سیستم کامل برای مدیریت کتابخانه شخصی خود داشته باشند. (اگه نوشتید به اشتراک بذارید تا با هم بررسیش کنیم و اشکالاتش رو رفع کنیم ) #exercise @Syntax_fa

پیشگیری بهتر از درمان است #fun @Syntax_fa
پیشگیری بهتر از درمان است #fun @Syntax_fa

EOF ارور EOF یا "End of File" به معنی پایان فایل است و یکی از ارورهایی است که هنگام خواندن فایل‌ها در برنامه‌نویسی ممکن است با آن مواجه شوید. این ارور نشان‌دهنده این است که عملیات خواندن به انتهای فایل رسیده و دیگر داده‌ای برای خواندن وجود ندارد. کاربردها و اهمیت EOF در برنامه‌نویسی به چندین مورد مختلف برمی‌گردد: کاربردهای EOF 1. پایان‌دادن به خواندن فایل:     - EOF به برنامه‌نویس اطلاع می‌دهد که دیگر داده‌ای برای خواندن در فایل موجود نیست. این به ویژه زمانی مفید است که شما نمی‌دانید طول فایل چقدر است و می‌خواهید کل محتوا را پردازش کنید. 2. کنترل حلقه‌های خواندن:     - هنگام خواندن داده‌ها از فایل با استفاده از حلقه‌ها، EOF به شما کمک می‌کند تا بدانید چه زمانی باید از حلقه خارج شوید. این امر باعث جلوگیری از تلاش برای خواندن داده‌های غیرموجود و در نتیجه جلوگیری از خطاهای برنامه می‌شود. 3. ارتباط با منابع خارجی:     - در ارتباط با منابع خارجی مانند شبکه‌ها یا پایگاه‌های داده، EOF می‌تواند نشان‌دهنده پایان جریان داده باشد. به عنوان مثال، وقتی اطلاعات از یک API دریافت می‌کنید، EOF می‌تواند نشان دهد که تمام داده‌ها دریافت شده‌اند. 4. مدیریت داده‌های ورودی و خروجی:     - در برنامه‌های تعاملی که ورودی از کاربر دریافت می‌کنند، EOF می‌تواند نشان‌دهنده پایان ورودی باشد. این امر به ویژه در برنامه‌های خط فرمان و اسکریپت‌های پایپ‌لاین مفید است. مثال‌هایی از کاربرد EOF در زبان‌های مختلف مثال در زبان Go در زبان گو، EOF هنگام خواندن فایل‌ها استفاده می‌شود تا بدانیم چه زمانی به انتهای فایل رسیده‌ایم.
package main

import (
    "bufio"
    "fmt"
    "os"
    "io"
)

func main() {
    file, err := os.Open("filename.txt")
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    defer func() {
        if err := file.Close(); err != nil 
       {
            fmt.Errorf(...)
       } 
    }
    reader := bufio.NewReader(file)     for {         line, err := reader.ReadString('\n')         if err != nil {             if err == io.EOF {                 // اگر به انتهای فایل رسیدیم، از حلقه خارج شویم                 break             }             fmt.Println("Error reading file:", err)             return         }         fmt.Print(line)     } } مثال در زبان Python در زبان Python، هنگامی که به انتهای فایل می‌رسیم، تابع read() یا readline() یک رشته خالی برمی‌گرداند که نشان‌دهنده EOF است.
with open('filename.txt', 'r') as file:
    while True:
        line = file.readline()
        if not line:
            break
        print(line, end='')
#EOF @Syntax_fa

سوال: تو پایتون چطور از string builder استفاده کنیم؟ جواب: تو سایت real python یه مقاله خوب راجبش هست که. یکی از مثال هایی که زده:
from io import StringIO

sentence = StringIO()
while True:
    word = input("Enter a word (or './!/?' to end the sentence): ")
    if word in ".!?":
        sentence.write(word)
        break
    if sentence.tell() == 0:
        sentence.write(word)
    else:
        sentence.write(" " + word)

print("The concatenated sentence is:", sentence.getvalue())
لینک: https://realpython.com/python-string-concatenation/ #python #string_builder @Syntax_fa

https://t.me/boost/Syntax_fa جای بوس کردن بقیه، کانال سینتکسو بوس کنید روزی یه استوری زیبا میذارم براتون

الگوریتم Luhn تاحالا شده که از کاربر شماره کارت و ... رو بگیرید اما نمیدونید چطور میشه در سطح برنامتون اعتبارسنجیش کنید!؟ این پست قراره درباره الگوریتم luhn صحبت کنیم و آخر کار تو کد یه مثال از نحوه اعتبار سنجی شماره حساب بانکی با الگوریتم luhn رو براتون میزنم. خب قسمت توضیح چت جی بی تی عزیز زحمتو کشیده🤌😘: الگوریتم Luhn که به عنوان "فرمول Luhn" نیز شناخته می‌شود، یک الگوریتم ساده برای اعتبارسنجی شماره‌های شناسایی است. این الگوریتم توسط Hans Peter Luhn، محقق IBM، در سال 1954 اختراع شده است. الگوریتم Luhn به طور گسترده در اعتبارسنجی شماره‌های کارت اعتباری، شماره‌های شناسایی ملی، و شماره‌های شناسایی دیگر استفاده می‌شود. ### نحوه عملکرد الگوریتم Luhn 1. ورودی: - یک رشته از ارقام که باید اعتبارسنجی شود. این رشته معمولاً شامل شماره کارت اعتباری یا شماره شناسایی است. 2. مراحل: - از سمت راست به چپ شروع کنید و هر عدد دوم را دو برابر کنید. اگر دو برابر کردن یک عدد منجر به یک عدد دو رقمی شد (یعنی بزرگتر یا مساوی 10)، جمع ارقام آن عدد را به دست آورید (برای مثال، 18 تبدیل به 1 + 8 = 9 می‌شود). خراب کردی هوش مصنوعی جان😒😒 بذار با یه روش ساده توضیح بدم: از عدد سمت چپ شروع میکنیم. یکیو ضربدر دو میکنیم. بعدی رو ضربدر یک و حاصل رو جمع میکنیم. اگه موقعی که داریم ضربدر دو میکنیم، عدد بزرگ تر از 9 شد، 9 تا ازش کم میکنیم. مثلا عدد ما 7 هستش ضربدر دو میشه 14 چون از 9 بزرگ تر شده منهای 9 میکنیم پس میشه 5. در نهایت حاصل جمعی که بدست آوردیم باید باقی موندش به پیمانه که 10 هستش صفر بشه. مثال فرض کنید شماره‌ کارت این شخص عزیز که نمیدونیم کی هستش رو میخوایم اعتبارسنجی کنیم. "6037697646845005" است: 1. از چپ به راست شروع می کنیم اولی ضربدر دو، دومی ضربدر یک، سومی ضربدر دو و ... اگه هم بزرگ تر از 9 شده منهای 9 میکنیم:
result =  3 + 0 + 6 + 7 + 3 + 9 + 5 + 6 + 8 + 6 + 7 + 4 + 1 + 0 + 0 + 5
حاصل جمعشون مساوی میشه با 70 پس شماره کارت معتبر هستش 🍸 خب هوش مصنوعی ادامه توضیحاتو بده: کاربردهای الگوریتم Luhn 1. اعتبارسنجی شماره‌های کارت اعتباری: - تمامی کارت‌های اعتباری صادر شده توسط شرکت‌های مالی معتبر از الگوریتم Luhn برای اعتبارسنجی شماره کارت‌ها استفاده می‌کنند. 2. شماره‌های شناسایی ملی: - برخی کشورها از الگوریتم Luhn برای اعتبارسنجی شماره‌های شناسایی ملی استفاده می‌کنند. 3. شماره‌های شناسایی محصول: - برخی از کدهای محصول و شماره‌های سریال از این الگوریتم برای اطمینان از صحت داده‌های ورودی استفاده می‌کنند. 4. سیستم‌های مالی و بانکی: - در بسیاری از فرآیندهای پرداخت و انتقال وجه، الگوریتم Luhn برای بررسی صحت شماره‌های حساب و کارت‌ها استفاده می‌شود. ### مزایا و محدودیت‌ها مزایا: - سادگی و کارایی: الگوریتم بسیار ساده است و به راحتی پیاده‌سازی می‌شود. - جلوگیری از خطاهای تایپی: بیشتر خطاهای تایپی در وارد کردن شماره‌های شناسایی را تشخیص می‌دهد. محدودیت‌ها: - امنیت: الگوریتم Luhn برای امنیت طراحی نشده است و نمی‌تواند از جعل شماره‌ها جلوگیری کند. - تشخیص محدود: تنها قادر به تشخیص خطاهای ساده است و نمی‌تواند همه انواع خطاها را شناسایی کند. الگوریتم Luhn به دلیل سادگی و کارایی بالا، به طور گسترده در سیستم‌های مختلف برای اعتبارسنجی شماره‌های شناسایی مورد استفاده قرار می‌گیرد. بریم سراغ پیاده سازیش تو گولنگ:
package main

import (
  "fmt"
  "strconv"
)

func main() {
  fmt.Println(Valid("6037697646845005"))
}

func Valid(cardNumber string) bool {
  var sum int

  for i := 0; i < len(cardNumber); i++ {
    intNum, _ := strconv.Atoi(string(cardNumber[i]))

    if (i+1)%2 != 0 {
      if intNum*2 > 9 {
        sum += (intNum * 2) - 9
      } else {
        sum += intNum * 2
      }
    } else {
      sum += intNum
    }
  }

  return sum%10 == 0
}
#luhn @Syntax_Fa