۱۳۸۹/۰۸/۰۳

وارد کردن اطلاعات از فایل به پایگاه داده MySQL


سلام

قبلا در مورد انتقال اطلاعات در MySQL توضیح دادم. مطلب امروز در زمینه وارد کردن اطلاعات (import) از یک فایل متنی (txt, csv و ...) به پایگاه داده MySQL می باشد. برای وارد کردن اطلاعات از یک فایل به پایگاه داده MySQL از دستور `LOAD DATA INFILE` استفاده می کنیم. شکل کلی این دستور به صورت زیر است:
[sql]
mysql> LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
[/sql]
ساده ترین شکل استفاده از این دستور به شکل زیر می باشد:
[sql]mysql> LOAD DATA INFILE 'data.txt' INTO TABLE my_db.my_table;
[/sql]
در صورتی که جداکننده فیلد ها (FIELDS TERMINATED) را مشخص نکنید، MySQL مقدار پیش فرض \t که همان تب (Tab) هست را در نظر می گیرد. همچنین مقدار پیش فرض جداکننده خطوط \n که همان خط جدید (New Line) می باشد را در نظر می گیرد.
نکته
در صورتی که فایل شما دارای کاراکترهای UTF8 می باشد، علاوه بر تعریف جدول my_table با encoding مربوط به UTF8، باید نوع encoding را نیز در دستور LOAD DATE بنویسید. به صورت:
[sql]LOAD DATA INFILE 'data.txt' INTO TABLE my_db.my_table character set UTF8;
[/sql]
در ادامه به بررسی یک مثال عملی در مورد واردکردن اطلاعات یک فایل CSV می پردازیم.

بررسی یک مثال عملی


فرض کنید فایلی به نام ip-list.csv با محتوای زیر دارید:

"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia"
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China"
"1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia"
"1.0.8.0","1.0.15.255","16779264","16781311","CN","China"
"1.0.16.0","1.0.31.255","16781312","16785407","JP","Japan"
"1.0.32.0","1.0.63.255","16785408","16793599","CN","China"
"1.0.64.0","1.0.127.255","16793600","16809983","JP","Japan"
"1.0.128.0","1.0.255.255","16809984","16842751","TH","Thailand"
"1.1.0.0","1.1.0.255","16842752","16843007","CN","China"
"1.1.1.0","1.1.1.255","16843008","16843263","AU","Australia"
"1.1.2.0","1.1.63.255","16843264","16859135","CN","China"
"1.1.64.0","1.1.127.255","16859136","16875519","JP","Japan"

این فایل تعدادی آی‌پی و کشور متناظر با آن‌ها را نمایش می دهد. برای وارد کردن این اطلاعات به پایگاه داده MySQL ابتدا باید جدولی مناسب با این داده‌ها بسازیم. برای آشنایی با انتخاب نوع مناسب داده می توانید به مطلب انواع داده در MySQL مراجعه نمایید. دستور زیر یک جدول به نام geoip ایجاد می کند:
[sql]
mysql> CREATE TABLE `geoip` (
`begin_ip` varchar(15) NOT NULL,
`end_ip` varchar(15) NOT NULL,
`begin_num` int(11) unsigned NOT NULL,
`end_num` int(11) unsigned NOT NULL,
`country` char(2) NOT NULL,
`name` varchar(50) NOT NULL
) ENGINE=MyISAM;
[/sql]

دستور زیر این اطلاعات را از فایل ip-list.csv به جدول geoip وارد می‌کند. در صورت نیاز باید آدرس صحیح فایل را نیز در کنار نام آن درج کنید.
[sql]
mysql> LOAD DATA INFILE 'ip-list.csv'
INTO TABLE geoip
FIELDS TERMINATED BY "," ENCLOSED BY '"';

Query OK, 12 rows affected (0.23 sec)
Records: 12 Deleted: 0 Skipped: 0 Warnings: 0
[/sql]
در دستور بالا مشخص کرده ایم که ستون‌ها با "," جدا شده و محتوای هر ستون نیز در داخل دو " قرار دارد.

منابع




پی نوشت
  • متاسفانه بخش توسعه پایگاه داده MySQL با استناد به قانون جرايم رايانه ای فیلتر شده است. امیدوارم مسئولین تفکر و تعقل بیشتری نسبت به فیلتر کردن سایت ها داشته باشند.

  • این مطلب به بهانه فیلتر شدن بخش توسعه پایگاه داده MySQL نوشته شده است.



شاد باشید

۱۳۸۹/۰۶/۱۴

برنامه تلویزیونی صفر و یک با موضوع سیستم عامل های متن باز

سلام :)

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

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

از اینکه صدا و سیما بعد از مدت ها بحثی را در زمینه گنو لینوکس آغاز کرده خیلی خوشحالم. در طول ۴۵ دقیقه که به نظر من خیلی کم بود، سعی کردم مفاهیم اصلی و پایه ای گنو/لینوکس را توضیح بدهم.  قرار شد هفته آینده نیز موضوع سیستم عامل های متن باز و آزاد ادامه پیدا کند.

به درخواست دوستان فیلم برنامه که حدود ۴۵ دقیقه است را آپلود کردم.


