Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

পরিচিতি

Faker Storage একটি উচ্চ-কার্যক্ষম PHP প্যাকেজ যা বড় পরিমাণে মিথ্যা ডেটা ফাইলগুলি কার্যকরভাবে তৈরি এবং সংরক্ষণ করতে ডিজাইন করা হয়েছে। এটি একসাথে কাজ করার জন্য Swoole বা PCNTL ব্যবহার করে হাজার হাজার ফাইলকে সমান্তরালভাবে তৈরি করে, যা লোড টেস্টিং, উন্নয়ন পরিবেশ, এবং স্টোরেজ সিস্টেম বেঞ্চমার্কিং-এর জন্য উপযুক্ত।

প্যাকেজটি সঙ্গতিপূর্ণ আউটপুট সরবরাহ করে যা বীজ দেওয়া হলে পুনরাবৃত্তিমূলক পরীক্ষার ডেটা নিশ্চিত করে, যাতে বিভিন্ন ফাইলের ধরন তৈরি করার জন্য একটি সুচারু API সরবরাহ করে, যার মধ্যে রয়েছে চিত্র (PNG, JPG, GIF, BMP, WEBP, AVIF), টেক্সট ফাইল, CSV ফাইল, দ্বি-অক্ষে ডেটা, এবং RFC822-সমরূপ ইমেইল।

মূল বৈশিষ্ট্য

উদাহরণ

use DefectiveCode\Faker\Faker;
use League\Flysystem\Filesystem;
use DefectiveCode\Faker\Generators\Png;
use League\Flysystem\Local\LocalFilesystemAdapter;
 
// ১০০০ PNG ছবি তৈরি করুন ১০টি সমান্তরাল কর্মী নিয়ে
Faker::make(Png::class)
->width(800, 1920)
->height(600, 1080)
->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage')))
->basePath('images')
->count(1000)
->concurrency(10)
->seed(42)
->generate();
 
// CSV ফাইল তৈরি করুন
use DefectiveCode\Faker\Generators\Csv;
 
Faker::make(Csv::class)
->columns(5, 10)
->rows(100, 500)
->delimiter(',')
->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage')))
->count(50)
->generate();
 
// সংযুক্তির সাথে ইমেইল তৈরি করুন
use DefectiveCode\Faker\Generators\Email;
 
Faker::make(Email::class)
->paragraphs(3, 5)
->sentences(2, 4)
->withAttachment(Png::class, 1, 3)
->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage')))
->count(100)
->generate();

ইনস্টলেশন

প্যাকেজটি কম্পোজার দ্বারা ইনস্টল করুন:

composer require defectivecode/faker-storage

প্রয়োজনীয়তা

ঐচ্ছিক নির্ভরশীলতা

সেরা কর্মক্ষমতার জন্য, Swoole এক্সটেনশন ইনস্টল করুন:

pecl install swoole

যদি উপলব্ধ থাকে তবে প্যাকেজটি স্বয়ংক্রিয়ভাবে Swoole ব্যবহার করবে, অন্যথায় PCNTL-এ ফিরে যাবে।

ব্যবহার

প্রাথমিক কাজের প্রক্রিয়া

সমস্ত জেনারেটর একই প্যাটার্ন অনুসরণ করে:

  1. একটি জেনারেটর দিয়ে একটি Faker ইনস্ট্যান্স তৈরি করুন
  2. জেনারেটর কনফিগার করুন (ঐচ্ছিক)
  3. স্টোরেজ গন্তব্য নির্ধারণ করুন
  4. সমান্তরালতা এবং সংখ্যা কনফিগার করুন
  5. ফাইল জেনারেট করুন
use DefectiveCode\Faker\Faker;
use League\Flysystem\Filesystem;
use DefectiveCode\Faker\Generators\Text;
use League\Flysystem\Local\LocalFilesystemAdapter;
 
Faker::make(Text::class)
->paragraphs(5, 10) // জেনারেটর-নির্দিষ্ট কনফিগারেশন
->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage')))
->basePath('documents') // ফাইলগুলি /storage/documents/ এ থাকবে
->count(100) // ১০০ ফাইল তৈরি করুন
->concurrency(4) // ৪টি কর্মী ব্যবহার করুন
->seed(123) // নির্ধারিত আউটপুটের জন্য
->generate();

