هیچ محصولی در سبد خرید نیست.

ثبت‌نام

دسته بندی: فناوری اطلاعات

تجربه ی کار با Thread در سی شارپ

تجربه ی کار با Thread در سی شارپ

سلام. امروز داشتیم رو یه پروژه ی نرم افزار ویندوزی که با سی شارپ نوشتیم کار می کردیم برای اپدیتش؛ یه مشکلی داشتیم. مسئله اینجا بود که میخواستیم طرف ببینه اینترنتش وصله یا قطعه اگه وصل بود با رنگ سبز بنویسه مثلا “به اینترنت متصل هستید” یا “اینترنت قطع هست”. ایده ی کلی چیز ساده ای بود که خب تو ورژن قبلی با یه timer که interval ش رو روی ۳۰۰۰۰ میلی ثانیه گزاشته بودیم حل شد تقریبا. ولی چون موقع لود شدن برنامه تا سی ثانیه بعد نتیجه رو نمایش نمیداد مجبور شدیم روی رویداد Form Load فرم هم اون تابعی که برای بررسی اصال به اینترنت نوشته بودیم رو صدا بزنیم.

ولی مشکل این بود که وقتی برنامه رو باز می کردیم چون یه پینگی از یه جا می گرفت یکم طول میداد و توی اون لحظه (تقریبا ۱ الی ۲ ثانیه) من نمیتونستم کاری بکنم یعنی اون برنامه درگیره. خب برای اینکار ایده ی Background Worker رو داشتم و از قبل میدونستم که همچین چیزی هست. میشه یه Thread جدید درست کرد که تو یه حلقه با شرط Trueتا بینهایت یه کاری بکنه اما سیستم هنگ نباشه. در واقع توی بک گراند این کار رو بکنه.

توی رویداد لود فرم اصلی این کد رو گزاشتم تا یه Task به Background Worker معرفی کنم و گفتم انجامش بده.

[code] backgroundWorker1.DoWork += backgroundWorker1_DoWork; backgroundWorker1.RunWorkerAsync(); [/code]

بعد توی خود Background Worker اومدم کدهایی کی میخوام هی اجرا بشن رو نوشتم.

