نویسنده: admin

  • انتقال تعداد و حجم بالای فایل بین سرورها

    برای انتقال تعداد بالای فایل لازم است، انتقال به صورت موازی راه مناسبی است. یک راه استفاده از lftp و mirro است.

    https://www.cyberciti.biz/faq/lftp-mirror-example/
    http://moo.nac.uci.edu/~hjm/HOWTO_move_data.html#_parallel_rsyncs

  • رفع مشکل تحریم npm

    برای دور زدن رجیستری تحریم شده npm می‌توانید از رجیستری‌های جایگزین مانند https://iranrepo.ir/#npm استفاده کنید.

    همچنین در فایل Dockerfile نیز می‌توانید دستور RUN npm install را به صورت زیر تغییر دهید.

    RUN npm install --registry=https://npm.iranrepo.ir/
  • رفع مشکل تحریم داکر

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

    Get "https://registry-1.docker.io/v2/": net/http: TLS handshake timeout

    یک راه حل ساده استفاده از رجیستری جایگزین است. بر اساس مستندات داکر درمورد رجیستری جایگزین، برای تغییر رجیستری به https://docker.dockerme.ir فایل /etc/docker/daemon.json را به صورت زیر ویرایش کنید.

    {
      "registry-mirrors": ["https://docker.dockerme.ir"]
    }

    رجیستری‌های فعال ایرانی

    • https://docker.iranrepo.ir
    • https://docker.host:5000
    • https://docker.dockerme.ir
  • فایل سیستم توزیع‌شده چیست؟ معرفی چند پروژه متن باز فایل سیستم توزیع شده

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

    فایل سیستم‌های توزیع‌شده در عملکرد، تغییرپذیری محتوا، مدیریت نوشتن همزمان، مدیریت از دست دادن دائمی یا موقت گره‌ها یا ذخیره‌سازی، و سیاست ذخیره‌سازی محتوا متفاوت هستند.

    منبع: https://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems

  • بسته‌بندی (Bundling) جاوا اسکریپت

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

    در توسعه مدرن جاوا اسکریپت، کد شما وابستگی زیادی به ماژول‌های جاوا اسکریپتی دیگر دارد که معمولا در مسیر node_modules ذخیره شده‌اند.

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

    ابزارهای Bundling با همین منظور توسعه داده شده‌اند. برای مثال ابزار esbuild به صورت زیر کدها را بسته‌بندی می‌کند.

    مثال برای ESBuild

    کد شما که به پکیج‌های react و react-dom نیاز دارد را در نظر بگیرید:

    npm install react react-dom

    فایل app.jsx شامل کد زیر است:

    import * as React from 'react'
    import * as Server from 'react-dom/server'
    
    let Greet = () => <h1>Hello, world!</h1>
    console.log(Server.renderToString(<Greet />))

    باندل کردن کد توسط esbuild:

    ./node_modules/.bin/esbuild app.jsx --bundle --outfile=out.js

    این کد دیگر به مسید node_modules نیاز ندارد و همه چیز در فایل out.js قرار گرفته است. آن را توسط دستور node out.js اجرا کنید.

    <h1 data-reactroot="">Hello, world!</h1>
  • بیت کوین چگونه به کسب و کار شما کمک می‌کند؟

    بیت کوین چگونه به کسب و کار شما کمک می‌کند؟

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

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

    اضافه کردن یک روش پرداخت جدید کار خاصی نیست، اما اگر ارز مورد نظر بیت کوین باشد، مزیت‌هایی دارد که در ادامه به برخی از آنها اشاره می‌کنیم.

    راه اندازی سریع

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

    اگر از نرم افزارهایی نظیر WordPress استفاده می‌کنید، به کد نویسی هم نیاز ندارید و تعدادی پلاگین بیت کوینی آماده برای شما وجود دارد.

    بازارهای خارجی

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

    بنابراین اگر خدمات شما می‌توانند به خارج از کشور ارائه شوند، با بیت کوین به راحتی می‌توانید به فکر مشتریان خارجی و درآمد بیت کوینی (بهتر از درآمد دلاری) باشید.

    مشتریان جدید

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

    امکانات بیت کوین

    • هزینه انجام تراکنش‌های بزرگ، کم و ناچیز است.
    • به راحتی می‌توانید پول مشتری را برگردانید.
    • محدودیت در میزان تراکنش روزانه وجود ندارد.
    • امکان مسدود کردن حساب شما توسط سازمان یا نهادی وجود ندارد.
    • سایت معتبر برای خرید و فروش بیت کوین در ایران به صورت رسمی وجود دارد.
  • ایجاد نموارد توالی با استفاده از نرم افزار ویزیو (Create a UML sequence diagram with Visio)

    نمودار توالی UML نشان می‌دهد که چگونه مجموعه‌ای از اشیاء در طول زمان در یک فرآیند تعامل دارند. این نمودار پیامهایی را که بین شرکت کنندگان و اشیاء موجود در سیستم تبادل می‌شود و ترتیب وقوع آنها را نشان می‌دهد.

    نمودار توالی فرآیند دستگاه ATM
    نمودار توالی فرآیند دستگاه ATM

    در نمودار توالی فرآیند دستگاه ATM پیام‌های رد و بدل شده میان کاربر و دستگاه از زمان ورود کارت به داخل دستگاه، تا زمان دریافت پیام تشکر از سمت دستگاه، نشان داده شده است.

    ایجاد نمودار توالی در ویزیو

    برای ایجاد نمودار توالی، از قالب UML Sequence یا قالب Starter diagram استفاده کنید، این دو قالب شامل اشیاء مورد نیاز برای رسم نمودار توالی در شابلون ویزیو هستند. برای ایجاد نمودار باید این اشیاء را از شابلون به داخل کادر بکشید و نمودار خود را ایجاد کنید.

    • ویزیو را باز کنید و روی گزینه File > New کلید کنید.
    • در باکس جستجو عبارت UML sequence را تایپ کنید.
    • گزینه UML Sequence را انتخاب کنید.
    • قالب خالی یا یکی از قالب‌های آماده را برای شروع طراحی نمودار انتخاب کنید. (توضیحات مربوط به هر قالب در کنار آن نوشته شده است.)
    • گزینه Create را انتخاب کنید.
    • بعد از باز شدن نمودار، در صورتی که پنجره Shapes را مشاهده نمی‌کنید، آن را از قسمت View > Task Panes فعال کنید. اگر هنوز پنجره Shapes را مشاهده نمی‌کنید، روی گزینه Expand the Shapes در نوار کناری نرم افزار کلیک کنید.
    • در تب Views مطمئن شوید گزینه Connection Points تیک خورده است.
    • حالا اشیاء مورد نظر را از پنجره Shapes به داخل نمودار بکشید. برای تغییر متن‌ها روی آنها double-click کنید.

    Lifelines for actors and objects

    برای هریک از مشارکت کنندگان یک Actor lifeline و برای هر یک از اجزای سیستم یک Object lifeline اضافه کنید.

    Lifelines for actors and objects
    Lifelines for actors and objects
    • برای تعین عنوان هر خط، روی آن Double-click کنید.
    • برای تعین اندازه خط، روی آن کلیک کنید و نقطه کنترل زرد را بکشید.

    Messages

    برای مشخص کردن پیام‌های مبادله شده بین lifeline ها از شکل Message استفاده کنید.

    Messages
    Messages
    • Use a Message shape (a solid line) to represent a request or the transmitting of information.
    • Use a Return Message shape (a dashed line) to represent a response to a prior message.
    • Use a Self Message to represent a recursive call of an operation, or one method calling another method belonging to the same object.
    • Use the Asynchronous Message shape to show when an action might not happen immediately.

    Fragments

    Activation

    Destruction

    منبع: https://support.microsoft.com/en-gb/office/uml-diagrams-in-visio-ca4e3ae9-d413-4c94-8a7a-38dac30cbed6#OfficeVersion=Office_365

  • چگونه از وب‌سایت خود در برابر حملات DDoS محافظت کنیم؟

    چگونه از وب‌سایت خود در برابر حملات DDoS محافظت کنیم؟

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

    حمله منع سرویس چیست؟

    حملات منع سرویس (محروم سازی از سرویس – انگلیسی: Denial of Service – به اختصار: DoS) تلاش مخربی است که در دسترس بودن سرویس را هدف قرار می‌دهند و تلاش می‌کنند سرویس مورد نظر را مختل کنند. یک شبکه‌ی کامپیوتری یا یک وب‌سایت خدمات رسانی می‌توانند هدف حملات دی‌داس قرار گیرند.

    معمولا حمله کننده تعداد زیادی درخواست یا پکت برای سیستم هدف ارسال می‌کند و ظرفیت آن را پر می‌کند. بنابراین سیستم هدف دیگر نمی‌تواند به سرویس‌دهی خود ادامه دهد.

    در حالت حملات منع سرویس توزیع شده (انگلیسی: Distributed Denial of Service – به اختصار: DDoS) حمله کننده از چندین سیستم برای حمله استفاده می‌کند.

    حمله می‌تواند در هر یک از لایه‌های Open Systems Interconnection (OSI) انجام شود. لایه‌هایی که بیشتر مورد حمله قرار می‌گیرند عبارتند از شبکه (لایه 3), ترنسپورت (لایه 4), پرزنتیشن (Layer 6) و اپلیکیشن (لایه 7).

    #لایهکارکردمثال
    7اپلیکیشندادهHTTP floods, DNS query floods
    6پرزنتیشندادهSSL abuse
    5سشندادهN/A
    4ترنسپورتسگمنتSYN floods
    3شبکهپکتUDP reflection attacks
    2دیتا لینکفریمN/A
    1فیزیکیبیتN/A
    لایه‌های مدل OSI

    دسته‌بندی حملات منع سرویس

    زمانی که به راه‌های مقابله با حملات منبع سرویس فکر می‌کنیم، می‌توانیم این حملات را به دو نوع حمله به زیر ساخت (لایه 3 و 4) و حمله به اپلیکیشن (لایه 6 و 7) دسته‌بندی کنیم.

    حمله به زیر ساخت

    حملات به لایه‌های 3 و 4 به حملات مربوط به زیرساخت شناخته می‌شوند. این نوع حملات بیشتر انجام می‌شوند. حمله SYN flood و UDP flood انواعی از این نوع حملات هستند. در این حملات ظرفیت شبکه و سرور هدف قرار می‌گیرد. خوشبختانه نشانه‌های این نوع حملات واضح است و راه مقابله با آن نیز مشخص است.

    حمله به اپلیکیشن

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

    حمله HTTP flood به صفحاتی که از حافظه پنهان استفاده نمی‌کنند (مانند صفحه لاگین)، حمله به یک API سنگین برای جستجو یا حملات خاص تر مانند XML-RPC floods در نرم افزار وردپرس، نمونه‌هایی از این حملات هستند.

    روش‌های مقابله با حملات منع سرویس

    کاهش مناطق آسیب پذیر

    در اولین گام بهتر است گزینه‌های در دسترس برای حمله را کاهش دهیم. پورت‌ها، پوروتکل‌ها یا حتی جاهایی که انتظار ندارید از آنجا مشتری داشته باشید را محدود کنید.

    استفاده از CDN و Load balancer برای کاهش بار روی سرور اصلی و محدود کردن دسترسی به زیرساخت مانند Database server شروع خوبی است. همچنین استفاده از Firewall برای کنترل ترافیک ورودی لازم است.

    یک راه حل عملیاتی قرار گرفتن پشت یک WAF و مخفی کردن IP است. برای اینکار می‌توانید از Cloudflare استفاده کنید. دقت کنید که اگر IP شما در گذشته آشکار شده است، باید IP خود را تغییر دهید. اطلاعات تاریخچه DNS در اینترنت موجود است و هکر می‌تواند IP شما قبل از قرار گرفتن پشت WAF را پیدا کند. سپس با استفاده از Firewall همه‌ی پورت‌ها را ببندید و دسترسی HTTP را فقط برای Cloudflare باز کنید.

    مقیاس پذیری سرویس

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

    مانیتورینگ و شناسایی ترافیک غیر طبیعی

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