Monday, July 18, 2005
دوشنبه، ۲۷ تیرماه ۱۳۸۴

Stop spamming comments on your MovableType blogs

اغلب کسانی وبلاگ می‌نگارند و از Blog CMS ها مشهور و محبوب استفاده می‌کنند، احتمالاً با مشکل Comments Spams بر خورد کردند!

اگر برای مشکل Comments Spams راه حلی نیابید، خیلی سریع Post های وبلاگتان پر خواهد شد از کامنت تبلیغاتی، که علاوه بر مصرف کردن مقداری از پهنای باند (Bandwidth) میزبان (Host) شما، چندین مگابایت (Megabyte) از فضای مورد استفاده شما را ناخواسته اشغال خواهد کرد.

در MovableType یکی از ساده‌ترین راه حل‌ها بستن IP هر کدام از Spammer ها و سپس حذف کامنت‌های ناخواسته از Post های وبلاگتان است. (برای بدست IP مربوط به Spammer می‌توانید کامنت مورد نظر را Edit کنید و در قسمت IP Address آن را بدست آورید و برای بستن (Ban) آن IP می‌توان از قسمت IP Banning در MT استفاده کرد.)

راه حل بالایی تنها مدتی شما را از شر Comments Spams خلاص می‌کند و احتمال اینکه Spammer های دیگری از آدرس‌های IP متفاوت شما را مورد حمله قرار دهند.

راه حلی که خودم از آن استفاده می‌کنم و به خوبی نتیجه گرفتم، استفاده از Plugin Security Code در MT است، که می‌توانید آن را از اینجا دریافت کنید و راهنمای نصب آن را هم می‌توانید در فایل README بخوانید و همچنین عملکرد آن را می‌توانید در قسمت Comment هر Post این وبلاگ ببینید.

امیدوارم اگر شما هم از MT استفاده می‌کنید، با این Plugin بتوانید از شر Comments Spams خلاص شوید.

Wednesday, July 06, 2005
چهارشنبه، ۱۵ تیرماه ۱۳۸۴

Speed up your boot time in Gentoo

بطور معمول هر بار که رایانه (Computer) خودتان را روشن می‌کنید، باید منتظر باشید که مراحل Boot انجام شود و سپس بعد از آن است که شما می‌توانید با سیستم عامل (OS) کار کنید. پس هر چه سریع‌تر مراحل Boot انجام شود، شما زودتر می‌توانید کارتان را شروع کنید.

در Gentoo با یک تغییر خیلی ساده می‌توانید، سرعت Boot شدن سیستم خود را کمی بیشتر کنید! کافی است یک X Terminal یا Virtual Terminal باز کنید و سپس دستورات زیر را اجرا نمایید:

su
nano /etc/conf.d/rc

بعد در آن فایل بدنبال عبارت زیر بگردید:

RC_PARALLEL_STARTUP="no"

سپس مقدار آن را به عبارت زیر تغییر دهید:

RC_PARALLEL_STARTUP="yes"

فایل را با استفاده از کلید ترکیبی Ctrl + O ذخیره کنید و با استفاده از کلید ترکیبی Ctrl + X از nano خارج شوید. این تغییر باعث می‌شود در دفعات بعدی، سرعت Boot شدن افزایش یابد.

Sunday, June 19, 2005
یکشنبه، ۲۹ خردادماه ۱۳۸۴

Webalizer statistics without cPanel login

در ادامه مطلب قبلی، می‌خواهم ساده و مختصر شرح دهم چگونه بدون login کردن در cPanel به گزارش Webalizer دسترسی داشته باشید.

در سیستم عامل میزبان‌های اشتراکی (Shared Hosting) که از cPanel استفاده می‌کنند، برای هر User یک Home Directory وجود دارد، که فایل‌های و همچنین قسمتی از تنظیمات مربوط به User در آن ذخیره می‌شود، از جمله گزارشات Webalizer که در آدرس ~/tmp/webalizer قرار دارد.

