Tuesday, February 2, 2021

self-sovereign identity

Nhận dạng kỹ thuật số là một trong những vấn đề lâu đời và khó nhất trên Internet. Trước đây, chưa có cách nào chứng minh thông tin đăng nhập kỹ thuật số là danh tính thực của một người như ở thế giới thực. Cuối cùng điều này đag thay đổi, đầu tiên W3C đag chuẩn hoá định dạng của các thông tin được ký điện tử (digital-signed credentials); thứ hai, mạng lưới blockchain công khai cung cấp hệ thống đăng ký phi tập trung và khám phá khoá công khai cần thiết để xác minh chữ ký số.

 1. Vấn đề

Trong thế giới thực, chúng ta sử dụng các thông tin vật lý để chứng thực định danh. Trong thế giới số, chúng ta không có cách chuẩn nào để xác định thông tin số.

Để xác nhận thông tin số, chúng ta phải giải quyết hai vấn đề:

  • Chuẩn hoá định dạng -> W3C đang chuẩn hoá 
  • Chuẩn hoá cách xác nhận thông tin nguồn và tính toàn vẹn của nó: -> làm thế nào để chuẩn hoá việc xác minh chữ ký số của thông tin người phát hành? -> PKI (public key infrastructure): cồng kềnh, tốn kém, không phân tán ~ thường chỉ có công ty mới mua certificate, nếu root/CA có vấn đề hoặc hệ thống có vấn đề -> ....

2. Giải pháp

- Blockchain mở là một hệ thống phi tập trung của root of trust, không ai sở hữu và mọi người đều có thể sử dụng.

- Blockchain thay thế niềm tin con người bằng niềm tin toán học.

  • Mỗi transaction trong blockchain được ký bởi block ban đầu.
  • Mỗi transaction - đơn hay khối - được móc nối với giao dịch trước đó bởi 1 mã băm kỹ thuật số. Một mã băm kỹ thuật số là một dấu tay điện tử mà có tính duy nhất trên toàn cầu và cực kỳ khó để giả mạo.
  • Các giao dịch được xác nhận sẽ được sao chép sang các máy theo thuật toán đồng thuận.

- Trong hệ thống blockchain, các khoá công khai (publish key) có địa chỉ của nó. Địa chỉ này được gọi là định danh phi tập trung (decentralize identifier) viết tắt là DID - một chuẩn từ W3C. DID cung cấp một cách chuẩn mà các cá nhân hay tổ chức có thể tạo ra một định danh vĩnh viễn, duy nhất trên toàn cầu và có thể xác nhận bằng mã hoá dưới sự cho phép của chủ định danh này.

- DID là nhận dạng số có thể xác minh duy nhất trên toàn cầu đầu tiên mà không yêu cầu cơ quan đăng ký.

  • DID được lưu trên blockchain cùng với:
Khoá công khai - publish key
Các thông tin mà chủ của đinh danh muốn tiết lộ
Địa chỉ mạng cho sự tương tác
  • Chủ định danh kiểm soát thông qua khoá cá nhân - private key.

- 

3. Bài toán ví dụ

Hệ thống trường Faber nơi Alice tốt nghiệp thay đổi thông tin bảng điểm sang kỹ thuật số. Alice đăng nhập vào hệ thống nhà trường để lấy bảng điểm, nhưng cô ấy nhận ra hệ thống này yêu cầu một dạng định danh mới của cô, dạng định danh mới này có tính chất duy nhất trên thế giới, có thể di chuyển được, không phụ thuộc vào quá khứ, tương lai hay một cơ quan quản lý nào, không ai có thể huỷ bỏ được. Đó là dạng định danh Self-Sorvereign Identity.

Khi Alice có định danh mới, cô ấy click vào "nút Get Transcript". Để quản lý Self-Sorvereign Identity sẽ cần có ứng dụng trên máy tính hoặc mobile, nó có thể là một ứng dụng độc lập hoặc nhà cung cấp dịch vụ thứ ba mà sổ cái (Ledger) gọi là "Agency". Hệ thống của trường Faber gợi ý cho Alice cài đặt ứng dụng Indy nếu cô chưa có, ứng dụng này được cài đặt là một phần trong workflow của "nút Get Transcript".

