গিটহাবে হোস্ট করা বাহ্যিক জাভাস্ক্রিপ্ট ফাইলটিকে লিঙ্ক করুন এবং সম্পাদন করুন


545

যখন আমি একটি স্থানীয় জাভাস্ক্রিপ্ট ফাইলের লিঙ্কযুক্ত রেফারেন্সটি একটি গিটহাব কাঁচা সংস্করণে পরিবর্তন করার চেষ্টা করি তখন আমার পরীক্ষার ফাইলটি কাজ বন্ধ করে দেয়। ত্রুটিটি হ'ল:

... থেকে স্ক্রিপ্ট কার্যকর করতে অস্বীকৃতি জানায় কারণ এর মাইম টাইম ( text/plain) কার্যকর করা যায় না, এবং কঠোর মাইম টাইম চেকিং সক্ষম করা হয়।

এই আচরণটি অক্ষম করার কোনও উপায় আছে বা এমন কোনও পরিষেবা আছে যা গিটহাব কাঁচা ফাইলগুলির সাথে লিঙ্ক করার অনুমতি দেয়?

কাজের কোড:

<script src="bootstrap-wysiwyg.js"></script>

অ-কার্যকারী কোড:

<script src="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js"></script>

3
Rawgit.com এখন নতুন ডোমেন
মুহাম্মদ উমার


1
@ মুহাম্মাদ উমর - কেবলমাত্র যদি আপনার উত্স ফাইলগুলি কখনও পরিবর্তন না হয়rawgitক্যাশে কখনই আপডেট হয় না
vsync

3
2019: সমস্ত উত্তর মেন্টিনেশন র বা RAGGIT এড়িয়ে যান। কাঁচা মারা গেছে। ছারউইয়ের উত্তরে নীচে যান এবং শীর্ষে না আসা পর্যন্ত এটিকে উত্তোলন করুন। এটিই ভাল: সরল, এটি অফিসিয়াল গিটহাবকে পছন্দসই পদ্ধতির ব্যবহার করে।
মার্কো ফাউস্টিনেল্লি 26'19

1
Jsdelivr.com/?docs=gh ব্যবহার করুন , এটি কাজ করে
AuthorProxy

উত্তর:


1018

সেখানে হয় ব্যবহার করে, এই জন্য একটি ভাল কার্যসংক্রান্ত, এখন jsdelivr.net

পদক্ষেপ :

  1. গিটহাবটিতে আপনার লিঙ্কটি সন্ধান করুন এবং "কাঁচা" সংস্করণে ক্লিক করুন।
  2. ইউআরএল অনুলিপি করুন।
  3. পরিবর্তন raw.githubusercontent.comকরুনcdn.jsdelivr.net
  4. /gh/আপনার ব্যবহারকারীর নাম আগে sert োকান।
  5. সরান branchনাম।
  6. (Alচ্ছিক) আপনি যে সংস্করণটিতে লিঙ্ক করতে চান তা sertোকান, যেমন @version(আপনি যদি এটি না করেন তবে আপনি সর্বশেষটি পাবেন - যার ফলে দীর্ঘমেয়াদী ক্যাশে হতে পারে)

উদাহরণ :

http://raw.githubusercontent.com/<username>/<repo>/<branch>/path/to/file.js

সর্বশেষতম সংস্করণটি পেতে এই URL টি ব্যবহার করুন:

http://cdn.jsdelivr.net/gh/<username>/<repo>/path/to/file.js

একটি নির্দিষ্ট সংস্করণ পেতে বা হ্যাশ করার জন্য এই URL টি ব্যবহার করুন:

http://cdn.jsdelivr.net/gh/<username>/<repo>@<version or hash>/path/to/file.js

উত্পাদন পরিবেশের জন্য , শাখার চেয়ে একটি নির্দিষ্ট ট্যাগ বা কমিট-হ্যাশ লক্ষ্য করে বিবেচনা করুন। ব্যবহার সর্বশেষ লিংক ফাইলের দীর্ঘমেয়াদী ক্যাশে হতে পারে, আপনি নতুন সংস্করণ ধাক্কা আপডেট করা থেকে আপনার লিঙ্ক সৃষ্টি হয়। কমিট-হ্যাশ বা ট্যাগ দ্বারা একটি ফাইলের সাথে লিঙ্ক লিঙ্কটি সংস্করণে অনন্য করে তোলে।


