09/03/2020

[04.TCDG]. Chọi hột điều

Cây điều (cashew), có nơi gọi là đào lộn hột, được trồng ở bờ rào hay bờ ao. Nhà nào có vườn thì trồng ở vườn. Chủ yếu cây điều trồng là để thu hoạch hột điều (hạt điều). Món hột điều rang muối thì ngon ai cũng biết rồi. Còn trái điều chín thì có thể ăn sống với muối hoặc nấu canh chua rất ngon.
Trái điều
Cây điều là cây công nghiệp trồng nhiều ở miệt Long Khánh, Đồng Nai. Cây chỉ cho trái một mùa nên các công ty chế biến hột điều xuất khẩu phải nhập hột điều từ các nước châu Phi sản lượng rất lớn cho mùa còn lại để công nhân có việc làm cả năm.
Vì hột điều có thể bán được nên chúng tôi có trò chơi chọi hột điều. Đây là trò chơi có ăn thua vật có giá trị nên thực chất là trò cờ bạc nhưng nếu chọi cho vui cũng được. Lưu ý hột điều tươi có mủ rất độc hại nên tránh vương vào mắt.
Số người tham gia thường là hai người nhưng cũng có thể nhiều hơn cũng được. Đầu tiên người chơi phải tuyển chọn cho mình một đồng chọi. Tức là một hột điều to, dùng đinh hoặc vòi của ruột xe đạp, xe honda đóng vào đít của cái hột điều làm cho cái hột điều nặng lên.
Mỗi một lượt chơi thì các người chơi góp vào một số lượng hột điều bằng nhau ví dụ mỗi người 5 hột, 6 hột, .... Trên sân chơi vạch hai đường kẻ song song cách nhau chừng bước nhảy.
Để xác định thứ tự chơi thì tiến hành thi: Tất cả người chơi đứng ở 1 mức (1 đường kẻ) và thảy đồng chọi của mình về mức còn lại. Ai gần vạch mức hơn thì đi trước.
Khi đến lượt chơi thì người đứng ở một vạch mức (không được đạp chân lên vạch mức), thảy toàn bộ các hột điều mà các người chơi hùn lại qua vạch mức còn lại.
  • Nếu có một hột điều nằm dưới mức thì người chơi mất lượt.
  • Nếu như tất cả các hột điều điều ở trên mức:
    • Người chơi còn lại sẽ chọn 1 hột điều
      • Người chơi dùng đồng chọi của mình chọi trúng hột điều này mà cả hai không va vào các hột điều còn lại thì người chọi sẽ thắng và phần thưởng là tất cả các hột điều trên sân.
      • Trường hợp người chọi không chọi trúng hoặc một trong hai hột (đồng chọi và hột bị chọi) trúng hột điều khác nằm trên sân thì người chơi thua. Đến lượt người kế tiếp.
    • Người chơi còn lại chỉ vào 1 cặp hoặc 3 hột điều, 4 hột điều, ... chúng dính chùm nhau trên sân thì luật trên cũng áp dụng nhưng điều kiện là cặp hột điều hay chùm 3, chùm 4, ... hột điều này phải tách rời nhau khi được chọi thì người chọi mới thắng.

04/03/2020

[17.TCDG]. Đá cỏ gà

Những ngày chăn trâu, nhổ cỏ thì không thể không biết đến cỏ chỉ (có nơi gọi là cỏ gà, cỏ bermuda, tên khoa học là Cynodon dactylon). Loài cỏ này là kẻ thù số một với nông dân vì chúng sống dai, khó diệt. Cày đất ủ xuống nước lâu thật lâu cũng không chết, chỉ còn xót lại một mắc thì cũng mọc lại thành cụm.
Điều đặc biệt là cỏ chỉ  thường có một loại sâu ăn lá ký sinh là "fall armyworm" (Spodoptera frugiperda). Do tác động của sâu ký sinh, những bẹ lá cuộn xếp lên nhau làm nhiều lớp khiến cho đầu cọng cỏ tạo thành một nốt sần cỡ như hột đậu phộng có hình giống như con gà.

Cỏ chỉ với đầu gà
Đầu gà to
Cách chơi: Hai người chơi tìm các cộng cỏ có đầu gà. Đầu gà càng to càng thích. Khi chơi thì móc hai cái đầu gà với nhau rồi kéo mạnh. Đầu gà của ai bị đứt thì người đó bị thua. Ngoài cách kéo thì có thể đập hai cái đầu với nhau.
Đá cỏ gà


02/03/2020

[03.TCDG]. Tạt thun

Dụng cụ:
  • Mỗi người chơi chuẩn bị một chiếc dép lê (hoặc dép lào)
  • Dây thun loại dùng để buộc các bịch đồ, buộc tiền (còn loại là thun khoanh)
  • Thun khoanh
Sân chơi:
Sân chơi
Dùng dép vẻ lên mặt sân một vòng tròn và một đường thẳng gọi là mức để tạt.
Luật chơi:
  • Mỗi lượt chơi thì mỗi người chơi hùn vào số cộng thun bằng nhau. Sau đó bỏ tất cả các cộng thun vào vòng tròn ở giữa sân.
  • Người chơi đứng dưới mức (chân không được đạp lên mức), dùng dép tạt vào đống thun. Người chơi được nhận tất cả các cộng  thun văng ra khỏi vòng tròn.
  • Nếu không còn thun trong vòng khi còn người chưa tạt thì lượt chơi kết thúc. Trường hợp tất cả người chơi đều tạt một lần nhưng thun trong vòng tròn vẫn còn thì lượt chơi cũng kết thúc. Tuỳ thoả thuận những người chơi với nhau là có hùn thêm thun vào để bắt đầu lượt mới hay không.
  • Để xác định thứ tự tạt trong một lượt chơi thì các người chơi đứng tại vòng tròn thảy dép về mức. Tuỳ độ xa của dép tới mức mà xác định thứ tự tạt. Dép của ai gần hơn thì đi trước, dép ai xa hơn thì đi sau. Vì dép là vật lớn nên việc xác định khoảng cách là từ mức đến điểm trên dép gần mức nhất. Trường hợp có hai người chơi huề nhau thì có thể thi lượt phụ để xác định thứ tự.
Lưu ý: Đây là trò chơi có tính chất ăn thua vật chất nên ba mẹ cần giám sát để tránh cờ bạc.

01/03/2020

[02.TCDG]. Tạt lon

Trò chơi thứ 2 gắn liền với tuổi thơ của mình là trò tạt lon (hay còn gọi là tạt banh lon).
  1. Dụng cụ:
    • Một lon sữa bò hay lon bia đã dùng rồi. Ngày xưa thì chỉ có lon sữa bò thôi còn lon bia thì xa xỉ lắm mà nói thật ở quê người ta không uống bia chỉ uống rượu đế thôi.
    • Mỗi người chơi một chiếc dép lê mà xịn nhất là dép lào. 
  2. Sân chơi: Chuẩn bị sân chơi như trong hình
  3. Số người chơi: Từ hai người trở lên gồm 1 người chăn và còn lại là các người chơi.
  4. Luật chơi:
    • Xác định người chăn: Ban đầu tất cả mọi người đứng ngay vị trí lon thảy dép về phía mức. Dép ai xa mức nhất thì đó là người chăn, những người còn lại là người chơi. Vì dép là vật có kích thước to nên khoảng cách xác định từ mức đến điểm trên dép gần mức nhất.
    • Người chơi thì đứng dưới mức và dùng dép cố thảy làm sao cho lon bay ra khỏi vòng. Sau khi thảy dép lên thì người chơi chạy lên cố nhặt dép của mình (không nhặt của người khác) chạy về vạch mức. Không được chạy ra ngoài giới hạn sân chơi (phạm quy).
    • Người chăn cố đuổi bắt người chơi khi họ mang dép về. Người chơi thua khi người chăn chạm vào người của người chơi khi đã đụng tay vào dép và lon vẫn đang trong vòng, trên vạch mức hoặc người chơi bị phạm quy. Người chơi bị thua thành người chăn tiếp theo.
    • Trường hợp người chơi ném dép không vượt qua khỏi lon thì người chăn có quyền đem những chiếc dép này đặt vào trong vòng và người chơi đang ở trạng thái đã đụng tay vào dép, nghĩa là nếu người chăn chạm tay vào người mà lon ở trong vòng thì người chơi thua. Trong trường hợp này người chơi để lấy dép của mình thì người chơi phải dùng chân đá lon ra khỏi vòng. 
