عنوان:

‫MVVM و فراخوانی متدهای اشیاء View از طریق ViewModel


نویسنده: وحید نصیری
تاریخ: ۱۳۹۰/۱۰/۱۰ ۱۲:۲۰:۰۰
آدرس: www.dntips.ir

ما در ViewModel دسترسی مستقیمی به هیچ یک از اشیاء موجود در View نداریم (و درستش هم همین است). الان فرض کنید که می‌خواهیم از طریق ViewModel یک View را ببندیم؛ مثلا متد Close آن پنجره را فراخوانی کنیم. به عبارتی در حالت کلی می‌خواهیم یکی از متدهای تعریف شده یکی از عناصر بصری موجود در View را از طریق ViewModel فراخوانی نمائیم.
برای حل این مساله از فایل‌های همان SDK‌ مرتبط با Expression blend استفاده خواهیم کرد.

ابتدا ارجاعاتی را به اسمبلی‌های System.Windows.Interactivity.dll و Microsoft.Expression.Interactions.dll اضافه می‌کنیم.
سپس دو فضای نام مرتبط هم باید اضافه شوند:

  xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"  
  xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

یک مثال عملی:
قصد داریم از طریق ViewModel ، پنجره‌ای را ببندیم. کدهای XAML این مثال را در ادامه مشاهده خواهید کرد:

<Window x:Class="WpfCallMethodActionSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:vm="clr-namespace:WpfCallMethodActionSample.ViewModels"
Name="ThisWindow"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<vm:MainWindowViewModel x:Key="vmMainWindowViewModel" />
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource vmMainWindowViewModel}}">

<Button Content="Save &amp; Close" VerticalAlignment="Top" Margin="5">
<i:Interaction.Triggers>
<!--فراخوانی متدی در ویوو مدل-->
<i:EventTrigger EventName="Click">
<ei:CallMethodAction
TargetObject="{Binding}"
MethodName="SaveButtonClicked" />
</i:EventTrigger>

<!--فراخوانی متدی در شیء جاری از طریق ویوو مدل-->
<i:EventTrigger SourceObject="{Binding}" EventName="CloseMainWindow">
<ei:CallMethodAction
TargetObject="{Binding ElementName=ThisWindow}"
MethodName="Close"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</Window>

همچنین ViewModel تعریف شده نیز همین چند سطر زیر است:

using System;

namespace WpfCallMethodActionSample.ViewModels
{
public class MainWindowViewModel
{
public void SaveButtonClicked()
{
close();
}

public event EventHandler CloseMainWindow;
private void close()
{
if (CloseMainWindow != null) CloseMainWindow(this, EventArgs.Empty);
}
}
}

توضیحات:
اگر به ViewModel دقت کنید خبری از DelegateCommand در آن نیست. بله، به کمک ترکیبی از EventTrigger و CallMethodAction می‌توان جایگزینی را جهت DelegateCommand معرفی شده در قسمت‌های قبل این سری مباحث MVVM ارائه داد.
EventTrigger در اینجا به این معنا است که اگر EventName ذکر شده رخ داد، آنگاه این اعمال را انجام بده. مثلا در اینجا CallMethodAction را فراخوانی کن.
CallMethodAction در اسمبلی Microsoft.Expression.Interactions.dll تعریف شده است و تنها متدی از نوع void و بدون پارامتر را می‌تواند به صورت خودکار فراخوانی کند (محدودیت مهم آن است).
اینکه این متد کجا قرار دارد، توسط TargetObject آن مشخص می‌شود. اگر TargetObject را مساوی Binding قرار دادیم، یعنی به دنبال متدی که در DataContext گرید وجود دارد بگرد. به عبارتی به صورت خودکار به SaveButtonClicked تعریف شده در ViewModel ما متصل خواهد شد و آن‌را فراخوانی می‌کند.

تا اینجا رخداد Click دکمه تعریف شده را به متد SaveButtonClicked موجود در ViewModel سیم کشی کردیم.

در مرحله بعد می‌خواهیم از طریق ViewModel ، متدی را در View فراخوانی کنیم. نکته آن هم پیشتر ذکر شد؛ TargetObject صحیحی را باید انتخاب کرد. در اینجا برای پنجره جاری نام ThisWindow تعریف شده است و از طریق تعریف:

TargetObject="{Binding ElementName=ThisWindow}"

