ورود

View Full Version : گفتگو: مستند سازی کارهایی که در پروژه انجام میدهیم



sunn789
دوشنبه 01 دی 1393, 18:57 عصر
سلام
دوستان، معمولا هر کاری که انجام میدهیم رو در پروژه مینویسم ، مثلاً نصب elmah ، نصب knockout , ...
خوب اول میومدم یه فایل doc.txt اضافه میکردم و به صورت خط به خط مینوشتم ،
بعد یک صفحه aspx اضافه کردم و به صورت CheckBoxList در صفحه مینوشتم ،
اما الان به صورت accordion در یک صفحه اضافه میکنم ایا کسی نظر خاصی داره ؟

sempay_ninjutsu
سه شنبه 02 دی 1393, 12:15 عصر
مستند سازی خودش راه و روش متفاوتی داره....
مستند واسه کد هست..واسه نصب برنامه هست....مستند مبنی بر اینکه چرا از این تکنولوژی استفاده شده است.....اگه فریم ورک داشته باشی که مستند سازی متفاوت خواهد بود.....
برخلاف اون دسته از افرادی که فکر میکنند مستند فقط کار اضافه ایست یا نهایت برای بسته شدن دهن کارفرما است باید عرض کنم هر چقدر مستند سازی شما قوی باشه و بر اساس اصول مهندسی شکل گرفته باشه شک نکنید ارامش خاطری تو کار بهتون میده که قابل وصف نیس و از نگرانی های آینده جلوگیری میکنه.....
حالا شما بفرماییید مستند سازی شما کدوم کاربردو داره؟؟؟
اگه نیت فقط یادداشته خوب ایده ال ترین کارت اینه که یه فرم بسازی از اونجا دیتا بزنی و تو دیتابیست ذخیره کنی یا از ابزار TFS اگه دارین استفاده کنی که بهتره.....
خودم شخصا معتقدم از نرم افزار مدیریت پروژه در کنار نرم افزار مستند سازی باید استفاده بشه....
چون بتونیم بعدا از گزارشاتی که میده استفاده کنیم...
http://www.projectmanager.com/project-software.php?gclid=CLWx58_p28ICFWTHtAodECcAjw

sunn789
سه شنبه 02 دی 1393, 14:03 عصر
من با شما موافقم در خصوص استفاده از مستند سازی ، اما چون همزمان چندین پروژه رو استارت میزنیم و در روز کلی به پروژه "چیز" اضافه میکنیم و برای پروژه بعدی هم نیاز خواهیم داشت مون مسیر رو رو دوباره بریم و بیشتر اوقات از یاد میبریم که چه کرده ایم ، برای همیم من برای هر پروژه یه مستند سازی انجام مدهم
مثلاً
من برای پروژ] اخر این رو اضافه کرده ام

<h2>Index</h2>
@section scripts
{
<script>
$(function () {
$("#accordion").accordion({ heightStyle: "content" });
});
</script>
}
<style>
div {
text-align: left;
direction: ltr;
}
</style>

<div id="accordion" dir="ltr">
<h3>runed Update-package</h3>
<div>
<p>
Update-package
</p>
</div>
<h3>runed Install-Package Microsoft.AspNet.Identity.Samples -Pre</h3>
<div>
<p>
Install-Package Microsoft.AspNet.Identity.Samples -Pre
</p>
</div>
<h3>runed Install-Package t4mvc</h3>
<div>
<p>
Install-Package t4mvc
</p>
</div>
<h3>runed Install-Package PagedList.Mvc</h3>
<div>
<p>
Install-Package PagedList.Mvc
</p>
</div>
<h3>runed Install-Package Elmah.MVC</h3>
<div>
<p>
Install-Package Elmah.MVC
</p>
</div>
<h3>added MyStyle.css</h3>
<div>

