منبع اصلی نوشتار زیر در این لینک قرار دارد

همایش نرم‌افزارهای متن‌باز و جشن انتشار اوبونتو ۱۵.۰۴

هفدهمین همایش لینوکس و جشن انتشار اوبونتو ۱۵.۰۴
سلام دوستان،
مانند گذشته، با انتشار نسخه جدیدی از اوبونتو، قرار است هفدهمین همایش گنو/لینوکس شامل معرفی اوبونتو ۱۵.۰۴ و ابزارهای مرتبط با نرم‌افزارهای آزاد و متن‌باز را برگزار کنیم. آخرین همایش حدود آذر ماه ۱۳۹۳ برگزار شد که من در آن کارگاهی با عنوان شروع کار با Java و MySQL داشتم.
این‌بار قرار با همکاری بچه‌های بسیار خوب شاخه دانشجویی ACM (انجمن علمی کامپیوتر دانشگاه تهران) و همت و کمک شما دوستان یک همایش پر محتوا برگزار کنیم.

برنامه های همایش

همایش شامل دو بخش کارگاه‌ها و ارائه‌ها است. تاکنون برگزاری ۹ کارگاه، ۴ ارائه، یک سخنرانی و بخش اخبار  قطعی شده است. کارگاه‌ها به صورت همزمان برگزار خواهند شد. در نتیجه امکان ثبت‌نام و حضور در دو کارگاه وجود ندارد. در زیر فهرست برنامه‌های این دوره از همایش را مشاهده می‌فرمایید.
هفدهمین همایش لینوکس و جشن انتشار اوبونتو ۱۵.۰۴
هفدهمین همایش لینوکس و جشن انتشار اوبونتو ۱۵.۰۴

کارگاه‌ها

  1. کارگاه golnag –  فرود غفوری
  2. کارگاه رزبری‌پای – امیرحسین گودرزی
  3. کارگاه فایروال – ایمان همایونی و محمد ورمزیار
  4. کارگاه صفر تا صد اوبونتو – دانیال بهزادی
  5. کارگاه لاراول – گروه کاربران لاراول تهران
  6. کارگاه روبی آن ریلز – سمیر رحمانی و بهنام احمدخان بیگی
  7. کارگاه node.js – مهدی دهقانی
  8. کارگاه map reduce – دکتر بشیر سجاد
  9. کارگاه شروع سریع با VyOS – مهدی سرمدی

ارائه‌ها و سخنرانی‌ها

  1. سخنرانی عمومی – محمد تشکری
  2. داده انبوه (Big Data) – امیر صدیقی
  3. راه اندازی کسب و کار – دکتر بهراد غیاث الدین
  4. ده سال اوبونتو – ایریکس اسماعیلی
  5. اخبار – جادی
  6. اوبونتو تاچ – دانیال بهزادی

چطور در همایش حضور پیدا کنیم؟

شرکت در این همایش برای عموم علاقه‌مندان آزاد و رایگان است! تنها کاری که باید انجام بدهید ثبت‌نام جهت حضور در جشن است. برای ثبت‌نام به سایت همایش لینوکس و نرم‌افزارهای متن‌باز مراجعه کنید.
زمان: پنج‌شنبه، ۷ خرداد ۱۳۹۴ از ساعت ۸:۳۰ صبح
مکان: تهران – خیابان کارگر شمالی – بالاتر از خیابان جلال آل احمد – دانشکده‌ی فنی دانشگاه تهران

اطلاعات بیشتر

برای اطلاعات بیشتر می‌توانید به پیوندهای زیر مراجعه نمایید:

به امید دیدار شما در همایش :)

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

همایش نرم‌افزارهای متن‌باز و جشن انتشار اوبونتو ۱۴.۱۰

سلام،

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

برنامه های همایش

