| ᴅᴇᴠʟᴏꜱꜱᴏ |
650 subscribers
197 photos
3 videos
12 files
11 links
DevLosso | دِولوسو

دنیای فناوری، برنامه‌نویسی و ساختن.
آموزش، پروژه، تجربه و اخبار فناوری.

از ایده تا محصول.

همکاری و مشاوره:
@DevLossoAA

صفحه اینستاگرام:
instagram.com/devlosso
Download Telegram
بریم سراغ جلسه هشتم با زبان C

امروز می‌خواهیم درباره یکی از مفاهیم مهم در برنامه‌نویسی صحبت کنیم: محدوده متغیرها (Variable Scope).
این مفهوم به ما کمک می‌کنه که بفهمیم که متغیرها چه زمانی و در کجا قابل دسترسی هستن.


▎1. تعریف محدوده متغیرها

محدوده متغیرها به محدوده‌ای اشاره می‌کنه که در آن یک متغیر قابل دسترسیه. این محدوده می‌تونه به صورت محلی (local) یا سراسری (global) باشه.

▎2. متغیرهای محلی

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

مثال:
#include <stdio.h>

void myFunction() {
int localVar = 5; // متغیر محلی
printf("Local Variable: %d\n", localVar);
}

int main() {
myFunction();
// printf("%d\n", localVar); // این خط خطا می‌ده چون localVar در اینجا قابل دسترسی نیست
return 0;
}


اینجا، localVar فقط در تابع myFunction قابل دسترسیه و در main نمی‌تونیم بهش دسترسی پیدا کنیم.

▎3. متغیرهای سراسری

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

مثال:
#include <stdio.h>

int globalVar = 10; // متغیر سراسری

void myFunction() {
printf("Global Variable: %d\n", globalVar);
}

int main() {
printf("Global Variable in main: %d\n", globalVar);
myFunction();
return 0;
}


در اینجا، globalVar در هر دو تابع main و myFunction قابل دسترسیه.


▎4. سایه‌زنی (Shadowing)

گاهی اوقات ممکنه یک متغیر محلی نام مشابهی با یک متغیر سراسری داشته باشه. در این صورت، متغیر محلی "سایه" متغیر سراسری را می‌زنه و فقط در محدوده خود قابل دسترسیه.
❌ ترجیحا این کارو نکنین!
مثال:
#include <stdio.h>

int globalVar = 20; // متغیر سراسری

void myFunction() {
int globalVar = 10; // متغیر محلی با نام مشابه
printf("Local Variable: %d\n", globalVar); // به متغیر محلی اشاره داره
}

int main() {
printf("Global Variable: %d\n", globalVar); // به متغیر سراسری اشاره داره
myFunction();
return 0;
}

اینجا، در myFunction وقتی به globalVar اشاره می‌کنیم، به متغیر محلی اشاره داریم نه به سراسری.


▎5. نکته مهم 🔍

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

▎6. نکته مهم‌تر 🔍
همیشه باید دقت کنیم که کجا و چطوری از متغیرها استفاده می‌کنیم.



اگر سوالی دارید یا چیزی براتون مبهمه، حتماً تو قسمت دیدگاه‌ها بگید!
🔥54👏1👌1
| ᴅᴇᴠʟᴏꜱꜱᴏ |
HTTP_DevLosso_The_Definitive_Guide_Brian_Totty_David_Gourley_OReilly.pdf
💡بخش Gateway🎀

تا حالا به این فکر کردید که چطور ی مرورگر وب (که با زبان پروتکل HTTP کار میکنه) میتونه به اطلاعات داخل ی سرور قدیمی که با پروتکل FTP مدیریت میشه دسترسی پیدا کنه؟ اینجاست که با Gateway اشنا میشید

در معماری شبکه Gateway ی سرور ویژه هست که به عنوان واسطه بین بقیه سرورا عمل میکنه وظیفه اصلیش تبدیل ترافیک ی پروتکل به پروتکلی دیگه هست

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

فرض کنید عکس یا فایلی روی یک سرور FTP قرار داره اما شما میخواید اونو از طریق مرورگر وب (HTTP) دانلود کنید پس:

⬅️درخواست کلاینت⬅️ترجمه پروتکل⬅️دریافت و بسته‌بندی⬅️تحویل نهایی

⚡️خلاصه ای از صفحه 18
Please open Telegram to view this post
VIEW IN TELEGRAM
😍64👌1🏆1
ایکس‌باکس🎮 در آستانه‌ی دومین موج بزرگ تعدیل نیرو✍️

