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

اگر شماهم توی مخازن دبیانتون احساس کندی می‌کنید یا با ارور های متعدد 403 و 404 روبرو می‌شید ، این پست رو تا انتها بخونید D:

حالا این netselect چی هستش؟

از خیلی مدت پیش، کاربرای توزیع هایی مثل آرچ از ابزاری به اسم reflector استفاده می کردن. این ابزار توی ویکی آرچ هم اسمش اومده و یکی از پر استفاده ترین ها برای انتخاب سریع ترین مخزن ممکن توی آرچه.

من خودم تا مدت ها نمی‌دونستم که برای دبیان هم همچین چیزی وجود داره، (توی اوبونتو میشه از برنامه گرافیکی که برای مدیریت مخازن هست ، سریعترین مخزن ممکن رو انتخاب کرد. همچین برنامه ای در دبیان به صورت پیشفرض و با همون پشتیبانی وجود نداره) تا اینکه به واسطه یکم دبیان گردی با این ابزار آشنا شدم. کارش این هستش که مثل reflector سریع‌ترین مخزن apt رو برای شما انتخاب می‌کنه.

نصب و راه‌اندازی

برای نصب netselect کافیه که دستور زیر رو داخل ترمینال اجرا کنید:

sudo apt install netselect-apt

بعد از اینکه نصبش کردین بریم تا کار رو باهاش یادبگیریم 🙂

طریقه استفاده

برای استفاده از این دستور کافیه توی ترمینال

sudo netselect-apt 

رو اجرا کنیم.

حالا چه امکاناتی داره؟

تعیین نسخه / کدنیم دبیان

به عنوان مثال برای اینکه تعیین کنیم مخازنی که برای ما پیدا می‌کنه برای کدوم نسخه از دبیان باشه (مثلاً دبیان sid یا testing) باید جلوی دستور کدنیم دبیان روهم بنویسیم:

sudo netselect-apt stable

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

تعیین کشور

همینطور شما می‌تونید توی این دستور تعریف کنید تا مخازن مخصوص یک کشور رو برای شما لیست کنه:

sudo netselect-apt -c country

برای مثال من میخوام سریعترین مخزن ممکن که داخل ایران هستش رو برای خودم تنظیم کنم:

sudo netselect-apt -c iran

یک معماری دیگه؟

بله درست خوندید D: شما میتونید با netselect حتی مخازن مخصوص یک معماری دیگه روهم دریافت کنید:

مثلا من اگه بخوام سریعترین مخزن برای معماری ۳۲ بیتی رو پیدا کنم ، باید از فلگ a- و یا arch– استفاده کنم:

sudo netselect-apt -a i386

و یا

sudo netselect-apt --arch i386


بعد از اجرای این دستور سریعترین مخزن ۳۲ بیتی برای ما انتخاب میشه.

دیگه چه فلگ هایی داره؟

یک فلگ برای تنظیم مخازن غیررایگان (non-free) و یا فعال کردن مخازن سورس (deb-src) وجود داره.
برای مثال اگه من بخوام یک مخزنی رو پیدا کنم در ایران، برای معماری ۳۲ بیتی به همراه مخازن غیررایگان و سورس باید دستور رو با فلگ های زیر اجرا کنم:

sudo netselect-apt -a i386 -c iran -n -s stable

فلگ n- برای فعال کردن مخازن non-free و فلگ s- برای فعال کردن مخازن سورس به کار میرن 🙂

همینطور اگر مایل بودید man-page این دستور رو به صورت آنلاین و یا از طریق خود ترمینال با وارد کردن دستور زیر می‌تونید بخونید:

man netselect-apt

سهراب بهدانی24-12-1402 تخصصی

سلام! جعفر هستم و این اولین نوشته‌ام توی وبلاگ کرم های کامپیوتره 🙂

