Markdown Doc Generation

اینم یه تجربه پراکنده دیگه!

من معمولا محتواهای زیادی تولید می‌کنم. یعنی گزارش پروژه، مستند‌سازی و … انجام میدم. معمولا قبلا برای این‌کار از word و office استفاده می‌کردم. بزرگترین مشکلی که با این سیستم داشتم این بود که به علت اینکه سیستم عامل اصلیم لینوکسه مجبور بودم توی یک ماشین مجازی کار کنم که به علت سرعت کم هارد دیسک لپ تاپم معمولا اذیتم می‌کرد. اما اخیرا یه مستند تقریبا ۷۰ صفحه‌ای با استفاده از markdown نوشتم که من رو به این نتیجه رسوند که الان وقت مهاجرت از ورد رسیده

قبلا نوشته بودم که چطور میشه یه متن رو یه بار نوشت و به فرمت‌های مختلف اون رو داشت. حالا من به کمک pandoc و markdown و latex و xepersian تونستم یه مجموعه ابزار کامل برای تبدیل متن با سر و شکل قابل قبول و قابل ارائه ایجاد کنم. حالا تصمیم گرفتم که این کار رو ادامه بدم و مشکلاتی که ممکنه بر بخورم رو اینجا مستند کنم.

همین!

اینم یه تجربه پراکنده دیگه!

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

معمولا آدم‌ها وقتی به این نتیجه میرسن که وبلاگ یا سایت میخوان کمتر با این سوال درگیر هستن که در چه موردی بنویسن. این نیاز برای ارائه یک موضوع بوده که اصلا اون‌ها رو به این وا داشته که سایت درست کنن. پس این مساله تقریبا حل شده است. اما یه بخش حل نشده که هنوز هم برای خود من سوال هست اینه که کدوم شکل ارائه محتوا خوبه؟ حالا توی این پس سعی میکنم یه بررسی کنم ببینم چه شکل‌های ارائه مطلبی وجود داره و سعی کنم به قول امتحان‌های زمان ما «با ذکر مثال توضیح» بدم:

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

البته به نظر میرسه وقتی موضوع هم مشخص باشه باز هم نیاز باشه که انتخاب کنیم روی چه بخش از موضوع کار کنیم، مثلا من در مورد فلان موضوع میخوام کار کنم اما دقیقا نمیدونم میخوام چیکار کنم و چی میخوام بگم؟ معمولا هر موضوع یه سری زیربخش‌ها وجود داره که میتونه بین همه موضوع‌ها مشترک باشه. لیست اونها هم از نظر من ایناست:

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

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

فعلا همین

اینم یه تجربه پراکنده دیگه!

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

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

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

ممکنه بپرسید چرا من ایده‌هام رو منتشر میکنم؟

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

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

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

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

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

همین!

این یه شکایته تا یه تجربه!

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

الان توی یه سایت به نام stat7.com دیدم که از نرم افزار متن باز piwik برای ارائه خدمات تحلیل وب استفاده میکنن. البته دوستان تلاش کردن و واسط کاربری این نرم افزار به زبان فارسی رو بهبود دادن اما چیزی که من رو شاکی کرد این بود که چرا اسمی از نرم افزار اصلی نبردن. و این یه عیبه من رو شاکی کرده بود این بود که فکر میکردم اسمی از نرم افزار اصلی نبردن اما بعد از یه بررسی مجدد بصورت خیلی کوچیکی اسمی از piwik بردن که همین هم خوبه.

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

همین!

python logo

اینم یه تجربه پراکنده دیگه

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

اما برم سراغ اصل مطلب که همون پایتون باشه! من تجربم با پایتون بسیار تجربه لذت بخشی بوده. یعنی اینکه بسیار زبون شیرین و تو دل برو ای هست. ساختار زبان تا اونجایی که من میدونم به گونه‌ای ساده شده که سرعت توسعه توش زیاد باشه. چارچوب‌ها و کتابخانه‌های بسیاری خوبی بالاخص برای طراحی وب داره(django, flask, …) که باعث میشه شما بتونید به راحتی خیلی از کارهای سختی که قبلا انجام میدادید رو تنها با چند خط کد انجام بدید.

