ဆောင်းပါးများ

Laravel နှင့် Vue.js ဖြင့် CRUD အက်ပ်ကို ဖန်တီးခြင်း။

ဤသင်ခန်းစာတွင် Laravel နှင့် Vue.js ဖြင့် ဥပမာ CRUD အက်ပ်၏ကုဒ်ကို မည်သို့ရေးရမည်ကို တွဲမြင်ရသည်။

La စာမျက်နှာတစ်ခုတည်းလျှောက်လွှာ DB တွင် အခြေခံလုပ်ဆောင်မှုများ၏ လည်ပတ်မှုကို ပြီးမြောက်အောင် လုပ်ဆောင်နိုင်စေမည်- ဖန်တီးခြင်း၊ ဖတ်ခြင်း၊ အပ်ဒိတ်လုပ်ခြင်းနှင့် ဖျက်ခြင်းတို့ ပြုလုပ်နိုင်သည်။ Vue.js , Vue Routers နှင့် Laravel Framework .

ယနေ့ခေတ်တွင် ရေပန်းအစားဆုံး JS မူဘောင်များမှာ Angular JS နှင့် Vue JS ဖြစ်သည်။ Angular JS နှင့် Vue JS တို့သည် အလွန်အသုံးပြုရလွယ်ကူပြီး လူကြိုက်အများဆုံး JS frameworks များဖြစ်သည်။ ၎င်းသည် စာမျက်နှာကို ပြန်လည်မွမ်းမံပြီး အားကောင်းသော jquery တရားဝင်အတည်ပြုခြင်းမရှိဘဲ ပရောဂျက်တစ်ခုလုံး သို့မဟုတ် အက်ပ်လီကေးရှင်းတစ်ခုလုံးကို စီမံခန့်ခွဲပေးသည်။

Vue သည် Laravel နှင့်အတူ ကြိုတင်ထုပ်ပိုးလာပါသည်။ Laravel Mix ၊ အခြေခံ၍ ကောင်းမွန်သော စာရေးကိရိယာတစ်ခု ဝဘ်အိတ် ) နှင့် developer များသည် transpilers၊ code packages၊ source maps သို့မဟုတ် modern frontend development ၏ အခြားသော "ညစ်ပတ်သော" ရှုထောင့်များကို စိတ်မပူဘဲ ရှုပ်ထွေးသော single page application များကို စတင်တည်ဆောက်နိုင်စေပါသည်။

ဆာဗာလိုအပ်ချက်များ

PHP 7.4

Laravel 8.x

က MySQL

Laravel ပရောဂျက်ကို ထည့်သွင်းပါ။

ပထမဦးစွာ Terminal ကိုဖွင့်ပြီး laravel ပရောဂျက်အသစ်တစ်ခုဖန်တီးရန် အောက်ပါ command ကိုဖွင့်ပါ။

composer create-project --prefer-dist laravel/laravel crud-spa

သို့မဟုတ် Laravel Installer ကို တေးရေးဆရာ ကမ္ဘာလုံးဆိုင်ရာ မှီခိုမှုအဖြစ် သင်ထည့်သွင်းပါက-

laravel new crud-spa

ဒေတာဘေ့စ်အသေးစိတ်များကို စီစဉ်သတ်မှတ်ပါ-

တပ်ဆင်ပြီးနောက် သင့်ပရောဂျက် root directory သို့သွားပါ၊ .env ဖိုင်ကိုဖွင့်ပြီး ဒေတာဘေ့စ်အသေးစိတ်များကို အောက်ပါအတိုင်း သတ်မှတ်ပါ။

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=<DATABASE NAME>
DB_USERNAME=<DATABASE USERNAME>
DB_PASSWORD=<DATABASE PASSWORD>

npm မှီခိုမှုကို ထည့်သွင်းပါ။

front-end မှီခိုမှုကို ထည့်သွင်းရန် အောက်ပါ command ကို run ပါ။

npm install

ထို့နောက် install လုပ်ပါ။ ကြည့်ရှုခြင်း ,  vue-router  e vue-axios . Laravel backend API ကိုခေါ်ရန်အတွက် Vue-axios ကိုအသုံးပြုပါမည်။ Terminal တွင် အောက်ပါ command ကို run ပါ။