من حدود ۲۵ اسلاید را برای ارائه آماده کرده بودم که شامل بسیاری از مباحث گنو/لینوکس میشد که متاسفانه بدلیل کمبود وقت فرصت ارائه آن ها را پیدا نکردم. امیدوارم که اگر فرصت دوباره ای پیدا کردم، بحث های مهم تر مانند امنیت، افکت های تصویری و مهاجرت از ویندوز را بیشتر توضیح بدهم.

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


پی نوشت

  • فعلا اسلاید مربوط به برنامه رو آپلود نکردم ولی بزودی اون رو هم آپلود می کنم.

  • در آخر ازتون می خوام که انتقادات و پیشنهاداتتون رو بگید. مطمئنا تا وقتی این انتقادات و پیشنهادات نباشه، امکان پیشرفت واقعی هم وجود نداره ;)

  • سرورهای سایت اوبونتو ایران خراب شدن. این هم از شانس بده اوبونتو کاران



از همه دوستانی برام آرزوی موفقیت کرده بودند، خیلی تشکر می کنم 8)
شاد و موفق باشید

بروزرسانی
روز شنبه ۲۷ شهریور ۱۳۸۹ برنامه دوم با موضوع سیستم عامل های متن باز ارائه شد. متاسفانه این برنامه ضبط نشده است.

۱۳۸۹/۰۵/۱۰

چگونه به مشتریان خود نه بگوییم؟

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

ساده ترین و البته بدترین راه ها!

  • عدم پاسخگویی به ایمیل مشتری 
  • رد تماس مشتری 
  • پیچاندن مشتری به هر صورتی 
*اکیدا از راه های بالا استفاده نکنید :P


راه بهتر و مفیدتر

با مشتری خود ارتباط روحی برقرار کنید. یعنی کاملا به مشتری خود توضیح دهید که وضعیت وی را درک کرده اید و متوجه خواسته وی می باشید.
هیچ وقت به مشتری خود به صورت مستقیم نه نگویید. همیشه دلیل نه گفتن خود را توضیح دهید. به عنوان مثال در صورتی که وقت کافی برای انجام کار را ندارید از او عذرخواهی کرده و زمان بندی احتمالی خود را به او اعلام کنید.
در هر حالتی همیشه راه های دیگری نیز وجود دارد. این راه ها را به مشتری خود معرفی کنید. مثلا در صورتی که شما نمی توانید بخشی از نرم افزار آن ها تغییر و یا توسعه دهید، شخص دیگری را که مطمئنید از عهده این کار بر می آید به آن ها معرفی کنید. سعی کنید قبل از معرفی، از آن شخص مطمئن شوید.
در صورتی که احساس کردید مشتری هنوز از شنیدن نه ناراحت است، سعی کنید که مدیر بالاتر خود را در جریان گذاشته و به مشتری اعلام کنید که مدیر بالاتر شما قصد توضیح بیشتر در این زمینه را دارد. این کار باعث می شود که مشتری متوجه اهمیت و جایگاه خود نزد شما شود و بداند که هیچ دلیل غیر منطقی مبنی بر نه گفتن شما وجود ندارد.
سایر کارهایی که می توانید برای مشتری انجام دهید را به وی بگویید. مثلا در صورتی که نمی توانید بهترین نرم افزار مالی را بررسی و همراه با مستندات به عنوان مشاوره برای آن ها ارسال کنید، می توانید لیستی از ۱۰ محصول برتر مالی را آماده و به وی ارائه دهید.
موفق باشید :)

۱۳۸۹/۰۴/۰۶

خزنده وب (Web Crawler)

سلام :)

مطلب امروز ضمن آشنا کردن شما با Web crawler و معماری آن، سورس خزنده وب ساده ای به زبان جاوا را ارائه می دهد.

خزنده وب (Web Crawler) چیست؟



خزنده وب که بیشتر ما آن را با عنوان Web crawler می شناسیم به برنامه کامپیوتری اطلاق می شود که World Wide Web (وب جهان گستر) را به صورت مرتب و سلسله مراتبی بازدید کرده و اطلاعات آن را مورد پردازش قرار می دهد. از Web crawler ها با عناوین دیگری مانند ants, automatic indexers, bots, Web spiders و Web robots نیز یاد می شود.

کاربرد ها



۱- موتورهای جستجو

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

۲- مدیریت فنی وب سایت

مدیریت فنی وب سایت بخشی از کار این خزنده هاست که شامل یافتن لینک های شکسته (Broken Link) ، اعتبار سنجی (Validation) کدهای HTML، فایل های CSS و ... می باشد.

۳- جمع آوری اطلاعات خاص

کاربرد دیگر خزنده های  وب جمع آوری اطلاعات خاصی مانند آدرس های ایمیل است. معمولا هدف از اینکار ارسال هرزنامه (spam) می باشد. برای جلوگیری از ثبت آدرس ایمیل توسط این خزنده ها، می توانید آدرس ایمیل خود را به صورت saeidREMOVEME AT جیمیل و یا موارد مشابه دیگر بنویسید.

نحوه کار



به صورت عمومی نحوه کار Web crawler ها به این صورت است که ابتدا لیستی از URL ها (آدرس های وب) که به عنوان seed شناخته می شوند را برای بازدید پردازش می کنند. هنگام پردازش این آدرس ها، لیست لینک ها و آدرس های موجود در صفحات آن ها را گردآوری کرده و به لیست ابتدایی اضافه می کنند. بقیه اطلاعات را نیز با توجه به نیاز و هدف خود ذخیره  و پردازش می نمایند.

معماری خزنده وب