কেন এটি প্রয়োজন?

২০১৩ সালে, গিটহাব ব্যবহার শুরু করেছেন X-Content-Type-Options: nosniff, যা আরও আধুনিক ব্রাউজারগুলিকে কঠোর এমআইএমআই টাইপ চেকিং প্রয়োগ করার নির্দেশ দেয়। এটি সার্ভারের দ্বারা ফিরিয়ে দেওয়া মাইম টাইপের কাঁচা ফাইলগুলি ফেরত দেয়, ব্রাউজারটিকে ইচ্ছাকৃত ফাইলটি ব্যবহার করা থেকে বিরত করে (যদি ব্রাউজারটি সেটিংটিকে সম্মান করে)।

এই বিষয়ে ব্যাকগ্রাউন্ডের জন্য, দয়া করে এই আলোচনার থ্রেডটি দেখুন


14
গিস্টগুলির জন্যও কাজ করে। আমি এর gist.githubusercontent.comসাথে প্রতিস্থাপন করতে সক্ষম rawgist.comহয়েছি এবং এটি কাজ করে চলেছি।
হরিদসভ

3
আমি জানি না কে এই সাইটটি কাঁচাঘাট করে, তবে এটি উত্পাদনে ব্যবহার করবেন না। আপনার একটি অজানা তৃতীয় পক্ষ থাকবে যা আপনার সাইটে কোনও জাভাস্ক্রিপ্ট ইনজেক্ট করতে পারে।
নেভেসে

1
@ ম্যাসিজে ক্রাউজিক - হ্যাঁ - পৃষ্ঠাটি আপনাকে ঠিক এই কারণেই শাখা লিঙ্কের পরিবর্তে কমিট-নির্দিষ্ট লিঙ্কটি ব্যবহার করতে উত্সাহ দেয়।
ট্রয় অ্যালফোর্ড

4
কাঁচগিট এখন বন্ধ রয়েছে (2018-10-08 হিসাবে): কাঁচিগিট.কম । এই উত্তর আপডেট করার পরামর্শ দিন।
ছারভে

1
@ ছারভে এটি দেখানোর জন্য ধন্যবাদ - আমি jsdelivr.net প্রতিফলিত করার উত্তর আপডেট করেছি
ট্রয় অ্যালফোর্ড

56

এটি আর সম্ভব নয়। গিটহাব স্পষ্টতই জাভাস্ক্রিপ্ট হটলিংকটিকে অক্ষম করেছে এবং ব্রাউজারগুলির নতুন সংস্করণগুলি সেটিংটিকে সম্মান করে।

শিরোনাম: ক্রোম এবং ফায়ারফক্সে নোসনিফ শিরোনাম সমর্থন


25

rawgithub.comপুনঃনির্দেশিত rawgit.comসুতরাং উপরের উদাহরণটি এখন হবে

http://rawgit.com/user/package/master/link.min.js


পরিদর্শন rawgit.com এবং ফাইল বা সারকথা জন্য URL পেস্ট করুন। এটি আপনার জন্য একটি বৈধ url উত্পন্ন করবে।
মার্সেলো ভানি

8
কাঁচগিট এখন বন্ধ রয়েছে (2018-10-08 হিসাবে): কাঁচিগিট.কম । এই উত্তর আপডেট করার পরামর্শ দিন।
ছারভে

10

গিটহাব পৃষ্ঠাগুলি হ'ল গিটহাবের এই সমস্যার সরকারী সমাধান।

raw.githubusercontenttext/plainফাইলটি সিএসএস বা জাভাস্ক্রিপ্ট ফাইল হলেও, সমস্ত ফাইলকে মাইম টাইপ ব্যবহার করে । সুতরাং যাচ্ছি https://raw.githubusercontent.com/‹user›/‹repo›/‹branch›/‹filepath›সঠিক মাইম টাইম হবে না পরিবর্তে একটি সরলখুলি ফাইল, এবং এর মাধ্যমে লিঙ্ক করা <link href="..."/>বা <script src="..."></script>কাজ করবে না - সিএসএস প্রয়োগ হবে না / জেএস চলবে না।