در دایرکتوری ~/tmp/webalizer گزارش مربوط به Domain ذخیره می‌شود و برای هر Sub Domain هم یک زیر دایرکتوری (Sub Directory) به همان نام در ~/tmp/webalizer وجود دارد. به عنوان مثال همین Domain یعنی persianlinux.org و Sub Domain آن یعنی weblog.persianlinux.org را در نظر بگیرید. گزارش Webalizer برای هر کدام از آنها در آدرس‌ها ذخیره می‌شود:

http://persianlinux.org/: ~/tmp/webalizer
http://weblog.persianlinux.org/: ~/tmp/webalizer/weblog.persianlinux.org

در روشی که من استفاده کردم، دسترسی (Permissions) دایرکتوری مورد نظرم را عوض کردم، سپس یک Symbolic Link در جایی که می‌خواستم به دایرکتوری گزارش Webalizer ساختم و بدین صورت گزارش این Sub Domain در این آدرس قابل مشاهده شد.

برای مثال Sub Domain اینجا یعنی weblog.persianlinux.org را در نظر بگیرید، اگر شما (منظورم User شماست) در میزبانتان دسترسی به SSH دارید، می‌توانید به روشی مشابه زیر عمل کنید:

chmod 755 ~/tmp ~/tmp/webalizer ~/tmp/webalizer/weblog.persianlinux.org

cd ~/public_html/weblog
ln -s ~/tmp/webalizer/weblog.persianlinux.org stats

vi .htaccess

در قسمت اول Permissions دایرکتوری‌های مربوطه را تغییر دادیم، سپس در محل مورد نظرمان Symbolic Link به دایرکتوری حاوی گزارشات ساختیم و در مرحله آخر به فایل .htaccess خط Options +FollowSymLinks را اضافه می‌کنیم. (البته مرحله آخر در بعضی از میزبان‌ها ممکن است نیاز نباشد و این بستگی به تنظیمات Apache دارد، اما کار از محکم کاری عیب نمی‌کند و بهتر است شما خط مزبور را در .htaccess وارد کنید)

شما به همین صورت و با دستوراتی مشابه می‌توانید روی میزبان خودتان و بر اساس Domain و یا Sub Domain های خودتان عمل کنید. در ضمن برای آن Symbolic Link می‌توان از هر نام دیگری به جای stats استفاده کرد.

اما اگر شما (منظورم User شماست) در میزبانتان دسترسی به SSH نداشتید، شما می‌توانید از طریق cPanel و با استفاده از File Manager در دایرکتوری ~/public_html/cgi-bin یک فایل Shell Script ایجاد کنید و دستورات بالا بجز خط آخر یعنی vi .htaccess را با تغییراتی که برای Domain یا Sub Domain خودتان دادید؛ تایپ کنید و پس از اطمینان از صحیح بودن دستورات فایل را Save نمایید. سپس Permissions این فایل را از طریق File Manager برابر 755 قرار دهید و بعد از آن با استفاده از Browser و تایپ آدرس این Script، آن را اجرا کنید و بعد از اجرا این اسکریپت، حتماً آن را حذف (Delete) کنید. در مرحله آخر با استفاده از File Manager فایل .htaccess را ویرایش و خط مورد نظر را به آن اضافه کنید.

حالا می‌توانید نتیجه کارتان را ببینید و از آن لذت ببرید. ;)

Friday, June 17, 2005
جمعه، ۲۷ خردادماه ۱۳۸۴

Webalizer statistics

امروزه اکثر Shared Hosting ها و اغلب Control Panel های مرسوم که در این میزبان‌ها (Hosts) استفاده می‌شوند، یک یا چند برنامه Site Statistics دارند، که با استفاده از log فایلهای Web Server، گزارشات و آمار مختلفی در مورد بازدید از Domain یا Sub Domain ها ارائه می‌کنند.

