Wednesday, January 17, 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

Tuesday, June 6, 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/

Wednesday, May 17, 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.


Wednesday, August 24, 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



Wednesday, August 10, 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;


Friday, June 10, 2016

Backup and Restore with PostgreSQL


Enter psql
DOS> psql -U user database_name
DOS> psql database_name (if no password defined)

Drop DB
DOS> dropdb database_name
PSQL# drop database database_name

Create DB
DOS> createdb database_name
PSQL# create database database_name

Dump DB
DOS> pg_dump database_name > file_name

Restore from Dump
DOS> psql -U user -d database_name -f file_name


Upgrade nodejs in conda (from v18 to v26)

If your conda env is nodejs v18, doing a conda install nodejs=26 is likely to create a lot of conflict. Consider remove those conflicting p...