0

Thuật toán tham lam

Phần 1: Thuật toán

Gọi là thuật toán tham lam nhưng thực chất tham lam không được gọi là thuật toán, mà nó là một kỹ thuật, một phương pháp để tiến hành giải một vấn đề trong lập trình.

Vậy thì thuật toán tham lam là gì?

Một thuật toán tham lam, như tên gọi cua nó, đó là luôn luôn làm một sự lựa chọn tốt nhất tại thời điểm hiện tại. Điều này có nghĩa rằng, sự lựa chọn tốt nhất ở mỗi bước sẽ dẫn tới lời giải tối ưu nhất

Vậy chọn lựa tối ưu hóa bằng cách nào?

Giả sử ông có một hàm cần tối ưu hóa (hoặc cực đại, hoặc cực tiểu hàm đó). Một thuật toán tham lam sẽ thực hiện các lựa chọn tham lam ở mỗi bước để đảm bảo rằng hàm đã cho là tối ưu. Thuật toán tham lam chỉ có một lần tính toán lời giải tối ưu với mục đích nó không bao giờ trở lại và đảo ngược quyết định.

Thuật toán tham lam có một vài sự thuận lợi và không thuận lợi:


  • Khá dễ để tiến hành một thuật toán tham lam cho một project
  • Phân tích thời gian chạy của thuật toán tham lam sẽ dễ dàng hơn kỹ thuật khác (như Chia để trị). Với kỹ thuật chia để trị, không rõ ràng liệu kỹ thuật này là nhanh hay chậm. Lý do là ở mỗi mức của đệ quy kích thước nhỏ hơn và số lượng của bài toán con lớn hơn.
  • Khó khăn của tham lam là rất vất vả để hiểu chính xác vấn đề. Thậm chí với giải thuật chính xác rồi, cũng rất khó khăn để chứng minh tại sao nó đúng. Chứng minh một giải thuật tham lam là đúng có cảm giác là cả một nghệ thuật hơn là một khoa học, vì nó đòi hỏi rất nhiều sự sáng tạo

Lưu ý: Hầu như các giải thuật tham lam đều không chính xác. Một ví dụ sẽ được mô tả trong bài báo sau đây.

Tạo ra một Giải thuật tham lam như thế nào?

Bài toán: Là một người bận rộn, ông có đúng T thời gian để làm một vài thứ thú vị và ông muốn làm nhiều thứ nhất có thể.

Cho một mảng A gồm các số có kiểu int, trong đó mỗi phần tử biểu thị thời gian hoàn thiện thứ đó. Hãy tính toán số thứ ông có thể làm với thời gian giới hạn

Đây là một bài toán tham lam đơn giản. Ở mỗi bước, ta phải chọn lựa tham lam bằng cách chọn các công việc có thời gian hoàn thành ít nhất. ở đây ta có hai biến là thời gian hiện tại (currentTime) và số lượng công việc (numberOfThings). Để hàm thành, ta phải:


  • Sắp xếp mảng A theo chiều không giảm
  • Chọn lựa mỗi công việc để làm
  • Cộng thời gian để hoàn thành vào biến currentTime
  • +1 một tới numberOfThings
  • Lặp lại điều này trong khi biến currentTime nhỏ hơn hoặc bằng T, vậy là xong.

Phần 2: Giải thuật

Cái thuật toán là phương pháp lấy tư tưởng từ cuộc sống. Khi gặp một tình huống quá phức tạp, hoặc một vấn đề mà chưa có lời giải hoàn chỉnh, thì thấy cái gì tốt nhất, mà khả thi ở thời điểm hiện tại thì làm. Cứ thực hiện đi đã rồi sẽ tiếp tục tối ưu sau.

Nghĩ nhiều quá, phức tạp quá, triển khai chậm có khi lại không thành công.

Hơn nữa mọi việc để hướng tới sự hoàn hảo đều tốn rất nhiều công sức, đặc biệt ở những phần trăm cuối. Nhưng để đạt được 80% thành công thì lại không quá khó. Nó tương tự như việc ông muốn trở thành người xuất sắc nhất lớp, hoặc đạt giải nhất cuộc thi thì phải nỗ lực rất lớn. Còn để học khá, vào top đầu thì lại tương đối đơn giản.

Trong các cuộc thi học sinh giỏi, trong khoảng thời gian rất ngắn chưa thể nghĩ được lời giải chính xác thì khuyên hãy áp dụng phương pháp tham lam, để ghi thêm ít điểm. Ví dụ thi trắc nghiệm mà không bị trừ điểm nếu chọn sai thì bất cứ câu nào không làm được thì cứ random chọn bừa đi. Biết đâu trúng Vietlott.


Xem chi tiết
0

Giang Hồ

Tàu đi qua phố tàu qua phố
Phố lạ mà quen ta giang hồ
Chẳng lẽ suốt ngày bên bếp vợ
Chẻ củi trèo thang với giặt đồ

Giang hồ đâu bận lo tiền túi
Ngày đi ta chỉ có tay không
Vợ con chẳng kịp chào xin lỗi
Mây trắng trời xa, trắng cả lòng

Giang hồ ta ghé nhờ cơm bạn
Đũa lệch, mâm suông, cũng gọi tình
Gối trang sách cũ, nằm nghĩ bụng
Cười xưa Dương Lễ với Lưu Bình

Giang hồ có buổi ta ngồi quán
Quán vắng mà ta chửa chịu về
Cô chủ giả đò nghiêng góc ghế
Đếm thấy thừa ra, một gốc si