Vì đây là trò đuổi bắt nhau nên những người chơi cần cẩn thận, chọn sân chơi an toàn. Lúc nhỏ mình cầm dép chạy, người chăn đuổi gấp mình nhảy qua cái lò trấu cũ ( ba cái chân đưa lên trời đang úp để bảo vệ cây ớt con) nên gối mình va vào 1 chân và để thẹo ở gối. Những kỷ niệm khó quên của tuổi thơ.

29/02/2020

[01.TCDG]. Băng keo

Lấy cảm hứng từ bài viết "Tổng hợp 50 trò chơi dân gian Việt Nam hay và phổ biến nhất" mình sẽ dùng thời gian rãnh rỗi của mình để chia sẻ những trò chơi dân gian mà mình thường chơi lúc trẻ thơ mà tác giả ở bài viết trên chưa đề cập. Vì bụi thời gian nên có những chi tiết có thể mình nhớ không đúng nhờ độc giả sửa giúp.
Trò chơi đầu tiên mà mình muốn giới thiệu là trò "Băng keo". Tại sao nó có tên này thì sau khi xem cách chơi thì các bạn sẽ trả lời được. Tại sao mình giới thiệu nó đầu tiên vì mình có kỉ niệm khó quên về nó. Năm mình học lớp 4, ở đầu của sân chơi trong sân trường có cái giếng bơm tay của UNICEF tài trợ. Sau khi mình nhảy qua để về đích thì cái cằm đập vào cái nhọn trên miệng ống xả nước đến giờ vẫn còn chiếc thẹo nhỏ.
Giếng bơm tay UNICEF

Cách chơi:
  • Số người chơi: Số người chơi là số chẵn, chia thành hai đội. Ít nhất là 4 người.
  • Số người chơi tối đa: Không giới hạn.
  • Chuẩn bị sân chơi:
  • Luật chơi:
    • Chia thành hai đội, oẳn tù tì, đội thắng sẽ là đội chơi còn đội thua sẽ thành đội chăn.
    • Đội chiến thắng sẽ thành đội chơi, đội thua sẽ thành đội chăn ở vòng tiếp theo.
    • Người chơi chạy sao cũng được miễn sao phải băng qua sân chơi hướng về đích, không quay lại các ô đã qua, không ra ngoài hai biên giới hạn sân chơi.
    • Người chăn chỉ di chuyển trong các ô dọc và ô ngang dành riêng cho họ.
    • Chiến thắng:
      • Đội chơi: Có một thành viên về đến đích. Khi người chơi băng qua ô ngang cuối cùng để về khu vực đích đến thì người chơi hô to "Keo". Trò chơi này người chơi có hai động tác chính là "băng" và "keo" nên gọi là băng keo.
      • Đội chăn: Bắt được một thành viên của đội chơi. Bắt nghĩa là tay người chăn chạm được vào người của người chơi đúng luật, hoặc một thành viên của đội chơi phạm quy (chạy vượt ra ngoài hai biên của sân chơi)
    • Tại lúc thành viên của đội chăn bắt một thành viên của đội chơi thì trong ô mà thành viên của đội chăn đứng chỉ được tối đa 2 chân chạm đất. Nghĩa là nếu có một thành viên đội chăn đang đứng trong ô ngang, một thành viên khác nhảy từ ô dọc xuống ô ngang bắt người thì cả hai thành viên này phải cò 1 chân mới hợp lệ.
    • Người chăn không được đạp lên mức (vệt kẻ ô) khi bắt người chơi.

23/10/2019

Những địa chỉ tốt nhất để luyện nghe Tiếng Anh


  1. VOA Learning English https://learningenglish.voanews.com
  2. BBC-6 minutes https://www.bbc.co.uk/learningenglish/english/features/6-minute-english
  3. TED https://www.ted.com
  4. ESL http://www.esl-lab.com (có cả bài test nữa nha, thật tuyệt!)
  5. Studyphim http://www.studyphim.vn (vừa học vừa giải trí thì còn gì tuyệt vời hơn phải không nào)
  6. School of Life Youtube Channel https://www.youtube.com/user/schooloflifechannel 
  7. Serlymar Youtube Channel https://www.youtube.com/user/SERLYMAR/playlists 
  8. Listen and Write http://www.listen-and-write.com 

29/12/2018

[Android] Custom error page for WebView

Trong rất nhiều tình huống bạn cần show trang error page ví dụ 404.html cho WebView. Trong trường hợp lỗi xảy ra. Lỗi xảy ra có thể tóm tắt hai trường hợp sau đây:
  1. Web server không thể trả về kết quả . Trường hợp này chỉ cần hiện thực các phương thức sau đây:
    
    void onReceivedError(WebView view, int errorCode, String description,String failingUrl) (API < 23) 
    void onReceivedError(WebView view, WebResourceRequest request,WebResourceError error) (API >= 23)
    
  2. Web server trả về kết quả nhưng là kết quả lỗi như 404, 502, 403, ... Trường hợp này nếu chương trình bạn chỉ dùng API >= 23 thì dùng các phương thức sau đây:

    
    void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse)
    void onReceivedSslError (WebView view,SslErrorHandler handler,SslError error)
    
    Tuy nhiên nếu bạn hỗ trợ API < 23 thì sao? Trong trường hợp của mình thì cần hỗ trợ từ API >=21 nên mình để ý đến phương thức sau:
    
    public WebResourceResponse shouldInterceptRequest (WebView view,WebResourceRequest request)
    
    Sau đây là skeleton code:
    
    OkHttpClient okClient = new OkHttpClient();
    try{
    final Call call = new Call (new Request.Builder()
                            .url(request.getUrl().toString())
                            .build());
    final Response response = okClient.exec(call);
    if (response.code() != 200){
        return getErrorWebResourceResponse();
    }else{
        return new WebResourceResponse(
            response.header("Content-type","text/html").split(";")[0],
            response.header("Content-Encoding","utf-8"),
            response.body().getByteStream()    
        );
    }                        
    } catch (Exception ignore){
     return getErrorWebResourceResponse();
    }
    }
    

30/09/2018

Sử dụng Swift trong quá trình build ứng dụng iOS (Swift)

Trong một số trường hợp bạn cần xử lý code trước khi build hoặc làm thao tác gì đó sau khi build ứng dụng iOS (Object-C hoặc Swift) trên XCode chúng ta có thể sử dụng "Run Script" phase trong quá trình build. Thường thì code trong phase này là bash script, perl script, python script, ...
Bài viết này muốn chia sẻ cách mình có thể thực hiện code Swift trong phase này.
Template chung của bash script như sau:

#!/bin/bash
# Define your variable here
MY_VAR="${SRCROOT}/YourProject/App"
# Your bash script here
set -e

# The swift code
swift_code() {

cat <<EOF
    import Foundation
    //Your swift code will be put here
    //You can refer to your variable defined
EOF
}

# Run the Swift code in swift_code()
echo "$(swift_code)" \
    | DEVELOPER_DIR="$DEVELOPER_DIR" \
    xcrun --sdk macosx \
    "$TOOLCHAIN_DIR/usr/bin/"swift -F "$SRCROOT/Carthage/Build/Mac/" -
Đến đây bạn có thể làm chủ quá trình build ứng dụng của mình rồi. Chúc bạn thành công!

24/09/2018

Bài 5 Thi HSG Toán Vòng 2 Tỉnh Long An 2018