Khi Alice nhấp chuột vào "nút Get Transcript", cô ấy sẽ cài được ứng dụng Indy, mở nó ra và được hỏi có chấp nhận yêu cầu kết nối đến Faber không? Bây giờ chúng ta sẽ xem đằng sau ngữ cảnh đó là gì...?

3.1 Chuẩn bị cơ sở hạ tầng

  1. Xác nhận Faber là Trust Anchor.
  • Trust Anchor là một người hoặc một tổ chức mà sổ cái (ledger) đã được biết, và Trust Anchor có thể bootstrap người hoặc tổ chức khác.
  • Sổ cái mục đích là để lưu trữ "bản ghi định danh" (Identity Record). "Bản ghi định danh" là dữ liệu công khai, nó có thể bao gồm: khoá công khai, service endpoint, lược đồ và sự định nghĩa của thông tin. Mỗi "bản ghi định danh" này được liên kết với chính xác một DID (decentralize identities) có tính duy nhất trên thế giới và có thể đọc được (qua sổ cái) mà không cần bất kỳ cơ quan giải quyết tập trung nào. Một Identity có thể sở hữu nhiều DID.
  • Có 2 loại DID, một là DID xác minh (Verinym) được liên kết với "Legal Identity" của "Identity Owner", nó thường dùng để xuất bản các lược đồ cho các loại tài liệu. Thứ hai, DID bút danh (Pseudonym) dùng để duy trì kết nối giữa 2 Identity. 2 Identity liên lạc với nhau sẽ có 2 Pseudonym được gọi là mã định danh theo cặp duy nhất (Pairwise-Unique Identifier)
  • Việc tạo ra một "bản ghi định danh" (Identity Record) cũng là việc tạo ra một DID mà sổ cái có thể đọc được, quá trình này gọi là giao dịch NYM (NYM transaction)
  • Bước đầu tiên để thực hiện các giao dịch trên sổ cái liên quan đến việc nhận vai trò Trust Anchor trên sổ cái. Như vậy, trường Faber cần lấy vai trò Trust Anchor trên sổ cái của họ để có thể tạo ra DID Verinym và Pairwise-Unique Identifiers để cung cấp dịch vụ cho Alice.
  • Steward là vai trò quản lý đầu tiên trong 1 hệ thống Self-Sovereign Identity, Steward có vai trò Trust Anchor

3.2 Kết nối đến hệ thống, ví dụ Hyperledger Indy

  • Lần đầu tiên, sau khi hệ thống được khởi động, chúng ta cần kết nối đến hệ thống. Chúng ta kết nối đến hệ thống với tư cách là Steward's Agent.
  • Sau khi hệ thống được khởi động nó có một NODE transaction được gọi là "genesis transaction", chúng ta có thể lấy được danh sách các node của hệ thống qua NODE transaction.
  • Cấu hình về nhóm các node được đinh nghĩa là một cặp: "name": json.({"key1": "value1", ...}) và trường quan trọng nhất trong {"keyN": "valueN"} là đường dẫn tới file lưu trữ "genesis transaction"
  await pool.set_protocol_version(2) 
  pool_ = {'name': 'pool1'}
  pool_['genesis_txn_path'] = get_pool_genesis_txn_path(pool_['name'])
  pool_['config'] = json.dumps({"genesis_txn": str(pool_['genesis_txn_path'])})
  await pool.create_pool_ledger_config(pool_['name'], pool_['config'])
  pool_['handle'] = await pool.open_pool_ledger(pool_['name'], None)
  • Steward's Agent sẽ có quyền sở hữu DID cái mà có NYM transaction tương ứng với vai trò Steward trên sổ cái. Khi cấu hình hệ thống, chúng ta phải định nghĩa một số thông tin liên quan đến NYM transaction, một trong số đó là các giá trị "seed". Các giá trị "seed" này là 1 số ngẫu nhiên, cho phép khôi phục lại DID ở Steward's Agent.
