پیام‌رسان روسی تلگرام، محبوبیت زیادی بین کشور‌هایی مانند ایران داشته و دارد. بسیاری آن را به واتس‌اپ ترجیح می‌دهند و بر این باورند که تلگرام از واتس‌اپ امن‌تر و آزاد‌تر است و همچنین فضای ابری برای ذخیرهٔ پیام‌ها و فایل‌های ارسالی ارائه می‌دهد برخلاف واتس‌اپ که به نظر می‌آید پرونده‌ها (فایل‌ها) و تصاویر را در سرورهایش (کارساز‌هایش) ذخیره نمی‌کند.

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

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

طی دهه‌های گذشته بحث‌های زیادی راجع به این‌که مشخصات زبان‌های برنامه‌نویسی، به عنوان مثال تعیین نوعشان و مثلا ایستا(static) یا پویا(dynamic) بودن چه تاثیری روی روند توسعه نرم‌افزار‌ها دارد. یک مقاله علمی(paper) با مطالعه ۶۰۰ پروژه در گیت‌هاب شامل تقریبا ۷۰ میلیون خط کد و ۳ میلیون کامیت به نتایجی در این مورد رسیده‌است.

کتاب‌خوان یا Ebook reader نوعی تبلت هست که مخصوص مطالعه طراحی شده و معمولا آن‌ها به جای LCD و امثالهم، از صفحه نمایش «جوهر الکترونیکی» استفاده می‌کنند. آسیب زدن صفحه‌نمایش جوهر الکترونیک به چشم تقریبا به اندازه آسیب زدن کتاب کاغذی به چشم می‌باشد.

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

یک اسکرین‌شات از صفحه اپ‌های کتاب‌خوان Poke Pro

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

لوگوی نرم‌افزار رایت‌فریلی

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

اگر بخواهم صادق باشم، واقعا بیاد نمی‌آورم چرا این نرم‌افزار را انتخاب کردیم. یا اینکه دلیل اصلی چه بود. اما الآن می‌توانم در مورد اینکه چرا باید به استفاده از آن ادامه دهیم برایتان مثنوی ۷۰ من بنویسم! و اینکه چرا یک نفر یا گروه باید(یا نباید) این نرم‌افزار را برای وبلاگ‌نویسی انتخاب کنند.

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

معماری افزونه‌ای (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] نوشت؟ یعنی می‌تونی خیلی راحت لیست ها رو باهم مقایسه کنی.

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