PDA

View Full Version : گفتگو: تشکیل گروه برای پروژه متن باز (SarkeshMVC)



morrning
سه شنبه 21 بهمن 1393, 01:37 صبح
سلام
همون طور که در اعلانات همین تالار مشاهده میفرمایید, بنده مدتی هست که روی یک فریمورک مدیریت محتوا کار میکنم که با لایسنس GPL V3 منتشر شده.
از دوستانی که علاقه مند به مشارکت هستند تقاضا دارم در صورت تمایل در توسعه این پروژه کمک کنند.

در حال حاضر برای موارد زیر نیاز به کمک هست:

با توجه به انتخاب زبان انگلیسی برای این سیستم نیاز به ترجمه رشته ها به زبان فارسی هست که در سایت CROWDIN قرار داره.
با توجه به نزدیک شدن به انتشار اولین نسخه بتا از سیستم . نیاز به نوشتن پلاگین های کاربردی هست که بتوان در پروژه های واقعی از سیستم استفاده کرد.
داکیومنت نویسی : اکثر سورس ها با داکیومنت های لازم نوشته شدند و حالا نیاز هست این راهنما ها در یک مکان برای استفاده بقیه گردآوری بشه.
چک کردن سیستم:دوستانی که در ضمینه امنیت کار کردند میتونند سیستم رو از لحاظ امنیتی چک و باگ ها رو گزارش یا فیکس کنند
پیشنهاد پلاگین جدید:لازم نیست که برای مشارکت حتما کد نویس باشید, و فقط با پیشنهاد پلاگین هایی که به نظرتون لازم و ضروریه به ما کمک کنید.
و موارد دیگه ای که دوستان به ذهنشون میرسه .


تشکیل یک تیم قطعا در رسیدن سریعتر به هدف میتونه کمک کنه.همچنین اضافه کنم هیچ سود مالی برای بنده در این پروژه وجود نداره و کمک هایی اگه به پروژه بشه در جهت اهداف جمعی پروژه خواهد بود.
دوستان عزیز منتظر پاسخ هاتون هستم.

لینک تایپینگ (http://barnamenevis.org/showthread.php?411234-Sarkesh-%D9%81%D8%B1%DB%8C%D9%85%D9%88%D8%B1%DA%A9-PHP-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C) پروژه در سایت GITHUB (https://github.com/morrning/sarkesh)

rezakho
سه شنبه 21 بهمن 1393, 08:35 صبح
سلام

همتتون رو تحسین می کنم، کار خوبی رو شروع کردید، اگر هیچ چیزی براتون نداشته باشه، کمترینش، تجربه با ارزشش هست!
ادامه بدید

morrning
چهارشنبه 22 بهمن 1393, 04:43 صبح
يعني واقعا کسی نیست؟

MMSHFE
چهارشنبه 22 بهمن 1393, 09:31 صبح
متأسفانه توی ایران یا افراد اینقدر تازه کار هستن که نمیتونن همکاری کنن یا تخصص دارن که درگیر پروژه هستن و نمیرسن. من خودم حداقل تا 6 ماه دیگه فرصت نمیکنم به پروژه ملحق بشم ولی از شما میخوام مسیرتون رو ادامه بدین. بعد از اینکه گرفتاریهای کاریم برطرف شد من هم به پروژه ملحق میشم. تا اینجا سورس کدها رو بررسی کردم و بنظرم یکسری تغییرات ساختاری بنیادی باید توی کدها بوجود بیاد. خیلی جاها رو میشه به شکل خیلی بهینه تری پیاده سازی کرد. تقریباً میشه گفت از امکانات خاص شئ گرایی مثل رابطها، کلاسهای abstract، وراثت و... که جزو ملزومات ساخت یک پروژه بزرگ در حد و اندازه های یک فریمورک محسوب میشه، هیچ استفاده جدی توی پروژه نشده. همچنین از ابزارهایی مثل Unit Test و... که باعث میشه اگه کسی بخواد همکاری کنه هم روند کار کند بشه و ناسازگاریهایی در خیلی بخشها پیش بیاد.

morrning
چهارشنبه 22 بهمن 1393, 12:28 عصر
متشکرم .اره متاسفانه به دلیل اینکه بنده یکمی دست تنها هستم فرصتی برای کار عمیقتر برام وجود نداشت به همین دلیل هدف ابتدا نوشتن برنامه و در مرحله بعدی ری ویو روی سیستم بود.بنده به همین صورت کار رو ادامه خواهم داد ولی واقعیتش اینه انتظار همکاری بیشتری از بقیه کاربران داشتم

meysam1366
چهارشنبه 22 بهمن 1393, 12:37 عصر
سلام دوست عزیز

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

در خدمتتون هستم

موقق باشید

morrning
چهارشنبه 22 بهمن 1393, 12:39 عصر
ممنونم. شما در چه ضمینه هایی تمایل به همکاری دارید؟

meysam1366
چهارشنبه 22 بهمن 1393, 12:50 عصر
من پی اچ پی کار می کنم مقداری هم ام وی سی کار کردم و لاراول

ولی در آینده ای نزدیک کاملا میرم سراغ ام وی سی و فریمورک ها در حال حاضر مشغله کاریم اجازه نمیده

Mohammadsgh
چهارشنبه 22 بهمن 1393, 17:55 عصر
هر کمکی تو کد نویسی از دستم بر بیاد انجام میدم.میتونید رو کمکم حساب کنید

MMSHFE
چهارشنبه 22 بهمن 1393, 18:49 عصر
همونطور که حدس میزدم، کدها نیاز به اصلاحات زیادی داره. امروز یکم وقت کردم یکی از کلاسها رو چک کردم (cls/core_cls_db_mysql.php) و به این شکل تغییرش دادم (از تغییرات در نامگذاری تا روند صدازدن متدها و کامنت گذاری که لازمه کار تیمیه) :

<?php
namespace core\cls\db;
use core\cls\patterns as patterns;

/**
* MySQL DB Wrapper
*/
class MySQL
{
use patterns\singleton;
/**
* @var object The PDO Object
*/
private $pdoObj;

/**
* @var object The PDO statement prepared from the given query
*/
private $query;

/**
* @var resource The result of query execution
*/
private $result;

/**
* Constructor
*/
function __construct()
{
try {
$this->connect();
}
catch(PDOException $e) {
echo 'Error in query execution!<br />Reason: ' . $e->getMessage();
exit;
}
}

/**
* Execute a query
* @param string $query The query to be executed
* @param array $params (Optional) The parameters needed to execute the query
* @return false|resource The query result on success, false otherwise
*/
public function query($query, $params = array())
{
if($this->pdoObj == null) {
$this->connect();
}
try {
if($query == '') {
return false;
}
#perpare query string from security
$this->query = $this->pdoObj->prepare($query);
#going to do query

if(empty($params)) {
$this->result = $this->query->execute();
}
else {
$this->result = $this->query->execute($params);
}
return $this->result;
}
catch(PDOException $e) {
echo 'Error in query execution!<br />Reason: ' . $e->getMessage();
exit;
}
}

/**
* Execute the query with parameter binding based on parameter type
* @param string $query The query to be executed
* @param array $params (Optional) The parameters needed to execute the query
* @return false|resource The query result on success, false otherwise
*/
public function typedQuery($query, $params)
{
if($this->pdoObj == null) {
$this->connect();
}
try {
if($query == '') {
return false;
}
$this->query = $this->pdoObj->prepare($query);
foreach($params as $index => $param) {
$type = ($param[1] == 'integer' ? \PDO::PARAM_INT : \PDO::PARAM_STR);
$this->query->bindValue($index + 1, intval($param[0]), $type);
}
$this->result = $this->query->execute();
}
catch(PDOException $e) {
echo 'Error in query execution!<br />Reason: ' . $e->getMessage();
exit;
}
}

/**
* Get the last auto-increment ID generates for insert queries
* @return int The last ID generated automatically by DB engine
*/
public function lastInsertId()
{
return $this->pdoObj->lastInsertId();
}

/**
* Get the result query as an object
* @return object The result query as an object
*/
public function fetchObject()
{
try {
$result = clone($this->query);
$result->setFetchMode(\PDO::FETCH_OBJ);
return $result;
}
catch(PDOException $e) {
echo 'Error in quary execution!<br />Reason: ' . $e->getMessage();
exit;
}
}

/**
* Get the result query as an associative array
* @return object The result query as an associative array
*/
public function fetchArray()
{
try {
$result = clone($this->query);
$result->setFetchMode(\PDO::FETCH_ASSOC);
return $result->fetchAll();
}
catch(PDOException $e) {
echo 'Error in quary execution!<br />Reason: ' . $e->getMessage();
exit;
}
}

/**
* Get the first row as an associative array
* @return false|array The first row as an associative array
*/
public function queryOne()
{
$result = $this->fetchArray();
return (count($result) > 0 ? $result[0] : false);
}

#ths function return number of rows that return in last query
/**
* Get the row count of the last executed query
* @return false|integer The row count on successful query execution, false otherwise
*/
public function rowCount()
{
if($this->query) {
return false;
}
return $this->query->rowCount();
}
//this function create pdo_obj to database
/**
* Connect to DB engine
*/
private function connect()
{
$options = array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'utf8\'');
$this->pdoObj = new \PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME , DB_USER, DB_PASS, $options);
$this->pdoObj->setAttribute( \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION );
}