حالا قراره درباره چی حرف بزنم؟ یک چند وقتی درگیر این بودم که لیبره‌ترنسلیت که یک مترجم آزاده(این) رو برای زبان فارسی بهبود بدم. یعنی کاری کنم که ترجمه بهتری برای زبان فارسی داشته باشه.

قبلش بگم که لیبره ترنسلیت چیه؟

لیبره ترنسلیت یک نرم‌افزار ترجمه ماشینی آزاده که بر پایه کتابخانه‌های آرگوز ترنسلیت(argos-translate) توسعه داده شده که با یک رابط تحت وب به صورت سرویس ترجمه ماشینی نامتمرکز در دسترسه. مثلا نمونه‌ای که توسط توسعه‌دهندگانش مدیریت میشه اینه:

https://libretranslate.com/

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

حالا من می‌خواستم چیکار کنم؟

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

راهکار این بود که داده های بهتری جمع کنیم و مدل جدید آموزش بدیم. این کار رو کردیم و دوستانی هم کمک بسیاری کردند در این مسیر و حدود ۲ میلیون خط ترجمه جمع شد(عموما سر هم کردن دیتاست های آزاد دیگه). یک دوست عزیز دیگه‌ای لطف کردند سخت افزارشون رو برای آموزش مدل در اختیار من گذاشتن(برای آموزش این‌جور مدل‌ها به سخت افزار قوی از جمله GPU قوی نیازه که من ندارم :)‌ و مدل رو با حدود پنج ساعت پردازش آموزش دادیم، اما خروجی از مدل لیبره ترنسلیت هم بدتر بود!

با عیب‌یابی به این نتیجه رسیدیم که هم کیفیت این داده‌ها کافی نیست و هم حجمشون. مشکل دیگه این بود که بخش قابل توجهی از داده‌ها ترجمه واژه‌نامه‌وار (و نه جمله در برابر جمله) بود که کار رو خراب می‌کرد.

یک مدتی گذشت در همین موضوع من یک برنامه ای چیدم برای حلش و یک ارائه‌ای در دورهمی‌های کرم‌های کامپیوتر دادم. با این موضوع که که چه کنیم که مشکل رو حل کنیم. دوستان لطف کردن کمک کردن و هم‌چنین حمایت بیشتر :))

خواستیم شروع کنیم من یک مقدار اسکریپت برای خودکار کردن استخراج داده، از اینترنت و تبدیلشون به ترجمه با گوگل ترنسلیت، نوشتم و یکم داده جمع شد، بعد از چند روز که داشتم توی اینترنت چرخ می‌زدم به این لینک رسیدم:

https://opus.nlpl.eu/NLLB/en&fa/v1/NLLB

همینجا بود که فهمیدیم این همه کار به قولی الکی بوده :/ یعنی چی؟ یعنی ما برنامه داشتیم با کلی پردازش و بازبینی انسانی ۵ میلیون خط ترجمه خوب جمع کنیم اما اینجا حجم بسیار بزرگی یعنی ۲۵ میلیون خط ترجمه انگلیسی به فارسی به حجم ۴۷ گیگابایت خوابیده بود!

حالا چرا پیگیر آموزش مدل نشدم؟

اول اینکه من سخت افزار لازم رو برای آموزش نداشتم، و اینکه اگه کسی مثل دفعه قبل زحمت آموزش رو می‌کشید مثلا با اون سخت‌افزار قبل (یعنی گرافیک با ۱۲ گیگابایت حافظه ویدئویی) و اگه زمان آموزش رو خطی فرض کنیم ۶۲.۵ ساعت نیاز بود که گرافیک جون بکنه که با این حجم داده مدل رو آموزش بده! و این از توان من خارجه.

و باید چیکار کرد؟

