به سایت ما خوش آمدید . امیدوارم لحظات خوشی را درسایت ما سپری نمایید .

خوش آمدید

هر گونه نظر و پیشنهاد و انتقادی داشتید، در قسمت نظرات اعلام کنید.

وقتي عادت كنيد شماره تلفن همه دوستان و آشنايان خود حتي شماره تلفن همراه پدر و مادرتان را در گوشي تلفن همراهتان ذخيره كنيد، ممكن است وقتي به گوشي‌تان دسترسي نداريد حتي نتوانيد شماره پدر يا مادرتان را نيز به‌خاطر بياوريد! به همين‌دليل، از دست دادن شماره تلفن‌هاي ذخيره‌شده در تلفن همراه از اهميت بسيار بالايي برخوردار است و بسياري از كاربراني كه تلفن همراه خود را تعويض كرده و تلفن جديدي خريداري مي‌كنند، اولين كاري كه انجام مي‌دهند انتقال فهرست مخاطبان خود از تلفن قديمي به تلفن جديد است.

 انجام اين كار در تلفن‌هاي اندرويد بسيار ساده است، چرا كه اين تلفن‌ها قابليت اتصال به كاربري شما در جي‌ميل را دارد و همين ارتباط به شما كمك مي‌كند تا بسادگي اسامي مخاطبان خود را از يك گوشي به گوشي ديگر منتقل كنيد. انجام اين كار نيز به روش زير است:

1ـ پيش از هر چيز ذكر اين نكته ضروري است كه براي استفاده از اين قابليت بايد يك كاربري در سرويس جي‌ميل يا سايت گوگل براي خود ايجاد كرده باشيد و با ورود به بخش Settings، انتخاب گزينه Accounts و در نهايت انتخاب گزينه Add Account، آن را به تلفن همراه خود اضافه كنيد.

از سيمكارت به گوگل

2ـ براي انتقال فهرست مخاطبان خود از سيمكارت به تلفن همراه و سپس به كاربري خود در گوگل ‌بايد ابتدا در تلفن همراه اندرويدي خود نرم‌افزار Contacts را اجرا كنيد.

3ـ به تب Contacts برويد و دكمه منو را فشار دهيد.

4ـ گزينه Import‌‌/‌‌Export را انتخاب كنيد و سپس Import from SIM Card را فشار دهيد.

5ـ در اين مرحله از شما در خصوص مقصد انتقال پرسيده مي‌شود كه ‌بايد براي پاسخ به آن كاربري خود در سرويس گوگل‌‌ (‌‌جي‌ميل) ـ كه قبلا ايجاد كرده بوديد ـ را انتخاب كنيد. پس از اتمام اين كار، سيستم‌عامل اندرويد، سيمكارت شما را اسكن كرده و فهرستي از مخاطبان موجود در آن را به شما نمايش مي‌دهد تا با انتخاب همه يا برخي از مخاطبان موردنظر خود نسبت به انتقال آنها اقدام كنيد.

6ـ در پايان مخاطبان موردنظر شما از سيمكارت فراخواني شده و به كاربري شما در گوگل منتقل مي‌شوند.

از گوگل به تلفن جديد

1ـ پس از انتقال موفقيت‌آميز فهرست مخاطبان از سيمكارت به كاربري موردنظر در گوگل‌‌ (‌جي‌ميل)، براي منتقل‌كردن آنها روي ديگر تلفن‌هاي اندرويد، كافي است كاربري موجود در گوگل‌‌ (‌جي‌ميل) را در بخش كاربران تلفن جديد كه در مرحله اول نيز به آن اشاره شد، وارد كنيد. با انجام اين كار به ‌محض اتصال به اين كاربر، اسامي مخاطبان موجود در آن باگوشي تلفن شما هماهنگ و مخاطبان جديد به تلفن همراه شما اضافه مي‌شوند.

