صدای بوق ممتد از لحاظ فنی همان موج سینوسی با فرکانسی (بسامد) ثابت است. در این مطلب یک کد ساده و کوتاه پایتون ارائه میدهم که بدون استفاده از کتابخانههای اضافی، میتواند یک بوق را با هر فرکانسی تولید کند و در یک فایل صوتی wave ذخیره کند.
مسئلهٔ ۸ وزیر یک تمرین معروف در علوم کامپیوتر و ریاضیات میباشد. این مسئله در مورد یک صفحهٔ شطرنج رایج و مهرهٔ وزیر در این بازی فکری میباشد. در ریاضیات ثابت میشود که میتوان ۸ وزیر را در یک صفحهٔ شطرنج چنان قرار داد که هیچکدام از وزیرها، دیگری را تهدید نکنند. با تعمیم این مسئله در ریاضیات، ثابت میشود که در یک صفحهٔ شطرنج به ضلع n، میتوان تعداد n وزیر قرار داد؛ چنانچه هیچکدام دیگری را تهدید نکنند. در علوم کامپیوتر میتوان با روشهای مختلفی این مسئله را حل کرد و به یک چینش از مهرههای وزیر رسید که هیچکدام دیگری را تهدید نکنند. یکی از این روشها «الگوریتم ژنتیک» است.
طی دهههای گذشته بحثهای زیادی راجع به اینکه مشخصات زبانهای برنامهنویسی، به عنوان مثال تعیین نوعشان و مثلا ایستا(static) یا پویا(dynamic) بودن چه تاثیری روی روند توسعه نرمافزارها دارد. یک مقاله علمی(paper) با مطالعه ۶۰۰ پروژه در گیتهاب شامل تقریبا ۷۰ میلیون خط کد و ۳ میلیون کامیت به نتایجی در این مورد رسیدهاست.
اینکه برای یادگیری برنامهنویسی دانستن زبان انگلیسی لازم هست یا نه، پرسش بسیاری از کسانی هست که میخواهند برنامهنویسی را شروع به یادگیری کنند. در این پست بنده با توجه به تجربهی خودم سعی میکنم به این پرسش جواب دهم. اگر نمیخواهید کل مطلب را بخوانید، جواب کوتاه این پرسش در یک جمله این است که «بله، برای یادگیری برنامهنویسی باید حتما انگلیسی هم یاد بگیرید»
اگر شما هم مثل من زیاد با گیت از طریق خط فرمان کار میکنید؛ برایتان پیش آمده که بخواهید به ریشهی پروژه بروید. اینجا میخواهیم دستوری بسازیم که اینکار را برایمان انجام دهد.
حتماً تا به حال با برنامه هایی سروکار داشتید که امکان نصب افزونه داشتند. در این پست قرار هست بهتون بگم چطور میشه توی پایتون برنامهای بنویسیم که بشه بهش افزونه اضافه کرد.
معماری افزونهای (plugin architecture) یک شیوه توسعه نرمافزار است که به برنامهنویس این امکان رو میده که بدون نیاز به ویرایش کد های اصلی برنامهش (هسته/main) قابلیت ها رو با ارائه بستههایی به نام پلاگین در اختیار کاربران قرار بده و کاربران هم میتونن به سادگی با توجه به نیازشون از بین این افزونه ها، اون هایی که میخوان رو به برنامهشون اضافه کنن.
از طرفی میشه از این معماری به عنوان یک پلن تجاری نیز استفاده کرد. مثلا شما میتونید برنامه خودتون رو به صورت رایگان و حتی متنباز عرضه کنید اما با فروش پلاگین ها (و یا ارائه خدمات) کسب درآمدکنید. اگر شما هم یک کاربر وردپرس باشید حتما با این پلن آشنا هستید! 😄
پ.ن: پروژه telegram-post-bot من در گیتهاب از همین ساختار پیروی میکنه و توش امکان اضافه کردن پلاگین هست و درواقع همین پروژه بهانهای شد که من پیادهسازی این معماری رو توی پایتون یاد بگیرم و امتحان کنم.
خب وقتشه که دیگه مقدمه رو بذاریم کنار و بریم سراغ اصل مطلب!
بعد از درخواست یکی از دوستان در مورد مستقر کردن(deploy) یک وب اپلیکیشن پایتونی که با جنگو نوشته شده بود، تصمیم گرفتم این مطلب رو بنویسم. اینجا چند چیز را فرض کردم:
- از سکوی (framework) فلسک استفاده میکنید.در مورد جنگو هم البته داستان کمابیش همین هست. در مورد چریپای میتونید با همچین راهنمایی پیش برید یا از کارساز(سرور) وب خود چریپای به اسم چروت (cheroot) استفاده کنید.
- از دبیان (یا توزیعهایی که بر پایه دبیان ساخته شدن مثل اوبونتو) و systemd استفاده میکنید.
- میخواهید از انجینایکس(nginx) به عنوان کارساز وب یا وبسرور استفاده کنید.
- تنها از HTTP میخواهید استفاده کنید و برای سادگی کار فعلا HTTPS را کنار میگزاریم.
- قرار هست وب اپلیکیشن شما در ریشه قرار بگیرد. یعنی از طریق آدرسی مثل
https://example.com/
قابل دسترسی باشد نه مثلاhttps://example.com/somewhere
هیچ میدونستین که تو پایتون میتونین برای لیست ها و توپل ها عبارت هایی مثل [1,2,3]>[0,2,3]
نوشت؟ یعنی میتونی خیلی راحت لیست ها رو باهم مقایسه کنی.
اخیرا در یکی از پروژه هایی که داشتم نیاز داشتم تا دو مقدار ورژن رو باهم مقایسه کنم تا مثلا اگر نسخه دوم از اولی جدید تر بود برنامه خودش رو آپدیت کنه، برای اینکار از یک امکان زبان پایتون یعنی مقایسه لیست ها در پایتون استفاده کردم. با من بهنام سیمجو همراه باش تا برات بگم ماجرا چیه!
زمانی که سیستم شما به هر دلیلی دچار مشکل میشود و سیستمعامل به اصطلاح بالا نمیآید شما به چیزی به نام سیستمعامل زنده (live) نیاز خواهید داشت تا فایلها را برگردانید و سیستمعامل را تعمیر کنید. بسیاری از کاربران (نسبتاً مبتدی) به دلیل دسترسی نداشتن به یک نسخه سیستمعامل زنده دچار مشکلاتی از قبیل از دست دادن اطلاعاتشون هستند. در این پست قصد دارم به این موضوع بپردازم که سیستمعامل زنده چیست، چگونه راهاندازی میشود و چطور میتوان آن را نصب کرد.
سیستمعامل زنده (live) چیست؟
اگر شما کاربر ویندوز هستید حتما میدانید که ویندوز باید ابتدا بر روی سیستم شما نصب شود تا بتوان آن را اجرا نمود اما سیستمعامل ویندوز مانند سیستمعامل های دیگر میتواند بر یک DVD یا یک flash نیز نصب شود. در شرایطی که سیستمعامل شما به درستی کار نمیکند میتوان از این امکان برای تعمیر سیستم و دسترسی به فایل ها استفاده کرد. در چنین شرایطی برای آن که سیستمعامل با هدف اجرا شدن از یک حافظه فلش یا DVD سازگار باشد (سریع و سبک باشد) نسخهای از آن به عنوان live منتشر میشود که قابل حمل است و نیازی به نصب ندارد.
سیستمعامل های غیر ویندوزی
اکثر سیستم عامل های غیر از ویندوز عموما از خانواده شبهیونیکس نسخه لایو جدا ندارند، درواقع اصلا نیازی ندارند! در هنگام نصب این سیستمعامل ها از کاربر سوال میشود که آیا میخواهید نصب شود یا به صورت زنده از آن استفاده کنید.
اما اگر به دنبال استفاده از ویندوز به صورت زنده هستید با کرمهای کامپیوتر همراه باشید.
امروز، دوشنبه ۲ اسفند ۱۴۰۰، جلسه دوم گروه نرمافزار آزاد هرمزگان را با حضور نویسنده این مطلب داشتیم و به پیشنهاد یکی از اعضا، یک بازی جالب کردیم: «به صورت چرخشی در یک دایره هرکس میبایست نام یک ماژول پایتونی، توکار یا غیر توکار، بگوید. نام ماژولها روی تابلو نوشته میشود و کسی حق تکرار اسم یک ماژول را ندارد. کسی که ظرف مدت زمان ۳۰ ثانیه نتوانست اسمی پیدا کند، از بازی خارج میشود و آخرین نفر باقی مانده در بازی برنده است». روشن است که در بازی حق جستجو کردن، نوشتن یا امثالهم را نداشتیم!
بنده در دانشگاه هرمزگان دستیار تدریس یا حل التمرین(TA) برنامهسازی پیشرفته هستم بودم. ضمن تصحیح پروژه دانشجویان به اشتباهاتی درست(!) در کد هایشان برخوردم. قسمت درست کدها این میباشد که «کار» میکنند اما به روش درست پایتون نوشته نشدهاند.
به صورت کلی، جنگو و django-admin تلاش میکنند با پیادهسازی پیشفرضهایی که مناسب هستند زندگی توسعهدهنده را آسانتر کنند. در نتیجه یک توسعه دهنده قادر خواهد بود تا یک اپلیکیشن را در زمان بسیار کمی بالا بیاورد. اما او مجبور است به اکثر پیشفرضها بچسبد. البته سفارشیسازی ممکن است اما اغلب تغییر پیشفرضها نیازمند فهمی درست از اتفاقاتی است که پشت صحنه میافتد که میتواند وقتگیر و نیازمند مهارت باشد.
یکی از ترفند های کدزنی که برنامهنویسان حرفهای معمولا از آن استفاده میکنند استفاده از or و and به جای شرط است. بله درست متوجه شدید، به جای شرط. این ترفند ممکن است باعث شود تا کد شما خوانا نباشد و حتی توصیه شده نیست ولی ترفند به شدت جذابیست که میتواند در خلاصه نویسی کد تاثیر زیادی داشته باشد. این روش در بسیاری زبان ها مانند C, JavaScript, Python و … کاربرد دارد. پس با ما همراه باشید تا این تکنیک زیبا و جذاب را یاد بگیرید.
در پایتون ۳.۸ یک عملگر جدید برای انتصاب معرفی شده است.این عملگر جهت انتصاب در عبارات بزرگتر استفاده میشود. مثلا:
a = 10
if (b := a) == 10:
...
در تکه کد بالا همزمان مقدار b برابر مقدار a میشود و هم مقایسه انجام میشود.
این مقاله از «دیدیر ورنا» میباشد که توسط من، فاروق به فارسی ترجمه شده است. اگر اشتباهی تایپی یا علمی یا املایی مشاهده کردید حتما به مترجم گزارش دهید.
دریافت از فضای ابری فاروق