Giang hồ mấy bận say như chết
Rượu sáng chưa lưa, đã rượu chiều
Chí cốt cầm ra chai rượu cốt
Ừ thôi trời đất cứ liêu xiêu

Giang hồ ta chẳng hay áo rách
Sá gì chải lược với soi gương
Sáng nay mới hiểu mình tóc bạc
Chợt tiếng trẻ thưa ở bên đường

Giang hồ ba bữa buồn một bữa
thấy núi thành sông, biển hoá rừng
Chân sẵn dép giầy, trời sẵn gió
Ngựa về ta đứng, bụi mù tung

Giang hồ tay nải cầm chưa chắc
Hình như ta mới khóc hôm qua
Giang hồ ta chỉ giang hồ vặt
Nghe tiếng cơm sôi cũng nhớ nhà
Xem chi tiết
0

Tiêu chuẩn của bản thân

Trước đây, thời chinh chiến freelancer bên ngoài với các đối tác đến từ khắp nơi trên thế giới, mình học được 1 điều là tiêu chuẩn của họ luôn rất cao so với mặt bằng chung ở mình (Việt Nam). Cái sự khắt khe ấy đôi khi đến từ 1 bạn sinh viên cần làm đồ án rất bình thường. Thậm chí giao diện có 1 lỗi chính tả, font to hay thấp là nhắc ngay. Còn ở mình, những lỗi nhỏ đó dễ được chấp nhận và bỏ qua.

Sau này, khi làm dự án với sếp mình, sếp cũng hay nhìn vào những điểm rất nhỏ. Ban đầu nghĩ đó là soi, để ý tiểu tiết, nhưng rồi học được nhiều điều hơn, sản phẩm làm ra tốt hơn, ít lỗi hơn.

Mình nghĩ, sở dĩ có sự khác biệt đó là bởi vì có 1 thứ gọi là “Tiêu chuẩn” (Standard). Tiêu chuẩn của 1 người là cách họ nhìn nhận xem “như thế nào thì là bình thường” đối với họ.

Mình làm việc với một bạn lập trình viên có tiêu chuẩn cao, khi bạn hoàn thành một công việc nào đó thì bạn sẽ khắt khe với chính mình hơn. Đôi lúc, có những việc rất nhỏ tưởng chừng như không hề liên quan trực tiếp đến nhiệm vụ của bạn, như một lỗi chính tả trong kịch bản, hay một vài đối tượng được mô tả chưa hợp lý, thì bạn sẽ chủ động phản hồi lại cho mình, hoặc cho người viết kịch bản để điều chỉnh lại cho hợp lý.

Khi bạn hiện thực một logic nào đó, bạn sẽ chủ động suy nghĩ đến những tình huống khác chưa được mô tả để làm rõ nó hơn. Trái lại, một bạn lập trình viện có tiêu chuẩn thấp hơn, bạn sẽ dễ hài lòng và thỏa hiệp với công việc của mình. Bạn nhận yêu cầu có vài điều chưa hợp lý trong đó, bạn sẽ vẫn cứ làm theo. Có lỗi thì sửa sau, lo gì? Với bạn, nhiệm vụ của bạn chỉ là code, yêu cầu được tạo ra là do người khác. Nên bạn chỉ cần hoàn thành nhiệm vụ của mình, vậy là được. Bất kể nó có không hợp lý thế nào đi nữa. (quay lại note trước: vụ ấn nhầm cái nút báo động).

Làm việc với một bạn designer có tiêu chuẩn cao, mình sẽ cảm thấy bạn chịu lắng nghe yêu cầu từ phía mình hơn. Khi thiết kế của bạn được duyệt, bạn sẽ không dừng lại ở đó mà còn tự suy xét lại quá trình mình làm trước đó đã ổn hay chưa. Rằng bạn có biết cách đặt câu hỏi và góp ý để bản thiết kế được tạo ra đúng với mục đích ngay từ đầu hay không? Rằng tại sao khách hàng lại yêu cầu thay đổi nhiều như vậy? Là do bạn chưa tìm cách hiểu đúng cũng như khơi gợi khách hàng nói ra những điều họ nghĩ và cảm nhận, hay chỉ đơn giản là họ thích đổi ý mà thôi? Trái lại, một bạn designer có tiêu chuẩn thấp sẽ tự hài lòng với mình ngay khi bản thiết kế của bạn được chấp nhận. Và bạn sẽ ngay lập tức nghĩ đến làm việc khác ngay, thay vì dừng lại và rút kinh nghiệm. Vì với bạn, vậy đã là được.

Nhìn chung, khi làm việc với những bạn có tiêu chuẩn cao, dù rằng bạn còn trẻ, mình vẫn sẽ có tự tin khi giao nhiệm vụ cho các bạn. Vì mình tin, bản thân bạn sẽ chủ động tìm tòi và đặt câu hỏi để bản thân hoàn thành công việc. Bạn vẫn có thể phạm sai lầm, nhưng sau khi phạm sai lầm đó, bạn sẽ chấp nhận và rút kinh nghiệm từ đó. Một bạn có tiêu chuẩn làm việc cao, thường khi được chỉ ra sai lầm, bạn sẽ nhanh chóng điều chỉnh để không phạm phải sai lầm đó. Còn bạn có tiêu chuẩn thấp, thì thường biểu hiện sẽ ngược lại, rằng "vậy đã là được rồi, cần gì làm tốt hơn" - hay “làm đến thế thôi, làm tốt có ai quan tâm đâu”, đôi khi còn phản ứng theo cách tiêu cực hơn nữa, bỏ cuộc hoặc phản kháng kiểu “ông biết cái đéo gì mà nói”.

