اردیبهشت ۱۰ ۱۳۹۷

بک آپ گیری از تلگرام

‏با توجه به فیلتر شدن تلگرام، تا ساعاتی دیگر اپلیکیشن موبایلی بک‌آپ‌گیری ⁧ #امن ⁩ و رمزنگاری شده از تلگرام را در اختیار کاربران عزیز بیان قرار خواهیم داد.

پشتیبان‌گیری از مخاطبین، چت‌ها، گروه‌ها، کانال‌ها و موارد ذخیره شده شخصی …


اردیبهشت ۸ ۱۳۹۷

مرکز خرید ویندوز، دنیای لینوکس


اردیبهشت ۸ ۱۳۹۷

مرکز خرید ویندوز، دنیای لینوکس


اردیبهشت ۵ ۱۳۹۷

زیر پوست داکر چه خبر است

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

در این پست قرار است که به زیرساخت‌هایی که داکر مبتنی بر آن ساخته شده است اشاره شود. هدف نهایی نشان‌دادن این موضوع است که داکر امکانات خود را به چه صورت ارائه می‌کند.

مقدمه

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

کرنل لینوکس

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

  • فضای نام(namespace)ها در لینوکس: فضا‌های نام این امکان را بوجود می‌آورند که بتوانند بخشی از منابع سیستم را بصورت ایزوله به پروسه‌هایی که درون آنها قرار دارند ارائه دهند. این منابع تنها توسط پروسه‌های درون آن قابل روئیت است. فضاهای نامی در داکر مورد استفاده قرار گرفته‌اند عبارتند از
    • فضای‌نام PID: که باعث می‌شود پروسه تنها پروسه‌های درون خود را ببینند
    • فضای‌نام NET: که باعث می‌شود بتوان کارت‌شبکه، پشته شبکه و سایر موارد را بصورت ایزوله ارائه کرد.
    • فضای‌نام IPC: که روندهای ارتباطی بین پروسه‌های مختلف را ایزوله می‌کند.
    • فضای‌نام MNT: که نحوه اتصال(mount) واسط‌های ذخیره سازی را ایزوله می‌کند.
    • فضای‌نام UTS: که نام کامپیوتر(hostname) و دامنه(NIS) را ایزوله می‌کند.
  • گروه‌های کنترلی یا cgroups: کرنل لینوکس این امکان را فراهم می‌اورد که پروسه‌ها در یک ساختار سلسله مراتبی قرار گفته و دسترسی آن به منابع سیستم محدود شود و مورد پایش قرار گیرد. این باعث می‌شود بتوان به عنوان مثال میزان استفاده از سی پی یو یا رم را کنترل کرد.

فایل سیستم

تکنولوژی دیگری که در داکر مورد استفاده قرار گرفته است، استفاده از یک سیستم فایل خاص به ویژگی copy on write است. سیستم فایلهای با این ویژگی را می‌توان بصورت لایه لایه ذخیره کرد و هنگام انتقال در صورت وجود داشتن نسخه قبلی تنها تفاوت‌ها را ارسال نمود. همچنین این امکان به ما این اجازه را میدهد که بتوانیم تغییرات را نسخه متفاوت همانند یک سیستم مدیریت نسخه پیگیری نماییم. سیستم فایلی که داکر از آن استفاده union file system است که ویژگی‌های زیر را دارد:
– بصورت لایه‌ایست
– هر لایه بایستی commit شود
– هر لایه بصورت فقط خواندنی ذخیره می‌شود.
– تنها فایلهای تغییر یافته در آن لایه ذخیره می‌شوند.

اجرا یک کانتینر

برای اجرای کانتیر و مشخص کردن تمام مشخصات آن بایستی این مشخصات را به فرمتی توصیف کرد. در داکر این فرمت container format نام داشته و داکر سعی در استاندارد کردن آن را دارد.

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


فروردین ۳۱ ۱۳۹۷

آموزش Upgrade کردن دیتابیس Couchbase Server

Couchbase_logo

در مطالب قبلی نحوه نصب دیتابیس Couchbase server و همچنین نحوه ی کلاستر کردن دیتابیس Couchbase server آموزش داده شد.در این مطلب قصد داریم تا نسخه ی Couchbase Server خود را Upgrade کنیم.

برای Upgrade کردن دیتابیس Couchbase Server کافیست تا مراحل زیر را انجام داد.

۱- ابتدا نسخه جدید Couchbase Server را از سایت رسمی آن دانلود کنید.ما در این مطلب فرض می کنیم که در حال حاضر نسخه ی Couchbase Server 4.1 بر روی سرور نصب می باشد و قصد داریم تا آن را به نسخه ی Couchbase Server 4.6 آپگرید کنیم.

بسته ی دانلود شده با نام couchbase-server-enterprise-4.6.1-centos7.x86_64.rpm می باشد.

۲- اکنون application خود را باید Shut down کنید تا هیچ درخواستی را به Couchbase Server ارسال نکند.

۳- اکنون باید  از دیتابیس های خود backup تهیه کنیم.برای اینکار کافیست تا «آموزش Backup و Restore دیتابیس Couchbase server» را مطالعه کنید.

۴- پس backup گرفتن از دیتابیس ها اکنون نوبت به backup گرفتن از فایل های پیکربندی Couchbase Server می باشد :

 

#cp /opt/couchbase/var/lib/couchbase/config /data/backup

۵- اکنون سرویس Cochbase Server را باید Stop کنید.

نکته اینکه اگر Couchbase Server شما کلاستر است باید کارهای گفته شده را روی همه Node ها انجام دهید.

 

#systemctl stop couchbase-server.service

 

اکنون برای upgrade کردن Couchbase Server کافیست تا دستور پایین را اجرا کنید :

 

 

#yum update couchbase-server-enterprise-4.6.1-centos7.x86_64.rpm

 

 

اگر Cochbase Server شما در حالت Cluster است اینکار را به ترتیب از Node 1  تا آخرین Node انجام دهید.پس از اجرای دستور بالا سرویس Couchbase به صورت خودکار Start خواهد شد.

اکنون پس از انجام کارهای گفته شده سرویس دیتابیس Couchbase Server شما آپگرید شده است.

امید است تا از این مطلب استفاده لازم را برده باشید.

 

 


فروردین ۲۹ ۱۳۹۷

استریم صوت بر روی شبکه

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

راه حل اول: پشتیبانی TCP

ابتدا در فایل default.pa مربوط به تنظیمات Pulseaudio بر روی سرور و کلاینت در مسیر /etc/pulse/ نسبت به فعالسازی ماژول TCP‌اقدام نمایید. برای این کار کافی است خط زیر را به قایل اضافه و یا در صورت موجود بودن با حذف # از ابتدای خط آن را از حالت توضیحات در بیاورید.

load-module module-native-protocol-tcp

برای کارکردن باید اطمینان حاصل کنید که هر دو سیستم سرور و کلاینت از یک کوکی مشترک که در مسیر ~/.config/pulse/cookie قرار دارد استفاده می کند. اینکه کوکی مربوط به سرور یا کلاینت باشد تفاوتی نمی کند مهم استفاده اشتراکی از یک کوکی می باشد.

راه حل دوم :پشتیبانی TCP با دسترسی کلاینت های ناشناس

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

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1

زیر شبکه (Sub Net) را مطابق نیز کلاینت هایی که می خواهید به سرور دسترسی داشته باشند را تغییر دهید.

راه حل سوم :

انتشار در بستر Zeroconf

برای اینکه سرور در بخش انتخاب خروجی تنظیمات Pulseaudio کلاینت ها نمایش داده شود لازم است که ماژول Zeroconf را بارگذاری کنید و سرویس Avahi را فعال و اجرا کنید. برای این کار بر روی هر دو سیستم بسته نرم افزاری pulseaudio-zeroconf رانصب کنید و نسبت به فعال سازی و اجرای سرویس  avahi-daemon اقدام کنید.
بر روی سیستم سرور خط  load-module module-zeroconf-publish و بر روی سیستم کلاینت خط load-module module-zeroconf-discover را برای بارگذاری ماژول به default.pa اضافه نمایید.
حال با انتخاب نوع خروجی در بخش تنظیم خروجی تنظیمات Pulseaudio تمامی صوت را به اسپیکر متصل به سرور هدایت کنید.


فروردین ۲۸ ۱۳۹۷

آموزش خط فرمان: قسمت هفتم، هدایت و تغییر مسیر

نوشته شده توسط فرشید نوتاش حقیقت.

در این آموزش یکی از بهترین ویژگی‌های خط فرمان یعنی هدایت و تغییر مسیر I/O را خواهیم آموخت.

I/O Redirection مخفف عبارت Input Output Redirection به معنی هدایت ورودی خروجی می‌باشد و با استفاده از خواهید شد این امکان، می‌توان ورودی و خروجی فرمان‌های لینوکس را به فایل‌ها و از فایل‌ها هدایت نمود و همچنین چندین فرمان قدرتمند ترکیبی ایجاد کرد. به منظور فراگیری این قابلیت در این بخش با فرمان‌های cat، sort، uniq، wc، grep، head و tail آشنا خواهید شد.

خروجی و ورودی استاندارد و خطا

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

اگر این ایده که در لینوکس همه چیز فایل است را به یاد بیاوریم می‌بینیم که برنامه‌هایی مثل ls نتایج خود را به درون یک فایل خاص با نام Standard Output (خروجی استاندارد) می‌فرستد و همچنین پیام‌های خطا را به درون یک فایل خاص تحت عنوان Standard Error (خطای استاندارد) می‌فرستند. به صورت پیش‌فرض هر دوی این فایل‌ها به جای ذخیره‌سازی بر روی دیسک به صفحه نمایش لینک می‌شوند.