npm install vue vue-router vue-axios --save

ရွှေ့ပြောင်းခြင်း၊ မော်ဒယ်နှင့် ထိန်းချုပ်ကိရိယာကို ဖန်တီးပါ။

အမျိုးအစား နမူနာပုံစံ၊ ရွှေ့ပြောင်းခြင်းနှင့် ထိန်းချုပ်ကိရိယာကို ဖန်တီးပါ။ ၎င်းအတွက် အောက်ပါ command ကို run ပါ။

php artisan make:model Category -mcr

-mcr  ဤအကြောင်းအရာသည် တစ်ခုတည်းသော command ပေါင်းစပ်မှုကို အသုံးပြု၍ Model၊ Migration နှင့် Controller ကို ဖန်တီးမည်ဖြစ်သည်။

ယခု၊ အမျိုးအစား ရွှေ့ပြောင်းခြင်းဖိုင်ကို ဖွင့်ပါ။ ဒေတာဘေ့စ်များ / ရွှေ့ပြောင်းခြင်း။ နှင့် function တွင် code ကိုအစားထိုးပါ။ up() :

public function up()
{
    Schema::create('categories', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('title');
        $table->text('description');
        $table->timestamps();
    });
}

အောက်ပါ command ကို အသုံးပြု၍ ဒေတာဘေ့စ်ကို ရွှေ့ပြောင်းပါ။

php artisan migrate

ပြီးရင် Category.php template ကိုဖွင့်လိုက်ပါ။app/Models  ဖိုင်ထဲတွင် ကုဒ်ကို တည်းဖြတ်ပါ။ model Category.php :

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Category extends Model {

   use HasFactory;

   protected $fillable = ['title','description'];

}

?>

ထို့နောက်ဖွင့်ပါ။ CategoryController.php ပြီးလျှင် အောက်ပါအတိုင်း အညွှန်း၊ သိမ်းဆည်း၊ အပ်ဒိတ်နှင့် ဖျက်သည့်နည်းလမ်းများတွင် ကုဒ်ကိုထည့်ပါ။

<?php

namespace App\Http\Controllers;

use App\Models\Category;
use Illuminate\Http\Request;

class CategoryController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $categories = Category::all(['id','title','description']);
        return response()->json($categories);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $category = Category::create($request->post());
        return response()->json([
            'message'=>'Category Created Successfully!!',
            'category'=>$category
        ]);
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Category  $category
     * @return \Illuminate\Http\Response
     */
    public function show(Category $category)
    {
        return response()->json($category);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Category  $category
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Category $category)
    {
        $category->fill($request->post())->save();
        return response()->json([
            'message'=>'Category Updated Successfully!!',
            'category'=>$category
        ]);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Category  $category
     * @return \Illuminate\Http\Response
     */
    public function destroy(Category $category)
    {
        $category->delete();
        return response()->json([
            'message'=>'Category Deleted Successfully!!'
        ]);
    }
}

Defiလမ်းကြောင်းများကို web.php တွင် အပြီးသတ်ပါ။

Ora defiပြီးအောင်လုပ်ပါ။ routes ဖိုင်များတွင် web.php e api.php . ဖိုဒါသို့သွားပါ။ routes web.php နှင့် api.php ဖိုင်ကိုဖွင့်ပြီး အောက်ပါတို့ကို အပ်ဒိတ်လုပ်ပါ။ routes:

routes/web.php

ဆန်းသစ်တီထွင်မှုသတင်းလွှာ
ဆန်းသစ်တီထွင်မှုဆိုင်ရာ အရေးကြီးဆုံးသတင်းများကို လက်လွတ်မခံပါနဲ့။ ၎င်းတို့ကို အီးမေးလ်ဖြင့် လက်ခံရန် စာရင်းသွင်းပါ။
<?php
 
Route::get('{any}', function () {
    return view('app');
})->where('any', '.*');

routes/api.php

<?php
 
Route::resource('category',App\Http\Controllers\CategoryController::class)->only(['index','store','show','update','destroy']);

