برنامه نویسی

فیدها و افکار معروف من فراتر از آن

Summarize this content to 400 words in Persian Lang هر ایده ای باید از جایی شروع شود

توسط پست «.well-known/feeds» دن کیو، که در آن او پیشنهاد می کند به جای قرار دادن پیوندها در همه، از یک فایل ثابت در هر سایت در امتداد خطوط الگوی شناسه منبع استفاده کنید. معروف برای ارائه فیدها است. در صفحات جداگانه، من امروز فیدهای خود را بر این اساس خلاصه کرده ام، فقط به این دلیل که این راه حل به نظر من درست تر است.

رویکرد او در واقع کاملاً هوشمندانه است، زیرا او به سادگی دو تکنیک موجود را با هم ترکیب می‌کند: OPML (Outline Processor Markup Language) و URI‌های معروف. بنابراین ایجاد چنین فایلی برای من سخت نبود. من دقیقاً همین کار را با وبلاگم انجام می دهم، فقط اکنون فیدها متعلق به من هستند، در قالب ها و انواع مختلف.

هر ایده ای باید از جایی شروع شود

… همانطور که کالین واکر در کامنت خود گفته است.

در اینجا .well-known/feedهای من است:

<?xml version=”1.0″ encoding=”UTF-8″?>
<opml version=”2.0″>
<head>
<title>kiko.io's Feeds</title>
<dateCreated>2023-08-30T12:47:33.000Z</dateCreated>
<ownerName>Kristof Zerbe</ownerName>
<ownerEmail>kristof.zerbe@gmail.com</ownerEmail>
<ownerId>https://kiko.io</ownerId>
<docs>https://kiko.io/feeds</docs>
</head>
<body>
<outline text=”Atom Feed (Full Content)” type=”rss” version=”ATOM1″ xmlUrl=”https://kiko.io/atom.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts as Atom feed”/>
<outline text=”Atom Feed (Excerpt)” type=”rss” version=”ATOM1″ xmlUrl=”https://kiko.io/atom-excerpt.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts with excerpt only as Atom feed”/>
<outline text=”RSS Feed (Full Content)” type=”rss” version=”RSS2″ xmlUrl=”https://kiko.io/rss.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts as RSS feed”/>
<outline text=”RSS Feed (Excerpt)” type=”rss” version=”RSS2″ xmlUrl=”https://kiko.io/rss-excerpt.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts with excerpt only as RSS feed”/>
<outline text=”JSON Feed (Full Content)” type=”rss” version=”JSON1″ xmlUrl=”https://kiko.io/feed.json” htmlUrl=”https://kiko.io” description=”Last 20 posts as JSON feed”/>
<outline text=”JSON Feed (Excerpt)” type=”rss” version=”JSON1″ xmlUrl=”https://kiko.io/feed-excerpt.json” htmlUrl=”https://kiko.io” description=”Last 20 posts with excerpt only as JSON feed”/>
<outline text=”HTML Microformats Feed (Excerpt)” type=”rss” version=”MF2HTML” xmlUrl=”https://kiko.io/feeds/index.html” htmlUrl=”https://kiko.io” description=”Last 20 arcticles with excerpt only as HTML Microformats feed”/>
</body>
</opml>

مشکل «نوع» OPML

دن فیدهای مختلف خود (در میان سایر پیوندها) را در فایل خود فهرست می کند که از نظر محتوا متفاوت هستند، اما همیشه در قالب RSS یکسان هستند. در مقابل، من در واقع فقط دو نوع محتوای مختلف دارم، کامل و گزیده، اما در 4 قالب مختلف: RSS، Atom، JSON و MF2/HTML. بسته به سلیقه.

مشکلی وجود دارد که روبن شید قبلاً در سال 2021 متوجه آن شده بود: OPML به مقدار نیاز دارد rss به عنوان نوع، یعنی انواع دیگر مانند atom یا موارد مشابه ارائه نمی شود. دیو وینر به طور کاملاً مختصر در مشخصات می نویسد:

