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

اسباب بازیهای سالم ِ تحت وب: شش – Disqus

disqus-logo.pngهشدار: محتوای این پست ممکن است برای شما خیلی بدیهی، پیش پا افتاده، و دری وری باشد. ببخشید به بی سوادی.

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

در مورد tools.kamangir.net قبلا حرف زدیم. در این زیر دامنه ی کمانگیر دات نت، برنامه نویسی تحت وب رو تمرین می کنم. حالا می خواهیم به صفحات این سایت امکان کامنت گذاری اضافه کنیم.

۱- به disqus.com می ریم و ثبت نام می کنیم و یک پروفایل ایجاد می کنیم.

۲- در کد tools.kamangir.net از فایلی به نام footer.php استفاده می شه که پایین صفحات رو می سازه. در این فایل دو قسمت اضافه می کنیم:

tools_footer.png

به این ترتیب، در هر صفحه بخشی برای کامنت گذاشتن باز می شه. مدیریت کامنتها توسط Disqus و براساس url انجام خواهد شد.

۳-اگر خواستید جایی تعداد کامنتهای صفحه ی دیگری رو ذکر کنید، از این کد استفاده می کنید:

tools_disqus_comment.png

حاصل رو در اینجا ببینید.

tools_plus_disqus.png

از داستانهای خوراک شمار شاید خبر داشته باشید. این پروژه تعداد مشترکین خوراک وبلاگ ها رو از فیدبرنر می گیره و بصورت گزارش های هفتگی بیرون می ده. این پروژه قبلا از تکه کد OCR مانندی استفاده می کرد، اما حالا مستقیم از API فیدبرنر استفاده می کنه. یک روز باید این کارها به php نوشته بشه و به خوراک شمار اضافه بشه

fc_trend_2007-08-06_2008-08-03_1_100.pngدر آخرین گزارش خوراک شمار می تونید تعداد خوانندگان حدود ۳۰۰ وبلاگ فارسی رو ببینید. لیست کامل این وبلاگها رو از اینجا بصورت یک فایل opml بگیرید و یا فقط ۲۰ تای اول رو از اینجا بگیرید. می تونید این لینکها رو مستقیما مثلا به گوگل ریدر بدید برای اضافه کردنشون به لیستی که دارید.

و اما بازی با API خوراک شمار. از اینجا یک شی Delphi که اساسا کل داستانهای ارتباط کار با آدرس ها رو در کارهای دیدیش و خوراک شمار و غیره رو انجام می ده بگیرید. این کد شیی به نام MDownload تعریف می کنه که روالهایی مثل download و Redirect و FeedBurnerCount داره. به کمک این شی می تونید با داشتن آدرس خوراک ِ برنری یک وبلاگ، تعداد خوانندگانش رو در هر بازه ای استخراج کنید.

و اما، ذغال خوب و دوست ناباب و این هم نمودار رشد مشترکین ۱۰ خوراک پر خواننده تر در یکسال گذشته:

fc_trend_۲۰۰۷-۰۸-۰۶_۲۰۰۸-۰۸-۰۳_۱_۱۰s.png

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

  1.  asroone.net
  2.  updateblog.net
  3.  mhmazidi2.wordpress.com
  4.  ۱pezeshk.com
  5.  shahvar.net
  6.  peakovsky.com
  7.  itline.blogspot.com
  8.  zangoole.com
  9.  persian.kamangir.net
  10.  cgpersia.com

منحنی های مشابه رو برای بقیه ی وبلاگها (از ۱ تا ۱۰۰) در اینجا ببینید یا روی تصاویر زیر کلیک کنید. لیست وبلاگها اینجا ذکر شده.

 fc_trend_2007-08-06_2008-08-03_61_70.pngfc_trend_2007-08-06_2008-08-03_21_30.pngfc_trend_2007-08-06_2008-08-03_71_80.pngfc_trend_2007-08-06_2008-08-03_31_40.png

 fc_trend_2007-08-06_2008-08-03_11_20.pngfc_trend_2007-08-06_2008-08-03_1_10.pngfc_trend_2007-08-06_2008-08-03_91_100.pngfc_trend_2007-08-06_2008-08-03_51_60.png

fc_trend_2007-08-06_2008-08-03_81_90.pngfc_trend_2007-08-06_2008-08-03_41_50.png

و اینک Octave – جایگزین کدبازی برای MATLAB

راجع به R حرف زدیم (ببینید:R میل دارید؟)، که بخشی از کارهای MATLAB رو انجام می ده و کدباز ه. دوستی اشاره کرد که Octave هم هست. و تو چه می دانی چیست Octave.

