wtorek, grudnia 26, 2017

Współczynnik rodzinności samochodu


poniedziałek, grudnia 18, 2017

Modern Tibco monitoring with JMX, Prometheus and Grafana












{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "gnetId": null,
  "graphTooltip": 0,
  "hideControls": false,
  "id": 9,
  "links": [],
  "refresh": false,
  "rows": [
    {
      "collapse": false,
      "height": 507,
      "panels": [
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": null,
          "description": "$bw_apps",
          "fill": 1,
          "id": 1,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "show": true,
            "sortDesc": false,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "repeat": "bw_apps",
          "scopedVars": {
            "bw_apps": {
              "selected": true,
              "text": "TRA|BWPublicationService-1.tra",
              "value": "TRA|BWPublicationService-1.tra"
            }
          },
          "seriesOverrides": [],
          "spaceLength": 10,
          "span": 12,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "Bw_createdJobs{component=~\"$bw_apps\",job=~\"tibco-bw-prod.*\"}",
              "format": "time_series",
              "instant": false,
              "interval": "",
              "intervalFactor": 2,
              "legendFormat": "Created on {{host}} > {{object}}",
              "metric": "Bw_createdJobs",
              "refId": "A",
              "step": 120
            },
            {
              "expr": "Bw_completedJobs{component=~\"$bw_apps\",job=~\"tibco-bw-prod.*\"}",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "Completed on {{host}} > {{object}}",
              "metric": "Bw_completedJobs",
              "refId": "B",
              "step": 120
            },
            {
              "expr": "Bw_abortedJobs{component=~\"$bw_apps\",job=~\"tibco-bw-prod.*\"}",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "Aborted on {{host}} > {{object}}",
              "metric": "Bw_abortedJobs",
              "refId": "C",
              "step": 120
            },
            {
              "expr": "Bw_inFlightJobs{component=~\"$bw_apps\",job=~\"tibco-bw-prod.*\"}",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "Waiting on {{host}} > {{object}}",
              "metric": "Bw_inFlightJobs",
              "refId": "D",
              "step": 120
            },
            {
              "expr": "Bw_hasErrors{component=~\"$bw_apps\",job=~\"tibco-bw-prod.*\"}",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "Errors on {{host}} > {{object}}",
              "metric": "Bw_hasErrors",
              "refId": "E",
              "step": 120
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeShift": null,
          "title": "$bw_apps",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ]
        }
      ],
      "repeat": null,
      "repeatIteration": null,
      "repeatRowId": null,
      "showTitle": false,
      "title": "Dashboard Row",
      "titleSize": "h6"
    }
  ],
  "schemaVersion": 14,
  "style": "dark",
  "tags": [],
  "templating": {
    "list": [
      {
        "allValue": null,
        "current": {
          "text": "TRA|BWPublicationService-1.tra",
          "value": [
            "TRA|BWPublicationService-1.tra"
          ]
        },
        "datasource": "PrometheusBwMonitoring",
        "hide": 0,
        "includeAll": true,
        "label": null,
        "multi": true,
        "name": "bw_apps",
        "options": [],
        "query": "label_values(Bw_cores,component)",
        "refresh": 1,
        "regex": "TRA.*|BW.*",
        "sort": 1,
        "tagValuesQuery": "",
        "tags": [],
        "tagsQuery": "",
        "type": "query",
        "useTags": false
      }
    ]
  },
  "time": {
    "from": "now-30d",
    "to": "now"
  },
  "timepicker": {
    "refresh_intervals": [
      "5s",
      "10s",
      "30s",
      "1m",
      "5m",
      "15m",
      "30m",
      "1h",
      "2h",
      "1d"
    ],
    "time_options": [
      "5m",
      "15m",
      "1h",
      "6h",
      "12h",
      "24h",
      "2d",
      "7d",
      "30d"
    ]
  },
  "timezone": "browser",
  "title": "BW Jobs",
  "version": 7
}


Tibco Designer on Linux

java.extended.properties -Dswing.defaultlaf=com.jgoodies.looks.plastic.Plastic3DLookAndFeel -Dsun.awt.disablegrab=true --add-opens=java.base/jdk.internal=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=java.management/com.sun.jmx.remote.internal=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-opens=java.base/jdk.internal.vm=ALL-UNNAMED --add-modules=java.xml.bind --illegal-access=permit -Dswing.defaultlaf=com.jgoodies.looks.plastic.Plastic3DLookAndFeel -Dsun.awt.disablegrab=true -Xscmx1g -Xshareclasses:name=bw -Xgcpolicy:metronome -Djdk.attach.allowAttachSelf=true -Xquickstart
-XX:+IdleTuningGcOnIdle -Xtune:virtualized
 

export _JAVA_AWT_WM_NONREPARENTING=1

sobota, grudnia 16, 2017

Java 9 for BW 5.x