توجه: اگر پس از انتقال ليست تماس‌ها قادر به مشاهده مخاطبان خود نبوديد، ‌بايد تغييراتي را در بخش نمايش مخاطب نرم‌افزار Contacts اعمال كنيد. براي اعمال اين تغييرات ابتدا به نرم‌افزار Contacts مراجعه كنيد سپس دكمه منو را فشار دهيد و در نهايت Display Options را انتخاب كنيد. حالا كاربري خود در گوگل‌‌ (‌‌جي‌ميل) را انتخاب و مشخص كنيد كه كدام دسته‌بندي‌ها در فهرست مخاطبان تلفن همراه شما نمايش داده شود.

ادامه مطلب
دوشنبه 7 شهریور 1390  - 12:02 PM

واردكردن فرامين سيستم‌عامل مك براي انجام كارهاي خاص در ترمينال، يك كار رايج است؛ اما برخي كاربران بيش از بقيه با ترمينال سر و كار دارند! اگر شما هم جزو اين دسته هستيد و مي‌خواهيد ترمينال را همه‌جا كنار دست خود داشته و نياز نداشته باشيد تا مدام مسير پوشه مورد نظرتان را در ترمينال تايپ كنيد، مي‌توانيد با فعال كردن 2 سرويس New Terminal at Folder و New Terminal Tab at Folder، از هر پوشه‌اي ترمينال را اجرا كرده و به‌طور خودكار به همان مسير در ترمينال نيز وارد شويد. براي فعالسازي اين دو سرويس ‌بايد به روش زير عمل كنيد:

1ـ روي آيكون سيب (Apple) از منو كليك كرده و گزينه System Preferences را انتخاب كنيد.

2ـ در بخش Hardware، گزينه‌ Keyboard را انتخاب كنيد.

توجه: چنانچه System Preferences را قبلا سفارشي كرده‌ايد و گزينه Keyboard پنهان شده است، مي‌بايد ابتدا از منو با كليك روي گزينه View، Keyboard را از فهرست انتخاب كنيد تا نمايش كيبورد در بخش تنظيمات فعال شود.

3ـ تب Keyboard Shortcuts را انتخاب كنيد.

4ـ از ستون سمت چپ گزينه‌ Services را انتخاب كنيد، پس از آن در ستون سمت راست در بخش Files and Folders، علامت چك‌مارك كنار 2 گزينه New Terminal at Folder و New Terminal Tab at Folder را به‌حالت فعال درآوريد. از اين پس هر زمان به ترمينال نياز داشتيد مي‌توانيد روي پوشه مورد نظرتان كليك راست كنيد و از منوي Services يكي از گزينه‌هاي موجود براي دسترسي به ترمينال را برگزينيد.

ادامه مطلب
دوشنبه 7 شهریور 1390  - 12:01 PM
شركت Nintendo اولين شكست را در نبرد اخير خود بر سر كنسول‌هاي دستي بازي با دستگاه 3DS تجربه كرد و همه چيز آن طوري كه آنها در بازار دستگاه‌هاي بازي قابل حمل پيش‌بيني كرده بودند، پيش نرفت. فروش اين كنسول بازي بسيار كمتر از انتظار نينتندو بود و شركت سازنده را مجبور كرد انتشار بازي‌هاي مخصوص اين دستگاه را تا زمان عرضه بازي‌هاي بيشتر ، عقب بيندازد و قيمت آن را به خاطر جلب رضايت مشتري‌ها پايين بياورد. اين روزها نينتندو علاوه بر رقابت با مدل‌هاي توليد شده پيشين اين شركت و كنسول بازي جديد ويتاي سوني (Sony Vita) دچار چالش ديگري نيز شده و آن، رقابت سخت در حوزه گوشي همراه هوشمند (smart Phone) است.

عامل به دردسر افتادن نينتندو 3DS

ما بايد رقابت شديد سوني با نينتندو را از 2 ديدگاه بررسي كنيم و 2 حالت را براي آن در نظر بگيريم:

اين كه سوني بر خلاف نينتندو در اين ميدان رقابت با موفقيت بزرگي مواجه مي‌شود يا اين كه سوني نيز با كمبود بودجه كاربران و دوستداران كنسول‌هاي بازي، درست مشابه آنچه براي كنسول 3DS رخ داد رو به رو مي‌شود كه مصرف‌كنندگان را به طرف عناوين ارزان‌تر بازي‌ها و روش بازي كم‌هزينه‌تر گوشي‌هاي موبايل هوشمند جذب مي‌كند. پيشتر دستگاه‌هاي اختصاصي بازي قابل حمل مجبور بودند تنها با دستگاه‌هاي مشابه خود به رقابت بپردازند؛ اما اكنون مجبورند با دشمنان خارجي نيز دست و پنجه نرم كنند. از ظواهر امر و مشخصات اعلام شده براي سوني ويتا چنين برمي‌آيد كه اين كنسول دستي بازي بايد بسيار گران‌تر از 3DS باشد. اما حقيقت امر اين است كه براي بازيخورها و علاقه‌مندان حتي در سفر يك گوشي تلفن همراه نيز كافي است. هنگامي كه ما از بازي‌هاي غني‌تر و باكيفيت صحبت مي‌كنيم، مسلم است كه دستگاه‌هاي مخصوص بازي بهترين هستند، اما وقتي يك گوشي همراه هوشمند و وقت براي بازي داريد، فقط كافي است بازي مورد نظرتان آسان باشد و روي صفحه نمايش موبايل خوب به نظر بيايد. بازي‌هاي زيادي را مي‌توان در عرض چند دقيقه از اينترنت دانلود و در گوشي نصب كرد. اين در حالي است كه براي 3DS و ويتا شما مجبوريد سخت‌افزار و بازي‌هاي گران‌قيمتي را بخريد. همچنين ايجاد و توسعه پلتفرم‌هاي بازي براي موبايل بسيار كم‌هزينه است و نيازي نيست كه برنامه‌نويس‌ها و سازندگان اين بازي‌ها نگران طراحي بسته‌بندي، مشكلات فيزيكي عرضه در فروشگاه‌ها يا توليد كارتريج براي آنها باشند. به همين دليل است كه سوني براي ايجاد يك‌پلتفرم ديجيتال جهت بازي‌هاي مخصوص دستگاه ويتاي بشدت وابسته به دانلود، سخت در تلاش است، اما نينتندو هنوز بر اين عقيده پا فشاري مي‌كند كه در آينده نيز جايي براي كارت‌هاي بازي فيزيكي گران‌قيمت وجود دارد. اين در حالي است كه روند تهيه يكي از معدود بازي‌هاي موجود3DS از طريق سيستم e-shop اين شركت براي مصرف‌كننده فرآيندي كند و خسته‌كننده است.

جمع‌بندي

در آينده تلفن‌هاي همراه هوشمند طلايه‌دار حركت پيشرو دستگاه‌هاي بازي قابل حمل است و گرايش كاربران به آنها بر جهتگيري سياستگذاري شركت‌هاي توليدكننده صنعت بازي اثرگذار خواهد بود و با آن كه هنوز تعداد زيادي از بازيخورها علاقه‌مند اجراي بازي‌ها روي دستگاه‌هاي بازي قابل حمل خود هستند، از آنها پشتيباني مي‌كنند. تعداد بيشتري از مردم نيز تلفن‌هاي همراه هوشمند خود را براي بازي به كار مي‌برند و اين وسايل توسط آنها به همه جا برده مي‌شود كه بازي‌هاي بي‌نظيري با كمترين هزينه براي آنها در دسترس هستند. اين موضوع چالشي بزرگ براي كنسول‌هاي بازي 3DS ويتا خواهد بود و بايد ديد كه آيا شركت‌هاي توليد كننده آنها مي‌توانند مصرف‌كنندگان را قانع كنند كه صدها دلار را براي اين سخت‌افزارهاي جديد صرف كنند و يك شيء اضافي را همراه كارتريج‌هاي بازي آن ـ كه به مراتب گران‌تر از لوازم داراي سيستم عامل iOS و آندرويد هستند ـ در جيب خود حمل كنند يا نه؟ اما آنچه مسلم است آينده متعلق به موبايل‌هاي هوشمند است و گذشت زمان آنها را به تنها كنسول دستي اصلي و پيشرو بازار بدل خواهدكرد.


