جشنهای انتشار اوبونتو معمولا به عنوان بهانهای برای دور هم جمع شدن، یاد دادن، یاد گرفتن و شبکهسازی(به زبان ساده پیدا کردن دوست و آشنا جدید) هستند. این جشنها را اخیرا کمتر داشتیم. ولی این بار برای اوبونتو ۲۴.۰۴ جشن متفاوت برگزار شد: محل بندرعباس بود. بندرعباس زمانی تبعیدگاه بوده و به صورت کلی از شهرهایی مانند تهران، اصفهان و شیراز در رویدادهای فنی عقبتر بوده است. و جای خالی این رویدادها، حتی در حوزهٔ گستردهتر کامپیوتر، در بندرعباس همیشه احساس میشده.
از طرفداران نرمافزار آزاد به دفعات پرسیده میشود که درآمدزایی به چه طریقی امکانپذیر است. جواب رایج این است که نرمافزار آزاد میتواند رایگان نباشد. و درآمدزایی به شیوهی پشتیبانی امکانپذیر است. هرچند که این پاسخ اشتباه نیست اما پاسخی «جامع» نیز نیست. و ضمنا برای تمام انواع نرمافزار نیز صادق نیست. به این معنی که تمام موارد را پوشش نمیدهد. اینجا دو روش تامین بودجه نرمافزار آزاد معرفی میشود. این دو روش در دنیای واقعی به کار گرفته شده است.
تامین مالی دستهجمعی(crowdfunding)
بنده در مورد این روش از طریق یکی از دوستان اطلاع پیدا کردم. در جامعهٔ رمزارز بیتکوین کش غالب نرمافزارهای مربوط به این رمزارز از طریق تامین مالی دستهجمعی بودجه خود را بدست میآورند. انگیزه تامینکنندگان قویتر کردن جامعه و زیستبوم بیتکوین کش است. و اینکار باعث افزایش ارزش رمزارز و سود همه دارندگان آن میشود. یک نرمافزار تحت وب برای اینکار استفاده میشود. نام این نرمافزار flipstarter است. برای اطلاعات بیشتر میتوانید فهرست کمپینها را در flipstarters.bitcoincash.network ببینید. گویا سایر جوامع رمزارز نیز سازوکارهای مشابهی دارند.
این روش علاوهبر جوامع رمزارز، در سختافزار آزاد نیز مورد استفاده قرار میگیرد. در وبسایت crowdsupply میتوانید فهرستی از کمپینها را مشاهده کنید که سختافزارهای آزاد تولید میکنند.
تصویر بالا صفحهی کمپین یک تلفنهمراه با سختافزار و نرمافزار باز و همچنین ویژگیهای حفظ حریمخصوصی را نشان میدهد. همانطور که میبینید، تیم مربوطه درخواست ۲۲۰ هزار دلار را کردهاند که حدود دو برابر آن تامین مالی شده است. همه تامینکنندههای مالی یک تلفنهمراه Precursor دریافت میکنند.
تامین مالی از منابع دولتی
در این روش نیز مانند تامین مالی دستهجمعی، از پولهای مردم تامین مالی انجام میشود. کمیتهای تشکیل میشود که مالیات دریافتی از مردم در آن جمع شده و نمایندگان مردم در آن حضور دارند. این نمایندگان انتخاب میکنند که پول مردم صرف چه هزینهای شود که برای همه مردم سودمند باشد. یکی زیستبومهایی که از این طریق بودجهای دریافت کرده است، دلتاچت است. قبلا دلتاچت را در مطلب پیامرسان آزاد معرفی کردم. اگر صفحه پرسشهای پرتکرار را باز کنید، توضیح داده شده که در سالهای مختلف بودجهها چطور تامین شدهاند.
پروژههای دیگری هم هستند که از منابع مشابه بودجه خود را تامین کردهاند. یکی دیگر از این پروژهها، موتور جستجوی آزاد و نامتمرکز یاسی است. این پروژه قسمتی از بودجه خود را از طریق بنیاد NLnet وابسته به اتحادیه اروپا به دست آورده است. همچنین در گذشته و در مطلبی که پیامرسانهای آزاد را معرفی شد، ماتریکس یکی از گزینههای آزاد، امن و نامتمرکز بود. یکی از نرمافزارهای سرور ماتریکس به اسم کوندویت(Conduit) قسمتی از بودجه خود را از وزارت علوم آلمان به دست آورده است.
حدود ۴ سال پیش با پروژهٔ آواهای مشترک موزیلا آشنا شدم. آن زمان مجموعه دادهٔ (Dataset) فارسی پروژه تنها حدود ۲ گیگابایت بود. الآن زبان فارسی تقریبا ۱۰ گیگابایت مجموعه داده دارد. در این مطلب راجع به پروژه و اهمیت آن برای پروژههای یادگیری ماشینی و هوش مصنوعی توضیح میدهم. البته موضوع دورهمی نهم کرمهای کامپیوتر هم در همین مورد بود.
با پی در پی سانسور شدن پیامرسانهای مختلف در کشورمان ایران، مردم به دنبال پیامرسانهای دیگر میگردند. از طرفی، با توجه به این که دادههای ارسالی از طریق پیامرسان باید خصوصی بین فرستنده و گیرنده یا گیرندهها بمانند، امن بودن پیامرسان مهم است. و البته پیشنیاز امن بودن یک پیامرسان، آزاد بودن آن است. اگر یک پیامرسان نرمافزار آزاد یا متنباز یا دستکم با کد منبع در دسترس نباشد، نمیتوانیم در مورد امن یا ناامن بودن آن نظر دهیم. به همین صورت نمیتوانیم در مورد امن بودن واتساپ نظر دهیم چرا که کد منبع آن در دسترس نیست. واتساپ ادعا میکند که از رمزنگاری سراسری استفاده میکند و اینگونه، تنها فرستنده و گیرنده میتوانند دادههای رد و بدل شده را بببنید؛ اما در حالی که کد منبع واتساپ در دسترس نیست، چطور میتوانیم مطمئن شویم که واتساپ واقعا حقیقت را میگوید؟
روبوکد یک بازی برنامهنویسی است که در آن با زبان جاوا، اقدام به برنامهنویسی کردن روباتهای کوچکی میکنید که با بقیهٔ روباتها باید بجنگند. مبارزه میتواند به صورت تکبهتک با یک روبات دیگر یا به صورت گروهی با مثلاً ۹ روبات دیگر باشد. هرچند که باید روباتهای خود را به زبان جاوا بنویسید، اما دانش عمیقی از این زبان مورد نیاز نیست و در صورتی برنامهنویس یکی از زبانها از همین خانواده باشید، میتوانید بهراحتی یک روبات بسازید.
قبلاً راجع به کتابخوان اونیکس بوکس پوک پرو صحبت کردم و راجع به این که چرا تصمیم گرفتم یک تبلت اندرویدی با صفحهنمایش جوهر الکترونیکی (E-ink) کاغذ الکترونیکی (e-paper) داشته باشم و این تصمیمم چه تأثیری در سلامت چشمانم دارد. متأسفانه تبلت قبلی از میکروفون پشتیبانی نمیکرد و با وجود اندروید ۶ نمیتوانستم از نرمافزارهای جدیدتر روی تبلتم استفاده کنم. و البته از همه مهمتر خرابکاری بنده حین تعمیر کتابخوان باعث آسیب به صفحهاش و در نتیجه غیرقابل استفاده شدنش شد و مجبور شدم آن را در ایسام با قیمتی بسیار پایین به عنوان معیوب به فروش برسانم!
به عنوان یک نتیجهٔ این خرابکاری، باید دنبال وسیلهای جدید به عنوان تبلت اندرویدی میبودم و این بار از همان شرکت قبلی تبلت Boox Leaf را خریداری کردم که با صفحه ۷ اینچ کمی بزرگتر از پوک بود. البته در زمان تصمیم من برای خرید، یک سال از ورود لیف به بازار میگذشت و Leaf 2 جدیدترین محصول این شرکت با اندروید ۱۱ بود. اما به دلیل دو برابر بودن تعداد هستههای پردازندهٔ لیف، قید اندروید ۱۱ را زدم و نهایتاً Boox Leaf را خریدم.
در این مطلب، مواردی که در مطلب قبلم راجع به پوک پرو نوشتهام را تکرار نمیکنم و روی تغییرات لیف نسبت به پوک تمرکز میکنم.
از بزرگترها میشنوم که صفحهنمایشهای قدیمیتر اشعههایی از خود ساطع میکردند که باعث آسیب زدن به چشم و بروز سرطان میشدند. البته منظور از بروز سرطان اینجا به این معنی نیست که هرکس که با آن صفحهنمایشهای غولآسا کار میکرد سرطان میگرفت اما به این معنی است که شانس ابتلا به سرطان در افرادی که بیشتر در معرض صفحهنمایشهای CRT بودند، بیشتر میشد. صفحهنمایشهای امروزی بسیاری از مشکلات صفحهنمایشهای قدیمی را ندارند. در عین حال که سبکتر و نازکتر و کممصرفتر هستند به چشم نیز کمتر آسیب میزنند. اما هنوز هم خیرهشدن طولانی مدت به صفحهنمایش میتواند به چشمما آسیب بزند.
ما اهالی کامپیوتر ساعتها جلو صفحهی کامپوتر هستیم و این مسئله دغدغه خیلی ها از جمله خود من هست؛ برای همین، راهکار ها و مواردی که پیدا کردم را در این مطلب با شما به اشتراک خواهم گذاشت.
زبانها معمولاً یا تعیین نوع پویا دارند؛ مانند کامن لیسپ، پایتون، جاوا اسکریپت یا دارای تعیین نوع ایستا هستند؛ مانند سی و سیپلاسپلاس، راست و دوباره کامن لیسپ (معمولاً پیادهسازیهای مدرن کامن لیسپ، مانند SBCL، اجازه میدهند بنا به خواست برنامهنویس، قسمتی از کد، دارای تعیین نوع ایستا و قسمتی دارای تعیین نوع پویا باشد).
در پایتون، تعیین نوع متغیرها، مقدار یا مقادیر بازگشتی توابع و متدها و آرگومانهای توابع اجباری نیست. اما میتوانیم با تعیین نوع و استفاده از یک نرمافزار Linter به کاهش خطاهای خود پیش از اجرا کمک کنیم.
def f(x: int) - > int:
return x * 2 + 1
با این که تعیین نوع آرگومان یا ورودی تابع f که x باشد و مقدار بازگشت آن یعنی x*2 + 1
در اجرا تأثیری ندارد، اما زمانی که بخواهم مقدار بازگشت تابع f را با یک رشته نویسه (کاراکتر) جمع کنم به من اخطار داده میشود:
بدیهی است که اجرای این برنامه به وسیلهٔ پایتون نیز باعث خطا میشود. در مقابل زمانی که نوع ورودی و خروجی تابع را مشخص نمیکنم اخطاری داده نمیشود:
در ادامه با تعیین نوع ورودیها و خروجی توابع و متدها و ویژگیهای یک کلاس آشنا میشویم.
مسئلهٔ ۸ وزیر میپرسد که در یک صفحهٔ شطرنج چهطور میتوانیم ۸ مهرهٔ وزیر را چنان قرار دهیم که هیچکدام در معرض تهدید دیگری نباشد. در ریاضیات و علوم کامپیوتر، مسئلهٔ n وزیر یک نسخهٔ تعمیمیافته از ۸ وزیر میباشد که برای اکثر nهای صحیح مثبت (یا طبیعی) بیشتر از یک چینش وجود دارد.
قبلاً یک روش برای پیدا کردن راه حل برای مسئلهٔ ۸ وزیر با استفاده از الگوریتم ژنتیک ارائه دادم. حال میخواهم یک روش دیگر برای همین هدف اما به صورت یک الگوریتم قطعی و تصادفی به همراه کد پایتون ارائه دهم.
زمانی که از یک برنامهنویس پایتونی بخواهید یک تابع ساده بنویسد تا ارقام یک عدد را جمع کند و برگرداند، احتمالاً ابتدا عدد را به یک رشته تبدیل میکند و سپس رشته را به لیست (فهرست) و نهایتاً تکتک اعضای لیست را که ارقام عدد به صورت رشتههای تکنویسهای هستند به عدد تبدیل میکند و سپس آنها را با هم جمع میکند. ولی الزاماً اولین روشی که برای حل مسئله به ذهنمان میرسد، بهترین روش نیست. در این مطلب دو الگوریتم برای جمع ارقام یک عدد صحیح به صورت بازگشتی و تکرارشونده به همراه کد های پایتون آن ها ارائه میدهم.
صدای بوق ممتد از لحاظ فنی همان موج سینوسی با فرکانسی (بسامد) ثابت است. در این مطلب یک کد ساده و کوتاه پایتون ارائه میدهم که بدون استفاده از کتابخانههای اضافی، میتواند یک بوق را با هر فرکانسی تولید کند و در یک فایل صوتی wave ذخیره کند.
مسئلهٔ ۸ وزیر یک تمرین معروف در علوم کامپیوتر و ریاضیات میباشد. این مسئله در مورد یک صفحهٔ شطرنج رایج و مهرهٔ وزیر در این بازی فکری میباشد. در ریاضیات ثابت میشود که میتوان ۸ وزیر را در یک صفحهٔ شطرنج چنان قرار داد که هیچکدام از وزیرها، دیگری را تهدید نکنند. با تعمیم این مسئله در ریاضیات، ثابت میشود که در یک صفحهٔ شطرنج به ضلع n، میتوان تعداد n وزیر قرار داد؛ چنانچه هیچکدام دیگری را تهدید نکنند. در علوم کامپیوتر میتوان با روشهای مختلفی این مسئله را حل کرد و به یک چینش از مهرههای وزیر رسید که هیچکدام دیگری را تهدید نکنند. یکی از این روشها «الگوریتم ژنتیک» است.
پیامرسان تلگرام، محبوبیت زیادی بین کشورهایی مانند ایران داشته و دارد. بسیاری آن را به واتساپ ترجیح میدهند و بر این باورند که تلگرام از واتساپ امنتر و آزادتر است و همچنین فضای ابری برای ذخیرهٔ پیامها و فایلهای ارسالی ارائه میدهد برخلاف واتساپ که به نظر میآید پروندهها (فایلها) و تصاویر را در سرورهایش (کارسازهایش) ذخیره نمیکند.
همچنین عدهای آزاد و متنباز بودن کلاینتهای (کارخواهها) تلگرام را دلیلی بر امن بودن آن میدانند. واتساپ برخلاف تلگرام رمزگذاری سراسری دارد به این معنی که تنها فرستنده و گیرندهٔ پیام میتوانند دادههای ردّ و بدل شده را بخوانند و حتی خود واتساپ که این دادهها را انتقال میدهد نمیتواند شنود کند. با این حال با توجه به این که کد منبع کلاینتهای واتساپ در دسترس نیست، نمیتوان این مورد را مطمئن بود.