Đề: Cho hàm số f: R $\rightarrow$ R thoả f(xf(y))+f(f(x)+f(y))=yf(x)+f(x+f(y)) $\forall x,y \in R$
1) CMR Nếu tồn tại $a \in R$ sao cho $f(a) \neq 0$ thì f là đơn ánh
2) Tìm tất cả các hàm f.
Bài giải:
1) Ta xét $\forall y_1,y_2 \in R$, sao cho $f(y_1) = f(y_2)$
Lần lượt thế $x = a, y = y_1$ và $x = a, y = y_2$ vào đẳng thức đã cho ta có:
$f(af(y_1))+f(f(a)+f(y_1))=y_1f(a)+f(a+f(y_1)) (1)$
$f(af(y_2))+f(f(a)+f(y_2))=y_2f(a)+f(a+f(y_2)) (2)$
Từ (1) và (2) suy ra $y_1f(a) = y_2 f(a)\implies y_1 = y_2$.
Do đó f là đơn ánh.
2) Thử f(x) = 0 $\forall x \in R$ thoả mãn đề bài.
Ta tìm f trong trường hợp còn lại nghĩa là f là một đơn ánh.
Thay x = 0, y = 1 vào đẳng thức đã cho trong đề bài ta có:
f(0)+f(f(0)+f(1)) = f(0) + f(0+f(1)) $\implies$ f(f(0)+f(1)) = f(0+f(1)) $\implies$ f(0) + f(1) = 0 + f(1) $\implies$ f(0) = 0
Thay y = 0 vào đẳng thức trong đề bài:
f(xf(0))+f(f(x)+f(0)) = 0f(x)+f(x+f(0)) $\implies$ f(f(x)) = f(x) $\implies$ f(x) = x.
Vậy ta có: f(x) = 0 $\forall x \in R$ hoặc f(x) = x $\forall x \in R$

02/09/2018

Tặng người hoa hồng, tay sẽ lưu lại hương thơm

Trong cuộc sống, bạn kết giao với ai là điều rất quan trọng, thậm chí có thể thay đổi hướng đi của bạn, quyết định thành bại trong cuộc đời bạn.
Bạn là ai không quan trọng mà quan trọng là bạn ở cùng với ai.
Ở cạnh người thế nào thì nhân sinh cũng sẽ biến đổi theo như thế
Ở cùng chỗ với người chăm chỉ, bạn sẽ không lười biếng; ở cùng với người tích cực, tinh thần bạn sẽ không sa sút. Đồng hành cùng trí giả, bạn sẽ không giống kẻ tầm thường; cùng cao nhân làm bạn, tất có thể lên đến đỉnh vinh quang.
Các nhà khoa học cho rằng: “Con người là sinh vật duy nhất có thể tiếp nhận ám thị”. Ám thị tích cực, sẽ có thể mang đến ảnh hưởng tốt đối với cảm xúc và sinh lý của người ta, kích phát tiềm năng nội tại, phát huy khả năng vượt xa người thường, khiến bạn học được tiến thủ, thúc giục bạn hăm hở tiến lên.
Đối với người có ảnh hưởng tiêu cực, tốt nhất hãy rời xa, nếu không, bọn họ trong lúc vô ý sẽ trộm đi giấc mộng của bạn, khiến cho bạn dần dần chán chường, trở nên tầm thường.
Người có ảnh hưởng tích cực giống như mặt trời, chiếu đến đâu là nơi đó có ánh sáng; người tiêu cực tựa như mặt trăng, dù gặp lần đầu hay 10 năm sau vẫn không đồng nhất.
Thái độ quyết định mọi thứ, thái độ thế nào thì sẽ quyết định tương lai như thế ấy
Có người nói, cuộc đời có 3 may mắn lớn: Đến trường gặp được thầy tốt; làm việc gặp được đồng sự giỏi, ông chủ tốt; lập gia đình gặp được người bạn đời tâm đầu ý hợp. Đôi khi, chỉ cần một cái mỉm cười, một câu thăm hỏi ân cần ấm áp của họ, cũng có thể sẽ khiến nhân sinh của bạn trở nên xán lạn.
Cuộc sống có một điều bất hạnh nhất, chính là bên cạnh bạn thiếu đi một người tích cực, thiếu một người có thể nhìn xa trông rộng, như vậy sẽ khiến nhân sinh của bạn trở nên tầm thường, ảm đạm thất sắc.
Có một câu nói rất hay: “Bạn là ai không quan trọng, quan trọng là bạn ở cùng với ai”. Xưa có chuyện “Mạnh Mẫu tam thiên”, kể về việc mẹ của Mạnh Tử 3 lần chuyển nhà để tìm cho con chỗ học tập tốt nhất, đủ để nói rõ, ở cùng một chỗ với ai thực sự là điều vô cùng trọng yếu.
Nếu muốn cất cánh cùng đại bàng thì đừng bơi với lũ vịt.
Đại bàng sống trong ổ gà, thì lớn lên sẽ mất đi bản tính bay lượn, làm sao có thể tung cánh trời cao; sói hoang trưởng thành ở giữa bầy dê, cũng sẽ mất đi bản tính, sao có thể ngao du sơn thủy, rong ruổi đại địa.
Dù bạn là người rất ưu tú, nhưng khi bạn ở cạnh những người có ảnh hưởng tiêu cực kia, sẽ khiến bạn thiếu đi áp lực vươn lên, đánh mất đi động lực tiến bước, mà trở nên tầm thường, xoàng xĩnh.
Nếu như bạn muốn mình giống như loài đại bàng bay lượn giữa trời cao, vậy bạn hãy bay cùng đại bàng, chứ đừng nghĩ sẽ làm bạn cùng chim yến tước; nếu bạn muốn mình giống như loài sói hoang rong ruổi đại địa, vậy bạn hãy cùng đàn sói tiến bước, chứ không thể đồng hành cùng đàn dê.
Muốn trở thành người thông minh, hãy ở cạnh người thông minh
Nếu bạn nghĩ mình thông minh, vậy hãy ở cùng với người thông minh, bạn mới có thể càng thêm cơ trí; nếu bạn nghĩ mình ưu tú, thì bạn vẫn là nên ở cạnh người ưu tú, bạn mới có thể trở nên nổi bật.
Tục ngữ có câu: “Ngưu tầm ngưu, mã tầm mã”, sở dĩ từng xuất hiện cả một ký túc xá đều thi đậu nghiên cứu sinh, một lớp học có nhiều người đỗ đạt, cũng là kết quả từ phương diện này.
Đọc được sách hay, kết giao được với cao nhân, chính là 2 may mắn lớn của đời người. Giá trị một con người cao thấp ra sao, phần nhiều là do yếu tố bạn bè xung quanh quyết định. Bạn bè càng ưu tú, có nghĩa là giá trị của bạn càng cao, đối với sự nghiệp của bạn có trợ giúp càng lớn.
Điều tuyệt diệu của nhân sinh chính là khi tặng người hoa hồng thì trên tay sẽ lưu lại hương thơm.
Bằng hữu là thứ tài phú cả đời không thể thiếu, bởi họ là những người tương trợ cùng khích lệ, giúp bạn bách chiến bách thắng, tiến bước không lùi.
Chỗ ảo diệu của nhân sinh chính là có người dắt tay đồng hành; chỗ mỹ hảo của cuộc sống là khi ta tặng người hoa hồng, thì trên tay sẽ lưu lại hương thơm.
Nhân sinh chính là như vậy, muốn ở cạnh người thông minh, bạn phải thông minh; muốn ở cạnh người ưu tú, bạn cần ưu tú. Nếu như không thể ở cùng người như vậy, thì nhân sinh cũng sẽ không thể khởi sắc, tình yêu cũng thế, hôn nhân cũng thế, gia đình cũng thế, sự nghiệp cũng như thế.
(Bài sưu tập từ Internet)

Tấm Lòng Rộng Lượng, Bao Dung và Thiện Lương sẽ tạo ra một con người Trí Huệ