/**
* Disconnect from DB engine
*/
private function disconnect()
{
$this->pdoObj = null;
$this->query = null;
}

/**
* Export the database
* @return int The result of export operation (0: success, 1: warning, 2:error)
*/
public function export()
{
$command = 'mysqldump --opt -h ' . DB_HOST .' -u ' . DB_USER .' -p ' . DB_PASS . ' ' . DB_NAME .' > ' . AppPath . 'upload/buffer/database.sql';
$output = array();
exec($command, $output, $result);
return $result;
}

/**
* Import the database
* @param string $filename
* @return int The result of export operation (0: success, 1: warning, 2:error)
*/
public function import($filename)
{
if(!file_exists($filename)) {
return false;
}
$command = 'mysql -h ' . DB_HOST . ' -u ' . DB_USER . ' -p ' . DB_PASS . ' ' . DB_NAME . ' < ' . $filename;
$output = array();
exec($command, $output, $result);
return $result;
}
}
این کد رو با نسخه ای که خودتون گذاشتین مقایسه کنید و بقیه کلاسها رو هم به همین شکل مستندسازی کنید.

morrning
چهارشنبه 22 بهمن 1393, 19:59 عصر
به نظرتون اول روی ویرایش هسته فریمورک کار کنیم و مستند سازی ها رو به مرور تکمیل کنیم یا اینکه فعلا همینجوری قابلیت ها رو بیشتر کنیم و بعدا که به نقطه دلخواه رسیدیم سورس های قدیمی رو ویرایش کنید.
ابتدا لازم هست که کارها به صورت متمرکز انجام بشه بر همین لطفا ابتدا در github ثبت نام و از پروژه فورک بگیرید و بعد از هر تغییر درخواست pull بفرستید روی مخزن اصلی.این کار باعث میشه تغییرات هر فردی نسبت به بقیه روی سورس کد ها قابل مشاهده باشه.
بعد از این کار به نظرم دوستان روی تغییراتی که جناب آقای شهرکی فرمودند یعنی داکیومنت نویسی بهتر و ویرایش سورس ها کار کنیم.
اگر موافقید به ترتیب از کلاس های کتابخانه ای که در پوشه core\lib\cls قرار دارند شروع کنیم .البته هر کلاسی رو انتخاب کردید اینجا ذکر کنید دوستان دیگه و بنده دیگه روش کار نکنیم و دوباره کاری نشه.
یه خاطره ای هم یادم افتاد این بود که حدود 2 سال پیش که کار رو شروع کردم اولین کلاسی که نوشتم همین کلاس ,mysql بود که امروز با دوباره مطالعه کردن کد هاش یاد اون زمان افتادم.

Mohammadsgh
چهارشنبه 22 بهمن 1393, 21:30 عصر
پیشنهاد من اینه که هسته رو ویرایش یا باز نویسی کنیم.چون هسته خیلی خیلی مهمه.بازم هر چی دوستان بگن

