Archive for: ‘Oktober 2018’

node.js, domino-db & Docker (3): Adding domino-db

31. Oktober 2018 Posted by Sven Hasselbach

The created express application is still the boilerplate created by express generator. Now let’s look into the existing code and use the domino-db package. First we have to understand express a little bit better. I won’t go deeply into details, because there are many tutorials available, and the documentation is really awesome.

Overview

Directory structure

/domino-express
   |-app
      |-app.js
      |-bin
         |-...
      |-public
         |-...
      |-routes
         |-...
      |-views
         |-...

app.js

This is the main application. It contains the configuration of the application and global modules (like used the middleware, global route handlers, etc.) are registered. At the moment we don’t need to change anything here.

/bin

This folder contains the starting script for the application.

/public

Contains publicly accessible static resources like images, stylesheets, etc.

/routes

The handling for existing routes, which means how the application should process incoming requests.

/views

Contains the templates for the generated output. We are using Jade as our template engine.

The boilerplate

The first thing to look at is the /routes/index.js file. Just open it in Atom, and see what the express generator created for us:

The first line loads the express package and gives access to it. The next line gives us access to the router, which then is used to define a handle for all incoming requests on the application root (http://localhost:3000/).

When this route is called, the defined function renders the response using the view template ‚index‘ (which can be found in the /views folder). The variables used in the template are contained in the object handed over as second parameter.

The last line exports the router instance and gives access to it outside of our module. Just for a better understanding: Everything in this file (aka module) is private, and here it is defined what is public to the rest of our express application. For more details, have a look here: https://www.sitepoint.com/understanding-module-exports-exports-node-js/

Change to JSX

After changing everything as proposed by the editor, the code should now look like this:

const express = require('express');

const router = express.Router();

/* GET home page. */
router.get('/', (req, res) => {
  res.render('index', { title: 'Express' });
});

module.exports = router;

Now we add the requirement for the domino-db package:

const { useServer } = require('@domino/domino-db');

The curly brackets notation is used to „import“ only the useServer element from the domino-db package.

Then we add the configuration for our Domino backend (shamelessly copied from the example in the dev pack):

const serverConfig = {
  hostName: 'your.server.com', // Host name of your server
  connection: {
    port: '3002', // Proton port on your server
  },
};

const databaseConfig = {
  filePath: 'node-demo.nsf', // The database file name
};

const createOptions = {
  documents: [
    {
      Form: 'Contact',
      FirstName: 'Aaron',
      LastName: 'Aardman',
      City: 'Arlington',
      State: 'MA',
    },
    {
      Form: 'Contact',
      FirstName: 'Brian',
      LastName: 'Zelnick',
      City: 'Chelmsford',
      State: 'MA',
    },
  ],
};

And now we add the connection of the database query when our base path is accessed:

router.get('/', (req, res) => {
  useServer(serverConfig).then(
      async server => {
        const database = await server.useDatabase(databaseConfig);
        const response = await database.bulkCreateDocuments(createOptions);

        // Display the new document UNIDs
        const unids = response.documents.map(doc => doc['@unid']);
        res.render('index', { title: 'Express', result: `Documents created: ${unids}` });
  });
});

Before we get into the details of this code, let’s start our application with npm start.After accessing the URL of the application http://localhost:3000, nothing happens.

Just some console output tells us that we need some error handling when our Domino server is not reachble.

GET / - - ms - -
(node:13268) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 6): DominoDbError: gRPC client error

This topic and more details about the domino-db module will be covered in the next post.

Soziale Medien: Wie oder kann man Desinformationskampagnen überhaupt früh(er) begegnen?

31. Oktober 2018 Posted by Stefan Pfeiffer

Ich bin ein Verfechter der positiven Effekte und Möglichkeiten von sozialen Medien. Trotzdem darf ich, dürfen wir nicht die Augen vor Manupulationen und den entsprechenden Methoden verschließen. Die zehn Millionen Tweets aus den Jahren 2013 bis 2018, die Twitter jetzt zur Verfügung stellt, sind ein erster Schritt, mit der Analyse der Methoden der „Manipulatoren“ zu beginnen, um Gegenmassnahmen zu ergreifen oder gar Prävention zu betreiben:

Desinformation ist ein Feature, kein Bug

Allerdings entwickeln die Täter ihre Methoden seit Jahren ständig weiter, während die Betreiber der sozialen Netzwerke erst jetzt damit beginnen, Desinformationskampagnen als das zu behandeln, was sind: kein unschöner Nebeneffekt, sondern ein zentrales Nutzungsszenario. Ein Feature, kein Bug.

über Twitter, Facebook und Co: Nachträgliche Transparenz ist zu wenig – SPIEGEL ONLINE

Und ohne wieder einmal Panik zu verbreiten und negative Stimmung gegen soziale Medien zu machen, müssen wir uns alle das Hirn einschalten, Inhalte bewerten und einordnen, wenn wir uns dort bewegen, lesen und schreiben:

Wer sich heute in sozialen Onlinenetzwerken bewegt, bekommt haufenweise professionell inszenierte und organisierte Inhalte vorgesetzt: Selbstdarstellungen von Influencern, von Social-Media-Redakteuren aufbereitete Medienberichte, auf individuelle Interessen abgestimmte Werbeanzeigen – und staatlich gesteuerte Desinformationskampagnen.

über Twitter, Facebook und Co: Nachträgliche Transparenz ist zu wenig – SPIEGEL ONLINE

Und schon wieder klingt das alles viel zu negativ. Alles Manipulation und Werbung in den sozialen Medien. Quatsch. Leider fallen die täglich stattfindenden positiven Diskussionen und „menschelnden“ Begegnungen in der Aufmerksamkeitsspirale hinten runter.

(Stefan Pfeiffer)

Die DNUG lädt zu Fachgruppen ein…

31. Oktober 2018 Posted by Gerda Marx

Die DNUG lädt am 06. November 2018 von 10-17 Uhr zum „IBM Connections Day“ nach München ein. Der Schwerpunkt liegt diesmal auf dem Connections Customizer. Die Teilnahme ist für DNUG Mitglieder kostenlos, Nicht-Mitglieder beteiligen sich mit 177,31 €. Kurzfristige Anmeldungen sind noch möglich. Hier finden Sie die Agenda und können sich anmelden. Am 15. November […]

node.js, domino-db & Docker (2): Dev Environment

30. Oktober 2018 Posted by Sven Hasselbach

Before we can start to create a new app we first have to setup a development environment. While there are multiple IDE’s around, I have made most of my node.js development with Atom instead of an IDE like Eclipse or Visual Studio. Maybe this will change in the future, but for a better understanding, let’s start with Atom and do the required steps manually.

By default, there is no support for JSX, so we need to make an additional installation after installing the editor:

1. Download Atom from https://atom.io/

2. Go to Atom > Preferences

3. Install linter-eslint package

4. Additional packages must be installed (This happens multiple times):

5. In a console, go to the domino-express which we have created before:

cd domino-express/

6. Install eslint-config-rallycoding module

npm install --save-dev eslint-config-rallycoding

This step has to be done for every new project. The module is required to enable the JSX support for every project, but only during development.

7. Create a file named .eslintrc in the project folder and add the following content:

{
   "extends": "rallycoding"
}

8. Change the dependency for the domino-db package:

"@domino/domino-db": "file:./domino-domino-db-1.0.0-package"

The path has to be changed because for the Docker setup it is in the /src folder, now it is in the project root.

9. Install the required npm modules

npm install

10. Restart Atom and open the project folder

11. If everything worked correctly, you should now see an error in the index.js file (maybe you have to open the file first):

12. When opening the file, you should see an error in the first line and an explanation about the problem:

13. Click on „Fix“, then var should change to let

14. An new problem occurs, because the variable is never changed. So the advice is to change it to const.

15. Done. Now we are ready for developing.

Notes 10 unter Linux verwenden

30. Oktober 2018 Posted by Arnd Koch

Der Notes-Client steht bereits seit längerem nicht mehr für Linux zur Verfügung, wer dennoch gelegentlich z. B. den Admin-Client unter …

Kurz kommentiert: DSGVO versus Hackerangriffe und Datenlecks – eine grundauf falsche Aufrechnung

30. Oktober 2018 Posted by Stefan Pfeiffer

