<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدرضا رازیان</title>
        <link>https://virgool.io/feed/@mrazian</link>
        <description>علاقمند به حوزه علوم و مهندسی رایانه</description>
        <language>fa</language>
        <pubDate>2026-06-16 20:43:07</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/107456/avatar/sW6vgQ.png?height=120&amp;width=120</url>
            <title>محمدرضا رازیان</title>
            <link>https://virgool.io/@mrazian</link>
        </image>

                    <item>
                <title>امنیت در اندروید</title>
                <link>https://virgool.io/@mrazian/%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-g0qh3vkcahwm</link>
                <description>امنیت امروزه تبدیل به میدان رقابت کم‌نظیر میان حمله‌کنندگان سایبری شده است؛ جولانگاهی که متأسفانه کاربران، قربانیان آن هستند. این نوشته برگرفته از مطالب موجود در وب است اما نه در سطح وب. اطلاعاتی که در مورد امنیتِ اندروید در جستجوهای اولیه گوگل بدست می‌آید عمدتا سطحی و عمومی هستند. بدین ترتیب در این نوشته می‌خواهیم کمی عمیق‌تر به مسئله امنیت در اندروید بپردازیم.سرفصل‌هاوقتی از امنیت در یک سامانه اندرویدی صحبت می‌کنیم باید موارد ذیل را ببینیم:زنجیره اعتماد یا همان Root of Trustمعماری TrustZone در پردازنده ARMمعماری سامانه-روی-تراشه (SoC)معماری درایور در اندروید و ناحیه کاربری (User Space)منطقه امن (Trusted Zone)همانطوری که پیداست، این نوشته به امنیت کاربری اندروید، یعنی موضوعاتی نظیر دستگاه گم‌شده، هرزنامه، بدافزارهای جاسوسی و وب‌گردی امن نمی‌پردازد.زنجیره اعتماد یا همان Root of Trustمفهوم زنجیره اعتماد یا همان Root of Trust، مختص تلفن همراه هوشمند نیست و در سامانه‌های دیگر هم پیاده‌سازی می‌شود که نمونه بارز آن گواهی SSL و فرایند بررسی آن در مرورگر وب است. در تلفن همراه هوشمند، این زنجیره از یک مؤلفه سخت‌افزاری آغاز می‌شود. دقت بفرمائید که نگفتیم در اندروید گفتیم در تلفن همراه هوشمند؛ یعنی چی؟ یعنیامنیت در گوشی از اندروید آغاز نمی‌شود! واقعیت این است که چندین حلقه اول این زنجیره اصلا به اندروید که هیچ! به کرنل هم ارتباطی ندارد.بله! این اولین نکته مهم است. چند مرحله اول شامل اعتبارسنجی ابزار فلش رام، preloader (همان بوت‌لودر مرحله اول) و بوت‌لودر-مرحله-دوم است. به طور دقیق‌تر، بوت‌رام، وظیفه تایید preloader را بر عهده دارد، preloader موظف است بوت‌لودر-مرحله-دوم و TEE را تایید نماید. پس از تایید TEE، بوت‌لودر-مرحله-دوم اجرا می‌شود. بوت‌لودر-مرحله-دوم، کرنل و دیگر ایمیج‌ها را تایید می‌کند. پس عملا تا اینجای کار ساز و کارهای امنیتی اندروید که شامل بررسی صحت (integrity) یا به اصطلاح بوت تایید شده اندروید (Android Verified Boot) است، وارد عمل نشدند. این بخش را با یک دسته‌بندی جمع‌بندی کنیم:در یک گوشی هوشمند، دو فضا وجود دارد: فضاهای غیر اندرویدی (عمدتا یا کاملا در اختیار تولید کننده پردازنده) و فضا اندرویدی (پیاده‌سازی شده توسط گوگل یا در مواردی OEM).معماری درایور در اندروید و ناحیه کاربری (User Space)مفهوم و پیاده‌سازی درایورها در پلتفرم اندروید، بر خلاف سیستم‌های عامل دسکتاپ رایج مانند ویندوز یا لینوکس استاندارد، از الگوی متمایزی پیروی می‌کند. در حالی که درایورهای دسکتاپی معمولاً به عنوان یک بسته/ماژول قابل نصب ارائه می‌شوند، درایورهای اندرویدی با رابط‌ها، فایل‌های قابل پیکربندی می‌شوند و اغلب شامل فایل‌های باینری  (در مقابل کد منبع) هستند که به آن لایه انتزاع سخت‌افزاری (HAL) گفته می‌شود. این رویکرد که بخشی از فلسفه طراحی معماری اندروید است، درایورها و کنترلرهای سخت‌افزاری را به‌عنوان پیاده‌سازی‌هایی از رابط‌های تعریف‌شده (HIDL یا AIDL) و مجموعه‌ای از کتابخانه‌های باینری ارائه می‌دهد که مستقیماً با هسته لینوکس پایه در تعامل هستند. دلیل این امر نه فنی که تجاری است:این باعث می‌شود شرکت‌ها، مجبور نباشند کدهای خود را به دلیل قرارگیری در کرنل، متن‌باز کنند.این تفاوت معماری تأثیر مستقیمی بر ساختار مؤلفه‌های سطح پایین سیستم، مانند سرویس پس‌زمینه موقعیت‌یابی شبکه (Network Location Daemon)، می‌گذارد. چنین مؤلفه‌ای یک کد ساده در کرنل قرار می‌دهد (Kernel Space) برای ارتباط با سخت‌افزار gnss، اما پیاده‌سازی منطق این مؤلفه را از کرنل بیرون کشیده و درون یک دیمن (Daemon) متن‌بسته می‌برد (User Space). البته چون دیگر اجزای سامانه می‌خواهند با این مؤلفه در ارتباط باشند، قطعا برای آن واسط‌های استانداردی توسط اندروید در نظر گرفته شده است که این دیمن پیاده‌سازی آن‌ها را نیز می‌تواند بر عهده داشته باشد. البته لازم به ذکر است امکاناتی جهت پیکربندی در قالب فایل‌های xml یا ثابت‌های تعریف شده در فایل‌های C/CC در اختیار توسعه‌دهندگان بیرونی قرار داده می‌شود.این پراکندگی و وابستگی به اجزای اختصاصی (Proprietary)، چالش‌هایی در زمینه شفافیت، امنیت و به‌روزرسانی‌های ایجاد می‌کنددر حال کامل شدن ...</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sun, 01 Feb 2026 20:28:40 +0330</pubDate>
            </item>
                    <item>
                <title>درایور در اندروید</title>
                <link>https://virgool.io/@mrazian/%D8%AF%D8%B1%D8%A7%DB%8C%D9%88%D8%B1-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-kwdnl84jismf</link>
                <description>در گوشی اندرویدی مفهوم درایور تفاوت‌های اساسی با سیستم‌های لینوکسی/ویندوزی دسکتاپ دارد. یک قابلیت ممکن است در لایه HAL با پیاده‌سازی بسیار محدود در دایرکتوری misc (فقط یک .h یا .c) در کرنل پیاده‌سازی شود. در تصویر زیر نمونه موردی برای یک زیرسامانه (مودم) در معماری سامانه-روی-تراشه (SoC) قابل بررسی است.نمونه موردی برای یک زیرسامانه (مودم) در معماری سامانه-روی-تراشه (SoC). منبع تصویر: راهنمای Quectelفلسفه طراحی اندرویددر اندروید «مفهوم درایور» با آنچه در سیستم‌های دسکتاپ مانند کامپیوترهای شخصی لینوکس یا ویندوز می‌بینیم متفاوت است. کرنل اندروید (عمدتا) صرفا ساز و کارهای اساسی مانند character device و ioctl را در اختیار قرار می‌دهد، در حالی که پیاده‌سازی قابلیت‌های تخصصی در جای دیگری انجام می‌شود.عملکردهای واقعی دستگاه اندرویدی می‌توانند از طریق لایه انتزاع سخت‌افزار (HAL) و سرویس‌های وندور، پیاده‌سازی می‌شوند. به عبارت دیگر، HAL رابط‌های پایداری را تعریف می‌کند که فریمورک اندروید از آنها استفاده می‌کند، در حالی که رفتار واقعی سخت‌افزار خارج از کرنل پیاده‌سازی می‌شود. در نتیجه، برای بسیاری از مولفه‌های سخت‌افزاری، فقط یک درایور ساده با حداقل کد در drivers/miscقرار می‌گیرد. این رویکرد با پروژه تربل که جدایی کاملی بین سیستم اندروید و پیاده‌سازی وندور ایجاد می‌کند، کاملا عملیاتی در حال حاضر توسط شرکت‌های توسعه‌دهنده نرم‌افزار دستگاه‌های اندروید (همان سیستم‌عامل!) در حال استفاده است. بنابراین وندور، پیاده‌سازی‌های HAL و اجزای اختصاصی را در user space ارائه می‌دهد و کرنل تا حد زیادی بدون تغییر و قابل استفاده مجدد در نسخه‌های اندروید باقی می‌ماند.جمع‌بندیبه عنوان جمع‌بندی باید گفت بسیاری از ویژگی‌های اندروید مانند حسگرها، دوربین، gnss، در کرنل فقط یک رابط کاربری ارائه می‌دهد و عمدتا «منطق درایور» در HAL و پیاده‌سازی‌های وندور (فایل‌های so) قرار می‌گیرد. این طراحی، تفاوت اصلی بین اندروید و سیستم عامل‌های دسکتاپ سنتی است. بنابراین، در اندروید به سادگی نمی‌توان گفت درایور مربوط به یک مؤلفه سخت‌افزاری یک موجودیت با حدود و ثغور معین است و تعیین حدود آن نیاز به بررسی فنی دارد.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Mon, 22 Dec 2025 19:07:37 +0330</pubDate>
            </item>
                    <item>
                <title>بدافزار لَندفال (LANDFALL)</title>
                <link>https://virgool.io/@mrazian/%D8%A8%D8%AF%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%84%D9%8E%D9%86%D8%AF%D9%81%D8%A7%D9%84-landfall-cvapkgzdanod</link>
                <description>در نظر بگیرید گوشی سامسونگ S24 دارید؛ یک تصویر (آلوده) در واتس‌اپ دریافت می‌کنید و سپس هک می‌شوید؛ همین (That&#039;s it). هک می‌شوید یعنی یک جاسوس‌افزار وارد گوشی شما می‌شود با قابلیت‌های دسترسی به میکروفون، موقعیت مکانی و تاریخچه تماس‌ها!با من در این پست ویرگولی برای اطلاع از بردار حمله یکی از پیچیده‌ترین نمونه‌های سوءاستفاده از زنجیره آسیب‌پذیری در دستگاه‌های اندرویدی همراه باشیدقرارگیری بدافزار در انتهای تصویر آلودهپژوهشگران Unit42 خانواده‌ای از جاسوس‌افزارهای ناشناخته اندرویدی را یافته‌اند که در آن امکان جاسوسی صرفا از طریق دریافت یک عکس آلوده برای حمله‌کننده مهیا می‌شود. پژوهشگران Unit24، این بدافزار را لَندفال (LANDFALL) نامیده‌اند و راه دستیابی به آن را بررسی الگوهای حمله صورت گرفته در دستگاه‌های iOS (آسیب‌پذیری CVE-2025-43300) و آسیب‌پذیری واتس‌اپ (آسیب‌پذیری CVE-2025-55177) اعلام کرده‌اند:«در اواسط سال ۲۰۲۵، پس از افشای عمومی یک زنجیره‌ی نفوذ که دستگاه‌های iOS را هدف قرار می‌داد، ما به دنبال نمونه‌هایی از نفوذ iOS گشتیم. این بررسی‌ها منجر به کشف جاسوس‌افزار اندرویدی شد که آن را LANDFALL نامیدیم»جالب اینجاست که این آسیب‌پذیری قبل از وصله شدن در آوریل ۲۰۲۵، به طور فعال مورد سوءاستفاده قرار گرفته است.اطلاعات تکمیلینوع نقص: نقص نوشتن در خارج از محدوده (CWE-787: Out-of-bounds Write) در کتابخانه libimagecodec.quram.so شرکت کره‌ای Quramsoft. اطلاعات بیشتر در مورد این کتابخانه در گزارش ۲۰۲۰ پروژه صفر گوگل موجود است.آسیب‌پذیری ثبت شده: بهره‌برداری (سوءاستفاده) از آسیب‌پذیری روز صفر CVE-2025-21042 در کتابخانه پردازش تصویر اندروید سامسونگتوزیع بدافزار: از طریق فایل‌های تصویری DNG آلوده که از آسیب‌پذیری CVE-2025-21042 سوءاستفاده می‌کنندنوع جاسوسی: امکان نظارت کامل از جمله ضبط میکروفون، ردیابی موقعیت مکانی و جمع‌آوری تصاویر، مخاطبین، گزارش‌های تماس و ...نسخه‌های تحت تاثیر: سیستم‌عامل اندروید نسخه ۱۳، ۱۴ و ۱۵کاربران هدف: طراحی به طور خاص برای دستگاه‌های سامسونگ گلکسی (Galaxy S22, S23, S24 Series, Galaxy Z Flip4) و احتمالاً مورد استفاده در فعالیت‌های نفوذ هدفمند در غرب آسیا (خاورمیانه)زمان ارسال وصله: آوریل ۲۰۲۵ از طریق یک بسته به‌روزرسانی امنیتی (به اصطلاح SMR) از سوی سامسونگ. گزارش مختصر سامسونگ از این آسیب‌پذیری در زمان انتشار به‌روزرسانی امنیتیSVE-2024-1969(CVE-2025-21042): Out-of-bounds write in libimagecodec.quram.soSeverity: CriticalAffected versions: Android 13, 14, 15Reported on: September 25, 2024Disclosure status: Privately disclosedOut-of-bounds write in libimagecodec.quram.so prior to SMR Apr-2025 Release 1 allows remote attackers to execute arbitrary code.The patch adds proper input validationسازوکار حمله چگونه است؟۱- ارسال یک تصویر آلوده (فایل DNG حاوی یک ZIP داخلی و کد مخرب)۲- بهره‌برداری از یک آسیب‌پذیری روز صفر در libimagecodec.quram.so۳- مهاجم بدون نیاز به تعامل کاربر (یا نهایتا یک کلیک روی تصویر) به اجرای کد دسترسی پیدا می‌کند۴- استقرار دو مؤلفه زیر در مسیر /data/data/com.samsung.ipservice/files/ماژول ‌b.so که نقش loader مؤلفه‌ها را بر عهده دارد. عملکرد در پشتی توسط این ماژول انجام می‌شود.ماژول ‌l.so که وظیفه دستکاری خط مشی‌های SELinux در حال اجرا در حافظه را داراست. همانطور که می‌دانید SELinux یکی از ارکان اصلی معماری امنیتی اندروید است.۵- روش‌های پوشش و گریز: مثلا استفاده از tmpfs که یک فایل‌سیستم در حافظه اصلی ایجاد می‌کند (معمولا آنتی‌ویروس‌ها دیسک را بررسی می‌کنند)جمع‌بندیاین آسیب‌پذیری یک آسیب‌پذیری روز صفر حیاتی در کتابخانه پردازش تصویر سامسونگ است و به ادعای پژوهشگران Unit42، آسیب‌پذیری که لندفال از آن بهره‌برداری کرده است بخشی از یک الگوی گسترده‌تر از مشکلات مشابه است که در چندین پلتفرم موبایل یافت می‌شود. هر چند سامسونگ آسیب‌پذیری دیگر CVE-2025-21043 که مشابه آسیب‌پذیری فوق است را در سپتامبر رفع کرد اما این تهدید پیشرفته در رده گوشی‌های پرچم‌دار سامسونگ، نگرانی‌های جدی در مورد امنیت کاربران ایجاد کرده است. همانطور که در این تحلیل هم به وضوح شاهد بودیم، در حملات تلفن همراه هوشمند، زنجیره‌ای از آسیب‌پذیری‌ها در کنار هم منجر به آلوده کردن دستگاه و ایجاد دسترسی جهت راه‌اندازی حمله پیچیده بحرانی می‌شود. این نوع تهدیدات به عقیده بنده فراتر از هک و نفوذهای محدود و موردی به یک سازمان است و به عبارتی مصادیقی از Private Sector Offensive Actors است.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Tue, 25 Nov 2025 09:11:49 +0330</pubDate>
            </item>
                    <item>
                <title>بدافزار اندرویدی و /proc</title>
                <link>https://virgool.io/@mrazian/%D8%A8%D8%AF%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%DB%8C-%D9%88-proc-u8bgvhzsyu19</link>
                <description>کوتاه، با نگاه امنیت، به این پرسش پاسخ می‌دهم که یک بدافزار از /proc در اندروید چگونه استفاده می‌کند؟داده‌های موجود ذیل proc/با استفاده از شاخه (directory) پردازه‌ها یا همان proc/ می‌توان به مشاهده و یافتن پردازه‌ای خاص پرداخت. اینکه به چه قصدی قرار است از آن استفاده شود مسئله دیگری است که در پایان این نوشته به آن اشاره می‌شود:کار با پیمایش روی شاخه /proc آغاز می‌شود. برای هر PID (شناسه پردازه)، فایل‌های خاصی برای بررسی ویژگی‌های آن پردازه وجود دارد:/proc/1
/proc/2
/proc/3
...یافتن یک پردازه با استفاده از زمینه SELinux آن (مثلا یک بدافزار بررسی می‌کند که آیا برچسب با زمینه هدف برابر است یا خیر):/proc/&lt;PID&gt;/attr/currentبررسی PPID (شناسه والد یک پردازه): پردازه‌ای که والد آن init است، معمولاً یک سرویس سیستمی است. این بدان معناست که پردازه فرزند، یک برنامه معمولی نیست. این موضوع به بدافزار کمک می‌کند تا پردازه سیستمی مناسب را پیدا کند./proc/&lt;PID&gt;/statبررسی cmdline: این فایل شامل دستوری است که برای شروع پردازه استفاده می‌شود:/proc/&lt;PID&gt;/cmdlineاین داده‌ها برای شناسایی موارد زیر می‌تواند مورد استفاده قرار گیرد:یافتن پردازه مناسب برای افزایش مجوزیافتن سرویس‌های سیستمی برای تزریق کدیافتن پردازه مناسب برای سواری رایگان گرفتن (piggybacking) از منظر زمینه‌های SELinuxمیزبان‌هایی برای اجرای فایل‌های so</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sun, 23 Nov 2025 15:43:16 +0330</pubDate>
            </item>
                    <item>
                <title>به‌روزرسانی سیستم‌عامل از راه دور</title>
                <link>https://virgool.io/@mrazian/%D8%A8%D9%87-%D8%B1%D9%88%D8%B2%D8%B1%D8%B3%D8%A7%D9%86%DB%8C-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B9%D8%A7%D9%85%D9%84-%D8%A7%D8%B2-%D8%B1%D8%A7%D9%87-%D8%AF%D9%88%D8%B1-ifoswhvettrk</link>
                <description>در معماری‌های سنتی، به‌روزرسانی نرم‌افزار اغلب به دلیل محدودیت‌های سخت‌افزاری مانند سیم‌بندی ثابت یا حافظه‌های فقط-خواندنی غیرممکن بود یا صرفاً از طریق ابزارهای تخصصی در اختیار کارخانه و تعمیرکاران مجاز انجام می‌گرفت که عملا به‌روزرسانی محصولات را بسیار پرهزینه و کند می‌کرد. اما با گذشت زمان، طراحی سامانه‌ها با تمرکز بر چابکی انتشار تغییرات شکل گرفت. سامانه‌های امروزی در تلاشند تا جایی که امکان دارد معماری سامانه را به‌گونه‌ای طراحی کنند که قابلیت به‌روزرسانی داشته باشد. این معماری توسعه‌‌دهندگان را قادر می‌سازد تا بهبودهای نرم‌افزاری را به سرعت به دست کاربران سامانه برسانند (ارائه بهبود مستمر در فرهنگ DevOps). برای مثال گوگل در AOSP، تلاش کرده است در طی این سال‌ها علاوه بر به‌روزرسانی مجموعه برنامک‌ها و خدماتش (GMS) از طریق Play Store، به‌روزرسانی ماژول‌های سطح پایین سیستم (مانند HAL و ART) را نیز از طریق Apex انجام دهد.معماری سطح بالای سامانه به‌روزرسانی از راه دوربا این مقدمه بریم سراغ مسئله به‌روزرسانی. به‌روزرسانی یک سامانه (مانند تلویزیون، ساعت، گوشی هوشمند و دستگاه‌های چندرسانه ای خودرویی) می‌تواند به دو روش انجام پذیرد:۱- به صورت اتصال یک سیم از رایانه به گوشی یا تلویزیون برای انتقال بسته به‌روزرسانی، یا اتصال یک کارت حافظه یا فلش به گوشی یا تلویزیون برای انتقال بسته به‌روزرسانی؛ که به این روش‌ها به‌روزرسانی محلی (local) گفته می‌شود (برای مثال شیائومی این روش را برای دریافت نسخه‌های بتا ارائه می‌دهد)۲- به‌روزرسانی از طریق شبکه بدین صورت که دستگاه مربوطه (مثلا گوشی یا تلویزیون) به یک خدمت تحت شبکه (Backend) متصل شده و بسته به‌روزرسانی (OTA Package) را دریافت می‌کند که به این روش، به‌روزرسانی از راه دور (Over The Air) گفته می‌شود.بحث این پست در مورد روش دوم است. چند کلمه کلیدی در این روش وجود دارد که به صورت مجزا به آن می‌پردازیم:برنامک سمت Clientبرنامک سمت Client عملا نقش دریافت به‌روزرسانی و نصب به‌روزرسانی را در دستگاه هدف (موبایل، تلویزیون، ساعت و ...) بر عهده دارد. از گذشته تا کنون شیوه‌های مختلفی برای نصب به‌روزرسانی ارائه شده است که روش اخیر آن مربوط به گوشی‌های A/B است که عملا به کاربر این امکان را می‌دهد تا در زمان نصب بسته به‌روزرسانی (که ممکن است طولانی مدت باشد) با گوشی کار بکند و یا به هر دلیلی اگر بسته به‌روزرسانی مشکل داشت و با موفقیت به‌روزرسانی انجام نشد، دستگاه دچار boot loop یا bricked نشود و با همان سیستم‌عامل قبلی بالا بیاید.بسته به‌روزرسانیبسته به‌روزرسانی همان نسخه جدید سیستم‌عامل است که می‌تواند به دو صورت کامل یا افزایشی ساخته شود:انواع بسته به‌روزرسانیبسته به‌روزرسانی کامل: مناسب برای به‌روزرسانی‌های اساسی (مانند به‌روزرسانی اندروید از نسخه ۱۵ به نسخه ۱۶) یا پس از تعداد زیادی بسته به‌روزرسانی افزایشی (برای سهولت کاربر در دریافت یکباره تمامی به‌روزرسانی و یا اهدافی مانند اطمینان از پایدار ماندن سامانه). البته حجم بسته به‌روزرسانی در این روش می‌تواند چند گیگابایت باشد.بسته به‌روزرسانی افزایشی: مناسب برای تغییرات کوچک مانند اضافه شدن یک برنامک یا بهبود عملکرد یا رفع مشکلات (bug). این بسته صرفا اختلاف نسخه قبلی و نسخه جدید را می‌سازد بنابراین پارتیشن‌های بدون تغییر در بسته به‌روزرسانی قرار نمی‌گیرند و صرفا تغییرات قرار داده می‌شود که طبیعتا باعث کاهش قابل توجه حجم بسته به‌روزرسانی می‌شود مثلا ۵۰ مگابایت (البته بسته به میزان تغییرات این اندازه کمتر یا بیشتر می‌شود).امنیت بسته به‌روزرسانیمعمولا بسته به‌روزرسانی دارای محرمانگی نیست. یعنی می‌تواند حتی به صورت عمومی در وب منتشر شود. اما آن‌چه حائز اهمیت است صحت (درستی بسته) است. صحت بسته از دو منظر: یک اینکه این بسته الزاما توسط نهاد مجاز ساخته شده است. برای پاسخ به این نیازمندی، بسته‌ها با کلید پلتفرم امضا می‌شوند بدین معنی که اگر به هر طریقی غیر از نهاد مجاز، بسته به‌روزرسانی ساخته و به سوی کلاینت ارسال شود، کلاینت پس از اعتبارسنجی بسته، متوجه می‌شود این بسته نامعتبر است (چرا که با کلید دیگری امضا شده است). منظر دوم، صحت محتوای دانلود شده است که این نیز با کمک الگوریتم‌های عصاره‌ساز صحت‌سنجی می‌شود. البته مسئله به اینجا ختم نمی‌شود و اعتبارسنجی‌های دیگری نیز باید صورت پذیرد.نرم‌افزار مدیریت انتشار (Backend App)کمینه ویژگی‌های این نرم‌افزار، مدیریت انتشار بسته‌های به‌روزرسانی و ارائه گزارش‌های تحلیلی است. از بارگذاری بسته‌های به‌روزرسانی گرفته تا امکاناتی نظیر از انتشار و توقف انتشار (در مواقع اضطراری در صورت دریافت گزارش خطا) همگی از کارکردهای نرم‌افزار مدیریت انتشار است. به علاوه، وجود یک پنل گزارش‌دهی تحلیلی، به تصمیم‌گیران کمک می‌کند تا برنامه‌ریزی بهتری برای انتشارهای آینده داشته باشند. نرم‌افزار مدیریت انتشار از معماری پیچیده‌ای برخوردار است که جریان‌های داده و وابستگی‌های ظریف بسیاری در آن وجود دارد.بحث و گفتگوتفاوت به‌روزرسانی از راه دور با remote config چیست؟به‌روزرسانی از راه دور، برای ارسال و نصب کد جدید (نسخه جدید برنامک) استفاده می‌شود در صورتی که در پیکربندی از راه دور (remote config)، تغییر مقادیر و تنظیمات در همان نسخه فعلی برنامک انجام می‌شود. مثلا زمانی که یک آسیب‌پذیری امنیتی در برنامک رخ می‌دهد این آسیب‌پذیری از طریق تغییر کد نرم‌افزار فعلی قابل رفع است و باید به‌روزرسانی صورت پذیرد. اما زمانی که شما می‌خواهید رنگ یک دکمه در رویداد شب یلدا تغییر کند خوب این کار با پیکربندی از راه دور می‌تواند انجام شود. به عنوان جمع‌بندی در به‌روزرسانی از راه دور ارسال نسخه جدیدی از برنامک انجام می‌شود در حالیکه در پیکربندی از راه دور، تغییر رفتار و ظاهر برنامک فعلی انجام می‌شود.تفاوت به‌روزرسانی یک برنامک (Application) در اندروید با به‌روزرسانی سیستم‌عامل در چیست؟پاسخ به این پرسش را می‌توان از دو منظر ارائه داد:۱- ماندگاری تغییرات، ۲- منبع انتشار به‌روزرسانی، ۳- گستره تغییرات و ۴- کنترل دریافت و نصب به‌روزرسانی۱- ماندگاری تغییرات: این تغییرات دائمی و بر روی مثلا پارتیشن سیستم/سوپر نوشته می‌شوند و با برگشت به کارخانه (Factory reset) این تغییرات از بین نمی‌رود. در صورتیکه در به‌روزرسانی برنامک‌ها، این تغییرات پس از بازگشت به حالت کارخانه از بین می‌رود.۲- منبع انتشار به‌روزرسانی:‌ در به‌روزرسانی برنامک، به‌روزرسانی معمولا توسعه دهنده منتشر می‌شود و از طریق مخازن برنامک (مانند کافه‌بازار، مایکت و پلی‌استور)، در دسترس کاربران قرار می‌گیرد. در صورتیکه، در به‌روزرسانی سیستم‌عامل، بسته به‌روزرسانی توسط سازنده دستگاه (OEM) مانند سامسونگ و شیائومی در همکاری با گوگل منتشر می‌شود.۳- گستره تغییرات: در به‌روزرسانی برنامک، به‌روزرسانی فقط روی خود برنامک تاثیر می‌گذارد (در یک فضای ایزوله مختص برنامک). در صورتی که به‌روزرسانی سیستم‌عامل در کل دستگاه (system-wide) تأثیر می‌گذارد. این به‌روزرسانی می‌تواند هسته سیستم (Kernel)، درایورها، رابط کاربری سیستم، وصله‌های امنیتی، کتابخانه‌های اصلی و عملکرد کلی دستگاه را تغییر دهد؛ یک به‌روزرسانی خوب می‌تواند عمر باتری دستگاه و سرعت واکنش رابط کاربری را بهبود چشمگیری بدهد در حالیکه به‌روزرسانی بد می‌تواند کل دستگاه را کند کرده یا باعث ‌افزایش مصرف باتری شود.۴- کنترل دریافت و نصب به‌روزرسانی: در به‌روزرسانی برنامک‌ها از مخازن، کاربر اختیارات بیشتری دارد و می‌تواند دریافت و نصب به‌روزرسانی را به تأخیر بیاندازد. در حالی که در به‌روزرسانی سیستم‌عامل، کاربر کنترل بسیار کمتری دارد و گاهی اوقات به‌روزرسانی به صورت اجباری نصب می‌شود.کدام بخش از سیستم‌عامل قابل به‌روزرسانی از راه دور است؟در معماری سیستم روی یک تراشه (SoC) که در محصولاتی مانند تلفن همراه هوشمند از آن بهره می‌برند، بخش‌های اندرویدی تنها یک زیرسامانه است. زیرسامانه‌های دیگری نیز وجود دارند.چه نمونه‌هایی از این سامانه در دنیا وجود دارد؟همانطور که پیش‌تر اشاره شد شرکت‌های OEM تولید کننده موبایل (مانند سامسونگ، هواوی و شیائومی) یا تلویزیون (LG) سامانه به‌روزرسانی از راه دور اختصاصی خود را دارند. اما در کنار این سرویس‌های اختصاصی، چند سرویس‌دهنده عمومی هم وجود دارد که دو مورد از آن‌ها gota و qbee است.در کنار مزیت‌های رویکرد سامانه‌های امروزی در به‌روزرسانی از راه دور، چه تهدیداتی می‌توان متصور شد؟در بسته به‌روزرسانی هر اتفاقی ممکن است رخ دهد. مشخصا دو تهدید وجود دارد: ۱- از کار انداختن برخی از امکانات سامانه ۲- تبدیل یک سامانه امن به ناامن.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Mon, 13 Oct 2025 16:09:34 +0330</pubDate>
            </item>
                    <item>
                <title>همکار یا همراه</title>
                <link>https://virgool.io/@mrazian/%D9%87%D9%85%DA%A9%D8%A7%D8%B1-%DB%8C%D8%A7-%D9%87%D9%85%D8%B1%D8%A7%D9%87-dbcw5z3fxxds</link>
                <description>یک ویدئویی در لینکدین دیدم از ایلان ماسک، می‌گفتمن یه درسی گرفتم از اشتباهی که چند بار تکرار کردم، اون اشتباه این بود که در جذب عضو جدید به استعداد بیشتر از شخصیت بها دادم و هر بار با خودم گفتم دیگه این کار رو نمی‌کنم.جدای از نظر آقای ایلان ماسک، من خودم تجربه مشابه دارم. یه زمان، می‌رفتیم توی کوئرا و اونجا المپیادی‌ها رو پیدا می‌کردیم. یادمه چند مصاحبه هم رفتیم: یکی می‌گفت کارتون خوبه ولی فروردین باید برم روسیه مسابقات، یکی می‌گفت کارتون طوری نباشه که پدربزرگم توی قبر بگه این چه کاریه داری می‌کنی، یکی دیگه می‌گفت می‌خوام ارشد برم رشته فلسفه علم و...در مصاحبه غیر المپیادی‌ها، بعضا خارج رفته هم داشتیم: مصاحبه شونده می‌گفت کارتون خیلی جذابه و بخشی از نقشه راه شغلی منه ولی تهش دیدیم رفت سمت فریلنسری بلاک‌چین و فین‌تک. به عنوان تجربه شکل‌گیری همکاری هم، تجربه‌ای دیگر داشتیم که فرد به شدت خود را متخصص و دیگران را (حتی در گستره خارج از شرکت) غیرمتخصص و کار نابلد می‌دانست؛ در وصف این تجربه، این جملات را می‌توانم نقل کنم (بخش‌هایی از کتاب سکوت، قدرت درون‌گرا‌ها، نشر کتابسرای تندیس)بخش‌هایی از کتاب سکوت، قدرت درون‌گرا‌هابخش‌هایی از کتاب سکوت، قدرت درون‌گرا‌هابه مرور زمان با مشورت‌هایی که گرفتم و تجربه‌هایی که بدست آوردم به این باور رسیدم که آن‌چه مهم است شخصیت کاری حرفه‌ای است.شخصیت کاری حرفه‌ایبه اعتقاد بنده شخصیت کاری حرفه‌ای شامل علاقه به پیشرفت، اهل مطالعه بودن، با انگیزه بودن، پر تلاش بودن، توان حل مسئله، تفکر سیستمی داشتن، تفکر الگوریتمی داشتن، چندبعدی مسائل را دیدن و توان انجام کار تیمی، ماندگاری در تیم/شرکت، نقدپذیری، توان انتقاد به صورت حرفه‌ای، یادگیرنده مادام‌العمر بودن، تواضع و دقت علمی (پرهیز از اصرار بر روی درست بودن نظر شخصی چرا که در مباحث علمی خیلی وقت‌ها صرفا یک چیز درست وجود ندارد و مزایا معایب مطرح است)، آشنایی با اصول روش تحقیق (research)، خود را به صورت عملی و واقعی محتاج به یادگیری دیدن و پرهیز از خودبرترپنداری و مسخره کردن دیگر هم‌تیمی‌ها (از بزرگ‌ترین -یا بزرگ‌ترین- آفت‌های یک محیط کاری)، کمک به رشد دیگر هم‌تیمی‌ها، مفید بودن برای محیط کار، توان درک و تحلیل شرایط مختلف است. نکته مهم این است که در انتخاب عضو جدید، فردی مستعد یادگیری و دارای پتانسیل اکتساب این ویژگی‌ها، به یک فرد متخصص فاقد این ویژگی‌ها می‌تواند ارجحیت داشته باشد.همکاری یا همراهیشاید به این دلیل که جمع بخش قابل توجه یا تمامی ویژگی‌های بالا در یک فرد در یک شخص سخت باشد، شرکت‌ها سعی می‌کنند در گذر زمان، برخی همکاران را با نگاه یک همراه در نظر بگیرند و این یعنی سهیم کردن مستقیم یک عضو شرکت در سود و زیان شرکت. البته متاسفانه، تیم‌های مدیریتی سطح بالای شرکت، با در نظر نگرفتن این ویژگی‌های برجسته در یک همکار (همراه)، انگیزه همراهی را در این همکاران تحت تأثیر قرار می‌دهند. معمولا مدیرعامل و C-Level ها باید به طور جدی پشتیبان یکدیگر باشند تا زمینه اختلاف و نفوذ و از هم پاشیدگی ساختار مدیریتی و هدایت شرکت پیش نیاید.جمع‌بندیدر آخر، بنده هم جمله آقای ماسک را تکرار می‌کنم و به عنوان جمع‌بندی می‌گویم: من یه درسی گرفتم از اشتباهی که چند بار تکرار کردم، اون اشتباه این بود که در جذب عضو جدید به استعداد بیشتر از شخصیت بها دادم و هر بار با خودم گفتم دیگه این کار رو نمی‌کنم.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sat, 06 Sep 2025 13:25:52 +0330</pubDate>
            </item>
                    <item>
                <title>یافتن آدرس دقیق در گوشی‌های اندرویدی (با سرویس‌های گوگل)</title>
                <link>https://virgool.io/@mrazian/%DB%8C%D8%A7%D9%81%D8%AA%D9%86-%D8%A2%D8%AF%D8%B1%D8%B3-%D8%AF%D9%82%DB%8C%D9%82-%D8%AF%D8%B1-%DA%AF%D9%88%D8%B4%DB%8C-%D9%87%D8%A7%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%DB%8C-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7%DB%8C-%DA%AF%D9%88%DA%AF%D9%84-js86ynykxb0n</link>
                <description>برای خیلی‌ها این سوال مطرح است که چگونه گوگل به مکان دقیق ما پی می‌برد بدون اینکه در آن مکان سیگنال GPS وجود داشته باشد. در این نوشتار علاوه بر پاسخ این سوال، نکات جذاب دیگری پیرامون یافتن موقعیت مکانی ارائه می‌شود.یافتن موقعیت مکانی از طریق ماهواره (منبع تصویر)معمولا وقتی بحث دریافت موقعیت مکانی می‌شود از اصطلاح GPS استفاده می‌شود هرچند GPS، تنها نام یک سامانه است که به عنوان اولین سامانه یافتن موقعیت مکانی ارائه شد و مورد استفاده قرار گرفت و به همین خاطر باعث شد کاربران به سامانه‌های ماهواره‌ای مورد استفاده جهت مکان‌یابی به اشتباه GPS بگویند. اصطلاح صحیح GNSS است بدین معنی:سامانه ماهواره‌ای ناوبری جهانی (GNSS) به مجموعه‌ای از سامانه‌های ماهواره‌ای گفته می‌شود که برای موقعیت‌یابی و ناوبری جهانی استفاده می‌شوند. این سامانه‌ها با ارسال سیگنال‌های رادیویی از ماهواره‌ها به گیرنده‌ها، امکان تعیین موقعیت دقیق در هر نقطه‌ای از زمین را فراهم می‌کنند.سامانه‌های ماهواره‌ای ناوبری (GNSS, Global Navigation Satellite System) مختلفی نظیر GPS امریکایی، بیدو (BeiDou) چینی، GLONASS روسیه و GALILEO اتحادیه اروپا وجود دارند که یک یا چند مورد از آن‌ها جهت دریافت موقعیت مکانی در تجهیزات (مانند گوشی هوشمند) مورد استفاده قرار می‌گیرند.برخی از سامانه‌های GNSS (منبع تصویر)اما بحثی که این نوشتار به آن می‌پردازد این است که زمانی که امواج این ماهواره‌ها در دسترس نیست، چگونه موقعیت مکانی به برنامک‌ها ارائه می‌شود. مثلا فرض کنید در محوطه مسقف باغ کتاب تهران هستید چگونه برنامک تاکسی اینترنتی، موقعیت مکانی‌تان را تشخیص می‌دهد؟در این شرایط (زیر سقف، درون برج‌ها)، از روش‌های شبکه‌ای (بر خلاف ماهواره‌ای) برای بدست‌آوردن موقعیت مکانی استفاده می‌شود. روش‌های شبکه‌ای (Network-based) یعنی از داده‌های شبکه‌ای جهت تخمین موقعیت مکانی استفاده می‌شود. داده شبکه‌ای مثل چی؟ مثلا اطلاعات مروبط به مودم وای‌فای‌ای که در محدوده پوشش آن هستید! یا دستگاه‌های بلوتوثی که در محدوده آن حضور دارید.موقعیت مکانی مبتنی بر شبکه در اندروید به روشی اشاره دارد که دستگاه شما موقعیت مکانی خود را با استفاده از سیگنال‌های شبکه‌های تلفن همراه و نقاط دسترسی Wi-Fi تخمین می‌زند، نه اینکه صرفاً به GNSS متکی باشد. سرویس دقت موقعیت مکانی اندروید (که قبلاً سرویس‌های موقعیت مکانی گوگل نام داشت) داده‌های این منابع را به همراه حسگرهای دستگاه ترکیب می‌کند تا موقعیت مکانی سریع‌تر و دقیق‌تری را ارائه دهد، به خصوص در داخل خانه یا در مناطقی که دریافت سیگنال ماهواره‌ای ضعیفی دارند.بنابراین، در مثال حضور در محوطه سرپوشیده باغ کتاب، با کنار هم قرار دادن داده مربوطه به اطلاعات مودم وای‌فای (MAC Address) موجود در باغ کتاب و قدرت سیگنال آن (در گوشی شما) و موقعیت مکانی آن مودم وای‌فای (که پیش‌تر در پایگاه داده ذخیره شده است)، موقعیت مکانی شما بدست می‌آید. شناسایی موقعیت مکانی وای‌فای از بیرون ساختمان می‌تواند در دسترس باشد یعنی جایی که سیگنال ماهواره برای ثبت موقعیت مکانی آن با کمک گوشی شما! هنوز در دسترس است.استفاده از داده‌های شبکه‌ای جهت تخمین موقعیت مکانی (منبع تصویر)علاوه بر شرایطی که در آن سیگنال ماهواره وجود ندارد دلیل دیگر استفاده از روش‌های شبکه‌ای برای یافتن موقعیت مکانی، زمان (سرعت یافتن موقعیت مکانی) است. تخمین موقعیت مکانی با استفاده از ترکیب اطلاعات از طریق دریافت اطلاعات چهار ماهواره است که ممکن از چند ده ثانیه به طول بینجامد. در این فاصله نیز از داده‌های شبکه‌ای برای یافتن حدود موقعیت مکانی شما استفاده می‌شود.استفاده از پارامترهای برج‌های مخابراتی جهت تخمین موقعیت مکانی (منبع تصویر)علاوه بر سیگنال وای‌فای و حسگرها، استفاده از داده‌ها (قدرت سیگنال دریافتی) و موقعیت مکانی شما نسبت به برج‌های شبکه‌های مخابراتی نیز می‌تواند در تخمین موقعیت مکانی شما استفاده شود؛ البته منوط به پشتیبانی مودم گوشی (base-band) در تامین پارامترهای چندین برج مخابراتی! بگذریم...چگونه داده‌های شبکه‌ای جمع‌آوری می‌شوند؟زمانی که گزینه دقت مکان‌یابی (Location Accuracy) در تنظیمات گوشی اندروید روشن باشد (می‌شود!)، اطلاعاتی درباره سیگنال‌های وایرلس مانند نقاط اتصال وای‌فای (Wi-Fi access point)، برج‌های ارتباطات مخابراتی (cellular network tower) به همراه داده‌های حسگر‌های گوشی مانند حسگر شتاب‌سنج یا جهت‌نما، برای تخمین دقیق‌تر موقعیت مکانی دستگاه استفاده می‌شود.مشاهده نماهای زیر از گوشی اندرویدی به درک شیوه طراحی رابط/تجربه کاربری گوگل (به منظور ترغیب کاربر) جهت دریافت، ذخیره‌سازی و پردازش داده‌های شبکه‌ای کاربران برای استفاده در سرویس موقعیت مکانی کمک زیادی می‌نماید.فعال‌سازی خودکار وای‌فای ذخیره شده (بدون اینکه کاربر آن را روشن نماید)ترکیب داده‌های وای‌فای و موقعیت مکانیآماده‌سازی ساز و کار دفاع قضایی/حقوقی گوگل در محاکمترغیب کاربر به روشن نگه‌داشتن لوکیشن در گوشیدریافت مجوز ارسال داده جهت تکمیل پایگاه داده برای استفاده در مکان‌یابیبرای اینکه بدانید معمولا چه زمانی این مجوزها توسط کاربر داده می‌شود مطالعه این صفحه را توصیه می‌کنم.سپاس از توجه شما</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Wed, 30 Jul 2025 17:25:28 +0330</pubDate>
            </item>
                    <item>
                <title>صفحات راه‌اندازی اندروید یا دام رضایت</title>
                <link>https://virgool.io/@mrazian/%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%DB%8C%D8%A7-%D8%AF%D8%A7%D9%85-%D8%B1%D8%B6%D8%A7%DB%8C%D8%AA-yirizrq2lgfy</link>
                <description>در این نوشته می‌خواهم یک تعریف ساده اما مهم را با شما به اشتراک بگذارم. پیش به سوی این تعریف و نامگذاری جدید...وقتی یک گوشی اندرویدی جدید می‌خرید، پس از باز کردن جعبه (آنباکس کردن) و جستجوی میان اکسسوری‌ها و لوازم جانبی آن، در نهایت دکمه پاور را فشار می‌دهید تا برای اولین بار دنیای نرم‌افزاری گوشی جدیدتان را کشف کنید. اما به یکباره با برنامک Setup Wizard مواجه می‌شوید. به نرم‌افزار (یا برنامکی) که پس از روشن کردن گوشی (پس از بوت‌لوگو و بوت‌انیمیشن) به کاربر نمایش داده می‌شود Setup Wizard یا صفحات راه‌اندازی گفته می‌شود. تا حالا دقت کردید در برنامک Setup Wizard چه اتفاقی می‌افتد و اصلا! فایده این برنامک چیست؟ چند تصویر از آن را ببینیم.تصویر ابتدایی برنامک Setup Wizardدریافت مجوز ذخیره مکان، مودم‌های وای‌فای و نودهای ارتباطی مخابراتیاجازه اسکن وای‌فای‌های اطراف شما حتی اگر وای‌فای و بلوتوث خاموش باشد!این برنامک توسط پکیج GMS به AOSP اضافه می‌شود به عبارت دیگر، در سیستم‌عامل اندروید (AOSP) این برنامک وجود ندارد و بهتر بگویم، اگر با سیستم‌عاملی (مانند لینیج) برنامک Setup Wizard اختصاصی خودش را داشته باشد، با نصب بسته GMS، برنامک Setup Wizard گوگل جایگزین آن می‌شود. اما چرا این برنامک مهم است و نیاز دارد به تعریف یا بازتعریف!معمولا در این زمان (اولین بار پس از خرید و روشن کردن گوشی)، به دلیل اشتیاق کاربر بر مشاهده سریع مراحل بعدی و بالا آمدن گوشی (ذوق خرید یا علاقه به فناوری، یا ضعف در خواندن متون انگلیسی یا کم‌حوصلگی متون فارسی طولانی)، به تله رضایت (به دلیل روشن بودن پیش‌فرض این ویژگی‌ها) دچار می‌شود. به همین خاطر تعریف من از این برنامک، Setup Wizard (صفحات راه‌اندازی) نیست و به جای آن از عبارت دام رضایت برای نامگذاری این برنامک استفاده می‌کنم.چند نکته پیرامون این بحثدام رضایت اشاره به «حریم‌پنداری» کاربران دارد در حالی که از پیامدهای واقعی آن بی‌خبرند. این نکته تاکید می‌شود که سیستم به گونه‌ای طراحی شده است که کاربر را به اشتراک‌گذاری اطلاعات تشویق می‌کند.کاربر تصور می‌کند حریم خصوصی‌اش حفظ می‌شود، اما واقعاً اینطور نیست. این پلتفرم‌ها با اصطلاحات حقوقی گیج‌کننده، کاربر را فریب می‌دهند. مثلا از این عبارات استفاده می‌کنند: برای افزایش دقت و راحتی استفاده یا بهبود پرفورمنس نیاز داریم فلان داده را دریافت و ذخیره نماییم (غافل از سوءاستفادهٔ بعدی)کاربران از تله رضایت عبور می‌کنند! بدون اینکه بدانند چه داده‌هایی را واگذار می‌کنند. به عبارت دیگر صفحات «شرایط و ضوابط» را کمتر کسی می‌خواند!به عقیده نگارنده، اگر نام این برنامک از Setup Wizard به دام رضایت عوض شود کاربر با آگاهی بیشتری از این برنامک استفاده می‌کند.نظر شما چیست؟‌ لطفا نظرتان را به اشتراک بگذارید...</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Mon, 21 Jul 2025 17:14:40 +0330</pubDate>
            </item>
                    <item>
                <title>تغییرات معوقه یا آغازی با پایان نزدیک | سیستم‌عامل اندروید</title>
                <link>https://virgool.io/@mrazian/%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%D8%A7%D8%AA-%D9%85%D8%B9%D9%88%D9%82%D9%87-%DB%8C%D8%A7-%D8%A2%D8%BA%D8%A7%D8%B2%DB%8C-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%A7%D9%86-%D9%86%D8%B2%D8%AF%DB%8C%DA%A9-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-ul8mxtcnc9y0</link>
                <description>تیم اندرویدِ گوگل به تازگی دو تغییر متفاوت ایجاد کرده است:۱- تغییر نام از Android Open Source Project به Android Open System Platformنام حدودا ۱۵ ساله پروژه متن‌باز اندروید (از ۲۰۰۷ تا ابتدای ۲۰۲۴)نام جدید: سکوی سامانه باز اندروید یا سکوی باز سامانه اندروید! (از اوایل ۲۰۲۴)۲- ارائه ابزار Android Studio for Platform (ASfP)توسعه ابزار توسعه پلتفرم اندروید  (ارائه در سپتامبر ۲۰۲۳)به بهانه این دو تغییر تصمیم گرفتم کمی در مورد اندرویدِ گوگل بنویسم.اندروید؛ تلاقی مسائل عمیق فنی با مسائل بازاریابی (و شاید سیاستی)ما علوم/مهندسی کامپیوتر خوانده‌ها، برای درس سیستم‌عامل، یا تننبام خوانده‌ایم یا سیلبرشتز و استالینگز؛ در این کتاب‌ها،‌ یا دیگر منابع با کیفیت مؤلفین ایرانی، وقتی سیستم‌عامل می‌خوانیم مباحثی مانند چرخه حیات یک پردازه، مدیریت حافظه، چندپردازگی/چندنخی در سیستم‌عامل، ورودی/خروجی را بحث و بررسی می‌کنیم. تمامی این مباحث، کاملا فنی هستند و این طور نیست که در مدیریت پردازه بگوییم اگر می‌خواهید عملکرد بهتر را بگیرید چاره‌ای ندارید جز اینکه از محصول فلان شرکت باید استفاده کنید. حقیقتا اصلا انتظار چنین بحثی هم نداریم؛ برای چند لحظه فکر کنید سرِ کلاسِ سیستم‌عامل، مباحث بازاریابی در حین بیان بحث SJF (کوتاه‌ترین کار، اول) در مدیریت پردازه گفته شود.در کمال ناباوری! اما در اندرویدِ گوگل، مسئله گونه دیگری است. اندروید خیلی زود مسائل بازاری و بازاریابی را در معماری سیستم‌عامل وارد کرد. شاید برای خواننده این سوال پیش آید که چرا این موضوع اصلا مهم است و نیاز به بحث دارد. اجازه دهید اینگونه بگویم: وقتی ما در حال طراحی معماری یک سامانه نرم‌افزاری هستیم به طور معمول به جنبه‌های فنی فکر می‌کنیم اینکه مثلا چگونه سیستم مقیاس‌پذیر باشد، چگونه خطا را تحمل کند، چگونه تراکنش‌های امن انجام دهد و این‌طور بحث‌ها. حالا فکر کنید بدین شیوه فکر کنیم: چگونه معماری را طوری طراحی کنیم که توسعه‌دهنده، برای استفاده نزدیک-به-بهینه معماری ما، ملزم به استفاده از فلان سرویسِ تجاری‌مان شود (که پولی است و کدبسته). در کمال ناباوری! وقتی روی سیستم‌عامل متن‌باز اندروید می‌خواهید یک سامانه‌ای را راه‌اندازی بکنید خیلی عجیب نیست که برخورد کنید با چنین اتفاقی، یعنی الزام به استفاده از سایر محصولات انحصاریِ تجاریِ کدبسته مثل Google Play Services (در حالی که اساسا شما در حال استفاده از سیستم‌عامل هستید و نباید مقید شوید به استفاده از یک محصول تجاری).شاید نگاهمان به اندروید اشتباه بوده است!شاید از ابتدا نگاهمان به اندروید اشتباه بوده است! یعنی نباید اندروید را مانند یک سیستم‌عاملِ حاصل از دل دانشگاه یا یک آزمایشگاه تحقیقاتی یا یک پایان‌نامه دانشگاهی می‌دیدیم. اندروید در حاشیه یک نمایشگاه شکل گرفت؛ خواستگاهش نمایشگاه (یک محل تجاری با حضور بازاریابان و تصمیم‌گیران/تصمیم‌سازان) و ادامه‌اش هم در یک شرکت تجاری بود. احساس می‌کنم با یک خطای شناختی (سوگیری شناختی) مواجه شدیم و از پس آن برنیامدیم! در طی این سال‌ها، تیم اندرویدِ گوگل، برای رسیدن به مقاصد بازاریابی/سیاستی، کارهای (نمایشی) زیادی انجام داده است. یکی از این کارها، راه‌اندازی OHA بود که به نظر می‌رسد فقط برای به کرسی نشاندن سیاست‌هایش ایجاد کرد و خیلی زود پرونده‌اش را جمع کرد.مدل‌های درآمدی اندرویدِ گوگل اندرویدِ گوگل، مدل‌های درآمدی جالبی برای محصولاتش توسعه داده است که هنوز به نظرم برخی از آن‌ها برای جامعه توسعه‌دهندگان و مدیران کسب و کار، کشف‌نشده باقی مانده است (مگر برای کسانی که در حوزه توسعه سیستم‌عامل اندروید و طراحی/تولید گوشی اندرویدی کار می‌کنند). یکی از آن‌ها هزینه استفاده از Google Play Services است.اما علت تغییرات و گمانه‌زنی‌هادر مورد تغییر اول باید گفت: می‌دانیم و می‌دانستیم که اندروید یک پروژه متن‌باز (Open Source) است اما هیچ‌گاه نشأت‌گرفته از جامعه (Community-driven) نبوده است (بر خلاف مثلا سیستم‌عامل‌های گنو/لینوکسی که می‌بینیم حول برخی از آن‌ها، Mail List شکل گرفته و با هم‌افزایی، هرچند کمی استبدادی، جامعه‌محوری به چشم می‌خورد). روال اندروید اینگونه بوده است که تغییرات را اعمال و در گردهمایی Google IO اطلاع‌رسانی می‌کرده است. حالا پس از سال‌ها (تقریبا ۱۵ سال)، گوگل به جای پروژه متن‌باز اندروید می‌گوید سکوی سامانه باز اندروید. به نظر می‌رسد یک دلیل این است که دیگر نیاز به جلب اعتماد از طریق متن‌بازی ندارد و حالا همچنان می‌خواهد به عنوان سکو در کنار رقبای چینی زنده بماند (سیستم‌عامل هارمونی و هایپراُاِس شیائومی). البته این سال‌ها، شکایت‌های زیادی حتی از سوی اروپایی‌ها به دلیل نقض قانون رقابت (Antitrust) علیه اندرویدِ  گوگل بوده است که شاید این اصطلاح آن‌جا نیز بتواند برای این نشان تجازی اثربخش باشد.در مورد تغییر دوم باید گفت: سال‌هاست که توسعه‌دهندگان سیستم‌عامل (که تعدادشان در برابر توسعه‌دهندگان برنامک یا همان اپلیکیشن‌های اندرویدی بسیار بسیار کم است) منتظر چنین اتفاقی بودند اما گوگل ابزارهای داخلی‌اش که برای توسعه بخش سیستم‌عامل استفاده می‌کند را منتشر نمی‌کرد. به عبارت دیگر، برای توسعه زیست‌بومش، ابزار Android Studio و هرچه بخواهید سند رایگان و به‌روز در اختیار توسعه‌دهندگان اپلیکیشن قرار داده است (چرا که توسعه‌دهندهِ اپلیکیشن بیشتر، یعنی تعداد اپلیکیشن بیشتر، و این یعنی اکوسیستم بزرگتر، وابستگی بیشتر، قدرت و پول بیشتر). اما در حوزه توسعه خود سیستم‌عامل چطور؟ به سختی می‌توان حتی سند رایگانِ به‌روز روان پیدا کرد چه رسد به ابزار. حالا، انتشار این ابزار پس از ۱۵ سال، شاید ورود اندروید به دیگر زمینه‌ها مانند ساعت هوشمند و اینترنت اشیا را برای تولیدکنندگان خرد سهل‌الوصول می‌کند.خوشحال خواهم شد از نظرات و گمانه‌زنی‌های شما در بخش نظرات مطلع بشوم.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sun, 23 Jun 2024 09:36:07 +0330</pubDate>
            </item>
                    <item>
                <title>تابع بازگشتی (غلط رایج)</title>
                <link>https://virgool.io/@mrazian/%D8%AA%D8%A7%D8%A8%D8%B9-%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA%DB%8C-%D8%BA%D9%84%D8%B7-%D8%B1%D8%A7%DB%8C%D8%AC-hgt0ttnqpy02</link>
                <description>یکی از اصول تفکر محاسباتی توانایی شکستن مسأله به زیرمسائل است (بعد از یافتن الگو). این رو می‌دونیم! حال اگر زیر مسائل مشابه مسأله اصلی باشند اما با اندازه کوچکتر می‌توان از تکنیک توابع خوداتکاء بهره برد. این عبارت اندازه کوچکتر هم خیلی مهم است (چرا که قرار است این شکستن به زیرمسئله یک جایی پایان پذیرد).تفکر محاسباتی و اجزای آنترجمه‌های توابع باز وقوع یا باز فراخوانی‌شونده نیز از ترجمه ضعیف تابع بازگشتی بهتر است اما ما از ترجمه توابع خوداتکاء استفاده می‌کنیم. بازگشت ترجمه کلمه return است و ترجمه کلمه recur (Recursive Function) به معنای تکرار انجام یک کار است. اما کمی عمیق‌تر و با تأمل بیشتر، در این بافتار (Context) ترجمه خوداتکاء به نظر بسیار پرمغز انتخاب شده است. اینکه در این روش، یک تابع برای انجام کارش به خودش اتکا کرده است (تکیه کرده است).برای اینکه مسئله‌ای بتواند به روش خوداتکاء حل شود باید یک ویژگی اساسی داشته باشد که عبارت است از: مسئله اصلی (مسئله‌ای که به ما داده می‌شود) قابل خرد شدن به زیر مسئله‌هایی از همان نوع مسئله اصلی باشد، به شرطی که اندازه زیر مسئله‌های ایجاد شده کمتر (کوچک‌تر) باشد.چه زمانی از روش توابع خوداتکاء استفاده کنیم؟شخصاً با توضیحات بالا به نظرم می‌رسد پاسخ به این سؤال داده شد اما با این حال می‌توان این‌گونه به طور شهودی، بیان کرد:وقتی در شکست مسأله، زیرمسائل خود گونه کوچکتری از مسأله اصلی هستندزمانی که یک عملی (مجموعه اعمالی) باید پس از پایان یافتن یک مجموعه اعمال دیگر به ترتیب از آخر به اول انجام شود.رتب‌سازی ادغامی یا Merge Sort، تصویر از سایت لینوکس‌هینتبرای روشن‌شدن مورد دوم از مسأله مرتب‌سازی  و روش حل مرتب‌سازی ادغامی استفاده می‌کنیم:روش کار (الگوریتم) بدین‌صورت است:۱- تقسیم آرایه (اعدادی که قرار است مرتب شوند) به دو بخش۲- بازگشت به مرحله ۱ در صورتی که هنوز طول آرایه بیشتر از یک است۳- ادغام دو آرایه مرتبدر این مثال، عمل سوم زمانی باید انجام شود که دو عمل ۱ و ۲ به اتمام رسیده باشند. با توجه به اینکه آدرس بازگشت توابع فراخوانی‌شده در مرحله ۲، توسط سیستم در پشته ذخیره شده است بنابراین این تضمین وجود دارد که عمل ادغام به ترتیب از آخر به عمل انجام می‌شود (می‌دانید که به طور کلی وقتی در برنامه تابعی فراخوانی می‌شود کنترل برنامه از محل فعلی به محل تابع فراخوانده شده منتقل می‌شود و آدرس محل فعلی ذخیره می‌شود. پس از پایان یافتن تابع، کنترل برمی‌گردد به مکان فراخوانی که آدرس آن از قبل نگه داشته شده است). مرتب‌سازی به شیوه ادغامی را می‌توان به شیوه مستقیم (بدون استفاده از توابع خوداتکاء) هم نوشت اما پیاده‌سازی پشته حداقل کار اضافه‌ای است که شما به عنوان برنامه‌نویس باید انجام دهید.همیشه استفاده از توابع خوداتکاء بهتر است؟خیر، مثال محسوس و دقیق آن پیاده‌سازی تابع فیبوناچی (Fibonacci) به روش خوداتکاء است که زمان اجرای آن نمایی می‌شود که علت آن هم محاسبه چندباره یک سری عبارت است.رابطه بازگشتی تابع فیبوناچیبه شکل زیر توجه کنید؛ همانطور که مشخص است مثلاً برای محاسبه جمله ۵ام دنباله فیبوناچی، ۲ بار جمله  سوم و ۳ بار جمله دوم محاسبه شده است که این انجام کار اضافه منجر به نمایی‌شدن زمان حل مسأله می‌شود. برای درک بهتر محاسبه جمله ششم فیبوناچی را به رسم درخت زیر محاسبه کنید. گوشه ذهنتون داشته باشید یک شیوه بهبود این شرایط، روش Memoization است.تحلیل الگوریتم یافتن nامین جمله دنباله فیبوناچی به شیوه بازگشتیتوابع خوداتکاء و برنامه‌نویسی تابع‌گرا (Functional Programming)این بخش برای علاقمندان به سبک برنامه‌نویسی تابع‌گرا یا همان Functional Programming به این نوشته اضافه شده است. در برنامه‌نویسی تابع‌گرا ترجیح بر این است که تا حد امکان از حلقه کمتر استفاده شود و همه کارهای با استفاده از توابع انجام شود. در این سبک برنامه‌نویسی می‌توان برای ایجاد تکرار به جای استفاده از حلقه از توابع خوداتکاء بهره برد.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sun, 10 Sep 2023 09:21:00 +0330</pubDate>
            </item>
                    <item>
                <title>فناوری موتور جستجو</title>
                <link>https://virgool.io/@mrazian/%D9%81%D9%86%D8%A7%D9%88%D8%B1%DB%8C-%D9%85%D9%88%D8%AA%D9%88%D8%B1-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-fqazbfmvrebs</link>
                <description>موتور جستجو، سامانه‌ای است که کاربران از طریق آن می‌توانند محتوای اینترنتی را جستجو کنند. موتور جستجو، مواردی را در پایگاه داده جستجو و شناسایی می‌کند که با کلمات کلیدی یا کاراکترهای مشخص‌شده توسط کاربر مطابقت دارند. برای این کار، کاربران عبارت جستجوی مورد نظر را در قسمت جستجو وارد می کنند، سپس موتور جستجو از طریق فهرست خود به وب سایت‌های مربوطه می‌پردازد و آن‌ها را به صورت یک فهرست نمایش می‌دهد. الگوریتم ارزیابی داخلی موتور جستجو تعیین می‌کند که یک وب سایت در نتایج جستجو چه موقعیتی را بدست خواهد آورد. گوگل، بینگ و یاهو نمونه‌هایی از موتورهای جستجوی محبوب هستند. فناوری موتور جستجوبررسی ما نشان می‌دهد که در دنیا از موتور جستجو تعریف استانداردی وجود ندارد اما می‌توان به تعریفی که توسط Halavais ارائه شده است اشاره کرد: موتور جستجو یک سیستم بازیابی اطلاعات است که امکان جستجوی کلمات کلیدی در متن دیجیتال توزیع شده را فراهم می کند. البته این تعریف خود شامل برخی اصطلاحات و مفاهیم مهم فنی است که به نوبه خود نیاز به تعریف و توضیح بیشتر دارد [1].در کنار تعریف ارائه شده از موتور جستجو، امروزه با توجه به خواستهو نیازکاربران، موتور جستجو این‌گونه تعریف می‌شود: موتورهای جستجو دستگاه پاسخگویی هستند که میلیاردها قطعه محتوا را ساماندهی کرده و عوامل بسیار زیادی را ارزیابی می‌کنند تا مشخص کنند کدام محتوا به احتمال زیاد به سوال کاربر پاسخ می‌دهد. موتورهای جستجو همه این کارها را با کشف و نمایه‌بندی تمام محتوای موجود در اینترنت (صفحات وب، PDF، تصاویر، فیلم‌ها و غیره) از طریق فرایندی به نام &quot;خزیدن و نمایه سازی&quot; انجام می‌دهند و سپس نتایج را بر اساس میزان مطابقت آن با پرس و جو، در فرایندی که از آن با عنوان &quot;رتبه بندی&quot; یاد می‌شود، ارائه می‌دهند. قرار‌گرفتن در رتبه‌های بالاتر در موتورهای جستجو، به کسب و کارها کمک می‌کند تا مشتریان بالقوه بیشتری داشته باشند (با افزایش رقابت میان کسب و کارهای مجازی، سایت‌های اعلام رتبه سایت‌ها نظیر الکسا1بیش از پیش مورد توجه صاحبان کسب و کارها قرار گرفته است). به غیر از گوگل که شناخته‌شده‌ترین موتور جستجو در دنیاست، وب سایت‌های دیگری نیز به صورت تخصصی در صنعت جستجوی اینترنتی فعال هستند. البته در حال حاضر بسیاری از شبکه‌های اجتماعی مانند اینستاگرام و بسیاری از سایت‌ها در حوزه‌های مختلف به جستجوگر اختصاصی مجهز شده‌اند.موتورهای جستجو می‌توانند با در نظرگرفتن منابع داده‌ای متنوع و متفاوت به جستجوهای ویژه‌تری برای پاسخ به سوالات کاربران بپردازند. از جمله این منابع داده‌ای می‌توان به موارد ذیل اشاره کرد:ویکی‌پدیا 	(دانش‌نامه آزاد) برای تعاریف،آمازون برای محصولات،یوتیوب برای محتوای ویدئویی،آی.ام.دی.بی برای نظرات پیرامون محتوای ویدئویی،سانگ‌کلاد برای موسیقی،پین‌ترست برای تصاویر،اینستاگرام و توئیتر برای پروفایل و بایو (معرفی) افراد،استک اورفلو، ردیت و کورا برای پرسش و پاسخ،آی.تریپل.ای و الزویر برای پژوهش‌ها و مقالات،لینکدین برای مشاغل و تخصص‌ها،یواس نیوز و کیو.اس برای رتبه دانشگاه‌هابه علاوه، البته موتور جستجوهایی نیز به صورت خاص منظوره (تخصصی) وجود دارند که از جمله آن‌ها می‌توان به جستجوگر گوگل اسکالر برای جستجوی پژوهشگران، سامانه &quot;Shodan&quot; برای جستجوی آسیب‌پذیری‌های شبکه‌ای و زیرساختاشاره کرد. موتور جستجوهایی نیز وجود دارند که منبع جستجوی آن‌ها محدود است مانند Wiki.com که این موتور جستجو ، دربرگیرنده تمام اطلاعات موجود روی سایت‌های ویکی می باشد.سهم بازار فناوری موتور جستجودر دنیای فناوری کنونی، دیگر لازم نیست برای جستجوی هر نوع اطلاعات به کتابخانه مراجعه کرد. در حال حاضر می‌توان با استفاده از فناوری موتورهای جستجو نه تنها هر اطلاعاتی را در عرض چند ثانیه جستجو کرد بلکه مهمتر از همه، می توان اطلاعات کلیدی را در بالای لیست یافت؛ بدین معنا که برای دریافت اطلاعات اصلی لازم نیست هر صفحه را اسکن کنیم. با توجه به نفوذ فناوری موتور جستجو و تبدیل شدن به عنصری اساسی در فناوری اطلاعات، در این بخش آمار مختصری آورده شده است که موتورهای جستجو و میزان سهم بازار آنها را به صورت جهانی و محلی نشان می‌دهد.سهم بازار فناوری موتور جستجو به اصطلاح به بخشی از بازار که توسط یک شرکت کنترل می شود اشاره می‌کند. شکل زیر سهم بازار (دسکتاپ) در سراسر جهان از موتورهای جستجوی پیشرو از دی ماه 1389 تا بهمن ماه 1399 را نشان می‌دهد. طبق این آمار، در بهمن ماه 1399، موتور جستجوی مایکروسافت‌بینگ 6.7 درصد از بازار جستجوی جهانی را به خود اختصاص داد ، در حالی که رهبر بازار گوگل 86.6 درصد سهم بازار را در اختیار دارد. سهم موتور جستجوی چینی بایدو 0.54 درصد است.سهم بازار (دسکتاپ) در سراسر جهان از موتورهای جستجوی پیشرو از دی ماه 1389 تا بهمن ماه 1399[2]شکل زیر نشان‌د‌هنده سهم بازار موتورهای جستجو به صورت جهانی از اردیبهشت 1399 تا اردیبهشت 1400 است. طبق این آمار، 92.26% از سهم بازار در اردیبهشت سال 1400 در اختیار موتور جستجوی شرکت گوگل است. همچنین موتورهای جستجوی بینگ، یاهو، بایدو و یاندکس به ترتیب 2.29%، 1.52، 1.47% و 0.57% از سهم بازار را به خود اختصاص داده‌اند.سهم بازار فناوری موتور جستجو به صورت جهانی (اردیبهشت 1399 – اردیبهشت 1400)[3]با بررسی دقیق‌تر می‌توان دریافت سهم بازار شرکت‌های مختلف به ویژه با حضور فناوری موتور جستجوی داخلی، می‌تواند متفاوت باشد. شکل زیر سهم بازار موتورهای جستجو مختلف را در کشورهای مختلف نشان می‌دهد. برای مثل طبق داده‌های ارائه شده در این شکل، ۴۵درصد کاربران روسی از یاندکس و ۵۱درصد از گوگل استفاده می‌کنند در حالی که 94 درصد از کاربران استرالیایی از گوگل و 2.03 درصد از موتور جستجوی بینگ برای جستجوهای استفاده می‌کنند. همانطور که انتظار می‌رود 68 درصد از کاربران چینی از موتور جستجوی بایدو و تنها 1.56 درصد از آن‌ها از موتور جستجوی گوگل استفاده می‌کنند. طبق این آمار، بیشترین استفاده کنندگان از موتور جستجوی یاهو نیز در ژاپن و آمریکا هستند.سهم بازار موتورهای جستجو[4]در کشورهای آسیایی چین، کره جنوبی، تایوان، هنگ‌کنگ، تایلند، فیلیپین، مالزی، سنگاپور، اندونزی، ویتنام و ژاپن نیز می‌توان سهم بازار را با توجه به شکل زیر مشاهده نمود. مطابق این آمار، گوگل بیش از 80% از سهم بازار در 7 کشور از 11 کشور ذکر شده و بیش از 90% در 6 کشور از 11 کشور ذکر شده را دارد.  بالاترین سهم استفاده از موتور جستجوی گوگل مربوط به کشور تایلند و کمترین استفاده مربوط به چین است. همچنین موتور جستجوی یاهو نیز با 33.5 درصد بیشترین سهم بازار را در این کشورها در کشور ژاپن حاصل نموده است. همانطور که مشخص است برخی از کشورها مانند چین و کره جنوبی به توسعه موتور جستجوی بومی پرداخته اند به طوریکه موتور جستجوی بایدو در چین 74.4 از سهم بازار و موتور جستجوی ناور در کره 45.2 از سهم بازار را بدست آورده است.سهم بازار برخی از کشورهای آسیایی[5]به علاوه، طبق آمار زیر می‌توان دریافت که از منظر عملکرد جستجو، بیشترین سهم جستجو در اختیار کمپانی گوگل است. این آمار بیان می‌دارد که مجموعه 94 درصد از جستجو از یوتیوب (Youtube)، جستجوی تصویر گوگل (Google Image)، جستجوی متنی گوگل و نقشه گوگل (Google Map) است.سهم بازار سامانه‌های جستجو کمپانی گوگلدر نوشته بعدی قصد دارم در مورد معماری موتور جستجو بنویسم.منابعSearch Engines and Ethics. First published Mon Aug 27, 2012; substantive revision Tue Aug 11, 2020, https://plato.stanford.edu/entries/ethics-search/Worldwide desktop market share of leading search engines from January 2010 to February 2021, https://www.statista.com/statistics/216573/worldwide-market-share-of-search-engines/Search Engine Market Share Worldwide - April 2021, 	https://gs.statcounter.com/search-engine-market-shareGlobal Search Engine Market Share in the Top 15 GDP Nations (Updated for 2020), 	https://alphametic.com/global-search-engine-market-shareSearch Engine Market Share in Asia – January 2016, 	https://www.ajpr.com/search-engine-market-share-in-asia-january-2016/</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Tue, 03 Jan 2023 10:25:02 +0330</pubDate>
            </item>
                    <item>
                <title>جزئیات مراحل تبدیل یک کد به زبان C به کد قابل اجرا توسط پردازنده</title>
                <link>https://virgool.io/@mrazian/%D8%AC%D8%B2%D8%A6%DB%8C%D8%A7%D8%AA-%D9%85%D8%B1%D8%A7%D8%AD%D9%84-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%DB%8C%DA%A9-%DA%A9%D8%AF-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-c-%D8%A8%D9%87-%DA%A9%D8%AF-%D9%82%D8%A7%D8%A8%D9%84-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%AA%D9%88%D8%B3%D8%B7-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D9%86%D8%AF%D9%87-sfhutcxqcfpq</link>
                <description>معمولاً گفته می‌شود تبدیل یک کد به زبان C به کد قابل اجرا توسط پردازنده سه مرحله دارد:نوشتن کدکامپایلاجرااما این مراحل به طور جزئی‌تر به ترتیب به صورت ذیل هستند:۱- نوشتن کد (Editing)که به اصطلاح به این مرحله Editing می‌گویند و محیطی که در آن کد زده می‌شود Editor و اگر حرفه‌ای باشد Integrated Development Environment یا همان IDE. خروجی این گام، یک یا چند پرونده متنی به زبان C است.۲- پیش‌پردازش (Preprocessing)در این مرحله دستورات پیش‌پردازشی (preprocessor directives) به کمک نویسه # می‌توانند دستوراتی را به کامپایلر بدهند. به عنوان مثال با کمک دستورات پیش‌پردازشی، می‌توانیم ماکرو (macro) بنویسیم.#include &lt;stdio.h&gt;

int main()
{
    printf(&amp;quotLine Number %s -&gt; %s: %d\n&amp;quot, __FILE__, __FUNCTION__, __LINE__);

    return 0;
}__LINE__ 	این 	ماکرو شماره خطی که این دستور در آن نوشته 	شده باشد ارائه می‌دهد__FILE__ 	این 	ماکرو نام پرونده ای که کد در آن نوشته شده است را ارائه می‌دهد__FUNCTION__ 	این ماکرو نام تابعی که این دستور در آن نوشته شده است را ارائه می‌دهدگام پیش‌پردازش، قرار است کد را برای مرحله کامپایل آماده کند. سه وظیفه در این گام انجام می‌شود: اول از همه، پیش‌پردازنده تمامی کامنت‌های موجود در کد را حذف می‌کند. در مرحله دوم، پیش‌پردازنده تمامی پرونده‌های شامل شده (این کار با کمک دستور #include انجام می‌شود) را در بر می‌گیرد. در نهایت، در مرحله سوم، هر کدام از ماکروهای تعریف شده در کد، با مقدارش جایگزین می‌شود. خروجی این گام را می‌توان با کمک دستور زیر دیدrazian@hp:~/sample$ gcc -E sample.c &gt; sample.irazian@hp:~/sample$ cat sample.iمی‌تونیم خروجی این گام را در پروندهی به نام sample.i قرار دهیم.۳- ترجمه (Compiling)گام بعدی، ترجمه پرونده sample.i به یک پرونده خروجی ترجمه شده میانی با نام sample.s است. این پرونده حاول دستوراتی در سطح اسمبلی است. به عبارت دیگر، خروجی این مرحله دستورات اسمبلی است (اغلب به اختصار asm) که اسمبلر یا سرهم‌ساز (اسمبلر) می‌تواند آن را بفهمد. برای مشاهده این خروجی دستور زیر را می‌توانید اجرا نمایید.razian@hp:~/sample$ gcc -S sample.cخروجی این دستور پروندهی با نام sample.s است که محتویات آن به صورت زیر است.۴- سرهم‌سازی (Assembling)در این گام، با کمک سرهم‌ساز، پرونده sample.s به عنوان ورودی دریافت می‌شود و پرونده sample.o که حاوی کد ماشین‌فهم است تولید می‌شود. این پرونده، شامل دستورات در سطح ماشین است.البته این‌گونه نیست که همه کامپایلرها مرحله تبدیل به اسمبلی و بعد اسمبلی به زبان ماشین را انجام دهند؛ مثلاً، کامپایلرهای MS مستقیماً کد ماشین تولید می کنند، هر چند امکان تولید خروجی اسمبلی را هم دارند. جالب است بدانید برخی از کامپایلرها، کدهای زبان سطح بالا دیگری را به عنوان خروجی تولید می کنند - به عنوان مثال، cfront، اولین کامپایلر C++، زبان C را به عنوان خروجی تولید می کند که سپس توسط یک کامپایلر C به کد ماشین کامپایل می شود. دستور زیر پرونده اسمبلی را به پرونده ماشین‌فهم (زبان ماشین) تبدیل می‌کندrazian@hp:~/sample$ gcc -c sample.sخروجی این دستور یک پرونده sample.o است که محتویات آن به صورت زیر است.۵- پیوندسازی (Linking)به بیان فنی، در مرحله ترجمه، مترجم به جای توابعی که فراخوانی شده‌اند اما پیاده‌سازی نشده‌اند یک نشانه قرار می‌دهد. در گام پیوند، پیوند دهنده، نام توابع را دریافت و در میان پرونده‌های ماشین‌فهم موجود (Object files) به دنبال پیاده‌سازی آن توابع می‌گردد و پس از یافتن، پیاده‌سازی آن‌ها را در محل نشانه، جایگذاری می‌کند. خروجی گام پیوندسازی، یک پرونده قابل اجرا (Executable file) است. برای ایجاد این پرونده دستور زیر را اجرا نمایید (در این مثال، پرونده خروجی، sample نام دارد).razian@hp:~/sample$ gcc sample.s -o samplerazian@hp:~/sample$ ./sampleThe value of PI is defined as 3.141590razian@hp:~/sample$۶- بارگذاری در حافظه اصلی (Loading)مرحله بعدی، انتقال  پرونده اجرایی ایجاد شده از درایو به حافظه اصلی جهت انتقال به واحد پردازنده مرکزی (CPU) است.۷- اجرا (Executing)مرحله آخر، اجرای پرونده اجرایی توسط واحد محاسبه و منطق (ALU) است.برای اینکه به صورت یک‌جا تمامی پرونده‌های میانی تولید شده را ببینید می‌توانید از دستور زیر استفاده کنیدrazian@hp:~/sample$ gcc --save-temps sample.c -o sampleبرنامه‌نویسی به زبان سی، از مرحله نوشتن تا اجرا - منبع تصویر سایت جاوا پوینت</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Fri, 11 Nov 2022 22:10:13 +0330</pubDate>
            </item>
                    <item>
                <title>نوشته‌ای در باب طرح حمایت از حقوق کاربران فضای مجازی</title>
                <link>https://virgool.io/@mrazian/%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%A7%DB%8C-%D8%AF%D8%B1-%D8%A8%D8%A7%D8%A8-%D8%B7%D8%B1%D8%AD-%D8%AD%D9%85%D8%A7%DB%8C%D8%AA-%D8%A7%D8%B2-%D8%AD%D9%82%D9%88%D9%82-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86-%D9%81%D8%B6%D8%A7%DB%8C-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-hfurkxmkyqsk</link>
                <description>اولین نکته‌ای که در این طرح به چشم می‌خورد گستره خدمات پایه کاربردی است. طبق تعریف، خدمات پایه کاربردی، شامل موارد ذیل می‌شوند:خدمات مراکز داده (مانند میزبانی و ذخیره‌سازی)خدمات نام و نشانه‌گذاری (با تأکید بر خط و زبان فارسی)جویشگر، رایانامه، پیام‌رسان‌های ارتباطی و مراکز تبادل پیام و اطلاعاتخدمات ابریبنابراین، لازمه اینطرح، وجود طرح‌هایی قانونی نظیر قانون The CAN-SPAM Act آمریکا است. این قانون به طور اختصاصی مسائل مربوط به ارسال ایمیل را بیان می‌دارد. مثلاً در صورت ارسال ایمیل از سوی سایتی، حتماً باید لینک Unsubscribe در آن باشد. به بخش‌هایی از این قانون توجه کنیدThe CAN-SPAM Act, a law that sets the rules for commercial email, establishes requirements for commercial messages, gives recipients the right to have you stop emailing them, and spells out tough penalties for violations.https://www.ftc.gov/tips-advice/business-center/guidance/can-spam-act-compliance-guide-business(خواندن جزئیات این قانون از لینک بالا لذت‌بخش است و توصیه می‌کنم)این نکته به این معنا نیست که طرح حمایت کنار گذاشته شود تا قوانین حوزه‌های دیگر تدوین و وضع گردد. این بدان معناست که در راستای طرح حمایت، حتماً باید قوانین خاص هر کدام از خدمات مطروحه در خدمات پایه کاربردی بررسی، تدوین و وضع گردد.جدای از برخی اشکالات این طرح و نقدهای انجام شده، وجود طرحی جهت ساماندهی فضای مجازی کشور، حتمی و قطعی است. به خاطر دارم زمانی که در استرالیا بودم، پس از حادثه تروریستی در مسجدی در نیوزلند (Christchurch Attacks)، به دستور مقامات نیوزلندیOn Sunday, the New Zealand government informed online platforms that sharing any version of the footage, even the edited, non-graphic versions, is a violation of the law.ویدئوهای آن از شبکه‌های اجتماعی حذف شد و من برای مشاهده آن نتوانستم از اینترنت آزاد دانشگاه ملبورن!، آن ویدئو را پیدا کنم و در نهایت در یکی از سایت‌های ایرانی آن را یافتم. عین متن خبر، به نقل از واشنگتن‌پست را در ادامه آورده‌ام که شامل نکات زیادی است:(خواندن آن را توصیه می‌کنم چراکه حاوی جنبه‌های فنی و غیرفنی است)According to Facebook, it removed 1.5 million videos of the attack globally during the first 24 hours.By Shibani Mahtani, March 17, 2019WELLINGTON, New Zealand — Facebook said that it removed 1.5 million videos of footage from the shooting rampage at two mosques in Christchurch within 24 hours of the attack, underscoring the massive game of whack-a-mole social media giants have to play with even the most high-profile problematic content on their platforms.In a statement, Mia Garlick, spokeswoman for Facebook New Zealand, said that the company continues to “work around the clock to remove violating content from our site, using a combination of technology and people.” Of the 1.5 million videos of the massacre, filmed by a body-worn camera on the perpetrator almost in the style of a video game, 1.2 million were blocked at upload.Facebook’s statement came after New Zealand Prime Minister Jacinda Ardern said in a Sunday news conference that there were “further questions to be answered” by Facebook and other social media sites over their response to the events.And though Facebook, Instagram and Twitter have all removed Tarrant’s accounts, dozens of archived versions remain available, along with the links and videos he shared.Facebook says that they are using audio technology to detect more versions of the video, allowing them to catch more footage even if there isn’t an exact match to the full version streamed by Tarrant.On Sunday, the New Zealand government informed online platforms that sharing any version of the footage, even the edited, non-graphic versions, is a violation of the law.Facebook says that since the attack, teams have been also working to remove content in support of the massacre and other hateful posts.این یعنی شبکه‌های اجتماعی در آن‌جا یک ساماندهی دارند به هر طریقی (مثلاً پذیرفتن قوانین استرالیا و نیوزلند توسط صاحبان شبکه‌های اجتماعی). اما یک شبکه اجتماعی و فضای مجازی ول و رها در کجا دنیا وجود دارد؟؟؟ لطفاً اگر موردی هست به صورت مستند در ذیل این پست در قسمت کامنت‌ها قرار داده شود. در نظر بگیرید ما برای جلوگیری از ارسال پیامک‌ها و ایمیل‌های آزاردهنده/ناخواسته، تصاویر دور از اخلاق و فریب‌کاری‌های مالی و ... مثل خارجی‌ها! قانون می‌داشتیم.اما دیگر نکات در مورد طرحدر طرح مذکور، نظام حاکم بر شیوه تعیین اعضای کمیسیون مشخص نشده است. به علاوه، در ترکیب اعضای کمیسیون جای سازمان‌های تخصصی فضای مجازی مردمی، دانشگاه‌ها، پژوهشکده‌ها و اندیشکده‌ها خالی است. نکته دیگر شیوه تصمیم‌گیری (شیوه انتخاب مثل ۵۰ به اضافه ۱ یا شیوه‌های دیگر تصمیم‌گیری) است که باید با توجه به حساسیت و ماهیت فعالیت این شورا، انتخاب شود. لازم به ذکر است شیوه تصمیم‌گیری ۵۰به‌اضافه۱ ساده‌ترین شیوه است که کاستی‌هایی را دارد که در برخی زمینه‌ها کاملاً ناکارآمد است. اعضای حقیقی/حقوقی، دائمی/موقت بودن عضویت در کمیسیون و میزان اعتبار زمانی تصمیمات با توجه به پویایی فضای مجازی مواردی است که خود نیاز دارد تا ابعاد آن بررسی شود. نگرانی در این زمینه این است که اصول علم تصمیم‌گیری در شکل‌گیری کمیسیون رعایت نشود.احراز اصالت و ضرورت نیاز به آن در شبکه و فضای مجازی، مسئله‌ای است که کمیت و کیفیت انجام آن با توجه به نوع فعالیت کاربر نهایی در شبکه، نیاز به تبیین دارد. مثلاً یک تصور این است که یک کسب و کار اعتبارسنجی‌شده با ای‌نماد یا کاربر احراز اصالت‌شده، یک تیک آبی‌رنگ دریافت نماید و دیگران بدون اعتبارسنجی و اصالت‌سنجی، بدون این علامت. بنابراین بند ۲ ماده ۲۵ نیاز دارد تا از جهت فنی و اجتماعی تدقیق شود. همچنین نقش مواردی نظیر اعتماد در شبکه و یا مدل‌های تعاونی/مشارکتی دیگر در زمینه مجازشماری چه جایگاهی در این ماده دارند.حریم خصوصی (محافظت از داده‌های شخصی) به عنوان ضروری‌ترین نیاز فضای مجازی کشور، به طور قانونی و الزام‌آور در این طرح دیده نشده است. ابعاد حریم خصوصی، فی‌ذاته، پدیدآورنده و تعیین کننده برخی از قوانین حوزه فضای مجازی است. بدین معنا که وضع قوانین در حوزه حفاظت از داده‌های شخصی، خود جایگاه  طرح صیانت را پیداتر می‌نماید. بنابراین بند ۱ ماده ۲۵ نیاز به وجود یک قانون مجزا و مفصل در حوزه حریم خصوصی دارد تا دارای اعتبار شود.در ماده ۷ آورده شده است: وزارت ارتباطات و فناوری اطلاعات موظف است در صورت عدم اقدام بخش خصوصی و غیر دولتی نسبت به ایجاد خدمات پایه کاربردی مورد نیاز کشور، خود راسا نسبت به ایجاد آنها از طریق منابع صندوق حمایت از خدمات پایه کاربردی اقدام کند. تعیین مصادیق خدمات کاربردی مذکور و راهبری لازم در ایجاد آن توسط مرکز ملی فضای مجازی انجام می‌شود. به نظر می‌رسد این ماده، به نسبت نگاهی سطحی به توسعه یک خدمت حوزه فناوری اطلاعات (آن هم یک خدمت پایه‌ای) داشته است و بنابراین نیاز دارد تا جنبه‌های مختلف توسعه و نگهداری یک سرویس و بهبود مستمر آن را در نظر بگیرد. همچنین در  این طرح، ویژگی‌هایی که خدمت پایه‌ای مجاز به نسبت خدمت پایه‌ای غیرمجاز اما رایج در حال،  ارائه دهد تا به عنوان یک خدمت مناسب در نظر گرفته شود مباحث و مصادیقی مطرح نشده است. به علاوه، در این طرح، در مورد چگونگی (جنبه‌های فنی و غیرفنی) مهاجرت کسب و کار و اثرات جانبی تسلسل در کسب و کار (به واسطه مهاجرت به خدمات پایه کاربردی مجاز شمرده شده)، اشاره‌ای نکرده است.جای تعجب دارد که در این طرح مواردی پایه‌ای نظیر سیستم‌عامل که خدمات کاربردی بر آن نهاده و برپاسازی می‌شوند اشاره‌ای نشده است و الزامی قانونی در آن به چشم نمی‌خورد. بنابراین، این برای همیشه به عنوان یک نگرانی باقی می‌ماند که اگر در لایه سیستم‌عامل، حملاتی صورت پذیرد چگونه می‌توان خدمات پایه کاربردی اجرا شده بر بستر آن را احیا کرد.اینکه تصمیم‌گیری‌ها می‌تواند توسط کمیسیون انجام شود تا خرد جمعی به پختگی تصمیمات کمک نماید نکته مثبت است اما بخشی از این وظایف محوله به کمسیون جنبه اجرایی/آماده‌سازی دارد که خارج از توان ذاتی یک کمیسیون است چرا که مسئولیت اجرایی آن را کسی بر عهده نمی‌گیرد و به اصطلاح پاسخگو نمی‌باشد. در این حوزه، نگرانی این است که این کمیسیون به یک شورای‌عالی فضای مجازی پریمی تبدیل شود که مرکزی برای اجرائیات تشکیل دهد به مانند مرکز ملی فضای مجازی. مشخصاً با توجه به وظایف ماده ۴، سؤال اینجاست که جایگاه شورای‌عالی فضای مجازی پس از این طرح و نسبت آن شورا با این کمیسیون چیست.هوش جمعی پرندگانالبته بنده بر این باورم که قانون وسیله‌ای است که کمک می‌کند به انسان در مسیر خودکنترلی. بنابراین قانون، کمال انسان نیست بلکه رشد حاصل از تربیت، غایتی است که باید به دنبال آن بود. این موارد، از جمله نکاتی بود که بنده برای آن‌ها نگرانی داشتم. لطفاً ضمن اشتراک این مطلب با دیگر صاحب‌نظران، با نکات و نظرات ارزشمندتان، بنده را در قسمت نظرات همراهی نمایید تا اگر جنبه‌ای در نوشته بالا دیده نشده است آشکار شود.با تشکر.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Fri, 13 Aug 2021 19:28:18 +0430</pubDate>
            </item>
                    <item>
                <title>کار با ابزار mobsf</title>
                <link>https://virgool.io/@mrazian/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-mobsf-oxleu9u6dx2z</link>
                <description>معرفیفریمورک هندی Mobsf(Mobile Security Framework)، یک فریمورک تست نفوذپایتونی به اصطلاح All-in-one برای تحلیل بدافزار، تحلیل ایستا و تحلیل پویای اپلیکیشن های اندرویدی/آی.اُ.اس/ویندوزی است. این فریمورک رایگان و متن باز است. سایتی که توسعه دهندگان آن برای ارائه مشاوره امنیتی و دریافت پروژه راه اندازی کرده‌اند https://opensecurity.in است.  علی‌رغم اینکه شرکت بزرگی پشت این تیم نیست، صفحه گیت این ابزار، بروز و محبوبیت بالاییدارد. حساب donate این صفحه گیت نیز به نام Ajin Abraham که یک هندی ساکن کانادا است منتسب است. کد این فریمورک با جنگو نوشته شده است و دارای کیفیت رتبه A است.طبق مخزن گیت این فریمورک ۴۶۵۶ستاره، ۱۴۱۵فورک و ۳۱ مشارکت کننده نشان دهنده فعال بودن این فریمورک در کامیونیتی است. از جمله امکاناتی که این فریمورک در اختیار قرار می‌دهد به شرح زیر است:دارای Rest APIsقابلیت انجام فازینگ با کمک CapFuzzامکان نصب بر روی هر سه سیستم عاملکارهایی که ابزار انجام می‌دهد در ترمینال نمایش داده می‌شودبرای تحلیل داینامیک صرفاً اپ اندرویدی را پشتیبانی می‌کندای.پی.آی هایی که فراخوانی شده‌اند را نمایش می‌دهد.اینکه چه فایل‌هایی باز شده‌اند را نمایش می‌دهدالگوریتم های رمزنگاری استفاده شده نمایش داده می‌شودیک پراکسی هم برای دریافت کانکشن ها ران می‌کندچک بدافزار برای یو.آر.ال ها انجام می‌شودشما باید به قسمت‌های مختلف اپلیکیشن بروید. ایجنت در پس زمینه جریان ها را یاد می‌گیرد و  تست امنیتی را برای آن جریان هایی که شما پیموده اید انجام می‌دهد.قابلیت انجام تحلیل ایستا و پویاdynamic  ssl testingFuzzing REST APIVulnerability detection  XXE, SSRF,  IDOR Directory traversal or path traversal, logic and session vulnerability, API rate limitingنصب و راه اندازیبا توجه به اینکه این ابزار از کتابخانه‌های پایتون استفاده می‌کند توصیه می‌شود در یک محیط مجازی (virtual environment)‌ پایتون نصب شود تامشکلاتی نظیر تداخل نسخه های مختلف کتابخانه‌ها پیش نیاید. بدین ترتیب ابتدا یک محیط مجازی ایجاد میکنیم و مابقی مراحل نصب را بر روی آن انجام می دهیم. با کمک virtualenv یک محیط ایزوله برای پایتون می‌سازیم. Virtualenv یک پوشه که شامل همه فایل‌هایی که در اجرای یک پروژه پایتونی نیاز است را می‌سازد. این بین معناست که هر پروژه می‌تواند وابستگی‌های خود را داشته باشد بدون توجه به اینکه پروژه های دیگر چه وابستگی‌هایی را دارند.git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.gitcd Mobile-Security-Framework-MobSFpip3 install virtualenvvirtualenv -p python3 venvsource venv/bin/activatepip3 install -r requirements.txtsudo python manage.py runserverسپس به مرورگر رفته و آدرس زیر را وارد نماییدhttp://localhost:8000/ما فایل apk ‌نرم افزار keepass‌ را برای ارزیابی ایستا داده ایم. تصویر زیر بخشی از نتیجه ارزیابی را نشان می‌دهد. مواردی نظیر امتیاز امنیت با معیار cvss و همچنین آمار هایی از اپ نظیر تعداد سرویس ها و اکتیویتی های exported در گزارش ارزیابی به چشم می‌خورد. در منوی سمت چپ، دسترسی به قسمت‌های مختلف گزارش فراهم شده است. گزارش بسیار جامع از ابعاد مختلف قابل مشاهده است. همچنین برای اینکه خروجی پی.دی.اف گرفته شود لازم است تا ابزار زیر نصب شود.sudo apt-get install wkhtmltopdfو سپس از منوی سمت چپ گزینه PDF Export‌ انتخاب شود.نکته بسیار مهمدر بررسی برخی از اپ ها متوجه شدیم که Mobsf‌ در یک اجرای بی پایان می‌ماند. با بررسی لاگ  متوجه شدیم در مرحله تبدیل فایل .dex به فایل java با نرم‌افزار jadx این مشکل به وجود می‌آید. با طرح مسئله در پیج jadx، توسعه دهندگان پیشنهاد استفاده از نسخه جدیدتر که رفع باگ شده را دادند. اما این نسخه unstable است و mobsf نپذیرفت که آن را در پروژه خود قرار دهد. بنابراین ما آن را در سیستم خودمان با نسخه قبلی جایگزین کردیم.انجام تحلیل پویادر صورتی که از نسخه ۲.۰.۲ فریمورک MobSF استفاده می‌کنید تنها راه انجام تحلیل پویا استفاده از ایمولاتور جنی موشن (Genymotion) است.در بخش تحلیل پویا، MobSF دیگر از ova پشتیبانی نمی کند و صرفا از genymotion استفاده می کند. این بدان معناست که تمامی آموزش هایی که مبنی بر ova‌ و تغییر تنظیمات فایل settings.py هستند بلا استفاده شده اند. مانند آموزش های موجود در لینک های زیر که البته مشابه اینها فراوان است! بنابراین به هیچ وجه از آموزش‌های دیگری که در وب است مانند موارد زیر استفاده نکنید!http://abhi7435thakur.blogspot.com/2017/11/security-testing.htmlhttps://kalilinuxtutorials.com/mobsf-mobile-security-framework/ایمولاتور Genymotion که برای گوشی های اندرویدی استفاده می‌شود بسیار سبک است و همچنین مراحل نصب ساده‌ای دارد. پیش نیاز این نرم‌افزار هم، نرم‌افزار virtualbox است که از قبل باید بر روی سیستم تان نصب باشد.مراحل نصب Genymotionابتدا Genymotion را از سایت https://www.genymotion.com دانلود نمایید. برای دانلود، باید در وبسایت آن یک اکانت برای استفاده شخصی بسازید. در صفحه اول این سایت گزینه Desktop Sign In‌ را بزنید و سپس در صفحه بعد، گزینه ساخت اکانت جدید را انتخاب کنیدسپس می‌توانید فایل را دانلود نمایید که احتمالاً یک فایل به نام genymotion-3.0.3-linux_x64.bin است. سپس دستورات زیر را اجرا نماییدchmod +x  genymotion-3.0.3-linux_x64.bin$./genymotion-3.0.3-linux_x64.binانتقال به دایرکتوی هوم$ mv genymotion ~/.genymotionاضافه کردن آن به path.$ vim ~/.bashrcexport PATH=&quot;/home/$USER/.genymotion:$PATH&quot;سپس ترمینالی باز کرده و دستور$ genymotionرا اجرا نمایید تا نرم‌افزار باز شود. پس می‌توانید ایمولاتور گوشی های مختلفی که نیاز دارید را به آن اضافه کنید. تصویر زیر، اسکرین شاتی از این نرم‌افزار بعد از اضافه کردن چند مدل گوشی است.ما بر روی مدل Galaxy S8‌ سامسونگ کار تحلیل پویا را انجام خواهیم داد.آغاز تحلیل پویابرای انجام تحلیل پویا، بهتر است فریمورک MobSF‌ را بعد از بوت گوشی اجرا کنید. پس در صورتی که MobSF در حال اجرا است آن را متوقف کنید. گوشی Galaxy S8 که در Genymotion‌ اضافه کرده‌اید را ران کنید. بعد از اینکه گوشی بالا آمد، MobSF‌ را اجرا کنید. سپس به بخش تحلیل پویا (Dynamic Analysis) در MobSF بروید. در صفحه‌ای که باز می‌شود لیستی از اپ هایی که قبلاً تحلیل ایستای آن‌ها را انجام داده‌اید برای شما نمایش می‌دهد که در سمت راست آن‌ها گزینه انجام تحلیل پویا قرار گرفته است.گزینه Start Dynamic Analysis را بزنید. باید صفحه‌ای مانند صفحه زیر نمایش داده شود.در این صفحه گزینه start instrumentation را بزنید. همچنین گزینه Show Screen‌ هم صفحه نمایش موبایل را به شما نشان میدهد (منظور همان گوشی Galaxy S8 است). گزینه های دیگری نیز برای تحلیل اکتیویتی ها و ای.پی.آی ها وجود دارند که می‌توانید از آن‌ها استفاده کنید و در نهایت گزارش خروجی بسیار مناسبی را با کمک گزینه Generate Report دریافت نمایید.از تحلیل ایستا و پویای این ابزار لذت ببرید…پایان</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Wed, 09 Jun 2021 12:54:55 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش ابزار ارزیابی امنیتی Drozer</title>
                <link>https://virgool.io/@mrazian/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C-drozer-pspthgfhxnnl</link>
                <description>فریمورک Drozer (همان ابزار Mercury قدیم)، ابزاری استاندارد برای تحلیل پویای اپلیکیشن های اندرویدی است. این فریمورک متن‌باز را آزمایشگاه MWR توسعه داده است. آدرس اینترنتی آزمایشگاه https://labs.f-secure.com است. همانطور که مشخص است این آزمایشگاه با نام تجاری f-secure مشاوره و محصولات امنیتی در سطح کاربر خانگی، شرکت ها و شرکا ارائه می کند. برای مثال برای محافظت از کاربران خانگی، ابزار F-Secure Total‌ را ارائه کرده است که قابلیت هایی مثل مدیریت پسورد و مدیریت کامپیوتر و موبایل با یک اکانت را دارد. در این نوشته قصد دارم تجربه‌ام در کار با این ابزار را با شما هم به اشتراک بگذارم به امید گسترش دانش.تصویر بالا اسکرین شاتی از مخزن گیت این فریمورک است. ۱۹۰۰ ستاره،۵۳۶ فورک و ۱۰۸۹ کامنت نشان دهنده فعال بودن این فریمورک در جامعه است. همچنین اینکه یک شرکت تجاری در کنار این پروژه است میتوان این فریمورک را قابل اعتماد دانست. البته احتمالاً اعضای این شرکت تجاری همان توسعه دهندگان مرکری و دروزر هستند!از جمله امکاناتی که این ابزار در اختیار قرار می‌دهد به شرح زیر است:    • امکان بررسی آسیب پذیری ها    • می توان از اکسپلویت های اندرویدی استفاده کرد    • امکان استفاده برای RAT    • امکان نصب بر روی هر سه سیستم عامل    • دارای agent موبایلیابزار دروزر تعاملی است یعنی کاربر باید کامند وارد کند و در تعامل با ابزار، مرحله به مرحله کار ارزیابی را انجام دهد. دروزر از طریق agent‌ خود در گوشی، آن دستور را اجرا می کند. به عبارت دیگر این طور نیست که دروزر را اجرا کنیم بریم یک کافی بخوریم و برگردیم و ریزالت ها آماده باشه :)نصب و راه اندازیمراحل نصب این فریمورک که در صفحه گیت آن  آمده است به صورت زیر است.  هر چند ما در طی این مراحل با مشکلاتی روبرو شدیم که آن‌ها را با شما به اشتراک می‌گذاریم تا در صورت بروز آن مشکل برای شما، بتوانید در زمان کم آن را حل نمایید. مراحل زیر مراحلی است که در صفحه گیت دروزر توضیح داده شده است:پیش نیازهای نصب    1) Python2.7    2) Protobuf 2.6 or greater    3) Pyopenssl 16.2 or greater    4) Twisted 10.2 or greater    5) Java Development Kit 1.7    6) Android Debug Bridgeلازم به ذکر است که تمامی پیش نیاز ها باید نصب شوند (یعنی معمولاً موارد بالا در یک سیستم وجود ندارند!) که البته نصب آن‌ها با نکاتی همراه است که در ادامه توضیح خواهیم داد. ما این فریمورک را در اوبونتو نصب کردیم. مرحله ۱ به سادگی قابل انجام است. برای طی مراحل ۲، ۳ و ۴ پیشنهاد میکنیم ابتدا pip‌ را نصب کنید و سپس با کمک آن موارد ۲ تا ۴ را انجام دهید.    • sudo apt install python-pip    • pip –version    • pip install protobuf    • pip install pyOpenSSL    • pip install Twisted(اگر در زمان نصب فریمورک، پیغام خطایی مبنی بر نیاز به protoc دریافت کردید میتوانید آن را با کمک دستور زیر نصب کنید sudo apt install protobuf-compiler)حالا نوبت به نصب JDK 1.7 مربوط به جاوا ۷ می‌رسد. از آنجایی که جاوا ۷ از ساپورت خارج شده است آن را نمی‌توان در هر مخزن نرم افزاری در لینوکس یافت. مرا حل زیر می‌تواند انجام شود:sudo apt-get install default-jresudo add-apt-repository ppa:openjdk-r/ppasudo apt-get updatesudo apt-get install openjdk-7-jdkبا طی مراحل بالا jdk1.7 نصب می‌شود اما اگر در سیستم تان jdk‌ دیگری داشته باشید (احتمالاً نسخه های جدید تر آن را ممکن است قبلاً نصب کرده باشید) باز هم در حین نصب فریمورک در مراحل بعد با مشکل مواجه می‌شوید چرا که این فریمورک فقط با jdk1.7‌ اجرا می شود. برای اینکه بدانید چه jdk هایی در سیستم تان نصب دارید از دستور زیر استفاده نماییدsudo update-java-alternatives -lپس باید jdk‌پیش فرض را عوض کنید که ساده‌ترین راه این است که در سطح سیستم این اتفاق بیفتد (البته بعد از نصب دوباره می‌توانید jdk‌ پیش‌فرض سیستم را تغییر دهید چرا که نسخه ۱.۷ نسخه مناسبی نیست). برای تغییر jdk پیش‌فرض دستور زیر را وارد نمایید:sudo update-java-alternatives -s java-1.7.0-openjdk-amd64پس از ورود این دستور، ممکن است با اروری شبیه خطای زیر مواجه شویدمهم نیست! این خطا می‌گوید برای این تبدیل نیاز دارد تا نرم افزارهایی که با جاوا قرار است کار بکنند پیشنیاز های این ورژن را داشته باشند. که البته یافتن این موارد مثل IcedTeaPlugin نسخه‌ای که با jdk 1.7 سازگار باشد هم کار ساده‌ای نیست. مشاهده می‌کنید که این تغییر ورژن پیش‌فرض سیستم انجام شده است.گام ۶ همکه نصب adb استنکته خاصی ندارد و احتمالاً به سادگی نصب خواهید کرد.نصب فریمورکپس از نصب پیش نیازها، سراغ نصب فریمورک می رویم. در گیت فریمورک روش‌های مختلفی برای نصب ارائه کرده است که ما روش زیر را انتخاب می‌کنیم:Building for Debian/Ubuntu/Mintgit clone https://github.com/mwrlabs/drozer/cd drozermake debInstalling .deb (Debian/Ubuntu/Mint)sudo dpkg -i drozer-2.x.x.debمرحله ۱ و ۲ به سادگی قابل انجام است. مرحله ۳ را انجام دهید. در صورتی که عمل make با موفقیت انجام شود می‌توانید سراغ مرحله ۴ بروید. البته به خطوط آخر خروجی دستور ۳ دقت کنید که فایل .deb ایجاد شده در چه مسیری قرار گرفته است. برای ما این فایل در دایرکتوری dist‌ در پوشه جاری (همان پوشه ای که با دستور شماره ۲ به آن وارد شدیم) قرار گرفته است. پس مرحله ۴ اینگونه انجام می شود:sudo dpkg -i dist/drozer_2.4.3.debدر صورتی که پس از اجرای این دستور با پیغام خطای زیر مبنی بر مشکل در dependency ها مواجه شدید نیاز به نصب نرم افزارهایی که می‌گوید نیست چرا که قبلاً این‌ها را نصب کرده ایم. صرفاً کافی استاز دستور زیر استفاده کنید تا مشکل dependency‌ ها حل شود.sudo apt-get install -fو سپس مرحله ۴ را مجدداً تکرار کنید. مراحل نصب تمام است. با دستور drozer‌ می‌توانید از نصب صحیح آن مطمئن شوید (خروجی مانند تصویر زیر نشان دهنده نصب موفق است).شروع به کارهمانطور که گفته شد دروزر نیاز به یک ایجنت (Agent) دارد که با کمک آن دستورات ارزیاب را در گوشی اجرا می‌کند. اپلیکیشن ایجنت برای دانلود در اینجا در دسترس است. با کمک adb‌ میتوان آن را نصب کرد:سپس ایجنت را اجرا نماییددر این مرحله نیاز است تا با کمک دستور زیر دروزر را به ایجنت متصل نماییدadb forward tcp:31415 tcp:31415
و سپس دستور زیر را وارد نمایید
drozer console connectاگر با پیغام خطای زیر مواجه شدید service identity را با کمک کامند زیر نصب کنیدsudo pip install service_identityاگر دوباره پیغام خطای بالا را گرفتید دستور زیر را برای بروزرسانی service identity اجرا کنیدsudo pip upgrade service_identityدر نهایت (پس از رفع مشکل بالا) به تصویر زیر می‌رسیدdz&gt; listلیستی از ماژول های دروزر که در این نشست می‌توانند اجرا شوند را نمایش می‌دهد.برای بدست آوردن لیست پکیج ها از دستور زیر استفاده می‌شودdz&gt; run app.package.listهمانطور که در خروجی دستور قبل می بینید لیست پکیج ها ممکن است طولانی باشد. در این صورت برای جستجوی عنوان یک پکیج خاص از دستور زیر استفاده می‌شودdz&gt; run app.package.list –f &lt;SearchString&gt;برای بدست آوردن اطلاعاتی اولیه از یک پکیج از دستور زیر استفاده می‌شودبرای بدست آوردن بردار حمله (مواردی که بتوان به کمک آن مطلع شد چطور می‌توان یک حمله را آغاز کرد)در خروجی بالا اپلیکیشن Pedometer (از اپ های موجود در کافه بازار)، دارای ۱ اکتیویتی است که exported است‌و الی آخر. البته debuggable‌ نیست (اگر می‌بود در خط انتهایی خروجی به آن اشاره می‌شد). این امکان این اجازه را می‌دهد که یک دیباگر به اپلیکیشن وصل کنیم و گام به گام هر دستوری که اجرا می‌شود را ردیابی کنیم و حتی کدهای دلخواه خودمان را اجرا کنیم.برای نمایش نام اکتیویتی های یک اپلیکیشن از دستور زیر استفاده می‌کنیمrun app.activity.info -a &lt;PackageName&gt;برای اجرای اکتیویتی از دستور زیر استفاده می شود.run app.activity.start --component &lt;package name&gt; &lt;component name&gt;برای مثالrun app.activity.start --component pedometer.steptracker.calorieburner.stepcounter steptracker.stepcounter.pedometer.activity.SplashActivityمثالی از اینتنت صریحrun app.activity.start --component com.android.browser com.android.browser.BrowserActivity --flag ACTIVITY_NEW_TASK --data-uri http://mrazian.comمثالی از اینتنت ضمنیrun app.activity.start --action android.intent.action.VIEW --data-uri http://mrazian.comاندروید اجازه نمی‌دهد برودکست سیستمی ارسال کنیمبرای مشاهده content provider ها می‌توان دستور زیر را وارد کرد (یک سرویس روی پورت ۸۰۸۰ فراهم می‌شود). سپس در مرورگر در آدرس localhost:8080 لیست content provider ها را مشاهده کرد.run auxiliary.webcontentresolverبا کمک دستور زیر  provider‌ ها اسکن می‌شوند و از جهت وجود آسیب‌پذیری بررسی می‌شوند.run scanner.provider.injection ProvideAddressبا کمک دستور زیر می‌توان اطلاعات درون یک provider‌ (در اینجا settings/secure)‌ را مشاهده کردrun app.provider.query content://settings/secure --verticalبدین ترتیب تمامی تنظیمات بخش settings/secure را می‌توان بدست آورد.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sat, 12 Dec 2020 15:43:38 +0330</pubDate>
            </item>
                    <item>
                <title>گزارش بررسی آنتی ویروس های اندرویدی</title>
                <link>https://virgool.io/@mrazian/%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%A2%D9%86%D8%AA%DB%8C-%D9%88%DB%8C%D8%B1%D9%88%D8%B3-%D9%87%D8%A7%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%DB%8C-w9z6mr5nyich</link>
                <description>مدتی قبل به بررسی آنتی‌ویروس‌های اندرویدی پرداختم که در این نوشته به نتیجه آن اشاره می‌کنم. به گزارش سایت zdnet در ۱۴ مارس ۲۰۱۹، دو سوم اپ های آنتی ویروس کلاهبرداری اند (Fraud)؛ بدین معنا که آنچه که تبلیغ می‌کنند نیستند. با نگاهی به منبع این گزارش به سایت AV-Comparatives3 میرسیم. سایت AV-Comparative که یک سایت اتریشی است که۲۵۰ اپ آنتی ویروس موجود در Google Play Store را در ابتدای سال ۲۰۱۹ بررسی کرده است.این وبسایت، تستی در سال ۲۰۱۷ هم انجام داده بود که منجر به شناسایی ویروس Shield شد. این ویروس ادعا می‌کرد که دیوایس  کاربر را برای شناسایی بدافزارها، اسکن می‌کند در صورتی که چنین کاری را انجام نمی داد جز نمایش یک نوار وضعیت و یک پیغام در انتهای اسکن که بدافزاری یافت نشد. جالب اینکه این آنتی ویروس در گوگل پلی قرار گرفته بود و هزاران کاربر برای آن پول داده بودند. هر چند که در نهایت این پول توسط گوگل به حساب کاربران بازگشتاین وبسایت که از سوی دولت اتریش و دانشگاه اینسبورگ حمایت می‌شود پس از تستی که در ابتدای ۲۰۱۹ انجام می‌دهد اعلام می‌کند که دو سوم این اپلیکیشن ها،کلاهبرداری هستند. این تست ها غالباً بر روی گوشی Galaxy S9 و اندروید ۸.۰ انجام شده است. تیم انجام دهنده این تست امیدوارند که گوگل پلی این اپ ها را هر چه سریعتر از بازار خارج سازد. برخی از مصداق‌های کلاهبرداری عبارت است از:تنها ۸۰ اپ از میان ۲۵۰ اپ، تست اولیه 	شناسایی بدافزارها را پاس کردندمیزان خطای مثبت-غلط بالا (تشخیص به اشتباهِ فایل‌های سالم به بدافزار)برخی از اپ ها در‌واقع اسکنی برای کشف بدافزار انجام نمی‌دهند یعنی به جای بررسی کد اپ های دانلود/نصب شده، صرفاً نام اپ (package name) را با یک لیست سفید/سیاه چک می‌کنند.بیانیه حریم خصوصی در آن‌ها اعلام نشده استمعمولاً از وبسایت AV-Comparatives و وبسایت AV_TEST‌ به عنوان دو سایت  محبوب و جامع در حوزه مقایسه آنتی ویروس ها یاد می‌شود. البته سایت‌های دیگری  مثل Virus Bulletin هم وجود دارند که نسبت به دو سایت قبلی، تست های جامع انجام نمی دهند.بهترین آنتی ویروس های موبایلیدر این قسمت از گزارش نگاهی به بهترین اپ های آنتی ویروس در اندروید خواهیم داشت و جمعبندی را در قالب یک ابر واژه ارائه می‌دهیم. در این ابر واژه،  فونت بزرگ‌تر برای نام یک آنتی ویروس، نشان دهنده این است که آن آنتی ویروس در سایت‌های بیشتری به عنوان اپلیکیشن برتر معرفی شده است. منابع جمع آوری این آمار در ادامه آورده شده است:گزارشی با عنوان 	بهترین اپ های آنتی ویروس ۲۰۱۹ از سایت techradar‌.com در تاریخ	۲۴ ژولای ۲۰۱۹گزارش وب سایت AV-TEST از ارزیابی ۲۰ آنتی ویروس در ژولای ۲۰۱۹گزارش سایت Tom&amp;amp;#x27;s Guide بهترین اپ های آنتی ویروس ۲۰۱۹گزارش سایت fossbytes.com از بهترین آنتی ویروس های اندرویدی برای ۲۰۱۹گزارش سایت androidauthority.com از بهترین اپ ها آنتی ویروس و ضدبدافزار برای اندرویدگزارش وب سایت safetydetectives.com بهترین آنتی ویروس ها ۲۰۱۹گزارش uk.pcmag.com بهترین اپ های آنتی ویروس ۲۰۱۹گزارش سایت bestantiviruspro.org بهترین آنتی ویروس ها برای اندرویدارزیابی آنتی‌ویروس‌ها (کلمه بزرگتر، محبوبیت بیشتر در سایت‌های مورد بررسی) - ۱۳۹۸دسترسیدسترسی تعداد زیادی از اپلیکیشن های آنتی ویروس برای کاربرانی که از کشور ایران متصل می‌شوند، در گوگل پلی بسته شده است. در بین این آنتی ویروس ها، نسخه های رایگان Avast (با تبلیغ درون برنامه) و Sophos (بدون تبلیغ) نسخه های بسیار کارآمد و محبوبی ارزیابی شده‌اند. این در حالی است که هر دو اپلیکیشن برای کاربران ایرانی در دسترس نیستند.مجوزهانکته قابل تأمل در این اپلیکیشن ها حجم بالای مجوزهایی است که برای اجرا نیاز دارند. برای مثال اپلیکیشن کسپراسکی با ۵۰ میلیون دانلود و امتیاز ۴.۹ در گوگل پلی دارای لیست مجوزهای زیر است:لیست مجوزهای آنتی‌ویروس کسپراسکی-بخش اوللیست مجوزهای آنتی‌ویروس کسپراسکی-بخش دومهمچنین اپلیکیشن Sophos Mobile Security که برنده تست سایت AV-TEST در سال‌های ۲۰۱۴ و ۲۰۱۵ است  با بیشتر از یک میلیون دانلود و امتیاز ۴.۶ در گوگل پلی، نیازمند مجوزهای فراوانی دارد که اعتماد به این اپلیکیشن‌های آنتی‌ویروس را سخت می‌کند.وابستگی به سرویس های گوگلنکته دیگر وابستگی احتمالی برخی از اپلیکیشن های آنتی ویروس به سرویس های گوگل (Google Play  Services) مانند سرویس Google play billing و یا گوگل مپ (به منظور ردیابی گوشی) است.اوضاع iOSلازم به ذکر است برای  آی.اُ.اس هم نرم افزارهای امنیتی با نام آنتی ویروس به چشم می‌خورد اما کارکرد آن از آنتی ویروس های (مرسوم) اندرویدی متفاوت است. این آنتی ویروس ها اسکن اپ را انجام نمی‌دهند و خدمات دیگری (که سمت و سوی ام.دی.ام دارد) را ارائه می‌دهند. مثالی از این خدمات، نرم‌افزار ضد سرقت، بررسی وای.فای، ارائه وی.پی.ان برای برقراری محرمانگی ترافیک و مدیریت پسورد است.اپلیکیشن های متن بازبا بررسی اف.دروید، آنتی ویروسی برای اندروید یافت نشد (جستجو در اف.دروید با واژه های virus و malware انجام شده است). همچنین در میانپروژه هایموجود در گیت هاب که صریحاً مطرح کرده بودند که اپلیکیشن آنتی ویروس هستند (با کمک عبارت جستجوی android antivirus github در گوگل) بروژه جدیآنتی ویروس را نیافتم (فایل readme، تعداد مشارکت کننده هاو تعداد انشعابات را مبنای جدی بودن قرار داده‌ام). مواردی از پروژه‌های بررسی شده در گیت در ادامه لیست شده است:JackCho/AntiVirussgoran/android-antivirusarkniazi/AntiViruspharidali/Android-Antivirus-and-SecuritySanjeet990/Android-Antivirus-Projectvikash326/Free-Android-Antivirussgoran/android-antiviruslucky521/Android-Green-Antivirusدر ادامه می‌توان به چند اپلیکیشن متن باز (که در بازار F-Droid‌ موجود هستند) اشاره کرد که هر کدام بخشی از وظایف یک آنتی ویروس را انجام می‌دهند:اپلیکیشن 	Chairlock&amp;lt;br/&amp;gt;قادر است لیستی از اکتیویتی ها و سرویس هایی که برنامه‌های گوشی از آن‌ها استفاده می‌کنند را نمایش دهد. این اپلیکیشن قادر است مجوزهای مورد استفاده در هر برنامه را نمایش دهد.اپلیکیشن 	Net 	Monitor&amp;lt;br/&amp;gt;نمایش فعالیت‌های شبکه ای اپ های نصب شده استفاده به منظور بررسی تمامی کانکشن هایی که گوشی ایجاد کرده است تاریخچه یک اتصال (کانکشن) می‌تواند به صورت لیست /گراف نمایش داده شود</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sat, 12 Dec 2020 15:10:14 +0330</pubDate>
            </item>
                    <item>
                <title>ساخت توزیع لینوکس‌پایه</title>
                <link>https://virgool.io/@mrazian/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AA%D9%88%D8%B2%DB%8C%D8%B9-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3%D9%BE%D8%A7%DB%8C%D9%87-vjytakfihkzi</link>
                <description>تصمیم گرفتم این ترم مسئولیت تدریسیاری (TA) یکی از گروه‌های سیستم‌عامل دانشکده مهندسی کامپیوتر دانشگاه شریف را بر عهده بگیرم تا با کمک تمرین‌ها و پروژه‌های درس، کمی این درس رو نزدیک کنیم به نیازمندی‌های بازار کار و صنعت. مطالبی که در جلسه اول به اونها اشاره کردیم:چرا ساخت توزیع؟ پاسخ ما این بود: ۱- رفع نیازهای شخصی/گروهی/سازمانی ۲- ماهر شدنالبته برای اینکه دانشجویان بیشتر با فضای متن‌باز و نرم‌افزار آزاد آشنا بشوند کمی هم در مورد دانش آزاد و نرم‌افزار آزاد صحبت کردیم. یکی از جملات مهم اینه که دانش آزاد با کمک نرم‌افزار آزاد می‌تواند شکل بگیرد (اگر مراقب دانش آزاد نباشیم، دانش به ابزاری برای بردگی تبدیل خواهد شد). البته این رو تاکید کردیم که نرم‌افزار آزاد یک تفکر و یک سبک زندگی است و نه صرفاً متن‌باز! به قول ریچارد استالمن (بنیانگذار جنبش نرم‌افزار آزاد و مؤسس پروژه گنو):This is wrong, I’m not going to live this wayکه در آن این به عدم اشتراک دانش و عدم هم‌افزایی حاصل از بسته‌شدن سامانه‌ها اشاره می‌کند.به این سوالات هم پاسخ دادیم:درآمد نرم‌افزار آزاد از کجاست؟آیا نرم‌افزار آزاد امن است؟گنو/لینوکس با لینوکس چه تفاوتی دارد؟در انتهای کلاس ما نقشه فکری خودمون، از کاری که دانشجویان قرار است در طول ترم انجام دهند را نمایش دادیم.نقشه فکری ما برای ساخت یک توزیع لینوکس‌پایه به ذهنم رسید اون نقشه فکری رو به صورت یک نقشه بازی طراحی کنیم (ممنون از علیرضا بابت کمک در طراحی) که حاصلش شد شکل زیرنقشه رسیدن به توزیع لینوکس‌پایهاین نقشه نشان دهنده گام‌هایی است که باید طی شود تا یک توزیع لینوکس‌پایه ایجاد شود.در پایان هم کتابLinux+ and LPIC-1 Guide to Linux Certification, 5th Edition, Jason Eckert و مقاله کلیسا و بازار اریک ریموند معرفی شدند.اگه دوست دارید بیشتر از این ترم و تمرین‌های این ترم بدونید با من در ارتباط باشید (آدرس ایمیلم در سایت شخصی‌ام هست).</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sun, 04 Oct 2020 15:16:36 +0330</pubDate>
            </item>
                    <item>
                <title>داستان موفقیت سانادسکتاپ</title>
                <link>https://virgool.io/@mrazian/%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%D9%85%D9%88%D9%81%D9%82%DB%8C%D8%AA-%D8%B3%D8%A7%D9%86%D8%A7%D8%AF%D8%B3%DA%A9%D8%AA%D8%A7%D9%BE-ako2kmjyd4cd</link>
                <description>تصویری از محیط کاربری سانادسکتاپسلام! اواخر سال ۹۸ بود که بنا به درخواست شرکت بنیان توسعه و نوآوری مغزافزار (بتنا) تصمیم گرفتیم کار  بر روی سیستم عامل دسکتاپ را آغاز کنیم. من مسئولیت مدیر محصولی این پروژه رو پذیرفتم اما دقیقاً بعد از پذیرش این مسئولیت، کرونا در ایران شدت گرفت و محدودیت‌های سخت گیرانه آغاز شد (حدوداً اواسط اسفند). من ماندم با مسئولیت مدیر محصولی و این محدودیت‌های فاصله گذاری و آغاز تعطیلی شرکت‌ها و دورکاری‌ها. چاره‌ای نداشتم جز انجام کار  (از آنجایی که پروژه واسم مهم بود دوست داشتم هر طوریه این پروژه موفق بشه) در شرایطی که حتی تیم سازی هم هنوز انجام نشده بود. در نظر دارید که تیم‌سازی در شرایط عادی هم بسیار دشوار است در شرایط دورکاری که واقعاً وحشتناکه! از طرف دیگر آنچه کار را بر من سخت تر می‌کرد استراتژی رسیدن به محصول بود. شخصاً تجربه یک دهه تلاش‌های انجام شده  بر روی سیستم عامل را در ایران دقیقاً مطالعه کرده بودم (البته در هیچکدام از پروژه های قبلی حضور  یا تأثیری نداشته‌ام)‌ و نمیخواستم محصول ما به سرانجام آن‌ها دچار شود! عمده علت شکست آن‌ها را در این موارد میدیدم: ۱- عدم طی مسیر  با مشتری در طی فرایند توسعه ۲- عدم فراهم کردن زیر ساخت مشارکت کامیونیتی ۳-نداشتن امکان یا سامانه‌ای برای پشتیبانیتصویری از پس‌زمینه و اطلاعات سیستم‌عامل سانادسکتاپبرای رفع مشکل اول، تصمیم گرفتم به جای صرف دو یا سه سال زمان در  یک آزمایشگاه و بعد ارائه محصول به بازار، یک زمانبندی ۳ تا ۴ ماهه را در نظر  بگیرم و طبیعتاً برای یک MVP (حداقل محصول قابل ارائه) برنامه‌ریزی کنم. این باعث می‌شد هم ما یک محصول برای ارائه به مشتری داشته باشیم (قدرت چانه‌زنی در زمانی که شما محصول را به مشتری نشان بدی با اینکه فقط ازش حرف بزنی خیلی متفاوته) و از طرف دیگر هم اگر مشتری پذیرفت ادامه مسیر توسعه را با مشتری طی کنیم (تا در یک اتاق بسته!).برای رفع مشکل سوم هم از ابتدا به دنبال راه اندازی یک سامانه پشتبانی ساده (از جهت استفاده) برای ارائه پشتیبانی بودم. برای همین این مسأله هم تا حدی حل شده بود (الان که دارم با شما صحبت می‌کنم این سامانه در آدرس support.sanaos.ir بالا است).اما رفع مشکل دوم...این قسمت انصافاً پیچیده‌ترین بخش کار بود (نه از جهت فنی). اینکه شما بتوانید برنامه‌ریزی بکنید تا از اعضای کامیونیتی با ویژگی‌های رفتاری متفاوت بهره ببرید واقعاً کار ساده‌ای نبود و نیست. خیلی سعی کردم در اینجا ویژگی خاصی مطرح نکنم تا ویژگی چند عضو از کامیونیتی به تمامی آن‌ها بسط داده نشود! اما به همین بسنده می‌کنم که کار با بچه‌های کامیونیتی بسیار سخت بود! در اولین گام با دانیال بهزادی در مورد پروژه صحبت کردم و پیشنهاد مدیر فنی را به ایشون دادم و ایشون هم پذیرفت. سپس در اولین جلسه با حضور بنده، آقای تشکری (به نوعی ایشون هم مشاور  بودند و هم کارفرما) و دانیال، ویژگی‌هایی از سیستم‌عامل که در MVP باید وجود داشته باشد را بدست آوردیم. در گام بعدی باید تیم سازی می کردیم. به دانیال گفتم افرادی رو معرفی کنند ایشون به من گفتند: شما معرفی کنید که من نپذیرفتم و با اصرار  از ایشون خواستم که افراد رو ایشون معرفی کنند. علت اصرار من این بود که می‌خواستم حتماً و حتماً از دل کامیونیتی افرادی بیان و پروژه رو انجام بدن. بعد از این درخواست من، ایشون رزومه چند نفر رو فرستادند. رزومه ها رو بررسی کردم و با توجه به نیازمون تصمیم گرفتم با علیرضا فریدونی و محمدرضا حقیری (هیچ کدوم از این دو بزرگوار رو از قبل نمی‌شناختم) جلسه مصاحبه آنلاین داشته باشم. خدا رو شکر نتیجه مصاحبه با هر  دو مثبت بود و قرار شد در پروژه همکاری کنند. در تیم، محمدرضا عمدتا بر روی ساخت سیستم عامل کار  می‌کرد (کار بر روی پیکربندی‌ها، بسته‌های نرم‌افزاری، نصاب و...) و علیرضا عمدتا روی مخازن (و البته مسائل و رفع مشکلات دیگر به فراخور نیاز).پایه‌گذاران سانادسکتاپدر همان روز های ابتدایی قبل از آغاز پروژه، به انتخاب اسم سیستم عامل دسکتاپ فکر میکردم. طبیعتاً باید یک اسمی وجود می‌داشت که حول آن جمع شیم و روی اون صحبت کنیم و بتونیم اون رو صدا کنیم در موردش به دیگران بگیم و بهش فکر کنیم. بنابراین خیلی زود باید یک اسم انتخاب می‌شد. از طرفی هم میدونستم که انتخاب اسم آفتی است که یک محصول را بعضا در ابتدای کار خود متوقف می‌کند (وابسته بودن اسم به لوگو یا همون نشان یکی از دلایل این وقفه است). برای همین به میزان یک روز زمان صرف کردم و به اسم سانا رسیدم. اسم سانا از اختصار کلمه‌ای گرفته نشده است. بلکه مدنظر من خود کلمه سانا بود. سانا که یک اسم کوردی است به معنی ساده، سهل و آسان است. ادعای من به عنوان مدیرمحصول این بود که سیستم‌عامل دسکتاپ ما باید تا حد امکان برای کاربر عادی آسان و ساده باشد. برای همین اسم سانادسکتاپ رو انتخاب کردم. بچه‌ها هم موافقت کردند (یا حداقل مخالفت نکردند). مزیت این اسم این بود که در کنار  واژه‌های دیگر هم سازگاری داشت مثل سانالایت (نسخه سبک سانا) و ساناسرور و ساناچیزنت. البته سین به سیستم عامل و نا به نرم‌افزار آزاد هم می‌تواند مرتبط شود. برای الف بعد از سین هم فکر نکرده‌ام!حدوداً از هفته دوم خانم خدابخشی برای آماده سازی آرت‌ورک‌ها به تیم اضافه شدند. ویژگی خانم خدابخشی این بود که ایشون یک ویندوزی فتوشاپ کاری هستند که یک دوره مقدماتی لینوکس رفتند و الان با اینک‌اسکیپ کار می‌کنند. یعنی طرح‌های زده شده برای سانا رو در نرم‌افزار inkscape زده‌اند و این افتخار بود!  در این بین از اونجایی که نیاز به کار آموزشی داشتیم از خانم شاکر هم میخواستیم برای بحث آموزش‌ها استفاده کنیم که ایشون ضمن استقبال از پروژه و خوشحالی بابت این کار و این حرکت، به دلیل مشغله فعلی‌شان قرار شد چندماه دیگر اگر بتوانند به تیم اضافه شوند. همچنین یکی از نیازمندی‌های ما این بود که بتونیم تقویم فارسی رو یکپارچه کنیم با میزکار گنوم که با توسعه‌دهندگان افزونه تقویم فارسی صحبت کردیم. ایشون خیلی از مدل کار استقبال کردند ولی به دلایل شخصی، فرصتی برای همراهی تیم در انجام پروژه را نداشتند. در این بین سعی کردیم با صاحب پارسیکس هم ارتباط بگیریم و از نظرات و مشاوره‌های ایشون استفاده کنیم. این کار رو بهزادی و فریدونی پیگیری می‌کردند که البته نتیجه‌ای حاصل نشد. کلاً نظرم بر این بود که ادب پیشه کنیم و از مشورت هر صاحب نظر پیش‌کسوتی بهره ببریم. این رو چندین بار گفتم.اما احمد حقیقی که ایشون هم از اواسط پروژه به جمع ما اضافه شدند و سند زیرساخت مشارکت کامیونیتی شامل (دیسکورس، گیت‌لب، احراز اصالت و …) رو آماده و پیاده‌سازی کردند (البته قسمت SSO هنوز انجام نشده است).اسم توزیع. محمدرضا حقیری درخواست داشت تا برای نسخه‌های مختلف یک نام انتخاب کنیم. پیشنهاد شد از اسم کوه‌ها برای نامگذاری استفاده شود. محمدرضا برای اولین نسخه سانادسکتاپ اسم گنو (Genow) رو  پیشنهاد داد. گنو، اسم کوهی است در بندرعباس. اسم جذابی بود به واسط شباهت آن با GNU من هم استقبال کردم و همین اسم انتخاب شد.طرح های توجیهی. یکی از کارهای خوب دانیال این بود که در  ابتدا برای هر بخش از سیستم عامل که قصد داشتیم بر روی آن کار کنیم از فرد مسئول، یک طرح توجیهی خواستند. این طرح های توجیهی به مثابه پیش‌زمینه پژوهشی کار، انجام پروژه را خیلی ساختمند کرد. من در کنار مسئولیت مدیر محصولی، مسئولیت طرح توجیهی امنیت سانا رو هم بر عهده داشتم که حاصل اون مدل امنیت سانادسکتاپ بود و تا جایی که میدونم برای اولین بار چنین طرحی برای امنیت سیستم‌عامل مطرح شده است.جلسات دو هفته‌ای اسپرینت. از دیگر نقاط قوت تیم سانا، جلسات دو هفته یک بار (به صورت مجازی) بود که از ابتدا تا انتهای پروژه به طور منظم برگزار شد. این جلسات واقعاً پر برکت بود برای کل تیم. لذت هم‌افزایی و توفان فکری رو تمام تیم می‌چشیدند. شاید علت اینکه این جلسات دوام داشت این بود که تصمیم گیری‌های کلان در این جلسات انجام می‌شد (مشارکت) و البته مرور فعالیت‌های دو هفته قبل نیز در این جلسات انجام می‌شد. مشکلات و چالش های فنی و غیرفنی مطرح می‌شد و هر کسی راه حلی ارائه می‌داد و مهمتر اینکه به معنای واقعی هم‌افزایی می‌شد.سامانه‌هایی که برای مدیریت تیم انتخاب کردم. تجربه‌ای که در کارهای گروهی داوطلبانه داشتم باعث شد تا تمام تلاشم را بکنم که صرفاً یک (تاکید روی تعداد است) سیستم ارتباطی یکپارچه با اعضای تیم داشته باشیم. به تجربه، می‌دانستم وقتی تعداد سامانه‌ها (حتی بهترین سامانه‌ها) زیاد می‌شود استفاده‌پذیری از آن‌ها کاهش می‌یابد. نیازمندی‌هایی که داشتیم: مدیریت وظایف (به شیوه کانبان)، پیام رسانی، تماس صوتی، اشتراک فایل، ست کردن زمان جلسات و کنترل نسخه‌های فایل بود. همه این‌ها رو با کمک nextcloud حلش کردیم. برای جلسات هم از جیتسی استفاده می‌کردیم. البته در انتهای پروژه، از ردماین برای مدیریت وظایف و از رایوت برای پیام رسانی استفاده کردیم. اواخر هم برای مستندات از کلبراِی‌آنلاین استفاده کردیم.به دلیل شدت گرفتن کرونا در فروردین همه تعاملات تیم به صورت مجازی بود تا اواسط اردیبهشت که اولین جلسه حضوری رو برای توسعه تیمی برگزار  کردیم. با توجه به اینکه بازدهی اون روز خیلی خوب بود تصمیم گرفتیم باز هم حضوری دور هم جمع شیم که فکر می‌کنم سه چهار روز دیگر هم دور هم جمع شدیم و کار رو پیش بردیم. واسم جالب بود که بچه‌ها انگیزه‌مندانه توسعه سانادسکتاپ را پیش می‌بردند و بعضی قسمت‌های پروژه را هم برای اینکه به ددلاین برسیم شبانه‌روزی کار می‌کردند. خیلی واسم جالب بود که این حس بین تیمی ایجاد شده بود که تمام تعاملات آن به غیر از  پنج یا شش روز به صورت مجازی انجام شده بود. اما به هر حال سانادسکتاپ منتشر شد و از صفر به یک رسیدیم...مقایسه سانادسکتاپ با سایر سیستم‌عامل‌ها (ویندوز ۱۰، دبیان و اوبونتو)هم‌اکنون سانادسکتاپ بر روی چندین سیستم عملیاتی نصب شده و آزمون‌های مختلفی را پاس کرده است. البته فهرستی از مشکلات نسخه اولیه استخراج شده است که قرار است در نسخه‌های بعدی حل شود. خبر خوب اینکه با چند مشتری احتمالی نیز صحبت شده است و موافقت‌های اولیه‌ای برای نصب و استقرار سانادسکتاپ اعلام شده است. اطلاعات بیشتر در مورد سانادسکتاپ در صفحه اختصاصی این سیستم‌عامل در اینجا، راهنماها در اینجا و کدها و اسناد در اینجا و همچنین یک دمو از محیط کاربری در اینجا وجود دارد.توجه ۱: استفاده از ضمیر  من به جای ما، به این علت بوده است که دقیقاً نقش و مسئولیت‌ها مشخص شود تا اگر نقدی یا نقصی وجود دارد متوجه من باشد و نه کل تیم.توجه ۲: اگه دوست دارید در این پروژه مشارکت کنید از طریق آدرس ایمیلم که در صفحه شخصی‌ام وجود دارد بهم پیام بدید</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Wed, 16 Sep 2020 12:00:44 +0430</pubDate>
            </item>
                    <item>
                <title>ویندوز لب تابم لینوکسه</title>
                <link>https://virgool.io/@mrazian/%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D9%84%D8%A8-%D8%AA%D8%A7%D8%A8%D9%85-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3%D9%87-jmhj4c98jzya</link>
                <description>تا حالا جمله زیر رو شنیدید؟ویندوز لب تابم لینوکسهاحتمالا فردی که این جمله را بیان کرده است در نظر داشته است که جمله صحیح زیر را بگویدسیستم‌عامل لپ‌تاپم، از خانواده سیستم‌عامل‌های لینوکسی (و به تعبیری دیگر گنو/لینوکسی) استاما چند نکته:جای تأمل دارد که چرا سالیان سال است که در ایران بر روی سیستم‌عامل ویندوز سرمایه گذاری شده است. در اینجا سعی کرده‌ام لیستی از کشورها که بر روی حوزه سیستم‌عامل کار کرده‌اند بیاورم. در نظر بگیرید ما هم یک روز! توسعه‌‌دهنده سیستم‌عامل شویم و سیستم‌عامل رشدیافته در ایران را داشته باشیم! آن وقت، توسعه تمامی مؤلفه‌های زیست‌بوم سیستم‌عامل، از نرم‌افزارهای کاربردی عمومی گرفته تا نرم‌افزارهای تخصصی، همگی می‌تواند با دانش و تخصص برنامه‌نویسان و مهندسان نرم‌افزار ایرانی انجام پذیرد.استفاده از یک سیستم‌عامل انحصاری (مثل ویندوز) که اجازه مطالعه و توسعه را به کاربرانش نمی‌دهد، کاربران حرفه‌ای را به مسیر مصرف‌کنندگی (به جای توسعه‌دهندگی) روانه می‌کند. به همین دلیل است که پیشنهاد، استفاده از سیستم‌عامل‌های آزاد/متن‌باز مانند سیستم‌عامل‌های خانواده گنو/لینوکس است.</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Sat, 04 Jul 2020 08:28:25 +0430</pubDate>
            </item>
                    <item>
                <title>اسکایپ، ادوبی کانکت...راحت باشید؛ اینجا همه خوابیده اند</title>
                <link>https://virgool.io/@mrazian/%D8%A7%D8%B3%DA%A9%D8%A7%DB%8C%D9%BE-%D8%A7%D8%AF%D9%88%D8%A8%DB%8C-%DA%A9%D8%A7%D9%86%DA%A9%D8%AA%D8%B1%D8%A7%D8%AD%D8%AA-%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF-%D8%A7%DB%8C%D9%86%D8%AC%D8%A7-%D9%87%D9%85%D9%87-%D8%AE%D9%88%D8%A7%D8%A8%DB%8C%D8%AF%D9%87-%D8%A7%D9%86%D8%AF-yiwugotlr8zy</link>
                <description>برای من شخصا، آموزش الکترونیکی کاملا جاافتاده بود؛ هم این مبحث رو برای کنکور دکتری خونده بودم! (رتبه ام 23 در کشور شد)، هم در دوره دکتری در مورد آمادگی الکترونیکی یک جامعه یا همون (e-readiness) و مدل های اون مطالعه داشتم و هم اینکه حداقل 5 سال تجربه تدریس موفق در بستر آموزش الکترونیکی در دانشگاه علم و صنعت داشته ام.اما میخوام فریاد بزنم چرا یک سیستم LMS (سیستم مدیریت یادگیری) با عملکرد (Performance) مناسب نداریم که امروز، دانش آموزان و دانشجویان ما، کسب و کارهای ما، از این کوچه به آن کوچه به دنبال یک سیستم امن، با سرعت و کیفیت مناسب و ارزان باشند. چرا یک سیستم برای برگزاری ویدئو کنفرانس برای نمایندگان مجلس نداریم (چه رسد برای مردم عادی).اسکایپ، ادوبی کانکت (Adobe Connect) راحت باشید...مگر این یک امر غیرقطعی بود...مگر در الکترونیکی شدن جامعه شک داشتید. پیشینیان! جواب بدید...شما که خارج رفته اید...مگر ندیدید! نمی دانستید از جامعه صنعتی، وارد جامعه اطلاعاتی (عصر اطلاعات) شده ایم؟؟؟میخوام به مدل سیاست مداران افشاگری کنم! اینکه آیا در الکترونیکی شدن جامعه، عدم قطعیت (شک و تردید) وجود داشت و یا امری حتمی بود. بسنده می کنم به متن زیر (به عدد سال ها دقت کنید)جامعه اطلاعاتي ( تاثير فناوري اطلاعات بر وجوه مختلف جامعه)  از سال1970 مطرح شده است و به ويژه در نيمه دوم دهه 1990(1369 شمسی) مورد توجه واقع شد. تعريف جامعه اطلاعاتي ( جامعه فراصنعتي):جامعه اطلاعاتي ارائه كننده مدلي نوين از جامعه است كه در آن• مفاهيم سنتي آموزش، كسب و كار، اقتصاد و تجارت متحول ميگردد.• ارزشهاي اطلاعاتي جايگزين ارزشهاي مادي ميشود.•اطلاعات بسرعت توليد و در اختيار همه قرار ميگيرد.•فعاليتهاي كاري بيشتر در پردازش اطلاعات است تا در توليد صنعتي يا كشاورزي.•پردازشها بصورت الكترونيكي انجام ميشود.• نقش زمان و مكان فيزيكي كم رنگتر و امكان حضور مجازي ايجاد مي شود.•مهارتها و مشاغل جديد در عرصه فناوري ارتباطات و اطلاعات ايجاد ميگردد.• نحوه ارتباط و تعامل انسانها تغيير مي كند.•شاخصهاي سياسي، اقتصادي، اجتماعي و روشهاي مديريت و سازماندهي متحول ميگردد. (برگرفته از کتاب مبانی و مديريت فناوری اطلاعات نويسنده: محمد فتحيان-حاتم مهدوی نور انتشارات: دانشگاه علم و صنعت ايران)کنش مسئولان و مدیران وقت در برابر این تحولات چه بوده است؟ (با فرض اینکه انتظار اقدام آینده نگرانه از آن ها نمی داشتیم!)عمده آن ها، ساده ترین راه را در مواجهه با فناوری اطلاعات انتخاب کردند...یعنی مصرف کننده بودن! و نه توسعه دهنده بودن!ما گذر نکردیم...پریدیماحساس من بر این است که ایران، برنامه ای درخور، برای آمادگی الکترونیکی جامعه پیاده سازی نکرد. اما این آمادگی الکترونیکی یا همون e-readiness چیه؟يک جامعه آماده از لحاظ الکترونيکي داراي سرعت بالاي دسترسي به شبکه در يک بازار رقابتي، دسترسي و استفاده پايدار از ICT در مدارس، ادارات، کسب و کارها، خانه‌ها و مراکز بهداشتي است. در چنين جامعه‌اي امنيت و حريم خصوصي افراد در ارتباطات برخط تامين است و سياستهاي دولتي حامی استفاده از شبکه های رايانه ای است. اين تعريف نفوذ  ICT در خانه‌ها، بنگاهها، مراکز بهداشتي و درماني، و ادارات دولتي را مبناي آمادگي الکترونيکي يک جامعه قرار مي‌دهد. (منبع: همان)هر چند از آمادگی الکترونیکی در ایران فقط در حد ICDL ماند و دیگر هیچ!حالا توسعه دهندگی (Development) نه تنها باعث می شود سرویس های ارزان تر و باکیفیت و مطمئن تر برای همگان حاصل شود بلکه فرصت اشتغال را برای جوانان این مرز و بوم هر چه بیشتر فراهم می کند.لطفا کمک کنید تا این مطلب به دست هر علاقه مند دغدغه مندی برسد. سپاس. در کامنت ها نظرتون رو مشتاقانه خواهم خواند و پاسخ خواهم داد</description>
                <category>محمدرضا رازیان</category>
                <author>محمدرضا رازیان</author>
                <pubDate>Tue, 10 Mar 2020 10:29:35 +0330</pubDate>
            </item>
            </channel>
</rss>