IDEA Tomcat HotSwap

Besides the posts about hot deploy on Tomcat Eclipse (WTP), and on JBoss exploded EAR/WAR, this is a similar post about Java hotswap based on the Java Platform Debugger Architecture (JPDA), or more specific layer, the Java Debug Wire Protocol (JDWP).

Yes, “hotswap” does not necessary mean to deploy, the Java app can see different results in runtime just via debugging. Okay later on you can still deploy to the web server so that it can run as production, but the point of hotswap is to speedup development process.

In this field, the leading software is JRebel, but its price is a bit high compared to living standards in developing countries in South East Asia, like Vietnam. Therefore I tried the “free” alternatives:
+ Dynamic Code Evolution (DCE) VM
+ HotswapAgent – a derivative work from DCEVM agent
+ SpringReloaded – also a similar approach to HotswapAgent (different bytecode lib)
+ Spring Boot DevTools – not really “hotswap” classes but “quick reload/restart”, and can “refresh” the static resources (CSS, HTML, …).

Anyway, they all are based on classloader replacement and bytecode instrumentation/manipulation.

In the end, I found that it’s still okay to use a “mix” of those, they are very close to JRebel if used properly.

For instance, I use DCEVM with SpringLoaded agent for general debug hotswapping, it’s good when using with servlet containers which takes time to restart/re-deploy, like Tomcat and JBoss web (the new “Undertow”). Jetty is still good and under-rated, as usual, but I will leave it as “low-profile” rather than being acquired and become bloated.

For general Java projects, I think HotSwapAgent provides good plug-ins for IDEs, though it’s still not popular on IntelliJ IDEA (yet).

I would recommend HotSwapAgent on IDEA users, but for local Tomcat debug I would use DCEVM with SpringLoaded:

VM Options: (either JAVA_OPTS / JPDA_OPTS / CATALINA_OPTS are all ok)

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -javaagent:/home/ducquoc/.m2/repository/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify -XXaltjvm=dcevm

Spring Boot DevTools is on its way to become “hotswap”, for now it’s a quick reload/restart and can still be used with standard JVM debug hotswap (JDWP), thus it’s still better than “nothing”, and it has potential since Spring Boot is getting popular and can actually save the time/day rather than being “intrusive” like the old SpringFramework approach.


That’s it. The slow deployment time was a counter-productive factor of Java development, but things are much better now thanks to such debugging tools.


Posted in Coding, Linux | 1 Comment

Git pull all


(targeted audiences: developers/coders/programmers)

Git projects are typically small and we may have multiple projects on a workspace.

Hence sometimes we have 8+ projects on the workspace it may be tedious to update git pull manually. And we don’t have “parent project” like in SVN anymore, not update all option huh? Okay we can do it with shell script.

I’ll make it one-liner, given the current working directory is the workspace:

for i in */.git; do ( echo $i; cd $i/..; git pull; ); done

And when we need to Git pull with rebase (or the global config always rebase when pulling), just use stash along with it. Replace the normal git pull with following:

git stash && git pull --rebase || git pull --rebase && git stash pop

Combined with the command above we can still have “one-liner” , but I also made a simple bash script for arbitrary workspace dir (not just basedir).

For non-Linux user (Redmond), either use Git Bash with above script, or the following batch script counterpart:

for /d %a in (*.*) do cd "%CD%\%a" && git pull

The git rebase stash above still works with Windows.

for /d %a in (*.*) do (cd "%CD%\%a" && git stash && git pull --rebase || git pull --rebase && git stash pop)

I also made a git-pull-all.bat for that as well (using %% variables with for loop, not % as in direct command line).


That’s it.




Bonus: For IDE you may want to enable auto import Maven/Gradle changes (so that after updating Git repos the dependencies will be update automatically). For example IntelliJ IDEA can enable Auto Maven Imports at:

File -> Settings -> Build, Execution, Deployment > Build Tools > Maven > Importing

