شماره جادویی چیست؟

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

برای فرمت‌های معروف فایل‌ها‌، شماره‌ها به طور قراردادی نام نوع فایل را معرفی می‌کنند‌. از این رو برای مثال‌، شماره جادویی فایل‌های عکس GIF۸۷a که به طور گسترده‌ای مرسوم هستند در نمایش هگزادسیمال (یا‌‌ همان مبنا ۱۶) به صورت ۰x۴۷۴۹۴۶۳۸۳۷۶۱ نمایش داده می‌شوند که با ترجمه‌اش به ASCII مقدار GIF۸۷a بازگردانده می‌شود‌. ASCII یک de facto standard (‌استانداردی که بجای تایید شدن توسط یک سازمان استاندارد‌، به دلیل استفادهٔ زیاد از آن به یک استاندارد تبدیل شده‌) است که توسط کامپیوتر‌ها و تجهیزات ارتباطی برای کدگشایی کاراکتر‌ها (‌از جمله الفبا‌، اعداد و... ‌) مورد استفاده قرار می‌گیرد‌.

همچنین شماره جادویی تصویری که با GIF۸۹a ارائه می‌شود ۰x۴۷۴۹۴۶۳۸۳۹۶۱ است‌. برای هر دو نوع از فایل‌های GIF (Graphic interchanger Format)‎ شماره جادویی شش بایت اول فایل را پر می‌کند‌. و پس از آن اطلاعات اضافه اصلی در مورد فایل (‌نظیر متادیتا‌ها‌) افزوده می‌شوند‌.

به همین صورت شماره جادویی مرسوم مورد استفاده توسط فایل‌های تصویری JPEG (Joint Photographic Experts Group) برابر ۰x۴A۴۶۴۹۴۶ است‌، که از نظر ASCII برابر است با JFIF (JPEG File Interchange Format)‎. به هر حال شماره جادویی JPEG بایت‌های اولیه فایل نیستند‌. آن‌ها از بایت هفدهم آغاز می‌شوند‌. نمونه‌های دیگر از این دست شامل ۰x۴D۵۴۶۸۶۴ برای فایل‌های MIDI (Musical Instrument Digital Interface)‎، و۰x۴۲۵a۶۸۳۱۴۱۵۹۲۵ برای فایل‌های فشرده شده با bzip۲ است‌.

شماره‌های جادویی همیشه برابر با نام خود در فرمت ASCII نیستند‌، یا حتی چیزی شبیه به آن‌. برای مثال‌، در بعضی از انواع فایل‌ها آن‌ها نام توسعه دهندهٔ آن نوع فایل را نشان می‌دهند‌. همچنین برای حداقل یکی از این شماره‌های جادویی تاریخ تولد توسعه دهندهٔ آن فرمت نشان داده می‌شد.

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

اگرچه آن‌ها می‌توانند کاربردی هم باشند‌، شماره‌های جادویی همیشه برای تشخیص نوع فایل استفاده نمی‌شوند‌. دلیل اصلی این است که بعضی از انواع فایل‌ها دارای شماره جادویی نیستند‌، برای مثال فایل‌های متنی ساده‌، که مثلا HTML، XHTML و XML را به عنوان سورس کد در خود دارند‌.

خوشبختانه‌، راه‌های دیگری نیز وجود دارد تا برنامه‌ها با استفاده از آن‌ها به نوع فایل‌ها پی ببرند‌. یکی نگاه کردن به نوع چینش کاراکتر‌های فایل (‌مثلا ASCII) است‌ تا ببینند یک فایل متنی است یا خیر‌. اگر مشخص شد که یک فایل متنی است‌، می‌توان با نگاه به سرآیند فایل دید که از چه نوع نشانگری برای مثال <html> برای HTML و #! (موسوم به شیبنگ) برای اسکریپت‌ها استفاده می‌کند‌.

نوع دیگر تشخیص نوع فایل‌، استفاده از پسوند‌هاست‌ (‌مثل ‎.exe, ‎.html, .‎jpg و ...) که در سیستم عامل‌های مایکروسافتی لازم است و برای بخش کوچکی از لینوکس‌ها و سیستم‌های شبه یونیکس مورد استفاده قرار می‌گیرد‌. به هر حال مشکل این روش آن است که ممکن است که کاربر به طور اتفاقی پسوند فایل را عوش کند‌، که در این صورت فهمیدن نوع فایل بسیار سخت می‌شود‌.

