Thursday, February 8, 2018

Windows file explorer cached hostname specified in hosts file

The 'hosts' file in Windows allows user to add hostname to IP entries. When you modify the entries in hosts, the file explorer might not reflect the changes immediately. This is because the mapping is already cached in the Workstation service.

Consider the following situation, you may hosts file with the following entry:

192.168.1.100   my_nas

Then you can use \\my_nas\share in the file explorer to view content in \\192.168.1.100\share. Next, you try to modify the entry as following:

192.168.1.101   my_nas

While the command ping my_nas tells you my_nas is now 192.168.1.101, but the file explorer cached the entry, hence \\my_nas\share still points to the old IP (i.e. 192.168.1.100).

To clear this cache, apart from rebooting the machine, user can consider to restart the "Workstation" service instead.




Tuesday, January 16, 2018

LineDashedMaterial in three.js

To use LineDashedMaterial in three.js:

var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(590058.52, 231354.16, 766.42));
geometry.vertices.push(new THREE.Vector3(589941.68, 231476.67, 736.52));
geometry.vertices.push(new THREE.Vector3(589781.32, 231491.91, 757.73));
geometry.vertices.push(new THREE.Vector3(589711.88, 231445.56, 768.16));
geometry.vertices.push(new THREE.Vector3(589702.04, 231336.49, 772.91));
geometry.computeLineDistances();

let material = new THREE.LineDashedMaterial( {
    color: 0xff0000,
    linewidth: 1,
    scale: 1,
    dashSize: 5,
    gapSize: 3,
} );

let line = new THREE.Line(geometry, material);
scene.add(line);

Note: 
  • You need to call geometry.computeLineDistances() to make the dash work
  • computeLineDistances( ) only works with Geometry (Not work with BufferGeometry)
  • The linewidth has no effect in Windows, it is always equals 1

Wednesday, October 18, 2017

Null safe expression in Thymeleaf

Using '?' after the variable in Thymeleaf expression, that variable will be null safe.

<td th:text="${user.department?.name}"></td>
For the avoid example, even variable department is null, the expression will still be fine.

Thursday, August 17, 2017

Monday, June 5, 2017

Skip testing in Maven

To skip the unit testing in Maven, we need to set the environment variable "maven.test.skip" to true. Or we can use "-DskipTests"

Sample command:

Prompt> mvn package -Dmaven.test.skip=true

OR

Prompt> mvn package -DskipTests

Reference:

https://www.mkyong.com/maven/how-to-skip-maven-unit-test/

Tuesday, May 16, 2017

Query windows patch via command line

To check if a windows patch (e.g. KB1234567) has been installed, run the following command line:

     C:> wmic qfe | find "1234567"


Thursday, December 22, 2016

KVM with NKRO keyboard

Most KVM (e.g. ATEN CS62U) won't compatible with NKRO (N-Key Roll Over) keyboard (e.g. Most mechanical keyboard are with NKRO).

So please pay more attention when purchasing a KVM for NKRO keyboard.


Tuesday, August 23, 2016

git commands

There are some useful git commands:

Setup a repository:

     git init --bare

Copy an existing repository:

     git clone drive:

Add file to repository:

     git add file
     git commit
     git push

Get updated files from repository:

     git fetch

Merge updated files to my workspace:

     git merge



Tuesday, August 9, 2016

Web Application Firewall (WAF)

By definition, WAF is going to filter out web request containing SQL injection, cross-site scripting, etc.

Ref: https://www.owasp.org/index.php/Web_Application_Firewall

Thursday, July 21, 2016

Smallest font size in Chrome

Since Chrome has a smallest font size setting, you can't use CSS to set font size less than (12px, by default):

   font-size: 6px !important; /* This has no effect ! Sigh .. */


Instead, you may consider to use transform instead:

   transform: scale(0.833); /* 10/12 = 0.833 */


And you may also consider to shift the <div> container to fix the position changed by transform:

   position: relative;
   left: -15px;


CSP on Apache

To add CSP to root if sort of funny. The following will NOT work for most cases !!     <LocationMatch "^/$">        Header s...