مجوزهای دسترسی فایل سیستم‌های ext در لینوکس

مهم نیست چه مدت با لینوکس کار کرده باشید، کارشناس امور امنیتی باشید یا یک هکر آزاد اندیش، مجوزهای دسترسی پدیده‌ای است که  برای هر کاربر لینوکس جذاب است. با این مقدمه، امروز در نظر دارم ۱۳ مجوز دسترسی جالبی که توسط فایل سیستم‌های ext2‏، ext3 و ext4 به کار می‌روند را معرفی کنم.

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

همانطور که می‌دانید، مجوزهای دسترسی عمومی لینوکس بر مبنای دو دستور chmod و chown استوار شده‌اند و اطلاع از اآن‌ها با کمک دستور زیر میسر است:


ls -l

دستور chmod عموما برای تعیین سه سطح دسترسی «خواندن»، «نوشتن» و «اجرا کردن» به کار می‌رود ولی سطوح دسترسی دیگری وجود دارد که توسط فایل‌ سیستم‌های ext2 به بعد معرفی شده‌اند امکان مدیریت بهتر سیستم را فراهم می‌آورند، برای آشنایی با این سطوح دسترسی دو دستور ارائه شده‌اند:

  • دستور نمایش خصیصه‌ها (lsattr)
  • دستور تغییر خصیصه‌ها (chattr)

برای اطلاع از خصیصه‌های یک دایرکتوری یا فایل به دستور lsattr را به این شکل می‌توان به خدمت گرفت:


lsattr /var

خروجی این دستور بسیار شبیه به خروجی دستور ls است. با این تفاوت که این ۱۳ خصیصه را معرفی می‌کند:

خصیصهشرحقابل اعمال توسط chattr
Aرکورد atime فایلی که خصیصه A را داشته باشد، تغییر نخواهد کرد. این باعث کاهش بار عملیات ورودی/خروجی دیسک در لپ‌تا‌پ‌ها و دیسک‌های فلش می‌شود.بله
aفایلی که خصیصه‌ی a را داشته باشد، فقط در حالت append قابل نوشته شدن است.بله، فقط توسط کاربر ریشه
cفایلی که خصیصه‌ی c را داشته باشد به صورت خودکار توسط کرنل فشرده‌ می‌شود. خواندن این فایل داده‌های فشرده نشده را نمایش می‌دهد. داده‌های نوشته شده روی این فایل پیش از ذخیره شدن بر روی دیسک، فشرده می‌شود.بله، توضیحات را بخوانید
Dوقتی یک دایرکتوری با خصیصه‌ی D تغییر کند، تغییرات به صورت همزمان روی دیسک نوشته می‌شود، این رفتار معادل این است که ماونت آپشن dirsync بر روی فایل‌ها اعمال شود.بله
dفایلی که خصیصه d را داشته باشد، موقع پشتیبان‌گیری با برنامه dump نادیده گرفته خواهد شد.بله
Eخصیصه E توسط پچ‌های آزمایشی فشرده‌سازی استفاده می‌شوند برای اینکه اعلان کنند فایل فشرده‌ شده‌ خطایی در فشرده‌سازی دارد.خیر
eاین خصیصه بیانگر این است که فایل برای نگاشت بلوک‌های دیسک از extents استفاده می‌کند.خیر
Iخصیصه I توسط کد htree برای بیان اینکه یک دایرکتوری در حال ایندکس شدن با درخت‌های هش است، به کار می‌رود.خیر
iوقتی فایلی خصیصه i را داشته باشد، قابل تغییر نیست: نمی‌توان آن را حذف کرد، تغییر نام داد یا لینکی به آن ایجاد کرد و هیچ داده‌ای بر روی آن نمی‌توان نوشت.بله، فقط توسط کاربر ریشه
jفایل با خصیصه j باعث می‌شود اگر فایل سیستم با آپشن data=ordered یا data=writeback ماونت شده باشند، همه‌ی داده‌ها پیش از نوشته شدن بر روی خود فایل بر روی ژورنال (ext3) نوشته شوند، اگر فایل سیستم قبلا با آپشن data=journal ماونت شده باشد این مکانیزم به صورت پیش‌فرض اتفاق می‌افتد و این خصیصه بی‌اثر خواهد بود.بله، فقط توسط کاربر ریشه
sوقتی فایلی با خصیصه s حذف شود، بلوک‌های آن صفر می‌شود و بر روی دیسک نوشته می‌شود. این خصیصه برای حذف ایمن فایل‌ها بدون امکان بازگشت مفید است.بله، توضیحات را بخوانید
Sوقتی فایلی با خصیصه S تغییر کند، تغییرات به صورت همزمان روی دیسک نوشته می‌شوند، این معادل آپشن ماونت sync است که به فایل‌ها اعمال می‌شود.بله
Tوجود خصیصه T بر یک دایرکتوری، یک راهنمایی به تخصیصگر بلوک است که در ext3 و ext4 استفاده می‌شود تا اعلام کند زیردایرکتوری‌ها این دایرکتوری بهم مرتبط نیستند و بنابراین، باید برای دسترسی سریعتر پخش شوند. به عنوان مثال، این ایده‌ی خیلی خوبی است که خصیصه T را به دایرکتوری ‎/home اعمال کنید، تا زیردایرکتوری‌های ‎/home/john و ‎/home/mary در بلوک‌های جداگانه‌ای ذخیره شوند. در صورت عدم وجود این خصیصه، تخصیصگر بلوک Orlov سعی خواهد کرد زیردایرکتوری‌ها را تا حد امکان در بلوک‌های نزدیک بهم قرار دهد.بله
tفایلی با خصیصه t بخش بلوک ناقص (partial block gragment) را در انتهای خود جایی که به فایل دیگری پیوسته باشد، ندارد (این برای فایل سیستم‌هایی است که از پیوستگی-انتها (tail-merging) پشتیبانی می‌کنند). این برای برنامه‌هایی مثل LILO لازم است که مستقیما فایل سیستم را می‌خوانند و پیوستگی-انتها را متوجه نمی‌شوند. نکته: تا این زمان، فایل سیستم‌های ext3 و ext2 هنوز (بجز در پچ‌های آزمایشی) از پیوستگی-انتها پشتیبانی نمی‌کنند.بله
uوقتی فایلی با خصیصه u حذف می‌شود، محتویاتش باقی می‌ماند. این خصیصه اجازه می‌دهد که کاربر بتواند فایل‌هایش را پس از حذف شدن برگرداند.بله، توضیحات را بخوانید
Xخصیصه X توسط پچ‌های فشرده‌سازی آزمایشی استفاده می‌شود تا بیان کند که محتویات خام یک فایل فشرده‌شده به طور مستقیم می‌تواند خوانده شود.خیر
Zخصیصه Z توسط پچ‌های فشرده‌سازی آزمایشی استفاده می‌شود تا بیان کند که فایل فشرده‌شده اصطلاحا «کثیف» است.خیر

توضیحات:

  • خصیصه‌های c‏، s و u در فایل‌ سیستم‌های ext2 و ext3 در نسخه‌‌های فعلی کرنل لینوکس فعلی، پیاده‌سازی نشده‌اند. این خصیصه‌ها در نسخه‌های آتی فایل سیستم‌های ext2 و ext3 پیاده‌سازی خواهند شد.
  • آپشن j فقط زمانی مفید است که فایل سیستم به حالت ext3 ماونت شده باشد.
  • آپشن D فقط بر روی کرنل‌های لینوکس ۲.۵.۱۹ و بعد از آن مفید است.
  • حدف کردن و یا اعمال کردن خصیصه‌های a‏، i  فقط توسط کاربر ریشه یا پروسه‌ای که خصیصه CAP_LINUX_IMMUTABLE را داشته باشد امکان پذیر است.
  • حذف کردن و یا اعمال خصیصه‌ی j نیز توسط کاربر ریشه یا پروسه‌ای که خصیصه CAP_SYS_RESOURCE را داشته باشدمیسر است.

اعمال یا حذف کردن خصیصه‌های قابل اعمال با chattr بسیار ساده است. بعنوان مثال برای تغییر ناپذیر کردن دستور ls کافی است وارد کنیم:


chattr +i /bin/ls

حذف کردن این خصیصه نیز به راحتی عوض کردن علامت + با علامت – در دستور بالاست:


chattr -i /bin/ls

خب خسته نباشید. این مطلب هم به پایان رسید. نظراتتون رو همین پایین مطرح کنید. :)

منابعی که من استفاده کردم عبارتند است:

  • کتاب ubuntu linux toolbox تالیف آقایان Christopher Negus و François Caen از انتشارات Wiely
ارسال شده در تخصصی | برچسب‌شده , , , , , , , , , , | ۱۵ پاسخ

اسکریپت inetfire

سلام، عذر می‌خوام بابت تاخیری در نوشتن پست جدید پیش اومده بود. راستش به حدی درگیر کارها بودم که فرصت نوشتن نداشتم.

دیروز اینترنت قطع شده بود، ساده‌ترین کاری که یک کاربر لینوکس در این حالت انجام می‌ده، استفاده از دستور ping هستش. من هم این دستور رو اجرا کردم و منتظر تغییر در خروجی این دستور بودم که با خودم فکر کردم خب چه کاریه؟ ما این همه شل اسکریپت بلدیم یه چیزی بنویسیم که کاربردی‌تر و جذاب‌تر باشه.

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

این اسکریپت دو آرگومان اختیاری دیگری نیز (علاوه بر مدت زمان وقفه) می‌پذیرد:

  • تعداد پکت‌ها: معرف تعداد بسته‌هایی است که ابزار پینگ برای بررسی در دسترس بودن اینترنت باید ارسال نماید. تعداد این پکت‌ها نباید از مقدار زمان وقفه بر حسب ثانیه کمتر باشه. چون هر بسته در یک ثانیه ارسال می‌شود. تعداد پکت‌های پیش فرض ۱ عدد است.
  • آدرس IP: معرف آدرس IP نودی است که دسترسی به آن ملاک دسترسی به اینترنت است. به صورت پیش‌فرض آدرس ۴٫۲٫۲٫۴ در نظر گرفته شده است.

ساختار این اسکریپت بسیار ساده‌ است، بخشی که باعث شده من این اسکریپت را در اینجا قرار بدم، سوای مفید بودن خود اسکریپت بخش بررسی صحت پارامتر IP می‌باشد. باید اعتراف کنم من به دلیل کمبود وقت این بخش را از اینجا برداشتم؛ مطمئنم شما با مطالعه‌ی راهنمای regex (اولین پست همین وبلاگ) به راحتی می‌توانید مکانیزم آن را درک کنید و یا regex خودتان را بسازید و جایگزین آن کنید چون این اسکریپت با مجوز GNU GPL v.3 منتشر می‌شود. :)

inetfire script, internet notifier script

inetfire, internet notifier script

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

sudo cp inetfire /usr/bin/

برای استفاده از آن هم کافی است راهنمای آن را فراخوانی کنید:


inetfire --help

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

inetfire - internet notifier shell script

"910" مرتبه دانلود شده

ارسال شده در عمومی, مقاله | برچسب‌شده , , , , | ۵ پاسخ

بررسی راهکارهای پیاده‌سازی یک رابط وب برای ابزار‌های سیستمی

این مقاله را در دومین همایش سراسری نرم افزارهای آزاد/متن باز که ۱۷ و ۱۸ ام شهریور ماه امسال در زنجان برگزار شد ارائه کردم.

در این مقاله به بررسی راهکارها و روش‌های پیاده‌سازی یک رابط وب برای تعامل با ابزارهای سیستمی لینوکس پرداخته‌ام. در همایش از من پرسیده شد که روش‌های زیادی برای پیاده‌سازی این سناریو قابل اجراست، چرا شما به این چند راهکار پرداخته‌اید؟ در جواب باید بگویم این مقاله در حال حاضر کامل نیست و در واقع این از آن دسته مقالاتی نیست که کامل شود. جریانی است برخواسته از تفکر، آزمون و پیاده‌سازی و بررسی جوانب هر راهکار از دید کارآیی و امنیت. در حقیقت یکی از دلایلی که این مقاله را به همایش zconf ارسال کردم این بود که مقالاتی که به این همایش ارسال می‌شوند تحت مجوز GNU منتشر می‌شوند و همه می‌توانند آن‌ها را بهبود داده، بنا به نیاز خود سفارشی کرده و کامل کنند.