Vue အက်ပ်ကို ဖန်တီးပါ။

ဤအဆင့်တွင်၊ လမ်းညွှန်ကိုသွားပါ။ အရင်းအမြစ်/အမြင်များ၊ ဖိုင်ကိုဖန်တီးပါ။ app.blade.php  ပြီးလျှင် အောက်ပါကုဒ်ကို ထည့်ပါ။ app.blade.php:

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="csrf-token" value="{{ csrf_token() }}"/>
        <title>Laravel Vue CRUD App</title>
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet" type="text/css">
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
        <link href="{{ mix('css/app.css') }}" type="text/css" rel="stylesheet"/>
    </head>
    <body>
        <div id="app">
        </div>
        <script src="{{ mix('js/app.js') }}" type="text/javascript"></script>
    </body>
</html>

Vue အက်ပ်အတွက် အစိတ်အပိုင်းကို ဖန်တီးပါ။

ဤအဆင့်တွင်၊ ဖိုင်တွဲသို့သွားပါ။ resource/jsဖိုင်တွဲကိုဖန်တီးပါ။ components  အောက်ပါအတိုင်း ဖိုင်များကို ဖန်တီးပါ။

  • View app
  • Welcome.vue
  • Category/List.vue
  • Category/Add.vue
  • Category/Edit.vue

အက်ပ်။ vue  ၎င်းသည် ကျွန်ုပ်တို့၏ Vue အက်ပ်၏ အဓိကဖိုင်ဖြစ်သည်။ Defiငါတို့ ပြီးမယ်။ router-view  အဲဒီဖိုင်ထဲမှာ လမ်းကြောင်းအားလုံးသည် ဖိုင်တွင် ပေါ်လာလိမ့်မည်။ အက်ပ်။ vue  .

ဖိုင်ကိုဖွင့်ပါ။ Welcome.vue ၎င်းဖိုင်တွင် အောက်ပါကုဒ်ကို အပ်ဒိတ်လုပ်ပါ။

<template>
    <div class="container mt-5">
        <div class="col-12 text-center">
            <h1>Laravel Vuejs CRUD</h1>
        </div>
    </div>
</template>

App.vue ဖိုင်ကိုဖွင့်ပြီး ကုဒ်ကို အောက်ပါအတိုင်း အပ်ဒိတ်လုပ်ပါ။

<template>
    <main>
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
            <div class="container-fluid">
                <router-link to="/" class="navbar-brand" href="#">Laravel Vue Crud App</router-link>
                <div class="collapse navbar-collapse">
                    <div class="navbar-nav">
                        <router-link exact-active-class="active" to="/" class="nav-item nav-link">Home</router-link>
                        <router-link exact-active-class="active" to="/category" class="nav-item nav-link">Category</router-link>
                    </div>
                </div>
            </div>
        </nav>
        <div class="container mt-5">
            <router-view></router-view>
        </div>
    </main>
</template>
 
<script>
    export default {}
</script>

ထို့နောက်ဖွင့်ပါ။ resource / js / components / category / List.vue  ဖိုင်တွင် အောက်ပါကုဒ်ကို ထည့်ပါ။

<template>
    <div class="row">
        <div class="col-12 mb-2 text-end">
            <router-link :to='{name:"categoryAdd"}' class="btn btn-primary">Create</router-link>
        </div>
        <div class="col-12">
            <div class="card">
                <div class="card-header">
                    <h4>Category</h4>
                </div>
                <div class="card-body">
                    <div class="table-responsive">
                        <table class="table table-bordered">
                            <thead>
                                <tr>
                                    <th>ID</th>
                                    <th>Title</th>
                                    <th>Description</th>
                                    <th>Actions</th>
                                </tr>
                            </thead>
                            <tbody v-if="categories.length > 0">
                                <tr v-for="(category,key) in categories" :key="key">
                                    <td>{{ category.id }}</td>
                                    <td>{{ category.title }}</td>
                                    <td>{{ category.description }}</td>
                                    <td>
                                        <router-link :to='{name:"categoryEdit",params:{id:category.id}}' class="btn btn-success">Edit</router-link>
                                        <button type="button" @click="deleteCategory(category.id)" class="btn btn-danger">Delete</button>
                                    </td>
                                </tr>
                            </tbody>
                            <tbody v-else>
                                <tr>
                                    <td colspan="4" align="center">No Categories Found.</td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    name:"categories",
    data(){
        return {
            categories:[]
        }
    },
    mounted(){
        this.getCategories()
    },
    methods:{
        async getCategories(){
            await this.axios.get('/api/category').then(response=>{
                this.categories = response.data
            }).catch(error=>{
                console.log(error)
                this.categories = []
            })
        },
        deleteCategory(id){
            if(confirm("Are you sure to delete this category ?")){
                this.axios.delete(`/api/category/${id}`).then(response=>{
                    this.getCategories()
                }).catch(error=>{
                    console.log(error)
                })
            }
        }
    }
}
</script>