স্টোরেজ কনফিগারেশন

ফ্লাইসিস্টেম ব্যবহার করা

Faker Storage স্টোরেজ বিমূর্ততার জন্য লীগ ফ্লাইসিস্টেম ব্যবহার করে:

use League\Flysystem\Filesystem;
use League\Flysystem\Local\LocalFilesystemAdapter;
 
// স্থানীয় স্টোরেজ
$filesystem = new Filesystem(new LocalFilesystemAdapter('/path/to/storage'));
 
Faker::make(Png::class)
->toDisk($filesystem)
->generate();

AWS S3 স্টোরেজ

use Aws\S3\S3Client;
use League\Flysystem\Filesystem;
use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
 
$client = new S3Client([
'credentials' => [
'key' => 'your-key',
'secret' => 'your-secret',
],
'region' => 'us-east-1',
'version' => 'latest',
]);
 
$adapter = new AwsS3V3Adapter($client, 'your-bucket-name');
$filesystem = new Filesystem($adapter);
 
Faker::make(Png::class)
->toDisk($filesystem)
->basePath('uploads/images')
->generate();

ডিস্ক অপশনগুলি

ফাইলসিস্টেম অ্যাডাপ্টারে অতিরিক্ত অপশন পাস করুন:

Faker::make(Png::class)
->toDisk($filesystem)
->diskOptions([
'visibility' => 'public',
'ACL' => 'public-read',
'CacheControl' => 'max-age=31536000',
])
->generate();

সমান্তরাল কনফিগারেশন

concurrency() পদ্ধতির মাধ্যমে সমান্তরাল কার্যকর করা নিয়ন্ত্রণ করুন:

// ১০টি কর্মী থ্রেড/প্রক্রিয়া ব্যবহার করুন
Faker::make(Png::class)
->concurrency(10)
->generate();
 
// Swoole-নির্দিষ্ট: থ্রেড এবং থ্রেড প্রতি কর্টিনগুলির সেট করুন
Faker::make(Png::class)
->concurrency(threads: 4, coroutines: 8) // ৪টি কর্মী, প্রতিটি ৮টি কর্টিন
->generate();

ফাইল নামকরণ

ডিফল্ট নামকরণ

ডিফল্টভাবে, ফাইলগুলি UUID v4 ব্যবহার করে নাম দেওয়া হয়:

// উৎপন্ন: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.png
Faker::make(Png::class)->generate();

অন্তর্নির্মিত নাম জেনারেটর

use DefectiveCode\Faker\NameGenerator;
 
// UUID-ভিত্তিক (ডিফল্ট)
NameGenerator::setDefault('uuid'); // উৎপন্ন: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.png
 
// ধারাবাহিক নম্বরিক
NameGenerator::setDefault('sequence'); // উৎপন্ন: 1.png, 2.png, 3.png, ...

কাস্টম নামকরণ

ফাইল নাম উন্নত করার জন্য একটি ক্লোজার সরবরাহ করুন:

use DefectiveCode\Faker\NameGenerator;
 
// কাস্টম ক্লোজার
Faker::make(Png::class)
->nameGenerator(function (int $seed, int $completedFiles, $generator) {
return "custom-{$completedFiles}-{$seed}.png";
})
->generate();
 
// তারিখ-ভিত্তিক নামকরণ
Faker::make(Png::class)
->nameGenerator(function (int $seed, int $completedFiles, $generator) {
return date('Y/m/d') . "/image-{$completedFiles}.png";
})
->generate();

পুনরাবৃত্তিযোগ্যতা জন্য বীজ

একই ফাইলগুলি তৈরি করতে একটি বীজ সেট করুন:

Faker::make(Png::class)
->seed(42)
->count(10)
->generate();

প্রতিটি ফাইল একটি অনন্য নির্ধারিত বীজ পায় যা মৌলিক বীজ এবং ফাইল ইনডেক্স থেকে উদ্ভূত হয়।

জেনারেটর

চিত্র জেনারেটর

সমস্ত চিত্র জেনারেটর মাপ এবং গুণমান কনফিগারেশন সমর্থন করে।

PNG

use DefectiveCode\Faker\Generators\Png;
 