morrning
چهارشنبه 22 بهمن 1393, 21:59 عصر
بنده هم نظرم همین هست که ابتدا هسته بازنویسی بشه و سپس به جوانب پرداخته بشه. در این مدت هم علاوه بر ویرایش هسته روی قابلیت های جدید کار خواهم کرد که در آینده بشه حداقل وب سایت پروژه با همین فریمورک ساخته بشه. پلاگین blog که تقریبا غیر از ویرایش پست ها بقیه مواردش تکمیل شده در همین راستا بوده.
به نظرم با یه گروه 2-3 نفره هم میشه کار رو شروع کرد که انشالله در گذر زمان افراد بیشتری اضافه بشن.
در بحث ترجمه فارسی هم غیر از بنده دو نفر دیگر از کاربران هم همین الان در سایت crowdin فعالیت دارند.
پس جناب Mohammadsgh (http://barnamenevis.org/member.php?280741-Mohammadsgh) و meysam1366 (http://barnamenevis.org/member.php?226480-meysam1366) لطفا برای شروع ابتدا حساب کاربریتون رو روی github برای بنده ارسال کنید که در پروژه نام کاربریتون رو اضافه کنم که بعد از اون انشالله بتونیم روی یه مخزن واحد کار کنیم.همچنین استفاده از سایت github باعث میشه با ویرایش هسته بتونیم بخش ویکی رو هم تکمیلتر کنیم که برای افرادی در آینده اضافه میشن روند آشنایی با سیستم سریعتر بشه.

rezaonline.net
چهارشنبه 22 بهمن 1393, 22:08 عصر
به نظر شخص بنده (اگر مهم باشه برای کسی :) ) ، شما چه فریم ورک چه سی ام اس باید نسخه اول رو قوی ارائه بدید و صد البته یک تنه پیاده سازیش کنید اینطوری باعث میشه برای نسخه دوم افراد زیادی اشتیاق نشون بدن (به شرطی که نسخه اول نسبتا خوب و قوی باشه)

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

نمیخوام توی انگیزه تون تردید ایجاد کنم اما به نظرم کارتون رو یه مدتی به تعلیق بیا ندازید و در مورد فریم ورک های محبوب فعلی مثل کیک و Yii و لاراول ، نسبتا تسلط پیدا کنید و بازبرگردید روی فریم ورک خودتون .

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

morrning
چهارشنبه 22 بهمن 1393, 22:27 عصر
به نظر شخص بنده (اگر مهم باشه برای کسی :) )
قطعا نظر شما و همه ی کاربران دیگه برای بنده مهم بوده و هست. بنده در مدت دو سال تا جایی که میتونستم پروژه رو تا یه جاهایی رسوندمکه نتیجه رو همین الان از آدرس sarkesh.org میتونید مشاهده کنید . نسخه های خیلی اولیه شی گرا نبود و اصلا نمیشد باهاش وب سایت ساخت ولی به مرور بنده سعی کردم نواقص رو مرتفع کنم و این در حالی بود که واقعا گروهی وجود نداشت و بنده فقط خودم بودم.
البته معیار برای نسخه اولیه که بنده در ذهن دارم امکانات پایه ای برای راه اندازی یک وب سایت ساده هست که تا آخرین کامیت پروژه سیاست بر همین اساس بوده.
مورد بعدی که لازم هست ذکر کنم این هست که پروژه ای که داریم CMF هست و قرار نیست چیزی شبیه Yii و prado ... باشه و تمرکز اصلی برای ارائه ابزارهایی در هسته هست که توسط اون بشه محتواهای مختلف رو کنترل و مدیریت کرد و مثل فریمورک های موجود که فراگیر و از اجرا شدن در شل تا نمایش خروجی روی مرورگر رو در بر میگیره نیست.
اگه با نام کاربری و کلمه عبور test در وب سایت دمو لاگ این کنید و به بخش مدیریتش برید میبینید که حداقل امکانات در نظر گرفتته شده و ابزار ها همگی در جهت تولید و مدیریت محتوا در نظر گرفته شدن. از طرفی این سیستم یه حرف جدید برای گفتن داره و اونم اینکه توسعه دهنده برای اجرای برنامش با تکنولوژی آیجکس هیچ نیازی به دانش javascript نداره و استایل دهی هم با بوت استرپ انجام میشه. یعنی توسعه دهنده با تنها چیزی که کار میکنه php هست . سیستم طوری طراحی شده که مثلا جایی که تکست باکس نیاز دارید فقط یه شی ازش میسازید و روی خروجی میفرستید و بقیه مسائل رو برنامه کنترل میکنه و همچنین میتونید به کنترل های html رویداد php نسبت بدید که این نقطه اوج ماجرا هست.

morrning
چهارشنبه 22 بهمن 1393, 22:44 عصر
(کاری که ما برای یک فریم ورک چند سال پیش در انجمن ایران پی اچ پی استارت زدیم و هیچ وقت تموم نشد)
همچنین در صورت امکان تجربه توسعه راسپینا رو هم با ما در میون بزارید که قطعا میتونه مفید باشه .

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

rezaonline.net
پنج شنبه 23 بهمن 1393, 00:11 صبح
مورد بعدی که لازم هست ذکر کنم این هست که پروژه ای که داریم CMF هست و قرار نیست چیزی شبیه Yii و prado ... باشه و تمرکز اصلی برای ارائه ابزارهایی در هسته هست که توسط اون بشه محتواهای مختلف رو کنترل و مدیریت کرد و مثل فریمورک های موجود که فراگیر و از اجرا شدن در شل تا نمایش خروجی روی مرورگر رو در بر میگیره نیست.
CMF با توجه به ماهیتی که دارد باید هم فریم ورک بود هم cms که خیلی پیچیده تر هست
به نظرم به سمت CMS برید که کاربر نهایی با دانش پایین هم بی نصیب نماند از سیستم .

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

morrning
پنج شنبه 23 بهمن 1393, 00:19 صبح
در مورد سایر صحبت هاتون هم فقط میتونم آرزوی موفقیت کنم و اینکه راه سختی در پیش دارید و همچنین معذرت میخوام که بدلیل مشغله نمیتونه باهاتون همکاری کنم .
انشاالله موفق باشید .
خواهش میکنم .لطف دارید ولی بیشتر دوست داشتم تجربتون درباره راسپینا رو در میون بزارید تا بشه عوامل شکست رو فهمید و از دوباره رخ دادنش جلوگیری کرد.