سورس راهکارهایی که در این مقاله بررسی شده‌اند، به زبان perl موجود است. البته راهکارهای گروه «الف» اکثرا با ایجاد تغییر در پیکربندی سیستم اجرا می‌شوند، با این حال من در یک ماشین مجازی آن‌ها را بررسی کرده و صحت اجرای آن‌ها را تضمین می‌کنم. راهکارهای گروه «ب» نیز پیاده‌سازی شده اند و به خوبی راهکارهای گروه اول عمل می‌کنند.

سورس‌ها را باید کمی اصلاح و ویرایش کنم پس آن‌ها را بسته به میزان درخواست شما  و اینکه زمان کافی برای اصلاح آن‌ها پیدا کنم، (به زودی؟) آپلود خواهم کرد.

فایل فشرده حاوی: اسلاید، سورس odt مقاله و خروجی pdf با حجم ۱.۷ مگابایت.

implementing web interface for administrative tools

"1277" مرتبه دانلود شده

ارسال شده در تخصصی, مقاله | برچسب‌شده , , , , , , , , , , , | ۳ پاسخ

راست-به-چپ نویسی برای همیشه!

آیا درج کاراکترهای LTRM و RTLM برای نوشتن هر متنی در دو جهت (راست به چپ و چپ به راست) کافی است؟

– خیر! برای یادگیری دو کاراکتر جدید یونیکد آماده هستین؟
این دو کاراکتر را مدیون دوست خوبمون آقای «سجاد احمدی» هستیم که مسئله‌ی «زیرنویس‌ها» را مطرح کرد:

خب یک سوال.
برای زیرنویس فیلم‌ها که به فرمت معمول ‏srt هستن، معمولا کل خط چپ به راست در نظر گرفته میشه.
اگه واژه انگلیسی میان جمله بیاد نوشته به هم می‌ریزه مثلا:
اینجا KLKB است.ما به کمک احتیاج داریم
ولی اونچه که موقع پخش نشان داده میشه اینه:
است.ما به کمک احتیاج داریم ‏KLKB اینجا
در واقع تمام واژه های فارسی بعد از واژه انگلیسی اول میاد بعد واژه انگلیسی میاد و بعد واژه های فارسی قبل از انگلیسی.این به تعداد واژه های انگلیسی داخل جمله تعمیم هم پیدا می کنه.
چه راه حلی برای این مشکل پیشنهاد می‌کنی؟

در متون زیرنویس متن به صورت پیش‌فرض چپ به راست در نظر گرفته می‌شود و همین باعث بروز این مشکل است؛ راه حل این مشکل در دو کاراکتر LRE و RLE نهفته است:

اول اینکه این متون می‌بایست با انکدینگ unicode ذخیره شوند، در غیر اینصورت تلاشتان بی‌فایده خواهد بود. در مرحله‌ی بعد، می‌بایست پیش از شروع جمله کاراکتر Right-to-Left Embedding درج شود و سپس شروع به نوشتن جمله‌ نمایید. این روش در اکثر پخش کننده‌های ویدیویی بدون اشکال نمایش داده می‌شود.

right-to-left subtitle shows correctly with unicode encoding and rle character in the beginning

right-to-left subtitle

سوال: چطور کاراکتر Right-to-Left Embedding  و Left-to-Right Embedding را درج کنیم؟

 کاراکتر در صفحه کلید استاندارد فارسی  در صفحه کلید ویندوز
 Left-to-Right Embedding ‪ alt + [  ؟؟
 Right-to-Left Embedding ‪ alt + ]  ؟؟

*‌ توجه دارین که این کلید‌ها در صفحه کلید فارسی استاندارد (لینوکس) عمل خواهند کرد.
** منظور از alt کلید alt سمت راست صفحه کلید است. (درود بر شاهین آزاد به خاطر تذکر این مطلب)
*** متاسفانه هنوز کلید‌های معادل این کاراکترها را در صفحه‌ کلید ویندوز پیدا نکرده‌ام.