خزنده وب بخش اصلی و مرکزی هر موتور جستجویی را تشکیل می دهد. به همین جهت الگوریتم و معماری آن ها به شدت مخفی نگه داشته می شود. با این وجود معماری سطح بالای (High-level architecture) آن به شکل زیر می باشد:



عادی کردن آدرس (URL normalization)



منظور از عادی کردن آدرس، یکی کردن آدرس هایی می باشد که دارای خروجی یکسانی هستند. هدف از این کار جلوگیری از جمع آوری اطلاعات یکسان از چندین URL می باشد. URL normalization با نام URL canonicalization نیز شناخته می شود که همان فرآیند تغییر آدرس برای استاندارد شدن می باشد.

مراحل فرایند عادی کردن آدرس



• تبدیل آدرس به حروف کوچک
HTTP://www.Example.com/ → http://www.example.com/

• افزودن / به آدرس در صورت نیاز
http://www.example.com → http://www.example.com/

• حذف آدرس ایندکس دایرکتوری
http://www.example.com/default.asp → http://www.example.com/
http://www.example.com/a/index.html → http://www.example.com/a/

• بزرگ کردن حروف encode شده یا همان حروف بعد از علامت ٪
http://www.example.com/a%c2%b1b → http://www.example.com/a%C2%B1b

• حذف بخش زاید
http://www.example.com/bar.html#section1 → http://www.example.com/bar.html

• حذف و تبدیل آی پی به دامنه
http://208.77.188.166/ → http://www.example.com/

• اعمال محدودیت بر روی پروتکل ها مانند تبدیل https به http
https://www.example.com/ → http://www.example.com/

• حذف پورت پیش فرض (پورت ۸۰ به صورت پیش فرض برای http می باشد)
http://www.example.com:80/bar.html → http://www.example.com/bar.html

• حذف / های تکراری
http://www.example.com:80/bar.html → http://www.example.com/bar.html

• حذف . ها (dot-segments)
http://www.example.com/../a/b/../c/./d.html → http://www.example.com/a/c/d.html

• حذف www از اول دامنه
http://www.example.com/ → http://example.com/

• مرتب کردن متغییرهای صفحه فعال
http://www.example.com/display?lang=en&article=fred
 → http://www.example.com/display?article=fred〈=en

• حذف متغییرهای اختیاری از query-string
http://www.example.com/display?id=123&fakefoo=fakebar
 → http://www.example.com/display?id=123

• حذف متغییرهای پیش فرض از query-string
http://www.example.com/display?id=&sort=ascending
 → http://www.example.com/display

• حذف علامت ? هنگامی که query-string خالی باشد
http://www.example.com/display? → http://www.example.com/display

• استانداردکردن encoding کاراکترها
http://www.example.com/display?category=foo/bar+baz
 → http://www.example.com/display?category=foo%2Fbar%20baz

شناسایی خزنده وب



خزنده های وب معمولا با استفاده از فیلد User-agent داده HTTP request خود را معرفی می کنند. شما با استفاده از لاگ وب سرور خود می توانید لیست این Web crawler های را مشاهده کنید. فیلد User agent ممکن است شامل URL ای باشد که به سایت سازنده خزنده اشاره می کند.

Spambot ها و سایر خزنده های مخرب معمولا فیلد User agent را به صورت غیر واقعی با اطلاعاتی مانند نام یک مرورگر پر می کنند.

فایل robots.txt



این فایل برای دادن اطلاعات اولیه در زمینه وب سایت مورد پردازش به خزنده های وب استفاده می گردد. به عنوان مثال با این فایل می توانید دسترسی خزنده های وب به بعضی زیر شاخه ها محدود کنید. دستورات زیر در فایل robots.txt از دسترسی خزنده ها به دایرکتوری /tmp/ جلوگیری می کند:
User-agent: *
Disallow: /tmp/

* فایل robots.txt یک استاندارد می باشد. به همین جهت خزنده وب (معمولا خزنده مخرب) می تواند آن را نادیده بگیرد.

معروف ترین خزنده های وب غیر آزاد



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

معروف ترین خزنده های متن باز



سورس خزنده وب به زبان جاوا



سایت sun در سال ۱۹۹۸ مقاله ای آموزشی با عنوان "Writing a Web Crawler in the Java Programming Language" را ارائه داد. در آن مقاله ضمن توضیح دادن Web crawler سورس برنامه آن نیز در اختیار عموم قرار گرفت. البته این برنامه خیلی ساده و در مرحله ابتدایی می باشد. شما باید با توجه به نیازهای خود آن را تغییر داده و مورد استفاده قرار دهید.

• دانلود سورس خزنده وب به زبان جاوا (لینک کمکی)

کاربرد خزنده وب برای من



برای سایت هایی که از نرم افزار های آماده مثل وردپرس استفاده نشده است و نیاز به موتور جستجو احساس می شد، با استفاده از خزنده ای که نوشتم، اطلاعات کل وب سایت مورد نظر را در داخل یک جدول در پایگاه داده ذخیره کردم. سپس توابعی برای جستجو بهینه بر روی داده ها در MySQL نوشتم و با استفاده از آن ها بخش جستجوی وب سایت مورد نظر را راه اندازی کردم. نمونه این جستجو ها در سایت های زیر فعال می باشد:

• داتک تله کام

• ارتباطات فرادانش سامان

منابع



موفق باشید ;)

