در حال بارگزاری

حتماً تا به حال با برنامه هایی سروکار داشتید که امکان نصب افزونه داشتند. در این پست قرار هست بهتون بگم چطور میشه توی پایتون برنامه‌ای بنویسیم که بشه بهش افزونه اضافه کرد.

معماری افزونه‌ای (plugin architecture) یک شیوه توسعه نرم‌افزار است که به برنامه‌نویس این امکان رو میده که بدون نیاز به ویرایش کد های اصلی برنامه‌ش (هسته/main) قابلیت ها رو با ارائه بسته‌هایی به نام پلاگین در اختیار کاربران قرار بده و کاربران هم می‌تونن به سادگی با توجه به نیازشون از بین این افزونه ها، اون هایی که می‌خوان رو به برنامه‌شون اضافه کنن.

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

پ.ن: پروژه telegram-post-bot من در گیت‌هاب از همین ساختار پیروی می‌کنه و توش امکان اضافه کردن پلاگین هست و درواقع همین پروژه بهانه‌ای شد که من پیاده‌سازی این معماری رو توی پایتون یاد بگیرم و امتحان کنم.

خب وقتشه که دیگه مقدمه رو بذاریم کنار و بریم سراغ اصل مطلب!

بهنام سیم‌جو29-05-1401 تخصصی

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

  • از سکوی (framework) فلسک استفاده می‌کنید.در مورد جنگو هم البته داستان کمابیش همین هست. در مورد چری‌پای میتونید با همچین راهنمایی پیش برید یا از کارساز(سرور) وب خود چری‌پای به اسم چروت (cheroot) استفاده کنید.
  • از دبیان (یا توزیع‌هایی که بر پایه دبیان ساخته شدن مثل اوبونتو) و systemd استفاده می‌کنید.
  • میخواهید از انجین‌ایکس(nginx) به عنوان کارساز وب یا وب‌سرور استفاده کنید.
  • تنها از HTTP می‌خواهید استفاده کنید و برای سادگی کار فعلا HTTPS را کنار میگزاریم.
  • قرار هست وب اپلیکیشن شما در ریشه قرار بگیرد. یعنی از طریق آدرسی مثل https://example.com/ قابل دسترسی باشد نه مثلا https://example.com/somewhere

فاروق کریمی‌زاده05-05-1401 تخصصی

هیچ می‌دونستین که تو پایتون می‌تونین برای لیست ها و توپل ها عبارت هایی مثل [1,2,3]>[0,2,3] نوشت؟ یعنی می‌تونی خیلی راحت لیست ها رو باهم مقایسه کنی.

اخیرا در یکی از پروژه هایی که داشتم نیاز داشتم تا دو مقدار ورژن رو باهم مقایسه کنم تا مثلا اگر نسخه دوم از اولی جدید تر بود برنامه خودش رو آپدیت کنه، برای اینکار از یک امکان زبان پایتون یعنی مقایسه لیست ها در پایتون استفاده کردم. با من بهنام سیم‌جو همراه باش تا برات بگم ماجرا چیه!

بهنام سیم‌جو29-04-1401 تخصصی

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

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

بهنام سیم‌جو13-12-1400 تخصصی

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

سیستم‌عامل زنده (live) چیست؟

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

سیستم‌عامل های غیر ویندوزی

اکثر سیستم عامل های غیر از ویندوز عموما از خانواده شبه‌یونیکس نسخه لایو جدا ندارند، درواقع اصلا نیازی ندارند! در هنگام نصب این سیستم‌عامل ها از کاربر سوال می‌شود که آیا می‌خواهید نصب شود یا به صورت زنده از آن استفاده کنید.

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

بهنام سیم‌جو06-12-1400 عمومی

امروز، دوشنبه ۲ اسفند ۱۴۰۰،‌ جلسه دوم گروه نرم‌افزار آزاد هرمزگان را با حضور نویسنده این مطلب داشتیم و به پیشنهاد یکی از اعضا، یک بازی جالب کردیم: «به صورت چرخشی در یک دایره هرکس میبایست نام یک ماژول پایتونی، توکار یا غیر تو‌کار،‌ بگوید. نام ماژول‌ها روی تابلو نوشته می‌شود و کسی حق تکرار اسم یک ماژول را ندارد. کسی که ظرف مدت زمان ۳۰ ثانیه نتوانست اسمی پیدا کند، از بازی خارج می‌شود و آخرین نفر باقی مانده در بازی برنده است». روشن است که در بازی حق جستجو کردن، نوشتن یا امثالهم را نداشتیم!