این کار متاسفانه خارج از توان منه. اما اگر کسی بخواد این کار رو انجام بده نیاز داره به کارت گرافیک قوی و زمان برای آموزش یا اگه اینها رو نداره می‌شه دو سه روزی یک سرور GPU دار اجاره کنه و این کار رو انجام بده، البته کمک دیگه‌ای برای این کار نیاز باشه من می‌تونم همین چند خط تجربه‌ای که سر این موضوع کسب کردم در اختیارش بذارم 🙂

جعفر فرقانلوژ21-12-1402 تخصصی

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

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

الان ممکنه با نوشتن این مطلب یک عده بیان و بخوان که براشون واتساپ و اینستا هک کنیم! این موضوع حتی از مسئله‌ای که بالا گفتم هم بدتر و کثیف‌تره! این مسئله رو برای همیشه روشن کنم که امتحان رمزهای مختلف و حمله با فهرست رمزعبور(Password list) و Brute Force هک حساب نمی‌شه! و دارای ارزش علمی خیلی اندکی هست! پس بدونید که اگر یک موقعی حساب تلگرام یا اینستاتون لو رفت، مشکل از خودتون بود که رمز ناایمن استفاده کردید و درواقع کرک شدید و کلمهٔ هک رو به کار نبرید!

بهنام سیم‌جو22-11-1402 عمومی

چند هفته پیش تولد ۹ سالگی وبلاگ‌مون بود و توی این مطلب می‌خوام از تاریخچه ۹ ساله وبلاگمون براتون بگم. من و فاروق از دوران راهنمایی(نسل‌های جدید بخوانند متوسطه اول) با هم دوستیم و جفتمون به کامپیوتر و الکترونیک علاقه داشتیم. اولین وبلاگمون رو به اسم pcdanesh روی سرویس بلاگفا ایجاد کردیم و کمی بعد به بلاگ از شرکت بیان منتقلش کردیم.

اون زمان فاروق یک کتابچه از مجموعه‌ی کلید داشت که در مورد وبلاگ‌نویسی گفته بود؛ نوشته بود که در ابتدا شما برای هیچ‌کس می‌نویسید و کسی مطالبتون رو نمی‌خونه، نباید این مسئله دلسردتون کنه. کم‌کم بازدیدکننده‌ها بیشتر می‌شن و … به همین خاطر تعداد کم بازدیدها ما رو از نوشتن مطلب منصرف نکرد.

۱۶ دی ماه سال ۹۴ تاریخ اولین مطلبمون روی وبلاگ pcdanesh.blog.ir هست. کمی که مطلب نوشتیم متوجه شدم اسمی که انتخاب کرده بودیم (pcdanesh) به شدت تکراری هست. اینجا بود که تصمیم گرفتیم یه ایده نو بدیم که کسی تا به‌حال بهش نرسیده!

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

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

ما کرم‌های کامپیوتر هستیم و براتون از تجربیات خودمون می‌نویسیم

و به این ترتیب اسم کرم‌های کامپیوتر (pcworms) به وجود اومد. البته pc مخفف personal computer به معنی رایانه شخصی هست، ولی خب اسم کرم‌های کامپیوتر شخصی زیاد جالب نیست 😄

اسم و آدرس وبلاگ pcdanesh رو تغییر دادیم. در واقع تاریخ دقیق این جابه‌جایی مشخص نیست برامون، و یطورایی چون pcdanesh و pcworms از هم جدا نیستن و اولین مطلب هر دو ۱۶ دی ماه هست این تاریخ رو به عنوان تولد وبلاگمون در نظر می‌گیریم.

ما سال ها روی سرویس blog.ir مطلب نوشتیم و کلی خاطرات شیرین داریم. مثلا یکبار فاروق بعد از نوشتن مطلب توی وبلاگ از سیستم خارج نشد و برادرش که اون موقع سن زیادی نداشت اومد و از روی شیطنت یه مطلب نوشت و پست کرد و توش به یکی از هم‌کلاسی هاش که باهاش زیاد خوب نبود بد و بیراه گفته بود اون موقع ما یه ربات داشتیم که پست های جدید رو از روی RSS می‌خوند و تو تلگرام می‌فرستاد. من متوجه شدم که چنین مطلبی منتشر شده و سریع تمام دسترسی های حساب فاروق رو بستم، رمزش رو عوض کردم، مطلب رو پاک کردم و به فاروق زنگ زدم، فاروق که تازه رفته بود بیرون فهمید جریان چیه و برگشت و داداشش رو سرزنش کرد! 😂