ABZiko
پنج شنبه 23 بهمن 1393, 00:38 صبح
بنده در حال حاضر فقط می تونم در بخش ترجمه کمک تون کنم، لطفا بفرمائید باید از کجا شروع کنم(توی crowdin هم حساب دارم)

morrning
پنج شنبه 23 بهمن 1393, 00:44 صبح
بنده در حال حاضر فقط می تونم در بخش ترجمه کمک تون کنم، لطفا بفرمائید باید از کجا شروع کنم(توی crowdin هم حساب دارم)



سلام
ار همکاریتون سپاسگذارم .
نام کاربریتون رو بفرمایید که به گروه اضافه کنم

ABZiko
پنج شنبه 23 بهمن 1393, 00:51 صبح
ABZiko همین!:لبخند:

morrning
پنج شنبه 23 بهمن 1393, 00:57 صبح
نام کاربریتون رو اضافه کردم.احتمالا باید به ایمیلتون مراجعه و تایید کنید.
لینک پروژه هم در سایت crowdin
https://crowdin.com/project/sarkesh
میتونید شروع کنید.
مجددا سپاسگذارم:لبخندساده:

ABZiko
پنج شنبه 23 بهمن 1393, 01:00 صبح
خواهش می کنم، این حرف رو نزنید.

ABZiko
پنج شنبه 23 بهمن 1393, 01:01 صبح
ببخشید یک سوال باید کدوم یک از اون فایل ها رو ترجمه کنم؟

morrning
پنج شنبه 23 بهمن 1393, 01:06 صبح
ببخشید یک سوال باید کدوم یک از اون فایل ها رو ترجمه کنم؟

fa_IR.po

البته به صورت هفتگی رشته های جدید رو به این فایل اضافه میکنم و همیشه درصد ترجمش متغییره.این فایل در پوشه
languages\fa_IR\LC_MESSAGES
داخل پروژه قرار داره که الان روی گیت هاب هست

ABZiko
پنج شنبه 23 بهمن 1393, 01:11 صبح
ممنون، تا به حال حدود 20 کلمه رو ترجمه کردم.

morrning
پنج شنبه 23 بهمن 1393, 01:14 صبح
البته crowdin رایگان نیست ولی با ایمیلی که براشون فرستادم پروژه رو رایگان هاست کردند.برای ترجمه واقعا یکی از بهترین سایت ها همین crowdin هست مخصوصا با پیشنهاد لغاتش و رفتن به کلمه بعدی با تایید هر رشته

ABZiko
پنج شنبه 23 بهمن 1393, 01:26 صبح
بله خیلی عالی هست.

morrning
جمعه 24 بهمن 1393, 01:53 صبح
خوب امروز بنده کلی فکر کردم و به این نتیجه رسیدم
با توجه به اینکه نسخه فعلی بر اساس آزمون و خطا پیش رفتم و داکیومنت ها هم که داخل سورس کد ها هست خیلی غیر حرفه ای نوشته شده اصلاح این سورس کد ها و تغییر نامگذاری متغییر ها امری ضروری هست و از طرفی نسخه فعلی هم پیشرفت هایی داشته که الان خیلی از بخش ها بدون مشکل کار میکنند و تنها به مستند سازی و تغییر نامگذاری نیاز دارند.
بر همین اساس بازبینی اولیه رو فقط روی مستند سازی سورس کد ها قرار میدیم که مدارک توسعه به مرور تکمیل و تکمیل تر بشه . در این مرحله تنها داکیومنت ها بازبینی میشن و متغییر های داخلی بر اساس نام گذاری کوهان شتری تغییر داده میشن ولی نام توابع داخل کلاس ها تغییر نمیکنه.همچنین نام متغییر های داخل توابع هم بر همین اساس تغییر داده میشن و اگه راه حل بهینه تری برای هر تابع وجود داشت اون رو اعمال میکنیم تا سیستم بهینه بشه. اما حتما باید کارکرد تابع دچار تغییر نشه و همون نتیجه رو داشته باشه.
همه ی این تغییرات روی شاخه جدیدی روی مخزن پروژه اعمال و در نهایت پس از تکمیل نهایی روی شاخه اصلی مرچ میشن.

برای مثال سورس زیر رو در نظر بگیرید:
این سورس در فایل core\lib\cls\core_cls_db_mysql.php قرار داره


//this function import sql file to database
//warning: first of all check permission for use this function
//any change with this function can not undo
public function import_from_file($filename){
if(file_exists($filename)){
$command='mysql -h' . DatabaseHost .' -u' . DatabaseUser .' -p' . DatabasePassword .' ' . DatabaseName .' < ' . $filename ;
//run mysql program
exec($command,$output=array(),$result);
return $result;
}
else{
//file not found
return null;
}
}


خوب بهترین راه اینه که ایتدا داکیومنت ها و نام متغییر ها تغییر داده بشه به صورت زیر (تغییر کد آقای شهرکی)

/**
* Import the database
* @param string $filename
* @return int The result of export operation (0: success, 1: warning, 2:error)
*/
public function import_from_file($filename)
{
if(!file_exists($filename)) {
return false;
}
$command = 'mysql -h ' . DatabaseHost . ' -u ' . DatabaseUser . ' -p ' . DatabasePassword . ' ' . DatabaseName . ' < ' . $filename;
$output = array();
exec($command, $output, $result);
return $result;
}

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

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

meysam1366
جمعه 24 بهمن 1393, 18:39 عصر
سلام مجددبه نظر بنده همین روشی که شما فرمودید خوبه و میتونیم از IDE هایی مثل phpstorm استفاده کنیم که این کار رو خودکار انجام میده