ادامه مطلب
دوشنبه 7 شهریور 1390  - 11:58 AM
مدتي است كه از معرفي نسل سوم استاندارد USB با مشخصه سرعت انتقال داده زياد 5 گيگابايت بر ثانيه مي‌گذرد. اين سخت‌افزار قدرت برق مسير900busميلي‌آمپري دارد و با اين‌كه ولتاژ 5 ولتي آن با سقف قدرت حداكثر تا 5‌‌/‌‌4 وات تقريبا 2 برابر قدرت خروجي برق USB 2.0 نيرو دارد، براي راه‌اندازي، وسايل جانبي رايانه‌اي نسبتا پيچيده كافي است.

با اين حال اين استاندارد، هنوز جهت تامين برق ديسك‌هاي سخت خارجي USB با مشكل مواجه است. اخيرا مشخصات اين استاندارد انتقال داده با ارائه ولتاژهاي متغير برق تا حد 100 وات كشش جريان از طريق USB 3.0 ارتقا يافته است. اين استاندارد جديد مي‌تواند تطبيق‌پذيري وسايل مجهز به درگاه USB را كه قادرند برق مصرفي خود را از طريق اين درگاه اتصال، تامين و باتري‌هاي خود را شارژ كنند به صورت شگفت‌انگيزي افزايش دهد.

مزايا و مشخصات استاندارد جديد

اين ارتقاي انجام شده در مورد USB 3.0 كه 20 برابر قدرت ورودي و خروجي برق استاندارد USB قديمي است به كاربران اجازه مي‌دهد بسياري از وسايل جانبي روي ميز كار خود را بدون نياز به پريز برق و آداپتور مورد استفاده قرار دهند. گروه مروج USB 3.0 اعلام كرده است كه اين استاندارد، شارژ لوازمي مانند صفحه نمايش‌ها، چراغ‌هاي مطالعه روميزي و نوت بوك‌ها را با حفظ پشتيباني از لوازم USB 2.0، از طريق درگاه‌هاي USB 3.0 ممكن مي‌سازد. براساس اين اطلاعات انتشار يافته، مشخصات در دسترس‌گذاري برق يو اس بي به گونه‌اي طراحي شده است تا با مشخصات فعلي نگارش 2‌‌/‌‌1 شارژ باتري از طريق يو اس بي USB Battery Charging مطابقت داشته باشد. با پايه‌گذاري سريع يك صنعت براساس به كار بردن قدرت بالقوه برق مسير (باس) يو اس بي‌جهت شارژ كردن پهنه گسترده‌اي از لوازم جانبي قابل حمل (موبايل)، مشخصات جديد قابليت‌هاي در دسترس‌گذاري برق USB را به ماوراي مرزهاي شارژ ساده باتري گسترش داده است. براي مثال شارژ باتري يك نوت بوك همزمان با استفاده فعال از درگاه اتصال داده USB، هميشه در دسترس و ممكن است. يك لپ‌تاپ مي‌تواند عملا و منحصرا جهت منبع تامين برق خود بر درگاه اتصال USB تكيه كند. مشخصات كليدي استاندارد جديد USB 3.0 به شرح زير است:

ـ قابل مطابقت با اتصالات و كابل‌هاي موجود

ـ ولتاژ برق و ارزش‌هاي جاري مورد استفاده برق USB توافقي معين و فعال شده است

ـ ولتاژ برق بالاتر

ـ منبع برق قابل كليد زدن در جهت مخالف را بدون نياز به تعويض جهت كابل در اختيار مي‌گذارد

ـ با استاندارد شارژ يو اس بي2‌‌/‌‌1 هماهنگي دارد و با هر دو استاندارد به صورتي مشابه خوب كار مي‌كند

ـ پشتيباني از USB 2.0 و USB 3.0.

ـ جمع‌بندي