همچنین یه سیستم خیلی قشنگ هم برای مدیریت پکیج‌ها، نیازمندی‌ها و سایر چیزا داره(pip) که برای شما این امکان رو ایجاد میکنه که یه پروژه رو خیلی سریع استارت بزنید. همچنین برای اونهایی که لینوکس کار میکنن یه سری امکانات داره که به شما اجازه میده بدون اینکه به root سیستم دسترسی داشته باشید خیلی کارهای زیادی رو انجام بدید(virtualenv). وب سرورهای خوبی برای محیط توسعه و حتی محیط‌های عملیاتی داره که بسیار هم خوش دسن.

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

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

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

  1. اول به سایت domains.live.com میرید و با اکانت outlook.com لاگین میکنید
  2. یه رکورد MX به DNS دامنه اضافه میکند که خود outlook.com در اختیارتون میگذاره
  3. چند دفعه دکمه refresh رو توی سایت اول زده تا متوجه بشه که dns شما ست شده
  4. اکانتهاتون رو اضافه میکند و لذت میبرید

همین!

بروزرسانی: متاسفانه این سرویس از حالت عمومی خارج شده و برای اونهایی هم که از قبل این سرویس رو داشتن تا ۳۱ جولای ۲۰۱۴ فعاله.

این یه تجربه پراکنده دیگه!

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

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

در اینجا من یکم در مورد مزایا و معایب این سیستم‌ها میگم و یه معرفی کوتاه سرنخ وار از این سیستم‌ها میدم و امیدوارم به درد کسی بخوره:

بزرگترین مزیت این سیستم اینه که صفحات ایستا به شدت با سرعت خوبی نشون داده شده و سربار اضافی روی سرور ندارن. از این مزیت که بگذریم یکی دیگه از بهترین نکات اینه که صفحات بصورت فایل‌هایی ذخیره میشن که می‌تونن ورژن گذاری بشن و نحوه تغییراتشون با استفاده از نرم‌افزارهای مانند GIT و Subversion و … ثبت بشن و تمامی نسخه‌هاشون در دسترس باشه.

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

خب حالا نوبت به اسم این سیستم ها میرسه:

  • Jekyll/Octopress: یک سیستم نوشته شده با استفاده از زبان ruby که الان صفحات مربوط به پروژه های سایت گیت هاب با استفاده از این تکنولوژی تولید و نگهداری می‌شن. یکی از خوبی‌های این سیستم اینه که میشه کامنت‌ها رو بصورت ایستا مدیریت کرد.
  • Pelican: سیستمی است که تو سایت کرنل لینوکس مورد استفاده قرار گرفته و به زبان python نوشته شده. این سیستم امکانات بسیاری داره و طرفداران زیادی رو برای خودش جمع کرده.
  • Blosxom: یکی دیگه از این سیستم ها که به زبان Perl نوشته شده و یکی از خوبیاش اینه که همه جا قابل اجراست. یکی از ویژگی‌های خوب این سیستم قدرت زیاد برای نوشتن افزونه‌ها برای بهبود کارایی سیستم فعلی است.
  • Second Crack با استفاده از زبان PHP نوشته شده و جوری طراحی شده که صفحات با استفاده از dropbox قابل میزبانی باشه.
  • Blacksmith یکی از جدید ترین سیستم‌های موجود هست که با استفاده از Node.js استفاده کرده

منبع این نوشته اینجاست.

 

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

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

بعد از مدتها کلنجار رفتن با این مورد میخوام نتایجی که خودم بهش رسیدم رو بگم شاید به درد کسی هم خورد. از نظر من در وحله اول از سیستم‌هایی که بزرگان (آدمهایی که تجربه کافی در حوزه وب دارن) یا همگان استفاده میکنن نقطه شروع خوبیه. یعنی اگه فلان آدم خفن (گیک) داره از وردپرس استفاده میکنه یا خیلی‌ها ازش استفاده میکنن پس واسه یک فرد مبتدی هم خوبه. اما اگه زیادی به این ماجرا فکر کرده باشید و زیاد عملیاتی کاری انجام نداده باشید همیشه انواع سوالات «اگه نشد و …» تو ذهنتون نقش میبنده که هنوز هم تو ذهن من نقش میبنده. که به نظر من قابل اغماضه.

همین!

پ.ن. این پست یه قسمت دوم هم داره که در مورد سیستم‌های مدیریت محتوا بصورت استاتیک صحبت می‌کنه. که دیدم کار داره به دراز میکشه و پست رو همینجا تموم کردم