این کاراکترها چند جای دیگر هم به کار می‌آیند:

  • در فروم‌ها یا کادرهای متنی‌ای که امکان راست به چپ نویسی در آن‌ها وجود ندارد (مثل فروم kmplayer)
  • در کلاینت‌های twitter و Identica یا کلاینت‌های IRC و…

فراموش نکنید با تمرین و تجربه نحوه‌ی درج این کاراکترها را یاد بگیرید تا قدرت فارسی نویسی‌مان را باز هم بهبود داده باشیم.

کاربر ویندوز! نرم افزار صفحه کلید استاندارد فارسی حاصل تلاش احسان اخگری منتظر دانلود شماست 😉

ارسال شده در عمومی | برچسب‌شده , , , , , , , , , , | ۳۱ پاسخ

ویدیو آموزش درج کاراکترهای LTR و RTL

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

حجم ویدیو: ۴٫۷MB

insert LTR and LRTL characters

"1110" مرتبه دانلود شده

ارسال شده در عمومی, مقاله | برچسب‌شده , , , , , , , , , , , | ۸ پاسخ

چند کاراکتر برای بهبود فارسی‌ نویسی در لینوکس و ویندوز

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

  • درج نیم‌فاصله
  • درج کاراکتر left to right mark
  • درج کاراکتر right to left mark
  • درج کاراکتر کشیــــــــده یا (همان تطویل)

توجه: درج کارکترهای نیم فاصله، ltr mark و rtl mark بدون نصب هیچ نرم افزار اضافه‌ای بر روی سیستم شما چه ویندوز باشد چه لینوکس، امکان‌پذیر است. :)

نیم‌فاصله: از نظر ماهیتی، جزئی از زبان فارسی است. به کلماتی مثل «می‌شود»، «دست‌های نقره‌ای» و «فارسی‌نویسی» توجه کنید. بین «می‌» و «شود» یک نیم‌فاصله وجود دارد، همچنین بین «دست» و «های» و «نقره» و «ای».

این دو نوشته را مقایسه کنید:

«اصل مزیت نیم‌فاصله این است که خوانایی متن را بالا می‌برد. عموما کاربران نمی‌دانند استفاده از نیم‌فاصله چقدر می تواند خواندن متن را آسان کند.»

«اصل مزیت نیم‌فاصله این است که خوانایی متن را بالا می‌برد. عموما کاربران نمی‌دانند استفاده از نیم‌فاصله چقدر می‌تواند خواندن متن را آسان کند.»

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

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

مورد دوم در مورد درج کاراکتر ltr است. ممکن است به عباراتی شبیه این در متون ترکیبی انگلیسی-فارسی برخورد کرده باشید:

این کشور USA (united states of america) نام داشت که می‌بایست USA (united states of america)‎ تایپ می‌شد.

یا new? در حالیکه new?‎ مد نظرتان بوده است.

این نوشته‌ها به خاطر درج نشدن کاراکتر Left to Right Mark که یک کاراکتر در استاندارد یونیکد است به این روز افتاده‌اند. این کاراکتر در واقع به مفسر متن اعلام می‌کند که آنچه تایپ شده می‌بایست به صورت چپ-به-راست نمایش داده شود.

و کاراکتر دیگری نیز وجود دارد که خواهر همین کاراکتر است: Right to Left Mark، این کاراکتر به مفسر متن می‌گوید آنچه تایپ شده می‌بایست به صورت راست-به-چپ نمایش داده شود.

این کاراکتر به جملاتی مثل this، that و the other کمک می‌کند و آن‌ها را به شکل this،‏ that و the other نمایش می‌دهد.

گاهی ممکن است بخواهید کلمه‌ای را به صورت طـــــــولانــــــــــــــــــــــــــی  بنویسید. کارکتر «کشیده» در صورتی که به طور صحیح استفاده شود، می‌تواند به خواناتر شدن متن نیز کمک کند.

