<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا زمانی</title>
        <link>https://virgool.io/feed/@Ali_Zamani</link>
        <description>مشاور و مجری فناوری اطلاعات | www.AliZamani.net</description>
        <language>fa</language>
        <pubDate>2026-06-17 08:27:56</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/60832/avatar/489Wlw.jpg?height=120&amp;width=120</url>
            <title>علیرضا زمانی</title>
            <link>https://virgool.io/@Ali_Zamani</link>
        </image>

                    <item>
                <title>تجربه من از ممیزی بر اساس استاندارد 15408 ISO</title>
                <link>https://virgool.io/@Ali_Zamani/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%85%D9%86-%D8%A7%D8%B2-%D9%85%D9%85%DB%8C%D8%B2%DB%8C-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%AF%D8%A7%D8%B1%D8%AF-15408-iso-v8l8y7bcbkok</link>
                <description>اخیرا بابت یک پروژه نرم افزاری که یک اپلیکیشن موبایل شامل فرانت اند و بک اند است نیازمند اخذ گواهینامه امنیتی افتا شدیم (چون این نرم افزار در یک سازمان دولتی مورد استفاده قرار می گیرد)، گواهینامه امنیتی افتا (امنیت فضای تولید و تبادل اطلاعات) گواهینامه ای است که برای تایید صلاحیت امنیتی برنامه هایی که می خواهند در سازمان های دولتی بکار گرفته شوند مورد نیاز است و پیمانکاران دستگاه های دولتی موظف به پیاده سازی برنامه ها و محصولات فناوری اطلاعات خود بر اساس این استاندارد هستند. معمولا این ممیزی بر اساس استاندارد ISO/IEC 15408 انجام میشود. این استاندارد با استفاده از استاندارد دیگری با شماره 18045 مورد استفاده قرار می گیرد که در واقع روش شناسی (متدولوژی) ارزیابی را برای ما مشخص میکند. آزمایشگاهی هم که صلاحیت ارزیابی محصولات فناوری اطلاعات مبتنی بر این استاندارد را داشته باشد خودش باید بر اساس استاندارد شماره 17025 ارزیابی (توسط سازمان ملی استاندارد) شده باشد.این استاندارد که تحت عنوان Common Criteria و یا CC شناخته میشود، تقریبا در سراسر دنیا یک استاندارد شناخته شده است که در لحظه نگارش این مقاله در نسخه 3.1 و بازبینی 5 قرار دارد. معیارهای مشترک یا همان Common Criteria یک چهارچوبی است که نیازمندی های عملکردی امنیتی یا SFR و نیازمندی های تضمین امنیتی یا SAR ها را برای کاربران سیستم های کامپیوتری مشخص میکند. این نیازمندی های عملکردی امنیتی و یا تضمین امنیتی در اسنادی مانند سند هدف امنیتی یا ST و یا در سند پروفایل حفاظتی یا PP مشخص میشوند. تولید کنندگان محصولات فناوری اطلاعات در سند هدف امنیتی مشخص میکنند که محصول که از آن تحت عنوان TOE و یا Target of Evaluation یاد میشود از چه ویژگی های امنیتی تشکیل شده است و باید ادعایی که در سند هدف امنیتی کرده اند اثبات شود که این کار توسط آزمایشگاه های ارزیابی امنیتی صلاحیت دار انجام میشود، اینکه هر سازمانی چه نیازمندی های امنیتی دارد و پیمانکاران و تولید کنندگان نرم افزار چه ویژگی های امنیتی را باید در محصولاتشان پیاده سازی کنند معمولا در پروفایل های حفاظتی مشخص میشود، پروفایل حفاظتی سندی است که سازمان های دولتی با توجه به نیازمندی های امنیتی خود منتشر میکنند.معیارهای مشترک یا CC  علاوه بر نرم افزارهای کاربردی طیف وسیعی از سیستم های فناوری اطلاعات شامل سیستم های عامل، بانک های اطلاعاتی، سیستم های کنترل دسترسی و سیستم های مدیریت کلید را بر برمی گیرند و طوری طراحی شده است که شامل کلیه این محصولات باشد.آزمایشگاه ها معمولا به دو روش ارزیابی را انجام میدهند یا محصول را بصورت آماده بکار تحویل می گیرند و شروع به انجام تست های ارزیابی می کنند و یا خود تولید کننده را هم بصورت تعاملی در فرآیند ارزیابی درگیر می کنند، در ارزیابی تعاملی آزمایشگاه ضمن شفاف‏ سازی الزامات روش بررسی الزام را نیز در اختیار شرکت توسعه دهنده قرار می‏دهد، شرکت توسعه دهنده نیز براساس این روش الزامات را در قالب خوداظهاری بررسی و گزارش نموده و مستندات بررسی را در قالب فیلم و گزارش مصور به همراه آخرین نسخه محصول و مستندات به آزمایشگاه ارائه می‏دهد، آزمایشگاه نیز ارزیابی و بررسی نهایی را بر روی محصول انجام داده و در صورت تایید الزامات، پس از اجرای تست نفوذ گزارش به مرکز راهبردی افتا ارائه خواهد شد. بدیهی است دراین روش به دلیل کاهش تکرار فرآیند پذیرش و همچنین تسهیل در امر ارزیابی به دلیل وجود مستندات شفاف هزینه‏ های ارزیابی تا 50 درصد کاهش می‏یابد. اگر حاصل نتیجه ارزیابی منفی باشد گزارش عدم انطباق (عدم انطباق محصول با استاندارد) به شرکت توسعه دهنده یا همان تولید کننده داده میشود تا نسبت به رفع مشکلات اقدام کند.خروجی کار آزمایشگاه های ارزیابی امنیتی دو نوع گزارش است یکی Observation Report یا OR و یکی Evaluation Technical Report و یا ETR گزارش ETR گزارش فنی مبسوط تری است که ریز خطاها و آسیب پذیری های امنیتی محصولات را مشخص میکند.این استاندارد شامل یازده رده (Class)، شصت و هفت خانواده (Family)، صد و سی و هشت جزء (Component) و دویست و پنجاه عنصر (Element) امنیتی است که باید در محصولات فناوری اطلاعات مورد ارزیابی قرار بگیرد.فهرستی از کلاس های امنیتی مربوط به نیازمندی های عملکردی امنیتی (SFR) و زیر مجموعه های هر کدام به همراه علائم اختصاری آنها :جدول نگاشت کلاس های نیازمندی های عملکردی امنیتی یا SFR ها و تکنیک های امنیتیبعنوان مثال کلاس FIA مربوط به شناسایی و احراز هویت کاربران میباشد که باید در برنامه های کامپیوتری پیاده سازی شوند.نکته ای که وجود دارد سازمان ها با توجه به حساسیت های کاری خود الزامات و سخت گیری های مختلفی بابت ارزیابی محصولات میکنند و این موضوع تحت عنوان سطح ممیزی و یا سطح تضمین اطمینان یا Evaluation Audit Level و یا به اختصار EAL شناخته میشود، در این استاندارد هفت سطح EAL وجود دارد که به ترتیب از شماره یک تا هفت میزان حساسیت ممیزی بالا میرود.معمولا در ایران سطوح ارزیابی امنیتی شامل موارد زیر میشوند :مرکز مدیریت راهبردی افتاسازمان پدافند غیرعامل کشورسازمان تنظیم مقررات و ارتباطات رادیوئیحوزه نظامیمرکز مدیریت راهبردی افتا معمولا در سطح یک ارزیابی قرار دارند و جزو پایین ترین سطح اطمینان شناخته میشوند، در این سطح معمولا سورس کد برنامه نیازی به بررسی ندارد و برنامه ها تنها از لحاظ عملکردی تست میشوند، ولی سطح ارزیابی سازمان پدافند غیرعامل معمولا سطح چهار یا متوسط شناخته میشوند و معمولا سورس برنامه ها بررسی میشوند و الزامات و سخت گیری های خاص خود را دارد. در جدول زیر فهرستی از سطوح EAL و سطح اطمینان هرکدام آورده شده است :سطح تضمین اطمینان برای افتا معمولا در سطح EAL 1 و برای سازمان پدافند غیرعامل معمولا در سطح EAL 4 میباشد.همانطور که گفتیم این استاندارد حول دو محور می چرخد یکی نیازمندی های عملکردی امنیتی یا SFR ها و دیگری نیازمندی های تضمین امنیتی یا SAR ها، SFR ها که در جدول اول آوردیم، اشاره به قابلیت ها و فیچر هایی از برنامه داره که امکانات امنیتی در اختیار ما قرار میده مانند رمزنگاری، احراز هویت، مجوزدهی (مدیریت نقش ها)، احراز هویت دو عاملی، مدیریت گذرواژه و رویداد نگار وقایع از جمله قابلیت هایی هستند که زیر مجموعه SFR ها دسته بندی میشوند، فهرست نیازمندی های عملکردی امنیتی بسته به سطح و نوع ارزیابی حتی برای یک محصول میتوانند متفاوت باشند، برخی قابلیت های امنیتی (SFR ها) ممکن است ووابسته به دیگر نیازمندی های عملکردی امنیتی باشند.اما در مقابل SFR ها، نیازمندی های تضمین عملکرد یا SAR ها هستند، نیازمندی های تضمین عملکرد تضمین میکنند که قابلیت های امنیتی عملکردی یا همان SFR ها با ادعا های مطرح شده چقدر منطبق و اطمینان بخش هستند.فهرستی از مهمترین کلاس های ارزیابی تضمین عملکردی در تصویر زیر آمده است :کلاس های تضمین اطمینان یا همان SAR هاهر کدام از کلاس های فوق مفهوم و کاربرد خود را دارد که در این مطلب نمی گنجد، بعنوان مثال کلاس ADV_FSP به معنای سند مشخصات عملکردی یا همان Functional Specification است که باید برای توسعه محصول آماده شود و الزام وجود آن برای هر سطح اطمینان مشخص شده است.آزمایشگاه های دارای مجوز در ایران واژگان Common Criteria (CC)Security Functional Requirement (SFR)Security Assurance Requirement (SAR)Protection Profile &#40;PP&#41;Security Target (ST)Target Of Evaluation (TOE)Common Evaluation Methodology (CEM)Composed Assurance Package (CAP)Evaluation Audit Level (EAL)Penetration Test (Pen Test) Common Criteria Recognition Arrangement (CCRA)Common Criteria for Information Technology Security Evaluation (CC)Certification Body (CB)Observation Report (OR)Evaluation Technical Report (ETR)نمونه هایی از گواهینامه امنیت محصولنتیجه گیری :تجربه ای که من از ممیزی استانداردهای امنیتی دارم در ایران، چه بعنوان کارشناس آزمایشگاه (که مدتی در یکی از این شرکتهای دارای مجوز آزمایشگاه امنیتی مشغول به کار بودم !) و چه بعنوان مشتری آزمایشگاه، تصور درست و دقیقی از روش های ارزیابی در این آزمایشگاه ها وجود ندارد و وقتی در مورد نحوه دقیق ارزیابی و ابزارها سوال میشود پاسخ های گنگی به طرف داده میشود، از آنجائیکه استاندارد های ایزو بعضا بصورت مجرد (Abstract) و کاملا جنریک (Generic) طراحی میشوند کلی گوئی هایی زیادی در آنها وجود دارد که ارزیابی بر اساس آنها مهارت و تخصص خود را می طلبد.در این مطلب سعی کردم شما رو با استاندارد 15408 و فرآیند ارزیابی آن بصورت خیلی گذرا آشنا کنم، امیدوارم مفید بوده باشه.</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Mon, 06 Jun 2022 00:29:27 +0430</pubDate>
            </item>
                    <item>
                <title>انتخاب الگوریتم امنیتی مناسب در برنامه های دات نت</title>
                <link>https://virgool.io/@Ali_Zamani/%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA-ordfiew6sd11</link>
                <description>قبلا در مورد رمزنگاری و الگوریتم های مختلف آن مطالبی نوشتیم، در این پست مختصر قصد دارم گذری بر انواع کتابخانه های امنیتی و الگوریتم های مناسب برای هر کاری را معرفی کنم، سکوی دات نت بسیاری از استاندارد های الگوریتم های رمزنگاری را پشتیبانی میکند و کتابخانه بسیار قابل توسعه ای دارد.ساختار سیستم رمزنگاری دات نت از یک سلسه مراتب سه سطحی تشکیل شده است، به این صورت که سطح اول کلاس های نوع مجرد هستند که از سه کلاس مجرد SymmetricAlgorithm, AsymmetricAlgorithm, و HashAlgorithm تشکیل شده است که هر سه کلاس مجرد (Abstract) هستند و سطح دوم کلاس های الگوریتم های مختلف از یکی از این سه کلاس مجرد مشتق شده اند مانند کلاس های Aes, RSA, ویا ECDiffieHellman و سطح سوم پیاده سازی کلاس های الگوریتم هستند مانند AesManaged, RC2CryptoServiceProvider, و یا ECDiffieHellmanCng .این الگوی کلاس های مشتق شده به ما امکان اضافه کردن یک الگوریتم رمزنگاری جدید و یا یک پیاده سازی جدیدی از الگوریتم موجود را میدهد. برای مثال برای ایجاد یک الگوریتم کلید عمومی باید یک کلاس که از کلاس AsymmetricAlgorithm مشتق میشود ایجاد کنیم. یا برای ایجاد یک پیاده سازی جدید از یک الگوریتم خاص باید کلاسی ایجاد کنیم که از یک کلاس غیر مجرد مربوط به همان الگوریتم مشتق میشود.- برخی کلاس های دات نت که انتهای عنوان آن *CryptoServiceProvider هستند در واقع یک کلاس بسته بند (Wrapper) برای پیاده سازی Windows Cryptography API (CAPI) یک الگوریتم هستند.- برخی کلاس های دات نت که انتهای عنوان آنها *Cng دارند در واقع یک کلاس بسته بند (Wrapper) برای پیاده سازی Windows Cryptography Next Generation (CNG) هستند.- و در نهایت برخی از کلاس های دات نت که انتهای آنها *Managed دارند نسخه پیاده سازی شده کاملا تحت دات نت (کد مدیریت شده) هستند. پیاده سازی های مدیریت شده توسط Federal Information Processing Standards (FIPS) تائید نشده اند و ممکن است از دو گروه قبل کندتر باشند.تصویر جنبه نمایشی دارد و الزاما ارتباطی با سکوی دات نت نداردبرخی از کلاس های کاربردی رمزنگاری در دات نت :- تولید کلید از یک گذرواژهRFC2898DeriveBytes- محرمانگی داده هاAES- یکپارچگی داده هاHMACSHA256HMACSHA512- امضای دیجیتالRSA , ECDSA- تبادل کلیدRSA , ECDiffieHellman- اعداد تصادفیRNGCryptoServiceProvider</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Thu, 06 Jan 2022 17:12:01 +0330</pubDate>
            </item>
                    <item>
                <title>آمار بازدید پست‌های من در سال ۹۹</title>
                <link>https://virgool.io/@Ali_Zamani/%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D9%BE%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-%DB%B9%DB%B9-tz5ok6a92ajd</link>
                <description>در طول تاریخ از اعداد استفاده کردیم تا اغلب داد و ستد کنیم و آن‌چیزی که شمردنی است را بشماریم. برای هر عدد واحد درست کردیم تا عددهای زندگی قاطی نشوند و از اعداد، شفاف‌تر استفاده کنیم؛ مثلا وقتی می‌گوییم ده هزار تومان به پول اشاره داریم و وقتی می‌گوییم ده هزار بلیط به بلیط!روز به روز که در زندگی جلو‌تر رفتیم عددها فرقی نکردند ولی این واحدها بودند که زیاد شدند. واحد کریپتو، واحد اصله درخت، واحد فاصله و …«واحد» یک توافق عمومی است برای شمردن؛ تا همانطور که گفتم شمردن‌ها قاطی نشود. مشاهده افراد دارای ثروت (اجتماعی یا مالی) به من ثابت کرده اینکه چه چیزی را بشماریم از اینکه چطور بشماریم مهم‌تر است. هرکس با واحد خاصی مسائل زندگی را می‌شمارد. اینطور به نظرم آمده که مشخص کردن واحد یعنی مشخص کردن اینکه من در زندگی برای چه چیزهایی ارزش قائلم و می‌خواهم چه چیزهایی را در زندگی بشمارم. https://cdn.virgool.io/annual-report/1399/nzsyjlluhzgo-CZc5i.mp4 اعدادی که بدون واحد ثبت کردمبه ویدیویی که ویرگول برایم ساخته که نگاه می‌کنم میبینم که در سال ۹۹، من در مجموع ۸۲,۲۷۵ کلمه در ویرگول نوشتم و منتشر کردم و مخاطبین، پست‌های من را ۳۲۶ مرتبه پسندیدند و  ۱۱ بار هم نظر خود را روی پست‌های من به اشتراک گذاشتند. در سال ۹۹، ۸۵ نفر در ویرگول من را دنبال کردند تا پست‌های بعدیم را بخوانند. این اعداد نشان میدهند من کاری کرده‌ام. هرکدام به واحدی وصل هستند. از خودم می‌پرسم من کدام واحد را شمارش کرده‌ام؟ کدامیک از واحدهای بالا از همه برای من مهم‌تر است؟ ادامه ویدیو را می‌بینم.آمار از اثر بیرونی می‌گویندطبق آمار پست‌های من ۳,۵۵۴ بار خوانده شدند و ۱,۱۹۳,۹۱۷ ثانیه صرف مطالعه آنها شده است، که با توجه به جمعیتی که در ایران به اینترنت دسترسی دارند، ویرگول به من می‌گوید که توانستم  ۰/۰۱۶۳۶۸۴۸۱ ثانیه، سرانه مطالعه دیجیتال کشور را بالا ببرم.از طرف دیگر ویرگول به من می‌گوید که اگر قرار بود پست‌هایم را چاپ و به دست تک تک خوانندگان برسانم باید ۵۳,۶۲۰ کاغذ مصرف می‌کردم.آن عددهای کوچک ابتدای ویدیو حالا تبدیل شده‌اند به عددهای بزرگ به اینکه من جلوی مصرف این تعداد کاغذ را گرفتم یا به اینکه من  ۰/۰۱۶۳۶۸۴۸۱ ثانیه، سرانه مطالعه دیجیتال کشور را جابه جا کرده‌ام. واحد این عددها برای من ملموس‌تر است.واحد نوشتن چیست؟همه عددهای بالا و همینطور اثر بیرونی که روی خوانندگان و همینطور در مقیاس بزرگتر طبیعت و جامعه اطرافم گذاشتم اعدادی هستند که من دوستشان دارم و به آنها افتخار می‌کنم. اگر چنین ویدیویی دست شما نیز رسید به شما بابت تک تک اعداد تبریک می‌گویم.اثر هر نوشته تا حدودی معلوم است، اگر بنویسید جلوی قطع درخت را می‌گیرید، به سرانه مطالعه کشور اضافه می‌کنید و خوانندگانی جذب می‌کنید که شما را از طریق نوشته‌هایتان می‌شناسند و …به نظرم می‌رسد که نوشته‌های من و شما واحد ندارند ولی اثر بیرونی دارند.</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Mon, 22 Mar 2021 15:40:58 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی کتابِ مینیمالیسمِ دیجیتال</title>
                <link>https://virgool.io/SoftwareEngineering/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%AA%D8%A7%D8%A8%D9%90-%D9%85%DB%8C%D9%86%DB%8C%D9%85%D8%A7%D9%84%DB%8C%D8%B3%D9%85%D9%90-%D8%AF%DB%8C%D8%AC%DB%8C%D8%AA%D8%A7%D9%84-u9mvq7m8fxdk</link>
                <description>مینیمالیسم هنرِ درک کردن مقدار کافی از هر چیز است. مینیمالیسمِ دیجیتال این نگاه را به دنیای فنآوری شخصی‌مان می‌برد و راه حل تمرکز داشتن در جهانی‌ست که روزبه‌روز آشفته‌تر می‌شود.در این کتاب به‌هنگام و روشنگر، کال نیوپورت، فلسفه‌ای را برای استفاده از فنآوری معرفی می‌کند که زندگی های بیشماری را بهبود بخشیده است. نیوپورت با بررسی نمونه‌های متنوعی از زندگی‌های واقعی - از کشاورزان آمیش گرفته تا پدر و مادر‌های به  ستوه‌آمده و برنامه نویسان سیلیکون‌ولی- شیوه‌های متداولِ مینیمالیست دیجیتال و ایده‌های آن‌ها را شناسایی می‌کند.او نشان می‌دهد چگونه مینیمالیست‌های دیجیتال در روابط‌شان  با شبکه‌های اجتماعی بازنگری کرده و لذت‌های دنیای آفلاین را دوباره کشف می‌کنند و از طریق دوره‌های منظمِ خلوت گزینی، ارتباط با خودِ درونی‌شان را از نو می‌سازند. بعد هم راهبردهایی را با ما در میان می‌گذارد تا بتوانیم این شیوه‌ها را در زندگی‌مان بگنجانیم و این کار را با روندی سی‌روزه به نام «پاکسازی دیجیتال» آغاز می‌کند که در حال حاضر به هزاران نفر کمک کرده تا کمتر احساسِ استیصال کنند و بتوانند کنترل امور را در دست گیرند.در واقع فنآوری نه خوب است و نه بد. نکته اصلی اینجاست که از آن برای تقویت اهداف و ارزش‌هایمان استفاده کنیم نه اینکه اجازه بدهیم فنآوری از ما استفاده کند؛ و این کتاب راهش را به ما نشان می‌دهد.«مینیمالیسمِ دیجیتال بهترین کتابی است که بعد از مدت ها در مورد روابط پراضطراب‌مان با فنآوری خوانده‌ام. اگر دنبال نقشه‌ی راهی برای رها کردن خودتان از قید و بند شبکه‌های اجتماعی، گوشی هوشمند و صفحه نمایش هستید، خواندن این کتاب را پیشنهاد می‌کنم.»-آدام آلتر نویسنده کتاب بازداشتگاه صورتی</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Mon, 25 Jan 2021 16:38:49 +0330</pubDate>
            </item>
                    <item>
                <title>نسخه ۲۰۲۰ راهنمای اسکرام منتشر شد</title>
                <link>https://virgool.io/SoftwareEngineering/%D9%86%D8%B3%D8%AE%D9%87-%DB%B2%DB%B0%DB%B2%DB%B0-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%A7%D8%B3%DA%A9%D8%B1%D8%A7%D9%85-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D8%B4%D8%AF-pwym3vju53xv</link>
                <description>همزمان با 25 سالگی اسکرام، دو نفر مبدع اسکرام یعنی جف سادرلند و کن شوئبر تصمیم گرفتند که تغییراتی در راهنمای اسکرام (تعریف اصلی اسکرام) داشته باشند و نسخه 2020 این راهنما را منتشر کنند.با همکاری موسسه Scrum.org و به همت انجمن چابک ایران، نسخه جدید را به فارسی همزمان با رونمایی جهانی ترجمه کردند و آماده عرضه شد.تیم ترجمه نسخه 2020 راهنمای اسکرام در انجمن چابک ایران:از صدها نفری که از ابتدا تاکنون به روند ترجمه این راهنما یاری رساندند، باید به‌ویژه به همراهان گرامی اسد صفری، اسماعیل وکیلی، سهیل صمدزاده، رسول باغبان، مسعود باقری، ندا کاشی، حسام معین الدین، حمید صابری، نوید نیک پی، محمود اسدی، آرش خرمشاهی که بار زحمت ترجمه و تنظیم نسخه پیش رو بر دوش ایشان بوده است، اشاره کرد.برای دانلود نسخه اصلی انگلیسی و ترجمه فارسی آن میتوانید به وبسایت زیر مراجعه کنید : https://www.scrumguides.org/download.html مطالعه بیشتر : https://mag.quera.ir/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%85%D8%AA%D8%AF%D9%88%D9%84%D9%88%DA%98%DB%8C-%D8%A7%D8%B3%DA%A9%D8%B1%D8%A7%D9%85-q46bwp4qkx9x  https://virgool.io/teamcamp/%D8%A7%D8%B3%DA%A9%D8%B1%D8%A7%D9%85-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D8%A7%D8%B2%D9%87-%D9%88%D8%A7%D8%B1%D8%AF%D9%87%D8%A7-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%A7%D8%B3%DA%A9%D8%B1%D8%A7%D9%85-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%86%D8%B8%D9%85-%D8%A8%D8%AE%D8%B4%DB%8C%D8%AF%D9%86-%D8%A8%D9%87-%D8%B4%D9%84%D9%88%D8%BA%DB%8C-%D9%87%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-qqvczofq6tr6 </description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Mon, 30 Nov 2020 10:11:18 +0330</pubDate>
            </item>
                    <item>
                <title>فهرست‌گذاری در پایگاه‌داده چگونه کار می‌کند؟</title>
                <link>https://virgool.io/SoftwareEngineering/%D9%81%D9%87%D8%B1%D8%B3%D8%AA%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87%D8%AF%D8%A7%D8%AF%D9%87-%DA%86%DA%AF%D9%88%D9%86%D9%87-%DA%A9%D8%A7%D8%B1-%D9%85%DB%8C%DA%A9%D9%86%D8%AF-m39lfs2ajxlh</link>
                <description>مطلب زیر تماما از تارنمای مجله اینترنتی سلام دنیا بازنشر میشود.فهرست‌گذاری روشی در پایگاه‌های داده است که برای دسترسی به اطلاعات جداول و رکوردهای ذخیره شده در یک پایگاه‌داده‌ها به کار می‌آید. این روش، روشی ساده است که در زندگی روزمره ما نیز مورد استفاده است. در این روش ما جدولی از تمامی داده‌ها و شاخص آنان را می‌سازیم و برای دسترسی به اطلاعات ابتدا به آن مراجعه کرده و با پیدا کردن شاخص به آن شاخص مراجعه کرده و اطلاعت را می‌خوانیم. در ویکی‌پدیا فارسی تعریفی از این مفهوم به شکل کلی بیان شده‌است که در زیر بیان شده است.«فهرست‌گذاری (Indexing) در پایگاه‌داده‌ها روشی برای ارایه دسترسی سریع به مقادیر یک یا چند ستون است. این بهبود در بازیابی، در ازای هزینه بیشتر در هنگام تغییر/درج/حدف رکورد‌ها است. به بیانی دیگر، استفاده از فهرست، فرایند بازیابی (Retrieval) را سرعت می‌بخشد، ولی در هنگام حذف و اضافه و یا تغییر مقادیر، هم داده‌ها باید تغییر کند و هم فهرست باید به‌روز شود، و این به معنای هزینه بیشتر است.به عنوان مثال، برای به‌دست آوردن رکورد حساب با داشتن شماره حساب، به جای آن که در بین تمامی حساب‌ها جستجو شود، سامانه پایگاه‌داده‌ها می‌تواند ابتدا به فهرست برای یافتن شماره بلوک دیسکی که رکورد مرتبط در آن است مراجعه کند و سپس تنها به آن بلوک دیسک مراجعه کرده و رکورد را استخراج کند.»بیایید موضوع را با بحثی آغاز کنیم که اصولا چرا باید از فهرست‌گذاری در پایگاه‌های داده استفاده کنیم. برای فهم بیشتر این موضوع از مثالی ساده شروع می‌کنیم. فرض کنید که ما دارای جدولی در یک پایگاه‌داده‌ها فرضی و با نام  کارمند «Employee»  ساخته‌ایم؛ این جدول دارای سه ستون است که هر یک از ستون‌ها مشخص کننده ویژ‌گی‌های خاصی از یک کارمند است که به صورت ساده‌ای نام، سن و آدرس کارمندان در این فیلدها ذخیره می‌شود. به طور مشخص هر فیلد دارای نام‌های «Employee_Name»، «Employee_Age,» و «Employee_Address» در بانک اطلاعاتی هستند. حال اگر بخواهیم با استفاده از یک پرس‌وجو یا کوئری (Query) ساده به اطلاعات داخل آن جدول دست پیدا کنیم که نام آنان عیسی «Jesus» است باید پرس‌وجوی اس‌کیوال زیر را اجرا کنید.SELECT * FROM Employee WHERE Employee_Name = &#039;Jesus&#039;در زمانی که از فهرست‌گذاری استفاده نکنیم؛ چه اتفاقی رخ خواهد داد؟به‌طور دقیق‌تر زمانی که ما پرس‌وجوی فوق را برای جست‌وجو در جدول مذکور برای یافتن فردی با نام عیسی جستجو می‌کردیم، در پشت صحنه دقیقا چه اتفاقی در حال رخ دادن بوده‌است؟ در این زمان سامانه مدیریت پایگاه‌داده‌ها مجبور است که تمامی سطور و افراد موجود در جدول را یکی به یک بگردد تا این که سطری که فیلد نام کارمند در آن عیسی بود را بیابد. همچنین به این خاطر که ما تمامی کارمندانی را که نامشان عیسی است را می‌خواهیم؛ سامانه مدیریت پایگاه‌داده‌ها باید تمامی اطلاعات را یک‌ به یک بگردد. ممکن است در جدول فوق چندین سطر با مشخصه نام کارمند عیسی وجود داشته باشد که نمی‌توان فقط به یک‌بار جستجو و یافتن یک فرد اکتفا کرد. در چنین مواقعی که ما نیازمند جستجو در یک جدول به دنبال فرد خاص هستیم باید در دیگر سطرها نیز به دنبال فرد مورد نظر بگردیم. در این پرس‌وجو سامانه مدیریت پایگاه‌داده‌ها از سطر اول تا سطر آخر در جدول را به دنبال کارمندان که با نام عیسی هستند، گشته و تمامی آنان را خواهد یافت. بنابراین برای جستجوی چند فرد با نام عیسی، تمامی جدول و اطلاعات ذخیره شده یک به یک توسط مدیر پایگاه‌داده‌ها پویش شده‌اند. در چنین مواقعی است که می‌گوییم یک پویش کامل از جدول فوق صورت گرفته‌است.فهرست شاخص‌ها چه تاثیر بر کارایی پایگاه‌داده‌ها دارند؟ممکن است تصور کنید که چنین روش جستجویی در جداول پایگاه‌های اطلاعاتی بسیار غیر بهینه هستند. طبیعتا این روش به این شکل کارایی پایینی داشته و همانند جستجو در فهرست قبول‌شدگان کنکور در روزنامه‌ها به صورت پویش از بالا و خط به خط است که جست‌وجو و پیدا کردن اطلاعات در آن ممکن بهینه نیست. این درست همان جایی است که مبحث فهرست‌گذاری وارد عمل می‌شود و فهرست‌ها مطرح می‌شوند. همان طور که از نام این مطلب مشخص است، فهرست‌ها در بانک‌اطلاعاتی راه‌حل مشکل فوق است. این روش خواهد توانست جست‌وجو در پایگاه‌داده‌ها را بسیار سریع‌تر کند. نکته اساسی و کلیدی در فهرست‌گذاری همان قطع جست‌وجوی خط به خط و پویش تمام جداول برای یافتن گزینه دلخواه است که با فهرست کردن و فهرست‌گذاری اطلاعات باعث دستیابی سریع به اطلاعات مورد جست‌وجو قرار می‌گیرد .?فهرست و شاخص چیست؟برای درک بیشتر این موضوع که فهرست در پایگاه‌داده‌ها دقیقا چیست، بیایید یک دفترچه تلفن را در نظر بگیریم. برای یافتن اطلاعات و افرادی که در آن قرار دارند می توان آن افراد را دسته‌بندی کرد. معمولا در یک دفترچه تلفن ما آنان را در شاخه‌هایی با اسم اول فامیل آنان مشخص می‌کنیم که از الف تا ی دسته‌بندی شده است. حال در فهرستی از تمامی دسته‌بندی‌های انجام شده در اول آن مشخص شده‌است که افرادی که حرف اول نام خانوادگی آنان «ت» است در صفحات ۶ تا ۸ هستند. این فهرست برای دستیابی به اطلاعات ایجاد شده است و با دسته‌بندی آنان و معرفی مکان هر دسته، یافتن اطلاعات را آسان‌تر کرده‌ایم.فهرست‌گذاری و شاخص‌ها در پایگاه‌های اطلاعاتی نیز به این شکل عمل می‌کنند. به این شکل که جدولی از شاخص‌ها و دسته‌بندی‌ها ایجاد می‌شود که شامل محل هر شاخص است؛ سپس اگر در پایگاه‌داده‌ها به دنبال نام شخصی بگردیم همانند مثال مذکور، ابتدا به جدول فهرست رفته و با یافتن دسته مورد نظر، تنها به جستجوی آن دسته خواهد پرداخت و دیگر نیازی به پویش تمامی اطلاعات در پایگاه‌داده‌ها وجود نخواهد داشت. البته مورد مذکور فقط یک روش از فهرست‌گذاری است و روش‌های دیگری نیز برای این موضوع وجود دارد اما هدف و ساختار کلی آنان به یک شکل است. با وجود اینکه استفاده از فهرستی از شاخص‌ها باعث بهینه شدن پایگاه‌داده‌ها و کارایی بیشتر در زمان جستجو خواهد بود. اما در برخی موارد بهتر است از این روش استفاده نشود. به طور کلی در استفاده از فهرست‌گذاری باید موارد زیر را در نظر داشت.هنگامی که با جداول نسبتا کوچک سر و کار دارید شاخص‌ها کارایی زیادی ندارند.به صورت کلی شاخص‌ها عملکرد را زمانی بهبود می بخشند که بر روی ستون‌هایی تعریف شوند که در الحاق «Join» جداول استفاده شده است.چه نوع از ساختارهای داده‌ها را می‌توان به عنوان فهرست در نظر گرفت؟در فهرست‌ها اطلاعات معمولا به شکل درخت بی (B-tree) نگاهداری می‌شود. بر اساس تعریفی که در ویکی‌پدیا فارسی از درخت بی ذکر شده است، در علوم کامپیوتر، یک درخت بی یا بی‌تری داده‌ساختاری درختی است که داده‌ها را به صورت مرتب‌شده نگه می‌دارد و جستجو، درج و حذف را در زمان مصرفی لگاریتمی میسر می‌سازد. بر خلاف درخت‌های جستجوی دودویی متوازن (Balanced binary search tree)، این داده‌ساختار برای سیستم‌هایی که بلاک‌های عظیم اطلاعات را خوانده و می‌نویسند بهینه‌سازی شده است. این داده‌ساختار معمولا در پایگاه‌های داده‌ها و سیستم پرونده استفاده می‌شود. (ویکی‌پدیا، دانشنامه آزاد)یکی از دلایلی که باعث شده‌است که استفاده از درخت بی در جداول فهرست‌ها است به دلیل کارایی بالای آنان و تاثیری است که بر زمان جست‌وجو، حذف و اضافه از آن است که تمامی این اعمال در زمانی لگاریتمی انجام می شوند. از دلایل مهم دیگری که درخت بی را به یک روش محبوب تبدیل کرده است می‌توان به امکان مرتب بودن داده‌ها در آن اشاره داشت. به طور کلی سامانه مدیریت پایگاه‌داده‌های رابطه‌ای، تعیین کننده ساختاری است که برای فهرست‌ها استفاده می‌شوند اما در برخی شرایط برای برخی برخی از سامانه‌های مدیریت پایگاه‌داده‌های رابطه‌ای می‌توانید مشخص کنید که چه ساختمان‌داده‌هایی را می‌خواهید در زمان ایجاد فهرست در پایگاه اطلاعاتی خود ایجاد کنید.فهرست جدول هش چگونه کار می‌کند؟در علوم رایانه، جدول درهم‌سازی یا جدول «هش» نوعی ساختمان داده‌ها است که مقدارهایی که باید ذخیره شوند را به وسیله تابع هش (درهم‌سازی) با کلیدهای ویژه‌ای مرتبط می‌سازد. عملیات اولیه‌ای که این جدول تسهیل می‌کند عمل مراجعه است. به این معنی که کاربر می‌تواند با سرعتی کارآمد داده مورد نظرش را در آن بیابد. در جدول‌های هش همچنین افزودن داده‌های جدید در زمان کم امکان‌پذیر است. زمان لازم برای جستجو و افزودن وابسته به نوع جدول و میزان داده‌ها هستند. این زمان می‌تواند با انتخاب جدول مناسب به مرتبه زمانی O(1) برسد. (ویکی‌پدیا، دانشنامه آزاد)جداول هش نیز نوع دیگری از ساختمان‌داده‌ها است که ممکن است برای فهرست‌گذاری برخی فهرست‌ها «Indexes» به کار رفته باشد. این فهرست‌ها معمولا با نام فهرست‌های هش شناخته می‌شوند. یکی از دلایل  که باعث استفاده از هش در فهرست شده‌است، به این دلیل است که در زمان‌هایی که تنها به جستجو در مقادیر نیاز داریم. استفاده از هش بسیار بهینه‌تر از دیگر روش‌ها است. بنابراین اجرای کوئری یا پرس‌وجوی دلخواه برای یافتن رشته‌ای مساوی رشته خاص و مورد نظر ما همانند مثال مذکور در اوایل مطلب بسیار سریع‌تر خواهد بود. برای نمونه اجرای کوئری ابتدای مقاله با استفاده از فهرست هش بر روی نام کارمند از جدول هش منفعت برده و با سرعت بهتری به نتیجه دلخواه خواهد رسید. به خاطر این موضوع، جداول هش به طور گسترده در نرم‌افزارها، به خصوص در آرایه‌های شرکت پذیر، ساختار فهرست پایگاه‌داده، حافظه‌های نهان و مجموعه‌ها استفاده می‌شوند.در جداول هش معمولا به این شکل است که اطلاعات و مقادیر هر فیلد و رکود را در یک آرایه که به سادگی جدول هش نام دارد می‌گذارد که دارای مشخصه‌های کلید، مقدار و طول است. جدول هش اندیس یک کلید را محاسبه می‌کند و از آن اندیس برای جای دادن آن کلید در جدول استفاده می‌کند. به طور کلی تصور کنید که می‌خواهید اطلاعات چندین‌‌هزار نفر را در یک پایگاه‌داده‌ها ذخیره کنید؛ راه‌حل ابتدایی و ساده این است که تمامی آنان را در یک جدول ساده ریخته و ذخیره کنیم. بعد این همان طور که ذکر شد در صورتی که بخواهیم به دنبال فردی بگردیم باید n بار که n تعداد افراد داخل پایگاه‌داده‌ها است را یک به یک بگردیم. در این صورت مرتبه زمانی n خواهد بود.راه‌حل جدول هش در این زمان با ایجاد کلیدی که از آدرس مقادیر ذخیره شده را در پایگاه داده به صورت آدرس حافظه‌ای محل ذخیره نام‌ها به بدست آورده است و ذخیره آن به عنوان کلید در جدول هش کلیدی را به هر یک از آنان نسبت می‌دهد سپس نام آنان را نیز در کنار هریک از کلیدها متناسب با نام قرار می‌دهد. مثلا کلید و نام متناظری که برای فرد مذکور با نام عیسی ساخته شده‌است به این شکل در جدول هش قرار می‌گیرد.“Jesus =&gt; 0x28939″برای جست‌وجو و یافتن فردی با نام عیسی در جدول با استفاده از کوئری نوشته شده در اوایل مطلب، اگر از جدول هش استفاده کرده باشیم، ابتدا مدیر پایگاه‌داده‌ها به جدول فوق مراجعه کرده و بر اساس نام و کلید یافته شده به آدرس حقیقی و مکان نام-کارمند در داخل جدول کارمند مراجعه خواهد کرد. طبیعی است که مراجعه به جدول فوق برای یافتن آدرس آن فرد سریع‌تر از پویش جدول و سطور است و دست‌یابی به اطلاعات سریع‌تر خواهد بود.معایب فهرست درهم‌سازی در چیست؟عیبی که برای جدول هش عنوان می‌کنند، مرتب نبودن اطلاعات در این روش است و همچنین تعداد زیادی از پرس‌وجو های مورد استفاده برای استفاده در پایگاه‌های داده وجود دارند که جداول هش کمکی در بهبود اجرای آنان ندارند. به عنوان نمونه، قصد دارید با استفاده از یک پرس‌وجوی ساده اس‌کیوال که اکثرا آن آشنایی دارید؛ به دنبال افرادی در کارمندان بگردید که سن آنان از ۴۰ سال کمتر باشد. در نظر بگیرید در جدول  فیلدی با نام سن-کارمند (Employee Age) نیز وجود دارد. آیا خواهید توانست این پرس‌وجو را با استفاده از روش جدول هش انجام دهید؟ خوب، این کار ممکن نیست؛ زیرا جدول هش در مواقعی کاربرد خوبی از خود نشان خواهد داد که بخواهید به دنبال موارد کاملا مشخصی چون همانند رشته یا رقم خاصی باشید مثلا عنوانی آیا مساوی با عبارت خاصی است یا آیا شباهت به آن عبارت دارد. (مشابه این عبارت بعد از کوئری انتخاب مشابه زیر)WHERE name = ‘Jesus&#039;این موضوع به این دلیل رخ می‌دهد که چیزی که در داخل کلید جدول هش عنوان شده‌است برای دسترسی به آن داده است و علاوه بر آن هیچ گونه نظم و ترتیب خاصی در چینش آنان در داخل فهرست جدول هش وجود ندارد. بنابراین اگر بخواهید بر اساس ترتیب فیلد سن-کارمند در جدول هش به دنبال کارمندان زیر ۴۰ سال باشید، به دلیل آن که ترتیبی در فهرست جدول هش وجود ندارد. نمی‌توانید بگوید این افراد را به صورت سریع برایتان بیابد؛ همین دلیل است که باعث شده که جدول هش به عنوان یک داده‌ساختار پیش‌فرض برای فهرست‌گذاری در سامانه‌های مدیریت پایگاه‌داده‌ها استفاده نشود. به طور کلی جداول هش کارایی و انعطافی که داده‌ساختار درخت بی ارائه می‌کند را نداشته و به خوبی آن نیست. یکی از مشکلات جدول هش تصادم است. در مثال قبل اگر کلید ویژه دو نام متفاوت از ده‌هزار نام اولیه‌مان یکی می‌شد باید کدام را در خانه مربوطه آرایه ذخیره می‌کردیم؟ به این اتفاق تصادم گفته می‌شود.فهرست چگونه کارایی را افزایش می‌دهد؟به این دلیل که فهرست اساسا یک ساختمان‌داده‌ها برای ذخیره مقادیر ستون‌های جدول است. جست‌وجو در این مقادیر بسیار سریع‌تر خواهد بود. همچنین اگر فهرست از داده‌ساختار درخت بی که یکی از داده‌ساختار معروف است استفاده کند، اطلاعات و مقادیر داخل جدول نیز به صورت مرتب شده خواهند بود که مزایای خاص خود را دارد. وجود اطلاعات در یک جدول به صورت مرتب‌شده مزایایی را به همراه دارد که  همان‌طور که در قسمت معایب جدول هش ذکر شد. برای بهبود کارایی و عملکرد پایگاه‌داده‌ها در جستجو و … تاثیر زیادی دارد.حال بیایید تصور کنیم که در پایگاه‌داده‌ها خود یک فهرست با ساختمان‌داده‌ها درخت بی برای ستون نام-کارمند (Employee_Name) ساخته‌ایم. این به این معنی خواهد بود که اگر به دنبال کارمندی با نام عیسی «Jesus» گشتیم؛ این کار را توسط کوئری اس‌کیوال ساده‌ای که در اوایل مقاله نوشتیم انجام خواهیم داد. در این زمان برای جست‌وجو نیازی به پویش و جستجوی کل مقادیر برای یافتن نام کارمند مورد نظر «Jesus» نیست و در عوض پایگاه‌داده‌ها از فهرست برای یافتن کارمندی با نام عیسی «Jesus» استفاده خواهد کرد. به دلیل این که فهرست بر اساس حروف الفبا مرتب خواهد شد؛ جست‌وجو به دنبال فردی با نام عیسی بسیار سریع خواهد بود. فهرست فوق بر اساس حروف الفبا مرتب است و اگر به دنبال نام فردی مثلا عیسی «Jesus» بگردیم؛ این نام با حرف جی لاتین «J» آغاز شده است. در این زمان است که فهرست مرتب شده به کار می‌آید و به جای این که پایگاه‌داده‌ها در تمامی جدول به دنبال آن فرد باشد؛ تنها در آن افرادی جست‌وجو را انجام خواهد داد که حرف اول آنان جی «J» است. همچنین در داخل جداول اشاره‌گری را نیز  در سطرهای جدول ذخیره می‌کند که باعث می‌شود بتوان مقادیر دیگر ستون‌ها را نیز بازیابی کرد.به این صورت ذخیره کلیه مقادیر یک جدول به شکل مرتب‌شده در فهرست نیز کار عقل‌مدارانه‌ای نیست و همانند کپی و گرفتن پشتیبان از یک جدول است که باعث هدر رفتن فضای ذخیره‌سازی و بزرگی بدون دلیلی پایگاه‌داده‌ها خواهد بود که برای مقادیر خیلی بزرگ بسیار غیربهینه و غیرمنطقی است. بنابراین همواره در فهرست ستونی که بیشتر به آن نیازداریم را قرار می‌دهیم. به عنوان نمونه برای سامانه اینترنتی یک بانک و پایگاه داده حساب‌های کارتهای اعتباری در آن سامانه، شماره کارت را در فهرست نگاه می‌داریم.دقیقا چه چیزی در  فهرست یک پایگاه‌داده‌ها وجود دارد؟حال شما می‌دانید که فهرست پایگاه‌داده‌ها بر یک ستون از یک جدول ساخته می شود و در این فهرست مقادیر آن ستون خاص قرار گرفته‌است. اما این موضوع نیز مهم است که درک کنیم که فهرست مذکور به هیچ وجه اطلاعاتی که در دیگر ستون‌ها در آن جدول وجود دارد را نیز در خود نگاه نمی‌دارد. برای مثال اگر ما یک فهرست از نام-کارمندان (Employee_Name) ایجاد کنیم به این معنی است که سن-کارمند (Employee_Age ) و آدرس-کارمند (Employee_Address) مه ستون‌های دیگر جدول کارمند هستند؛ در داخل فهرست پایگاه‌داده‌ها مذکور قرار ندارند.یک اشاره‌گر نیز توسط فهرست در سطور جدول ساخته می‌شود. بنابراین سوال این است که مقداری که در جست‌وجوی آن هستیم در یک فهرست (مانند عیسی «Jesus»)  پیدا شود؛ مابقی فیلدهایی را که مرتبط با این فیلد یافت شده‌است را چگونه باید پیدا کنیم یا به آنان دست‌یابیم (فیلدهای دیگر مانند اطلاعات اطلاعات عیسی یا سن او)؟ خوب، موضوع کاملا ساده است؛ فهرست پایگاه‌های داده علاوه بر اطلاعات فیلد مورد نظر، از اشاره‌گرهایی را نیز در داخل فیلدهای مرتبط با این سطر نیز ذخیره کرده است. یک اشاره‌گر در واقع یک ارجاع است به مکانی از حافظه است که اطلاعات در دیسک ذخیره شده‌اند. پس علاوه بر مقادیر ستون که در فهرست ذخیره شده است؛ اشاره‌گری به آن سطر از جدول که آن ستون قرار دارد نیز وجد دارد که هرگاه مقداری را در فهرست یافتیم؛ به سطر مورد نظر نیز دسترسی خواهیم داشت. به عنوان نمونه در مثال مذکور و در کنار مقادیر گوناگون هر ستون مثلا کنار نام-کارمند در فهرست اشاره‌گری نیز به سطر مورد نظر قرار دارد. (“Jesus”, 0x82829) که در این مثال عبارت «0x82829» به به آن سطر و مکانی از حافظه که کارمند فوق در آن ذخیره شده است اشاره دارد. بدون این اشاره‌گرها شما فقط یک مشخصه را خواهید داشت که اگر بخواهید به مشخصات مرتبط با آن مشخصه دسترسی داشته باشی؛ با مشکل مواجه خواهید شد. مخصوصا این که اطلاعات فوق بر اساس ترتیب دیگری از جدول اصلی مرتب شده‌اند.چگونه یک پایگاه‌داده‌ها میفهمید که چه زمانی از یک فهرست استفاده کند؟زمانی که شما کوئری زیر را اجرا کنید؛ پایگاه‌داده‌ها بررسی می‌کند که آیا برای ستون مورد نیاز فهرستی پرس‌وجو شده‌است یا خیر. با فرض اینکه برای ستون نام-کارمند (Employee_Name) دارای یک فهرست باشد؛ پایگاه‌داده‌ها بررسی خواهد کرد که آیا استفاده از فهرست برای این پرس‌وجو مناسب باشد. در صورتی که پایگاه‌داده‌ها تصمیم‌گرفت که باید از فهرست استفاده شود، آنگاه فهرست مورد استفاده قرار خواهد گرفت. به‌خاطر این که در برخی حالت ممکن است که استفاده از فهرست معنی خاصی نداشته باشد و بهتر باشد از فهرست استفاده نکرد.آیا می‌توان پایگاه‌داده‌ها را مجبور کرد در هر پرس‌وجو از فهرست استفاده کند؟به طور کلی، شما نمی‌توانید به پایگاه داده بگویید که در چه زمان‌هایی از فهرست استفاده کند. این تصمیمات توسط خود پایگاه‌داده‌ها اتخاذ می‌شوند. اگر چه شایان ذکر است که در بسیاری از پایگاه‌داده‌ها (مانند اوراکل و MySQL)  شما قادر خواهید بود که دقیقا مشخص کنید که پایگاه‌داده‌ها از فهرست استفاده کند.روش ساخت فهرست توسط اس‌کیوال چگونه است؟ساخت یک فهرست با استفاده از یک ستون؛ در زیر پرس‌وجوی «کوئری» اس‌کیوال را می‌بینید که برای ساخت یک فهرست برای ستونی با نام-کارمند (Employee_Name) در جدول کارمند است.CREATE INDEX name_index ON Employee (Employee_Name)ساخت یک فهرست با استفاده از چند ستون: اگر بخواهید دو یا چند ستون را در یک فهرست داشته‌باشد؛ باید پرس‌وجو «کوئری» زیر را اجرا کنید تا فهرست را اجرا نمایید. در مثال زیر ما از دو ستون استفاده کرده‌ایم؛ یکی ستون نام-کارمند (Employee_Name) و ستون دیگر سن-کارمند (Employee_Age) هستند.CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age)مثالی خوب برای برای فهم بیشتر مفهوم  فهرست پایگاه‌داده‌ها؛ اگر بخواهیم قیاس خوبی برای تعریف فهرست در یک بانک‌اطلاعاتی عنوان کنیم، باید از فهرست در یک کتاب نام برد. فهرست‌ها در کتاب‌ها معمولا در اول کتاب آمده و از عناوینی که در کتاب وجود دارد به همراه شماره صفحه تشکیل شده‌است. در برخی کتب انگلیسی و حتی برخی کتب فارسی، فهرست مطالب در آخر کتاب قرار دارد. مثلا اگر شما کتابی را در مورد حیوانات مثلا سگ خریداری کنید؛ در این کتاب اطلاعات مختلف صفحات زیادی وجود دارد که به بخش و فصل‌های مختلف تقسیم شده‌اند. هر فصل و بخش نیز خود دارای عناوین مختلفی هستند که برای پیدا کردن آنان به فهرست مطالب رجوع می‌کنید. مثلا اگر به دنبال مطلبی درباره انواع نژاد سگ‌های شکاری باشید باید به فهرست مراجعه کرده و با مشاهده عنوان مرتبط با موضوع، به صفحه نوشته شده در برابر عنوان مراجعه و آن بخش را مطالعه کنید؛ این کار باعث صرفه‌جویی در وقت و افزایش سرعت دسترسی به مطلب خواهد بود. اگر کتاب دارای فهرست نبود؛ شما مجبور بودید تا تمامی مطالب کتاب را از اول پویش کنید تا به عنوان دلخواه دست‌یابید. در این زمان بهترین حالت برای پیدا کردن عنوان این بود که عنوان در اوایل کتاب باشد و بدترین حالت نیز زمانی است که عنوان در اواخر کتاب باشد.فهرست در پایگاه‌داده‌ها نیز همین‌طور است و با استفاده از فهرست‌ها شما به مقادیر و ستون دلخواه خواهید رفت؛ بدون آن که وقت زیادی را صرف پویش کلیه اطلاعات نماید تا اطلاعات خود را پیدا کنید. فهرست در پایگاه‌داده‌ها تقریبا چنین کاری را انجام می‌دهد که فهرست کتاب انجام می‌دهد.استفاده از فهرست چه مقدار هزینه دارد؟خوب، همانند هر روش دیگری در دنیای واقعی، فهرست در پایگاه‌داده‌ها نیز معایب و مزایای خاص خود را دارد. یکی از معایب استفاده از فهرست همان‌طور که شاید تا الان پی برده باشید، لزوم استفاده از فضای بیشتر برای نگاهداری مقادیر در فهرست است که ممکن است فضای بیشتری برای پایگاه‌داده‌ها نیاز باشد. نکته دیگری هم که برای فهرست در پایگاه‌داده‌ها می‌تواند باعث کاهش کارایی شود؛ این است که در هر زمان که شما نیاز به درج، حذف و ویرایش اطلاعات در پایگاه اینترنتی یا جدول خاصی که دارای فهرست است را داشته باشید تغییراتی که در اطلاعات اعمال می‌شود باید در فهرست نیز اعمال شود؛ فراموش نکنید که اطلاعاتی که در فهرست ذخیره می‌شد با اطلاعات واقع در ستون مورد نظر برای فهرست باید مطابقت داشته باشند و در هر بار تغییر، تغییرات باید همگام شوند. بنا به قاعده‌ای کلی، هر فهرست می‌تواند فقط در زمانی که نیاز به پرس‌وجو داشتیم ایجاد شود.</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Mon, 30 Nov 2020 09:19:01 +0330</pubDate>
            </item>
                    <item>
                <title>خواص ACID در مقابل BASE</title>
                <link>https://virgool.io/SoftwareEngineering/%D8%AE%D9%88%D8%A7%D8%B5-acid-%D8%AF%D8%B1-%D9%85%D9%82%D8%A7%D8%A8%D9%84-base-owxcd2ascmyi</link>
                <description>مطلب زیر تماما از نشریه اینترنتی سلام دنیا بازنشر میشود.در علم شیمی pH یک کمیت برای مشخص کردن نسبت اسیدی یا بازی بودن یک محلول در آب است. تغییرات pH در بازه ۰ تا ۱۴ قرار دارد و محلول بشدت اسیدی مانند اسید باطری عدد ۰ و محلول بشدت بازی مثل lie عدد ۱۴ را کسب می‌کند. این در حالی است که آب در دمای ۲۵ درجه سلسیوس دارای pH ۷ است و این حالت را خنثی می‌نامند.مهندسین داده با هوشمندی این استعاره را از شیمی‌دان‌ها وام گرفتند و آن را به یک اختصار تبدیل کرده‌اند. البته شاید معنی واقعی خود را نداشته باشد، اما زمانی که بحث درباره قابلیت اطمینان پردازش کردن تراکنش است همچنان نشان‌دهنده رویداد‌های مربوط به  یک سیستم  پایگاده داده است.  برای گسترش دادن بیشتر این استعاره مفید اجازه بدهید اول نگاهی به ایده pH بکنیم.اولین بار «سورنسن» در حالی که در آزمایشگاه کارلسبرگ در ۱۹۹۰ در حال کار بود، این مفهموم  را توسعه داد. بنابراین ایده مربوط به زمان حاظر نیست. در اینجا حرف «H» به اتم‌های هیدروژن اشاره دارد و در مورد حرف «p» بحث و اختلاف فراوانی وجود دارد. برخی آن را از واژه فرانسوی «puissance»، برخی آن را از واژه آلمانی «potenz» و برخی دیگر آن را از واژه لاتین «pondus» یا «potentia» می‌دانند. اما هرچه باشد همه این‌ها به معنی پتانسیل یا توان (power) است. بنابراین pH به معنای قدرت، پتانسیل یا فعالیت اتم‌های هیدروژن در محلول است. محلول‌های اسیدی فعالیت بیشتری دارند و محلول‌های قلیایی کمتر فعالند.در پردازش کردن تراکنش‌ پایگاه‌داده‌ها، داده‌ها اتم هیدروژن هستند که در سیستم جریان دارند و حرف «p» ویژگی‌هایی است که پردازش شدن این تراکنش‌ها را باداشتن قابلیت اطمینان تضمین می کند.خواص ACID چیست؟اگر از هر کسی که در حوزه داده‌ها حرفه‌ای است این سوال را کنید، احتمالا به خوبی می‌تواند ACID (Atomicity, Consistency, Isolation, و Durability) را شرح دهد.  مفهموم ACID برای سالیان وجود داشته است و تا همین اواخر نیز یک معیار اصلی بود که همه پایگاه‌های داده در تلاش برای کسب کردن آن بودند.  آگر پایگاه‌داده‌ای ACID را نمی‌داشت، قابلیت اطمینان آن زیر سوال می‌رفت.جیم گری اولین بار در سال ۱۹۷۰ این ایده را به تصویر کشید و پس از آن مقاله بدیع «مفهمو تراکنش: خواص و محدودیت‌ها» را در ژوئن ۱۹۸۱ منتشر کرد. در این مقاله تنها اصطلاحات تمامیت (یا همه یا هیچ)، یکپارچگی و پایائی مورد بحث قرار گرفته بودند و پس از آن بود که اصطلاح انزوا نیز اضافه شد.در آن مقاله بر روی سطح تراکنش تمرکز شده بود و تراکنش را به عنوان قرارداد یا هر تعداد از «تراکنش‌های حالت سیستم» که مجبور به داشتن CAD به عنوان خواص ذاتی یا «محدودیت‌های قابلیت اطمینان سیستم» بودند، مشخص کرده بود.«بروس لیندی» و همکاران مقاله «یادداشت‌هایی بر پایگاه داده‌های توزیعی» را در ۱۹۷۹ منتشر کردند که بر روی کار‌ «گری» ایجاد شده بود. او اصول را برای دستیابی به قابلیت اطمینان و استاندار‌های اولیه تکرار پایگاه داده ایجاد کرد. در سال ۱۹۸۳ «آندریاس روتر» و «تئو هاردر» مقاله «مفاهیم بازیابی پایگاه‌داده‌های تراکنش‌گرا» را منتشر کرد و به طور رسمی اصطلاح  ACID را به کار برد. این اصطلاح دو دهه بعد به صورت زیر معنی شد:تمامیت: هیچ وظیفه (یا همه وظایف) درون یک تراکنش اجرا نمی‌شوند مگر اینکه همه آنها انجام شوند. این اصل «همه یا هیچکس» است، اگر یکی از اجزای تراکنش با شکست روبرو شد همه تراکنش‌ها با شکست روبرو می‌شود.قابلیت اطمینان: تراکنش باید تمام پروتکل‌ها یا قوانین تعریف شده توسط سیستم در تمام زمان‌ها را تامین کند. تراکنش نباید آن پروتکل‌ها را نقض کند و پایگاه‌داده‌ها باید در یک حالت پایدار در آغاز و پایان تراکنش بمانید. هرگز هیچ گونه تراکنش نیمه انجام شده‌ای وجود نداردانزوا: هیچ تراکنشی به تراکنش دیگر که در یک حالت میانی و ناتمام است دسترسی ندارد. بنابراین هر تراکنش به خودی خود مستقل است. این موضوع برای کارایی و انزوای تراکنش‌ها در یک پایگاه‌داده‌ها نیاز است.پایائی: زمانی که یک تراکنش کامل شد، در حالت انجام شده باقی می‌ماند و امکان بازگشت آن وجود ندارد. این تراکنش از شکست سیستم، قطع شدن برق و انواع دیگر از کارافتادگی سیستم مصون خواهد بود.جنبه‌های بسیار دیگری برای این تعاریف وجود دارد و تامین نیازمندی‌های واقعی ACID مختص به هر پایگاه‌داده‌ها خاص است. اما در کل در دنیای RDMS همه چیز ACID است و بدون ACID قابلیت پایداری زیر سوال می‌رود.عدد pH مربوط به ACID پایین است، تقریبا چیزی شبیه به اسید باطری (۰) و یا شاید سرکه (۲)، در این حالت داده و محدودیت‌های آن بسیار فعال هستند. بنابراین در هر میکروثانیه از یک پایگاه‌داده‌ها که از ACID به عنوان سیستم محدودیت استفاده می‌کند، همه داده‌ها (اتم‌های هیدروژن) تحت بررسی ثابت هستند تا از این برآورده شدن محدودیت‌ها اطمینان حاصل کنند. چنین محدودیت‌هایی برای سالیان در دنیای رابطه‌ای،‌نرمال، طرح واره محور، مقیاس پذیر افقی و کوچک پیش از شبکه‌های اجتماعی به خوبی کار می‌کرد.این بدیهیات گذشته دیگر مطرح نیستند و اکنون داده بدون ساختار، بزرگ‌داده، ساختار‌های داده غیر رابطه‌ای، سیستم‌های محاسباتی توزیع شده و قابلیت اطمینان نهان اکنون متداول شده‌اند. این نیازمندی‌های جدید به کلمات اختصاری جدید و pH جدید نیاز دارد.قضیه CAP:در سال ۲۰۰۰ «اریک بروور» (Eric Brewer) سخنرانی خود را در همایش ACM که در مورد مفاهیم محاسبات توزیع شده بود ارائه داد و آنجا بود که قضیه CAP متداول شد.اکثر مردم در جهان خارج هیچ‌گاه حتی اسم این قضیه را نشنیده‌اند و اهمیتی هم برایشان ندارد. آن‌ها فقط می‌خواهند رایانه‌شان کار کند، اینترنت کار کند، شبکه‌های اجتماعی کار کنند و البته همه این‌ها  با در دسترس بودن قابلیت اطمینان فایل‌هایشان.قضیه CAP، که با نام قضیه بروور هم شناخته می‌شود، بعد‌ها تجدید نظر شد و از طریق کار «شیت گیلبرت» و «نانسی لیچ» از MIT در سال ۲۰۰۲  تغییر کرد.اصل اساسی قضیه می‌گوید که سه نیازمندی اساسی در سیستم وجود دارد که این اصول برای یک طراحی، پیاده‌سازی و استقرار موفق برنامه‌ها در سیستم‌های محاسباتی توزیع شده ضروری هستند. این نیازمندی‌ها قابلیت اطمینان، دسترس‌پذیری و تحمل قسمت‌بندی است، که به اختصار CAP نامیده می‌شود.قابلیت اطمینان به این مساله اشاره می‌کند که آیا یک سیستم کاملا عمل می‌کند یا نه؟ آیا قابلت اعتماد سیستم از قوانین مشخص شده در برنامه‌نویسی‌اش با توجه به این مقررات تعریف شده پیروی می‌کند؟ آیا همه گره‌ها در یک خوشه، همه داده‌های مفروض برایشان را می‌بینند؟ این همان ایده معرفی شده در ACID است.دسترس‌پذیری به معنای همان چیزی است که انتظارش می‌رود. آیا سیستم یا سرویس داده شده زمانی که درخواستی به آن ارسال می‌شود، حاضر است؟ آیا هر درخواست پاسخی خارج از شکست یا موفقیت را دریافت می‌کند؟تحمل قسمت‌بندی، نشان‌دهنده این حقیقت است که یک سیستم داده شده، در شرایط از دست رفتن اطلاعات یا خرابی سیستم به عمل کردن ادامه می‌دهد. شکست یک گره نباید باعث سقوط کل سیستم شود.این‌ها تنها تعاریف ساده‌ای از سه جنبه قضیه CAP بودند. مقالات فراوانی در این باره وجود دارد که بسیاری از تفاسیر، تحلیل‌ها و مشکلات پیچیده موجود در کاربرد‌های دنیای واقعی این قضیه را بحث کرده‌اند. دلیل اصلی معرفی قضیه این نکته است که در اکثر نمونه‌ها و سیستم‌های توزیع شده تنها می‌توانند دو ویژگی از این ویژگی‌ها را تضمین کند. در اینجا چشم‌پوشی می‌تواند نتایج فاجعه باری داشته باشد که شامل احتمال شکست خوردن تمام سه عامل به صورت همزمان و جداگانه است.محدودیت‌های قضیه CAP با قابلیت اطمینان پایگاه‌داده‌ها برای سیستم‌های بزرگ مقیاس، توزیع‌شده، غیررابطه‌ای همچنان پابرجا است. بیشتر اوقات آن‌ها به دسترس‌پذیری و تحمل قسمت‌بندی نیاز دارند. بنابراین قابلیت اطمینان فدا می‌شود و ACID سقوط می‌کند. یک عبارت مناسب اینجا این است که «برای تپه‌ها بران» (هرچه می‌توانی برو، سریع برو)خواص BASE خودش را معرفی می‌کندخوشبختانه در دنیای سیستم‌های محاسباتی توزیع شده، مهندسین باهوش وجود دارند. چگونه سیستم‌های گسترده جهانی مانند بیگ‌تیبل گوگل (Google’s BigTable)، آمازون دینامو و کاساندرای فیسبوک با از دست دادن قابلیت اطمینان سر و کله می‌زنند و قابلیت اطمینان سیستم را نیز حفظ می‌کنند؟پاسخ این سوال در حالی که قطعا ساده نیست، اما جواب BASE (Basically Available, Soft state, Eventual consistency) است.در یک سیستم در حالی که BASE نیازمندی اصلی برای قابلیت اطمینان است، فعالیت یا پتانسل (p) از تغییرات داده (H) اساسا آرام کردن آن است. در مقیاس گذاری pH، یک BASE نردیک‌تر به آب صابونی است (۱۲) یا شاید نمک دریاچه بزرگ (۱۰).ادعای چنین اظهار نظری این نیست که میلیون‌ها تراکنش به سرعت رخ نمی‌دهند، بلکه رخ می‌دهند و تنها محدودیت‌های اعمال شده بر آن‌ها تغییر کرده است. آن محدودیت‌ها در زمان‌های متفاوت با قوانین متفاوت رخ می‌دهند.اساسا در دسترس: این محدودیت بیان می‌کند که این سیستم آماده بودن داده‌ها را با توجه به قضیه CAP تضمین می‌کند و یک پاسخ به هر درخواستی وجود دارد. اما این پاسخ می‌تواند «شکست» برای داده درخواست شده باشد، و یا ممکن است این داده‌ها در یک وضعیت نامناسب یا در حال تغییر باشد. این مساله مشابه اتفاقاتی است که برای پاس شدن یک چک ممکن است اتفاق بیفتد.حالت نرم: حالت سیستم می‌تواند در طول زمان تغییر کند. حتی در طول زمانی که هیچ ورودی وجود ندارد ممکن است تغییرات برای رسیدن به «قابلیت اطمینان نهایی» انجام شود. بنابراین این حالت از سیستم همیشه «نرم» است.قابلیت اطمینان نهایی: سیستم در نهایت قابلیت اطمینان خواهد شد، پس از آن که دریافت ورودی به پایان برسد. دیر یا زود داده به همه‌جا گسترش پیدا می‌کند، اما سیستم به دریافت ورودی ادامه می‌دهد و قابلیت اطمینان هر تراکنش را پیش از آغاز تراکنش بعدی بررسی می‌کند. جزئیات کامل این موضوع در مقاله «قابلیت اطمینان نهایی- بازبینی شده» آمده است.نتیجه‌گیری: حرکت به جلومیزان pH جدید پردازش کردن تراکنش پایگاه‌داده‌ها، امکان مقیاس‌گذاری عمومی را با سطوح مقرون به صرفه کارآمد می‌کند. بررسی قابلیت اطمینان هر تراکنش منفرد در هر لحظه از هر تغییر هزینه‌ عظیمی را به یک سیستم که دارای ترلیون‌ها تراکنش است اضافه می‌کند. نیازمندی‌های محاسباتی حتی بیشتر نجومی هستند.«قابلیت اطمینان نهایی» این امکان را به سازمان‌هایی چون یاهو!، گوگل، توییتر، آمازون و صدها یا میلیون‌ها سازمان دیگر می‌دهد تا با کاربرانشان در سراسر جهان تعامل داشته باشند، در حالی که هزینه‌های خود را پایین نگه می‌دارند، سیستم‌هایشان کار می‌کند و کاربرانشان خوشحال هستند. علاوه بر این‌ها خواهان داشتن قابلیت اطمینان کامل همیشگی هستند. اما همان طور که «دن پری‌چت» در مقاله «BASE یک جایگزین برای ACID» بیان کرده است، باید توازنی وجود داشته باشد و قابلیت اطمینان نهایی برای توسعه موثر سیستم‌ها با وجود افزایش نمایی داده حاصل از، شبکه‌های اجتماعی، محاسبات ابری و سایر پروژه‌های بزرگ داده وجود داشته باشند.</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Sun, 29 Nov 2020 13:38:27 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با مدل‌های مدیریت داده‌ها و سیستم های مدیریت بانک های اطلاعاتی</title>
                <link>https://virgool.io/SoftwareEngineering/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%85%D8%AF%D9%84%D9%87%D8%A7%DB%8C-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%AF%D8%A7%D8%AF%D9%87%D9%87%D8%A7-%D9%88-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%A8%D8%A7%D9%86%DA%A9-%D9%87%D8%A7%DB%8C-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-xnvddbfzjebx</link>
                <description>مطلب زیر تماما به نقل از سلام دنیا بازنشر میشود.در دهه‌های گذشته، ذخیره‌سازی موثر داده‌ها و بدون تناقض آن‌ها جنبه مهم مدیریت داده‌ها بوده است. امروزه مساله ذخیره‌سازی داده‌ها سهم کمتری در میان مساله مدیریت داده‌ها دارد. مدیریت داده‌ها و استفاده از آن‌ها حتی نسبت به ده سال قبل، شکل دیگری به خود گرفته است. شبکه‌های اجتماعی، سیستم‌های امنیتی و هوشمند، میزبان‌های رسانه (Media Servers)، دوربین‌های مدار بسته، سیستم‌های مدیریت نقشه‌ها، شبکه‌های سنسوری و… هر یک به نوعی خاص نیازمند استفاده و مدیریت داده‌ها هستند. به عبارتی هر جنبه کیفی استفاده از داده‌ها مانند امنیت و سرعت دسترسی، امکان تغییر و توسعه داده‌ها به شکل‌های گوناگون و… باعث شدند مدل‌های ذخیره‌سازی متفاوتی برای داده‌ها به وجود آید. علاوه بر این موارد، حجم عظیم داده‌های مبادله شده باعث ایجاد مساله‌ای تازه به نام داده‌های بزرگ (BigData) شده است. بنابراین حوزه‌ی مطالعاتی در زمینه‌ی داده‌ها بسیار وسیع است. در این بخش سعی شده که به معرفی اجمالی از چند مدل ذخیره‌سازی داده‌ها و سیستم‌های مدیریت مربوط به آن مدل‌ها پرداخته شود. از آنجا که مدل داده‌ای یک پایگاه‌داده‌ها، رابطه مستقیمی با سیستم مدیریت آن پایگاه داده دارد (البته به جز نوع بدون قالب آن)، در این نوشته گاهی اوقات از واژه «مدل» و «پایگاه‌داده‌ها» به جای «سیستم مدیریت پایگاه‌داده‌ها» استفاده شده است. هرچند که هر کدام مفاهیمی جدا هستند.سیستم‌های مدیریت پایگاه‌های داده رابطه‌ای (RDBMS):این مدل را می‌توان جزو پرکاربردترین و شناخته شده‌ترین مدل مدیریت داده‌ها و نیز بالغ‌ترین مدل بین سایر مدل‌ها دانست. شالوده مدل رابطه‌ای، منطق رابطه‌ای است. این منطق توسط ادگار کاد (Edgar Codd)، دانشمند علوم رایانه در سال ۱۹۷۰ معرفی شده و در واقع تفسیر دیگری از نظریه مجموعه‌ها و جبر رابطه‌ای است. هر قلم داده (Data Entity) در مدل رابطه‌ای، معادل یک سطر از جدول است که با یک کلید از سایر سطرهای آن جدول متمایز می‌شود. منطق رابطه‌ای در واقع یک جبر بسته است. به این ترتیب که همه چیز، اعم از جداول و سطرهای جدول، یک رابطه است و حاصل عملگرهای جبری بر روی رابطه‌ها، باز هم یک رابطه است. به خاطر این شالوده‌ قدرتمند، مدل رابطه‌ای توانست جایگزین مدل‌های ناکارآمدی چون مدل سلسله مراتبی و مدل شبکه‌ای شود که پیمایش بین داده‌ها از طریق اشاره‌گرها و زیرروال‌های پیمایشگر صورت می‌گرفت؛ بر خلاف مدل رابطه‌ای که هر سطر به طور منظم و مستقل در جایگاه خود قرار دارد و یافتن آن‌ها نیازمند اشاره‌گرهای نسبی و فراخوانی زیرروال‌های پیمایشگر نیست. بسته بودن منطق رابطه‌ای، باعث به کارگیری پرس‌وجوها (query) به طور تو در تو و به طور موثر می‌شود. در این مدل، عملگرهای رابطه‌ای مانند join، باعث اتصال جدول‌ها با یکدیگر و استفاده‌ی موثر از داده‌ها می‌شود. زبان دستکاری و به کار گیری داده‌ها (DML) در این مدل، معمولا زبان SQL است که یک زبان سطح بالا و اخباری (declarative) است. از آنجا که روند تدریجی توسعه سیستم‌های نرم‌افزاری می‌تواند باعث تغییرات آتی در ساختار پایگاه‌داده‌ها شود، طراحی درست یک پایگاه‌داده‌ها، مساله‌ای ضروری و مهم است. این موضوع در مدل ذخیره‌سازی رابطه‌ای، تا حدودی مساله‌ای چالشی است. گرچه معرفی سطوح نرمال‌سازی و روش‌های نرمال‌سازی پایگاه‌های داده، گام‌های مورد نیاز را برای این امر فراهم می‌آورند، اما طراحی درست و نرمال یک پایگاه‌داده‌های رابطه‌ای خبرگی و مهارت خاص خود را می‌طلبد.?هر دستور یا مجموعه دستورات وابسته به هم که از طریق کاربران به پایگاه‌داده‌های ارسال می‌شود، تحت پوشش یک تراکنش اجرا می‌شود. مدیریت تراکنش‌ها در این نوع شیوه ذخیره‌سازی، مساله‌ای جدای از خود مدل ذخیره‌سازی است؛ به عبارتی سیستم‌های مدیریت پایگاه‌های داده رابطه‌ای (RDBMS) به طور معمول موظفند در زمان اجرای تراکنش‌ها، خواص ACID را به نوعی رعایت و پیاده‌سازی کنند. بدین منظور هر یک از این سیستم‌ها شیوه و سیاست خاص خود را برای مدیریت تراکنش‌ها و پیاده‌سازی خواص ACID عرضه کرده‌اند. سیستم‌هایی مانند MySQL از شیوه قفل‌گذاری در سطح سطرهای جدول به این هدف می‌رسند. اما در سیستمی مثل PostgreSQL، این امکان توسط چند نسخه‌سازی صورت می‌گیرد.مدل رابطه‌ای دارای محدودیت‌های خاص خود است. کاربر نمی‌تواند به طور معمول و موثر، هر نوع ساختار داده دل‌خواه خود را در یک جدول پایگاه‌داده‌های رابطه‌ای ذخیره کند. به علاوه این که هر RDBMS برای خود مجموعه نوع داده (Data Type)های خود را ارائه کرده است که جدای از ناهمخوانی با یکدیگر، محدود هستند.با معرفی منطق برنامه‌نویسی شئ‌گرا و زبان‌های مرتبط با آن و همه‌گیر شدن استفاده از این منطق در طراحی سیستم‌های نرم‌افزاری، این مشکل بیشتر خود را نمایش داد و یک شکاف بین منطق رابطه‌ای و منطق شیئ‌گرا حس شد. برنامه‌نویسان گاهی مجبور بودند همان‌طور که اشیاء داده را در برنامه‌شان استفاده می‌کردند، آن‌ها را در پایگاه‌های داده ذخیره و استفاده‌ی مجدد کنند و به این ترتیب زمان و هزینه توسعه را کاهش دهند. در ادامه با مدل‌هایی که سعی کردند این شکاف را برطرف کنند آشنا می‌شوید.سیستم‌های مدیریت پایگاه‌های داده شیئ گرا (OODBMS):اواخر دهه ۸۰ میلادی را می‌توان زمان ظهور پایگاه‌های داده‌ی شئ‌گرا دانست که در واقع پاسخی به نیازمندی‌های برنامه‌های CAD بود که با اشیاء داده‌ی پیچیده و تودرتو سروکار دارند. مساله اینجاست که برنامه‌ی CAD یک برنامه‌ی روالی (procedural) است که در هر لحظه یک ورودی می‌گیرد و یک خروجی پیچیده تولید می‌کند، اما این با ساختار رابطه‌ای در تضاد است و پیاده‌سازی آن در منطق رابطه‌ای مستلزم اجرای دستورات join متعدد و پرس و جو (query)های طولانی، آن هم برای گرفتن تنها یک سطر خروجی است.سیستم‌های مدیریت پایگاه‌داده‌های شئ‌گرا (OODBMS) برای حل این مشکلات به وجود آمد. خصوصیات این سیستم را می‌توان بطور خلاصه این طور بیان کرد:پشتیبانی از نوع داده کاربر (User Data Type)امکان ذخیره‌سازی اشیاء تودرتوپشتیبانی از لیست اشیاء (مانند مجموعه‌ها، آرایه‌ها، دسته‌ها) و bag (لیستی از لیست‌ها) ، هر کدام به عنوان یک شیئ مستقلپشتیبانی از متد‌های اشیاء (معادل روال‌های ذخیره شده (Stored Procedure) در پایگاه‌داده‌های رابطه‌ای): متدها جزئی از منطق شئ‌گرا هستند. به جای آن که برنامه درگیر اجرای query جهت دریافت اطلاعات اطلاعات از پایگاه‌داده‌های و محاسبات آن و ارسال نتیجه به پایگاه داده شود، یک متد شئ می‌تواند به طور موثر در سمت سرور پایگاه‌داده‌های اجرا شود و تغییرات را در همان جا، روی شئ اعمال کرده و نتیجه را به برنامه برگرداند.و یکی از مهم‌ترین خصوصیات این سیستم، اشتراک در نوع داده در برنامه و پایگاه‌داده‌ها است که باعث اعمال قوانین بررسی قوی نوع (Strong Type Checking) در زمان انتقال داده‌ها بین برنامه و پایگاه‌داده‌ها، به طور موثر می‌شود.ادغام با زبان‌های برنامه‌نویسی: از آنجا که ساختار داده‌ها در پایگاه‌داده‌ها، مانند همان ساختار برنامه کاربر است، ذخیره و بازیابی اطلاعات می‌تواند از طریق دستورات DML درون خود برنامه یا زبان برنامه نویسی صورت بگیرد، به جای آنکه دستورات DML از طریق یک واسطه محدود مانند Connection Stringها یا دستورات خاص، به پایگاه‌داده‌ها، به عنوان یک سیستم جدا ارسال شود.مشکلات سیستم‌های مدیریت پایگاه‌های داده شئ گرا:پیمایش بین داده‌ها از طریق روال‌های جداگانه: در منطق پایگاه داده شیئ‌گرا، اشیاء داده به وسیله‌ی اشاره‌گرها به یکدیگر متصل هستند. این منطق وجود یک زیرروال پیمایشگر را موجب می‌شود که می‌توان آن را یک گام به عقب توصیف کرد.نقض encapsulation: خاصیت encapsulation یکی از پایه‌های مفهوم شیئ‌گرایی است. از آنجا که با اجرای query می‌توان به داده‌های درون یک شئ درون پایگاه‌داده‌ها دست یافت، می‌توان این طور گفت که پایگاه‌داده‌‌ها شئ‌گرا، مفهوم شئ‌گرایی را به طور کامل پشتیبانی نمی‌کنند. گاهی اوقات نقض این encapsulation ضروری است. به عنوان مثال نیازمند داده‌ای از یک شئ داده هستیم که متد آن پیاده‌سازی نشده است و دستیابی به این مقدار، تنها یک بار صورت می‌گیرد. در واقع منطقی نیست که برای دستیابی به این مقدار بخواهیم یک متد جدا درون شئ داده‌ی درون پایگاه‌داده‌ها بنویسیم. بنابراین همواره یک مصالحه بین نقض encapsulation و نوشتن متدهای بیشتر برای اشیاء داده وجود دارد.بسته بودن جبر رابطه‌ای موجود در منطق رابطه‌ای در اینجا وجود ندارد و به کارگیری پرس‌وجو های تودرتو که حاصل این بسته بودن بود، در اینجا از دست می‌رود. به خصوص که در این مدل، اخباری بودن و سطح بالا بودن زبان دسترسی به داده‌ها (DML) تضعیف می‌شود.در نهایت آن استخوان‌بندی و شالوده قدرتمند ریاضی که منطق رابطه‌ای بر آن استوار بود، در منطق پایگاه‌داده‌های شئ‌گرا وجود ندارد و این به معنی از دست رفتن مجموعه‌ای از ابزارهای تحلیل و استنتاج مبتنی بر این منطق است.ایده‌ای که در پشت پیاده‌سازی پایگاه‌داده‌های شئ گرا نهفته بود این بود که برای توسعه‌دهندگان بسیار مفید خواهد بود که نه تنها ذهنشان درگیر پیاده‌سازی پشت رابط اشیاء داده نشود، بلکه حتی درگیر این مساله نباشند که آن شئ چطور در پایگاه‌داده‌ها ذخیره می‌شود.سه اشتباه که تکرار شد:شرکت‌های توسعه‌دهنده و پشتیبان ایده پایگاه‌های داده شئ‌گرا متوجه تکرار اشتباه خود شدند.اولین اشتباه آن‌ها نزدیک کردن بیش از حد طراحی پایگاه‌داده‌ها به طراحی برنامه‌ها بود. آن‌ها دوباره فهمیدند که این نزدیک شدن با معماری چند لایه توسعه نرم‌افزارها که باعث انعطاف در توسعه نرم‌افزارها می‌شود تناقض دارد.آن‌ها همچنین دوباره فهمیدند که استفاده از زبان‌های اخباری مانند SQL-92 چنان بهره‌وری را بالا می‌برد که شرکت‌های توسعه‌دهنده نرم‌افزار ترجیح می‌دهند که به جای درگیری با مفاهیم جدید، هزینه تامین منابع سخت‌افزاری را پرداخت کنند؛ به عبارتی شما همواره می‌توانید سخت‌افزار بخرید، اما زمان را هرگز!آن‌ها همچنین دوباره فهمیدند که استاندارد نبودن یک مدل داده‌ای منجر به خطا در طراحی و بروز ناسازگاری در داده‌ها می‌شود. نگهداری از یک سیستم مدیریت پایگاه‌های داده شئ‌گرا کاری بسیار سخت بود.سیستم مدیریت پایگاه‌های داده شئ-رابطه‌ای (ORDBMS):گرچه تا سال ۹۵ میلادی، بحث شئ‌گرایی در پایگاه‌های داده مساله داغی بود، اما هنوز یک توافق عام بر سر اینکه یک پایگاه‌داده‌های شئ‌گرا باید شامل چه خصوصیاتی باشد، شکل نگرفت! در نهایت همگان بر این موضوع توافق کردند که پشتیبانی کمی شئ‌گرایی در پایگاه‌های داده بسیار مفید است! به عبارتی گرچه پایگاه‌های داده شئ‌گرا نتوانستند موقیت قابل انتظاری را کسب کنند، اما پیشرو در ارائه چند ایده موفق و کاربردی بودند که بعدها در پایگاه‌داده‌های شئ-رابطه‌ای نیز توانستند پیاده‌سازی شوند. همچنین توسعه‌دهندگان سیستم‌های مدیریت پایگاه‌داده‌های رابطه‌ای نیز متوجه وجود کمبود در این سیستم‌ها شدند، سعی کردند به هر طریقی پشتیبانی از اشیاء داده را در سیستم‌های خود و با رعایت انطباق با نسخه‌های قبلی وارد کنند. که در منبع چهارم این نوشته با دشواری‌های زیاد این رویکرد آشنا خواهید شد. نهایتا گرایش به فواید موجود در مدل‌های ORDBMS و OODBMS باعث به وجود آمدن مفهومی با عنوان پایگاه‌های داده شئ-رابطه‌ای (Object-Relational) شد.?در این مفهوم به طور موثری تلاش شده که نه تنها نقات قوت هر دو سیستم پیاده‌سازی شده و نقاط ضعف آن‌ها برچیده شود، بلکه این سیستم بیانگر یک راهکار نوین در زمینه مدیریت داده‌ها محسوب شود. سیستم مدیریت پایگاه‌داده‌های که در این زمینه پیشرو بوده است، PostgreSQL است. PostgreSQL را می‌توان یک سیستم پایگاه‌داده‌های شئ-رابطه‌ای بسیار قدرتمند و انعطاف‌پذیر دانست که علاوه بر معرفی راهکاری در جهت پشتیبانی از اشیاء داده‌ها، استانداردهای روز پایگاه‌داده‌های رابطه‌ای را پیاده‌سازی می‌کند. مشخصات کلی یک سیستم شئ-رابطه‌ای را می‌توان به این صورت بیان کرد:پشتیبانی از داده‌های پیچیدهپشتیبانی از ارث‌بری نوع دادهپشتیبانی از رفتار اشیاءمنظور از رفتار اشیاء همان متدهای تعریف شده درون اشیاء داده است و این رفتار را می‌توان به عنوان حتی یک برنامه‌ی مستقل گسترش داد. نکته جذاب این است که با این دیدگاه می‌توان بخش زیادی از لایه منطق (Business Logic) برنامه را در سمت سرور اجرا کرد، بدون آنکه مانند گذشته، محاسبات در سمت کلاینت صورت بگیرد و تاخیر در انتقال داده‌ها باعث تاخیر در محاسبات گردد. یک سیستم مدیریت پایگاه‌داده‌های شئ-رابطه‌ای مانند یک سکو یا با یک مثال بد، مانند یک سیستم‌عامل عمل می‌کند، به این ترتیب که می‌تواند منابع سیستم را برای این برنامه‌ها و نیز ارتباطات بین برنامه‌ای را کنترل و مدیریت کند. این قدرت و انعطاف‌پذیری، باعث شده است که بسته‌های مختلفی برای این نوع سیستم نوشته شود که نوع داده‌ها و متدهای خود را وارد ORDBMS می‌کنند و کاربر می‌تواند در کنار استفاده‌ای که قبلا از یک DBMS به عنوان یک سیستم رابطه‌ای استاندارد می‌کرد، از این متدها و نوع داده‌های جدید در برنامه خود استفاده نماید.?در این نوع پایگاه‌داده‌های، پشتیبانی از شئ‌گرایی به طور موثری از طریق جداول مسطح صورت می‌پذیرد و پشتیبانی از نوع داده‌هایی مانند کلکسیون‌ها، خللی در مفهوم نرمال بودن پایگاه‌داده‌های از دید رابطه‌ای آن وارد نمی‌کند.معرفی سیستم‌های مدیریت پایگاه‌داده‌های NoSQL و مخازن داده:گرچه مدل رابطه‌ای بسیار قدرتمند و انعطاف‌پذیر است، اما همان‌طور که اشاره شد، کارکردن با این مدل داده مهارت خاص خود را می‌طلبد. جدای از این، خیلی از کاربران، مشکلات و نیازمندی‌هایی دارند که راهکار پایگاه‌داده‌های رابطه‌ای و حتی شئ-رابطه‌ای برایشان مناسب نیست. در دهه اخیر سیستم‌هایی موسوم به NoSQL و برنامه‌های مربوط به آن‌ها بسیار پرطرفدار و فراگیر شده‌اند، با این شعار که در کنار معرفی کارکردهای جدید، بسیاری از دشواری‌های کار کردن با مدل رابطه‌ای را نیز برطرف کنند. در واقع هدف این است که با ریشه‌کن کردن محدودیت‌های سخت‌گیرانه‌ای که قبلا در سیستم رابطه‌ای معرفی شده بود، بتوان به راحتی و انعطاف بالا در نگهداری، پرس‌وجو و استفاده از داده‌ها رسید. پایگاه‌داده‌های NoSQL با استفاده از شیوه‌های ساخت‌نایافته (یا ساخت‌یافته در زمان عمل) به حذف محدودیت‌های رابطه‌ها کمک می‌کند و راه‌های متعدد و مختلفی را جهت موارد استفاده‌ی خاصی هم چون ذخیره «تمام متن» اسناد (full-text document storage) ارائه می‌کند. بر خلاف آنچه که در مقدمه آورده شده، در سیستم‌های پایگاه‌داده‌های NoSQL هیچ مدل داده‌ای همانند سیستم‌های پایگاه‌داده‌های رابطه‌ای، مورد استفاده یا نیاز نیست. هر سیستم مدیریت پایگاه‌داده‌های NoSQL، به منظورهای خاص و هر یک به شیوه خاص، این منطق را پیاده سازی کرده‌اند. این پیاده‌سازی‌ها و راهکارهای بدون قالب (schema less) هم اجازه‌ی پشتیبانی از انواع نامتناهی از فرم‌های داده‌ای را فراهم می‌آورد و هم اینکه به طور ساده و بسیار موثری، از قالب «کلید-مقدار»ی که در مدل رابطه‌ای بود، پشتیبانی می‌کنند. پشتیبانی از قالب کلید-مقدار، بیشتر برای تعداد داده‌های کوچک و معمولا به منظور cache کردن داده‌ها به کار می‌رود که در بخش مقایسه سیستم‌های NoSQL به آن پرداخته می‌شود.?بر خلاف پایگاه‌داده‌های رابطه‌ای، قادر خواهیم بود تا کلکسیونی (collection) از داده‌ها را درون یک سیستم پایگاه‌داده‌های NoSQL همانند MongoDB داشته باشیم. این پایگاه‌داده‌های یا به عبارت دیگر این «مخازن اسناد» (document stores) هر داده را در کنار سایر داده‌ها، تحت عنوان یک کلکسیون (یا همان سند) در پایگاه‌داده‌های نگهداری می‌کند. این اسناد می‌توانند تحت عنوان اشیاء داده مستقل مانند قالب JSON به نمایش درآیند و همچنین بر اساس صفت‌هایش پرس‌وجو شوند.سیستم‌های پایگاه‌داده‌های NoSQL بر خلاف سیستم رابطه‌ای که از زبان SQL استفاده می‌کرد، روش‌های مشترکی را برای پرس‌وجو از داده‌ها ارائه نمی‌کنند و هر سیستم NoSQL راهکار پرس‌وجو یا دسترسی خاص خود به داده‌ها را دارا است.مقایسه سیستم‌های مدیریت پایگاه‌های داده مبتنی بر SQL (رابطه‌ای) و NoSQLجهت ساده‌سازی در ارائه‌ی مفهوم، سعی می‌گردد تا تفاوت‌های این دو سیستم بررسی گرددساختار و نوع داده نگهداری شونده: در سیستم رابطه‌ای، نیازمند یک ساختار از صفات برای نگهداری از داده‌ها هستیم، بر خلاف NoSQL که معمولا اجباری را تحمیل نمی‌کند.پرس‌وجو: همه‌ پایگاه‌داده‌های رابطه‌ای استاندارد SQL را تا حدودی پیاده‌سازی کرده‌اند و می‌توانند از طریق SQL مورد پرسوجو قرار گیرند. در NoSQL شرایط عکس است. همان طور که گفته شد، هر پیاده‌سازی، روش خودش را برای کار با داده‌ها دارد.بسط‌پذیری: هر دو این راهکارها قابل رشد به صورت عمودی هستند. (مثلا افزایش منابع سیستم). هرچند با پیشرفت و ساده‌تر شدن برنامه‌ها، راهکارهای NoSQL ابزارهای راحت‌تری را در جهت رشد افقی ارائه می‌کنند (مثلا ساختن یک cluster از چندین ماشین)قابلیت اتکا: هنگامی که مساله قابلیت اطمینان در داده‌ها و تضمین تراکنش‌های انجام شده مطرح باشد، همچنان بهتر است بر روی پایگاه‌های داده رابطه‌ای شرط ببندید!پشتیبانی: پایگاه‌داده‌های رابطه‌ای، قدمتی طولانی دارند. همان طور که گفته شد، بسیار پرطرفدار هستند و پیدا کردن پشتیبانی برای آن‌ها چه به صورت رایگان و هزینه‌ای به راحتی امکان‌پذیر است. طبیعی است که حل مشکلات نیز در سیستم سنتی بسیار سریع‌تر از سیستم‌های تازه به ظهور رسیده مانند MongoDB که گفته می‌شود ذاتا پیچیده است، خواهد بود.داده‌های پیچیده و نیاز به نگهداری و پرس‌وجو: به طور ذاتی، پایگاه‌داده‌های رابطه‌ای از منطق go to جهت پرس‌وجو های پیچیده و برآورده نمودن نیاز نگهداری از داده‌ها استفاده می‌کنند که در این حوزه پیشرو بوده و بسیار موثرترند.?گرچه در ادامه به جزئیات بیشتری از سیستم‌های NoSQL پرداخته می‌شود، لیکن موارد استفاده یا عدم استفاده از این سیستم‌ها را می‌توان به طور کلی به این شکل عنوان کرد:اندازه کار: اگر با دسته‌های عظیم از داده‌ها سروکار دارید، بسط دادن این داده‌ها توسط خانواده پایگاه‌داده‌های NoSQL راحت‌تر صورت می‌گیرد.سرعت: پایگاه‌داده‌های NoSQL معمولا سریعترند، و بعضی وقت‌ها در زمان عملیات نوشتن به شدت سریعترند! عملیات خواندن هم بسته به نوع پایگاه داده NoSQL و داده‌های مورد پرس‌وجو می‌تواند بسیار سریع صورت بگیرد.طراحی بدون قالب: همان طور که گفته شد، پایگاه‌داده‌های NoSQL قابلیت انعطاف بالایی دارند.بسط‌پذیری و تکراری‌سازی آسان: بر خلاف پایگاه‌داده‌های رابطه‌ای، پایگاه‌داده‌های NoSQL به راحتی قابل بسط و تکرار هستندآزادی عمل در انتخاب: تنوع در پیاده‌سازی‌های مختلف از مفهوم NoSQL، این امکان را به کاربران می‌دهد تا با توجه به مساله و داده‌ای که با آن کار می‌کنند، سیستم مدیریت پایگاه‌داده‌های مناسب را انتخاب کنند. در ادامه با این موارد قابل انتخاب آشنا می‌شوید.مقایسه سیستم‌های مدیریت پایگاه‌داده‌های NoSQL و مدل‌های آن‌هادر این بخش سعی بر آن است که سیستم‌های مدیریت پایگاه‌داده‌های NoSQL معرفی گشته و کارکرد و اهداف آن‌ها تشریح شود تا بتوان در صورت نیاز، انتخابی درست و موثر انجام داد.به طور کلی، می‌توان سیستم‌های مدیریت پایگاه‌های داده NoSQL را به چهار دسته زیر تقسیم نمود:مبتنی بر مقدار-کلیدمبتنی بر ستونمبتنی بر سندمبتنی بر گراف?۱) مبتنی بر کلید-مقدار:این مدل می‌تواند به عنوان ساده ترین مدل در بین سایر مدل‌های این دسته و نیز زیرساخت مفهوم NoSQL شناخته شود. این نوع از پایگاه‌داده‌های با تطابق کلیدها و مقادیر کار می‌کنند، چیزی شبیه dictionary. هیچ چیزی به عنوان ساختار یا رابطه وجود ندارد. پس از اتصال به پایگاه داده (مانند Redis)، یک برنامه می‌تواند یک کلید را عنوان کند (مانند the_answer_to_life) و یک مقدار متناسب (مثلا ۴۲) را دریافت کند. سیستم‌های مدیریت پایگاه‌داده‌های مبتنی بر مقدار-کلید بطور معمول برای ذخیره‌ی سریع داده‌های اولیه به کار می‌روند. آن‌ها بسیار کارا، موثر و معمولا بسط پذیرند.نکته: وقتی صحبت از دیکشنری در دنیای کامپیوتر می‌شود، منظور دسته‌ای خاص از اشیاء داده است که از آرایه‌ای از کلکسیون‌ها با کلیدهای مجزا تشکیل شده اند و هر کلید، با یک مقدار تطابق دارد.برای سیستم‌های مدیریت پایگاه‌داده‌های NoSQL مبتنی بر کلید-مقدار می‌توان موارد زیر را معرفی نمود:Redis: درون حافظه اصلی قرار می‌گیرد و امکان ماندگار بودن در حافظه را نیز دارد.Riak: قابلیت بسط‌پذیری بالا، و قابلیت چند نسخه‌سازیMemcached / MemcacheDB: قابلیت بسط‌پذیریموارد مناسب جهت استفاده:caching: سرعت ذخیره بالا، و گاهی تکراری داده‌ها و با هدف استفاده در آینده نزدیکدر صف قرار دادن: برخی از سیستم‌ها مانند Redis از لیست‌ها، دسته‌ها و صف‌ها و… پشتیبانی می‌کنند.توزیع عملیات و اطلاعات: می‌توانند جهت پیاده‌سازی الگوی معماری Publish-Subscribe موثر باشند.نگهداری از اطلاعات زنده: برنامه‌هایی که نیازمند نگهداری از «حالت» (state) هستند، می‌توانند از این سیستم‌ها استفاده کنند.۲) مبتنی بر ستون:سیستم‌های مدیریت پایگاه‌های داده مبتنی بر ستون، بر اساس قدرتمندسازی همان طبیعت کلید-مقدار شکل گرفته‌اند. بر خلاف آن تصور عامه در اینترنت که گفته می‌شود یادگیری این پایگاه‌داده‌ها مشکل است، این نوع پایگاه‌داده‌ها به طور خیلی ساده و بر اساس ساخت کلکسون‌هایی از یک یا چند جفت کلید-مقدار کار می‌کنند که با یک رکورد مطابقت دارد. بر خلاف تعاریف قدیمی از قالب (schema) در سیستم‌های رابطه‌ای، یک سیستم مبتنی بر ستون نیازمند جدولی از پیش تعیین شده جهت کار کردن با داده‌ها در آن نیست. هر رکورد با یک یا چند ستون که دربردارنده‌ اطلاعات هستند، ارائه می‌شود و هر ستون از هر رکورد می‌تواند متفاوت باشد.?به طور ساده، این نوع پایگاه‌داده‌ها، آرایه‌هایی دو بعدی هستند که به موجب آن، هر کلید (در اینجا: معادل سطر یا رکورد)، یک یا چند جفت کلید-مقدار را به همراه دارند که به آن‌ها متصل هستند. این سیستم، اجازه استفاده و نگهداری حجم عظیمی از داده‌های ساخت‌نایافته را می‌دهد. (مثلا یک رکورد با مقادیر عظیمی از اطلاعات)این سیستم معمولا زمانی استفاده می‌شود که جفت‌های کلید-مقدار کافی نیستند و ذخیره تعداد بسیار زیاد از رکوردها با تعداد اطلاعات بسیار بزرگ، یک ضرورت محسوب می‌شود. این سیستم قابلیت بسط‌پذیری بسیار خوب و بالایی را دارد.برای سیستم‌های مدیریت پایگاه‌داده‌های مبتنی بر ستون می‌توان موارد زیر را معرفی نمود:Cassandra: مخزن داده مبتنی بر BigTable و DynamoDBHBase: مخزن داده سکوی Apache Hadoop، مبتنی بر ایده‌ی BigTableموارد مناسب جهت استفاده:نگهداری از داده‌های ساخت‌نایافته و اطلاعات غیرفرار: اگر دسته‌ای عظیم از مقادیر و صفات نیازمند به نگهداری برای مدت طولانی باشند، این سیستم بسیار کاربردی است.بسط‌دهی: این سیستم‌ها به طور ذاتی قابلیت بسط پذیری بسیار بالایی دارند و می‌توانند با مقادیر بسیار بسیار زیادی از اطلاعات سروکار داشته باشند.۳) مبتنی بر سند:سیستم مدیریت پایگاه‌داده‌های مبتنی بر سند را می‌توان آخرین دیوانه بازی دانست که توانسته سیل عظیمی از مردم را به استفاده از خود جوگیر کند! این سیستم همانند سیستم مبتنی بر ستون عمل می‌کند، گرچه امکان رسیدن به تودرتوسازی بیشتری را می‌دهد: وجود یک سند در یک سند دیگر، در سند دیگر،…سندها بر محدودیت یک یا دو سطح از تودرتو سازی سیستم‌های مبتنی بر ستون فائق آمده‌اند. به طور ساده، هر ساختار پیچیده و دلخواه می‌تواند تشکیل یک سند را بدهد و این سند قابلیت ذخیره‌سازی در این سیستم را دارد.علیرغم ذات قدرتمند قابلیت پرس‌وجو از رکوردها با کلیدهای مختلف، این سیستم مشکلات و افت‌هایی را در مقایسه با بقیه همتایان خود دارد. به عنوان مثال، دریافت یک مقدار از یک رکورد به معنی دریافت مقدار زیاد آن رکورد است. مشابه این سناریو در زمان به‌روزرسانی داده‌ها نیز صادق است. این موارد باعث افت کارایی می‌شوند.برای سیستم‌های مدیریت پایگاه‌های داده مبتنی بر سند می‌توان موارد زیر را معرفی نمود:MongoDB: پایگاه‌داده‌های بسیار پرطرفدار و بسیار کاراCouchDB: یک مخزن داده‌ی پیشرو و سنت شکنCouchbase: مبتنی بر JSON، قابلیت ذخیره در حافظه اصلیموارد مناسب جهت استفاده:اطلاعات تودرتو: این سیستم‌ها اجازه کار با داده‌های بسیار پیچیده و تودرتو را می‌دهد.کار با جاوا اسکریپت: یکی از حیاتی‌ترین کارکردهای این نوع سیستم‌ها، روشی است که در آن با برنامه‌های جاوا اسکریپتی روبرو می‌شوند، مثلا استفاده از قالب JSON مناسب برای جاوا اسکریپت!۴) مبتنی بر گراف:در نهایت، می‌توان به سیستم جذاب مدیریت پایگاه‌داده‌های مبتنی بر گراف اشاره کرد. این سیستم‌ها داده‌ها را به شکلی کاملا متفاوت از سه مدل قبلی که به آن اشاره شد، ارائه می‌کنند. آن‌ها ساختار درختی را همانند آنچه که در گراف‌ها هست ارائه می‌کنند، با راس‌ها و یال‌هایی که به وسیله‌ی رابطه‌ها به یکدیگر متصل هستند.مشابه تصویری ریاضی گراف‌ها و به لطف طبیعت گراف‌ها (مانند اتصال و دسته‌بندی اطلاعات مرتبط با هم)، برخی از عملیات خاص در این سیستم‌ها، بسیار ساده‌تر صورت می‌پذیرند. (مانند ارتباط آدم‌ها)این پایگاه‌داده‌های به طور معمول در برنامه‌هایی استفاده می‌شوند که برقراری مرزهای مشخص در اتصالات ضروری است. به عنوان مثال هنگامی که وارد یک شبکه اجتماعی شویم، اتصال دوستانتان به شما و نیز اتصال دوستان دوستانتان به شما از طریق سیستم‌های مدیریت پایگاه‌داده‌های مبتنی بر گراف ساده‌تر است.برای سیستم‌های مدیریت پایگاه‌داده‌های مبتنی بر گراف می‌توان موارد زیر را معرفی نمود:OrientDB: یک پایگاه‌داده‌های ترکیبی NoSQL از گراف و سند و بسیار سریع که با جاوا نوشته شده و قابلیت کار در مدل‌های کاری مختلف را دارد.Neo4J: پایگاه‌داده‌های بسیار پر طرفدار و قدرتمند مبتنی بر جاواموارد مناسب جهت استفاده:سروکار داشتن با داده‌های رابطه‌ای پیچیده: همان طور که گفته شد، این سیستم برای کار با ساختارهای پیچیده و رابطه‌ای بسیار موثر و راحت است. مانند ارتباط بین دو موجودیت و هر درجه از ارتباط بین موجودیت‌هایی که به طور غیر مستقیم با یک موجودیت رابطه دارند.مدل سازی و سروکار داشتن با موجودیت‌های دسته‌بندی شده: این سیستم‌ها در هر زمینه‌ای که مفهوم روابط انسانی مطرح است، برتری دارند. دسته‌بندی اطلاعات بر طبق روابط انسانی می‌توانند به طور خیلی خوبی توسط این سیستم‌های انبار داده صورت گیرند.منابع:https://slmd.ir/lrhttps://slmd.ir/lshttps://slmd.ir/lthttps://slmd.ir/luhttps://slmd.ir/lv</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Sun, 29 Nov 2020 10:43:12 +0330</pubDate>
            </item>
                    <item>
                <title>افزودن احراز هویت با حسابهای اجتماعی در برنامه های آنگولار</title>
                <link>https://virgool.io/@Ali_Zamani/%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A7%D8%AD%D8%B1%D8%A7%D8%B2-%D9%87%D9%88%DB%8C%D8%AA-%D8%A8%D8%A7-%D8%AD%D8%B3%D8%A7%D8%A8%D9%87%D8%A7%DB%8C-%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%DB%8C-%D8%AF%D8%B1-%D8%A2%D9%86%DA%AF%D9%88%D9%84%D8%A7%D8%B1-sttd0eydhvpc</link>
                <description>افزودن احراز هویت با حسابهای اجتماعی در برنامه های آنگولارسلام دوستان، این اولین مطلب از سری مطالب فنی در حوزه امنیت و هویت دیجیتال هست که قصد دارم در طی چند پست به پیاده سازی موضوعات مختلف بپردازیم، ادبیات این مقاله مبتدی هست که کلیه دوستان بتوانند از مطلب استفاده کنند، پیشاپیش از دوستان حرفه ای عذرخواهی میکنم.همونطور که میدونید چهارچوب آنگولار یکی از قویترین چهارچوب های سمت کلاینت و برنامه های وب تک صفحه ای و موبایل هست که امروزه در بسیاری از پروژه های کوچک و بزرگ استفاده میشود.امروز قصد داریم با چند خط کد ساده و کپی و پیست چند خط کد، احراز هویت با استفاده از شبکه های اجتماعی رو به برنامه مون اضافه کنیم، با اینکار در واقع شما relying party یا RP برای گوگل محسوب میشوید و بعنوان یک برنامه که به هویت های گوگل اعتماد میکند به کاربران گوگل این اجازه را میدهید تا به برنامه شما وارد شوند (Login کنند). قبلا در مورد سامانه های احراز هویت مانند امتا در مقاله جداگانه ای صحبت کردیم، حتی میتوانید با مطالعه دستورالعمل اتصال امتا به برنامه تان از این سامانه بعنوان پذیرنده یا RP استفاده کنید. کتابخانه ای که امروز معرفی میکنیم قابلیت افزودن ارائه دهنده هویت (Identity Provider) مانند امتا را هم دارد.با کوچکترین سرچی که در گوگل کنید اولین نتیجه ای که برای شما احصاء میشود کتابخانه ای نیست جز angularx-social-login .اولین پیش نیاز این مقاله داشتن یک ابزار مدیریت و ویرایش کد مانند ویژوال استادیو کد هست، که این ابزار یک ابزار رایگان هست و میتونید از سایتش دانلود و نصب کنید و سپس تاحدودی آشنایی با HTML، CSS و جاوا اسکریپت.برای اجرای آنگولار اول باید Node.JS را نصب کنید، نسخه مناسب سیستم عامل خود را از سایت Node.JS دانلود و نصب کنید، همچنین برای مدیریت بسته های آنگولار نیاز به ابزار NPM داریم ، ابزار مدیریت بسته های ان پی ام را هم نصب کنید (البته فکر کنم در نسخه های جدید با نصب نود، ابزار ان پی ام هم نصب میشود)  و با اجرای دستور زیر رابط دستوری آنگولار را برای اجرای فرامین آنگولار در Command Prompt ویندوز اجرا کنید:npm install -g @angular/cliو با اجرای دستور زیر یک پروژه جدید از نوع آنگولار ایجاد کنید:ng new my-appپروژه جدید شما در مسیر C:\Users\Alireza (در سیستم عامل ویندوز) نصب میشود و میتوانید به فایل های آن دسترسی داشته باشید، در اینجا اسم پروژه ما my-app هست، شما میتونید هر اسمی به دلخواه انتخاب کنید، با اجرای دستور زیر به مسیر اصلی پروژه میروید و با خط دوم برنامه را اجرا میکنید:cd my-app ng serve --openبعداز اجرای دستور فوق برنامه در آدرس http://localhost:4200 اجرا خواهد شد، قاعدتا چون ما تغییری در پروژه ایجاد نکردیم چیزی که در مرورگر مشاهده میکنید صفحه پیشفرض آنگولار در مرورگر خواهد بود::در مسیر اصلی برنامه یعنی C:\Users\Alireza\my-app (البته به جای Alireza نام کاربری خودتون هست ;) و ببخشید اگه اینو توضیح دادم و شما میدونستید ، بهرحال پیشفرض ما در این مطلب افراد مبتدی هست) وارد شوید و در مسیر بالا راست کلیک کنید و سپس بر روی Open with Code کلیک کنید تا پروژه در Visual Studio Code باز شود برای تغییرات بعدی.حال بر میگردیم به رابط خط فرمان ویندوز (Command Prompt)، با اجرای دستور زیر کتابخانه احراز هویت اجتماعی را در پروژه تان دانلود کنید (دقت کنید الان خط فرمان در دایرکتوری پروژه هست و نه دایرکتوری دیگه) :npm i angularx-social-loginدر صفحه اصلی  این پروژه خیلی ساده و روان شیوه افزودن این کتابخانه به پروژه شما بیان شده برای همین از کپی و پیست کردن و تکرار کدها اجتناب میکنم و فقط به عنوان یک توضیح مختصر شما باید در فایل app.module.ts کتابخانه های مورد استفاده را import کنید و در فایل های app.component.ys و app.component.html تغییرات لازم را اعمال کنید و در نهایت با اجرای دستور زیر برنامه را اجرا کنید تا نتیجه را ببینید:ng serve --openبا اجرای این دستور، اگر کدهای پروژه تان را بصورت صحیح تغییر داده باشید صفحه ای مشابه صفحه زیر در مرورگر خود خواهید دید :در واقع کاربر شما میتوانید با یکی از حسابهای کاربری آمازون، فیسبوک یا گوگل در برنامه شما لاگ این کند، به همین سادگی شما یک احراز هویت اجتماعی رو به برنامه تون اضافه کردید !نصب کتابخانه : https://www.npmjs.com/package/angularx-social-login مشاهده دمو : https://abacritt.github.io/angularx-social-login/ دانلود سورس کد : https://github.com/abacritt/angularx-social-login </description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Wed, 29 Jul 2020 01:21:59 +0430</pubDate>
            </item>
                    <item>
                <title>آمار بازدید مطالب من در سال ۹۸</title>
                <link>https://virgool.io/@Ali_Zamani/%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D9%85%D8%B7%D8%A7%D9%84%D8%A8-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-%DB%B9%DB%B8-aeskreew6o1a</link>
                <description>اگر دستاوردی را نتوانم اندازه بگیرم، چیزی در دست ندارم.اشتباه نشود، این به معنای تمایل به بهترین بودن  و یا میل به اثبات چیزی نیست، اما تنها چیزی که می‌تواند برای بهتر شدن به من کمک کند یک نقشه راه است، از مسیری که طی کرده‌ام، تا بدانم چه اثری از خود به جا گذاشته‌ام. یک تصویر کلی که بتواند خیلی ساده نشانم دهد تلاش من چه اثری بر جامعه‌ام گذاشته است.ویدیوی آمار مخاطبین من را ببینید: https://cdn.virgool.io/annual-report/1398/nzsyjlluhzgo-QIXAQ.mp4 دستاوردهای من در سال ۹۸در سال ۹۸، من در مجموع ۱۳ پست در ویرگول منتشر کردم و پست‌های من ۱۱۰ مرتبه لایک شدند و افراد ۶ بار نظرات خود را روی پست‌های من به اشتراک گذاشتند. امسال ۲۰ نفر در ویرگول من را دنبال کردند تا پست‌های بعدیم را بخوانند. اما چیزی که این دستاورد را ارزشمندتر می‌کند اثری است که این پست‌ها از خود به جا گذاشتند.اثر پروانه‌ای منطبق آمار ۴۹۶ بار پست‌های من خوانده شدند و زمانی حدود ۱۲۶,۹۲۱ ثانیه صرف مطالعه آنها شده است، که با توجه به جمعیت ۷۲٬۹۴۰٬۰۰۰ نفری که در ایران به اینترنت دسترسی دارند، من توانستم حدود ۰/۰۰۱۷۴۰ ثانیه، سرانه مطالعه دیجیتال کشور را بالا ببرم. عددی که با تمام کوچک بودنش، اثر بزرگ و ارزشمندی است.اما این عددها فقط توضیحی است از آنچه که برای مخاطبانم به ارمغان آورده‌ام، اثر ارزشمند‌تری که با نوشتن در ویرگول از خود به جا گذاشته‌ام، تلاش پنهانی بوده که برای حفظ محیط زیست کرده‌ام. من با انتشار پست‌های خودم در فضای ویرگول توانستم در مصرف کاغذ صرفه جویی کنم؛ یعنی اگر قرار بود پست‌هایم را چاپ  و به دست تک تک خوانندگان برسانم باید ۲,۸۷۷ کاغذ مصرف می‌شد.</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Thu, 26 Mar 2020 23:10:41 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه از طریق اینترنت کسب درآمد کنیم ؟</title>
                <link>https://virgool.io/SoftwareEngineering/%D8%B1%D9%88%D8%B4%D9%87%D8%A7%DB%8C-%D8%B1%D8%A7%DB%8C%D8%AC-%DA%A9%D8%A7%D8%B1-%D9%88-%DA%A9%D8%B3%D8%A8-%D8%AF%D8%B1%D8%A2%D9%85%D8%AF-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-rpmticrgdnfo</link>
                <description>روشهای رایج کسب درآمد از طریق اینترنتبرای دانشجوها و افرادی که دنبال شغل دوم یا سوم هستند و یا افرادی که از رفت و آمد های روزمره به سرکار خسته شده اند کسب درآمد اینترنتی همیشه اولین گزینه ای است که به فکر هر کسی خطور میکند.کسب درآمد از اینترنت تنها برای افراد بیکار یا افرادی که به دنبال شغل دوم هستند نیست، حتی شرکت ها و کارخانجات بزرگ و موفق هم اگر به سمت فضای مجازی و بازاریابی اینترنتی حرکت نکنند از بسیاری از رقبای خودشون عقب می افتند.اشتباه نکنید! در این پست نمی خوام روشهای خارق العاده ای که برخی تصور میکنند یک شبه و بدون زحمتی میتونند از طریق اینترنت ثروتمند شوند معرفی کنم هرچند هم اگر چنین روشهایی وجود داشته باشند (مانند راه اندازی سایتهای شرط بندی و دوستیابی و یا روشهای پرداخت به ازای کلیک که مدتی در فضای مجازی باب بود که به شخصه مخالف صد در صدی این روشها هستم) قاعدتا قانونی و اخلاقی نیستند (حداقل در ایران)، البته برخی روشهایی که نیاز به مهارتی هم ندارند اما منع قانونی هم ندارند در بخش دوم معرفی کرده ام اما قاعدتا با روشهایی که نیاز به تخصص دارند شامل کارهای جدی تری میشوند درآمد بالاتر و مطمئن تر و پیشرفت شغلی خواهید داشت. اصولا شما در ازای انجام یک کار مفید و ایجاد ارزش افزوده دستمزدی دریافت میکنید و این قاعده اساسی انجام هر کاریست، درآمد اینترنتی تنها راه و روش انجام کار رو برای شما تغییر میدهد و شما بدون داشتن تخصص و مهارت و بدون ایجاد یک ارزش افزوده و کار مفید نمیتونید درآمد مطمئن و کار قانونی و شرافتمندی داشته باشید. اینترنت تنها بعنوان یک ابزار فرآیند انجام کار رو برای شما راحت کرده است. هر کاری که بتوان بر بستر اینترنت انجام داد میتواند یک کار اینترنتی باشد اما در اینجا فقط برخی از معروفترین و درآمدزا ترین آنها که برخی از آنها را خودم تجربه کرده ام را معرفی میکنم، برخی موارد هم برای کامل بودن مطلب آورده ام.در برخی از وبسایتها با توجه به تحریم ها نیاز به وی پی ان دارید که میتوانید از سپیدی فای (Speedify) استفاده کنید که سرعت خوبی هم دارد و برای نقد کردن پول خود هم همانطور که احتمالا میدانید نیاز به حسابهای اینترنتی مانند پی پال (PayPal) و یا وسترن یونیون دارید، افتتاح حساب اینترنتی و نقد کردن پول در ایران روش های مختلفی دارند که خارج از بحث این مطلب است که در این زمینه میتوانید گوگل کنید. البته بیشتر روش هایی که برای کسب درآمد از اینترنت وجود دارند داخل ایران هم میتوان انجام داد اما همانطور که میدانید داشتن درآمد ارزی، درآمد بیشتری را برای شما خواهد داشت.بخش اول : روشهای تخصصیبرای کار در حیطه های تخصصی شما نیازمند داشتن پیشنیازهای بیشتری هستید، تسلط به زبان انگلیسی اولین آنهاست، البته برای درآمد ارزی تسلط به زبان انگلیسی لازم است. مثلا برای تدریس، اگر می خواهید کارهای یدی و فیزیکی را آموزش دهید قاعدتا هزینه ها و امکانات فیزیکی بیشتر باید صرف کنید اما برای آموزش های تخصصی مثلا در حوزه نرم افزار داشتن یک لپ تاپ شخصی و میکروفون و نرم افزار تصویربرداری از صفحه نمایش مانند کمتازیا کفایت میکند. اما برای آموزش در رشته هایی مانند آشپزی، نجاری، مکانیکی، موسیقی و هنر و ... قاعدتا نیاز به امکانات تصویربرداری و صدابرداری بیشتری دارید.افراد زیادی بودند که از طریق تدریس و انجام پروژه های دورکاری و ارتباط گیری با شرکتهای مختلف موفق به اخذ اقامت کاری و زندگی در کشورهای مختلف شده اند لذا این روش ها میتوانند مقدمه ای برای مهاجرت و پیشرفت شغلی شما باشند.تدریس آنلایندورکاری (ریموت)فروشگاه اینترنتیتبلیغات اینترنتیبازاریابی رابطه ای (آفیلیت)سرویس های اینترنتیآزمون نرم افزار هافروش محتوای آنلاین (یوتیوب و اینستاگرام)رمز ارزهابازار بورس سهام و ارزتدریس اینترنتیاولین چیزی که هر متخصصی به آن علاقه مند است و یا میتواند برای کسب درآمد انجام دهد تدریس است، خداروشکر در چند سال گذشته آموزش های الکترونیکی گسترش زیاده داشته است و وبسایتهای تخصصی زیادی در این حوزه بوجود امده اند که بعنوان یک پلتفرم ارتباطی بین متخصصی (مدرسین) و افراد علاقه مند به یادگیری موضوعات مختلف هستند. چون خودم تخصصم نرم افزار هست پیشفرضم را بر این رشته گذاشته ام اما در وبسایتهایی که معرفی میشوند رشته های تخصصی مختلفی از آشپزی و هنر و روانشناسی گرفته تا برنامه نویسی و نجاری و جوشکاری آموزش داده میشوند و درصورتیکه مسلط به زبان انگلیسی باشید میتوانید درآمد دلاری خوبی کسب کنید.میتوانید تا پیشرفت زبان انگلیسی تان و ایجاد انگیزه ابتدا در سایت های ایرانی تدریس آنلاین مانند فرادرس مشغول به کار شوید و با پیشرفت در مهارتهای آموزشی تان برای سایت های خارجی که درآمد ارزی دارند کار کنید.برخی از این سایت ها:فرادرساسکیل شریودمیهمچنین وبسایتهایی برای تدریس خصوصی وجود دارند که میتوانید بصورت حضوری یا اینترنتی تدریس کنید:http://www.uktutors.com/https://www.superprof.us/دورکاری (ریموت)عنوان مختلفی میشه به این موضوع داد هم کار بصورت ریموت و هم فریلنسری، البته در بخش دوم مطلب هم برخی سایتهای فریلنسری معرفی شده اند اما منظورم از کار بصورت دورکاری (ریموت) شرکتهایی هستند که به دنبال نیروی متخصص (که اغلب در رشته نرم افزار و برنامه نویسی هستند) بصورت ریموت هستند که آگهی استخدام خود را در سایت های کاریابی معروف قرار میدهند (نه در سایت های فریلنسری)، معمولا سایتهای فریلنسری واسطه ای هستند برای به مناقصه گذاشتن پروژه ها اما سایتهای کاریابی بصورت ریموت (دورکاری) شرکتهایی هستند که بدنبال استخدام بصورت دورکاری هستند.برخی از این سایت ها شامل :https://remote.co/https://www.indeed.com/https://www.monster.com/https://www.ziprecruiter.com/https://www.careerbuilder.com/https://www.linkedin.com/jobs/برخی از کانال های تلگرامی هم مثل The Hire آگهی های ریموت خوبی دارند :t.me/thehireبهرحال با گوگل کردن کلمه Remote Worker و یا Remote Developer ده ها سایت دورکاری پیدا میکنید.تقویت رزومه و زبان انگلیسیچه برای کار بصورت ریموت و چه حضوری باید رزومه خوبی به زبان انگلیسی برای خود بنویسید و برای مصاحبه های اسکایپی و مکالمه به زبان انگلیسی خود را آماده کنید.برای افزایش مهارتهای برنامه نویسی خود (البته در صورتیکه بعنوان برنامه نویس میخواهید کار کنید) میتوانید از دو وبسایت خوب زیر بهره ببرید : https://leetcode.com/  https://www.geeksforgeeks.org/  https://www.sololearn.com/home برنامه نویسان موفق تجارب مصاحبه های خودشون رو در شرکتهای مطرح فناوری در سایت گیکز فور گیکز به اشتراک می گذارند، یکی از سایتهای خوب برای آمادگی برای مصاحبه های استخدامی میتواند سایت فوق باشد.در هر صورت رزومه قوی و مهارت زبان انگلیسی مواردی هستند که اغلب افراد با آن مشکل دارند واگر این دو مورد را حل کنید نصف بیشتر مشکلات شما در کاریابی حل خواهد شد.راه اندازی فروشگاه اینترنتیاگر محصول خاصی دارید و یا فکر میکنید میتوانید محصول منحصرفردی تولید کنید راه اندازی یک فروشگاه اینترنتی برای فروش آنها ایده پردآمدی است، این کاملا بستگی به ایده شما و نحوه اجرای کار شما دارد، میدانید خیلی از فروشگاه های اینترنتی مانند آمازون در امریکا و یا دیجیکالا در ایران از یک ایده دو یا چند نفره ساده شروع شده اند و حالا تبدیل به شرکتهای فناروی بزرگی شده اند، یعنی حتی پایشان را از فروشگاه اینترنتی هم فراتر گذاشته اند.همانطور که احتمالا میدانید راه اندازی فروشگاه اینترنتی نیاز به ثبت حداقل یک دامنه و خرید یک میزبانی وب دارد، شما میتوانید با نرم افزارهای متن باز (که مجانی هستند) راه اندازی فروشگاه اینترنتی مانند پرستاشاپ در کمتر از یکساعت فروشگاه اینترنتی خود را از لحاظ فنی راه اندازی کنید. نسخه های فارسی شده پرستاشاپ هم وجود دارند که میتوانید بدون دردسر فارسی کردن وبسایتتان سریعتر فروشگاه خود را راه اندازی کنید. و یا اگر اصلا با دنیای تخصصی نرم افزار آشنا نیستید با یک هزینه چند میلیونی میتوانید اینکار را به یک متخصص اینکار بسپارید، البته کمی دردسر خواهید داشت و بعدا مجبور میشوید با دنیای وب و وبسایت و فروشگاه های اینترنتی آشنا بشید. بعداز راه اندازی فروشگاه اینترنتی نیاز به دریافت نماد اعتماد الکترونیکی و گرفتن درگاه بانکی جهت پرداخت های اینترنتی دارید.انجام تبلیغات اینترنتیشاید بهتر بود این مورد رو بعنوان اولین مورد میاوردم، یکی از حرفه ای ترین و جدی ترین روش های کسب درآمد از اینترنت همین روش است، البته اصطلاح تبلیغات اینترنتی بسیار گسترده است و شامل سایر روش های دیگه هم میشه که در بخش های دیگه توضیح دادم، اما بطور خاص منظورم تبلیغات اینترنتی، در شرایطی هست که شما یک وبسایت یا وبلاگ برای خودتان داشته باشید و بخواهید در آن سفارش تبلیغ بگیرید و تبلیغ کنید. یکی از معتبرترین و شناخته شده ترین این روش ها گوگل ادسنس هست که با توجه به محتوای سایت شما و میزان ترافیک سایتتان مبلغی را به شما بابت نمایش تبلیغ پرداخت میکند، البته طبیعی است که وبساییتان یا وبلاگتان باید به زبان انگلیسی باشد و با آی پی ایران نباشد. در صورتیکه وبسایت پربازدیدی داشته باشید میتوانید ماهیانه روی بالای پنج هزار دلار در ماه حساب کنید! Google AdSense اگر سری به سایت انگ وید بزنید (که خدمات آموزش رایگان زبان انگلیسی از طریق یوتیوب میدهد) در بخش های مختلفی از وبسایت این گروه تبلیغاتی که مرتبط با آموزش زبان هستند و با محتوای سایت مرتبط هستند میبینید، که همان تبلیغات گوگل هستند.https://www.engvid.com/طبیعی است که راه اندازی یک وبسایت حتی فارسی زبان و افزایش بازدید آن کار ساده ای نیست چه برسد به سایت انگلیسی که شما احتمالا باید مسلط باشید به ادبیات و فرهنگ کشورهای انگلیسی زبان. در هر وبسایتی محتوا حرف اول را میزند اگر قصد راه اندازی وبسایتی دارید چه فارسی و چه انگلیسی باید برنامه ریزی خوبی برای تولید محتوای دسته اول و با ارزش کنید، بحث در این رابطه خارج از موضوع این مطلب است و خودش میتواند موضوع چند جلد کتاب باشد.مشابه کار گوگل ادسنس  در ایران میتوان به صباویژن و فست کلیک اشاره کرد که تبلیغات شمارو در سایت های پربازدید مانند خبرگزاری ها و روزنامه ها و سایتهای ورزشی نمایش میدهند. البته منظورم از تبلیغات شما، در صورتیکه شما دارای کسب و کاری باشید و بخواهید در سایتهای معتبر بعنوان تبلیغ دهنده تبلیغ کنید و البته میتوانید بعنوان نمایش دهنده تبلیغ در وبسایتتان کسب درآمد کنید. مدیا اد و یکتانت هم جزء پلتفرم های تبلیغات اینترنتی هستند.بازاریابی رابطه ایهمانطور که احتمالا با این روش آشنا هستید حتی در ایران هم وبسایتهایی هستند که برای بالا بردن میزان مخاطبان و مشتریانشان به شما پیشنهاد همکاری میدهند و در صورتیکه به واسطه شما مشتری و یا مخاطب جدید به وبسایت مراجعه کند و عملی را انجام دهند مانند انجام یک خرید، کمیسیونی به شما بابت این دعوت تعلق می گیرد، معمولا به شما یک لینک بازاریابی میدهند که شما میتوانید این لینک را اگر وبسایت دارید داخل وبسایتتان و یا داخل ایمیل برای دوستان و آشنایانتان بفرستید. این شیوه تحت عنوان بازاریابی آشناسازی معرفی میشود.بازاریابی آشناسازی (به انگلیسی: Affiliate marketing) یک روش بازاریابی است که در آن کسب و کار به یک یا چند نفر که بازدید‌کننده یا مشتریانی را به کسب و کار ارجاع داده‌اند، پاداش می‌دهد. برای مثال سایت‌ها برای ارجاع بازدیدکنندگان جدید یا خریداران جدید هدیه یا مبلغی را به شخصی که معرفی را انجام داده پرداخت می‌کنند. این صنعت چهار بازیگر اصلی دارد: کالا، شبکه، ناشر و مشتری.بازاریابی آشناسازی نوعی از بازاریابی است که محصولات و خدمات دیگران را در قبال دریافت کمیسیون برای فروش یا ارائه خدمات در سایت، وبلاگ یا از طریق لینک‌های که در اختیار شما قرار داده می‌شود، به صورت آنلاین به کاربران دیگر معرفی کنید.از جمله وبسایت های ایرانی ارائه دهنده خدمات همکاری در فروش سیستم کسب و کار دیجی کالا و وبسایت فروش فیلم و سریال الیت لند هستند.وبسایت های خارجی زیادی هم مانند Awin وجود دارند که بصورت یک پلتفرم هم برای تبلیغ دهنده ها (افراد و شرکتهایی که میخواهند بازاریابی رابطه ای برای کسب و کارشان راه اندازی کنند) و هم برای نشر دهنده ها (یعنی افرادی که وبسایت و وبلاگ و ... دارند و میخواهند کسب درآمد کنند مانند شما) و یا شرکتهایی که خود خدمات بازاریابی رابطه ای را بصورت اختصاصی راه اندازی کرده اند، که میتوانید در این زمینه فعالیت کنید.راه اندازی سرویس اینترنتیسرویس اینترنتی خیلی اصطلاح بزرگی هست، شاید بتوان گفت دو مورد قبل هم زیر مجموعه این عنوان قرار میگیرند. منظورم از سرویس اینترنتی، سرویسی است که شامل یک وب اپلیکیشن هست و با اتصال به درگاه پرداخت بانکی یک سرویس را بصورت اتوماتیک یا با حداقل نظارت شما انجام میدهد و مونجر به کسب درآمد برای شما میشود. ایده های زیادی برای این بخش وجود دارند که البته کمی فنی هستند، امروزه افراد زیادی هستند که نیاز به راه اندازی وبسایت برای کسب و کارشان دارند، خدمات وبسایت میتواند یک ایده (البته نه چندان جدید ولی با تلاش و تبلیغات پردآمد! ) خوب در این زمینه باشد. مانند فروشگاه اینترنتی که در بخش قبل توضیح دادم راه اندازی وبسایت هم نرم افزارهای متن باز (مجانی) زیادی مانند جوملا و وردپرس  وجود دارند که میتوانید برای راه اندازی وبسایت مشتریان خود از آنها استفاده کنید. سیستم هایی وجود دارند مانند WHMCS که فرآیند ثبت سفارش و انجام سفارشات مشتریان را برای شما خودکار میکنند که نسخه های فارسی این سیستم ها هم موجود هستند، برای راه اندازی سایت شرکتتان میتوانید از این نرم افزارها استفاده کنید. میتوانید برای خدمات ثبت دامنه و هاست از یکی از شرکتهای مطرح این زمینه مانند هاست ایران و یا رادکام نمایندگی بگیرید. البته کار وبسایت کمی دردسر دارد ولی برای شروع یک کار درآمدزا بد نیست.نمونه ای از ایده های سرویس های اینترنتی :خدمات وبسایت (خدمات دامنه، میزبانی وب، طراحی سایت، راه اندازی فروشگاه اینترنتی و ... )شارژ سیمکارت (همراه اول، ایرانسل، رایتل و ... )تبلیغات پیامکی و مسابقات پیامکیسیستم فرم ساز آنلاین (مانند فرمالو)و ...آزمون نرم افزار هاوبسایتهایی وجود دارند که در مقابل تست نرم افزارهای شان به شما پورسانتی تعلق می گیرد. در این وبسایت ها شما بعنوان آزمونگر (Tester) ثبت نام میکنید و با کمی آشنایی با خواندن و نوشتن به زبان انگلیسی میتوانید کار کنید:www.UserTesting.comwww.Userlytics.comwww.TryMyUI.comwww.UserFeel.comwww.WhatUsersDo.comنوشتن و فروش کتاب و جزوهدر صورتیکه در موضوع خاصی تخصص دارید میتوانید با نوشتن کتاب و جزوه های کم حجم آنها را بفروشید (البته اگر در ایران میخواهید بفروشید یادتان باشد محتوا آن خلاف قوانین نشر کتاب نباشد!)، دو سایت اینترنتی معروف برای فروش کتاب و جزوه شامل موارد زیر هستند:https://www.stuvia.com/https://nexusnotes.com/در ایران بشتر سایتهای دانلود نرم افزار و کتاب هستند که در این حیطه کار میکنند ولی سایت تخصصی در زمینه فروش کتاب های شخصی و جزوه ندیده ام. اگر موردی رو میشناسید معرفی کنید.صد البته همانطور که میدانید اگر دوست ندارید کتابتان کپی شود باید تمهیداتی هم برای آن در نظر بگیرید.کارهای علمی - هنری در یوتیوب و اینستاگراماگر در موسیقی، بازیگری، هنرهای ورزشی و یا هر هنر دیگری فکر میکنید استعداد دارید میتوانید در یوتیوب و اینستاگرام و فیس بوک و آپارات به اشتراک بگذارید و برای خود مخاطب جذب کنید و با انجام تبلیغات اینترنتی و یا گرفتن سفارش به کسب درآمد بپردازید. امروزه کم نیستند افرادی که در یوتیوب و اینستاگرام کارهای هنری انجام میدهند مانند ضبط دوربین مخفی، اجرای موسیقی و آواز و کارهایی ازین دست، افرادی مانند آیدین زواره ای و یا مهیار حسن که دوربین مخفی می سازند و برای خود بیش از یک میلیون فالوئر جمع کرده اند و البته در یوتیوب و آپارت هم ویدئوهای خودشون رو به اشتراک می گذارند. البته این افراد استعداد درونی طنز دارند و ازین استعداد خودشون خوب استفاده میکنند.ویا آقای سروش رضایی که معروف ترین انیمیشن هارو به نام سوریلند در یوتیوب و آپارات میسازد. میتوانید مانند آقای رضایی برای کارهای خودتان اسپانسر بگیرید و ازین طریق کسب درآمد کنید. نکته ای که وجود داره اگر کارهای این افراد را ببینید متوجه میشوید که هیچیک برای انجام کارشان سرمایه یا ابزار خاصی استفاده نمیکنند، مثلا انیمیشن های آقای رضایی بسیار ساده هستند و با یک نرم افزار انیمیشن سازی ساده میتوان آنها را طراحی کرد، اما نکته اصلی در موضوع و هنر آنها در بیان مطالب و شیوه بیان مطالب هست که بیننده را به خنده میاندازد، در واقع این استعداد درونی آنهاست که آنرا خوب کشف کرده اند و خوب از آن استفاده میکنند.ویا در صورتیکه تخصصی دارید مانند آموزش زبان انگلیسی میتوانید در یوتیوب و اینستاگرام به آموزش بپردازید مانند فرازبان که بیش از سه میلیون بازدید در یوتیوب داشته است که در واقع نسخه ایرانی انگ وید هست:https://www.engvid.com/البته بهتر بود آموزش رو در بخش تدریس اینترنتی می آوردم، اما چون بیشتر این آموزش ها یوتیوب محور و اینستاگرام محور هستند در این بخش آوردم. البته آموزش هم میتواند نوعی هنر باشد.رمز ارز هاکار در حوزه رمز ارزها و ماینینگ بسیار متنوع است. از دستگاه های ماینینگ بگیرید تا بازی های آنلاین که از توان پردازشی کاربران استفاده میکنند. شما میتوانید با راه اندازی یک وبسایت پربازدید یا تولید یک بازی اینترنتی و نوشتن چند خط کد ساده جاوااسکریپت به استخراج بیت کوین یا سایر رمز ارز ها بپردازید، البته قبلش هم باید به کاربرانتان این موضوع را اطلاع دهید!با توجه به گستردگی و اقبال عمومی که در حوزه ارزهای دیجیتال مطرح هست برای فعالیت در این موضوع مطلب جداگانه ای را خواهم نوشت.بازار بورس سهام و ارزخودم در این حیطه کار نکردم، اما برای کامل بودن مطلب در اینجا اشاره ای میکنم.برای کار در بازار بورس سهام باید دانش تخصصی داشته باشید و با افراد متخصص در این حوزه مشورت کنید، برای کار در این حوزه قاعدتا نیاز به مقداری سرمایه دارید، و البته این را در نظر داشته باشید اگر مهارت و دانش کار در این حوزه را نداشته باشید ممکن است سرمایه خود را از دست بدهید!دو پلتفرم بزرگ برای ورود به این حوزه وبسایت های Plus500 و eToro.com هستند. حتما تبلیغات eToro.com رو در یوتیوب و سایتهای پربازدید دیده اید، eToro.com بیش از هشت میلیون کاربر در سراسر دنیا دارد و یکی از معروف ترین پلتفرم های سرمایه گذاری آنلاین است.مورد دیگه ای که امروزه بسیار در ایران به سر زبان ها افتاده است بازار ارز فارکس است! تبادلات ارز خارجی (که فارکس و یا FX نیز نامیده می شود) به بازار جهانی و بدون مکان (OTC) اشاره دارد که در آن معامله گران، سرمایه گذاران، موسسات و بانک ها و صرافی ها به دنبال خرید و فروش ارزهای جهان هستند. معاملات در &quot;بازار بین بانکی&quot; انجام می شود، یک کانال آنلاین که ارزها 24 ساعته در پنج روز از هفته در آن معامله می شوند. فارکس یکی از بزرگترین بازارهای تجارت است و گردش مالی روزانه آن بیش از 5 تریلیون دلار است. در این زمینه میتوانید گوگل کنید و شرکتهای ایرانی و خارجی فعال در این حوزه رو شناسایی کنید. کار کردن در این بازار ها نیاز به مطالعات و آموزش حداقل شش ماهه دارد و خودش میتواند موضوع چندین جلد کتاب باشد ! اگر پیش زمینه و تخصصی در این زمینه ندارید ورود به این بازارها ریسک بالایی دارد.این مطلب فقط جنبه معرفی و آموزشی دارد و هیچ توصیه سرمایه گذاری به شما نمیکند، حواستان باشد سرمایه گذاری در این بازارها ریسک بسیار بالایی دارد !بخش دوم : روشهای بدون نیاز به تخصصهمانطور که پیشتر گفتم این روش ها را توصیه نمیکنم چرا که درآمد بالایی ندارند وتبعا نیازی هم به تخصص ندارند و گاهی اوقات سایتهایی پیدا میشوند که جز سوء استفاده از حضور شما در آنها و بالا بردن ترافیک سایتشان چیزی عاید شما نمیکنند و گاهی اوقات باعث اتلاف وقت میشوند. بهرحال باید تحقیق کرد و روی آنهایی کار کرد که معتبر هستند و بتوانید حداقل درآمدی که ارزش و قابلیت تبدیل به ریال داشته باشد پیدا کنید.پرسشنامه های آنلاینبرخی وبسایت ها هستند که در زمینه جمع آوری نظرسنجی و اطلاعات با اهدافی مانند وفاداری مشتریان و یا استفاده در پروژه های یادگیری ماشین و هوش مصنوعی فعالیت میکنند و با کمک گرفتن از تعداد زیادی از کاربران اینترنت درصدی هم پورسانت به این کاربران پرداخت میکنند. گاهی به این وبسایت ها GPT گفته میشود که در مقابل انجام کاری به شما مبلغی پرداخت میکنند (Get Paid To)، البته این مطلب میتواند تا حدودی با بحث جمع سپاری همپوشانی داشته باشد که در بخش های بعدی توضیح داده ام :TolunaSwagbucksInboxPoundshttps://www.slicethepie.com/کسب درآمد از طریق جستجو در وب!با ثبت نام در وبسایت کیومی (www.QMee.com) میتوانید از طریق جستجوی وب و پرسشنامه های آنلاین کسب درآمد کنید. برای استفاده از این روش باید وی پی ان خود را بر روی یکی از سرورهای ایالات متحده، بریتانیا و یا استرالیا تنظیم کنید، چون فقط با آی پی های این کشورها کار میکند، میتوانید از نرم افزار خوبی مثل Speedify استفاده کنید که سرعت خوبی هم دارد. در این روش با جستجو و خرید در سایتهای گوگل، یاهو، آمازون، بینگ و ای بی میتوانید کسب درآمد کنید، هچنین در این سایت هم مانند روش قبل پرسشنامه های آنلاین وجود دارد. به محض ثبت نام ده سنت به شما تعلق می گیرد.روش کار به اینگونه است که با ثبت نام در این سایت و دانلود افزونه مخصوص مرورگر وب و نصب آن کلیه جستجوهای شما در سایتهای مذکور رو رهگیری میکند. همچنین با نصب برنامه مخصوص موبایل هم میتوانید از قابلیت های آن روی گوشی خود استفاده کنید. کارگران کلیکیبرای توضیح این بخش ابتدا لازم است با مفهوم جمع سپاری آشنا بشید، متن زیر از ویکی پدیای فارسی کپی شده :جمع‌سپاری یا انبوه‌سپاری (به انگلیسی: Crowdsourcing) ترکیبی از دو کلمه جمعیت و برون‌سپاری به معنای برون‌سپاری به انبوه مردم است. جمع‌سپاری نوعی برون‌سپاری است ولی نه به شرکت‌ها یا سازمان‌های خاص بلکه به گروه فراوانی از افراد ناشناخته. ناشناخته به این معنا که یک شرکت نمی‌تواند جمعیت خویش را بسازد. این جمعیت هم شامل افراد کارآمد می‌شود و هم بی‌تجربه .این کار معمولاً از طریق فراخوان عمومی در اینترنت انجام می‌شود. تمرکز جمع سپاری بر مشارکت دادن جمعیت در فعالیت‌هایی چون حل مسئله، تولید و توسعه مفاهیمی چون مشارکت در ایده سازی، نوآوری، تولید و فرایندهای ارائه خدمات است که بر کیفیت محصول، وفاداری و خشنودی مشتری اثری مستقیم دارد. غیر متمرکز بودن، غیررسمی بودن، عمودی و افقی بودن ارتباطات، در انحصار نبودن اطلاعات، از جمله مواهب جمع‌سپاری می‌باشد. مدل کسب وکار جمع‌سپاری تمرکز بر مشارکت داوطلبانه جمعیت جهت تولید فراورده‌های نوآورانه دارد.جمع سپاری در تلاش برای جذب ایده‌های جدید در فرایند نوآوری بسیاری از بنگاه‌ها امروزه در حال گسترش حوزه‌های مدیریت دانش و برون‌سپاری خلاقیت است. این ایده توسط «هاو» در سال ۲۰۰۶مطرح شده‌است. با تعریف بالا مشخص شد که منظور ما از کارگران کلیکی چیست، البته کارگران کلیکی یک اصطلاح هست بلکه این کارگران یا کاربران میتوانند انسان های متخصصی باشند. پلتفرم های جمع سپاری در واقع واسطه ای هستند بین کاربران اینترنت و کسب و کارهایی که می خواهند امور خود را برون سپاری کنند. معتبرترین این پلتفمر ها Amazon Mechanical Turk و وبسایت کلیک ورکر هستند :https://www.clickworker.com/https://www.mturk.com/در این وبسایت توضیحات خوبی در مورد آمازون میکانیکال ترک داده شده : https://thehustle.co/making-money-on-amazon-mechanical-turk/ در ایران نیز اخیرا و در تاریخ 31 اردیبهشت 95، برای اولین بار در خاورمیانه همایش بین المللی Crowdsourcing Week در تهران برگزار شد. هدف این همایش یک روزه، ایجاد فرصت پیدایش ایده های نوآورانه جدید در میان شرکت‌کنندگان درباره نقش کاتالیزور مانند اینترنت برای فعالیت و نوآوری اجتماعی بود. همچنین دیگر اهداف این همایش آشنا و درگیر کردن کارآفرینان و ارزش آفرینان ایرانی با این مهم و معرفی و متصل کردن آنها با فعالان و متخصصان جمع سپاری (Crowdsourcing &amp; Crowdfunding) از سراسر دنیا بود.انجام خرده کاری های اینترنتی و فریلنسریحتما برای شما هم پیش آمده که خرده کاری هایی داشته اید که به دلیل تمرکز روی کار اصلی تان فرصت انجام این خرده کاری ها را نداشته اید و اینقدر هم به صرفه نبوده که یک کارمند برای انجام این کارها استخدام کنید، اموری مانند تایپ و ترجمه، بروزرسانی وبسایت، کپی و پیست مطالب، اصلاح فایل ها و پوشه ها، قرار دادن پست در اینستاگرام و فیس بوک، بازاریابی تلفنی، پشتیبانی و مدیریت وبسایت، منشی تلفنی و ... .یکی از معروف ترین سایتهای انجام خرده کاری های اداری سایت فایور هست که اگر میخواهید درآمدی کسب کنید و یا خودتان یک شرکت هستید و میخواهید خرده کاری های خود را برون سپاری کنید میتوانید با عضویت در این سایت از خدمات آن استفاده کنید. نمیدونم توی ایران مشابه آن وجود دارد یا نه اما اگر موردی را شما میشناسید معرفی کنید تا در این بخش قرار بدهم.https://www.fiverr.com/تخصصی تر از سایت فایور سایت آپ ورک هست که برای دریافت خدمات حرفه ای مبلغی را باید بابت عضویت در آن بپردازید، البته نسخه بیسک که رایگان هست هم دارد. اگر تخصصی دارید و میخواهید تخصصی تر کار کنید میتوانید از خدمات این سایت استفاده کنید.https://www.upwork.com/به نوعی هر دوی این سایت ها نقطه اتصال آزاد کار ها (فریلنسرها) و کسب و کار ها هستند. البته وبسایتهای زیادی در این زمینه وجود دارند مانند فریلنسر که معروف ترین آنهاست و یا توپال :https://www.freelancer.comhttps://www.toptal.com و یا وبسایت های ایرانی مانند پارس کدرز یا پونیشا که برای به مناقصه گذاشتن پروژه های نرم افزاری و کار بصورت آزادکاری (فریلنسری) استفاده میشوند:https://parscoders.com/https://ponisha.ir/بازاریابی شبکه ایامروزه دیگه هرگسی حداقل یکبار اسم بازاریابی شبکه ای یا نتورک مارکتینگ را شنیده، دقت کنید بازاریابی شبکه ای بازاریابی هرمی نیست که در اکثر کشورهای دنیا از جمله ایران ممنوع و غیرقانونی است، شما در واقع با فروش محصولات یک شرکت کمیسیون دریافت میکنید و یا با معرفی افراد دیگر برای فروش محصولات کمک میکنید، امروزه با گسترش رسانه های اجتماعی و شبکه های اجتماعی اینترنتی کار در این حیطه هم راحتتر شده است، در ایران هم شرکتهای تولیدی زیادی هستند که ازین شیوه برای فروش محصولاتشان استفاده میکنند. در لینک زیر میتوانید فهرست شرکتهای دارای مجوز و فعال در زمینه بازاریابی شبکه ای را در وبسایت دبیرخانه نظارت بر کسب و کارهای فعال در بازاریابی شبکه ای مشاهده کنید.http://easnaf.ir/Forms/ActiveCorporateLists.aspx در این باره و شرکتهایی که در ایران کار میکنند میتوانید گوگل کنید.راه اندازی اجتماعات آنلاینزمان قدیم که نرم افزارهای پیامرسانی مانند واتسآپ و تلگرام مد نبود و گوشی های هوشمند اینقدر گسترش نیافته بودند اعلب اجتماعات آنلاین شامل گروه های ایمیلی (مثل یاهو گروپس و گوگل) و تالارهای گفتگو بودند، اما امروزه کانال های تلگرامی زیادی هستند که بیش از یک میلیون عضو و بازدید کننده دارند که اغلب تفریح محور هستند و از طریق تبلیغات و اسپانسر کسب درآمد میکنند، شما هم اگر موضوعی دارید و یا سبک خاصی در نظر دارید برای راه اندازی یک کانال تلگرامی مانند راه اندازی کانال خبری ورزشی طنزگونه میتوانید مخاطبان زیادی جذب کنید.خرید و فروش در شبکه های اجتماعییکی از بازارهای اینترنتی رو به رشد فعالیت های تجاری در شبکه های اجتماعی است. اصطلاح تجارت فیسبوکی یا F-Commerce اصطلاحی است که امروزه زیاد به گوش میخورد. همانطور که میدانید شبکه های اجتماعی زیادی وجود دارند در موضوعات مختلف، دوتا از بازارهای اینترنتی رو به رشد یعنی آمازون و فیسبوک فرصت های کاری خوبی را برای خرید و فروش فراهم کرده اند :Amazon MarketplaceFacebook Marketplaceحضور و فعالیت در شبکه های اجتماعی نیاز به فعالیتهایی مانند بازاریابی رسانه های اجتماعی (SMM) و بهینه سازی سایتهای اینترنتی برای سازگاری در شبکه های اجتماعی مانند قرار دادن Social Card ها دارد که شما باید کمی دانش تخصصی داشته باشید.البته به دلیل فیلتر بودن فیسبوک در ایران و یا تحریم بودن ایران خیلی کسب و کارهای فعالی از داخل ایران در این زمینه حضور ندارند اما هستند کسب و کار هایی که کم و بیش در این محیط ها کارمیکنند و درآمد مطلوبی دارند.بیشتر بخوانید:کسب درآمد از اینترنت با 14 راه پولساز و بدون نیاز به سرمایهآموزش جامع کسب درآمد از اینترنت توسط احمد کلاته- برای نوشتن این مطلب از مطالب صفحات زیر استفاده کرده ام :فوربسسیو د استیودنتبدیهی است کار در هریک از این موارد نیازمند تلاش و پشتکار و تمرکز زیاد است و حداقل فرصت سه ماهه برای شروع کار خود و به نتیجه رسیدن باید در نظر بگیرید. امیدوارم این مطلب براتون مفید بوده باشه و با شرایط فعلی جامعه فرصتی باشه برای پیشرفت شغلی، مالی و تخصصی شما.خوشحال میشم هر نظری و انتقادی دارید توی کامنت ها منعکس کنید و یا اگر موردی نیاز به اصلاح هست بگید تا اصلاح کنم.ارادتمندم.</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Tue, 03 Mar 2020 22:14:26 +0330</pubDate>
            </item>
                    <item>
                <title>گرفتن کوئری های سریع با Azure Data Studio</title>
                <link>https://virgool.io/SoftwareEngineering/%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D9%87%D8%A7%DB%8C-%D8%B3%D8%B1%DB%8C%D8%B9-%D8%A8%D8%A7-azure-data-studio-eilquhjrqtl1</link>
                <description>اگر پیگیر اخبار ابزارهای برنامه نویسی مایکروسافت باشید احتمالا میدانید که چند ماه پیش مایکروسافت ابزار SQL Operations Studio را برای ارتباط با بانک های اطلاعاتی و نوشتن کوئری به همراه ده ها امکانات دیگر معرفی کرد.نسخه جدید این ابزار با نام Azure Data Studio در واقع یک محیط سبک و سریع برای نوشتن و ویرایش پرس و جو های بانک اطلاعاتی است، این نرم افزار متن باز مانند ویژوال استادیو کد مبتنی بر چهارچوب الکترون طراحی شده و قابل نصب بر روی مکینتاش و لینوکس و ویندوز است.هرچند مانند SSMS بعنوان محیط توسعه اصلی سیستم مدیریت بانک اطلاعاتی SQL Server نمیتواند عمل کند اما برای نوشتن کوئری های سریع و بعنوان یک محیط سبک بسیار کارآمد است.امروز این نرم افزار رو نصب کردم و به نظر ابزار خوبی میاد، توصیه میکنم امتحانش کنید.</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Fri, 20 Sep 2019 00:35:23 +0430</pubDate>
            </item>
                    <item>
                <title>جاوا اسکریپت، آچار فرانسه برنامه نویسی</title>
                <link>https://virgool.io/SoftwareEngineering/%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%A2%DA%86%D8%A7%D8%B1-%D9%81%D8%B1%D8%A7%D9%86%D8%B3%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-xrhxqpnciwbc</link>
                <description>شاید بیست و سه سال پیش (از لحظه نگارش این مقاله) یعنی سال 1995 شرکت نت اسکیپ و طراحان زبان لیو اسکریپت تصورش را هم نمی کردند که زبانی به نام لیو اسکریپت که بعدها به دلیل شباهت هایی که با زبان جاوا داشت و نام آنرا به جاوا اسکریپت تغییر دادند (البته هم اکنون هم زبانی به همین نام وجود دارد که به جاوا اسکریپت ترجمه میشود) اینچنین گستردگی و نفوذی در دنیای نرم افزار پیدا کند. اگر کسی برای شروع برنامه نویسی از من سوال کند که چه زبانی را کار کنم که امکان طراحی انواع برنامه های وب و موبایل و دسکتاپ داشته باشم که روی تمام سیستم های عامل قابل اجرا باشد من زبان جاوا اسکریپت را پیشنهاد میکنم، شما چه یک توسعه دهنده سمت کلایت (Front-End Developer) باشید، چه یک توسعه دهنده سمت سرور (Back-End Developer) و چه یک برنامه نویس رومیزی (Desktop Developer) باشید و بخواهید روی اکثر سکوهای نرم افزاری (Software Platform) برنامه طراحی کنید میتوانید از جاوا اسکریپت استفاده کنید.این مطلب در واقع هم یک نقشه راهیست برای افرادی که میخواهند برنامه نویسی با این زبان را شروع کنند و هم مروری بر کاربردهای مختلف جاوااسکریپت برای افرادی که تجربه برنامه نویسی دارند است، اما بیشتر با توجه به کلی بودن مطلب و عدم توضیح جزئیات و کدنویسی از ادبیات مبتدی استفاده کرده ام.خیلی سعی کردم این مقاله را اینجا منتشر کنم اما متاسفانه ویرگول موفق به انتشار مقاله نشد، لذا نسخه پی دی اف مقاله را برای دانلود قرار دادم.نسخه ویرایش شده و کاملتر را میتوانید اینجا دانلود کنید. (28 شهریور 1398)</description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Mon, 16 Sep 2019 01:52:34 +0430</pubDate>
            </item>
                    <item>
                <title>دوازده ابزار نرم افزاری عیب یابی و نگهداری شبکه در ویندوز</title>
                <link>https://virgool.io/SoftwareEngineering/%DB%8C%D8%A7%D8%B2%D8%AF%D9%87-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C-%D9%BE%D8%B1%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%B9%DB%8C%D8%A8-%DB%8C%D8%A7%D8%A8%DB%8C-%D9%88-%D9%86%DA%AF%D9%87%D8%AF%D8%A7%D8%B1%DB%8C-%D8%B4%D8%A8%DA%A9%D9%87-%D8%AF%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-spxyinxuu0r0</link>
                <description>یازده ابزار نرم افزاری پرکاربرد عیب یابی شبکه در ویندوزدر بسیاری از سازمان ها و شرکتهای که از زیرساخت شبکه های کامپیوتری عریض و طویل استفاده میکنند معمولا عیب یابی شبکه کاری پیچیده و تخصصی است که کارمندان عادی (کاربران عادی) معمولا آشنایی چندانی با آن ندارند، شاید این مطلب برای بسیاری از کاربران حرفه ای تکراری و قدیمی باشد اما در این مطلب قصد دارم یازده ابزار مفید و پرکاربرد در عیب یابی و نگهداری شبکه های کامپیوتری در سیستم عامل ویندوز ارائه دهم، از آنجائیکه اغلب کاربران عادی در ایران از سیستم عامل ویندوز استفاده میکنند من هم همین سیستم عامل را انتخاب کردم، هر چند اکثر این ابزارها با همین نام در سیستم های عامل شبه یونیکس هم وجود دارند. برای هر چهارده ابزار یک کاربرد مختصر، یک توضیح مختصر و چند مثال از مهمترین کاربردهای آن آورده شده است.همین الان که این مقاله را مطالعه میکنید (اگر با سیستم ویندوز اینکار را میکنید) میتوانید با زدن کلید Windows+R و تایپ CMD وارد محیط Command Prompt ویندوز بشید و این فرمان ها (ابزارها) را تست کنید. امید که مفید باشد.ابزار Pingکاربرد : بررسی دسترسی به یک میزبان (سرویس دهنده، سرویس گیرنده و یا هر دستگاه متصل در شبکه)توضیح مختصر : شاید آشنا ترین و پرکاربردترین ابزاری که هر کاربری در طول روز از آن استفاده میکند ابزار پینگ باشد، اکثر ما برای بررسی اتصال به اینترنت شاید چندین بار سایتهایی مانند گوگل را پینگ کرده باشیم و یا برای بررسی اتصال یک چاپگر شبکه نشانی آن را پینگ کرده باشیم. پینگ برنامه ای است که با ارسال بسته های (پاکت های) درخواست از طریق پروتکل ICMP و انتظار دریافت پاسخ از میزبان، خلاصه ای از تعداد پاسخ های دریافت شده و مدت زمان دریافت پاسخ ها و میزان گم شدن بسته ها و گزارش خطاهای مربوطه را به ما ارائه میدهد. در بسیاری از سیستم های عامل این برنامه با همین نام وجود دارد و در نسخه ششم پروتکل اینترنت (IPv6) با نام ping6 شناخته میشود. در برخی سیستم های عامل دستورات hping نیز وجود دارند که میتوانید در این زمینه بیشتر سرچ کنید.مثالی از فرمان ها:C:\&gt; ping google.comهمانطور که مشاهده میکنید پینگ 32 بایت داده را در چهار درخواست به سرور گوگل ارسال میکند که هر چهار پاکت پاسخ داده میشود و صفر درصد گم شدن پاکت وجود دارد که به معنای این است که ارتباط با سرور گوگل به خوبی برقرار است. به جای گوگل میتوانید هر مقصدی مانند چاپگر شبکه، اکسس پوینت و یا روتر شبکه سازمانی را پینگ کنید.برای مشاهده راهنمای این فرمان میتوانید از سوئیچ ?/ استفاده کنید :C:\&gt; ping /?اجرای فرمان بدون محدودیت زمانی تا زمانیکه Ctrl+C را بزنید:C:\&gt; ping –t google.comمشخص کردن تعداد درخواست های ICMP ، در صورت عدم استفاده از گزینه –n برنامه پینگ بصورت پیشفرض از تعداد چهار درخواست استفاده میکند:C:\&gt; ping –n 4294 google.comاستفاده از گزینه -l برای مشخص کردن اندازه پاکت های ICMP از شماره 32 تا 65527 بر حسب بایت، بصورت پیشفرض این اندازه 32 بایت است :C:\&gt; ping –l 650 google.comاستفاده از گزینه -i برای مشخص کردن زمان زنده بودن بسته (TTL) که حداکثر آن 255 است:C:\&gt; ping –i 250 google.comتست لوپ بک (Loopback Test)، پینک کردن آدرس 127.0.0.1 راه بسیار ساده ای برای تست تنظیمات اولیه شبکه در ویندوز است اما اطلاعاتی دیگری در مورد دستگاه های متصل به شبکه و یا سخت افزارهای شبکه نمی دهد:C:\&gt; ping 127.0.0.1مشابه این فرمان در نسخه شش اینترنت (IPv6) برابر ping ::1 است.اطلاع از نام هاست یک نشانی اینترنتی :C:\&gt; ping –a 216.58.207.46ابزار NSLookUpکاربرد : بررسی نام های دامنه و نگاشت نشانی های اینترنت به هر نامتوضیح مختصر :همانطور که احتمالا میدانید سیستم نام دامنه یا DNS و یا سرور نام دامنه (هر دو صورت صحیح است) سروری است که نام دامنه را به نشانی های آی پی ترجمه میکند یعنی وقتی شما آدرس گوگل را در مرورگر خود تایپ میکنید (www.Google.com) سرور نام دامنه آن را به نشانی آی پی گوگل یعنی 216.58.207.46 ترجمه میکند. در صورتیکه شما در شبکه سازمانی تان سروری برای نگهداری وبسایت داشته باشید احتمالا یک سرور نام دامنه (DNS) هم دارید لذا با این فرمان قادر خواهید بود اطلاعات مربوط به نام ها و نشانی های آی پی را پرس و جو کنید. سرورهای نام دامنه رکوردهای مختلفی دارند که با گزینه های مختلف با این ابزار میتوانید این رکوردها را بررسی کنید. معادل این ابزار در محیطهای شبه یونیکس ابزارهای host و dig هستند. دستور nslookup به دو روش تعاملی و غیر تعاملی کار میکند، در حالت تعاملی کافیست دستور nslookup را بدون هیچ آرگومان و گزینه ای وارد کنید تا وارد خط فرمان آن شوید.مثالی از فرمان ها:پیدا کردن رکورد A یک دامنه مانند www.Google.com :C:\&gt; nslookup google.comپیدا کردن رکوردهای Aپیدا کردن رکوردهای NS گوگل :C:\&gt; nslookup –type=ns Google.comپیدا کردن رکوردهای NSپیدا کردن رکوردهای SOA گوگل :C:\&gt; nslookup –type=SOA Google.comپیدا کردن رکوردهای SOAپیدا کردن رکوردهای MX که برای تبادل ایمیل استفاده میشود :C:\&gt; nslookup –type=MX Google.comپیدا کردن همه رکوردهای DNS برای یک دامنه (گوگل) :C:\&gt; nslookup –type=any Google.comبررسی رکوردهای DNS از روی نشانی (Reverse DNS Lookup) :C:\&gt; nslookup 216.58.207.46پرس و جوی DNS با فعال کردن حالت دیباگ، با فعال کردن حالت دیباگ اطلاعات دقیقتری برای رکوردهای نام دامنه گزارش میشوند:C:\&gt; nslookup -debug example.comتغییر شماره پورت (بصورت پیشفرص سرور DNS از شماره پورت 53 استفاده میکند):C:\&gt; nslookup -port=56 example.comابزار HostNameکاربرد : نمایش نام هاست (میزبان) جاریتوضیح مختصر :با این فرمان میتوانید نام میزبان جاری یعنی سیستمی که با آن مشغول کار هستید را بگیرید، این نام معمولا در برنامه های سروری مانند SQL Server و نرم افزارها برای ارتباط با بانک اطلاعاتی استفاده میشود. بعبارت صحیحتر نام میزبان نامی است که کامپیوتر شما در شبکه با آن نام شناخته مبشود، دقت داشته باشید نام هاست (میزبان) با نام دامنه مانند www.Google.com متفاوت است و نباید با آدرس اینترنتی (FQDN) اشتباه گرفته شود (البته یک نام میزبان هم میتواند آدرس اینترنتی باشد اما هر آدرس اینترنتی نام میزبان نیست). معمولا وقتی نرم افزارها را در سیستم های شبکه جابجا میکنید و یا نیاز به نصب نرم افزاری بر روی یک سیستم جدید دارید برای ارتباط با بانک اطلاعاتی نیاز به داشتن نام میزبان که بانک اطلاعاتی روی آن نصب است دارید.  مثالی از فرمان ها:نمایش نام هاست جاری :C:\&gt; hostnameهمچنین به جای این دستور میتوانید از دستور زیر با اطلاعات کاملتر دسترسی پیدا کنید (این دستور بعدا معرفی شده است):C:\&gt; ipconfig /allدستور زیر نیز همان کار را انجام میدهد :C:\&gt; nbtstat -nدر ویندوز با تغییر نام کامپیوتر در کنترل پنل میتوانید نام میزبان خود را تغییر دهید.ابزار Netکاربرد : مدیریت منابع شبکه، اطلاعات کلی تنظیمات شبکهتوضیح مختصر :این فرمان که از نام آن پیداست بابت دریافت اطلاعات کلی شبکه، حساب های کاربری، سیستم های شبکه، زمان شبکه و سایر اطلاعات مرتبط میباشد، این ابزار نیز مانند دیگر ابزارهای شبکه در سایر سیستم های عامل مانند مکینتاش و لینوکس وجود دارد که تعداد زیر فرمان ها و گزینه های آن بسته نوع سیستم عامل متفاوت است.مثالی از فرمان ها:تنظیمات مربوط به حسابهای کاربری :C:\&gt; net accountsنمایش حسابهای کاربری برای میزبان جاری (سیستمی که با آن این فرمان را اجرا میکنید) :C:\&gt; net userابزار Arpکاربرد : اطلاعات نگاشت آدرس های فیزیکی و آدرس های اینترنتی در شبکهتوضیح مختصر :نام این ابزار همنام پروتکلی است که با آن در ارتباط است لذا توضیح این پروتکل، کارکرد این ابزار را توصیف میکند، پروتکل ARP یا پروتکل تفکیک آدرس یک پروتکل لایه پیوند در شبکه است که وظیفه ترجمه مک آدرس (آدرس فیزیکی یا آدرس لایه پیوند) را به آدرس اینترنت (لایه اینترنت) دارد، همانطور که میدانید هر دستگاه (اعم از سیستم رایانه رومیزی، لپ تاپ، تبلت، گوشی موبایل و ...) دارای یک آدرس فیزیکی یا مک آدرس است که به کنترلر شبکه (کارت شبکه یا NIC) تخصیص داده میشود که برای شناسائی آن دستگاه در شبکه مورد استفاده قرار می گیرد. مک آدرس از شش گروه اعداد با مبنای هگزادسیمال تشکیل شده که معمولا با خط تیره و یا دو نقطه از هم جدا شده اند. اگر دستور زیر را بزنید میتوانید اطلاعات کارت شبکه سیستم خود به همراه مک آدرس آن را مشاهده کنید :C:\&gt; ipconfig /allکاری که پروتکل ARP انجام میدهد ترجمه آدرس مک به آدرس اینترنتی و برعکس است. پروتکل ARP از جدولی با نام جدول ترجمه آدرس برای اینکار انجام میدهد. در سیستم های عامل لینوکس برنامه های دیگری مانند arping، arpwatch و arptables برای کار با اطلاعات ARP وجود دارند که میتوانید در این مورد بیشتر سرچ کنید.مثالی از فرمان ها:برای مشاهده جدول ترجمه آدرس میتوانید از گزینه -a استفاده کنید :C:\&gt; arp -aمشاهده مک آدرس یک نشانی اینترنتی بخصوص :C:\&gt; arp -a 192.168.42.129اضافه کردن یک نشانی جدید بصورت دستی به جدول ARP:C:\&gt; arp -s 192.168.42.129 1a-a9-e8-74-2d-aaحذف یک نشانی اینترنتی بخصوص از جدول ARP:C:\&gt; arp -d 192.168.42.129ابزار Routeکاربرد : نمایش و دستکاری اطلاعات مسیریابی شبکهتوضیح مختصر :در مسیریاب های شبکه (روترها) و یا سیستم های شبکه که وظیفه مسیریابی را دارند جدولی وجود دارد به همین نام، جدول روتینگ (مسیریابی)، در صورتیکه بخواهیم این جدول را ببینیم و یا دستکاری کنیم میتوانیم از این ابزار استفاده کنیم (که به تغییر دادن این جدول بصورت دستی اصطلاحا مسیریابی ایستا گفته میشود).مثالی از فرمان ها:نمایش جدول مسیردهی محلی:C:\&gt; route printافزودن نشانی جدید به جدول مسیریابی :C:\&gt; route add &lt;ip_address&gt; &lt;mac_address&gt; &lt;subnet_mask&gt;حذف یک نشانی بخصوص از جدول :C:\&gt; route delete &lt;ip_address&gt;