سیر تکاملی چت ها هم جالب بود، خیلی وقت پیش‌ها فقط یک چت-روم IRC روی شبکه freenode داشتیم. الان دیگه حتی شبکه freenode هم مثل سابق دیگه نیست! من هم همونطور که گفتم یه بات تو تلگرام داشتم که مطالب رو می‌فرستاد. اون زمان تلگرام هنوز فیلتر یا سانسور نبود و یه طورایی پیام‌رسان رسمی بود! بعد‌ها فاروق یک سرور ماتریکس روی Nano Pi خودش اجرا کرد و عضویت در اون با محدودیت بود و برای گرفتن اکانت باید به فاروق ایمیل ارسال میشد. یه طورایی اون گروه فقط برای دنبال کننده های قدیمی وبلاگمون بود که از خیلی وقت پیش با نظراتشون رو وبلاگ بهمون دلگرمی می‌دادن! بعدا تصمیم گرفتیم که گروه رو بزرگ‌تر کنیم و به سرور های ماتریکس موزیلا رفتیم و علاوه بر اون توی تلگرام هم گروه ساختم و این دو تا رو بهم پل کردیم.

دانشجو شدیم و کلی اتفاقات رو تجربه کردیم! تا سال ۱۴۰۰ که تصمیم گرفتیم از بلاگ جدا بشیم و یک سایت وردپرس داشته باشیم. با بلاگ (بیان) خداحافظی کردیم، بار و بندیل رو جمع کردیم و اومدیم اینجا!

در حال حاضر هم دستاورد جدیدمون دورهمی‌های کرم‌های کامپیوتر هست که به صورت هفتگی با موضوعات مختلف برگذار میشه.

تجربیات‌ما در زمینه وبلاگ نویسی

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

بهنام سیم‌جو13-11-1402 عمومی

حدود ۴ سال پیش با پروژهٔ آواهای مشترک موزیلا آشنا شدم. آن زمان مجموعه داده‌ٔ (Dataset) فارسی پروژه تنها حدود ۲ گیگابایت بود. الآن زبان فارسی تقریبا ۱۰ گیگابایت مجموعه داده دارد. در این مطلب راجع به پروژه و اهمیت آن برای پروژه‌های یادگیری ماشینی و هوش مصنوعی توضیح می‌دهم. البته موضوع دورهمی نهم کرم‌های کامپیوتر هم در همین مورد بود.

فاروق کریمی‌زاده30-10-1402 عمومی

الگوریتم کوله‌پشتی، یک الگوریتم از نوع حریصانه هست. در این مطلب در مورد الگوریتم کوله‌پشتی یک و صفر (0/1 knapsack algorithm) می‌نویسم. برای مثال فرض کنید یک کوله پشتی با حجم ۹۰ لیتر دارید؛ و وسایلی که دارید علاوه بر حجم برای شما یک ارزش یا اهمیت دارند و احتمالا همه آن‌ها جا نمی‌شوند. حال به چه صورت وسایل را انتخاب می‌کنید تا بیشترین ارزش را در کوله پشتی خود داشته باشید؟ در الگوریتم کوله‌پشتی یک و صفر یا یک شی انتخاب می‌شود و یا خیر! امکان برش و تکه کردن نیست.

بهنام سیم‌جو28-10-1402 تخصصی

سلام! به مسئله‌ای برخوردم که نیاز داشت یه آرایه با طول نامعلوم رو از کاربر بگیریم. اینطوری که کاربر شروع می‌کنه به وارد کردن ورودی‌ها تا زمانی که کلمه end رو بزنه و تموم کنه. مسئله ساده‌ای هست و در کل زیاد چیز شاخی نیست!!