MMSHFE
شنبه 25 بهمن 1393, 09:35 صبح
بهتره بجای اسامی مثل import_from_file از ساختار importFromFile استفاده کنید یا اگه میبینید import و export فقط با فایل انجام میشه، میشه بجای importFromFile یا exportToFile از اسامی خلاصه تر import و export استفاده کنید. با توجه به تکرار زیاد اسامی متدها توی کدهایی که قراره با این هسته نوشته بشن، بهتره تا جایی که میشه و به خوانایی و مفهوم لطمه نمیزنه، از اسامی کوتاه و با معنا استفاده کنید تا به کاهش حجم و افزایش خوانایی سورس کدی که با این محصول تولید میشه کمک کنید. توی یک فریمورک خوب فقط خوانایی و مستندسازی سورس کدهای داخلیش مهم نیست (چون فقط بدرد توسعه دهندگان میخوره) و خوانایی کدهایی که بعداً با کمک اون ساخته میشه هم به همون اندازه اهمیت داره.

morrning
شنبه 25 بهمن 1393, 12:30 عصر
بهتره بجای اسامی مثل import_from_file از ساختار importFromFile استفاده کنید یا اگه میبینید import و export فقط با فایل انجام میشه، میشه بجای importFromFile یا exportToFile از اسامی خلاصه تر import و export استفاده کنید. با توجه به تکرار زیاد اسامی متدها توی کدهایی که قراره با این هسته نوشته بشن، بهتره تا جایی که میشه و به خوانایی و مفهوم لطمه نمیزنه، از اسامی کوتاه و با معنا استفاده کنید تا به کاهش حجم و افزایش خوانایی سورس کدی که با این محصول تولید میشه کمک کنید. توی یک فریمورک خوب فقط خوانایی و مستندسازی سورس کدهای داخلیش مهم نیست (چون فقط بدرد توسعه دهندگان میخوره) و خوانایی کدهایی که بعداً با کمک اون ساخته میشه هم به همون اندازه اهمیت داره.

قطعا موردی که فرمودید روش استاندارد و اصولی هست و php-fig هم این روش رو پیشنهاد داده ولی با توجه به تعداد اعضا گروه ( در ترجمه 4 نفر و در برنامه نویسی 2 نفر) که محدود هست ابتدا با همین روش پیش بریم و پس از اتمام ریویو اولیه توابع جدید که نام گذاری اصولی دارن رو اضافه کنیم. و به مرور زمان توابع با نام گذاری غیر اصولی رو از دور خارج کنیم .البته همین حالا هم میشه این کار رو کرد.مثلا در مورد کدی که عرض کردم به شکل زیر تغییر داده بشه.


/**
* Import the database
* @param string $filename
* @return int The result of export operation (0: success, 1: warning, 2:error)
*/
public function import($filename)
{
return $this->import_from_file($filename);
}
/**
* Import the database
* @param string $filename
* @return int The result of export operation (0: success, 1: warning, 2:error)
*/
public function import_from_file($filename)
{
if(!file_exists($filename)) {
return false;
}
$command = 'mysql -h ' . DatabaseHost . ' -u ' . DatabaseUser . ' -p ' . DatabasePassword . ' ' . DatabaseName . ' < ' . $filename;
$output = array();
exec($command, $output, $result);
return $result;
}

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

MMSHFE
شنبه 25 بهمن 1393, 16:07 عصر
برعکس بنده معتقدم همین اول کار اگه ساختار نامگذاری و درج کامنت و... رو اصلاح کنید بهتره چون به مرور با بزرگ شدن پروژه، هم به مشکل عادت کردن به اسامی قبلی بر میخورین و هم اینکه تغییردادن اسامی و کامنتها و... خودش یک مسئله بزرگ خواهد بود چون IDEها اینقدر هم توی تغییر نام و Refactoring هوشمند و قوی عمل نمیکنن و ممکنه بعضی جاها با خطا مواجه بشین. همین کلاس db و orm رو من اومدم تغییر دادم (از Refactor هم استفاده کردم) باز بعضی جاها بهم ریخت و به مشکل برخورد کردم (ممکنه اون فراخوانی متدی که تغییر نام داده میشه، مال این کلاس نباشه و متد یک کلاس دیگه صدا زده شده باشه و درنتیجه با تغییر نام خودکار، مشکل پیش میاد).

n0o0b_sina
شنبه 25 بهمن 1393, 16:17 عصر
بهتره بجای اسامی مثل import_from_file از ساختار importFromFile استفاده کنید
چرا بهتره؟!

MMSHFE
شنبه 25 بهمن 1393, 16:30 عصر
چون هم خلاصه تره، هم با ساختار استاندارد جهانی که توی همه پروژه ها مورد استفاده قرار میگیره سازگارتره. ضمن اینکه ساختار camelCase توی همه IDEها شناخته شده است و برای مثال، توی NetBeans وقتی با Ctrl و جهتهای چپ و راست توی متن بصورت کلمه به کلمه حرکت میکنید، فرضاً اگه کلمه exportToFile رو درنظر بگیریم، مکان نما روی حروف e و T و F توقف میکنه.

n0o0b_sina
شنبه 25 بهمن 1393, 16:36 عصر
چون هم خلاصه تره، هم با ساختار استاندارد جهانی که توی همه پروژه ها مورد استفاده قرار میگیره سازگارتره. ضمن اینکه ساختار camelCase توی همه IDEها شناخته شده است و برای مثال، توی NetBeans وقتی با Ctrl و جهتهای چپ و راست توی متن بصورت کلمه به کلمه حرکت میکنید، فرضاً اگه کلمه exportToFile رو درنظر بگیریم، مکان نما روی حروف e و T و F توقف میکنه.
ممنون از اطلاعاتتون، ولی پس چرا بیشتر توابع وردپرس به این صورت نوشته نشده؟ بیشتر به صورت "import_from_file" هست.

MMSHFE
شنبه 25 بهمن 1393, 17:19 عصر
وردپرس ابداً کدنویسی استاندارد و خوبی نداره (منظورم استانداردهای روز هست). علت اینکه تغییرش نمیدن هم همین مسئله است که خیلیها درطول سالهایی که وردپرس وجود داشته به سبک کدنویسی قبلی اون عادت کردن و اگه بخوان به هسته دست بزنن، صدها و شاید هزاران پلاگین که امروزه برای وردپرس وجود داره یک مرتبه از کار میفته. این مسئله، همون مشکلی هست که من برای این فریمورک نوپا (سرکش) نگرانش هستم و برای همین تأکید دارم از همین اول طبق استانداردهای روز کار بشه تا بعداً مثل وردپرس به جایی نرسه که تغییردادن و استانداردکردنش مقرون به صرفه نباشه.