</div>
<h3>added myHelper.cs</h3>
<div>
<p>
<pre>
public static class MyHelpers
{
// Render BootStrap menu item with active class
public static MvcHtmlString MenuItem(this HtmlHelper htmlHelper,
string text, string action,
string controller,
object routeValues = null,
object htmlAttributes = null)
{
var li = new TagBuilder("li");
var routeData = htmlHelper.ViewContext.RouteData;
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
if (string.Equals(currentAction,
action,
StringComparison.OrdinalIgnoreCase) &&
string.Equals(currentController,
controller,
StringComparison.OrdinalIgnoreCase))
{
li.AddCssClass("active");
}
if (routeValues != null)
{
li.InnerHtml = (htmlAttributes != null)
? htmlHelper.ActionLink(text,
action,
controller,
routeValues,
htmlAttributes).ToHtmlString()
: htmlHelper.ActionLink(text,
action,
controller,
routeValues).ToHtmlString();
}
else
{
li.InnerHtml = (htmlAttributes != null)
? htmlHelper.ActionLink(text,
action,
controller,
null,
htmlAttributes).ToHtmlString()
: htmlHelper.ActionLink(text,
action,
controller).ToHtmlString();
}
return MvcHtmlString.Create(li.ToString());
}
// As the text the: "<span class='glyphicon glyphicon-plus'></span>" can be entered
public static MvcHtmlString NoEncodeActionLink(this HtmlHelper htmlHelper,
string text, string title, string action,
string controller,
object routeValues = null,
object htmlAttributes = null)
{
UrlHelper urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
TagBuilder builder = new TagBuilder("a");
builder.InnerHtml = text;
builder.Attributes["title"] = title;
builder.Attributes["href"] = urlHelper.Action(action, controller, routeValues);
builder.MergeAttributes(new RouteValueDictionary(HtmlHelper.AnonymousObjectToH tmlAttributes(htmlAttributes)));
return MvcHtmlString.Create(builder.ToString());
}
}
</pre>
</p>
</div>
<h3>change Admin to SuperAdmin</h3>
<div>
<p>4change</p>
</div>
<h3>added modern-business.css in Bundel and content</h3>
<div>
<p>
this them for site
</p>
</div>
<h3>added modern-business.js in bundle and script Folder</h3>
<div>

</div>
<h3>added fonts in font folder</h3>
<div>

</div>
<h3>Added jQuaryUi.js on ScriptProject and added to bundle</h3>
<div>

</div>
<h3>Added jQuary-Ui.css on ScriptProject and added to bundle</h3>
<div>

</div>
<h3>Add more property in ApplicationUser</h3>
<div>
<pre>
[Display(Name = "نام")]
public string FName { get; set; }
[Display(Name = "نام خانوادگی")]
public string Lname { get; set; }
[Display(Name = "نام پدر")]
public string FatherName { get; set; }
[Display(Name = "کد ملی")]
public string NationalCode { get; set; }
[Display(Name = "شماره همراه")]
public override string PhoneNumber { get; set; }
[Display(Name = "نام شهر")]
public int CityId { get; set; }
[ForeignKey("CityId")]
public virtual City Cities { get; set; }
[Display(Name = "آدرس")]
public string Address { get; set; }
[Display(Name = "پست الکترونی")]
public override string Email { get; set; }
[Display(Name = "نام کاربری")]
public override string UserName { get; set; }
[MaxLength(10)]
public string CustomerCode { get; set; }
</pre>
</div>
<h3>Change email in LoginViewModel</h3>
<div>
<p>
Change
<pre>
//[Required]
//[Display(Name = "پست الکترونی")]
//[EmailAddress]
//public string Email { get; set; }
</pre>
with
<pre>
[Required]
[Display(Name = "نام کاربری")]
public string UserName { get; set; }
</pre> in AccountViewModels => LoginViewModel
</p>
</div>
<h3>Change "model.Email " with "model.UserName" in Account controller</h3>
<div>
<p>
Change "model.Email " with "model.UserName" in Account controller
<pre> var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
</pre>
</p>
</div>
<h3>Change Register ViewModel</h3>
<div>
<pre>

public string Id { get; set; }
[Required]
[Display(Name = "نام")]
public string FName { get; set; }
[Required]
[Display(Name = "نام خانوادگی")]
public string Lname { get; set; }
[Required]
[Display(Name = "نام پدر")]
public string FatherName { get; set; }
[Required]
[Display(Name = "کد ملی")]
public string NationalCode { get; set; }
[Required]
[Display(Name = "شماره همراه")]
public string PhoneNumber { get; set; }
[Required]
[EmailAddress]
[Display(Name = "پست الکترونی")]
public string Email { get; set; }
[Required]
[Display(Name = "کد مشتری")]
public string CustomerCode { get; set; }
[Required]
[Display(Name = "نام کاربری")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "کلمه عبور")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "تکرا کلمه عبور")]
[Compare("Password", ErrorMessage = "کلمه عبور و تکرار آن با هم یکسان نیستند.")]
public string ConfirmPassword { get; set; }
[Required]
[Display(Name = "نام شهر")]
public int CityId { get; set; }

[Required]
[Display(Name = "آدرس")]
public string Address { get; set; }

</pre>
</div>
<h3>change register action on AccountController</h3>
<div>
bind model to ViewModel
<pre>

