من به عنوان یه متخصص کامپیوتر در پاسخ به هشدارم در مورد جمعآوری اطلاعات توسط شرکتهایی مثل گوگل و… همیشه یک پاسخ تکراری میشنوم: «من که هیچ اطلاعات مهم و سرّیای ندارم!»
با توجه به این که امروزه در عصر ارتباطات و اطلاعات هستیم و استفاده از چنین خدماتی بسیار فراگیر شده، لازم میدونم در این مطلب بگم که «چرا اطلاعات شما مهم هستند؟» و «جامعهٔ نرمافزارهای آزاد چه تأثیری بر این مورد دارند؟»
اطلاعات شما مهم نیستند!
اطلاعات خودشون به تنهایی ارزش آنچنانی ندارند اما پردازش آنها بسیار با ارزش خواهند بود. بذارید براتون توضیح بدم. شاید شما یک مامور اطلاعاتی یا یه فرد مهم در یک جایگاه دولتی نباشید اما وقتی اطلاعات شما پردازش شوند، میتواند به افراد دیگر آسیب برساند.
برای مثال خدمات گوگل میتوانند حتی در صورت غیرفعال بودن GPS، موقعیت تقریبی شما را بدانند. این امکان چیزی مخفی و سری نیست، خود گوگل این مورد رو اعلام و در گوشیها امکان استفاده از اون هست! در کل چیز بدی هم نیست، اگه جایی بودید که به ماهوارهٔ GPS دسترسی نبود، باز هم یه موقعیت تقریبی دارید، اما گذشته از این که میتونه برای یهسری افراد بد بشه، جالبه بدونید این امکان با پردازش دادههایی که از افراد عادی به دست اومده، فراهم شده.
چهطوری؟ با استفاده از موقعیت نسبی و دکلهای مخابراتی. هر دکل مخابراتی یک سریال مخصوص داره که گوشی شما هم اون رو دریافت میکنه. امروزه هر گوشی همزمان به بیش از یک دکل وصل هست و اگر در این حین مکانیابی گوشی هم فعال باشه به همراه قدرت سیگنال اتصال یک موقعیت تقریبی از اون دکل داریم. از طرفی با استفاده از یه شبکه (گراف) از اسامی وایفایها و بلوتوثهای نزدیک میشه هم موقعیت نسبی افراد و هم موقعیت وایفای ها رو پیدا کرد.
از طرفی تا به حال متوجه شدید که گوگل میتونه حدس بزنه خونهتون کجاست؟! من متوجه چنین موردی شدم، اگه برید به نقشه google maps احتمالا یه جایی توی نقشه به عنوان خونهٔ شما مشخص شده. حدس من اینه که احتمالاً از مدت زمانی که در یک مکان هستم و هم جاهایی که میرم و برمیگردم به یک نقطهٔ ثابت متوجه این مسئله شده!
حمایت و گسترش
با استفاده از این خدمات، درواقع شما دارید از اون ها حمایت میکنید و بهشون خوراک اطلاعاتی میدید، اونها با پردازش اطلاعاتی که شما بهشون دادید، آمارها و اطلاعات رو استخراج میکنن و اونها رو میفروشن، البته همیشه این اطلاعات چیزهای شخصی نیستند، گاهی سلیقهٔ مصرفکنندههای یه محصول و چیزهای اینچنینی که ارزش تجاری دارند، هستند. اینطوری قدرتشون بیشتر میشه. از طرفی خودبهخود به فراگیر شدن استفادهٔ دیگران از این خدمات کمک میکنید، افراد دیگه که قالباً از چیزهایی که تو این مطلب گفتیم بی اطلاع هستند، مجبور و یا ترغیب به استفاده از چنین خدماتی میشن، در نتیجه کمکم هم قدرت این خدمات و هم مصرفکنندههای اونها بیشتر میشه. مثلا نرمافزار Shareit که همه میشناسیمش، این نرمافزار به تمام پروندهها دسترسی داره و به حریم خصوصی کاربران هم زیاد پایبند نیست، بعد اون وقت هر کسی که میخواد پروندهای برای کسی بفرسته، اولین جملهای که میگه اینه که «shareit نصب کن»!
تأثیرگذاری
از مواردی که گوگل به صورت شفاف گفته که نتایج و تبلیغات رو مطابق سلیقهٔ شما بهتون نشون میده. این هم میتونه مفید و کمککننده باشه و هم میتونه به هدایت شما به سمت یک هدف خاص منجر بشه. نمیخوام از توهم توطئه و کنترل شما توسط این خدمات بگم! ولی فیلتر نتایج یا نمایش هدفمند بعضی از اونها زیاد چیز جالبی نیست! این کار برای این خدمات معمولاً سود تجاری به همراه داره.
یا مثلاً اینستاگرام هم با توجه به علاقهٔ شما، فرستهها رو بهتون نشون میده. حتی بعضی اوقات لابهلای صفحاتی که دنبال میکنید از جاهای دیگه هم فرسته بهتون نشون میده، منجر میشن به این که یه چیزی مثلاً یه مد، یه رفتار یا یه فرهنگ (گاهاً درست و گاهاً غلط) ترند (فراگیر) بشه. یا حتی به یه تحلیل از سلیقهٔ جمعی برسن.
برای مثال در زمان انتخابات در کشورهای بیگانهٔ غربی 😄 با کمک اینفواِنسرها (influencer: افرادی که قدرت تأثیر بر افکار مردم رو دارن، همون شاخهای مجازی!) میتونن تأثیراتی روی دیدگاه و طرز فکر مردم داشته باشن (تعجبی هم نداره؛ تعریف کلمه همینه!) یا مثلاً تأثیری که اونها روی صنعت مد، پوشاک و صنایع آرایشی دارن کاملاً مشخصه.
علاوه بر اون، این روزها الگوریتمها دارن تمام تلاششون رو میکنن که شما رو هر چه بیشتر پای این پلتفرمها نگه دارن که این عوارض بدی براتون به همراه داره.
پ.ن: مواردی که در مورد «تأثیرگذاری» گفته شده تا حدود زیادی مربوط به سواد رسانهای هستن. دانشی که برای هر کسی لازمه که بدونه هر رسانهای چه هدفی داره و برای رسیدن به اون هدفش از چه تکنیکها و ترفندهایی استفاده میکنه
شناخت ارتباطات
بسیاری از شبکههای اجتماعی با تخمین نسبتاً دقیقی میتونن ارتباطات شما با اطرافیانتون رو بسنجن، باز هم شاید این مورد در پیدا کردن دوستهاتون توی شبکههای اجتماعی کمکتون کنه ولی روی تحلیل اطلاعاتی که میخوان از یه شخص خاص جمع کنن تاثیر مستقیم داره.
اعتماد کاذب!
شما (یا خیلیهای دیگه) شاید به نصب یه نرمافزار از یه شرکت ناشناس مثلاً روسی یا چینی مخصوصاً متنبسته شک میکنید ولی خیلی ها به شرکتهایی مثل گوگل یا مایکروسافت اعتماد دارن. اما اگر از مرورگر کروم استفاده میکنید و اون رو به عنوان یه مرورگر امن میشناسید باید بگم که گوگل کروم در ابتدا یک نرم افزار متنباز بود تا زمانی که گوگل تصمیم گرفت یهسری اطلاعات نامعلوم (که شاید چیزهایی نباشن که دوست داشته باشیم!) رو اون پشتمشتها بفرسته به سرورهای خودش یا حتی بدون اطلاع شما به بهونهٔ اسکن ویروسها پروندهها رو اسکن کنه؛ با این که کروم اصلاً یه پادویروس نیست! چنین سرویسی رو خودم خیلی وقت پیشها زمانی که کروم داشتم دیدم، به صورت خودکار در پسزمینه اجرا میشد و امکان غیرفعال کردنش هم نبود! برای همین چیزها بود که عدهای از توسعهدهندههای کروم گفتند که ما نمیخواییم دیگه گوگل کروم رو توسعه بدیم و chromium که متنباز هست رو توسعه میدن (اگر میخوایید از کرومیوم استفاده کنید بگم که من این مرورگر رو پیشنهاد یا تبلیغ نکردم و پیشنهاد میکنم که صرفاً به من اعتماد نکنید و خودتون کرومیوم رو قبل از استفاده بررسی کنید!)
جامعهٔ نرم افزارهای آزاد
آزاد به معنی متنباز بودن نرمافزارها نمیتونن به تنهایی تضمینی برای حفظ حریم خصوصی شما باشه، ولی میتونه روی این موضوع تأثیرگذار باشه. اولاً خیلی از استفادهکنندهها وقت نمیگذارند کدها رو بررسی کنن! دوماً که بعضی از خدمات مثل تلگرام همونطوری که فاروق جان تو مطلب «آیا تلگرام امن و آزاد است» گفت، متن باز بودن نرمافزار گاهی اوقات تأثیری رو حفظ حریم خصوصیتون نداره.
اما این که ارائهدهندههای اون خدمت سخاوتمندانه منبع رو باز گذاشتند و ترسی از لو رفتن هیچ رازی ندارن چیز خوبیه! از طرفی میتونیم بفهمیم که درآمد این خدمات از کجا تأمین میشه (از فروش اطلاعات! یا دونیت یا…) و هم این که میتونیم روی این نرمافزارها تأثیر بگذاریم و اگر برای حریم خصوصی خودمون و دیگران ارزش قائل هستیم اونها رو ویرایش کنیم.
سخن پایانی
این طومار بلند و بالا حرفها و حقایقی هستند که شاید به واسطهٔ موضوع بحث و در کنار هم قرار گرفتنشون کمی بوی توهم توطئه بگیرن یا حتی با درگیر کردن ذهن شما ناخواسته بهتون انرژی منفی وارد کرده باشم! ولی متأسفانه اینها حقایق تلخی هستند که امکان دارند و هم در حال استفاده هستند. این مطالب برای یک بحث سرپایی با اون دوستی که میگه «اطلاعات من ارزش ندارن» طولانی و با جزئیات هستند ولی لازمه که مردم از اون آگاه باشن.

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

امروز میخوام براتون از رمزنگاری دوسویه یا دو کلیده بگم، این رمزنگاری دنیای اطلاعات رو زیر و رو کرده! تو جهان امروز هر جا رو که نگاه میکنی ردپای این رمزنگاری هست! HTTPS ،SSH، ارز های دیجیتال، شبکههای مجازی و … همه و همه دارن از این روش برای حفظ امنیت استفاده میکنن.
آنچه خواهید خواند!
- در ابتدا خواهم گفت در صورت نبود رمزنگاری اطلاعات چطور لو میروند
- بعد یه دید کلی از رمزنگاری میدم و میگم چرا نمیشه از روش های رایج استفاده کرد
- سپس روش رمزنگاری دوسویه رو به زبون ساده توضیح میدهم
- در ادامه از چگونگی استفاده آن در وب میگم
- چند خط کد مینویسیم و در پایتون از این روش استفاده میکنیم

در این مطلب میگیم که چطور میشه در پایتون یک پروسه دیگر را اجرا کرد و خروجی استاندارد و ورودی استاندارد رو بگیریم و ازش استفاده بکنیم. خروجی و ورودی استاندارد همون چیزایی هستن که تو محیط متنی چاپ میشن یا کاربر توی ورودی برنامه وارد میکنه. در واقع توی این مطلب یاد میگیرید که چطور میتونید در پایتون با برنامه های کنسولی دیگه تعامل کنید.
پایپ (pipe) چیست؟
به طور پیشفرض سیستمعامل ورودیها رو از موس و کیبورد میگیره و خروجیها رو روی صفحهنمایش مینویسه. اما در بعضی مواقع نیاز هست که یک برنامه از خروجیهای یک برنامه (یا دستور) دیگه استفاده کنه یا به ورودی استاندارد یک برنامه داده ارسال کنه. در چنین شرایطی pipe استفاده میشه. pipe یک فضای موقتی در حافظه برای جابهجایی اطلاعات بین دو برنامه هست که البته یک طرفه هم هست؛ یعنی مثلا برای گرفتن خروجی باید از یک pipe و برای نوشتن ورودی هم از یک pipe دیگر باید استفاده کرد.
خیلی ها میگن پایتون زبان سادهای هست، میشه اون رو زود یاد گرفت، بخاطر تعیین نوع پویا(dynamic typing) دیگه نیازی نیست که برنامهنویس با type ها درگیر باشه و …
ولی آیا واقعا همینطوره؟! توی این مطلب قصد دارم کمی زبان پایتون رو به عنوان یه برنامهنویس پایتون بررسی کنم.
۱. پایتون زبان سادهای هست
منظور از سادگی زبان میتونه خوانا بودن اون و نزدیکی اون به زبان انگلیسی (زبان انسان) باشه. برای مثال دو تکه کد زیر رو ببینید:
زبان پایتون:
if not 2 in lst:
for x in lst:
print(x);
زبان سیشارپ:
if ( ! lst.contains(2) )
foreach ( int x in lst )
Console.WriteLine(x);

حتماً تا به حال با برنامه هایی سروکار داشتید که امکان نصب افزونه داشتند. در این پست قرار هست بهتون بگم چطور میشه توی پایتون برنامهای بنویسیم که بشه بهش افزونه اضافه کرد.
معماری افزونهای (plugin architecture) یک شیوه توسعه نرمافزار است که به برنامهنویس این امکان رو میده که بدون نیاز به ویرایش کد های اصلی برنامهش (هسته/main) قابلیت ها رو با ارائه بستههایی به نام پلاگین در اختیار کاربران قرار بده و کاربران هم میتونن به سادگی با توجه به نیازشون از بین این افزونه ها، اون هایی که میخوان رو به برنامهشون اضافه کنن.
از طرفی میشه از این معماری به عنوان یک پلن تجاری نیز استفاده کرد. مثلا شما میتونید برنامه خودتون رو به صورت رایگان و حتی متنباز عرضه کنید اما با فروش پلاگین ها (و یا ارائه خدمات) کسب درآمدکنید. اگر شما هم یک کاربر وردپرس باشید حتما با این پلن آشنا هستید! 😄
پ.ن: پروژه telegram-post-bot من در گیتهاب از همین ساختار پیروی میکنه و توش امکان اضافه کردن پلاگین هست و درواقع همین پروژه بهانهای شد که من پیادهسازی این معماری رو توی پایتون یاد بگیرم و امتحان کنم.
خب وقتشه که دیگه مقدمه رو بذاریم کنار و بریم سراغ اصل مطلب!

هیچ میدونستین که تو پایتون میتونین برای لیست ها و توپل ها عبارت هایی مثل [1,2,3]>[0,2,3]
نوشت؟ یعنی میتونی خیلی راحت لیست ها رو باهم مقایسه کنی.
اخیرا در یکی از پروژه هایی که داشتم نیاز داشتم تا دو مقدار ورژن رو باهم مقایسه کنم تا مثلا اگر نسخه دوم از اولی جدید تر بود برنامه خودش رو آپدیت کنه، برای اینکار از یک امکان زبان پایتون یعنی مقایسه لیست ها در پایتون استفاده کردم. با من بهنام سیمجو همراه باش تا برات بگم ماجرا چیه!
رجیستری در ویندوز یک بخش مهم و حیاتی است. اهمیت این بخش به دلیل این است که ویندوز و نرمافزار های زیادی تنظیمات خود را در رجیستری ذخیره میکنند؛ تنظیماتی از قبیل فرمت فایل ها، رنگ بندی و تصویر پسزمینه، و یا تعیین برنامهای که بعد از ورود کاربر اجرا شود (شل یا پوسته) همگی این ها و حتی اطلاعات حساستر در رجیستری ذخیره شدهاند.
امروز میخواهیم در مورد این بخش مهم در سیستمعامل ویندوز صحبت کنیم پس با وبسایت کرمهای کامپیوتر همراه باشید.
زمانی که سیستم شما به هر دلیلی دچار مشکل میشود و سیستمعامل به اصطلاح بالا نمیآید شما به چیزی به نام سیستمعامل زنده (live) نیاز خواهید داشت تا فایلها را برگردانید و سیستمعامل را تعمیر کنید. بسیاری از کاربران (نسبتاً مبتدی) به دلیل دسترسی نداشتن به یک نسخه سیستمعامل زنده دچار مشکلاتی از قبیل از دست دادن اطلاعاتشون هستند. در این پست قصد دارم به این موضوع بپردازم که سیستمعامل زنده چیست، چگونه راهاندازی میشود و چطور میتوان آن را نصب کرد.
سیستمعامل زنده (live) چیست؟
اگر شما کاربر ویندوز هستید حتما میدانید که ویندوز باید ابتدا بر روی سیستم شما نصب شود تا بتوان آن را اجرا نمود اما سیستمعامل ویندوز مانند سیستمعامل های دیگر میتواند بر یک DVD یا یک flash نیز نصب شود. در شرایطی که سیستمعامل شما به درستی کار نمیکند میتوان از این امکان برای تعمیر سیستم و دسترسی به فایل ها استفاده کرد. در چنین شرایطی برای آن که سیستمعامل با هدف اجرا شدن از یک حافظه فلش یا DVD سازگار باشد (سریع و سبک باشد) نسخهای از آن به عنوان live منتشر میشود که قابل حمل است و نیازی به نصب ندارد.
سیستمعامل های غیر ویندوزی
اکثر سیستم عامل های غیر از ویندوز عموما از خانواده شبهیونیکس نسخه لایو جدا ندارند، درواقع اصلا نیازی ندارند! در هنگام نصب این سیستمعامل ها از کاربر سوال میشود که آیا میخواهید نصب شود یا به صورت زنده از آن استفاده کنید.
اما اگر به دنبال استفاده از ویندوز به صورت زنده هستید با کرمهای کامپیوتر همراه باشید.
یکی از ترفند های کدزنی که برنامهنویسان حرفهای معمولا از آن استفاده میکنند استفاده از or و and به جای شرط است. بله درست متوجه شدید، به جای شرط. این ترفند ممکن است باعث شود تا کد شما خوانا نباشد و حتی توصیه شده نیست ولی ترفند به شدت جذابیست که میتواند در خلاصه نویسی کد تاثیر زیادی داشته باشد. این روش در بسیاری زبان ها مانند C, JavaScript, Python و … کاربرد دارد. پس با ما همراه باشید تا این تکنیک زیبا و جذاب را یاد بگیرید.
این مطلب یک نسخه بهروز شده از یک مطلب قدیمی وبلاگ کرمهای کامپیوتر هست. البته هدف ما هیچ وقت خرابکاری و خصوصا آموزش آن نبوده و نیست. در این مورد نیز سیستم هایی که از نرمافزار های ضد خرابکاری استفاده میکنند مانع از بروز مشکل میشوند؛ به نوعی اگر مدیر سیستم به فکر تامین امنیت نبوده باشد با این حفره باید فاتحهی سیستم را بخواند!
کاملا اتفاقی متوجه شدم که ویندوز 10 به نام هایی مانند aux گیر میده و این گیر ربطی به پسوند فایل هم نداره؛ یعنی چه فایل aux.txt باشه و چه aux.png شما مجاز به استفاده از چنین نامی در ویندوز نیستید! کنجکاو شدم ببینم جریان چیه؟ پس تو اینترنت گشتم و جواب رو پیدا کردم و فهمیدم این مسئله خیلی قدیمی و تاریخی هست. به نوعی میراثی هست که دست به دست شده و الان به ویندوز ۱۰ رسیده!
مایکروسافت رسما اعلام کرده که نام های زیر در ویندوز ممنوع هستند:
گیت چیست؟
گیت یا git یک برنامه آزاد و متنباز برای مدیریت پروژههای برنامهنویسی هست که بسیار سریع و موثر می تواند به برنامهنویسان برای مدیریت پروژههای کوچک تا بزرگ کمک کند. یادگیری و استفاده از گیت بسیار ساده است و امکانات بسیار قابل توجهی در اختیار برنامهنویسان قرار میدهد.
از تواناییهای این نرم افزار میتوان به نمونههای زیر اشاره کرد:
- به شما امکان مدیریت پروژههای چند نفره را میدهد
- به سادگی می توان تغییرات را ثبت، دنبال، و بازگردانی کرد
- می تواند به یک سرور وصل شود تا علاوه بر داشتن یک بکاپ از کل پروژه آن را با دیگران به اشتراک بگذارید
- امکان استفاده از چند شاخه، ادغام و مدیریت شاخهها
- و …