গিটহাব পৃষ্ঠাগুলি একটি বিশেষ ইউআরএলে আপনার রেপো হোস্ট করে, তাই আপনাকে যা করতে হবে তা হ'ল আপনার ফাইলগুলি চেক-ইন করুন এবং পুশ করুন। নোট করুন যে বেশিরভাগ ক্ষেত্রে, গিটহাব পৃষ্ঠাগুলির জন্য আপনাকে একটি বিশেষ শাখায় প্রতিশ্রুতিবদ্ধ করা দরকার gh-pages,।

আপনার নতুন সাইটে, যা সাধারণত হয় https://‹user›.github.io/‹repo›, gh-pagesশাখায় প্রতিশ্রুতিবদ্ধ প্রতিটি ফাইল (অতি সাম্প্রতিক প্রতিশ্রুতি) এই url এ উপস্থিত থাকে। তারপরে আপনি এর মাধ্যমে আপনার জেএস ফাইলের সাথে লিঙ্ক করতে পারেন <script src="https://‹user›.github.io/‹repo›/file.js"></script>এবং এটি সঠিক এমআইএমআই টাইপ হবে।

আপনার কাছে ফাইল তৈরি আছে?

ব্যক্তিগতভাবে, আমার প্রস্তাবটি এই শাখার সমান্তরালভাবে চালানো master। উপর gh-pagesশাখা, আপনি আপনার সম্পাদনা করতে পারেন .gitignoreফাইল চেক , সব জেলা / বিল্ড আপনি যে ফাইলগুলি আপনার সাইটে (যেমন যদি আপনার কোন minified আছে / কম্পাইল ফাইল) জন্য প্রয়োজন যখন তাদের পালন উপেক্ষিত আপনার এর উপর masterশাখা। এটি কার্যকর কারণ আপনি সাধারণত আপনার নিয়মিত রেপোতে বিল্ড ফাইলগুলির পরিবর্তনগুলি ট্র্যাক করতে চান না। প্রতিবার আপনি আপনার হোস্ট ফাইল আপডেট করার জন্য, কেবল মার্জ চান masterমধ্যে gh-pages, পুনর্নির্মাণের, কমিট, এবং তারপর ধাক্কা।

(প্রতিবাদ: আপনি এই পদক্ষেপগুলির সাথে একই প্রতিশ্রুতিতে মার্জ এবং পুনর্নির্মাণ করতে পারেন :)

$ git checkout gh-pages
$ git merge --no-ff --no-commit master  # prepare the merge but dont commit it (as if there were a merge conflict)
$ npm run build                         # (or whatever your build process is)
$ git add .                             # stage the newly built files
$ git merge --continue                  # commit the merge
$ git push origin gh-pages

8

উপরের উত্তরগুলি পরিষ্কারভাবে প্রশ্নের উত্তর দেয় তবে আমি অন্য একটি বিকল্প সরবরাহ করতে চাই - অনুরূপ সমস্যা সমাধানের জন্য একটি ভিন্ন দৃষ্টিভঙ্গি / পদ্ধতির।

আপনি ফাইলগুলির X-Content-Type-Optionsজন্য প্রতিক্রিয়া শিরোনাম অপসারণ করতে ব্রাউজার এক্সটেনশনও ব্যবহার করতে পারেন raw.githubusercontent.com। প্রতিক্রিয়া শিরোনামগুলি সংশোধন করতে বেশ কয়েকটি ব্রাউজার এক্সটেনশন রয়েছে।

  1. অনুরোধ: ক্রোম + ফায়ারফক্স
  2. শিরোনামগুলি পরিবর্তন করুন: ফায়ারফক্স

আপনি যদি অনুরোধটি ব্যবহার করেন তবে আমি দুটি সমাধানের পরামর্শ দিতে পারি

সমাধান 1: শিরোনাম শুল্ক সংশোধন করুন এবং প্রতিক্রিয়া শিরোনাম সরান