اما چطور این کاراکترها را درج کنیم؟  با کمک جدول زیر کلید‌های مناسب را پیدا کنید:

کاراکتر/  سیستم عامل در ویندوز در لینوکس
نیم‌فاصله ctrl + shift + 2 shift + space
Left to Right Mark ctrl + shift + 3 alt + (‎
Right to Left Mark ctrl + shift + 4 alt + )‎
کشیده (تطویل) shift + j shift + -‎

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

هشدار۲: منظور از alt در اینجا دکمه alt سمت راست صفحه کلید است. (با تشکر از دوست خوبم، شاهین آزاد که این مطلب را تذکر دادن)

در ابتدا استفاده از این کاراکترها آسان به نظر نمی‌رسد، ولی با کمی تمرین و پشتکار به آن‌ها مسلط خواهید شد. وجود مهارت درج این کاراکترها به شما اجازه می‌دهد تا بتوانید در هر ویراستار متنی‌ (که از یونیکد پشتیبانی کند)، بدون نگرانی متن دلخواهتان را بنویسید. من با کمک این ابزارها می‌توانم از google docs استفاده کنم و هیچ مشکلی با libreOffice یا سایر بسته‌های اداری نداشته باشم.

در مورد کارکاکتر LTRM و RTLM در ویکی پدیا بیشتر بخوانید…

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

برای نوشتن این مقاله از این منابع نیز کمک گرفتم:

Free Online Unicode Character Map

Web Design Group

DecodeUnicode.org

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

ارسال شده در عمومی | برچسب‌شده , , , , , , , , , , , , | ۲۳ پاسخ

جستجو در متون غیرانگلیسی (فارسی) به کمک regex

این پست در واقع پاسخی به کامنت دوست خوبم آقا حسین هستش؛

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

پیش از هر چیز، باید فرمت متنی نوشته تعیین شود. نوشته‌های فارسی موجود در دنیای دیجیتال عموما به یکی از سه دسته‌ی زیر تعلق دارند:

  • نوشته‌هایی با انکدینگ WINDOWS-ARABIC-1256 (یا به روایتی ISO-8859-6)، وب‌ سایت‌های فارسی اواخر دهه نود و اوایل قرن بیست و یکم از چنین فرمتی برای نمایش متون فارسی استفاده می‌کردند.
  • نوشته‌هایی با فرمت UTF-8 یا (unicode) که بعد از مطرح شدن استاندارد یونیکد بوجود آمدند و در حال حاضر اکثر وب سایت‌های فارسی نوشته‌های خود را در این فرمت ارائه می‌کنند..
  • نوشته‌هایی با فرمت UTF-16 یا (unicode 16) که نسل بعدی استاندارد فوق هستن و زبان‌های بیشتری پشتیبانی می‌کند. من در گوشی موبایلم (p990i) در قسمت مربوط به پیامک (اس.ام.اس سابق)، به این نوع متن برخوردم.

چطور بفهمیم متنی که در اختیار داریم، جزو کدوم دسته است؟

راه ساده‌ای برای این کار وجود دارد؛ کافی است فایل متنی خود را با مرورگر فایرفاکس باز کنید و از منوی View زیر منوی Character encoding و زیر منوی More Encodings انکدینگ‌ها را تست کنید. هر زمان که متن به درستی نمایش داده شد، انکدینگ مناسب را یافته‌اید.

firefox encoding screenshot

firefox encoding

پس از شناسایی انکدینگ مناسب، می‌بایست جدول کاراکتری مربوط به آن انکدینگ را پیدا کنید. برای اینکار می‌توانید از گوگل کمک بگیرید (جدول نمونه انکدینگ‌های فوق در پانویس۲ آمده است)

حالا بعنوان مثال فرض کنید متنی با انکدینگ UTF-8 داریم که حاوی کلماتی مثل انشاء، املاء و اشیاء و مانند اینهاست و می‌خواهیم همه‌ی این همزه‌های عربی را از انتهای این کلمات (یا هر جای دیگری که باشند) پاک کنیم تا موجبات خشنودی فرهنگستان زبان فارسی فراهم شود.