(old versions of IntelliJ IDEA:

File -> Settings -> Maven > Importing


Also, enable Annotation Processing will be good when you are using libraries such as Lombok or Mapstruct.

File -> Settings -> Build, Execution, Deployment > Compiler > Annotation Processors

(IntelliJ wrap line at 120 spaces:
+ format: Settings / … / Code Style / JAVA / Wrapping and Braces / Ensure right margin is not exceeded = Yes

+ typing: Settings / … / Code Style / JAVA / Wrapping and Braces / Wrap on typing = Yes







Posted in Coding, Skill | 2 Comments

Grep Sed Awk



(Edited: bài viết từ cuối 2011 – ID:110 – draft state bấm nhầm publish lỡ rồi thôi)



Tìm các dòng chứa chuỗi chuoi trong 1 files:

$ grep "chuoi" ten_file


Tìm các dòng chứa chuỗi chuoi trong nhiều files đuôi .txt:

$ grep "chuoi" *.txt

(Nếu dùng find để tìm CHUOI trong file .txt:

 $ find . -name *.txt -exec grep CHUOI {} ;


 $ find . -name *.txt -print | xargs grep CHUOI


Tìm không phân biệt chữ hoa chữ thường: tùy chọn -i

$ grep -i "chuoi" ten_file

Tìm chính xác từ chuoi ko tinh chuỗi dài hơn như chuoichien : tùy chọn -w

$ grep -w "chuoi" ten_file

Tìm những dòng Không chứa chuoi (phủ định của tìm dòng chứa): tùy chọn -v

$ grep -v "chuoi" ten_file

Kết hợp lệnh ps để tìm process có tên java :

$ ps -ef | grep java


Ngoài ra còn có option -E để tìm theo RegEx, -F để tìm theo file.

Tìm tất cả dòng có chứa github hoặc bitbucket trong config các repository Git:

$ grep -E "github|bitbucket" */.git/config


Một số Linux distro sẽ có egrep tương đương “grep -E” , và fgrep tương đương “grep -F” .

Ngoài ra còn option -A-B cũng tương đối hữu ích.




Sed chủ yếu dùng để thay thế (substitute) các từ trong 1 văn bản, và có thể xuất kết quả ra output hoặc file khác (chứ ko nhất thiết đè lên file gốc).

Thay từ old (đầu tiên) bằng từ new trong file filename.txt :

$ sed -i 's/old/name/' filename.txt

Thay từ old (tất cả) bằng từ new trong file filename.txt :

$ sed -i 's/old/name/g' filename.txt


Nếu không thay thế trực tiếp (in place) thì ko cần option -i , có thể append/output ra file mới:

$ sed 's/old/name/g' filename.txt > newfile.txt


VD: thay URL HTTPS sang GIT trong .git/config file của 1 Git Repository:


sẽ có dòng sau trong file config trong thư mục .git ở root dir repo:

[remote "origin"] 
  url =

thì sau khi chạy dòng sed sau sẽ thay giao thức HTTPS bằng Git over SSH:

$ sed -i 's/https:\/\/\/ducquoc/' euler-fun/.git/config

(dấu backslash \ để escape ký tự slash /  trong regular expression ). Kết quả:

[remote "origin"] 
  url =

Áp dụng tương tự cho các Git repository ở bitbucket:

$ grep -E "bitbucket|github" */.git/config
$ sed -i 's/https:\/\/\/ducquoc/' */.git/config





Ứng dụng để dò git remote URL (chỉ in ra URL – cột 2 – sau khi grep) trong Git repository:

$ git remote -v | grep origin | awk '{print $2}'

(có thể assign vào biến shell script để xử lý tiếp)

Ứng dụng tìm process, lọc PID và xử lý :

$ ps -ef | grep PROCESS | grep -v grep | awk '{print $2}' | xargs kill -9

(kill -9 tương đương kill -s SIGTERM để tắt tất cả process input)

Tương tự:

$ ps -ef | awk '/PROCESS/ && !/awk/ {print $2}' | xargs -r kill -9


Ngoài ra awk có vài anh em họ: gawk, nawk, mawk – bổ sung một số tính năng nâng cao. Ở đây chỉ giới thiệu cơ bản awk , các command ở trên cũng ra cùng kết quả nếu dùng các chú kia.

Thế nên ai muốn tìm hiểu thêm xin cứ tự nhiên hỏi … Mrs. Google :D .





* nohup để giữ process vẫn chạy sau khi user ko còn login:

$ nohup  /usr/bin/php long_running_process.php > /var/log/nohup_long_running_process.log &

* Liệt kê các file backups và xóa bớt những file quá hạn với xargsrm -rf :

$ ls -td1 /data/backup/*/ | tail -n +4 | xargs -r rm -rfv 2> /var/log/backup_cleaner.log





Posted in Coding, Linux | Leave a comment

Not A Number




Khi lập trình với JavaScript,  có nhiều bạn khá thú vị với toán tử so trùng (===) , và thường ưu tiên hơn toán tử so sánh tương đương (==) .

Đây cũng là 1 điều được đề cập sớm trong quyển “JavaScript: The Good Parts” , cũng là 1 mục dễ gây hiểu lầm khi coding. Nó cũng gần như so sánh  ==    và    equals()   trong ngôn ngữ Java.

Tuy vậy, có những trường hợp mà kết quả của  ===  có thể khác với expectation theo logic kể trên.  Hãy xem thử đoạn JavaScript sau:

var n = "Anh";
console.log("Co phai la anh? n==n " + (n=="Anh"));
console.log("Anh that dung la anh? n===n " + (n==="Anh"));
console.log("Anh moi? == " + (n==new String("Anh")) + " GiaTri? " + (n==String.valueOf("Anh")));
console.log("Anh moi dung? === " + (n===new String("Anh")) + " GiaTriDung? " + (n===String.valueOf("Anh")));

var m = NaN;
console.log("Co phai la em? m==m " + (m==m));
console.log("Em co dung la em? m===m " + (m===m));
console.log("Khong phai anh a? " + (NaN==NaN));
console.log("Khong phai la anh, co phai la em? " + (NaN===NaN));



Nếu bạn biết coding, hãy dự đoán 1 chút trước khi cuộn xuống…








OK, nhẹ nhàng scroll down cái nào :)





Kết quả so sánh NaN==NaNfalse,

và so sánh NaN===NaN lại là false!

Ít nhất là trong JavaScript là như thế … (nói chung là ECMAScript – ES).


Anh không phải anh ? Em không phải là em?


Liệu có gì đó sai sai về mặt logic không?

Sau một hồi suy nghĩ , tôi cảm thấy cái này cũng hợp lý, không phải vấn đề ở biến “em” hay biến “Anh” .

Mà về mặt ký hiệu lập trình, NaN là pre-defined tượng trưng cho “Not A Number” , 1 giá trị không phải là số .

Nên “không phải số” có thể là 1 chuỗi (“m”), và khi so với 1 “không phải số” khác, thì có thể là chuỗi khác (“n” or “someArbitraryFunction”), hoặc thậm chí là hàm (function), vì thế kết quả so sánh giữa 2 cái sẽ không trùng nhau, hoặc không tương đương.

Nếu như vậy thì kết quả trên là hợp lý, có thể có rất nhiều giá trị ứng với NaN , cũng như khi đi từ A tới B có thể có rất nhiều con đường.

Một cách nói khác, khi ta nói về ngôn ngữ lập trình nói chung, nó có thể là Java, nó có thể là JavaScript, còn khi nói “không phải Java” thì ko có nghĩa là “phải là JavaScript” hoặc “phải là Ruby”, và tương ứng ngược lại.

Những cuộc thảo luận về ngôn ngữ lập trình thường khá hứng thú với nhiều coder/programmer , nhưng không nhất thiết dẫn tới sự đồng ý về “the next big language” or “the next big thing” .

Có lúc tôi nghĩ JavaScript là ngôn ngữ lập trình dẫn đầu, nhưng bây giờ thì có thể không là như vậy nữa. Thì điều này không có nghĩa là sự phê phán JavaScript, hay sự trách móc Java, C# , … có thể đó chỉ là những ngôn ngữ triển vọng nào đó (Python, Erlang?) hoặc tốt về mặt performance như Scala, Clojure,… hoặc thậm chí là Go, Elixir, …


Who knows?

The logic of a language design is just a thing in life. We may remember some particular cases, and bear in mind the general approach if that helps our work/life, that’s sufficient I guess.



Posted in Coding, Feeling | 1 Comment

Oracle JavaSE alternatives

Oracle used to have very good sales strategies, for instance it has early investment for Linux database markets, which proves to be a brilliant idea and helps Oracle gain a lot of reputation (later on Oracle DB is well known and got biggest marketshare for enterprise relational DBMS).

However, since its acquisition of Sun Microsystems, Oracle thinks it is a bigshot and now can turn its back on the community, can dictate the ecosystem of its acquired products. Hence, it seems Oracle is on the wrong track.



Starting with Hudson, a well-known opensource CI tools. The commercial attempts did not go well, though. And the community managed to come out with Jenkins CI, a fork from open source codebase, but it soons become more popular than Oracle’s Hudson.

Other attempts like MySQL “commercial support” prices doubled, or legal suing attempts against Google, resulted in mixed results. However I would say that Oracle got more hatred than it should. Google made the retaliation on the Chrome browser’s support of JRE, namely Java Applet will be no longer supported as of Chrome 42 due to “API not compatible/supported” – legacy “NPAPI” is too ugly to be supported. As of Firefox 52, Mozilla stopped supporting applet also, and it’s enough for the poor applet.

The MySQL community also made a fork “MariaDB” from MySQL, gradually gain popularity from MySQL users, though not as successful as Jenkins-vs-Hudson.


Recently, Oracle prepared a campaign on Java SE “licenses of end users”, looks like it prepare to sue big enterprises for using Java SE “illegally”. This is costly for such enterprises already, they have to hire legal people/services to review and prepare against such risks from Oracle (Google, you are not alone!).


As a result, people began to look at alternatives to Java SE. I will list a few:

+ IBM’s v9:

+ Redhat’s IcedTea:

+ Azul’s Zulu:

+ Azul’s Zing:

Besides, Apache Harmony and GNU Classpath/Kaffe are still around (though they seems slow as of OpenJDK). They have decent implementations, and can import/integrate OpenJDK code fork at any times.

Yes, the Java SE users are fully prepared for another lawsuit, and they have good alternatives already.


Oracle, being big does not make monopoly. Think twice before being greedy and abusing your acquired products like you are the biggest boss on earth. If Oracle continues to take the community lightly they will get loss instead of benefits, I suppose.





Posted in Feeling, Marketing | Leave a comment

Change You Need


Cảm hứng từ bạn Dưa Leo. Dưa Leo này hình như lớn hơn tôi 1 tuổi, tạm gọi là “bạn” vậy.

Nhiều bài talk của Dưa Leo tôi thấy khá giống với suy nghĩ của mình, nhưng Dưa Leo nói hay hơn, diễn đạt tốt hơn. Tôi cũng học được nhiều cách diễn đạt từ Leo, mặc dù không chắc lắm những gì anh ấy nói có thật sự là điều anh ấy tâm đắc hay không :) .


Chẳng hạn, bài tiêu biểu (rất sớm) trong channel của Leo là:

Cuộc đời hên xui, do mình hết đó!



Bạn Leo có vẻ cũng được ảnh hưởng từ Obama qua VN (“Change We Need” – ko phải THDT) nên có vài clip khá thú vị gần đây. Tôi đã quyết định tạo 1 playlist Youtube sưu tầm vài clip hay của Leo, và viết bài này ủng hộ cậu ta.

[Link playlist – place holder]



Về mặt “tiêu cực” của Leo, có vẻ là cậu cũng có sử dụng lại 1 số ý tưởng trước đây (chẳng hạn clip cách “Chọn Chồng” của Leo gần đây, cũng có nhiều ý tưởng từ 1 (series) bài viết cách đây chừng 2, 3 năm trên Web Trẻ Thơ.


Tuy vậy, với bản thân tôi thì đó chỉ là 1 khuyết điểm nhỏ kiểu “vạch lá tìm sâu” , điều tích cực là Leo đã chuyển thể được bài viết cũ sang dạng VLog, và đưa được tới rất nhiều khán giả. Thậm chí dạng có âm thanh, hình ảnh này còn thú vị hơn bài viết kiểu cổ điển vì nó dễ chuyển tải nội dung hơn, có thể broadcast cho số đông, hoặc làm multi-tasking với Mp3Player, HeadPhone, CellPhone, etc… .

Thậm chí đây có thể gọi là “sáng tạo lại” , một khái niệm mà khá nhiều người viết cũng công nhận.

Có một số tác phẩm thậm chí còn có vị trí nhất định vì có giá trị riêng, như Truyện Kiều của Nguyễn Du xuất phát từ Kim Vân Kiều Truyện của TTTN. Hoặc tác phẩm Lưu Tinh Hồ Điệp Kiếm của Cổ Long cũng được ông sáng tạo lại trên mạch truyện của “The Godfather” (Bố Già). Hoặc bộ phim nổi tiếng Avatar, cũng có người nói là nó được phỏng lại từ câu chuyện về người da đỏ châu Mỹ xưa, nhưng cũng ko quan trọng lắm Avatar vẫn đc xem là bộ phim nổi tiếng vì công nghệ 3D đầu tiên công chiếu và nội dung thì tương đối hấp dẫn.


Vì thế, nói chung thì tôi vẫn ủng hộ bạn Dưa Leo. Các vlog của Leo cũng có những điểm hay riêng. Nói cách khác, khi nói đến phim thì tôi thấy các phim  “Forrest Gump” (1994), “Fight Club” (1999), “Inception” (2010), “The wolf of WallStreet” (2013), “The Accountant” (2016), …v.v… đều là những phim hay, dù mỗi phim có bối cảnh và nội dung hoàn toàn khác nhau.





Posted in Marketing, Reading, Skill | Leave a comment

Thuật xử thế



6 thuật xử thế của người xưa – Chìa khóa của sự khôn ngoan

Thuật xử thế – cánh cửa dẫn tới sự khôn ngoan và thành công trong quan hệ con người. Dưới đây là 6 nguyên tắc xử thế của cổ nhân được đúc kết qua một thời gian rất dài.


Những chủ đề bàn luận về thuật xử thế có lẽ không còn xa lạ và mới mẻ. Khi quan hệ giữa người và người càng mở rộng thì nghệ thuật xử thế càng cần kíp hơn bao giờ hết. 


Dưới đây là 6 nguyên tắc xử thế của cổ nhân được đúc kết qua một thời gian rất dài.

Khi kiên trì ứng dụng những nguyên tắc này, bạn có thể trở nên một người khéo léo, thành công, đáng quí trọng hoặc ít nhất cũng tránh cho mình khỏi những oái oăm không ngờ đến trong giao tế hằng ngày.


1. Kiềm chế lòng tự ái cá nhân

Giữa chốn ba quân có thể đoạt được soái ấn nhưng không thể đạt được chí kẻ thất phu.

Con người dù tầm thường đến đâu thì bao giờ cũng có suy nghĩ bản thân mình quan trọng. Đó chính là cái tôi trong mỗi người. Lòng tự ái là nguồn gốc cho rất nhiều chuyện đắng cay đáng tiếc. Trong các cái khổ, cái khổ do lòng tự ái gây ra là khó chịu uất ức hơn hết.

Khuất Nguyên người nước Sở luôn nghĩ rằng: “Đời đục cả, một mình ta trong; người say cả, một mình ta tỉnh… Bởi vậy, ta phải bị bỏ đi…”

Đó không riêng là tâm sự của Khuất Nguyên mà là tâm sự chung của con người. Khi mà mình luôn muốn cho người ta phải nghe theo ý mình mới chịu. Tại sao ta không để cho người ta theo ý họ? Cho họ cái họ muốn một cách thật tế nhị, và bạn sẽ thu phục được lòng họ.

Đừng công kích, đừng nói mỉa, đừng mạt sát ai,… đừng chạm vào tự ái của người khác nếu bạn muốn họ nghe theo ý bạn. Hơn nữa, thiện cảm đầu tiên bạn tạo được với người khác cũng chính là chìa khóa thành công sau này.

Đúng sai là một lẽ tương quan. Họ nghĩ họ đúng, mình cũng vậy, nếu cứ tiếp tục cãi thì khó được ổn thỏa. Chi bằng ta im lặng và để hành động cùng thời gian chứng minh tất cả.


2. Chữ Lễ

Ẩn ác dương thiện. Cái gì không muốn làm cho mình thì đừng làm cho người khác.

“Tuy làm cho người ta đuối lý ngậm miệng, đỏ mặt tía tai, mình hả dạ thật, nhưng đó là người nông nổi, khắt khe…” – Lữ Khôn

Lễ là nhún nhường, đặt cái tôi của mình sau người khác. Như thế không phải là giả dối làm lợi cá nhân. Lễ là tránh đau khổ cho người khác bằng cách nhã nhặn bản thân mình. Không chạm tự ái của ai. Che đi cái xấu, cái dở và tuyên dương cái hay cái đẹp của người khác. Một người rộng lượng không ích kỉ sẽ làm được như thế, một cách vô tư.

Đối với người thấp kém hơn mình người khác dễ sinh lòng tự phụ, kiêu căng. Nhưng họ không ngờ chính sự kiêu căng, tự phụ ấy đã làm hại tới chính mình. Gieo rắc vào lòng người sự căm ghét và thù hận. Một số người còn lãnh nhận hậu quả tàn khốc bởi bị trả thù.

Vậy mới biết mình đừng bao giờ để ngạo khí trấn át. Những thói kiêu căng, biếm lẽ thường chỉ xuất hiện ở loại người không đạt chí. Người ta càng thấp kém càng có tâm cảm tự ti, đó là nguồn gốc sinh ra thù hận với người hơn mình. Đừng để điều đó hủy hoại bạn. 

Đối với người trên mình phải kính trọng, đối với người dưới càng phải khiêm nhường là vậy.


3. Đừng cậy tài

Khôn mà làm như ngu ngốc, đó mới thật là khôn.

Dương Tu bị Tào Tháo giết bỏ chính vì thói làm khôn, tỏ ra của mình. Dương Tu là người thông minh tài trí, luôn đoán biết được ý định của Tào Tháo. Lần nào Tào ra ẩn ý ông cũng đều giải quyết được. Điều này làm Tào Tháo vô cùng căm ghét, cho là thói ngạo mạn, làm khôn. Cuối cùng không kìm được mà xử tử.

Người thông minh tỏ ra thông minh đó là thường. Người thông minh có tài mà luôn tỏ ra bình thường, ẩn lặng là một người vô cùng khôn khéo. Đó chính là bí quyết tránh cho mình khỏi tai vạ. Họ không bao giờ làm cao, nhưng luôn nhún nhường. Âm thầm đem tài năng ra cống hiến, âm thầm sống không màn uy danh. Đó là cốt cách của kẻ hơn người.


4. Chuyện ơn nghĩa

Ân càng thâm oán càng sâu

Hàn Tín khi xưa bị Hán Vương bêu đầu cũng vì thói vòi vĩnh, nhắc ơn. Hàn Tín là một tướng giỏi, lập được nhiều công trạng cho triều Hán. Nhưng thói xử thế của ông rất ngây thơ, nghĩ rằng mình lập được nhiều chiến tích nên hết lần này đến lần khác đòi hỏi phong vương, bổng lộc, làm cao chạm tới tự ái đế vương của vua Hán. Hán Vương nhiều lần nhịn nhục, Hàn Tín không hay vẫn làm cao, nghĩ rằng Hán không phụ mình vì mình tài giỏi, lập nhiều chiến công.

Chính sự ngây thơ đó đã đoạt mạng Hàn Tín.

Trong giao thiệp, người ta quí trọng nhất bao giờ cũng là người thật thà, dễ thương, gần họ bạn thấy mình cao trọng hơn hẳn.

Người ta lấy oán báo ân chính là muốn rũ bỏ cái ơn sâu của người làm ơn. Không muốn mắc nợ nên cuối cùng bội phản. Nghịch lý nhưng đúng như vậy.

Nếu được hãy làm ơn, rồi quên hẳn nó đi. Đừng nhắc lại.


5. Đạo cương nhu

Nhu thắng cương, nhược thắng cường

Tô Đông Pha có câu: “Những bậc đại dũng trong trời đất thình lình gặp những việc phi thường không kinh, vô cố bị những điềungang trái cũng không giận. Đó là nhờ chỗ hoài bão họ rất lớn và chỗ lập chí họ rất xa.”

Nhịn được điều người khác không thể nhịn, tha thứ được điều người khác không thể tha, phải là một người bao dung hơn người, hiểu biết hơn người, điềm tĩnh hơn người mới làm được.

Người ở trong thế yếu nuôi í chí lật ngược thế cờ mà không có đủ dũng lực chịu những điều mạt sát, khinh thị thì không thể làm nên chuyện lớn.

Điềm tĩnh, nhịn nhục không phải là nhu nhược. Mà thực sự đó chính là sự oai dũng đệ nhất. Dùng “Nhu” thắng “Cương” chỉ có người điềm tĩnh lắm mới làm được. Và thành quả mà nó mang lại cũng ngoài sức tưởng tượng như thế.

Trong thuật xử thế, cái hàng đầu là phải Biết mình.


6. Biết là sống

Khôn, chết. Dại, chết. Biết…sống

Người thông minh, hiểu biết sâu sắc nhất luôn biết tỏ ra giản dị, thường thường. Không phải nói rằng mình trở thành người ngu ngốc, thờ ơ thế sự, mà nói rằng mình biết tiết chế điều hiểu biết của mình vì chỉ có người thật thông minh mới biết lúc nào nên làm như người ngây thơ mà thôi.

Biết lúc khôn, biết lúc dại, biết thời biết thế. Nói chung là biết rõ thời.

Biết ở đây là biết tùy lúc mà ứng biến cho hợp tình huống. Nếu chỉ khư khư một mực thì rất dễ hỏng việc.

Con cọp muốn làm khác loài, bỏ rừng ra đồng bằng thì chết. Người ta đều khờ dại mà mình muốn tỏ ra khôn lanh để khác biệt thì biết đâu lại mang họa tới.

Enstein từng nói: “Dấu hiệu nhận biết thiên tài là tất cả những đứa ngu đều đứng lên chống báng.” Câu nói hài hước, nhưng đúng.



Tóm lại: Đây là 6 nguyên tắc đơn giản mà không hề giản đơn người xưa đã đúc rút ra được để biến mình trở thành người toàn năng trong giao thiệp. Tuy khó làm, nhưng nếu thành công, thì kết quả đem lại không hề nhỏ. Nếu bạn bắt gặp mình phạm phải những nguyên tắc trên, thì giờ là lúc bạn thay đổi.



(Source: OHayTV @NguyenPhuocMinhTan  )




Posted in Reading, Skill, Wisdom | 1 Comment

Thanh Nhan Tong


She’s Gone – SteelHeart




Dieu Ngot Ngao Nhat – Cao Thai Son



Vi toi con song – Tien Tien






Posted in Feeling, Skill | Leave a comment

Munchausen at work

(mới thấy hết vẻ đẹp của Hoa Lá)

Hoa vàng phải có Lá xanh – mới thấy hết vẻ đẹp của Hoa Lá



Đây là một vấn đề khá phổ biến ở nhiều cơ quan, chỗ làm. Tuy vậy với đặc tính nhạy cảm của nó, vấn đề ít khi được nêu một cách rõ ràng hoặc dễ hiểu đến nhiều người.

Ngay cả ở các nước công nghiệp phát triển, kinh doanh và sản xuất đã đạt đến mức cao và có nhiều cách tiếp cận khoa học, đây vẫn còn là một vấn đề ít được lưu ý. Mãi đến khi tạp chí Havard Business Review đặt cho nó một cái tên khá cụ thể: “Munchausen by Proxy at work” [1], thì nhiều triệu chứng và cách khắc phục mới được diễn tã cụ thể.

Sau HBR, các tác giả khác cũng có bài tương tự trên WallStreet Journal [2] và Bloomberg Business Week [3], cá nhân tôi thấy rất hữu ích cho các công ty làm việc văn phòng nói riêng, và cho các tổ chức nói chung. Dẫn tới bài Việt hóa này để làm bài tham khảo, bởi thường các site Việc Làm hoặc Cẩm Nang Nghề Nghiệp cũng ít khi dịch những bài này (dễ gây tranh cãi ;-) , nói chung là nhạy cảm).





Munchausen (cổ tích)

Bá tước Munchausen  (Münchhausen) là một Nam tước người Đức có tài kể chuyện, và ông rất thích kể về những chuyến phiêu lưu của mình. Ông đã kể những chuyến phiêu lưu tưởng tượng của mình đạt đến mức nhiều người hình dung ra được vùng đất & sinh vật và cuộc sống ở những nơi đó (Munchausen chưa từng đến) :D . 

Ít nhất thì một số chuyến phiêu lưu của Munchausen cũng có giá trị giải trí – tóm lại trong truyện cổ châu Âu thì “Munchausen” là 1 kiểu nhân vật như “Bác Ba Phi” ở truyện VN. 


Munchausen (y học)

Hội chứng Munchausen, là một hội chứng tâm thần, thường được gọi là “Rối Loạn Giả Bệnh”. 

Những người mắc bệnh này có xu hướng tỏ vẻ ốm đau để được chăm sóc. Họ không phải đơn giản là “giả bệnh” để trốn tránh trách nhiệm hoặc nhằm yêu cầu cụ thể gì đó, mà là họ có xu hướng tự thuyết phục bản thân rằng mình mắc bệnh, đặc biệt có thể gây thêm bệnh hoặc thương tích cho bản thân để thành bệnh thật nếu bị ai đó khuyến khích hoặc xúi giục. 

Có người thậm chí làm cho mình mắc những triệu chứng kinh khủng bằng cách tự gây thương tích cho bản thân hoặc tự tiêm chất độc vào cơ thể để liên tục đến bệnh viện chữa trị. Điều họ muốn chủ yếu là tìm kiếm sự chú ý và chăm sóc. Nếu bác sĩ ở nơi này nghi ngờ họ giả vờ bệnh, họ sẽ tìm đến bác sĩ khác, rất ít khi khai thật với bác sĩ.

Và một hội chứng liên quan trực tiếp nữa là “Munchausen by Proxy” (rối loạn giả bệnh do ủy nhiệm). Đây là triệu chứng của một người lẽ ra là người chăm sóc và giúp đỡ người bệnh – nhưng vì một số lý do – họ không muốn nạn nhân khỏi bệnh, ngược lại còn khuyến khích bệnh nhân chấp nhận là họ đang có vấn đề về tâm lý thần kinh gì đó – dẫn tới bệnh nhân này sa đà vào hội chứng Munchausen kể trên.

Thậm chí, người Proxy này còn chủ động gây thương tích và chấn động tâm thần bệnh nhân, để có vẻ là người cực kỳ lo lắng và chăm sóc triệt để cho người bệnh. Họ theo sát và chăm sóc người bệnh, nhưng khi bệnh nhân có dấu hiệu khỏe lên họ lại tác động lên bệnh nhân để triệu chứng nặng trở lại – và họ lại thể hiện được sự quan trọng của mình.

Vì thế bệnh nhân sẽ phải điều trị qua nhiều bác sĩ hoặc bệnh viện, nhưng ít ai có thể hiểu được nguyên nhân vì sao bệnh không giảm.

Thường khó nhận ra được triệu chứng này (vì vậy triệu chứng ở chỗ làm là được đặt tên dựa theo cái này), bởi người Proxy thường có vẻ rất hợp lệ (như là “mẹ ruột”) – ít ai ngờ rằng họ lại muốn con mình bệnh kéo dài để che lấp những vấn đề gì đó – và làm cho người mẹ trông tốt hơn, có vẻ “đầy trách nhiệm” hơn. Mặc dù như vậy thì người bệnh Munchausen ngày càng nặng, và để lại nhiều di chứng nặng nề về tâm lý sau này.



Munchausen by Proxy ở chỗ làm

Bạn là một trưởng nhóm (hoặc trưởng phòng), và đang phải giải quyết một vấn đề khó khăn đang diễn ra trong nhóm, thì bỗng dưng nảy sinh ra một vấn đề mới cũng đầy tính thử thách gian nan. 


… (to be continued) … 


[1] Nathan Bennet, Munchausen at Work, Havard Business Review 2007.

[2] Phred Dvorak, ‘Munchausen at Work’ – Employees Advance By Fixing Problems They Had Created, Wall Street Journal 2008.

[3] Jena McGregor, Munchausen at Work, Business Week 2007.





Posted in Feeling, Reading, Skill | 3 Comments

Demi-god Stories 4



Thế à?


Thiền sư Minh Tâm rất được mọi người trọng vọng kính nể vì phong cách đạo đức thánh thiện của ông.


Một ngày kia, có một người con gái trẻ đẹp nhà gần chùa của thiền sư bỗng bị chửa hoang. Người ta không biết cha đứa bé là ai. Bố mẹ cô gái vô cùng tức giận và xấu hổ nên đánh đập tra khảo cô con gái về lai lịch tình nhân của cô. Ban đầu cô con gái không chịu nói gì cả, nhưng sau cùng vì bị đánh đập dữ dội, cô tiết lộ đó là thiền sư Thích Chiếu Pháp.


Tin xấu đồn ra nhanh chóng. Cha mẹ cô gái giận dữ, đùng đùng lên chùa và mắng xối xả vào mặt Minh Tâm. Khi họ dứt lời, Minh Tâm chỉ thốt hai tiếng “Thế à!” .


Sau khi đứa bé chào đời, gia đình cô gái mang đứa bé quẳng cho Minh Tâm nuôi. Trong thời này, Minh Tâm đã bị tai tiếng và nhiều người chê bai trách móc ông đủ điều; nhưng Minh Tâm vẫn thản nhiên như không, dường như câu chuyện kia chẳng có dính líu gì đến ông cả.


Minh Tâm chăm sóc đứa bé thật tử tế và bồng nó đi xin sữa khắp nơi.


Thiền sư Vô Trú khen Thích Chiếu Pháp đã hiểu được quyển sách “Quẳng Gánh Lo đi để mà vui sống“. Minh Tâm mỉm cười, “Thế à“.


Sư Thích Chứng Minh cười với Thích Chiếu Pháp mà rằng: “A di đà phật! Những bậc chân tu hiểu thấu thần khẩu và xác phàm! Lành thay! Ta không vào địa ngục thì ai vào đây.” .

Thế à“.



Một năm sau, cô gái vì cảm thấy ray rứt hối hận nên đã thú thực với cha mẹ là người cha đứa bé không phải là Thích Chiếu Pháp mà là một chàng thanh niên làm việc ở chợ cá. Cha mẹ cô ta vội chạy lên chùa dập đầu tạ lỗi với Minh Tâm và xin mang đứa bé về.


Thiền sư Minh Tâm vẫn thản nhiên như không, thốt lên hai tiếng “Thế à!“.



Posted in Reading, Skill | 2 Comments