چالشش اینه که ما تعداد اعضا رو نمی‌دونیم و طول آرایه هم ثابته کنه، پس در حالت عادی مجبوریم ورودی‌ها رو بریزیم تو یه لیست تا آخرش که کار کاربر تموم شد همه رو مثلا منتقل کنیم به یه آرایه با طول لیسته، یعنی داریم دو بار هر عضو رو بررسی می‌کنیم که هزینه زمانی اینجا میشه 2n(معادل O(n)) از طرفی توی زبانی مثل C که اصلا لیست نیست و باید مثلا از SLL(به انگلیسی: Singly Linked List و به فارسی: فهرست پیوندی یک‌طرفه) استفاده کرد.

#include <stdio.h>
#include <stdlib.h>

double* rec(int i) {
    char input[100];  // Adjust the input string size as needed
    fgets(input, sizeof(input), stdin);
    
    if (strcmp(input, "end\n") == 0) {
        double* result = (double*)malloc(i * sizeof(double));
        return result;
    }

    double* arr = rec(i + 1);
    sscanf(input, "%lf", &arr[i]);
    return arr;
}

int main() {
    double* result = rec(0);

    // Printing the result
    for (int i = 0; result[i] != 0.0; ++i) {
        printf("%lf ", result[i]);
    }

    free(result);    // Free the allocated memory

    return 0;
}

مشابه این کد در پایتون به این شکل نوشته می‌شود(برای آرایه از numpy استفاده شده).

from numpy import np


def rec(i=0):
    inp = input()
    if inp == "end":
        return np.zeros(i)
    arr = rec(i + 1)
    arr[i] = int(inp)
    return arr

در واقع این شیوه به شکلی هوشمندانه از پشته(به انگلیسی: stack) خود سیستم برای ذخیره موقتی اعضا و شمارش آن ها استفاده می‌کنه. اما باید دقت کنید که این روش نامحدود هم نیست چون به اندازه پشته محدود میشه.

کد این سیستم‌عامل را می‌توانید از اینجا دانلود کنید!

دانلود

بهنام سیم‌جو22-10-1402 عمومی

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

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

تا الان که این مطلب رو می‌نویسم ۶ دورهمی برگزار شده که به ترتیب موضوعات زیر رو داشتن:

  1. معرفی دورهمی و این که می‌خواییم چیکار کنیم
  2. فاروق کریمی‌زاده: صفحه‌نمایش کاغذ الکترونیک
  3. فاروق کریمی‌زاده: سخت‌افزار‌های متن‌باز
  4. بهنام سیم‌جو: توصیه هایی برای برنامه‌نویسان تازه‌وارد
  5. جعفر فرقانلوژ: فراجستجوگر‌های سرکس و موآ + بحث راجع به معادل های فارسی در کامپیوتر!
  6. پرسش و پاسخ درمورد فراجستجوگر‌های سرکس و موآ و بحث گفت‌وگو راجع به مطلب حریم خصوصی و عصر اطلاعات

بهنام سیم‌جو27-08-1402 عمومی

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

روبوکد یک بازی برنامه‌نویسی است که در آن با زبان جاوا، اقدام به برنامه‌نویسی کردن روبات‌های کوچکی می‌کنید که با بقیهٔ روبات‌ها باید بجنگند. مبارزه می‌تواند به صورت تک‌به‌تک با یک روبات دیگر یا به صورت گروهی با مثلاً ۹ روبات دیگر باشد. هرچند که باید روبات‌های خود را به زبان جاوا بنویسید، اما دانش عمیقی از این زبان مورد نیاز نیست و در صورتی برنامه‌نویس یکی از زبان‌ها از همین خانواده باشید، می‌توانید به‌راحتی یک روبات بسازید.