Octave رو شاید بشه پیاده سازی کدباز ِغیر رسمی ِ MATLAB قلمداد کرد (ویکیپدیا). برای آزمایش ِ این موضوع، کدی که برای MATLAB نوشته بودم رو به Octave دادم. عملا فقط مجبور به چند تغییر جزیی در کد شدم که در اینجا توضیح داده شده. مهمترین ِ این تغییرات نبود ِ تابع saveas ه (که در MATLAB برای ذخیره ی منحنی ها استفاده می شه). تابعی نوشتم به اسم o_saveas که کار این تابع رو در Octave شبیه سازی می کنه (از اینجا بگیریدش).

نکته اساسی درمورد Octave، علاوه بر کدباز بودنش، قابلیت استفاده از اون بصورت command-line ه.

Octave رو از اینجا بگیرید. Toolbox هاش رو از اینجا.

اینجا یک pie-chart مربوط به آخرین گزارش دیدیش رو می بینید که با دو نرم افزار، به کمک تقریبا یک کد، ساخته شده.

 didish_domain_matlab.png

حاصل MATLAB

 didish_domain_octave.png

حاصل Octave

پا در کفش بزرگان – یک شمارنده ساده بنویسید: ۲

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

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

برای کار انداختن این کد لازم ه که یک دیتابیس بسازید و ارتباط رو برقرار کنید. من اینکار رو با phpMyAdmin انجام می دم (واضح ه که می شد ساخت دیتابیس رو در کد قرار داد). در این دیتابیس جدولی بسازید به اسم counter که هر سطرش فیلد عددیی داره به نام timestamp. حالا مشخصات دیتابیس رو در فایل initialize.php قرار بدهید (نام دیتابیس، نام کاربری، رمز).

 initialize_php۱.png

باید به این کد امکان ذخیره اطلاعات دیگر رو هم اضافه کرد (مثلا اینکه کدام صفحات بیشتر بازدید شده اند و از این دست). اگرتغییری در کد دادید مرحمت کنید خبر بدید.

R میل دارید؟

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

و اکنون R. مدتهاست MATLAB کار می کنم. زبان ِ خوش دستی ه برای نوشتن کدی که بار ریاضی زیادی داشته باشه، و البته صاحب داره. R اما مجانی ه و کد باز.

مدتی بود می خواستم کارهای دیدیش رو ببرم روی R. این برنامه ی ساده ی R رو ببینید (آموزش ابتدایی R).

r_code.png

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

r_result.png

خدا نیست (command-line هم کار می کنه)؟

این هم یک ویرایشگر برای R به نام Tinn-R، که البته با Delphi هم نوشته شده و اساسا فرض می کنه Latex کار هستی. دنیای ه برادر/خواهر. دنیایی ه.

شما R کار کردی؟ و یا باقی نرم افزارهای کدباز ِ شبیه به اون رو؟

پا در کفش بزرگان – یک شمارنده ساده بنویسید

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

در این پست در مورد ساختن یک کانتر ساده با php حرف می زنیم. نویسنده ی این پست بیشتر از چند ماهی آشنایی با این زبان برنامه نویسی و اساسا برنامه نویسی وب ندارد. بنابراین بیشتر گل بازی می کنیم تا چیز دیگری. کدهای نمایش داده شده در این پست همین حالا در آدرس counter.kamangir.net در حال کار هستند.

مساله: کانتری بسازید که تعداد نمایش صفحات یک مجموعه را در ۲۴ ساعت گذشته نشان بدهد.

راه حل: می خواهیم از php استفاده کنیم اما می خواهیم که دست در کد نرم افزار سازنده ی صفحه، مثلا وردپرس، نبریم. این یعنی اساسا نمی خواهیم کد php در صفحات بگذاریم، چون مثلا در وبلاگهای ِ روی وردپرس دات کام اساسا امکان اضافه کردن کد php وجود ندارد. پس می خواهیم یک کد php بنویسیم که در صفحات مانند یک تصویر درج شود، بصورت زیر،

html_patch.png

و با هربار نمایش صفحه، زمان را در یک بانک داده ثبت کند.

با هر بار صدا شدن آدرس count.php، این کد اجرا می شود،

count_php.png

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

اما قسمت ابتدایی ِ کد. ابتدا ارتباط به بانک اطلاعاتی ایجاد شده،

initialize_php.png

سپس زمان در بانک ذخیره می شود،

visit_php.png

و در انتها این ارتباط قطع می شود،

finalize_php.png

به این ترتیب، عملیات ِ ثبت بازدید انجام شد.

نمایشگر این کانتر یک فایل ساده ی php است،

index_php.png

که به این ترتیب در بانک اطلاعاتی جستجو می کند،

readcount_php.png

و این حاصل داستان است.