روی میزبان (Host) فعلی من چند برنامه Site Statistics نصب است، که در بین آنها من بیشتر از گزارشات Webalizer استفاده می‌کنم، اما اگر AWStats نصب بود، آن را ترجیح می‌دادم.

آن وقتی که قصد راه‌اندازی این وبلاگ را گرفتم، برای شروع از Free Plan سرویس میزبانی Netfirms به همراه Movable Type استفاده کردم؛ آن موقع برای بدست آوردن Page View روزانه وبلاگ از سرویس Nedstat Basic استفاده کردم و تا امروز که کد Java Script این سرویس هنوز در قالب (Template) این وبلاگ باقی مانده است.

امروز گزارش ساده Nedstat Basic با وجود گزارشاتی همچون Webalizer، دیگر بدردم نمی‌خورد و اغلب به دلایلی از جمله فیلتر شدن سایت آن توسط چندین ISP در ایران و اجرا نشدن کدهای Java Script در بعضی از دسترسی‌ها همچون برنامه‌های Web crawler گزارش Page View آن چندان دقیق نیست و همچنین کد‌های Java Script این سرویس باعث کند شدن بارگذاری صفحات می‌شود (این مورد آخر در اغلب سرویس‌های مشابه صدق می‌کند)، تصمیم به حذف کد این سرویس گرفتم، که باید مدت‌ها پیش این کار را می‌کردم و بجای آن گزارش Webalizer را در این آدرس http://weblog.persianlinux.org/stats قرار دادم.

میزبان (Host) وبلاگ من از cPanel 10.2.0 استفاده می‌کند، که در حال حاضر برای دیدن گزارش Webalizer باید به Control Panel وارد شده و سپس گزارشات را ببینید. این صغری و کبری چیدن، مقدمه‌ای بود تا در مطلبی دیگر شرح دهم، چگونه این امکان را فراهم کرد تا گزارش Webalizer در خارج از cPanel هم در دسترس باشد و استفاده از سرویس‌هایی همچون Nedstat برای تولید گزارش مورد بحث، در خیلی از مواردی کنار بگذاریم.

Tuesday, June 14, 2005
سه شنبه، ۲۴ خردادماه ۱۳۸۴

Gentoo Founder Joins Microsoft

امروز در OS News مطلبی در مورد Daniel Robbins ، بنیانگذار توزیع Gentoo که حدود یکسال و شش هفته پیش از مسئولیت‌هایش در Gentoo Community کنارگیری و آنها را ترک کرد بود، خواندم که ظاهراً یک شغل جدید در Microsoft بدست آورده است.

Daniel Robbins در مورد شغل جدیدش شرح داده که دارد به Microsoft برای درک Open Source و community-based projects کمک می‌کند.

Totem Media Player

چند روز پیش اقدام به بروز رسانی و نصب GNOME 2.10 کردم. البته چون دسترسی به اینترنت پرسرعت نداشتم و با دسترسی Dial-up هم زمان زیادی لازم بود، من همه بسته‌های GNOME 2.10 را نصب نکردم.

یکی از مواردی که جالبی که اول نظر من را جلب کرد، مجتمع سازی (integration) بین Nautilus و Totem در GNOME بود. در Nautilus هر دایرکتوری که در آن فایل به فرمت mpeg, avi, wmv و چند فرمت ویدیویی دیگر باشند، شما می‌توانید بجای icon در نظر گرفته شده برای آن فایل، تصویر اولین فریم آن فایل (thumbnailer) را ببینید. (تصویر از Nautilus)

Totem برای پخش فرمت‌های صوتی و ویدیویی از Xine-lib و GStreamer استفاده می‌کند و قابلیت‌ها و خصوصیات خوبی هم دارد که می‌توانید لیست آنها را در این صفحه در قسمت Features ببینید. در همین قسمت اشاره شده بود:

  • Right-to-Left languages support