فاروق کریمی‌زاده31-06-1402 تخصصی

من به عنوان یه متخصص کامپیوتر در پاسخ به هشدارم در مورد جمع‌آوری اطلاعات توسط شرکت‌هایی مثل گوگل و… همیشه یک پاسخ تکراری می‌شنوم: «من که هیچ اطلاعات مهم و سرّی‌ای ندارم!»

با توجه به این که امروزه در عصر ارتباطات و اطلاعات هستیم و استفاده از چنین خدماتی بسیار فراگیر شده، لازم می‌دونم در این مطلب بگم که «چرا اطلاعات شما مهم هستند؟» و «جامعهٔ نرم‌افزارهای آزاد چه تأثیری بر این مورد دارند؟»

اطلاعات شما مهم نیستند!

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

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

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

از طرفی تا به حال متوجه شدید که گوگل می‌تونه حدس بزنه خونه‌تون کجاست؟! من متوجه چنین موردی شدم، اگه برید به نقشه google maps احتمالا یه جایی توی نقشه به عنوان خونهٔ شما مشخص شده. حدس من اینه که احتمالاً از مدت زمانی که در یک مکان هستم و هم جاهایی که می‌رم و برمی‌گردم به یک نقطهٔ ثابت متوجه این مسئله شده!

حمایت و گسترش

با استفاده از این خدمات، درواقع شما دارید از اون ها حمایت می‌کنید و بهشون خوراک اطلاعاتی می‌دید، اون‌ها با پردازش اطلاعاتی که شما بهشون دادید، آمارها و اطلاعات رو استخراج می‌کنن و اون‌ها رو می‌فروشن، البته همیشه این اطلاعات چیزهای شخصی نیستند، گاهی سلیقهٔ مصرف‌کننده‌های یه محصول و چیزهای این‌چنینی که ارزش تجاری دارند، هستند. این‌طوری قدرتشون بیشتر می‌شه. از طرفی خودبه‌خود به فراگیر شدن استفادهٔ دیگران از این خدمات کمک می‌کنید، افراد دیگه که قالباً از چیزهایی که تو این مطلب گفتیم بی اطلاع هستند، مجبور و یا ترغیب به استفاده از چنین خدماتی می‌شن، در نتیجه کم‌کم هم قدرت این خدمات و هم مصرف‌کننده‌های اون‌ها بیشتر می‌شه. مثلا نرم‌افزار Shareit که همه می‌شناسیمش، این نرم‌افزار به تمام پرونده‌ها دسترسی داره و به حریم خصوصی کاربران هم زیاد پایبند نیست، بعد اون وقت هر کسی که می‌خواد پرونده‌ای برای کسی بفرسته، اولین جمله‌ای که می‌گه اینه که «shareit نصب کن»!

تأثیرگذاری

از مواردی که گوگل به صورت شفاف گفته که نتایج و تبلیغات رو مطابق سلیقهٔ شما بهتون نشون می‌ده. این هم می‌تونه مفید و کمک‌کننده باشه و هم می‌تونه به هدایت شما به سمت یک هدف خاص منجر بشه. نمی‌خوام از توهم توطئه و کنترل شما توسط این خدمات بگم! ولی فیلتر نتایج یا نمایش هدفمند بعضی از اون‌ها زیاد چیز جالبی نیست! این کار برای این خدمات معمولاً سود تجاری به همراه داره.

یا مثلاً اینستاگرام هم با توجه به علاقهٔ شما، فرسته‌ها رو بهتون نشون میده. حتی بعضی اوقات لابه‌لای صفحاتی که دنبال می‌کنید از جاهای دیگه هم فرسته بهتون نشون می‌ده، منجر می‌شن به این که یه چیزی مثلاً یه مد، یه رفتار یا یه فرهنگ (گاهاً درست و گاهاً غلط) ترند (فراگیر) بشه. یا حتی به یه تحلیل از سلیقهٔ جمعی برسن.

برای مثال در زمان انتخابات در کشورهای بیگانهٔ غربی 😄 با کمک اینفواِنسرها (influencer: افرادی که قدرت تأثیر بر افکار مردم رو دارن، همون شاخ‌های مجازی!) می‌تونن تأثیراتی روی دیدگاه و طرز فکر مردم داشته باشن (تعجبی هم نداره؛ تعریف کلمه همینه!) یا مثلاً تأثیری که اون‌ها روی صنعت مد، پوشاک و صنایع آرایشی دارن کاملاً مشخصه.

علاوه بر اون، این روزها الگوریتم‌ها دارن تمام تلاششون رو می‌کنن که شما رو هر چه بیشتر پای این پلتفرم‌ها نگه دارن که این عوارض بدی براتون به همراه داره.

پ.ن: مواردی که در مورد «تأثیرگذاری» گفته شده تا حدود زیادی مربوط به سواد رسانه‌ای هستن. دانشی که برای هر کسی لازمه که بدونه هر رسانه‌ای چه هدفی داره و برای رسیدن به اون هدفش از چه تکنیک‌ها و ترفندهایی استفاده می‌کنه

شناخت ارتباطات

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

اعتماد کاذب!

شما (یا خیلی‌های دیگه) شاید به نصب یه نرم‌افزار از یه شرکت ناشناس مثلاً روسی یا چینی مخصوصاً متن‌بسته شک می‌کنید ولی خیلی ها به شرکت‌هایی مثل گوگل یا مایکروسافت اعتماد دارن. اما اگر از مرورگر کروم استفاده می‌کنید و اون رو به عنوان یه مرورگر امن می‌شناسید باید بگم که گوگل کروم در ابتدا یک نرم افزار متن‌باز بود تا زمانی که گوگل تصمیم گرفت یه‌سری اطلاعات نامعلوم (که شاید چیزهایی نباشن که دوست داشته باشیم!) رو اون پشت‌مشت‌ها بفرسته به سرورهای خودش یا حتی بدون اطلاع شما به بهونهٔ اسکن ویروس‌ها پرونده‌ها رو اسکن کنه؛ با این که کروم اصلاً یه پادویروس نیست! چنین سرویسی رو خودم خیلی وقت پیش‌ها زمانی که کروم داشتم دیدم، به صورت خودکار در پس‌زمینه اجرا می‌شد و امکان غیرفعال کردنش هم نبود! برای همین چیزها بود که عده‌ای از توسعه‌دهنده‌های کروم گفتند که ما نمی‌خواییم دیگه گوگل کروم رو توسعه بدیم و chromium که متن‌باز هست رو توسعه می‌دن (اگر می‌خوایید از کرومیوم استفاده کنید بگم که من این مرورگر رو پیشنهاد یا تبلیغ نکردم و پیشنهاد می‌کنم که صرفاً به من اعتماد نکنید و خودتون کرومیوم رو قبل از استفاده بررسی کنید!)

جامعهٔ نرم افزارهای آزاد

آزاد به معنی متن‌باز بودن نرم‌افزارها نمی‌تونن به تنهایی تضمینی برای حفظ حریم خصوصی شما باشه، ولی می‌تونه روی این موضوع تأثیرگذار باشه. اولاً خیلی از استفاده‌کننده‌ها وقت نمی‌گذارند کدها رو بررسی کنن! دوماً که بعضی از خدمات مثل تلگرام همون‌طوری که فاروق جان تو مطلب «آیا تلگرام امن و آزاد است» گفت، متن باز بودن نرم‌افزار گاهی اوقات تأثیری رو حفظ حریم خصوصی‌تون نداره.

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

سخن پایانی

این طومار بلند و بالا حرف‌ها و حقایقی هستند که شاید به واسطهٔ موضوع بحث و در کنار هم قرار گرفتنشون کمی بوی توهم توطئه بگیرن یا حتی با درگیر کردن ذهن شما ناخواسته بهتون انرژی منفی وارد کرده باشم! ولی متأسفانه این‌ها حقایق تلخی هستند که امکان دارند و هم در حال استفاده هستند. این مطالب برای یک بحث سرپایی با اون دوستی که می‌گه «اطلاعات من ارزش ندارن» طولانی و با جزئیات هستند ولی لازمه که مردم از اون آگاه باشن.

بهنام سیم‌جو29-03-1402 عمومی

قبلاً راجع به کتاب‌خوان اونیکس بوکس پوک پرو صحبت کردم و راجع به این که چرا تصمیم گرفتم یک تبلت اندرویدی با صفحه‌نمایش جوهر الکترونیکی (E-ink) کاغذ الکترونیکی (e-paper) داشته باشم و این تصمیمم چه تأثیری در سلامت چشمانم دارد. متأسفانه تبلت قبلی از میکروفون پشتیبانی نمی‌کرد و با وجود اندروید ۶ نمی‌توانستم از نرم‌افزار‌های جدید‌تر روی تبلتم استفاده کنم. و البته از همه مهم‌تر خراب‌کاری بنده حین تعمیر کتاب‌خوان باعث آسیب به صفحه‌اش و در نتیجه غیرقابل استفاده شدنش شد و مجبور شدم آن را در ایسام با قیمتی بسیار پایین به عنوان معیوب به فروش برسانم!

به عنوان یک نتیجهٔ این خراب‌کاری، باید دنبال وسیله‌ای جدید به عنوان تبلت اندرویدی می‌بودم و این بار از همان شرکت قبلی تبلت Boox Leaf را خریداری کردم که با صفحه ۷ اینچ کمی بزرگ‌تر از پوک بود. البته در زمان تصمیم من برای خرید، یک سال از ورود لیف به بازار می‌گذشت و Leaf 2 جدید‌ترین محصول این شرکت با اندروید ۱۱ بود. اما به دلیل دو برابر بودن تعداد هسته‌های پردازندهٔ لیف، قید اندروید ۱۱ را زدم و نهایتاً Boox Leaf را خریدم.

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

تعریف کلی کاراکتر یا نویسه در کامپیوتر یعنی کوچک‌ترین واحد نمایش اطلاعات که می‌تونه یک حرف یا علامت باشه. نویسه‌ها شامل فاصله، عددها و علامت‌ها‌ هم هستند!

نویسه در دنیای دیجیتال

در دنیای دیجیتال برای انتقال اطلاعات چیزی جز خاموش و روشن نداریم! جریان‌های الکتریکی که قطع و وصل می‌شن، نوری که چشمک می‌زنه یا حتی تغییر جهت قطب‌های مغناطیسی توی هاردها دنیای دیجیتال‌ما رو می‌سازن!

به این خاموش‌ها و روشن‌ها می‌تونیم غلط و صحیح یا صفر و یک رو نسبت بدیم. این صفرها و یک‌ها به کمک قوانین مبنای عددی در ریاضیات معنا پیدا می‌کنن. یعنی مثلاً عدد ۲ توی کامپیوتر می‌شه ۰۰۱۰، عدد ۱۱ توی کامپیوتر می‌شه ۱۰۱۱ و عدد ۵ می‌شه ۰۱۰۱. در واقع هر عدد، کد مخصوص به خودش رو داره که قابل محاسبه هست. این محاسبه بین مبنای ده (اعداد خودمون) و مبنای دو (اعداد کامپیوتر) به سادگیِ انجام چند تقسیم هست.

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

بهنام سیم‌جو27-02-1402 عمومی

توضیح خاصی ندارم…

let father: &Individual = loop {
    i = rng.gen_range(0..pop_size);
    if rng.gen_bool(self.population[i].ft() / total_ft) as f64){
        break &self.population[i];
    }
}

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