سرانجام آخرين حالت مفيد استاندارد USB 3.0 نيز با تلاش محققان و متخصصان فعال شد. به لطف اين قابليت، يك سيستم هوشمند يا به عبارتي ديگر يك درگاه اتصال USB مي‌تواند به صورت 2 گانه هم به عنوان يك منبع دريافت برق عمل كند و هم به درگاه USB يك لپ‌تاپ اجازه دهد نقش يك درگاه شارژ باتري را ايفا كند. افزايش عظيم خروجي برق آن از حداكثر 5‌‌/‌‌4 وات به 100 وات پيشرفتي قابل ملاحظه است. گروه مروج USB 3.0 اعلام كرده است كه مشخصات فراهم‌سازي برق USB تا آخر امسال بدقت بررسي و ويژگي‌هاي نهايي آن اوايل سال 2012 منتشر مي‌شود، اما هيچ تاريخ دقيقي براي كاربرد آن در صنعت توليدات الكترونيك و رايانه‌اي تعيين نشده است.


ادامه مطلب
دوشنبه 7 شهریور 1390  - 11:53 AM

همیشه تعیین اعتبار داده‌ها یکی از مسائل مهم در توسعه نرم‌افزار است، این که بررسی شود آیا داده ورودی صحیح است یا خیر.

این قوانین بر اساس موارد خواسته شده از سوی کارفرما باید پیاده‌سازی شود.

بیایید یک مروری به ASP .NET MVC داشته باشیم تا با این موضوع بیشتر آشنا شويم. شما یک فرم ثبت‌نام دارید و قرار است این فرم، اطلاعاتی را به یک Action ارسال کند و بعد از تعیین اعتبار، روی داده‌ها عملیات انجام دهد.

کدزیر را در نظر بگیرید:

public ActionResult Create(Customer customer) {

if (ModelState .IsValid) {

db .Customers .Add(customer);

db .SaveChanges();return RedirectToAction(«Index»); }

return View(customer);}

این کد ابتدا داده‌ها را می‌گیرد و پس از اعتبارسنجی، اگر درست بود آنها را ذخیره می‌کند. اما این در حالت پیشفرض است. اگر شما داده‌ها را اشتباه بزنید؛ مثلا قرار است نام مشتری ۲۰ کاراکتر باشد شما ۳۰ کاراکتر بزنید ، پراپرتی ModelState .IsValid نتیجه درست را برمی‌گرداند و در نهایت دیتابیس به شما پیغام خطا می‌دهد. البته مثالی که زدیم، مثال راحتی است که می‌شود با یک if آن را به صورت زیر مدیریت کرد:

if (customer .Name .Length »20){

ModelState .AddModelError(«Name», «The name must be greater than 20 characters»);

return View(customer);}

خب پس براحتی مشکل حل می‌شود! اما ما قصد داریم راه ساده‌تری را برای حل این مشکل بیان کنیم و دیگر شما درگیر این if ها نشوید.

یک ویژگی در ASP .Net MVC 2 معرفی شد که شما با استفاده از فضای نام System.ComponentModel .DataAnnotations می‌توانید براحتی داده‌های خود را اعتبارسنجی کنید.

همان‌طور که در مقاله‌های پیش گفته شد یک بخش داده‌ای Model نام دارد، شما با اضافه کردن یک‌سری صفت (Attribute) به کلاس مدل خود، می‌توانید این اعتبارسنجی‌ را انجام دهید.

چند نمونه از این اعتبارسنجی‌ها را مورد بررسی قرار می‌دهیم.

Required : مشخص می‌کند این ویژگی
Not NULL است، یعنی باید حتما مقدار داشته باشد و نمی‌تواند مقدار نگیرد.

StringLength : طول یک رشته را مشخص می‌کند و اگر بیشتر از آن بود ، پیغام خطا می‌دهد. (مثل مثال بالا).

Range : محدوده‌ای برای مقدار یک ویژگی در نظر می‌گیرد، نمی‌گذارد مقدار آن خارج از آن بازه باشد.

RegularExpression : مقدار یک فیلد را با یک عبارت با قاعده بررسی می‌کند، اگر با هم یکسان بودند جواب درست برمی‌گرداند.