# Steward Agent
  steward = {
      'name': "Sovrin Steward",
      'wallet_config': json.dumps({'id': 'sovrin_steward_wallet'}),
      'wallet_credentials': json.dumps({'key': 'steward_wallet_key'}),
      'pool': pool_['handle'],
      'seed': '000000000000000000000000Steward1'
  }
  
  await wallet.create_wallet(steward['wallet_config'], steward['wallet_credentials'])
  steward['wallet'] = await wallet.open_wallet(steward['wallet_config'], steward['wallet_credentials'])
  
  steward['did_info'] = json.dumps({'seed': steward['seed']})
  steward['did'], steward['key'] = await did.create_and_store_my_did(steward['wallet'], steward['did_info'])

3.3 Faber thiết lập kết nối đến Steward

  • Mỗi kết nối có một Pairwise-Unique Identity (các DID mù). Mỗi bên sở hữu một Pseudonym DID, cả hai bên đều biết Pseudonym của nhau và không chia sẻ được cho bên khác.
  • Steward tạo DID mới trong ví (wallet) để sử dụng trong tương tác bảo mật với duy nhất Faber
# Steward Agent
(steward['did_for_faber'], steward['key_for_faber']) = await did.create_and_store_my_did(steward['wallet'], "{}")
  • Steward gửi giao dịch NYM tương ứng đến sổ cái (khả năng sổ cái này của Steward???)
# Steward Agent
nym_request = await ledger.build_nym_request(steward['did'], steward['did_for_faber'], steward['key_for_faber'], None, role)
await ledger.sign_and_submit_request(steward['pool'], steward['wallet'], steward['did'], nym_request)
  • Steward tạo yêu cầu kết nối đến Faber
 # Steward Agent
connection_request = {
    'did': steward['did_for_faber'],
    'nonce': 123456789
}
  • Steward gửi yêu cầu kết nối đến Faber (có thể là qua mail, phone, hoăc ...??? không thấy mô tả)
  • Faber nhận yêu cầu kết nối và sau đó tạo sổ cái, nếu nó chưa tồn tại trên Faber Agent
# Faber Agent
await wallet.create_wallet(faber['wallet_config'], faber['wallet_credentials'])
faber['wallet'] = await wallet.open_wallet(faber['wallet_config'], faber['wallet_credentials'])
  • Faber tạo DID mới trong ví để sử dụng trong tương tác bảo mật với Steward
# Faber Agent
(faber['did_for_steward'], faber['key_for_steward']) = await did.create_and_store_my_did(faber['wallet'], "{}")
  • Faber tạo yêu cầu kết nối với Steward
# Faber Agent
connection_response = json.dumps({
    'did': faber['did_for_steward'],
    'verkey': faber['key_for_steward'],
    'nonce': connection_request['nonce']
})
  • Faber hỏi sổ cái về khoá xác minh (verkey) của DID của Steward
# Faber Agent
faber['steward_key_for_faber'] = await did.key_for_did(faber['pool'], faber['wallet'], connection_request['did'])
  • Faber mã hoá ẩn danh phản hồi kết nối bằng khoá xác minh của Steward
# Faber Agent
anoncrypted_connection_response = await crypto.anon_crypt(faber['steward_key_for_faber'], connection_response.encode('utf-8'))
  • Faber gửi phản hồi kết nối được mã hoá ẩn danh đến Steward (không thấy mô tả)
  • Steward giải mã ẩn danh phản hồi kết nối này
# Steward Agent
decrypted_connection_response = \
    (await crypto.anon_decrypt(steward['wallet'], steward['key_for_faber'], anoncrypted_connection_response)).decode("utf-8")
  • Steward chứng thực Faber bằng cách so sánh Nonce
# Steward Agent
assert connection_request['nonce'] == decrypted_connection_response['nonce']
  • Steward gửi giao dịch NYM của DID của Faber tới sổ cái (quá trình tạo DID trên sổ cái gọi là giao dịch NYM). Chú ý, mặc dù Steward là người gửi giao dịch này, chủ sở hữu DID sẽ là Faber vì nó sử dụng khoá xác minh mà Faber cung cấp
# Steward Agent
nym_request = await ledger.build_nym_request(steward['did'], decrypted_connection_response['did'], decrypted_connection_response['verkey'], None, role)
await ledger.sign_and_submit_request(steward['pool'], steward['wallet'], steward['did'], nym_request)





Đại học Harvard chỉ ra 4 sai lầm của cha mẹ khiến con kém thông minh

 Không ăn sáng, thiếu ngủ

Số liệu khảo sát trên 12000 học sinh tiểu học cho thấy: Điểm trung bình của học sinh ăn sáng hàng ngày cao hơn học sinh không thường xuyên ăn sáng.

Trẻ ăn sáng thường xuyên có chỉ số IQ cao hơn trẻ không ăn sáng. Do một bữa ăn sáng lành mạnh sẽ cung cấp carbohydrate thiết yếu, giúp não bộ hoạt động bình thường, cải thiện sự tỉnh táo và tập trung của não bộ.

Nếu trẻ không ăn sáng, lúc 9-10h, trẻ sẽ thấy rất đói, não bộ không tập trung, điều này sẽ ảnh hưởng đến trạng thái học của trẻ, theo đó ảnh hưởng đến điểm số.

Ngoài thói quen ăn uống, thiếu ngủ cũng có thể ảnh hưởng đến chỉ số IQ của trẻ.

Có một "Thí nghiệm về giấc ngủ của Sadf", chia 77 học sinh lớp 4 và lớp 6 thành hai nhóm: nhóm thứ nhất ngủ nhiều hơn bình thường nửa tiếng, và nhóm thứ hai ngủ ít hơn bình thường nửa tiếng.

Đại học Harvard chỉ ra 4 sai lầm của cha mẹ khiến con kém thông minh - Ảnh 2

Trẻ thiếu ngủ ảnh hưởng tới kết quả học tập.

Bốn ngày sau, một cuộc kiểm tra chức năng thần kinh đã đưa ra kết luận đáng ngạc nhiên: Một học sinh lớp sáu thiếu ngủ có kết quả xấp xỉ bằng một học sinh lớp bốn. Nói cách khác, ngủ ít hơn một tiếng đồng hồ bằng cả hai năm học tập và phát triển!

Trẻ ngủ không đủ giấc, ngủ gật trong lớp sẽ ảnh hưởng nghiêm trọng đến trạng thái nghe của trẻ và từ đó ảnh hưởng đến kết quả học tập của trẻ. Đầu óc không tỉnh táo luôn chệnh choạng, tư duy não bộ trong trạng thái ức chế, không thể hưng phấn được, cũng sẽ ảnh hưởng đến hiệu quả học tập, hình thành một vòng luẩn quẩn.

Có thể thấy, ăn uống không điều độ, thiếu ngủ sẽ ảnh hưởng đến trí não của trẻ. .

Các bậc cha mẹ phải cố gắng hết sức để đảm bảo chất lượng bữa sáng và chất lượng giấc ngủ của con mình, đồng thời tránh cho con cái họ rơi vào thói quen của chính chúng.

Bạo lực ngôn ngữ của cha mẹ làm giảm chỉ số IQ của trẻ

Năm 2009, nhóm nghiên cứu của Giáo sư Harvard Techer đã phân tích não của những người trẻ tuổi và phát hiện ra rằng những người thường xuyên bị cha mẹ bạo hành bằng lời nói nghiêm trọng đã làm giảm mối liên hệ giữa vùng Wernicke và thùy trán, ảnh hưởng đến chỉ số IQ ngôn ngữ.

Đồng thời, việc quát mắng cũng làm giảm trí nhớ của trẻ, dẫn đến não trái và não phải phát triển không hoàn thiện, từ đó ảnh hưởng đến chỉ số IQ. Nếu quan sát kỹ, bạn sẽ thấy rằng khi bạn hét lên, phản ứng của trẻ nhìn chung là đờ đẫn, nhìn thẳng và mất hồn. Ngay cả khi bạn la mắng, trẻ vẫn không biết phải làm gì. Thậm chí bạn càng làm vậy, trẻ càng mắc nhiều lỗi hơn.

Đại học Harvard chỉ ra 4 sai lầm của cha mẹ khiến con kém thông minh - Ảnh 3

Trẻ em bị ảnh hưởng bởi những lời quát mắng của cha mẹ. Ảnh minh họa

Bởi vì, trước những lời mắng mỏ của cha mẹ, tâm trí của trẻ căng thẳng cao độ, trong lòng đầy lo sợ.  Nếu để trẻ ở trạng thái này lâu, trẻ sẽ trở nên ngỗ ngược, chậm chạp trong hành vi và càng ngày càng “đơ” hơn.

Cha mẹ nên học cách kiểm soát cảm xúc của mình. Nếu bạn thấy mình đang nổi cơn thịnh nộ, hãy rời khỏi phòng ngay lập tức, ở một mình một lúc, bình tĩnh lại trong 10 phút và sau đó giao tiếp với con cái. Còn hơn là mắng mỏ trẻ không tiếc lời.

Thường xuyên đàn áp và “dán nhãn tiêu cực” cho trẻ

"Đồ vô dụng", "Sao dốt thế"? "," Anh là con lợn à?” … Trên thực tế, những lời này thường xuyên trấn áp tinh thần trẻ và gán cho chúng cái nhãn mình rất ngu ngốc.

Về mặt tâm lý, khi một người bị dán nhãn, anh ta sẽ tự quản lý ấn tượng của bản thân và làm cho chính mình Hành vi phù hợp với nội dung của nhãn. Đây là hiệu ứng "nhãn" nổi tiếng,

Nhà tâm lý học người Mỹ Becol cũng chỉ ra rằng: “Một khi mọi người bị dán nhãn với một loại nhãn nào đó, họ sẽ trở thành người bị nhãn đó dán nhãn”.

Trẻ còn nhỏ, chưa hình thành khả năng tự đánh giá, khả năng suy nghĩ độc lập, còn phụ thuộc nhiều vào cha mẹ nên rất đồng tình với sự đánh giá của cha mẹ về mình.

Đại học Harvard chỉ ra 4 sai lầm của cha mẹ khiến con kém thông minh - Ảnh 4

Trẻ cần được khen ngợi, động viên, khích lệ.

Những nhãn mác mà cha mẹ đặt cho trẻ sẽ trở thành nguồn tham khảo quan trọng để trẻ hình thành tính tự giác. Một khi trẻ chấp nhận gợi ý về cái mác “ngu ngốc” của cha mẹ, đứa trẻ sẽ tự phát triển theo hướng của cái nhãn đó, biến mình thành một đứa trẻ “ngu ngốc”.

Vì vậy, cha mẹ phải Từ chối tất cả các nhãn. Nếu con gặp khó khăn, mẹ hãy nói rõ con sai ở đâu, đúng ở đâu và cách cải thiện trong tương lai.

Đối với những hành vi sai trái không đáng có, cha mẹ nên giảm nhẹ cách xử lý, không nên quá chú ý, tránh để trẻ tạo ấn tượng sâu sắc về hành vi sai trái và hình thành những tín hiệu tiêu cực.

Không thích đọc

Nhà giáo dục Suhomlins từng nói "Tại sao một số trẻ em thông minh và lanh lợi trong thời thơ ấu, nhưng lại trở nên thiếu linh hoạt khi còn trẻ? Bởi vì chúng không biết đọc! ".

Ông cho rằng sự phát triển trí tuệ của học sinh phụ thuộc vào khả năng đọc tốt, đọc không giỏi, tư duy chưa tốt. Một đứa trẻ không biết đọc là học sinh kém tiềm năng trong học tập.

Trẻ em khi chưa hình thành thói quen đọc khi học lớp 1 và lớp 2, sẽ cảm thấy rằng chúng không có đủ vốn từ, không thể nhóm các từ và tạo thành câu, không thể đọc văn bản và không thể hiểu các chủ đề.