🌸رسانه The Information گزارش می‌دهد که ایکس‌باکس، زیرمجموعه‌ی مایکروسافت، برنامه دارد در جریان هفته‌ی جاری صدها کارمند خود را تعدیل کند. این اقدام، دومین دور بزرگ کاهش نیرو در سال جاری میلادی برای این برند بازی‌سازی محسوب می‌شود. براساس اطلاعات یک منبع آگاه، ایکس‌باکس همچنین قصد دارد چند استودیوی بازی‌سازی خود را با یکدیگر ادغام کند تا تعداد آن‌ها را کاهش📉 دهد.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3👀2😨2
این کوییز و دوست داشتید تو کامنتا جواب بدید رفقا!

int a[2][3] = {0};
int *p = &a[0][0];
int *q = &a[1][0];

printf("%td\n", q - p);

در استاندارد C17 کدوم گزینه درسته؟

A) عدد 3 چاپ میشه
B) عدد 6 چاپ میشه
C) کد باید خطای کامپایل بده
D) رفتار تعریف‌نشده اس
84⚡1🔥1
🟢کیا تو این کانال برنامه نویسن❓
Anonymous Quiz
76%
برنامه نویس هستم✅
24%
برنامه نویس نیستم❌
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64👌2🥰11
کویز:
خروجی کد زیر چیست؟
int x = 5; int *p = &x; *p = 8; printf("%d", x);
Anonymous Quiz
16%
A) 5
28%
B) 8
31%
C) آدرس x
24%
D) خطای کامپایل
5👌3⚡1🔥1
این کویز رو دلتون خواست توی کامنت ها جواب بدید:


با فرض استاندارد C17، در کد زیر کدام گزینه درست است؟

int a[2][3] = {
{1, 2, 3},
{4, 5, 6}
};

int (*p)[3] = a;
int *q = &a[0][0];

/* I */ *(p[1] + 2)
/* II */ (p + 2) - p
/* III */ *(q + 3)
/* IV */ &a[1][0] - &a[0][0]

کدام گزینه به‌درستی مشخص می‌کند کدام عبارت‌ها رفتار تعریف‌شده دارند و مقدارشان چیست؟

A:
فقط I و II رفتار تعریف‌شده دارند؛ مقدارشان به‌ترتیب 6 و 2 است.

B:
گزینه های I، II و III رفتار تعریف‌شده دارند؛ مقدار III برابر 4 است.

C:
گزینه های I و IV رفتار تعریف‌شده دارند؛ مقدار IV برابر 3 است.

D:
هر چهار عبارت رفتار تعریف‌شده دارند؛ مقدارهایشان به‌ترتیب 6، 2، 4 و 3 هستند.


سطح کویز: دشوار.
🔥53🍓21
#درس_عبرت😂

وقتی یه عدد، موشک رو ترکوند 🚀

سال ۱۹۹۶، موشک آریان ۵ تازه ۳۷ ثانیه از پرتابش گذشته بود که از مسیرش پرت شد و منفجر شد. مقصر؟
یه عدد که زیادی گنده بود و توی جاش جا نمی‌شد! نرم‌افزار نتونست باهاش کنار بیاد، سیستم پشتیبان هم همون برنامه رو داشت و اونم کمکی نکرد.
خلاصه، برنامه‌ای که یه‌جا درست کار می‌کرد، توی شرایط جدید گند زد.

نرم‌افزار رو نباید فقط چون یه بار جواب داده، همه‌جا بی‌دردسر فرض کرد. باید حواسمون به شرایط و اندازهٔ عددها هم باشه.


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

پ.ن: فقط کاش بفهمم بانک مرکزی قیمت دلار و داخل چه متغیری نگه می‌داره که متغیر نشت نمیکنه :)))))
🤣6🔥3👌211
اینم از جلسه نهم با زبان C 😎

• این قسمت می‌خوایم با یکی از قابلیت‌های باحال و کاربردی زبان C آشنا بشیم: ساختارها یا همون struct.

• ساختارها بهمون کمک می‌کنن چندتا داده با نوع‌های مختلف رو کنار هم نگه داریم. مثلاً برای ثبت اطلاعات یک دانشجو، می‌تونیم اسم، شمارهٔ دانشجویی و معدلش رو توی یک ساختار قرار بدیم.



▎ 1. سینتکس تعریف ساختار

ساختار رو به این شکل تعریف می‌کنیم:

struct StructureName
{
data_type member1;
data_type member2;
};


• struct
مشخص می‌کنه که داریم یک ساختار تعریف می‌کنیم.

• StructureName
اسم ساختاره.

• member
ها هم داده‌هایی هستن که داخل ساختار نگه می‌داریم.


▎ 2. یک مثال ساده

بیایین یک ساختار برای اطلاعات دانشجو بسازیم:

#include <stdio.h>

struct Student
{
char name[50];
int studentNumber;
float average;
};

int main()
{
struct Student student1 = {"Sara", 12345, 18.75};

printf("Name: %s\n", student1.name);
printf("Student number: %d\n", student1.studentNumber);
printf("Average: %.2f\n", student1.average);

return 0;
}


• اینجا Student اسم ساختاره و name، studentNumber و average عضوهای اون هستن.


• با نوشتن struct Student student1 یک متغیر از نوع ساختار Student می‌سازیم.



▎ 3. دسترسی به عضوهای ساختار

برای دسترسی به عضوهای یک متغیر ساختاری، از نقطه (.) استفاده می‌کنیم:

student1.studentNumber = 54321;
student1.average = 19.25;


• مثلاً student1.average یعنی عضو average از متغیر student1.



▎ 4. استفاده از ساختار به‌عنوان ورودی تابع

ساختارها رو می‌تونیم به تابع هم بفرستیم:

#include <stdio.h>

struct Student
{
char name[50];
int studentNumber;
float average;
};

void printStudent(struct Student student)
{
printf("Name: %s\n", student.name);
printf("Average: %.2f\n", student.average);
}

int main()
{
struct Student student1 = {"Sara", 12345, 18.75};

printStudent(student1);

return 0;
}


• توی این مثال، تابع printStudent یک متغیر از نوع struct Student می‌گیره و اطلاعاتش رو چاپ می‌کنه.


▎ نکته مهم 🔍

• یادتون باشه بعد از آکولاد پایانیِ تعریف ساختار، باید ; بذارین.


▎ نکته ماژولار 🔧

• ساختارها کمک می‌کنن داده‌های مرتبط رو مرتب کنار هم نگه داریم. مثلاً اطلاعات یک دانشجو، کتاب یا محصول رو می‌تونیم داخل یک ساختار قرار بدیم و راحت‌تر باهاشون کار کنیم.


سوالی بود تو قسمت دیدگاه‌ها بگید!
73🔥2👌1
🏅تست نفوذ چیه؟

🔅تست نفوذ رویه ای هست که در اون میزان امنیت اطلاعات ی سازمان مورد ارزیابی قرار میگیره ، ی تیم مشخص با استفاده از تکنیک های هک ی اتک واقعیو شبیه سازی میکنن تا به این وسیله سطح امنیت ی شبکه یا سیستمو مشخص کنن ✅️
تست نفوذ کمک میکنه که ی سازمان ضعف های امنیتی و ساختار های اطلاعاتیشو بهتر بشناسه و دنبال فیکس کردنش باشه🥷
🔥6❤‍🔥2👏2⚡1👌1
یه نکته‌ی کوچیک برای وقتایی که باگ می‌خوری 🙃

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

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


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


خلاصه باگ رو تا جای ممکن کوچک و قابل‌تکرار کن؛ پیدا کردنش خیلی راحت‌تر می‌شه 😎
👍5⚡3🔥2👌2
#درس_عبرت😂

وقتی واحد اندازه‌گیری با هم قهر می‌کنه 🛰️

سال ۱۹۹۹، فضاپیمای «مدارگرد مریخ» ناسا داشت می‌رفت که وارد مدار مریخ بشه؛ ولی به‌جای اینکه دور مریخ بچرخه، زیادی نزدیک شد و از بین رفت.


دلیلش چی بود حالا؟ 😁

یه بخش از نرم‌افزار نیرو رو با واحد پوند-ثانیه حساب می‌کرد، یه بخش دیگه انتظار داشت مقدارها نیوتن-ثانیه باشن. عددها درست بودن؛ فقط زبون همدیگه رو نمی‌فهمیدن! 🚀


اینم از اون باگ‌هاییه که میگه «روی سیستم من که کار می‌کرد» هیچ‌وقت تضمین نیست؛ مخصوصاً وقتی چند تا سیستم قراره با هم حرف بزنن.


پس حواست باشه رفیق:
کد خوب فقط کدی نیست که یه خروجی بده؛ باید قراردادهاش روشن باشه، ورودی‌هاش بررسی بشن و معلوم باشه هر عدد دقیقاً با چه واحد و معنایی جابه‌جا می‌شه. ✅


پ.ن: امیدوارم قیمت دلار حداقل واحد اندازه‌گیری مشخصی داشته باشه؛ چون هر روز انگار با یه سیستم جدید deploy می‌شه :):
🔥5⚡2👏2🤣2👍1🏆1
| ᴅᴇᴠʟᴏꜱꜱᴏ |
HTTP_DevLosso_The_Definitive_Guide_Brian_Totty_David_Gourley_OReilly.pdf
بریم برا یادگیری🔥 DNS , Host و Port چه ربطی به هم دارن؟