ابزار TraceRTکاربرد : پیگیری مسیر بسته های شبکه و زمان های تاخیر در هر گره (Network Delays)توضیح مختصر :تریس روت که در محیط های سیستم های عامل شبه یونیکس با فرمان Traceroute و در سیستم های عامل ویندوز با فرمان TraceRT اجرا میشود برای بررسی مسیر (Route) و اندازه گیری تاخیرهای انتقال بسته های شبکه (Packets) مورد استفاده قرار میگیرد، شما از طریق این برنامه میتوانید ببینید ارتباط شبکه ای شما به یک خادم (سرور) از چه مسیرهایی عبور میکند و در هر گره چقدر تاخیر دارد، بسته به نوع پیاده سازی این ابزار در سیستم های عامل مختلف از درخواست های پروتکل ICMP و یا UDP استفاده میکند.همچنین نسخه های با رابط کاربر گرافیکی این برنامه نیز وجود دارند. نرم افزار پینگ پلاتر یکی ازین ابزارهای گرافیکی است که میتوانید نسخه چهارده روزه آن را دانلود و تست کنید.تریس روت برنامه ساده ای است که میتواند روی هر میزبان اینترنتی اجرا شود، هنگامی که کاربر نام میزبان مقصدی را مشخص میکند، این برنامه در میزبان منبع (یعنی رایانه شما) چندین بسته خاص (معمولا سه بسته) را به سمت آن مقصد ارسال میکند، هنگامی که این بسته ها برای رسیدن به مقصد تلاش میکنند از مجموعه ای از مسیریاب ها عبور میکنند، هنگامی که مسیریابی، یکی از این بسته ها را دریافت میکند، پیام کوتاهی به منبع (یعنی رایانه شما) میفرستد که حاوی نام و آدرس آن مسیریاب است. اگر N-1 مسیریاب بین منبع و مقصد وجود داشته باشد، منبع N بسته خاص را به شبکه ارسال میکند و هر بسته با مقصد نهایی آدرس دهی خواهد شد، منبع زمانی را ثبت میکند که بین زمان ارسال بسته و زمان دریافت پیام بازگشتی متناظر سپری شده است؛ همچنین نام و نشانی مسیریابی را که پیام را بر میگرداند ثبت میکند. در این روش منبع میتواند مسیر طی شده توسط بسته ها را از منبع به مقصد دوباره بسازد و منبع میتواند تاخیرهای رفت و برگشت (Delay) به تمام مسیریابهای میانی را تعیین کند. برنامه تریس روت این تجربه را سه بار تکرار میکند یعنی 3*N بسته را به مقصد ارسال میکند. در تصویر زیر اجرای این برنامه برای سرور گوگل را میبینید :اگر سیستم منبع کمتر از سه پیام پاسخ از هر مسیریاب (بسته به اتلاف بسته در شبکه) دریافت کند، تریس روت یک ستاره جلوی نشانی آی پی آن مسیریاب قرار میدهد و سپس کمتر از سه مرتبه رفت و برگشت را برای آن مسیریاب گزارش میکند، همانطور که میبینید طبیعی است که با دور شدن مسافت فیزیکی مسیریاب ها از تهران تا سرور گوگل ! مدت زمان تاخیر های رفت و برگشت به ترتیب بیشتر و بیشتر میشوند.در نسخه ششم پروتکل اینترنت (IPv6) این برنامه با نام tracert6 و یا traceroute6 شناخته میشود.مثالی از فرمان ها:دستورات تریس روت و گزینه های آن واضح هستند و نیازی به توضیح بیشتری ندارند:با اجرای دستور زیر میتوانید به راهنمای دستور تریس روت دسترسی پیدا کنید :C:\&gt; tracert --helpابزار PathPingکاربرد : ترکیب قابلیت های Ping و TraceRT در یک ابزارتوضیح مختصر :همانطور که از نام این ابزار بر میآید ترکیبی از قابلیت های مسیریابی (Path) و پینگ (Ping) با هم است که از ویندوز 2000 به سیستم عامل ویندوز اضافه گردید. لذا این ابزار فقط در سیستم عامل ویندوز موجود است، اما مشابه آن مانند MTR در سیستم های عامل با هسته لینوکس وجود دارند.مثالی از فرمان ها:C:\&gt; pathping google.comابزار NetStatکاربرد : پیدا کردن مشکلات شبکه و میزان ترافیکتوضیح مختصر :یکی از کاملترین و جامع ترین ابزارهای مدیریت و نگهداری شبکه ابزار نت استت است، اگر این فرمان را بدون هیچ گزینه ای وارد کنید به شما فهرستی از اتصال های فعال در سیستم را به همراه نوع پروتکل، نشانی آی پی، نام میزبان و وضعیت هرکدام میدهد.در خروجی فرمان هر ستون شامل موارد زیر است:Proto :به معنای نوع پروتکل TCP و یا UDPLocal Address :نشانی اینترنتی سیستم محلی و پورت مورد استفاده هر کدامForeign Address :نشانی اینترنت و شماره پورت سیستم ریموت State :وضعیت اتصالمثالی از فرمان ها:برای نمایش آمار فقط برای پروتکل UDP و یا TCP :C:\&gt; netstat -sp tcp
C:\&gt; netstat -sp udpبرای نمایش اتصالات TCP به همراه شناسه پروسس (PID) در هر پنج ثانیه (با کلیدهای ترکیبی Ctrl+C میتوانید اجرای هر دستوری را متوقف کنید) :C:\&gt; netstat -o 5برای نمایش اتصالات TCP فعال به همراه شناسه پروسس به حالت عددی (بدون نام میزبان) :C:\&gt; netstat -noنمایش اطلاعات کنترلر شبکه (NIC):C:\&gt; netstat -eنمایش اطلاعات پروتکل ها :C:\&gt; netstat -sنمایش جدول مسیردهی :C:\&gt; netstat -rابزار NbtStatکاربرد : نمایش آمار پروتکل ها و اتصالات TCP با استفاده از NBTتوضیح مختصر :در سیستم های قدیمی برای ارتباط دو یا چند سیستم در یک شبکه محلی از شبه پروتکلی استفاده میشد به نام نت بایوس (NetBIOS) که نحوه نام گذاری و آدرس دهی خاص خود را برای هر گره در شبکه داشت لذا برای برنامه های قدیمی که بر مبنای ابزارهای برنامه نویسی نت بایوس پیاده سازی شده اند جهت اتصال به اینترنت و استفاده از پروتکل اینترنت (TCP/IP) پروتکلی به نام NBT ایجاد شد که امکان اتصال برنامه های قدیمی را بر بستر پروتکل اینترنت ایجاد میکند (و امکان ترجمه نام های نت بایوس را به نشانی های آی پی در پروتکل اینترنت مهیا میکند).امروزه نت بایوس منسوخ شده است و تنها در صورتیکه در شبکه سازمانی تان از نسخه های بسیار قدیمی ویندوز و با برنامه های قدیمی بر مبنای نت بایوس استفاده میکنید این ابزار میتواند جهت نگهداری شبکه به شما کمک کند.با استفاده از دستورNBTSTAT می توان به اطلاعات مربوط به پروتکل های NBT، به جدول هایی که در آن اسم های NetBIOS قرار گرفته و مربوط به سیستم محلی و ریموت است دسترسی پیدا کرد و در صورت لزوم این اطلاعات را حذف و یا اصلاح کرد.مثالی از فرمان ها:نمایش کش محلی :C:\&gt; nbtstat -cنمایش فهرست نام های محلی :C:\&gt; nbtstat -nنمایش آمارهای ثبت شده :C:\&gt; nbtstat -rنمایش اجلاس سرویس ها :C:\&gt; nbtstat -s
ابزار IPConfigکاربرد : نمایش تنظیمات شبکه و اطلاعات پروتکل های DHCP و DNSتوضیح مختصر :همانطور که از نام این ابزار بر میآید پیکربندی های مربوط به پروتکل اینترنت و نشانی های اینترنتی با این ابزار انجام میشود. در صورتیکه این دستور را بدون هیچ گزینه و سوئیچی وارد کنید یک خروجی کلی از وضعیت شبکه به شما میدهد:مثالی از فرمان ها:نمایش همه اطلاعات شبکه :C:\&gt; ipconfig /all
تقاضای نشانی جدید از DHCP :C:\&gt; ipconfig /renewآزاد کردن نشانی از DHCP :C:\&gt; ipconfig /releaseنمایش کش DNS :C:\&gt; ipconfig /displaydnsپاک کردن کش DNS :C:\&gt; ipconfig /flushdnsخروجی گرفتن از تنظیمات :C:\&gt; ipconfig /batchابزار TaskListکاربرد : نمایش فهرست پردازش ها و سرویس های مرتبط با هرکدام.توضیح مختصر : این دستور مانند برنامه ی Task Manager ویندوز فهرستی از پراسس ها و شماره آنها و میزان حافظه مصرفی هرکدام را نمایش میدهد، این دستور مانند دستور ps در سیستم های عامل شبه یونیکس عمل میکند.فرمان tasklistمثالی از فرمان ها:نمایش سرویس های مربوط به هر پراسس:C:\&gt; tasklist -svcمکان فایل های dll مربوط به هر پراسس :C:\&gt; tasklist -mدستور Getmacکاربرد : پیدا کردن آدرس مک آداپتورهای شبکهتوضیح مختصر:این دستور برای نمایش آدرس مک یا Media Access Control (MAC) برای هر یک از آداپتورهای شبکه (NIC) میباشد.مثالی از فرمان ها:C:\&gt; GetMacخروجی :خروجی دستور گت مکسخن پایانی ابزارها و نرم افزارهای شبکه بسیار متنوع هستند، مطالعه ابزارهای FTP، Telnet و SSH را به همه کاربران تازه کار جهت ارتباط با دستگاه های متصل به شبکه توصیه میکنم، هدفم در این پست پرکاربردترین ابزارهای عیب یابی و نگهداری شبکه در ویندوز به زبان ساده بود اما سعی کردم بار علمی مطلب کم نشود. بعنوان اولین پستم در ویرگول و تست این ابزار جدید و اولین موضوعی که به ذهنم رسید امیدوارم مطلب مفیدی نوشته باشم. </description>
                <category>علیرضا زمانی</category>
                <author>علیرضا زمانی</author>
                <pubDate>Mon, 19 Aug 2019 01:08:07 +0430</pubDate>
            </item>
            </channel>
</rss>