ধাপ

  1. অনুরোধটি http://www.requestly.in থেকে ইনস্টল করুন
  2. বিধি পৃষ্ঠাতে যান
  3. একটি নিয়ম তৈরি করতে অ্যাড আইকনে ক্লিক করুন
  4. শিরোনাম সংশোধন করুন নির্বাচন করুন
  5. একটি নাম এবং বিবরণ দিন
  6. Remove-> Response-> নির্বাচন করুনX-Content-Type-Options
  7. উত্স ক্ষেত্রে, Url-> Contains-> লিখুনraw.githubusercontent.com

সমাধান 2: হোস্ট বিধি প্রতিস্থাপন ব্যবহার করুন

  1. অনুরোধটি http://www.requestly.in থেকে ইনস্টল করুন
  2. বিধি পৃষ্ঠাতে যান
  3. একটি নিয়ম তৈরি করতে অ্যাড আইকনে ক্লিক করুন
  4. raw.githubusercontent.comসঙ্গে প্রতিস্থাপনrawgit.com

আরও তথ্যের জন্য এই স্ক্রিনশটটি পরীক্ষা করুনএখানে চিত্র বর্ণনা লিখুন

কীভাবে পরীক্ষা করবেন

আমরা যদি আমাদের কোডটিতে স্ক্রিপ্ট হিসাবে কাঁচা গিথুব ফাইলগুলি ব্যবহার করতে পারি তা পরীক্ষা করার জন্য একটি সাধারণ জেএস ফিডল তৈরি করেছি। এখানে নীচের কোড সহ ফিডল

<center id="msg"></center>

<script src="https://raw.githubusercontent.com/sachinjain024/practicebook/master/web-extensions-master/storage/background.js"></script>
<script>
try {
  if (typeof BG.Methods !== 'undefoned') {
    document.getElementById('msg').innerHTML = 'Script evaluated successfully!';
  }
} catch (e) {
  document.getElementById('msg').innerHTML = 'Problem evaluating script';
}
</script>

যদি আপনি দেখতে পান তবে এর Script evaluated successfully!অর্থ আপনি নিজের কোডে কাঁচা গিথুব ফাইলটি ব্যবহার করতে সক্ষম হবেন অন্যথায় Problem evaluating scriptইঙ্গিত দেয় যে কাঁচা গিথুব উত্স থেকে স্ক্রিপ্ট চালানোর সময় কিছু সমস্যা আছে।

আমিও লিখেছিলেন একটি নিবন্ধ উপর Requestly ব্লগ এই সম্পর্কে। আরও বিশদ জন্য দয়া করে এটি দেখুন।

আশা করি এটা সাহায্য করবে!!

দাবি অস্বীকার : আমি রিকোয়েস্টলি এর লেখক তাই আপনার যা পছন্দ না হয় তার জন্য আপনি দোষ দিতে পারেন।


8

https://raw.githack.com/

এই সাইটটির জন্য একটি সিডিএন সরবরাহ করেছে

  • nosniffHTTP শিরোনাম সরান
  • অতিরিক্ত mime typeনাম দ্বারা ঠিক করুন

এবং এই সাইট:

https://rawgit.com/

দ্রষ্টব্য: RawGit তার দরকারী জীবনের শেষে পৌঁছেছে


5

বিষয়গুলি পরিষ্কার এবং সংক্ষিপ্ত করতে

//raw.githubusercontent.com -> //rawgit.com

দ্রষ্টব্য যে এটি কাঁচিটির বিকাশ হোস্টিং দ্বারা পরিচালিত হয় এবং প্রযোজনা হোস্টিংয়ের সিডিএন নয়


ডিফল্ট কাঁচা ইউআরএল এই উত্তরটির পরে পরিবর্তিত হয়েছে বলে মনে হচ্ছে তাই রূপান্তর এখন https://raw.githubusercontent.com-> https://rawgit.comঅন্যথায় এই উত্তরটি সবচেয়ে পরিষ্কার এবং কাজ করে।
মাইকিম

4
কাঁচগিট এখন বন্ধ রয়েছে (2018-10-08 হিসাবে): কাঁচিগিট.কম । এই উত্তর আপডেট করার পরামর্শ দিন।
ছারভেয়ে

4