۱۳۸۹/۰۴/۰۲

تجربه سفر به استانبول

سلام :)

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

معرفی استانبول




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

شروع مسافرت

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

بیشتر مراکز تاریخی و دیدنی استانبول در بخش اروپایی آن قرار دارند.

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

پیدا کردن یک آشنا یا دوست در استانبول


سایت couchsurfing.com را می شناسید؟ مطمئنا بیشتر اهالی سفر با این سایت آشنا هستند. به طور خلاصه couchsurfing یک جامعه مجازی برای اهالی سفر است. اگر قصد سفر به شهر یا کشوری را دارید، می توانید قبل از سفر دوست یا دوستانی را از طریق این سایت بیابید. برای اطلاعات بیشتر به لینک های زیر مراجعه کنید:
بیائید تا به کمک هم جهانی بهتر بسازیم!
پروژه کُوچ سِرفینگ

من از طریق این سایت با ceyda و دوستانش در استانبول آشنا شدم. آنها در روز اول ما را به شما مهمان کردند و بعد برای ۲ روز بعدی با هم برنامه ریزی کردیم. در طول مدتی که با ceyda و دوستانش بودیم  در مورد ایران، ترکیه، فوتبال، موسیقی، فیلم و حتی کشتی های ارسالی ایران به غزه صبحت کردیم. آنها به خوبی احمدی نژاد و موسوی را می شناختند. یکی از دوستان ceyda فیلم "کسی از گربه های ایرانی خبر نداره" را دیده بود و در مورد موسیقی فیلم صبحت می کرد. دوست دیگر ceyda که فرانسوی بود در مورد کلوتیلد ریس (Clotilde Reiss) صبحت می کرد.

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

شهر


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



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

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

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

۱- ترافیک

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

۲- وضعیت فرهنگی

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

حیوانات در کنار انسان ها در شهر قدم هستند. سگ ها در سایه استراحت می کنند و کسی به آنها شلیک نمی کند.

شهروندان

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

بیشتر شهروندان جوان و فروشندان می توانند به انگلیسی صبحت کنند. البته اگر ترک آذری باشید ارتباط برقرار کردن با آنها خیلی ساده تر می شود. بیشتر واژه های آن ها با ترکی خودمان یکی است فقط نحوه تلفظ آن ها متفاوت است.

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

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

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



توریست ها

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

خوراکی ها




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

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

بیشتر غذاهای آن ها با گوشت است. آخرین شام "İskender kebap" خوردیم که واقعا خوشمزه و معرکه بود.



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

ذرت (بلال) را مستقیم با حرارت نمی پختند بلکه آن را آب پز می کردند. به جای آب نمک هم از نمک خالی استفاده می کردند. ذرت های خودمان خیلی خوشمزه تر آن ها بود.

بازارها

استانبول بازارها و مراکز خرید بسیاری داشت. معروف ترین این بازارها Grand Bazaar و Spice Bazaar است. البته به توصیه ceyda و دوستانش ما از Grand Bazaar خرید نکردیم و خرید خود را از فروشگاه های موجود در اطراف و در طول مسیر تا Grand Bazaar انجام دادیم. بعد از رسیدن به گرند بازار و مشاهده قیمت های چند برابر آن متوجه توصیه ceyda و دوستانش شدیم.

دو نکته در مورد بازاری که رفتیم وجود دارد که واقعا مرا تحت تاثیر قرار داد. اول اینکه همه مغازه ها بین ۶ تا ۶:۳۰ بعد از ظهر تعطیل می کردند و  بعد از تعطیل کردن مغازه خود شروع به نظافت داخل و بیرون مغازه می کردند. میوه فروش ها، ماهی فروش ها و مغازه های لبنیاتی اطراف و محل قرار گیری اجناس خود را می شستند. دو م  اینکه بعد از تعطیلی مغازه های اصلی شروع به دست فروش ها می رسید. دست فروش ها بازار خود را درست جلوی مغازه هایی که اکنون بسته شده بودند به راه می انداختند. در دو روزی که به بازار رفتیم این دو نکته تکرار شدند.

حمل و نقل عمومی و رفت و آمد در شهر

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

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

جزایر اطراف استانبول (Princes' Islands)

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

صبحت پایانی

در صورتی که قصد سفر به استانبول دارید با توجه به وسعت جاذبه های گردشگری حداقل ۱ هفته در نظر بگیرید.

موفق باشید

۱۳۸۹/۰۳/۱۵

انتقال اطلاعات در MySQL

سلام :)

یکی از مراحل انتقال اطلاعات یک پروژه مربوط به انتقال پایگاه های داده می باشد. برای اینکار روش های مختلفی وجود دارد ولی همه آنها ۲ مرحله مشابه دارند، Import و Export کردن. مرحله export کردن را می توان به عنوان درست کردن نسخه پشتیبان نیز در نظر گرفت.
با فرض اینکه پایگاه داده مورد استفاده MySQL می باشد، می توانید از دستورات زیر استفاده کنید:

Export


دستور mysqldump برای گرفتن خروجی از پایگاه داده استفاده می شود. به عنوان مثال:
[bash]$ mysqldump -umy_user -p -R my_database > export.sql[/bash]
دستور بالا محتویات پایگاه داده my_database به همراه روتین های آن (پارامتر R) را در فایل export.sql ذخیره می کند.
در صورتی که پایگاه داده شما بر روی سرور قرار دارد می توانید با استفاده از پارامتر h و کاربر خودتان بر روی سرور مستقیم و بدون نیاز به ftp و ssh نسخه پشتیبان تهیه کنید:
[bash]$ mysqldump -umy_server_user -p -hserver_host -R my_database > export.sql[/bash]