ထို့နောက်ဖွင့်ပါ။  resource /js/components/category/Add.vue  ဖိုင်တွင် အောက်ပါကုဒ်ကို အပ်ဒိတ်လုပ်ပါ။

<template>
    <div class="row">
        <div class="col-12">
            <div class="card">
                <div class="card-header">
                    <h4>Add Category</h4>
                </div>
                <div class="card-body">
                    <form @submit.prevent="create">
                        <div class="row">
                            <div class="col-12 mb-2">
                                <div class="form-group">
                                    <label>Title</label>
                                    <input type="text" class="form-control" v-model="category.title">
                                </div>
                            </div>
                            <div class="col-12 mb-2">
                                <div class="form-group">
                                    <label>Description</label>
                                    <input type="text" class="form-control" v-model="category.description">
                                </div>
                            </div>
                            <div class="col-12">
                                <button type="submit" class="btn btn-primary">Save</button>
                            </div>
                        </div>                        
                    </form>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    name:"add-category",
    data(){
        return {
            category:{
                title:"",
                description:""
            }
        }
    },
    methods:{
        async create(){
            await this.axios.post('/api/category',this.category).then(response=>{
                this.$router.push({name:"categoryList"})
            }).catch(error=>{
                console.log(error)
            })
        }
    }
}
</script>

ထို့နောက်ဖွင့်ပါ။  resource /js/components/category/Edit.vue  ဖိုင်တွင် အောက်ပါကုဒ်ကို အပ်ဒိတ်လုပ်ပါ။


<template>
    <div class="row">
        <div class="col-12">
            <div class="card">
                <div class="card-header">
                    <h4>Update Category</h4>
                </div>
                <div class="card-body">
                    <form @submit.prevent="update">
                        <div class="row">
                            <div class="col-12 mb-2">
                                <div class="form-group">
                                    <label>Title</label>
                                    <input type="text" class="form-control" v-model="category.title">
                                </div>
                            </div>
                            <div class="col-12 mb-2">
                                <div class="form-group">
                                    <label>Description</label>
                                    <input type="text" class="form-control" v-model="category.description">
                                </div>
                            </div>
                            <div class="col-12">
                                <button type="submit" class="btn btn-primary">Update</button>
                            </div>
                        </div>                        
                    </form>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    name:"update-category",
    data(){
        return {
            category:{
                title:"",
                description:"",
                _method:"patch"
            }
        }
    },
    mounted(){
        this.showCategory()
    },
    methods:{
        async showCategory(){
            await this.axios.get(`/api/category/${this.$route.params.id}`).then(response=>{
                const { title, description } = response.data
                this.category.title = title
                this.category.description = description
            }).catch(error=>{
                console.log(error)
            })
        },
        async update(){
            await this.axios.post(`/api/category/${this.$route.params.id}`,this.category).then(response=>{
                this.$router.push({name:"categoryList"})
            }).catch(error=>{
                console.log(error)
            })
        }
    }
}
</script>

DefiVue Router ရှိ CRUD အက်ပ်သို့ လမ်းကြောင်းကို အပြီးသတ်ပါ။

အခုသင်ရမှာ defiပြီးအောင်လုပ်ပါ။ Vue routesဒါကိုလုပ်ဖို့ folder ကိုသွားပါ။  resource / js ၊ ဖိုင်ကိုဖန်တီးပါ။ route.js  ဖိုင်တွင် အောက်ပါကုဒ်ကို အပ်ဒိတ်လုပ်ပါ။

