برنامه‌نویسی :: شمشاد

داده جمع می‌کنم، بلکه یاد بگیرم زندگی‌ رو !!

۷ مطلب با موضوع «برنامه‌نویسی» ثبت شده است

مثالی ساده و عملی برای عملکرد کاهش نویز فعال

Active Noise Cancellation

چند روز پیش امیر یه هدفون مجهز به سیستم کاهش نویز آورده بود، قبلا همچین ادعاهایی رو تو هدفون‌ها دیده بودم ولی ویژگی محسوسی نداشتند، اما این یکی رو به محض این که رو گوشام گذاشتم، سکوت قابل ملاحظه‌ای رو حس کردم، بعد پیرموان همین موضوع و این که چطوری این اتفاق میفته باهم بحث کردیم، در واقع، مطالب این دست همیشه تو اخبار و سایت‌ها هست ولی تا وقتی که لمس‌شون نکردیم کنجکاو‌شون نمی شیم و راحت از کنارشون رد می‌شیم. تو بحثی که با هم می‌کردیم نمی‌دونستم، آیا می‌تونم از واژه سیگنال صوتی منفی (و یا معکوس) استفاده کنم یا نه. تصمیم گرفتم این موضوع رو بصورت ساده‌ای تست کنم. از فرصت تعطیلی پیش اومده استفاده کردم، با پایتون یه سیگنال صوتی استریو ۶۰۰ هرتز ساختم که، کانال‌هاش با هم اختلاف فاز ۱۸۰ درجه داشتند. الان در ادامه یه مقدمه کوچک از این تکنولوژی می‌گم و همچنین به نحوه‌ی ساخت سیگنال صوتی تو پایتون اشاره می‌کنم و بعد نتیجه کار رو می‌گم.

ادامه مطلب...
۲۳ بهمن ۹۹ ، ۲۲:۵۲ ۱ نظر موافقین ۰ مخالفین ۰
Hasan

شروع یک پروژه‌ی AVR با استفاده از avr-gcc و eclipse.

در مطلب قبلی با عنوان "نصب avr-gcc به همراه Eclipse در ویندوز" به نحوه نصب و راه‌اندازی avr-gcc پرداخته شد، در این مطلب به ایجاد یک پروژه ساده با استفاده از avr-gcc و eclipse اشاره می‌شود.

ایجاد پروژه:

برای ایجاد یک پروژه avr در eclipse به مسیر زیر رفته:

File > New > Project...

 

ادامه مطلب...
۱۵ فروردين ۹۷ ، ۱۰:۲۴ ۱ نظر موافقین ۲ مخالفین ۰
Hasan

نصب avr-gcc به همراه Eclipse در ویندوز

معمولا در ایران اکثر کسانی که برای avr برنامه‌نویسی می‌کنند از codvision استفاده می‌کنند. کدویژن یک کامپایلر تجاری هست که برخی از کارها رو آسون کرده واسه همین اکثرا هنگام آموزش AVR از این کامپایلر استفاده می‌شود. من هم در دانشگاه AVR رو با کدویژن یاد گرفتم و چند پروژه‌ای هم با اون انجام دادم. پولی بودن،  نبود جامعه‌ی فعال کاربری و کمبود داکیومنت و کتابخانه سبب شد که کم‌کم برم سمت avr-gcc البته این عامل که کدویژن فقط نسخه ویندوز داشت نیز در این مهاجرت تاثیر زیادی داشت.  avr-gcc برخلاف کدویژن داکیومنت و جامعه کاربری فعال زیادی داره و به راحتی می‌تونید در اینترنت برای همه‌ی سوالات‌تون جواب پیدا کنید. حتی مثال‌های دیتاشیت‌های atmel نیز براساس avr-gcc هست. avr-gcc و مجموعه ابزار پیوستی‌ش رایگان و آزاد هست و در صورت نیاز می‌توانید هر تغییر دلخواهی را در آن‌ها ایجاد کنید. همچنین از دنگ و فنگ کرک خلاص می‌شوید. از تجربه‌های خوبی که من در استفاده از avr-gc داشتم اینه که در زمان کار با کدویژن یک سری باگ‌هایی بود که من اسم‌شون رو جادوگری گذاشته بودم و اصلا نمی‌تونستم منشا‌شون رو پیدا کنم، خوشبختانه با اومدن به سمت avr-gcc این باگ‌ها از بین رفتند.

اما Eclipse، یک زمانی می‌شد ادعا کرد که بهترین IDE موجود هست، الان تعداد IDE های مختلف بسیار زیاد شده که هر کدومشون طرفدارن زیادی دارند، من از خیلی قبل‌تر به Eclips عادت کرده‌ام و واسه همین اکثرا با eclipse کار می‌کنم. اکثر زبان‌های برنامه نویسی رو ساپورت می‌کنه، رو همه سیستم‌عامل‌ها هست، آزاد هست و امکانات پایه و ویژگی‌های خوبی داره و از همه مهمتر برای کار ما یعنی avr، یک پلاگن خوب داره، که کار لینک بین کد و کامپایلر و پروگرامر رو انجام  می‌ده، تنظیمات گرافیکی برا ست کردن فیوز بیت‌‌ها داره البته از لحاظ امکانات گرافیکی به پای کدویزارد کدویژن نمی‌رسه. حالا بریم سراغ نصب‌شون.