Faker::make(Png::class)
->width(800, 1920) // 800-1920px এর মধ্যে এলোমেলো প্রস্থ
->height(600, 1080) // 600-1080px এর মধ্যে এলোমেলো উচ্চতা
->withAlpha(true) // অ্যালফা/স্বচ্ছ্য চ্যানেল সক্রিয় করুন
->grid(5) // ঐচ্ছিক: 5x5 সমান্তরাল প্যাটার্ন উৎপন্ন করুন
->toDisk($filesystem)
->generate();

JPG

use DefectiveCode\Faker\Generators\Jpg;
 
Faker::make(Jpg::class)
->width(800, 1920) // 800-1920px এর মধ্যে এলোমেলো প্রস্থ
->height(600, 1080) // 600-1080px এর মধ্যে এলোমেলো উচ্চতা
->grid(5) // ঐচ্ছিক: 5x5 সমান্তরাল প্যাটার্ন উৎপন্ন করুন
->toDisk($filesystem)
->generate();

GIF

use DefectiveCode\Faker\Generators\Gif;
 
Faker::make(Gif::class)
->width(800, 1920) // 800-1920px এর মধ্যে এলোমেলো প্রস্থ
->height(600, 1080) // 600-1080px এর মধ্যে এলোমেলো উচ্চতা
->withAlpha(true) // অ্যালফা/স্বচ্ছ্য চ্যানেল সক্রিয় করুন
->grid(5) // ঐচ্ছিক: 5x5 সমান্তরাল প্যাটার্ন উৎপন্ন করুন
->toDisk($filesystem)
->generate();

BMP

use DefectiveCode\Faker\Generators\Bmp;
 
Faker::make(Bmp::class)
->width(800, 1920) // 800-1920px এর মধ্যে এলোমেলো প্রস্থ
->height(600, 1080) // 600-1080px এর মধ্যে এলোমেলো উচ্চতা
->grid(5) // ঐচ্ছিক: 5x5 সমান্তরাল প্যাটার্ন উৎপন্ন করুন
->toDisk($filesystem)
->generate();

WEBP

use DefectiveCode\Faker\Generators\Webp;
 
Faker::make(Webp::class)
->width(800, 1920) // 800-1920px এর মধ্যে এলোমেলো প্রস্থ
->height(600, 1080) // 600-1080px এর মধ্যে এলোমেলো উচ্চতা
->withAlpha(true) // অ্যালফা/স্বচ্ছ্য চ্যানেল সক্রিয় করুন
->grid(5) // ঐচ্ছিক: 5x5 সমান্তরাল প্যাটার্ন উৎপন্ন করুন
->toDisk($filesystem)
->generate();

AVIF

use DefectiveCode\Faker\Generators\Avif;
 
Faker::make(Avif::class)
->width(800, 1920) // 800-1920px এর মধ্যে এলোমেলো প্রস্থ
->height(600, 1080) // 600-1080px এর মধ্যে এলোমেলো উচ্চতা
->withAlpha(true) // অ্যালফা/স্বচ্ছ্য চ্যানেল সক্রিয় করুন
->grid(5) // ঐচ্ছিক: 5x5 সমান্তরাল প্যাটার্ন উৎপন্ন করুন
->toDisk($filesystem)
->generate();

এলোমেলো ছবি

একটি এলোমেলো চিত্র ফরম্যাট তৈরি করে:

use DefectiveCode\Faker\Generators\RandomImage;
 
Faker::make(RandomImage::class)
->width(800, 1920)
->height(600, 1080)
->withAlpha(false) // এলোমেলোভাবে: AVIF, BMP, GIF, JPEG, PNG, WEBP থেকে
->toDisk($filesystem)
->generate();
 
Faker::make(RandomImage::class)
->width(800, 1920)
->height(600, 1080)
->withAlpha(true) // এলোমেলোভাবে: AVIF, GIF, PNG, WEBP থেকে
->toDisk($filesystem)
->generate();

টেক্সট জেনারেটর

অনুচ্ছেদ সহ সাধারণ টেক্সট ফাইল তৈরি করুন:

use DefectiveCode\Faker\Generators\Text;
 
Faker::make(Text::class)
->paragraphs(5, 10) // প্রতি ফাইলে 5-10টি অনুচ্ছেদ
->sentences(3, 6) // প্রতি অনুচ্ছেদে 3-6টি বাক্য
->toDisk($filesystem)
->generate();

