بایگانی ماهیانه: دسامبر 2012

فرهنگ!

امروز در مترو با یکی از دوستان در مورد فروش eBook در ایران بحث می‏ کردم. دوست مورد نظر علاوه بر این که کتاب خوان حرفه ای هست، یک eBook Reader هم دارد. به همین دلیل، گزینه مناسبی برای تبادل نظر در این باره بود.

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

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

در این لحظه آن دوست از من پرسید: «تو می خوای به این مردم یاد بدی eBook بخرند؟»

من:  :|

پی نوشت: میلاد امام موسی کاظم (ع) و شب یلدا مبارک!

به سان قایقی در طوفان سهمگین!

مثل آنان چون قایقی است که باد آنان را به هر سو می‌کشد.

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

ای کسانی که هدایت یافته‌اید، افساری برای رام‌کردن این اسب سرکش، بادبانی برای غلبه بر طوفان و (یا هر کوفت دیگر) نشانم دهید بل‌که من نیز به هدایتی دست یابم و از گمراهان نباشم!

پی‌نوشت

یاد این دیالوگ توی بتمن بگینز افتادم:
-مذهبي متعصب كسيه كه در تلاش برای خوشنودي خودش راهشو گم كرده.
اونو ميشه از بين برد يا زندانيش كرد.
ولي اگه تو خودتو چيزي بيشتر از يه انسان شكل بدي
اگه خودتو وقف يه عقيده كني
و اگه نتونند جلوتو بگيرند
اونوقت كاملا يه چيز ديگه ميشي
-اون چي هست؟
-افسانه, آقاي وين

چگونه مشکل خطای «پوشه‌ی مقصد وجود ندارد» یا «پوشه‌ی مقصد قابل نوشتن نیست» را حل کنیم؟

 هنگامی که دو برنامه‌نویس را به نسخه‌ی ۳.۵ وردپرس فارسی (که به‌نظر می‌آید در اصل ۳.۶ آلفا باشد یا اشتباها ۳.۶ آلفا ترجمه شده‌است!) به‌روزرسانی کردیم با مشکل خاصی مواجه شدیم: هنگام به‌روزرسانی افزونه‌ها وردپرس خطا‌یی می‌داد با این پیام که «پوشه‌ی مقصد قابل نوشتن نیست» درصورتی که وردپرس به پوشه‌ی wp-content دست‌رسی کامل داشت.

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

برای حل مشکل ابتدا مطمئن شوید که دست‌رسی پوشه‌ی wp-content در لینوکس ۷۷۷ است و در ویندوز سرور گروه‌های IUSR و IIS_IUSRS به این پوشه دست‌رسی کامل (full access) دارند و در سرویس‌های میزبانی ویندوز نیز همه‌ی گروه‌ها دست‌رسی کامل به این پوشه دارند.

سپس فایل wp-config.phpتان را باز کنید و خط 

if ( !defined('ABSPATH') )

define('ABSPATH', dirname(__FILE__) . '/');

را بیابید و پس از آن 

define('WP_TEMP_DIR', ABSPATH . 'wp-content/');

را اضافه کنید.

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

پی‌نوشت: ما عادت داشتیم همه‌ی افزونه‌های‌مان رو در لحظه به‌روزرسانی کنید. باورتان نمی‌شود این چند روزی که ۱۰ – ۱۲ تا افزونه به‌روزرسانی نمی‌شدند چه جنگ اعصابی داشتیم!

البته همه‌ این‌ها توطئه‌ی آمریکاست تا دانش‌آموزان مملکت حواس‌شان پرت به‌روزرسانی وردپرس شود و درست درس نخوانند و بی‌خیال از این‌که پس فردایش آزمون جامع دارند دل‌شان به به‌روزرسانی وردپرس‌شان خوش شود و …  :-D

برنامه‌های ویندوز ۸ (۲): یک جعبه‌ی ابزار کامل!

این هفته قصد دارم یک جعبه ابزار با امکانات بسیار مفید را به شما معرفی کنم: Toolbox for Windows 8

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

منظورم این است که این زیر-اپلیکیشن‌ها می‌توانند با الگوهای تازه‌ای، چیزی بیشتر از حالت‌های محدود در محیط مدرن، در کنار هم قرار گیرند:

1

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

2

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

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

Screenshot (54)