به‌علاوه بسیاری از برنامه‌ها، ورودی خود را از تسهیلاتی به نام Standard Input (ورودی استاندارد) می‌گیرند. I/O Redirection ما را قادر می‌سازد تا مسیری که خروجی به آن می‌رود و یا مسیری که ورودی از آن می‌آید را تغییر دهیم. به‌صورت عادی خروجی به صفحه‌نمایش هدایت می‌شود و ورودی از صفحه‌کلید می‌آید ولی با استفاده از I/O Redirection می‌توان این حالت پیش‌فرض را تغییر داد.

تغییر مسیر (Redirection) خروجی استاندارد

I/O Redirection به ما اجازه می‌دهد تا مسیری که خروجی می‌رود را دوباره تعریف کنیم. به‌منظور تغییر جهت و هدایت خروجی استاندارد به یک فایل دیگر به جای هدایت به صفحه‌نمایش ما از عملگر هدایت یعنی < استفاده شده و در ادامه آن نام فایل را ذکر می‌کنیم. برای مثال ما می‌توانیم به خط فرمان بگوییم که خروجی فرمان ls را به جای آن که آن را در صفحه نمایش نشان دهد به فایل ls-output.txt بفرستد.

در اینجا ما یک لیست بلند از دایرکتوری /usr/bin ایجاد نموده و نتایج را به فایل ls-output.txt فرستادیم. در ادامه خروجی فرمان را آزمایش می‌کنیم:

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

در ادامه آزمون هدایت را این بار با کمی پیچیدگی انجام می‌دهیم. نام دایرکتوری را به چیزی که وجود ندارد تغییر می‌دهیم:

یک پیام خطا دریافت نمودیم. این امری کاملاً طبیعی است چرا که دایرکتوری را که وجود ندارد را به آن تخصیص داده‌ایم. ولی چرا پیام خطا به جای اینکه در فایل ls-output.txt ذخیره گردد بر روی صفحه نمایش نشان داده شد؟ پاسخ این است که برنامه ls پیام‌های خطا را به یک خروجی استاندارد ارسال نمی‌کند و از آن جایی که فقط خروجی استاندارد Standard Output را هدایت کردیم نه Standard Error. در نتیجه هنوز پیام‌های خطا در صفحه‌نمایش نشان داده می‌شوند. در آموزش‌های بعدی نحوه هدایت فایل Standard Error را نمایش خواهیم داد ولی قبل از مجدداً نگاهی دوباره به فایل خروجی خود خواهیم انداخت. با فرمان زیر اطلاعات کامل فایل، نمایش داده خواهد شد.

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

به‌سادگی با به‌کار بردن عملگر هدایت بدون هیچ فرمانی نتایج فایل را حذف می‌کنیم و یک فایل جدید خالی ایجاد می‌کنیم. برای آنکه نتایج حذف نشوند بایستی از عملگر >> برای (Redirection)  استفاده کنیم. به مثال زیر توجه کنید:

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

تغییر مسیر (Redirection) خطای استاندارد

هدایت و تغییر مسیر خطاهای استاندارد فاقد یک عملگر اختصاصی هدایت می‌باشد. به‌منظور هدایت خطاهای استاندارد بایستی به توصیفگر فایل (file descriptor) مراجعه کرد. یک برنامه می‌تواند خروجی را بر روی هر جریان شماره‌گذاری شده فایل، ایجاد کند.

زمانی که ما به سه مورد اول این جریان‌های فایل به عنوان ورودی، خروجی و خطای استاندارد نگاه کنید. شل (Shell) آن‌ها را با توصیفگرهای فایل ۰، ۱ و ۲ اشاره می‌کند. شل علامت‌گذاری برای هدایت فایل‌ها با استفاده از شماره توصیفگر فراهم می‌کند. خوب از آن‌جایی که خطای استاندارد همان فایل توصیفگر شماره ۲ است، می‌توان خطای استاندارد را با این علامت انجام داد:

شماره توصیفگر بلافاصله پیش از عملگر هدایت یعنی > قرار می‌گیرد تا عملیات هدایت خطای استاندارد به فایل ls-error.txt صورت پذیرد.

هدایت خروجی استاندارد و خطای استاندارد به داخل یک فایل

در برخی مواقع نیاز می‌شود همه خروجی فرمان‌ها را به داخل یک فایل مجزا بریزیم. برای انجام این کار بایستی هم خطای استاندارد و هم خروجی استاندارد را به صورت همزمان هدایت (Redirect) کرد. به این منظور دو روش وجود دارد. روش اول روش رسمی است که بر روی نسخه‌های قدیمی شل (Shell) هم کار می‌کند:

با استفاده از این متد، به صورت همرمان دو Redirect را انجام دادیم. اول خروجی استاندارد را به داخل فایل ls-output.txt ریختیم و سپس توصیفگر شماره ۲ یعنی همان خطای استاندارد را به توصیفگر شماره ۱ یعنی خروجی استاندارد هدایت کردیم. در این شیوه هدایت خطای استاندارد بایستی همیشه پس از هدایت خروجی استاندارد صورت پذیرد در غیر این صورت کار نخواهد کرد.

نسخه‌های اخیر بش (bash) یک شیوه ساده‌تری برای انجام این ترکیب می‌باشد:

در این مثال ما با استفاده از علامت &> خطای استاندارد و خروجی استاندارد را به‌صورت همزمان به داخل فایل ls-output.txt منتقل کردیم.

جلوگیری از خروجی ناخواسته

بعضی مواقع سکوت واقعاً لذت‌بخش است و ما از خط فرمان خروجی نمی‌خواهیم. فقط می‌خواهیم فرمان را اجرا کرده و از خروجی جلوگیری کنیم. این موضوع به‌پروژه برای پیام‌های خطا و پیام‌های وضعیت کاربرد خوبی دارد. سیستم یک شیوه برای انجام این کار فراهم آورده است. با هدایت خروجی به یک فایل با نام /dev/null این کار انجام می‌گیرد. برای سرکوب پیام‌های خطا از یک فرمان می‌توان این کار را به شیوه زیر انجام داد:

هدایت ورودی استاندارد

تا به اینجا هنوز با فرمانی که از ورودی استاندارد استفاده کند، مواجه نشده‌ایم. به همین منظور برای توضیح هدایت ورودی استاندارد فرمانی را توضیح خواهیم داد.

فرمان cat الحاق فایل‌ها در لینوکس

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

cat [file...]

می‌توان از فرمان cat به منظور نمایش فایل‌ها بدون صفحه‌بندی استفاده کنید. برای مثال:

این فرمان محتوای فایل ls-output.txt را نشان می‌دهد. Cat اغلب به منظور نمایش متن‌های کوتاه از فایل‌ها به کار می‌رود. از آنجایی که cat می‌تواند بیش از یک فایل را به‌عنوان آرگومان قبول کند، از آن می‌توان به‌منظور اتصال فایل‌ها به یکدیگر نیز استفاده کرد.

فرض کنید که فیلی عظیم را دانلود کرده‌اید. این فایل به بخش‌های کوچک‌تر تقسیم شده است (فایل‌های تصویری موجود در شبکه یوزنت معمولاً به این شیوه به اشتراک گذاشته می‌شوند) حال می‌خواهیم این بخش‌های کوچک را به هم متصل کنید تا فایل اصلی به حالت اولیه خود برگردد. اگر مثلاً فایل‌ها به این صورت نام‌گذاری شده باشند:

movie.mpeg.001 movie.mpeg.002 ... movie.mpeg.099

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

با توجه به اینکه Wildcardها همواره به ترتیب بسط پیدا می‌کنند در نتیجه این آرگومان فایل‌ها را به ترتیب صحیح به هم متصل خواهد کرد.

حال اگر فرمان cat را بدون هیچ آرگومانی وارد کنیم چه اتفاقی خواهد افتاد؟

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

سپس Ctrl+D را فشرده تا به cat بفهمانید که به آخر فایل در یک ورودی استاندارد رسیده‌ایم.

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

از این رفتار می‌توان به منظور ایجاد فایل‌های متنی کوتاه استفاده نمود. مثلاً می‌خواهیم یک فایل با نام lazy_dog.txt که حاوی متن تایپ شده است ایجاد کنیم. بایستی فرمان را به این شیوه تایپ کنیم:

پس از وارد کردن فرمان فوق، متن مورد نظر خود را تایپ می‌کنیم. در آخر با فشردن Ctrl+D فایل به پایان می‌رسد. برای نمایش نتایج وارد شده در فایل خود می‌توانیم باز هم از فرمان cat به منظور نمایش استفاده کنیم:

خوب حال می‌دانیم فرمان cat ورودی‌های استاندارد را قبول می‌کند:

یادآور می‌شویم که برای خروجی استاندارد از عملگر < استفاده می‌کردیم. حال برای ورودی استاندارد از عملگر > استفاده می‌کنیم. با استفاده از این عملگر و فرمان بالا منبع ورودی استاندارد را از صفحه‌کلید به فایل lazy_dog.txt تغییر دادیم. این کار خیلی کاربردی نیست ولی مفهوم را می‌رساند. یعنی این بار از یک فایل به عنوان منبع ورودی استاندارد استفاده می‌کنیم. فرمان‌های دیگر استفاده بهتری از ورودی استاندارد خواهند داشت. به این منظور به صفحات manual مراجعه نمایید.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت هفتم، هدایت و تغییر مسیر اولین بار در لینوکس سیزن پدیدار شد.


فروردین ۲۶ ۱۳۹۷

