PDA

View Full Version : دانلود کنید: ترجمه بخش هایی از MSDN (جدید!)



tooraj_azizi_1035
چهارشنبه 14 تیر 1391, 00:12 صبح
سلام
لطفاً پس از خواندن نظر دهید.

tooraj_azizi_1035
چهارشنبه 14 تیر 1391, 00:31 صبح
آخه اینطوری فکر می کنم که اگه مطلبی دوباره اضافه کنم کسانی که یک بار تاپیک رو دیدند دیگه تاپیک رو نبینن و فایل Add شده جدید رو دانلود نکنن.

samadblaj
چهارشنبه 14 تیر 1391, 00:44 صبح
سلام دوست عزیز دستو پنجتون درد نکنه به نظر بنده حقیر اگه بشه بیشتر روی قسمت های نو و پیشرفته تر نظیر linq ، terminal و تکنولوژی های جدید و نوی دات نت ترجمه و بحث بشه خیلی بهتره.

ولی خیلی زحمت کشیدید واقعا ممنونم

tooraj_azizi_1035
پنج شنبه 15 تیر 1391, 16:50 عصر
جناب samadblaj
به این لینک بروید:
barnamenevis.org/showthread.php?349300-آموزش-Language-Integrated-Query-در-C (http://barnamenevis.org/barnamenevis.org/showthread.php?349300-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Language-Integrated-Query-%D8%AF%D8%B1-C)

samadblaj
پنج شنبه 15 تیر 1391, 17:54 عصر
جناب samadblaj
به این لینک بروید:
barnamenevis.org/showthread.php?349300-آموزش-Language-Integrated-Query-در-C (http://barnamenevis.org/barnamenevis.org/showthread.php?349300-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Language-Integrated-Query-%D8%AF%D8%B1-C)

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

در رابطه با پستاتونم به نظر من توی یه تاپیک کلی بزنید بسیار بهتره و برای هر آموزش هم یک تاپیک جدید ولی لینک ها رو یه جای دیگه به صورت آرشیو قرار بدید ، بعد توی مقالات c# هم بزاریدش.

با سپاسـ

tooraj_azizi_1035
پنج شنبه 15 تیر 1391, 20:05 عصر
این لینک رو ببینید:
http://barnamenevis.org/showthread.php?349300-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Language-Integrated-Query-%D8%AF%D8%B1-C

salehbagheri
پنج شنبه 15 تیر 1391, 20:18 عصر
متوجه نشدم هدف تاپیک چیست؟

اگر صرفاً ترجمه متون انگلیسی و ارائه اون به صورت یک فایل متنی در اختیار کاربران هست که فکر نمی کنم مفید باشه ... چون حجم MSDN اینقدر زیاد هست که اگر سالها هم وقت صرفش کنید نمیتونید یک ترجمه کامل ازش تهیه کنید، بر فرض هم که تهیه کنید؛ به نظر شما ارائه این مطالب در قالب فایل متنی میتونه ایده خوبی باشه؟

گذشته از اینها دانش انگلیسی دوستان فکر میکنم به قدری باشه که متوجه بیانات MSDN بشن! من خودم که انگلیسی رو راحتتر از ترجمه فارسی متوجه میشم!

samadblaj
پنج شنبه 15 تیر 1391, 20:30 عصر
جناب salehbagheri خوشحالم که سطح اطلاعات شما توی این زمینه اینقدر بالاست تا الان پستی از شما ندیدم بهتر نیست شما هم برای کمک به دوستان و ادای دین فعالیت هامون بیشتر شه.دوست ندارم چیزی باعث بشه که همچین آموزش هایی از بین بره...

ولی متاسفانه بعضی اصطلاحات و کژتاوی ها در قسمت های پیچیده باعث سخت شده فهم و درک میشه که هضم این کد باعث دلسردی برنامه نویسی میشه.

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

احتمالا غلط املایی...

موفق باشید./

tooraj_azizi_1035
پنج شنبه 15 تیر 1391, 20:31 عصر
متوجه نشدم هدف تاپیک چیست؟

[QUOTE]اگر صرفاً ترجمه متون انگلیسی و ارائه اون به صورت یک فایل متنی در اختیار کاربران هست که فکر نمی کنم مفید باشه ...از نظر شما مفید نیست از نظر دیگران چطور؟


چون حجم MSDN اینقدر زیاد هست که اگر سالها هم وقت صرفش کنید نمیتونید یک ترجمه کامل ازش تهیه کنید، بر فرض هم که تهیه کنید؛ به نظر شما ارائه این مطالب در قالب فایل متنی میتونه ایده خوبی باشه؟ قرار نیست کل MSDN رو ترجمه کنم، بله ارائه مطلب در قالب فایل متنی می تونه ایده خوبی باشه.


گذشته از اینها دانش انگلیسی دوستان فکر میکنم به قدری باشه که متوجه بیانات MSDN بشن! من خودم که انگلیسی رو راحتتر از ترجمه فارسی متوجه میشم!دانش انگلیسی دوستان زمانی خوب هست که با برخورد به یک کلمه ای که معنی اش رو نمی دونن به Babylon مراجعه کنند. و در یک متن عادی MSDN شما لااقل به 50 کلمه که معنی اون رو نمی دونید بر می خورید و باید از babylon کمک بگیرید.

چند درصد از برنامه نویس های سایت MSDN رو مطالعه می کنند؟ اونها فقط زمانی که نیاز داشته باشند این کار می کنند!

در کل نظر دیگران رو بخواهید تا ببینم دوست دارند مطالب رو دانلود کنند یا خیر؟

tooraj_azizi_1035
پنج شنبه 15 تیر 1391, 20:36 عصر
من خودم که انگلیسی رو راحتتر از ترجمه فارسی متوجه میشم!
شما که می گید دانش انگلیسی تون خوب هست. خوب این یه متن درباره LINQ موازی. بی زحمت این متن رو ترجمه کنید تا ما بفهمیم LINQ موازی یعنی چی. از خود MSDN انتخاب کردم.
اگر این متن رو طوری ترجمه کردید که همه کاملاً متوجه منظور آن شدند ما دوممان را روی کولمان می گذاریم و از این سایت می رویم!

Merge Options in PLINQ


When a query is executing as parallel, PLINQ partitions the source sequence so that multiple threads can work on different parts concurrently, typically on separate threads. If the results are to be consumed on one thread, for example, in a foreach (For Each in Visual Basic) loop, then the results from every thread must be merged back into one sequence. The kind of merge that PLINQ performs depends on the operators that are present in the query. For example, operators that impose a new order on the results must buffer all elements from all threads. From the perspective of the consuming thread (which is also that of the application user) a fully buffered query might run for a noticeable period of time before it produces its first result. Other operators, by default, are partially buffered; they yield their results in batches. One operator, ForAll<TSource> (http://msdn.microsoft.com/en-us/library/dd383744.aspx) is not buffered by default. It yields all elements from all threads immediately.
By using the WithMergeOptions<TSource> (http://msdn.microsoft.com/en-us/library/dd438099.aspx) method, as shown in the following example, you can provide a hint to PLINQ that indicates what kind of merging to perform.
C#‎‎
VB



var scanLines = from n in nums.AsParallel() .WithMergeOptions(ParallelMergeOptions.NotBuffered ) where n % 2 == 0 select ExpensiveFunc(n);




For the complete example, see How to: Specify Merge Options in PLINQ (http://msdn.microsoft.com/en-us/library/dd547137.aspx).
If the particular query cannot support the requested option, then the option will just be ignored. In most cases, you do not have to specify a merge option for a PLINQ query. However, in some cases you may find by testing and measurement that a query executes best in a non-default mode. A common use of this option is to force a chunk-merging operator to stream its results in order to provide a more responsive user interface.

http://i3.msdn.microsoft.com/Areas/Global/Content/clear.gifParallelMergeOptions


The ParallelMergeOptions enumeration includes the following options that specify, for supported query shapes, how the final output of the query is yielded when the results are consumed on one thread:


Not Buffered
The NotBuffered (http://msdn.microsoft.com/en-us/library/system.linq.parallelmergeoptions.aspx) option causes each processed element to be returned from each thread as soon as it is produced. This behavior is analogous to "streaming" the output. If the AsOrdered() operator is present in the query, NotBuffered preserves the order of the source elements. Although NotBuffered starts yielding results as soon as they're available,, the total time to produce all the results might still be longer than using one of the other merge options.
Auto Buffered
The AutoBuffered (http://msdn.microsoft.com/en-us/library/system.linq.parallelmergeoptions.aspx) option causes the query to collect elements into a buffer and then periodically yield the buffer contents all at once to the consuming thread. This is analogous to yielding the source data in "chunks" instead of using the "streaming" behavior of NotBuffered. AutoBuffered may take longer than NotBuffered to make the first element available on the consuming thread. The size of the buffer and the exact yielding behavior are not configurable and may vary, depending on various factors that relate to the query.
FullyBuffered
The FullyBuffered (http://msdn.microsoft.com/en-us/library/system.linq.parallelmergeoptions.aspx) option causes the output of the whole query to be buffered before any of the elements are yielded. When you use this option, it can take longer before the first element is available on the consuming thread, but the complete results might still be produced faster than by using the other options.






یا این یکی:



Collectible Assemblies for Dynamic Type Generation


Collectible assemblies are dynamic assemblies that can be unloaded without unloading the application domain in which they were created. All managed and unmanaged memory used by a collectible assembly and the types it contains can be reclaimed. Information such as the assembly name is removed from internal tables.
To enable unloading, use the AssemblyBuilderAccess.RunAndCollect (http://msdn.microsoft.com/en-us/library/system.reflection.emit.assemblybuilderaccess) flag when you create a dynamic assembly. The assembly is transient (that is, it cannot be saved) and is subject to limitations described in the Restrictions on Collectible Assemblies (http://msdn.microsoft.com/en-us/library/dd554932#restrictions) section. The common language runtime (CLR) unloads a collectible assembly automatically when you have released all objects associated with the assembly. In all other respects, collectible assemblies are created and used in the same way as other dynamic assemblies.

http://i3.msdn.microsoft.com/Areas/Global/Content/clear.gifLifetime of Collectible Assemblies


The lifetime of a collectible dynamic assembly is controlled by the existence of references to the types it contains, and the objects that are created from those types. The common language runtime does not unload an assembly as long as one or more of the following exist (T is any type that is defined in the assembly):


An instance of T.
An instance of an array of T, or an instance of a generic collection that has T as one of its type arguments, even if that array or collection is empty.
An instance of Type (http://msdn.microsoft.com/en-us/library/system.type) or TypeBuilder (http://msdn.microsoft.com/en-us/library/system.reflection.emit.typebuilder) that represents T.

http://i3.msdn.microsoft.com/dynimg/IC101471.gif Note You must release all objects that represent parts of the assembly. The ModuleBuilder (http://msdn.microsoft.com/en-us/library/system.reflection.emit.modulebuilder) that defined T keeps a reference to the TypeBuilder (http://msdn.microsoft.com/en-us/library/system.reflection.emit.typebuilder), and the AssemblyBuilder (http://msdn.microsoft.com/en-us/library/system.reflection.emit.assemblybuilder) object keeps a reference to the ModuleBuilder (http://msdn.microsoft.com/en-us/library/system.reflection.emit.modulebuilder), so references to these objects must be released. Even the existence of a LocalBuilder (http://msdn.microsoft.com/en-us/library/system.reflection.emit.localbuilder) or an ILGenerator (http://msdn.microsoft.com/en-us/library/system.reflection.emit.ilgenerator) used in the construction of T prevents unloading.



A static reference to T by another dynamically defined type T1 that is still reachable by executing code. For example, T1 might derive from T, or T might be the type of a parameter in a method of T1.
A ByRef to a static field that belongs to T.
A RuntimeTypeHandle (http://msdn.microsoft.com/en-us/library/system.runtimetypehandle), RuntimeFieldHandle (http://msdn.microsoft.com/en-us/library/system.runtimefieldhandle), or RuntimeMethodHandle (http://msdn.microsoft.com/en-us/library/system.runtimemethodhandle) that refers to T or to a component of T.
An instance of any reflection object that could be used indirectly or directly to access the Type (http://msdn.microsoft.com/en-us/library/system.type) object that represents T. For example, the Type (http://msdn.microsoft.com/en-us/library/system.type) object for T can be obtained from an array type whose element type is T, or from a generic type that has T as a type argument.
A method M on the call stack of any thread, where M is a method of T or a module-level method that is defined in the assembly.
A delegate to a static method that is defined in a module of the assembly.

If only one item from this list exists for only one type or one method in the assembly, the runtime cannot unload the assembly.
http://i3.msdn.microsoft.com/dynimg/IC101471.gif Note The runtime does not actually unload the assembly until finalizers have run for all items in the list.

For purposes of tracking lifetime, a constructed generic type such as List<int> (List(Of Integer) in Visual Basic) that is created and used in the generation of a collectible assembly is considered to have been defined either in the assembly that contains the generic type definition or in an assembly that contains the definition of one of its type arguments. The exact assembly that is used is an implementation detail and subject to change.


http://i3.msdn.microsoft.com/Areas/Global/Content/clear.gifRestrictions on Collectible Assemblies


The following restrictions apply to collectible assemblies:


Static references Types in an ordinary dynamic assembly cannot have static references to types that are defined in a collectible assembly. For example, if you define an ordinary type that inherits a type in a collectible assembly, a NotSupportedException (http://msdn.microsoft.com/en-us/library/system.notsupportedexception) exception is thrown. A type in a collectible assembly can have static references to a type in another collectible assembly, but this extends the lifetime of the referenced assembly to the lifetime of the referencing assembly.
COM interop No COM interfaces can be defined within a collectible assembly, and no instances of types within a collectible assembly can be converted into COM objects. A type in a collectible assembly cannot serve as a COM callable wrapper (CCW) or runtime callable wrapper (RCW). However, types in collectible assemblies can use objects that implement COM interfaces.
Platform invoke Methods that have the DllImportAttribute (http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute) attribute will not compile when they are declared within a collectible assembly. The OpCodes.Calli (http://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.calli) instruction cannot be used in the implementation of a type in a collectible assembly, and such types cannot be marshaled to unmanaged code. However, you can call into native code by using an entry point that is declared in a non-collectible assembly.
Marshaling Objects that are defined in collectible assemblies (in particular, delegates) cannot be marshaled. This is a restriction on all transient emitted types.
Assembly loading Reflection emit is the only mechanism that is supported for loading collectible assemblies. Assemblies that are loaded by any other form of assembly loading cannot be unloaded.
Context-bound objects Context-static variables are not supported. Types in a collectible assembly cannot extend ContextBoundObject (http://msdn.microsoft.com/en-us/library/system.contextboundobject). However, code in collectible assemblies can use context-bound objects that are defined elsewhere.
Thread-static data Thread-static variables are not supported.

tooraj_azizi_1035
پنج شنبه 15 تیر 1391, 20:59 عصر
فقط طوری ترجمه کنید که برای کسی سوالی باقی نمونه!!!!!!!!!!!!!!!!!!!!!

salehbagheri
پنج شنبه 15 تیر 1391, 21:09 عصر
@ tooraj: اکثرپاسخ هاتون هیچ ربطی به نقل قولی که کرده بودید نداشت، بخاطر همین متوجه نشدم.


در کل نظر دیگران رو بخواهید تا ببینم دوست دارند مطالب رو دانلود کنند یا خیر؟ نظر دیگران برای من اهمیتی نداره، شما عنوان کردید که بعد از خواندن نظربدید، منم نظر خودمو گفتم!

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

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


شما که می گید دانش انگلیسی تون خوب هست. خوب این یه متن درباره LINQ موازی. بی زحمت این متن رو ترجمه کنید تا ما بفهمیم LINQ موازی یعنی چی. از خود MSDN انتخاب کردم.خب به نظر شما اگه من این متن رو ترجمه کنم (با این که بسیار ساده و روان نوشته شده)، متوجه میشید؟ یا کاربران متوجهش میشن؟

طبیعتاً اکه کسی در رابطه با برنامه نویسی موازی یا Parallel، لینک Linq و خیلی از موارد دیگه ای که در متن بهشون اشاره شده چیزی ندونه، ترجمه متن رو هم متوجه نمیشه! (که فکر میکنم هم برای من و هم برای شما صادقه)
این متن مخاطبان خاص و محدودی داره و ترجمه اون در این تالار یعنی اتلاف وقت! و اون مخاطبان خاص مطمئناً انگلیسی بلدند!

مشکلات اکثر برنامه نویس ها اینه که هیچ وقت سعی نمی کنند آموزش خودشون رو از صفر شروع کنند، فکر میکنند که تئوریها رو بلدند و همیشه از نیمه های راه آغاز کنند و همین موضوع دلیلی هست که متوجه تئوریهای برنامه نویسی نمیشن و به مشکل میخورن! و آموزش پراکنده این تئوری ها به این شکل، باعث سردرگمی بیشتر برنامه نویس میشه!

اگه قصد آموزش دادن موضوعی رو به شکل تئوری دارید اون رو باید کامل و جامع آموزش بدید که هیچ جای سوالی نمونه! و این لازمه نوشتن یک کتابه!

شما در این فایل متنی ضمیمه شده، نگاهی به Extension Method ها انداخته بودید، اما آیا یک کاربر ساده با توضیحی که ارائه کردید متوجه اون میشه؟

در کل ارائه اینگونه ترجمه ها (در اینجا ترجمه بخشی از یک دنیای مجازی یا به طور کلی ترجمه ناقص) از یک نگاه کلی مفید نیست!

به نظر من وقتتون رو صرف ترجمه مقالات برنامه نویسی بکنید خیلی مفید تره! (یا اینکه پیشنهاد اول رو عملی کنید ...)

پی نوشت: لطفاً تاپیک رو به محل مشاجره شخصی تبدیل نکنید، بنده فقط نظرم رو گفتم!

samadblaj
پنج شنبه 15 تیر 1391, 21:33 عصر
به نظر من وقتتون رو صرف ترجمه مقالات برنامه نویسی بکنید خیلی مفید تره!

منم با این موضوع خیلی موافقم.

tooraj_azizi_1035
جمعه 16 تیر 1391, 12:45 عصر
خب به نظر شما اگه من این متن رو ترجمه کنم (با این که بسیار ساده و روان نوشته شده)، متوجه میشید؟ یا کاربران متوجهش میشن؟شما ترجمه متن رو در سایت گذاشتید تا ببینیم متوجه می شیم یا نه؟
من یک متن رو برای این که بدونیم به قول شما حرفه ای ها از پس اون بر میان یا نه تو سایت گذاشتم اما جوابی نگرفتم
خود من در اون متن خیلی سوال داشتم می خواستم با این کار همه تمرکز کنن رو اون جملاتی که درکش برای اکثریت حتی حرفه ای ها سخته که متاسفانه به بن بست خوردم!


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



پی نوشت: لطفاً تاپیک رو به محل مشاجره شخصی تبدیل نکنید، بنده فقط نظرم رو گفتم! من چنین کاری نکردم!


نتیجه نهایی این گفتگو:

بنا بر اظهارات مدیر این سایت، ترجمه متون MSDN برای کاربران این سایت هدر دادن وقت هست! پس ما کلاً بی خیال شدیم.

خداحافظ.

tooraj_azizi_1035
سه شنبه 27 فروردین 1392, 21:39 عصر
در ادامه یکبار دیگه باید بگم به هیچوجه قصد جر و بحث ندارم بلکه من از یک واقعیت صحبت می کنم!
این واقعیت این هست که هر کس به اندازه ای که اطلاعات داره قدرتمنده.
من با مطالعه متوجه شدم که برای درک برخی متون واقعاً چاره ای جز دیدار به خود نویسنده نیست حالا جناب salehbagheri می فرمایند که تسلط بر MSDN دارند بنده تصورم این هست که دیگر کاربران به اندازه ایشون توان ادراک متون رو ندارند.
ضمناً بنده به عنوان یک دانشجو این تاپیک رو زدم نه استاد!:لبخندساده:

csharpdoost
سه شنبه 27 فروردین 1392, 21:44 عصر
جناب samadblaj
به این لینک بروید:
barnamenevis.org/showthread.php?349300-آموزش-Language-Integrated-Query-در-C (http://barnamenevis.org/barnamenevis.org/showthread.php?349300-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Language-Integrated-Query-%D8%AF%D8%B1-C)
دوست عزیز لینک خرابه

plus
سه شنبه 27 فروردین 1392, 22:11 عصر
شما که می گید دانش انگلیسی تون خوب هست. خوب این یه متن درباره LINQ موازی. بی زحمت این متن رو ترجمه کنید تا ما بفهمیم LINQ موازی یعنی چی. از خود MSDN انتخاب کردم.
اگر این متن رو طوری ترجمه کردید که همه کاملاً متوجه منظور آن شدند ما دوممان را روی کولمان می گذاریم و از این سایت می رویم!

دوست عزیز ایشون گفتن "متوجه میشن". متوجه شدن با ترجمه کردن خیلی متفاوت هست.اصلا اصل موضوع این هست که شما هر طوری این متن رو ترجمه کنید، خیلی ضعیف در میاد، مگر اینکه شما مفهوم کلمات انگلیسی اون رو "متوجه" شده باشید، و با استفاده از اون مفاهیم کل متن رو متوجه بشید.یعنی واقعا نمیدونم این متن رو چطوری شما ترجمه میکنید به فارسی!

veniz2008
سه شنبه 27 فروردین 1392, 23:41 عصر
سلام.
من مخالف این دیدگاه هستم که نباید متون خارجی رو به فارسی برگردوند ولی هر چیزی یه اصولی داره.
از زمان های خیلی قدیم مرسوم بوده که کتب علمی زبان های مختلف، به زبان مقصد ترجمه میشدن. مثلا کتب یونانی به فارسی و بالعکس انجام میشده.
ولی چیزی که وجود داره و بایستی بهش توجه بشه نوع کتاب هاست. بعضی کتاب ها کاملا مفهومی هست و به هیچ عنوان نمیشه ترجمه تحت اللفظی (کلمه به کلمه ) از اونها رو انجام داد. ما باید چنین مطالبی رو بخونیم و بفهمیم و بعد این فهم رو به زبان خودمون که قابل درک باشه برگردونیم (همون "ترجمه و تالیف"). در مورد مباحث برنامه نویسی و دنیای کامپیوتر هم وضع به همین منوال هست. مطالب کاملا مفهومی هستن و ترجمه تحت اللفظی به درد کسی نخواهد خورد.
احتمالا همه دوستان درس طراحی الگوریتم ها رو خوندن. اینکه این درس چقدر گسترده است رو کاری نداریم ولی درمقیاس کوچیک اگه بخوایم یه کتاب خوب فارسی پیدا کنیم بی شک کتاب "طراحی الگوریتم مقسمی" هست. دلیلش فقط یه چیزه : مترجم متن چندین کتاب رو خونده و درک کرده و با قدرت بیان بالایی که داره همون مطلب رو به کمک کلمات و مثال های متعدد به زبان شیرین و روان توضیح داده. من خودم خیلی از مواقع فراموش میکردم که این کتاب "ترجمه و تالیف" هست و فکر میکردم تماما تالیفی هست. به این میگن یه ترجمه و یک تالیف موفق.
من متاسفانه تا الان نرسیدم که ترجمه دوستمون رو از msdn بخونم ولی امیدوارم که در کارشون موفق باشن.
و در پایان یه جمله : وقتی کسی برای نظر دیگران اهمیت قائل نیست، چه دلیلی داره که من یا شما هم برای نظر اون شخص اهمیتی قائل باشیم؟
به راهی که فکر میکنید درست هست ادامه بدید.
موفق باشی دوست عزیز.