2020-03-19

How to install maven on macOS

I recommended use Homebrew to install maven:

brew install maven

2020-03-15

Przeniesienie statycznej strony do AWS S3

Od dłuższego czasu nosiłem się z zamiarem przejścia ze swoją stroną domową do AWS - tak dla nauki przez zabawę. Wspomniana strona (marceen.pl) jest prosta - wiele się tam nie dzieje. Jest co prawda formularz kontaktowy i mechanizm pobierający i wyświetlający wpisy z tego bloga. Postanowiłem jednak z tego wszystkiego zrezygnować. Dzięki temu strona mogła stać się statyczna i można było ją umieścić na AWS S3 bardzo niewielkim kosztem. Utrzymanie tej strony również będzie tańsze niż przy tradycyjnym hostingu. 

Kroki, które trzeba wykonać:

  1. Utworzenie potrzebnych bucket'ów na S3 oraz podpięcie do nich własnej domeny (Route53): https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html#root-domain-walkthrough-add-record-to-hostedzone
  2. Utworzenie pipeline'a pomocnego przy wdrażaniu nowej wersji (CodePipeline): https://medium.com/@sithum/automate-static-website-deployment-from-github-to-s3-using-aws-codepipeline-16acca25ebc1

2020-02-22

Install java on macOS with allowing version switching

Installing with Homebrew

-- Updating brew:
brew update

-- Adding the casks tap:
brew tap homebrew/cask-versions

-- Adding AdoptOpenJDK (https://adoptopenjdk.net/ and https://github.com/AdoptOpenJDK/homebrew-openjdk):
brew tap adoptopenjdk/openjdk

-- Looking for java versions:
brew search java

-- Looking for AdoptOpenJDK versions:
brew search jdk

-- Checking the details on the java version that will be installed:
brew cask info java

-- Checking the details on the AdoptOpenJDK version that will be installed:
brew cask info jdk

-- Installing current version java:
brew cask install java

-- Installing specific version of AdoptOpenJDK:
brew install --cask adoptopenjdk12

Where is my java?

/usr/libexec/java_home -V

Switching java version using .bash_profile:

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_12_HOME=$(/usr/libexec/java_home -v12)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
alias java10='export JAVA_HOME=$JAVA_10_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java12='export JAVA_HOME=$JAVA_12_HOME'
alias java13='export JAVA_HOME=$JAVA_13_HOME'

# default to Java 13
java13
source: https://stackoverflow.com/questions/52524112/how-do-i-install-java-on-mac-osx-allowing-version-switching

Installing Java17

source: https://java.tutorials24x7.com/blog/how-to-install-openjdk-17-on-mac

2020-02-19

iterm2: setting keyboard shortcuts to jump to beginning/end of line

Add new keyboard shortcut in Preferences > Profiles > Keys:
FOR  ACTION         SEND
⌘←  "SEND HEX CODE" 0x01 
⌘→  "SEND HEX CODE" 0x05
⌥←  "SEND ESC SEQ"  b
⌥→  "SEND ESC SEQ"  f

2020-01-12

pgAdmin4 on Docker - exporting and importing Servers

Export:

get container id:
docker ps

dump server list:
docker exec -it {container id} python setup.py --dump-servers servers.json --user {user}

get server list:
docker cp {container id}:/pgadmin4/servers.json servers.json

Import:

launch pgadmin:
docker run -p 801:80 --name pgadmin \
-e "PGADMIN_DEFAULT_EMAIL={user}" \
-e "PGADMIN_DEFAULT_PASSWORD={pass}" \
-d dpage/pgadmin4

get container id:
docker ps

copy server list into container:
docker cp {container id}:/tmp/servers.json

import server list:
docker exec -it {container id} python setup.py --load-servers servers.json --user {user}

source: https://www.pgadmin.org/docs/pgadmin4/latest/import_export_servers.html

2018-06-12

Rounding BigDecimal into scale 2 in WebService

BigDecimalConverter class:
final class BigDecimalConverter {
    private final static Logger logger = LoggerFactory.getLogger(BigDecimalConverter.class);

    private static final int SCALE = 2;

    static String convertToString(BigDecimal bigDecimal) {
        if (bigDecimal == null) {
            return null;
        }

        logger.info("Rounding bigDecimal {} into scale {}", bigDecimal, SCALE);
        return bigDecimal.setScale(SCALE, RoundingMode.HALF_UP).toString();
    }
}
BigDecimalXmlAdapter class:
public class BigDecimalXmlAdapter extends XmlAdapter {
    private final static Logger logger = LoggerFactory.getLogger(BigDecimalXmlAdapter.class);

    @Override
    public BigDecimal unmarshal(String s) {
        logger.info("Unmarshal String: {}", s);

        try {
            return new BigDecimal(s);
        } catch (NumberFormatException e) {
            return null;
        }
    }

    @Override
    public String marshal(BigDecimal bigDecimal) {
        logger.info("Marshal BigDecimal {}", bigDecimal);

        return BigDecimalConverter.convertToString(bigDecimal);
    }
}
package-info.java file:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://app.host.pl/api/types", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters({
        @javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter(value = pl.marceen.soap.control.BigDecimalXmlAdapter.class, type = java.math.BigDecimal.class)
})
package pl.host.app.api.types;