Nếu bị ai đó hạ nhục trước đám đông mà bạn không ghi hận ấy gọi là rộng lượng, nhân viên cấp dưới hoặc ai đó làm sai mà bạn không nhiếc móc mà ân cần hướng dẫn lại, đó được gọi là bao dung, có kẻ ác ý chọc ngoáy vào nỗi đau mà bạn không để ý, trả thù vậy mới là người thiện lương. Tấm lòng rộng lượng, bao dung và thiện lương sẽ tạo ra một người trí huệ.


Bao dung chính là cảnh giới tối cao của người trí huệ.
Biển lớn dung nạp trăm nghìn sông, có tấm lòng bao dung mà trở nên rộng lớn. Nếu không có tấm lòng và phong thái rộng lớn ấy, thì rất dễ sa vào những điều vặt vãnh tầm thường. Mà thực hiện được độ lượng và khoan dung, lòng ta tự nhiên sẽ trở nên ung dung nhẹ nhàng, dí dỏm hài hước, từ đó toát ra một loại sức hấp dẫn trong tính cách.
Rộng lượng là một loại điềm tĩnh thản nhiên. Tâm hồn như một dòng nước trong veo tĩnh lặng, thấy được đến tận đáy cùng. Chỉ cần sống được ung dung tự tại, thường ôm giữ cảm ân, lòng sẽ không phẫn uất, tâm trí rộng mở, lòng dạ thoáng đãng, vậy nên sẽ không than sầu kể khổ trước mặt bất cứ ai.
Bởi không có trói buộc và vướng bận những chuyện vụn vặt, cũng khiến cho thân tâm được yên bình, tự nhiên có được một khoảng trời đất tự do cho ta mặc sức rong ruổi. Phàm là chuyện gì, ta hãy nghĩ thoáng một chút, nghĩ rộng một chút, điều nhận lại được quả nhiên là cuộc sống tự nhiên phóng khoáng, tự tại nhẹ nhàng.
Rộng lượng là một loại lạc quan, là một loại hào sảng. Mỗi người đều hy vọng mỗi một ngày của bản thân đều vui vẻ thuận lợi. Tuy vậy nếu đã là cuộc sống, đều sẽ khó tránh những trắc trở chông gai. Khi ở vào loại tình huống này, so đo tính toán sẽ khiến ngày tháng của bản thân trở nên nhạt nhẽo vô vị. Tấm lòng rộng lượng trái lại có thể khiến cuộc sống mỗi ngày của chúng ta tràn ngập ánh sáng, có thể xua tan những đau khổ và nước mắt. Dẫu cuộc sống có bao nhiêu khó khăn và trắc trở, trên khuôn mặt chúng ta mãi luôn tràn ngập nụ cười.
Rộng lượng là một loại tự tin, trần gian ba nghìn việc, dửng dưng một nụ cười. Trong cuộc sống tràn đầy cố gắng vươn lên, mà trước mặt người rộng lượng không bao giờ có thất bại. Bởi tự tin chính là bí quyết đầu tiên để thành công. Tin chắc bản thân là người cầm lái và người chủ của cuộc sống, chứ không vì được mất nhất thời mà đánh mất dũng khí và tín tâm vào cuộc sống. Cái gọi là thất bại chính là sự thất vọng đối với đời người; chỉ cần có lòng tin, cố gắng sống tốt từng ngày, con đường phía trước chính là quang minh.


Không bị tham, sân, si nó vây hãm sẽ tạo ra một nét đẹp thanh tao.
Rộng lượng là một loại hành vi tự mình tu dưỡng. Phàm là người rộng lượng, thường luôn xem trọng tu thân dưỡng tính, tính cách cởi mở, có hiểu biết sâu sắc về nhân tình thế thái, trước sau luôn giữ được một tâm thái giản dị bình lặng, xem nhẹ danh lợi, không cầu vinh hoa, không tham quyền quý, đường đường chính chính làm người, ung dung thản nhiên xử thế.
Rộng lượng là một loại trí huệ. Người rộng lượng là người có tri thức am hiểu lễ nghĩa, nếm trải hết bể dâu của đời người, hiểu rõ muôn vẻ của thế gian, không quan tâm thiệt hơn, lâm nguy không loạn. Trong cuộc sống, có người chỉ vì chút lợi nhỏ nhoi mà cân đo đong đếm, có người bởi gặp phải thất bại nhất thời mà thống khổ không thôi. Người rộng lượng lại có thể lấy thái độ của người ngoài cuộc để bình tĩnh xử lý, tiêu sái tự nhiên, vững vàng thành thạo.
Con người ta thường có một ‘bệnh’ chung như vầy: hẹp hòi, nhỏ mọn, khó hiểu, phiền não, u sầu, tự ti, tuyệt vọng, đố kỵ, nghi ngờ… Mà đối với những người rộng lượng, những thói xấu này không thể cản bước chân của họ.
Rộng lượng là một loại tình cảm sâu đậm, một loại cảnh giới, một loại siêu thoát. Chúng ta kính phục, yêu thích tấm lòng rộng lượng, chúng ta càng muốn trở thành người có một tấm lòng rộng lượng hơn.
Học được rộng lượng, chính là sẽ điềm tĩnh không ham danh lợi, không trốn tránh vận mệnh. Cười nhìn hoa nở hoa tàn trước sân, đến và đi tình cờ; lặng nhìn mây cuộn mây tan trên bầu trời, không quan tâm hơn thua. Học biết rộng lượng, hiểu được khoan dung, tâm thái bình hòa; không vì con đường tương lai rộng mở mà tự phụ, không vì nghịch cảnh thất ý mà u sầu, thành bại được mất mặc người bình luận, tin rằng sau cơn giông bão sẽ xuất hiện cầu vồng, mùa đông giá rét qua đi là cảnh tượng liễu ám hoa minh.


Tâm thái bình hòa và rộng lớn như biển cả thì nét đẹp ấy hẳn là thoát tục, tiên thiên.
Cuộc sống này, nếu nhiều rộng lượng hơn một chút, thế gian con người sẽ thêm phần tốt đẹp. Sống cuộc đời rộng lượng, ta mới có thể có được niềm vui của đời người! Vậy, để cuộc sống này trở nên rộng mở hơn, có mấy điều mà mỗi chúng ta cần ghi nhớ:
1. Chớ nên biến cuộc sống thành một nỗi nhớ quê nhà, cuộc sống ở bên này, phiền não ở bên kia; bởi một tâm tình bi quan cũng đủ để chôn vùi mọi vui vầy trong cuộc sống. Một mảnh điền viên trong tâm, trời cao biển rộng, phong cảnh thản nhiên, chốn bình yên nơi sâu thẳm trong tâm hồn bạn, không chút liên quan gì với những điều bạn nhìn thấy hay những gì bạn mất đi.
2. Trải qua một kiếp người, trăng sáng hoa rơi, có rất nhiều điều khiến ta tiếc nuối, càng có nhiều khó xử, dính mắc cái gì thì bị điều ấy trói buộc Vậy nên, hãy thoải mái trong tâm, năm tháng dời đổi âm thầm, hết thảy những điều này chẳng qua là ảo tượng. Một kiếp nhân sinh, từ đầu đến cuối đều là hành trình tìm lại bản thân, rằng ta từ đầu đến, và sẽ đi về đâu.
3. Năm tháng này là gì đây? Xuân – hạ – thu – đông. Lòng người này là gì đây? Ấm – lạnh – buồn – vui. Chúng ta đều đang suy nghĩ, rằng sinh mệnh có ý nghĩa đặc thù gì, ta muốn có được gì đây?
(Bài viết sưu tầm từ Internet)

11/05/2018

My favorite text editors


20/04/2018

Chuyển file p12 sang file pem để cấu hình push notification