Một team, gồm những người có tiêu chuẩn cao làm việc với nhau, sẽ mang đến chất lượng công việc cao hơn hẳn. Vì từng thành viên đều hướng đến việc không chỉ hoàn thành công việc của mình, mà còn hoàn thành nó một cách trọn vẹn nhất. Khi có lỗi xảy ra, mỗi thành viên sẽ tự xem lỗi ở khâu nào để cùng chỉnh sửa, thay vì đổ lỗi cho nhau. Chỉ có như vậy thì tất cả mọi người trong team mới ngày 1 hoàn thiện hơn, tiêu chuẩn ngày 1 cao hơn.

Bản thân mình tin rằng, tiêu chuẩn là một trong các nhân tố giới hạn năng lực bản thân nhiều nhất. Bạn có thể trẻ, có thể non kinh nghiệm, nhưng đừng để tiêu chuẩn của bạn thấp. Khi tiêu chuẩn của bạn cao trong công việc cũng như trong cuộc sống, bạn sẽ luôn không ngừng phấn đấu, không ngùng học hỏi, quan sát, không ngừng rút tỉa kinh nghiệm cho bản thân mình. Từ đó, bạn sẽ không ngừng tiến bộ. Trái lại, nếu tiêu chuẩn của bạn tự đề ra cho mình thấp, bạn sẽ dễ hài lòng với cuộc sống thực tại, dễ thỏa hiệp với bản thân, thấy khó là bỏ. Dần dần, bạn sẽ càng ngày càng tụt lại so với những người xung quanh. Bất kể trong công việc hay trong cuộc sống - Dừng lại, chính là đi lùi, mình tin vậy.

Một người sau 1 khoảng thời gian dài (3 tháng là 1 khoảng thời gian đủ để gọi là dài) nếu không có tiến bộ (nâng cao tiêu chuẩn), đây chính là đi lùi. Nếu khoảng thời gian đó dài hơn, chỉ có 2 khả năng:

  1. Bản thân họ không có nhu cầu. Với những người như vậy, thì rất khó để thay đổi, vì nâng cao tầm và nhận thức của bản thân là cái gì đó xa xôi và họ không cần - không muốn. Giống con cua chỉ muốn mãi độc bá cái khoảng trời trong miệng giếng. 
  2. Họ chưa tìm được cách. Đọc tiếp đoạn bên dưới 
Vậy thì làm sao để nâng cao tiêu chuẩn bản thân? Một vài cách mình thấy hiệu quả:

Tìm kiếm một môi trường có tiêu chuẩn cao để sinh hoạt và làm việc. Một môi trường có tiêu chuẩn cao, là nơi có những người khắt khe với sai lầm của bạn. Mọi lỗi lầm dù nhỏ đều được mang ra mổ xẻ để rút kinh nghiệm. (Đương nhiên: bạn phải có nhu cầu nâng cao tiêu chuẩn bản thân, nếu không sẽ là phản tác dụng.) Nếu không chỉ ra, sai lầm 1 lần mà lần sau vẫn tái phạm hoặc không được ai chỉ ra, đấy là 1 một môi trường có tiêu chuẩn thấp, dễ dàng bằng lòng với những thứ không đủ tốt. Mà bằng lòng với thứ không đủ tốt thì bản thân cũng sẽ không tốt lên được. Mình tin là như thế.

Quan sát những người giỏi trong lĩnh vực của mình làm việc. Khi càng ngày càng đi sâu vào một lĩnh vực nào đó, đằng sau mỗi hành động, mỗi câu chữ đều sẽ có ý nghĩa riêng của nó. Một người càng giỏi thì quá trình suy nghĩ dẫn đến hành động của họ sẽ càng nhiều, vì vậy mà họ sẽ hành động một cách thấu đáo hơn. Hãy luôn tự đặt câu hỏi "Tại sao họ làm vậy?". Đừng vội áp đặt cảm tính của mình vào để nhìn, hãy nhìn vào cả quá trình và kết quả.

Mỗi khi hoàn thành một công việc nào đó, luôn dừng lại để tự hỏi: mình làm vậy đã là tốt nhất chưa, có cách nào làm tốt hơn nữa hay không? Nếu lần sau gặp lại mình có làm nhanh hơn không? Cần xem lai những sai lầm đã gặp phải, ghi nhớ nó để lần sau tránh nó ra, hoặc, nghĩ ra giải pháp để khắc phục nó.

Đọc sách, báo, tài liệu liên quan: Việc không ngừng đọc và tìm hiểu về lĩnh vực của mình cũng sẽ khiến bạn mở rộng phạm vi hiểu biết của mình ra để từ đó nâng tiêu chuẩn của mình lên cao hơn.

Việc nâng cao tiêu chuẩn của bản thân, nó giống 1 câu nói của các cụ ngày xưa: “Tu thân, tề gia, trị quốc, bình thiên hạ”. Chỉ khi bản thân mình tốt lên, rồi thì mọi thứ xung quanh cũng sẽ tốt lên.
Xem chi tiết
0

Hạng Tịch, Hoài Âm hay Tử Phòng

