Thứ Năm, 11 tháng 9, 2014

Phương pháp trị vọp bẻ cấp tốc rất hiệu nghiệm.

    Vọp bẻ (còn gọi là bị chuột rút - Muscle Cramps) là do các sớ thịt li ti trong cơ bắp (thường là bắp chân dưới hay còn gọi là bắp chuối) đan thắt lại với nhau mà không thư giãn trở lại trạng thái bình thường, nên cơ bắp bị phồng co cứng, rất đau, nhất là trong khi ngủ.

    Chứng vọp bẻ thường xảy ra ở người thiếu kali (potassium), thiếu nước hay bị nhiễm lạnh v.v...
    1/ Nếu bạn đang đi bỗng nhiên bị vọp bẻ bạn chỉ cần bước lùi (đi ngược) vài bước thì sẽ hết ngay.

    2/ Nếu bạn đang ngồi, không cần đứng dậy để đi lùi, bạn chỉ cần đặt chân chạm đất rồi nhẹ nhàng nhấc chân di chuyển lui về sau vài ba bước (nếu vậy bạn từ từ duỗi chân ra trước xa xa để có khoảng cách phía sau gót mà dời chân lui được nhiều bước hơn)



    3/Nếu bạn đang nằm ngủ, bạn trở mình nằm ngữa, sau đó co chân lên và cũng dời gót chân lui vài bước hướng về mông (bạn co chân thế nào để có một khoảng cách khá xa giữa gót chân và mông mà khi bạn dời chân sẽ được nhiều bước hơn)


    4/Nếu bạn đang bơi, thì cũng vậy, cố gắng làm sao bước lui trong nước vài bước thì vọp bẻ sẽ hết.
    Chúc bạn luôn an lạc và gặp nhiều mai mắng trong đời sống



    Cánh phòng ngừa CHUỘT rút

    Có nhiều lý do bị chuột rút cơ bắp và cách ngăn ngừa tình trạng này bằng phương pháp tự nhiên cũng rất hiệu quả, theo Boldsky.


    Nguyên nhân:

    Mất nước:
    Chuột rút thường xảy ra khi cơ thể mất nước. Vì vậy nếu bạn thường xuyên bị chuột rút, hãy uống nhiều nước.

    Căng thẳng:
    Đừng để cơ thể quá mệt mỏi. Điều quan trọng là phải nghỉ ngơi đầy đủ vào ban đêm để cơ bắp có thể thư giãn.


    Vitamin D: Nếu bạn không có đủ vitamin D, bạn sẽ bị chuột rút. Vì vậy, để ngăn chặn chuột rút, hãy bổ sung các thực phẩm giàu vitamin D vào chế độ ăn uống.

    Vận động:

    Đừng ngồi lâu. Vận động thường xuyên sẽ giúp ngăn ngừa chuột rút. Ngoài ra, tập yoga là một trong những môn thể thao giúp ngăn ngừa tình trạng này.

    Giữ ấm:

    Cơ bắp lạnh có nhiều khả năng bị chuột rút. Nếu bạn dễ bị chuột rút, hãy giữ ấm đôi chân khi ngủ.

    Tập thể dục:

    Để ngăn chặn chuột rút, bạn hãy duỗi chân thường xuyên.

    Các bài tập ngoài trời:

    Chạy xe đạp trong một vài phút trong ngày sẽ giúp ngăn ngừa chuột rút ở chân.

    Sữa:

    Nếu bạn không thích sữa, có thể thay bằng các sản phẩm từ sữa như sữa chua, phô mai... Các sản phẩm sữa cung cấp canxi, tốt cho cơ bắp.

    Kali (Potassium):

    Cơ thể bạn cần một lượng kali cân bằng để ngăn ngừa chuột rút. Thực phẩm giàu kali là chuối và cam.

    Vitamin E:

    Hãy bổ sung thực phẩm giàu vitamin E vào chế độ ăn uống để giúp ngăn ngừa chuột rút vào ban đêm.