Đứa trẻ không hình thành thói quen đọc những bài văn dài trước lớp 4, không đủ kiên nhẫn để đọc xong một cuốn tiểu thuyết, rất có thể sẽ không thể phát triển được tính kiên nhẫn trong suốt cuộc đời.

Nhà văn Lin Yutang, Trung Quốc từng nói: “Những người không có thói quen đọc sách đều bị giam hãm bởi thế giới trước mắt”.

Đại học Harvard chỉ ra 4 sai lầm của cha mẹ khiến con kém thông minh - Ảnh 5

Cần nuôi dưỡng khả năng đọc của trẻ. Ảnh minh họa

Những người không thích đọc sách có tầm nhìn hạn chế, họ không thể nhìn thấy thế giới rộng lớn hơn, đa dạng hơn. Việc trao đổi ý kiến, họ không thể có được những kiến ​​thức mới nhất và bị trì trệ. Những người này có tầm nhìn hạn hẹp, cấu trúc nhỏ, tư duy hạn hẹp và kiến ​​thức hạn chế.

Theo sự tích lũy của thời gian, những người thích đọc và những người không thích đọc, lượng kiến ​​thức, sẽ có sự khác biệt đáng kể tùy theo độ sâu và chiều cao của vấn đề, đó là sự khác biệt giữa những gì chúng ta gọi là "ngu ngốc" và "thông minh".

Nghiên cứu cho thấy, 98% trẻ em có chỉ số IQ tương tự, và chỉ 1% trẻ em là thiên tài. Và 98% những đứa trẻ này ở những nền giáo dục khác nhau thì chỉ số IQ lại xuất hiện sự khác biệt rõ ràng.

Vì vậy, là bậc cha mẹ, khi phàn nàn rằng con mình đã trở nên kém cỏi, tốt hơn là hãy tìm hiểu nội tâm xem cách giáo dục của bạn đã ổn chưa.

source: www.doisongphapluat.com

Thursday, December 24, 2020

AWS Api Gateway & Lambda

1. Create lambda function

    - add header "Access-Controll-Allow-Orgin: '*'" in response.

2. Create new api gateway

3. Create Resource

    - Enable API Gateway CORS: tick

4. Create Method

    - Integration Type: lambda function

    - Use Lambda Proxy Integration: tick

    - Lambda Function: enter lambda function name

    - Save

5. Mapping Template

{
  "method": "$context.httpMethod",
  "body" : $input.json('$'),
  "headers": {
    #foreach($param in $input.params().header.keySet())
    "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "queryParams": {
    #foreach($param in $input.params().querystring.keySet())
    "$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "pathParams": {
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end

    #end
  }  
}

Sunday, November 29, 2020

Shouldn’t Use OFFSET and LIMIT For Your Pagination

This is what you should use: 

"Select column1, column2, ..., columnN from table where IDX > 1000 limit 20

Why? Because by explicitly passing the latest read row, you are telling your DB exactly where to start the search base on an efficient indexed key and won't have consider any rows outside of the range.

https://medium.com/swlh/why-you-shouldnt-use-offset-and-limit-for-your-pagination-4440e421ba87 

Monday, September 28, 2020

Vì sao emails gửi đi lại bị đánh dấu là spam.

 Vừa rồi tôi có setup 1 hệ thống mail server cho công ty dùng để test. Tuy nhiên, việc gửi đến các địa chỉ mail như gmail, hotmail, yahoo đều bị đánh dấu spam, thậm chí khi gửi mail từ địa chỉ khác vào mail server này thì không thấy nhận được.

 Sau nửa ngày tìm hiểu thì đã giải quyết được vấn đề, lý do là thiếu thông tin chứng thực về địa chỉ mail này, đó là DomainKeys Identified Mail (DKIM) và Sender Policy Framework (SPF)

DKIM là chuẩn cho phép người gửi sử dụng chữ ký số ký vào mail của họ. Sau đó mail server sẽ sử dụng chữ ký này để đảm bảo nội dung không bị thay đổi trong quá trình gửi bởi một bên thứ ba nào đó. Xem cách cấu hình DKIM ở đây

