[TehPUG] User manger App

soroosh sarabadani soroosh.sarabadani at gmail.com
Mon May 26 09:20:44 CEST 2014


جایی که نمیگیم باید مینیمال باشه. اما خب از best practice ها  و اصولی مثل
SRP هر ماژول بهتره که مینیمال باشه.
من نظرم رو دارم میگم برای طراحی و ایجاد سوال برای دوستانی که تازه دارن یاد
میگیرن و یا کار کردن و میخوان تجربه اشون بیشتر بشه.




2014-05-26 11:37 GMT+04:30 NIM4N <nim4n at yahoo.com.dmarc.invalid>:

>  جایی نگفتیم قراره مینیمال باشه :)
> هم قراره برای یادگیری بچه های کارگاه باشه و هم اینکه روی سایت پاگ سوارش
> کنیم. حالا ولی اصراری هم نیست باشه میتونه نباشه سروش جان :)
>
> On 05/26/2014 11:34 AM, soroosh sarabadani wrote:
>
>  یک سوال.
>
>  User Management چرا اصلا باید پیام داشته باشه؟
>
>  به نظرم وجود این امکان app رو از minimal بودن خارج میکنه
>
>
> 2014-05-26 11:23 GMT+04:30 NIM4N <nim4n at yahoo.com.dmarc.invalid>:
>
>>  مدل پیغام به نظرم به شکل فایل پیوست باشه بهتره
>>
>>
>>
>>
>> On 05/26/2014 10:25 AM, soroosh sarabadani wrote:
>>
>>  Many To Many که خوب جدول ساخته میشه پس به نظرم اضافه کردن ویژگیهای خاص
>> رابطه مفیده سربار خاصی هم نداره.
>>
>>  منم با آقا نیما درباره اسمها کاملا موافقم.
>>
>>
>> 2014-05-26 10:15 GMT+04:30 NIM4N <nim4n at yahoo.com.dmarc.invalid>:
>>
>>>  به نظرم فرند ها هم many to many باشه توی خود پروفایل، نیازی هست به خاطر
>>> یک تاریخ دوستی یه تیبل جدا بزنیم؟
>>> اسمها رو هم پدر مادر دار بزنید :)
>>>  On 05/26/2014 04:24 AM, amir baleghi wrote:
>>>
>>>   سلام بر کاربر های عزیز ‍‍‍‍‍TEHPUG
>>>  خسته نباشید .. همون طور که توی جلسه مشخص شد قرار شد یک سیستم مدیریت
>>> کاربران برای سایت ‍‍پاگ بسازیم. خوب همون طور که توی جلسه بحث کردیم مدلی که
>>> بنده آورده بودم رو برای به عنوان شروع کار قرار دادیم... (البته با تغییرات
>>> احتمالی که در ادامه می گم)...
>>>  برای شروع کار از کتابخونه Djengo کمک می گیرم . توی این سایت مقدمات
>>> سفارشی کردن سیستم user manager رو توضیح داده . به همه  بچه توصیه می کنم این
>>> رو تا انتها بخونن.... تمام روش هایی رو که شمای می تونید از سیستم user
>>> manager جنگو استفاده کنید رو توضیح داده است. و معایب بعضی از روش ها رو هم
>>> بیان کرده است.
>>>
>>> https://docs.djangoproject.com/en/dev/topics/auth/customizing/
>>>
>>>  خوب در ادامه به سیستم پیشنهادی می پردازیم
>>>  برای شروع کار من از ساختار پروفایل استفاده کردیم .که البته باید در
>>> مورد استفاده از این ساختار با هم به توافق برسیم . انتخاب ساختار بستگی به
>>> روش کار ما داره که باید روش بحث کنیم . که ادامه بهش اشاره می کنم
>>>  با توجه به مستندات لینک بالا بهترین روش های برای استفاده از ساختار
>>> user manager جنگو دو روش زیر می باشند:
>>>  ۱- روش پروفایل
>>>  ۲ - استفاده از Abstract class
>>>  هستش. بقیه روش ها یا برای ما کارایی لازم رو نداره یا دارای معایب بزرگی
>>> هست. البته بازم بجه اگر روش دیگه به نظر شون میاد بگن که روی اون ها هم بحث
>>> کنیم
>>>  روش پروفایل همون طور که در مستند توضیح داده شده است. از یک ارتباط یک
>>> به یک بهره می بره . شما با درست کردن مدل خودتون به صورت کاملا سفارشی اون رو
>>> مدل کاربران اصلی جنگو با یک ارتباط یک به یک ارتباط می دهید
>>>  مزایا این روش خیلی زیاد هست . و یک پشتوانه علمی داره . اگر لازم به ذکر
>>> شد توضیخ می دم
>>>  معایب هم کاملا مشخصه وقتی شما یک مدل را به یک مدل دیگه متصل می کنید
>>> بحث هزینه های join  و پیجیدگی query ها مطرح میشه. که خوب این هم به نظر من
>>> با بهینه سازی query  ها می تونیم این مسایل رو برطرف کنیم. حتی می تونیم از
>>> فیلد های redundant استفاده کنیم که هزینه join ها مون پایین بیاد.
>>>
>>>  در روش دوم بجث Abstract class
>>>  در این روش ما با استفاده از کلاس های abstract اقدام به ساخت یک سیستم
>>> جدید user manger می کنیم که با استفاده از ارث بری از کلاس های abstract
>>> کاربری از روش استفاده می کنیم .
>>>   مزایا این روش به نظر من سفارشی کردن کامل بحث user manger هست . در این
>>> روش سیستم شما در حالت پیش فرض کاملا مستقل از سیستم اصلی جنگو عمل می کند
>>> یعنی در حالتی شما این سیستم را پیاده سازی می کنید که می خواهیم مستقل از
>>> جنگو عمل کنیم و یک سیستم مدیریت کاربران کاملا سفارشی و مسقل داشته باشیم
>>> در این حالت شما نیم نگاهی به امنیت سایت هم داشته ای چون در این حالا
>>> کاربران عادی سایت از کابراران توسعه دهنده سایت مجزا می باشند که می تونه
>>> برای خودش یک ابزار برای گمراهی مهاجم ها به سایت باشه.
>>>   البته مزایا های دیگه هم ممکن داشته باشه که در حال حاضر ذهن یاری نمی
>>> کنه (ساعت ۴ صبح هستش)
>>>  معایبش هم به نظر من بحث بازنویسی دوباره کد هستش ....یعنی شما در این
>>> حالت نیاز دارید بسیاری از پیش فرض های جنگو را پیاده سازی کنید که در این
>>> حالت یک جورایی دوباره کاری های انجام شده ....که می تونه زمینه ساز خطا در
>>> برنامه باشه . و از طرفی بدلیل پیاده سازی های نادرست زمینه ورود مهاجم به
>>> سایت رو هم بدیم.که در این حالت برای بطرف کردن این کار می تونیم از روش های
>>> تست که در سیستم جنگو هست استفاده کنیم که در این حالت می تونیم از بروز خطا
>>> جلوگیری کنیم و سیستمون رو امن تر کنیم.
>>>
>>>  خوب مدل های رو که من به عنوان پیش فرض اماده کردم رو اینجا می زارم
>>>  برای این مدل ها من روش پروفایل استفاده کردم.
>>>  برای روش abstarct هم می تونیم از لینک استفاده کنید. در اونجا یک مثال
>>> کامل از روش بیان شده است
>>>
>>>
>>> from django.db import models
>>> from django.contrib.auth.models import User
>>>
>>> class PugUsers(models.Model):
>>>     user = models.OneToOneField(User)
>>>     userInformation = models.CharField(max_length=500)
>>>     userImage = models.CharField(max_length=50)
>>>     userAbility = models.CharField(max_length=500)
>>>
>>>
>>>
>>> class PugFriends(models.Model):
>>>     userF = models.ForeignKey(PugUsers, related_name="userF")
>>>     userFriend = models.ForeignKey(PugUsers, related_name="user_Friend")
>>>     friendshipDate = models.DateTimeField(auto_now=True)
>>>
>>>
>>> class PugMessage(models.Model):
>>>     userSender = models.ForeignKey(PugUsers, related_name="user_sender")
>>>     userReceiver = models.ForeignKey(PugUsers,
>>> related_name="user_receiver")
>>>     mesSubject = models.CharField(max_length=100)
>>>     mesBody = models.CharField(max_length=1000)
>>>
>>>  خوب از اینجا به بعدش می تونیم از بین این دو روش انتخاب کنیم
>>>  هر کدوم مزایا و معیابی داره تا جایی که ذهن یاری می کرد این رو بیان کردم
>>>  از اینجا به بعد بچه ها کمک کنن ببینید چه مبنایی رو به عنوان شروع کار
>>> قرار بدهیم.
>>>  از آقا نیما تشکر می کنم که به بنده یاد آوری کردن....خیلی ممنون
>>>  فایل های پروژه  رو براتون پیوست می کنم.
>>>  منتظر نظر های شما هستیم
>>>
>>>
>>>   _______________________________________________
>>> TehPUG mailing list
>>> Website: http://tehpug.ir
>>> List Address" TehPUG at python.org
>>> List Options: https://mail.python.org/mailman/listinfo/tehpug
>>>
>>>
>>>
>>> _______________________________________________
>>> TehPUG mailing list
>>> Website: http://tehpug.ir
>>> List Address" TehPUG at python.org
>>> List Options: https://mail.python.org/mailman/listinfo/tehpug
>>>
>>
>>
>>
>> _______________________________________________
>> TehPUG mailing list
>> Website: http://tehpug.ir
>> List Address" TehPUG at python.org
>> List Options: https://mail.python.org/mailman/listinfo/tehpug
>>
>>
>>
>> _______________________________________________
>> TehPUG mailing list
>> Website: http://tehpug.ir
>> List Address" TehPUG at python.org
>> List Options: https://mail.python.org/mailman/listinfo/tehpug
>>
>
>
>
> _______________________________________________
> TehPUG mailing list
> Website: http://tehpug.ir
> List Address" TehPUG at python.org
> List Options: https://mail.python.org/mailman/listinfo/tehpug
>
>
>
> _______________________________________________
> TehPUG mailing list
> Website: http://tehpug.ir
> List Address" TehPUG at python.org
> List Options: https://mail.python.org/mailman/listinfo/tehpug
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tehpug/attachments/20140526/ac751fc9/attachment.html>


More information about the TehPUG mailing list