Hán Sở tranh hùng, ngoài đồng chí Lưu (manh) Bang ra thì 3 anh này nổi tiếng nhất. 3 anh với 3 thái độ hoàn toàn khác nhau. Cái kết cũng khác nhau.

Hạng Tịch (Vũ): Tây Sở Bá Vương vũ dũng nghìn năm không có lấy 1. Anh hùng bản sắc, anh hùng triệt để. Đập nồi dìm thuyền, đem vài vạn binh đập cho Lưu Bang chạy tới tấp. Anh hùng khó qua ải mỹ nhân (Ngu Cơ) để rồi ôm hận khi không về bờ Đông. Khi chết không thành đế nhưng Thái Sử Công vẫn liệt vào hàng bản kỷ bên cạnh thiên cổ nhất đế Doanh Chính.

Hoài Âm hầu Hàn Tín: “chiến thần”, “vương tướng” nghìn năm không có lấy 1 (trước có  Vũ An quân  Bạch Khởi, sau có Nhạc Võ Mục). Đạo làm tướng 5 tài - 10 lỗi đủ cả. Xuất thân nghèo khó. Khó khăn lắm mới thành anh hùng. Vũ dũng thì gần như Hoài Âm hầu nắm, nghiêng về ai người đó thắng. Về nhẫn thì chịu nhục luồn trôn, ăn cơm nhờ bà giặt vải mà vẫn thành Hán Sơ tam kiệt. “ Nắm trong tay trăm vạn quân đã đánh là thắng, tiến công là nhất định lấy thì ta không bằng Hoài Âm Hầu.”. Cuối cùng phải chết dưới tay 1 mụ đàn bà. Xương thịt bị róc, vạn kiếp bất phục.

Trương Tử Phòng - Trương Lương: Mưu thánh, trong 10 đại quân sư chỉ xếp sau Khương Tử Nha và Tôn Tẫn, cỡ Gia Cát hoặc Lưu Cơ chỉ đáng xách dép. Xuất thân dân chủ tiểu tư sản điển hình. Bán cả nhà cửa đi hành thích Tần Thủy Hoàng. Sau nhờ chữ nhẫn mà được Hoàng Thạch Công trao cho bộ binh pháp, nổi tiếng đến mức trở thành thần tượng của anh Long (Long Vương - trong phim Tây Du Ký - Đoạn Ngộ Không bỏ thầy sau khi oánh cướp). Trở thành quân sư, thầy của hoàng đế - “ Bàn mưu kế ở trong màn trướng, quyết định sự thắng lợi ở ngoài ngàn dặm”. Công thành thân thoái thiên chi đạo. Xong việc rũ tay tu tiên, hưởng kiếp an nhàn của Xích Tùng Tử.

--------------

Tự hỏi, 3 người trên, sự nghiệp khác nhau nhưng đều là anh hùng thiên cổ nghìn năm không có lấy 1.

Xét về dũng: chẳng ai qua nổi Tây Sở Bá Vương.

Xét về trí: Trương Tử Phòng nhận thứ 2 thì không ai là số 1.

Hoài Âm hầu thì có cả 2. Minh tu sạn đạo - Ám độ Trần Thương, bình định Tam Tần, diệt Ngụy, lấy Triệu, thuận tay chiếm luôn nước Yên.

Nên chọn thái độ sống như thế nào?
Xem chi tiết
0

Thư tình chàng ca sĩ - Chu Tam

Trong 20 năm qua, tôi vẫn cứ ca hát,
hát cho người trong trái tim tôi nghe.
Nhưng người trong lòng tôi...
cũng không biết em đang chốn nào
mà tôi cứ mãi kiếm tìm em.





Xem chi tiết
0

Phím tắt trong PhpStorm



PhpStorm hiện tại đang là IDE tuyệt vời và đáng để trải nghiệm nhất cho các lập trình viên, tuy nhiên để chúng ta có thể tận dụng được tối đa những gì công cụ cung cấp và để tiết kiệm thời gian cho những thao tác bằng tay thì chúng ta nên tìm hiểu và sử dụng những tổ hợp phím để cho công việc của chúng ta thêm hiệu quả.

**Lưu ý: Ở đây mình cũng đã highlight những hot key thường xuyên được sử dụng.

Sau đây là Keymap mặc định của PhpStorm trên Windows:

1.Chỉnh sửa

