Skip to Content

بلاگ

رفع مشکل تبدیل حروف فارسی به علامت سوال (؟)

رفع مشکل تبدیل حروف فارسی به علامت سوال (؟)

امروز متوجه شدم مدتی ست که بعضی از متن های فارسی وبلاگ به شکل علامت سوال (؟؟؟…) نشان داده می شوند. این متن ها آنهایی نبودند که از دیتابیس خوانده می شدند، بلکه آنهایی بودند که مستقیما در فایل های php نوشته شده بودند. نمایش آنها تا چند روز پیش درست بود و نمیدانم چه اتفاقی افتاد که این خرابی پیش آمد، اما بهرحال به دنبال راه حل گشتم. در اینترنت هرچه جستجو کردم (چه فارسی و چه انگلیسی) همه راه حل ها برای تصحیح encoding جدول های درون دیتابیس و یا connection مربوطه بود. هیچکدام از تصحیح فرمت encoding فایل ها چیزی نگفته بود. خودم با نرم افزار Notepad++ راهی را امتحان کردم و مشکل حل شد. از آنجاییکه ممکن است این مشکل برای هر فارسی زبان دیگری نیز پیش بیاید و راه حلی در اینترنت به سادگی پیدا نکند تصمیم گرفتم آنرا اینجا منتشر کنم.

ابتدا اگر نرم افزار Notepad++ را ندارید، این نرم افزار رایگان را از اینجا دانلود کنید. انصافا نرم افزار ساده و سبک و بسیار بدردبخوری ست! فرقی نمی کند که به چه زبانی برنامه نویسی کنید، احتمالا این نرم افزار به دردتان می خورد.

سپس آن فایل هایی را که کاراکترهای فارسی درونشان به صورت علامت سوال نمایش داده می شوند را با این نرم افزار باز کنید، از منوی بالا وارد Encoding شوید و Encoding in UTF-8 without BOM را انتخاب کنید. فایل را Save کنید و دوباره باز کنید (اگر با سرور کار می کنید آنرا بر فایل روی سرور overwrite کنید). همانطور که می بینید به همین سادگی مشکل برطرف شد!

نکته فنی: نرم افزار Notepad ویندوز هم در پنجره Save As قابلیت انتخاب کدگذاری UTF-8 را دارد، اما حتما از BOM استفاده می کند. در این حالت یک کاراکتر اضافی مزاحم در ابتدای فایل وجود خواهد داشت که هم ممکن است صفحات HTML را بهم بزند و هم ممکن است باعث شود در صفحات PHP هنگام کار با Cookie یا Session با خطای "Headers already sent" مواجه شوید، چرا که این کاراکتر اضافی قبل از هرچیز برای Client ارسال شده است.

اردلان نقش

ادامه مطلب

معرفی React Native: آسان ترین و بهترین راه برنامه نویسی موبایل و وب؟

معرفی React Native: آسان ترین و بهترین راه برنامه نویسی موبایل و وب؟

الان حدود ۱۵ ساله که برنامه نویسی تحت وب می کنم. هرروز سری به Smashing Magazine و TechCrunch و سایت های دیگه از این دست می زنم و راجع به استارتاپ های جدید و کمپانی ها و اشخاص موفق مرتبط با IT تحقیق می کنم. با این مطالعات میشه خیلی زود فهمید که صنعت IT با سرعتی باورنکردنی در حال پیشرفت و تحوله. اگر می خوای در این صنعت بمونی باید هرروز مطالعه داشته باشی و مفاهیم جدید یاد بگیری. شاید یکی از علل علاقه بسیار من به این صنعت همینه. هیچوقت یکنواخت نمیشه!

تا اینجاش رو تقریبا همه می دونن. اما هنر یک فرد موفق در این صنعت چیه؟ خیلیا فکر می کنن «مطالعه و یادگیری بیشتر». اما این جواب اشتباهه. فرصت یادگیری همه محدوده و اگر به زندگی افراد موفق دقت کنید می بینید که اتفاقا وقت آزاد اونها برای مطالعه کمتره! پس چطور موفق میشن و موفق می مونن؟ جواب درست اینه که این افراد به درستی انتخاب می کنن که «راجع به چی» مطالعه کنن. هر چقدر از اهمیت این انتخاب بگم کمه! بعنوان یک برنامه نویس، موفقیت شما خیلی به زبان ها و فریم ورک هایی که برای یادگیری انتخاب می کنید بستگی داره.

یکی از آرزوهای برنامه نویسان اینه که بتونن با یک زبان برنامه نویسی برنامه هایی بنویسن که روی دستگاه های مختلف (کامپیوتر، موبایل، تبلت، تلویزیون هوشمند، ساعت مچی هوشمند، …) قابل اجرا باشه. اینطوری بجای اینکه بخوان وقتشون رو صرف یادگیری ۱۰ زبان کنن که هرکدوم هزارجور تکنیک مختص خودش رو داره، وقتشون صرف یادگیری یک زبان مادر می کنن که در همه دستگاه ها قابل اجراست.

تابحال خیلی تلاش ها در این زمینه شده (فلش و تا حدی جاوا در این زمینه ناموفق بودن). از فریم ورک های محبوبی که امروزه به شما امکان برنامه نویسی وب و موبایل اپلیکیشن رو میدن میشه اینها رو نام برد: PhoneGap، Ionic، Appcelerator Titanium، Xamarin

