Thứ Ba, 28 tháng 7, 2020

Dòng Sông Mẹ - Hạ Đỏ Bích Phượng

Dòng Sông Mẹ
Sáng tác: Hạ Đỏ Bích Phượng

Có phải con lắng nghe lời ru của mẹ
Có phải con hóa thân từ vòng nôi mẹ
Mẹ xinh đẹp, mẹ hiền hòa
Nhưng mẹ long đong theo vận nước
Vì mẹ hy sinh, mẹ nuôi con theo dòng đời nổi trôi

Có phải con lớn lên từ vòng tay mẹ
Có phải con đứng lên từ dòng sông mẹ
Mẹ dịu dàng, mẹ nhân hậu
Nhưng mẹ cô đơn theo dòng nước
Vì thuyền trôi, bao lần đến rồi bao lần ra đi
Mẹ là dòng sông sáng ngời tình quê hương
Mẹ là dòng sông lấp đầy giọt nước mắt yêu thương
Dù đục dù trong sông mẹ là nguồn nhẫn tâm
Nụ cười mẹ tươi dù có đau buồn âm thầm
Mẹ ơi mẹ ơi dòng sông mênh mông khói sương
Mẹ ơi tóc mẹ bạc dõi ánh tà dương
Mẹ hỡi sông mẹ như gươm sáng cho con soi đường
Để con thấy bình yên lung linh ánh mặt trời

Có phải con hát lên từ dòng sông mẹ
Có phải con khát khao được ngàn năm yêu mẹ
Mẹ diễm tuyệt, mẹ độ lượng
Mẹ giang tay nối kết bao tình yêu
Vì mẹ là dòng sông, dòng sông huyền nhiệm mẹ ơi
Vì mẹ là dòng sông, dòng sông huyền nhiệm mẹ ơi

Thứ Ba, 27 tháng 8, 2019

Mẹo cấp IP cho máy ảo tải trên mạng và import vào Virtualbox



  • Gán thêm một Host-only network adapter cho máy ảo.
  • Xóa hết các rules và reboot để OS tự tạo lại.