آموزش رایتر: قسمت ششم، کار با واژه‌ها

نوشته شده توسط فرشید نوتاش حقیقت.

در این آموزش قصد داریم به چگونگی کار کردن با واژه‌ها بپردازیم.

درج واژه‌ها

قبل از شروع تایپ باید نوع پاراگراف را مشخص نمود. یعنی متن، فارسی (از راست به چپ) است یا انگلیسی (از چپ به راست). برای این کار می‌توان از کلیدهای ترکیبی Ctrl+Shift سمت راست صفحه‌کلید برای حالت راست به چپ و از کلیدهای ترکیبی Ctrl+Shift سمت چپ صفحه‌کلید برای حالت چپ به راست استفاده کرد.

جابه‌جایی در متن

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

انتخاب واژه‌ها

قبل از اینکه بخواهیم هر تغییری روی متن انجام دهیم، نیاز است آن را انتخاب کنیم. انتخاب متن در داخل رایتر همانند انتخاب کردن متن در دیگر برنامه‌هاست.

برای انتخاب بلوک‌ها تمام روش‌های جابه‌جایی با کلید Shift انجام می‌شوند. علاوه بر انتخاب کردن بلوک‌هایی از متن، می‌توان آیتم‌هایی که متوالی نیستند و ستون‌ها (بلوک‌های عمودی از متن) را نیز انتخاب نمود.

برای انتخاب کردن آیتم‌هایی که متوالی نیستند اول قسمتی از متن را انتخاب، سپس کلید Ctrl را پایین نگه داشته و از ماوس برای انتخاب قسمت بعدی متن استفاده کنید. برای انتخاب با صفحه‌کلید بعد از انتخاب قسمت اول کلیدهای Shift+F8 را فشرده تا رایتر در حالت “Adding selection” قرار گیرد. سپس با کلیدهای جهت‌نما قسمت بعدی را انتخاب کرده و برای خروج از این حالت دکمه Esc را انتخاب نمایید.

می‌توان یک بلوک عمودی یا «یک ستون» از متن که با فاصله یا تب از هم جدا شده است را انتخاب کرد. برای این کار از مسیر Edit > Selection Mode > Block Area و یا کلیدهای Ctrl+F8 استفاده نمود و یا بر روی آیکون Selection در نوار وضعیت کلیک نمود و Block selection را از لیست انتخاب کرد.

جستجو و جایگزینی کلمات و عبارات

اولین روش برای جستجو استفاده از نوار ابزار Find می‌باشد که می‌توان در مسیر View > Toolbars > Find آن را یافت و یا با کمک کلیدهای Ctrl+F آن را فعال نمود.

روش دوم استفاده از کادر محاوره‌ای Find & Replace بوده که برای نمایش آن می‌توان کلیدهای Ctrl+H را فشرد و یا می‌توان از مسیر Edit > Find & Replace بدان دست یافت.

متنی که می‌خواهید جستجو شود را در کادر Find و متن جدید را در کادر Replace تایپ کنید.

درج خودکار واژه‌ها

نرم‌افزار واژه‌پرداز زمانی که واژه‌ای در آن تایپ می‌شود به‌طور خودکار آن را تغییر می‌دهد، برای مدیریت این تغییرات از مسیر Tools > AutoCorrect Options پنجره AutoCorrect را باز کنید. همانطور که در شکل زیر مشاهده می‌شود.

برای تعریف مورد جدید ابتدا زبان را انتخاب سپس در کادر Replace واژه‌ای که باید تغییر کند و در کادر With واژه‌ای که باید جایگزین شود را وارد و در پایان کلید New را کلیک کنید.

اصلاح املایی و گرامری

برای اینکه ترکیبی از املا و دستور زبان بر روی سند (یا متن انتخاب شده) بررسی شود، بر روی دکمه Spelling and Grammar از Standard Toolbar کلیک کنید یا دکمه F7 را فشار دهید.

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

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

اگر خطا دستوری باشد، تنظیمات لازم از نوار کمرنگ زیر در Text Language نشان داده می‌شود. جمله و یا کلمه را می‌توان در این پنجره ویرایش کرد.

پنجره شامل کلمات جایگزینی پیشنهادی برای کلمه برجسته شده است. یک کلمه را انتخاب می‌کنیم و سپس Change یا Change All را انتخاب و آن را جایگزین کنید.

برای خطاهای دستور زبانی چند گزینه وجود دارد. گزینه Change را برای پذیرش پیشنهادها انتخاب کنید.

به‌طور پیش‌فرض گزینه Check Grammar as You Type و گزینه Check Spelling as You Type در مسیر Tools > Options > Writing Aids > Language Setting > Options فعال است.

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

منبع: «جزوه آموزشی مهارت کار با نرم‌افزار واژه‌پرداز» نوشته شرکت دانش‌بنیان سافا

نوشته آموزش رایتر: قسمت ششم، کار با واژه‌ها اولین بار در لینوکس سیزن پدیدار شد.


فروردین ۲۵ ۱۳۹۷

بلاگ‌های برتر سال ۹۶

عید مبعث بر همه کاربران عزیز بیان مبارک!

فهرست وبلاگ‌های برتر سال ۹۶ که مطابق روال گذشته بر مبنای محاسبه خودکار امتیازات معیارهای اعلام شده برگزیده شده‌اند منتشر شد.

این فهرست شامل ۱۰۰ وبلاگ برتر جدید و ۷۹ وبلاگی است که قبلا هم در فهرست وبلاگ‌های برگزیده قرار داشته‌اند و امسال نیز حدنصاب لازم را برای کسب عنوان وبلاگ برتر دارا بوده‌اند. به این معنی که امتیاز آنها بالاتر از امتیاز صدمین نفر از وبلاگ‌های برتر جدید سال ۹۶ بوده است.

 

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


فروردین ۲۵ ۱۳۹۷

آموزش اوبونتو: قسمت پنجم، سفارشی‌سازی دسکتاپ

نوشته شده توسط فرشید نوتاش حقیقت.

بسیاری از عملیات سفارشی‌سازی را می‌توانید از شاخص Session در قسمت System Setting بیابید. در این قسمت تنظیمات مربوط به Dash، ظاهر دسکتاپ، تم‌ها، تصاویر پس‌زمینه در دسترس است.

بخش Appearance

این بخش شامل دو زبانه Look و Behavior می‌باشد که به شرح آن‌ها خواهیم پرداخت:

زبانه Look

در زباله Look می‌توان تصویر پس‌زمینه، پنجره تم و سایز آیکون‌های لانچر تغییر دهید.

برای دستیابی به Appearance بر روی تصویر پس‌زمینه کلیک راست کرده و گزینه Change Desktop Background را انتخاب کنید و یا از طریق شاخص Session گزینه System Setting را انتخاب کنید و سپس بر روی آیکون Appearance کلیک نمایید. بخش Theme در پنجره Appearance تصویر پس‌زمینه انتخابی شما و تم‌ها را نمایش می‌دهد. به‌طور پیش‌فرض تم Ambiance استفاده می‌شود، اما تم‌های دیگری نیز وجود دارد که می‌توانید آن‌ها را انتخاب کنید.

زبانه Behavior

در زبانه behavior چندین گزینه برای تغییر رفتار دسکتاپ وجود دارد. اگر گزینه Auto-hide the Launcher را فعال نمایید، زمانی که ماوس را در منطقه لانچر قرار دهید، لانچر نمایان خواهد شد و با خارج کردن ماوس منطقه مربوطه، لانچر پنهان می‌شود.

در گزینه Enable Workspaces به‌طور پیش‌فرض فضاهای کاری فعال نیستند. با فعال کردن این گزینه می‌توانید فضاهای کاری را فعال کنید.

گزینه Add show desktop icon to the launcher آیکون دسکتاپ را در Launcher فعال می‌کند. گزینه Show the menus for a window کمک می‌کند تا بسته به انتخاب شما منوها در menu bar نمایش داده شوند یا در title bar پنجره‌ها.

منبع: کتاب Getting Started with Ubuntu 16.04 نوشته The Ubuntu Manual Team

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


فروردین ۲۲ ۱۳۹۷

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

نوشته شده توسط فرشید نوتاش حقیقت.

دو روش برای یافتن فایل‌ها بر روی کامپیوتر شما وجود دارد؛ آن‌ها را جستجو کنید و یا به‌طور مستقیم از دایرکتوری آن‌ها دسترسی پیدا کنید.

می‌توانید یک فایل را با استفاده از Dash یا مدیر فایل جستجو کنید. همچنین می‌توانید از مدیر فایل یا Dash برای دسترسی به دایرکتوری‌های معمول استفاده شده (مانند Document، Music، Downloads) و همچنین از فایل‌های اخیراً استفاده شده، استفاده کنید.

دایرکتوری home برای ذخیره‌سازی تمام فایل‌های شخصی (به جای فایل‌های سیستم مانند برنامه‌های کاربردی) استفاده می‌شود.

به‌طور پیش‌فرض، محتویات دایرکتوری home شما قابل دسترسی است و سایر کاربران کامپیوتر شما می‌توانند آن را بخوانند. نام دایرکتوری home شما با نام کاربریتان منطبق می‌باشد.

هنگام باز کردن دایرکتوری شخصی مجموعه‌ای از چندین دایرکتوری را مشاهده خواهید کرد، از جمله Desktop (حاوی فایلی که بر روی دسکتاپ قابل مشاهده است) Documents، Download، Music، Pictures، Public، Templates و Videos. این دایرکتوری‌ها به‌طور خودکار در طول فرآیند نصب ایجاد می‌شوند. شما می‌توانید فایل‌ها و دایرکتوری‌های بیشتری را در صورت نیاز اضافه کنید.