برای UTF-8، این لینک همه کاراکترها را به همراه کد هگزادسیمال نمایش می‌دهد.با مراجعه به جدول کاراکتر‌ی در این لینک و انتخاب گزینه‌ی Arabic از کادر وسط صفحه، متوجه می‌شویم در ردیف کاراکتر همزه چنین آمده:

ARABIC LETTER HAMZA d8 a1 ء U+0621

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

sed -e "s/\xd8\xa1//g" old-text.txt > updated-text.txt

ذکر این نکته ضروری است که استاندارد UTF-8 از دو بایت فضا برای نمایش کاراکتر‌ها استفاده می‌کند در حالیکه استاندارد اسکی (بخوانید: ASCII) از یک بایت فضا برای ذخیره کاراکترها کمک می‌گیرد. درست به همین دلیل است که در اینجا از دو نشان x\ کمک گرفتیم که هر یک بخشی از کد هگزادسیمال کاراکتر همزه را اعلان می‌کنند.

نکته‌ای که در اینجا لازم می‌دانم مطرح کنم این موضوع است که در مثال‌های جایگزینی می‌توانید با خیال راحت کاراکتر‌ها را بنویسید چرا که در خروجی به همان ترتیبی که شما ذکر کردید نمایش داده خواهند شد.

اجازه بدهید با یک مثال این موضوع را بررسی کنیم، فرض کنید در متنی می‌خواهم کلمه‌ی «رضا» را با «رضا جان»جایگزین کنم. با دستور sed چنین خواهم نوشت:

sed -e "s/\xd8\xb1\xd8\xb6\xd8\xa7/\xd8\xb1\xd8\xb6\xd8\xa7 \xd8\xac\xd8\xa7\xd7\x86/g" reza.txt > reza-jan.txt

با دیدن این مثال‌ها، بیش از پیش از وجود ادیتور‌های امروزی سپاسگزار می‌شویم! ولی این فقط یک مثال ساده بود، سناریو‌های پیچیده‌تری می‌توانند وجود داشته باشند که ما را دست به دامان همین ابزارهای قدیمی و پرقدرت می‌کند.

این مثال‌ها همگی در انکدینگ UTF-8 بوده است ولی در استفاده از این الگو محدودیتی وجود ندارد. می‌توانید این کارکرد با اندکینگ‌های دیگر نیز تست کنید. (البته من تست نکردم ولی منطق امر می‌گوید می‌بایست به همین خوبی جواب بدهد)