const Welcome = () => import('./components/Welcome.vue' /* webpackChunkName: "resource/js/components/welcome" */)
const CategoryList = () => import('./components/category/List.vue' /* webpackChunkName: "resource/js/components/category/list" */)
const CategoryCreate = () => import('./components/category/Add.vue' /* webpackChunkName: "resource/js/components/category/add" */)
const CategoryEdit = () => import('./components/category/Edit.vue' /* webpackChunkName: "resource/js/components/category/edit" */)

export const routes = [
    {
        name: 'home',
        path: '/',
        component: Welcome
    },
    {
        name: 'categoryList',
        path: '/category',
        component: CategoryList
    },
    {
        name: 'categoryEdit',
        path: '/category/:id/edit',
        component: CategoryEdit
    },
    {
        name: 'categoryAdd',
        path: '/category/add',
        component: CategoryCreate
    }
]

ဤတွင်ကျွန်ုပ်တို့အသုံးပြုထားသောအစိတ်အပိုင်းများ loading နှေးတယ်။vue JS အစိတ်အပိုင်းများ၏ loading ကိုတစ်နည်းအားဖြင့်စီမံခန့်ခွဲသည်။ lazy လမ်းကြောင်းများဖြင့်၊ ထို့ကြောင့် DOM တွင် အစိတ်အပိုင်းများကို လမ်းကြောင်းများမှတစ်ဆင့် လိုအပ်သည့်အခါမှသာ သင်တင်နိုင်သည်။

app.js တွင် Vue.js မှီခိုမှုကို ထည့်သွင်းပါ။

ယခု သင်သည် လမ်းကြောင်းများ၊ vue-axios နှင့် အခြားသော မှီခိုမှုအားလုံးကို ပေါင်းထည့်ရန် လိုအပ်ပါသည်။

resource / js / app.js

require('./bootstrap');
import vue from 'vue'
window.Vue = vue;

import App from './components/App.vue';
import VueRouter from 'vue-router';
import VueAxios from 'vue-axios';
import axios from 'axios';
import {routes} from './routes';
 
Vue.use(VueRouter);
Vue.use(VueAxios, axios);
 
const router = new VueRouter({
    mode: 'history',
    routes: routes
});
 
const app = new Vue({
    el: '#app',
    router: router,
    render: h => h(App),
});

webpack.mix.js ကို အပ်ဒိတ်လုပ်ပါ။

webpack.mix.js

const mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel applications. By default, we are compiling the CSS
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js')
    .postCss('resources/css/app.css', 'public/css', [
        //
    ]).vue();

ဖွံ့ဖြိုးတိုးတက်ရေးဆာဗာကိုဖွင့်ပါ။

Terminal ကိုဖွင့်ပြီး ဤ command ကို run ပါ။

npm run watch
php artisan serve

ပြီလ localhost: ၄၄၄၄ browser တွင်။

BlogInnovazione.it

ဆန်းသစ်တီထွင်မှုသတင်းလွှာ
ဆန်းသစ်တီထွင်မှုဆိုင်ရာ အရေးကြီးဆုံးသတင်းများကို လက်လွတ်မခံပါနဲ့။ ၎င်းတို့ကို အီးမေးလ်ဖြင့် လက်ခံရန် စာရင်းသွင်းပါ။

မကြာသေးမီဆောင်းပါးများ

ကလေးများအတွက် အရောင်ခြယ်စာမျက်နှာများ၏ အကျိုးကျေးဇူးများ - အသက်အရွယ်တိုင်းအတွက် မှော်ပညာကမ္ဘာ

ဆေးရောင်ခြယ်ခြင်းမှတစ်ဆင့် ကောင်းမွန်သော မော်တာစွမ်းရည်ကို ပြုစုပျိုးထောင်ခြင်းသည် ကလေးများကို စာရေးခြင်းကဲ့သို့ ပိုမိုရှုပ်ထွေးသောစွမ်းရည်များအတွက် ပြင်ဆင်ပေးသည်။ အရောင်ခြယ်ရန်…