SPF là chuẩn thẩm định email được thiết kế để ngăn chặn email giả. Cấu hình DNS với SPF sẽ nói cho mail server khác biết mail server này đã được cho phép gửi email. Xem cách cấu hình SPF ở đây 


Thursday, September 3, 2020

Postfix

1. add into /etc/postfix/main.cf file;

relayhost = [domain.com]:25

smtp_sasl_auth_enable = no

smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd

smtp_sasl_security_options = noanonymous

smtp_tls_CAfile = /etc/postfix/cacert.pem

smtp_use_tls = yes

save and close

2. add login credentials into /etc/postfix/sasl/sasl_passwd

domain.com email@domain.com:password

save and close

3. create hash database from sasl_passwd file

sudo postmap sasl_passwd

sudo chmod 640 /etc/postfix/sasl/sasl_passwd

sudo chmod 640 /etc/postfix/sasl/sasl_passwd.db

4. test send mail.

echo "Tested" | mailx -r email@domain.com -s "Testing Gmail Relay2" email2@domain.com


5. Tips:

http://www.postfix.org/TUNING_README.html#mailing_tips

https://wiki.deimos.fr/Postfix:_limit_outgoing_mail_throttling

https://www.howtoforge.com/community/threads/limit-outgoing-number-of-messages-in-postfix.41131/



Saturday, August 22, 2020

Nếu con xem sex

 Hôm nay bố viết cho con lá thư đầu tiên vì muốn có một cuộc nói chuyện giữa những người đàn ông với nhau.


Đầu tiên xin chúc mừng con trai, con đã lớn và không còn là cậu bé như bố vẫn hình dung nữa. Mặc dù trước đó bố luôn nghĩ con vẫn còn là một đứa trẻ, nhưng thực sự con đã bước vào tuổi dậy thì và tò mò về một số điều chưa biết. Điều này khiến bố vừa vui mừng, vừa lo lắng.


Mừng vì con đã lớn rồi. Tuổi mới lớn tò mò nam nữ là chuyện thường, không tò mò mới là bất thường.


Nhưng lo là liệu con có thể vượt qua giai đoạn tăng trưởng này một cách an toàn và khỏe mạnh không? Đừng xấu hổ, bố cũng từng trải qua thời kỳ như con, vì vậy bố có thể hiểu con rất nhiều.


Mọi người khi bước vào tuổi dậy thì, do sự phát triển thể chất sẽ tò mò tìm hiểu kiến thức giới tính, đây là phản ứng tâm lý bình thường.


Tuy nhiên không nên vào các trang web khiêu dâm để lấy kiến thức tình dục. Một là khả năng nhận thức và phán đoán của con vẫn chưa phát triển hoàn thiện. Con dễ bị đánh lừa bởi những thông tin sai lệch, điều này sẽ gây ra áp lực tâm lý nhất định.


Con phải biết rằng kiến thức về tình dục trên các trang web khiêu dâm là không khoa học. Nó chứa đựng một mức phóng đại và xuyên tạc nhất định. Điều này sẽ khiến con hiểu lầm.


Thứ hai, khả năng tự chủ của con sẽ không được đảm bảo. Một khi đã nghiện trải nghiệm khoái cảm của tình dục, con sẽ sa đà vào nó khiến tâm trí đầy mâu thuẫn và đau đớn.


Một số người tìm những video này để giải tỏa tâm lý trống trải hoặc trút bỏ áp lực học tập. Tuy nhiên sau khi giải tỏa được, họ sẽ hối hận, thậm chí tự trách về hành động của mình.


Những điều này rất bất lợi cho sự phát triển thể chất và tinh thần của con. Vì vậy khi bối rối về tình dục, con có thể tìm một số kênh tham khảo hợp lý. Ví dụ hãy hỏi bố. Bố là một người đàn ông và là người đáng để con tin tưởng.


Ví dụ khác, hãy tìm câu trả lời từ những cuốn sách liên quan. Những cuốn sách về tâm sinh lý tuổi dậy thì mà bố tặng con trước đây là một kho báu rất tốt đó!


Bố muốn nói với con một vài điểm như sau:


1. Tình dục giống như ăn và thở, cũng không phải là thứ bẩn thỉu, đó là bản năng của con người và không đáng để tò mò quá mức.


Bố cũng đến từ thời niên thiếu, cũng từng tò mò về kiến thức giới tính. Thời điểm đó chưa có internet, bố bí mật vào phòng xem phim khiêu dâm với các bạn nam khác.


Lần đầu được xem, bố cũng rất phấn khích và không kìm được... Tuy nhiên sau khi xem vài lần, bố cảm thấy vô nghĩa và buồn tẻ.


Học lực của bố sa sút trông thấy. Sau này bố đã kịp thời điều chỉnh bản thân, dồn hết tâm trí vào việc học và không bao giờ nghĩ đến những hình ảnh đó nữa.


Nhưng không phải ai cũng như bố. Một bạn nam trong lớp, người cùng xem những bộ phim khiêu dâm đó đã "ăn trái cấm" với một bạn nữ. Và sau đó cô gái có thai.


Hai người họ cuối cùng đều bỏ học vì xấu hổ và cô gái được đưa đến bệnh viện để phá thai.


Vì sự thiếu hiểu biết và mê muội về tình dục, hai đứa trẻ đã phạm phải những sai lầm khiến họ phải ân hận suốt đời.


Tò mò nhất thời, đánh mất tương lai, rối tung cả đời.


Con có nghĩ rằng đó là giá trị của việc xem phim khiêu dâm?


2. Quan hệ nam nữ là bình thường, nhưng không được quan hệ tình dục với trẻ em gái vị thành niên.

Vì lúc này tâm sinh lý, kinh nghiệm xã hội, điều kiện kinh tế... của các con còn non nớt, chưa thể gánh chịu hậu quả của việc quan hệ tình dục.

Khi cảm thấy mình có xung động tình dục, con nên chuyển hướng chú ý ngay lập tức như chơi bóng, nghe nhạc, đọc sách, ... để các xung động vật lý được chuyển tải và giải phóng.

Hãy nhớ rằng quan hệ nam nữ chỉ nên xảy ra khi họ đã trên 18 tuổi.

3. Hạnh phúc thực sự dựa trên một cuộc sống ổn định và tình yêu tận tâm.

Các con còn nhỏ tuổi nên chưa thích hợp để yêu như người lớn.

Yêu sớm có hại, vì vậy con phải học cách bảo vệ mình và người khác, từ chối những lời dụ dỗ xấu và đối xử khôn ngoan.

4. Con à, tuổi mới lớn là thời kỳ trưởng thành quan trọng của con người. Trong thời kỳ này, tâm lý con người phải hoàn thành một bước chuyển biến rất lớn từ thời thơ ấu đến khi trưởng thành.

Trong lúc đó phải đề cao cảnh giác và kiềm chế, đề phòng tình dục mê muội. Đừng bao giờ sa đà, kẻo làm chuyện phiếm khiến cả đời ân hận.

Con cần có tầm nhìn dài hạn, thời học sinh phải xác định rõ mục tiêu của mình, tập trung nhiều hơn vào việc học, trau dồi năng lực và phẩm chất toàn diện của bản thân, vào các hoạt động tập thể khác nhau.

Khi con trưởng thành, có khả năng giải quyết các vấn đề cá nhân, con có thể chuẩn bị cho việc lựa chọn vợ trong tương lai và kết hôn.

Con à, cuối cùng bố muốn nói "Bố xin lỗi con", bố đã dùng cớ "bận" để bỏ qua sự trưởng thành của con và không hoàn thành trách nhiệm giáo dục.

Trong tương lai, bố sẽ đồng hành cùng con nhiều hơn và cùng con đối mặt với những khó khăn mới.

Bố cũng tin rằng con trai bố có thể sống tốt qua giai đoạn khủng hoảng này.

Hãy nhớ rằng, bảo vệ bản thân và tôn trọng phụ nữ sẽ là một chủ đề mới trong cuộc sống của con.

Chúc con sớm trưởng thành!

Yêu con".







https://vnexpress.net/12h-dem-phat-hien-con-trai-xem-phim-khieu-dam-4148458.html