اوبونتو همانند سیستم‌عامل‌های ویندوز و مک برای فایل‌ها و دایرکتوری‌هایش دارای فایل منیجر (File Manager) است که به‌وسیله آن فایل‌ها را مدیریت می‌کند.

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

پنجره پیشفرض شامل ویژگی‌های زیر است:

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

Title bar (نوار عنوان) نمایانگر نام دایرکتوری است که در حال حاضر انتخاب شده است. همچنین دارای دکمه بستن، کوچک کردن و حداکثرسازی است.

Tool bar (نوار ابزار) تاریخچه و سابقه حرکت شما را در سیستم نشان می‌دهد و نمایانگر موقعیت مکانی شما در سیستم فایل و دارای ابزار جستجو است.

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

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

Left Pane (ستون سمت چپ) این بخش شامل کلیدهای میانبری برای دایرکتوری‌های مورد استفاده است.

شما می‌توانید از منوبار بخش Bookmark و گزینه Bookmark this Location یک دایرکتوری را اصطلاحاً Bookmark کنید.

Right Pane (ستون سمت راست) این بخش نسبت به ستون سمت چپ عریض‌تر می‌باشد. فایل‌ها و دایرکتوری‌ها مسیری که در آن قرار دارید را نمایش می‌دهد.

باز کردن فایل‌ها

برای باز کردن یک فایل می‌توانید بر روی آیکون آن دوبار کلیک کنید. اوبونتو سعی خواهد کرد که یک برنامه مناسب برای باز کردن فایل انتخاب شده پیدا کند. در برخی از موارد ممکن است بخواهید فایل را با برنامه دیگری باز کنید تا اینکه اوبونتو آن را انتخاب کند. برای انجام این کار بر روی آیکون فایل خود، کلیک راست کرده و گزینه Open With را انتخاب کنید.

ایجاد دایرکتوری جدید

برای ایجاد دایرکتوری جدید به کمک فایل منیجر کافی است در یک فضای خالی در Right Pane کلیک راست کرده و گزینه New Folder را برگزینید. این عملکرد بر روی صفحه دسکتاپ نیز قابل اجرا است. دایرکتوری جدید با نام Untitled Folder ایجاد می‌شود. همچنین می‌توانید با کمک کلیدهای ترکیبی Ctrl + Shift + N دایرکتوری جدید ایجاد کنید.

پنهان (hidden) کردن فایل‌ها و دایرکتوری‌ها

اگر می‌خواهید فایل‌ها و دایرکتوری‌های شخصی را پنهان کنید. کافی است نقطه‌ای را در ابتدای نام آن قرار دهید. (به عنوان مثال .Personal) به راحتی می‌توان فایل‌های پنهان را به کمک منوی View و گزینه Show Hidden و یا با استفاده از کلیدهای ترکیبی Ctrl + H مشاهده کنید. پنهان کردن فایل‌ها با نقطه یک تدبیر امنیتی نیست و صرفاً راهی برای سازماندهی فایل‌ها است.

کپی و جابجا کردن فایل‌ها و دایرکتوری‌ها

اعمال Copy، Cut و Paste می‌توانید به کمک فایل منیجر با کلیک راست بر روی آیتم مربوطه و انتخاب گزینه مورد نظر انجام دهید. همچنین می‌توانید با کمک کلیدهای ترکیبی Ctrl + X، Ctrl + C و Ctrl + V به ترتیب برای Cut، Copy و Paste فایل‌ها و دایرکتوری‌ها استفاده کنید.

جستجو به کمک Dash

در Dash عبارات مورد نظر خود را در نوار جستجو واقع در بالای Dash تایپ کنید. همچنین می‌توان از لنزهای برنامه‌ها یا فایل‌ها و پوشه‌ها استفاده کرد. در اینجا می‌توان از فیلتر نیز برای محدود کردن جستجو استفاده نمود.

جستجو به کمک File Manager

در فایل منیجر بر روی دکمه بزرگنمایی کلیک کرده یا کلیدهای ترکیبی Ctrl + T را بفشارید. در این قسمت فیلد جستجو باز شده و نام فایل یا پوشه‌ای را که می‌خواهید پیدا کنید، تایپ نمایید.

منبع: کتاب Getting Started with Ubuntu 16.04 نوشته The Ubuntu Manual Team

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


فروردین ۲۲ ۱۳۹۷

آموزش رایتر: قسمت پنجم، مدیریت اسناد

نوشته شده توسط فرشید نوتاش حقیقت.

جهت شروع باید یک صفحه جدید باز کنید. بدین منظور از منوی File > New > Document کمک می‌گیریم یا با کلیدهای میان‌بر Ctrl + N صفحه جدیدی باز کنید.

جهت ایجاد سند جدید برای نوشتن متن، باید سند از نوع Text Document باشد. بقیه گزینه‌ها جهت ایجاد اسناد دیگر لیبره‌آفیس کاربرد دارد. اگر سندی از قبل طراحی شده باشد و به الگوها (Templates) اضافه کرده باشیم، می‌توان با کلیک بر روی گزینه Templates آن الگوها را فراخوانی کرد.

اگر سندی را تایپ و آن را روی دیسک جانبی ذخیره کرده باشیم، جهت فراخوانی از گزینه Open استفاده می‌شود. قالب‌هایی را که می‌توان در رایتر باز نمود عبارتند از: TXT، DOC، DOCX، ODT.

آخرین سندهایی که باز شده‌اند را می‌توان از گزینه Recent Documents مجدداً فراخوانی کرد.

ذخیره کردن یک سند

برای ذخیره کردن از گزینه Save یا از کلیدهای میان‌بر Ctrl+S استفاده می‌شود. (توجه: هر گاه گزینه‌ای به رنگ خاکستری بود آن گزینه غیرفعال است.) در مورد گزینه Save، هر گاه غیرفعال بود، یا سند ذخیره شده است یا چیزی برای ذخیره کردن وجود ندارد.

گزینه Save as برای ذخیره کردن یک نسخه از سند جاری به نام دیگر و ادامه کار با سند جدید است.

گزینه Save a Copy برای ذخیره کپی از سند جاری به نام دیگر و ادامه کار با سند جاری است.

ذخیره کردن یک سند به صورت خودکار

رایتر می‌تواند یک سند را به‌صورت خودکار در یک فایل موقت در فواصل زمانی موقت ذخیره کند. ذخیره کردن به صورت خودکار، مانند ذخیره کردن به صورت دستی است، بازنویسی آخرین وضعیت از فایل مورد نظر در فایل‌های موقت ذخیره می‌شود. برای فعال‌سازی این قابلیت ابتدا باید وارد مسیر Tools > Options > Load/Save > General شده سپس بر روی Save AutoRecovery information every کلیک نمایید. و در فواصل زمانی آن را تنظیم کنید. مقدار پیش‌فرض ۱۵ دقیقه است. مقداری دلخواه را وارد کنید.

بستن یک سند

اگر تنها یک سند باز باشد و بخواهیم آن سند را ببندیم، می‌بایست به مسیر File > Close رفته و یا بر روی ضربدر در نوار عنوان کلیک کرد. علامت ضربدر ممکن است در سمت راست و یا سمت چپ نوار عنوان قرار گرفته باشد.

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

لغو و بازبینی تغییرات

هنگامی که یک سند باز است، می‌توان آخرین تغییر را با کلیدهای Ctrl+Z یا کلیک کردن بر روی دکمه undo واقع در نوار ابزار استاندارد و یا انتخاب مسیر Edit > Undo از نوار منو به عقب برگرداند. (همانطور که در تصویر مشخص است.) پس از به‌کارگیری دکمه undo دکمه redo فعال می‌شود. این دکمه نیز در نوار استاندارد و در مسیر Edit > Redo در دسترس است؛ همچنین می‌توان برای انجام عمل redo از ترکیب کلیدهای Ctrl+Y استفاده نمود.

منبع: «جزوه آموزشی مهارت کار با نرم‌افزار واژه‌پرداز» نوشته شرکت دانش‌بنیان سافا

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


فروردین ۲۱ ۱۳۹۷

آموزش خط فرمان: قسمت ششم، کار کردن با فرمان‌ها

نوشته شده توسط فرشید نوتاش حقیقت.

این آموزش فرمان‌های type، which، man، apropos، info، whatis و alias را شامل می‌شود.

یک فرمان می‌تواند چهار چیز باشد:

  • یک برنامه اجرایی مانند فایل‌های موجود در /usr/bin که در این دسته می‌توان به برنامه‌هایی که قابلیت کامپایل دارند از قبیل برنامه‌های نوشته شده در C و C++ یا برنامه‌های نوشته شده در زبان‌های اسکریپت‌نویسی شامل Shell، Perl، Python، Ruby و نظایر آن اشاره داشت.
  • فرمان تولید شده توسط خود پوسته (Shell). Bash از تعدادی از فرمان‌ها پشتیبانی می‌کند که فرمان‌های درون‌ساخت پوسته (shell builtins) نامیده می‌شوند. به‌عنوان مثال فرمان cd یک فرمان shell builtins نامیده می‌شود.
  • یک تابع پوسته (shell function). توابع پوسته شامل اسکریپت‌های پوسته بوده که در محیط قرار گرفته‌اند. پیکربندی محیط و نوشتن توابع پوسته در آموزش‌های بعدی تحت پوشش قرار خواهند گرفت.
  • یک نام مستعار (alias). alias فرمانی است که خودمان به کمک دیگر فرمان‌ها می‌توانیم تعریف کنیم.

شناسایی فرمان‌ها

در ابتدا می‌بایست بدانید که چه نوع از فرمان‌ها استفاده می‌شود و لینوکس چند راه برای پی بردن به آن ارائه می‌دهد.

روش اول، فرمان type که نوع فرمان را نمایش می‌دهد.

فرمان type یک فرمان shell builtin بوده که نوع فرمان را با توجه به نام فرمان نشان می‌دهد که به شکل زیر به کار گرفته می‌شود:

type command

که به جای command می‌بایست نام فرمانی را که می‌خواهید بررسی شود قرار دهید. در ادامه چندین مثال از فرمان type آورده شده است:

روش دوم، فرمان which که محل اجرای فرمان را مشخص می‌کند.

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

فرمان which فقط مختص برنامه‌های اجرایی است نه builtin و یا نام مستعاری که برای برنامه‌های اجرایی است. هنگامی که ما سعی می‌کنیم از یک فرمان builtin به عنوان مثال، فرمان cd استفاده کنیم هیچ پاسخی دریافت نکرده و یا با پیغام خطا مواجه خواهیم شد:

پیغام فوق به‌طور فانتزی می‌گوید: «فرمان پیدا نشد! (command not found)»

دریافت مستندات فرمان‌های لینوکس با کمک فرمان help

بش (bash) دارای یک مرکز درونی کمک برای فرمان‌های shell builtin می‌باشد. برای استفاده از آن help را به همراه نام فرمان مورد نظر تایپ نموده و اجرا نمایید. برای مثال:

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

فرمان –help نمایش اطلاعات مفید فرمان

بسیاری از برنامه‌های اجرایی از فرمان –help  پشتیبانی می‌کنند که توضیح نحو (syntax) و گزینه‌های (options) پشتیبانی شده یک فرمان را نشان می‌دهد. به‌عنوان مثال:

نمایش صفحه راهنمای برنامه‌های لینوکس به کمک فرمان man

اکثر برنامه‌های اجرایی که برای استفاده از خط فرمان در نظر گرفته شده مستندات رسمی به نام man page ارائه می‌دهند. شکل اجرای این فرمان به‌صورت زیر است:

man program

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

Man pageها تا حدودی در فرمت متفاوت هستند، اما به‌طور معمول شامل یک عنوان، خلاصه‌ای از نحو (syntax) فرمان، شرحی از هدف فرمان و فهرست یا توضیحاتی از گزینه‌های فرمان می‌باشند.

با این حال man pageها معمولاً مثالی را شامل نمی‌شوند و به عنوان یک مرجع، نه یک آموزش در نظر گرفته می‌شوند.

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

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

man section search_term

که در اینجا search_term همان مورد جستجوی ماست. به عنوان مثال:

با اجرای صفحه راهنمایی را خواهیم دید که فرمت فایل /etc/passwd را شرح می‌دهد.

نمایش فرمان‌های مناسب با کمک فرمان apropos

گاهی اوقات نیاز داریم که لیست صفحات manual را برای یک مورد خاص جستجو نماییم. در ادامه مثالی از جستجوی صفحات راهنما را برای floppy آورده شده است:

فیلد اول در هر خط خروجی نام صفحه راهنماست و فیلد دوم نشان‌دهنده بخش مورد نظر می‌باشد. به یاد داشته باشید که گزینه –k با فرمان man دقیقاً مانند عملکرد apropos عمل خواهد کرد.

نمایش توصیفی مختصر از یک فرمان با کمک فرمان whatis

فرمان whatis نام و شرحی یک خطی از یک صفحه راهنما را مطابق با یک کلمه مشخص، نمایش می‌دهد.

نمایش اطلاعات ورودی یک برنامه با کمک فرمان info

پروژه GNU یک جایگزین برای صفحات man با نام info page ارائه نموده است. صفحات اطلاعات در برنامه‌ای با نام info نمایش داده می‌شود. صفحات info مانند صفحات وب دارای لینک‌هایی هستند.

برنامه info فایل‌های صفحات info را می‌خواند و در یک ساختار درختی در nodeهای جداگانه نشان می‌دهد. هر نود شامل یک عنوان جداگانه است. فایل‌های info شامل لینک‌هایی هستند که شما را به nodeهای دیگر هدایت می‌کند. لینک‌ها از طریق علامت * (ستاره در اولشان) شناسایی شده و با قرار دادن نشانگر بر روی آن‌ها و فشار دادن کلید Enter اجرا می‌شوند. برای دریافت اطلاعات اطلاعات می‌توانید info را به دنبال نام برنامه تایپ کنید، به عنوان مثال:

جدول زیر فرمان‌هایی که به منظور کنترل صفحه هنگام خواندن صفحات info استفاده می‌شود را نشان می‌دهد:

ایجاد فرمان‌ها به کمک فرمان alias

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

command1; command2; command3..

به عنوان مثال:

همانطور که مشاهده می‌شود سه فرمان را در یک خط قرار داده‌ایم. ابتدا دایرکتوری را به مسیر /usr تغییر داده‌ایم، سپس لیست محتویات دایرکتوری را نمایش داده‌ایم و در نهایت با کمک فرمان cd به دایرکتوری اصلی بازگشتیم.

اولین چیزی که بایستی برای دستور خود تصور کنیم یک نام برای فرمان جدید است. چون این فقط یک آزمایش است نام test را انتخاب می‌نماییم. البته بهتر است تست کنیم که کسی قبلاً از این اسم استفاده نکرده است. با فرمان type می‌توان به این مطلوب رسید:

مشاهده می‌شود که این نام قبلاً انتخاب و استفاده شده است. حال foo را آزمایش می‌کنیم:

خوشبختانه foo در بین فهرست فرمان‌های لینوکس موجود نیست. در ادامه با کمک فرمان alias فرمان جدید را ایجاد می‌کنیم:

ساختار این فرمان بدین شکل است:

alias name='string'

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

می‌توانیم فرمان foo را با کمک فرمان type بررسی کنیم:

برای حذف آن نیز می‌توان از فرمان unalias کمک گرفت:

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

منبع: کتاب The Linux Command Line نوشته William E. Shotts

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


فروردین ۲۰ ۱۳۹۷

غیرفعال کردن دائمی حافظه‌ی Swap در لینوکس

آموزشچگونه

آموزش رایتر: قسمت نهم، کار با جدول

Print Friendly, PDF & Email

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

آشنایی و ساخت جدول

در بعضی مواقع در سندمان نیاز به رسم جداول گوناگون هست. برای انجام این کار مسیر Table>Insert table را انتخاب می‌کنیم.

در پنجره باز شده در قسمت General تعداد ستون و سطر جدول و نام آن را وارد می‌کنیم.

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

ویرایش جدول

برای انتخاب سلول، ستون یا ردیف از منوی Table>Select استفاده می‌کنیم.

در منوی بالای صفحه Table>Insert امکان اضافه کردن یک ردیف (Row) و یا یک ستون (Columns) وجود دارد و در منوی Table>Delete امکان حذف ردیف و ستونی را که انتخاب کرده‌ایم وجود دارد.

برای تبدیل چند سلول به یک سلول، سلول‌های مورد نظر را در جدول انتخاب کرده سپس در منوی Table>Merge Cells را انتخاب می‌کنیم. برای تبدیل یک سلول به چند سلول در منوی اصلی Table > Split Cells را که انتخاب می‌کنیم و تنظیمات زیر را در کادر محاوره‌ای Split Cells انجام می‌دهیم:

Split Cell Into: تعداد تقسیمات سلول

Horizontally: تقسیمات برای ردیف

Vertically: تقسیمات برای ستون

برای جداسازی بخشی از جدول به عنوان جدولی مجزا فرمان Table>Split Table را اجرا می‌کنیم تا کادر محاوره‌ای Split Table باز شود و تنظیمات زیر را انجام می‌دهیم:

Copy heading: کپی کردن سرجدول

Copy heading: سرجدول شخصی

No Heading: جدول بدون سرجدول

برای تبدیل دو جدول به یک جدول Table>Merge Table را اجرا می‌کنیم. دو جدول ادغام شده از نظر خصوصیات ظاهری یکسان خواهند بود.

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

قالب‌بندی جدول

برای تغییرات رنگ جدول Table>Auto Format را انتخاب می‌کنیم. در کادر محاوره‌ای Auto Format مواردی که مدنظر است را برای اعمال انتخاب می‌کنیم.

برای قالب‌بندی کادر جدول از Table>Properties و زبانه Border استفاده می‌کنیم تا کادر محاوره‌ای Border باز شود و تنظیمات زیر را انجام می‌دهیم:

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

بخش Line ویژگی خطوط جدول را تعیین می‌کنیم.

در بخش style نوع خطوط را مشخص می‌کنیم.

در بخش W idth ضخامت خط را تنظیم می‌کنیم.

با استفاده از Color رنگ خطوط را مشخص می‌کنیم.

در بخش Spacing to Contents فاصله متنی که در جدول قرار می‌دهیم را تعیین می‌کنیم.

بخش Shadow style برای تنظیم سایه استفاده می‌کنیم.

برای تنظیم رنگ زمینه سلول‌ها جدول از فرمان Table>Properties و زبانه Background استفاده می‌کنیم تا کادر محاوره‌ای Background باز شود و تنظیمات زیر را انجام می‌دهیم:

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

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

تنظیمات جدول

برای تبدیل یک متن به جدول و یا بالعکس Table>Convert را اجرا می‌کنیم.

گزینه Text to Table متن را به جدول و گزینه Table to Text جدول را به متن تبدیل می‌کند.

برای مرتب کردن داده‌های جدول از Table>Sort استفاده می‌کنیم.

برای تنظیم خصوصیات جدول از Table>Properties استفاده می‌کنیم تا کادر محاوره‌ای Properties باز شود و تنظیمات زیر را انجام می‌دهیم.

در کادر Name نام جدول را مشخص می‌کنیم.

برای ترازبندی جدول در صفحه از گزینه‌های Alignment استفاده می‌کنیم، مثلاً با انتخاب گزینه Center جدول در وسط صفحه قرار خواهد گرفت.

برای تغییر ابعاد ستون‌ها از Table>Properties و زبانه Columns استفاده می‌کنیم تا کادر محاوره‌ای Columns باز شود. در این کادر اندازه هر یک از ستون‌های جدول را که می‌توانیم تعیین می‌کنیم.

منبع: «جزوه آموزشی مهارت کار با نرم‌افزار واژه‌پرداز» نوشته شرکت دانش‌بنیان سافا

Tags

Related Articles

دیدگاهتان را بنویسید لغو پاسخ

ایران سرور

لطفاسوالات خود را با درج لینک مطلب در سایت پرسش و پاسخ مطرح کنید

سرور

About فرشید نوتاش حقیقت

یک شیعه ایرانی، افسر جبهه‌های جنگ نرم، کارشناس ارشد IT و نرم‌افزار، مدرس و مولف آموزش‌های کامپیوتری، علاقه‌مند به نرم‌افزارهای آزاد/ متن‌باز

Close

This content was pulled from http://linuxseason.com/2018/07/table/

Read More: آموزش رایتر: قسمت نهم، کار با جدول


فروردین ۲۰ ۱۳۹۷

غیرفعال کردن دائمی حافظه‌ی Swap در لینوکس

swap

در مطالب قبلی در مورد حافظه‌ی swap توضیح داده شد و نحوه ی خالی کردن آن نیز شرح داده شد.اکنون در این مطلب قصد داریم تا حافظه‌ی swap را به صورت کامل و برای همیشه غیرفعال کنیم.

برای اینکار ابتدا جهت غیرفعال کردن swap دستور پایین را اجرا کنید :

 

#swapoff -a

 

در این حالت swap غیرفعال شده است ولی به صورت دائمی نیست و با reboot شدن سیستم، حافظه ی swap دوباره فعال خواهد شد.برای جلوگیری از فعال شدن آن پس reboot شدن سیستم و غیرفعال کردن دائمی آن کافیست تا فایل تنظیمات مربوط به mount شدن پارتیشن ها را باز کنید :

 

#vi /etc/fstab

 

اکنون خطی که مربوط به swap می باشد را پیدا کنید و جلوی آن علامت # قرار دهید تا به حالت comment در آید.برای نمونه تصویر پایین را مشاهده کنید :

 

 

fstab

 

پس از دخیره تغییرات در فایل اکنون کافیست تا یکبار سیستم را reboot کنید یا اینکه از دستور پایین استفاده کنید :

 

#mount -a

اکنون با انجام این مراحل حافظه‌ی swap بر روی سیستم به صورت دائم غیرفعال شده است.جهت مشاهده فضای swap بر روی سیستم نیز می توانید از دستور پایین استفاده کنید :

 

#swapon -s

امید است تا از این مطلب استفاده لازم را برده باشد.

شاد و فدورایی باشید.

 

 


فروردین ۱۹ ۱۳۹۷

آموزش اوبونتو: قسمت سوم، مدیریت پنجره‌ها

نوشته شده توسط فرشید نوتاش حقیقت.

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

فعال‌سازی ‌Workspaceها

ویژگی‌های فضای کاری به‌طور پیش‌فرض در اوبونتو فعال نیست. برای فعال‌سازی فضاهای کاری ابتدا وارد System Settings شده و بر روی Appearance و سپس زبانه Behavior کلیک کنید. سپس Enable workspace را فعال کنید. پس از انجام این کار آیکون مربوط به Workspaceها به لانچر اضافه می‌شود.

سوئیچ کردن میان فضاهای کاری

اگر Workspace را همانطور که توضیح داده شد فعال کرده باشید؛ خواهید توانست بین فضاهای کاری از طریق کلیک کردن بر روی آیکون سوئیچ فضاهای کاری بر روی لانچر سوئیچ کنید.
شما با استفاده از کلیدهای ترکیبی Super+S و فشردن دکمه‌های جهت‌نما مابین فضاهای کاری می‌توانید سوئیچ کنید.
توجه: دکمه Super همان کلیدی است که در دنیای مایکروسافت دکمه ویندوز نامیده می‌شود.

مدیریت پنجره‌ها

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

سوئیچ کردن بین پنجره‌ها

در اوبونتو راه‌های زیادی برای تغییر بین پنجره‌های باز وجود دارد:
– اگر پنجره روی صفحه نمایش قابل مشاهده باشد، روی هر بخشی از آن کلیک کنید تا آن را در بالاتر از تمام پنجره‌های دیگر بالا ببرید.
– با کمک کلیدهای ترکیبی Alt+Tab نیز می‌توانید این کار را انجام دهید. ابتدا کلید Alt را پایین نگه داشته و کلید Tab را بفشارید تا پنجره مورد نظر بصورت پاپ‌آپ نمایان شود.
– بر روی آیکون برنامه مورد نظر کلیک راست کرده اگر برنامه‌ای دارای چندین پنجره باز می‌باشد، برای انتخاب پنجره دلخواه روی گزینه مربوطه دو بار کلیک کنید.
با فشردن کلیدهای ترکیبی Ctrl+Super+D تمام پنجره‌ها را مخفی کرده و با فشردن دوباره آن تمام پنجره‌ها را بازگردانید.

انتقال پنجره‌ای به یک فضای کاری دیگر

برای حرکت دادن پنجره‌ای به یک فضای کاری دیگر مطمئن شوید پنجره maximize نشده باشد. اگر maximize شده بود آن را به اندازه اصلی خود برگردانید.
سپس روی نوار عنوان پنجره کلیک راست کرده و انتخاب کنید:
Move to Workspace Left برای انتقال پنجره به فضای کاری چپ
Move to Workspace Right برای انتقال پنجره به فضای کاری راست
Move to Workspace Down برای انتقال پنجره به فضای کاری پایین
Move to Another Workspace فضای کاری را که مایلید پنجره بدان انتقال یابد انتخاب کنید.

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

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

منبع: کتاب Getting Started with Ubuntu 16.04 نوشته The Ubuntu Manual Team

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


فروردین ۱۸ ۱۳۹۷

طرفداران فدورا و سفر به خورشید

parker-solar-probe

ناسا همیشه پروژه های جذاب و شگفت انگیزی داره،اینبار ناسا قراره که تابستون امسال یه کاوشگر به نام پارکر به فضا بفرسته.این فضاپیما به افتخار اختر فیزیکدان امریکایی «یوجین پارکر» که بررسی های زیادی روی فیزیک خورشید انجام داده نامگذاری شده.

کاوشگر پارکر قرار است به دور خورشید حرکت کند و قرار است نسبت به فضاپیماهای دیگه به خورشید نزدیک تر بشه.هدف از این ماموریت شناخت بیشتر خورشید و بادهای خورشیدی هست.

حالا با این اوصاف،ناسا مثل پروژه های دیگه امکانی رو بوجود آورده که مردم می تونن توی اون ثبت نام کنن و نام اونها بر روی تراشه ای که به همراه کاوشگر پارکر هست به فضا و به دور ستاره ی منظومه خورشیدی ارسال بشه.

از اونجایی که من به هوا فضا علاقه دارم وب سایت طرفدران فدورا رو توی این پروژه ثبت نام کردم که می تونید از این لینک بلیط رو تماشا کنین :

 

http://parkersolarprobe.jhuapl.edu/The-Mission/Name-to-Sun/send-name.php?print=yes&code=1130275-b4cee6392dea515

 

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

 

http://parkersolarprobe.jhuapl.edu/The-Mission/Name-to-Sun/

 

نکته اینکه مهلت ثبت نام تا ۷ اردیبهشت هست.برای اطلاعات بیشتر در مورد Parker Solar Probe می تونید به وب سایت اون مراجعه کنین :

 

http://parkersolarprobe.jhuapl.edu/index.php

 

فدورایی و فضانورد باشید!


فروردین ۱۸ ۱۳۹۷

چگونه بازی‌ساز شویم؟

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

در سال ۹۶، حدود دو ماه در استودیویی مشغول کار شدم، بعنوان «آهنگساز» برای بازی کامپیوتری. اول که قرار بود کار آهنگسازی و دیزاین صدا به واسطه کامپیوتر رو براشون انجام بدم. یعنی طراحی ساندترک های بازی (موسیقی متن) و طراحی ساند افکت (صداهایی که می‌شنویم، مثل باد، صدای دستگاههای عجیب و غریب آخرالزمانی یا صدای هیولا و … ) ولی کم کم بخاطر کمبود نیرویی که به کار صدا وارد باشه، رُل «صدا گذار» هم به من داده شد. حالا دیگه صرفا کسی که کل روز وقتش پشت FL باشه نبودم و باید در یونیتی انجین کد میزدم و Sound Object و … وارد میکردم و با میکسرهای یونیتی بازی میکردم. برای من سخت بود چون اولا که به من گفته نشده بود قراره صداگذاری کنم، دوما زبان یونیتی سی شارپه و من هم چندان دل خوشی ازش ندارم. پس به شدت سعی میکردم تن ندم و از زیرش دربرم (حتی نیروی کمکی هم با خودم برده بودم 😀 ). ولی باگ قضیه این نبود. باگی که در این سیستم بود فراتر از این ماجراها بود. که در این مطلب قراره در موردش توضیح بدم!