(http://tamlinhviet.org/threads/ph%C6%B0%C6%A1ng-ph%C3%A1p-tr%E1%BB%8B-v%E1%BB%8Dp-b%E1%BA%BB-c%E1%BA%A5p-t%E1%BB%91c-r%E1%BA%A5t-hi%E1%BB%87u-nghi%E1%BB%87m.2490/)

Chia sẻ cho ai mắc bệnh Trĩ Nan y

Thời gian vừa rồi mình có mắc bệnh nan y trên, mình đã đi điều trị bằng laser vẫn không khỏi, đi ngoài vẫn ra huyết, nghe đài báo uống an trĩ vương vẫn không hiệu quả, uống Dfon gì đó đặc trị bệnh trĩ nhưng vẫn không khỏi. Có bệnh và đi hỏi cầu khắp nơi. Mình được môt người ở khu Thanh Oai chỉ cho bài thuốc bằng vỏ cây uống trong vòng 10-15 ngày hoàn toàn khỏi hẳn.
- Nguồn gốc của trĩ là ăn uống thất thường và bị táo bón nhiều và dẫn tới rách phần hầu môn lâu ngày đi nhiều phần đó ko co lại, làm cho người bệnh rất khó chịu.
- Mỗi khi ăn uống đồ nóng lại càng làm lớp mao mạch nóng và dễ vỡ, nếu người bệnh máu huyết kém dẫn tới ko cầm máu được chảy nhiều tụt huyết áp gây các tai biến khác có thể tử nạn.

Mình là người đã tường mang bệnh và được người bệnh trước chỉ cho các tự chữa bệnh: lấy vỏ cây của cây lộc vừng rửa sạch và đẽo lấy vỏ sau đó đem giang và sấy lên pha nước hoặc đun lấy nước uống liên tục thay nước lọc uống hàng ngày, thì nó sẽ tự thụt và khỏi hoàn toàn,

Ghi chú: khi uống nước này thì nên dừng không uống các loại thuốc khác. đề phòng các tố chất xung đột lẫn nhau.

Còn nước đun lên màu ngà ngà đỏ uống mát dễ uống.

(http://tamlinhviet.org/threads/chia-s%E1%BA%BB-cho-ai-m%E1%BA%AFc-b%E1%BB%87nh-tr%C4%A9-nan-y.2647/)

Thứ Hai, 14 tháng 4, 2014

Set location.hash value

if(history.pushState) {
    history.pushState(null, null, "#data");
}
else {
//for ie, not use "#"
    window.location.hash = "data";
}

Thứ Sáu, 20 tháng 12, 2013

Javascript clone object

cloneObj = function(obj){
  if(ko.isWriteableObservable(obj)) return ko.observable(obj()); //this is the trick
  if(obj === null || typeof obj !== 'object') return obj;

  var temp = obj.constructor(); // give temp the original obj's constructor
  for (var key in obj) {
    temp[key] = cloneObj(obj[key]);
  }

  return temp;
};
(http://stackoverflow.com/questions/14055279/javascript-clone-object-with-knockoutjs-observable-properties?rq=1)

Thứ Sáu, 25 tháng 10, 2013

Tối ưu truy vấn CSDL SQL Server phần 3 nên xem trước khi làm project

Trong ứng dụng khi cần tương tác với database, có lẽ một cách làm rất phổ biến là tạo lập một chuỗi chứa lệnh SQL, ghép các giá trị nhập vào của người dùng thành một lệnh SQL hoàn chỉnh, rồi thực hiện chuỗi lệnh SQL đó. Như ví dụ dưới đây:


Code (C#):
    string cmdStr = "INSERT INTO Customer(Name, Address, Email, Phone) VALUES('" + txtName.Text + "', '" + txtEmail.Text + "','" + txtPhone.Text + "')";
    conn.Open();
    SqlCommand cmd = new SqlCommand(cmdStr, conn);
    cmd.ExecuteNonQuery();
Cách làm này có ưu điểm tiện lợi, giúp quá trình phát triển code nhanh (không phải chuyển qua lại giữa Visual Studio và Management Studio). Tuy nhiên nó tiềm ẩn rất nhiều vấn đề (cách làm tối ưu là viết một thủ tục trong database rồi từ ứng dụng gọi thủ tục này và truyền các tham số cho nó):

1. An ninh: việc viết lệnh SQL thẳng trong ứng dụng như vậy sẽ tạo ra lỗ hổng SQL injection, tức là hacker có thể khéo léo nhập thẳng vào trường text một chuỗi có chứa đoạn lệnh SQL và để cho database sẽ thực hiện đoạn lệnh đó. Ví dụ, khi hacker nhập vào trường txtPhone giá trị:

123');delete from order--
thì đoạn lệnh mà ứng dụng gửi cho SQL Server sẽ là:

Code (C#):
INSERT INTO Customer(Name, Address, Email, Phone) Values('','','123');delete from order--')
Chú ý là hacker cố tình đưa hai dấu gạch ngang "--" vào cuối để biến toàn bộ đoạn ký tự phía sau thành đoạn giải thích. Kết quả là SQL Server sẽ thực hiện hai lệnh, "INSERT INTO Customer…" và "delete from order", và bảng order bị xóa sạch. Tương tự hacker có thể đưa vào các lệnh khác như "drop table order" để xóa hẳn bảng khỏi database, hoặc "select * from user" để lấy hết thông tin tài khoản của người dùng.

Nếu dùng thủ tục thì vấn đề hoàn toàn bị hóa giải, vì toàn bộ giá trị của trường text sẽ được lưu vào cột tương ứng trong bảng bên trong database. Khi đó chỉ có một lệnh INSERT được thực hiện và giá trị của Phone của bản ghi mới sẽ là "123');delete from order--"

2. Hiệu năng (performance): cách làm trên sẽ dẫn đến mỗi lần thực hiện SQL Server sẽ biên dịch lại câu lệnh. Khi SQL Server nhận được một câu lệnh, nó sẽ kiểm tra xem câu lệnh này đã có kế hoạch thực thi lưu trong cache hay chưa. Nó băm (hash) câu lệnh để chuyển thành một con số và đối chiếu với bảng băm trong cache, nếu tìm thấy có nghĩa là câu lệnh này đã thực hiện trước đó rồi và SQL Server dùng luôn kế hoạch thực thi đã có sẵn. Nếu không tìm thấy có nghĩa đây là câu lệnh mới và SQL Server sẽ biên dịch, tạo kế hoạch thực thi, lưu vào cache, và thực hiện câu lệnh. Vì với hàm băm, câu lệnh chỉ cần khác đi một chút (chỉ cần thêm một dấu cách) là đã cho số băm khác nhau, nên với mỗi giá trị người dùng nhập vào sẽ tạo thành một câu lệnh mới và SQL Server lại phải trải qua các bước biên dịch, tạo kế hoạch thực thi, lưu vào cache trước khi tiến hành thực hiện câu lệnh.

Trong nhiều trường hợp, chi phí cho các bước kể trên có thể rất lớn. Ví dụ với một câu lệnh mất 100 mili giây để biên dịch trong khi cũng mất 100 mili giây để thực hiện, thì chi phí để thực hiện câu lệnh này bị tăng gấp đôi. Một hậu quả khác là mỗi lần biên dịch thì kế hoạch thực thi mới sẽ chiếm chỗ trong cache, trong khi kích thước của cache chỉ có hạn. Đến một lúc kế hoạch thực thi của các câu lệnh khác sẽ bị loại khỏi cache để giải phóng chỗ, và đến khi các câu lệnh khác đó được thực hiện thì lại cần biên dịch lại. Như vậy hiệu năng của toàn bộ hệ thống bị giảm.

Khi dùng thủ tục thì tình huống sẽ thay đổi hẳn, vì SQL Server chỉ băm câu lệnh gọi đến thủ tục mà bỏ qua các tham số, cho nên khi đã thực hiện EXEC Proc1 @param=1 thì đến khi gặp EXEC Proc1 @param=2 SQL Server không cần biên dịch lại thủ tục nữa.

3. Bảo mật: Khi ta viết thẳng lệnh SQL vào ứng dụng như trên thì user được dùng để kết nối vào database (trong connection string) cần phải có quyền INSERT vào bảng. Thông thường các ứng dụng có đủ các thao tác đọc/ghi/xóa vào database, cho nên user trên cũng đòi hỏi đủ các quyền SELECT/INSERT/UPDATE/DELETE vào các bảng trong database. Khi hacker chiếm được quyền truy nhập vào database với user trên, hắn ta có thể mặc sức tung hoành làm bất cứ điều gì hắn muốn trong database.

Khi dùng thủ tục thì user không cần bất cứ quyền nào trực tiếp trên bảng, user chỉ cần quyền thực thi thủ tục và khi chạy thì thủ tục thực hiện các thao tác trên bảng cho user. Ta có thể dỡ bỏ hết các quyền của user trên tất cả các bảng và chỉ cấp quyền thực thi trên các thủ tục cần thiết. Ta cũng có thể đồng thời dỡ bỏ quyền truy nhập vào các bảng hệ thống, cho nên nếu hacker có truy nhập được vào database thông qua user trên, hắn ta sẽ mù tịt không biết database có các bảng nào để mà phá.

Nếu hắn truy nhập được vào mã nguồn của ứng dụng thì có thể biết được tên của các thủ tục được dùng trong ứng dụng và chạy các thủ tục này, nhưng mức độ phá hoại của hacker bị khống chế ở mức thấp hơn nhiều so với khi user có đủ các quyền.

4. Bảo trì: thường có những đoạn lệnh SQL được dùng lại ở một vài nơi khác nhau trong ứng dụng, hoặc thậm chí ở các ứng dụng khác nhau truy nhập chung vào một database. Khi viết thẳng SQL code trong ứng dụng ta sẽ phải viết lại đoạn lệnh trên ở tất cả những nơi nó được dùng. Điều này đã phạm vào lỗi "lặp lại code" (duplication of code) trong phát triển phần mềm. Khi cần phải sửa lại câu lệnh SQL trên (vì lỗi hoặc cần viết theo cách tối ưu hơn, hoặc cấu trúc database thay đổi dẫn đến cần viết lại) ta sẽ phải tìm đến tất cả các nơi có dùng câu lệnh SQL đó để sửa.

Với thủ tục thì ta chỉ cần sửa ở một nơi và nó có tác dụng cho toàn ứng dụng. Giống như .net tách mã chương trình ra khỏi mã html, dùng thủ tục cũng tách mã SQL ra khỏi mã chương trình. Lúc đó thủ tục có chức năng như là cổng truy nhập, hay API, mà qua đó ứng dụng giao tiếp với database. Nó tạo thành một lớp ngăn cách giữa ứng dụng và database, và che dấu toàn bộ cấu trúc database khỏi ứng dụng. Ứng dụng không cần biết database gồm có những bảng gì, mỗi bảng có các cột nào, hay các bảng quan hệ với nhau ra sao. Vì thế ta có thể dễ dàng thay đổi cấu trúc của database khi cần và sửa lại các thủ tục có liên quan mà không ảnh hưởng gì đến ứng dụng.

Kết luận: Việc viết mã SQL trong ứng dụng có rất nhiều vấn đề như đã chỉ ra. Với những ứng dụng nhỏ hoặc ứn dụng có những đặc thù nhất định, những vấn đề trên có thể không bộc lộ hết ra, nhưng khi ta quyết định chọn phương pháp này thì cũng cần ý thức được những hệ quả có thể xảy ra của nó. Có những trường hợp ta không muốn lưu mã nguồn trong database, ví dụ để ứng dụng có thể dễ dàng chuyển đổi giữa các hệ CSDL khác nhau. Khi đó ta bắt buộc phải viết SQL code trong ứng dụng, nhưng để giảm nhẹ các vấn đề của nó, ta nên dùng chuỗi SQL có tham số (dùng cmd.Parameters.Add) để tránh được lỗi SQL injection và biên dịch lại câu lệnh (điểm 1 và 2 ở trên). Còn khi ta có lựa chọn dùng thủ tục thì nên áp dụng phương pháp này. Đây là phương pháp mà Microsoft khuyến cáo khi viết ứng dụng trên môi trường phát triển của họ.

(http://www.hoclaptrinhweb.com/sql-server/vi-sao-nen-tranh-viet-sql-code-trong-ung-dung-hltw35940.aspx)