که البته من یک بررسی کوچک برای زبان فارسی کردم، که نمایش حروف (Characters) و همچنین تغییر وضعیت Widget ها به صورت RTL به خوبی انجام شد. البته انتظار نداشته باشید Localization برای زبان فارسی کامل باشد. ;) (تصویری از Totem)

Thursday, June 09, 2005
پنجشنبه، ۱۹ خردادماه ۱۳۸۴

ساعتی در بازار سخت افزار

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

اولین چیزی جالبی که در همان ابتدا به آن برخوردم دو مدل فن Gigabyte 3D Cooler بود. یادم است مدتی پیش در وبلاگ Techopedia در قسمت «لینک کوچولو» یک لینک به مقاله‌ای در مورد این مدل فن در سایت Tom's Hardware داده بود، که من قبلاً یک آشنایی مختصری با Gigabyte 3D Cooler داشتم.

قیمت Gigabyte 3D Cooler Ultra و Gigabyte 3D Cooler Pro را از فروشنده مغازه پرسیدم، که به ترتیب ۴۳۰ هزار ریال و ۳۷۰ هزار ریال بود!!! اولش که فروشنده قیمت‌ها را گفت، فکر کردم درست نشنیدم و دوباره پرسیدم و مطمئن شدم درست شنیدم. به نظرم این قیمت برای این فن‌ها کمی بالاست. البته شاید هم به نظر فروشنده آمده من وضع مالی خوبی دارم و همینطوری قیمتی گفته است! :)

بعد از آن چشمم به جمال AMD Athlon 64 Fx روشن شد. البته Athlon 64 Fx به درد کاربردهای معمولی نمی‌خورد، اما برای اینکه قیمتش دستم بیاد، قیمتش را پرسیدم در حدود ۵ میلیون ریال بود.

با اینکه مادربوردهای AMD64 از نوع Socket 939 در بازار به راحتی پیدا می‌شود (مخصوصاً مارک Gigabyte و Abit)، اما ظاهراً پرسسور Athlon 64 3200+ از نوع Socket 939 کمیاب شده بود و از اغلب جاها که پرسیدم، نداشتند. البته به استثنای دو جا که آنها برای فروش مادربوردهای Socket 939 خودشان، پرسسور مزبور را تنها با خرید یک مادربورد از خودشان می‌فروختند!

پرسسور Athlon 64 3200+ از نوع Socket 939 قیمتش ۲ میلیون ریال و همین پرسسور از نوع Socket 754 قیمتش یک میلیون و هفتصد و پنجاه هزار ریال بود. و از ارزان قیمت‌ترین مادربرد از نوع Socket 939 که ظاهراً فروش بیشتری هم دارد، می‌توان به Gigabyte K8NS-939 اشاره کرد، که قیمتش ۸۸۰ هزار ریال است.

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

Tuesday, June 07, 2005
سه شنبه، ۱۷ خردادماه ۱۳۸۴

GPLFlash

درباره پروژه GPLFlash چیزی شنیده‌اید؟! این پروژه شامل یک decoding library و یک Player و یک mozilla/netscape plugin برای فیلم‌های Flash است.

من هم درباره GPLFlash چیزی نمی‌دانستم، تا اینکه به مقاله‌ای در سایت Linux.com با عنوان «GPLFlash lives again» برخوردم، که مطالبی درباره GPLFlash و اهمیت آن نوشته بود.

البته همانطور که احتمالاً می‌دانید Flash Player/Plugin که Macromedia تنها برای GNU/Linux در معماری x86 عرضه شده است که کد آن هم، انحصاری و non free است و در معماری‌هایی همچون PPC و Sparc و دیگر معماری‌ها در دسترس نیست.

امروزه سایت‌های زیادی را می‌توان دید که از Flash استفاده می‌کند و این یک محدودیت برای کاربردهای Desktop برای سیستم عامل GNU/Linux در معماری‌های به غیر از x86 است، اما با انتشار GPLFlash2 همه چیز تغییر می‌کند.