از کجا شروع کنیم؟

برای بازی سازی، ما رُل های متعددی داریم. از برنامه نویسان و متخصصین هوش مصنوعی گرفته تا رُلهای کاملا سینمایی مثل نویسنده و کارگردان، همه حیاتی و مهم هستند و باید در یک تعادل حساس، کنار هم قرار بگیرند. نه این که یک یا دو نفر سعی کنند همه این رُل ها رو داشته باشند. حداقل وقتی که قراره بازی پدرمادر دار و درست و حسابی بسازیم، نیاز داریم برای هربخشی یک متخصص (یا یک تیم متخصص) داشته باشیم. در این قسمت، با هم کمی نقش ها رو بررسی میکنیم. از یک «ایده» ساده تا یک «بازی» کامل.

ایده خام

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

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

نویسندگی و بسط ایده

تا اینجا، ساخت فیلم و بازی بسیار شبیه بودند. اما از اینجا به بعد قراره که متفاوت تر بشن. بازی یک نوع رسانه «اینتراکتیو» یا «تعاملی» به حساب میاد ولی فیلم نه. کنترل بخشی از بازی دست پلیره ولی فیلم نیست. بنابراین باید اول تصمیم بگیریم «کجا قراره بازی مثل یک فیلم روند خودش رو طی کنه» و «کجا قراره بازی دست پلیر بیفته». حالا میتونیم ایده ها رو کنار هم بچینیم. ولی قبل از چیدن این مسائل کنار هم، نیاز داریم که یک سری المان ها را به خوبی کنار هم قرار بدیم :
۱. پیش زمینه و تاریخچه از موضوع کلی (چرا مردم حاضر نیستند در اون قلعه برن؟ حتی وقتی توپ کودک معصومی آنجا افتاده؟)
۲. طرح سوال کلی و شروع داستان (ورود کودک به قلعه)
۳. ایجاد تنش (رو به رو کردن کودک با چیزی که تا به حال با اون مواجه نشده، دیدن موجودات ماوراء الطبیعی و …)
۴. حل سوال توسط قهرمان و پایان داستان (جنگیدن کودک با توهماتی که درون قلعه با آن دچار شده، جنگیدن کودک با طرز تفکر مردم و غالب شدن یک طرز تفکر جدید).
بسیار خب، حالا بیایم با هم کل ایده رو به «طرح کلی» یا همون «پلات» تبدیل کنیم :

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

چیزی که در بالا خواندیم، یک پلات ساده بود. این پلات رو من بداهه نوشتم و شاید پلات درستی نباشه، ولی ممکنه سالها بعد به یک بازی تبدیل بشه. حالا نکته مهم اینه که این پلات باید به فیلمنامه تبدیل بشه، مثلا گشت و گذار صرف توی یک قلعه به اندازه کافی هیجان انگیز نیست، پس یک جا لازمه که مثل بازی «لایه های ترس» ، از بُردهای «وی‌یا» (برد Ouija که از دو کلمه Oui فرانسوی و Ja آلمانی تشکیل شده و برای احضار ارواح استفاده میشه) برای ارتباط با ارواح یا حل یک معما استفاده کنیم. یا مثلا، در کشوی میزکار افسر آلمانی – که چندین روز مهمان آن خانم ثروتمند و نجیب‌زاده بوده – یک کلید قایم کنیم که مربوط به یکی از درهای اصلی قلعه باشه. پس اینجا کار نویسنده به «طراحی گیم‌پلی» تغییر میکنه. معمول هم اینه که طراح گیم‌پلی شخص متفاوتی از نویسنده باشه، مگر این که تیم ما به قدر کافی بزرگ نباشه. بعد از این که گیم پلی طراحی شد، و حالا داستان و گیم پلی پخته ای داریم، وقتشه که از دو نفر کمک بگیریم : هد تیم برنامه نویس ها و کارگردان.

شروع به ساخت و کارگردانی

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

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

پس‌تولید

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

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

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

یک کلام، برای بازی ساز شدن باید چه کار کنیم؟

اگر نظر من رو میخواید، هم باید بازی کنید، هم فیلم ببینید هم کتاب بخونید. خوندن داستانهایی مثل IT یا «برج سیاه» از استفن کینگ، دیدن فیلمهایی مثل «سگ اندلسی» از لوییس بونوئل یا حتی دیدن فیلمهای پرهیاهو و تجاری مثل «دانکرک»، بازی کردن بازیهای مستقل مثل «اینساید» یا «لایه های ترس» یا بازی های تجاری مثل «رزیدنت اویل» همه و همه کمکه. ایده ها از کره مریخ در ذهن ما نمیان، با دید ما از دنیای اطراف ساخته میشن. علاوه بر این آشنایی و کار با موتورهای بازی سازی (بخصوص یونیتی) شدیدا مهمه. حتی اگر شما صرفا تهیه کننده هستید و قرار نیست حتی یک خط هم کد بزنید، لازمه که آشنا باشید.

 

 

 

 

Share


فروردین ۱۶ ۱۳۹۷

نصب collectd و collection3 به همراه nginx

مانیتورینگ

یکی از ابزارهای مهم در Capacity Planning سرور ابزارهای Monitoring هستند. تعداد زیادی نرم‌افزار و سرویس برای Monitoring سخت افزار، سیستم عامل و سرویس ها وجود دارد. در اینجا نرم افزار Collectd را معرفی می‌کنم که یک نرم افزار ساده با کلی پلاگین آماده است که می یاد از منابع مورد نظر شما، شروع به جمع آوری اطلاعات می کنه و در فایل‌های rrd ذخیره می کنه. این فایل‌ها را می توان به نمودار تبدیل کرد و یا خروجی xml ازشون گرفت.

داخل پروژه Collectd در github ابزاری که با perl نوشته شده وجود دارد به نام collection3 که به شما اینترفیس تحت وبی از داده های Collectd می دهد. متاسفانه به دلیل آنکه وابستگی های لازم برای راه اندازی Collection3 نیاز است در CentOS وجود ندارد، Collection3 در CentOS از بسته Collectd حذف شده است. این راهنما به شما کمک می کند تا Collection3 را هم در Debin/Ubuntu و هم در CentOS نصب کنید.

توجه: این راهنما برای دانشجویان دوره LPIC2 تهیه شده ولی سعی شده به صورت کلی نوشته بشه که همه بتونند استفاده کنند.

نصب collectd و nginx در Debian/Ubuntu

# apt-get install collectd nginx

نصب collectd و nginx در CentOS 7.x

در CentOS پلاگین‌های Collectd را باید جدا نصب کنید. برخلاف Debian که به همراه بسته اصلی نصب می شوند. در اینجا سه پلاگین rrd و apache و mysql را برای نمونه نصب کردیم.

# yum install epel-release

# yum install collectd collectd-rrdtool collectd-apache collectd-mysql nginx

پیکربندی Collectd

در این مقاله به پیکربندی Collectd نخواهیم پرداخت. دوستانی که در دوره LPIC2 حضور داشتند مطمئنا پیش زمینه لازم برای پیکربندی collectd را دارند. شاید در مطلب جدایی در مورد پیکربندی Collectd هم صحبت کردم.
تنها موضوعی که باید در تنظیمات حتما انجام بدید فعال کردن ماژول rrd هست.

 

نصب Collection3 در Debian/Ubuntu

در توزیع‌های Debian base بسته collectd به صورت کامل نصب می شود و در فایل‌های مرتبط با آن collection3 نیز موجود است. پس تنها برای استفاده از collection3 کافیه وابستگی های اون را هم نصب کنید و بعد nginx را پیکربندی کنید.

# apt-get install  librrds-perl libconfig-general-perl libhtml-parser-perl libregexp-common-perl libjson-perl
# cp -r /usr/share/doc/collectd/examples/collection3 /var/www/html/

 

نصب Collection3 در CentOS 7.x

چون Collection3 در بسته collectd موجود در مخازن epel حذف شده است، باید source کامل بسته collectd را بگیرید و فایل‌های collection3 را از source آن در پوشه nginx کپی کنید.

# cd /usr/src
# git clone https://github.com/collectd/collectd.git
# cp -r /usr/src/collectd/contrib/collection3 /var/www/html/

 

پیکربندی nginx

من برای صفحه مانیتورینگ سرور یک دامنه اختصاص دادم به اسم monitor.linuxmotto.local و تنظیمات nginx بر مبنای اون نوشتم. این دامنه خوب قطعا وجود نداره برای همین حتما تو etc/hosts/ اضافه اش کنید.
در ضمن در Debian باید تو پوشه etc/nginx/sites-available/ یک فایل conf. بسازید و این تنظیمات را اضافه کنید و در CentOS در پوشه etc/nginx/conf.d/