نکته‌ی جالب در مورد این نرم‌افزار این است که این زیر-اپلیکیشن‌ها می‌توانند به برنامه اضافه شوند! کافیست روی آیکون Tool depot کلیک/تپ کنید.

Screenshot (56)

برای نمونه، در لحظه‌ی نگارش این نوشته، می‌توانید Stopwatch را هم به ابزار‌های تول‌باکس اضافه کنید؛ همچنین وعده داده شده است که Twitter reader و Notepad هم به زودی به ابزار‌های تول‌باکس افزوده شوند.

نکته‌ی دیگری که برایم جالب توجه بود، این بود که آلارم‌های تنظیم شده در تول‌باکس، حتا اگر در اپلیکیشن دیگری مشغول کار باشید هم کار می‌کنند و آلارم به صورت یک نوتیفیکیشن در گوشه‌ی بالا-راست صفحه به شما نمایش داده می‌شود.

Screenshot (57)

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

دیدن چند اسکرین‌شات از این برنامه هم خالی از لطف نیست:

Screenshot (50)

Screenshot (53)

Screenshot (52)

Screenshot (51)

آموزش برنامه‌نویسی – بخش نخست : مفاهیم کلی‌ برنامه‌نویسی


سری جدیدی از آموزش‌های برنامه‌نویسی آغاز شده است. این سری منقضی شده است. پیشنهاد می‌کنیم این سری را ادامه ندهید!


در بخش قبل در مورد زبان‌های برنامه‌نویسی توضیحاتی دادیم. بهتر است سراغ بخش عملی کار برویم!

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

 برای کامپایل کدهای پاسکال نیاز به کامپایلر و محیط برنامه‌نویسی FreePascal دارید. پس از دانلود آن کافی است آن را اجرا کنید و کدهای‌ خود را در محیط آبی‌رنگ برنامه‌ بنویسید. (محیط‌های نرم‌افزاری که برای کدنویسی به کار می‌روند SDK یا Software Development Kit نامیده می‌شوند.)

برنامه (یا همان کد)

به تمام نوشته‌هایی که معمولا در SDK می‌نویسید و بعدا کامپایل خواهند شد برنامه یا کد می‌گویند. در پاسکال روال اصلی برنامه پس از دستور Begin شروع می‌شود و در End. پایان می‌یابد. پس می‌توان گفت ساده‌ترین برنامه در پاسکال به شکل زیر است:

 

هر دستور در پاسکال با یک ; (نقطه‌ویرگول انگلیسی) پایان می‌یابد و نوشتن ; در انتهای دستور اجباری است در غیر این‌صورت کامپایلر هنگام کامپایل برنامه دچار مشکل خواهد شد!

چاپ یک نوشته‌ی ساده

راحت‌ترین کاری که می‌توانیم در برنامه‌نویسی انجام دهیم چاپ یک نوشته‌ی ساده است. برای چاپ نوشته می‌توانیم از دستور Write یا Writeln استفاده کنیم. تفاوت Write با Writeln این است که در دستور Writeln پس از نوشته‌شدن نوشته‌ی موردنظر اشاره‌گر متن یک خط به پایین نیز می‌رود به عبارت دیگر مثل این است که پس از نوشتن متن یک اینتر در ویرایشگر بزنیم (در اصل Writeln خلاصه‌شده‌ای از واژه‌ی WriteLine است). به عنوان مثال در برنامه‌ی

 

خروجی به شکل

 

خواهد بود ولی اگر به‌جای Write از Writeln استفاده می‌کردیم خروجی به شکل

 

ورودی‌های قابل‌قبول برای دستور Write یا Writeln

این دستور (از این به‌ بعد Write و Writeln را یک دستور در نظر می‌گیریم) می‌تواند سه‌نوع ورودی بپذیرد که در ادامه آن‌ها را توضیح می‌دهیم:

1.  متن ساده: اگر می‌خواهید متنی در خروجی چاپ کنید (مانند مثال بالا) باید متن خود را درون کوتیشن «’» قرار دهید تا متن موردنظر مستقیما در خروجی چاپ شود.

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

3.  متغیرها: در مورد متغیرها در آینده صحبت خواهیم‌کرد.

متغیرها

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