Import


برای وارد کردن اطلاعات از دستور mysql استفاده می کنیم:
[bash]$ mysql -umy_user -p my_database < export.sql[/bash]
* به جهت علامت > توجه کنید.

ترکیب کردن Export و Import


برای ترکیب کردن این دو دستور از | استفاده می کنیم:
[bash]$ mysqldump -umy_user_1 -pmy_pass_1 -R my_database \
| mysql -umy_user_2 -pmy_pass_2 my_database[/bash]

*حداقل یکی از رمز عبورهای بالا (my_pass_1 یا my_pass_2) را باید وارد کنید.
البته Import کردن مستقیم از دستور Export خیلی جالب نیست. این دستور بیشتر زمانی کاربرد دارد که بخواهید یکی از جدول های پایگاه داده خود را بروز رسانی کنید:
[bash]
$ mysqldump -umy_user -pmy_pass_1 -R my_database my_table \
| mysql -umy_user -pmy_pass_2 my_database
[/bash]
دستور بالا ساختار و محتویات جدول my_table را بروزرسانی می کنید.

کاربرد دیگر ترکیب کردن Export و Import تهیه نسخه کاملا مشابه از پایگاه داده می باشد. دستورات زیر یک نسخه کاملا مشابه از پایگاه داده my_database با نام my_database_2 بر روی پایگاه داده ایجاد می کنید:
[bash]
$ mysqladmin -umy_user -p create my_database_2
$ mysqldump -umy_user_1 -pmy_pass_1 -R my_database \
| mysql -umy_user_2 -pmy_pass_2 my_database_2
[/bash]

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

موفق باشید

۱۳۸۹/۰۳/۰۶

تجربیات من از ۳ سیستم عامل ویندوز، لینوکس و مک

سلام :)

بعد از مدتی کار کردن با سیستم عامل های مختلف و در آخر با Mac OS X 10.6، تصمیم گرفتم که تجربه شخصی ام را بعد از استفاده از انواع مختلف سه سیستم عامل ویندوز، لینوکس و مک در وبلاگ قرار دهم.

ویندوز


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

ویندوز مزایایی نیز داشت که مهمترین آنها برای من موارد زیر می باشند:

  • کاربرپسند بودن

  • وجود ابزار های بسیار و متنوع

  • وجود بازی های مختلف و زیبا :D

  • در دسترس و عمومی بودن

  • وجود درایورهای سخت افزاری و پشتیبانی از بیشتر سخت افزارها


لینوکس




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

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

مک

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



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

مک نیز مشکلاتی دارد. مثلا خیلی وقت ها شما مجبورید برای انجام دادن کارها از ماوس استفاده کنید در حالی که در ویندوز و لینوکس بسیاری از کارها براحتی با کیبورد قابل انجام می باشند. از طرفی Shortcut های مک بعضی اوقات واقعا سخت هستند. البته بعد از مدتی عادت می کنید :)

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

و در آخر مک برای من آن قدر مزایا دارد که بتوانم از ایرادات آن چشم پوشی کنم.

دسته بندی سیستم عامل ها و استفاده کنندگان

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

  • برنامه نویسان

    1. مک

    2. لینوکس

    3. ویندوز



  • طراحان و گرافیست ها

    1. مک

    2. ویندوز

    3. لینوکس



  • علاقمندان به بازی های کامپیوتری

    1. ویندوز

    2. مک

    3. لینوکس



  • سیستم های نسبتا قدیمی و ضعیف تر

    1. لینوکس

    2. ویندوز

    3. مک



  • سرورها

    1. لینوکس

    2. ویندوز

    3. مک



  • سایر استفاده کنندگان عمومی دسکتاپ

    1. مک

    2. ویندوز

    3. لینوکس




پیوند ها

پی نوشت

بزودی تجربیات بیشتر خود را در مورد مک می نوسیم.

بروزرسانی
مک اونقدرها هم که فکر می کردم نتونست من رو راضی کنه. برگشتم به دنیای زیبای گنو/لینوکس :)
موفق و شاد باشید :)

۱۳۸۹/۰۲/۱۱

نصب Sun JDK 5 بر روی اوبونتو ۹.۱۰ و ۱۰.۰۴



سلام

بسته   Sun JDK نسخه ۱.۵ یا همان ۵ از مخازن اوبونتو ۹.۱۰ و ۱۰.۴ حذف شده و نسخه ۶ آن جایگزین شده است.

ساده ترین راه برای نصب نسخه Sun JDK 5 افزودن مخازن مربوط به آن در اوبونتو ۹.۰۴ به لیست مخازن ۹.۱۰ و ۱۰.۰۴ می باشد. برای این منظور مراحل زیر را دنبال کنید.

۱- فایل /etc/apt/sources.list را با یک ویرایش گر متن مانند gedit باز کنید:
sudo gedit /etc/apt/sources.list


۲- خطوط زیر را به آخر فایل اضافه کرده و بعد از ذخیره سازی آن را ببندید:
## for sun-java5-jdk
deb http://ir.archive.ubuntu.com/ubuntu jaunty-updates main multiverse