Ich muss es doch noch explizit kommentieren. Hendrik Wieduwilt hat in der FAZ die Datenschutzgrundverorndung kommentiert. Er rechnet die DSGVO gegen Hackerangriffe und Datenlecks auf. Geht aus meiner Sicht nicht. Das sind zwei verschiedene Dinge (eventuell zwei Seiten einer Medaille?). Beide Aspekte sind extrem relevant: Der Schutz und die Kontrolle der persönlichen Daten der Kunden und Bürger durch jene. Die Amerikaner nennen es korrekterweise Data Privacy. Demgegenüber der Schutz vor Hackern, Hackerangriffen oder auch Fehlern in der eigenen IT Abteilung. Beides läuft in deutscher Sprache oft unter Datenschutz, aber wie erwähnt sind es aus meiner Sicht verschiedene Aspekte.

Hat die DSGVO etwas gebracht? Sie gibt den Nutzern mächtige Hebel, um Auskünfte einzuholen, Korrekturen, Löschung oder Migration von Daten zu verlangen. Diese Aspekte schauen sich inzwischen auch andere Länder ab. Gegen wirkliche Gefahren ist sie aber machtlos, etwa Hackerangriffe, Datenlecks, trickreiche Datensauger wie diverse Lockangebote im Internet oder potente Geheimdienste.

über Die Idee des Datenschutzes steht auf dem Spiel – FAZ

Übrigens finde ich in diesem Zusammenhang die Aussage der Forscher der Universität Oxford in Zusammenarbeit und von „Reuters Institute for the Study of Journalism“ in ihrer Studie bemerkenswert, dass die Europäischen Union mit ihrer neuen Datenschutz-Grundverordnung den „strengsten und weitsichtigsten“ Ansatz im Bereich Datenschutz fahre.

(Stefan Pfeiffer)

#9vor9 am 30.10.2018: Gibt es den digitalen Hoffnungsträger der CDU? Cloud-Markt: „Krieg“ oder Kooperation?

30. Oktober 2018 Posted by Stefan Pfeiffer

Mir heute ein bisschen viel Kaffeesatz-Leserei nach Hessen-Wahl und Rückzug von Angela Merkel als CDU-Vorsitzende, aber es sei uns drei Klugschwätzern gegönnt. Tja, wer ist der digitale Hoffnungsträger unter den potentiellen CDU-Vorsitzenden? Ich bleibe dann – wie im Gespräch gesagt – doch bei Jens Spahn hängen, der mir in anderen Politikthemen nicht unbedingt zusagt, aber halt doch ein digitales Grundverständnis zu haben scheint (siehe Patientenakte).

Red Hat und IBM: Volker Weber hat es sehr gut zusammengefasst. Weitere Details über die künftige Organisation – eigenständig in der IBM Cloud Unit – werden sicher bekannt werden. Als jemand, der von einer akquirierten Firma kommt, werde ich das mit Interesse verfolgen. Wird man auch unter dem IBM-Hut mit den Marktbegleitern zusammenarbeiten? Der ein oder andere meldet Zweifel an und Jason Perlow kommentiert auf ZDNet martialisch Armed with Red Hat, IBM launches a cloud war against Amazon, Microsoft and Google. Für ich etwas starker Tobak, aber schauen wir mal.

Ich verabschiede mich jetzt mal für die kommenden zwei Sessions und wünsche Euch beim Zuhören und in der Diskussion viel Spaß.

(Stefan Pfeiffer)

node.js, domino-db & Docker

30. Oktober 2018 Posted by Sven Hasselbach

Here is an example to create a express application with the new domino-db npm module and run it in a docker container. Requirements are that node.js & Docker is installed. Everything is done in the command line and a text editor.

1. Install Express application generator

npm install express-generator -g

2. Create a fresh application with stylus engine

express -c stylus domino-express

3. Go to the newly created folder

cd domino-express/

4. Create a folder for the application

cd app/

5. Copy all files to the app folder, only package.json should be left

6. Copy the domino-domino-db-1.0.0-package folder into the project folder

7. Create a file .dockerignore and with the following content:

node_modules
npm-debug.log

8. Create the Dockerfile with the following content:

FROM node:8

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