আউটপুট উদাহরণ:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

CSV জেনারেটর

এলোমেলো ডেটা সহ CSV ফাইল তৈরি করুন:

use DefectiveCode\Faker\Generators\Csv;
 
Faker::make(Csv::class)
->columns(5, 10) // 5-10 কলাম
->rows(100, 500) // 100-500 সারি
->delimiter(',') // কলামের ডেলিমিটার
->enclosure('"') // ফিল্ডের ঘেরাবন্ধক
->escape('\\') // Escape চরিত্র
->eol("\n") // লাইন শেষ
->toDisk($filesystem)
->generate();

আউটপুট উদাহরণ:

"John Doe","john@example.com","555-1234","New York","Engineer"
"Jane Smith","jane@example.com","555-5678","Los Angeles","Designer"
"Bob Johnson","bob@example.com","555-9012","Chicago","Manager"

দ্বি-অক্ষে জেনারেটর

এলোমেলো দ্বি-অক্ষে ডেটা তৈরি করুন:

use DefectiveCode\Faker\Generators\Binary;
 
Faker::make(Binary::class)
->length(1024, 1048576) // 1KB - 1MB
->toDisk($filesystem)
->generate();

ইমেইল জেনারেটর

RFC822-সমরূপ ইমেইল ফাইল তৈরি করুন:

use DefectiveCode\Faker\Generators\Email;
 
Faker::make(Email::class)
->paragraphs(3, 5) // ইমেইল শরীরে অনুচ্ছেদ
->sentences(2, 4) // প্রতি অনুচ্ছেদে বাক্যের সংখ্যা
->withAttachment(Png::class, 1, 3) // 1-3 PNG সংযুক্তি যোগ করুন
->toDisk($filesystem)
->generate();

ইমেইল শিরোনাম

তৈরিকৃত ইমেইলে অন্তর্ভুক্ত রয়েছে:

সংযুক্তির সাথে ইমেইল

ফাইল সংযুক্ত করুন জেনারেটর ক্লাসের নাম বা ইনস্ট্যান্স ব্যবহার করে:

use DefectiveCode\Faker\Generators\Email;
use DefectiveCode\Faker\Generators\Png;
use DefectiveCode\Faker\Generators\Pdf;
 
Faker::make(Email::class)
->withAttachment(Png::class, 1, 3) // 1-3 PNG সংযুক্তি
->generate();
 
// কনফিগার করা জেনারেটর ইনস্ট্যান্স ব্যবহার করে সংযোগ করুন
$pngGenerator = new Png(Png::getDefaultConfig());
$pngGenerator->width(400, 800)->height(300, 600);
 
Faker::make(Email::class)
->withAttachment($pngGenerator, 2, 5)
->generate();

আউটপুট উদাহরণ:

To: John Doe <john.doe@example.com>
From: Jane Smith <jane.smith@example.com>
Subject: Important meeting tomorrow
Date: Fri, 03 Jan 2026 10:30:00 +0000
Message-ID: <3e92e5c2b0d632b3a36fbbb17484b7fe@example.com>
Content-Type: multipart/mixed; boundary="----=_Part_123"
 
------=_Part_123
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
 
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
 
------=_Part_123
Content-Type: image/png; name="attachment.png"
Content-Disposition: attachment; filename="attachment.png"
Content-Transfer-Encoding: base64
 
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
------=_Part_123--

উন্নত ব্যবহার

কাস্টম জেনারেটর

Generator ইন্টারফেস কার্যকর করে আপনার কাস্টম জেনারেটর তৈরি করুন:

use DefectiveCode\Faker\Configs\Config;
use DefectiveCode\Faker\Concerns\SetsSeed;
use DefectiveCode\Faker\Generators\Generator;
use DefectiveCode\Faker\Concerns\PreparesFaker;
 
class MyCustomGenerator implements Generator
{
use PreparesFaker;
use SetsSeed;
 
public function __construct(public Config $config) {}
 
public static function getDefaultConfig(): Config
{
return new MyCustomConfig([
'contentType' => 'application/x-custom',
'nameGenerator' => NameGenerator::default('extension'),
]);
}
 
public function generate(): mixed
{
// আপনার উৎপাদন লজিক এখানে
$data = $this->faker->randomElement(['foo', 'bar', 'baz']);
 
$stream = fopen('php://temp', 'w+');
fwrite($stream, $data);
 
return $stream;
}
}
 
