C++, Java, Python, এবং JavaScript এ FlatBuffers ব্যবহার

FlatBuffers এর Multi-language সাপোর্ট - ফ্লাট বাফারস (Flat Buffers) - Latest Technologies

338

C++, Java, Python, এবং JavaScript এ FlatBuffers ব্যবহার

FlatBuffers একটি উচ্চ কার্যক্ষমতা সম্পন্ন ডেটা সিরিয়ালাইজেশন টুল যা বিভিন্ন প্রোগ্রামিং ভাষায় ব্যবহার করা যায়। নিচে C++, Java, Python, এবং JavaScript এ FlatBuffers কিভাবে ব্যবহার করতে হয় তার একটি সংক্ষিপ্ত নির্দেশিকা দেওয়া হলো।


১. C++ এ FlatBuffers ব্যবহার

১.১. Schema তৈরি

monster.fbs ফাইল তৈরি করুন:

namespace MyGame.Sample;

table Monster {
    id: int;
    name: string;
    health: float;
    inventory: [string];
}

root_type Monster;

১.২. কম্পাইল করা

flatc --cpp monster.fbs

১.৩. C++ কোড

#include "monster_generated.h" // উৎপন্ন FlatBuffers ফাইল
#include <iostream>
#include <fstream>

using namespace MyGame::Sample;

void serializeData() {
    flatbuffers::FlatBufferBuilder builder;
    auto name = builder.CreateString("Orc");
    auto inventory = builder.CreateVector({"Sword", "Axe"});

    MonsterBuilder monster_builder(builder);
    monster_builder.add_id(1);
    monster_builder.add_name(name);
    monster_builder.add_health(100.0f);
    monster_builder.add_inventory(inventory);
    auto orc = monster_builder.Finish();

    builder.Finish(orc);

    std::ofstream ofs("monster_data.bin", std::ios::binary);
    ofs.write(reinterpret_cast<const char*>(builder.GetBufferPointer()), builder.GetSize());
    ofs.close();
}

void deserializeData() {
    std::ifstream ifs("monster_data.bin", std::ios::binary);
    std::vector<char> buffer((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
    
    const Monster* monster = GetMonster(buffer.data());
    std::cout << "Monster ID: " << monster->id() 
              << ", Name: " << monster->name()->c_str() 
              << ", Health: " << monster->health() << std::endl;
}

int main() {
    serializeData();
    deserializeData();
    return 0;
}

২. Java এ FlatBuffers ব্যবহার

২.১. Schema তৈরি

monster.fbs ফাইল তৈরি করুন (একই ফাইল ব্যবহার করুন)।

২.২. কম্পাইল করা

flatc --java monster.fbs

২.৩. Java কোড

import com.google.flatbuffers.FlatBufferBuilder;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) throws Exception {
        FlatBufferBuilder builder = new FlatBufferBuilder(1024);
        int name = builder.createString("Orc");
        int[] inventoryItems = {builder.createString("Sword"), builder.createString("Axe")};
        int inventory = Monster.createInventoryVector(builder, inventoryItems);
        
        Monster.startMonster(builder);
        Monster.addId(builder, 1);
        Monster.addName(builder, name);
        Monster.addHealth(builder, 100.0f);
        Monster.addInventory(builder, inventory);
        int orc = Monster.endMonster(builder);
        
        builder.finish(orc);
        
        // Serialize to file
        Files.write(Paths.get("monster_data.bin"), builder.sizedByteArray());
        
        // Deserialize from file
        byte[] bytes = Files.readAllBytes(Paths.get("monster_data.bin"));
        Monster monster = Monster.getRootAsMonster(new FlatBufferBuilder().createBuffer(bytes));
        System.out.println("Monster ID: " + monster.id() + ", Name: " + monster.name() + ", Health: " + monster.health());
    }
}

৩. Python এ FlatBuffers ব্যবহার

৩.১. Schema তৈরি

monster.fbs ফাইল তৈরি করুন (একই ফাইল ব্যবহার করুন)।

৩.২. কম্পাইল করা

flatc --python monster.fbs

৩.৩. Python কোড

import flatbuffers
from monster import Monster

def serialize_data():
    builder = flatbuffers.FlatBufferBuilder(1024)
    
    name = builder.CreateString("Orc")
    inventory = builder.CreateVector([builder.CreateString("Sword"), builder.CreateString("Axe")])
    
    MonsterStart(builder)
    MonsterAddId(builder, 1)
    MonsterAddName(builder, name)
    MonsterAddHealth(builder, 100.0)
    MonsterAddInventory(builder, inventory)
    orc = MonsterEnd(builder)

    builder.Finish(orc)

    # Serialize to file
    with open("monster_data.bin", "wb") as f:
        f.write(builder.Output())
    
def deserialize_data():
    with open("monster_data.bin", "rb") as f:
        buf = f.read()
    
    monster = Monster.GetRootAsMonster(buf, 0)
    print(f"Monster ID: {monster.Id()}, Name: {monster.Name().decode('utf-8')}, Health: {monster.Health()}")
    
if __name__ == "__main__":
    serialize_data()
    deserialize_data()

৪. JavaScript এ FlatBuffers ব্যবহার

৪.১. Schema তৈরি

monster.fbs ফাইল তৈরি করুন (একই ফাইল ব্যবহার করুন)।

৪.২. কম্পাইল করা

flatc --js monster.fbs

৪.৩. JavaScript কোড

const fs = require('fs');
const flatbuffers = require('flatbuffers').flatbuffers;
const { Monster } = require('./monster_generated'); // উৎপন্ন FlatBuffers ফাইল

function serializeData() {
    const builder = new flatbuffers.FlatBufferBuilder(1024);
    
    const name = builder.createString("Orc");
    const inventory = Monster.createInventoryVector(builder, [builder.createString("Sword"), builder.createString("Axe")]);
    
    Monster.startMonster(builder);
    Monster.addId(builder, 1);
    Monster.addName(builder, name);
    Monster.addHealth(builder, 100.0);
    Monster.addInventory(builder, inventory);
    const orc = Monster.endMonster(builder);

    builder.finish(orc);

    // Serialize to file
    fs.writeFileSync('monster_data.bin', Buffer.from(builder.asUint8Array()));
}

function deserializeData() {
    const buffer = fs.readFileSync('monster_data.bin');
    const monster = Monster.getRootAsMonster(new flatbuffers.ByteBuffer(new Uint8Array(buffer)));

    console.log(`Monster ID: ${monster.id()}, Name: ${monster.name()}, Health: ${monster.health()}`);
}

serializeData();
deserializeData();

সারসংক্ষেপ

  • C++: FlatBuffers ব্যবহার করে ডেটা তৈরি এবং বাইনারি ফাইলে সংরক্ষণ করা হয়।
  • Java: Android এবং Java অ্যাপ্লিকেশনের জন্য FlatBuffers ব্যবহার করে ডেটা পরিচালনা করা হয়।
  • Python: Python স্ক্রিপ্ট ব্যবহার করে FlatBuffers ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করা হয়।
  • JavaScript: Node.js ব্যবহার করে FlatBuffers ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করা হয়।

FlatBuffers বিভিন্ন ভাষায় সমর্থন প্রদান করে, যা ডেভেলপারদের জন্য বহুমুখী এবং সুবিধাজনক টুল তৈরি করে।

Content added By
Promotion

Are you sure to start over?

Loading...