[code] private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { while (true) { // check inrternet connection Netchecker netchecker = new Netchecker(); if (netchecker.CheckForInternetConnection()) { netIsConnect = true; } else { netIsConnect = false; } Thread.Sleep(10000); } } [/code]

در واقع یه کلاس نوشتم که توش یه متد netchecker هست برای بررسی وصعیت اینترنت که نهایتا True و False برمیگردونه. و توی این خط ها اومدم چک کردم اگر نتیجش True بود توی یه متغیر true میریزم. بعد توی یک تایمر هر چند ثانیه فقط مقدار اون متغیرو چک می کنم و یه پیام توی یک لیبل نمایش میدم. همین.

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

خب تجربه ی جالبی بود برام. من تخصصم سی شارپ نیست ولی برنامه نویس باید بتونه هر زبونه که نیاز داره رو یادبگیره و ازش لذت ببره و کار بقیه رو هم راه بندازه و از این طریق درامد داشته باشه.

Thread در سی شارپ

Thread در سی شارپ
اینم یه عکس که شاید از حرفای من واضح تر باشه براتون 🙂

شاد و پیروز و البته سلامت باشد.

 

 

چیستی «انسانِ» پیچیده و ارتباط آن با ماهیت برنامه نویسی

چیستی انسان پیچیده و ارتباط آن با ماهیت برنامه نویسی

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

چیستی انسان پیچیده با ماهیت برنامه نویسی: انسان موجود عجیبی است. در کل یک موجود است با یک سری Entity و مشخصه که به تعداد خیلی زیادی Fork شده است. انگاری یک کلاس خیلی بزرگ که Clone شده باشد و انقدر بزرگ است که برای پردازش هر «انسان» نیاز به ابر رایانه ها و البته پردازش عمیق است.

در کل اگر نگاه شیئ گرایانه داشته باشید و یک برنامه نویس حرفه ای و کار کشته باشید، میدانید چه می گویم. کلا بنظر من شیء گرایی به ما در ترسیم یک جهان کمک می کند. فرض کنید یک انسان یک کلاس است با ویژگی های مختلف به عنوان متغیر، چیز هایی هم به عنوان ثابت، مانند تاریخ تولد و…، یک سری متد یا فانکشن؛ به عنوان مثال راه رفتن، غذا خوردن، نوشتن و… .

اولین بار که این نگاه را به دنیا داشتم در هنرستان بود. درس Adobe Flash ، یک چیزی داشت عین یک Object. هر شیء میتونست جدا گانه کار بکنه. تصور بکنید یک ماشین که خودش یک شیء است و کلی شیء زیر مجموعه داره. مثل لامپ، لاستیک، فرمان و… . این دنیای Object Oriented دنیای بسیار زیبایی است و نگاه جالبی رو به نسبت جهان به ما میده.

جالب اینکه مبحثی وجود داره به اسم وراثت یا Inheritance که در برنامه نویسی شیء گرا بسیار کاربرد داره. در این مواقع ما از موجودیت ها و متد های یک کلاس میتوانیم به کلاس های فرزند هم بدهیم یعنی عملا بحث توارث مطرح است.

یکی از چیز هایی که برنامه نویسی به ما می آموزد «منطق» است. برنامه نویسی صبحت کردن با یک سیستم با قابلیت برنامه ریزی است. ما به سیستم می گوییم چه کار بکند. البته در مباحث هوش مصنوعی چیز های بسیار پیچیده تر می شوند. کامپیوتر بشدت منطقی است. یعنی اگر شما به سیستم خود دستور بدهید خاموش شو، بدون اینکه در نظر بگیرد شوخی کرده اید یا نه اطاعت امر می کند.

جالب است نه؟! (بیشتر…)

هوش مصنوعی چیست؟

یک مقداری در مورد هوش مصنوعی

ذهنیت برنامه نویسی واقعا چیست؟

براستی ذهنیت برنامه نویسی چیست و چه تفاوتی با کد نویسی دارد؟! برنامه نویس به چه کسی گفته می شود و یک برنامه نویس باید چگونه فکر کند؟

حکایت یک شکست ، یک تجربه

حکایت سه نفری که یک تیم را راه انداختند و اینکه چه شد که کسب و کارشان ول شد! آره ول شد!!

نرم افزارهایی برای کنترل استفاده از فضای مجازی

در این مقاله قصد دارم شما را با چند تا از بهترین نرم افزار های مدیریت زمان در گوشی های موبایل آشنا کنم و به شما کمک کنم تا وقتتون رو با چرخ زدن توی نرم افزار های فضای مجازی (social media) مانند اینستاگرام، فیسبوک، تلگرام، واتساپ، لاین، وایبر و… هدر ندین.

آموزش ساخت ماشین حساب ساده با پایتون

سلام?، در این قسمت از آموزش های پروژه محور پایتون با شما هستیم تا یک ماشین حساب پایتون رو بصورت خیلی ساده پیاده سازی کنیم. اول از همه باید بدونیم این برنامه ای که می خوایم بنویسیم چه کار هایی قراره انجام بده. همونطور که از اسمش هم پیداست قراره یه سری عددو (اینجا برای سادگی فقط 2 عدد) با هم جمع، تفریق، ضرب و تقسیم کنیم. یه همین سادگی.

نکته: قراره بصورت functional کد بنویسیم. یعنی کد های هر قسمتو بصورت جداگانه بنویسیم و بعد فراخوانی کنیم. مثلا ماژول جمع زدن، تفریق و… رو می نویسیم بعد تو هسته ی اصلی برنامه فراخوانی می کنیم.

خب  چون کارمون با حساب و کتابه همون اول برنامه میایم کتابخونه ی math پایتون رو که برای محاسبات ریاضی هستش رو include می کنیم.

from math import *

بعدش یه پیام خوش آمد گویی برای استارت برنامه می نویسیم.

print ("Hello sir! welcome to Rabbit calculator...")

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

def options():
   print("------------------------------------------------------------------")
   print("Options: ")
   print ("------------------------------------------------------------------")
   print("Enter '+' to add two numbers")
   print("Enter '-' to subtract two numbers")
   print("Enter '*' to multiply two numbers")
   print("Enter '/' to divide two numbers")
   print("Enter '**' to power two numbers")
   print("Enter '&' to square root ")
   print("Enter 'exit' to exit the calculator")
   print("------------------------------------------------------------------")

حالا توابع جمع، ضرب و… رو می نویسیم.

#divide function
def divide():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 / num2
print("The answer: ", result,"\n")
except ZeroDivisionError:
print ("Error: division by zero is not possible!")
divide()
finally:
x = input ("wanna continue? (y/n) ")
if x == "y" or x == "Y":
divide()
else:
exit


#Add function
def add():
try:
num1,num2 = float(input("Enter first number: ")),float(input("Enter second number: "))
result = num1 + num2
print ("The answer: ",result,"\n")
except:
print ("An error ooccured!")
finally:
r = input ("wanna continue? (y/n) ")
if r == "y" or r == "Y":
add()
else:
exit
#Subtract function
def subtract():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 - num2
print("The answer: ", result,"\n")
except:
print ("An error ooccured!")
finally:
z = input ("wanna continue? (y/n) ")
if z == "y" or z == "Y":
subtract()
else:
exit

#Multiply function
def multiply():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 * num2
print("The answer: ", result,"\n")
except:
print ("An error ooccured!")
finally:
y = input ("wanna continue? (y/n) ")
if y == "y" or y == "Y":
multiply()
else:
exit

#Power function
def power():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 ** num2
print("The answer: ", result, "\n")
del (result)
except:
print ("An error ooccured!")
finally:
a = input ("wanna continue? (y/n) ")
if a == "y" or a == "Y":
power()
else:
exit
#Square root function
def square_root():
try:
num1 = float(input("Enter Your number: "))
result = sqrt(num1)
print("The answer: ",result)
except:
print ("An error ooccured!")
finally:
b = input ("wanna continue? (y/n) ")
if b == "y" or b == "Y":
square_root()
else:
exit

حالا کد های اصلی برنامه رو که توش همه ی فانکشن ها رو فراخوانی کردیمو می نویسیم:

#Base codes
while True:
options()
try:
u_in = input("Enter Your command: ")
if u_in == "exit" or u_in == "Exit" or u_in == "quit" or u_in == "Quit":
print("Good bye!\n------------------------------------------------------------------")
break
elif u_in == "+":
add()
elif u_in == "-":
subtract()
elif u_in == "*":
multiply()
elif u_in == "/":
divide()
elif u_in == "**":
power()
elif u_in == "&":
square_root()
else:
print ("check your input!\n")
except:
print ("An error ooccured!")

#Show all errors
raise

نکات:

  • while True: یعنی تا بینهایت همینجوری اجرا بشه. چون شرطش برقراره.
  • کد ها رو تو try گذاشتم تا اگه مشکلی تو اجراش پیش اومد بیام با دستور except یه متنی رو که خودم نوشتم به عنوان ارور نشون بده.
  • دستور raise میاد ارور ها رو نشون میده. (در واقع تو انگلیسی هم raise به معنای بالا آوردنه)

دوستان هرکدوم از دستورات رو که نمتوجه نشدید میتونید همین پایین کامنت بزارید.

موفق باشید

لینک ها:

اسکریپت رسم مثلث با پایتون

سلام. تو این مقاله می خوایم با هم یه اسکریپت رسم مثلث با پایتون بنویسیم. اول از همه شما باید با مفاهیمی مثل while یا متغیر ها و دستورات print و غیره تو پایتون آشنا باشید. اگر چه این زبان برنامه نویسی (پایتون) انقدر ساده هست که با یه نگاه اگه یه زبون برنامه نویسی کار کرده باشین می فهمید چی به چیه.

 

اسکریپت رسم مثلث با پایتون

اینجا می خوایم یه اسکریپت بنویسیم که یه عدد رو به عنوان ورودی از ما بگیره و بعد بر اساس اون یه مثلث رسم کنه. اون عدده میشه ارتفاع مثلث با همون تعداد سطر ها.

خب اینجا کد ها رو میزارم و خط به خط توضیحشون میدم.

num = int(input("Enter a number: "))
x,y = 0,0
star = '*'
while x <= num:
   x += 1
   while x != y:
      print (star)
      y+=1
      star += '**'

خط اول اومدم یه متغیر به اسم num تعریف کردم و مقدارشو یه input قراردادم. اگه نمیدونید input چیکار می کنه باید یگم میاد یه مقدارو از شما می گیره.

خط دوم متغیر x و y رو 0 قرار دادم. بعدش متغیری به اسم start تعریف کردم که مقدارش یه علامت * است. بعد یه حلقه ی while ساختم که مادامی که x نا مساوی y باشه میاد و مقدار متغیر star رو چاپ میکنه. بعد هم اومدم به y یه دونه اضافه کردم. تو خط بعدیش به مقدار متغیر start یه ستاره اضاف میکنه. یعنی تعداد ستاره ها هی زیاد تر میشن.

 

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

دستورات کاربردی ترمینال لینوکس

سلام، خدا قوت! اینجا میخوام یه سری از کاربردی ترین درستورات ترمینال لینوکس رو براتون بزارم و توضیح بدم که هر کدومشون چیکار می کنن. اول از همه باید بدونید که این دستوران برای ترمینال لینوکس هستند و با دستورات CMD توی ویندوز فرق دارن. خب بزن بریم سراغ آموزش دستورات ترمینال لینوکس ؟

اول بزارین یه تعریفی داشته باشیم از ترمینال لینوکس و اینکه چطور میتونیم اجراش کنیم.

ترمینال محیط خط فرمان لینوکس است. اگر اکنون در محیط گرافیکی هستید ساده‌ترین روش برای آوردن ترمینال استفاده از کلیدهای ‌Ctr + Alt + T است که در تمامی توزیع‌ها پشتیبانی می‌شود. راه‌های دیگری نیز وجود دارد مثل استفاده از کلیدهای Ctr + Alt + F6 (برای خروج از کلیدهای Ctrl + Alt + F7 استفاده کنید) که محیط اصلی خط فرمان را برای شما می‌آورد. (منبع:  لینوکسی ها)

  • دستو cd

با کمک این دستور می تونید از پوشه ای که انتخاب کردین برین تو یه پوشه ی دیگه. به عنوان مثال وقتی دستور زیر رو میرین به دسکتاپ.

دستور cd در لینوکس

  • دستور ls

این دستور میاد و فایل ها و فولدر های اون پوشه ای که توش هستین رو به شما نشون میده.

دستور ls در لینوکس

  • دستور pwd

با استفاده از این دستور شما می تونید ببینید تو چه مسیری هستین.

دستور pwd در لینوکس

  • دستور mkdir

mkdir مخفف make directory هستش که بمعنی ساخت دایکتوریه. از این دستور برای ساختن پوشه  استفاده میشه.  در مثال زیر من اومدم یه پوشه به اسم Test درست کردم.

دستور mkdir در لینوکس

  • دستور rmdir

دستورrmdir هم همونطور که حدس میزنید ( : مخفف remove dir یعنی حذف پوشست.

دستور rmdir در لینوکس

  • دستور touch

کار این command یا دستور اینه که بیاد یه فایل خالی بسازی. مثلا یه فایل  خالی با فرمت txt .

دستور touch در لینوکس

و در آخر اینکه اگه یه دستوری رو نفهمیدید چیکار میکنه آخرش یه -h یا -help اضافه کنید خودش بهتون توضیح میده.


به روز رسانی:

قسمت دوم این سری آموزش ها هم آماده شده می تونید ببینید. آموزش دستورات ترمینال لینوکس – قسمت دوم

کانال یوتیوب من !

فیلترینگ تلگرام برای حفظ امنیت یا خطری برای امنیت اطلاعات مردم؟!

موضوع فیلترینگ تلگرام یکی از موضوعاتی است که در چند ماهه ی اخیر چالش های زیادی را در بر داشته. عده ای فیلترینگ تلگرام را صرفا به خاطر بیگانه بودن و عده ای به بهانه ی امنیت اطلاعات داخلی و بعضی هم با عناوین فریبنده ای مانند «حمایت از تولید ملی» را توجیه می کنند.

من در این مقاله سعی می کنم به نوبه ی خودم هم به عنوان یکی از کاربران تلگرام (حتی در وضعیت فعلی) و هم به عنوان یک دانشجوی فناوری اطلاعات مسئله فیلترینگ تلگرام را واضح بیان کنم.

ابتدا با این خبر شروع می کنم:

رسانه کلیک – رییس کمیسیون امنیت ملی و سیاست خارجی مجلس شورای اسلامی با تاکید بر این که بخشی از تهدیدهای امنیت کشور در تلگرام رقم می خورد، گفت: مسئله فیلترینگ شبکه پیام رسان تلگرام باید از منظر منافع ملی و امنیت ملی بررسی شود.

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

vpnبعد از این ها هم، شما می گویید برای مبارزه با تروریسم و از این قبیل حرف ها ببینید. تروریست ها به اندازی کافی فضا های مناسبی برای گفت و گو و ارسال داده به همدیگر دارند. فضا های Dark net که در دیپ وب قرار دارد و البته کم هم نیستند نیاز به این نرم افزار های عمومی را کم می کنند. ضمنا اپلیکیشن Whatsapp با این شیوه ی کدگذاری قوی ای که دارد (End- to End)  اون هم می تونه یکی از بقول شما فضا هایی باشه که تروریست ها مثلا توش با هم ارتباط بگیرن و کار های مخرب بکنن. هر چند که این اصلا توجیه خوبی نیست برای محدود کردن 80 میلیون جمعیت ایرانی از یک ابزار ارتباطی قوی. (که البته فقط تلگرام هم نیست، توییتر، فیسبوک، و…)

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

خب شاید بگویید چه مشکلی دارد بگذار از فیلتر شکن ها استفاده کنیم. ببینید وقتی شما از فیلتر شکن استفاده می کنید این فیلتر شکن ها جدا از آن دسترسی (permission) که از شما می گیرند و البته خیلی از ما بدون دقت به آن مجوز دسترسی را صادر می کنیم؛ به محض فعال شدن یک پورت روی گوشی شما باز می کند. این به این معناست که جدا از اینکه ممکن شرکت سازنده این فیلتر شکن قصد جاسوسی داشته باشد و البته که می تواند اطلاعات شما وارسی، کپی، یا حتی کنترل کند براحتی ( با بازبودن پورت شما) به اصطلاح گوشی شما vulnerable یا نفوذ پذیر می شود. یعنی اینکه هر فردی با کمترین سطح از دانش هک و امنیت می تواند به گوشی نفوذ پیدا کند. کافی است که پلی بین گوشی شما و فرد مقابل ایجاد شود. این درصورتی است که در حالت عادی (وقتی که روی گوشی هیچ پورت بازی ندارید) این امر خیلی سخت تر خواهد بود.

در نتیجه با فیلترینگ تلگرام عملا امنیت کاربران تلگرام بدلیل خیلی از فیلترشکن های ناشناس به خطر می افتد. آن هم اکنون که طرح مسدود سازی فیلتر شکن ها در حال انجام است افراد به دنبال فیلتر شکن های با usage کمتر و کارایی و سرعت بیشتر خود را به دام هر تله ای میندازند.

تلگرام به عنوان یک پیام رسان که در سال ۲۰۱۷، با حدود ۱۸۰ میلیون کاربر هفتمین پیام‌رسان پرکاربرد شناخته شد.

اپلیکیشن سروش

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

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

تصویری از باگ پیام رسان سروش

 

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

در آخر این حرف من به مسئولین است:

اگر نمتوانید یک نرم افزار با امنیت و کارایی بالا مانند نرم افزار های Whatsapp، Telegram و Twitter درست کنید لا اقل اجازه دهید مردم از همان نرم افزار های به قول خودتان بیگانه استفاده کنند. ضمنا با این روندی که آقایان دارند پیش می روند من فکر می کنم گوگل را هم فیلتر کنن و یک موتور جست و جو گر محدود و بر اساس معیار های خودشان طراحی می کنند.

منابع

https://orat.io/blog/current-numbers-for-mobile-messengers-q1-2017خوندن این مقاله رو درباره امنیت فیلترشکن ها به شما توصیه می کنم. خواندن

اینترنت اشیاء چیست؟

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

#iguru_soc_icon_wrap_6381e74f2097f a{ background: transparent; }#iguru_soc_icon_wrap_6381e74f2097f a:hover{ background: transparent; border-color: #00bda6; }#iguru_soc_icon_wrap_6381e74f2097f a{ color: #acacae; }#iguru_soc_icon_wrap_6381e74f2097f a:hover{ color: #ffffff; }