بنده در دانشگاه هرمزگان دستیار تدریس یا حل التمرین(TA) برنامه‌سازی پیشرفته هستم بودم. ضمن تصحیح پروژه دانشجویان به اشتباهاتی درست(!) در کد هایشان برخوردم. قسمت درست کد‌ها این می‌باشد که «کار» می‌کنند اما به روش درست پایتون نوشته نشده‌اند.

فاروق کریمی‌زاده26-11-1400 تخصصی

به صورت کلی، جنگو و django-admin تلاش می‌کنند با پیاده‌سازی پیش‌فرض‌هایی که مناسب هستند زندگی توسعه‌دهنده را آسان‌تر کنند. در نتیجه یک توسعه دهنده قادر خواهد بود تا یک اپلیکیشن را در زمان بسیار کمی بالا بیاورد. اما او مجبور است به اکثر پیش‌فرض‌ها بچسبد. البته سفارشی‌سازی ممکن است اما اغلب تغییر پیش‌فرض‌ها نیازمند فهمی درست از اتفاقاتی است که پشت صحنه می‌افتد که می‌تواند وقت‌گیر و نیازمند مهارت باشد.

فاروق کریمی‌زاده18-11-1400 تخصصی

یکی از ترفند های کدزنی که برنامه‌نویسان حرفه‌ای معمولا از آن استفاده می‌کنند استفاده از or و and به جای شرط است. بله درست متوجه شدید، به جای شرط. این ترفند ممکن است باعث شود تا کد شما خوانا نباشد و حتی توصیه شده نیست ولی ترفند به شدت جذابی‌ست که می‌تواند در خلاصه نویسی کد تاثیر زیادی داشته باشد. این روش در بسیاری زبان ها مانند C, JavaScript, Python و … کاربرد دارد. پس با ما همراه باشید تا این تکنیک زیبا و جذاب را یاد بگیرید.

بهنام سیم‌جو12-11-1400 تخصصی

در پایتون ۳.۸ یک عملگر جدید برای انتصاب معرفی شده است.این عملگر جهت انتصاب در عبارات بزرگتر استفاده می‌شود. مثلا:

a = 10
if (b := a) == 10:
    ...

در تکه کد بالا هم‌زمان مقدار b برابر مقدار a می‌شود و هم مقایسه انجام می‌شود.

فاروق کریمی‌زاده14-09-1400 تخصصی

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

دریافت از فضای ابری فاروق

فاروق کریمی‌زاده13-09-1400 تخصصی

در نسخه ۳.۱۰ پایتون یک ویژگی جدید و جالب به زبان اضافه شده است: pattern matching(به فارسی‌: تطبیق الگو). اگر با سوئیچ‌کیس(switch-case) در زبان‌های سی و سی‌پلاس‌پلاس کار کرده‌اید، پترن‌مچینگ یک نسخه پیشرفته‌تر از switch-case مي‌باشد. در پست «از سوییچ‌کیس تا پترن‌مچینگ» از روزبه شریف‌نسب می‌توانید در مورد این ساختار‌ها در زبان‌های مختلف و تاریخچه آن‌ها بخوانید.

فاروق کریمی‌زاده تخصصی

range(end)
range(start, end)
range(start, end, step)

یک شی range در پایتون بسیار شبیه یک لیست از اعداد مرتب است اما توجه کنید که با یک نمونه از کلاس range سروکار دارید و نه یک لیست یا توپل.

فاروق کریمی‌زاده02-09-1400 تخصصی

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

اوایل تنها از i3 به همراه i3bar و dmenu استفاده می‌کردم اما بعدا زوبونتو را نصب کرده و مدیر پنجره پیشفرضش که xfwm باشد را با i3 جایگزین کردم. و به این ترتیب دردسر پیکره‌بندی هزار و یک چیز دیگر را نداشتم و در عین حال از i3 استفاده می‌کردم.

محیط کار فعلی فاروق به در حال نوشتن پست وبلاگ

فاروق کریمی‌زاده تخصصی

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

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