Tips for Reactjs

Reactjs toàn tập

Tips for Reactjs

ShouldComponentUpdate() sẽ check giá trị thay đổi để render giao diện cho component hay không.

PureComponent chỉ render lại giao diện khi Props,State thay đổi. Còn Component thường thì luôn thay đổi khi dùng hàm set lại Props,State mà giá set lại k cần biết có khác với trước k.

React Router có thể  dùng component và render Route động  và nestedRoute

this.forceUpdate(); Luôn render lại giao diện thử test với PureComponent

import React from “react”;
import { render } from ‘react-dom’;
import {
HashRouterasRouter,
Switch,
Route,
Link,
} from “react-router-dom”;
import MainRouter from ‘./MainRouter’;
import Home from ‘./Home’;
import Register from ‘./Admin/Register’;
import Login from ‘./Admin/Login’;
function ReactApp() {
const heroes = [
{
“id”:0,
“name”:”John Smith”,
“speciality”:”Wizard”,
“path”:”/”,
“component”:<Home/>
},
{
“id”:1,
“name”:”Crag Hack”,
“speciality”:”Viking”,
“path”:”/dangky”,
“component”:<Register/>
},
{
“id”:2,
“name”:”Silvio”,
“speciality”:”Warrior”,
“path”:”/dangnhap”,
“component”:<Login/>
}
];
return (
<div>
<Router>
{heroes.map(hero=> (<Linkto={hero.path}key={hero.id}>{hero.name}</Link>))}
{heroes.map(hero=> (<Routepath={hero.path}key={hero.id}>{hero.component}</Route>))}
</Router>
</div>
);
}
export default ReactApp;
render(<ReactApp > </ReactApp> , document.getElementById(‘reactapp’));

Reactjs có 2 dạng function component và class component

function tham số truyền vào là props sau đó gọi ra bàng props.tên truyền  còn class component khi gọi ra là this.props.tên

let tên hàm = () = > {} ;

function tên hàm(){ } function component phải đặt tên ký tự đầu viết hoa

Truyền tham số lấy tham số

 

How to convert string to html in reactjs

npm install react-html-parser

this.state.routes.map((item,key) => {

return<Routepath={item.path}key={key}>{ReactHtmlParser(item.component)}</Route>

})

<Linkto={`${match.url}/components`}>Components {`${match.url}`}</Link>

Trên đây $trước cặp{} nằm trong cặp “: để lấy giá trị biến trong cặp {}

 

Tips for Laravel 8

Lập trình laravel framework

Tips for Laravel 8

419 PAGE EXPIRED

Lỗi này do gọi request mà không có gửi kèm @csrf

$user = User::where([])->firstOrFail(); sẽ trả về dòng đầu tiên;

vậy nên khi dùng

$user = User::where($request->only([‘name’,’email’]))->firstOrFail(); người dùng cố tình không truyền tham số nam, email sẽ vẫn có kết quả.

Customize 404 error

php artisan vendor:publish –tag=laravel-errors

     Không dùng HashRouter(dùng BrowserRouter)

Để React Router luôn chạy khi refresh đường link bằng cách chỉnh file lỗi về file mà Route chính đó gọi react ở đây ví dụ là  appreact.blade.php ta chỉnh lại bỏ nội dung trong 404.blade.php và sửa thành @include(‘appreact’)

Nếu dùng HashRouter thì luôn chạy khi refresh hoặc nhập trực tiếp từ link

 

php artisan optimize :

Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
Routes cached successfully!
Files cached successfully!

tokenCan(‘ten token’)

 

Các kiến thức nền tảng lập trình laravel framework

Lập trình laravel framework

Các kiến thức nền tảng lập trình laravel framework

  1. Hướng dẫn cài đặt laravel Framework
    • Cài global laravel trên mac : composer global require laravel/installer

    • sudo nano ~/.bashrc sau đó soạn export PATH=”$HOME/.composer/vendor/bin:$PATH”

    • Chạy source ~/.bashrc

    • Cài global laravel trên ubuntu
    • Giống mac nhưng là 2 dòng dưới: export PATH=”$PATH:~/.config/composer/vendor/bin” alias laravel=’~/.config/composer/vendor/bin/laravel’

    • sudo composer create-project –prefer-dist laravel/laravel testlaravel
    • Cấu hình database trong .env

    •  Ngay sau khi cài xong cd vào thư mục dự án rồi chạy lệnh: (Kiểm tra đã có ui:Auth chưa bằng lệnh php artisan list)
      • composer require laravel/ui
      • php artisan ui:auth(Tạo login và register)
      • php artisan ui:controllers
    • Lệnh trong laravel: php artisan xxx ví dụ :

php artisan make:migration create_users_table –create=users

php artisan make:migration create_logs_table –create=logs

         php artisan make:migration create_transactions_table –create=transactions

php artisan make:controller loginController (không tạo phương thức đi kèm)

php artisan make:controller Test –resource (tạo các phương thức index,create,show,edit,update,destroy sẵn đi kèm)

 

Màu xanh là tên file .php màu tím là tạo tên bảng trên database

Các file .php sẽ được tạo ra và lưu trong thư mục database/migrations

php artisan migrate để tạo toàn bộ các bảng vào database đã được khai báo khi cấu hình trong database/migrations

php artisan migrate:refresh làm mới lại các table trên cơ sở dữ liệu

    • Layout nằm trong :
      • Views các file có dạng xxx.blade.php
    • Muốn sử dụng thư viện nào dùng use:
      • Ví dụ:
        • use DB (sử dụng thư viện database)
        • use Session (sử dụng thư viện session)

 

Phát triển dự án PHP với mô hình MVC

AJAX, Xử lý XML/JSON trong PHP

Lập trình nâng cao với PHP

trong web.php

Route::get(‘/’, function () {
// return view(‘welcome’);
return view(‘main’, [‘name’ => ‘Phovv’,’age’=>44]);
});

Route::get(‘/products’, [ProductsController::class,’index’]);

(cần khai báo use App\Http\Controllers\ProductsController; trước đó)

Route::get(‘pro’,’App\Http\Controllers\ProductsController@index’);

Pattern