hamedarian2009
شنبه 25 بهمن 1393, 17:26 عصر
ممنون از اطلاعاتتون، ولی پس چرا بیشتر توابع وردپرس به این صورت نوشته نشده؟ بیشتر به صورت "import_from_file" هست.

این قوانین به سلیقه تیم توسعه دهنده اون برنامه میتونه متفاوت باشه ولی خود تیم توسعه دهنده php روش underscore_case رو توی نامگزاری توابع و متغیرها استفاده میکنه و توی شی گرایی و نام متدها از روش camelCase.
اگه به مستندات php در وبسایت رسمیش مراجعه کنید متوجه میشین

morrning
شنبه 25 بهمن 1393, 22:21 عصر
این قوانین به سلیقه تیم توسعه دهنده اون برنامه میتونه متفاوت باشه ولی خود تیم توسعه دهنده php روش underscore_case رو توی نامگزاری توابع و متغیرها استفاده میکنه و توی شی گرایی و نام متدها از روش camelCase.
اگه به مستندات php در وبسایت رسمیش مراجعه کنید متوجه میشین

البته به نظر من خود php هم مثل وردپرس دچار این مشکل شده چون توی هر نسخه سعی میکردن از نسخه قبلی پشتیبانی کنن و به قول آقای شهرکی الان مثلا نام یک تابع رو تغییر بدن کلی برنامه تو سراسر دنیا از کار میفته.ولی واقعیتش اینه غیر از استاندارد بودن این روش بنده هم وسط این دو راهی موندم چون خودمم که اولین خط این برنامه رو شروع کردم شیوه نام گذاریم تبعیت از روش نامگذاری خود php بود.

morrning
یک شنبه 26 بهمن 1393, 01:41 صبح
با توجه به صحبت های آقای شهرکی و تحقیقاتی که انجام دادم بنده تصمیم گرفتم پروژه رو بازنویسی کلی کنم با دلایل زیر

۱- نبود داکیومنت استاندارد برای استفاده سایر توسعه دهندگان
۲-نبود استاندارد در شیوه نام گذاری متغییر ها (PHP Fig)
۳-حذف redbeanphp از کل سیستم و جایگزینی با کلاسی که در آینده خواهم نوشت.
۴-استفاده از الگوی های برنامه نویسی و اضافه شدن کش به دیتابیس

دلیل شماره ۳: این کلاس برای کار با پایگاه داده بسیار عالی هست ولی یک مشکل بزرگ داره و اونم اینکه برای هر بازدید با یک درخواست از بانک اطلاعاتی حدود ۱.۲ مگابایت از رم رو مصرف میکنه و در بازدید های بالا سربار زیادی ایجاد میکنه و این خلاف سیاست اولیه برای تولید این فریمورک هست.از طرفی مقداری از هسته و پلاگین های جانبی از این کلاس استفاده میکنند به همین دلیل بنده تصمیم گرفتم همین شیوه و نامگذاری در redbeanphp رو حفظ و فقط ساختار ها رو تغییر بدم که مقدار مصرف منابع رو پایین بیارم.

دلیل شماره ۴:اضافه کردن و استفاده از الگو های برنامه نویسی بیشتر در سیستم هست که به شدت بهینگی رو بالا میبره.در حال حاضر فقط از الگوی singleton استفاده شده.

morrning
یک شنبه 26 بهمن 1393, 01:53 صبح
بنده همین جا پایان توسعه نسخه اولیه رو اعلام میکنم و از این به بعد کامیتی روی مخزن تحت این عنوان ارسال نخواهد شد.
سورس های جدید در شاخه v2 از مخزن اضافه خواهند شد.با توجه به برآورد هایی که انجام دادم این کار بین ۱.۵ الی ۲ ماه زمانبر هست.
الان که به گذشته فکر میکنم این افزایش زمان بر اثر اشتباهات بنده در عدم تحقیق درست و مقداری عجله برای تکمیل پروژه هست که باید هر چه سریعتر برطرف بشه در غیر این صورت به نظرم در آینده انحرافات و مشکلات زیادی رو به وجود میاره.

جناب میثم خان عزیز:کار ما از فردا با کلاس های کتابخونه ای شروع میشه و برای کامنت ها و نام گذاری ها و همه چیز های دیگه از camelCase استفاده کن.فقط کلاس mysql و orm رو کاری نداشته باش که باید دوباره از نو نوشته بشن.برای استارت از فایل core_cls_browser_page.php شروع کن.راهنمایی لازم داشتی روی مخزن پروژه کامنت بزار

MMSHFE
یک شنبه 26 بهمن 1393, 08:37 صبح
شناسه من توی گیت هاب، mmshlrfsh هست. اگه میشه اون رو هم به پروژه اضافه کنید تا هروقت فرصت داشتم در حد توانم روی کدها کار کنم.

morrning
یک شنبه 26 بهمن 1393, 10:51 صبح
شناسه من توی گیت هاب، mmshlrfsh هست. اگه میشه اون رو هم به پروژه اضافه کنید تا هروقت فرصت داشتم در حد توانم روی کدها کار کنم.

اضافه شدید.

دوستان عزیز تغییرات رو روی شاخه DEV ارسال کنید.

morrning
یک شنبه 26 بهمن 1393, 11:23 صبح
زمان ارسال روی مخرن مخزن هدف رو با HEAD مشخص کنید.برای مثال

git push -u origin HEAD:DEV

morrning
یک شنبه 26 بهمن 1393, 19:10 عصر
امروز با کلاس ARCHIVE کار رو شروع کردم و یه کامیت روی شاخه جدید فرستادم.
دوستان عزیز یه نکته ای رو فراموش نکنید و اونم اینکه بعد از تغییر نام توابع با جست و جو در فایل ها تمام نام های توابع قدیمی رو با جدید ها جایگزین کنید.

morrning
دوشنبه 27 بهمن 1393, 18:12 عصر
الان بنده شروع کردم به بازنویسی کلی سیستم.
کسی ایده ای یا موضوعی غیر از این مواردی که روش بحث شد به ذهنش میرسه بگه که اعمال کنم.