Eclipse OpenJ9 is a Open Source JDK donated by IBM. It's a enterprise level JVM. Tibco BusinessWorks 5.12 shipped with Java 7.0 and 5.13 with Java 8. Java 7 nowadays has got problems with cryptography/security: HTTPS/TLS and SSH implementations are rejected by remote peers. Why? Because security is a state. It is not absolute. New bugs are found every day and countermeasures must be stronger and stronger. This causes situations where Tibco BW cannot communicate with remote business services. How to fix this? BW supports JVM in a configurable way, both Sun/Oracle and IBM implementations. We can switch Java to Eclipse OpenJ9. Advantages? Up to date security of Java 9. Low memory footprint. Fast startup time. High application throughput.  Java Updater for Tibco is here. You should unpack tgz file and run getjdk.sh. If you don't have access to shell try building EAR, deploying and starting.
Usual disclaimer: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




wtorek, października 31, 2017

Rynek twierdzi, że złoty będzie się umacniał


wtorek, października 24, 2017

The simplest bash scripts to build ears and projlibs


wtorek, października 17, 2017

What is the overhead of Java reflection in Tibco BW?

Let's create 2 processes: one with 2 plain Java measurement activities using System.nanoTime() (Run1) and one with mapper between them (Run1). When we substract nano times we measure time between: output from Java activity, transition, input to Java activity - which would be the same as combined Java execution. Now, time Run2 - Run1 is overhead of Java reflection over simple mapper activity. Let's measure with many repetitions. On Intel Core i7-6820HQ 2.7GHz overhead is below 0.2ms.



środa, października 04, 2017

Parallel transitions in BW 5

In Tibco Designer we can draw parallel transitions, but how are they executed? In parallel? The answer is: no, not quite. Let's create a simple process printing to console Thread.currentThread()+"@"+System.currentTimeMillis() before and after calling HTTP request reply and put it 9 times in different transitions. We see that all activities before HTTP are executed sequentially by the same JobCourier thread and all activities after HTTP are executed by another thread from JobPool, the same for all 9 calls. Please notice that HTTP call is not performed inline. It is executed by dedicated thread pool different than Engine.ThreadCount pool. After the work is queued the process is suspended and its JobCourier is returned to the pool. When HTTP is done Engine seeks for the first unused (round robin) JobCourier thread and resumes main process. Dedicated thread pool is the place where multithreading is utilized.

Let's try to replace HTTP call with plain Sleep, parameterized with integer from 1 to 1000. We see that Sleep in not performed inline. Thread is taken away from process and then returned. Even Sleep(1ms) causes thread switch.


sobota, września 23, 2017

Tibco BusinessWorks on IBM Java 9 with reduced memory consumption thanks to Strings held as byte[] instead of char[]

http://openjdk.java.net/jeps/254

https://www.ibm.com/support/knowledgecenter/SSYKE2_9.0.0/j9vm_reference.html

but...

https://github.com/eclipse/openj9/issues/42 needs some work - default Garbage Collection settings may have impact on some benchmarks and real life loads. Still IBM Metronome GC doesn't have these issues.

To switch Tibco BW to OpenJ9 use these settings in tra:

tibco.env.JVM_LIB_DIR /home/user/TIBCO/tibcojre64/jdk-9+181/lib/j9vm
tibco.env.JVM_LIB_SERVER_DIR /home/user/TIBCO/tibcojre64/jdk-9+181/lib/j9vm
tibco.env.JVM_LIB_PATH /home/user/TIBCO/tibcojre64/jdk-9+181/lib/j9vm/libjvm.so

When switching from Java 7 you have to add sun.io.* to some jar in classpath. Memory usage needs some research and numbers and then we can think of target environments: DEV, TEST. PROD would need support from Tibco.



czwartek, września 21, 2017

Speed up Tibco Designer Swing UI with GC tuning

java.extended.properties -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:MinHeapFreeRatio=40 -XX:MaxHeapFreeRatio=70 -XX:+UseConcMarkSweepGC -Xmx2048m -Xms1024m -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.opengl=true -Dswing.aatext=true -Dswing.defaultlaf=com.jgoodies.looks.plastic.Plastic3DLookAndFeel

Historyczne stany Wisły w Warszawie

Narastające zbocze wykresu oznacza opady/roztopy, co wiąże się z parciem hydrostatycznym wody w gruncie na ściany garażu. Dane IMGW.


OpenJDK from IBM

https://github.com/AdoptOpenJDK/openjdk9-openj9-releases/releases

What is the cause of Tibco BusinessWorks problems with HTTPS (TLSv1.1, TLSv1.2, SalesForce)

Tibco uses old version of cryptographic library Entrust which uses even older library IAIK from Technische Universität Graz in Austria. These are not capable of providing TLSv1.2. IAIK is properly developed and maintained (with TLS supported at least since 2014), see http://jcewww.iaik.tu-graz.ac.at/index.php/sic/News/iSaSiLk_5.0_with_TLS_1.2_support_released, but Tibco doesn't update this library on its own.  If you set java.property.TIBCO_SECURITY_VENDOR="j2se" or "j2se-default" or "ibm" in bwengine.tra file (also in designer.tra) you can use security stack from JRE. To be honest only part of it due to strange implementation of Tibco SSL Socket Factory. SSLContext is acquired for hardcoded value "TLSv1", what causes limiting TLS version used to TLSv1 despite the fact that Java 7+ can use TLSv1.2. How can Tibco fix this hardcode bug? By reading private MAX field from Sun's ProtocolVersion and then using it in argument to SSLContext.getInstance(). How can we hack this Tibco bug? By manually setting supported protocols inside JRE SSL contexts. If you want to access SalesForce from BW, but you can't, you can contact me and ask for help.