Khi export từ Keychain Access, chúng ta thu được file ở định dạng p12, giả sử ta đặt tên là folami.p12.
Sau đây là các bước để chuyển file này sang định dạng pem để sử dụng khi kết nối APNS server trong push notification:

  1. Xuất thông tin chứng chỉ (certificate) từ  file p12:
     openssl pkcs12 -in folami.p12 -clcerts -nokeys -out folamicert.pem
    OpenSSL sẽ yêu cầu bạn nhập passphrase để truy xuất file p12.
  2. Xuất thông tin khóa bí mật (private key) từ file p12:
    openssl pkcs12 -in folami.p12 -nocerts -out folamikey.pem 
    OpenSSL sẽ yêu cầu bạn nhập passphrase để truy xuất file p12 và yêu cầu bạn thiết lập passphrase của file pem.
  3. Xóa passpharse khỏi file pem:
    openssl rsa -in folamikey.pem -out folamikey_nop.pem
    OpenSSL sẽ yêu cầu bạn nhạp vào passphrase của file pem mà bạn đã thiết lập ở bước 2 ở trên.
  4. Tạo file pem:
    cat folamicert.pem folamikey_nop.pem > folami.pem
  5. Bây giờ bạn có thể thử file pem rồi (mình giả sử file p12 là tương ứng với môi trường development):
    openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert folami.pem -debug -showcerts 

13/04/2018

Kinh nghiệm chuyển nhà đăng ký tên miền quốc tế

Khi mình không hài lòng với nhà đăng ký tên miền của mình, muốn chuyển sang nhà đăng ký tên miền khác thì một công việc phải làm là yêu cầu nhà đăng ký tên miền cũ unlock tên miền và gửi mình mã EPP (Authentication Code).
Tuy nhiên một số nhà đăng ký tên miền trong nước thường gây khó dễ hoặc có nhiều thủ tục rờm rà mất thời gian như phải lên văn phòng điền vào form,  phải chứng minh mình là chủ thật sự của tên miền, ... trong trường hợp này bạn nên liên lạc với ICANN theo đường link bên dưới: https://forms.icann.org/en/resources/compliance/complaints/transfer/form

09/01/2018

Tên file bằng Tiếng Nhật trong zip file


Khi làm việc với khách hàng Nhật Bản. Đôi khi mình nhận được tập tin nén dạng zip, 7z. Trong đó tên file đặt bằng Tiếng Nhật. Tuy nhiên khi chúng ta giải nén thì tên file không hiển thị được mà bị vỡ (corrupt).
Nguyên nhân là chúng ta đang dùng PC (Windows, Mac, Linux) bản quốc tế hỗ trợ Unicode. Còn khách hàng chúng ta đang dùng bản có encoding là shift_jis.
Giải pháp: Sử dụng tool tên là unar. Tool này tự nhận biết encoding của tên file trong file nén và giữ nó khi giải nén.
Tải tool này tại liên kết: https://theunarchiver.com/command-line
Đây là command line tool, do đó để sử dụng chỉ cần copy nó ở chỗ nào thuận lợi cho bạn. Mở Terminal lên và di chuyển đến thư mục chứ unar tool và gõ câu lệnh:
unar đường_dẫn_đến_file_nén
Chúc bạn thành công

05/12/2017

Top ten must read books for Software Architects


  1. R.Taylor, N. Medvidovic, E.Dashofy-Software Architecture: Foundations, Theory, and Practice, Wiley, 2009, ISBN:978-0470167748
  2. F.Buschmann,‎ R.Meunier,‎ H.Rohnert,‎ P.Sommerlad, M.Stal-Pattern-Oriented Software Architecture Volume 1: A System of Patterns, Wiley, 1996, ISBN:978-0471958697
  3.  E.Gamma,‎ R.Helm,‎ R.Johnson,‎ J.Vlissides-Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, 1994, ISBN:978-0201633610
  4. L.Bass,P.Clements,‎ R.Kazman-Software Architecture in Practice (3rd Edition) (SEI Series in Software Engineering), Addison-Wesley Professional, 2012, ISBN:978-0321815736
  5. S.Brown-Software Architecture for Developers, LeanPub, 2012,ISBN: Ebook
  6. I.Gorton-Essential Software Architecture, Springer, 2011, ISBN:978-3642191756
  7. M.Lippert, S.Roock-Refactoring in Large Software Projects: Performing Complex Restructurings Successfully, Wiley, 2007, ASIN: B0014ELAZA
  8. N.Rozanski, E.Woods-Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives (2nd Edition), Wesley Professional, 2011, ISBN:978-0321718334
  9. M.Fowler-Patterns of Enterprise Application Architecture, Wesley Professional, 2002, ISBN:978-0321127426
  10. D.Hendricksen-12 Essential Skills for Software Architects, Wesley Professional, 2011, ISBN:978-0321717290

29/11/2017

In stacktrace trong C++

Trong lập trình C++, rất nhiều tình huống debug bạn muốn in stacktrace giống như Java. Đoạn chương trình sau sẽ giúp bạn đạt được mục tiêu đó

#include <execinfo.h> // for backtrace
#include <dlfcn.h>    // for dladdr
#include <cxxabi.h>   // for __cxa_demangle

#include <cstdio>
#include <cstdlib>
#include <string>
#include <sstream>
std::string MyClass::Backtrace(int skip)
{
    void *callstack[128];
    const int nMaxFrames = sizeof(callstack) / sizeof(callstack[0]);
    char buf[1024];
    int nFrames = backtrace(callstack, nMaxFrames);
    char **symbols = backtrace_symbols(callstack, nFrames);

    std::ostringstream trace_buf;
    for (int i = skip; i < nFrames; i++) {
        printf("%s\n", symbols[i]);

        Dl_info info;
        if (dladdr(callstack[i], &info) && info.dli_sname) {
            char *demangled = NULL;
            int status = -1;
            if (info.dli_sname[0] == '_')
                demangled = abi::__cxa_demangle(info.dli_sname, NULL, 0, &status);
            snprintf(buf, sizeof(buf), "%-3d %*p %s + %zd\n",
                     i, int(2 + sizeof(void*) * 2), callstack[i],
                     status == 0 ? demangled :
                     info.dli_sname == 0 ? symbols[i] : info.dli_sname,
                     (char *)callstack[i] - (char *)info.dli_saddr);
            free(demangled);
        } else {
            snprintf(buf, sizeof(buf), "%-3d %*p %s\n",
                     i, int(2 + sizeof(void*) * 2), callstack[i], symbols[i]);
        }
        trace_buf << buf;
    }
    free(symbols);
    if (nFrames == nMaxFrames)
        trace_buf << "[truncated]\n";
    return trace_buf.str();
}


25/11/2017

UNG THƯ TÂM HỒN


Bài này copy từ Internet. Mình chỉ sưu tầm và chia sẻ vì thấy nó hay. Xin cám ơn tác giả.
1. NGẠO MẠN
Loại ung thư tâm hồn này hủy diệt cái Thấy. Nó bẻ cong các chiều hướng của không gian nhận thức, triệu chứng phát ra ngoài là ảo tưởng về sự lớn, sự quan trọng, sự kiểm soát, sự độc lập của bản thân và dẫn tới triệu chứng di căn là khi cảm thấy quan trọng hơn tất thảy mọi thứ xung quanh.
Ngoài ra, loại ung thư này dễ tạo nhiều triệu chứng mà bệnh nhân không kiểm soát nổi. Đó là cảm giác cáu, giận khi người khác không làm theo ý mình. Triệu chứng gồm có Khó chịu khi nghe sự thật, dị ứng khi bị người khác góp ý. Bệnh nặng lên sẽ dẫn tới mất hoàn toàn khả năng học tập và huyễn tưởng mình có câu trả lời cho mọi câu hỏi.
2. ÍCH KỶ
Loại ung thư này làm tê liệt người bệnh bằng một cảm giác phải sở hữu. Người bệnh cảm thấy đáng được có nhiều điều hơn là cuộc sống đã ban cho họ. Vì thế, họ bị huyễn tưởng về một vũ trụ mà họ là trung tâm. Mọi thứ đều phải hút về họ, thuộc về họ. Sự tập trung vào sở hữu làm họ hoàn toàn phát triển kháng thể với Hạnh Phúc. Và những người này hoàn toàn mất đi khả năng hạnh phúc.
Vì sao? Bởi vì hạnh phúc đến từ việc phục vụ người khác. Hạnh phúc đến bởi lực hướng ngoại. Một người chỉ phục vụ chính mình và bắt buộc mọi thứ xung quanh phải phục vụ họ đi ngược chiều hướng này. Và vì thế, mọi mối quan hệ của họ đều đổ vỡ khi bệnh nặng lên.
Ngoài ra, một phản ứng phụ của loại ung thư này làm cho bệnh nhân bị mù. Mù không nhìn thấy nhu cầu của người khác. Sau đó là bị phù nề. Họ mất đi khả năng cảm nhận thế giới.
3. THAM LAM
Loại ung thư này làm cho bệnh nhân phát điên rồ. Và người bệnh nằm ở trong một trạng thái bất hạnh và đau đớn không ngừng. Họ bị mất trí nhớ về những gì họ đang có. Họ chỉ muốn có thêm nhiều nữa. Và vì thế, rất nhiều thứ quan trọng bị xóa khỏi trí nhớ của họ.
Trong quá trình bệnh phát triển, các tế bào lòng tốt, sự biết ơn, sự kiên nhẫn, lòng dũng cảm, sự trung thực v.v... dần bị thay thế bởi các tế bào hỏng hóc và lỗi. Một số triệu chứng thường được nhận thấy là họ thường xuyên so sánh với người khác về cái mà người khác có, thường xuyên than thở về điều kiện, sau đó là các triệu chứng như nói dối, lừa đảo để đạt điều họ muốn.
4. HAM MUỐN
Đây là một loại virus mang lại ung thư. Loại virus này thường được thể hiện ra bằng lời hứa không được giữ và cuộc sống đa nhân cách. Di chứng để lại là tai và mắt bị di chuyển lệch khỏi chỗ. Triệu chứng của loại ung thư này thể hiện ra bởi các loại dối trá và các suy nghĩ ti tiện.
5. HÈN NHÁT
Ung thư hèn nhát kinh khủng hơn sự viêm nhiễm của sợ hãi rất nhiều. Những người bị ung thư tâm hồn dạng hèn nhát sẽ bị bại liệt toàn thân. Loại ung thư này ăn nát nội tạng Quyết tâm và Quyết đoán. Vì thế, tất cả các giác quan liên quan tới cơ hội và phát triển đều suy giảm nặng.
KẾT LUẬN
Như các loại ung thư của cơ thể, ung thư tâm hồn, nếu không chữa trị kịp thời từ giai đoạn đầu sẽ lan truyền tới các cơ quan sống còn, hủy diệt nhân cách, tàn phá cá tính, gây thối rữa đức tin và tình yêu thương.
Khi ấy, dù cơ thể có khỏe thì cũng chỉ là một loại xác sống lờ đờ trong chốn nhân gian.

17/11/2017

Lưu ý khi debug hydrid application ở iOS


Sáng nay mất cả mấy tiếng đồng hồ tại sao cái iPad của mình không xuất hiện trong Developer menu của thằng Safari trên Mac OS PC. Kiểm tra tất cả cấu hình đều OK hết.
Cuối cùng mới phát hiện ra là cái iPad mình sử dụng iOS 11 tức là nó dùng Safari 11. Còn cái Mac OS PC thì đang dùng Safari 10.

10/11/2017

Phân biệt iPhone hay iPad trong Qt

Trong một số chương trình nhất là layout màn hình mình cần phân biệt iPhone hay iPad. Hàm sau đây sẽ giúp bạn thực hiện điều đó:

#if defined Q_OS_IOS
#include <sys/utsname.h>
QString deviceName()
{
    struct utsname systemInfo;
    uname(&systemInfo);
    QString machineName(systemInfo.machine);
    return machineName;
}
#endif

06/11/2017

Some Ruby free courses


05/11/2017

Từ một bài ca cổ

Xem chương trình "Hát mãi ước mơ" trên HTV7, được nghe một bạn thí sinh hát bài "Xuân đời con có mẹ" (Soạn giả Ngọc Chi). Nghe rất cảm động nên đã nghe đi, nghe lại không biết bao nhiêu lần. Trong đó có bản vắn "Nặng tình xưa":
Và con chim Từ Ô giữa mùa đông mổ ... thịt
Của mình nuôi con.
Đớn đau thân Mẹ để no lòng chim non.
Loài vật kia còn sâu nặng thâm tình,
Nghĩ chuyện chim mà nhớ Mẹ thương mình.
Nước mắt con rơi để vành môi thấm mặn,
Ân nghĩa nào làm đau xé lòng con.
Hình ảnh từ u khác chi đời của Mẹ,
Vắt máu tim mình cho con được lớn khôn.

Tuy nhiên hổm rày cứ thắc mắc mãi chim "Từ Ô" trong đoạn này là chim gì?
Mình nhớ không lầm trong "Phong kiều dạ bạc" của Trương Kế có hai câu:
月落烏啼霜滿天,
Nguyệt lạc Ô đề sương mãn thiên
江楓漁火對愁眠。
Giang phong ngư hoả đối sầu miên
(Trăng tà chiếc quạ kêu sương
Lửa chài, cây bến, sầu vương giấc hồ
Tản Đà dịch)
Bạch Cư Dị có bài: Từ Ô dạ đề có đoạn viết:
慈烏失其母
Từ Ô thất từ mẫu
啞啞吐哀音
Á á thổ ai âm
Trong đêm trước trận Xích Bích, Tào Mạnh Đức còn cảm khái:
月明星稀,
Nguyệt minh tinh hy,
烏鵲南飛 
Ô thước nam phi
Quách Tấn một lần bốc thuốc cho mẹ vào ban đêm, vô tình chân giẫm lên chiếc mo cau khô làm bầy quạ đang ngủ trên cây giật mình bay tan tác, kêu vang trong đêm nên ông viết ra bài: Đêm thu nghe quạ kêu, trong đó mở đầu bằng hai câu thơ rất đắt:
Từ Ô Y hạng rủ rê sang, 
Bóng lẫn đêm thâu tiếng rộn ràng... 
Đến đây chắc hẳn Từ Ô là con quạ đen rồi. Con quạ đen theo tín ngưỡng phương đông là loài chim ăn tạp, hung dữ và mang điềm gỡ.
Tuy nhiên Việt Nam có một bài Vè về các loài chim trong đó có đoạn:
"Mẹ già tuổi tác
Lòng con thương lo
Nuôi mẹ ấm no
Là con chim quạ."
Con chim quạ được mệnh danh là con chim có hiếu nhất trong các loài chim. Là loài chim duy nhất biết tha mồi về nuôi mẹ khi mẹ nó già yếu. Hình ảnh chim quạ được Phật giáo sử dụng để giáo dục về chữ hiếu cho Phật tử.
Quay lại hai chữ "Từ Ô" trong bài ca cổ mà soạn giả Ngọc Chi thì không phải là con chim quạ rồi. Vậy loài chim nào mổ thịt của mình nuôi con?
Câu hỏi này thì các bạn Công giáo sẽ dễ dàng trả lời vì trên nóc nhà chầu có tượng một con chim và giáo lý có hai câu:
Lềnh đềnh mổ nát thịt mình
Nuôi con thơ dại tận tình vì con.
Trong game show "Ai là triệu phú" có lần hỏi "Chim lềnh đềnh là tên gọi khác của loài chim nào?". Câu trả lời là chim Bồ nông đó các bạn ạ.
Thật ra chim Bồ nông không mổ thịt mình để nuôi con. Khi bắt cá, chim Bồ nông giữ bên hàm của nó. Khi cho con ăn, chim mẹ đập nát cá ra, máu cả chảy ra, chim mẹ mớm cho chim con. Người xưa tưởng rằng chim mẹ lấy máu mình nuôi con. Dù sao đây cũng là một hình ảnh đẹp về tình mẹ con.