1 Ctrl + Space Gợi ý hoàn thiện những hàm, biến đang được viết dở
2 Ctrl + Shift + Enter Hoàn thiện nốt dòng đang viết.
3 Ctrl + P Hiển thị thông tin các tham số cần điền trong hàm.
4 Ctrl + Q Tra cứu tài liệu nhanh chóng.
5 Ctrl + trỏ chuột lên phía trên của code Giới thiệu tóm tắt thông tin.
6 Ctrl + F1 Hiển thị mô tả về lỗi hoặc cảnh báo.
7 Alt + Insert Tạo mã … (Getters, Setters, Constructors).
8 Ctrl + O Override một method.
9 Ctrl + I Implement một method.
10 Ctrl + Alt + T Tạo ngoặc ngọn với … (if..else, try..catch, cho, vv).
11 Ctrl + / Comment / bỏ ghi chú với dòng bình luận.
12 Ctrl + Shift + / Comment / bỏ ghi chú với khối bình luận (nhiều dòng).
13 Ctrl + W Chọn liên tục (bôi đen) tăng khối mã (code).
14 Ctrl + Shift + W Giảm lựa chọn hiện tại trạng thái trước (13).
15 Alt + Q Thông tin Context.
16 Alt + Enter Hiển thị ý định hành động và sửa chữa tức thì.
17 Ctrl + Alt + L Định dạng lại code trong tab đang được hiển thị.
18 Ctrl + Alt + I Tự động xét con trỏ xuống dòng.
19 Tab / Shift + Tab Con trỏ xuống / lên chọn dòng.
20 Ctrl + X hoặc Shift + Delete Cắt dòng hiện hoặc khối đã chọn vào clipboard.
21 Ctrl + C hoặc Ctrl + Insert Sao chép dòng hiện tại hoặc khối đã chọn vào clipboard.
22 Ctrl + V hoặc Shift + Insert Dán từ clipboard.
23 Ctrl + Shift + V Dán từ bộ đệm gần đây …
24 Ctrl + D Duplicate dòng hiện hoặc khối đã chọn.
25 Ctrl + Y Xóa dòng, khối dòng đang được chọn.
26 Ctrl + Shift + J Đưa trỏ đến tham số kế tiếp.
27 Ctrl + Enter Đưa trỏ đến cuối dòng.
28 Shift + Enter Bắt đầu dòng mới.
29 Ctrl + Shift + U Bật tắt trường hợp cho chữ tại dấu nháy hoặc khối đã chọn.
30 Ctrl + Shift +] / [ Chọn cho đến khối mã kết thúc / bắt đầu.
31 Ctrl + Delete Xóa từ vị trí con trỏ đến cuối.
32 Ctrl + Backspace Xóa từ vị trí con trỏ đến đầu.
33 Ctrl + Numpad +/- Mở rộng / thu gọn khối mã.
34 Ctrl + Shift + Numpad + Mở rộng tất cả.
35 Ctrl + Shift + NumPad – Thu gọn tất cả.
36 Ctrl + F4 Đóng tab đang hoạt động biên tập.

2. Điều hướng

37 Ctrl + N Tới Class
38 Ctrl + Shift + N Đi tới file
39 Ctrl + Alt + Shift + N Đi tới biểu tượng
40 Alt + Left / Right Mở tab phía trước/sau
41 F12 Quay trở lại cửa sổ công cụ trước
42 Esc Quay trở lại màn hình edit code
43 Shift + Esc Đóng hoạt động hoặc qua cửa sổ đang mở
44 Ctrl + Shift + F4 Đóng, dừng hành động Run/ Message / Search/ …
45 Ctrl + G Di chuyển đến dòng số
46 Ctrl + E Mở danh sách những tập tin đc mở gần đây
47 Ctrl + Alt + Left / Right Chuyển tới file đc edit trước/sau
48 Ctrl + Shift + Backspace Chuyển đến file chỉnh sửa cuối cùng
49 Alt + F1 Chọn file hoặc biểu tượng bất kì với kí tự được nhập
50 Ctrl + B hoặc Ctrl + Click Chuyển tới nơi biến/hàm được khai báo
51 Ctrl + Alt + B Chuyển tới nơi hàm/class được triển khai (s)
52 Ctrl + Shift + I Mở tra cứu định nghĩa
53 Ctrl + Shift + B Chuyển tới nơi kiểu được định nghĩa
54 Ctrl + U Chuyển tới super-method/super-class được định nghĩa
55 Alt + Up / Down Chuyển tới method trước/sau
56 Ctrl +] / [ Di chuyển đến nơi khối mã kết thúc / bắt đầu
57 Ctrl + F12 Mở popup cấu trúc project
58 Ctrl + H Mở hệ thống phân cấp các kiểu dữ liệu
59 Ctrl + Shift + H Mở hệ thống phân cấp các method
60 Ctrl + Alt + H Mở hệ thống phân cấp
61 F2 / Shift + F2 Highlight lỗi trước/sau
62 F4 / Ctrl + Enter Sửa nguồn / Xem mã nguồn
63 Alt + Home Hiển thị thanh điều hướng
64 F11 Chuyển đổi bookmark
65 Ctrl + F11 Chuyển đổi bookmark với mnemonic
66 Ctrl + # [0-9] Tới bookmark đánh số
67 Shift + F11 Hiển thị bookmark

3. Tìm kiếm và thay thế

68 Ctrl + F Tìm
69 F3 Tới kết quả tiếp theo
70 Shift + F3 Tới kết quả trước đó
71 Ctrl + R Thay thế
72 Ctrl + Shift + F Tìm trong trong tất cả tập tin trong thư mục chỉ định
73 Ctrl + Shift + R Thay thế trong trong tất cả tập tin trong thư mục chỉ định

4. Tìm kiếm cách sử dụng

74 Alt + F7 / Ctrl + F7 Tìm những nơi được sử dụng/được sử dụng trong file
75 Ctrl + Shift + F7 Highlight những nơi được sử dụng
76 Ctrl + Alt + F7 Hiển thị cách dùng

5. Running

77 Alt + Shift + F10 Chọn cấu hình và chạy
78 Alt + Shift + F9 Chọn cấu hình và thực hiện debug
79 Shift + F10 Run
80 Shift + F9 Debug
81 Ctrl + Shift + F10 Run cấu hình context từ editor
82 Ctrl + Shift + X Mở command line

6. Debug

83 F8 Chạy qua
84 F7 Chạy vào
85 Shift + F7 Chạy vào thông minh
86 Shift + F8 Chạy ra khỏi context hiện tại
87 Alt + F9 Run từ nơi trỏ chuột
88 Alt + F8 Bảng đánh giá
89 F9 Resume chương trình
90 Ctrl + F8 Bật tắt breakpoint
91 Ctrl + Shift + F8 Xem breakpoint

7. Refactor

92 F5 Sao chép file
93 F6 Di chuyểnfile
94 Alt + Delete Xóa file an toàn
95 Shift + F6 Rename file
96 Ctrl + Alt + N Hiển thị thông tin biến của hàm
97 Ctrl + Alt + M Hiển thị thông tin chi tiết của hàm
98 Ctrl + Alt + V Hiển thị thông tin chi tiết của biến
99 Ctrl + Alt + F Hiển thị thông tin của line
100 Ctrl + Alt + C Hiển thị thông tin của Constant

8. Version controls (svn/git)

101 Alt + backquote () Mở nhanh popup version controls
102 Ctrl + K Commit code
103 Ctrl + T Update code
104 Alt + Shift + C Xem thay đổi gần đây

9. Chỉnh sửa chung

105 Ctrl + Shift + A Tìm kiếm action
106 Alt + # [0-9] Mở cửa sổ công cụ tương ứng
107 Ctrl + Shift + F12 Mở rộng tab đang được edit
108 Alt + Shift + F Thêm vào mục ưa thích
109 Alt + Shift + I Kiểm tra tập tin với cấu hình hiện tại
110 Ctrl + backquote (
)
Switch schema
111
Ctrl + Alt + S
Mở cửa sổ cài đặt nhanh
112
Ctrl + Tab
Chuyển đổi giữa các tab và cửa sổ công cụ

10. Tổng kết

Trên đây là toàn bộ những phím tắt bạn có thể sử dụng trong PhpStorm. Bạn cũng có thể đặt lại những phím này để cho phù hợp với bản thân bằng cách mở cửa sổ Setting (Ctrl + Alt + S) sau đó search từ khóa “Keymap” sẽ có danh sách các hotkey hiện tại. Chúc các bạn làm việc hiệu quả và nếu có thắc mắc hoặc chia sẻ thì hãy để lại comment nhé.

Sưu tầm trên Internet
Xem chi tiết
0

Chiều đầu năm


Vậy là đã 1 năm có dư kể từ bài viết Nhìn lại 2015 năm trước, nhanh thật. Thói quen là cứ cuối mỗi năm thằng bé sẽ ngồi lại tổng kết xem năm vừa rồi đã làm được những gì, chưa làm được gì và đã đánh mất đi thứ gì.

Nhưng thằng bé cần làm gì đó phá cách hơn 1 chút, quyết định để chiều đầu năm viết cho nó khác biệt.

Ngày đầu năm nó dậy sớm, dậy sớm hơn hẳn so với khung giờ hàng ngày, cảm giác có cái gì đó khác khác. Nó đánh răng, tắm rửa sạch sẽ và xách xe lượn vài vòng thành phố Hà Nội với cảm giác gì đó lạnh lạnh. Nó cảm thấy có gì đó cô đơn rồi lại phóng xe về căn phòng trọ, ngồi bên cái Laptop và dở code ra như 1 thứ niềm vui đầu năm. Bệnh mãn tính.

Chào 2017
Năm 2016 mở ra với việc thằng bé chuyển 1 môi trường làm việc mới, ban đầu là đi với tư cách lính đánh thuê dự án, rồi vì 1 vài duyên nợ mà ở lại cho đến bây giờ. Một môi trường làm việc mới, nhiều người hơn, nhiều thử thách hơn, nhiều deadline hơn.

Năm 2016 là năm thằng bé bắt đầu làm những công việc hoàn toàn mới so với trước kia, những việc gắn bó với số liệu, với report với những con số mà nó nhìn vào chả khác gì bức vách. Nó cảm thấy nó học hỏi được khá nhiều điều mới lạ.

Năm 2016 là năm mà nhiều áp lực đến với nó. Dồn tới tấp có lúc tưởng chừng như sắp tràn li. Lần đầu nó cảm thấy sợ hãi tột độ khi nhận được tin nhắn của thằng em. Nó bật khóc ngon lành giữa công ty. Một mạch chạy về nhà.

Năm 2016, nó già thêm 1 tuổi, đến cái tuổi mà chỉ cần về nhà bố mẹ ông bà sẽ hỏi nó bao giờ lấy vợ. Đến mức nó ngại về, không phải vì đường xá xa gần, nó ngại khi được hỏi những câu hỏi tương tự như vậy.

Năm 2016, mỗi lần nó về thăm nhà đều không cầm được nước mắt khi ông nội nó cầm tay nó dặn dò nhiều điều. Ông nó ốm đi nhiều lắm, có đôi lúc còn không nhớ nổi tên con cháu nữa. Ông vẫn cầm tay nó nhắn nhủ cháu tự chăm sóc bản thân và làm việc tốt.

Năm 2016, cũng có khá nhiều chuyển biến tốt. Chí ít thằng em nó đã không còn phá phách nữa. Đó là niềm vui nhất đối với nó trong năm cũ qua đi. Nó học thêm được nhiều điều hay, có thêm nhiều mối quan hệ thân tình nữa.

Nó vẫn luôn tin tưởng vào giá trị của tình bạn, tình anh em. Có thể không gặp nhau, không hợp nhau nhiều. Nhưng nó biết, bạn bè anh em vẫn luôn bên cạnh nó. Nó cảm thấy an ủi.

2016, nó học được bài học về gia đình. Anh em trong nhà, không đùm bọc lẫn nhau thì đùm bọc ai.

o0o

Cuối 2016, 1 đứa em cùng xóm trọ thằng bé quý lấy chồng. Ngoài việc chúc mừng thì đấy cũng là cơ hội để thằng bé ngồi lại với những anh em cùng khu trọ. Vài chén rượu, câu chuyện trò. Nhưng cảm giác có gì đó sai sai.

Đã từ lâu rồi, nó không còn ngồi chung mâm uống rượu, không còn ngồi nói vài ba câu bông đùa nữa.

Viết ở đây, chen vài dòng vào cảm xúc, nếu mấy thằng em đọc được thì hãy hiểu cho anh. Anh cũng đã nói rõ hôm uống rượu rồi. Nhưng mà mấy đứa cũng nên hiểu cho cảm xúc của a.

A bây h tính ra cũng không thể nào thoải mái hồn nhiên như 1 vài năm trước nữa. Công việc thì stress nặng nề, rồi thì đủ thứ chuyện ấp tới như nghẹt thở. Anh bận đến nỗi cả năm trời chẳng xem được trọn vẹn 1 bộ phim đúng nghĩa. 7h sáng phóng xe đi làm, lắm hôm 9-10h tối mới về đến nhà. Tắm rửa, ăn uống xong lại đi ngủ. Vòng quay lặp lại.

Chính vì thế nên anh ngại, ngại khi đứng lên hô hào tổ chức 1 buổi tiệc nhỏ, 1 lần đi chơi. Vì anh sợ mỗi khi như vậy, những cảm xúc của a đôi khi không kìm nén được sẽ ảnh hưởng tới cuộc vui. Anh cũng không thể nào vô trách nhiệm với công việc khi nói nghỉ là nghỉ để đi chơi 1 buổi được. Biết là nó là phép toán so sánh giữa tình anh em và công việc. Nhưng mong mấy đứa hiểu cho anh. Hi vọng rằng, đôi ba thời gian nữa, ngồi lại, anh em mình sẽ hiểu nhau hơn. Hoặc hiểu cho cảm xúc của anh lúc này.

Cũng đã khá lâu rồi mấy anh em xóm cây ổi ngày trước không có 1 buổi tự tập đầy đủ. Dường như mỗi người đều có 1 tâm trạng riêng. Tất cả anh đều biết. Khi mọi người hẹn nhau đi chơi Tết vào đúng ngày công ty bắt đầu mở cửa làm việc. Anh hoàn toàn có thể nói rằng ok rồi đùng 1 phát đến gần hôm Tết nói rằng công ty khai xuân đúng hôm đó nên anh không đi được, anh không làm như thế. Có thể, nó không làm hài lòng số đông, nhưng nó là lời nói thật. Lời nói thật chia sẻ thật tới những người anh coi là anh em.

Nhưng bản thân anh thì vẫn thế, anh đã nói thì sẽ làm và làm được. Anh em thì vẫn là anh em. Có thể lúc này anh bận, không đi được. Nhưng đến khi nào đó, anh sẽ quay lại. Thế thôi.

o0o

2017 đến, lại già thêm 1 tuổi. Vẫn còn 1 đống deadline chưa hoàn thành, vẫn còn 1 đống jobs đang chờ trong list việc sau kỳ nghỉ lễ.

2017 đến, nó vẫn ngồi 1 mình trong chiều đông giá rét, 1 chút cô đơn, 1 chút nhớ.

2017, hi vọng sẽ khác, cuộc đời sẽ tươi mới hơn, bớt đi u ám, thêm vào đó chút vui.

:)