۳- لیست بسته ها را بروز کرده و sun-java5-jdk را نصب کنید:

sudo aptitude update
sudo aptitude install sun-java5-jdk


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

روش دیگر برای نصب jdk 5 دانلود کردن بسته ی نرم افزاری و وابسته های آن از سایت packages.ubuntu.com می باشد.

موفق باشید

۱۳۸۹/۰۱/۱۵

آشنایی با دستور netstat

سلام :)

netstat خلاصه network statistics، ابزاری خط فرمانی می باشد که به منظور نمایش اطلاعات متنوع در زمینه شبکه مانند اتصالات، جدول routing (جداول هدایت کردن بسته‌ها ) و... را در اختیار قرار می دهد.
این ابزار برای پیدا کردن مشکلات در شبکه و برآوردگر حجم اطلاعات رد و بدل شده در شبکه به عنوان یک اندازه‌گیر عملکرد استفاده می شود.

در زیر مواردی را از استفاده از این دستور مشاهده می فرمایید:

نمایش اطلاعات پورت ها


نمایش تمامی پورت ها

# netstat -a | more


نمایش تمامی پورت های tcp

# netstat -at


نمایش پورت های udp

# netstat -au


نمایش سوکت (Socket) هایی که در وضعیت Listen هستند


لیست پورت هایی که در وضعیت listen هستند

# netstat -l


لیست پورت های tcp که در وضعیت listen هستند

# netstat -lt


لیست پورت های udp که در وضعیت listen هستند

# netstat -lu


لیست پورت های UNIX که در وضعیت listen هستند

# netstat -lx


نمایش آمار برای هر پروتکل


نمایش آمار برای تمامی پورت ها

# netstat -s


نمایش آمار برای پورت های TCP

# netstat -st


نمایش آمار برای پورت های UDP

# netstat -su


نمایش PID و نام برنامه با استفاده از پارامتر -p


پارامتر -p را می تواند با هر یک از موارد بالا ترکیب کرد. این دستور PID و نام برنامه مربوطه را در خروجی netstat چاپ می کند.
# netstat -pt


عدم نمایش نام هاست


برای نمایش آی پی هاست به جای نام آن می توانید از پارامتر -n استفاده نمایید. در صورت استفاده از این پارامتر، سرعت چاپ خروجی دستور netstat به طور محسوسی افزایش می یابد.
# netstat -ptn


نمایش ادامه دار خروجی


در صورت استفاده از پارامتر -c در کنار سایر پارامتر های netstat، بعد از اجرا و چاپ نتایج، از دستور خارج نمی شود و هر چند ثانیه یک بار دستور را دوباره اجرا کرده و خروجی را چاپ می کند. برای خروج Ctrl+c را بزنید.
# netstat -c


نمایش اطلاعات kernel routing


# netstat -r


یافتن برنامه یا پورت با ترکیب با grep


به عنوان مثال برای یافتن ssh های فعال از دستور زیر استفاده می کنیم:
# netstat -ap | grep ssh


و همچنین برای یافتن اطلاعات یک پورت از دستور زیر استفاده می نمایید:
# netstat -an | grep ':80'


نمایش interface های موجود


برای نمایش خلاصه اطلاعات interface های موجود از پارامتر -i استفاده نمایید:
# netstat -i


همچنین برای نمایش اطلاعات بیشتر به ازای هر interface از پارامتر e به همراه i استفاده کنید:
# netstat -ie


منابع
نت‌استات (ویکی پدیای فارسی)


NetStat Official website
Netstat (wikipedia)
UNIX / Linux: 10 Netstat Command Examples


موفق باشید

۱۳۸۹/۰۱/۰۹

نقدی بر مجموعه تلویزیونی دکستر (Dexter)



سلام :)

سال نو شما مبارک.

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

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

درباره Dexter

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

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

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

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

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

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

نقد



در چند قسمت اول ممکن است جذب این سریال نشوید. مهمترین دلیل آن را می توان کمی مصنوعی و گیج کننده بودن قسمت های اول آن دانست ولی بعد از قسمت ۳ و ۴ کم کم داستان روشن می شود و در اواخر قسمت فصل ۱ به اوج خود می رسد. مجموعه تلویزیونی دکستر از نقاط قوت بسیاری برخوردار است که آن را از سایر سریال ها متمایز می کند.

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

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

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

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

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

تیتراژ آغازین سریال که حدود ۱:۴۵ دقیقه است با موسیقی خاص خود شما را مجبور به تمرکز بر قسمت جدید و بازنگری قسمت های قبل تر می کند.

در آخر


اگر سریال فرار از زندان برای شما جذاب و دیدنی بود به شما پیشنهاد میکنم که این سریال را نبینید!

در صورتی که این سریال را دیده اید،‌ لطفا نظر و دیدگاه خود را نسبت به آن در بخش نظرات ارسال نمایید.

۱۳۸۸/۱۰/۲۷

معرفی و راهنمای شروع به کار با vi و vim

لینوکس

سلام :)

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

ویرایشگر Vi


Vi  ویرایشگر متن است که اولین بار توسط بیل جوی در سال ۱۹۷۶ با زبان C برای نسخه های اولیه BSD  ها نوشته شد. ویرایشگر های دیگری نیز در سال های بعد بر اساس vi  منتشر شدند که اکثر آنها متن باز و آزاد می باشند، مانند nvi و vim. برنامه های کامپیوتری بسیاری مانند eclipse , IntelliJ IDEA, NetBeans و حتی فایرفاکس و مایکروسافت ورد قابلیت استفاده از Vi شبیه سازی شده را در دل خود دارند.