نصب avr-gcc:

پروژه‌های زیادی برای پورت کردن avr-gcc به ویندوز هستند که با یک جستجو در گوگل می‌توانید پیداشون کنید، من از winavr استفاده می‌کنم، با اینکه نسبتا قدیی هست و متاسفانه توسعه‌اش هم متوقف شده ولی با این حال هنوز هم کار راه‌انداز هست. winavr مجموعه ابزار کاملی به همراه داره و در صورت تمایل نیازی به نصب eclipse نیست و می‌تونید از IDE خودش استفاده کنید. winavr رو از یکی از لینک‌های زیر دریافت کنید:

دانلود winavr از سایت سورس‌فورج

دانلود winavr از سایت آپلودبوی

ادامه مطلب...
۰۶ فروردين ۹۷ ، ۱۰:۲۹ ۰ نظر موافقین ۱ مخالفین ۰
Hasan

فشرده‌سازی دایرکتوری‌ها به صورت جداگانه با پایتون

مدتی قبل مطلب "دانلود ترجمه مانگای حمله به تایتان" رو اینجا منتشر کردم، برای آپلود قسمت‌های این مانگا حدود ۱۰۰ دایرکتوری تصویر داشتم که باید زیپ‌شون می‌کردم. برا این که براحتی این ۱۰۰ دایرکتوری رو زیپ کنم یک اسکریپت با پایتون نوشتم. در ادامه مطلب توضیح مختصری در مورد فشرده‌سازی با پایتون می‌دم و سپس اسکریپتم رو میارم. 

فشرده سازی فایل با پایتون:

عمل فشرده‌سازی در پایتون به صورت پیشفرض با ماژول zipfile انجام می‌شود پس در قدم اول ماژول zipfile رو وارد کرده و سپس شی zipfile را می‌سازیم و به‌صورت زیر عمل می‌کنیم:

import zipfile

test_zip = zipfile.ZipFile('test.zip', 'w')
test_zip.write('filename', compress_type=zipfile.ZIP_DEFLATED)

test_zip.close()

در متد write اولین پارامتر مربوط به اسم فایلی (و یا پچی) هست که می‌خواهیم فشرده‌اش کنیم. پارامتر دوم موربوط به متد فشرده‌سازی هست، در پایتون ۲ فقط دو نوع متد فشرده‌سازی داریم که عبارتند از: ZIP_STORED و ZIP_DEFLATED اما بعد از پایتون ۳/۳ متدهای ZIP_BZIP2 و ZIP_LZMA نیز در دسترس هست. 

ادامه مطلب...
۲۴ اسفند ۹۶ ، ۱۰:۱۵ ۰ نظر موافقین ۱ مخالفین ۰
Hasan

نصب کامپایلر gcc در ویندوز

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

مجموعه کامپایلر‌های گنو

این کامپایلر توسط ریچارد استالمن در سال ۱۹۸۷ برای C منتشر شد. gcc ابتدا سر نام واژه‌های  GNU C Compiler بود و تنها برای زبان سی به کار می‌رفت اما بعدا با اضافه شدن کامپایلرهای زبان‌های سی‌پلاس‌پلاس، فورترن، پاسکال، جاوا، آبجکتیو سی و ایدا به مجموعه، نام آن به GNU Compiler Collection تغیر پیدا کرد. این مجموعه ابتدا منحصرا در سیستم‌های تحت گنو کاربرد داشت اما اکنون در طیف وسیعی از سیستم عامل‌ها و سخت‌افزارها کاربرد دارد. جی‌سی‌سی‌ تحت مجوز گنو جی‌پی‌ال نسخهٔ ۳ منتشر می‌شود، البته با یک بند استثنا، که در آن بند به کاربران اجاز می‌دهد تا بتوانند علاوه‌بر نرم‌افزارهای آزاد در نرم‌افزارهای‌ غیر چی‌پی‌ال حتی نرم‌افزارهای انحصاری هم از جی‌سی‌سی استفاده کنند. 

از پروژه‌های معروف و موفق که در پورت gcc به ویندوز فعال هستند می‌توان به Cygwin، MinGW و Mingw-w64 اشاره کرد. من قبلا از Cygwin و MinGW به صورت همزمان استفاده کرده‌ام، در نهایت از MinGW راضی‌تر بوده‌ام و در این مدتی که باهاش کار می‌کنم به مشکلی برنخورده‌ام. 

نصبMinGW

MinGW در واقع Minimalist GNU for Windows، یک محیط توسعه‌ی مینیمال برای برنامه‌های کاربردی ماکروسافت ویندوز هست. فقط توجه شود که بنا به اعلام سایت سازنده چنان که قصد برنامه‌نویسی تحت استاندارد پازیکس (POSIX) را داشته باشید MinGW به کار شما نخواهد آمد و در این صورت توصیه می‌شود که از  Cygwin و Mingw-w64 استفاده کنید. عملیات نصب MinGW  به صورت آنلاین هست، برای دانلود نصاب آن از دو لینک زیر می‌توانید اقدام کنید. 