Đính kèm bài nhạc nghe cho vui đời.

Xem chi tiết
0

Trung thu

Đang ngồi code nghe thấy tiếng trống Trung thu đâu đó gần đây, bò ra khỏi hang, thấy gần nhà có 1 đội lân đang tập. Ký ức đâu đó ùa về.

Trung thu trong tôi thời nhỏ là những đêm tối mịt mờ thắp đuốc đi theo đội lân của thanh niên xóm đi vào từng nhà 1 múa xin tiền. Đuốc dầu côn lửa tưng bừng, Những lúc đó, tôi chỉ mong mình lớn thật nhanh để được chạm vào con lân của xóm. Trong những ngày này, ông nội tôi chặt cho tôi 1 đoạn cây dùng, nhét vào đó 1 búi giẻ, tưới vài giọt dầu vào đấy là có cây đuốc thắp sáng đi chơi Trung thu. Năm nào không có, tôi khóc, tủi thân lắm.

Trung thu trong tôi là những ngày tháng hồi hộp khi nghe thấy tiếng trống, là hạnh phúc khi bác xóm trưởng vào phát cho nửa cái bánh nướng mà tiền đã được mẹ tôi đóng từ trước. Với tôi, không có cái bánh trung thu nào ngon bằng loại bánh đấy, nửa cái nhưng ăn dè ăn dặt.

