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



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


فریم ورک Qt و NET.

دو فریم ورک بسیار معروف و قدرتمند برای پایتون وجود دارد که با استفاده از آنها می توان برنامه های دسکتاپی نوشت PyQt و دات نت. PyQt نسخه پایتونی فریم ورک محبوب Qt می باشد، دات نت هم که نیازی به معرفی ندارد و فریم ورک معروف و قدرتمند مایکروسافت می باشد. هر دو این فریم ورک برای ایجاد برنامه های دسکتاپ دارای انواع کلاسها و و یجیت ها می باشند. من با هر دو این فریم ورک ها کار کردم و دات نت به نظرم ساده تر آمد. علاوه بر ساده بودن کار کردن با کلاسها و ویجیتهای دات نتی زیاد بودن ویجیت ها باعث می شود که برنامه های حرفه ای در دات نت توسعه داد.


پکیج Pythonnet و زبان Iron Python

با استفاده از پکیج pythonnet و زبان برنامه نویسی IronPython می توانیم برنامه های دسکتاپی با پایتون بنویسیم. تفاوت عمده بین این ابزار این است که IronPython مانند زبانهای دات نتی (مثل C#) عمل می کند و یک کد میانی تولید می کند که CLR دات نت این کد میانی را به کد قابل فهم CPU تبدیل می کند و در نهایت برنامه اجرا می شود. اما در طرف دیگر پکیج pythonnet با مجتمع کردن CLR با مفسر پایتون کاری می کند که کدهای دات نت در پایتون اجرا شوند. نکته ای که در اینجا وجود دارد این است که IronPython از نگارش و کتابخانه های نسخه 2 پایتون استفاده می کند این در حالی است که پکیج pythonnet هم در نسخه 3 و هم در نسخه 2 قابل استفاده است. برای 

IronPython می توان به  وب سایت رسمی آن مراجعه کنید. برای نصب پکیج pythonnet هم کافی است دستور زیر را در خط فرمان سیستم عامل خود اجرا کنید. 

pip install pythonnet


معرفی

sharp develop نام IDE است که به توسعه دهنده اجازه می دهد برنامه های دات نتی را با استفاده از پایتون پیاده سازی کند. این IDE از IronPython پشتیبانی می کند اما می توان از کدهای که توسط این IDE تولید می شود در پایتون به همراه پکیج pythonnet نیز استفاده کرد. البته این IDE مشکلاتی نیز دارد اما استفاده از این IDE خیلی بهتر از دستی کد زدن است.


asp.net core in approach by Mohammad Ghorbani

3.2 (63.89%) 36vote[s]

asp.net core in approach by Mohammad Ghorbani

asp.net core in approach by Mohammad Ghorbani is a book that translated by Me from scott allen and Adam Freeman notes in them books .

asp.net core in approach by Mohammad Ghorbani

asp.net core in approach by Mohammad Ghorbani

in this book im focuse on asp.net core in action with version of 3 from asp.net core .
in this book you can find about this articles :
project structure
application builder and how it work in core
whats middleware and how you can match it with other Environment
some artile about mvc designpattern in dept
conventional routes and attribute routes
and some article about model in Mvc
entity framework as a sample part
model validation and routing
and Rendering Views

asp.net core in approach by Mohammad Ghorbani

asp.net core in approach by Mohammad Ghorbani

this book is my first try about writing in a techaing book at develope and so on .
i think this is a good experience to me and other guys to use asp.net core .

اصول پایه ای asp.net core در یک پروژه عملی 

کتاب اصول پایه ای asp.net core در یک پروژه عملی

کتاب اصول پایه ای asp.net core در یک پروژه عملی نوشته محمد قربانی

کتاب اصول پایه ای asp.net core در یک پروژه عملی نویسنده محمد قربانی

اصول پایه ای ASP.NET Core در یک پروژه عملی

اصول پایه ای ASP.NET Core در یک پروژه عملی



آموزش پایتون در یک پست

در این پست قصد دارم تا مفاهیم مهم پایتون را در یک پست توضیح دهم. البته نباید انتظار داشت که بعد از مطالعه این پست متخصص پایتون شد، اما پایتون انقدر ساده است که می توان مفاهیم مهم و کلیدی آن را در یک پست توضیح داد. پایتون یک زبان برنامه نویسی قدرتمند، مدرن و شی گرا می باشد که با اهداف عمومی طراحی شده و دارای امکانات بسیار زیادی می باشد. در این پست نگاهی گذرا به مفاهیم کلیدی پایتون خواهیم داشت. پایتون دارای دو نسخه است. پایتون ۲ و پایتون ۳. مثالهای این پست با استفاده از سینتکس پایتون ۳ نوشته شده اند.

 

مفسر پایتون

تنها زبانی که کامپیوتر آن را متوجه می شود زبان ماشین است. یادگیری و کار کردن با زبان ماشین بسیار سخت است به خاطر همین زبانهای سطح بالا به وجود آمده اند(مانند پایتون). زبانهای سطح بالا توسط مترجم به زبان ماشین تبدیل می شوند. مترجم های به روشهای مختلفی پیاده سازی می شوند. مترجم پایتون به روش مفسری پیاده سازی شده است. یک مفسر برنامه ای است که کدهای زبان سطح بالا را خط به خط به زبان ماشین تبدیل می کند. مفسر رسمی زبان پایتون CPython نام دارد که اولین بار توسط Guido van Rossum نوشته شده و سپس توسط جامعه اوپن سورس توسعه داده شده و در حال نیز توسعه داده می شود.

 

تابع print

تابع print مقدار یا مقادیری را دریافت کرده و آن را در صفحه کنسول نمایش می دهد.

print(‘Hello, World!’)
# خروجی ---> Hello, World!

 

تعریف متغییر

پایتون یک زبان داینامیک هست به این معنی که نیازی نیست نوع متغییر را مشخص کنیم. فقط کافی است نام متغییر را نوشته و مقداری را به آن تخصیص دهیم.

num = 42

می توان در یک خط چندین متغییر تعریف کرد:

a, b, s = 0, 1, hi

می توان مقدار دو متغییر را در یک خط دستور با یکدیگر جابجا کرد:

a, b = b, a

برای تعریف رشته می توان از جفت کوتیشن و یا تک کوتیشن استفاده کرد:

name = "John Doe"
country = 'US'


می توان با استفاده از تابع print مقدار متغییرها را نمایش داد:

print(name, country, num)
# output -->
John Doe 42

ساختار شرط

در پایتون برای شرط گذاری از دستور if استفاده می شود.

if name == John Doe’:
print(‘Hi, John!’)
else:
print(‘Who are you?’)
# خروجی -->
Hi, John!

بخش شرط نیازی به پرانتز ندارد، البته گذاشتن پرانتز اختیاری است و فقط اگر منجر به خوانایی کد می شود استفاده از پرانتز توصیه می شود. بدنه شرط یا هر بلاک در پایتون با استفاده از علامت کولن ‘:’ و خط فاصله مشخص می شود، گذاشتن یک فاصله بعد از علامت کولن بیانگیر این هست که دستور به بلاک بالایی خود تعلق دارد مثلا در کد بالا خط دوم متعلق به بلاک if و خط ۴  متعلق به بلاک else می باشد. توصیه می شود از ۴ برای جداسازی دستورات مربوط به بدنه یک بلاک استفاده شود.

کد بالا را در پایتون می توان در یک خط نوشت که به عبارت شرط یا Conditional Expression  معروف است.

print('Hi, John!') if name == 'John Doe' else print('Who are you?')

 

حلقه ها

دو ساختار برای ایجاد حلقه در پایتون وجود دارد، ساختار while و for

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

x = 0
while x < 5:
print(‘x is’, x) x += 1
print('while loop terminated')

# خروجی -->
x is 0
x is 1
x is 2
x is 3
x is 4
while loop terminated

حلقه for بعد از کالکشن ها توضیح داده شده.

 

کالکشن ها

کاکلشن ها مجموعه های هستند که می تواند بیش از یک مقدار داشته باشند. کالکشن های اصلی پایتون عبارتند از listtupledict و set

یک لیست می تواند دارای هر نوع آبجکتی باشد یعنی هر نوع داده ای. یک لیست یک کالکشن مرتب است یعنی عناصر آن از صفر شماره گذاری شده اند که با این شماره می توانیم به آنها دسترسی داشته باشیم. برای تعریف لیست از علامت براکت'[ ]' استفاده می کنیم.

person = [‘Kate Doe’, 42, 1.9, M’]


برای چاپ اولین عنصر از لیست person می توانیم به صورت زیر عمل کنیم.

print(‘First element in person list is’,(person[0])
# خروجی ---> First element in person list is Kate Doe


برای به دست آوردن طول یک لیست می توانیم از تابع len استفاده کنیم

print(len(person)  
# خروجی -->
4

کالکشن بعدی tuple است. توپل ها عین لیست ها هستند با این تفاوت که بعد از تعریف آن نمی توانیم مقداری به آن اضافه کنیم یا مقداری از آن حذف کنیم. این ویژگی توپل باعث می شود که مفسر پایتون حافظه را به صورت استاتیک تعریف کند که به طبع باعث بهبود مصرف حافظه می شود. توپل ها برای تعریف مقادیر ثابت مثل روزهای هفته مفید هستند. یک توپل مانند لیست می تواند دارای هر نوع داده ای باشد. برای تعریف توپل از پرانتز استفاده می شود.

days_of_week = (‘Mon’, Tue’, Wed’, Thu’, Fri’,‘Sat’, Sun’)
print(days_of_week[2])
# خروجی --> Wed

کالکشن بعدی dict یا دیکشتری هست. دیکشنری بر خلاف لیست و توپل یک کالکشن مرتب نیست و دارای شاخص نیست یعنی با عدد شماره گذاری نشده اند. یک دیکشنری با کلید و مقدار تعریف می شود. می تواند با کلید به مقدار یک دیکشنری دسترسی داشت

fav_tv_series = {     
'title': True Detective’,
'director': 'Vince Vaughn',
'year': 2014,
'imdb_rank': 9.0,
'your_rank': 10
}

print(‘Your rank to’, move[‘title’], is’, move[‘your_rank’])

# خروجی ---> Your rank to True Detective is 10

set نوع داده است که مثل لیست بوده اما یک ست نمی تواند دارای مقدار تکراری باشد. تمام عملیات مربوط به یک مجموعه مانند اجتماع، اشتراک و . بر روی یک set قابل اجرا است.  یک set با استفاده از علامت کروشه ‘{}’ تعریف می شود.

numbers = {1, 2, 2, 3}
print(numbers)
print(numbers[0])
# خروجی
{1, 2, 3}
1


حلقه for برای روی کالکشن ها استفاده می شود. حلقه for را می توان بر روی تمام کالکشن ها اجرا کرد. فقط کافی است یک تکرار کننده (iterator) تعریف کنیم که در واقع یک متغییر است در مثال پایین item یک iterator است.

for item in person:
print(item)
# output -->
Kate Doe
42
1.9
M

برای استفاده از حلقه for بر روی دیکشنری می توانیم از دو تکرار کننده استفاده کنیم که در هر بار چرخش حلقه for اولی به کلید دیکشنری و دومی به مقدار آن کلید اشاره می کند:
for key, value in fav_tv_series:
print(key.title(), ‘:’, value)
# output -->
Title : True Detective
Year : 2014
Directors : Vince Vaughn
Imdb_Rank : 9.0
Your_Rank : 10

 نکته: متد title که بر روی کلید فراخوانی کردیم باعث می شود محتوای keyها که رشته هستند اولین کارکتر آنها به حرف بزرگ تبدیل شود. مثلا title به Title تبدیل می شود. 


تابع

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

def add(x, y):
print(x, '+', y, '=', x + y)

add(2 + 3)
# output
2 + 3 = 5

اگر بخواهیم از مقداری که در داخل تابع محاسبه می شود در برنامه استفاده کنیم باید آن را برگشت دهیم. برای برگشت دادن یک مقدار توسط تابع از کلمه کلیدی return استفاده می کنیم.

def area(width, height):
return width * height

 

برای فراخوانی نام تابع را نوشته اگر تابع برای اجرا نیاز به آرگومان داشت آنها را داخل پرانتر وارد می کنیم

آرگومان: مقدار یا مقادیری که یک تابع هنگامی فراخوانی برای اجرا نیاز دارد.

 

result = 2 + area(5, 9)
print('The result is ', result)

نقدی بر کتاب تحلیلی بر entity framework core2

کتاب تحلیلی بر entity framework core2 نوشته محمد قربانی یکی از کتابهای کاربردی است که در زمینه برنامه نویسی نوشته شده. من قبلا کتابی با عنوان اصول پایه ای asp.net core  در یک پروژه عملی رو از اقای محمد قربانی خونده بودم .نوع نکارش متون بسیار تخصصی و خوب انتخاب شده مثالهای زده شده توی کتاب به صورت سلسله مراتب بالا رفته و باید دقیقا از اول کتاب رو به دقت بخونید تا بتونید در آخر هر فصل نتیجه گیری هایی که باید رو بگیرید . 
من بخش دورم کتاب که مربوط به authentication ها بود رو زیاد نتونستم متوجه بشم ایمیل زدم به نویسنده محترم کتاب و از ایشون دلیلش رو ئرسیدم . در جواب فقط این رو شنیدم که بخش اول رو به دقت بخونید و چون بخش اول رو من اصلا نخونده بودم نمی تونستم نتیجه گیری خوبی از بخش دوم داشته باشم . 
علی هذا خوندن کتاب های آقای محمد قربانی رو به همه ی برنامه نویسان محترم توصیه میکنم . 
امید وارم که شاهد موفقیت های روز افزون برنامه نویسان ایرانی باشیم . 


کتاب تحلیلی بر entity framework core 2


این متن دومین مطلب آزمایشی من است که به زودی آن را حذف خواهم کرد.

زکات علم، نشر آن است. هر

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

همچنین

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

بلاگ انجام می دهند افزوده می شود.


این متن اولین مطلب آزمایشی من است که به زودی آن را حذف خواهم کرد.

مرد خردمند هنر پیشه را، عمر دو بایست در این روزگار، تا به یکی تجربه اندوختن، با دگری تجربه بردن به کار!

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

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


تمام سیستم عامل ها از فونت‌های خاصی برای نمایش کد استفاده می کنند. سیستم عامل ویندوز از Consolas ، سیستم عامل مک از San Francisco Mono استفاده می‌کنند و سیستم عامل گنو/لینوکس بسته به توزیع متفاوته اما Libration Mono روی بیشتر توزیع‌های لینوکسی موجود هست.

فونت‌های مخصوص برنامه نویسی معمولاً فونت‌ها Monospace هستن، در این نوع فونت ها عرض تمامی کارکترها یکسان می باشد که این ویژگی باعث افزایش خوانایی کد می شود. بسیاری از برنامه نویسها ترجیح می‌دهند از فونت‌های خاصی برای نمایش کد استفاده کنند در این پست 5 + 10 تا از محبوب‌ترین این فونت‌ها را معرفی خواهم کرد که برخی از آن‌ها پولی و برخی از آن‌ها رایگان می باشد.

نحوه دانلود: برای هر کدام از فونت ها لینک دانلود قرار داده شده بر روی آن کلیک کنید و به هر صفحه که ارجاع داده شدید دنبال کلمه Download باشید، می توانید کلید Ctrl +f را فشار داده و کلمه Download را تایپ کنید تا لینک دانلود را به راحتی در صفحه مذکور پیدا کنید.

نکاتی که باید در انتخاب فونت دقت کرد

  1. Monospace بودن فونت
  2.  تمایز بین کارکتر l با عدد 1
  3. تمایز بین کارکتر O و عدد 0.
  4. تمایز بین کارکترهای , ; .

تنظیمات فونت 

تنظیم نام و اندازه فونت بسیار واضح است. اما برخی از فونت‌های از ویژگی بنام code ligatures پشتیبانی می کنند. این ویژگی باعث می‌شود که برخی از کاراکترها بهم چسبیده نمایش داده شوند یعنی به صورتی که در دنیای واقعی استفاده می‌کنیم نمایش داده شوند. در ادامه با این ویژگی بیشتر آشنا خواهید شد. VS Code و sublime از این ویژگی پشتیبانی می‌کنند که نحوه تنظیم آن در ادامه توضیح داده شده.

VS Code

برای تغییر فونت در VS Code از مسیر File → Preferences گزینه settings را انتخاب کنید. سپس در پنجره سمت راست که با عنوان USER SETTINGS مشخص شده گزینه های زیر را اضافه کنید:

"editor.fontFamily": "  'نام فونت'  ",
"editor.fontSize": اندازه فونت,
"editor.fontLigatures": true
// مثال
"editor.fontFamily": " 'Ibm Plex Mono' ",
"editor.fontSize": 14,
"editor.fontLigatures": true,


sublime

برای تغییر فونت در Sublime Text از منوی Preferences گزینه Settings را انتخاب کنید. در پینجره جدیدی که باز می‌شود، در سمت راست پنجره ای با عنوان Preferences.sublime-settings –User گزینه های زیر را اضافه کنید:

"font_face": "نام فونت",
"font_size": اندازه فونت,
// مثال
"font_face": "Fira Code",
"font_size": 12,

در sublime ویژگی code ligatures  به صورت پیش فرض فعال است و نیاز به تنظیات خاصی برای این مورد نیست.

در هر دو وایشگر پس از انجام تنظیمات کلید Ctrl + s را فشار دهید تا تنظیمات ذخیره و اعمال شود.


  1. Operator Mono
    این فونت اولین فونت در لیست ما هست. این فونت پولی بوده واز 
    code ligatures پشتیبانی می کند. ویژگی که در این فونت شاید کمی عجیب به نظر برسد نسخه Italic آن است که وقتی بخشی از کد ایتالیک (کج) می شود خواندن کد را کمی سخت می کند.

  1. Operator Mono

  2. PragmataPro
    این فونت نیز پولی بوده و دارای قابلیت code ligatures می باشد.

  3. Fira Code
    اولین فونت در لیست فونتهای رایگان فونت Fira Code‌ می باشد. این فونت دارای قابلیت code ligatures می باشد. این فونت می تواند جایگزین فونت های پولی که معرفی شد باشد. همانطور که شکل پایین نشان می دهد فونت سمت راست یعنی Fira Mono دارای قابلیت code ligatures نمی باشد. اما فونت سمت چپ یعنی Fira Code از این قابلیت پشتیبانی می کند. به تفاوت این دو فونت در تصویر زیر دقت کنید تا مفهوم code ligatures را بهتر متوجه شوید.

    لینک دانلود







  4. Monoid
    این فونت نیز رایگان بوده و دارای قابلیت code ligatures می باشد.

    لینک دانلود




  5. Hasklig
    این فونت نیز رایگان می باشد و بسیار شبیه به فونت Adobe Source Code Pro می باشد. این فونت نیز دارای قابلیت code ligatures می باشد.

    لینک دانلود





  6. Input Mono
    این فونت علاوه بر اینکه دارای یک نسخه monospaced برای برنامه نویسها بوده دارای نسخه sans و serif‌ نیز می باشد که می توان در مواردی مثل فونت متن یا فونت دسکتاپ سیستم عامل از آن استفاده کرد. 
    وب سایت رسمی این فونت حتی اجازه میدهد که برخی از کارکترها مثل l و یا i را با نسخه دیگری جایگزین کرد.

    لینک دانلود

    لینک شخصی سازی برخی از کارکترها





  7. Office Code Pro
    این فونت نیز از Adobe Source Code Pro الهام گرفته شده و دارای برخی کارکترهای اضافی می باشد.

    صفحه github 

    دانلود از Font Squirrel 






  8. Camingo Code

    دانلود از Font Squirrel 





  9. Ibm Plex Mono
    همانطور که از اسم این فونت مشخص هست توسط IBM توسعه داده شده. این فونت نیز علاوه بر دارا بودن نسخه monospaced دارای نسخه sans و serif نیز می باشد. 

    دانلود از Font Squirrel 



  10. Code New Roman
    این فونت کمتر در سایتهای که اقدام به معرفی فونت برنامه نویسی کرده اند به چشم می خورد اما فکر می کنم این فونت زیبا هست و قطعا ارزش امتحان کردن دارد. شاید ایرادی که بتوان به این فونت گرفت کمتر بودن فاصله بین خطوط باشد. البته فاصله خطوط را می توان توسط وایشگر تغییر داد.

    لینک دانلود



فونت های زیادی وجود دارد که مخصوص برنامه نویسی طراحی شده انده. در لیست بالا ۱۰ تا از فونتهای که به نظر خودم جذاب و خوب بودند رو معرفی کردم اما فونتهای معروف دیگری نیز هستند که در لیست بالا نیستند ۵ تا از آنها در پایین لیست شده اند. تمامی این فونت ها رایگان هستند و برای دانلود آنها کافی است بر روی نام هر یک از آنها کلیک کنید.
  1. Hack: توسط فیسبوک توسعه داده شده

  2. Inconsolata:  توسط یک برنامه نویس پس از بررسی چندین فونت برنامه نویسی طراحی شده

  3. DejaVu Sans Mono:  فونت قدیمی و مخصوص برنامه نویسی که بسیاری از فونت از آن الهام گرفته اند

  4. Anonymous Pro: در سال ۲۰۰۹ با در نظر گرفتن موارد مربوط به برنامه نویسی طراحی شده

  5. Courier Prime:‌ فونتی که حال و هوای فونت های نمایش نامه را دارد


آخرین ارسال ها

آخرین جستجو ها