# create a folder for the local domino-db package
RUN mkdir -p /src
COPY ./domino-domino-db-1.0.0-package /src/domino-domino-db-1.0.0-package

# install & rebuild
RUN npm install
RUN npm rebuild

# If you are building your code for production
# RUN npm install --only=production

# Bundle app source
COPY ./app .

EXPOSE 3000
CMD [ "npm", "start" ]

9. The directory structure should look like this:

/domino-express
   |-app
      |-...
   |-domino-domino-db-1.0.0-package
      |-...
   |-.dockerignore
   |-Dockerfile
   |-package.json

10. Add domino-db to package.json

{
  "name": "domino-express",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "jade": "~1.11.0",
    "morgan": "~1.9.0",
    "stylus": "0.54.5",
    "@domino/domino-db": "file:/src/domino-domino-db-1.0.0-package"
  }
}

11. Build the docker container (replace username with your docker id)

docker build -t {username}/domino-express .

12. Start the container

docker run -p 3000:3000 -d -it {username}/domino-express

13. Open it in your browser => http://localhost:3000

Amazon: Immer mehr „Search, scroll, scroll, scroll, click, click, buy“

30. Oktober 2018 Posted by Stefan Pfeiffer

Lesenswerter Beitrag. Amazon macht mehr und mehr Umsatz über Werbung und nicht über Käufe im Online Shop.

The brilliance of Amazon lies in its cold efficiency. Search, click, buy. Repeat.

Not search, scroll, scroll, scroll, click, click, buy.

über Amazon’s ad business is both alluring and dangerous – Recodehttps://twitter.com/teezeh/status/1056497861846802432

Chatbots auf Deutsch: So profitieren regionale Unternehmen von Künstlicher Intelligenz

30. Oktober 2018 Posted by Katharina Adam

Ein Chatbot ist längst nicht mehr ein Programm, das nur von großen internationalen Unternehmen genutzt werden kann. Auch im …

Lasst uns über Sametime chatten! (Webcast)

29. Oktober 2018 Posted by DNUG Marketing

Am 13. November lädt die Fachgruppe Communications zu ihrem Webcast ein. Wir besprechen mit Julie Reed (IBM) und Pat Galvin (HCL) was die Pläne und die wichtigsten Initiativen für Sametime Next in 2019 sind. Mindestens der Teil mit Julie und Pat findet in Englisch statt. Anschliessend können wir in Deutsch weiter diskutieren und unsere Wunschliste […]

Der Beitrag Lasst uns über Sametime chatten! (Webcast) erschien zuerst auf DNUG.

„Kauf von Red Hat könnte ein Wendepunkt in IBMs Geschichte werden“ —  [Auszug aus dem Ticker auf CIO Kurator]

29. Oktober 2018 Posted by Stefan Pfeiffer

Auf CIOKurator versuche ich gerade, wichtige Stimmen zur geplanten Übernahme von Red Hat durch meinen Arbeitgeber IBM zu sammeln. Nicht nur in Darmstädter Verbundenheit, sondern in Wertschätzung hier ein Auszug der Einschätzungen von Volker Weber auf heise online/iX Magazin. Weitere Stimmen gibt es wie gesagt drüben.

Der Kauf von Red Hat könnte ein Wendepunkt in IBMs Geschichte werden. Fünf Jahre lang ging es für IBM vor allem bergab. Nur durch massive Kostensenkungen konnte IBM aus sinkenden Umsätzen einen Profit herausquetschen. Der vom Marketing gnadenlos gepushte Watson-Bereich dagegen lieferte nicht die erhofften Wachstumsraten. Nun aber gibt es plötzlich eine Rückbesinnung auf IBMs Stärke: Software und Services. …

IBM ist stark im Unternehmensgeschäft, Red Hat ein Open-Source-Pionier. Das Duo hat ein starkes Potential die vielen bestehenden Workloads in großen Unternehmen zunehmend in die Cloud zu bringen. Viel hängt davon ab, ob Red Hat weiterhin in der Lage sein wird, seine Partnerschaften mit AWS, Google Cloud, Microsoft Azure, Alibaba und anderen zu erhalten und auszubauen.

über Analyse: IBM und Red Hat – ein starkes Paar? | iX Magazin

