HICTE Blog
Ir al canal en Telegram
گروهمون: @HicteGroup دسته بندی پستها: t.me/HicteBlog/743
Mostrar más1 126
Suscriptores
+124 horas
+37 días
-530 días
Archivo de publicaciones
1 126
امروز
5/5/5
به مناسبت این تاریخ پستایی از چنل که دوست داشتین رو با 5 نفر به اشتراک بذارین
🎉
1 126
توضیحات:
Pro Git (Second Edition) is your fully-updated guide to Git and its usage in the modern world. Git has come a long way since it was first developed by Linus Torvalds for Linux kernel development. It has taken the open source world by storm since its inception in 2005, and this book teaches you how to use it like a pro. Effective and well-implemented version control is a necessity for successful web projects, whether large or small. With this book you’ll learn how to master the world of distributed version workflow, use the distributed features of Git to the full, and extend Git to meet your every need. Written by Git pros Scott Chacon and Ben Straub, Pro Git (Second Edition) builds on the hugely successful first edition, and is now fully updated for Git version 2.0, as well as including an indispensable chapter on GitHub. It’s the best book for all your Git needs.
1 126
#کتاب
Pro Git
Author: Scott Chacon and Ben Straub
Edition: 2nd
Date: November 2014
Publisher: Apress
Length: 440 pages
Amazon 👀
Download 😉
🚁 Hicte Blog | (smm)
1 126
#سی
LValues
[قسمت دوم] [لینک به قسمت اول]
خب در مورد عبارت
b + 1 باید از خودمون بپرسیم وقتی این عبارت ارزیابی میشه آیا به شئای میرسیم که بشه ازش آدرسی دریافت کرد؟ جوابمون نه! هست پس این عبارت یه rvalue تلقی میشه.
بیاین چندتا مثال ببینیم:
arr[3] ✅
یه عنصر از آرایه شئای هست که خودش آدرس داره
&arr[3] ❌
آدرس یه شئ خودش یه شئ با آدرس نیست
ptr ✅
یه پوینتر خودش شئای با آدرس هست که آدرس یه شئ دیگه به عنوان مقدار توش ذخیره شده
*ptr ✅
شئای که پوینتر داره بهش اشاره میکنه هم طبیعتا یه شئ با آدرس محسوب میشه
ptr+1 ❌
بعد ارزیابی یه شئ رو بر نمیگردونه
نکته: در مورد متغیرهایی که storage-class شون register هست استثنا قائل میشیم. با اینکه نمیشه آدرسی ازشون دریافت کرد اما بازم اونها رو lvalue در نظر میگیریم. [این پست رو ببینین.]
🚁 Hicte Blog | (smm)1 126
#سی
LValues
[قسمت اول]
ممکنه تو مستندات زبان C یا پیغام خطای کامپایلر به اصطلاح
lvalue بر خورده باشین.
بطور کل به عبارتی که مشخص کنندهی یه شئ بصورت پایدار تو حافظه هست lvalue میگن. ساده ترین مثالش میشه اسم یه متغیر!
تو استاندارد زبان C توصیه شده حرف L به عنوان مخفف کلمهی Locator پذیرفته بشه اما ریشه تاریخی این اصطلاح بر میگرده به چیز دیگهای!
اون قدیمها که فقط میشد lvalue ها رو سمت چپ اوپراتور انتساب (=) دید این کلمه جا افتاد و حرف L اشاره به کلمهی Left داشت. برای عباراتی که نمیشد سمت چپ = استفاده کرد و باید سمت راست = باشن هم از اصطلاح rvalue استفاده میشد و هنوز هم این اصلاح رایجه.
اما rvalue میشه عبارتی که شئ پایداری رو تو حافظه رو مشخص نمیکنه.
int a = 1;
اینجا عبارت a یه lvalue و عبارت 1 یه rvalue هست. چون ما از a میتونیم به یه شئ تو حافظه برسیم که آدرس داره، اما 1 صرفا یه مقدار موقت هست و قرار نیست فضای ثابتی از حافظه رو در اختیار داشته باشه.
a = b + 1;
اینجا عبارت a یه lvalue هست،
عبارت b هم یه lvalue هست [با اینکه الان سمت راست هست!]
و عبارت 1 یه rvalue هست.
حالا عبارت b + 1 چطور؟
🚁 Hicte Blog | (smm)1 126
توضیحات:
A comprehensive guide to programming with network sockets, implementing Internet protocols, designing IoT devices, and much more with C Network programming, a challenging topic in C, is made easy to understand with a careful exposition of socket programming APIs. This book gets you started with modern network programming in C and the right use of relevant operating system APIs. This book covers core concepts, such as hostname resolution with DNS, that are crucial to the functioning of the modern web. You'll delve into the fundamental network protocols, TCP and UDP. Essential techniques for networking paradigms such as client-server and peer-to-peer models are explained with the help of practical examples. You'll also study HTTP and HTTPS (the protocols responsible for web pages) from both the client and server perspective. To keep up with current trends, you'll apply the concepts covered in this book to gain insights into web programming for IoT. You'll even get to grips with network monitoring and implementing security best practices. By the end of this book, you'll have experience of working with client-server applications, and be able to implement new network programs in C. What you will learn Uncover cross-platform socket programming APIs Implement techniques for supporting IPv4 and IPv6 Understand how TCP and UDP connections work over IP Discover how hostname resolution and DNS work Interface with web APIs using HTTP and HTTPS Acquire hands-on experience with Simple Mail Transfer Protocol (SMTP) Apply network programming to the Internet of Things (IoT) Who this book is for If you're a developer or a system administrator who wants to enter the world of network programming, this book is for you. Basic knowledge of C programming is assumed.
1 126
#کتاب
Hands-On Network Programming with C
Author: Lewis Van Winkle
Edition: 1st
Date: May 2019
Publisher: Packt Publishing
Length: 478 pages
Amazon 👀
Download 😉
🚁 Hicte Blog | (smm)
1 126
#ابزار_لینوکس
batman 🦇
واسه اینکه manpageها رو شیک تر و با رنگ و لعاب ببینین میتونین از بتمن کمک بخواین!
با نصب بستهی
bat-extras چندتا اسکریپت آماده در اختیارتون قرار میگیره واسه ادغام کردن bat [که اینجا معرفی کرده بودم] با چندتا ابزار دیگه.
یکی از این اسکریپتها batman هست که از bat به عنوان formatter برای نشون دادن manpageها استفاده میکنه.
# pacman -S bat-extras
$ batman batman
لینک گیتهاب
🚁 Hicte Blog | (smm)1 126
#سی
تبدیلهای حسابی معمول و ارتقای اعداد صحیح
[قسمت آخر] [لینک به قسمت سوم]
تبدیلهای حسابی معمول، قواعد signed و unsigned:
تو قسمت اول در مورد اولویت بندی انواع استاندارد موقع UAC صحبت کردیم.
حالا اگه تو عبارتی یه نوع باعلامت و نوع دیگه بدون علامت باشه اولویتها چطور تعیین میشه؟
وقتی یه عملوند signed و اون یکی unsigned باشه، قانون کلی اینه:
اگه نوع unsigned رتبهای برابر یا بالاتر از نوع signed داشته باشه، عملوند signed به unsigned تبدیل میشه.بیاین یه مثال ازش ببینیم:
#include <stdio.h>
int main() {
int a = -1;
unsigned int b = 1;
if (a < b)
printf("correct.\n");
else
printf("Bug!\n");
return 0;
}
تو عبارت a < b طبق قوانین UAC نوع a موقتا به unsigned int تبدیل میشه. خب وقتی مقدار -1 بخواد تو یه متغیر unsigned int قرار بگیره چی میشه؟ مقدارش برابر با UINT_MAX میشه! [بزرگترین عددی که داخل یه متغیر unsigned int جا میشه]
اگه نوع int چهار بایتی باشه نمایش دودویی -1 میشه:
1111 1111 1111 1111 1111 1111 1111 1111
حالا اگه همین بیتها به عنوان نوع unsigned int بخوان تفسیر بشن نمایش دهندهی عدد 4,294,967,295 هستن!
خلاصه حواستون باشه.
قبل شروع این صحبتا یه کدی تو چنل گذاشته بودم با یه نظرسنجی که میتونین از اینجا ببینین:
https://t.me/HicteBlog/1402
خب در مورد این کد ما توی خط ۶ و خط ۷ اورفلو داریم!
وقتی عبارت INT_MAX + 3 اجرا میشه، دو سمت عملگر + هر دو از نوع int هستن پس عملگر + محاسبات رو تو فضای int انجام میده و نتیجهی نهایی رو بصورت int برمیگردونه بدون اینکه ارتقایی رخ بده.
طبیعتا وقتی 3 رو به ماکسیمم مقداری که توی نوع int میتونه ذخیره بشه اضافه کنیم دیگه قابلیت این رو نداره که تو همون نوع int جا بگیره و اورفلو رخ میده.
شاید بعضیها بخاطر اینکه اون سمت متغیری از نوع long وجود داشت فکر کردن که کامپایلر بطور خودکار محاسبات رو میبره روی نوع long اما + و < و همچنین + و = دو عبارت مجزا رو تشکیل میدن و ربطی به هم ندارن.
🚁 Hicte Blog | (smm)