ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

| ᴅᴇᴠʟᴏꜱꜱᴏ |

| ᴅᴇᴠʟᴏꜱꜱᴏ |

الذهاب إلى القناة على Telegram

DevLosso | دِولوسو دنیای فناوری، برنامه‌نویسی و ساختن. آموزش، پروژه، تجربه و اخبار فناوری. از ایده تا محصول. همکاری و مشاوره: @DevLossoAA صفحه اینستاگرام: instagram.com/devlosso

إظهار المزيد
648
المشتركون
لا توجد بيانات24 ساعات
+17 أيام
+230 أيام
أرشيف المشاركات
خب وقتشه بریم سراغ جلسه چهارم با زبان C
توی این قسمت میخوایم با یه چیز پایه اما خیلی مهم آشنایی پیدا کنیم! اونم دستورات شرطی یا همون Conditional Statements
• مفهوم شرط گذاری که کاملا واضحه ما از دستورات شرطی برای این استفاده میکنیم که برنامه یه سری مسیر های اجرایی ای داشته باشه؛ مثلا اگر فلان اتفاق افتاد این جور پیش بریم، اگر یه اتفاق دیگه افتاد یه جور دیگه!
 به طور کلی ما دومدل حالت برای ایجاد شرط داریم:
• if • switch
1. سینتکس (نحو) دستور if
if (condition)
{
       // code
}
کلمه کلیدی else اینجا استفاده داره مثلا:
if (condition)
{
       // code
}
else
{
       // code
}
2. سینتکس (نحو) دستور switch
این یکم فرق داره و یه متغیر رو میگیره و مقدارش رو بررسی می‌کنه!
int ch = 10;

switch(ch)
{
     case 2:
        printf("ch is 2");
     break;

     default:
       printf("ch is not 2");
     break;
}
• یعنی یه متغیر رو میگیره و مقدارش رو با case هایی که تعریف شده مقایسه می‌کنه! • اینجا کلمه کلیدی default معادل else تو if حساب میشه!
 حواست باشه ‼️
• اگر بعد از هر case از دستور break استفاده نکنی برنامه میزنه تو case های بعدی، البته گاها بعضی برنامه نویسا بسته به موقعیت، عمدا اینکارو میکنن!
نکته کلاسیک 🏛
• کلا switch انواع int و char رو ساپورت میکنه!
نکته جالب 🎨
پایتون جدیدا تو آپدیتاش همچین چیزی رو خودش اضافه کرده! این قابلیت اسمش match-case عه.
x = 10

match(x)
      case 2:
          print("x is 2")
      case _:
          print("x is not 2")
• این نسخه پایتونی مثل switch کلاسیک توی C نیست یعنی بعد از اینکه case ای اجرا شد از بلاک match میزنه بیرون.

کویز: بهتره عدد 4.5 رو توی کدوم نوع نگه داریم؟
Anonymous voting

اگر این داده ی ما باشه، بهتره توی کدوم نوع نگهش داریم؟ 4.3
Anonymous voting

بریم برای جلسه سوم با زبان C
• تو این جلسه میخوایم عملگر ها و عبارات و مفهوم لیترال در زبان C رو بررسی کنیم.
اول از همه بگم لیترال یعنی چی؟
• هرجای پروژه که عدد ثابت استفاده کنیم که داخل متغیری ذخیره نشده اون یه لیتراله!
مثلا:
#include <stdio.h>

int main(void)
{
     printf("%d", 2);
     return 0;
}
• اینجا عدد 2 لیتراله، همین!
حالا بریم سراغ عملگرها
• عملگر ها رو ما برای محاسبات ریاضی و ایجاد منطق توی شرط گذاری استفاده میکنیم که در ادامه متوجه میشید!
اینجا با چهار دسته از عملگرها آشنا میشیم
• عملگر های حسابی • عملگر های منطقی • عملگر های مقایسه ای • عملگر های افزایش و کاهش
عملگر های حسابی:
+ جمع - تفریق * ضرب / تقسیم % گرفتن باقی مونده تقسیم عددی بر عدد دیگه
عملگر های منطقی:
|| or && and ! not • عملگر or فقط وقتی false میشه که هردو عبارت مقابلش false باشن. • عملگر and فقط وقتی true میشه که هردو عبارت مقابلش true باشن. • عملگر not ارزش یه عبارت رو برعکس میکنه مثلا اگر false باشه تبدیلش میکنه به true.
 عملگر های مقایسه ای:
== مساوی < بیشتر > کمتر <= بیشتر مساوی >= کمتر مساوی != نامساوی
مراقب باش ‼️
عملگرهای = و == رو قاطی نکنی، این اشتباهیه که خیلی از تازه کارا دچارش میشن.
عملگر های افزایش و کاهش:
++ یک واحد مقدار رو افزایش میده -- یک واحد مقدار رو افزایش میده
مثلا:
int x = 10, y = 6;

x++;
y--;

// result: x = 11, y = 5
حالا عبارت یعنی چی؟
عبارت یا expression یعنی یه ترکیب از متغیرها، عملگرها و لیترال ها، همین!
مثلا این یه عبارته:
int x = 0, y = 1, z = 2;

x = y + z;

// result: x = 3
سوالی بود تو قسمت دیدگاه ها بگید! انرژی یادت نره🌹

حمایت های شما ثابت شدست👑 پس فکر کنم از پیج هم حمایت میکنید...💀💟 🌐devlosso

خب رفقا بریم برای جلسه دوم با زبان C
• توی این جلسه میخوایم یه برنامه ساده به زبان C بنویسیم و از روی اون توضیح بدیم!
برنامه ی ما قراره یه عدد ورودی بگیره و همونو چاپ کنه:
#include <stdio.h>
int main(void)
{
     int num = 0;

     printf("Enter a number: ");
     scanf("%d", &num);
   
     printf("Your number: %d", num);
     return 0;
}
اول درمورد کتابخونه ها بگم
• فرض کنید می‌خوایم یه خونه بسازیم؛ خب آجر و تیر آهن و این خرت و پرت ها رو لازم داریم، اما اینا رو آماده میخریم و نمیایم از اول خودمون تیر آهن و اختراع کنیم! • کتابخونه ها هم دقیقا همینا هستن، مجموعه ای از کدهای آماده قبلی که یه سری کارا رو میکنن و ما میام با دستور #include اونا رو میاریم تو پروژه مون، دقیقا مثل import تو پایتون! • الان مثلا من کتابخونه یا هدرفایل stdio که کتابخونه استاندارد ورودی و خروجی هست رو آوردم تو پروژه تا از توابع printf و scanf استفاده کنم!
فرم تعریف تابع توی زبان C
[return type] [function name] (parameters) { // codes } • یعنی به این صورت که اول باید نوع مقدار برگشتی تابع رو مشخص کنیم! و می تونیم از انواع داده ای که در جلسه قبل گفتم استفاده کنیم؛ اگر تابع قراره مقداری از تایپ int برگردونه نوع داده برگشتی رو int تعریف میکنیم. • راستی یادته گفتم نوع void رو تو جای مناسبش توضیح میدم؟ نوع void رو اینجا میتونی استفاده کنی و درکل void یعنی هیچی؛ و وقتی که مقدار برگشتی رو void بدی یعنی این تابع هیچی برنمیگردونه! و توابع کد هاشون داخل {} نوشته میشه و اسکوپ (زاویه دید) تابع بین {} هستش! بعد از مشخص کردن نوع داده برگشتی، اسم برای تابع تعریف میکنیم و داخل پرانتز پارامتر های دریافتی رو تعریف میکنیم.
تابع printf و scanf
• تابع printf برای چاپ متن استفاده میشه • تابع scanf برای دریافت ورودی! توی آرگومان اول، فرمت داده ای که قراره بخونه رو میخواد که برای تایپ int فرمت تعریف شده %d هستش! و تو آرگومان دوم آدرس متغیری رو میخواد تا مقدار رو داخلش بریزه ما با عملگر & آدرس یه متغیر رو درمیاریم
و درنهایت که برنامه با موفقیت اجرا شده با دستور return کد 0 رو به معنای موفقیت به سیستم عامل برمیگردونیم!
راستی درمورد کامنت کردن بگم
• راه اول // code • راه دوم /*code */
سوالی بود تو قسمت دیدگاه ها بگید!

سلام و درود خدمت شما دوستان من امیرم یکی از اعضای تیم DevLosso و دانشجوی مهندسی نرم‌افزار. از بچگی به کامپیوتر و دنیای تکنولوژی علاقه داشتم و حالا دارم این علاقه رو جدی‌تر دنبال می‌کنم. مسیر برنامه‌نویسیم رو با HTML، CSS و JavaScript شروع کردم و بعدش کم‌کم رفتم سمت Database، MySQL و PHP. بعد از اون رفتم سراغ WordPress و شروع کردم به طراحی و توسعه سایت‌های مختلف. ی خورده هم با Android Studio کار کردم و با Flutter و WebView یه اپلیکیشن ساختم. بیشتر تجربم تا الان توی حوزه Front-end و طراحی وب بوده، اما الان تمرکزم رو بیشتر روی Python گذاشتم و کم‌کم دارم وارد دنیای Back-end و توسعه نرم‌افزار می‌شم. در ادامه هم دوست دارم مسیرم رو بیشتر در زمینه AI ادامه بدم و ببینم این مسیر قراره منو به کجا برسونه.😂 چیزی که برام مهمه اینه که فقط چیزها رو یاد نگیرم؛ بسازمشون، خرابشون کنم، درستشون کنم و ازشون تجربه بگیرم. امیدوارم در کنار بچه‌های DevLosso بتونیم چیزهای خفن‌تری بسازیم. 🚀 @Amirmak1386

حس میکنم زیادی تند رفتیم نه؟ ضمیمه دوم جلسه اول بیاید یکم درمورد چیزای بدیهی تر صحبت کنیم
• پسوند فایل های سورس توی زبان C (.c) و فایل های کتابخونه ای (h.) هستش! • زبان C کامپایلریه و مفسری نیست یعنی کل پروژه یه جا به باینری قابل اجرا تبدیل میشه،‌ برخلاف زبان های مفسری مثل پایتون. • نقطه شروع تمام برنامه هایی که با C نوشته میشن تابع main هستش. (تعریف توابع رو توضیح خواهم داد.) • زبان C تمام قدرتش خلاصه میشه توی تسلط مستقیم روی حافظه، یعنی مثل یه شمشیر سامورایی تیزه و میتونی بخش باهاش حافظه رو جراحی کنی 🥷 فقط حواست باشه خودتو زخمی نکنی! • زبان C کامپایلر های متخلفی داره که معروف ترینشون GCC و Clang هستن (به شخصه GCC رو خیلی دوست دارم و باهاش کار میکنم)
دستور ساده کامپایل با GCC
Windows: gcc main.c -o main.exe main.exe Linux: gcc main.c -o main ./main
همین قدر کافیه 😅 انرژی بده رفیق 🌹

و در ادامه جلسه اول اینو ضمیمه کنم! این نکات پایه از C رو باید بدونید! 🤓
• تو این زبان همیشه با کاراکتر های کوچیک سر و کار داریم، هروقت خواستی از کاراکتر بزرگ استفاده کنی باید دلیل منطقی ای داشته باشی! • بلا استثناء تمام دستورات C باید با سمی کالون (;) بسته بشن!
چطوری از این انواع داده ای، متغیر تعریف کنیم؟
سینتکس تعریف متغیر اینطوریه: [Type] [Name] ; مثلا: int x;
حالا سه راه برای دادن مقدار دادن به متغیر وجود داره!
• درحین تعریف: int x = 10; • بعد از تعریف: int x; x = 10; با ورودی گرفتن: int x; scanf("%d", &x); تابع scanf رو بعدا توضیح میدم! ✅
 راستی! توی C انتصاب چندگانه معتبره مثلا:
int x, y, z; x = y = z = 10;
انرژی کمه رفقا 😇

خب بریم برای جلسه اول با زبان C جلسه اول: Data Types (انواع داده ای) یه چیزی رو همین اول بگم! (یادداشت کن تو امتحان میاد😂)
بحث انواع داده ای خیلی مهمه؛چون توی این زبان باید انواع داده ای رو دقیق تعریف کنی، ویژگی هاشون رو بدونی چون موقع تبدیل نوع توی بعضی شرایط ممکنه یه سری از داده هات خراب بشن و در سطوح بالاتر بتونی خطا های نوع داده ای رو هندل کنی! ✅
توی زبان C ما کلا پنج نوع داده ای اصلی داریم:
• int • char • float • double • void
• نوع int:
برای محاسبات به کار میره. کلمه ی int مخفف integer عه به معنای عدد صحیح! 🤓
دیدگاه سطح پایین👌
نوع int اندازه اش توی معماری های x86 و x64 فرق داره: • x86 -> 2 bytes • x64 -> 4 bytes
این نوع فقط عدد کامل مثل 4 رو نگه میداره اگر توش بخوای 4.4 رو نگه داری اعشارش از دست میره!
• نوع float:
برای کار با اعداد اعشاری به طور معمول استفاده میشه. این یکی نکته خاصی نداره!
• نوع double:
اینم برای کار با اعداد اعشاریه. منتها برای کار با اعداد اعشاری های بزرگتر از اندازه float. این نوع توی نگه داری اعداد اعشاری دقیق تره و تقریبا دوبرابر float حافظه میگیره و بیشتر برای محاسبات دقیق تر استفاده میشه. اما خب float رو معمولا بیشتر برای کارای عادی تر استفاده میکنیم!
• نوع char: بیاید اینو با دو دیدگاه مختلف توضیحش بدیم! دیدگاه سطح بالا ❌
این نوع کاراکتر نگه میداره همین.
دیدگاه سطح پایین👌
این نوع داده ای برای نگه داشتن تنها یک بایت استفاده میشه روی هرنوع معماری ای تنها و تنها یک بایته، یعنی این قرارداده که یک بایت باشه!
به خاطر این دلایل:
• پکت های شبکه همیشه یک بایت هستن و برای اینکه C قابلیت اینو داشته باشه که بتونه توی شبکه استفاده بشه باید نوع داده ای داشته باشه که یک بایت از RAM حافظه میگیره! • توی استاندارد کاراکتری ASCII، تعریف شده بود که هر کاراکتر انگلیسی دقیقا اندازه اش میشه یه بایت سرهمین اسم این نوع داده ای رو گذاشتن char که مخفف character میشه!
نکته تاریخی: 🏛
توی دهه ۹۰ میلادی حافظه خیلی گرون و کم بود سرهمین نوع داده ای char اولین نوع داده توی این زبان بود چون یه بایت بود و حافظه رو بهینه مصرف میکرد.
• نوع void رو هم در جلسات بعدی میگم چون الان جاش نیست! انرژی بده رفیق 🕊

وقت بخیر رفقا 👋 تصمیم گرفتیم برای اینکه فضای چنل یکم تغییر کنه و تنها تو فاز پروتکل های HTTP/HTTPS و تعاملات سطح وب نباشه، 😇 بریم از اول با زبان C آشنا بشیم؛ اونم به صورت قسمت قسمت، یعنی هر قسمت روی یه مفهوم از این زبان فوکوس کنیم.
البته عمیق، نه سطح بالا! در ادامه روی هر مفهوم بهتون توضیح میدم درک سطح بالا و درک سطح پایین از اون مفهوم دقیقا یعنی چی! 🧐 (البته هرجا که لازم باشه)
راستی یه نکته ای 🙃
هدف این نیست که بیایم عمیقا برنامه نویسی با C رو یاد بگیریم! ❌
هدف اینه که با این زبان آشنا بشیم، که خب آشنایی و درک این زبان یعنی فهم درست از برنامه نویسی و عملکرد برنامه به علاوه یادگیری سریع زبان های دیگه مثل پایتون! ✅
نظرتون چیه؟ ری اکشن و بترکون رفیق ❤️🕊

یکم از خودم بگم (همچین مهمم نیستا): علاقه شدیدی به کرنل لینوکس دارم 💪
و چندین ساله لینوکس یوزرم😌
اصلا همین علاقه منو کشید به سمت Linux System Programming😄
حوزه ای که توش پولی نیست😂
زبان C رو به عنوان اولین زبان برنامه نویسی شروع کردم
زبانی که غالبا فرار میکنن ازش چه برسه بخوان باهاش شروع کنن.😁
و تقریبا دوساله با این زبان کار میکنم و بعدش پایتون رو یاد گرفتم. علاقه شدیدی به برنامه نویسی Embedded یعنی همون سیستم های نهفته دارم و از پلن های آینده ام حساب میشه. و خب اینجا قراره بیشتر از لینوکس، درک برنامه نویسی، سطوح پایین و اینکه چه اتفاقاتی تو پس زمینه برنامه میوفته صحبت کنیم! و یکم هم C کار کنیم. همین☺️ پس کمربند و سفت ببند😂

سلام دوستان! 👋 من مصطفی هستم، و منم چند سالی میشه که تو دنیای برنامه‌نویسی سیر می‌کنم. (ول میچرخم😁) با HTML & CSS شروع کردم (این خودش یه داستانی داره بس دراز😂) و بعد اندکی سمت وردپرس رفتم تا قانع شدم که فرانت اند زمین بازی من نیست!😎 و بعد از اون موقع تا الان تو حوزه System Programming یعنی برنامه نویسی سطح پایین و سیستم، کار می‌کنم😇 و زبان اصلی من C هستش (Low-level C)🤓
و تو پایتون 🐍 هم دستی بر ادیتور دارم😉
خواستم خودمو معرفی کنم☺️ 📶 @DevLosso 👤 @SysDevMustapha

سلام دوستان! 👋 من مصطفی هستم، و منم چند سالی میشه که تو دنیای برنامه‌نویسی سیر می‌کنم. (ول میچرخم😁) با HTML & CSS شروع کردم (این خودش یه داستانی داره بس دراز😂) و بعد اندکی سمت وردپرس رفتم تا قانع شدم که فرانت اند زمین بازی من نیست!😎 و بعد از اون موقع تا الان تو حوزه System Programming یعنی برنامه نویسی سطح پایین و سیستم کار می‌کنم😇 و زبان اصلی من C هستش (Low-level C)🤓
و تو پایتون 🐍 هم دستی بر ادیتور دارم😉
خواستم خودمو معرفی کنم☺️ 📶 @DevLosso 👤 @SysDevMustapha

🟢پروکسی(proxy)📶 ی پروکسی بین کلاینت و سرور قرار داره که تمام درخواستای http کلاینتو میگیره و میفرسته به سرور معمولا هم ازش برای امنیت استفاده میکنن ولی درکل کاربرد های زیادی داره مثلا ویروسو تشخیص میده ، ی محتواییو فیلتر کنه یا برا گذر از تحریم استفاده شه... کلا اینجوریه که بسته باز میکنه بررسی میکنه که مثلا این فایل ویروسی نباشه یا با بررسی ادرسش url filtering میبینه تو blacklist هست یا نه و تو پروکسیای پیشرفته هم محتوارو رسته بندی میکنه و بعد بررسی میکنه که این درخواست و اون محتوا آزادن یا نه اگر باز نباشه ارتباط قطع میکنه و اصن ارسال نمیشه (407 , 403)اینا بیشتر forward proxy هستن که سمت کلاینته و reverse proxy هم سمت سروره که میتونه لودبالانسنگ کنه درخواستا بین سرورا تقسیم شه که فشار رو ی سرور نباشه پروکسی میتونه درخواستارو دستکاریم کنه مثلا هدرشو عوض کنه ، کوکی هارو حذف کنه و.. که کلا جلوتر میرسیم به بخش پروکسیا💎 🔔صفحه 17

یه بار فیلم 🎀بگیر، همزمان برای ریلز و یوتیوب🎥 آماده‌ش کن اپلیکیشن DualCam کمک میکنه دیگه مجبور نباشی ویدیو رو دوبار، افقی و
یه بار فیلم 🎀بگیر، همزمان برای ریلز و یوتیوب🎥 آماده‌ش کن اپلیکیشن DualCam کمک میکنه دیگه مجبور نباشی ویدیو رو دوبار، افقی و عمودی ضبط کنی. وقتی باهاش فیلم برداری میکنی دوتا فیلم ضبط میکنه یکی افقی و یکی عمودی کاملا رایگانه و پرداخت درون‌ برنامه‌ای هم نداره فقط موقع نصب دسترسی به گالری رو فعال کن تا ویدیوها ذخیره بشن☄️ با ریکشنات❤️‍🔥چنلو خوشگل کن😊

تکامل پروتکل HTTP🧠 🗓سال 1991 ⬅️ HTTP/0.9: اولین نسخه این پروتکل فقط از متد get، بدون هدر و وضعیت فقط از دریافت اسناد متنی ساده پشتیبانی میکرد 🗓سال 1996 ⬅️ HTTP/1.0: ورود به دنیای مولتی مدیا و اضافه شدن هدرها، کد های وضعیت و پشتیبانی از تصاویر و انواع فایل‌ها (mime type) 🗓سال 1997 ⬅️ HTTP/1.1: معرفی قابلیت Keep-Alive برای دانلود چندین فایل با ی اتصال و پشتیبانی از میزبانی مجازی 🗓سال 2015 ⬅️ HTTP/2: سرعت و جایگزینی فرمت متنی با باینری و امکان ارسال هم زمان چندین درخواست و پاسخ (multiplexing) 🗓۲۰۲۲ (تا کنون) ⬅️ HTTP/3: عبور از tcp؛ کوچ به پروتکل quic (مبتنی بر UDP) برای حذف تاخیر های شبکه و پایداری کامل هنگام تغییر اینترنت ⬛️خلاصه صفحه 16 , 17

☄️وقتی شعر، هوش مصنوعیو گول میزنه😂 💎پژوهشگران ی روش جالب برای دور زدن برخی از سیستمای امنیتی مدل‌ های هوش مصنوعی پیدا کردن
☄️وقتی شعر، هوش مصنوعیو گول میزنه😂 💎پژوهشگران ی روش جالب برای دور زدن برخی از سیستمای امنیتی مدل‌ های هوش مصنوعی پیدا کردن تو این روش از اشعار برای درخواست های ممنوع یا خطرناک به جای متنای معمولی استفاده میشه، مثلا به شکل شعر و قافیه‌دار نوشته میشن. نتیجه؟ بعضی مدل ها در برابر نسخه شعری همان درخواست، بیشتر احتمال داره از محدودیت‌ های ایمنی عبور کنن در آزمایش روی ۲۵ مدل هوش مصنوعی و حدود ۱۲۰۰ درخواست، تبدیل متن به شعر در برخی مدل‌ها نرخ موفقیتو به‌ شدت افزایش داده🔼 📌نکته مهم اینجاست که محتوای درخواست تغییر نمیکنه فقط نحوه بیانش عوض میشه. این تحقیق ی هشدار جدی برای توسعه‌ دهندگان AI هست که سیستم‌های امنیتی باید بتونن نیت کاربرو تشخیص بده نه اینکه فقط به کلمات و شکل ظاهری درخواست حساس👀 باشن.

با ریکشناتون چنلو خوشگل تر کنید❤️🍸

آدرس آیپی و عدد پورت👾🌐 قبل از اینکه کلاینت http بتونه پیامی به سرور بفرسته باید با استفاده از ایپی و پورت ی اتصال tcp/ip بین کلاینت و سرور برقرار کنه (مثال ایپی و پورت تو کامنت میزارم) حالا همونطور کع قبل تر خوندیم url ها درواقع آدرس منابع هستن پس اینجا مبحث dns میاد وسط که تو فصل 2 میرسیم ، حالا url میتونه از ایپی + پورت ، دامنه + پورت یا حتی دامنه خالی ساخته بشه که در این صورت پورت پیشفرض میتونیم 80 در نظر بگیریم. 🍆روند نمایش ی منبع (مثلا html) توسط مرورگر هم اینحوریه که اول نام دامنه از دل url استخراج میکنه بعدش تبدیلش میکنه به ایپی سرور و بعدش شماره پورتو از url استخراج میکنه و مرورگر ی اتصال tcp با سرور برقرار میکنه ، مرورگر ی درخواست http ارسال میکنه و سرور پاسخ http میده و در اخر کانکشن بسته میشه خروجی نمایش داده میشه💀 ⬅️خلاصه صفحه 13 و 14

| ᴅᴇᴠʟᴏꜱꜱᴏ | - إحصائيات وتحليلات قناة تيليجرام @devlosso