sudo rm /etc/udev/rules.d/*.rules
  • Chỉnh DHCP trước và test, có thể có nhiều eth, xem trong rule.
sudo nano /etc/network/interfaces
 

auto eth0
iface eth0 inet dhcp
 

auto eth1
iface eth1 inet dhcp
# ...

  • Sau đó có thể cấp IP tĩnh
https://tdapower.wordpress.com/2010/12/07/add-static-ip-address-to-ubuntu-10-04-server/

Thứ Tư, 3 tháng 7, 2019

Guitar ký sự

Ghi chú:
-: nghỉ 

  • Slow Surf

Rải: B 3 21 3
Quạt: XUỐNG - XUỐNG XUỐNG LÊN

  • Fast Surf
Rải: B 3 2 3 1 3 2 3
Quạt: XUỐNG - XUỐNG LÊN - LÊN XUỐNG LÊN

  • Ballad

XUỐNG - - - XUỐNG - - LÊN - LÊN XUỐNG - XUỐNG LÊN XUỐNG LÊN

  • Disco

XUỐNG LÊN CHẶT LÊN - LÊN CHẶT LÊN

  • Blue
Rải:  B 32 B 21
B 321 ĐẬP B321 - 321 ĐẬP B

Thứ Sáu, 21 tháng 6, 2019

Cypress Gathering

 
  • Read a file that maybe not exist
https://docs.cypress.io/api/commands/task.html#Read-a-file-that-might-not-exist


  • Add timeout when checking for element


cy.get('.selector', {timeout: 5000});


  • Wait to be redirected to new location


cy.url({timeout: 15000}).should('contain', '/new-location');


Cách truyền tham số có tên (named arguments) khi chạy file .bat (Windows)


Việc sử dụng tham số có tên thay vì tham số thứ tự tăng tính trực quan, dễ sử dụng cho các tool thực thi, trải dài từ các script bash, Python, Node.js và cả Windows .bat

Với ví dụ, để truyền hai tham số EMAIL và PASSWORD vào .bat script, từ Command Prompt (CMD) ta chạy như sau

run-tool.bat "EMAIL=sample@gmail.com" "PASSWORD=secret"

Nội dung của run-tool.bat:

set EMAIL=
set PASSWORD=

set %1
set %2

echo EMAIL: %EMAIL%
echo PASSWORD: %PASSWORD%

Giải thích:

set %1
set %2

Khi chạy run-tool.bat "EMAIL=sample@gmail.com" "PASSWORD=secret"

%1 do bat hỗ trợ đọc được sẽ là "EMAIL=sample@gmail.com"
set %1 tương đương set "EMAIL=sample@gmail.com"
Tức là set biến môi trường EMAIL với giá trị sample@gmail.com.
Lúc đó ta truy cập được giá trị (echo %EMAIL%)

Tương tự với PASSWORD thông qua %2

2 câu set tham số về rỗng nhằm đảm bảo mỗi lần chạy script giá trị hiện tại của biến được xóa sạch đi.
set EMAIL=
set PASSWORD= 

Như vậy bằng cách dùng set, tận dụng %1, %2, %3... ta có thể để nó set giá trị các biến môi trường và tool có thể bắt đầu sử dụng chúng.

Bài viết được viết theo trải nghiệm và tham khảo chính từ Stackoverflow

Dòng sông Seine và một số bài hát được nhắc đến

 
  • Mùa Thu Không Trở Lại (Phạm Trọng Cầu)
Nghe rơi bao lá vàng
Ngập dòng nước sông Seine
Mưa rơi trên phím đàn
Chừng nào cho tôi quên

  • Nhạt Nhòa (Tuấn Khanh)
Em, tại sao em lại tiếc nuối
Ôi đường đèn giòng sông SEINE
Chứng cuộc tình chúng mình


  • Bài Thơ Không Đoạn Kết (Lam Phương)
...
Một cuộc tình tan giữa sông Seine   
...

  • Paris Có Gì Lạ Không Em (Ngô Thụy Miên) 
Paris có gì lạ không em?
Mai anh về giữa bến sông Seine
Anh về giữa một giòng sông trắng
Là áo sương mù hay áo em?

Thứ Hai, 27 tháng 5, 2019

Tăng tốc mysqldump

Nên dùng Schema Inspector để biết được kích thước của từng bảng trong CSDL. Sau đó chạy mysqldump riêng rẽ dump ra từng bảng, pipe output qua nén gzip để giảm thiểu kích thước.

mysqldump -u <username> -p <database_name> <target_table> | gzip > ~/<target_table.gzip>

Dump tất cả các bảng ngoại trừ một số bảng:

mysqldump -u <username> -p <database_name> --ignore-table=<db_name.table_name> --ignore-table=<db_name.other_table_name> ... | gzip > ~/remaining_tables.gzip

Tham khảo thêm:  https://stackoverflow.com/questions/425158/skip-certain-tables-with-mysqldump

Thứ Hai, 20 tháng 5, 2019

Speak English Professionally: -ed and -s endings




VOICED & VOICELESS
Sounds with vocal chord vibration are voiced and sounds without vocal chord vibration are voiceless.

Contrast the sounds of the letters v and f. Place your fingers on your throat and make the sounds. You should feel a vibration when you make the v sound and no vibration when you make the f sound. V is voiced and f is voiceless.

  • The Voiced Sounds in English
b d g j l m n ŋ(ng) r v z ð(th in the) and all vowels
  • The Voiceless Sounds in English
ch f h k p s sh t θ(th in think)

Ref: eflnet.com



-ED ENDINGS

  • /id/ after /t/ or /d/
invited
educated
waited
landed
handed
located
predicted

  • /t/ after voiceless sounds

laughed
locked
looked
finished
crashed
picked
embarrassed

  • /d/ after voiced sounds
worried
called
turned
prepared
rearranged
played

-S ENDINGS

  • /s/ after voiceless sounds (except /s/, /ʃ/, /ʧ/)
compliments
hopes
meets
laughs
months
writes
parents


  • /z/ after voiced sounds (except /z/, /ʒ/, /ʤ/)
clothes  (th - ð)
magazines
saves
feels
drives
friends
feathers
  • /iz/ 
raises
horses
finishes
changes
rises
taxes
washes
dishes
kisses


Source: 

Thứ Hai, 13 tháng 5, 2019

Speak English Professionally: Group Discussion Language (agree/disagree, clarify, interrupt/take a turn, include others)

Image result for group discussion

Ways to agree:
  • Yes, I agree.
  • It looks good to me.
  • I think so, too.
  • I definitely agree.

Ways to disagree:
We want show different levels of disagreement (positive, little or very serious).

  • I'm afraid I don't agree.
  • I'm sorry, but I don't agree.
  • That's interesting. But I'd prefer something different.
  • Actually, I disagree

Ways to clarify info:
Sometimes you missed the info or you didn't really understand or didn't hear clearly... So you can ask to clarify the information.
  • Excuse me, I didn't hear that. Could you say it again?
  • Sorry, I missed what you just said. Could you repeat that please?
  • I'm sorry, could you explain that again?
  • Excuse me, could you tell me what that means?
Ways to take a turn/interrupt:
  • Excuse me. Can I say something here?
  • Could I interrupt you for a minute?
  • Sorry to interrupt, but I'd like to say something here.
 Ways to include others:
  • So what do you think?
  • Can you give me your thoughts on this?
  • Do you agree?
  • What's your opinion?

Recap:
We can mix these above languages and use it for your better group discussions.

Reference: Cousera

Speak English Professionally: Pronuncation

STRESS

Word stress: 
  • Every word has stress on a syllable.
  • Pronounce louder, longer on the stressed syllable.

Examples:

  1. pronounce (/prəˈnaʊns/)
  2. answer (/ˈænsɚ/ )
  3. mirror (/ˈmirɚ/)
  4. confused (/kənˈfjuːzd/)
  5. piano (/piˈænoʊ/)
  6. finally (/ˈfaɪnl̟i/)
  7. garbage (/ˈgɑɚbɪʤ/)
  8. personality (/ˌpɚsəˈnæləti/)
  9. relationship (/rɪˈleɪʃənˌʃɪp/)
  10. Japanese (/ˌʤæpəˈniːz/)
  11. computer (/kəmˈpjuːtɚ/)
  12. technique (/tɛkˈniːk/)
  13. refrigerator (/rɪˈfrɪʤəˌreɪtɚ/)
  14. attention (ˈtɛnʃən/)
  15. unfortunately (/ˌʌnˈfoɚtʃənətli/)
Sentence stress:
  • Stress (louder, longer, higher) on content words (words build the meaning for sentence): verbs, nouns, adjectives, adverbs, Wh-words, negative words (no, can't, not).
  • Do not stress "structure" words (softer, shorter, lower): prepositions, pronouns, articles, modals, auxiliaries (can, should, have, be).
Examples:

1. Can I borrow a pen? (2 beats)
2. I’m going to the bank. (2 beats)
3. Tell her I’ll be late. (2 beats)
4. Let’s go to a movie. (3 beats)
5. The pizza party is today. (3 beats)
6. Thanks for the birthday gift. (3 beats)
7. John studied for hours. (3 beats)
8. John studied four hours. (4 beats)
9. The key to the door is there. (3 beats)
10. I’m leaving on Monday for my country. (3 beats)

INTONATION (Ngữ điệu, rhythm)
  • Rises in Yes-No questions. Rises on the last word of the question.

Are you going to take a trip next year?
Is your friend going to drive with us?
Will the homework assignment take a lot of time?
Can the consulate help you with your visa problem?
Could you please give me your cell phone number?
Would you like a piece of pie?
Have you paid your rent this month?
Will you be able to go to the game with us?
Do you have any plans for the weekend?

  • Rises and fall in statements and Wh-questions 



I’m planning a vacation in Florida.
My friend is going to drive to New York with us.
The homework assignment won’t take much time.
The weather in my country is hot and humid.
My family hasn’t done much traveling.
Why do you want my phone number?
Where should I go for help with my visa problem?
What kind of desserts do you have?
Who are you going to the football game with?
When do you have to pay your rent?
How much will I pay for a good used car?




Reference: Coursera

Thứ Năm, 9 tháng 5, 2019

Phân biệt thẻ nhớ SD, SDHC, SDXC

Sự khác biệt đơn giản là ở dung lượng lưu trữ mà thẻ được gắn nhãn có thể hỗ trợ.

SD: 128MB - 2GB.
SDHC (SD High Capacity): 4GB - 32GB.
SDXC (SD eXtended Capacity): 64GB - 2TB.

Trên các thiết bị điện thoại, camera sẽ có đặc tả kĩ thuật hoặc logo in SD, SDHC, hay SDXC nhằm chỉ báo thiết bị đó hỗ trợ thẻ nhớ dung lượng tối đa là bao nhiêu.

Cài đặt Google Play Store cho Amazon Kindle Fire



Các dòng Amazon Kindle Fire gần đây sẽ dùng Fire OS 6 ~ tương đương Android 7.1.

Việc cần làm là tìm các file APK cần thiết để cài Play Store phù hợp với Android 7.1.
Cụ thể:

  • Minium version: miễn là nhỏ hơn hoặc bằng 7.1.
  • Architecture: arm hoặc noarch hoặc universal.

Theo thứ tự, tải và cài đặt lần lượt các file APK sau.


Dùng cáp USB để copy file APK vào Kindle Fire hoặc upload vào Amazon Cloud Drive và dùng ứng dụng Documents trong máy để mở chúng. Nhưng trước tiên phải mở cho phép cài đặt các ứng dụng ngoài (Settings).

Mở Play Store, đăng nhập và nó sẽ tự nhắc cập nhật các dịch vụ liên quan nếu cần thiết.

Thứ Sáu, 19 tháng 4, 2019

Professional Email Notes: Thân bài

Phần thân email (email text/body) có 3 thành phần thiết yếu:

  1. Giới thiệu (Introduction)
    Who (author), What (purpose)
    Nên có 2 câu: một câu giới thiệu về tác giả (người viết email) và câu dẫn (controlling idea - nêu mục đích chính của email).
  2. Phát triển (Development)
    Bám theo những câu hỏi Wh: How, Why, What,.. When.
  3. Kết luận (Conclustion)
    Bày tỏ thái độ tích cực, sự tôn trọng, cảm kích.
    Dùng các từ: thank, appreciate, glad, congratulation hay hope, wish, look forward.
 Ví dụ:

Introduction
My name is James Brown, and I am the general manager at Goods and Services, LLC. (Who)
I am delighted to inform you that we are now offering a 30% discount in our entire inventory. (Controlling idea)


Development:
Our company is glad to hear about your interest in our catalog. We will send updated versions of our catalogs each month. (How) The first section should be especially interesting to you since it has parts you were look for. (What) This is our most complete and updated version, so do not hesitate to contact us if you need new merchandise.

Conclusion:
I hope you find our catalogs appropriate for your business.

Đọc thêm:

Django CSRF Failed: CSRF token missing or incorrect


Parse the csrftoken cookie and include in the request header: "X-CSRFToken"

 Read more: Django CSRF AJAX

Thứ Sáu, 12 tháng 4, 2019

Professional Email Notes

4 thành phần chính của email: Tiêu đề, Lời chào, Nội dung, Kết


Tiêu đề (subject line)
Nêu rõ mục đích, dùng động từ mô tả danh từ

VD:
Resume attached
Meeting cancellation request


Lời chào (greeting)

  • Biết giới tính và tên
Dear Mr/Mrs

  • Dùng chức danh nếu không rõ giới tính: 
Dear CEO
Dear Professor
Dear Director 

  • Chỉ biết giới tính, không biết tên và các thông tin khác:
Dear Sir
Dear Madam

  • Chung chung, nhóm: 
To Whom It May Concern
Dear Marketing Group
Dear Sales Team


NÊN:

Chú ý
  • Vần (spelling)
  • Ngữ pháp (grammar)
  • Dấu câu (punctuation): ngắt câu hợp lý, chú ý việc dùng dấu phẩy để nối ý.
  • In hoa chữ cái (capitalization): danh từ riêng, tên người

KHÔNG NÊN:
  • Viết email dài.
  • Chỉ đưa thêm các chi tiết cần thiết, thiết yếu nhất.
  • Ngắn gọn, mạch lạc, đi thẳng vào vấn đề.
  • Khoảng 2 đoạn ngắn, mỗi đoạn tối đa 3 - 4 câu.
  • Nội dung không nên mang tính chất phàn nàn, đổ lỗi.
  • Có thể dùng kĩ thuật tự trách mình (self blaming) với các trạng từ như: perhaps... để làm nhẹ câu chuyện.

Lời cảm ơn
Regards,
Best regards

Chữ kí
Tên Họ
SĐT

---------------------------------------------------------------------------
Văn phong, tổ chức email

  • Chỉ dùng những từ thực sự cần thiết. Chúng ta thường có xu hướng thêm tính từ, trạng từ đến độ thừa, nên cô đọng lại với chủ ngữ, động từ và danh từ trước.

  • Tránh dùng thể bị động
Vd:
Powerful emails are written by people (1)
People write powerful emails (2)

Câu 2 là ở dạng chủ động, và chính xác hơn.

My friend wrote that book. (3)
That book was written by my friend. (4)

Dùng thể bị động làm cho câu dài hơn, và hơi mơ hồ trong khi ta cần sự chính xác.

  • Phải có trật tự
Ví dụ về email thông báo sự kiện:
Khi nào (when)
Ở đâu (where)
...

  • Tránh dùng các trợ động từ: 
must, should, demand, require, necessity vì mang tính chất nặng nề (harsh words), hơi thô (rude), đòi hỏi, ra lệnh cho người nhận.
  • Tận dụng những từ trung tính, vô hại

Thứ Năm, 28 tháng 3, 2019

Tập tành VBA: Biến (Variable)

Yêu cầu:

  • Đọc lại bài số 2, nơi ta đã tạo một nút bấm và thực hiện một đoạn mã ngắn để hiển thị cửa sổ thông báo khi bấm vào nút đó.

Dựa vào những gì đã có ở bài số 2, ta sửa lại đoạn mã của thủ tục CommandButton1_Click như sau:

  • Trước tiên, khai báo một biến tên là "message" có kiểu dữ liệu là kiểu chuỗi (String).

Dim message as String

  • Thứ hai, gán cho nó một giá trị là "Hi"

message = "Hi"

  • Thay dòng MsgBox("Hi") bằng MsgBox(message).

Nội dung soạn thảo hiện tại phải là:
Private Sub CommandButton1_Click()
    Dim message As String
    message = "Hi"
    MsgBox (message)
End Sub
 



  • Trở về sheet Excel, tắt chế độ Design, bấm nút, và cửa sổ thông báo với nội dung "Hi" vẫn xuất hiện như ở bài 2.

Sự khác biệt:

  • Ở bài 2, ta truyền giá trị "Hi" vào thẳng hàm MsgBox("Hi").
  • Ở bài 3 này, ta gián tiếp truyền giá trị "Hi" thông qua việc gán "Hi" vào biến "message", sau đó mới truyền vào hàm MsgBox(message).

Và đều cho ra một kết quả.

Biến giống như việc ta định danh một vị trí trong bộ nhớ, và được phép đính kèm (= gán) cho nó một giá trị.

Ví dụ như để tính diện tích hình chữ nhật, ta có thể chia làm 2 biến là: chieu_rong (chiều rộng) và chieu_cao (chiều cao), tính diện tích sẽ là s = chieu_rong * chieu_cao.

Trong lập trình việc dùng biến là tối quan trọng bậc nhất, nó giúp chúng ta chia nhỏ các quá trình tính toàn thành từng bước, dùng các biến để gán các giá trị trung gian trước khi tính ra kết quả cuối cùng.
Đoạn mã lập trình khi được phân chia thành các biến sẽ dễ đọc, dễ sửa, tựa như những công thức toán học.... vậy.

Chốt lại:

Cú pháp khai báo biến

Dim <tên biến> As <kiểu dữ liệu>

Vd:
Dim chieu_rong as Integer
Dim chieu_cao as Integer
Dim message as String
Dim doanhThu as Currency

Tên biến:
  • Bắt đầu bằng chữ cái (Vd: message, chieu_rong).
  • Không được chứa các kí tự đặc biệt như ! # @.
  • Không được dài quá 255 kí tự.
  • Không được trùng với các từ khóa đặc biệt trong VBA (như Sub, Call, Workbook)
 Lưu ý: Phần trên đã đủ cơ bản về biến, tuy nhiên vẫn khuyến khích đọc thêm phần dưới.

Kiểu dữ liệu 
Nếu nói về Excel thì kiểu dữ liệu làm việc chính là kiểu số, tuy nhiên cũng có nhiều kiểu số khác nhau tùy theo khoảng giá trị.

  • Kiểu byte: giá trị từ 0 - 255.
  • Kiểu Integer: giá trị từ -32,768 - 32,767
  • ...

Có thể xem thêm bảng tóm tắt:

Kiểu số


Các kiểu khác ngoài số

  • Chọn đúng kiểu dữ liệu để đảm bảo kết quả tính toán được chính xác, ví dụ như để lưu giá trị tiền bạc (thường sẽ rất lớn) ta sẽ dùng các kiểu: Single, Double, Currency, Decimal chứ không nên dùng Integer (max của nó chỉ tầm 32767) và Long (max chỉ tầm 2 tỉ).
  • Nếu biết chắc giá trị của một biến tối đa có thể là bao nhiêu thì ta có thể chọn những kiểu dữ liệu đủ chứa được, để tiết kiệm bộ nhớ, đúng mục đính.

2 kiểu quan trọng nhiều nữa là kiểu chuỗi (String) và giá trị luận lý (logic - Boolean  - Đúng/sai).
Kiểu Boolean ta sẽ gặp rất nhiều trong các bài sau, ở bài vòng lặp (for) và điều kiện (if else).

Ok, với kiến thức về biến như hôm nay, mình nghĩ hôm sau ta sẽ nói về các đối tượng trong Excel (Excel Object) nhằm giúp chúng ta đạt được các tác vụ thường ngày như mở file Excel lên, đọc sheet 1 và tính giá trị bên sheet2,... hoàn toàn có thể làm được.

Sau đó chúng ta sẽ quay ngược lại với các khái niệm cơ bản trong bất cứ ngôn ngữ lập trình nào: điều kiện, vòng lặp. Từ đó ta sẽ dần xây được nền tảng trong việc lập trình VBA.

Và mục tiêu sẽ là: hình thành được tư duy, cách phát biểu các vấn đề (nói thẳng là các tác vụ, việc cần tính toán trong sheet Excel thông qua VBA) trước khi đặt tay vào code.

Nguồn tham khảo: https://www.tutorialspoint.com/vba/vba_variables.htm

Thứ Tư, 27 tháng 3, 2019

Tập tành VBA: Button & MessageBox

Mục tiêu của bài này là bắt tay vào việc gõ vài dòng mã (lập trình @@) để hiên thị một cửa sổ thông báo với nội dung được truyền vào sử dụng hệ thống MessageBox (MsgBox) của Excel.

Tóm gọn:
Nhấn vào nút (Button) để kích hoạt cửa sổ thông báo (MsgBox).

Yêu cầu: Xem bài 1 và kích hoạt chế độ nhà phát triển VBA (Developer).

  • Trước tiên ta cần chèn nút vào một vị trí bất kỳ (cho nhanh) trên sheet Excel hiện tại.
    Tại tab Developer, chọn Insert Command Button, sau đó nhấn giữ chuột trái và kéo một hình chữ nhật vừa phải để tạo một nút (Button).




  • Nhấn đúp hoặc nhấn chuột phải vào nút vừa tạo (có tên CommandButton1) chọn View Code để lập trình xử lý khi nút được nhấn vào.


Lúc này trình soạn thảo VBA xuất hiện với nội dung được điền sẵn:

Private Sub CommandButton1_Click()
End Sub


Dòng Sub CommandButton1_Click() - là Excel đã khai báo tự động một thủ tục (là việc gom nhóm đoạn mã lập trình, có thể tạm hiểu như ta phân chia ra việc rửa chén sẽ gồm các thủ tục con như: tráng nước, rửa xà phòng, rửa bằng nước sạch, sẽ nói thêm sau này) có tên là CommandButton1_Click - thủ tục được gọi khi người ta nhấn vào nút này.
Việc cần làm bây giờ là lập trình thêm mã vào phần thân thủ tục, tức là phần giữa Sub và End Sub

Ta gõ MsgBox("Hi") vào thân thủ tục.


Sau khi thử gõ thêm vào thân thủ tục, kiểm tra lại nội dung soạn thảo phải như thế này:

Private Sub CommandButton1_Click()
  MsgBox ("Hi")
End Sub




  • Mở lại sheet Excel, tại tab Developer, nhấn vào nút Design Mode để tắt chế độ thiết kế (là chế độ dùng để sắp xếp, bố cục, thêm bớt các thành phần như nút,...) để đổi sang chế độ sử dụng.


  • Lúc này, ta có thể nhấn vào nút "CommandButton1" kia, sẽ có một cửa sổ hiện lên với nội dung "Hi" như ta đã lập trình.


Ok như vậy là xong bài này. Thực sự bài này rất đơn giản, ta chỉ cần rờ một chút và gõ thêm dòng MsgBox("Hi") để khi bấm nút nó hiện lên thông báo "Hi".

MsgBox là thủ tục sẵn có của Excel, nó nhận vào tham số là nội dung tin nhắn: MsgBox("Hi") - ta truyền "Hi" vào thì nó sẽ hiện cửa sổ với nội dung "Hi" lên.
Việc lập trình VBA về sau cũng tạm hiểu theo cách như vậy, ta viết các thủ tục (hoặc hàm), truyền các tham số, tính ra kết quả, thực hiện các việc này việc nọ....

Thực ra thì việc sử dụng nút trong Excel thông qua VBA như này mình nghĩ không nhiều. Tuy nhiên việc lợi dụng giới thiệu về nút (button) và lập trình một đoạn mã ngắn để chạy khi nhấn vào nút đó, mình nghĩ cũng là một cách khá phù hợp cho những người mới làm quen việc "lập trình", tức là về sau mình sẽ đi vào vấn đề chính hơn, thực tế hơn, đó là dùng VBA để chạy xử lý các tác vụ âm thầm và tự động chứ không nhất thiết là phải "bấm nút".

Trong bài mình đã khéo léo giới thiệu sơ về thủ tục (và về sau chỉ cần nói lại thêm một chút sẽ rất dễ), mình nghĩ với kiến thức hiện tại thì bài sau sẽ nên nói về biến (variable).

Hẹn gặp lại.







Tập tành VBA: Trình soạn thảo VBA Editor

Để bước chân vào việc lập trình VBA, sẽ cần phải làm việc thường xuyên với khung soạn thảo VBA.
Đây là nơi để chúng ta "lập trình", gõ những đoạn mã (code).

Gọi là lập trình chứ cũng không có gì quá to tát và sợ hãi, hãy hiểu đơn giản đó là việc chúng ta thay các tác vụ hằng ngày bằng những dòng lệnh và nhờ chúng chạy một cách tự động, nhanh chóng, chính xác nhằm giúp ích hiệu quả cho công việc.

Mở Excel, vào menu File - Options - Chọn mục Customize the Ribbon (tùy chỉnh các menu con trên Excel) - Check vào Developer - OK
Mở Menu File

Mở cửa sổ Options để kích hoạt chế độ nhà phát triển (Developer)

Check vào mục Developer để hiển thị tab này ngoài màn hình chính của Excel


Lúc này sẽ có một tab Developer, ta bấm vào.

Bấm View Code hoặc Visual Basic, hoặc bấm phím tắt ALT + F11 để mở trình soạn thảo VBA Editor.


VBA Editor chia làm 2 bên chính là cấu trúc đối tượng (Sheet, module, workbook) bên tay trái, bên tay phải là khung soạn thảo, là nơi ta sẽ gõ các đoạn mã vào.

Nhìn nhận:
  • Đây là bài khởi động. Cần nhớ mục tiêu trong khóa học này cũng như trong bất kỳ vấn đề nào là đi từ những thứ nền tảng, cơ bản trước hết.
  • Chỉ mất chừng 5 phút để làm quen mà thui.
  • Bài sau chúng ta sẽ đặt tay vào viết một vài đoạn mã đơn giản, giới thiệu về button, biến (variable)...

Danh sách bài (Syllabus)

Tập tành chụp ảnh: Chế độ chụp thủ công

Ở bài trước đã có thể hình dung được các khái niệm chính của máy ảnh: khẩu độ, tốc độ màn trập, ISO.

Trong bài này sẽ chi tiết thêm một chút, việc cần làm là gạt cần sang chế độ manual trên body máy :p, đọc bài viết và thử nghiệm.

KHẨU ĐỘ (APETURE)

Ta có thể quan sát ở mặt ống kính, khi mở/đóng khẩu thì lỗ tròn (lỗ khẩu) sẽ to ra hoặc nhỏ đi.
Khẩu mở rộng sẽ đưa ánh sáng vào nhiều hơn. Khẩu đóng hẹp thì ít ánh sáng đi qua.



Bối cảnh: 
Khi có quá nhiều ánh sáng, ta cần đóng bớt khẩu để cân bằng lại.
Khẩu nhỏ cũng có nghĩa là nhiều phần trong khung cảnh chụp sẽ được focus, phù hợp với chụp phong cảnh.
Với khẩu rộng, khung cảnh chụp sẽ bị focus tụ lại một số chỗ, thường là ngay trước gần ống kính.
Với những bức hình chụp xóa phông, chụp chân dung, các phần hậu cảnh bị làm mờ là do hiệu ứng của khẩu rộng (còn một số yếu tố khác như dùng ống kinh viễn cũng gây ra hiệu ứng này).

Khẩu độ được biểu thị theo ký hiệu f.
F, tiếng anh là Fractional là phần (phân số).
Vd: f/8 ~ nôm na là kích thước khẩu đem chia cho 8 ~ 1/8.
f/2.2 ~ nôm na là kích thước khẩu đem chia cho 2.2 ~ 1/2..2

Như vậy f/x, x càng lớn thì khẩu càng nhỏ vì nó bị chia đi một khoảng rất nhiều.
f/2.2 - khẩu lớn hơn > f/8

Khi mua ống kính, chỉ số ghi trên ống kính sẽ là chỉ số khẩu lớn nhất ống kính đó có thể đạt được.
Ví dụ: 50mm f/1.8 - ống kính có độ dài tiêu cự là 50mm, khẩu độ lớn nhất là f/1.8, có thể chỉnh khẩu nhỏ hơn lại.

Chốt:
  • Với khẩu rộng, như f/1.8, sẽ cho nhiều ánh sáng đi qua và giảm hiệu ứng độ sâu trường ảnh (ảnh bị ít focus, hoặc focus ở một số phần).
  • Với khẩu hẹp, như f/22, cho focus rộng và sâu hơn, nhưng ít ánh sáng đi qua.
TỐC ĐỘ MÀN TRẬP (SHUTTER SPEED)
Khi nhấn nút chụp, các lá khẩu sẽ mất một khoảng thời gian để đóng lại (để rồi quá trình hình thành ảnh diễn ra). Khoảng thời gian để các lá đóng lại này gọi là tốc độ màn trập.
Tốc độ màn trập thường được biểu thị theo dạng phần của một giây, nếu muốn chụp các vật chuyển động nhanh, cần set vào khoảng 1/300, chụp vật tĩnh thì chỉ cần 1/30.

Khi tăng tốc độ màn trập cũng là giảm thời gian cảm biến được phơi sáng.

Cảm biến được phơi sáng lâu hơn, nó sẽ nhận được nhiều ánh sáng hơn. Phù hợp khi chụp trong điều kiện thiếu sáng.
Cảm biến cũng dễ bị ảnh hưởng của chuyển động và có thể gây ra hiệu ứng mờ chuyển động (motion blur), có thể do vật chuyển động hoặc tay chụp bị run.
Khi để tốc độ màn trập thấp, chụp sẽ khó bắt chuyển động hơn, dễ bị mờ ảnh hơn, khi không có tripod cố định, hoặc tay chụp run chẳng hạn.

Nhìn chung, chúng ta sẽ cố đẩy tốc độ màn trập lên cao nhất có thể nhưng cũng có một số trường hợp cần để thấp. Ví dụ:
  • Muốn tạo hiệu ứng mờ chuyển động, ví dụ như chụp các dòng chảy, xe đi, các dải màu, muốn tạo hiệu ứng nghệ thuật. Chúng ta để tốc độ màn trập khoảng 1/30 và để khẩu hẹp. Và ví dụ này cũng rất phù hợp khi đổi sang chế độ ưu tiên tốc độ màn trập (để máy tự set khẩu cho ta).
  • Đang thiếu sáng, ta giảm tốc độ màn trập sẽ cho cảm biến có thời gian phơi sáng nhiều hơn.
  • Đang thiếu sáng nhưng cũng không quá cần thiết, chỉ là muốn giảm nhiễu. Vì vậy cần chỉnh ISO thấp và giảm tốc độ màn trập lại để bớt nhiễu, và vẫn có ánh sáng thêm đi vào.

Chốt:
  • Tốc độ màn trập thấp sẽ cho nhiều ánh sáng hơn, và cũng rủi ro bị hiệu ứng mờ chuyển động hơn.
  • Tốc độ màn trập cao sẽ ít bị hiệu ứng mờ, nhưng hy sinh ánh sáng.
ISO
Là một khái niệm kỹ thuật số tương đương với tốc độ của dải phim chụp (ngày xưa).
Ngày trước khi mua phim chụp thường sẽ là phim 100 hay 200 cho chụp ngoài trời, 400 hay 800 cho trong nhà.
Tốc độ phim càng cao thì sẽ càng dễ bị nhạy sáng. Với máy ảnh kĩ thuật số cũng vậy, ISO ~ tốc độ phim, và ta sẽ gọi là chỉ số ISO.




Lợi thế của ISO thấp là ánh sáng sẽ được ghi (phơi) lại chính xác hơn.
Nếu bạn thấy những bức hình chụp ban đêm, ánh sáng thường có vẻ sáng hơn và bị chóa, có thể là do ISO cao - gây nhạy sáng.

ISO cao hữu ích khi muốn lấy rõ các chi tiết ảnh trong trời tối mà không muốn giảm tốc độ màn trập hay mở khẩu, nhưng rủi ro là hình sẽ bị nhiễu.

Các máy ảnh xịn thường sẽ giảm nhiểu khi để ở ISO cao hơn so với máy tầm thấp.
Tuy nhiên cần nhớ: ISO càng cao, ảnh càng dễ bị nhiễu sáng.

Đa số máy ảnh sẽ tự set ISO, kể cả chế độ manual.

TỔNG KẾT
Ở chế độ chụp manual, chúng ta nên nghĩ về 3 yếu tố trên trước khi chụp, có thể loại trừ, tập trung vào một số yếu tố. Trong một số trường hợp đơn giản có thể đổi sang chế độ chụp ưu tiên một yếu tố nào đó.
  • Muốn chụp xóa phông, giảm hiệu ứng độ sâu trường ảnh => Ưu tiên khẩu độ.
  • Diễn đạt ánh sáng chính xác => ISO.
  • Giảm mờ chuyển động => Tốc độ màn trập.

Cuối cùng việc chụp ảnh cơ bản xoay quanh việc điều tiết ánh sáng, ta ưu tiên thiết lập nào sẽ có ưu và nhược thì bù lại (bù sáng) ở các thiết lập khác, gia giảm.




Cách bấm dây cáp mạng, phân biệt Cat5 và Cat6

Trong lần sửa nhà vừa rồi, mình quyết định đấu nối lại hệ thống dây cáp mạng âm tường có từ lúc xây nhà, vì lúc xây nhà xong chưa có Internet liền nên thợ để dây trống, sau đó cũng không có dụng cụ nên không làm gì được.

Đánh giá: hệ thống dây cũ, lâu ngày, hộp nối tổng ở phòng ngủ trung tâm.
Giải pháp là đưa router xuống trung tâm, và sau khi đấu nối 1 dây âm ở phòng khách, 1 dây âm ở phòng ngủ vào router thì tín hiệu vẫn tốt, xem TV, cắm laptop phà phà.

Kết quả thu được là đầu tư được bộ dụng cụ để bấm dây, sẵn sàng bấm thêm dây cho căn phòng mới trên sân thượng :).

Nay viết lại làm lưu niệm.

Cần

  • Kìm bấm đầu cáp mạng.
  • Cáp mạng.
  • Đầu mạng RJ45.
  • Bộ test tín hiệu dây.

Có thể tìm trên mạng set 3 trong 1 gồm: kìm bấm, bộ test tín hiệu dây, đầu RJ 45 với giá tầm 100 - 120k.


Thực hiện
  • Bóc vỏ đầu dây mạng một đoạn chừng 5cm.
  • Chia ra làm 4 cụm dây theo thứ tự:

1, 2: Trắng cam, Cam.
3, 4: Trắng xanh lá, Xanh lá.
5, 6: Trắng xanh dương, Xanh dương.
7, 8: Trắng nâu, Nâu.


  • Mình sẽ hướng dấn bấm dây theo tiêu chuẩn B (code B) vì nó đa dụng trong hầu hết các trường hợp sử dụng, nếu muốn bấm theo chuẩn code A thì có thể tìm ở trên mạng.

  • Bấm theo code B, ta đảo vị trí của dây 4 với dây 6, tức là sẽ thành

Trắng cam, Cam -  Trắng xanh lá, Xanh dương - Trắng xanh dương, Xanh lá -  Trắng nâu, Nâu.

Bấm theo chuẩn B ở bên phải, sắp màu dây theo thứ tự


  • Duỗi thẳng 8 dây theo thứ tự như trên, dùng kìm cắt đều các đầu cho bằng nhau, sau đó đút vào đầu dây mạng, cần khéo một chút, sắp các dây đều và sát nhau, rồi đưa vào.


  • Đẩy dây vào tận cùng của đầu mạng RJ 45, sau đó đưa đầu vào lỗ trên kìm bấm và bấm cái rụp :D


Nếu đã bấm ở cả 2 đầu dây thì có thể cắm vào bộ test (bộ test có 2 lỗ tự cắm vào nhau), bật nguồn lên xem đèn tín hiệu nhảy đều từ 1 đến 8 là tín hiệu tốt.

Kinh nghiệm
Nên mua loại dây mạng tiêu chuẩn tầm 9 - 10k/m, tránh mua loại dây tròn nhỏ vì khi cắt ra để tách sợi rất nhỏ, mỏng manh, dễ đứt, khó bấm đầu. Hiện tại mình có bộ dây tròn cũ lúc sản xuất đã được bấm sẵn, giờ cắt ra bấm lại rất khó, dây tròn tuy nhỏ, thẩm mĩ gọn gàng nhưng lại khó sử dụng khi muốn cắt rời.
Cần loại dây tiêu chuẩn, dày, cứng cáp, thậm chí có thể tính đến việc dùng được ngoài trời.

Phân biệt cáp mạng Cat5 và Cat6

Cat6 là tiêu chuẩn (+ nguyên liệu cấu thành dây) mới hơn và được quảng bá cho phép truyền tín hiệu với tốc độ cao hơn nhiều so với Cat5.
Tuy nhiên hiện tại Cat5 với tốc độ mạng trong nước vẫn đáp ứng được và giá thành ổn hơn, các cửa hàng vẫn bán Cat5 là chính.
Vậy nên nếu mua được cáp Cat6 giá tốt thì ok, còn không thì cứ cat5 chứ nó không tệ mà vẫn tốt là đằng khác. Vì mỗi lần mua dây chỉ tầm 20m thôi là đã 200k rồi :(

Đọc thêm: https://www.firefold.com/blog/difference-between-cat5-vs-cat6-cables/