Route::get(‘/products/{id}/{name}’, [ProductsController::class,’hien’]) -> where(‘id’,'[0-9]+’);

Route::get(‘/products/{id}/{name}’, [ProductsController::class,’hien’]) -> where(‘name’,'[a-zA-Z0-9]+’);

Route::get(‘/products/{id}/{name}’, [ProductsController::class,’hien’]) ->

where([‘id’=>'[0-9]+’,’name’=>'[a-zA-Z]+’]);

trong blade

<h1>Mr {{ $name}}</h1>
<hr/>
<h2>Age {{ $age}}</h1>
<hr/>
current time is
{{ time() }}
<hr/>
current date is
{{ now() }}

@include(‘header’)
<hr/>
@include(‘body’)
<hr/>
@include(‘footer’)
@unless (Auth::check())
You are not signed in.
@else
You are signed in.
@endunless

@switch($age)
@case(1)
First case…
@break

@case(2)
Second case…
@break

@default
Default case…
@endswitch
{{– This com — }}

@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor

@foreach ($users as $user)
<p>This is {{ $user}}</p>
@endforeach

@php
$lop = 12
@endphp
@while ($lop<40)
<p>I’m looping forever. {{$lop}}</p>
@php
$lop += 1
@endphp
@endwhile

            Dynamic route:

Route::get(‘/user/{id}’, function ($id) {
return view(‘pages.detail.’.$id);
// return ‘User ‘.$id;
});

Route::get(‘/{dir}/{file}’, function ($dir,$file) {
return view(‘pages.’.$dir.’.’.$file, [‘name’ => ‘hai’,’age’=>44,’users’=>[‘anh’,’hai’]]);
});

Route::get(‘/{leve1}/{level2}/{level3}/{file}’, function ($level1,$level2,$level3,$file) {
return view(‘pages.’.$level1.’.’.$level2.’.’.$level3.’.’.$file, [‘name’ => ‘hai’,’age’=>44,’users’=>[‘anh’,’hai’]]);
});

asset()

 nếu không khai báo giá trị cho ASSET_URL (.env) mặc định sẽ lấy đường dẫn hiện thời ví dụ https://thoaimaichon.com/chuỗi trong hàm asset nếu chuỗi đó không chứa x:// còn nếu chứa x:// thì chỉ lấy chuỗi đó.

Hosting ứng dụng web PHP

https://laravel.thoaimaichon.com

các function sử dụng

        1. {{str_replace(‘_’,’-‘,app()->getLocale())}}
        2. With @extends you just extend your layout blade file.
        3. With @include you include exactly view to the place where you write that code.

php artisan route:list liệt kê các route hiện có

Route::get(‘/json’, function () {

return response()->json([‘name’=>’pho’,’age’=>’44’]);

});

Sự khác biệt url và asset

{{ url(‘search’,[‘dienmay’,’tivi’,’Sony’]) }} kết qủa trả về là …/search/dienmay/tivi/Sony

{{ url(‘search’,[‘dienmay’,’tivi’,’Sony’]) }} kết quả trả về là …/search

Cài npm , nodejs

npm install

cấu hình file 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 application. By default, we are compiling the Sass

| file for the application as well as bundling up all the JS files.

|

*/

mix.react(‘resources/js/SP_all.js’, ‘public/js’)

.sass(‘resources/sass/app.scss’, ‘public/css’);

Sau khi khai báo file

webpack.mix.js chạy npm run dev (npm run watch để theo dõi) để chạy webpack đóng gói js, css vào thư mục public mong muốn

Thư viện liên quan DB

use Illuminate\support\facades\DB;

publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->get();

$tb = DB::table(‘users’)->select([‘name’,’email’,’id’])->wherebetween(‘id’,[$id,$id+2])->get();

// dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}
publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->get();
$tb = DB::table(‘users’)->select([‘name’,’email’,’id’])->wherebetween(‘id’,[$id,$id+2])

->orwhere(‘id’,’>’,$id)

->get();
// dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}
publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->get();
$tb = DB::table(‘users’)->select([‘name’,’email’,’id’])->wherebetween(‘id’,[$id,$id+2])
->orwhere(‘id’,’>’,$id)

->orwhere(‘name’,’xx’)

->get();
// dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}
publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->count();
// $tb = DB::table(‘users’)

 ->insert([‘name’=>now().’xxxxxxx’,’email’=>now().’vu@gmail.com’,’password’=>’fsadfsdafds’])

// ;
$tb = DB::table(‘users’)

->where(‘id’,’=’,$id)

->update([‘name’=>now(),’email’=>now().now().’@gmail.com’,’password’=>’fsadfsdafds’])

;
// $tb = DB::table(‘users’)
// ->select([‘name’,’email’,’id’])
// ->wherebetween(‘id’,[$id,$id+9])
// ->avg(‘id’)
// ->orwhere(‘id’,’>’,$id)
// ->distinct()
// ->oldest()
// ->inRandomOrder()
// ->orderBy(‘name’,’desc’)
// ->wherenotnull(‘created_at’)
// ->orwhere([‘name’=>’phovv’,’id’=>3])
// ->find(1)
// ->get()
// ->first()
;
dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}

$tb = DB::table(‘users’)

->where(‘id’,$id)

->delete()

;

use App\Models\Car;

class CarsController extends Controller

public function index()

{

// $cars = Car::all();

$cars = Car::where([‘name’=>’Audi’])->orwhere([‘name’=>’BMW’]) ->get();

// dd($car);

returnview(‘index’,[‘cars’=>$cars]);

}

$cars = Car::where(‘id’, ‘>’, 1)->first();

$id =1;

// $cars = Car::find($id);

$cars = Car::findOrFail($id);

$cars = Car::where(‘name’, ‘like’ , ‘%d%’)->take(10)->get();

public function store(Request $request)

{

$car = new car;

$car->name = $request->name;

$car->founded = $request->founded;

$car->description = $request->description;

$car->save();

return redirect(‘/cars’);

// echo $request->name;
// echo “<hr>”;
// echo $request->founded;
// echo “<hr>”;
// echo $request->description;
// $cars = Car::all();
// return view(‘cars.index’,[‘cars’=>$cars]);
}

public function edit($id)

{

$car = Car::where(‘id’,$id)->get();

// dd($cars);

return view(‘cars.edit’,[‘car’=>$car]);

}

public function update(Request $request, $id)

{

$car = Car::where(‘id’,$id)->first()->update([

‘name’=>$request->name,

‘founded’=>$request->founded,

‘description’=>$request->description,

]);

returnredirect(‘/cars’);

}

API:

Khai báo trong api.php

Route::apiresource(‘/post’,’App\Http\Controllers\Api\PostController’)->except([‘index’,’show’]);

Route::apiresource(‘/post’,’App\Http\Controllers\Api\PostController’)->only([‘index’,’show’]);

Route::get(‘/users’, function () {

returnUserResource::collection(User::all());

});

Route::get(‘/alluser’, function () {

returndd(newUserResource(User::all()));

});

         Cách migrate:refresh table chỉ định

How to migrate:reresh specific table ?

php artisan migrate:refresh –path=/database/migrations/2021_03_18_143031_create_admins_table.php

Sử dụng extension REST Client để debug Api trực tiếp trên Vscode thay Postman

 

Route không tồn tại thì sẽ chuyển hướng đến câu lệnh

Route::any(‘{slug}’, function () {

return  ‘Không tồn tại đường dẫn’;

});

npm install && npm run dev

php artisan ui react

ERP Project manager

ERP Project manager

Implementing a New ERP System

why do we need ERP?

why ERP is required?

 

Hướng dẫn học online lớp 7A/15 trường THCS Hoàng Hoa Thám

  1. Hướng dẫn học online:

a. Bước 1: Đăng ký tài khoản gmail trong mail.google.com(Nếu chưa biết vui lòng tham khảo cách tạo gmail)

b. Bước 2: Sau khi đăng nhập vào trang https://google.com theo email và mật khẩu đã tạo thành công bạn chỉ việc nhấn vào từng môn học theo thời khoá biểu, thời gian cụ thể được liệt kê bên dưới để học:

Thứ 2:

Sáng:

Từ 9h-10h30 Môn Toán: https://meet.google.com/snt-bxrz-egy

Từ 10h30-11h45 Môn Giáo Dục Công Dân: http://meet.google.com/wzo-gexv-hnk

Chiều:

Từ 1h15 đến 2h45 Môn Tin Học: https://meet.google.com/bfq-cjsz-ptb

Từ 3h15 đến 4h45 Môn Thể Dục : https://meet.google.com/biu-nyzz-ksy

Thứ 3:

Từ 7h-8h30 Môn Ngữ Văn: https://meet.google.com/cje-chnu-bjq

Từ 9h-9h45 Môn Sinh: https://meet.google.com/wxk-hafo-jjx

Từ 9h45-10h30 Môn Mỹ Thuật: https://meet.google.com/veq-mxni-snj

Từ 10h30-11h15 Môn Anh Văn: https://meet.google.com/tdm-xdxe-ute

Thứ 4:

Từ 7h-7h45 Môn Sử: https://meet.google.com/dsn-ntjn-fsj 

Từ 7h45-8h30 Môn Anh Văn: https://meet.google.com/tdm-xdxe-ute

Từ 9h-9h45 Môn Anh Văn: https://meet.google.com/tdm-xdxe-ute

Từ 9h45 đến 10h30 Môn Nhạc : https://meet.google.com/qop-dinm-qks

Từ 10h30-11h15 Môn Công Nghệ: https://meet.google.com/ydi-xhgu-rio

Thứ 5:

Từ 7h-7h45 Môn Sinh: https://meet.google.com/wxk-hafo-jjx

Từ 7h45-8h30 Môn Sử : https://meet.google.com/dsn-ntjn-fsj

Từ 9h-9h45 Môn Địa: https://meet.google.com/taz-uede-rvj

Từ 9h45-11h15 Môn Ngữ Văn: https://meet.google.com/cje-chnu-bjq

Thứ 6:

Từ 7h-7h45 Môn Công Nghệ: https://meet.google.com/ydi-xhgu-rio

Từ 7h45-8h30 Môn Toán: https://meet.google.com/snt-bxrz-egy

Từ 9h-9h45 Môn Toán: https://meet.google.com/snt-bxrz-egy

Từ 9h45-1030 Môn Lý: https://meet.google.com/nmd-mfyg-sfk

Từ 10h30-11h15 Môn Địa: https://meet.google.com/taz-uede-rvj

  1. Hướng dẫn xem tài liệu các môn học và chuẩn bị trước khi học online:

sau khi đã đăng nhập vào google.com giống như đã vào học trực tuyến bạn truy cập vào classroom theo đường dẫn

https://classroom.google.com/

Nếu đã vào xem tài liệu 1 lần thì tài liệu đó sẽ hiện ra để xem. nếu không bạn cần bấm vào dấu + như hình dưới

sau khi bấm vào dấu cộng bạn chọn join class  và nhập mã môn học để lấy tài liệu

Ví dụ: Môn Anh Văn mã là

      ftv2hnb sau đó bấm join tài liệu môn anh Văn sẽ xuất hiện

Tương tự các môn khác các bạn làm tương tự

huongdan

 

 

Người từ tỉnh khác qua sân bay cát bi đi các tỉnh khác không cần phải giấy xác nhận địa phương chỉ cần có vé máy bay

Người từ tỉnh khác qua sân bay cát bi đi các tỉnh khác không cần phải giấy xác nhận địa phương chỉ cần có vé máy bay

Người từ tỉnh khác qua sân bay cát bi đi các tỉnh khác không cần phải giấy xác nhận địa phương chỉ cần có vé máy bay

Theo tổ phản ứng nhanh người ở tỉnh khác qua sân bay cát bi đi các tỉnh khác chỉ cần xuất trình vé máy bay thay giấy xác nhận của địa phương.

Người từ tỉnh khác qua sân bay cát bi đi các tỉnh khác không cần phải giấy xác nhận địa phương chỉ cần có vé máy bay
Người từ tỉnh khác qua sân bay cát bi đi các tỉnh khác không cần phải giấy xác nhận địa phương chỉ cần có vé máy bay

Sai lầm khi xử trí bỏng

Xử trí bỏng

Thoa kem đánh răng, nước mắm lên vết bỏng càng làm tăng độ bỏng da, tạo điều kiện cho vi khuẩn xâm nhập vết thương.

Theo bác sĩ Lê Vi Anh, Khoa Da liễu – Thẩm mỹ da, Bệnh viện Đại học Y dược TP HCM, 4 nhóm nguyên nhân gây bỏng gồm: bỏng do nhiệt, bỏng do điện, bỏng do hóa chất và bỏng do tia xạ (hồng ngoại và tử ngoại).

Trong đó nguyên nhân phổ biến thường gặp trong đời sống hàng ngày là do nhiệt, điện và hóa chất. Nguyên nhân do nhiệt có hai dạng. Bỏng nhiệt khô do lửa, kim loại, tiếp xúc vật nóng, bàn là, ống bô xe máy… Bỏng do nhiệt ướt có hơi nước nóng, nước sôi, dầu mỡ nấu sôi… Bỏng do hóa chất gồm axit sulfuric, bazơ, vôi nấu sôi…

“Cuối năm là thời điểm mọi người thường nấu nướng nhiều, dọn dẹp tổng vệ sinh nhà cửa… nên dễ gặp các tác nhân gây bỏng, cần hết sức cẩn thận”, bác sĩ Anh khuyến cáo.

Bỏng được chia thành 5 cấp độ.

Trong đó cấp độ một là bỏng bề mặt, chỉ lớp da ngoài bị tổn thương, đỏ da. Cấp độ hai là bỏng ở thượng bì da, cấp độ ba là bỏng ở trung bì, cấp độ 4 là bỏng toàn bộ da. Nặng nhất, bỏng cấp độ 5 là bỏng toàn bộ da, sâu xuống các mô dưới da. Bỏng được xác định là nguy hiểm khi bỏng diện tích 25% da ở cấp độ 1-3 và 10% da ở cấp độ 4, 5.

Những phương pháp dân gian làm mất thời gian vàng trong xử lý bỏng, nâng cấp độ bỏng cao hơn, có thể từ 1-2 lên 3-4. “Thường mọi người thoa kem đánh răng để làm mát dịu vết bỏng. Tuy nhiên trong kem đánh răng có tính kiềm nhẹ, chất kiềm này sẽ làm vết bỏng nặng hơn. Còn nước mắm chứa nhiều protein là môi trường thuận lợi để vi khuẩn sinh sôi, nảy nở”, bác sĩ Anh phân tích.

Bác sĩ Anh khuyên khi bị bỏng cần nhanh chóng loại bỏ tác nhân gây bỏng.

Nếu quần áo bị cháy hay dính hóa chất cần lấy kéo cắt bỏ.

Tháo nhẫn, giày dép để làm thoáng vùng bỏng. Rửa sạch vùng bỏng, sau đó làm lạnh vùng bỏng ở nhiệt độ 10-25 độ trong 15-20 phút giúp giảm nhiệt độ trên bề mặt và giảm nhiệt độ đi xuống sâu các mô da. Dùng gạc sạch che vùng bỏng, sau đó đưa người bị nạn đến bệnh viện.

“Tuyệt đối không dội nước đá lạnh lên vùng da tổn thương sẽ làm tăng mức độ tổn thương và độ sâu vết bỏng”, thạc sĩ, bác sĩ Phan Thái Sơn – Phó trưởng Khoa Hồi sức tích cực, Bệnh viện Đại học Y Dược TP HCM, cho biết thêm.

Theo bác sĩ Sơn, dội nước đá lạnh lên vết bỏng là rất nguy hiểm. Nhiệt độ của nước đá thấp hơn nhiệt độ của cơ thể rất nhiều. Nếu bỏ nhiều đá, nhiệt độ nước có thể xuống gần 0 độ C. Trong khi đó, tại chỗ bị bỏng nhiệt độ có thể lên đến 45 đến 50 độ C. Do đó nếu dùng nước đá để hạ nhiệt độ nhanh sẽ làm tình trạng tổn thương bỏng nặng hơn.

Công bố mẫu thẻ căn cước công dân gắn chip

Mẫu thẻ căn cước công dân gắn chip

Chip điện tử

được gắn ở mặt sau thẻ căn cước sẽ lưu trữ thông tin cơ bản của công dân.

Bộ trưởng Công an vừa ký ban hành Thông tư số 06/2021 quy định cụ thể về hình dáng, kích thước, nội dung, quy cách, ngôn ngữ khác, chất liệu thẻ căn cước công dân (CCCD) gắn chip và trách nhiệm của công an các đơn vị, địa phương trong việc sản xuất, cấp và quản lý mẫu thẻ.

Theo đó, CCCD mẫu mới hình chữ nhật, 4 góc được cắt tròn. Thẻ có chiều dài 85,6 mm, rộng 53,98 mm và dày 0,76 mm giống kích thước của mẫu thẻ căn cước mã vạch đang lưu hành.

Can cuoc cong dan gan chip anh 1
Mặt trước và mặt sau CCCD gắn chip điện tử. Ảnh: Bộ Công an.

Các nội dung ở mặt trước thẻ gồm hình quốc huy đường kính 12 mm (thẻ cũ 14 mm). Ảnh chân dung của công dân được giữ nguyên kích thước 20×30 mm.

Điểm mới của thẻ căn cước gắn chip

là các nội dung in trên thẻ như họ tên, ngày sinh, giới tính, quê quán hay quốc tịch đều được in song ngữ (gồm tiếng Việt và tiếng Anh).

Mặt trước của mẫu thẻ căn cước mới có phôi bảo an để chống làm giả. Mặt sau gồm thông tin cá nhân (được in song ngữ) giống với mẫu thẻ cũ, đặc điểm nhân dạng, thời gian cấp thẻ, chức danh của người có thẩm quyền cấp thẻ, dấu có hình quốc huy. Ngoài ra, mặt sau còn có 2 ô vân tay của ngón trỏ trái và ngón trỏ phải của người được cấp thẻ.

Chip điện tử được gắn ở mặt sau thẻ CCCD và lưu trữ thông tin cơ bản của công dân. Ngôn ngữ tiếng Anh là điều kiện để công dân Việt Nam sử dụng CCCD thay cho hộ chiếu (khi Việt Nam ký kết điều ước hoặc thỏa thuận quốc tế cho phép công dân nước ký kết được sử dụng CCCD thay cho việc sử dụng hộ chiếu trên lãnh thổ của nhau).

Theo Bộ Công an, CCCD đã được cấp trước ngày Thông tư số 06 có hiệu lực vẫn có giá trị sử dụng đến hết thời hạn theo quy định. Khi công dân có yêu cầu sẽ được đổi sang CCCD mới. Các loại giấy tờ có giá trị pháp lý đã phát hành có sử dụng thông tin từ CCCD được cấp trước ngày Thông tư số 06 có hiệu lực thi hành thì vẫn nguyên hiệu lực pháp luật.

Hai người ở TP.HCM bị nhồi máu cơ tim lúc sáng sớm

Nhồi máu cơ tim lúc sáng sớm

Ra ngoài lúc sáng sớm, nhiệt độ xuống thấp, hai bệnh nhân ở TP.HCM đột ngột xuất hiện cơn đau thắt ngực kèm khó thở dữ dội.

Ngày 25/1, bác sĩ Hồ Dũng Tiến, Trưởng khoa Tim mạch 1, Bệnh viện Nguyễn Trãi (TP.HCM), cho biết đơn vị này vừa can thiệp kịp thời, cứu 2 bệnh nhân bị nhồi máu cơ tim.

Bệnh nhân đầu tiên là ông N.T.H. (65 tuổi, ngụ quận Bình Tân). Trước đó, khoảng 6h sáng 16/1, ông H. đang đi trên đường thì đột ngột lên cơn đau thắt ngực trái khiến bệnh nhân ngất xỉu. Sau khi được người đi đường đỡ dậy, ông H. bắt đầu nhận thức được xung quanh nhưng đau ngực trái dữ dội như bị bóp nghẹt.

2 nguoi bi nhoi mau co tim vi troi lanh anh 1
Hai bệnh nhân may mắn được cứu sống sau cơn nhồi máu cơ tim cấp. Ảnh: BSCC.

Các cơn đau kéo dài và tăng dần nên bệnh nhân được gia đình đưa đi cấp cứu tại Bệnh viện Nguyễn Trãi.

Trường hợp thứ 2 là bệnh nhân T.T.H. (64 tuổi, ngụ quận 6). Ông H. cho biết sáng sớm, khi vừa ngủ dậy thì ngực trái đột ngột lên cơn đau thắt kèm khó thở dữ dội. Cơn đau kéo dài và ngày càng tăng dần từ xương ức lan xuống hai tay.

Bác sĩ Tiến cho biết cả 2 bệnh nhân đều hút thuốc lá rất nhiều. Bệnh nhân thứ 2 có tiền sử tăng huyết áp, đái tháo đường type II, rối loạn lipid máu. Lúc nhập viện, nhịp tim và huyết áp của 2 bệnh nhân xuống thấp, tính mạng nguy kịch.

“Các bác sĩ thăm khám và chẩn đoán ngay bệnh lý nhồi máu cơ tim cấp, nghĩ nhiều đến tắc nghẽn động mạch vành. Sau khi xử trí đặt stent tái thông động mạch vành tắc nghẽn, hai bệnh nhân đã ổn định”, bác sĩ Tiến chia sẻ.

Bác sĩ Tiến cho biết với bệnh nhân lớn tuổi, có tiền sử bệnh nền, hút thuốc lá nhiều, thời tiết lạnh là yếu tố nguy cơ gây nên nhồi máu cơ tim. Nguyên nhân là khi vào mùa lạnh, huyết áp thường tăng cao so với mùa hè khoảng 5 mmHg, khi nhiệt độ giảm xuống, các mạch máu co lại, huyết áp tăng cao nên dẫn đến các biến chứng tim mạch, đột quỵ.

Bác sĩ Tiến khuyến cáo trường hợp có yếu tố nguy cơ, đề kháng kém như người cao tuổi, khi thời tiết chuyển lạnh cần giữ ấm đầy đủ cho cơ thể. Người dân nên hạn chế ra ngoài khi nhiệt độ thấp. Khi có các dấu hiệu đột ngột chóng mặt, khó thở, đau nhói khó chịu vùng xương ức, đổ mồ hôi lạnh, nhịp tim bất thường, mọi người cần đến ngay cơ sở y tế có chuyên khoa tim mạch để điều trị kịp thời.

Chứng loạn thần

Chứng loạn thần

Bệnh loạn thần

Sự rối loạn thần kinh ở người bệnh loạn thần có thể khiến người bệnh tự làm tổn thương chính bản thân mình hoặc người khác, đây là căn bệnh cực kỳ nguy hiểm cần được điều trị đúng phác đồ và người bệnh phải nhận được sự quan tâm, chăm sóc đặc biệt.

1. Bệnh loạn thần là gì?

 

Loạn thần được xếp vào nhóm bệnh lý rối loạn thần kinh nghiệm trọng, là tình trạng mà người bệnh không thể tự kiểm soát suy nghĩ của mình, không tự phán đoán hay suy nghĩ được việc mà bản thân đã và sẽ làm, người bệnh cũng sẽ không thể tự suy xét và điều khiển cảm xúc của bản thân như những người bình thường được.

Tùy vào từng trường hợp, nguyên nhân và biểu hiện rối loạn thần kinh, bệnh loạn thần phân thành từng loại cụ thể:

  • Tâm thần phân liệt: Người bệnh sẽ có những thay đổi trong hành vi và thường xuyên ảo tưởng, hoang tưởng, triệu chứng bệnh kéo dài trên 6 tháng và làm ảnh hưởng lớn đến công việc, học tập và các mối quan hệ của người bệnh.
  • Rối loạn phân liệt cảm xúc: Ở dạng này, người bệnh cũng sẽ có những triệu chứng giống như tâm thần phân liệt và có thêm các biểu hiện rối loạn thần kinh, lưỡng cực, khí sắc trầm trọng.
  • Rối loạn dạng phân liệt: Cũng giống như triệu chứng tâm thần phân liệt nhưng triệu chứng bệnh sẽ xuất hiện ngắn hơn.
  • Rối loạn loạn thần ngắn: Người bệnh sẽ có các hành vi loạn thần trong thời gian ngắn, nguyên nhân là do gặp phải stress, áp lực tâm lý, đối với dạng này, thời gian bị bệnh ngắn và hồi phục nhanh.
  • Rối loạn hoang tưởng: Đây là dạng bệnh nặng, người bệnh bị rối loạn thần kinh và sẽ không thể phân biệt được giữa thực tế và hoang tưởng.
  • Rối loạn loạn thần chia sẻ: Bị hoang tưởng và tin tưởng vào những điều mà người thân, người bạn bị hoang tưởng chia sẻ.
  • Rối loạn loạn thần do sử dụng chất kích thích
  • Rối loạn loạn thần thứ phát sau các bệnh khác: Người bệnh mắc rối loạn thần kinh do một bệnh lý não gây ra như chấn thương đầu hoặc khối u não.
  • Hoang tưởng paraphrenia: Đây là dạng bệnh loạn thần ở người già.
Tâm thần phân liệt
Thường xuyên ảo tưởng do tâm thần phân liệt

2. Biểu hiện nhận biết bệnh loạn thần

 

Người bệnh loạn thần sẽ bị rối loạn thần kinh và dẫn đến những biểu hiện chính là ảo tưởng, hoang tưởng và có hành vi suy nghĩ không sát thực tế, cụ thể:

  • Hoang tưởng

Người bệnh loạn thần, đặc biệt là bệnh loạn thần ở người già sẽ luôn có một niềm tin vào một điều gì đó mặc dù nó hoàn toàn trái ngược với thực tế. Người bệnh có thể bị hoang tưởng ảo giác hoặc hoang tưởng tự cao, hoang tưởng dạng cơ thể….

  • Ảo tưởng

Khi bị rối loạn thần kinh, người bệnh loạn thần sẽ sinh ra suy nghĩ ảo tưởng, nghĩa là có thể nghe thấy, nhìn thấy, cảm nhận hoặc ngửi thấy những điều vốn dĩ không tồn tại, không có thật.

Ngoài ra, một số dấu hiệu thường thấy khác khi mắc phải bệnh loạn thần ở người già bao gồm:

  • Suy nghĩ không rõ ràng.
  • Lời nói thiếu mạch lạc, lộn xộn.
  • Hành động bất thường.
  • Có những hành vi có thể gây nguy hiểm cho bản thân và người xung quanh.
  • Không thể tự vệ sinh cá nhân cho bản thân
  • Không có hứng thú với mọi hoạt động.
  • Gặp vấn đề trong các mối quan hệ.
  • Xuất hiện thái độ dửng dưng, lạnh nhạt, không cảm xúc.
  • Tâm trạng có sự thay đổi đột ngột, có thể là trầm cảm hoặc hưng phấn.

3. Nguyên nhân gây bệnh loạn thần

Cho đến hiện tại, y học vẫn chưa tìm ra được nguyên nhân chính xác gây bệnh loạn thần. Tuy nhiên, một số yếu tố được cho là làm gia tăng tình trạng bệnh bao gồm:

  • Yếu tố di truyền.
  • Do người bệnh có những sự thay đổi trong não.
  • Hormones/giấc ngủ: Thường gặp ở phụ nữ sau sinh.
  • Do tuổi tác.
Rối loạn tiền đình ở người già
Tuổi tác là một trong các nguyên nhân gây bệnh loạn thần

4. Chẩn đoán và điều trị bệnh loạn thần

Bác sĩ sẽ hỏi bệnh nhân một số câu hỏi và tiến hành kiểm tra cũng như tìm nguyên nhân có thể gây ra triệu chứng rối loạn thần kinh để chẩn đoán chính xác bệnh loạn thần ở người bệnh.

Ngoài ra, bệnh nhân có thể được chỉ định làm xét nghiệm máu, xét nghiệm hình ảnh học não (MRI não) để loại trừ một số bệnh thực thể hoặc nguyên nhân rối loạn do sử dụng chất kích thích.

Bệnh nhân khi được chẩn đoán mắc bệnh loạn thần thì phần lớn sẽ được điều trị bằng thuốc và trị liệu tâm lý:

  • Điều trị loạn thần bằng thuốc

Thuốc chống loạn thần là thuốc điều trị chính cho bệnh nhân loạn thần, mặc dù không thể điều trị dứt điểm hoàn toàn căn bệnh này nhưng có thể giúp kiểm soát hiệu quả các triệu chứng rối loạn thần kinh hay ảo tưởng, hoang tưởng ở người bệnh.

Hiện nay, một số loại thuốc chống loạn thần mới ít có tác dụng phụ và có khả năng giúp bệnh nhân cảm thấy dễ chịu hơn các loại thuốc cũ, bệnh nhân có thể dùng đường tiêm và chỉ 1 đến 2 lần/tháng, giúp trường hợp bệnh loạn thần ở người già dễ kiểm soát hơn vì không phải uống thuốc hàng ngày.

  • Biện pháp trị liệu tâm lý

Có thể điều trị bệnh loạn thần bằng các biện pháp trị liệu tâm lý, phần lớn người bệnh sẽ được điều trị ngoại trú, trường hợp nặng thì cần phải nhập viện để kiểm soát tình hình và hạn chế những hành vi không kiểm soát.

Bệnh loạn thần không gây ra nhiều biến chứng, tuy nhiên bệnh nếu không được điều trị đúng phác đồ thì có khả năng làm giảm chất lượng cuộc sống của người bệnh, về lâu dài, người bệnh sẽ không thể tự chăm sóc cho mình và dễ phát sinh thêm các bệnh khác.

Loạn thần là căn bệnh không thể phòng ngừa, tuy nhiên nếu được phát hiện càng sớm thì hiệu quả điều trị sẽ càng cao. Đối với những trường hợp có nguy cơ mắc bệnh loạn thần cao thì nên hạn chế sử dụng các chất kích thích, từ bỏ thói quen uống rượu bia để giúp ngăn ngừa và làm chậm quá trình tiến triển của bệnh.

 

Nếu có triệu chứng bất thường, bạn nên được thăm khám và tư vấn với bác sĩ chuyên khoa.

Cao huyết áp: Triệu chứng, nguyên nhân và cách điều trị

Cao huyết áp

Cao huyết áp là bệnh lý tim mạch nguy hiểm được xem như “kẻ giết người thầm lặng” vì toàn bộ sự tiến triển của bệnh thường diễn ra trong âm thầm không có triệu chứng. Hiện nay Việt Nam có khoảng 12 triệu người mắc phải, nghĩa là trung bình cứ 5 người trưởng thành thì có 1 người mắc bệnh. Năm 2016, tỷ lệ này ở mức báo động đỏ với hơn 40% người lớn bị tăng huyết áp.

Vậy triệu chứng, nguyên nhân và cách điều trị bệnh cao huyết áp là gì? Thầy thuốc nhân dân, bác sĩ cao cấp Đoàn Dư Đạt, bệnh viện ĐKQT Vinmec Hạ Long sẽ giúp bạn giải đáp các câu hỏi này.

 

1. Cao huyết áp là bệnh gì?

Cao huyết áp (hay tăng huyết áp) là một bệnh lý mãn tính khi áp lực của máu tác động lên thành động mạch tăng cao. Huyết áp tăng cao gây ra nhiều áp lực cho tim (tăng gánh nặng cho tim) và là căn nguyên của nhiều biến chứng tim mạch nghiêm trọng như: Tai biến mạch máu nãosuy tim, bệnh tim mạch vànhnhồi máu cơ tim,…

Một số loại cao huyết áp chủ yếu, bao gồm:

  • Cao huyết áp vô căn (hay nguyên phát, bệnh tăng huyết áp): không có nguyên nhân cụ thể, chiếm đến 90% các trường hợp;
  • Tăng huyết áp thứ phát(Tăng huyết áp là triệu chứng của một số bệnh khác): Liên quan đến một số bệnh trên thận, động mạch, bệnh van tim và một số bệnh nội tiết;
  • Cao tăng huyết áp tâm thu đơn độc: Khi chỉ có huyết áp tâm thu tăng trong khi huyết áp tâm trương bình thường;
  • Tăng huyết áp khi mang thai, bao gồm tăng huyết áp thai kỳ và tiền sản giật: Cảnh báo một số nguy cơ tim mạch trong giai đoạn mang thai.
Cao huyết áp: Triệu chứng, nguyên nhân và cách điều trị
Cac huyết áp có thể gây ra nhiều biến chứng tim mạch nguy hiểm.

 

Khi mắc bệnh cao huyết áp, áp suất máu lưu thông trong các động mạch tăng cao, gây nhiều sức ép hơn đến các mô và khiến các mạch máu bị tổn hại dần theo thời gian.

2. Huyết áp cao là bao nhiêu?

 

Như đề cập ở trên, huyết áp là áp lực của máu lên thành động mạch. Huyết áp được xác định dựa trên 2 chỉ số (Huyết áp tâm thu/Huyết áp tâm trương):

  • Huyết áp tâm thu (ứng với giai đoạn tim co bóp tống máu đi): Có giá trị cao hơn do dòng máu trong động mạch lúc này đang được tim đẩy đi.
  • Huyết áp tâm trương (ứng với giai đoạn giãn nghỉ giữa hai lần đập liên tiếp của tim): Có giá trị thấp hơn do mạch máu lúc này không phải chịu áp lực tống máu từ tim.

Để trả lời cho vấn đề “Huyết áp cao là bao nhiêu”, hàng loạt các hướng dẫn điều trị của những quốc gia, hiệp hội và nhiều nhà khoa học hàng đầu về tim mạch trên thế giới đã được đưa ra. Việc chẩn đoán và chiến lược điều trị của các bác sĩ chuyên khoa tim mạch tại nước ta hiện nay thường tuân theo hướng dẫn điều trị cập nhật của Hiệp hội Tim mạch Châu Âu (ESC). Theo hướng dẫn mới cập nhật của ESC năm 2018, tùy vào mức độ nghiêm trọng, cao huyết áp được phân loại như sau:

  • Huyết áp tối ưu: Dưới 120/80 mmHg;
  • Huyết áp bình thường: Từ 120/80 mmHg trở lên;
  • Huyết áp bình thường cao: Từ 130/85 mmHg trở lên;
  • Tăng huyết áp độ 1: Từ 140/90 mmHg trở lên;
  • Tăng huyết áp độ 2: Từ 160/100 mmHg trở lên;
  • Tăng huyết áp độ 3: Từ 180/110 mmHg trở lên;
  • Cao huyết áp tâm thu đơn độc: Khi huyết áp tâm thu từ 140 mmHg trở lên, trong khi huyết áp tâm trương dưới 90 mmHg
  • Tiền tăng huyết áp khi:

Huyết áp tâm thu > 120 – 139mmHg và huyết áp tâm trương > 80-89mmHg.

Ngoài ra, theo Hiệp hội Tim mạch Việt Nam, huyết áp đạt dưới 120/80 mmHg được coi là mức bình thường. Khi huyết áp luôn ở mức từ 140/90 mmHg trở lên thì được xem là tình trạng tăng huyết áp.

3. Triệu chứng cao huyết áp

 

Đa phần các triệu chứng của cao huyết áp đều khá mờ nhạt. Trên thực tế, hầu hết các bệnh nhân tăng huyết áp đều không thể nhận thấy bất kỳ một dấu hiệu hoặc triệu chứng rõ ràng nào, mặc dù bệnh đã tiến triển khá nghiêm trọng. Một số ít bệnh nhân bị tăng huyết áp có thể biểu hiện một số triệu chứng thoáng qua như đau đầu, khó thở, hoặc hiếm hơn là chảy máu cam.

Cao huyết áp: Triệu chứng, nguyên nhân và cách điều trị
Triệu chứng bệnh cao huyết áp thường không rõ ràng, chỉ được phát hiện khi bệnh nhân đến khám định kỳ hoặc khám một bệnh khác.

 

Đúng như tên gọi mà nhiều nhà khoa học đã đặt cho căn bệnh: Cao huyết áp là “kẻ giết người thầm lặng”, những triệu chứng của bệnh đều không rõ ràng và hầu hết không xảy ra cho đến khi bệnh đã tiến triển đến giai đoạn rất nghiêm trọng. Lúc này, các biến chứng tim mạch có thể đột ngột xuất hiện và tước đi tính mạng bệnh nhân chỉ trong cái chớp mắt.

4. Nguyên nhân gây tăng huyết áp

 

Như đã đề cập, hầu hết các trường hợp tăng huyết áp đều không rõ nguyên nhân và được gọi là tăng huyết áp vô căn. Loại này thường là do di truyền, phổ biến hơn ở nam giới.

Bên cạnh đó, cao huyết áp thứ phát là hệ quả của một số bệnh lý như bệnh thận, bệnh tuyến giáp, u tuyến thượng thận hay tác dụng gây ra bởi thuốc tránh thai, thuốc cảm, cocaine, rượu bia, thuốc lá. Loại này chỉ chiếm khoảng 5 – 10% trên tổng số ca bệnh cao huyết áp. Điều trị dứt điểm các nguyên nhân thứ phát có thể giải quyết được bệnh. Đối với tăng huyết áp gây ra do tác dụng không mong muốn của thuốc, sau khi ngừng thuốc có thể mất chừng vài tuần để huyết áp ổn định lại về mức bình thường. Trẻ em, nhất là các trẻ dưới 10 tuổi, mắc cao huyết áp thứ phát thì nguyên nhân thường là do bệnh khác gây ra, điển hình như bệnh thận.

Tăng huyết áp thai kỳ là dạng tăng huyết áp đơn thuần nhưng thường xảy ra sau tuần thai thứ 20. Trong khi đó, tiền sản giật cũng xảy ra sau khi thai nhi được 12 tuần tuổi, nhưng kèm theo phù và có đạm trong nước tiểu. Nguyên nhân của các dạng tăng huyết áp trong thời kỳ mang thai này có thể là do thiếu máu trầm trọng, nhiều nước ối, mang thai con đầu lòng, đa thai, thai phụ trẻ dưới 20 tuổi hoặc cao trên 35 tuổi, tiền sử cao huyết áp hoặc đái tháo đường,…

5. Những ai có nguy cơ mắc cao huyết áp?

 

Sau đây là một số đối tượng phổ biến của bệnh cao huyết áp:

  • Người lớn tuổi: Hệ thống thành mạch máu không còn duytrì được độ đàn hồi như trước, dẫn đến cao huyết áp;
  • Giới tính: Tỷ lệ đàn ông dưới 45 tuổi mắc bệnh cao hơn so với phụ nữ, tuy nhiên phụ nữ sau mãn kinh lại có nhiều khả năng bị cao huyết áp hơn so với đàn ông cũng vào độ tuổi này;
  • Tiền sử gia đình: Nguy cơ mắc bệnh tăng huyết áp thường cao hơn đối với các thành viên trong gia đình (cha mẹ hoặc anh chị) có tiền sử mắc bệnh tim mạch.

Những yếu tố dưới đây làm tăng nguy cơ mắc bệnh cao huyết áp, bao gồm:

  • Thừa cân béo phì;
  • Lối sống tĩnh tại, lười vận động;
  • Ăn uống không lành mạnh;
  • Ăn quá nhiều muối;
  • Sử dụng lạm dụng rượu, bia;
  • Hút thuốc lá;
  • Căng thẳng thường xuyên.

6. Điều trị bệnh cao huyết áp

Mục tiêu điều trị cao huyết áp là để giữ cho huyết áp của bệnh nhân ổn định ở mức cho phép, thường là dưới 140/90 mmHg đối với mức huyết áp mục tiêu chung. Tuy nhiên, đối với bệnh nhân tăng huyết áp kèm theo các bệnh liên quan như đái tháo đường hoặc bệnh thận mãn tính, bác sĩ sẽ đề nghị một liệu trình điều trị nghiêm ngặt hơn để giữ cho huyết áp ổn định ở mức dưới 130/80 mmHg. Lưu ý, các mức huyết áp mục tiêu có thể khác nhau theo từng đối tượng bệnh nhân cụ thể. Sau đây là các phương pháp chữa trị cao huyết áp:

Cao huyết áp: Triệu chứng, nguyên nhân và cách điều trị
Các mức huyết áp mục tiêu có thể khác nhau theo từng đối tượng bệnh nhân cụ thể.

6.1. Thay đổi lối sống

Biện pháp không dùng thuốc bao giờ cũng chiếm một vai trò cực kỳ quan trọng trong liệu trình điều trị chung. Theo lời khuyên của các bác sĩ, bệnh nhân có thể kiểm soát huyết áp bằng cách:

  • Điều chỉnh chế độ ăn uống: Lành mạnh hơn và dùng ít muối (dưới 6g/ngày);
  • Tập thể dục đều đặn, vừa sức;
  • Cố gắng duy trì cân nặng lý tưởng, giảm cân theo hướng dẫn;
  • Ngừng hoặc hạn chế tối đa uống rượu, bỏ hút thuốc;
  • Tránh nhiễm lạnh đột ngột;
  • Kiểm soát tốt các bệnh liên quan;
  • Sử dụng thuốc điều trị cao huyết áp đúng theo hướng dẫn của bác sĩ;
  • Thường xuyên theo dõi sự thay đổi của huyết áp ngay tại nhà với máy đo thích hợp.

6.2. Thuốc điều trị cao huyết áp

Nếu như thay đổi lối sống không đem lại nhiều lợi ích trong việc cải thiện tình trạng bệnh, bác sĩ sẽ cân nhắc cho bệnh nhân sử dụng thuốc theo toa.

Mặc dù các phác đồ điều trị cao huyết áp đã được đưa ra và thử nghiệm rất nhiều lần. Tuy nhiên, trong suốt quá trình diễn tiến của bệnh, bác sĩ sẽ theo dõi và có thể thay đổi, tăng giảm liều, phối hợp thêm thuốc hoặc bỏ bớt thuốc cho đến khi xác định được phác đồ điều trị phù hợp nhất đối với bệnh nhân. Hãy lưu ý về tình hình sức khỏe trước và sau khi dùng thuốc để thông báo cho bác sĩ về các tác dụng không mong muốn trong khi dùng thuốc theo phác đồ. Dùng thuốc thường xuyên để bình ổn huyết áp. Điều trị tăng huyết áp là điều trị cả đời. Không tự ý ngừng điều trị, cần phải tham vấn bác sĩ chuyên khoa.

Bên cạnh đó, bệnh cao huyết áp còn có thể được kiểm soát tốt bằng các bài thuốc trị tăng huyết áp theo hướng dẫn của thầy thuốc đông y.

6.3. Điều trị cao huyết áp trong trường hợp khẩn cấp

Một số trường hợp cao huyết áp cấp cứu cần phải được chữa trị ngay lập tức tại phòng cấp cứu hoặc phòng chăm sóc đặc biệt, vì lúc này nguy cơ bệnh nhân tử vong là khá cao. Bệnh nhân có thể được thở oxy và dùng thuốc hạ huyết áp khẩn cấp để nhanh chóng cải thiện tình hình.

Hầu hết các bệnh tim mạch ở nước ta, đặc biệt là những bệnh lý mãn tính phổ biến như cao huyết áp, vấn đề tuân thủ điều trị luôn là điều khiến cho các bác sĩ đau đầu. Do việc điều trị thường phải phối hợp nhiều thuốc, dẫn đến việc bệnh nhân quên uống thuốc, hoặc có thuốc nhưng không uống, hoặc dùng thuốc không theo hướng dẫn của bác sĩ, hậu quả là hiệu quả điều trị tăng huyết áp không được cao. Chính vì vậy, bệnh nhân cần phải thật sự nghiêm túc trong việc chữa trị bệnh của chính bản thân mình, phối hợp tốt với bác sĩ để tối đa hóa hiệu quả điều trị.

Cao huyết áp: Triệu chứng, nguyên nhân và cách điều trị

Tổng giám đốc Công ty Nguyễn Kim bị truy nã

Phạm Nhật Vinh

TP HCM Phạm Nhật Vinh, Tổng giám đốc Công ty Nguyễn Kim, bị truy nã do “đã bỏ trốn khi bị phát hiện sai phạm” trong việc bán 9 triệu cổ phần của Sadeco.

Trong bản kết luận điều tra vụ án được công bố ngày 12/1, Công an TP HCM cho rằng quá trình làm rõ sai phạm việc bán 9 triệu cổ phần của Công ty CP phát triển Nam Sài Gòn (Sadeco, công ty con của Công ty Tân Thuận IPC, 100% vốn nhà nước) đã phát hiện ông Phạm Nhật Vinh vi phạm pháp luật.

Ông Phạm Nhật Vinh. Ảnh: NLD.

Ông Phạm Nhật Vinh. Ảnh: NLD.

Theo điều tra, ngày 5/10/2017, Tề Trí Dũng (Tổng giám đốc IPC) với tư cách Chủ tịch HĐQT Sadeco ký hợp đồng hợp tác chiến lược với Công ty Nguyễn Kim. Theo đó, Sadeco sẽ phát hành 9 triệu cổ phần để tăng vốn điều lệ và bán toàn bộ cho Nguyền Kim với giá 40.000 đồng/cổ phần.

Giám đốc Công ty Nguyễn Kim có vai trò đại diện vốn tư nhân, được mời tham gia làm cổ đông chiến lược, thành viên HĐQT Sadeco. Ông này và các thành viên khác cùng bỏ phiếu thông qua việc phát hành 9 triệu cổ phần mà không thẩm định giá và đấu giá theo quy định. Hai tuần sau, Nguyễn Kim đã thanh toán đủ số tiền 360 tỷ đồng.

Giá bán cổ phần như trên đã gây thất thoát cho Công ty Sadeco hơn 940 tỷ đồng. Trong đó, UBND TP HCM thiệt hại 413 tỷ (tỷ lệ vốn góp 44%), thiệt hại cho Thành ủy là 157 tỷ (16,7% vốn).

Cơ quan điều tra căn cứ Điều 149 Luật doanh nghiệp cho rằng, ông Phạm Nhật Vinh và Nguyễn Hữu Thành (đại diện Công ty Nguyễn Kim, thành viên HĐQT Sadeco) đã tán thành thông qua nghị quyết thì phải liên đới chịu trách nhiệm và phải đền bù thiệt hại.

Ngày 11/12/2020, ông Vinh bị khởi tố về tội Vi phạm quy định về quản lý, sử dụng tài sản Nhà nước gây thất thoát, lãng phí với vai trò đồng phạm của Tất Thành Cang, Tề Trí Dũng… Tuy nhiên, bị can đã xuất cảnh đi nước ngoài.

Ngày 31/12/2020, Công an TP HCM đã ra quyết định truy nã toàn quốc đối với Phạm Nhật Vinh, đồng thời đề nghị Cục Đối ngoại – Bộ Công an thực hiện các thủ tục truy nã quốc tế.

Hiện, hành vi sai phạm của ông Vinh đã được tách riêng, khi nào bắt được sẽ xử lý sau.

Đất ở hẻm 123 Mạc Đĩnh Chi, P2, Tp. Bảo Lộc

Đất phường 2 Tp Bảo Lộc

Đất ở hẻm 123 Mạc Đĩnh Chi, P2, Tp. Bảo Lộc

DT: 5mx22m

Đất chính chủ, Sổ hồng

View đẹp, thoáng, đất bằng phẳng, xung quanh là khu dân cư.

Đất nông nghiệp

Giá: 695tr

Liên hệ : Trần Gia Linh 0838822922

Đất phường 2 Tp Bảo Lộc
Đất phường 2 Tp Bảo Lộc

Nhà đất Phường 2,Tp.Bảo Lộc

 

Đất bảo lộc
Đất bảo lộc

Nhà đất bảo lộc

Nhà đất bảo lộc

Loại camera nào giúp đảm bảo an ninh?

camera an ninh

Camera có dây xuất hiện trước camera không dây nhưng chưa chắc đã lạc hậu hơn trên phương diện đảm bảo an ninh.

Trước hết, cần phân biệt ba loại camera an ninh: loại có dây (kết nối với nguồn điện và Internet bằng dây), loại không dây (kết nối với nguồn điện bằng dây, kết nối mạng bằng Wifi), và camera không dây chạy pin (nối mạng bằng Wifi, nguồn điện lấy từ pin).

Hệ thống camera an ninh có dây bao gồm đầu ghi video ra định dạng số cùng nhiều camera (thường từ bốn tới 16). Loại này sẽ ghi hình ra ổ lưu trữ và có thể được nối mạng Internet để chủ nhân theo dõi từ xa. Các camera trong cùng mạng lưới không cần cắm vào ổ điện riêng rẽ vì chúng lấy điện từ nguồn trung tâm.

Camera có dây cần được nối với nguồn điện và mạng internet bằng dây. Ảnh: iStock.

Camera có dây cần được nối với nguồn điện và mạng internet bằng dây. Ảnh: iStock.

Hệ thống camera không dây (hay còn gọi là camera wifi) truyền tải video qua mạng wifi nhưng vẫn được nối với nguồn điện bằng dây. Hệ thống camera không dây thường sẽ lưu trữ video vào máy chủ ảo trên mạng nên chủ nhân có thể tiếp cận từ bất cứ đâu, nhưng vẫn có loại lưu video vào bộ nhớ của từng camera.

Một số hệ thống camera không dây lấy điện từ pin và hoàn toàn không sử dụng dây. Loại này sẽ được sạc bằng dây cáp USB hoặc dùng pin có thể tháo rời để sạc.

Mỗi loại camera đều có ưu, nhược điểm riêng. Ưu điểm lớn nhất của camera có dây là độ tin cậy. Cả hệ thống vẫn sẽ ghi hình dù không có kết nối Internet nên chủ nhân sẽ không phải lo tín hiệu wifi kém hoặc pin yếu.

Hệ thống camera có dây sẽ bảo mật hơn vì ít khả năng bị hack hoặc chặn. Tuy nhiên, loại camera này thường mất thời gian lắp đặt hơn.

Ngược lại, ưu điểm của hệ thống camera không dây là sự linh hoạt. Chủ nhân có thể đặt máy quay ở bất cứ đâu trong tầm tín hiệu wifi và ổ điện (với loại không có pin), đồng thời không cần khoan đục tường. Việc lắp thêm camera cũng không cần tốn nhiều công sức vì chủ nhân chỉ cần cắm điện và nối mạng wifi.

Vì hầu hết camera không dây lưu trữ dữ liệu trên máy chủ ảo, bạn có thể lưu trữ video trong thời gian lâu hơn so với hệ thống có dây (thường là 15 ngày). Một số dịch vụ máy chủ ảo cho phép lưu trữ dữ liệu tới 60 ngày, đổi lại bạn cần trả phí.

Ngoài ra, các ứng dụng và phần mềm đi kèm camera không dây thường thân thiện hơn với người dùng và có thể được điều khiển bằng trợ lý ảo như Google Assistant hoặc Alexa.

Để xác định chọn hệ thống camera nào, bạn cần cân nhắc một số tiêu chí. Ví dụ, hệ thống camera có dây sẽ thích hợp với người sở hữu nhà và xác định ở lâu dài, không ngại khoan đục tường, quan tâm độ tin cậy của hệ thống, và sẵn sàng đầu tư khoản tiền tương đối.

Ngược lại, hệ thống camera không dây phù hợp với người đi thuê nhà và thường di chuyển, không muốn bỏ nhiều tiền một lúc, không thích lắp đặt phức tạp hoặc không được phép phá tường.

Giảm một nửa lệ phí làm căn cước công dân gắn chip

Căn cước công dân gắn chip

Người dân chuyển đổi từ chứng minh nhân dân sang thẻ căn cước gắn chip hoặc làm thẻ mới được giảm 50% lệ phí.

Theo Thông tư mới của Bộ Tài chính, từ nay đến hết tháng 6/2021, khi người dân chuyển từ chứng minh nhân dân (CMND) 9 số hoặc 12 số sang thẻ căn cước công dân thì mức lệ phí giảm từ 30.000 đồng mỗi thẻ xuống còn 15.000 đồng.

Mức giảm từ 50.000 đồng xuống 25.000 đồng mỗi căn cước áp dụng với trường hợp người dân bị hư hỏng thẻ không dùng được; thay đổi thông tin về họ, chữ đệm, tên, đặc điểm nhận dạng; xác định lại giới tính, quê quán; sai sót thông tin trên thẻ; hoặc khi yêu cầu đổi thẻ.

Trường hợp cấp lại căn cước công dân khi bị mất, được giảm từ 70.000 đồng xuống 35.000 đồng.

Công an Hà Nội thu thập dữ liệu để làm căn cước công dân gắn chip, ngày 31/12/2020. Ảnh: Bá Đô

Công an Hà Nội thu thập dữ liệu để làm căn cước công dân gắn chip, ngày 31/12/2020. Ảnh: Bá Đô

Theo Luật Căn cước công dân 2014, người từ đủ 14 tuổi được cấp thẻ căn cước công dân và phải được đổi khi đủ 25, 40 tuổi và 60 tuổi. Dự kiến với loại thẻ mới gắn chip, đến tháng 7/2021, Bộ Công an sẽ cấp cho 50 triệu công dân.

Thẻ căn cước mới dự kiến có 20 trường thông tin do ngành công an quản lý (họ tên, năm sinh, quê quán…), ngoài ra sẽ tích hợp dữ liệu của ngành thuế, hải quan, bảo hiểm, bằng lái… Mẫu thẻ được kỳ vọng đáp ứng yêu cầu cải cách hành chính, phát triển Chính phủ điện tử, giúp người dân trong tương lai đi làm thủ tục bớt phải mang cùng lúc nhiều giấy tờ.

Từ 31/12/2020, Công an Hà Nội đã bắt đầu thu nhận thông tin để cấp căn cước gắn chip cho người dân.

Laravel install

Lập trình laravel framework

Laravel install

laravel new projectname

composer require laravel/ui

php artisan ui react –auth

php artisan route:clear

php artisan optimize

php artisan migrate:refresh –seed

composer require laravel/installer

composer require laravel/sanctum

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

php artisan migrate

Interview Questions

Interview Questions

Interview Questions

Behavioural Interview Question

Tell me about a time when you worked effectively under pressure

Give me an example of how you worked on team

describe a time when you had to deal with a very upset customer

have you ever made a mistake ? How did you handle it

làm việc với Git

làm việc với Git

git –version

git init

git status

git add . cho tất cả các tập tin git add [tenfile1][tenfile2] cho các file cụ thể

Tạo repository trên github sau đó tạo remote trên máy với github

git commit -m “add the first time”

git remote add origin 

        git remote add gitname https://github.com/xxx/gitname.git

git push gitname master

 Remove git từ thư mục rm -rf .git

 

WebRTC là gì? Cách viết ứng dụng gọi video bằng WebRTC và Firebase

WebRTC là gì? Cách viết ứng dụng gọi video bằng WebRTC và Firebase

WebRTC là gì?

WebRTC là các API viết bằng javascript giúp giao tiếp theo thời gian thực mà không cần cài plugin hay phần mềm hỗ trợWebRTC có khả năng hỗ trợ trình duyệt giao tiếp thời gian thực thông qua Video Call, Voice Call hay transfer data P2P(peer-to-peer), không cần đến plugin, phần mềm khác. Vậy ý nghĩa viết tắt của chữ WebRTC là gì?

WebRTC là gì? Là tập hợp các API và được viết bằng javascript
WebRTC là tập hợp các API và được viết bằng javascript

WebRTC là viết tắt của cụm từ Web Real-Time Communication rất được các lập trình viên ưa chuộng. WebRTC cho phép các trình duyệt giao tiếp với nhau theo thời gian thực .Ví dụ như: gọi điện, video, chơi game,… Ngoài ra, WebRTC là một sản phẩm của World Wide Web Consortium (W3C).

Lịch sử của WebRTC

webrtc là gì? Là dự án mã nguồn mở miễn phí của Google
Là dự án mã nguồn mở miễn phí của Google

WebRTC đã được hình thành ý tưởng từ những năm 2009 bởi nhóm kỹ sư Google Hangouts. Thay vì sử dụng Flash để truyền video, hình ảnh trên web, họ quyết định tự tạo ra một sản phẩm của riêng mình.

Năm 2010, khi hai công ty On2 và Global IP Solutions(GIPS) chính thức bị Google thâu tóm, công nghệ truyền dữ liệu thời gian thực cũng được lấy làm nền tảng cho WebRTC. Đến tháng 5 năm 2011, dự án nguồn mở hỗ trợ giao tiếp thời gian thực giữa trình duyệt mang tên WebRTC mới chính thức được ra mắt.

Cùng lúc đó, W3C và Hiệp Hội Kỹ Sư Quốc Tế(IETF) cũng phát triển các giao thức kết nối thời gian thực. Vì thế, họ đã quyết định bắt tay để cùng nhau xây dựng sản phẩm này. Tháng 10 năm 2011, phiên bản đầu tiên của WebRTC chính thức ra mắt, đến tháng 11, Chrome 23 ra đời và trở thành trình duyệt đầu tiên tích hợp sẵn WebRTC.

WebRTC dùng để làm gì?

WebRTC được ứng dụng trong nhiều lĩnh vực
WebRTC được ứng dụng trong nhiều lĩnh vực

Tính năng nổi bật nhất của WebRTC chắc chắn chính là khả năng truyền tải video, âm thanh, gửi dữ liệu theo thời gian thực giữa hai hay nhiều thiết bị mà không qua trung gian, không cần cài thêm plugin.

Trang web Appear.in từng là một trong những trang web sử dụng WebRTC khá nổi tiếng. Trang này cung cấp dịch vụ tạo phòng chat video nhanh chóng mà không cần cài đặt thêm bất kì plugin nào, không cần đăng nhập tài khoản.

Không chỉ các ứng dụng mà WebRTC còn được sử dụng cho việc tạo ra các tựa game trên trình duyệt. Người chơi chỉ cần sử dụng trình duyệt có hỗ trợ WebRTC để chơi, không cần cài đặt rườm rà.

Lợi ích của WebRTC là gì?

WebRTC mang đến nhiều lợi ích cho cả người dùng và lập trình viên
WebRTC mang đến nhiều lợi ích cho cả người dùng và lập trình viên
  • Mã nguồn mở miễn phíWebRTC là một dự án mã nguồn mở miễn phí. Google cho biết đây là một công cụ truyền thông thời gian thực hoàn toàn miễn phí và có sẵn trên mọi trình duyệt.
  • Hỗ trợ đa nền tảng: Mặc dù WebRTC vẫn trong giai đoạn phát triển nhưng nó đã hoạt động tốt trên hầu hết mọi trình duyệt của các hệ điều hành bất kì. Cho phép lập trình viên viết các đoạn mã HTML làm việc với máy tính hoặc thiết bị di động.
  • Bảo mật voice và video: Giao thức SRTP (Secure Real-Time Transport Protocol) được dùng để mã hóa và xác thực dữ liệu media. Chống lại các khả năng bị nghe trộm trong quá trình thực hiện tác vụ video hay voice.
  • Không cần plugin hay phần mềm hỗ trợ: Yếu tố quan trọng giúp WebRTC được đánh giá rất cao chính là khả năng hoạt động không cần đến plugin bên thứ ba mang đến sự tiện lợi, tối ưu tốc độ, tiết kiệm chi phí,…
  • Tương đối dễ sử dụngWebRTC có thể được tích hợp trong các dịch vụ web bằng cách dùng JavaScript APIs, các Framework có sẵn.
  • Sử dụng bằng thông hiệu quả: Hỗ trợ nhiều kiểu media và các thiết bị đầu cuối khác nhau, WebRTC sử dụng băng thông hiệu quả hơn, hoạt động tốt trong mọi điều kiện đường truyền mạng.

Ưu và nhược điểm của WebRTC là gì?

WebRTC có khá nhiều những ưu điểm. Tuy nhiên nó vẫn tồn tại một số những nhược điểm.

Ưu điểm của WebRTC là gì?

Hỗ trợ đa nền tảng, đa trình duyệt trên các thiết bị
Hỗ trợ đa nền tảng, đa trình duyệt trên các thiết bị
  • Được viết bằng ngôn ngữ javascript nên dễ dàng tiếp cận và sử dụng.
  • Hoàn toàn miễn phí.
  • Có thể hỗ trợ đa nền tảng, đa trình duyệt web trên laptop, PC, các thiết bị di động….
  • Tính bảo mật cao.
  • Không cần cài đặt, không cần plugin, phần mềm hỗ trợ.
  • Dùng được trong nhiều điều kiện đường truyền mạng.

Nhược điểm của WebRTC là gì?

WebRTC chưa hỗ trợ toàn diện tất cả trình duyệt
WebRTC chưa hỗ trợ toàn diện tất cả trình duyệt
  • WebRTC bị cản bởi NAT và tường lửa khi cố gắng thực hiện kết nối P2P.
  • Không có cơ chế báo hiệu cài sẵn khi WebRTC tạo kết nối P2P giữa các trình duyệt.
  • WebRTC vẫn chưa chính thức hoàn thiện, một số trình duyệt như IE, Safari chưa thực sự được hỗ trợ tốt nhất.
  • Các hãng trình duyệt chưa thống nhất được chuẩn video sử dụng cho WebRTC.
  • Số lượng hàm API WebRTC hỗ trợ cho mỗi trình duyệt là khác nhau, tăng rủi ro phát sinh lỗi khi sử dụng trên các trình duyệt khác nhau.

Các phần chính của WebRTC và chức năng của WebRTC API là gì?

Cung cấp tính năng truyền dữ liệu thời gian thực
Cung cấp tính năng truyền dữ liệu thời gian thực

MediaStream

MediaStream là một stream dữ liệu âm thanh và hình ảnh, bằng cách gọi hàm getUserMedia để khởi tạo khi làm việc cục bộ. MediaStream sẽ cho phép truy cập vào stream của một máy tính sau khi một kết nối WebRTC được thiết lập với một máy tính khác.

Một MediaStream sẽ có input và output với input dùng để lấy dữ liệu hình ảnh và âm thanh của local trong khi output dùng để hiển thị các dữ liệu này lên view hoặc được RTCPeerConnection sử dụng.

RTCDataChannel

Đúng với cái tên của mình, RTCDataChannel là một kênh hai chiều chịu trách nhiệm trao đổi dữ liệu thời gian thực. RTCDataChannel sẽ trao đổi các dữ liệu dạng text, chia sẻ tệp P2P và các loại khác mà không chứa các dữ liệu nghe nhìn(âm thanh, hình ảnh). Khả năng trao đổi thông tin nhanh chóng, an toàn, đáng tin khiến RTCDataChannel được khai thác để xây dựng các giải pháp mới và hiệu quả về chi phí.

RTCPeerConnection

Là phần quan trọng giúp kết nối MediaStream và RTCDataChannel trở thành WebRTC. RTCPeerConnection là API giúp kết nối giữa hai trình duyệt, cung cấp các phương thức để kết nối, duy trì kết nối và đóng kết nối khi không còn nhu cầu sử dụng.

Cách viết ứng dụng gọi video bằng WebRTC và Firebase

WebRTC cho phép gọi video không cần plugin
WebRTC cho phép gọi video không cần plugin

Firebase là một nền tảng để phát triển ứng dụng di động và trang web, bao gồm các API đơn giản và mạnh mẽ mà không cần backend hay server.

WebRTC hỗ trợ đa nền tảng và đa ngôn ngữ vì vậy bạn có thể dùng nó cho trang web có đuôi HTML hoặc PHP đều được.

Bước 1: Cài đặt Firebase

  • Để cài đặt Firebase, truy cập trang firebase.google.com
  • Đăng nhập tài khoản Google của bạn
  • Chọn “Create a project” để tạo mới một project.
webrtc là gì? Chọn Create a project để tạo một dự án mới
Chọn Create a project để tạo một dự án mới
  • Nếu Firebase không hiển thị ngôn ngữ tiếng Anh, hãy thêm ?hl=en vào cuối URL.
  • Điền tên cho project và chọn “Continue” để tiếp tục.
webrtc là gì? Chọn tên cho project của bạn
Chọn tên cho project của bạn
  • Tắt Google Analytic cho project
  • Chọn “Create Project”, chờ một lúc để chương trình khởi tạo.
webrtc là gì? Bạn có thể sử dụng Analytic để theo dõi project
Bạn có thể sử dụng Analytic để theo dõi project
  • Khi đã hoàn tất, bạn sẽ nhận được thông báo tương tự, nhấn “Continue” để tiếp tục.
webrtc là gì? Tạo project mới thành công
Tạo project mới thành công
  • Chọn biểu tượng Setting bên cạnh “Project Overview
  • Kéo thanh trượt xuống để chọn loại platform, ở đây chúng ta viết ứng dụng cho Web nên sẽ chọn biểu tượng Web.
webrtc là gì? Chọn loại platform cho ứng dụng
Chọn loại platform cho ứng dụng
  • Điền tên App, chọn cài đặt Hosting cho app hoặc bạn có thể cài đặt sau và chọn “Register app”.
webrtc là gì? Đặt tên ứng dụng và tạo ứng dụng mới
Đặt tên ứng dụng và tạo ứng dụng mới
  • Copy đoạn code này và dán vào bên dưới thẻ <body>
  • Bạn có thể bỏ qua bước này và chọn “Next” chúng ta sẽ thực hiện sau ở phần code.
webrtc là gì? Code được cung cấp để chèn vào trang web của bạn
Code được cung cấp để chèn vào trang web của bạn
  • Tiếp tục chọn “Next” cho đến phần cuối bạn chọn “Continue to Console”.
  • Kéo thanh trượt xuống mục Firebase SDK snippet và chọn CDN, chúng ta sẽ tiếp tục đến phần code web.
webrtc là gì? Đoạn code sử dụng cho trang web cần cấu hình
Đoạn code sử dụng cho trang web cần cấu hình
  • Bạn cần thực hiện thêm một bước nữa, đó là tạo Realtime Database.
webrtc là gì? Chọn thẻ Database để tạo mới Database cho project
Chọn thẻ Database để tạo mới Database cho project
  • Chọn test mode để người khác có thể ghi vào database của bạn.
webrtc là gì? Chọn test-mode cho phép mọi người ghi database
Chọn test-mode cho phép mọi người ghi database

Bước 2: Code web để kết nối Firebase

Tạo ra một giao diện website với 2 khung hiển thị cho camera 2 máy được kết nối. Sử dụng thẻ <video></video> và thêm CSS để giao diện thêm rõ ràng.

Định nghĩa các dòng code:

var database = firebase.database().ref();

Cấp quyền truy cập vào thư mục gốc của cơ sở dữ liệu Firebase

sendMessage database.on('child_added', readMessage);

Hàm được sử dụng để thêm cơ sở dữ liệu vào Firebase

var yourId = Math.floor(Math.random()*1000000000);

Dùng để tạo yourId random (ngẫu nhiên)

var servers = {'iceServers': [

{'urls': 'stun:stun.services.mozilla.com'},

{'urls': 'stun:stun.l.google.com:19302'}

]};

Khai báo máy chủ sử dụng ở đây là hai máy chủ STUN của Google và Firefox, tùy nhu cầu mà bạn có thể thêm hoặc bớt.

Giao thức STUN

STUN viết tắt của cụm từ Session Traversal Utilities for NAT là một giao thức mạng cho phép các máy khách tìm ra địa chỉ công khai của mình, loại NAT mà chúng đang đứng sau và cổng phía Internet được NAT gắn liền với cổng nội bộ nào đó. Từ đó, thiết lập giao tiếp UDP giữa 2 host mà đều nằm sau NAT router, giao thức STUN được định nghĩa trong RFC 5389.

var pc = new RTCPeerConnection(servers);

Tạo mới một đối tượng PeerConnection

pc.onicecandidate = (event => event.candidate ? sendMessage(yourId, JSON.stringify({'ice': event.candidate})) : console.log('Sent All Ice') );

Chờ ICE Candidate được tạo trên máy tính của bạn.

pc.onaddstream = (event => friendsVideo.srcObject = event.stream);

Chờ các đối tượng Offer, Answer, ICE Candidates được gửi. Sự kiện onaddstream được gọi và đặt friendsVideo.srcObject thành đối tượng MediaStream. Thao tác này sẽ hiển thị video người kia trên máy tính của bạn và ngược lại.

function sendMessage(senderId, data) {

var msg = database.push({ sender: senderId, message: data });

msg.remove();

}

Hàm sendMessage

Hàm sendMessage thêm dữ liệu vào cơ sở dữ liệu Firebase

function showMyFace() {

navigator.mediaDevices.getUserMedia({audio:true, video:true})

.then(stream => yourVideo.srcObject = stream)

.then(stream => pc.addStream(stream));

}

Hàm showMyFace

Hàm showMyFace, khi bạn gọi đến getUserMedia, trình duyệt của bạn sẽ yêu cầu quyền truy cập camera. Trả về một đối tượng MediaStream cái mà bạn có thể đặt bằng yourVideo.srcObject. Chức năng đoạn này là hiển thị mặt của bạn trên chính máy tính của bạn. Sau đó, ta cần thêm MediaStream vào PeerConnection. Trên máy tính đối phương thực hiện cuộc gọi cũng thực hiện tương tự.

function showFriendsFace() {

pc.createOffer()

.then(offer => pc.setLocalDescription(offer) )

.then(() => sendMessage(yourId, JSON.stringify({'sdp': pc.localDescription})) );

}

Tạo đối tượng Offer

Tạo đối tượng Offer bằng cách gọi hàm pc.createOffer(). Đặt local description cho offer này bằng cách gọi pc.setLocalDescription(offer). Cuối cùng gửi đối tượng Offer cho đối phương bằng cách gọi sendMessage.

function readMessage(data) {

var msg = JSON.parse(data.val().message);

var sender = data.val().sender;

if (sender != yourId) {

if (msg.ice != undefined) {

pc.addIceCandidate(new RTCIceCandidate(msg.ice));

} else if (msg.sdp.type == "offer") {

pc.setRemoteDescription(new RTCSessionDescription(msg.sdp))

.then(() => pc.createAnswer())

.then(answer => pc.setLocalDescription(answer))

.then(() => sendMessage(yourId, JSON.stringify({'sdp': pc.localDescription})));

} else if (msg.sdp.type == "answer") {

pc.setRemoteDescription(new RTCSessionDescription(msg.sdp));

}

}

};

Hàm readMessage

Hàm readMessage cho phép đối phương đọc tin nhắn, với tin nhắn dạng offer thì khi bạn gửi cho bạn bè một Offer bạn đã tạo, đối phương sẽ thiết lập mô tả từ xa (remote description) của họ cho đối tượng Offer mà bạn đã gửi cho họ bằng cách gọi:

pc.setRemoteDescription(new RTCSessionDescription(msg.sdp))

Người nhận sẽ tạo một đối tượng Answer bằng cách gọi hàm pc.createAnswer()Kết quả trả về một đối tượng Answer mà bạn sẽ thiết lập ở mô tả local. Người nhận làm được điều này bằng cách gọi đến pc.setLocalDescription(answer). Sau đó, người nhận lấy đối tượng Answer và gửi nó cho bạn bằng cách gọi sendMessage.

Code web hoàn chỉnh sẽ có dạng như sau

<html>
<head>

<script src="https://www.gstatic.com/firebasejs/5.0.4/firebase.js"></script>

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

<style type="text/css">
video {
background-color: #ddd;
border-radius: 7px;
margin: 10px 0px 0px 10px;
width: 320px;
height: 240px;
}
button {
margin: 5px 0px 0px 10px !important;
width: 654px;
}
</style>

 
</head>


<body onload="showMyFace()">


<video id="yourVideo" autoplay muted></video>


<video id="friendsVideo" autoplay></video>


<br />


<button onclick="showFriendsFace()" type="button" class="btn btn-primary btn-lg"><span class="glyphicon glyphicon-facetime-video" aria-hidden="true"></span> Call</button>


<script type="text/javascript">


var config = {


apiKey: " <API_KEY>",


authDomain: " <PROJECT_ID>.firebaseapp.com",


databaseURL: " https://<DATABASE_NAME>.firebaseio.com",


projectId: " <PROJECT_ID>",


storageBucket: " <BUCKET>.appspot.com",


messagingSenderId: " <SENDER_ID>"


};
firebase.initializeApp(config);
var database = firebase.database().ref();
var yourVideo = document.getElementById("yourVideo");
var friendsVideo = document.getElementById("friendsVideo");
var yourId = Math.floor(Math.random()*1000000000);
var servers = {'iceServers': [{'urls': 'stun:stun.services.mozilla.com'}, {'urls': 'stun:stun.l.google.com:19302'}, {'urls': 'turn:numb.viagenie.ca','credential': 'webrtc','username': 'websitebeaver@mail.com'}]};
var pc = new RTCPeerConnection(servers);
pc.onicecandidate = (event => event.candidate?sendMessage(yourId, JSON.stringify({'ice': event.candidate})):console.log("Sent All Ice") );
pc.onaddstream = (event => friendsVideo.srcObject = event.stream);
function sendMessage(senderId, data) {
var msg = database.push({ sender: senderId, message: data });
msg.remove();
}
function readMessage(data) {
var msg = JSON.parse(data.val().message);
var sender = data.val().sender;
if (sender != yourId) {
if (msg.ice != undefined)
{
pc.addIceCandidate(new RTCIceCandidate(msg.ice));
}
else if (msg.sdp.type == "offer")
{
var r = confirm("Answer call?");
if (r == true) {
pc.setRemoteDescription(new RTCSessionDescription(msg.sdp))
.then(() => pc.createAnswer())
.then(answer => pc.setLocalDescription(answer))
.then(() => sendMessage(yourId, JSON.stringify({'sdp': pc.localDescription})));
} else {
alert("Rejected the call");
}
}
else if (msg.sdp.type == "answer")
{
pc.setRemoteDescription(new RTCSessionDescription(msg.sdp));
}
}
};
database.on('child_added', readMessage);
function showMyFace() {
navigator.mediaDevices.getUserMedia({audio:true, video:true})
.then(stream => yourVideo.srcObject = stream)
.then(stream => pc.addStream(stream));
}
function showFriendsFace() {
pc.createOffer()
.then(offer => pc.setLocalDescription(offer) )
.then(() => sendMessage(yourId, JSON.stringify({'sdp': pc.localDescription})) );
}
/script>
</body>
</html>

Ứng dụng hoàn chỉnh sẽ cho phép 2 máy tính truy cập vào cùng đường dẫn và gọi video cho nhau.

Tổng kết

Như vậy, chỉ với chưa đầy 100 dòng code và chỉ bao gồm HTML, CSS và Javascript là bạn đã tạo ra một ứng dụng gọi điện trực tuyến thời gian thực trên hosting web. Người sử dụng không cần đến bấy kì plugin hay phần mềm hỗ trợ nào.

Trong thực tế, WebRTC sẽ mang lại rất nhiều ưu điểm so với các phương pháp truyền thống. Giảm số dòng code, độ phức tạp cho các lập trình viên khi phải lập trình các ứng dụng cao cấp, tiết kiệm rất nhiều chi phí, sử dụng băng thông hiệu quả,… Hy vọng rằng bài viết đã tổng hợp được những thông tin hữu ích cho bạn đọc..

Smoke Testing là gì?

Smoke Testing là gì?

Smoke Testing là 1 quá trình để kiểm tra liệu build đã triển khai ổn định hay không? Để xác nhận liệu QA team có thể tiếp tục với further testing hay không? Các Smoke Testing là 1 thiết lập các bài test tối thiểu chạy trên mỗi bản build.

Smoke Testing là quá trình mà phần mềm build đã được triển khai tới môi trường QA và đã được kiểm tra độ ổn định của ứng dụng. Nó cũng được gọi là “Build verification testing”.

Nói 1 cách đơn giản, chúng ta đang xác minh liệu các tính năng quan trọng có đang hoạt động chứ không có danh mục nào trong build mà đang được test.

Nó là 1 bài test hồi quy nhỏ và nhanh của các chức năng chính. Nó là 1 bài test đơn giản cho thấy sản phẩm đã sẵn sàng cho việc test chưa. Điều này giúp xác định xem build có thiếu sót gì không để làm các further testing tránh lãng phí thời gian và tài nguyên.

Code => Unit Testing => Integration Testing => Sanity Testing => Smoke Testing => Funtional Testing

Môi trường staging là gì?

Môi trường staging là gì?

Môi trường staging (stage) là một bản sao gần chính xác của môi trường sản xuất để kiểm thử phần mềm. Môi trường staging được tạo ra để kiểm tra code, các bản build và cập nhật, nhằm đảm bảo chất lượng trong môi trường giống như sản xuất trước khi triển khai ứng dụng.

Môi trường staging yêu cầu một bản sao của cùng cấu hình phần cứng, máy chủ, cơ sở dữ liệu và bộ nhớ cache. Mọi thứ trong môi trường staging phải càng giống với bản sao trong môi trường sản xuất càng tốt, để đảm bảo phần mềm hoạt động chính xác.

Deverlopment => Test => Staging => Production

Các bước để triển khai phần mềm bao gồm phát triển, tích hợp, thử nghiệm và QA (đảm bảo chất lượng), staging (kiểm thử), sản xuất. Việc tìm ra lỗi phần mềm đóng vai trò rất quan trọng đối với hiệu suất. Môi trường staging thử nghiệm ở mức độ gần giống như quy trình sản xuất thực, trong môi trường phi sản xuất và có thể khiến người dùng tự tin hơn nữa về việc sử dụng phần mềm khi sản xuất.

Oxford advanced learner’s Dictionary

Hướng dẫn toàn tập mac

Oxford advanced learner’s Dictionary

perspective

noun

/pəˈspektɪv/

/pərˈspektɪv/

  1. [countable] a particular attitude towards something; a way of thinking about somethingSYNONYM viewpoint

    • a global perspective
    • historical perspective may help us understand the issue.
    • Recent events seem less serious when put into an international perspective.
    • The aim is to offer a fresh perspective.
    •  from a… perspective Try to see the issue from a different perspective.
    •  from the perspective of somebody/something a report that looks at the education system from the perspective of deaf people
    •  perspective on something The exhibition provides us with a unique perspective on her work.

untold

adjective

/ˌʌnˈtəʊld/

/ˌʌnˈtəʊld/

  1. [only before noun] used to emphasize how large, great, unpleasant, etc. something isSYNONYM immeasurable
    • untold misery/wealth
    • These gases cause untold damage to the environment.

 

Tips for javascript

Tips for javascript

Tips for javascript

How to remove DoubleQuote in array of javascript? => JSON.parse

const strnum_arr = [“[1.111,2.222]”, “[20.351,44.33344444]”,”[234.34567,899.123]”];

constparsed = strnum_arr.map(JSON.parse);

 

Class component in Reactjs

Function Component in Reactjs

Class component in Reactjs

không dùng được hàm hook

Phải dùng hàm HOC

        khai báo

render(){

let {history,location,match} = this.props;

return(

const ProfileWithRouter = withRouter(Profile)

export default ProfileWithRouter;

    Gán giá trị. this.props.tenbien

       Mỗi lần chạy lại this.setState({bien:giatri}); hàm render() sẽ được gọi lại

ví dụ :

setTest(){

this.setState({test:this.state.test+1});
};

render(){

//
// let items = [‘admin’,’user’,’other’];
console.log(‘render’,now());
console.log(‘render’,this.state.count++);
return(
<>
{this.state.test>5 && <h1>Đã lớn hơn 5 rồi đó</h1>}
<divclassName=’container center justify-content-center bg-primary’>
<h2className=”justify-content-center center”>Đăng nhập hệ thống TMC ERP </h2>
<hr/>
<div> Name {this.state.user.name}</div>
<div> Email {this.state.user.email}</div>
<ul>
<li><Linkto =”/”className=”btn btn-success”> Home</Link></li>
<li><Linkto =”/admin”className= “k-button k-danger”> Profile</Link></li>
</ul>
<hr/>
<div>
<inputclassName=”k-button k-primary”type=”button”value=”Đăng xuất “onClick={()=>this.logout(history)}/>
<inputclassName=”k-button k-primary”type=”button”value=”Check “onClick={()=>this.setTest()}/>
{this.state.test}
</div>
<hr/>
</div>
</>
)
}
Hàm này sẽ chạy sau render() và chỉ chạy 1 lần mỗi lần reRender() không chạy lại hàm này. componentDidMount(){
console.log(‘did’,now());
// console.log(‘did’,this.state.count++);
this.loadDataProfile();

componentDidUpdate:sẽ chạy ngay sau khi reRender() chạy xong.

componentWillUnmount(){} sẽ chạy ngay lập tức ngay khi tắt component

async componentDidMount(){

const response = await RoutesApi.getAll();

sẽ trả về kết quả trong response

Trường hợp dùng sync bình thường

componentDidMount(){

trả về promise

const response =  RoutesApi.getAll().then((response ) => { xu ly

response

});

 

Function Component in Reactjs

Function Component in Reactjs

Function Component in Reactjs

export default function Profiles(){
const [user,setUser] = useState()
const token = localStorage.getItem(“accessToken”)
let location = useLocation();
console.log(location);
let search = newURLSearchParams(location.search);
console.log(search.get(‘age’));
let history = useHistory()
console.log(history);
let match = useRouteMatch();
console.log(match);
let {name,age} = useParams();
console.log(name);
console.log(age);
useEffect(()=>{loadDataProfile()},[]);

<Route path=”/chay/:name/:age”><Profiles/></Route>

  1. {path: “/chay/:name/:age”, url: “/chay/phovv/99”, isExact: true, params: {…}}
    1. isExacttrue
    2. path/chay/:name/:age
    3. url/chay/phovv/99

<button onClick={()=>history.goBack()}>Back</button>

<button onClick={()=>history.goBack()}>Back</button>
<buttononClick={()=>history.push(‘/admin’)}>Admin</button>
<buttononClick={()=>history.push(‘/chay/anh/45’)}>anh</button>
<buttononClick={()=>history.goForward()}>Forward</button>

Gán giá trị: props.tenbien