ویرایشگر Vim


Vim  نسخه توسعه یافته Vi  می باشد. مهم ترین ویژگی هایی Vim عبارتند از تکمیل کردن (completion)، مقایسه و ترکیب فایل ها، راهنمای جامع داخلی، عبارات منظم (regular expressions) توسعه یافته، ویرایش فایل های فشرده و آرشیوی gzip,  bzip2 , zip  و tar، دسترسی و ویرایش فایل ها از طریق پروتکل های SSH, FTP, HTTP، غلطیابی (spell checking) و ...

نصب


ویرایشگر vi به صورت پیش فرض بر روی سیستم شما نصب می باشد. برای نصب vim با توجه به توزیع لینوکس خود از دستور مربوطه در زیر استفاده نمایید:

توزیع Arch:
# pacman -S vim

توزیع دبیان و اوبونتو:
$ sudo aptitude install vim

نوزیع فدورا، ردهت و CentOS:
# yum install vim-X11 vim-common vim-enhanced vim-minimal

توزیع جنتو:
# emerge vim

حالت ها (Modes)


منظور از حالت، وضعیت پاسخ گویی برنامه به درخواست شماست. به عنوان مثال در یک فشردن دکمه j کاراکتر j را تایپ می کند و در حالت دیگر مکان نما (cursor یا اعلان) را به خط زیر می برد.

سه حالت اول در Vim  و vi موجود می باشند ولی حالت چهارم فقط در Vim وجود دارد:

  1. حالت Insert: حالتی که در آن متن را تایپ و ویرایش می کنید

  2. حالت Command: حالت صدور فرمان که همان حالت معمولی (Normal) است

  3. حالت Ex یا Command line:  که همان حالت معروف ":" است که دستورات را در این حالت وارد می کنند.

  4. حالت Visual:  که فقط در Vim موجود است و برای highlight کردن و انتخاب کردن متن استفاده می شود.


شروع  به کار با Vim


با استفاده از دستور vim یک فایل را باز کنید:
$ vim file


  • (ورود با حالت Command) با استفاده از دکمه های l, k, j, h   مکان نما را به محل مورد نظر ببرید. لیست دکمه های بیشتر برای حرکت مکان نما در ادامه آمده است.

  • دکمه i را برای ورود به حالت Insert کنید (ورود به حالت Insert). البته برای ورود به حالت Insert می توانید از دکمه های دیگری نیز استفاده کنید که لیست آنها در ادامه آمده است.

  • متن مورد نظر را وارد کنید. دکمه Esc را برای خروج از حالت  Insert و ورود به حالت Command بزنید (ورود به حالت Command).

  • برای خروج از فایل، دکمه ":" را بزنید تا به حالت Command line بروید و سپس یکی از دستورات را وارد کنید:



    • wq ابتدا فایل را ذخیره می کند و بعد خروج از برنامه

    • w برای ذخیره تغییرات


    • !q

      برای خروج از فایل بدون ذخیره فایل و تغییرات

    • qa برای بستن همه فایل های باز




شما با موفقیت یک فایل را توسط Vim ویرایش کردید ;)

جدول دکمه های حرکت مکان نما


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

















































































































دکمهعملکرد
h/j/k/lحرکت مکان نما به راست/بالا/پایین/چپ
فاصله (spacebar)حرکت مکان نما به اندازه یک فاصله
-/+بردن مکان نما به اول خط قبلی/بعدی
Ctrl+dاسکرول کردن به پایین صفحه به اندازه نیم صفحه
Ctrl+uاسکرول کردن به بالای صفحه به اندازه نیم صفحه
Ctrl+fاسکرول کردن به صفحه بعد
Ctrl+bاسکرول کردن به صفحه قبل
Mبردن مکان نما به وسط صفحه
Hبردن مکان نما به اول صفحه
Lبردن مکان نما به آخر صفحه
W

w

5W
حرکت مکان نما به اول کلمه بعدی (جدا شده با خط فاصله)

حرکت مکان نما به اول کلمه بعدی (جدا شده با خط فاصله، نقطه، / و ...)

حرکت مکان نما به اول کلمه پنجم بعدی
B

b

5b
حرکت مکان نما به اول کلمه قبلی (جدا شده با خط فاصله)

حرکت مکان نما به اول کلمه قبلی (جدا شده با خط فاصله، نقطه، / و ...)

حرکت مکان نما به اول کلمه پنجم قبلی
e

5e
بردن مکان نما به آخرین کاراکتر کلمه (یا کلمه بعدی)

بردن مکان نما به آخرین کاراکتر پنجمین کلمه بعدی
0 (صفر)بردن مکان نما به اولین کاراکتر خط فعلی
$بردن مکان نما به آخرین کاراکتر خط فعلی
(بردن مکان نما به اولین کاراکتر خط فعلی
)بردن مکان نما به اولین کاراکتر خط فعلی
G

12G
بردن مکان نما به آخر فایل