همایش شامل دو بخش کارگاه‌ها و ارائه‌ها است. تاکنون برگزاری ۴ کارگاه، ۳ ارائه و یک سخنرانی  قطعی شده است. کارگاه‌ها به صورت همزمان برگزار خواهند شد. در نتیجه امکان ثبت‌نام و حضور در دو کارگاه وجود ندارد.

فهرست کارگاه‌ها

  1. کارگاه صفر تا 100 اوبونتو (توسط دانیال بهزادی)
  2. کارگاه شروع کار با MySQL و Java (توسط خودم، سعید زبردست)
  3. کارگاه امنیت اوبونتو
  4. کارگاه نصب سرور

فهرست ارائه‌ها و  سخنرانی‌ها

  1. سخنرانی دکتر خوانساری (ریاست مرکز تحقیقات و مخابرات ایران)
  2. ارائه Big Data (توسط امیر صدیقی)
  3. ارائه Open Stack (توسط روزبه شفیعی)
  4. ارائه اخبار لینوکس و نرم‌افزارهای آزاد (توسط جادی)

چطور در همایش حضور پیدا کنیم؟

شرکت در این همایش برای عموم علاقه‌مندان آزاد و رایگان است! تنها کاری که باید انجام بدهید ثبت‌نام جهت حضور در جشن است. برای ثبت‌نام به سایت همایش نرم افزار های آزاد مراجعه کنید.
مکان: تهران، ولنجک، دانشگاه شهید بهشتی، سالن مولوی
زمان: پنج‌شنبه، ۲۰ آذر ۱۳۹۳ از ساعت ۸:۳۰ صبح

لطفا

  • حتما در همایش حضور داشته باشید. حضور شما و هم‌صحبتی با شما مایه افتخار و انگیزه ماست.
  • اگر در فیس‌بوک هستید، حضور خود را در رویداد همایش نرم‌افزارهای متن باز و جشن انتشار اوبونتو ۱۴.۱۰ اعلام کنید.
  • اگر مایلید در این همایش ارائه‌ای داشته باشید زودتر ما را در جریان قرار بدهید.
  • تا حد امکان در مورد این مراسم اطلاع‌رسانی کنید و از دوستانتان هم دعوت کنید تا حضور داشته باشند.

چند نکته

  1. ثبت نام اینترنتی جهت ورود به دانشگاه الزامی می‌باشد. همراه داشتن کارت شناسایی توصیه می‌شود.
  2. کمیته برگزاری ارائه خدمات کامل را تنها به دارنگان کارت ثبت نام تعهد می نماید.
  3. همراه داشتن رایانه شخصی برای شرکت در کارگاه ها توصیه می‌شود.

اطلاعات بیشتر

برای اطلاعات بیشتر می‌توانید به پیوندهای زیر مراجعه نمایید:
به امید دیدار شما در همایش :)


ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

از دستور history بهتر استفاده کنیم

مقدمه

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

فهرست دستورات اجرا شده

در زیر خروجی پیش‌فرض دستور history را مشاهده می‌نمایید:

$ history
1008 ll
1009 ifconfig
1010 sudo iptables -nL
1011 sudo psad -S
1012 aptitude update
1013 aptitude full-upgrade
1014 history

فهرست دستورات اجرا شده همراه با تاریخ و ساعت

برای مشاهده زمانی که هر دستور در خط فرمان وارد شده است می‌توانید متغیر HISTTIMEFORMAT را مقداردهی نمایید:

$ export HISTTIMEFORMAT='%F %T  '
$ history
1008 2014-05-07 09:09:11 ll
1009 2014-05-07 09:09:14 iconfig
1010 2014-05-07 09:09:25 sudo iptables -nL
1011 2014-05-07 09:09:37 sudo psad -S
1012 2014-05-07 09:09:47 aptitude update
1013 2014-05-07 09:09:55 aptitude full-upgrade
1014 2014-05-07 09:10:01 history
1015 2014-05-07 09:11:05 export HISTTIMEFORMAT='%F %T '
1016 2014-05-07 09:11:16 history