در Portage به دنبال GPLFlash جستجو کردم و دیدم که net-www/gplflash وجود دارد. البته من که از سخت افزاری با معماری x86 استفاده می‌کنم، دلیلی برای استفاده از آن ندارم و اینطور که فهمیدم نسخه‌های موجود هنوز عملکرد خوبی ندارند. اما در حال حاضر همین نسخه‌های فعلی برای کاربران Linux در دیگر معماری‌ها (Platform) با عملکرد خوب یا بد، تنها گزینه است و بقول معروف «کاچی به از هیچی»!

Thursday, June 02, 2005
پنجشنبه، ۱۲ خردادماه ۱۳۸۴

Libconf

در خبرنامه (Newsletter) این هفته Gentoo، در قسمت Coding Session به معرفی libconf پرداخت بود، که به نظر من چیز جالبی آمد. به کمک این ابزار به سادگی با کمی کد نویسی می‌توان انواع فایل‌های configuration مورد پشتیبانی libconf را خواند و یا نوشت و این ابزار می‌تواند اندازه مقدار کدی را که باید برای چندین منظوری نوشته شود را به میزان زیادی، کاهش می‌دهد.

در «اینجا» می‌توانید یک معرفی مختصر از libconf به همراه چند سطر کد بخوانید. البته می‌توان برای اطلاعات بیشتر از به سایت http://libconf.net/ مراجعه کنید.

Wednesday, June 01, 2005
چهارشنبه، ۱۱ خردادماه ۱۳۸۴

Athlon 64 Prices

AMD Athlon 64

دیروز از کنار یکی از این پاساژهای کامپیوتری رد می‌شدم، گفتم یک سری بزنم ببینم که قیمت پردازنده‌ها AMD Athlon 64 در چه حدودی است و چقدر کاهش قیمت نسبت به چند ماه پیش داشته است و اینکه از لحاظ قیمت با ابعاد جیب بنده جهت خرید سازگاری پیدا کرده است یا نه.

به همین منظور وقتی وارد پاساژ شدم، چون وقت زیادی نداشتم ترجیح دادم بروم سراغ یکی از توزیع کنندگان «آلبالو کامپیوتر» در آن پاساژ و قیمت‌ها را بپرسم. (آلبالو کامپیوتر یکی از شرکت‌هایی است که توزیع و خدمات گارانتی پردازنده‌های AMD را در ایران می‌دهد)

وقتی به نزدیکی مغازه مورد نظر رسیدم، در ویترین مغازه دو مادربورد Socket 939 بیشتر خودنمایی می‌کردند. وقتی بیشتر دقت کردم دیدم آن دو Gigabyte K8NF-9 و Gigabyte K8N Ultra-9 هستند. البته توی ویترین چیزهای دیگری هم بود ولی من دنبال Athlon 64 FX می‌گشتم که ظاهراً توی ویترین نبود.

بعد از یک مختصر نگاهی که به ویترین کردم، به داخل مغازه رفتم و از یکی از فروشندگان قیمت دو پردازنده یکی Athlon 64 2800+ و دیگری Athlon 64 3000+ از نوع Socket 754 را پرسیدم و قیمت آنها به ترتیب ۹۷۵۰۰۰ ریال و ۱۳۶۰۰۰۰ ریال بود. قیمت مادربورد Gigabyte K8NS را هم پرسیدم که آن هم ۸۹۵۰۰۰ ریال بود.

برای من قیمت دیگر پردازنده‌ها و مادربوردها را نپرسیدم، چون در حد و اندازه جیب کوچک من نبود. اما با این حال من هنوز هم باید کمی منتظر شوم تا قیمت‌ها باز هم پایین‌تر بیاید تا من بتوانم برنامه‌های ۶۴ بیتی را اجرا کنم.