server {
listen 80;
server_name monitor.linuxmotto.local;

location ~ .cgi$ {
root /var/www/html/collection3/;
expires off;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

location / {
root /var/www/html/collection3;
index bin/index.cgi;
}
}

 

نصب وابستگی های مورد نیاز collection3

این بخش از راهنما مخصوص توزیع CentOS است. و به این دلیل است که fcgi در nginx در توزیع Centos پشتیبانی نمی شود.

# yum install perl-FCGI perl-HTML-Parser rrdtool-perl perl-Config-General lm_sensors collectd-rdis collectd-rrdtool perl fcgi-devel spawn-fcgi perl-Collectd collectd-nginx collectd-mysql

 

نصب fcgiwrap در CentOS 7

# yum install dh-autoreconf fcgi-devel pkgconfig
# cd /usr/local/src/
# git clone git://github.com/gnosek/fcgiwrap.git
# cd fcgiwrap/
# autoreconf
# ./configure
# make
# make install

اگر به خطای زیر خوردید مطمئن شوید که pkgconfig به درستی نصب شده است و دستور autoreconf -i را به جای autoconf برای تکرار روند انجام دهید

# autoconf
configure.ac:32: error: possibly undefined macro: AC_DEFINE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:39: error: possibly undefined macro: AM_CONDITIONAL

# autoreconf -i

# yum install spawn-fcgi

# vi /etc/sysconfig/spawn-fcgi
FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
FCGI_USER=apache
FCGI_GROUP=apache
FCGI_EXTRA_OPTIONS=”-M 0770″
OPTIONS=”-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid — $FCGI_PROGRAM”

# usermod -a -G apache nginx
# systemctl enable spawn-fcgi
# systemctl start spawn-fcgi

بعد از همه این کارها سرویس‌ها را ریستارت کنید.

systemctl restart nginx collectd

الان باید تو مرورگرتون به collection3 از طریق آدرس monitor.linuxmotto.local دسترسی داشته باشید.


فروردین ۱۶ ۱۳۹۷

رقابت به سبک بلاگفا! ماجرای قدیمی بلاگ و بلاگفا

آقای بلاگفا!

‏واقعا خجالت نمی‌کشید؟! عذاب وجدان نمی‌گیرید؟
‏حقوق کاربر و اصول رقابت را که لگدمال می‌کنید، ای‌کاش لااقل شرم پیشه کنید و گمان نکنید که سکوت دیگران در برابر شما همیشگی خواهد بود.
‏متاسفانه درباره رویه‌های ⁧‫غیر اخلاقی‬⁩، ⁧‫غیر قانونی‬⁩ و ⁧‫غیر حرفه‌ای‬⁩ بلاگفا گفتنی بسیار است.

بلاگفا

یعنی بلاگفا وبلاگ‌هایی را که قصد مهاجرت به ⁦‪blog.ir‬⁩ داشتند را ⁧‫رصد‬⁩، ⁧‫حذف‬⁩ و ⁧‫نابود‬⁩ نمی کرد؟! هک شده بود و همچنان هک شده است؟! بلاگفا لینک کاربرانش به بلاگ بیان را حذف نمی کرد؟! کامنت های کاربرانش را بدون اطلاع آنها حذف نمی کرد؟! پلیس فتا یا دادگاه دستور داده بود؟!

بلاگفا

خجالت‬⁩ نمی کشید؟! 

‏این ادعای تازه ⁧‫بلاگفا‬⁩ زشت تر از اقدامات غیر اخلاقی و غیر حرفه ای قبلی است!
‏لطفا بیش از این از صبر و سکوت ما سوء استفاده نکنید و اجازه بدهید در باره منش و روش بلاگفا سکوت کنیم.

‏سه گروه بیشترین لطمه را به اعتماد کاربران کم توقع و مظلوم ایرانی وارد کردند:

‏۱٫ مدیران نادان یا فاسد یا باج خواه
‏۲٫ سرویس دهنده های بی قانون و مستبد
‏۳٫ شرکت های فِیک یا کپی کارِ مدعیِ پروژه های بومی و ملی

***

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

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

به نظر شما باید به سکوت و مدارا و مماشات دربرابر بلاگفا ادامه داد؟


فروردین ۱۵ ۱۳۹۷

لینوکس فدورا ۲۸ بتا منتشر شد

f28-beta

همانطور که قبلا در خبرها گفته شد و با توجه به برنامه زمانبندی انتشار Fedora 28 ، هم اکنون به اطلاع می رساند که نسخه بتا از لینوکس فدورا ۲۸ منتشر شد و کاربران می توانند این نسخه را دانلود کنند و از آن استفاده نمایند.

گفتنی است این نسخه بتا می باشد و به این معنی می باشد که کد کامل شده است و شباهت زیادی به نسخه نهایی دارد.انتظار می رود تا نسخه نهایی فدورا ۲۸ بر اساس برنامه زمانبندی در ماه May منتشر شود.

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

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

 

برخی ویزگی های جدید در لینوکس فدورا ۲۸ :

 

  • پشتیانی از نسخه ی ۶۴ بیتی برای معماری ARM
  • استفاده از میزکار Gnome 3.28 در نسخه ی Workstation
  • استفاده از VirtualBox guest additions به صورت پیش فرض
  • استفاده از Kebernetes 1.9 در Fedora 28 Atomic Host برای orchestrating container-native
  • استفاده از نسخه ی glibc 2.27
  • استفاده از آخرین نسخه ی  GNU Compiler Collection (GCC) 8
  • بروزرسانی چندین زبان برنامه نویسی از جمله Golang 1.10 و Ruby 2.5
  • رفع باگ و بروزرسانی چندین بسته ی نرم افزاری

 

دانلود لینوکس فدورا ۲۸ بتا :

 

جهت دانلود نسخه ی Workstation می توانید از این لینک استفاده کنید :

 

https://getfedora.org/workstation/prerelease/

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

 

 

https://getfedora.org/server/prerelease/

جهت دانلود نسخه ی Atomic Host می توانید از لینک پایین استفاده کنید :

 

https://getfedora.org/atomic/prerelease/

 

 

برای دانلود فدورا ۲۸ با میزکارهای مختلف از جمله KDE Plasma,XFCE,LXDE و چندی میزکار دیگر که اصطلاحا به آنها Spin گفته می شود،می توانید از لینک پایین استفاده کنید :

 

https://spins.fedoraproject.org/prerelease

 

جهت دانلود فدورا ۲۸ برای کارهای آزمایشگاهی و خاص می توانید از نسخه ی Fedora Labs استفاده کنید :

 

https://labs.fedoraproject.org/prerelease

 

برای دانلود فدورا ۲۸ برای دستگاه هایی با معماری ARM مانند Raspberry Pi 2 و Raspberry Pi 3 می توانید از لینک پایین استفاده کنید :

 

https://arm.fedoraproject.org/prerelease

 

برای دانلود تمامی نسخه از طریق تورنت می توانید از لینک پایین استفاده کنید :

 

https://torrent.fedoraproject.org/

 

 


فروردین ۱۴ ۱۳۹۷

تسکی که به خیر گذشت.

توی شرکت به این نتیجه رسیده بودیم که یه تعداد از فایل‌هایی که روی سرور داریم اضافی هست و باید کلاً پاک بشن. من که می‌گم یه تعداد شما خودتون یه تعداد خیلی بالا رو در نظر بگیرید. برای این کار از طرف یه تیم دیگه لیست فایل‌هایی که برامون مهم هستن و باید بمونن رو بهم ارسال کرده بودن (لیست A) و من باید همه‌ی فایل‌های غیر از اونها رو از روی استوریج پاک می‌کردم.

سناریوی خیلی پیچیده‌ای نیست کافیه من لیست فا‌یل‌های موجود رو تهیه کنم (لیست B)، فایل‌هایی از لیست ‌B که داخل لیست A هستن رو حذف کنم و لیست C رو بسازم و دونه دونه‌ی فایل‌های موجود توی لیست C رو حذف کنم. 🙂 خب من هم همین کار رو کردم. طبیعتاً این کار رو دستی انجام نمی‌دم و انتخاب اوّلم برای انجامش اسکریپت Bash بود. یه حلقه‌ی while که خطوط لیست B رو دونه دونه می‌خوند و توی لیست A دنبال اون می‌گشت اگر پیداش نمی‌کرد اون رو به یه فایل دیگه تحت عنوان فایل‌های لیست C اضافه می‌کرد.

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

(تعداد فایل‌های لیست B) – (تعداد فایل‌های لیست A) = (تعداد فایل‌ها لیست C)

حداقل دوّم این بود که چند تا از فایل‌های توی لیست C رو به صورت رندم توی لیست A چک کنم تا مبادا (احتمال خیلی خیلی پایین) اسکریپت اشتباه کرده باشه.

من در مرحله‌ی جمع و تفریق به مشکل خوردم. این معادله برقرار نبود!!!! تعداد اختلاف خیلی خیلی بالا بود. اسکریپت به خوبی و بدون خطا داشت اجرا می‌شد، بدون خطا تموم می‌شد ولی خروجی اون چیزی نبود که باید باشه. چیزای مختلفی رو چک کردم. کنار لیست C یه لیست دیگه به اسم D ساختم تا شروط به شکل if … else بررسی بشن و دقیقاً عملکرد اسکریپت رو ببینم ولی نتیجه تفاوتی نداشت. انواع لاگ‌ها رو فعال کردم ولی چیزی عایدم نشد. اسکریپت بدون خطا تموم می‌شد ولی جمع و تفریق اختلاف خیلی خیلی زیادی با مقادیر مورد انتظار داشت. در نهایت به صورت تصادفی متوجه شدم اسکپریت داخل لیست B از یه خطی جلوتر نمی‌ره و فقط ۱۵۰هزار تا (البته حدوداً چون مقدار واقعی یه خورده کمتر بود!) فایل رو چک می‌کنه!! هنوز نمی‌دونم مشکل چی بوده ولی خیلی مسخره بود. پس این اسکریپت رو بی‌خیال شدم و رفتم سراغ پایتون. خیلی بهتر از Bash عمل کرد و کار رو یک سره کرد برام.

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

چون آدم فراموشکاری هستم اینها رو نوشتم تا اون «دفعه‌ی بعد» بدونم چه تصمیماتی داشتم. شما چه ایده‌/تجربه‌ای دارید؟


فروردین ۱۴ ۱۳۹۷

سال نو، وبلاگ نو…

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