morrning
دوشنبه 27 بهمن 1393, 19:56 عصر
نسخه اولیه از یک کلاس برای مدیریت دیتابیس mysql مشابه فریمورک مدیریت داده redbeanphp ایجاد شد که امکانات پایه ای فریمورک بدون پشتیبانی از ساختار ها و رابطه ها رو نوشتم که میتونید نسخه اولیه اون رو در آدرس زیر دانلود کنید.
نسخه بتا هست و در صورت لزوم امکانات جانبی به اون اضافه خواهد شد.
مزیت این کلاس حدودا ۲۰۰ خطی در مقابل redbeanphp دوازده هزار خط کدی مصرف کمتر منابع سیستم و سرعت اجرای بالاتر و همچنین اشغال فضای کنتر توسط شی های تولید شده در خروجی این کلاس هست.
امکاناتی که فکر میکنید ضروری هست رو بفرمایید که اضافه کنم.

https://github.com/sarkeshLtd/orm

rezakho
دوشنبه 27 بهمن 1393, 22:03 عصر
سلام

شما که داری زحمت رو میکشی، دیدم بد نباشه موارد زیر رو پیشنهاد بدم
استانداردهای فعلی php رو هم مدنظر داشته باشید

1- کامپوزر رو روی پروژه پیاده کنید، پیاده سازیش اینقدر مزایا داره که براش وقت بگذارید
2- حتما autoloading رو هم پیاده کنید، نسخه psr-4 بهترین گزینه هست، برای اینکار باید روش نام گذاری کلاس ها رو کمی تغییر بدید
3- من تستی توی پروژتون ندیدم، تست ها رو فراموش نکنید، پروژه که بزرگ بشه، بدون تست، پروژه پر از باگ خواهد بود، بخصوص کارهای تیمی!

والا موارد مثل بالا خیلی زیاده اگه بخوام بگم، روش کد نویسیتون چی هست الان؟ به نظرم اول زیرساخت ها رو بچینید، بعد توسعه خود پروژه رو شروع کنید، کار خوب، ابزار مناسب می خواد، بدون این ابزارها گیر خواهید کرد!

morrning
سه شنبه 28 بهمن 1393, 16:54 عصر
سلام

شما که داری زحمت رو میکشی، دیدم بد نباشه موارد زیر رو پیشنهاد بدم
استانداردهای فعلی php رو هم مدنظر داشته باشید

1- کامپوزر رو روی پروژه پیاده کنید، پیاده سازیش اینقدر مزایا داره که براش وقت بگذارید
2- حتما autoloading رو هم پیاده کنید، نسخه psr-4 بهترین گزینه هست، برای اینکار باید روش نام گذاری کلاس ها رو کمی تغییر بدید
3- من تستی توی پروژتون ندیدم، تست ها رو فراموش نکنید، پروژه که بزرگ بشه، بدون تست، پروژه پر از باگ خواهد بود، بخصوص کارهای تیمی!

والا موارد مثل بالا خیلی زیاده اگه بخوام بگم، روش کد نویسیتون چی هست الان؟ به نظرم اول زیرساخت ها رو بچینید، بعد توسعه خود پروژه رو شروع کنید، کار خوب، ابزار مناسب می خواد، بدون این ابزارها گیر خواهید کرد!

ممنون از پیشنهادتون
بنده تحقیقی که درباره کامپوزر انجام دادم متاسفانه پروژه رو از حالت فعلی خارج میکنه و اونو به سمت ریموت شدن میبره که این برای یک پروژه نوپا خوب نیست.
مورد بعدی هم که فرمودید الان autoloading در کل سیستم وجود داره و اتفاقا با همون استانداردی که فرمودید پیاده سازی شده
قبلا استاندارد خاصی برای نحوه نام نویسی وجود نداشت ولی در این بازبینی شیوه camelCase انتخاب شده.

rezakho
سه شنبه 28 بهمن 1393, 17:59 عصر
1- منظورتون از ریموت شدن چیه؟؟؟
2- پس حداقل نام کلاس هاتون رو با حرف بزرگ شروع کنید! به جای _ هم از پوشه بندی استفاده کنید.
3- منظورم از روش کد نویسی، TDD بود، ضمن اینکه در مورد تست ها هم چیزی نگفتید.

morrning
چهارشنبه 29 بهمن 1393, 20:19 عصر
چون بنده قصد دارم در شبکه های داخلی هم از این سیستم استفاده کنم کامپوزر بر خلاف این عمل میکنه و نیاز به سرور های جانبی داره(شاید منظور دیگه ای کامپوزر تو ذهن من باشه)
دلیل استفاده از ـ به جای پوشه بندی هم علاوه بر تعریف نام دامنه های مختلف سیستم رو شلوغ میکرد وگرنه دلیل خاصی نداره و قدرت تغییرات رو بالا میبره برای مثال برای تغییر کلی چند نام دامنه فقط کافیه اسم فایل ها عوض بشن و استفاده از حروف بزرگ در اول نام دامنه ها هم به نظرم استاندارد جالبی نیست چون بر خلاف دامنه ها در نام دامنه ها از \ برای جدا سازی استفاده میشه و نیاز به جداکننده دیگه نیست
در مورد تست ها هم که فرمودید دلیلش عدم اطلاع بنده در این رابطه بوده .حقیقتش رو بخواید اصلا نمیدونم این تست ها چه سودی داره و اگر اطلاعاتی در این رابطه در اختیار بنده قرار بدید ممنون میشم.
بنده از روشی که در کتاب مهندسی نرم افزار راجر پرسمن توضیح داده شده برای توسعه استفاده میکنم (بخش مربوط به توسعه برنامه های تحت وب) اسم خاصی برده نشده یا حداقل من اسمشو نمیدونم:افسرده:

bagherok
چهارشنبه 29 بهمن 1393, 20:49 عصر
چون بنده قصد دارم در شبکه های داخلی هم از این سیستم استفاده کنم کامپوزر بر خلاف این عمل میکنه و نیاز به سرور های جانبی داره(شاید منظور دیگه ای کامپوزر تو ذهن من باشه)

البته ربطی به این تاپیک نداره
اما
فرقی نمیکنه که چه تو Local باشید یا ...

خب وقتی قراره از یه کلاسی تو پروژتون استفاده کنید و اون کلاس هم خودش از کلاس های دیگه و الی آخر ...
این کامپوزر هست که این وابستگی ها (dependency) رو مدیریت میکنه.
بعدشم همیشه که قرار نیست این کامپوزر کار کنه
هرکلاس و کتابخونه ای رو که نیاز دارید رو درون فایل composer.json قرار میدید



{
"require": {
"monolog/monolog": "1.2.*"
}
}


و یه بار با دستور composer install نصب میکنید و تمام.....


از مزایای دیگه اش Autoloading , و بروز رسانی

rezakho
چهارشنبه 29 بهمن 1393, 21:10 عصر
1- کامپوزر پروژه ای برای کنترل و مدیریت خودکار وابستگی های پروژه های php هست، مثلا اگر شما بخواید از کتابخونه های بیرونی php مثل تاریخ، فرم ساز، درهم سازی، فایل و ... استفاده کنید، کامپوزر اون ها رو به صورت اتوماتیک براتون دانلود، نصب و روی پروژتون سوار می کنه، کنترل نسخه ای خاص از کتابخونه و سازگاری با نسخه های مختلف Php هم از وظایفش هست، می تونید بگید از فلان کتابخونه، آخرین نسخه پایدار 1 رو برای پروژتون استفاده کنه و ...
نه به سرور جانبی نیاز داره و نه هنگام کار پروژه اشکال یا وابستگی ایجاد می کنه، فقط هنگام راه اندازی اولیه پروژه، فایل ها و کتابخونه هایی که پروژه شما نیاز داره رو نصب می کنه و تمام!
به این فکر کنید که پروژه شما به پروژه های دیگه وابسته هست، اونها مدام دارند بروز میشند، باگ هاشون برطرف میشه، با نسخه های جدید php سازگار می شند، اما پروژه شما همچنان با نسخه های قدیمی اونها داره کار میکنه! البته اگر نسخه های قدیمی با با گذشت زمان و نسخه های جدید php کار بکنه!

2- تعریف نام کلاس ها و فضای نام ها به صورت StudlyCaps هم که اینجا http://www.php-fig.org/psr/psr-1 به عنوان استاندارد تعریف شده، علاوه بر استاندارد بودنش، باعث میشه با یگ نگاه به کد، نام کلاس ها از سایر شناسه های توی کد متمایز بشه و فهم کد رو بالا می بره

3- شاید یکی از بهترین روش های (حالا بین لفظ روش و معماری اختلاف هست) توسعه پروژه، TDD هست، که تست ها هم همین جا بکار میان، توضیح اش مفصل هست، ولی من یه اشاره کلی می کنم، ببینید، هر بار که تغییری در کد اعمال میشه، باید از درست اجرا شدن کد مطمئن بود، هم کد تازه نوشته شده و هم اثرات جانبی که تغییرات کد روی سایر قسمت های پروژه می گذاره، حالا شما برای این حصول اطمینان چه می کنید؟، میاید تک تک خطوط کدهای اضافه شده و تغییر داده شده رو بررسی می کنید؟، و آیا با بررسی کردن و یا دیدن میشه اشکال کد رو پیدا کرد؟، اگر هم دستی تست کنید، آیا می تونید همه قسمت های پروژه رو به درستی و کامل تست کنید؟ جواب قطعا خیر هست! اینجاست که باید بگید راه حل چیه و راه حل همون تست ها هستند
ضمن اینکه روش TDD، یک روش توسعه چابک هست، یعنی کمک می کنه توسعه سریع تر از حالت عادی انجام بشه، شما در این روش اول تست رو می نویسید و بعد کد، کد باید تست رو پاس کنه، و همین باعث میشه کد اضافه نوشته نشه و وقت زیادی در پروژه به هدر نره!
چزئیات بیشترش رو می تونید سرچ بزنید

golbafan
چهارشنبه 29 بهمن 1393, 21:15 عصر
سلام
من هم علاقه مند هستم برای کسب تجربه به شما بپیوندم

زمینه های علاقه مندی:
دیتابیس
امنیت
طراحی ظاهری

morrning
پنج شنبه 30 بهمن 1393, 01:45 صبح
سلام
من هم علاقه مند هستم برای کسب تجربه به شما بپیوندم

زمینه های علاقه مندی:
دیتابیس
امنیت
طراحی ظاهری
سلام

ممنون از همکاریتون .نام کاربریتون در github رو بفرمایید که اضافه کنم. الان فقط روی تغییر نام گذاری ها و داکیومنت سازی و بهینه سازی روی کلاس های پایه که در آدرس core\lib\cls هست کار کنید.

فعلا دو پلاگین content و بلاگ چون خیلی خیلی تغییرات لازم دارن رو از مخزن حذف میکنم تا بعدا دوباره از نو نوشته بشن.البته پلاگین content خیلی درهم شده که خودمم توش موندم.
اون مورد کامپوزر که فرمودید مشکلی نداره که اضافه بشه ولی متاسفانه فعلا اولویت های بالاتری وجود داره . الان باید کل سورس کد ها از ابتدا نوشته بشن که خیلی زمانبر هست انشالله در فاز های بعدی بهش میپردازم.درمورد تغییر نام دامنه ها هم متاسفانه همین شرایط وجود داره اگه افراد گروه بیشتر میشدن میشد یه کاری براش کرد.

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

golbafan
پنج شنبه 30 بهمن 1393, 08:02 صبح
نام کاربریم golbafan هستش :چشمک:

morrning
پنج شنبه 30 بهمن 1393, 09:29 صبح
به گروه اضافه شدید. لطفا تایید کنید

morrning
شنبه 02 اسفند 1393, 12:37 عصر
بعد از چند روز به تایپینگ سر زدم متاسفانه داوطلب جدیدی نمیبینم:ناراحت:
ولی یه خبر از تغییرات دارم و اونم اینکه با تغییراتی که در حال انجامش هستم از clean url پشتیبانی میشه.
برای وب سایت های تک زبانه به صورت
site.com/plugin/action/options
و برای سایت های چند زبانه
site.com/localize/plugin/action/options

ّمچنین داکیومنت های یه سری دیگه از کلاس ها اصلاح شد.

ahmadnajaf403i
دوشنبه 04 اسفند 1393, 13:11 عصر
من رو هم اضافه کنید