Trung thu trong tôi là những buổi học cuối chiều, ngồi trong lớp học mà đầu óc thì đang để ở nơi làm đầu sư tử (quê tôi gọi vậy). Mỗi khi nghe thấy tiếng trống thì làm gì cũng phải tìm mọi cách để ra đến nơi.

... Lớn lên chút xíu.


Trung thu trong tôi là những lần tụ tập thanh niên trong xóm cùng bẻ đầu lân, cùng đi trộm dùng làm đuốc, cùng đi chặt tre làm côn. Là những đêm tối tưng bừng tiếng trống, là những khi ngậm vào miệng 1 hớp dầu to, rồi đội đầu sư tử ngoáy tít mù, là những lúc ghé miệng phun dâu vào côn lửa bừng cháy, lắm khi lửa lan vào cháy xém hết cả tóc lông mày mà vẫn vui.

Trung thu là những khi cả xã tôi cùng tụ tập vào 1 chỗ, các xóm cùng đưa đầu lân ra và tổ chức thi đấu xem đội nào múa đẹp, múa hay, đầu lân đội nào trang trí đẹp... tất cả cùng nhau dõi mắt vào từng màn thi của các xóm. Tiếc là sau này, vì 1 vài lý do và vì cả an ninh, xã tôi đã không còn tổ chức được như vậy nữa.