هر عنصر فرعی از بدنه سند OPML یک گره از نوع rss یا یک عنصر طرح کلی است که شامل گره هایی از نوع rss است.

تنها فضایی که در اینجا باز می شود استفاده از آن است version ویژگی، اما این فقط حدس و گمان است. اگرچه دیو به تنهایی از آن در یکی از نمونه های OPML خود استفاده می کند (RSS1) مشخصات می گوید:

هیچ مقادیر شناخته شده ای برای فیدهای Atom وجود ندارد، اما مطمئناً می توان آنها را ارائه کرد.

هوم، بگیر یا بگذار؟ اما چگونه می توانم بین 4 فرمت مختلف در OPML تمایز قائل شوم؟ مانند روبن، تصمیم گرفتم به سادگی ارزش هایی را که برایم معنادار است را در آن قرار دهم version:

ATOM1
RSS2
JSON
MF2HTML

بیایید ببینیم چه اتفاقی می‌افتد… به خصوص که رویکرد OPML دن هنوز یک پیشنهاد است. یکی فقط تا حدی به دیگری مرتبط است، اما اگر .well-kown/feeds محبوب‌تر شود، ممکن است یک به‌روزرسانی برای OPML وجود داشته باشد که در آن می‌توانید از نوعی استفاده کنید که به نظر می‌رسد برای آن در نظر گرفته شده است.

افکار فراتر از …

در پست دیروزم، من در مورد بازسازی HEAD وبلاگم گزارش دادم، که البته پیوندهای جایگزین برای فیدها را نیز ذکر کرد، که فایل جدید می تواند جایگزین شود.

اگر اکنون نگاه دقیق‌تری به اطلاعات متا بیندازید، نه تنها مورد دوم برای کل سایت اعمال می‌شود، بلکه:

متا نام “ژنراتور”
پیوند rel = “من”
پیوند rel=”webmention | pingback”
پیوند rel=”blogroll”
پیوند rel = “جستجو”
پیوند rel = “مانیفست”
meta name = “theme-color”
متا نام “طرح رنگ”

… و البته بخش بزرگی از JSON-LD که به صفحه شخصی اشاره نمی کند، مانند نوع @ WebSite، Organisation و Person.

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

البته برخی از اطلاعات متا وجود دارد که می تواند از صفحه ای به صفحه دیگر متفاوت باشد، مانند meta name=”author”، اما با وبلاگ های شخصی فقط یک نفر می تواند به عنوان نویسنده در نظر گرفته شود. بنابراین این نیز می تواند به نوعی منتقل شود .well-known/site-meta. (با میزبان-متای موجود اشتباه گرفته نشود).

جالب اینجاست که دن به طور غیرمستقیم موضوع را مطرح می کند، زیرا در OPML او دو بلوک وجود دارد: Blog (با فیدها) و Elsewhere، که در آن فقط اولین URL در واقع از آن است rss تایپ کنید و بقیه به سادگی پیوندهای نمایه به GitHub، YouTube و دیگران هستند. حداقل link rel=”me” قبلاً به این روش نقشه برداری شده است، که من از یک منبع خوراک انتظار نداشتم.

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