02/10/2017

Tản mạn Tháng Mười

Cứ mỗi lần tháng 10 đến thì lòng cứ nao nao làm sao ấy. Cứ nhớ mãi cái thời trong tim một bầu nhiệt huyết muốn làm nổ tung mọi thứ. Tuy không đến nổi như anh chàng Danko bứt xé tim mình để làm ngọn đuốc rọi sáng con đường khổ ải và dẫn dắt mọi người (Bà lão Izecghin-Maksim Gorky), cũng không có cơ hội như anh chàng Andrei gởi vợ cho cha và em chăm sóc sau đó gia nhập quân đội với niềm hy vọng là có thể tìm thấy ý nghĩa cuộc sống cũng như công danh trên chiến trường (Chiến tranh và hoà bình-Leo Tolstoy). Và rất nhiều thanh niên ra đi không biết ngày quay lại nhưng vẫn vững tin rằng mình sẽ trở về trong giai đoạn bi tráng của dân tộc:
Chẳng mong chi ngày về
Thì em ơi cứ đợi!
(Đợi anh về-Konstantin Simonov)
Rất rất nhiều lần mình thèm được thốt lên như anh chàng Pavel ngồi xe lăn và cố gắng thốt lên rằng: Mình không được quyền lùi bước trước khó khăn, tin tưởng vào tình yêu mới và chuyển sang viết sách vẫn với ngọn lửa và chất thép đã được tôi luyện ngày nào (Thép đã tôi thế đấy-Nikolai Ostrovsky)
Mãi chạy theo tiếng gọi của tháng 10 mà rất nhiều lần thầm nói "Xin cô tha lỗi cho chúng em" như anh chàng Safonov (Yuri Bondarev) vì bận rộn mà không thể về thăm Thầy (cô) được.

Hơn nửa đời người nhìn lại, học được chữ buông  và tháng 10 năm nay chỉ còn thế này thôi:
Người vá trời lấp bể 
Kẻ đắp luỹ xây thành 
Ta chỉ là chiếc lá 
Việc của mình là xanh
(Lá xanh-Nguyễn Sĩ Đại)




09/09/2017

My first PyQt5 application

Traditionally, when we start to learning new programming language or framework, the first application is hello world application.
I start to learn PyQt5. The first application below:


import sys
from PyQt5.QtWidgets import QApplication, QWidget,QLabel
 
class App(QWidget):
 
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5'
        self.left = 10
        self.top = 10
        self.width = 640
        self.height = 480
        self.initUI()
 
    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height) 

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    b = QLabel(ex)
    b.setText("Welcome to PyQt5!")
    b.move(50,20)
    ex.show()
    sys.exit(app.exec_())


08/09/2017

Qt/QML: Four-finger swipe gesture bug

Problem:
I am developing an application for Android/iOS.
I am using MouseArea to make my button.
I am stuck in the following case:
Touch on screen with 4 fingers, 1 finger among them touch on the button.
Swipe the screen.
The application become inactive state. I display a item as a popup (the button will go into disabled state) when the application become active state again. Then the popup will be hidden, the button is enabled state.
Now the button doesn't receive mouse event again.
Solution:
I override notify method of QGuiApplication:

bool MyApplication::notify(QObject *receiver, QEvent *event){
    QEvent::Type t = event->type();
    switch(t){
    case QEvent::MouseButtonPress:{
        QString classname(receiver ->metaObject()->className());
        lastReceiver = receiver;
    }
        break;
    case QEvent::MouseButtonRelease:
        lastReceiver = NULL;
        break;
    case QEvent::ApplicationStateChange:
        //To background
        if (lastReceiver != NULL){
            QQuickItem*item = qobject_cast< QQuickItem*>(lastReceiver);
            if (item != NULL){
                if(QGuiApplication::applicationState() == Qt::ApplicationInactive){
                    item ->ungrabMouse();
                }
                if(QGuiApplication::applicationState() == Qt::ApplicationActive ){
                    item ->grabMouse();
                    lastReceiver = NULL;
                }
            }
        }

        break;
    default:
        break;
    }
    return QGuiApplication::notify(receiver,event);
}

06/08/2017

Qt/QML: Scale Text

Lập trình Qt/QML cho di động (mobile) nhất là Android, không ít lần mình phải đối mặt với bài toán làm sao đoạn text có thể lớn nhỏ đủ trong khung đất dành cho nó dù cho font chữ có thay đổi tuỳ theo thiết bị. 
Sau đây là cách làm của mình:
NLCScalableText.qml:
import QtQuick 2.7
Text {
    /**
      * This is scale rate we want the text must follow.
      * incase that we want share the scale rate to other text.
      */
    property real niceScale:1.0;
    /**
      * This is the scale rate we want the text to scale.
      */
    property real wantScale:idNLCTextPrivate.getWantScale();
    id:idNLCText
    QtObject{
        id:idNLCTextPrivate
        function getWantScale(){
            if (idNLCText.width > 0){
                return (idNLCText.paintedWidth/idNLCText.lineCount) > idNLCText.width ? ((idNLCText.width*idNLCText.lineCount) / idNLCText.paintedWidth): 1;
            }else{
                return 1.0;
            }
        }
        function getScale(){
            return Math.min(idNLCText.niceScale, getWantScale());
        }
    }
    scale:idNLCTextPrivate.getScale();
    horizontalAlignment: Text.AlignHCenter
}

10/06/2017

Câu 5, Lớp 10, ĐHSP Hà Nội 2017


Đề:
Cho đường tròn (O) bán kính R ngoại tiếp tam giác ABC có 3 góc nhọn. Các tiếp tuyến của đường tròn (O) tại các điểm B, C cắt nhau tại P. Gọi D,E là chân các đường vuông góc hạ từ P xuống AB, AC và M là trung điểm BC.
1) Chứng minh $\widehat{MEP} = \widehat{MDP}$
2) Giả sử B,C cố định và A chạy trên đường tròn (O) sao cho tam giác ABC luôn là tam giác có 3 góc nhọn.Chứng minh đường thẳng DE luôn đi qua một điểm cố định.
3) Khi tam giác ABC đều, hãy tính diện tích tam giác ADE theo R.
Bài giải:

1) Tam giác cân OBC có OM vừa là trung tuyến, vừa là đường cao. $OM \perp BC$
◿OBP = ◿ OCP bởi vì OB=OC=R, OP chung
$\Rightarrow PB = PC $
$ \Rightarrow \triangle PBC $ là tam giác cân tại P
$ \Rightarrow PM \perp BC$ và $\widehat{BPM} = \widehat{CPM}$ (1)
Tứ giác PMBD là tứ giác nội tiếp vì có hai góc đối là hai góc vuông.
$ \Rightarrow \widehat{BDM} = \widehat{BPM} $ (Góc nội tiếp cùng chắn cung BM) (2)
Tương tự tứ giác PMCE cũng là tứ giác nội tiếp vì có hai góc đối là hai góc vuông.
$ \Rightarrow \widehat{CEM} = \widehat{CPM} $ (Góc nội tiếp cùng chắn cung CM) (3)
Từ (1),(2), (3) ta suy ra:
$\widehat{BDM} = \widehat{CEM} $
$\Rightarrow \widehat{MEP} = \widehat{MDP}$
2) Gọi F là giao điểm của OP và DE. Vì B,C, (O) cố định nên P là cố định.
Do đó OP là cố định. Ta chứng minh F là cố định.
$\widehat{CAB} = \widehat{PBM} $ (Góc nội tiếp cùng chắn cung BC) (4)
Từ (2) và (4) ta suy ra:
$\widehat{CAB} + \widehat{BDM} = 90^o$
$\Rightarrow DM \perp AC $
$\Rightarrow DM // PE $
Chứng minh tương tự ta có EM // PD
Vậy tứ giác MDPE là hình bình hành hay F là trung điểm của MP. Hay F là cố định.
3) Khi tam giác ABC đều. $S_{\triangle ABC} =\frac{3\sqrt{3}R^2}{4}$
 $S_{\triangle ADE} = \frac{1}{2}*AF*DE= \frac{1}{2}*\frac{3}{2}AM*\frac{3}{2}BC=\frac{9}{4}*S_{\triangle ABC}=\frac{27\sqrt{3}R^2}{16}$