Trung thu là đêm 16, sau khi đã đi múa xin tiền khắp xóm, thanh niên xóm sẽ dựng 1 sân khấu hoành tráng nơi sân đình, chúng tôi sẽ múa lân, ngoáy côn lửa và trình diễn 1 màn cuối cùng trước khi chia bánh kẹo cho tất cả thiếu nhi trong xóm. Số tiền đó là số tiền múa lân mà thanh niên chúng tôi đi xin mấy ngày qua. Cả xóm cùng vui trung thu, ai cũng có quà. Những em nhỏ (như tôi ngày trước) tranh nhau lên để được sờ tận tay chiếc đầu lân trước khi chúng tôi trình diễn màn cuối cùng và đốt chiếc đầu lân đó như 1 một phần lẽ thành kính dâng lên Thành Hoàng của làng.

Trung thu là mùa mà tất cả thanh niên xóm chúng tôi, dù trước đấy có xích mích, đánh nhau vỡ đầu gẫy răng cũng sẽ đoàn kết lại, cùng nhau làm đầu sư tử, cùng nhau đi múa xin tiền, cùng nhau thức thâu đêm suốt sáng, vì 1 niềm vui mà chúng tôi đã chờ đợi cả năm.

Và chúng tôi cũng tập, từ đầu tháng 8, khi đầu lân đã được bẻ xong, chúng tôi ra sân đình, tập thử với 1 chiếc đầu lân dự phòng được bẻ y hệt. Ai múa đẹp sẽ được đôn lên vai chính, với chúng tôi khi đó, Tôm Cờ Rui cũng không oai bằng người được giao trọng trách múa chính. Chúng tôi chia nhau, người múa mặt nạ, người múa côn, người múa lân, người vẫy đuôi, người đánh trống. Tất cả cùng nhau thành 1 đội lân sẽ đi càn quét khắp xóm trong mấy ngày tới. Bát nháo, nhưng vui.

... Lớn lên thêm nữa....

Đã lâu lắm rồi tôi không còn được sống trong không khí đầm ấm, vui vẻ và tràn đầy nhiệt huyết đêm rằm như thế nữa. Sau này được đi nhiều nơi, nhưng với mỗi mùa Trung thu tới, tất cả với tôi đều nhạt nhòa. Không thể tìm được cảm giác háo hức khi nghe tiếng trống đêm rằm như thế nữa... Có lẽ các cụ nói chẳng sai, Trung thu là tết thiếu nhi, mình lớn rồi nên chẳng thể vui nữa... :)

Xem chi tiết
0

Một Trái Tim - Một Tình Yêu



Đừng hoài nghi, về thời gian sẽ quên.Vẫn nhớ mãi một tình yêu trong đời.
Tình anh còn đây, mặc thời gian đổi dời và anh chỉ còn riêng mình em.

Khi gặp em anh biết, sẽ không còn ai hơn nữa.
Không còn ai thay thế em trong giấc mộng.
Mưa mù hay băng giá cũng không làm anh chờn bước.
Đừng hoài nghi, tình anh em nhé !

Ngày hôm qua đó, tình đã trao em.
Cho đến mãi hôm nay, ân tình vẫn đong đầy và mai sau nữa yêu người càng đắm say.
Có ai hơn tình em ?
Một tình yêu, một trái tim cho em.

Màu biển xanh, màu tình em với anh.
Tình anh như cát biển vòng tay ôm sóng biển.
Trọn đời cát mãi mãi ôm ấp tình em
Và đời anh luôn cưu mang tình em.

Khi gặp em anh biết, sẽ không còn ai hơn nữa.
Không còn ai thay thế em trong giấc mộng.
Mưa mù hay băng giá cũng không làm anh chờn bước.
Đừng hoài nghi tình anh em nhé !

Ngày hôm qua đó, tình đã trao em.
Cho đến mãi hôm nay, ân tình vẫn đong đầy và mai sau nữa, yêu người càng đắm say.
Có ai hơn tình em ?
Một tình yêu, một trái tim cho em.

Khi gặp em anh biết, sẽ không còn ai hơn nữa.
Không còn ai thay thế em trong giấc mộng.
Mưa mù hay băng giá cũng không làm anh chờn bước.
Đừng hoài nghi tình anh em nhé !

Ngày hôm qua đó, tình đã trao em.
Cho đến mãi hôm nay, ân tình vẫn đong đầy và mai sau nữa, yêu người càng đắm say.
Có ai hơn tình em ?
Một tình yêu,một trái tim cho em.
Một tình yêu,một trái tim cho em.


Xem chi tiết