আমার ব্যবহারের ক্ষেত্রে আমার বিটবকেট অ্যাকাউন্ট থেকে ' বুকমার্কলেট ' ডাইরেক্টলিটি লোড করা ছিল যা গিথুবের মতোই বিধিনিষেধ রয়েছে। আমার চারপাশের কাজটি স্ক্রিপ্টটির জন্য এজাক্সের কাছে ছিল এবং evalপ্রতিক্রিয়ার স্ট্রিংয়ের উপর দিয়ে চালানো হয়েছিল, নীচে স্নিপেট সেই পদ্ধতির উপর ভিত্তি করে।

<script>
    var sScriptURL ='<script-URL-here>'; 
    var oReq = new XMLHttpRequest(); 
    oReq.addEventListener("load", 
       function fLoad() {eval(this.responseText + '\r\n//# sourceURL=' + sScriptURL)}); 
    oReq.open("GET", sScriptURL); oReq.send(); false;
</script>

নোট করুন যে sourceURLমন্তব্য সংযোজন হ'ল ব্রাউজারের বিকাশকারী সরঞ্জামগুলির মধ্যে স্ক্রিপ্টটি ডিবাগ করার অনুমতি দেওয়া।


1

কোনও ফাইল যখন গিথুবে আপলোড করা হয় আপনি এটিকে বাহ্যিক উত্স বা ফ্রি হোস্টিং হিসাবে ব্যবহার করতে পারেন। ট্রয় আলফোর্ড উপরে এটি ভাল ব্যাখ্যা করেছেন। তবে এটি আরও সহজ করার জন্য আমাকে কয়েকটি সহজ পদক্ষেপগুলি বলি তবে আপনি নিজের সাইটে একটি গিথুব কাঁচা ফাইল ব্যবহার করতে পারেন:

আপনার ফাইলটির লিঙ্কটি এখানে:

https://raw.githubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

এখন এটি কার্যকর করতে আপনাকে https: // এবং কাঁচা এবং গিথুবুজার কনটেন্টের মধ্যে ডট (।) সরিয়ে ফেলতে হবে

এটার মত:

rawgithubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

এখন আপনি এই লিঙ্কটি পরিদর্শন করার সময় আপনি একটি লিঙ্ক পাবেন যা আপনার জাভাস্ক্রিপ্ট কল করতে ব্যবহার করা যেতে পারে:

এখানে চূড়ান্ত লিঙ্ক:

https://rawgit.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

একইভাবে আপনি যদি কোনও সিএসএস ফাইল হোস্ট করেন তবে আপনাকে উপরে বর্ণিত হিসাবে এটি করতে হবে। গিথুবটিতে হোস্ট করা আপনার বাহ্যিক CSS বা জাভাস্ক্রিপ্ট ফাইলটিতে কল করার সহজ লিঙ্কটি পাওয়া সবচেয়ে সহজ উপায়।

আমি আশা করি এই সহায়ক।

রেফারেন্স ইউআরএল: http://101helper.blogspot.com/2015/11/store-blogger-codes-on-github-boost-blogger-speed.html


3
কাঁচগিট এখন বন্ধ রয়েছে (2018-10-08 হিসাবে): কাঁচিগিট.কম । এই উত্তর আপডেট করার পরামর্শ দিন।
ছারভে

1

আমি ফাইলটির শুরুতে মন্তব্যগুলির কারণে ত্রুটিটি দেখানো হয়েছিল বলে মনে করেছি, আপনি কোনও মন্তব্য ছাড়াই নিজের ফাইলটি তৈরি করে এবং গিটকে ধাক্কা দিয়ে এই সমস্যাটি সমাধান করতে পারেন, এটি কোনও ত্রুটি দেখায় না

প্রমানের জন্য আপনি একই পৃষ্ঠাগুলির একই কোড সহ এই দুটি ফাইল চেষ্টা করতে পারেন:

মন্তব্য ব্যতীত

মন্তব্য সহ


1

আপনার মত আমারও একই সমস্যা ছিল, আমি যা করেছি তা বদলে যাওয়া

<script type="application/javascript" src="bootstrap-wysiwyg.js"></script>

এটা আমার জন্য কাজ করে.


কি থেকে পরিবর্তন? দয়া করে এর আগে এবং তার পরে দেখাবেন
আলেকজান্ডার মিলস

