Friday, May 10, 2019

k8s Liveness vs Readiness

Liveness: The kubelet uses liveness probes to know when to restart a Container. 
Readiness: The kubelet uses readiness probes to know when a Container is ready to start accepting traffic.

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

Wednesday, May 8, 2019

Share directory over HTTP with Python

cd the directory you want to share, and
# For Python >=2.4
python -m SimpleHTTPServer 8888
# For Python 3.x
python3 -m http.server 8888
Then you can access this http server with: http://your_host_ip:8888

Friday, May 3, 2019

PlantUML example



@startuml
hide footbox
title HANA CDN Service
database HANA
== Initialization ==
CDN -> Kafka: get Last PFCDIK of today
CDN <- Kafka: Last PFCDIK of today
note over CDN: set Last PFCDIK as 0 if no PFCDIK was found for today

|||

== Poll/Publish delta changes ==
loop every 1 minute
    CDN -> HANA: changes since Last PFCDIK of today
    CDN <- HANA: delta changes
    CDN -> Kafka: publish delta changes to topic
    CDN -> CDN: update local Last PFCDIK of today
end





Thursday, April 25, 2019

Base64 encoded string to Decimal

We are using kafka-connect-jdbc to streaming data out of HANA Views, and the decimal columns are now saved as base64 encoded strings in Kafka.

To decode it with Python:
    """Convert a base64 encoded string to decimal
       b64str: the base64 encoded string
       Example: 'ATFvqA==' -> 20017064,  'JA==' -> 36
    """
    def b64_string_to_decimal(b64str):
        decoded_bytes = base64.b64decode(b64str)
        decimal_value = decimal.Decimal(int.from_bytes(decoded_bytes, byteorder='big'))
        return decimal_value

To decode it with Java:
    /*
     * Convert a base64 encoded string to decimal
     * b64str: the base64 encoded string
     * Example: 'ATFvqA==' -> 20017064,  'JA==' -> 36
     */
    public BigDecimal base64StringToDecimal(String b64String) {
        BigDecimal bigDecimal = new BigDecimal(new
BigInteger(Base64.getDecoder().decode(b64String)));
        return bigDecimal;
    }

Tuesday, October 30, 2018

parameter in Kotlin Primary constructor

var/val within constructor declares a property inside the class. When you do not write it, it is simply a parameter passed to the primary constructor, where you can access the parameters within the **init** block or use it initilize other properties.  Constructor parameter is never used as a property.

SAP HANA: get max record for a group

1. With Rank node

2. With Aggregation/Join node



Performance:
Rank node wins.