متغیرها خانه‌هایی از حافظه‌ی موقت شما (RAM یا Random Access Memory) هستند که برنامه‌ی شما می‌تواند اطلاعاتی را در آن‌ها ذخیره کند. در این‌جا لازم است کمی وارد بحث تئوری-تاریخی شویم.

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

 این کار دردسرهای فراوانی به همراه داشته مثلا خالی‌کردن حافظه‌ای که مورد نیاز نبوده برای افزایش فضای خالی و یا این که هر چیزی که در حافظه ذخیره می‌شده چند خانه از حافظه را اشغال می‌کرده و اطلاعات باید از کدام خانه‌ی حافظه شروع شوند و …

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

 نوع متغیر‌ها

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

متغیرها در پاسکال

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

 

که ابتدا نام متغیر و پس از : نوع آن را تعیین می‌کنیم (نقطه‌ویرگول فراموش نشود!)

کامپایلر پاسکال در محیط DOS اجرا می‌شود و بنابراین معماری آن ۱۶ بیتی است. در معماری ۱۶ بیتی هر متغیر عدد دو بایت (۱۶ بیت) فضا اشغال می‌کند

 نوع متغیر

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

  • عدد صحیح: برای ذخیره‌سازی اعداد صحیح می‌توانید از نوع integer استفاده کنید. کامپایلر پاسکال در محیط DOS اجرا می‌شود و بنابراین معماری آن ۱۶ بیتی است. در معماری ۱۶ بیتی هر متغیر عددی دو بایت (۱۶ بیت) فضا اشغال می‌کند بنابر این حداکثر مقدار برای آن در صورتی که فقط از اعداد طبیعی استفاده کنیم ۶۵۵۳۶ است (۰ جزو اعداد طبیعی نیست) بنابراین نوع integet می‌تواند بازه‌ی -۳۲۷۶۸ تا ۳۲۷۶۸ را شامل شود. (۱۵ بیت برای عدد و ۱ بیت برای علامت آن!)
  • عدد حقیقی: برای اعداد حقیقی از نوع real استفاده کنید. این متغیر بر اساس پلت‌فرمی که با آن برنامه‌ می‌نویسید ۴ یا ۸ بایت فضا اشغال می‌کند و می‌تواند بازه‌ی -۲.۹ ۱۰۳۹ تا ۱.۷ × ۱۰۳۸  را شامل شود.
  • رشته‌ی متنی: برای ذخیره‌سازی متن‌ها می‌توانید از نوع string بهره بگیرید. این نوع ۱۰ بایت فضا اشغال می‌کند.
  • مقدار بولین (Boolean) : برای ذخیره‌سازی مقدار درست (true) یا غلط (false) به‌کار می‌رود.
  • یک کارکتر: برای ذخیره‌سازی یک کارکتر مثل ‘a’ یا ‘2’ و یا کارکترهای ASCII دیگر استفاده می‌شود.

و انواع دیگری نیز وجود دارند که بعدا به آن‌ها می‌پردازیم.

دریافت یک ورودی از کاربر

برای دریافت ورودی از کاربر نیاز است که ابتدا متغیری برای آن ورودی در نظر بگیریم. به عنوان مثال در برنامه‌ی زیر

 

  1. ابتدا متغیر a را از نوع عددی تعریف می‌کنیم
  2. سپس به کمک دستور readln از کاربر مقداری می‌گیریم و آن را در a می‌ریزیم(readln این کارها را برای‌مان انجام می‌دهد)
  3. به کمک دستور writeln مقدار گرفته‌شده را چاپ می‌کنیم.
  4. دستور readln() برای این به کار می‌رود تا پس از چاپ متغیر a از برنامه‌ خارج نشویم بلکه برنامه منتظر بماند تا ما کلید اینتر را فشار دهیم. به این منظور که نتیجه‌ی نهایی را ببینیم و کامروا از برنامه خارج شویم!

توجه در این برنامه درصورتی که کاربر مقداری غیر از مقدار عددی وارد کند برنامه خارج می‌شود!

تابع read و readln

این دو تابع که تفاوت‌شان این است که در read فقط اولین کارکتری که کاربر وارد می‌کند خوانده می‌شود ولی در readln تمام‌ کارکترهایی که وارد می‌شود تا قبل از زدن دکمه‌ی اینتر در متغیر ریخته می‌شود، برای گرفتن ورودی از کاربر به کار می‌روند و به صورت readln({varName}); به کار می‌روند. و همان‌طور که اشاره کردیم می‌توان readln را بدون متغیر نیز استفاده کرد و در این صورت ورودی‌های کاربر در جایی ذخیره نمی‌شوند.

