تا الان شده که مدام یه سوال تکراری رو بخواید جواب بدید؟ برای ما توی فرومهای لینوکسی، اخیرا زیاد پیش میاد. مثلا جادی دیگه دادش در اومد :))
این شد که با خودم گفتم که یه سری سوال و جواب های تکراری یه جا جمع بشن خیلی خوب میشه! نه اینکه همه میرن میخوننش و از دست سوالهای الکی راحت میشیم، نه، چنین چیزی ممکن نیست، ولی خوب بالاخره میشه بهشون لینک داد و کارها خیلی ساده تر میشه.
اما کجا؟ تو یه فروم؟ ساختار فروم مناسب نیست. ویکی به مراتب بهتره، ولی ویکی کجا؟ بچههای اوبونتو خودشون یه بخش سوال و جواب راه انداختن، ولی همش درباره اوبونتوست (که البته مطمئنم بعدا بهتر میشه) ولی خوب، من یه جای دیگه رو ترجیح میدادم، اینجا : سوالات متداول لینوکسی – سوالات متداول لینوکسی
پیشنهادم، github بود. این سایت امکان خیلی جالبی رو برای پروژههایی که روی اون هستن به وجود آورده. کافیه یک برنچ داشته باشید به اسم gh-pages و اون توی وب به راحتی قابل دسترسه!اینطوری میشه به راحتی از قابلیت git برای کار گروهی بهره برد.
خوبه، ولی ویرایش یک یا چند html زیاد راحت هم نیست. مدام حواست باید باشه به استیل صفحه، لینکها رو اشتباهی این طرف و اونطرف قاطی نکنی و از طرفی همکاری برای همه سخت میشه، هر کی یه سلیقه داره و کم کم ناهماهنگی پیش میاد (این دلیل از نظر من،برای ویکی هم صادقه ).
این شد که با Phing یه اسکریپت درست کردم. من هنوز با Phing زیاد آشنا نیستم. ولی بد تجربهای نبود. یه کم xslt هم قاطیش شد و در نهایت پروژه شکل گرفت.
ساختار آنچنان هم پیچیده نیست. یه سری فایل xml هست که به این شکله :
<?xml version="1.0" encoding="UTF-8"?> <page> <category> <name>linux-terminal</name> <title>ترمینال لینوکس</title> <description>سوالات رایج درباره ترمینال لینوکس</description> </category> <questions> <question> <q><![CDATA[1در ترمینال زمانی که رمز باید وارد کنم، ظاهرا همه دکمه های صفحه کلید غیرفعال میشوند چون چیزی در ترمینال ثبت نمیشود. چرا؟]]></q> <a><![CDATA[کلیدها غیرفعال نمیشوند. بنا به دلایل امنیتی کاملا واضح، شما ورودی خودتان را نمیبینید. رمز مورد نظر را وارد کنید و سپس دکمه Enter را بزنید. ]]></a> </question> <question> <q><![CDATA[چطور میتوانم ....؟]]></q> <a><![CDATA[لطفا این سوال را تکمیل کنید]]></a> </question> </questions> </page>
فکر نکنم توضیح زیادی بخواد. هر فایل حاوی یه مبحثه. مثلا این فایل مبحث ترمینال لینوکس. یه اسم برای فایل خروجی (linux-terminal) که باید با اسم فایل ورودی هم یکی باشه یه عنوان و در نهایت یه توضیح کوتاه یک خطی. بعد هم همه سوالها خیلی ساده پشت سر هم ردیف شدن.
اینطوری سوالها جدا هستن، راحت برای هر کسی قابل ویرایش هستند و مدیریتشون هم راحتتره. فقط مشکل اینه که نمایش سوالها به این روش اصلا برای تازه واردها خوشایند نیست. اما xslt رو برای همین گذاشتن :) خوشبختانه Phing پشتیبانی XSLTransform رو داره. با صرف یک نصفه روز، با توجه به اینکه دفعه اولم بود xsl مینوشتم، یک فایل برای تغییر فایل xml به فایل html نوشتم.
خوب زیاد وارد جزئیات نشم. الان احتیاج به کمک هست برای پر کردن این سوال دونی :) .
قبل از هرکار phing رو نصب کنید (PHP باید نصب باشه، یعنی توی شل دستور php وجود داشته باشه. نیازی به آپاچی یا هر وب سرور دیگهای نیست. ):
pear channel-discover pear.phing.info pear install phing/phing
بسته به تنظیمات pear ممکنه لازم باشه که این دستورات رو با sudo اجرا کنید (معمولا هست) البته phing نصبش تمومه، ولی برای این برنامه، شما باید xsl رو هم برای php تنظیم کنید. (ممکنه لازم باشه php-xsl نصب بشه ولی معمولا با ویرایش فایل php.ini و اضافه کردن extension=xsl.so اینکار انجام میشه)
اگه اکانت github دارید و تنظیمش کردید از قبل (با ثبت کلید عمومی) یا اینکه دوست دارید اینکار رو انجام بدید، که خیلی خوبه. اگر نه برید به قسمت گرفتن فایلها ( قسمت بعدی رو چشم پوشی کنید) که البته شدیدا توصیه میکنم اینکار رو نکنید و اکانت رو بسازید و تنظیم کنید.
خوب برید تو صفحه پروژه plf و یک fork ازش بگیرید. (دکمه fork کاملا مشخصه ) و بعد یه clone از رپوی خودتون -که براتون ساخته میشه- بگیرید.
اگر اکانت ندارید و نمیخواید داشته باشید، این فایل رو دانلود کنید و محتویاتشو بریزید تو سیستم خودتون.
اصل قضیه یه پوشه است به اسم questions که توش یه سری فایل xml هست. به جز فایل index باقی فایلها، رو میتونید ویرایش کنید. روش ویرایش رو هم بالاتر گفتم. اگر دسته مورد نظرتون اینجا نیست،یکی از این فایلها رو کپی کنید اسمشو به اسم انگلیسی دسته مورد نظرتون تغییر بدید و ویرایشش کنید. فکر نکنم کار سختی باشه :)
اما فایل index.xml،تا زمانی که یه فایل جدید نساخته باشید نیازی به ویرایش این فایل وجود نداره. ولی اگه فایل جدیدی اضافه کردید فایل index.xml رو هم ویرایش کنید و اسم فایلتون رو به آخرش اضافه کنید. این قسمت :
<files> <file name="questions/general.xml" /> <file name="questions/linux-terminal.xml" /> <file name="questions/gnome.xml" /> <file name="questions/kde.xml" /> <file name="questions/unity.xml" /> </files>
خوب حالا وقتشه که تغییراتتون رو ببینید. توی پوشه دستور phing رو اجرا کنید. اگه همه چی درست باشه اینو میبینید :
فایلهای خروجی در پوشه output هستند. فایل index.html رو باز کنید و ببینید.
حالا وقتشه تغییرات رو به من برسونید. اگر که قبلا پروژه رو تو github برای خودتون fork کرده باشید، کافیه تغییراتتون رو توی رپوی خودتون (فقط توی برنچ master )ثبت کنید و در نهایت یه درخواست pull request بدید تا سوالات و تغییرات شما به سوالات قبلی اضافه بشه.
اگر اینکار رو نکردید، تغییراتتون رو برای من میل کنید. من اونها رو اضافه میکنم.
خوب :) منتظرم دوستان!!!