پانویس ۱-  خواندن کد‌هایی که باید در ترمینال اجرا شوند، آسان نیست. من به یک syntax highlighter مناسب برای وردپرس احتیاج دارم ولی متاسفانه هنوز موفق نشدم گزینه‌ی مناسبی برای این کار پیدا کنم. :(

پانویس۲ – بعضی از این لینک‌ها مرجع این مقاله بوده‌اند و بعضی دیگر در رابطه با این مقاله هستند که دیدنشان خالی از لطف نیست.

http://www.regular-expressions.info/unicode8bit.html

http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1536, UTF-8 character tables

http://en.wikipedia.org/wiki/ISO/IEC_8859-6, WINDOWS-ARABIC-1265 character table

http://www.unicode.org/charts/, UTF-16 character tables

ارسال شده در عمومی | برچسب‌شده , , , , , | ۵ پاسخ

shopt، ابزاری برای سفارشی سازی شل

چند بار پیش آمده که در تایپ یک مسیر اشتباه کرده باشید و آرزو کنید ای کاش bash به حدی هوشمند بود که اشتباهات تایپی کوچک شما را نادیده می‌گرفت؟چند بار پیش آمده که دستور cd را برای تغییر مسیر جاری از قلم انداخته‌اید؟ چند بار پس از خروج از یک شل پروسه‌هایی از خود به جا گذاشته‌اید و آرزو کردید ای کاش با بسته شدن شل همه پروسه‌های اجرا شده در آن هم بسته می‌شد؟

– هیچ بار؟

بسیار خب حتی اگر هیچ بار چنین شرایطی برای شما پیش نیامده باشد، آشنایی با دستور shopt می‌تواند شما را با لیستی از گزینه‌ها آشنا کند که هر یک به نحوی بر عملکرد bash اثر می‌گذارند و یا می‌توانند به شما در نوشتن شل اسکریپت‌هایی بهتر کمک کند. حالا علاقه مند شدین؟

این مقاله که در ۵ صفحه نگاشته شده، می‌تواند شروع خوبی برای ملاقات shopt باشد. در اینجا از دوست خوبم آقای «ابوالفضل امیدی» مدرس لینوکس و کارشناس امور امنیتی فضای سایبر به خاطر معرفی این دستور تشکر و قدردانی می‌کنم.

حجم دانلود: ۹۹ کیلوبایت

shopt

"1819" مرتبه دانلود شده

لینک اصلاح شد.

ارسال شده در عمومی, مقاله | برچسب‌شده , , , , , | پاسخ دهید:

چرا از MBR بک آپ بگیریم؟

خب قبل از هر چیز باید سال نو رو تبریک بگم! امیدوارم که سال خیلی خوبی برای همه باشه.

قبل از اینکه لزوم پشتیبان گیری (بخوانید: بک آپ گیری) از MBR رو بگم، باید بگم اصلا MBR چی هست؟

MBR چیست

Master Boot Record اشاره به اولین ۵۱۲ بایت اطلاعات دیسک داره یا به قولی اولین رکورد دیسک. اغلب  MBR در ارتباط با هارد دیسک ‌ها مطرح می‌شه در حالیکه این رکورد در رسانه‌هایی که اطلاعاتشون رو به حالت بلوکی ذخیره می‌کنند هم هست مثل کول دیسک‌ها یا کارت‌های مموری.

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

برای اطلاعات بیشتر در خصوص MBR تعریف آن را در ویکی پدیا ببینید.

چرا پشتیبان بگیریم؟

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

چطور پشتیبان بگیریم؟

خیلی خب برای پشتیبان گرفتن از MBR هارد یا کول دیسک خودتون می‌بایست آدرس ابزارتون رو بشناسین. که چیزی شبیه dev/sda/ می‌تونه باشه. برای اطلاع بیشتر در این خصوص به مقاله‌ی پارتیشن بندی در لینوکس مراجعه کنین.

برای انجام عملیات با فرض اینکه ابزار در مسیر dev/sda/ وجود داره وارد می‌کنم:


$ sudo dd if=/dev/sda of=backup.mbr bs=512 count=1

با این دستور در مسیر جاری فایل backup.mbr با حجم ۵۱۲ بایت ساخته می‌شه. که همون فایل پشتیبان شماست.

چطور پشتیبان را بازنشانی کنیم؟

برای بازنشنانی (بخوانید: restore) فایل پشتیبان کافی است جای if و of را عوض کنین. به این شکل:

$ sudo if=backup.mbr of=/dev/sda bs=512 count=1

تجربه خودم:

در اثر استفاده از یک نرم افزار نصب لینوکس-روی-کول-دیسک کول دیسکم قاطی کرده بود. نه می شد فرمتش کرد و نه حتی پارتیشن بندی!

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

ارسال شده در دسته‌بندی نشده | ۲ پاسخ

tty و pts چیستند

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

تعریف tty

tty در گذشته به teletypewriter ها گفته می‌شد و امروز به هر ترمینالی در سیستم‌های لینوکس/یونیکس اطلاق می‌شود.

تعریف PTS

سرواژه‌ی عبارت pseudo terminal slave است.

تفاوت PTS با TTY

تفاوت بین TTY و PTS به نوع اتصالشان به کامپیوتر برمی‌گردد. پورت‌های TTY اتصال مستقیم به کامپیوتر هستند مثل صفحه کلید، ماوس یا هر وسیله‌ای با ارتباط سریال. اتصالات PTS ارتباطاتی از نوع SSH یا telnet هستند. همه‌ی این نوع اتصالات می‌توانند به shell وصل شوند و به کاربر اجازه دهند با کامپیوتر کار کند.

منبع

ارسال شده در تخصصی, مقاله | برچسب‌شده , , , , | ۵ پاسخ