به CallMethodAction خواهیم گفت که قرار است متد Close را در شیء ThisWindow فراخوانی کنی.
همچنین نحوه تعریف EventTrigger ما هم در اینجا برعکس شده است:

<i:EventTrigger SourceObject="{Binding}"  EventName="CloseMainWindow">

قبلا به دنبال مثلا رخداد Click یک دکمه بودیم، اکنون با توجه به SourceObject تعریف شده، در ViewModel به دنبال این رخداد که برای نمونه در اینجا CloseMainWindow نام گرفته خواهیم گشت.

بنابراین View اینبار به رخداد CloseMainWindow تعریف شده در ViewModel سیم کشی خواهد شد. اکنون اگر این رخداد در ViewModel فراخوانی شود، CallMethodAction متناظر فعال شده و متد Close پنجره را فراخوانی می‌کند.

نظرات

  • مهمان در ۱۳۹۰/۱۰/۱۰ ۱۸:۳۴:۳۲
    با سلام خدمت استاد نصیری
    من مطالب شما رو در خصوص MVVM دنبال کردم و بسیار عالی بیان کردید که واقعاً از شما سپاسگذارم.
    اما من بیشتر با  ASP.Net برنامه می نویسم. سرچ کردم دیدم تو این آدرس http://aspnetmvvm.codeplex.com دیگه از سال 2009 به بعد ASP.net MVVM توسعه داده نشده. آیا دلیل خاصی داره؟
    کلا برای ASP.net هم MVVM رو پیشنهاد میکنید یا خیر دنبال چیز دیگری باشم؟
    ممنون از لطف شما.
  • وحید نصیری در ۱۳۹۰/۱۰/۱۰ ۱۹:۱۰:۵۳
    علتش رو اینجا توضیح دادم: (^).
    ASP.NET Webforms از نظر مایکروسافت در رده Done قرار دارد. فقط این اواخر کمی «ماله کشی و صافکاری» روی آن انجام شده و خواهد شد.
    ضمنا الگوی MVVM‌ به درد ASP.NET‌ نمی‌خوره. نیاز به سیستمی State full داره که سیستم‌های وب در این رده قرار نمی‌گیرند. ASP.NET اساسا Stateless است. به همین جهت در پروژه‌های وب تمایل به MVC بیشتر است تا هر الگوی دیگری.
    همچنین یکی از اعضای تیم ASP.NET MVC ، اخیرا فریم ورک MVVM‌  JavaScript ایی را به نام knockoutjs ارائه داده ((^)). علت ارائه برای جاوا اسکریپت هم دقیقا به State full آن بر می‌گردد، زمانیکه داخل مرورگر کاربر اجرا می‌شود. مانند Silverlight که آن هم State full است.
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۰:۱۰:۵۱
    سلام.
    آقای نصیری می تونم بپرسم چرا دیگه خلاصه اشتراکات رو منتشر نمی کنید ؟
    ممنونم.
  • وحید نصیری در ۱۳۹۰/۱۰/۱۱ ۱۰:۳۱:۰۲
    من هر از چندگاهی می‌ایستم و به کارهایی که کردم نگاه می‌کنم. بعد از 100 روز اینکار تقریبا هیچ بازخوردی نداشت. بنابراین حذف شد.
    آخر امسال هم در مورد این وبلاگ تصمیم گیری می‌کنم. خصوصا به غیرعمومی کردنش.
    باز بودن، باز کار کردن، سورس باز بودن، به اشتراک گذاری، ‌انتشار مطلب و همه این‌ها خوب. عالی. من پشتیبانش هستم. اما در فضایی متقابل هست که معنا پیدا می‌کنه که من متاسفانه این فضا رو نمی‌بینم. جمع کسانی که این دور و اطراف فنی نویس هستند به 5 نفر نمیرسه.
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۰:۵۰:۳۱
    آقای نصیری خلاصه اشتراک هایی که به اشتراک می گذاشتید مورد توجه خیلی ها قرار می گرفت این مسئله از +1 ها و رای هایی که می گرفت مشخص بود.
    تا حدی که برای من و خیلی ها عادت شده بود که شب ها قبل از خواب ابتدا اشتراک های شما رو بررسی کنیم.
    جدا از خلاصه اشتراک ها بدون تملق این وبلاگ "مهمترین" دلیل اندک پیشرفت من و امثال من که در ابتدای راه هستیم بوده .
    امیدوارم همچنان به تلاشتون جهت پیشرفت بار فنی و فکر برنامه نویسان ایرانی ادامه بدید. و فضایی که ذکر کردید بیشتر از الآن متقابل شود.
    ممنون.
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۱:۰۴:۳۰
    با سلام.
    وقتی که شاهین کیاست به من ایمیل زد و موضوع "خلاصه اشتراکهای روزانه" و پاسخی که جناب نصیری دادند رو به من اطلاع داد ابتدا گفتم نه! آخه چرا؟! ولی چند دقیقه بعد که کمی فکر کردم دیدم ایشون حق دارند. وقتی فقط یه نفر باشه که بروز باشه ، اطلاعات رو به اشتراک بگذاره و بازخوردی نبینه خسته ککنده هست.
    متاسفانه این چند وقت اخیر اکثر دوستان دیگه هم مثل "بهروز راد" دست از نوشتن برداشتن. وبلاگ "مهدی موسوی" رو نگاه کنید. آخرین به روز رسانی برای چه تاریخی هست.
    کسانی مثل مهدی موسوی ، وحید نصیری ، بهروز راد و دیگر دوستان که دانش زیادی برخوردار هستند ، گرفتاری هاشون هم بیشتر اما با تمام این گرفتاری ها به فکر ارتقاء سطح علمی دیگران هم هستند.
    اما همونطور که جناب نصیری گفتند تعداد فنی نویسان بسیار کم هست.
    وحید نصیری یکی از کسانی هست که من هر وقت میخوام به کسی یک فعال در زمینه ی IT رو معرفی کنم ایشون اولین نفر هست. من شخصا همیشه این بلاگ رو بررسی میکنم و از مطالب مفیدش استفاده میکنم.
    امیدوارم که این وضع عوض بشه و همه ی دوستان اطلاعاتشون رو در هر سطحی که هست به اشتراک بگذارند. منظورم با خودم و شاهین هم هست. باید شروع کرد.
    مرسی وحید نصیری.
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۱:۱۳:۱۰
    از طریق همین اشتراکهای روزانه من با خیلی از وبلاگهای ایرانی و خارجی و سایتهای مفید آشنا شدم.
    یک راه میانبر بود برای تازه کارهایی مثل من.
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۲:۲۲:۵۶
    من هم هر روز و هر شب چک میکنم ...
    ای کاش بشه ادامه بدید ...
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۲:۳۸:۴۹
    درود بر شما جناب نصیری و همینطور شاهین کیاست که لطف کردن و موضوع رو مطرح کردن. 
    من هم با جناب نصیری موافقم که ادامه چنین کاری نیاز به فضای متقابل و طبیعتا دلگرمی و انگیزه داره؛ اما صحبت اینجاست که «من اگر بنشینم، تو اگر بنشینی، چه کسی برخیزد؟». فکر میکنم به گفته Hossein Raziee باید یه حرکتی بهرحال انجام داد؛ اینطور که من برداشت کردم، فکر میکنم دو تا موضوع وبلاگ نویسی IT در ایران رو تحت الشعاع قرار داده: یکی گرایش به تالارهاست. و دومی گرایش به بلاگ های خارجی. اکثر برنامه نویسای قوی که دست به قلم هستن، توی تالارها فعالیت میکنن؛ ظاهرا اهمیت وبلاگ ها هنوز برای ما جا نیفتاده. دوستانی هم که یه مقداری از مشق و تمرین بالاتر میرن، معمولا نه تنها خودشون شروع به انتقال نمیکنن، بلکه حتی برای ارتقای خودشون و پیگیری مطالب سراغ بلاگ های غیر فارسی میرن؛ فکر میکنم نیاز به یه حرکت اصولی و درست و حساب شده داریم تا موضوع تولید محتوی IT به زبان فارسی رو تو یه مسیر درست بندازیم. یکی از راههایی که به ذهن من میرسید، ایجاد یه شبکه بین نویسنده های ایرانی بود؛ حدود یه سال پیش این موضوع رو با چند تا از دوستان اینترنتیم مطرح کردم که استقبال نشد. حالا دوباره از دوستان میپرسم که نظرشون چیه؟ 
    نمونه بسیار مفید (ولی تنها یه شمّه) خلاصه اشتراک هایی هست که جناب نصیری منتشر میکنن؛ وقتی یه نفر مثل وحید نصیری لینکی رو منتشر میکنه من مطمئنم که مطلب مفیدی هست؛ پس حتما میرم و میخونم؛ و چه بسا جزو خوانندگان دائمی اون سایت هم بشم؛ حالا عرض بنده اینه که این موضوع باید منسجم و شبکه ای باشه؛ 
    با جناب نصیری موافقم؛ با شاهین هم موافقم؛ اما موافق این نیستم که آقای نصیری بگن میخوام بکشم کنار و من و شاهین کیاست هم بگیم نه اینکارو نکنید؛ چون وحید نصیری شاید امروز احساساتی بشه و بخاطر من و امثال من ادامه بده، اما فردا دوباره بی انگیزگی یا خستگی میاد سراغش و باز همین داستان؛
    من فکر میکنم باید راه چاره رو پیدا کرد؛ راهی که به نظر من میرسید رو عرض کردم؛ از دوستان که تا جاییکه من میشناسم و مطالب رو دنبال میکنم، میدونم همشون از افراد تاثیر گذار در IT ایران و با دانش و تجربه زیاد هستن هم خواهش میکنم که هر راهی به ذهنشون میرسه عنوان کنن که با همفکری هم بتونیم به یه راه حل درست برسیم؛
    به سهم خودم هم از جناب نصیری عمیقا تشکر میکنم و از پرحرفی و زیاده گوییم پوزش میخوام. پاینده باشید؛
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۳:۱۴:۴۳
    سلام. من مدتی بود که به دلیل گرفتاری و درگیری زیاد فرصت بررسی وبلاگها و سایتها رو برای بروز شدن نداشتم ولی با دیدن خلاصه اشتراکهای شما خودمو ملزم کرده بودم که اونها را هر شب و یا اگه شب فرصت نمی کردم به عنوان اولین کار در روز بعد، مطالعه و بررسی کنم.
    البته دلیل شما برای ادامه ندادن دقیقا همون دلیلی بود که دو سال پیش باعث شد تا منم وبلاگ نویسی را کنار بذارم. چه قصد ادامه دادن داشته باشید چه نداشته باشید به خاطر همه اون مطالب از شما واقعا ممنونم.
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۴:۲۸:۴۰
    خبر خیلی بدی بود ...
    امیدوارم به کسی بر نخوره ولی متاسفانه Leecher بودن داره تبدیل به یک فرهنگ میشه.

    خوندن این مطلب هم خالی از لطف نیست
    چگونه وبلاگ بخوانیم
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۹:۱۴:۲۴
    استاد عزیز آخه چرا این تصمیم کشنده رو گرفتید؟؟!!
    البته حق با شماست و کاملاً حرفاتون متین.
    اما اگر شده بلاگ رو اشتراکی کنید و مثلاً اشتراک سالانه رو عدد X اعلام بفرمائید، اما لطفاً کنار نکشید. یک محل واقعاً علمی که از بهترین دانشگاهامون قوی تر هستش رو لطفاً ازمون نگیرید.
    من ارشد IT میخونم تهران تربیت.م.د اما کل مطالبی که تو مدت تحصیل در مقطع کارشناسی و ارشد یاد گرفتن به مفت نمی ارزد و اساتیدش هم که ... اما از طریق وبلاگ و خلاصه اشتراکهای شما کلی مطالب به روز، به دردبخور، خلاصه و گل مطلب رو گرفتم. البته خیلی وقتا چند بار باید یک پست شما را مطالعه کرد تا موضوع را فهمید که طبیعی است زیرا شما از بهترین اساتید ما که 2 کارشناسی اشد و یک دکتری داشت هزار پله بالاترید.
    در کل لطفاً تجدید نظر فرموده و تنها دانشگاه به روز و بی منت کشور را از ما نگیرید.
    ممنون
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۱۹:۱۶:۰۵
    استاد عزیز آخه چرا این تصمیم کشنده رو گرفتید؟؟!!البته حق با شماست و کاملاً حرفاتون متین.اما اگر شده بلاگ رو اشتراکی کنید و مثلاً اشتراک سالانه رو عدد X اعلام بفرمائید، اما لطفاً کنار نکشید. یک محل واقعاً علمی که از بهترین دانشگاهامون قوی تر هستش رو لطفاً ازمون نگیرید.من ارشد IT میخونم تهران تربیت.م.د اما کل مطالبی که تو مدت تحصیل در مقطع کارشناسی و ارشد یاد گرفتن به مفت نمی ارزد و اساتیدش هم که ... اما از طریق وبلاگ و خلاصه اشتراکهای شما کلی مطالب به روز، به دردبخور، خلاصه و گل مطلب رو گرفتم. البته خیلی وقتا چند بار باید یک پست شما را مطالعه کرد تا موضوع را فهمید که طبیعی است زیرا شما از بهترین اساتید ما که 2 کارشناسی اشد و یک دکتری داشت هزار پله بالاترید.در کل لطفاً تجدید نظر فرموده و تنها دانشگاه به روز و بی منت کشور را از ما نگیرید.ممنون
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۲۰:۴۹:۵۵
    سلام استاد عزیز
    من یک برنامه نویس آماتور بودم که طی سه سال آشنایی با وبلاگ شما سطح خود را بالا بردم . طی این سالها به ندرت اتفاق افتاده که روزی مطالب شما رو نخونده باشم. بعضی از مطالب رو هم چندین و چند بار خوندم.NH رو از شما یاد گرفتم و در کل بهترین استاد کامپیوتر زندگی من هستید. من حاضرم برای استفاده از مطالب شما هزینه پردازم. بسته شدن این وبلاگ یعنی مرگ برنامه نویسان نیمه حرفه ای و حرفه ای.
  • مهمان در ۱۳۹۰/۱۰/۱۱ ۲۲:۴۶:۲۰
    استاد خواهش می کنم این کار رو نکنید، خدایی من SL رو با وحید نصیری شناختم هر موقعه می خوام اسم یه حرفه ای رو نام ببرم اولین اسمی که می یارم استاد وحید نصیری هست، استاد شما خودتون می بینید که من همیشه جزو طرفدارای پروپاقرص وبلاگتون هستم خدایی همیشه به عنوان یه اسطوره واسه ما بودید. پس خواهش می کنم اط این تصمیم منصرف بشید
  • وحید نصیری در ۱۳۹۰/۱۰/۱۲ ۰۹:۱۷:۵۱
    من امیدی به این جماعت ندارم! همین الان حداقل 2 دو شبکه مخصوص برنامه نویس‌ها در این دور و اطراف هست که ... دارند خاک می‌خورند. یک نمونه idevcenter.com است و نمونه دیگر pspcommunity.org . هر دو توسط تعدادی کمتر از 2 تا 3 نفر سرپا نگه داشته شدن. هر دو هم شاید هفته‌ای یک مطلب یا ماهی 4 تا 5 مطلب جدید داشته باشند. این جماعت خیر و برکت نداره! دست و باز و گشاده‌ای نداره.
    اما ... تنها راهی رو که عده‌ای تجربه کردن و جواب داده فعالیت‌های محدود، بسته و غیرعمومی است. همین الان هم هست؛ شاید باور نکنید که لینک‌های referrer در کنترل پنل این وبلاگ به یک سری انجمن و سایت غیرعمومی برنامه نویسی ایرانی داره ختم میشه. حتی انجمن‌های عمومی که نمی‌خوام نام ببرم، قسمت‌های خصوصی دارند؛ و قسمت عمومی آن‌ها جهت بهره کشی از عموم کاربران است. مطالب به درد بخور، در قسمت‌های خصوصی و بسته مطرح می‌شود. آری! اینچنین است، بردار!
  • مهمان در ۱۳۹۰/۱۰/۱۲ ۱۲:۲۸:۰۶
    خوب نسبت به مسایلی که فرمودید، من هیچ ایده ای ندارم. یعنی راهی به ذهنم نمیرسه جز همونی که گفتم. هرچند منظور من از شبکه، شبکه ای از ارتباطات منسجم و هدفمند بود؛ مثلا یه تیم بلاگ نویس تشکیل بشه، با یه سیستم یه پارچه که توسط سرویس هایی با هم در ارتباط باشن؛ بعنوان مثال بخشی تو بلاگ باشه، شامل خلاصه آخرین پست های بلاگ های دیگه؛ از طرفی با هماهنگی تیم، هر کدوم از نویسنده ها تو بلاگشون فقط راجع به یه موضوع بصورت تخصصی بحث کنن؛ یکی منحصرا WPF یکی دیگه ASP.NET و ... . اینطوری بعد از یه مدت یه شبکه منسجم و غنی بدست میاد؛ از طرفی میشه با پیش بینی راهکارهایی که مهمترینش هم تبلیغات هست، هزینه های فنی رو تامین کرد؛ هرچند که کار سختیه؛ مخصوصا جمع شدن چهار نفر ایرانی کنار همدیگه و کار گروهی!!! بگذریم؛ دقیقا با شما موافقم که اینچنین است...
     اگه تصمیم بگیرید که بلاگتون رو خصوصی کنید و هزینه ای هم براش در نظر بگیرید، من با کمال میل اعلان آمادگی میکنم برای ثبت نام. برای شخص بنده، پای درس وحید نصیری نشستن غنیمت ارزشمندی هست که حاضر نیستم از دست بدم. از جزوه های آموزش ASP.NET تا «الگوهای طراحی شیئ گرا» و «امنیت در ASP.NET» تا blogspot و حالا هم dotnettips با جناب نصیری بودم و کماکان خواهم بود؛
    آرزوی پیروزی و بهروزی و شادکامی برای شما معلم گرامی و بزرگوار. دنیا به روح بزرگ و سخاوتمندی چون شما نیاز دارد؛ زنده باشید.
  • مهمان در ۱۳۹۰/۱۰/۱۲ ۱۳:۴۹:۱۷
    استاد یه خواهشی که ما از شما داریم(میگم ما چون فکر کنم نظر تمام بچه ها همین باشه) اینه که واقعاً این کار رو نکنید چون خدایی شما الان تو اینترنت که بگردید توی هر تالاری یه اسمی از استاد نصیری هست حالا به خاطر چند نفری که واقعاً دارن از مطالب شما استفاده می کنند(من به شخصه دارم یه پروژه بزرگ رو با توجه به مطالب این وبلاگ هدایت می کنم) واقعاً من روزانه 3-4 بار از وبلاگتون میام و مطالبتون رو می خونم واقعاً خیلی خیلی خیلی ناراحت شدم وقتی که این پست رو دیدم اینو واقعاً از ته دل می گم.
  • وحید نصیری در ۱۳۹۰/۱۰/۱۲ ۱۴:۱۸:۳۱
    سلام؛ من نگفتم بسته میشه. من کارم همینه! فقط می‌تونه به اشتراک گذاشته بشه یا نشه. می‌تونه عمومی باشه یا نباشه. ولی زندگی من همینه.
    چون باز هم تکرار می‌کنم، «به اشتراک می‌گذارم، به اشتراک می‌گذاری» خوبه.
    الان جدا در طول ماه 4 تا 5 نفر فعال هستند که جمعا 5 تا مطلب «شاید» منتشر کنند. این خوب نیست.
    فقط تصمیمی که گرفتم این است که برای سال بعد عمومی نباشه. رایگان هم نباشه.
  • مهمان در ۱۳۹۰/۱۰/۱۲ ۱۶:۲۵:۲۳
    همون اوایل که اشتراکهای روزانه قطع شد می خواستم بپرسم که چرا قطع شد؟ دیدم شاید پررویی باشه نپرسیدم. ولی بزارید یه سوالی که برام پیش اومده بپرسم :
    چرا شما و کسانی مثل شما که به علم روز برنامه نویسی و نرم افزار تسلط دارید، پروژه های اوپن سورس تولید نمی کنید که هم آموزش است و هم می تواند به خوبی درآمد زا باشد.
    واقعا دلیلش چیست که در ایران این کار اتفاق نمی افتد؟
  • وحید نصیری در ۱۳۹۰/۱۰/۱۲ ۱۷:۳۲:۴۱
    البته من چند پروژه سورس باز دارم در کدپلکس : (^) و اینکه گفتم این نوع طرز فکر را پشتیبانی می‌کنم، در عمل هم رخ داده.
    الان اتفاقا دو پروژه هم هست که مدتی است دارم روی آن‌ها کار می‌کنم: یک گزارش ساز جامع هست بر پایه iTextSharp و یک برنامه نوشته شده با ASP.NET به عنوان معادل دات نتی این رپیدلیچ PHP کارها (بهتره بگم PHP باز ... چون این برنامه حتی تعریف یک «صف» هم ندارد) که خیلی خیلی از آن کاملتر است. من روی فروش این‌ها نمی‌تونم حساب باز کنم چون زمانیکه ارائه شد ... یعنی رفته. اما می‌شود روی پشتیبانی غیر رایگان این‌ها حساب کرد. شاید برای سال بعد این کار رو کردم. برای امسال برنامه‌ای ندارم.
  • مهمان در ۱۳۹۰/۱۰/۱۲ ۲۱:۴۸:۰۳
    آقای نصیری به عنوان کسب تجربه سوالی داشتم :
    زمانی که در آموزش های iTextSharp خودتون به این مسئله که مشغول تهیه ی گذارش ساز هستید اشاره کردید من هم تصمیم گرفتم کمی با iTextSharp برای چاپ گذارش ها کار کنم.(با توجه به مشکلاتی که با ابزار های آماده داشتم) که انصافا خیلی راضی هستم و از شما متشکرم.
    حالا می خوام بدونم آیا به نظر شما درست هست نتیجه ی زحمت رو به صورت سورس باز در اینترنت قرار داد ؟  و گروهی از اون منفعت مالی ببرن و فقط استفاده کننده باشند.

    مثلا همین پروژه های کد باز شما چند نفر به غیر از خود شما روی توسعه آن وقت گذاشتن ؟
    در شرکت ما (و احتمالا خیلی شرکت ها) بسیار پیش آمده که مدیر پروژه یا برنامه نویس نتیجه ی زحمت صاحب یک وبلاگ رو به اسم خودش تمام می کنه (نمونش jQueyr User control loader شما یا خیلی نمونه های دیگه)
    خیلی ممنون از شما.
  • وحید نصیری در ۱۳۹۰/۱۰/۱۲ ۲۲:۵۷:۲۴
    خوب، سخت بودن کار سورس باز هم همینجا است. در کارهای سورس باز در تمام آن‌ها، شما مجاز هستید کار مشتق شده رو بفروشید. تنها تفاوت در اینجا است که یکی می‌گه حتما باید سورس رو هم کنارش قرار بدی و یکی می‌گه مهم نیست و گرنه تمامشون با این مساله مالی مشکلی ندارند.
    در کل به درجه‌ی روانی به اشتراک گذاری اطلاعات رسیدن، کار سختی است. به همین جهت باز هم تکرار می‌کنم این دور و اطراف بگردید، ماهی 5 نفر رو شاید پیدا کنید که حاضر باشند مطلب فنی مهمی رو به رایگان منتشر کنند و قید همه چیز آن‌را بزنند. زمانیکه هم که روز به روز تعدادشون کمتر بشه، انگیزه رو از بقیه خواهند گرفت.
  • مهمان در ۱۳۹۰/۱۰/۱۳ ۱۵:۲۰:۳۲
    سلام.
    ما در تولید محتوای فنی (در زمینه کاری خودمون و به زبان فارسی) به شکلی صحیح، مولفین انگشت شماری داریم. به نظر من برخی از مهمترین دلائل این مساله عبارت است از:

    1. برخی از افراد انگل هستن - تمام! (به کتاب Harley Hahn در این زمینه مراجعه کنید).

    2. بعضی ها فکر میکنن که اگر فلان مطلب رو به اشتراک بذارم، ممکنه همکارم، دوستم و ... با خوندن اون مطلب، فاصله دانسته هاشو با من کم کنه، و به این ترتیب منو با زحمت مواجه کنه (متاسفانه این خصیصه در بسیاری از شرکت های خصوصی، و تقریبا تمامی سازمان های دولتی دیده میشه).

    3. وقتی گوگل و بسیاری از شرکت های شناخته شده در صنعت آگهی های Online بر اساس ضوابط کاری کشورشون، اجازه سرویس دهی به سایت هایی با مطالب فارسی رو ندارن، من نوعی از چه طریقی می تونم از نوشتن، انتفاع حاصل کنم؟ چه کنم که به شرکتهای ایرانی فعال در زمینه Ads نیز اعتمادی ندارم؟ جدا از اینکه تبلیغات این شرکت ها، اکثرا Animation هستش و من دوست دارم خواننده مطالب من، هنگام مطالعه یه مطلب فنی، احساس آرامش کنه، نه اینکه چشم هاش مدام به خاطر وجود یه آگهی َ«ـِ»ً]ٌٍ,\[]!,@# پر پر بزنه.

    4. نبود قانون Copyright از دیگر دلائل عمده ای هستش که باعث شده در این زمینه ما پیشرفتی نکنیم. وقتی یکی از مطالب فارسی ای که نوشته بودم (در سال 1996 (یا 1994)، دقیق خاطرم نیست)، کپی و در یکی از جرائد کشور به اسم فرد دیگه ای منتشر شد، در همون ابتدای راه تصمیم گرفتم دیگه فارسی ننویسم. متاسفانه هنوز که هنوزه، کم و بیش شاهد این اتفاقات هستیم.

    5. ...

    اما در مورد مطلبی که در مورد بلاگ من فرمودید. حقیقتش بعد از اینکه فردی چند سال پیش، منو به دلیل مطالبی که به اشتراک میذاشتم به سخره گرفت و ازم پرسید که "تو اصلا میدونی معمار کیه؟"، به خودم اومدم و تصمیم گرفتم مثل وبلاگ های دیگه، به مطالب بزن و برو اکتفا نکنم. به همین دلیل، از 2/1/2010 به بعد، مطالب ارسالیم شکل مقاله به خودشون گرفتن که طبیعتا، نوشتنشون در مقایسه با نوشتن یکی دو وجب مطلب فنی، بسیار دشوارتر و زمان بر تر هست. من از March 2008 تا February 20110 در واقع برای Search Engine گوگل می نوشتم، نه برای خوانندگان. اما از اون تاریخ به بعد، مطالبی که در وبلاگم گذاشتم، توجه بسیاری از افراد رو بخودش جلب کرد و ... (بی ارتباط با موضوع گفتگو هستش، بنابراین بیش از این در این مورد توضیح نمیدم).

    در هر حال، بنظر من، عدم ارائه مطالب فنی یه وبلاگ بصورت رایگان (در فرهنگ ما)، موفقیتی در پی نداره (امیدوارم برای آقای نصیری اینطور نباشه، البته اگر این وبلاگ رو از حالت رایگان در آوردن). من هنوز یادم نرفته افرادیکه برای شرکت در کنفرانس کذایی ای که بهروز راد، من و یکی دو نفر دیگه قرار بود در مورد HTML5، JavaScript Performance و ... مطلب ارائه بدیم، ابراز خرسندی کردن، اما وقت پول دادن که شد، تعداد افراد ثبت نام کننده به حداقل تعداد مورد نیاز نرسید و اون جلسه Cancel شد. جای تاسفه اگر بدونید برای یه جلسه 1 ساعته، هر نفر فقط باید 5-6 هزارتومان پرداخت می کرد...
  • مهمان در ۱۳۹۰/۱۰/۱۵ ۲۲:۳۳:۴۸
    سلام استاد ... خیلی نوکریم ... :دی
    والا من نمیدونم شما رو چه دلیلی میفرمایین که خلاصه ی اشتراکات مورد استقبال قرار نگرفت!!! ... ولی من میدونم که این کار شما رو نمونشو تو هیچ بلاگ ایرانی به شخصه ندیده بودم و واقعا (واقعا!) کار قشنگی بود و واقعا(واقعا!!) مفید واقع شد و من و خیلی از دوستان صمیمانه انتظار داریم که به این کار ادامه بدین!

    من با این کارتون با بسیاری از بلاگ های مفید ایرانی و اونور آبی :دی آشنا شدم و خیلی هاشو الان دارم follow میکنم ...

    در ضمن شک نداریم که وبلاگ شما بهترین وبلاگ فارسی موجود در برنامه نویسی حرفه ای و نیمه حرفه ای هست ... (خودتونم شک نکنید :دی)

    آره! قبول دارم که ما وبلاگ خونایه خوبی نیستیم!!! ... زورمون میاد یه لایک معمولی کنیم یا کامنت تشکر بذاریم! ... ولی این دلیل نمیشه که از کار شما استقبال نمیشه ... من وقتی تو گودرم تایتلایه شما رو وقتی نوشته بود خلاصه اشتراکایه ... میدیدم بی درنگ expand میکردم لینک رو!

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

    موفق باشید ...
    یا علی ...
  • مهمان در ۱۳۹۰/۱۰/۱۶ ۱۷:۱۲:۲۴
    @وحید نصیری

    از تمام این Commentها فقط یک جمله رو پسندیدم... "خوش به حالت توی اون دنیا" :)