البته این پردازنده Athlon 64 هم به درد همه کس نمی‌خورد، مخصوصاً اگر بخواهید که برنامه‌های ۳۲ بیتی را روی آن اجرا کنید، که اصلاً کارایی مطلوبی ندارد، اما در وضعیت ۶۴ بیتی وضعیت بهتری دارد. توصیه می‌کنم اگر خواستید به سراغ Athlon 64 بروید، قبل از آن چندین Benchmark و Review را مطالعه کنید و عملکرد برنامه‌های ۳۲ و ۶۴ بیتی را بررسی کنید و سپس تصمیم بگیرید، چون ممکن است بعداً پشیمان شوید.

Wednesday, May 25, 2005
چهارشنبه، ۴ خردادماه ۱۳۸۴

Check root User in Shell Script

اگر بخواهید در یک Shell Script بررسی کنید که Script مورد نظر با مجوز کاربر root در حال اجراست، یکی از راه‌های آن می‌تواند به این صورت باشد:

#!/bin/sh

if [ "`id -u`" != "0" ]; then
	echo ""
	echo "su as root and try again."
	echo ""
	exit 1
fi

echo "finish"

در این مثال، فرمان id -u چون بین Backticks قرار دارد، اجرا می‌شود و خروجی فرمان در شرط if مشخص می‌کند، که این Script را کاربر root اجرا کرده است یا نه.

Tuesday, May 24, 2005
سه شنبه، ۳ خردادماه ۱۳۸۴

Dive Into Pyhton

Dive Into Pyhton

دو روزی است که کتاب Dive Into Python به فرمت PDF از طریق یکی از دوستان بدستم رسیده و من در این مدت یکمی از این کتاب را ورق زدم و مقدار کمی از قسمت‌هایی که نیاز داشتم و علاقمند بودم را خواندم ولی هنوز بیشتر کتاب را نخوانده‌ام.

تا همین حدود که از این کتاب خوانده‌ام، به نظرم کتاب خوبی است. گفتم معرفی کنم، شاید بدرد دیگران هم بخورد. از عنوان کتاب یعنی Dive Into Python باید حدس زده باشید، چگونه کتابی است!

هر فصل این کتاب شامل چندین مبحث است، که هر مبحث با یک تکه کد یا برنامه کوچک هدفدار Python شروع می‌شود، که اغلب در آنها نکاتی نهفته است، که ممکن است در نگاه اول برای کسانی که با Python چندان آشنایی ندارند، نمایان نباشد. سپس در ادامه آن مبحث توضیحاتی در مورد کد و روش کار کرد آن می‌شود و این توضیحات در صورت لزوم شامل Syntax زبان Python و توابع و کلاس‌های کتابخانه‌ای هم می‌شود. با دنبال کردن مبحث تا آخر احتمالاً درک درستی از تکه کد و یا برنامه‌ای اول مبحث بدست می‌آورید.

در فصل اول که بیشتر سعی در آشنا کردن خواننده با Python دارد، در قسمت‌هایی که به Syntax (نحو) زبان Python پرداخته است، گاهی آنها را با زبانهایی همچون Java, Perl, C++ هم مقایسه کرده، که اگر خواننده با یکی از آن زبانها قبلاً آشنایی داشته باشد، باعث تسریع درک و یادگیری او می‌شود.

سخن آخر اینکه، اگر با این توضیحات، فکر می‌کنید که این کتاب به دردتان خواهد خورد و آن را بخوانید ولی برای Download کردن نسخه الکترونیکی نمی‌توانم کمکی بکنم! (آدرسی در اختیار ندارم) بهتر است خودتان جستجو کنید، اما فکر کنم در سرویس‌های پر استفاده P2P بتوانید نسخه الکترونیکی آن را پیدا کنید.


پ.ن: به کمک «محمد امین» متوجه شدم، که این کتاب با مجوز GNU FDL منتشر شده است و می‌توان از «اینجا» کتاب را در چندین فرمت مختلف Download کرد. Thu May 26 00:56:24 2005