(Stefan Pfeiffer)

IBM übernimmt Red Hat und erschließt den vollen Wert der Cloud für Unternehmen

29. Oktober 2018 Posted by IBM Press Releases - All Topics - Germany

IBM plant die Übernahme von Red Hat, dem weltweit führenden Anbieter von Open-Source-Cloud-Software für rund 34 Milliarden US Dollar. Die Übernahme vereint die branchenbesten Cloud-Anbieter und ermöglicht Unternehmen, ihre Geschäftsanwendungen sicher in die Cloud zu migrieren. Heutzutage nutzen Unternehmen bereits mehrere Clouds. Dennoch zeigen Studien, dass 80 Prozent der Business-Workloads erst noch in die Cloud migriert werden müssen, da sie durch die proprietäre Natur des derzeitigen Cloud-Marktes behindert werden. Dies verhindert die Portabilität der Daten und Anwendungen über mehrere Clouds hinweg und erschwert Datenschutz in Multicloud-Umgebungen und ein durchgängiges Cloud-Management.

Was interessiert mich mein Geschwätz … oder Content [Reloaded]

29. Oktober 2018 Posted by Stefan Pfeiffer

Content Marketing, Influencer, Communities, Apple am Arbeitsplatz … Begriffe, die immer noch aktuell sind und diskutiert werden. Logisch. Dieser Tage ist mir aufgefallen, dass da doch mal was war. Ich hab doch schon mal über das Thema … Stimmt, jenseits der normalen Vergesslichkeit war es so, dass ich mich zu vielen Themen hier im „Block“ schon geäussert habe. Ich habe gerade nachgeschaut. Offensichtlich habe ich meine ersten Blog-Beiträge im März 2009 geschrieben, wahrscheinlich noch früher, da es immer Verluste von Inhalten gibt. Von meinen Schandtaten vor 2009 schweige ich mal. Habe ja als Journalist gestartet und in Lokalzeitungen wie der WNZ (Wetzlarer Neuen Zeitung), in der Neue Medien-Redaktion der der FAZ (die damals für private Radio- und TV Sender Beiträge geliefert hat) und in diversen Magazinen (PC Praxis, Windows …) geschrieben – zuerst offline auf Papier, dann online.

Aber über die Zeit vor „Erscheinen“ dieses Blogs hüllen wir mal den Mantel des Schweigens. Auch hier seit sind genug Beiträge veröffentlicht worden. Der Blog ist als DigitalNaiv.com gestartet, damals noch auf Posterous, seit diesem Jahr habe ich auf StefanPfeiffer.Blog „umfirmiert“. Bei manchen Beiträgen schüttele ich den Kopf, meist bei den eher „Werblichen“ -bin ja nicht ganz neutral. Doch ich stoße auch immer wieder auf Artikel, die durchaus heute noch relevant sind.

Manchmal müssten sie aktualisiert werden, manchmal könnten sie fast eins zu eins übernommen werden. Und genau das werde ich jetzt tun. Wenn ich per Zufall auf „alte“ Inhalte stoße, die noch relevant sind, werde ich sei hier und da „reloaden“, wiederverwenden, aktualisieren … und mit der Kategorie [RELOADED] versehen, wenn ich größere Abschnitte und Inhalte übernehme. Eigentlich unnötig, aber einfach so der Transparenz wegen.

Passt ja zum Thema Content Marketing: Scheue Dich nicht davor, bestehende Inhalte wieder zu verwenden und zu aktualisieren. Du hast ja auch Zeit, als Unternehmen eventuell Geld für den Texter oder die Agentur investiert. Aber es gilt die oberste Regel: Deine Inhalte müssen interessieren. Wer für sich selbst Inhalte produziert, produziert für die Tonne …

(Stefan Pfeiffer)

 

Aktualisierung auf TeamViewer 14

29. Oktober 2018 Posted by Manfred Dillmann

Die von mir lizenzierten QuickSupport TeamViewer Clients sind auf Version Teamviewer 14 aktualisiert und können wie bislang auf der Remote Support Seite heruntergeladen werden.  

Der Beitrag Aktualisierung auf TeamViewer 14 erschien zuerst auf madicon.de.