وقتی ادرس یه سایت رو توی مرورگر میزنیم، مرورگر باید بفهمه به کدوم سرور و سرویس باید وصل بشه

حالا dns اسم دامنه رو به ip تبدیل میکنه
و host همون میزبان یا سروریه که منبع موردنظر روش قرار داره و ip هم آدرس مقصد رو توی شبکه مشخص میکنه و پورت مشخص میکنه به کدوم سرویس روی سرور وصل بشیم همچنین پروتکل http یا https ارتباط بین مرورگر و وب‌سرور رو برقرار میکنن

به طور خلاصه اول dns آدرس ip رو پیدا میکنه بعد مرورگر به اون ip و پورت 443 وصل میشه و درخواست رو میفرسته. سرور هم پاسخ رو برمیگردونه

🔅صفحه 27 کتاب http
🔥4👍2🥰1👏1
فکر کنم دیگه بحث C به جاهای خوبی که میخواستم رسیده مگه نه؟


کلیت ماجرا همینه رفقا، C اصولا زبان کوچکیه و تمام قدرتش توی دسترسی به حافظه خلاصه میشه.


چیزی‌ که میخوام بهتون به عنوان یه برنامه نویس C بگم اینه که هیچ وقت کل تمرکزتون رو روی C نزارین!

آقا دو الی سه ماه کار کن، درکی که باید،‌ رو پیدا کن و بعدش برو سراغ مسیر خودت!

اینطوری میتونی به خودت بگی برنامه نویس؛
راستی به حرفای زرد بقیه ام توجه نکن.



سوالی داری مثل همیشه تو قسمت دیدگاه ها بگو☺️
جواب نمیدم😁
🔥5👏2🥰1👌1
🌐بررسی چند روش دسترسی به سرور💻

بعضی از سرورا برای دسترسی به منابعشون نیازمند یوزرنیم و پسوردن حالا چند روشو بررسی میکنیم🔥

💥مثال اول: هیچ مولفه‌ ی کاربر یا رمز عبوری نداره فقط طرح میزبان و مسیر استاندارد ما. اگر برنامه‌ ای از طرح URL ای استفاده کنه که به نام کاربری و رمز عبور نیاز دارده مثل FTP، معمولا در صورت عدم ارائه، نام کاربری و رمز عبور پیش‌فرض رو وارد میکنه برای مثال اگر ی URL FTP را بدون مشخص کردن نام کاربری و رمز عبور به مرورگرتون بدید برای نام کاربری شما anonymous را وارد کرده و رمز عبور پیش‌ فرض رو ارسال میکنه (اینترنت اکسپلورر «IEUser» ارسال میکنه در حالی که نت‌ اسکیپ نویگیتور «mozilla» رو ارسال میکنه)

💥مثال دوم: نام کاربریو نشون میده که به عنوان ناشناس مشخص شده این نام کاربری همراه با مولفه میزبان، درست مثل ی آدرس ایمیل به نظر میرسه. کاراکتر @ مولفه‌ های کاربر و رمز عبورو از بقیه URL جدا میکنخ

💥مثال سوم: هم نام کاربری ناشناس و هم رمز عبور my_passwd مشخص شدن و با کاراکتر : از هم جدا شدن

🏅صفحه 27 کتاب
🔥5⚡2👌2
کاهش نویز پیام‌ های صوتی در تلگرام

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

📝 نحوه فعال‌سازی:
تلگرام اندروید رو به نسخه 13.0.3 یا نسخه‌ای که این قابلیتو داره به‌روزرسانی کنید.

وارد تنظیمات تلگرام بشید و دو بار روی شماره نسخه در پایین صفحه ضربه بزنید تا منوی مخفی باز شه.

گزینه Show Experimental Settings رو فعال کنید.

وارد بخش Voice Messages بشید و گزینه Use new recorder رو فعال کنید

در بخش Noise suppression، گزینه RNNoise انتخاب کنید.
حالا میتونید پیامای صوتیتونو با کاهش نویز پس‌ زمینه ضبط کنید.

این قابلیت آزمایشیه و ممکنه تو همه نسخه‌ ها یا گوشیا در دسترس نباشه. همچنین کاهش نویز به معنی حذف کامل صداهای مزاحم نیست.
🔥5👏2⚡1👌1
داشتم فکر میکردم دیدم هر نفر یدونه از دوستاشو بیاره تو چنل چه پیشرفت خوبی میکنیم😅🔥
نظرتون چیه دست به کار شیم😉
👌8🤣4👍3🔥1🌚1