<?xml version=”1.0″ encoding=”UTF-8″?>
<opml version=”2.0″>
<head>
<title>kiko.io's Site Meta</title>
<dateCreated>2023-08-30T12:47:33.000Z</dateCreated>
<ownerName>Kristof Zerbe</ownerName>
<ownerEmail>kristof.zerbe@gmail.com</ownerEmail>
<ownerId>https://kiko.io</ownerId>
</head>
<body>
<outline text=”Site” purpose=”site”>
<outline text=”Name” purpose=”name” content=”kiko.io”/>
<outline text=”Url” purpose=”url” content=”https://kiko.io”/>
<outline text=”Author” purpose=”author” content=”Kristof Zerbe”/>
<outline text=”Fediverse Creator” purpose=”fediverse:creator” content=”@kiko@indieweb.social”/>
<outline text=”Locale” purpose=”locale” content=”en_US”/>
<outline text=”Type” purpose=”type” content=”Blog”/>
<outline text=”Generators” purpose=”generator”>
<outline text=”Hexo 7.2.0″ type=”link” url=”https://hexo.io”/>
</outline>
<outline text=”Licenses” purpose=”license”>
<outline text=”CC BY-SA 4.0″ type=”link” url=”https://creativecommons.org/licenses/by-sa/4.0/”/>
<outline text=”CC BY-SA 4.0 (RDF)” type=”xml” version=”RDF” xmlUrl=”https://creativecommons.org/licenses/by-sa/4.0/rdf”/>
</outline>
<outline text=”Profiles” purpose=”me”>
<outline text=”Mastodon” type=”link” url=”https://indieweb.social/@kiko”/>
<outline text=”GitHub” type=”link” url=”https://github.com/kristofzerbe” auth=”true”/>
<outline text=”Mail” type=”link” url=”mailto:kristof.zerbe@gmail.com” auth=”true”/>
</outline>
<outline text=”Webmention” purpose=”webmention” type=”link” url=”https://webmention.io/kiko.io/webmention”/>
<outline text=”Pingback” purpose=”pingback” type=”link” url=”https://webmention.io/kiko.io/xmlrpc”/>
<outline text=”Blogroll” purpose=”blogroll” type=”xml” version=”opml” xmlUrl=”https://kiko.io/blogroll.xml”/>
<outline text=”Search” purpose=”search” type=”xml” version=”opensearchdescription” xmlUrl=”https://kiko.io/opensearch.xml”/>
<outline text=”Icon” purpose=”icon” type=”link” url=”https://kiko.io/favicon.ico”>
<outline text=”Web Manifest” purpose=”manifest” type=”json” jsonUrl=”https://kiko.io/manifest.json”/>
<outline text=”Theme Color” purpose=”theme-color” content=”#444″/>
<outline text=”Color Scheme” purpose=”color-scheme” content=”light dark”/>
<outline text=”Feeds” purpose=”feeds”>
<outline text=”Atom Feed (Full Content)” type=”atom” version=”ATOM1″ xmlUrl=”https://kiko.io/atom.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts as Atom feed”/>
<outline text=”Atom Feed (Excerpt)” type=”atom” version=”ATOM1″ xmlUrl=”https://kiko.io/atom-excerpt.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts with excerpt only as Atom feed”/>
<outline text=”RSS Feed (Full Content)” type=”rss” version=”RSS2″ xmlUrl=”https://kiko.io/rss.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts as RSS feed”/>
<outline text=”RSS Feed (Excerpt)” type=”rss” version=”RSS2″ xmlUrl=”https://kiko.io/rss-excerpt.xml” htmlUrl=”https://kiko.io” description=”Last 20 posts with excerpt only as RSS feed”/>
<outline text=”JSON Feed (Full Content)” type=”json” version=”JSON1″ xmlUrl=”https://kiko.io/feed.json” htmlUrl=”https://kiko.io” description=”Last 20 posts as JSON feed”/>
<outline text=”JSON Feed (Excerpt)” type=”json” version=”JSON1″ xmlUrl=”https://kiko.io/feed-excerpt.json” htmlUrl=”https://kiko.io” description=”Last 20 posts with excerpt only as JSON feed”/>
<outline text=”HTML Microformats Feed (Excerpt)” type=”mf2html” version=”MF2HTML” xmlUrl=”https://kiko.io/feeds/index.html” htmlUrl=”https://kiko.io” description=”Last 20 arcticles with excerpt only as HTML Microformats feed”/>
</outline>
</outline>
</body>
</opml>

من به خوبی می توانم تصور کنم که مقداری از وزن صفحاتم را حذف کنم، زیرا این اطلاعات در واقع باید متمرکز باشد.