PhoneGap و Ionic خوبیشون اینه که توشون از زبان های وب (HTML، CSS، JS) استفاده می کنید. پس نیازی به یادگیری زبان جدید ندارید (مثل اینه که وب اپلیکیشنتون رو در مرورگر موبایل باز می کنن، اما Full-screen). بدیشون اما اینه که Performanceشون اصلا خوب نیست. اگر اپلیکیشنی که با اینها می سازید «خیلی ساده» نباشه، از سرعت پایین و پریدن های تصویر و انیمیشن های لَگ دار خیلی راحت میشه فهمید که اپلیکیشن Native نیست. به این اپلیکیشن ها Hybrid میگن، و به اپلیکیشن هایی که با زبان مخصوص سیستم عامل نوشته شده باشن Native میگن. (زبان مخصوص دستگاه های کمپانی اپل Objective-C و Swift هست و زبان مخصوص اندروید جاوا.)

Appcelerator Titanium و Xamarin می تونن Performance بهتری ایجاد کنن. بخاطر اینکه از یک زبان برنامه نویسی خاص (جاوااسکریپت و C#) المان های Native رو خروجی می گیرن. اما هردو پولی هستن. همین باعث میشه که طرفداران و منابعشون کم بشه.

حالا می رسیم به این جوجه کوچکی که موضوع این نوشته ست! این جوجه کوچک React Native نام داره.

بذارید یکم برم به عقب. فیس بوک ابتدای سال ۲۰۱۵ اولین نسخه stable یک کتابخانه جاوااسکریپت open-source رو منتشر کرد برای توسعه رابط کاربری (user interface) وب اپلیکیشن ها. اسم این کتابخانه React (یا ReactJS) بود. این کتابخانه با ساختار بسیار ساده و سرعت بسیار بالایی که داشت خیلی سریع مورد توجه قرار گرفت. طوری که با وجود اینکه مدت کوتاهی از اومدنش گذشته، بجز فیس بوک کمپانی هایی از قبیل یاهو، Airbnb و Netflix هم دارن ازش استفاده می کنن.

react-native

اواخر مارچ ۲۰۱۵ (دو و نیم ماه پیش) یک فریم ورک جدید از فیس بوک منتشر شد. یک فریم ورک که به شما اجازه میده با استفاده از زبان جاوااسکریپت (و تنها جاوااسکریپت!) و کتابخانه React اپلیکیشن موبایل بسازید! فعلا فقط برای iOS ولی بزودی برای iOS و Android. اسم این فریم ورک React Native ه!

همونطور که از اسمش پیداست، مزیت بزرگش اینه که خروجیش تشکیل شده از المان های Native سیستم عامله. در نتیجه Performance خوبی داره. سیستم کاریش خیلی شباهت ها به Appcelerator Titanium داره. من قبلا اون رو کمی یاد گرفتم. اما وقتی مطالعه درباره React و React Native رو شروع کردم مجذوب سادگی و نظمشون شدم! مجانی و open-source بودن و پشتیبانی شدن توسط فیسبوک رو هم که به اینها اضافه کنید می فهمید که چرا در این مدت کوتاه انقدر پرطرفدار شدن.

من یک اپلیکیشن ساده برای iOS با استفاده از React Native ظرف چند روز ساختم. همه چیز ساده و بی دردسر پیش رفت و Performance اپلیکیشن هیچ فرقی با Native نداشت. الان هم مشغول کار روی دو اپلیکیشن دیگه هستم که تا بحال خیلی خوب پیش رفته.

react-native-conf

یکی از جالب ترین کاربرد های React اینه که با استفاده از Node میشه برای برنامه نویسی سمت سرور و نرم افزار تحت سیستم عامل کامپیوتر هم ازش استفاده کرد. یعنی اگر یک موبایل اپ و وب اپ با یک اپ سمت سرور می سازید، می تونید توی همش از زبان جاوااسکریپت استفاده کنید! اولش که این رو می شنوید شاید خیلی به نظرتون نیاد. اما بیشتر بهش فکر کنید مجذوب ایده ش میشید! همین باعث شده که خیلی ها پیش بینی کنن که جاوااسکریپت در آینده دنیای IT رو تسخیر می کنه (البته قبلا با دیدن Node هم همین رو می گفتن، اما حالا با ورود React و React Native به میدان احتمالش بیشتر شده).

خب حالا با وجود همه اینها، به نظر شما الان یادگیری چه زبان برنامه نویسی و فریم ورکی می تونه آینده خیلی خوبی داشته باشه؟

پاسخ من JavaScript و ReactJS و React Native هست. اما یک علامت سوال هم در انتهای تیتر این نوشته گذاشتم، چون هنوز یک رخداد بسیار مهم باقی مونده: انتشار React Native برای اندروید. من فکر می کنم اگر فیس بوک اون قدم رو هم درست برداره و مثل قبل به بروزرسانی مرتب این فریم ورک ادامه بده محبوبیت React Native به سرعت چند برابر میشه و ۳ سال آینده حداقل ‍۱۰ درصد اپلیکیشن های جدید موبایل با React Native ساخته میشن.

نظر شما چیه؟

منابع خوب برای یادگیری

ادامه مطلب

مزایای React.js برای SEO


مزایای React.js برای SEO

React.js یک کتابخانه است که شبکه های اجتماعی مهمی چون فیسبوک و telegram از آن استفاده کرده اند.البته این کتابخانه اساسا در فیسبوک توسعه داده شده است .

مزایای React.js برای SEO

React.js یک کتابخانه است که شبکه های اجتماعی مهمی چون فیسبوک و telegram از آن استفاده کرده اند.البته این کتابخانه اساسا در فیسبوک توسعه داده شده است .

یکی از ویژگی های منحصر به فرد این تکنولوژی این است که هم در سمت سرور و هم در سمت کاربر به صورت هماهنگ و سازگار کار می کند.

تعریف Dom: وقتی یک صفحه وبی بارگذاری میشود مرورگر یک مدل شی گرا از المان های موجود در صفحه می سازد.این مدل Dom و یا Document Object Model نام دارد .این نمودار یک نمودار درختی از اشیا موجود در صفحه است .برنامه هایی مانند جاوااسکریپت با استفاده از مدل یک صفحه Html را به صورت پویا ایجاد می کنند.درتکنولوژی React.js از مفهومی به نام Virtual DOM استفاده می شود .این حالت زیر گروه های انتخابی را بر اساس شرایط ارائه می کند.این کار را به این صورت انجام می دهد که تا جای ممکن از دستکاری Dom جلوگیری می کند.

Virtual DOM به این صورت کارمیکند که برای هر شی Dom که ویژگی جدیدی قرار است برای آن ساخته شود نیازی نیست که آن شی دوباره ساخته شود تنها نیاز است که آن ویژگی مورد نظر را تغییر داد و یا افزود.

بعد از آشنایی کلی با React.js راجع به مزیت هایی که این روش در SEOبرای ما ایجاد می کند صحبت می کنیم .

مشکلی که جاوااسکریپت داشت این است که به طور کامل Search Engin Freindly نیست  .با وجود اینکه  Crawl و index های گوگل ، محتواهای Ajax را هم می فهمند ولی خیلی قابل اعتماد نیست .امتیاز React.js این است که شما می توانید آن را سمت سرور اجرا کنید و virtual DOM ها در سمت سرور Renden میشوند و بعد به سمت کلاینت ارسال می شوند

قصد داریم یک پروژه ساده به کمک React.js بنویسیم

ابتدا Visual Studio را باز کرده و یک پروژه asp.net MVC از نوع Empty باز می کنیم .سپس در Tools=>Install package Manager Consol دستور زیر را تایپ می کنیم

Install-Package react.js

 با این دستور کتابخانه React.js به پروژه ما اضافه می شود.در قسمت Solution Explorer در داخل فولدر Scripts یک فولدری به نام react ایجاد شده است که در داخل آن اسکریپت های جاوااسکریپت قرار دارد .بعد از این کار باید React.Web.Mvc4 را نصب کنیم .دوباره در کنسول مربوط به Nuget دستور زیر را وارد میکنیم

Install-Package React.Web.Mvc4

حال یک کنترلر خالی ایجاد کنید.کد زیر را به Actionمورد نظر اضافه کنید.
 

123456789public ActionResult Index(){var employees = new[]{new  {id= "1", name= "ایمان ", department= "IT", phone= "555-1212"},new {id="2", name= "سجاد", department= "Sales", phone= "555-1213"},new  {id= "3", name= "رحمان", department= "HR", phone= "123-456"}};return View(employees);}

کامپوننت Grid:

یک فایل جاوااسکریپت به نام Grid.jsx در داخل فولدر Scripts ایجاد می کنیم و کد های زیر را به آن اضافه کنید .این کد برای نمایش دیتا است .

123456789101112131415161718192021222324252627282930var Cell = React.createClass({   render: function () {var data = this.props.data;return <div className="cell">{this.props.data}</div>}}); var Row = React.createClass({render: function () {return (<div className="row"><Cell data={this.props.data.name} /><Cell data={this.props.data.department} /><Cell data={this.props.data.phone} /></div>);}});var Grid = React.createClass({render: function () {var headerRow = <div className="row"><Cell data="Name" /><Cell data="Department" /><Cell data="Phone" /></div>; var rows = this.props.data.map(function (rowData, index) {return <Row key={index} data={rowData}>Row</Row>;});return <div className="table">{headerRow}{rows}</div>;}});

Rendering سمت سرور

وارد مسیر App_Start\ReactConfig.cs شوید و کامپوننت Grid را رفرنس دهید.

12345678public static class ReactConfig{public static void Configure(){ReactSiteConfiguration.Configuration = new ReactSiteConfiguration().AddScript("~/Scripts/Grid.jsx");}}

این کد به React.js می گوید که جاوااسکریپت سمت سرور را لود کند .

در مرحله بعد در داخل View مربوط به ایندکس کد های زیر را کپی کنید

12345678910<h2>React Demo:</h2> @Html.React("Grid", new{data = Model}) <script src="~/Scripts/react/react-0.12.2.min.js"></script><script src="~/Scripts/Grid.jsx"></script>@Html.ReactInitJavaScript()

بعد از اجرا شکل زیر را خواهید دید

فایل های ضمیمه
ادامه مطلب

React چیست ؟

React چیست ؟

استفاده از کتابخانه‌های تولید رابط کاربری بر پایه جاوااسکریپت در کار طراحی سایت رو به افزایش است. یکی از محبوب‌ترین این کتابخانه‌ها React یا ReactJS نام دارد. این کتابخانه توسط فیسبوک ایجاد شده است و با همکاری جمعی در حال بهبود و توسعه است.

React JS

JSX در React

یکی از امکانات مفید که در React موجود است، JSX یا JavaScript XML است. JSX شیوه‌ای جدید از نوشتن کدها است که هم می‌تواند شامل HTML و هم جاوااسکریپت باشد. با ترکیب این دو، کار توسعه رابط کاربری آسان‌تر می‌شود. فایل‌های JSX سپس توسط کامپایلر به فایل‌های جاوااسکریپت معمول تبدیل می‌شوند و در مرورگر به اجرا در می‌آیند.

استفاده از JSX الزامی نیست ولی اغلب توسعه‌دهندگان استفاده از آن را نسبت به نوشتن فایل‌های جاوااسکریپت و HTML به صورت جداگانه ترجیح می‌دهند.

یک نمونه کد JSX به صورت زیر است:

1234567const name = ‘Ali’;const element = <h1>Hello, {name}</h1>; ReactDOM.render( element, document.getElementById(‘root’));

کتابخانه رابط کاربری چیست ؟

در شکل سنتی، برای ایجاد نرم‌افزارهای هوشمند و کارآمد تحت وب با استفاده از جاوااسکریپت یا jQuery، نوشتن حجم زیادی از کدها به صورت ساخت‌یافته کاری دشوار و بیش از اندازه تخصصی است. به همین دلیل یافتن متخصصینی که توانایی استفاده از روش‌های سنتی برای تولید با کیفیت این گونه نرم‌افزارها را داشته باشند کاری بسیار دشوار است.

کتابخانه‌های رابط کاربر مانند React، AngularJS و Vue.js ابزارهایی هستند که پیچیدگی‌های تولید رابط کاربری را پشت لایه‌ای از کدهای قابل درک و آسان مخفی می‌کنند و علاوه بر آسان‌سازی، سرعت برنامه‌نویسی را نیز افزایش می‌دهند.
همچنین، به دلیل توسعه و آزمون توسط جامعه‌ی بزرگی از برنامه‌نویسان، پشتیبانی بهتری از حالت‌های مختلف و مرورگرهای متفاوت و متعدد امروزی در سیستم‌های رومیزی و موبایل به عمل می‌آورند.

نرم‌افزار هوشمند اینترنتی چیست ؟

نرم‌افزارهای سنتی تحت وب، با هر کلیک یا برای برخی از فرآیندها نیازمند بارگزاری مجدد صفحه هستند. با کمک فناوری AJAX برخی از بخش‌های نرم‌افزار توانایی پاسخگویی بدون تازه‌سازی صفحه فراهم می‌شود. ایجاد یک نرم‌افزار هوشمند تحت وب مانند آنچه در وبسایت GMail رخ می‌دهد بدون استفاده از کتابخانه‌های رابط کاربر نسل جدید کاری بسیار سخت و توسعه‌ی چنین ابزارهایی به مراتب با دشواری‌های بیشتر همراه خواهد بود.

یک نرم‌افزار هوشمند تحت وب، با یک بار بارگزاری، تمامی یا اغلب فعالیت‌های لازم را بدون تازه‌سازی( Refresh ) صفحه به انجام می‌رساند و اطلاعات ارسالی و دریافتی کاربر را همگی با استفاده از فناوری AJAX با سرور رد و بدل می‌کند.

نرم‌افزارهای هوشمند و سئو

به جز گوگل که توانایی پردازش کدهای جاوااسکریپت موجود در صفحه‌ی وب را دارا است، سایر موتورهای جستجو هنوز توانایی درک محتوای هوشمند صفحات که با فناوری جاوااسکریت تولید می‌شوند را ندارند.

در خصوص گوگل نیز، انجام پیش‌بینی‌های لازم در جهت تغییر نشانی صفحه به صورت پویا برای ایجاد تمایز بین محتواهای مختلف موجود در سایت، ضروری خواهد بود.

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

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

کتابخانه‌های مشابه

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

ادامه مطلب

چگونه به یک برنامه نویس اندروید موفق تبدیل شویم؟!

چگونه به یک برنامه نویس اندروید موفق تبدیل شویم؟!

تبدیل شدن به یک برنامه نویس اندروید خوب نیاز به تلاش بسیار ، پشتکار و انگیزه دارد.
اگر تابحال حداقل یک زبان برنامه نویسی را کار کرده باشید احتمالا با نکته هایی ساده برخورد کرده اید. نکته هایی که بنظر کلی می آیند و شاید برای هر یادگیری هر چیزی کاربرد داشته باشند.
شاید برخی از نکات ذکر شده در این مقاله نیز کلی باشد اما در هر صورت این تجربه و نظر شخصی من به عنوان یک برنامه نویس اندروید است.
همانطور که میدانید هیچ قرصی برای یادگیری سریع برنامه نویسی اندروید وجود ندارد.
تمامی انتظارات و تفکرات اشتباه خود را در مورد اینکه “اندروید ساده است و با کمی تمرین و شاید یکماه یا دوماهه آن را یاد خواهم گرفت” را کنار بگذارید و تصمیم بگیرید از همان گام نخست بصورت اصولی و حرفه ای عمل کنید.
اگر واقعا به برنامه نویسی بویژه برنامه نویسی اندروید علاقه دارید ، من در این مقاله چند نکته را جمع آوری کردم که فکر می کنم بدردتان می خورد.

۱- تحصیلات مهم است اما واجب نیست!
شما برای اینکه یک برنامه نویس ماهر شوید نیازی ندارید که تحصیلات آکادمیک در این زمینه داشته باشید. البته مسلم است که اگر داشته باشید برای پیشرفت به شما کمک خواهد کرد ، اما اگر در رشته ی دیگری درس خوانده اید خیلی عذاب وجدان نگیرید. دیر نشده است! هنوز فرصت دارید.
برای مثال خود من ، من تمامی مواردی که در حال حاضر در آن تخصص دارم ، اعم برنامه نویسی اندروید ، طراحی و برنامه نویسی وب سایت و … را خودم یاد گرفته ام و منبع تخصص فعلی من دانشگاه یا موسسه خاصی نبوده است.
این را بدانید که تمام علمی که نیاز دارید ، در دنیای اینترنت (و شاید بتوان گفت در دنیای Stackoverflow) وجود دارد. پس حتما از این منبع لایتناهی علم استفاده کنید. اگر هم دیدید به منابع بیشتری نیاز دارید ، به کتاب فروش محله خود یا شاید میدان انقلاب سری بزنید.

۲- حقوق برنامه نویسان اندروید خوب است ، اما به شرطی که شما نیز واقعا برنامه نویس خوبی باشد!
من در این مدتی که در شرکت طراحی پرتو مشغول هستم با افراد بسیار برای جذب نیرو مصاحبه کرده ام . بسیاری آنها واضح بود که تنها به خاطر درآمد ، مقداری برنامه نویسی اندروید یاد گرفته اند و جالب این بود که بدون هیچ تجربه ای درخواست حقوق بالا داشتند.
پول خوب است اما شک نکنید که اگر فقط بخاطر پول وارد این تخصص شوید ، قطعا شکست خواهید خورد.

۳- صبر داشته باشید!
خودتان را فریب ندهید. در راه برنامه نویس شدن بارها شکست خواهید خورد و این جزئی از این راه است.
برنامه نویسی یعنی کدی را بنویسید و پس از آن باید کلی تلاش کنید که آن کد واقعا بدون نقص کار کند.
در این مسیر است که شما تجربه لازم برای برنامه نویس شدن را کسب خواهید کرد.

۴- تلفن همراه خود را قورت دهید!
این یک نکته مهم برای تبدیل شدن به یک برنامه نویس موفق است.
اگر از تلفن همراه خود یا بهتر بگویم اپلیکیشن های تلفن همراه خود استفاده مداوم نکنید ، بعید می دانم برنامه نویس خوبی شوید.
شما باید بصورت روزانه اپلیکیشن هایی که در مارکت های مختلف منتشر می شوند را رصد کنید و از آنها الگو بگیرید.
اپلیکیشن های موفق را تحلیل کنید و سعی کنید راز موفقیت آنها را دریابید.
تقریبا می توان گفت برنامه نویسی موبایل یک ساختار کلی را دنبال می کند ، شما با این روش به آن ساختار دست خواهید یافت.

۵- عاشق شغل خود باشید!
اگر از برنامه نویسی اندروید لذت می برید ، مطمئن باشید که راه درستی را انتخاب کرده اید.
اگر هیچ تجربه جدی در برنامه نویسی اندروید ندارید ، دنبال شغل مرتبط گشتن حرکت خوبی نخواهد بود.
بهتر است نخست بر روی یک یا چند پروژه بصورت جدی کار کنید تا حداقل در زمان مصاحبه شغلی چیزی برای گفتن داشته باشید.
داشتن چند پروژه به کارفرما نشان می دهد که شما عاشق شغل آینده خود هستید و برای آن حاضرید حتی قبل از بدست آوردن آن شغل ، تجربه کسب کنید.

۶- از ریسک کردن نترسید!
احتمالا خیلی مواقع در شغل شما پیش می آید که برای انجام یک کار ، دو راه در پیش روی خود دارید.
یک راه ساده و سریع و یک راه جدید که تابحال تجربه اش نکردید.
من فقط منظورم موارد مرتبط با برنامه نویسی نیست.
اگر قانونی در شرکت خود دارید که همیشه راه سریع و آسان باید انتخاب شود ، بنظر من بهتر است در بعضی مواقع بیخیال این قوانین شوید و آن کودک درون کنجکاو خود را بیدار کنید. تجربه های جدید همیشه مفید خواهند بود.
بهتر است بعضی مواقع دل به دریا بزنیم.

۷- بدنبال یک تیم باشید.
به عنوان یک برنامه نویس اندروید شاید در اکثر موارد به تنهایی کار کنید. دلیل آن این است که پروژه هایی که دارید شاید به اندازه کافی بزرگ نیستند.
به نظر من برای یک بار هم که شده عضو یک تیم برنامه نویسی شوید و پروژه های بزرگتری را تجربه کنید.
عضویت در یک تیم برنامه نویسی هم هیجان بیشتری دارد و هم تجربه بیشتری برای شما به ارمغان خواهد آورد.

۸- سعی نکنید همیشه فردی ضعیف تر از خود را انتخاب کنید!
اگر تصمیم گرفتید عضو یک تیم برنامه نویسی شوید یا یک تیم برنامه نویسی تشکیل دهید ، بهتر است در آن تیم حداقل یک نفر از نظر تخصصی از شما قویتر باشد. اینگونه است که شما خواهید توانست نکات و تجارب بسیاری را کسب کنید.
مهم نیست شما چقدر از نظر خودتان حرفه ای هستید. همیشه راه برای پیشرفت بیشتر وجود دارد.

۹- از GIT استفاده کنید!
مهم نیست که برای چه پلتفرمی کد نویسی می کنید.
برنامه کنترل نسخه (GIT) دقیقا چیزیست که شما در هر پروژه ای چه برای شرکت شما باشد و چه برای شخص شما کاربرد خواهد داشت.
کنترل نسخه (GIT) مقداری پیچیده است اما نترسید ، فقط کافیست مقداری با آن کار کنید.
GIT بسیار مهم است بویژه زمانی که بصورت تیمی کار می کنید.
اگر نمی دانید گیت(GIT) چیست ، بزودی در مطلبی جداگانه آن را بررسی خواهم کرد.

۱۰-راه و روش خود را پیدا کنید!
هیچ فرمول کامل و دقیقی برای روش های برنامه نویسی وجود ندارد.
بهتر است با تیم خود بر روی مشکلات خود کار کنید و راه حل مخصوص به خودتان را پیدا کنید.
البته منظور من این نیست که از تجربه ها دیگران استفاده نکنید یا الگو نگیرید. فقط بدانید همیشه این الگو ها جوابگوی کار شما نخواهند بود.

ادامه مطلب

نمایش IP Address با استفاده از #C

نمایش IP Address با استفاده از #C

همانطور که می دانید IP Adress بخشی جدا نا پذیر از شبکه می باشد . شاید عنوان این مقاله زیاد جالب به نظر نرسد ولی در بعضی از پروژه ها شاید نیاز داشته باشیم تا برای بعضی از عملیات آدرس IP کاربر را به دست بیاوریم .راه های مختلفی برای به دست آوردن آدرس IP سیستم وجود دارد از جمله CMD ویندوز.

در ابتدا برای آشنایی بیشتر با استفاده از خود ویندوز آدرس IP را بدست آورده و بعد با استفاده از سی شارپ این کار را انجام می دهیم .

IP Address

بدست آوردن IP Address با استفاده از cms.exe :

ابتدا بر روی دکمه start کلیک و در کادر جستجو cmd.exe را وارد و بعد از پیدا کردن Enter را بزنید تا وارد برنامه شد .برای گرفتن آدرس IP  و نمایش اطلاعاتی درباره شبکه و جزئیات آن ipconfig را نوشته و Enter را بزنید می بینید که لیسیتی از جزئیات شبکه از جمله IP Adress ، Host Name، Getway و … را به شما نشان می دهد.

ipconfig-Get-IPAddress

به دست آوردن IP Address در #C  :

در NET. برای کار با شبکه  و به دست آوردن اطلاعاتی در این باره تعدادی کلاس در System.Net ، namespace داریم .

1 – پروزه جدید از نوع Console ایجاد کنید .

2 – ابتدا namespace زیر را به پروژه اضافه کنید .

Using System.Net;

3- ابتدا HostName را بدست آورده و با استفاده از متد ()GetHostByName و پاس دادن پارامتر HostName با آن IP Asdrress را بدست می آوریم .

static void Main(string[] args)

{

string hostName = Dns.GetHostName(); // Retrive the Name of HOST

Console.WriteLine(hostName);

// Get the IP

string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();

Console.WriteLine(“My IP Address is :”+myIP);

Console.ReadKey();

}

خروجی کدهای بالا به صورت زیر می باشد :

Get-IPAddress-Using-C#

این مقاله شروعی برای آشنایی بیشتر با System.Net,namespace بود . در مقاله های بعدی سعی می کنیم بیشتر با این namespace و کلاس های آن کار کنیم .

ادامه مطلب

بدست آوردن مشخصات کاربران سايت در ASP.NET

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

1 –  نام دستگاه کاربر و IP آن

1
2
ClientName = Request.UserHostName
ClientIP = Request.UserHostAddress

2 – لينکی که کاربر با کليک بر روی آن سايت را يافته است.

1
REFERER = Request.ServerVariables.Item("HTTP_REFERER");

3 – اطلاعاتی در رابطه با سیستم کاربر (Client)

1
2
3
LANGUAGE = Request.ServerVariables.Item("HTTP_ACCEPT_LANGUAGE  ")
AGENT = Request.ServerVariables.Item("HTTP_USER_AGENT")
Platform = Request.Browser.Platform()

4 – QUERY STRING صفحه حاضر

1
QUERY STRING = Request.ServerVariables.Item("QUERY_STRING")

5 – اطلاعاتی در رابطه با Browser کاربر

1
2
3
Browser = Request.Browser.Browser()
Browser_Type = Request.Browser.Type()
Browser_Version = Request.Browser.Version()

 

ادامه مطلب

آموزش ساخت Multi Threading برای فراخوانی اطلاعات

آموزش ساخت Multi Threading برای فراخوانی اطلاعات

هرچقد کیفیت و کاربرپسند شدن برنامه را در پروژه های خود بالاببریم این امکان برای جذب مشتری بیشتر میشود در این مطلب توسط Multi Threading و یک Progress اطلاعات دسته به دسته load میکنیم.درباره مزایا Multi Threading در ادامه بحث خواهیم کرد.همراه ما باشید.

آموزش ساخت Multi Threading برای فراخوانی اطلاعات

ابتدا بریم برسی کنیم ببینیم چند نخی یا یا مالتی تردینگ چیست !

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

یک پروژه در سی شارپ ایجاد و یک دیتاگرید و یک Button روی آن قرار بدید.(فرمی همانند فرم اول )

یک کلاس با نام “clsProgress” ایجاد کنید و کد زیر را در آن قرار دهید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static Thread th = new Thread(new ThreadStart(showProgressForm));                
       public void startProgress()
       {
           th = new Thread(new ThreadStart(showProgressForm));
           th.Name = "first";
           th.Start();           
       }
       private static void showProgressForm()
       {
           frmProgress sForm = new frmProgress();
           sForm.ShowDialog();           
       }
       public void stopProgress()
       {
           th.Abort();
           th = null;
       }

در Load فرمی که ساخته اید کد زیر را قرار دهید.

1
2
3
4
5
6
7
DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
            col1.HeaderText = "UserID ";
            dataGridView1.Columns.Add(col1);
            col1 = new DataGridViewTextBoxColumn();
            col1.HeaderText = "Password";
            dataGridView1.Columns.Add(col1);

در Button فرم نیز کد زیر را قرار بدید !

1
2
3
4
5
6
7
8
9
10
clsProgress cPro = new clsProgress();
cPro.startProgress();
for (int i = 0; i < 9999; i++)
{
    dataGridView1.Rows.Insert( dataGridView1.Rows.Count-1,1);
    dataGridView1[0, i].Value  = i.ToString();
    dataGridView1[1, i].Value = i.ToString();
}
cPro.stopProgress();

ما برای نمایش Loading به کاربر نیازبه یک فرم دیگه داریم یک فرم با نام FrmProgress  بسازید

سعی کنید سایزشو کوچیک کنید و موقعیت نمایش را روی Center Screen قرار بدید که وسط فرم به نمایش دربیاد یک ابزار تصویر که تصویر آن ضمیمه شده به ابزار تصویر اضافه کنید
و کد زیر را به فرم Progress اضافه کنید.

1
2
3
4
5
6
7
public static frmProgress sForm = null;
       public static frmProgress Instance()
       {
           if (sForm == null) { sForm = new frmProgress(); }
           return sForm;
       }

خیلی سخته براتون ! فایل ضمیمه کردم برید دانلودش کنید !

ادامه مطلب

آموزش طراحی فرم popup به زبان jquery

آموزش طراحی فرم popup به زبان jquery

 

پنجره های Popup از پرکاربرد ترین مواردی هستند که توی طراحی ها امروزه استفاده می شن و برای ایجاد چنین پنجره متونید با آموزش امروز یکی ساده ترین و سبک ترین آن ها را باهم بسازیم همراه ما در ادامه باشید.

آموزش طراحی فرم popup به زبان jquery

ابتدا فایل های مورد نیاز را در صفحه قرار میدهیم.

1
2
<script src="jquery.min.js" type="text/javascript"></script>
<script src="jquery.reveal.js" type="text/javascript"></script>

کد فوق را در head اضافه کنید !

بخش بعدی ساخت فایل CSS :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
.big-link {
    display:block;
    margin-top: 100px;
    text-align: center;
    font-size: 12px;
    color: #06f;
}
.reveal-modal-bg {
    position: fixed;
    height: 100%;
    width: 100%;
    background: #000;
    background: rgba(0,0,0,.8);
    z-index: 100;
    display: none;
    top: 0;
    left: 0;
}
.reveal-modal {
    visibility: hidden;
    top: 100px;
    left: 50%;
    margin-left: -300px;
    width: 520px;
    background: #eee url(modal-gloss.png) no-repeat -200px -80px;
    position: absolute;
    z-index: 101;
    padding: 30px 40px 34px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    -moz-box-shadow: 0 0 10px rgba(0,0,0,.4);
    -webkit-box-shadow: 0 0 10px rgba(0,0,0,.4);
    -box-shadow: 0 0 10px rgba(0,0,0,.4);
}
.reveal-modal.small {
    width: 200px;
    margin-left: -140px;
}
.reveal-modal.medium {
    width: 400px;
    margin-left: -240px;
}
.reveal-modal.large {
    width: 600px;
    margin-left: -340px;
}
.reveal-modal.xlarge {
    width: 800px;
    margin-left: -440px;
}
.reveal-modal .close-reveal-modal {
    font-size: 22px;
    line-height: .5;
    position: absolute;
    top: 8px;
    right: 11px;
    color: #aaa;
    text-shadow: 0 -1px 1px rbga(0, 0, 0, .6);
    font-weight: bold;
    cursor: pointer;
}

مرحله بعدی کد html برای فراخوانی فرم Popup است.

1
2
3
4
5
<div id="myModal" class="reveal-modal">
    <h4>ساختن پنجره های Pop Up با جی کوئری</h1>
    <p>مدرسه وب ایران ، آموزش طراحی وب سایت به زبان پارسی</p>
    <a class="close-reveal-modal">&#215;</a>
</div>

 

بعد از نوشتن کد فرم و طراحی بخش مورد نظر باید کد فوق را فراخوانی کنیم:

1
<a href="#" data-reveal-id="myModal">کلیک کنید</a>

دقت داشته باشید myModal که در کد بالا میبینید ID کد Html ما را فراخوانی میکنه و به کاربر نمایش میده !

فایل دانلود نیز آماده دانلود شده.موفق باشید.

ادامه مطلب

آموزش مقدماتی Globalization و Localization در Asp.net MVC

آموزش مقدماتی Globalization و Localization در Asp.net MVC

آموزش مقدماتی Globalization و Localization در Asp.net MVC

آموزش مقدماتی Globalization و Localization در Asp.net MVC

ما دراین مقاله سعی می کنیم تا Globalization و Localization در Asp.net MVC را یاد بگیریم و اجرا کنیم.

مدتی پیش یک فیلم تجاری دیدم که می گفت :”حتی کوچکترین کسب و کارها می توانند چند ملیتی باشند.”

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

اگر ما بخواهیم که سایت طراحی شده توسط ما،نیازهای کاربران را در سراسر کره زمین برآورده کند،شاید این یک ایده ی خوبی باشد که Globalization و Localization را در برنامه هایمان یاد بگیریم و اجرا کنیم.

در این مقاله ،ما سعی خواهیم کرد تا ببینیم چه چیزی را برای اجرای Globalization و Localization در Asp.net MVC نیاز داریم.

قبل از شروع مختصری راجع به این دو کلمه توضیح می دهیم.

Globalization ،پروسه ی طراحی یک برنامه در راهی است که آن برنامه بتواند قابل استفاده برای کاربران در سراسر کره زمین(فرهنگ های مختلف)

باشد.

در طرف دیگر،Localization پروسه ای سفارشی سازی شده است که آن برنامه برای فرهنگ و محل جاری می باشد.

استفاده در کد

اجازه دهید ما سعی کنیم تا ببینیم چگونه Globalization و Localization در Asp.net MVC با انجام یک مثال کوچک ،اجرا می شود.

این برنامه شامل تعداد کمی متغیر string  ثابت است،همچنین تعدادی TextBox،Button و validation error.

اجازه دهید ما برنامه رو بدون پشتیبانی هیچ یک از Localization و globalization  اجرا کنیم.سپس می بینیم که چگونه localization  وglobalization را اجرا کنیم. هم اکنون شروع به ساختن یک دمو مدل می کنیم.

1
2
3
4
5
public class Demo
{
    public string Name { get; set; }
    public int Age { get; set; }
}

حال تعدادی صفت های DataAnnotation ،به طور خاص DisplayName و ErrorMessage اضافه می کنیم.

1
2
3
4
5
6
7
8
9
10
public class Demo
{
    [DisplayName("Name")]
    [Required(ErrorMessage="Name is Required")]
    public string Name { get; set; }
    [DisplayName("Age")]
    [Required(ErrorMessage = "Age is Required")]
    public int Age { get; set; }
}

سپس یک کنترولر ساده می سازیم که در آن یک متد Create ساده برای ذخیره داده های مدل خواهیم داشت.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class HomeController : Controller
{
    private static List<Demo> list = new List<Demo>();
    public ActionResult Index()
    {
        return View(list);
    }
    [HttpGet]
    public ActionResult Create()
    {  
        return View();
    }
    [HttpPost]
    public ActionResult Create(Demo model)
    {
        if (ModelState.IsValid)
        {
            list.Add(model);
            return RedirectToAction("Index");
        }
        return View();
    }
}
و در آخر View Page  برای آن:

هم اکنون اگر ما برنامه را اجرا کنیم ،خواهیم دید که View ،دمو مدل را در یک memory collection اضافه می کند.

حالا اجازه بدهید تا ببینیم چه چیزی برای اجرای globalization و localization  نیاز داریم.

اجازه دهید تا شروع به شناسایی همه چیزهایی کنیم که با فرهنگ کاربر تغییر می کند.

حال ما یک کلاس لایبرری ساده که شامل ری سورس فایل ها است را می سازیم.

حال همه ی hard coded string  ها را داخل ریسورس فایل ها در کلاس لایبرری قرار می دهیم.

اگر ما بخواهیم این ریسور س ها را برای چند زبان داشته باشیم ،ما باید ریسورس های جداگانه مربوط به هر ورژن داشته باشیم

برای داشتن ریسورس ها در hindi-Indian ،ما نیاز به ریسورس فایل Resource.hi-in.resx  داریم.

"hi" ،زبان را و "in"،محل را مشخص می کند.

حال ما چه تغییراتی را باید در برنامه مان انجام دهیم تا از این ریسورس فایل ها به جای آن مقدارهای هارد کدی استفاده کند.برای این کار ما یک رفرنس به کلاس لایبرری اضافه می کنیم و از ریسورس فایل ها برای string  ها استفاده می کنیم.

1
2
3
4
5
6
7
8
9
10
public class Demo
{
    [DisplayName(MyResources.Resources.Name)]
    [Required(ErrorMessage=MyResources.Resources.NameRequiredError)]
    public string Name { get; set; }
    [DisplayName(MyResources.Resources.Age)]
    [Required(ErrorMessage = MyResources.Resources.AgeRequiredError)]
    public int Age { get; set; }
}

همچنین hard coded string  ها را در view  تغییر می دهیم.

برای تست کردن تغییرات باید زبان پیش فرض Browser  را به Hindi-Indian  تغییر دهیم.

بنابراین برنامه زبان پیش فرض Browser را چک می کند و برطبق آن زبان و فرهنگ لود می شود.

حال زبان پیش فرض را در IE تغییر می دهیم.

هم اکنون برنامه را اجرا می کنیم و نتیجه را مشاهده می کنیم.

حال ما یک برنامه ای داریم که قابلبت نمایش در دو زبان انگلیسی و هندی را دارد.

ادامه مطلب