و یک راه دیگر که در بسیاری از سیستم فایل‌های رایج ممکن است‌، استفاده از اطلاعات نوع فایل که در متادیتای هر فایل ضمیمه شده است می‌باشد‌. در سیستم‌عامل‌های شبه یونیکس‌، این متادیتا‌ها در inode‌ها (‌ساختار داده‌ای سیستم فایل‌های یونیکس بیس که تمامی اطلاعات مربوط به فایل به جز نام و دادهٔ اصلی را در خود ذخیره می‌کنند‌) جای می‌گیرند‌، (‌یک راه موثر برای ذخیرهٔ اطلاعات‌).

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

آدرس‌ها را در خط فرمان Bookmark کنید!

نهایت راحتی‌، اینطور نیست؟ برای نصبش کافیست دستورات زیر را به ترتیب وارد کنید‌:

git clone https://github.com/huyng/bashmarks

cd bashmarks

make install

و خط زیر را به فایل ‎.bashrc یا در صورت استفاده از ZSH به ‎.zshrc اضافه کنید:

source ~/.local/bin/bashmarks.sh

و در آخر تایپ کنید‌:

ویرایش: برای ZSH تایپ کنید‌:

source ~/.zshrc

و برای Bash:

source ~/.bashrc

و کار تمام است‌. حالا کافیست به دایرکتوری مورد نظر رفته و بوکمارکش کنید‌. مثلا من برای دایرکتوری وردپرس این‌طور عمل کردم‌:

cd /var/www/htdocs/wordpress

s wordpress

و حالا تنها کافیست که برای رفتن به این دایرکتوری تایپ کنم g wordpress. تمامی بوکمارک‌ها هم در فایل ‎.sdirs موجود در دایرکتوری خانگیتان ذخیره می‌شود ;-)

Syntax-highlighting برای خط فرمان ZSH

cd ~/.oh-my-zsh/plugins

git clone https://github.com/zsh-users/zsh-syntax-highlighting

و حالا برای فعال کردن آن خط زیر را به ‎.zshrc موجود در پوشه خانگی اضافه می‌کنیم‌:

plugins=(zsh-syntax-highlighting)

و برای اعمال تغییرات:

source ~/.zshrc

حال با تایپ دستورات نتیجه‌ای مانند عک زیر خواهید داشت:

نسخه شماره دو پوسته oulipo برای وردپرس

به همین دلیل روش یه کم کار کردم که نتیجش شده نسخه‌ی شماره‌ی ۲ از این پوسته (‌که نمونه خارجی هم نداره ;-)) امکاناتی که به این پوسته اضافه شده‌ به شرح زیره:

  • نمایش آخرین ارسال در صفحه‌ی اصلی و لیستی شش عددی که به صورت اتفاقی از مطالب منتشر شده در وبلاگ جمع آوری شده‌اند‌. (مزیت این ویژگی این است که پس از گذشت زمان‌، پست‌های قبلی به دست فراموشی سپرده نمی‌شوند ;-))
  • استفاده از «فهرست دلخواه»‌ برای منوی سمت چپ و بالایی که مدیریت منو‌ها رو راحت‌تر می‌کنه‌.
  • پشتیبانی از «‌تصویر شاخص‌» برای پست‌های تصادفی‌، به منظور برجسته‌تر نشان دادن این بخش ;-)

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

پی‌نوشت: راستی یادم رفت بگم یکی دیگه از مزیتاش اینه که فونت سر خوده!‌ این بار به جای فونت XB Zar برای تیتر‌ها از فونت «کودک» استفاده کردم که با خود پوسته لود می‌شه.

برای اینترنت آرزو کنیم‌!

That technology has to be natural to human as breathing.

شما هم می‌تونین برین تو این سایت و آرزوی خودتون رو ثبت کنین‌. شاید یکی‌، یکی که زورش می‌رسه‌، یکی که شعورش بکشه‌، چشش افتاد به آرزوتون‌. توش دید که اینترنت همچین هم وحشتناک نیست‌. اینترنت مهد دانش بشریت امروزه‌!

پی نوشت‌: حین نوشتن این متن احساس کردم دارم نامه‌ی عاشقانه می‌نویسم ;-)