اندیشه های تو؟

هر ایده ای باید از جایی شروع شود

توسط پست «.well-known/feeds» دن کیو، که در آن او پیشنهاد می کند به جای قرار دادن پیوندها در همه، از یک فایل ثابت در هر سایت در امتداد خطوط الگوی شناسه منبع استفاده کنید. معروف برای ارائه فیدها است. در صفحات جداگانه، من امروز فیدهای خود را بر این اساس خلاصه کرده ام، فقط به این دلیل که این راه حل به نظر من درست تر است.

رویکرد او در واقع کاملاً هوشمندانه است، زیرا او به سادگی دو تکنیک موجود را با هم ترکیب می‌کند: OPML (Outline Processor Markup Language) و URI‌های معروف. بنابراین ایجاد چنین فایلی برای من سخت نبود. من دقیقاً همین کار را با وبلاگم انجام می دهم، فقط اکنون فیدها متعلق به من هستند، در قالب ها و انواع مختلف.

هر ایده ای باید از جایی شروع شود

… همانطور که کالین واکر در کامنت خود گفته است.

در اینجا .well-known/feedهای من است:

<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
  <head>
    <title>kiko.io's Feeds</title>
    <dateCreated>2023-08-30T12:47:33.000Z</dateCreated>
    <ownerName>Kristof Zerbe</ownerName>
    <ownerEmail>kristof.zerbe@gmail.com</ownerEmail>
    <ownerId>https://kiko.io</ownerId>
    <docs>https://kiko.io/feeds</docs>
  </head>
  <body>
    <outline text="Atom Feed (Full Content)" type="rss" version="ATOM1" xmlUrl="https://kiko.io/atom.xml" htmlUrl="https://kiko.io" description="Last 20 posts as Atom feed"/>
    <outline text="Atom Feed (Excerpt)" type="rss" version="ATOM1" xmlUrl="https://kiko.io/atom-excerpt.xml" htmlUrl="https://kiko.io" description="Last 20 posts with excerpt only as Atom feed"/>
    <outline text="RSS Feed (Full Content)" type="rss" version="RSS2" xmlUrl="https://kiko.io/rss.xml" htmlUrl="https://kiko.io" description="Last 20 posts as RSS feed"/>
    <outline text="RSS Feed (Excerpt)" type="rss" version="RSS2" xmlUrl="https://kiko.io/rss-excerpt.xml" htmlUrl="https://kiko.io" description="Last 20 posts with excerpt only as RSS feed"/>
    <outline text="JSON Feed (Full Content)" type="rss" version="JSON1" xmlUrl="https://kiko.io/feed.json" htmlUrl="https://kiko.io" description="Last 20 posts as JSON feed"/>
    <outline text="JSON Feed (Excerpt)" type="rss" version="JSON1" xmlUrl="https://kiko.io/feed-excerpt.json" htmlUrl="https://kiko.io" description="Last 20 posts with excerpt only as JSON feed"/>
    <outline text="HTML Microformats Feed (Excerpt)" type="rss" version="MF2HTML" xmlUrl="https://kiko.io/feeds/index.html" htmlUrl="https://kiko.io" description="Last 20 arcticles with excerpt only as HTML Microformats feed"/>
  </body>
</opml>

مشکل «نوع» OPML

دن فیدهای مختلف خود (در میان سایر پیوندها) را در فایل خود فهرست می کند که از نظر محتوا متفاوت هستند، اما همیشه در قالب RSS یکسان هستند. در مقابل، من در واقع فقط دو نوع محتوای مختلف دارم، کامل و گزیده، اما در 4 قالب مختلف: RSS، Atom، JSON و MF2/HTML. بسته به سلیقه.

مشکلی وجود دارد که روبن شید قبلاً در سال 2021 متوجه آن شده بود: OPML به مقدار نیاز دارد rss به عنوان نوع، یعنی انواع دیگر مانند atom یا موارد مشابه ارائه نمی شود. دیو وینر به طور کاملاً مختصر در مشخصات می نویسد:

هر عنصر فرعی از بدنه سند OPML یک گره از نوع rss یا یک عنصر طرح کلی است که شامل گره هایی از نوع rss است.

تنها فضایی که در اینجا باز می شود استفاده از آن است version ویژگی، اما این فقط حدس و گمان است. اگرچه دیو به تنهایی از آن در یکی از نمونه های OPML خود استفاده می کند (RSS1) مشخصات می گوید:

هیچ مقادیر شناخته شده ای برای فیدهای Atom وجود ندارد، اما مطمئناً می توان آنها را ارائه کرد.

هوم، بگیر یا بگذار؟ اما چگونه می توانم بین 4 فرمت مختلف در OPML تمایز قائل شوم؟ مانند روبن، تصمیم گرفتم به سادگی ارزش هایی را که برایم معنادار است را در آن قرار دهم version:

  • ATOM1
  • RSS2
  • JSON
  • MF2HTML

بیایید ببینیم چه اتفاقی می‌افتد… به خصوص که رویکرد OPML دن هنوز یک پیشنهاد است. یکی فقط تا حدی به دیگری مرتبط است، اما اگر .well-kown/feeds محبوب‌تر شود، ممکن است یک به‌روزرسانی برای OPML وجود داشته باشد که در آن می‌توانید از نوعی استفاده کنید که به نظر می‌رسد برای آن در نظر گرفته شده است.

افکار فراتر از …

در پست دیروزم، من در مورد بازسازی HEAD وبلاگم گزارش دادم، که البته پیوندهای جایگزین برای فیدها را نیز ذکر کرد، که فایل جدید می تواند جایگزین شود.

اگر اکنون نگاه دقیق‌تری به اطلاعات متا بیندازید، نه تنها مورد دوم برای کل سایت اعمال می‌شود، بلکه:

  • متا نام “ژنراتور”
  • پیوند rel = “من”
  • پیوند rel=”webmention | pingback”
  • پیوند rel=”blogroll”
  • پیوند rel = “جستجو”
  • پیوند rel = “مانیفست”
  • meta name = “theme-color”
  • متا نام “طرح رنگ”

… و البته بخش بزرگی از JSON-LD که به صفحه شخصی اشاره نمی کند، مانند نوع @ WebSite، Organisation و Person.

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

البته برخی از اطلاعات متا وجود دارد که می تواند از صفحه ای به صفحه دیگر متفاوت باشد، مانند meta name="author"، اما با وبلاگ های شخصی فقط یک نفر می تواند به عنوان نویسنده در نظر گرفته شود. بنابراین این نیز می تواند به نوعی منتقل شود .well-known/site-meta. (با میزبان-متای موجود اشتباه گرفته نشود).

جالب اینجاست که دن به طور غیرمستقیم موضوع را مطرح می کند، زیرا در OPML او دو بلوک وجود دارد: Blog (با فیدها) و Elsewhere، که در آن فقط اولین URL در واقع از آن است rss تایپ کنید و بقیه به سادگی پیوندهای نمایه به GitHub، YouTube و دیگران هستند. حداقل link rel="me" قبلاً به این روش نقشه برداری شده است، که من از یک منبع خوراک انتظار نداشتم.

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