if (ModelState.IsValid)
{
var user = new ApplicationUser
{
UserName = model.UserName,
Email = model.Email,
FName = model.FName,
Lname = model.Lname,
FatherName = model.FatherName,
NationalCode = model.NationalCode,
PhoneNumber = model.PhoneNumber,
CityId = model.CityId,
Address = model.Address,
};
</pre>
</div>
<h3>Send email with SendGrid</h3>
<div>
<pre>Install-Package SendGrid</pre>
</div>
</div>:چشمک:

sempay_ninjutsu
سه شنبه 02 دی 1393, 15:40 عصر
من با شما موافقم در خصوص استفاده از مستند سازی ، اما چون همزمان چندین پروژه رو استارت میزنیم و در روز کلی به پروژه "چیز" اضافه میکنیم و برای پروژه بعدی هم نیاز خواهیم داشت مون مسیر رو رو دوباره بریم و بیشتر اوقات از یاد میبریم که چه کرده ایم ، برای همیم من برای هر پروژه یه مستند سازی انجام مدهم
/
حرف شما هم درسته که میگین این پروژه تو پروژه های دیگه تکرار میشه و دوباره باید از نو کارو آغاز کرد....
ولی دوست عزیز ببین شما مثلا دو تا پروژه داری حسابداری و بازاریابی.....
لزوما مستند سازی این دو تا پروژه کاملا باید از هم جدا باشه و هیچ وابستگی بین اینها نباشه......پس به ناچار باید واسه همه مستند سازی کنیم.....
اینم دلیل داره ها:.
فک کنید نیرو گرفتین و اون بخاد رو زیر سیستم حسابداری کار کنه نباید کل مستند سازی زیر سیستم هارو بگرده ببینه چی به چیه(عملا اینجا اصلا مستند سازی نداریم که اگرم با این شرطی که گفتم بود بازم خوب بود)
یا مثلا بخواهد زیر سیستم حسابداری و بفروشید کارفرما بگه مستند سازی کاملش باید تحویل گردید.
حالا این وسط یه مواردی مطرح میشه که بین این دو تا سیستم ارتباط دارن ...مثلا به ازای هر کالایی که فروخته شد یک سند حسابداری بزند......این مستند نه تو حسابداری گنجانده میشه نه تو فروش...بلکه اینها ماژول های اضافی هستند که به سیستم تزریق میشن و در نبود آنها خللی تو اون زیر سیستم وارد نمیشود......اینهارو میتونین بصورت جدا مستند کنین....
حالا مثلا شما کامپونت هایی دارین که میان این دو تا سیستم مشترکه....میتونین مستند آنها هم خارج از زیر سیستم نگهداری بشه و بصورت یه پروژه جدا دیده بشه.....
مستند سازی سیستم کاملا به ساختار پروژه هایی که می نویسید بستگی داره.....اگر به مستند سازی هم بصورت OOP نگاه کنید نمیگم صد در صد ولی عمدتا از مشکلات شما کاسته می شود....
لطفا در مورد این کدی که گذاشتید بیشتر توضیح میدین؟؟؟؟چه مزیت هایی برای شما داره؟؟و چطور به این نتیجه رسیدین که از این استفاده کنید؟(اطلاعاتم راجب این کمه)
موفق و پایدار باشید

sunn789
چهارشنبه 03 دی 1393, 13:48 عصر
این که این کد رو نوشتم ، من به طور معمول همزمان روی سه تا پروژه کا رمیکنم و گاهای هم چند روز که میرم مسافرت یا بیرون از شهر به اینترنت دسترسی ندرم روی این پروژه ها کار نمیکنم
خوب زمانی که از پروژه ای به پروژه دیگه بر میگردم و یا بعد از چند روز یه پروژه رو اجرا میکنم خیلی چیزها در مورد پروژه از یادم رفته و ممکنه با پروژه قبلی قطی بشن برای همین اول یه پوشه درست کردم و یه فایل DOC.TXTگذاشتم , و سر تیتر کارهایی که روی پروژ] کردم رو مینوشتم ، مثلاً گزارش تلریک رو به پروژه اضافه میکنم و مینوشتم "Added telerik report " خوب همونجور که میدونید همین اضافه کردن گذارش کلی مراحل داره و مثلاً برای تلریک مراحل باید به ترتیب انجام بشه و فایل txt تک رنگه و زمانی که مطالب زیاد شه یه صفحه گیج کننده داریم ، برای همین از صفحات aspx استفاده کردم و CheckBoxList اضافه کردم ، حداقل توی صفحه رنگ بندی که ویژآل میداد بخشها رو برای من جدا میکرد ، اما با توضیحات اذیت میکرد برای همین از accordion و جاوا استفاده کردم
126863