kamangir_counters_s.png

ادامه: پا در کفش بزرگان – یک شمارنده ساده بنویسید: ۲

balabin_interface.jpg

مدتی بود کار روی  بالابین متوقف شده بود، بیشتر بدلیل درگیریهای دیگه. اینجا می تونید نسخه ۲٫۲ رو دانلود کنید. بطور خلاصه، بالابین این دو امکان رو به شما می ده:

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

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

روش کار:

  • فایل اجرایی رو از اینجا بگیرید.
  • فایل رو اجرا کنید. اگر بار اولی ه که از این برنامه استفاده می کنید، از شما خواهد پرسید که آیا می خواهید سری کاربران پیش فرض از سرور خونده بشه. بگید “بله”.
  • حالا به کمک این دکمه download.png از بالابین بخوایید که بالاترین رو بگرده. این کار ممکنه چند دقیقه ای طول بکشه، بسته به سرعت سرور.
  • اولین لینک روی صفحه است. رای بدید، کامنت بگذارید، یا با این دکمه newwindow.png اون رو در صفحه جدیدی ببینید.
  • به کمک این دکمه browse.png روی لینک بعدی برید.
  • لیست کاربران و سایت ها رو به کمک این دکمه settings.png تغییر بدید.

چرا گوگل همیشه بهترین نیست: سلام بر اپن سورس

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

و اینطور شد که Open Flash Chart ساخته شد: یک ابزار ترسیم نمودار با قابلیت های متنوع که با زبانهای مختلف، از جمله php کار می کنه. این ابزار چنان کاراست که در سایت اعلام نتایج انتخابات قانون اساسی ونزوئلا استفاده شده.

مدتی پیش، از API ترسیم نمودار ِ گوگل حرف زدیم (ببینید: اسباب بازیهای سالم ِ تحت ِ وب – دو). نه تنها گوگل رابط شی گرای مناسبی برای این API در php، و دیگر زبانها، ارایه نداده که این ابزار مشکلات فراوانی داره (برای مثال شما باید تمام اعداد رو نرمال کنید که کمتر از ۱۰۰ باشند وگرنه نمودار اشتباه کشیده خواهد شد).

و حالا خوراک شمار از Open Flash Chart، این ابزار ِ بسیار دوست داشتنی، استفاده می کنه. حالا منحنی تعداد خواننده ها زنده است و فقط یک تکه تصویر نیست (ببینید).

feedcounter_graph.png

آخرین آمار خوراک شمار، شامل ۲۴۹ خوراک، رو در اینجا ببینید. نکته بسیار جالب این ه که حالا ۱۲ وبلاگ خوراک چهار رقمی دارند:

  1. ۱pezeshk.com
  2. asroone.net
  3. updateblog.net
  4. mhmazidi2.wordpress.com
  5. peakovsky.com
  6. itline.blogspot.com
  7. shahvar.net
  8. zangoole.com
  9. persian.kamangir.net
  10. cgpersia.com
  11. megaiti.com
  12. it.myjigi.com

می تونید این فایل رو دانلود کنید و مشترک خروجی تمام وبلاگ های موجود در خوراک شمار بشید (بزودی امکانات بیشتری اضافه خواهم کرد).

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

نرم افزارهای رایگان: TeXnicCenter

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

اگر دانشجوی فوق لیسانس/دکتری در رشته ی مهندسی هستید به احتمال خوبی از Latex استفاده می کنید (اگر نمی کنید، چرا نمی کنید؟). اما سوال اینه، چه ویرایشگری استفاده می کنید؟ واضح ه که ویرایشگرهای متعددی برای Latex وجود دارند اما بدلایلی بنظر می رسه یکی از محبوب ترین ها WinEdt باشه، که گرون نیست اما به هر حال پولی ه (و بوضوح نسخه های قفل شکسته اش رو براحتی می شه پیدا کرد).

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

شما از چه ویرایشگری استفاده می کنید؟

مرتبط:

آب کم جو تشنگی آور بدست، یا چرا گوگل ریدر بد است

در زمینه حضور در فضای آنلاین حداقل دو روش می شناسیم. می شه در بلاگ اسپات وبلاگ داشت و از یک تمپلیت آماده استفاده کرد، جیمیل و گوگل ریدر را به کار گرفت و در فیس بوک و فلیکر حضور داشت. می شه هم دومین گرفت و وردپرس نصب کرد، Feed on Feeds راه انداخت برای خواندن خوراک ها، با Round Cube ایمیل چک کرد و با Pixel Post وبلاگ عکاسی راه انداخت.

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

Round Cube رو امتحان کردید؟ Simple Pie رو چی؟ Coppermine هم بد چیزی نیست ها.

roundcube.png