آکادمی علوم شقایق رحمانی
Открыть в Telegram
آموزش علوم شیمی، فیزیک و کامپیوتر Admin: @melanee_teacher Mentor Bot: @MelaneeMentorbot
Больше791
Подписчики
Нет данных24 часа
-67 дней
-2130 дней
Архив постов
یه دستور جالی هست تو شبکه به نام tracepath، کارش چیه؟ این دستور میاد از همین نودی که شما الان دارید روش کامند میزنید یعنی سیستم خودتون تا اون نودی که بهش معرفی کردید، مثلا google.com، ترافیک رو شروع میکنه به رفتن، بعد شما میتونید دونه دونه نودهایی از مسیر مبدا تا مقصد رد میشن رو در خروجی ببینید! خیلی کامند جذابیه، کل IP هایی که تو مسیر این شبکه هست رو با سرعت انتقال پکت تو سرورشون رو نشون میده! بعد شما میفهمید مثلا کجای شبکه تون سرعت کنده. من واسه گوگل زدم دیدم یه جایی ته ایران پکت من از سرور های کشور عمان رد میشه! شما هم تست کنید باحاله:
shell
tracepath google.com
ادامه پست قبل: حالا اگه بخواید روی یکی از پارتیشن هاتون سیستم عامل ویندوز نصب کنید، فایل سیستم NTFS براش مناسبه. اگه بخواید روی یک پارتیشن تون لینوکس نصب کنید، فایل سیستم Extended 4 براش مناسبه. واسه فلش USB هم فایل سیستم Fat32 مناسبه.
دارم مبحث فایل سیستم (File System) های لینوکس رو میخونم، فقط میتونم بگم بَه بَه و چَه چَه😍.
به این نتیجه رسیدم خیلی از چیزهایی که میدونستیم در واقع نمیدونستیم! مثلا مفهوم پارتیشن بندی رو من تازه متوجه شدم. یه کوچولو از چیزهایی که یاد گرفتم رو بهتون میگم الان.
برای اینکه دیتا بتونه رو storage ها (مثل فلش، دیسک و ...) ذخیره بشن اول باید روشون یک فایل سیستم مثل Fat32 یا NFTS نصب باشه! فایل سیستم ها به مدیریت فایل ها کمک میکنند.حالا بعضی از فایل سیستم ها محدودیت حجم دارند، مثلا شما یه دیسک ۱۰ ترابایتی دارید شاید نتونید همشو داخل یک فایل سیستم مدیریت کنید! خب پس باید اینجا دنبال راه حل باشیم؛ دو تا کار میتونیم انجام بدیم، اولیش به جای یک دیسک ۱۰ ترابایتی بیایم ده تا دیسک یک ترابایتی بخریم و روی هر کدوم یک فایل سیستم نصب کنیم که این کار زیاد معقول نیست. دومین راه حل اینه که همین دیسک فیزیکی ۱۰ ترابایتی رو به صورت مجازی تقسیمش کنیم به چند تا دیسک! دقیقا به این کار پارتیشن بندی میگن، اونوقت میتونیم روی هر پارتیشن یک فایل سیستم متفاوت نصب کنیم.
این آقای تنن باوم (Tanenbaum) غیر از کتاب شبکه اش یک کتاب دیگه هم دارند راجب سیستم عامل که در پست قبلی براتون pdf اش رو گذاشتم.
یه کتاب تاریخی راجب علوم کامپیوتر دارم مال سال ۱۹۸۴ میلادیه! انقدر این کتاب جذابه برام چون وقتی میخونمش میفهمم اونموقع ها چه خبر بوده. مثلا زبان های برنامه نویسی FORTRAN و
COBOL
اون زمان تو صنعت استفاده میشدن. راجب شبکه های کامپیوتری هم دیدم چطوری بوده اونموقع ها.
خیلی این کتابمو دوس دارم احتمالا وصیت میکنم پس از مرگم به یه موزه علوم کامپیوتر اهداش کنند😅.
واریانس برابر میانگین مجذور انحرافات از میانگین است. این صفحه ۱۴۹ رو هیچ وقت فراموش نمیکنم❤.
این کتاب آمار دوران دبیرستان ما بود، هنوز که هنوزه بعضی وقتا کارم بهش میفته! دیتاکارها به آمار خیلی نیاز دارند. پی دی اف اینم گذاشتم اگه کسی دلش تنگ شده بود🤭🥰.
امروز میخواستم روی پارچه یه طرحی بکشم یاد کتاب "آموزش هنر" دوران راهنماییم افتادم، چقدر این کتاب نوستالژیه برام، واقعا یادش بخیر قدیما مدرسه چقدر خوش میگذشت بهم زنگ های هنر، خطمم خوش بود به هم کلاسیام یاد میدادم🥺❤. پی دی اف این کتابو پیدا کردم😍.
ربطی هم به کامپیوتر نداره میدونم🤭.
راجب شبکه های کامپیوتری، مهندس حمیدرضا حسینخانی یک دوره ی کوتاه دارند که خیلی مفید هست، دو تا جلسه ی بعدیش هم راجب سیستم های عامل بخصوص لینوکس هست. اگه وقت کردید ببینید:
https://www.aparat.com/v/DdAyH?playlist=634448
چند روز پیش داشتم روی سیستم لینوکسم یه فایل AppImage رو ران میکردم ولی هیچ اتفاقی نمیفتاد، رفتم تو ترمینال log های سیستمم رو دیدم و فهمیدم مشکل کجاست. هر پروسسی که در حال اجراست تو log سیستمتون میتونید ببینید چه خبره.
کامند دیدن log های سیستم:
tail -f /var/log/syslogچند روز پیش داشتم روی سیستم لینوکسم یه فایل AppImage رو ران میکردم ولی هیچ اتفاقی نمیفتاد، رفتم تو ترمینال log های سیستمم رو دیدم و فهمیدم مشکل کجاست.
کامند دیدن logهای لینوکس:
Bash
tail -f /var/log/syslog#define pr_fmt(fmt) "TCP: " fmt
#include <crypto/hash.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/poll.h>
#include <linux/inet_diag.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/skbuff.h>
#include <linux/scatterlist.h>
#include <linux/splice.h>
#include <linux/net.h>
#include <linux/socket.h>
#include <linux/random.h>
#include <linux/memblock.h>
#include <linux/highmem.h>
#include <linux/cache.h>
#include <linux/err.h>
#include <linux/time.h>
#include <linux/slab.h>
#include <linux/errqueue.h>
#include <linux/static_key.h>
#include <linux/btf.h>
#include <net/icmp.h>
#include <net/inet_common.h>
#include <net/tcp.h>
#include <net/mptcp.h>
#include <net/xfrm.h>
#include <net/ip.h>
#include <net/sock.h>
#include <linux/uaccess.h>
#include <asm/ioctls.h>
#include <net/busy_poll.h>
/* Track pending CMSGs. */
enum {
TCP_CMSG_INQ = 1,
TCP_CMSG_TS = 2
};
DEFINE_PER_CPU(unsigned int, tcp_orphan_count);
EXPORT_PER_CPU_SYMBOL_GPL(tcp_orphan_count);
long sysctl_tcp_mem[3] __read_mostly;
EXPORT_SYMBOL(sysctl_tcp_mem);
atomic_long_t tcp_memory_allocated ____cacheline_aligned_in_smp; /* Current allocated memory. */
EXPORT_SYMBOL(tcp_memory_allocated);
DEFINE_PER_CPU(int, tcp_memory_per_cpu_fw_alloc);
EXPORT_PER_CPU_SYMBOL_GPL(tcp_memory_per_cpu_fw_alloc);
#if IS_ENABLED(CONFIG_SMC)
DEFINE_STATIC_KEY_FALSE(tcp_have_smc);
EXPORT_SYMBOL(tcp_have_smc);
#endif
/*
* Current number of TCP sockets.
*/
struct percpu_counter tcp_sockets_allocated ____cacheline_aligned_in_smp;
EXPORT_SYMBOL(tcp_sockets_allocated);
/*
* TCP splice context
*/
struct tcp_splice_state {
struct pipe_inode_info *pipe;
size_t len;
unsigned int flags;
};
/*
* Pressure flag: try to collapse.
* Technical note: it is used by multiple contexts non atomically.
* All the __sk_mem_schedule() is of this nature: accounting
* is strict, actions are advisory and have some latency.
*/
unsigned long tcp_memory_pressure __read_mostly;
EXPORT_SYMBOL_GPL(tcp_memory_pressure);
void tcp_enter_memory_pressure(struct sock *sk)
{
unsigned long val;
if (READ_ONCE(tcp_memory_pressure))
return;
val = jiffies;
if (!val)
val--;
if (!cmpxchg(&tcp_memory_pressure, 0, val))
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURES);
}
EXPORT_SYMBOL_GPL(tcp_enter_memory_pressure);
void tcp_leave_memory_pressure(struct sock *sk)
{
unsigned long val;
if (!READ_ONCE(tcp_memory_pressure))
return;
val = xchg(&tcp_memory_pressure, 0);
if (val)
NET_ADD_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURESCHRONO,
jiffies_to_msecs(jiffies - val));
}
EXPORT_SYMBOL_GPL(tcp_leave_memory_pressure)