تعیین مقدار برای متغیر

شما می‌توانید مقدار متغیرهای‌تان را به‌صورت دستی نیز تنظیم کنید. برای این‌کار از varName:=Value; استفاده می‌شود. مثال زیر را در نظر بگیرید:

 

  1. ابتدا متغیرهای a و b را تعریف کرده‌ایم (نکته‌: برای تعریف چند متغیر از نوع یکسان می‌توان نام‌های آن‌ها را با , ازهم جدا کرد و سپس نوع آن‌ها را نوشت (مثل بالا))
  2. سپس a را از کاربر گرفته‌ایم.
  3. b را برابر با a قرار داده‌ایم.
  4. سپس b را چاپ کرده‌ایم.
  5. با کمک عبارات ریاضی مقدار b را تغییر داده‌ایم و سپس آن را چاپ کرده‌ایم.
  6. در دستور writeln از عبارات ریاضی همراه با متغیرها استفاده کرده‌ایم و مقدار دیگری را چاپ کرده‌ایم.
  7. از readln() برای مشاهده‌ی نتیجه استفاده کرده‌ایم.

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

نوبت شما

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

  1. ب.ب.ک (برنامه‌ای بنویسید که) دو متغیر از نوع string ار کاربر گرفته و آن‌ها را باهم جمع کند و چاپ کند.
  2. ب.ب.ک میانگین حقیقی دو عدد صحیح را چاپ کند. (a,b:integer; avg:real;)
  3. ب.ب.ک نام کاربر و سن او را گرفته و آی‌دی به صورت نام‌+سن چاپ کند (name:string; age:integer;)

به اضافه شدن کارکتر نیم‌فاصله در نتایج جست‌وجوی گوگل کمک کنید!

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

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

پیشاپیش از همکاری‌تان متشکرم!

در گوگل کروم، صفحه‌ها را نرم بپیمایید!

یکی از ویژگی‌هایی که بیشتر مرورگر‌های مدرن آن را دارا می‌باشند، Smooth Scrolling یا پیمایش نرم است. این ویژگی، به این معنی است که وقتی شما با استفاده از ماوس یا نوار لغزان گوشه‌ی صفحه، در آن بالا و پایین می‌روید، پیمایش به صورت نرم (بدون پرش) انجام می‌گردد.

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

فعال‌سازی آن نیز تنها چند گام ساده و یکی دو دقیقه وقت می‌طلبد!

برای شروع، گوگل کروم را باز کنید.

در Address Bar، عبارت زیر را وارد کنید:

chrome://flags

در فهرست باز شده، به دنبال گزینه‌ی Smooth Scrolling بگردید و با کلیک بر روی Enable، آن را فعال کنید.

در پایین این صفحه، دکمه‌ای به نام Relaunch Now ظاهر می‌شود، روی آن کلیک کنید.

مرورگر بسته و دوباره باز می‌شود، اما این بار با پیمایش نرم صفحه‌های وب!

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

* اگر این گزینه را در صفحه‌ی chrome://flags نیافتید، احتمالاً نسخه‌ی گوگل کروم شما قدیمی است. برای استفاده از این قابلیت (و البته مزایای دیگری مثل امنیت) باید مرورگر خود را به روز رسانی کنید.

(من در زمان نگارش این نوشته، از گوگل کروم ۲۳ بر روی ویندوز استفاده می‌کنم، این نسخه قابلیت Smooth Scrolling را دارا می‌باشد)

ما، آدم‌های دورو!

تا حالا دقت کردید دهه‌ی اول محرم که امام‌ حسین هنوز شهید نشده همه مشکی می‌پوشن ولی از عاشورا به بعد دیگه تک و توک مشکی می‌بینیم؟!؟ نقل‌قول از یکی از دوستان گرامی!

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

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

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

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

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

امیدوارم کمی بایندیشیم که چرا حسین قیام کرد!

هرکسی دنیا را از نگاه خود می‌بیند!

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

خدایا! این بهترین کادو تولدی است که می‌توانم بگیرم. متشکرم!

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

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

پی‌نوشت: این دل‌نوشته شاد بود. امیدوارم باز هم از این‌ها داشته باشیم!