// আপনার কাস্টম জেনারেটর ব্যবহার করুন
Faker::make(MyCustomGenerator::class)
->toDisk($filesystem)
->generate();

কনফিগারেশন ক্লাস

প্রতিটি জেনারেটর একটি কনফিগারেশন ক্লাস ব্যবহার করে যা Config এর বিস্তৃত:

use DefectiveCode\Faker\Configs\Config;
 
class MyCustomConfig extends Config
{
public int $minValue = 1;
public int $maxValue = 100;
}

কর্মক্ষমতা পরামর্শ

  1. Swoole ব্যবহার করুন: সেরা কর্মক্ষমতার জন্য Swoole এক্সটেনশন ইনস্টল করুন
  2. সমান্তরালতা টিউন করুন: সর্বাধিক throughput এর জন্য থ্রেডের সংখ্যা CPU কোরের সাথে মেলে
  3. ব্যাচ অপারেশন: অনেক ছোট রান করার পরিবর্তে বড় ব্যাচে উৎপাদন করুন
  4. স্টোরেজ স্থান: আপলোড করার আগে অস্থায়ী ফাইলগুলি জন্য দ্রুত স্টোরেজ ব্যবহার করুন (SSD, লোকাল ডিস্ক)
  5. নেটওয়ার্ক I/O: S3 ব্যবহার করার সময়, ব্যান্ডউইথ ব্যবহারের সর্বাধিক করতে সমান্তরালতা বৃদ্ধি করুন

কনফিগারেশন

গ্লোবাল কনফিগারেশন পদ্ধতি

এই পদ্ধতিগুলি সমস্ত Faker ইনস্ট্যান্সে উপলব্ধ:

make(string $generator): Faker

নির্দিষ্ট জেনারেটর সহ একটি নতুন Faker ইনস্ট্যান্স তৈরি করুন:

Faker::make(Png::class)

toDisk(Filesystem $filesystem): Faker

স্টোরেজ গন্তব্য সেট করুন (প্রয়োজনীয়):

Faker::make(Png::class)
->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage')))

basePath(string $basePath): Faker

ফাইলসিস্টেমের মধ্যে বেস পাথ সেট করুন:

Faker::make(Png::class)
->basePath('images/uploads') // ফাইলগুলি /storage/images/uploads/ এ সংগ্রহীত হবে

count(int $count): Faker

তৈরি করা ফাইলের সংখ্যা সেট করুন:

Faker::make(Png::class)
->count(1000)

concurrency(int $threads, ?int $coroutines = null): Faker

সমান্তরাল কার্যকর কনফিগার করুন:

// প্রাথমিক সমান্তরালতা
Faker::make(Png::class)
->concurrency(4)
 
// Swoole-নির্দিষ্ট: থ্রেড এবং কর্টিনগুলিকে
Faker::make(Png::class)
->concurrency(threads: 4, coroutines: 8)

seed(int $seed): Faker

নির্ধারিত উৎপাদনের জন্য বীজ সেট করুন:

Faker::make(Png::class)
->seed(42)

nameGenerator(Closure $generator): Faker

ফাইল নাম কাস্টমাইজ করুন:

Faker::make(Png::class)
->nameGenerator(function (int $seed, int $completedFiles, $generator) {
return "file-{$completedFiles}.png";
})

diskOptions(array $diskOptions): Faker

ফাইলসিস্টেম অ্যাডাপ্টারে অপশন পাস করুন:

Faker::make(Png::class)
->diskOptions([
'visibility' => 'public',
'ACL' => 'public-read',
])

generate(): void

ফাইল উৎপাদন কার্যকর করুন:

Faker::make(Png::class)->generate();

সমর্থন নির্দেশিকা

আমাদের ওপেন সোর্স প্যাকেজটি নির্বাচন করার জন্য ধন্যবাদ! দয়া করে এই সমর্থন নির্দেশিকাগুলি অন্বেষণ করতে একটি মুহূর্ত নিন। এগুলি আপনাকে আমাদের প্রকল্প থেকে সর্বাধিক উপকার পেতে সহায়তা করবে।

সম্প্রদায়ের দ্বারা পরিচালিত সমর্থন