wtorek, września 19, 2017

Tibco BW and TLSv1.2




sobota, września 16, 2017

Toyota Corolla 2018 (SAFETY SENSE EXPLAINED)

wtorek, września 12, 2017

Access SAP from Java


poniedziałek, września 11, 2017

Przesyłanie dokumentów między instytucjami przez ePUAP

Platforma ePUAP umożliwia przesłanie podpisanego dokumentu konkrentnej sprawy (zgodnego z XSD), z załącznikami od petenta do instytuacji i vice versa. Petent jednak nie może przesłać dalej dokumentu od jednej instytucji do drugiej. Nie może też przesłać XML-a z jedną sprawą jako załącznika do drugiej, bo podmioty uczestniczące w ePUAP nie umieją czytać plików sprawy. Ministerstwo nie wpadło na to. Tymczasem jest to bardzo podstawowa funkcjonalność jakiej obywatel może oczekiwać od e-usług. Co taki sąd może zrobić z dokumentem XML sprawy ePUAP? Powołać biegłego do odczytania go. A sąd nie ma na to czasu i pieniędzy. Sama walidacja dokumentu sprawy jest prosta:





Apeluję do Pani Minister o dodanie takiej funkcjonalności do ePUAP. Mogę nawet sam ją dopisać albo wykonać oddzielną aplikację za 0 zł.

-- Update 7.11.2017 --

W nawiązaniu do przekazanej idei przybliżonej przez Pana pod załączonym poniżej linkiem uprzejmie wyjaśniam, że można przesyłać dalej dokumenty, które zostały nam doręczone przez ePUAP. Istotnie nie jest to wystarczająco łatwe i wygodne ale możliwe. W razie czego służę wyjaśnieniami jak to można zrobić.

Jednakże między innymi dlatego problematyka e-doręczeń znalazła się w programie „Od papierowej do cyfrowej Polski” jako odrębny temat zatytułowany „Strumień e-Skrzynka i e-Doręczenie” zob. https://www.gov.pl/cyfryzacja/strumien-e-skrzynka-i-e-doreczenie

Odrębną kwestią jest to, że poza ePUAP trudno jest wizualizować dokumenty XML jak również wersyfikować podpisy i wyodrębniać załączniki do tych dokumentów. Tu też ma Pan rację że nie jest to wygodne choć sąd może korzystać wprost z konta na ePUAP lub usługi wizualizacji jest dostępnej pod adresem  https://epuap.gov.pl/wps/myportal/strefa-urzednika/inne-systemy/walidator
Z wizualizacją poradzono sobie też na platformie SEKAP zob. https://www.sekap.pl/epaczka.seam

Jeszcze inne problemy dotyczą możliwości skutecznego przesłania do sądu pisma procesowego na elektroniczną skrzynkę podawczą sądu, co jak Pan zapewne wie nie jest obecnie możliwe, ale nie dlatego, że nie można przekazać dalej dokumentu otrzymanego z innego podmiotu (bo można), ani dlatego, że sąd „nie umie” odczytać dokumentu XML (bo powinien). Powody wyjaśniają sądy na swoich stronach internetowych zob. np. tutaj: http://bip.warszawa.so.gov.pl/artykul/468/353/elektroniczna-skrzynka-podawcza

W MC doskonale zdajemy sobie sprawę z powyższych uwarunkowań i dlatego między innymi pracujemy nad takim rozwiązaniem problemu doręczeń jakie kierunkowo zostało zasygnalizowane w programie „Od papierowej do cyfrowej Polski”.

Z poważaniem

Kazimierz Schmidt
Radca ministra

Ministerstwo Cyfryzacji
Departament Utrzymania i Rozwoju Systemów

czwartek, września 07, 2017

How to disable proxy in Google Chrome on Windows


poniedziałek, września 04, 2017

Why /etc/security/limits.conf doesn't work in Ubuntu 16.04, 16.10, 17.04?

Because there is systemd...
Modify its files:

root@user-VirtualBox:~# grep NOFILE /etc/systemd/*.conf
/etc/systemd/system.conf:DefaultLimitNOFILE=2097152
/etc/systemd/user.conf:DefaultLimitNOFILE=1048576



sobota, sierpnia 19, 2017

Co się stało z szamponem Clear?

Szanowny Panie,

dziękujemy za kontakt. 
Szampony są dalej dostępne w sprzedaży.
Proszę sprawdzić w sieci JAWA.

Z wyrazami szacunku, 

Paulina Cichocka,
Serwis Konsumenta Unilever,

piątek, sierpnia 18, 2017

Kafka 0.11 API can be easily wrapped into JMS API



czwartek, sierpnia 03, 2017

Schemaless JSON REST store




środa, sierpnia 02, 2017

Znikający punkt





wtorek, sierpnia 01, 2017

CrateDB as a payload storage for Tibco