دانلود از سایت  sourceforge

دانلود از سایت  آپلودبوی

ادامه مطلب...
۰۵ اسفند ۹۶ ، ۱۰:۴۰ ۷ نظر موافقین ۱ مخالفین ۰
Hasan

استفاده از چندین نسخه پایتون به‌صورت همزمان در ویندوز

گاها نیاز می‌شه از چند نسخه مختلف پایتون در یک سیستم استفاده کرد، مخصوصا وقتی که از پایتون 2 و پایتون  3 به صورت همزمان استفاد می‌شود. انجام این‌کار تو لینوکس نسبتا ساده هست ولی در ویندوز به ابزاری به اسم Python Launcher نیاز هست. این برنامه توسط Vinay Sajip نوشته شده است. و از نسخه 3.3 به بعد به همراه پایتون از طریق نصاب نصب می‌شود، البته گاها در بعضی نسخه‌ها این ابزار به صورت آپشن بوده و باید هنگام نصب توسط کاربر انتخاب شود.  python Luncher  شامل دو فایل py.exe (که برای اجرای python.exe به کار می‌رود.) و pyw.exe (که برای اجرای pythonw.exe به کار می‌رود.) هست. چنان که این ابزار به همراه پایتون نصب شود، محل قرارگیری این دو فایل در دایرکتوری اصلی Windowsخواهد بود.

Python Launcher

 همچنین می‌توان این برنامه را با دانلود از سایت نویسنده برنامه نصب کرد.  صفحه دانلود Python Launcher از سایت اصلی:

https://bitbucket.org/vinay.sajip/pylauncher/downloads/

خود من در دانلود این برنامه مشکل داشتم برا همین این فایل‌ها رو آپلود کردم تا مورد استفاده دوستان قرار بگیرد. لینک دانلود نصاب Python Launcher نسخه 64 بیتی:

http://uploadboy.me/mz7kg0wjpeev/Python_launcher-1.0.1.6.amd64.msi.html

لینک دانلود نسخه 32 بیتی:

http://uploadboy.me/f25t2nzvqst2/Python_launcher-1.0.1.6.msi.html

باید بعد از نصب مطمئن شوید که دایرکتوری برنامه به متغیر path سیستم اضافه شده است، در غیر این صورت به صورت دستی این کار را بکنید.

استفاده از  Python Launcher:

قالب کلی به این صورت است که ابتدا فرمان "py" سپس نسخه پایتون به صورت "y.x-" وارد می‌شود. بطور مثال:

py -2.7

چنان که قصد استفاده از آخرین نسخه از پایتون 3 و یا 2 نصب شده را دارید نیاز به زدن قسمت اعشار نسخه نیست:

py -3

 با زدن آرگومان "32-" و یا "64-" می‌توانید نسخه 32 بیتی یا 64 بیتی پایتون را انتخاب کنید:

py -2 -32 MyScript.py

تنظیم Python Launcher:

به استناد داکیومنت‌های پایتون در بعضی نسخه‌ها یک فایل کانفیگ به اسم py.ini نیز هست که می‌توان از طریق آن تنظیمات جالب و کاربردی از طریق این برنامه انجام داد. آدرس فایل کانفیگ در ویندوزهای بالاتر از ویستا:

%USERPROFILE%\AppData\Local

و در ویندوز xp:

%USERPROFILE%\Local Settings\Application Data

و چنان که از طریق نصاب خود Python Launcher برنامه را نصب کرده باشید، فایل کانفیگ در محل نصب و در کنار فایل py.exe خواهد بود. برای من فایل کانفیگ به همراه پایتون نصب نشده بود و برای استفاده از امکان تنظیم، Python Launcher به صورت مجزا نصب کردم. اولین تنظیم مربوط به انتخاب نسخه پیش‌فرض لانچر هست: 

[defaults]
; Uncomment out the following line to have Python 3 be the default.
python=3.6

تنظیمات بعدی به صورت انتخابی بوده و می توانید هر دستور دلخواه با هر آرگومان دلخواه را برای لانچر تعریف کنید، بعنوان مثال من هنگام استفاده از virtual environment برای این که از نسخه مورد نظرم استفاده کنم، تنظینات زیر را در فایل کانفیگ اعمال کرده‌ام:

[commands]

venv2= "C:\Python27\Scripts\virtualenv.exe" 
venv3= "C:\Users\UserName\AppData\Local\Programs\Python\Python36\Scripts\virtualenv.exe"

حال وقتی که قصد استفاده از virtual environment با پایتون 3.6 را دارم، دستور زیر را می‌زنم:

py -venv3

با این امکان می‌توان بسیاری از دستورات طولانی و پرکاربرد را کوتاه کرد.

منابع

https://www.python.org/dev/peps/pep-0397/

https://docs.python.org/3/using/windows.html

https://bitbucket.org/vinay.sajip/pylauncher

۰۲ آذر ۹۶ ، ۱۵:۳۲ ۰ نظر موافقین ۰ مخالفین ۰
Hasan