আমাদের ওপেন-সোর্স প্রকল্পটি আমাদের অসাধারণ সম্প্রদায় দ্বারা চালিত। আপনার যদি প্রশ্ন থাকে অথবা সহায়তার প্রয়োজন হয়, StackOverflow এবং অন্যান্য অনলাইন সম্পদ আপনার জন্য সেরা।

ত্রুটি এবং বৈশিষ্ট্য অগ্রাধিকার

একটি ওপেন-সোর্স প্রকল্প পরিচালনার বাস্তবতা মানে আমরা প্রতিবেদন করা প্রতিটি ত্রুটি বা বৈশিষ্ট্য অনুরোধ অবিলম্বে সমাধান করতে পারি না। আমরা সমস্যা সমাধানে নিম্নলিখিত ক্রমে অগ্রাধিকার দিই:

১. আমাদের অর্থপ্রদান করা পণ্যগুলি প্রভাবিতকারী ত্রুটি

যে ত্রুটিগুলি আমাদের অর্থপ্রদান করা পণ্যে প্রভাব ফেলে সেগুলি সর্বদা আমাদের শীর্ষ অগ্রাধিকার। কিছু ক্ষেত্রে, আমরা শুধু সেই ত্রুটিগুলি সমাধান করতে পারি যা আমাদের সরাসরি প্রভাবিত করে।

২. সম্প্রদায়ের পুল রিকুইস্ট

যদি আপনি একটি ত্রুটি সনাক্ত করেছেন এবং তার সমাধান আছে, তাহলে দয়া করে একটি পুল রিকুইস্ট জমা দিন। আমাদের পণ্যগুলিকে প্রভাবিতকারী সমস্যাগুলোর পরে, আমরা এই সম্প্রদায়-চালিত সমাধানগুলিতে পরবর্তী সর্বাধিক অগ্রাধিকার দিই। একবার পর্যালোচনা করে অনুমোদিত হলে, আমরা আপনার সমাধানটি একত্রিত করবো এবং আপনার অবদানের জন্য কৃতিত্ব দেবো।

৩. আর্থিক সমর্থন

উল্লেখিত বিভাগগুলির বাইরের সমস্যার জন্য, আপনি তাদের সমাধানের জন্য অর্থায়ন করতে পারেন। প্রতিটি ওপেন ইস্যু একটি অর্ডার ফরমের সাথে সংযুক্ত, যেখানে আপনি আর্থিকভাবে অবদান রাখতে পারেন। আমরা প্রদত্ত অর্থায়ন পরিমাণ অনুযায়ী এই সমস্যাগুলিতে অগ্রাধিকার দিই।

সম্প্রদায়ের অবদান

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

আবার উল্লেখ করতে, DefectiveCode আমাদের অর্থপ্রদান করা পণ্যগুলিতে ত্রুটিগুলির প্রভাব, সম্প্রদায়ের পুল রিকুইস্ট এবং সমস্যার জন্য প্রাপ্ত আর্থিক সমর্থনের ভিত্তিতে ত্রুটিগুলিকে অগ্রাধিকার দেবে.

লাইসেন্স - MIT লাইসেন্স

কপিরাইট © Defective Code, LLC। সকল অধিকার সংরক্ষিত

এই সফ্টওয়্যার এবং সংশ্লিষ্ট ডকুমেন্টেশন ফাইল (যাকে "সফ্টওয়্যার" বলা হয়) এর একটি কপি প্রাপ্ত যেকোনো ব্যক্তিকে বিনা শর্তে, বিনামূল্যে, সফ্টওয়্যারটি ব্যবহার, কপি, পরিবর্তন, মিশ্রণ, প্রকাশ, বিতরণ, উপলাইসেন্স এবং/অথবা সফ্টওয়্যার-এর কপি বিক্রি করার অধিকার দেওয়া হয়, এবং যাদের কাছে সফ্টওয়্যারটি প্রদান করা হয় তাদের এটি করতে অনুমতি দেওয়া হয়, নিম্নলিখিত শর্তাবলীর অধীনে:

উপরে উল্লিখিত কপিরাইট নোটিস এবং এই অনুমতি নোটিস সমস্ত কপি বা সফ্টওয়্যার-এর গুরুত্বপূর্ণ অংশে অন্তর্ভুক্ত করা হবে।

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