Key : مشخص می‌کند مقدار این ویژگی باید یکتا باشد.

حالا کلاس مدل زیر را در نظر بگیرید:

public class Customer { Key]

[Required] public int CustomerId { get; set; } Required]

StringLength(20)]

public string Name { get; set; }}

حالا آن if را که در بالا اضافه کردیم پاک می‌کنیم، این بار خطای زیر را به ما نمایش می‌دهد:

The field Name must be a string with a maximum length of 20 .

خب، اما ما نمی‌خواهیم این خطا را بدهد، این صفات که در بالا به آن اشاره شد این امکان را به ما می‌دهد که پیغام را خودمان تنظیم کنیم. به کد زیر دقت کنید:

[StringLength(20,ErrorMessage = «مقدار نام باید حداکثر ۲۰ کاراکترباشد»)]

public string Name { get; set; }

پیغام خطا به صورت زیر شد

مقدار نام باید حداکثر ۲۰ کاراکتر باشد

اما باز آن چیزی که مد نظر ماست حاصل نشده است. فرض کنید سایت شما چند زبانه‌ است، در این صورت این پیغام فارسی منطقی به نظر نمی‌رسد یا این که بعدا بخواهید پیغام‌های خطای خود را عوض کنید، در آن صورت باز هم کار سختی در پیش دارید، به عبارتی یک برنامه بزرگ با پیغام‌های خطای زیادی که باید همگی اصلاح شوند. در این شرایط استفاده از Resource‌ ها می‌تواند کمک بزرگی به شما کند.

با استفاده از Resource‌ها علاوه بر این که می‌توانید بر پیغام‌های خود مدیریت ساده‌تری داشته باشید، در صورت چند زبانه بودن سایت نیز با مشکل مواجه نمی‌شوید.

اما چگونه پیغام‌های خطای خود را در یک فایل Resource قرار دهیم؟

جواب ساده است، ابتدا برای این که ساختار پروژه و نظمی‌ که دارد از بین نرود، یک پوشه با نام Resources ساخته، سپس روی آن راست کلیک کنید و گزینه Add new item را انتخاب کنید، از پنجره باز شده گزینه Resources file را انتخاب کنید. در پنجره باز شما می‌توانید یک کلید وارد کنید که مشخص کننده نام پیغام است و مقدار آن، به طور مثال

Name : CustomerName

نام حداکثر ۲۰ کاراکتر می‌تواند باشد. :Value

بعد از ذخیره‌کردن تغییرات، روی فایلی که ساختید راست کلیک کرده و Properties را انتخاب کنید. در پنجره Properties مقدار Custom Tool را برابر PublicResXFileCodeGenerator قرار دهید و بعد از ذخیره‌کردن تغییرات به کلاس Customer‌ که یک مدل است بروید و ویژگی Name را به صورت زیر بازنویسی کنید.

Required] StringLength(20,

ErrorMessageResourceType=typeof(ErrorMessage), ErrorMessageResourceName=»CustomerName»)]

public string Name { get; set; }

از این به بعد وقتی مقدار Name کوچک‌تر بود، برای نمایش پیغام خطا به سراغ فایل Resource که ساختید رجوع می‌کند و مقدار CustomerName را به عنوان پیغام خطا نمایش می‌دهد.

در شماره بعدی، این مبحث را بیشتر باز خواهیم کرد و نحوه تعریف Custom Validator‌ ها (اعتبارسنجی‌های سفارشی) را بررسی می‌کنیم.

اميربهاءالدين سبط‌الشيخ

ادامه مطلب
دوشنبه 7 شهریور 1390  - 11:51 AM

صفحات سایت

تعداد صفحات : 13

جستجو

آمار سایت

کل بازدید : 5823132
تعداد کل پست ها : 30564
تعداد کل نظرات : 1029
تاریخ ایجاد بلاگ : پنج شنبه 19 شهریور 1388 
آخرین بروز رسانی : دوشنبه 19 آذر 1397 

نویسندگان

ابوالفضل اقایی