* در مقداردهی متغیر HISTTIMEFORMAT مقادیر زیر معادل یکدیگر هستند:

%F Equivalent to %Y - %m - %d
%T Replaced by the time ( %H : %M : %S )

فیلتر کردن برخی دستورات در تاریخچه دستور history

شما می‌توانید با مقداردهی متغیر HISTIGNORE دستوراتی را که مکرر استفاده می‌کنید را فیلتر نمایید:

$ export HISTIGNORE='pwd:history:ll:'
$ pwd
/home/saeid
$ history 3
1040 2014-05-07 09:22:58 history
1041 2014-05-07 09:32:48 export HISTIGNORE='pwd:history:ll:'
1042 2014-05-07 09:32:57 history 3

نادیده گرفتن تکرار دستورات

دستوراتی که قصد دارید تکرار دستورات را در history نادیده بگیرید، از متغیر HISTCONTROL به شکل زیر استفاده نمایید:

$ export HISTCONTROL=ignoredups

در نظر داشته باشید که در صورت نیاز می‌توانید تنظیمات HISTCONTROL را توسط دستور unset به حالت پیش‌فرض تغییر دهید:

$ unset HISTCONTROL

تنظیم حداکثر تعداد ذخیره‌سازی دستورات اجرا شده

متغیر HISTSIZE حداکثر تعداد ذخیره‌سازی دستورات اجرا شده را مشخص می‌نماید. مقدار پیش‌فرض این متغیر 1000 است.

$ export HISTSIZE=1000

* برای غیرفعال کردن ذخیره‌سازی دستورات اجرا شده، کافیست مقدار متغیر HISTSIZE را صفر قرار دهید:

$ export HISTSIZE=0

مشاهده دستورات اجرا شده توسط سایر کاربران

به صورت پیش‌فرض، فهرست دستورات اجرا شده توسط هر کاربر در فایلی با نام .bash_history داخل پوشه خانگی وی ذخیره می‌شود. به عنوان مثال دستورات اجرا شده توسط کاربر saeid در فایل زیر قابل مشاهده و دستیابی است:

root@Saeid-Dev:/home/saeid# ll ~saeid/.bash_history
-rw------- 1 saeid saeid 40324 May 7 08:05 /home/saeid/.bash_history

* برای تغییر نام و آدرس فایل تاریخچه دستورات از متغیر HISTFILE استفاده نمایید.
* در نظر داشته باشید که برای مشاهده محتوای فایل تاریخچه سایر کاربران، باید دسترسی کاربر ریشه (root) را داشته باشید.

جستجو در تاریخچه دستورات اجرا شده

شما می‌توانید به منظور جستجو در تاریخچه دستورات اجرا شده، از ترکیب دستورات history و grep به صورت زیر استفاده نمایید:

$ history | grep export
872 export HISTTIMEFORMAT='%F %T '
874 export HISTTIMEFORMAT='%T '
878 export HISTTIMEFORMAT='%Y - %m - %d %T '
1017 export HISTTIMEFORMAT=''
1019 export HISTTIMEFORMAT='%F %T '
1021 export HISTIGNORE='ll:history'
1024 export HISTIGNORE='ls -l:history:ll'
1026 export HISTIGNORE='ll'
1028 export HISTIGNORE='ls -l'
1041 export HISTIGNORE='pwd:history:ll:'
1043 export HISTCONTROL=ignoredups
1051 unset HISTCONTROL
1053 echo "export HISTCONTROL=ignoredups" >> ~/.bash_profile
1062 export HISTSIZE=1000
1074 history | grep export

روش دیگر برای جستجو در تاریخچه دستورات استفاده از ترکیب دکمه های Ctrl و r است. با فشردن هر دو دکمه با هم، فرم جستجوی خطی تاریخچه فعال می‌شود:

(reverse-i-search)`source ': source .bash_profile

ذخیره دائمی تنظیمات دستور history

برای ذخیره نمودن دائمی تنظیمات دستور history (و سایر دستورات) می‌توانید مقادیر مورد نظر را در فایل .bash_profile ذخیره نمایید.

$ vi ~/.bash_profile

یا به صورت خودکار، مانند:

$ echo "export HISTCONTROL=ignoredups" >> ~/.bash_profile

پاک کردن تاریخچه دستورات اجرا شده

به منظور پاک کردن تاریخچه تمامی دستورات اجرا شده میتوانید، از دستورات زیر را استفاده نمایید:

$ history -c

یا

$ > $HISTFILE

در نهایت اینکه اگر قصد دارید دستوری را بدون ذخیره شدن آن در تاریخچه دستورات اجرا نمایید، کافیست در ابتدای دستور یک فاصله (space) قرار دهید ;)


ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

از دستور history بهتر استفاده کنیم

مقدمه دستور history برای مشاهده تاریخچه دستورات وارد شده در خط فرمان سیستم‌عامل‌هایی بر مبنای یونیکس و لینوکس است. خروجی پیش‌فرض این دستور، فهرستی ساده‌ای از دستوراتی است که قبل از این دستور اجرا شده‌اند. مطلب امروز با معرفی پارامترها و ثابت‌های مرتبط با دستور history، باعث استفاده حداکثری شما از امکانات آن می‌شود. فهرست […]

مطالب مرتبط:

  1. نظارت همزمان بر چند فایل و دستور (MultiTail)
  2. آزاد کردن فضای RAM با پاک‌کردن Cache در لینوکس
  3. آشنایی با دستور netstat
  4. چگونه نرم افزار آزاد را درک کنیم؟
  5. دانلود تمام و کمال یک سایت با یک خط دستور

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

برنامه Homebrew برای مدیریت بسته‌های نرم‌افزاری در OS X

مقدمه

من از سیستم‌عامل اوبونتو برای انجام کارهای شرکت و پروژه‌های گنو/لینوکسی استفاده می‌کنم و در کنار آن، از مک‌بوک پرو (OS X) برای انجام سایر کارها و پروژهای شخصی بهره می‌برم. به صورت پیش‌فرض در اوبونتو و سایر گنو/لینوکس‌ها ابزارهایی مانند APT و RPM برای مدیریت بسته‌های نرم‌افزاری وجود دارند که OS X از آن‌ها بی‌بهره است. ابزار‌های زیادی برای رفع این کمبود وجود دارند. از جمله Fink، Gentoo/Alt، MacPorts، Pkgsrc، RudixH و Homebrew. من شخصا Homebrew را بدلیل راحتی در استفاده و زیاد بودن بسته‌ها در مخازن نرم‌افزاری آن به سایر ابزارها ترجیح می‌دهم.

نصب Homebrew

برای نصب Homebrew کافیست دستور زیر را در خط فرمان ترمینال وارد و اجرا نمایید:


ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

سپس دستور زیر را برای اطمینان از نصب صحیح Homebrew اجرا نمایید:


brew doctor # check everything is ok

Homebrew بسته‌های نرم‌افزاری را در پوشه /usr/local/Cellar نصب کرده و symlink آن‌ها را برای اجرا در /usr/local/bin ایجاد می‌نماید. دستورات زیر نحوه نصب بسته wget و محل نصب آن را مشخص می‌کنند:


$ brew install wget
$ cd /usr/local
$ find Cellar
Cellar/wget/1.15
Cellar/wget/1.15/bin/wget
Cellar/wget/1.15/share/man/man1/wget.1

$ ls -l bin
bin/wget -> ../Cellar/wget/1.15/bin/wget

دستور زیر را برای بررسی وجود /usr/local/bin در $PATH اجرا نمایید:


if [ -n "`echo $PATH | grep '/usr/local/bin'`" ]; then echo "true"; else echo "false"; fi;

در صورتیکه خروجی دستور بالا false بود، دستورات زیر را برای اضافه کردن /usr/local/bin به $PATH اجرا نمایید:


echo -e "\n# Homebrew bin dir path." >> ${HOME}/.bash_profile
echo "PATH=/usr/local/bin:\$PATH" >> ${HOME}/.bash_profile
source ~/.bash_profile

دستورات Homebrew

دستورات Homebrew بسیار شبیه به سایر نرم‌افزارهای مشابه‌اش است. برای اجرای دستورات Homebrew نیازی به دسترسی ریشه و sudo ندارید. در زیر مهم‌ترین دستورات Homebrew را مشاهده می‌نمایید:

دستور توضیح

brew list
نمایش فهرست نرم‌افزار‌های نصب شده

brew search
نمایش فهرست نرم‌افزار‌های قابل نصب

brew search pkg-name
جستجو برای نرم‌افزار pkg-name

brew info pkg-name
نمایش اطلاعات بسته نرم‌افزاری pkg-name

brew install pkg-name
نصب بسته نرم‌افزاری pkg-name

brew uninstall pkg-name
حذف بسته نرم‌افزاری pkg-name

brew update

بروزرسانی فهرست نرم‌افزار‌های قابل نصب

brew upgrade
بروزرسانی تمامی نرم‌افزارها

brew upgrade pkg-name
بروزرسانی نرم‌افزار pkg-name

پیوندها


ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

برنامه Homebrew برای مدیریت بسته‌های نرم‌افزاری در OS X

مقدمه من از سیستم‌عامل اوبونتو برای انجام کارهای شرکت و پروژه‌های گنو/لینوکسی استفاده می‌کنم و در کنار آن، از مک‌بوک پرو (OS X) برای انجام سایر کارها و پروژهای شخصی بهره می‌برم. به صورت پیش‌فرض در اوبونتو و سایر گنو/لینوکس‌ها ابزارهایی مانند APT و RPM برای مدیریت بسته‌های نرم‌افزاری وجود دارند که OS X از […]

مطالب مرتبط:

  1. چگونگی بدست آوردن لیست بسته های نرم افزاری که بیشتری فضا را استفاده کرده اند
  2. معرفی سایت Clocking IT برای مدیریت پروژه
  3. پلاگین MusicTracker برای Pidgin
  4. مدیریت چاپگرها از طریق مرورگر وب در لینوکس
  5. KBFX، جایگزینی برای K Menu

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

مهم‌ترین اشتباهات رایج در محیط خط فرمان

سلام :)

خط فرمان (Command Line) یکی از قدرتمندترین بخش‌های سیستم عامل های شبه یونیکس (Unix-like) و یونیکسی (Unix) است. مانند بسیاری از ابزارهای دیگر، در صورت استفاده نادرست از آن ممکن است که صدمات جبران ناپذیری به سیستم و در حالت کلی به سطح کاری شما وارد نماید. این مقاله قصد دارد تا با معرفی مهم‌ترین این اشتباهات، شما را از انجام دادن غیرعمدی آنها آگاه سازد. در انتهای مقاله نیز راه حل هایی جهت رفع ایرادات احتمالی معرفی است.

دستور userdel

این دستور به صورت پیش فرض فقط کاربر را حذف می کند و اثری بر روی فایل‌های کاربر ندارد. ولی در صورتی که در فایل تنظیمات /etc/deluser.conf حذف فایل‌ها نیز فعال شده باشد، با حذف کاربر، تمامی اطلاعات مربوط به آن نیز حذف می شود و ممکن است فایل های موجود در دایرکتوری وی مهم و ضروری باشد. این قضیه بیشتر بر روی سرورها و هنگام عوض شدن مدیرسیستم (SysAdmin) بروز پیدا می کند. پس قبل از پاک کردن کاربر از تنظیمات فایل /etc/deluser.conf و نیز مهم نبودن فایل‌های کاربر مورد حذف مطمئن شوید.

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

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

استفاده نادرست از پارامتر c به جای x

در صورتی که شما قصد استخراج کردن محتوای یک فایل فشرده را با دستور tar داشته باشید، باید از این دستور مانند زیر استفاده نمایید:
[bash]
tar -zxvf FILE.tar.gz DICRECTORY
[/bash]
حال اگر به جای x اشتباها از c استفاده نمایید، بدون هیچ اخطاری محتوای DIRECTORY جایگزین محتوای فعلی فایل بایگانی شما می شود!

اشتباهی گرفتن خط فرمان‌ها

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

استفاده از * در دستور rm

دستور rm برای حذف فایل و دایرکتوری‌ها استفاده می‌شود. همچنین * نشان دهنده تمامی این عناصر است. گاهی اوقات ممکن است که این دو با یکدیگر و به صورت اشتباه استفاده شوند. در زیر نمونه‌هایی از این اشتباهات ارائه شده اند.
وجود فاصله بین * و آدرس دایکتوری مورد نظر بار حذف:
[bash]
rm /foo/ *
[/bash]

استفاده از .* و پارامتر -R:
[bash]
rm -R .*
[/bash]
اشتباه دستور با در این مورد است که در دایرکتوری جایی .. به دایکتوری پدر (parent) اشاره دارد و استفاده همزمان از .* و پارامتر -R باعث می‌شود که دستور rm از پایین به بالا (درون به بیرون) تمامی اطلاعات شما را حذف نماید!

استفاده نادرست از / و . و .. در آدرس‌دهی به پارامترهای دستورات

اگر با خط فرمان و آدرس دهی فایل‌ها آشنا باشید می دانید که / به دایرکتوری ریشه و . به دایرکتوری جاری و .. به دایرکتوری پدر (parent) اشاره دارند. برای عوض کردن دسترسی دایرکتوری جاری در صورتی که در همان دایکتوری باشید باید دستوری مانند زیر را وارد نمایید:
[bash]
chmod -R 755 ./
[/bash]
حال فرض کنید که لازم است از sudo استفاده نمایید و دستور را اشتباها به یکی از صورت‌های زیر وارد کنید. به عدم وجود . قبل از / و فاصله بین . و / دقت نمایید:
[bash]
sudo chmod -R 755 /
sudo chmod -R 755 . /
[/bash]

آدرس دهی اشتباه سخت افزار در دستور dd

دستور dd برای رونوشت برداشتن (کپی) از اطلاعات در سطح پایین استفاده می‌شود. به عنوان مثال برای رونوشت برداشتن از یک فایل و ذخیره آن باید از دستوری مشابه دستور زیر استفاده نمایید:
[bash]
dd if=big_null_file of=/dev/sdb
[/bash]
که به نظر شما /dev/sdb آدرس سخت افزار مورد نظر مانند فلش مموری است، حال اگر /dev/sdb آدرس دومین هارد شما باشد، تمامی اطلاعات آن از دست رفته و شما فقط یک big_null_file دارید!

برای جلوگیری از این صدمات چکار کنیم؟

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

  • همیشه و در همه حال از تمامی اطلاعات خود نسخه پشتیبان داشته باشد. اگر توانستید نسخه پشتیبان را به صورت های مختلف مانند هارد اکسترنال، دی وی دی، بر روی وب و … به طور همزمان نگهداری نمایید.
  • قبل از اجرای دستورات اساسی مانند rm، mv و chmod حتما یکبار دیگر آن را بازخوانی نمایید.
  • دستور rm را همیشه با پارامتر -i اجرا نمایید.
  • به جای حذف مستقیم اطلاعات توسط rm آن ها را به سطل آشغال منتقل نمایید. برای انجام اینکار در اوبونتو مقاله Make “rm” Move Files To Trash Instead Of Completely Removing Them را مطالعه نمایید. روش های مشابهی نیز در سایر سیستم عامل ها وجود دارد.

منابع و اطلاعات بیشتر

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

منبع اصلی نوشتار زیر در این لینک قرار دارد

مهم‌ترین اشتباهات رایج در محیط خط فرمان

سلام خط فرمان (Command Line) یکی از قدرتمندترین بخش‌های سیستم عامل های شبه یونیکس (Unix-like) و یونیکسی (Unix) است. مانند بسیاری از ابزارهای دیگر، در صورت استفاده نادرست از آن ممکن است که صدمات جبران ناپذیری به سیستم و در حالت کلی به سطح کاری شما وارد نماید. این مقاله قصد دارد تا با معرفی […]

مطالب مرتبط:

  1. ساده ترین شمارنده بازدیدکنندگان با PHP
  2. نظارت همزمان بر چند فایل و دستور (MultiTail)
  3. اتصال به اینترنت از خط فرمان لینوکس
  4. راه اندازی محیط های X11 به صورت تودرتو
  5. مرجع دستورات خط فرمان لینوکس

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

معرفی و آموزش پیاده‌سازی Apache Lucene

سلام،

Apache Lucene
Apache Lucene

حدود یک سال و نیم قبل در مطلبی به معرفی خزنده‌های وب (Web crawlers) و آموزش راه اندازی یک خزنده وب ساده به زبان جاوا پرداختم. در طول این مدت افراد بسیاری در مورد خزنده‌های وب با من تماس گرفتند و سوالات مختلفی در مورد این خزنده‌ها داشتند. در این مطلب به معرفی و آموزش Apache Lucene که به منظور جستجو فایل‌های متین استفاده می شود، می پردازم. همچنین در آینده به بررسی ۳ محصول Hadoop, Apache Solr و Apache Nutch خواهم پرداخت.

Apache Lucene

آپاچی لوسن کتابخانه ای برای راه اندازی موتورهای جستجوی متن می باشد. این کتابخانه آزاد بوده و تحت لایسنس Apache Licene 2.0 منتشر می شود. این کتابخانه به زبان جاوا (Java) نوشته شده و سپس به زبان های Delphi, Perl, C#, C++, Python, Ruby, و PHP پیاده سازی (پورت) شده است.
این کتابخانه این امکان را برای شما فراهم می آورد تا هر نوع موتور جستجوی متنی مانند موتور جستوی وب، لوکال (محلی) ویا فقط ویژه یک وب سایت را ایجاد نمایید. در نظر داشته باشید که Apache Lucene فقط برای جستجو استفاده می‌شود و برای جمع‌آوری اطلاعات و تحلیل آن‌ها نیاز به ابزارهای دیگری مانند Solr و Nutch دارید.
برای دریافت این کتابخانه به صفحه دانلود آپاچی لوسن مراجعه نمایید. همچنین می توانید نسخه فعلی (۳.۶.۰) را از آدرس زیر دریافت نمایید:
دانلود کتابخانه آپاچی لوسن نسخه ۳.۶.۰

استفاده از کتابخانه Apache Lucene

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

مرحله اول: ایندکس کردن اطلاعات

قبل از هر چیز شما باید اطلاعاتی را که قصد جستجو در آن‌ها را دارید ایندکس نمایید. ایندکس کردن اطلاعات فواید زیادی دارد که یکی از مهم‌ترین آن‌ها مرتب‌سازی و افزایش سرعت جستجو است.
ایندکس اطلاعات در لوسن توسط دو کلاس Document و Field صورت می پذیرد. Document سند شما و Field اطلاعات مرتبط با سند مانند عنوان، محتوا و… است. این وظیفه شماست که اطلاعات خود از جمله رشته‌ها، انواع فایل‌ها، اطلاعات ذخیره شده در پایگاه داده و… را به کلاس Document تبدیل و ایندکس نمایید. در زیر تعامل Index, Document و Field را مشاهده می کنید:

 Index 

Document 1

Field A (name/value)

Field B (name/value)

Document 2

Field A (name/value)

Field B (name/value)

بعد از آماده سازی Document باید توسط کلاس IndexWriter، ایندکس را ذخیره می کنیم. پارامتر اول در فراخوانی IndexWriter دایکتوری ذخیره‌سازی ایندکس را مشاهده می‌کند.
با کدهای زیر چند عبارت را در حافظه دسترسی تصادفی (RAM) ذخیره کردیم:

Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);

IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action");
addDoc(w, "Lucene for Dummies");
addDoc(w, "Managing Gigabytes");
addDoc(w, "The Art of Computer Science");
w.close();

متد addDoc رشته‌ها را به ایندکس اضافه می کند:

private static void addDoc(IndexWriter w, String value) throws IOException {
Document doc = new Document();
doc.add(new Field("title", value, Field.Store.YES, Field.Index.ANALYZED));
w.addDocument(doc);
}
}

مرحله دوم: ایجاد کوئری (Query)

در این برنامه ما عبارت مورد نظر برای جستجو را از ورودی (stdin) دریافت می‌کنیم:

String querystr = args.length > 0 ? args[0] : "lucene";
Query q = new QueryParser(Version.LUCENE_36, "title", analyzer).parse(querystr);

مرحله سوم: انجام جستجو

در این مرحله کوئری (جستار؟) ساخته شده را بر روی ایندکس جستجو می کنیم. همچنین از کلاس TopScoreDocCollector برای بدست آوردن ۱۰ نتیجه مرتبط‌تر استفاده کرده ایم:

int hitsPerPage = 10;
IndexReader reader = IndexReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;

مرحله چهارم: مشاهده نتایج

در انتها نتایج بدست آمده را نمایش می‌دهیم:

System.out.println("Found " + hits.length + " hits.");
for(int i=0;i < hits.length;++i) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
System.out.println((i + 1) + ". " + d.get("title"));
}

همین!

کلاس HelloLucene

در زیر کلاس HelloLucene را یکجا مشاهده می فرمایید:

import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;

public class HelloLucene {
public static void main(String[] args) throws IOException, ParseException {
// 0. Specify the analyzer for tokenizing text.
// The same analyzer should be used for indexing and searching
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);

// 1. create the index
Directory index = new RAMDirectory();

IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);

IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action");
addDoc(w, "Lucene for Dummies");
addDoc(w, "Managing Gigabytes");
addDoc(w, "The Art of Computer Science");
w.close();

// 2. query
String queryStr = args.length > 0 ? args[0] : "lucene";

// the "title" arg specifies the default field to use
// when no field is explicitly specified in the query.
Query q = new QueryParser(Version.LUCENE_35, "title", analyzer).parse(queryStr);

// 3. search
int hitsPerPage = 10;
IndexReader reader = IndexReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;

// 4. display results
System.out.println("Found " + hits.length + " hits.");
for (int i = 0; i < hits.length; ++i) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
System.out.println((i + 1) + ". " + d.get("title"));
}

// searcher can only be closed when there

// is no need to access the documents any more.

searcher.close();
}

private static void addDoc(IndexWriter w, String value) throws IOException {
Document doc = new Document();
doc.add(new Field("title", value, Field.Store.YES, Field.Index.ANALYZED));
w.addDocument(doc);
}
}

منابع

شاد و پیروز باشید :)


ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

معرفی و آموزش پیاده‌سازی Apache Lucene

سلام، حدود یک سال و نیم قبل در مطلبی به معرفی خزنده‌های وب (Web crawlers) و آموزش راه اندازی یک خزنده وب ساده به زبان جاوا پرداختم. در طول این مدت افراد بسیاری در مورد خزنده‌های وب با من تماس گرفتند و سوالات مختلفی در مورد این خزنده‌ها داشتند. در این مطلب به معرفی و […]

مطالب مرتبط:

  1. خزنده وب (Web Crawler)
  2. معرفی نقشه ذهنی و آموزش نرم افزار FreeMind
  3. راهنمای سریع Apache Virtual Host
  4. پیاده روی ، ارزانترین ورزش
  5. معرفی نرم افزار WAMP

ادامه مطلب