بردن مکان نما به خط ۱۲
%بردن مکان نما به کروشه (bracket) ابتدایی و انتهایی فعلی (مکان نما را به داخل یک دسته از {}, [] و یا () ببرید و با استفاده از %  به کروشه ابتدایی و انتهایی بروید)
'.بردن مکان نما آخرین محل تغییر داده شده
maعلامت گزاری محل فعلی مکان نما به عنوان a
'aرفتن به محل علامت گزاری شده به a
'Aرفتن به محل علامت گزاری شده با a در کلیه فایل های که در بافر هستن. علامکت گزاری شده با mA
]'بردن مکان نما به محل علامت گزاری شده بعدی
['بردن مکان نما به محل علامت گزاری شده قبلی
ZZتغییرات را ذخیره و فایل را می بندد. معادل wq در حالت Command line است.



جدول دستورات در حالت Command


جدول زیر برخی از مهم ترین دستورات حالت Command را نمایش می دهد:





















































































































دستورعملکرد
iرفتن به حالت Insert در محل مکان نما
aرفتن به حالت Insert در محل بعد از مکان نما
Aرفتن به حالت Insert در آخر خط فعلی
Escخروج از حالت Insert
uرفتن به یک مرحله قبل تر تغییرات (undo)
Uبرگرداندن تمامی تغییرات صورت گرفته بر روی خط فعلی
Ctrl+rبر عکس u عمل می کند. یعنی به جای undo کردن، redo می کند
oایجاد یک خط جدید بعد از خط فعلی و رفتن به حالت Insert
dd

3dd
پاک کردن خط فعلی

پاک کردن ۳ خط
Dپاک کردن محتویات خط فعلی از محل مکان نما تا آخر
Cپاک کردن محتویات خط فعلی و رفتن به حالت Insert برای ورود اطلاعات
dw

4dw

d0

d$
پاک کردن یک کلمه

پاک کردن ۴ کلمه

پاک کردن متن از ابتدای خط تا محل فعلی مکان نما

پاک کردن متن از محل فعلی مکان نما تا انتهای فایل (مانند D)
cwپاک کردن کلمه فعلی و رفتن به حالت Insert
xپاک کردن کاراکتر فعلی
Xپاک کردن کاراکتر قبلی
rبرای جایگزین کردن یک کاراکتر استفاده می شود. بعد از زدن r، هر کاراکتری که وارد شود جایگزین کاراکتر فعلی می شود.
Rرفتن به حالت Insert با این ویژگی که هر کاراکتری که وارد شود، جایگزین کاراکتر فعلی می شود (overwrite).
sپاک کردن کردن کاراکتر فعلی و رفتن به حالت Insert
Sپاک کردن خط فعلی و رفتن به حالت Insert
~عوض حالت کاراکتر فعلی (کوچک و بزرگ کردن کاراکتر فعلی)
Ctrl+aافزایش عدد فعلی کاراکتر (مثلا اگر کاراکتر فعلی متن عدد ۱۰۲ باشد، با این دستور، عدد در متن به ۱۰۳ افزایش می یابد)
Ctrl+xکاهش عدد فعلی کاراکتر (مثلا اگر کاراکتر فعلی متن عدد ۱۰۲ باشد، با این دستور، عدد در متن به ۱۰۱ کاهش می یابد)
/search_stringجستجوی عبارت search_string در ادامه متن
?search_stringجستجوی عبارت search_string در قبل از محل فعلی مکان نما
nرفتن به محل بعدی عبارت یافت شده از جستجو
Nرفتن به محل قبلی عبارت یافت شده از جستجو
.تکرار آخرین دستور اجرا شده

جستجو و جایگزینی (Find and Replace)


جستجو و جایگزینی در حالت Command line اجرا می شود. برای ورود به حالت Command line ابتدا با زدن Esc از حالت Insert به Command بروید و بعد با زدن ":" به Command line بروید.
در زیر چند مثال برای جستجو و جایگزینی آمده است:

































دستورتوضیح
:%s/fff/rrrrr/جستجو برای fff  و جایگزینی اولین یافته در هر خط با rrrrr
:%s/fff/rrrrr/gجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr
:%s/fff/rrrrr/gcجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr. قبل از جایگزینی از شما تاییدیه (confirmation) می خواهد.
:%s/fff/rrrrr/giجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr. بدون حساسیت به کوچک یا بزرگ بودن حروف (Case insensitive)
:'a,'bs/fff/rrrrr/giجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr در بین خطوطی که با a و b علامت گزاری شده اند. بدون حساسیت به کوچک یا بزرگ بودن حروف (Case insensitive)
:%s/*$/پاک کردن کاراکتر فاصله از آخر هر خط

چند نکته و دستور


در زیر چند نکته و دستور برای استفاده بهتر از vi و vim ارائه شده است.

  1. هر دو این ویرایشگر ها به حروف کوچک و بزرگ حساس می باشند.

  2. برای تسلط بیشتر می توانید از دستور vimtutor استفاده کنید. vimtutor مرحله به مرحله استفاده از ویرایشگر را به شما آموزش می دهد.

  3. همانطور که پیش تر مشاهده کرده اید، در صورت استفاده از یک عدد قبل از دستور، باعث تکرار یک دستور به تعداد آن عدد می شود. مثلا 17j باعث می شود که ۱۷ خط به پایین بروید.

  4. به جای فشردن a یا i برای وارد کردن مطلب می توانید از دکمه Insert استفاده نمایید. این مطلب برای دکمه Delete و فرمان x نیز صادق است.


منابع و لینک های مفید


لینک های انگلیسی

لینک های فارسی



موفق باشید 8)