<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
<head>
    <title>kiko.io's Site Meta</title>
    <dateCreated>2023-08-30T12:47:33.000Z</dateCreated>
    <ownerName>Kristof Zerbe</ownerName>
    <ownerEmail>kristof.zerbe@gmail.com</ownerEmail>
    <ownerId>https://kiko.io</ownerId>
  </head>
  <body>
    <outline text="Site" purpose="site">
      <outline text="Name" purpose="name" content="kiko.io"/>
      <outline text="Url" purpose="url" content="https://kiko.io"/>
      <outline text="Author" purpose="author" content="Kristof Zerbe"/>
      <outline text="Fediverse Creator" purpose="fediverse:creator" content="@kiko@indieweb.social"/>
      <outline text="Locale" purpose="locale" content="en_US"/>
      <outline text="Type" purpose="type" content="Blog"/>
      <outline text="Generators" purpose="generator">
        <outline text="Hexo 7.2.0" type="link" url="https://hexo.io"/>
      </outline>
      <outline text="Licenses" purpose="license">
        <outline text="CC BY-SA 4.0" type="link" url="https://creativecommons.org/licenses/by-sa/4.0/"/>
        <outline text="CC BY-SA 4.0 (RDF)" type="xml" version="RDF" xmlUrl="https://creativecommons.org/licenses/by-sa/4.0/rdf"/>
      </outline>
      <outline text="Profiles" purpose="me">
        <outline text="Mastodon" type="link" url="https://indieweb.social/@kiko"/>
        <outline text="GitHub" type="link" url="https://github.com/kristofzerbe" auth="true"/>
        <outline text="Mail" type="link" url="mailto:kristof.zerbe@gmail.com" auth="true"/>
      </outline>
      <outline text="Webmention" purpose="webmention" type="link" url="https://webmention.io/kiko.io/webmention"/>
      <outline text="Pingback" purpose="pingback" type="link" url="https://webmention.io/kiko.io/xmlrpc"/>
      <outline text="Blogroll" purpose="blogroll" type="xml" version="opml" xmlUrl="https://kiko.io/blogroll.xml"/>
      <outline text="Search" purpose="search" type="xml" version="opensearchdescription" xmlUrl="https://kiko.io/opensearch.xml"/>
      <outline text="Icon" purpose="icon" type="link" url="https://kiko.io/favicon.ico">
      <outline text="Web Manifest" purpose="manifest" type="json" jsonUrl="https://kiko.io/manifest.json"/>
      <outline text="Theme Color" purpose="theme-color" content="#444"/>
      <outline text="Color Scheme" purpose="color-scheme" content="light dark"/>
      <outline text="Feeds" purpose="feeds">
        <outline text="Atom Feed (Full Content)" type="atom" version="ATOM1" xmlUrl="https://kiko.io/atom.xml" htmlUrl="https://kiko.io" description="Last 20 posts as Atom feed"/>
        <outline text="Atom Feed (Excerpt)" type="atom" version="ATOM1" xmlUrl="https://kiko.io/atom-excerpt.xml" htmlUrl="https://kiko.io" description="Last 20 posts with excerpt only as Atom feed"/>
        <outline text="RSS Feed (Full Content)" type="rss" version="RSS2" xmlUrl="https://kiko.io/rss.xml" htmlUrl="https://kiko.io" description="Last 20 posts as RSS feed"/>
        <outline text="RSS Feed (Excerpt)" type="rss" version="RSS2" xmlUrl="https://kiko.io/rss-excerpt.xml" htmlUrl="https://kiko.io" description="Last 20 posts with excerpt only as RSS feed"/>
        <outline text="JSON Feed (Full Content)" type="json" version="JSON1" xmlUrl="https://kiko.io/feed.json" htmlUrl="https://kiko.io" description="Last 20 posts as JSON feed"/>
        <outline text="JSON Feed (Excerpt)" type="json" version="JSON1" xmlUrl="https://kiko.io/feed-excerpt.json" htmlUrl="https://kiko.io" description="Last 20 posts with excerpt only as JSON feed"/>
        <outline text="HTML Microformats Feed (Excerpt)" type="mf2html" version="MF2HTML" xmlUrl="https://kiko.io/feeds/index.html" htmlUrl="https://kiko.io" description="Last 20 arcticles with excerpt only as HTML Microformats feed"/>
      </outline>
    </outline>
  </body>
</opml>

من به خوبی می توانم تصور کنم که مقداری از وزن صفحاتم را حذف کنم، زیرا این اطلاعات در واقع باید متمرکز باشد.

اندیشه های تو؟

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا