Tuesday, December 12, 2023

ffmpeg to convert MPEG4 to Animated GIF

In short, use the following command to do the conversion:

ffmpeg -i source_file.m4v -filter_complex "[0:v] split [a][b];[a] palettegen [p];[b][p] paletteuse" output_trimmed_enhanced.gif


Reference: https://www.bannerbear.com/blog/how-to-make-a-gif-from-a-video-using-ffmpeg/



Wednesday, December 6, 2023

Using Conda behind firewall

 To use conda behind firewall, in Windows:

1) Edit the .condarc

channels:
- defaults
proxy_servers:
  http: <proxy_host>:8080
  https: <proxy_host>:8080
ssl_verify: False

NOTE: Beware doing something like this:
http: http://proxyhost:8080
https: http://proxyhost:8080

Don't add "http://" above, it's wrong!


2) Using pip (need to trust the hosts)

pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pandas

Some other better methods exist, the above is just one of the options that works.

Wednesday, August 16, 2023

Bind port 80 for normal user in Linux

To bind port 80 for normal user in Linux, use 'authbind'

Steps:

1. sudo apt get authbind

2. sudo touch /etc/authbind/byport/80

3. sudo chown user:user /etc/authbind/byport/80

4. chmod 500 /etc/authbind/byport/80

5. authbind --deep <command to run> (e.g. quasar dev)

Wednesday, June 28, 2023

Favourite LS_COLORS

Just wanna have my script files (Python script, Shell script) shows color in ls:

LS_COLORS=$LS_COLORS:'*.py=0;94:*.sh=0;94' ; export LS_COLORS 

Wednesday, June 14, 2023

Watch git log automatically

Linux one-liner to watch and refresh git log every 30 secs:

watch --color -n 30 "git fetch; git log origin/master -30 --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --color=always"






Monday, June 5, 2023

scp windows recursive copy problem

 In you encounter scp problem when doing a recursive copy from Windows to Linux, try adding the -O parameter.

scp -r -O sample-files/ target-server:/target-path/

Thursday, February 16, 2023

Stop QGIS from generating the .aux.xml files when opening GeoTiff files

  1. Start QGIS
  2. Go to "Settings" > "Options"
  3. In Options window, find "System", then "Environment"
  4. Add environment variable "GDAL_PAM_ENABLED" with value equals "NO"
  5. Restart QGIS

Thursday, January 19, 2023

Compile fanvanzh's 3dtiles in Linux

Working for fanvanzh's 3dtiles Linux compilation for days. Some items for reminding everybody how wants to do the same thing.

liwei0705 did a good move in making fanvanzh's 3dtiles converter works. But if you are using a new version of OSG and GDAL, pay attention to the following summarised reminders when building your own version of "_3dtile"

  • Delete 3dtiles/bin, it is for windows only
  • Compile your own OpenSceneGraph
    • Copy OpenSceneGraph /lib to 3dtiles
    • Copy OpenSceneGraph /include/* to 3dtiles/src/osg/*
  • If not compile OpenSceneGraph on your own, you can install "openscenegraph" and "libopenscenegraph-dev" instead
    • Delete /lib in 3dtiles (the /lib is for self-compiled OSG, GDAL actually)
    • Delete 3dtiles/src/osg/ (no need to provide OSG header, use the one in libopenscenegraphi-dev)
    • Install gdal-bin, libgdal-dev
      • rm -rf 3dtiles/src/gdal (we will use libraries and header by gdal-bin and libgdal-dev)

    • Source file: src/tileset.cpp
      • Hide up #ifdef _WIN32, turn on "epsg_convert" and "wkt_convert"
      • Comment out GDAL_DATA: 
        • // CPLSetConfigOption("GDAL_DATA", path);

    • For epsg_convert( )
      • Don't use importFromEPSG(), use:
        • // For 2326 Input (Hard code the input SRS) (Ref)
        • inRs.importFromProj4("+proj=tmerc +lat_0=22.3121333333333 +lon_0=114.178555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,-0.067753,2.243648,1.158828,-1.094246 +units=m +no_defs +type=crs");
        • // for 4326 Output (Hard code the output SRS) (Ref)
        • outRs.importFromProj4("+proj=longlat +datum=WGS84 +no_defs +type=crs");

    • Source file: src/earcut.hpp
      • Add header files
        • #include <stdexcept>
        • #include <limits>

    • Source file: build.rs
      • In linux bulid config, add:
        • println!("cargo:rustc-link-lib=gdal");

    • When running the ./target/release/_3dtile
      • export LD_LIBRARY_PATH=./lib

    • Side notes, if you use "cargo run" for debugging and when to rebuild the project when some CPP files are modified, add the following in linux build config (build.rs): (reference)
      • println!("cargo:rerun-if-changed=./src/tileset.cpp");


    Sync multiple git repo at once

    Use the following command in Linux will do the job:  ls -d RepoNames* | xargs -I{} git -C {} pull