0

সর্বাধিক সহজ উপায়:
<script type="text/plain" src="http://raw.githubusercontent.com/user/repo/branch/file.js"></script>
গিটহাব দ্বারা পরিবেশিত,
এবং

খুব

নির্ভরযোগ্য।
সাথে text/plain
এখানে চিত্র বর্ণনা লিখুন ছাড়াtext/plain
এখানে চিত্র বর্ণনা লিখুন


এটি সর্বোত্তম সমাধান, এটি কেবল কাজ করে এবং এতটা বোঝায়।
20

2
কোন। এই সমস্ত কিছুই স্ক্রিপ্টটিকে এমনকি চলমান থেকে বাধা দেয়
স্টিভেন পেনি

2
এটি শীঘ্রই আর কাজ করবে না। আমার Android ডিভাইস Logcat থেকে: "একটি অবৈধ প্রকার / ভাষা সঙ্গে আনা হচ্ছে স্ক্রিপ্ট বৈশিষ্ট্যাবলী অবচিত এবং, M56 সরিয়ে ফেলা হবে জানুয়ারী 2017. দেখুন কাছাকাছি chromestatus.com/features/5760718284521472 আরো বিস্তারিত জানার জন্য।"
জেনস হউকে

0

raw.github.comফাইল সম্পদে সত্যিকার অর্থে কাঁচা অ্যাক্সেস নয়, তবে এটি একটি দৃশ্য যা রেল দ্বারা রেন্ডার করা হয়েছে। সুতরাং অ্যাক্সেস raw.github.comকরা প্রয়োজনের চেয়ে অনেক বেশি ভারী। কেন জানি নাraw.github.com একটি রেল ভিউ হিসাবে প্রয়োগ করা হয়েছে। এই রুটের সমস্যাটি ঠিক করার পরিবর্তে, গিটহাব একটি X-Content-Type-Options: nosniffশিরোনাম যুক্ত করেছে।

কার্যসংক্রান্ত:

  • স্ক্রিপ্টটি রাখুন user.github.io/repo
  • তৃতীয় পক্ষের সিডিএন ব্যবহার করুন Rawgit.com এর মতো।

এর দ্বারা বিভ্রান্ত অন্য কারও জন্য তারা ইচ্ছাকৃতভাবে এটি করেছিলেন। আপনি কেবল raw.github.comফাইল লোড করতে ব্যবহার করতে সক্ষম হতেন - এবং তারপর গিথুব বুঝতে পেরেছিলেন যে এগুলি সিডিএন হিসাবে ব্যবহৃত হচ্ছে, যা তাদেরকে অত্যধিক ট্র্যাফিকের কারণ হিসাবে তৈরি করছে। ফলস্বরূপ, তারা এটিকে X-Content-Type-Options: nosniffহেডারের সাথে এই ধরণের রেন্ডারিংয়ে পরিবর্তন করেছে , বিশেষত লোকদের সেভাবে তাদের পরিষেবা ব্যবহার থেকে বিরত রাখতে।
ট্রয় অ্যালফোর্ড

0

বিকল্পভাবে, যদি আপনার মার্কআপ সার্ভার-সাইড তৈরি করা হয় তবে আপনি কেবল আনতে এবং ইনজেকশন করতে পারেন। উদাহরণস্বরূপ, জেএসটিএলে আপনি এটি করতে পারেন:

<script type="text/javascript">
    <c:import url="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js" />
</script>

তারা কোনও কারণে হটলিংকের অনুমতি দেয় না, তাই আপনি যদি একজন ভাল নাগরিক হতে চান তবে সম্ভবত খারাপ ফর্ম। আমি আপনাকে সেই জাভাস্ক্রিপ্টটিকে ক্যাশে দেওয়ার পরামর্শ দিচ্ছি এবং আপনি যথাযথ দেখায় কেবল সময়ে সময়ে পুনরায় আনতে চাই।


0

উদাহরণ


মূল

https://raw.githubusercontent.com/antelove19/qrcodejs/master/qrcode.min.js

cdn.jsdelivr.net

https://cdn.jsdelivr.net/gh/antelove19/qrcodejs/qrcode.min.js
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.