<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های بابک نیا</title><link>https://virgool.ir/feed/@babak.nia</link><description></description><language>fa</language><pubDate>2026-11-12 22:30:46</pubDate><image><url>https://files.virgool.ir/upload/users/201477/avatar/jiHc6F.png</url><title>بابک نیا</title><link>https://virgool.ir/@babak.nia</link></image><item><title>همه زبان‌های برنامه‌نویسی</title><link>https://virgool.ir/@babak.nia/همه-زبانهای-برنامهنویسی-zwhntche5ufa</link><description>شما ممکن است در یک یا دو زبان برنامه‌نویسی ماهر باشید. آیا زبانی وجود دارد که از آن خوشتان نمی‌آید؟ یا فکر ‌می‌کنید به اندازه کافی قدرتمند نیست؟ جاوا یا #C؟ Rust یا ++C؟ اسمبلی یا C؟بیایید با هم نگاهی به تکنولوژی و ابزارهایی بیاندازیم که ما برای ساختن هیولا از آن‌ها استفاده کرده‌ایم. هیولا، فروشگاه آنلاین برای بازی‌های کامپیوتری است. اینجا می‌توانید بیشتر راجع به هیولا بدانید.محیط توسعه ما ویندوز است و نتیجه کارها را روی چند سرور اوبونتو منتشر می‌کنیم. به احتمال زیاد برای ساختن ویندوز از تعداد زیادی کدهای ++C ، C ، اسمبلی، #C ، جاوااسکریپت و ویژال بیسیک استفاده شده است. لینوکس یا حداقل توزیع اوبونتو آن را با ++C ، C ، اسمبلی، پایتون و جاوا نوشته‌اند.برنامه‌های سمت سرور هیولا را با C# .Net Core نوشته‌ایم. حتما به درستی حدس زده‌اید که در سمت front-end ما از HTML ، جاوااسکریپت و CSS بهره برده‌ایم. به خاطر کتابخانه‌های NPM بخش بزرگی از مخزن کدهای ما جاوااسکریپت است. اجازه بدهید این بحث را مطرح نکنیم که آیا اصلا HTML ، جاوااسکریپت و CSS زبان برنامه‌نویسی محسوب می‌شوند یا خیر. بله، می‌دانم آن «L» در انتهای HTML همان کلمه «Language» است.برنامه کلاینت هیولا که وظیفه دانلود و اجرای بازی‌های شما را دارد با Qt و به زبان ++C توسط یکی از برنامه‌نویس‌های خوب شرکت فن‌افزار نوشته شده ‌است.ما از PostgreSQL برای ذخیره اطلاعات استفاده می‌کنیم که با زبان ‌C نوشته شده است. تقریبا همه چیز به طور خیلی سخت‌گیرانه کش می‌شود و داستان‌ها باید برایتان تعریف کنم از پاک کردن و به روز کردن این کش‌ها. Redis بهترین ابزار برای این نوع از ذخیره‌سازی‌ها است که آن هم با زبان ‌‌C نوشته شده است.ابزار NGINX، ابزاری راحت و بسیار سریع است. ما از آن برای reverse proxy و load balancing استفاده می‌کنیم. این ابزار فوق‌العاده با زبان ‌‌C نوشته شده است.جای هیچ بحثی نیست که زندگی ما و مخزن کدهای ما باید بر روی Git باشد. برای ساخت و توسعه Git از زبان‌های C، پِرْل ، Tcl و پایتون استفاده شده است. بله، درست است آن «L» در انتهای Tcl باز همان کلمه «Language» است.برای ارسال پیام بین برنامه‌هایمان از RabbitMQ به عنوان message-broker استفاده می‌کنیم. این ابزار با زبان ‌‌اِرلَنگ نوشته شده است. باید یک مدتی به صورت جدی این زبان فوق العاده را مطالعه کنم و یاد بگیرم.جستجوی متن و ایندکس کردن آن را با Elasticsearch انجام می‌دهیم که با جاوا نوشته شده است.در بخش آماده سازی کدها برای انتشار (deployment) ما Jenkins را داریم. این ابزار هم بسیار عالی است ولی صد حیف که با جاوا نوشته شده است. آنقدر خوب است که باید با زبان ‌C یا چیزی مانند آن نوشته می‌شد. مچ مرا گرفتید؟! هدف من برای نوشتن این مقاله دقیقاً همین موضوع است. زبان برنامه‌نویسی مهم نیست بلکه مهم این است که یک برنامه چقدر خوب نوشته شده باشد و کاربران چقدر راحت می‌توانند از آن استفاده کنند.قسمتی از کدهای style ما به زبان Sass نوشته شده‌اند و به کمک ابزارهای نوشته شده با زبان روبی آن کدها را به CSS کامپایل می‌کنیم. Jenkins علاوه بر کارهای متعددی مانند build و اجرای تست‌ها که انجام می‌دهد، اسکریپت‌های Grunt را که به زبان جاوااسکریپت نوشته شده‌اند را نیز اجرا می‌کند.ابزار معرکه دیگری که از آن استفاده می‌کنم Ansible نام دارد که با پایتون نوشته شده است. خود من هم اینجا و آن جا برای کارهای کوچکی که لازم داریم از پایتون استفاده می‌کنم و از آن خوشم می‌آید.این روزها در حال برانداز کردن داکِر هستم تا از طریق آن بتوانم مراحل آماده سازی و انتشار برنامه‌ها را بهتر کنم. هر چند به علت تحریم‌های خارجی و سانسورهای داخلی قدم زدن در طبقه‌های جهنم بسی راحت‌تر از استفاده از داکر است. داکری که آمده است تا کارها را راحت کند و مورد استقبال بیشتر تیم‌های برنامه‌نویسی هم قرار گرفته است این چنین داستانی دارد برای ما. به هر حال، این ابزار با زبان Go نوشته شده است. بالاخره، یک امتیاز هم برای این زبان.لیست را کوتاه کنیم؛ ادیتور مورد علاقه من Visual Studio است که با زبان‌های #C و ++C توسعه داده شده است.در پرانتز باید اشاره کنم چون برای خودمان بسیار مهم بوده است، تمام ابزارها و برنامه‌های این پروژه خریداری شده است و یا از نگارش‌های رایگان آن‌ها را استفاده کرده‌ایم. البته با شرمساری فراوان به غیر از ویندوز. پرانتز بسته.زبان #C زبان برنامه‌نویسی مورد علاقه من است و هر روز با آن سر و کار دارم. هدف از نگارش این مقاله این است که یادمان باشد زبان برنامه‌نویسی فقط یک ابزار است. وظیفه ما این است که ابزارهای خودمان را خوب مطالعه کنیم و بدون تعصب آگاه باشیم کجا می‌توان از این ابزار استفاده کرد و کجا نه. با هر زبانی می‌توان باگ تولید کرد و کارآیی (performance) برنامه را نابود کرد. از ابزاری استفاده کنیم که در طول زمان مناسبی به توسعه محصول کمک کند و در نهایت کاربران به راحتی بتوانند از آن استفاده کنند.ابزارهای خود را بیشتر مطالعه کنید و کد زدن خوش بگذرد.</description><category>بابک نیا</category><author>بابک نیا</author><pubDate>Sat, 04 Jul 2020 18:54:24 +0430</pubDate></item><item><title>رمز پویا؛ بانک‌ها مسئول هستند</title><link>https://virgool.ir/@babak.nia/رمز-پویا-بانکها-مسئول-هستند-fwmdy2gj3pdp</link><description>شما صاحب یک کسب و کار اینترنتی هستید و محصول‌های خود را به صورت اینترنتی از طریق درگاه یکی از بانک‌های معتبر به فروش می‌رسانید. این درگاه‌ها به سامانه شاپرک متعلق به بانک مرکزی وصل می‌شوند. ولی اتصال به این درگاه‌ کار ساده‌ای نیست. شما باید مجوز(های) لازم را برای کسب و کار خود داشته باشید. بعد هفت خوان نماد اعتماد الکترونیکی را بگذرانید و آن نماد کذایی را در جایی مشخص از سایت خود نمایش دهید. سپس از بانکی درخواست کنید تا اجازه استفاده از درگاه را به شما بدهد. از آنجایی که گذر از همه این هفت خوان‌ها یک ماه یا بیشتر وقت شما را خواهد گرفت بعضی از کسب و کارها ترجیح می‌دهند از درصدی از سود خود (معمولا زیر ۵ درصد) صرف نظر کنند و از درگاه‌های واسطی مانند زرین‌پال استفاده کنند. لازم به ذکر نیست که استفاده از این درگاه‌ها نیز ریسک خودش را دارد که چند سال پیش به صورت فله‌ای و بدون اخطار قبلی تقریبا همه آن‌ها فیلتر شدند و تنها تعداد انگشت شماری اجازه ادامه فعالیت پیدا کردند. برای امثال من هیچ وقت معلوم نشد چرا فیلتر شدند و آن‌ها که اجازه ماندن یافتند با چه شرایط و مجوزی ماندند.برگردیم به شاپرک. در تعریف رسمی شاپرک آمده است: «نظامی یکپارچه [...] با مدیریت و نظارت متمرکز، کارایی و اثربخشی و امنیت شبکه پرداخت کارت را ارتقا می‌بخشد.» همینطور که از این عبارت مشخص است وظیفه آن امنیت شبکه است و کاری به امنیت استفاده کننده‌ها که همان خریدار و فروشنده است ندارد. به عبارت دیگر ضامن امنیت سیستم بانکی است.بیایید یک سناریوی فرضی را بررسی کنیم. متوجه اتفاق عجیبی در سیستم فروش خود می‌شوید. فردی برای خرید محصولی به جای خرید مستقیم، در ۲۰ اقدام به خرید که ۱۰ تای آن موفق بوده است ابتدا اعتبار خود را شارژ کرده و با مجموع آن اعتبار اقدام به خرید کرده‌است. شما شاید احتمال بدهید که بخش خرید مشکل دارد یا طراحی سایت و توضیح‌های آن کاربر را گمراه کرده تا به جای یک بار، بیش از ۲۰ بار روند طولانی خرید را طی کند.بررسی می‌کنید و متوجه می‌شوید همه آن خریدها صد هزار تومانی است! یعنی صاحب کارت نیازی به استفاده از رمز پویا ندارد. با بررسی بیشتر متوجه می‌شوید به ازای هر خرید یک کارت بانکی جداگانه استفاده کرده است! بله، کاربر حداقل ۲۰ کارت بانکی و رمز دوم آن‌ها را داشته است. کلاهبرداری!شما همه اقدام‌های لازم را در سیستم خود انجام می‌دهید. دسترسی کاربر را قطع می‌کنید و خریدهای کاربر را کنسل می‌کنید. اقدام بعدی چیست؟ بله، به بانکی که از آن درگاه گرفته‌اید گزارش بدهید تا صاحبان آن کارت‌ها را از این کلاهبرداری آگاه کند و موارد مشابه را بررسی کند. متاسفانه جوابی که می‌شنوید این است که به ما ربطی ندارد! اقدام بعدی؟ پلیس فتا. سامانه پلیس فتا به صورت موقت قطع است. اقدام بعدی؛ تماس با پلیس ۱۱۰. «بله شما باید با پلیس فتا صحبت کنید. بله می‌دانیم سامانه آن‌ها مشکل دارد.»بالاخره می‌توانید وارد سامانه شوید. شما این امکان‌ها را دارید که گفتگو کنید، گزارش تخلف وب سایتی را بدهید یا گزارش تخلف شبکه اجتماعی یا گزارش تخلف نرم افزار و بازی یا گزارش تخلف پیامک و پست الکترونیکی. ولی امکان گزارش کلاهبرداری ندارید. پس تماس می‌گیرید. «بله شما باید منتظر شوید تا یکی از صاحبان کارت‌ها از شما شکایت کند. آن وقت در طی روند دادگاه و تصمیم قاضی می‌توانید پول کاربر را برگردانید.»در این مدت کلاهبردار به راحتی به فعالیت خود ادامه می‌دهد. آن کارت‌ها همچنان فعال هستند تا صاحبان بیچاره متوجه بشوند. کارت خود را بسوزانند. از بانک خود لیست برداشت‌های غیرمجاز را بگیرند. برای هر کدام از آن فروشگاه‌های بخت برگشته در دادگاه شکایتی ثبت کنند. صف‌های طولانی دادگاه‌ها طولانی‌تر شود. دو طرف ماجرا سرگردان در راهروهای دادگاه‌های شهرهای مختلف. اگر کسب و کار شما در تهران باشد و صاحب کارت در شیراز، شما برای پاسخگویی باید به شیراز سفر کنید.در نهایت هر دو طرف ماجرا محکوم هستند و نه مسئول اصلی. صاحب کارت مقصر است چرا که از کارت خود مراقبت نکرده است. چرا برای استفاده از اینترنت از فیلترشکن استفاده کرده است که تمام استفاده خود را از اینترنت و همچنین اطلاعات دستگاه خود را ناامن کرده است؟ چرا برای خرید فیلترشکن پولی پرداخت کرده است؟ چرا به همه تماس‌ها و پیامک‌های عجیب که هر روز تعداد آن‌ها بیشتر می‌شود جواب می‌دهد و اطلاعات خود را در اختیار آن‌ها قرار می‌دهد؟ تماس‌هایی که تمام اطلاعات شخصی و شناسنامه‌ای شما را دارند. چرا برای شرکت در انواع سایت‌های قرعه‌کشی و شرط بندی اطلاعات شخصی و بانکی خود را می‌دهد؟ تا امیدوار باشد در این وضع بد اقتصادی با پرداخت ۱۰۰۰ تومان صد میلیون برنده شود. یا چرا هنگام پرداخت متوجه نشده است که سایت بانک قلابی بوده است؟صاحب کسب و کار هم مجرم است. چرا فرایند خرید خود را برای جلب رضایت مشتری ساده طراحی کرده است؟ چرا کالایی زیر صد هزار تومان دارد؟ (البته بعضی از بانک‌ها اجازه خرید زیر ۲۰۰ هزار تومان را هم بدون رمز پویا می‌دهند.) چرا هنگام ثبت نام از مشتری اطلاعات هویتی او را همراه با تصویر کارت ملی و شناسنامه نگرفته است؟ چرا از او نخواسته است تا عکسی بفرستد که شبیه عکس شناسنامه بیست سال قبلش باشد و در آن تصویر کارت ملی، شناسنامه، کارت بانکی و کارنامه اول دبستان خود را به صورت خوانا کنار صورتش گرفته باشد؟ چرا اطلاعات هویتی چهل همسایه این ور آن ور خود را نفرستاده است؟ چرا و چرا و چراهای دیگر.آیا اگر از بانکی که شما پول خود را در آن به امانت گذاشته‌اید دزدی فیزیکی یا اختلاس شود باز هم بانک مسئولیت قبول نخواهد کرد و آن را از حساب شما کسر خواهد کرد؟ پس چرا دزدی از کارت بانکی شما شامل آن مسئولیت نمی‌شود؟ چرا بانک و بانک مرکزی خود را موظف نمی‌دانند؟ آیا نمی‌شد در آن سناریوی فرضی بانک صاحبان آن ۲۰ کارت را مطلع می‌کرد؟ آن بانک می‌توانست بانک‌های دیگر را مطلع می‌کرد و حساسیت بیشتری نسبت به خریدهای مشابه نشان می‌داد. به این دلیل که بانک‌ها اطلاعات کافی در مورد افراد، حساب‌ها و تراکنش‌ها در اختیار دارند.در دنیای غیرمجازی اگر فردی از کارتی خرید می‌کند آیا فروشنده مجرم است؟ آیا او برای هر خرید باید اطلاعات هویتی خریدار را دریافت و در جایی ثبت کند؟ آیا او مسئول برگرداندن وجه به صاحب اصلی کارت است؟ خیر. آیا شما به عنوان خریدار راضی هستید برای هر خرید کوچک و بزرگ تمام اطلاعات هویتی خود را فاش کنید؟ خیر. چنانکه همین الآن اطلاعات ما دست به دست فروخته می‌شود و مورد سوء استفاده قرار می‌گیرد.رمز پویا کافی نیست، بانک‌ها باید پویا باشند. بانک‌ها باید مسئولیت پذیرتر بوده و تلاش بیشتری برای جلوگیری از اینگونه کلاهبرداری‌ها انجام بدهند.</description><category>بابک نیا</category><author>بابک نیا</author><pubDate>Thu, 28 May 2020 13:25:13 +0430</pubDate></item></channel></rss>