03/06/2017

Câu 1, Lớp 10, ĐHSP Hà Nội 2017


Đề:
Cho biểu thức:
$P = \frac{a^3-a-2b-\frac{b^2}{a}}{(1-\sqrt{\frac{1}{a}+\frac{b}{a^2}})(a+\sqrt{a+b})}:(\frac{a^3+a^2+ab+a^2b}{a^2-b^2}+\frac{b}{a-b}) $
với a>b, b>0, $a \neq b$, $a+b \neq a^2$

1. CMR: P=a-b
2. Tìm a,b biết rằng P=1 và $a^3-b^3=7$

Bài làm:
1. $M = \frac{a^3+a^2+ab+a^2b}{a^2-b^2}+\frac{b}{a-b}$
 $= \frac{a^3+a^2+ab+a^2b+b(a+b)}{a^2-b^2}$
$= \frac{a^3+a^2+2ab+a^2b+b^2}{a^2-b^2}$
$= \frac{a^3+a^2b+a^2+2ab+b^2}{a^2-b^2}$
$= \frac{a^2(a+b)+(a+b)^2}{a^2-b^2}$
$= \frac{(a+b)(a^2+a+b)}{a^2-b^2}$
Do a> 0, b> 0, nên $a+b \neq 0 $ 
$M = \frac{a^2+a+b}{a-b}$ 
$T = \frac{a^3-a-2b-\frac{b^2}{a}}{(1-\sqrt{\frac{1}{a}+\frac{b}{a^2}})(a+\sqrt{a+b})}$
$=\frac{a^4-a^2-2ab-b2}{(a-\sqrt{a+b})(a+\sqrt{a+b})}$
$=\frac{a^4-a^2-2ab-b2}{a^2-(a+b)}$
$=\frac{(a^2)^2-(a+b)^2}{a^2-(a+b)}$
$=a^2+a+b$
Do đó:
$P = \frac{T}{M} = a -b$
2. $P = 1 \iff a-b = 1 \iff a = b+ 1$
$a^3-b^3 = 7$ 
$\iff (b+1)^3-b^3 = 7$ 
$\iff  3b^2+3b+1 = 7$ 
$\iff  b^2+b-2 = 0$ 
$\iff  b = 1 \vee b = -2$
Tuy nhiên b > 0 do đó $b = 1 \Rightarrow a= 2$
Đáp số: a=2, b=1

01/06/2017

Câu 6, Lớp 10, ĐHSP Hà Nội 2017

Đề:
Có các số thực không âm $x_1,x_2,...,x_9$ thoả mãn:

$\begin{cases} x_1+x_2+...+x_9 = 10 \\ x_1+2x_2+...+9x_9 = 18 \end{cases}$

CMR: $1.19x_1+2.18x_2+...+9.11x_9 \geq 270$, đẳng thức xảy ra khi nào?

Lời giải:
$S=1.19x_1+2.18x_2+...+9.11x_9$
$=(x_1+2x_2+...+9x9)+\frac{19x_1+18x_2+..+11x_9}{100}$
$=18+\frac{(19x_1+18x_2+..+11x9)-20(x_1+x_2+...+x_9)+20(x_1+x_2+...+x_9)}{100}$
$=18+\frac{20*10-(x_1+2x_2+...+9x_9)}{100}$
$=18+\frac{200-18}{100}$
$=19.82$
S=19.82. Tại sao đề lại yêu cầu chứng minh $S \geq 270$ rồi còn hỏi đẳng thức xảy ra khi nào nữa !!!

Câu 2, Lớp 10, ĐHSP Hà Nội 2017

Đề: 
Giả sử x, y là hai số thực phân biệt thoả mãn: $\frac{1}{x^2+1}+\frac{1}{y^2+1}=\frac{2}{xy+1}$
Hãy tính $S=\frac{1}{x^2+1}+\frac{1}{y^2+1}+\frac{2}{xy+1}$
Lời giải:
Từ $\frac{1}{x^2+1}+\frac{1}{y^2+1}=\frac{2}{xy+1}$
$\Rightarrow \frac{(x^2+1)+(y^2+1)}{(x^2+1)(y^2+1)}=\frac{2}{xy+1}$
$\Rightarrow (x^2+y^2+2)(xy+1) = 2(x^2+1)(y^2+1)$
$\Rightarrow x^3y+x^2+xy^3+y^2+2xy+2 = 2x^2y^2+2x^2+2y^2+2$
$\Rightarrow x^3y+x^2+xy^3+y^2+2xy+2 = 2x^2y^2+2x^2+2y^2+2$
$\Rightarrow x^3y+xy^3+2xy = 2x^2y^2+x^2+y^2$
$\Rightarrow x^3y+xy^3-2x^2y^2 = x^2+y^2-2xy$
$\Rightarrow xy(x^2-2xy+y^2) = x^2+y^2-2xy$
$\Rightarrow xy(x-y)^2 = (x-y)^2 (1)$
Do $x \ne y$ 
Nên $(1) => xy = 1 $
$S=\frac{1}{x^2+1}+\frac{1}{y^2+1}+\frac{2}{xy+1} = \frac{4}{xy+1} = \frac{4}{1+1} = 2 $

18/02/2017

Thỏ và đại bàng

Một con đại bàng đang đậu trên cây nghỉ ngơi, chẳng làm gì cả.
Con thỏ nhìn thấy thế hỏi: Tôi có thể ngồi không và chẳng làm gì như anh được không?
Ðại bàng trả lời: Được chứ, sao không.
Thế là con thỏ ngồi xuống gốc cây nghỉ ngơi. Bỗng dưng một con cáo xuất hiện, vồ lấy con thỏ mà ăn thịt.

Bài học xương máu: để được ngồi không mà chẳng cần làm gì, anh phải ngồi ở vị trí rất cao.

13/08/2016

Thấy gì qua vụ tài khoản bốc hơi 500 triệu trong đêm

Đọc bài việt trên báo Tuổi Trẻ tại đây:"Tài khoản bốc hơi 500 triệu đồng do vào đường link lạ?". Tôi không biết là nhà báo "ÁNH HỒNG-L.THANH" đã ghi lại đầy đủ chính xác những gì mà bên nhà băng giải thích chưa. Nếu như đã đầy đủ và chính xác thì lời giải thích này chưa đúng. Khi đăng ký sử dụng SmartOTP trên iBanking thì chỉ mới cho phép sử dụng SmartOTP thay cho SMS OTP thôi.
Để sử dụng SmartOTP người dùng còn cần cài một phần mềm VCB OTP nữa. Khi cài phần mềm này thì VCB OTP sẽ sử dụng số điện thoại đã đăng ký trên iBanking để xác thực. Sau khi xác thực xong thì mới được sử dụng. Đọc đến đây các bạn chắc cũng nảy sinh ra giả thiết là số điện thoại này cũng được thay đổi vì hacker đã có tài khoản iBanking của nạn nhân (Vì theo trả lời ở đây thì số điện thoại có thể thay đổi được). Giả thiết này không khả thi vì đổi số điện thoại iBanking thì còn khó hơn nữa do luôn luôn phải xác thực thông qua SMS.
Như vậy thì làm sao hacker có thể có mã OTP nhập vào để giao dịch?
Giả thuyết duy nhất là giải thuật sinh mã OTP của nhà băng đã bị lộ và hacker không cần cài đặt phần mềm VCB OTP nữa mà tự viết phần mềm sinh mã OTP cho riêng mình.
Không biết trong bài viết này có chỗ nào chưa hợp lý không? Xin mớ gạch đá xây nhà.