2 မေလ 2024

အနာဂတ်သည် ဤနေရာတွင်- သင်္ဘောလုပ်ငန်းသည် ကမ္ဘာလုံးဆိုင်ရာစီးပွားရေးကို တော်လှန်နေပုံ

ရေတပ်ကဏ္ဍသည် ကမ္ဘာလုံးဆိုင်ရာ စီးပွားရေးအင်အားကြီးဖြစ်ပြီး၊ ဘီလီယံ ၁၅၀ ရှိသော စျေးကွက်ဆီသို့ လျှောက်လှမ်းနေသော...

1 မေလ 2024

ထုတ်ဝေသူများနှင့် OpenAI တို့သည် Artificial Intelligence ဖြင့် လုပ်ဆောင်သော သတင်းအချက်အလက်စီးဆင်းမှုကို ထိန်းညှိရန် သဘောတူညီချက်များကို လက်မှတ်ရေးထိုးကြသည်။

ပြီးခဲ့သည့်တနင်္လာနေ့တွင် Financial Times သည် OpenAI နှင့်သဘောတူညီချက်တစ်ခုကြေငြာခဲ့သည်။ FT သည် ၎င်း၏ ကမ္ဘာ့အဆင့်မီ သတင်းစာပညာကို လိုင်စင်ထုတ်ပေးသည်...

ဧပြီလ 30 2024

အွန်လိုင်းငွေပေးချေမှုများ- ဤတွင် Streaming ဝန်ဆောင်မှုများသည် သင့်အား ထာဝစဉ်ပေးဆောင်စေသည်

သန်းပေါင်းများစွာသောလူများသည် streaming ဝန်ဆောင်မှုများအတွက်ပေးဆောင်ပြီးလစဉ်စာရင်းသွင်းမှုအခကြေးငွေပေးဆောင်သည်။ အများအမြင်မှာ သင်...

ဧပြီလ 29 2024

သင့်ဘာသာစကားဖြင့် ဆန်းသစ်တီထွင်မှုကို ဖတ်ပါ။

ဆန်းသစ်တီထွင်မှုသတင်းလွှာ
ဆန်းသစ်တီထွင်မှုဆိုင်ရာ အရေးကြီးဆုံးသတင်းများကို လက်လွတ်မခံပါနဲ့။ ၎င်းတို့ကို အီးမေးလ်ဖြင့် လက်ခံရန် စာရင်းသွင်းပါ။

နောက်ဆက်တွဲကျွန်တော်တို့ကို

မကြာသေးမီဆောင်းပါးများ

tag ကို

ကလေးစရိတ် ဆိုက်ဘာတိုက်ခိုက်မှု blockchain chatbot ချတ် gpt မိုဃ်းတိမ်ကို cloud computing အကြောင်းအရာစျေးကွက် ဆိုက်ဘာတိုက်ခိုက်မှု ဆိုက်ဘာလုံခြုံရေး စားသုံးသူမှန်တယ်။ အီလက်ထရောနစ်ကူးသန်းရောင်း နေပြည်တော် ဆန်းသစ်တီထွင်မှုဖြစ်ရပ် gianfranco fedele google သြဇာလွှမ်းမိုးမှု သစ်လွင်မှု ငွေကြေးဆိုင်ရာ ဆန်းသစ်တီထွင်မှု incremental ဆန်းသစ်တီထွင်မှု ဆေးဘက်ဆိုင်ရာဆန်းသစ်တီထွင်မှု ဆန်းသစ်တီထွင်မှု ရေရှည်တည်တံ့ရေး နည်းပညာဆန်းသစ်တီထွင်မှု အတုထောက်လှမ်းရေး IOT စက်သင်ယူ metaverse microsoft nft ကွင်းထဲတွင် လူသားမရှိပါ။ php ပြန်ကြားချက် စက်ရုပ် seo SERP ဆော့ဖျဝဲ software ဒီဇိုင်း software development Software များအင်ဂျင်နီယာ ရေရှည်တည်တံ့မှု startup Thales သင်ခန်းစာ VPN web3