Oracle PL/SQL – Das umfassende Handbuch

Wer mit Oracle Datenbanken zu tun hat, wird um PL/SQL nicht herum kommen. Denn damit bekommt der Nutzer eine Möglichkeit an die Hand, die Datenbank per Programmierung zu nutzen.

Titel: Oracle PL/SQL – Das umfassende Handbuch
Autor: Jürgen Sieben
Verlag: Rheinwerk Verlag
Erscheinungsdatum: 4. aktualisierte und erweiterte Auflage 2023
ISBN: 978-3-8362-9630-4
Seitenzahl: 1090
Leseprobe

Oracle PL/SQL

Wie jedes Buch, das ich von Jürgen Sieben kenne, handelt es sich auch bei diesem nicht um ein schnelles Nachschlagewerk. Bevor der Autor Fachwissen in Form von Beispielcode und Erklärung vermittelt, gibt es fast immer ein paar einleitende Worte zum Hintergrund für das kommende Thema. Das können zb. technische Details sein, oder eigene Erfahrungen des Autors aus der Praxis.

Das Buch ist in 3 Teile aufgeteilt. Nachdem der Autor den Leser mit den Grundlagen der Datenbank, den Objekten und SQL vertraut gemacht hat, geht es im nächsten Teil um die Sprache PL/SQL. Allein dieser Teil nimmt knapp 400 Seiten im Buch ein und bringt dem Leser die Sprache näher, bevor es im dritten Teil um den Einsatz des Gelernten geht. An vielen und sehr detailierten, praxisnahen Beispielen wird das zuvor geschriebene angewand. Wie gewohnt, stehen alle Beispiele zum Download auf der Verlagswebseite bereit. Einen Überblick bietet das Inhaltsverzeichnis. Unterbrochen werden die Kapitel mit Workshops, um den Inhalt des Buches in die Praxis umzusetzen. Etwas besonderes hebt der Autor sich für das Ende des Buches auf: Er stellt sein PL/SQL Instrumentation Toolkit (PIT) vor. Dabei handelt es sich um ein vom Autor entwickeltes Logging-Package, welches einige Einflüsse von ähnlichen Packages und die Erfahrung des Autors enthält.

Fazit

Das Buch ist im sprichwörtlichen Sinne keine leichte Lektüre. Es liegt hier in der 4. aktuallisierten und erweiterten Auflage vor. Es ist mit der Zeit umfangreicher und an den aktuellen Stand angepasst worden. Zusätzlich startet der Autor jedes Kapitel mit ein paar einleitenden Worten. Hinzu kommt, dass, wie in jedem Buch von Jürgen Sieben, viel mit Beispielcode gearbeitet wird. Das führt dazu, dass das Buch nicht „nebenbei“ durchgearbeitet werden kann. Es liest sich gut, wenn man sich die Zeit nimmt. Oder man greift danach, wenn man eine spezielle Herausforderung zu lösen hat.

Disclaimer: Das Buch wurde mir vom Rheinwerk Verlag kostenfrei zur Verfügung gestellt.

Veröffentlicht unter Bücher, Oracle, PL/SQL | Verschlagwortet mit , , | Schreib einen Kommentar

Oracle APEX Template Component with Chart

With #orclAPEX Version 23.1 the Template Components were introduced. This feature gives the APEX developer a lot more possibilities to build re-usable UI components to render regions or to use it in reports.

In this post I will not go into detail how to start with Template Components. For that I propose to read the great post from Philipp. He describes the process from scratch as a region and as a report column. With that I started to create my own Template Component with the need to include a chart.

Template Component with Chart

To start we have to create a Plug-in in the shared components

Create Template Component Plug-in

Give the Template Component Plug-in a name and select „Available as Single and Multiple“ to use the Plug-in both as a region and in a report.

Settings for our Template Component Plug-in

The Partial part is to describe how to render the Template Component and set our custom attributes. Here is an excerpt from my code to include the chart:

...
<div class="tblrow"> 
    <div class="tblc">
      <div class="item">
        <div><canvas class="myChart chartjs-render-monitor" id="#CHART_ID#" height="50" data-z="#DATASETASARRAY#" data-d="#DATASETDATEARRAY#"> </canvas></div>
      </div>
    </div>
  </div>
...

In this code we set 3 custom attributes: „#CHART_ID#“, „#DATASETASARRAY#“ and „#DATASETDATEARRAY#“. We use custom attributes to fill it with data later in our SQL query. The last step in the Plug-in is to define the Java-Script files to load. We do that in the „JavaScript“ section of the Plug-in. If we use static files we have to upload the files in the shared components before we can use it. In my case I use the Chart.js library and added a seperate config file. I took this config file from an example and will adapt it to my needs in the next days. But for now it works and displays the chart.

JavaScript-Files to load for the Plug-in
function draw_chart(datava, datada, canvaceid){
var canvas = document.getElementById(canvaceid);

var data = {
    labels: datada,
    datasets: [{
      backgroundColor:"#056ac8",
      borderColor: "#056ac8",
      pointStyle: 'triangle',
      data: datava,
      datalabels: {
        align: 'end',
        anchor: 'end'
      }
    }]
  };

var option = {
legend: {
        display: false
  },

 
  plugins: {
      datalabels: {
        backgroundColor: function(context) {
          return context.dataset.backgroundColor;
        },
        borderRadius: 4,
        color: 'white',
        font: {
          weight: 'bold'
        },
        padding: 6 ,
        formatter: function(value, ctx) {
          var index = ctx.dataIndex;
          var label = ctx.chart.data.labels[index];
          return (value*100).toFixed(2)+"%";
        } 
      }
    }, 
    
    // Core options
    aspectRatio: 5 / 3,
    layout: {
      padding: {
        top: 32,
        right: 16,
        bottom: 16,
        left: 8
      }
    },
    elements: {
      line: {
        fill: false,
        tension: 0.4
      }
    } ,
    scales: {
    yAxes:[{
          ticks: {
                beginAtZero: true
            },
        display:false
    }],
    xAxes:[{
      barPercentage: 1.0,
        categoryPercentage: 1.0,
        gridLines: {
          display:false
        },
        scaleLabel: {
        display: true,
        labelString: "Datum"
      }
    }]
    } 
  };

var myBarChart = Chart.Line(canvas,{
  data:data,
  options:option
});

}

In my case I would like to display a report out of the new created Plug-in. To do that I selected the plug-in as type and put the SQL Query in the corresponding field (excerpt from my query):

select a.ID,
        ...
        (   select listagg(regularmarketpreviousclose, ';') within group(order by datum) as closevalues
                from st_stocks_historie
                where trunc(datum) > TRUNC (SYSDATE, 'YEAR')
                and stock_id = a.id
                 group by symbol
            ) as messuares_values,
            (   select listagg(to_char(datum, 'DD.MM.YYYY'), ';') within group(order by datum) as closedate
                from st_stocks_historie
                where trunc(datum) > TRUNC (SYSDATE, 'YEAR')
                and stock_id = a.id
                 group by symbol
            ) as date_values
        ...
  from st_stocks a ...

The last step in the region settings is to assign our custom attributes with the result from the query:

Custom Attributes in the Region settings

To „activate“ our loaded JavaScript library we have to call the „draw_chart“ function with the parameters. First I called the function in my Plug-in with the result that the chart was visible only for a short second after page loading. I then remembered another case where I had to load the JavaScript after the whole page was loaded. To do that we can call our JavaScript function in the „Execute when Page Loads“ in the page settings:

    // call the function for each row
    var els = document.getElementsByClassName("myChart");
    
    for(var i = 0; i < els.length; i++)
    {  
    var c = els[i].dataset.d.split(';');    
    var b =  els[i].dataset.z.split(';').map(function(item) {

        return parseFloat(item, 10);
    });

    eval("draw_chart(b,c,els[i].id)");
    }

With calling the function we include our three parameters. If we run our application/page we will see now our report with all fields from the SQL Query and in each row the chart for this dataset:

Report with Chart as Template Component

If you ask yourself where the colored arrows are coming from? This are also defined as custom attributes in the plugin and display Icons depending on a „case when“ clause in my SQL query.

Veröffentlicht unter APEX, JavaScript, Oracle | Verschlagwortet mit , , | Schreib einen Kommentar

Copy value to clipboard with Oracle APEX

During a presentation of my actual business project I realised that one of my end user selected the text from a „Display Only“ page item to copy the value into the clipboard. As I have 6 different page items on the page, I thought there must be an easier way with less clicks.

I created a „Display Only“ page item with name „P600_VIEWNAME“.

Display Only Field in Oracle APEX

For other reasons I set the „Send On Page Submit“ off.

Send On Page Submit Setting

Just for the Layout you can add the icon „fa-copy“ in the „Appearance“ setting of this page item to show a copy symbol next the the page item.

Now I created a „Dynamic Action“ with the following „When“ condition:

Event: Click
Selection Type: jQuery Selector
jQuery Selector: P600_VIEWNAME

If you decide to enable „Send On Page Submit“ the jQuery Selector is called „P600_VIEWNAME_DISPLAY“.

When decision for „Dynamic Action“

Last step is to create a „True“ Action with type „Execute JavaScript Code“ and put the following code into the Code field:

JavaScript code to copy value to clipboard
let str = apex.item("P600_VIEWNAME").getValue();
navigator.clipboard.writeText(str);

apex.message.showPageSuccess('Copied ' + str + ' to Clipboard!');

The first line takes the value from the Page Item and save it in a variable. Next line put the value from the variable into the clipboard. And the last line shows a success message with the copied value on the APEX page. To use it with different page items you have to repeat the step with the „Dynamic Action“ for each item.

Veröffentlicht unter APEX, JavaScript, Oracle, Programmierung | Verschlagwortet mit , , , , , | Schreib einen Kommentar

SAP S/4HANA Finance – Customizing

In vielen Unternehmen ist SAP Software im Einsatz und kann deshalb als Standard für verschiedene Unternehmensbereiche genannt werden. Das hier besprochene Buch behandelt den Finanzbereich und im speziellen ein Upgrade von einer alten Version oder die Neuimplementierung von SAP S/4HANA.

Titel: SAP S4/HANA Finance – Customizing
Autoren: Thomas Kunze, Christian Kurzke, Kathrin Schmalzing
Verlag: Rheinwerk Verlag
Erscheinungsdatum: 3. aktualisierte und erweiterte Auflage 2022
ISBN: 978-3-8362-8715-9
Seitenzahl: 986
Leseprobe

Buch: SAP S/4HANA Finance - Customizing
SAP S/4HANA Finance – Customizing

Inhalt

Die Autoren haben es sich in diesem Buch zur Aufgabe gemacht, Schritt für Schritt in praxisnahen und detaillierten Anleitungen durch die wichtigsten Systemeinstellungen in SAP S4/HANA zu führen. Um schon erfahrene Anwender abzuholen beginnt das Buch mit den Neuerungen in SAP S4/HANA Finance, um dann auf über 700 Seiten alle Bestandteile (z.B. Organisationsstrukturen, Stammdaten, Hauptbuchhaltung, Debitoren, Anlagenbuchhaltung,…) der Finanzbuchhaltung in SAP zu erläutern.

Dabei erklären die Autoren die Veränderungen zu früheren Versionen (z.B. Zusammenführung der Finanzbuchhaltungs- und Controlling-Belege in einer Universal Journal Tabelle) und beschreiben sehr detailliert die neuen Eingabemasken und Felder. Angereichert sind die Erklärungen mit Screenshots, die entweder die Masken abbilden, oder in Diagrammen das Beschriebene grafisch erläutern.

Um die Anwender bei einer notwendigen Umstellung zu unterstützen, werden mögliche Migrationsmethoden und Werkzeuge in SAP sehr ausführlich beschrieben.

Zusammenfassung

Das Buch eignet sich sehr gut für erfahrene SAP-Nutzer, die vor der Aufgabe stehen, ihre bestehende Umgebung auf SAP S/4HANA umzustellen. Mit dem schon vorhandenen Wissen und den vielen Praxisvorschlägen im Buch ist so manche Hürde leicht zu nehmen, bzw. die neue Welt besser zu verstehen. Nebenbei bekommt man einen Überblick, welche Auswirkungen SAP S/4HANA auf die eigenen Geschäftsprozesse hat.

In einem aktuellen, beruflichen Projekt stehe ich vor der Aufgabe, die Veränderungen im Datenmodell von der alten auf die neue Version zu dokumentieren und für ein angeschlossenes „Datawarehouse“ aufzubereiten. Die sehr ausführliche Beschreibung der Felder und dahinter liegender Prozesse hat dabei sehr geholfen. Ein eigenes Kapitel im Buch zur Migration nach SAP S/4HANA, sowie der Anhang A „Änderungen am Datenmodell“, lagen stets griffbereit an meinem Arbeitsplatz.

Die Autoren gehen sehr detailliert auf die Veränderungen/Neuerungen im Finanzwesen der SAP ein, weshalb das Buch eine Empfehlung für jeden/jede ist, der/die mit SAP arbeitet und vor einem Umstieg auf SAP S/4HANA steht. Das Buch kann als Nachschlagewerk verwendet werden, wenn man schon SAP Erfahrung mitbringt, bzw. Hilfe/Vorschläge zu einzelnen Prozessen sucht.

Disclaimer: Das Buch wurde mir vom Rheinwerk Verlag kostenfrei zur Verfügung gestellt.
Veröffentlicht unter Bücher, SAP | Verschlagwortet mit , , , | Schreib einen Kommentar

Oracle APEX with Python

For a long time I was looking to run Python code together with my Oracle APEX application. Just for a PoC. As far as I know offers the MLE from Oracle only JavaScript at the moment. But a few days ago a saw a post from Stanley writing about „PyScript„.

On a high level, „PyScript“ brings Python to the Browser, to use a lot of existing modules in your own web applications. For more details go to the „PyScript“ page.

I will not go into detail how to implement „PyScript“ in your web applications. The post from Stanley is a good start for doing this. But I will show how to implement „PyScript“ in an APEX application and to show a matplotlib chart.

For that I created a small APEX application with only one page to present the result. You will see 2 page items (P1_PRICE, P1_DATE) holding the price and date values. This page items are filled via SQL Query on page load. The Python code read the value of this items via DOM and transfer it in NumPy arrays to plot the chart.

First, we have to load the pyscript.js via „File URLs“ in the JavaScript section on the page:

https://pyscript.net/alpha/pyscript.js

As a second step on the page we have to load the pyscript.css via „File URLs“ in the CSS section:

https://pyscript.net/alpha/pyscript.css

There are different ways to implement the Python code in the page. A clean way would an external .py file loaded via Static Application Files in the Shared Components. But for my PoC and because of a lot of re-writing/testing the code in the beginning I put it directly in the „HTML Code“ in the Source section:

<py-env>
    - numpy
    - matplotlib
  </py-env> 
<py-script>
import numpy as np
import matplotlib.pyplot as plt

# get Page Item P1_PRICE
ul_element = Element("P1_PRICE")

# transfer value from Page Item to numpy array
arr_price = np.fromstring(ul_element.value, dtype=float, sep=',')

# get Page Item P1_Date
ul_date = Element("P1_DATE")

# get Page Item value
date_list = ul_date.value

# transfer value from Page Item to array
arr_date = date_list.split(",")

# prepare the plot
fig, ax = plt.subplots(figsize=(15, 8))

# add the arrays to the plot
ax.plot(arr_date, arr_price)

# format the plot
fig.autofmt_xdate()

# display the plot
plt
</py-script>

After running the page it takes a few seconds to load the „PyScript“ environment and as a result, Python is rendering a line chart of data from the Oracle database via APEX.

PyScritp is loading
PyScript is loading
Python chart in an APEX page

The import of „PyScript“ offers an APEX application the Python world with a lot of modules to work with data and other usefull things. At the time of writing, PyScript is in an alpha state and is actively being developed, so breaking changes and newer features are to be expected since it hasn’t been stably released yet. And to be honest loading/showing a chart via APEX is much faster then via the Python code, because of starting the whole „PyScript“ backend with each page load.

Veröffentlicht unter APEX, JavaScript, Python | Verschlagwortet mit , , | Schreib einen Kommentar

Connect Flutter with Oracle Database via OAuth2 authorized JSON-API

A few month ago I started with coding in Dart/Flutter. One of my first „projects“ was to create a mobile app for my pantry inventory. To have the data available on different devices synchronized it was needed to save it somewhere in the cloud.

Pantry mobile app
Pantry Mobile App

Of course, there a several options available to save data in the cloud. Some of them are not for free, some will not follow my point of view with GDPR regulations. The good thing was, that Oracle offers an always free database in the cloud. And since I’m working with Oracle APEX the whole setup was available for me without starting from scratch.

In this always free database, Oracle offers an autonomous database with a REST interface and you can decide in which location it should running. There are a lot more options available (Oracle APEX, VM’s, …) but these are not needed for this post. For more information, please take a look.

Reflected in this post:

  • Dependencies in Dart/Flutter
  • Code to authorize with the REST API
  • Code to get JSON data from the REST API

Not reflected in this post:

  • How to work with REST in the database (Please take a look on the posts from Jeff and here and here and here)
  • How to setup OAuth2 in the Oracle environment (Please take a look on these post and here)
  • How to create JSON data model in Flutter (Andrea offers a great post about that)
  • How to display the received JSON data in a Flutter widget

Before we start: On a high level you need Dart/Flutter installed and working on your client. Oracle database with the REST API available and Client_Id and Client_Secret created.

First we need 2 dependencies in our „pubspec.yaml„: „oauth2_client“ and „oauth2„.

# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
# consider running `flutter pub upgrade --major-versions`. Alternatively,
# dependencies can be manually updated by changing the version numbers below to
# the latest version available on pub.dev. To see which dependencies have newer
# versions available, run `flutter pub outdated`.
dependencies:
  flutter:
    sdk: flutter
  intl: ^0.17.0
  http: ^0.13.4
  provider: ^6.0.1
  oauth2_client: ^2.3.1
  oauth2: ^2.0.0
  

Next we have to create our „MyOAuth2Client“ class extends from „OAuth2Client“ where we have to describe our „authorizeURL“ and our „tokenURL„. To connect and authorize with our REST API we use an „OAuth2Helper“ and add our „Client_Id“ and „Client_Secret„. In the code below named with „MyClientID“ and „MyClientSecret„. In „OAuth2Helper“ set „grantType:“ to „OAuth2Helper.CLIENT_CREDENTIALS„.

With this preparation we can call our „getPantryList“ within our Flutter widget to get a JSON list back from our Oracle database with all pantry entries. All the magic things (authorization, token handling) will happen without any further interaction from the user.

The variable „domain“ is predefined in the „secrets.dart“ and is imported on top of the code. I use this to not push private data into github.

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:oauth2_client/oauth2_helper.dart';
import 'package:oauth2_client/oauth2_client.dart';
import 'package:pantry/app/models/pantry.dart';
import 'package:pantry/app/auth/secrets.dart';
import 'package:pantry/app/models/pantryselect.dart';

class MyOAuth2Client extends OAuth2Client {
  MyOAuth2Client({required String redirectUri, required String customUriScheme})
      : super(
            authorizeUrl: domain + 'pantry/list',
            tokenUrl: domain + 'oauth/token',
            redirectUri: redirectUri,
            customUriScheme: customUriScheme);
}

OAuth2Client client = MyOAuth2Client(redirectUri: '', customUriScheme: '');

OAuth2Helper oAuth2Helper = OAuth2Helper(client,
    clientId: 'MyClientID',
    clientSecret: 'MyClientSecret',
    grantType: OAuth2Helper.CLIENT_CREDENTIALS);

Future<Pantrylist> getPantrylist() async {
  http.Response resp = await oAuth2Helper.get(domain + 'pantry/list');
  var pantrylistModel;
  try {
    if (resp.statusCode == 200) {
      var jsonString = resp.body;
      var jsonMap = json.decode(jsonString);

      pantrylistModel = Pantrylist.fromJson(jsonMap);
    }
  } on Exception {
    return pantrylistModel;
  }
  return pantrylistModel;
}

With a few more REST endpoints in my database I can add, change and delete entries if needed.

The beauty of using the Oracle free cloud for my data is, that I use the same data in an Oracle APEX application. With that I can create a GUI for the browser and work with the same data.

Veröffentlicht unter Dart, Flutter, Programmierung, REST API | Verschlagwortet mit , , , , | Schreib einen Kommentar

Einstieg in C# mit Visual Studio 2022

In diesem Post beschreibe ich ein Buch, welches die Programmiersprache „C#“ und die dazu passende IDE „Visual Studio“ zum Thema hat. Ihr erfahrt, weshalb es sich gerade für Einsteiger lohnt, dieses Buch zu lesen.

Titel: Einstieg in C# mit Visual Studio 2022 – Ideal für Programmiereinsteiger
Autor: Thomas Theis
Verlag: Rheinwerk Verlag
Erscheinungsdatum: 2022
ISBN: 978-3-8362-8835-4
Seitenzahl: 507
Leseprobe

Einstieg in C# mit Visual Studio 2022 – Ideal für ProgrammiereinsteigerFl

Inhalt

Zu Beginn gehört natürlich die Einrichtung und Erklärung der Entwicklungsumgebung (Installationsanleitung im Buch-Anhang). Für die Beispiele im Buch völlig ausreichend wird die frei verfügbare Community Edition verwendet. Um dem Leser/der Leserin einen einfachen Einstieg zu ermöglichen, wird von Anfang an mit anschaulichen Windows Anwendungen gearbeitet. Dazu gehört die Arbeit mit Steuerelementen, Variablen, Verzweigungen und Schleifen. Der wichtigen Fehlerbehandlung ist ein eigenes Kapitel gewidmet.

Bevor es an die objektorientierte Programmierung geht, erfährt der Leser/die Leserin noch was Datenfelder, Methoden und nullbare Datentypen sind. Weiter geht es mit kurzen, aber vom Autor gut erklärten Code-Beispielen. Diese enthalten Erklärungen zur Vererbung, Polymorphie, abstrakten Klassen, Schnittstellen und generischen Datentypen. Um nur ein paar Beispiele aufzuführen. Damit greift der Autor alle wichtigen Themen einer modernen Programmiersprache auf. Mit jedem neuen Code-Beispiel lernt der Leser/die Leserin mehr über die Sprache und bekommt die notwendigen Ausführungen vom Autor, um den Code zu verstehen. Die Materialien können auf der Webseite zum Buch beim Verlag heruntergeladen werden.

Nach dieser ausreichenden „Einleitung“ werden im Buch wichtige .NET Klassen beispielhaft mit Code erklärt. Da es sich bei Windows um ein hauptsächlich grafisch bedientes Betriebssystem handelt, enthält das Buch ein eigenes Kapitel zur Programmierung von verschiedenen Elementen von Windows-Programmen (z.b. unterschiedliche Arten von Menüs, Status- und Symbolleiste, Dialogfelder). Bevor es an kleinere, vollständige Beispielprojekte geht (Tetris, Vokabellernprogramm), wird auf die Arbeit mit Datenbankanwendungen, GDI+ und die Windows Presentation Foundation eingegangen.

Zusammenfassung

Der Titel des Buches verspricht nicht zu viel. Wer sich mit der Sprache C# beschäftigen möchte, dem kann ich dieses Buch uneingeschränkt empfehlen. Die Code-Beispiele sind ausreichend beschrieben und schnell in eigenen Übungen umgesetzt. Und auch bei, für Anfänger, schwierigen Themen wie z.B. Klassen, Vererbung, Schnittstellen sind alle Erklärungen verständlich geschrieben. Wenn ich mir für eine nächste Auflage etwas wünschen dürfte, wäre es ein Kapitel über den Zugriff auf Internet-Ressourcen (z.b. Interaktion mit REST APIs oder Webseiten).

Disclaimer: Das Buch wurde mir vom Rheinwerk Computing Verlag kostenfrei zur Verfügung gestellt.
Veröffentlicht unter .NET, Microsoft, Programmierung, Windows | Verschlagwortet mit , , , , | Schreib einen Kommentar

Flutter und Dart – Das umfassende Handbuch

Auf dieses Buch habe ich mich lange gefreut. Im letzten Jahr hatte ich damit begonnen in Dart und Flutter meine ersten Schritte zu gehen, da kam die Ankündigung für dieses Buch genau richtig. Flutter wurde von Google entwickelt und eignet sich zum Entwickeln von Cross-Plattform-Apps. Gemeinsam mit Dart können auf einer Codebasis und wenigen Anpassungen Anwendungen für iOS, Android, Web oder Windows, Linux, macOS entwickelt werden.

Titel: Flutter und Dart – Das umfassende Handbuch
Autor: Thomas Theis
Verlag: Rheinwerk Verlag
Erscheinungsdatum: 2021
ISBN: 978-3-8362-8146-1
Seitenzahl: 651
Leseprobe

Flutter und Dart - Das umfassende Handbuch - Buchcover
Flutter und Dart – Das umfassende Handbuch

Inhalt

Um mein Fazit gleich vorweg zu nehmen, das Buch hat mich enttäuscht. Erwartet habe ich ein Buch, welches einen leichten Einstieg auch für Neulinge dieser Sprachen bietet. Und der Autor weißt gleich am Anfang auf diesen, seinen eigenen, Anspruch mit folgendem Satz hin: „Sie benötigen hierzu keinerlei Vorkenntnisse in anderen Programmiersprachen.„. Schon beim ersten Durchblättern ist mir aufgefallen, dass die Code-Beispiele nicht sehr umfangreich, oder auch dem Platz im Buch geschuldet, nicht vollständig abgedruckt sind (dazu gleich mehr). Es wird auch nicht, wie in anderen Büchern vorgemacht, anhand eines durchgehenden Beispiel-Programms das vermittelte Wissen weiter vertieft.

Der Autor versucht im ersten Teil des Buches alle Aspekte der Sprache Dart zu erklären, mal mehr mal weniger umfangreich. Immer wieder habe ich das Gefühl, dass Wissen aus einer anderen, modernen Programmiersprache, von Vorteil wäre, um alle Einzelheiten zu verstehen. Im zweiten Teil des Buch geht es dann um Flutter und man lernt, dass Flutter komplett aus Widgets besteht. Sei es ein einfache Seite (Homepage), ein Button, eine Tabelle usw. Im Rest des Buches wird auf die Entwicklung eigener Flutter-Plugins, das Debugging und Testen einer App eingegangen. Was ich leider sehr vermisst habe, war ein Kapitel über das Deployen der fertigen App. Was ist erforderlich, um die App in einem der Mobile-App-Stores zu veröffentlichen? Stattdessen wird in kurzen Abschnitten die Veröffentlichung eines Packages beschrieben und ansonsten auf die Online-Dokumentation verwiesen.

Zusammenfassung

Das Buch ist gut zum Nachschlagen geeignet. Dazu sollte man allerdings wissen, wonach man sucht und das setzt voraus, dass man das Konzept von Flutter verstanden hat, oder schon Erfahrung in einer anderen Programmiersprache besitzt. Es gibt erste Beispiele in der Dart-Programmierung an die Hand und erklärt relativ umfangreich die Erstellung von Bedienoberflächen mit verschiedenen Flutter Widgets. Vermisst habe ich einen durchgehenden Faden, der Anhand eines oder mehrer Beispielanwendungen die Anwendung der Sprache erklärt.

Hinzukommt, dass das Buch genau in der Zeit geschrieben wurde, als Google größere Änderungen, was z.B. Code-Sicherheit und Navigation angeht, vorgenommen hat. Deshalb ist es unbedingt erforderlich, sich die Codebespiele von der Buch-Webseite herunterzuladen. Nicht nur hat man hier den kompletten Code, sondern auch schon für Flutter 2.x angepasst vorliegen. Was leider nicht mehr vollständig im Buch untergebracht werden konnte.

Disclaimer: Das Buch wurde mir vom Rheinwerk Computing Verlag kostenfrei zur Verfügung gestellt.
Veröffentlicht unter Allgemein | Verschlagwortet mit , | Schreib einen Kommentar

Einstieg in Unity 2D- und 3D-Spiele entwickeln

Es wird wieder Zeit, über ein Buch zu schreiben. Und in alter Tradition geht es darum, spielerisch seine Programmierkenntnisse zu erweitern. Genauer geht es darum, mit C# und der Unity Engine 2D und 3D Spiele zum laufen zu bringen.

Titel: Einstieg in Unity 2D- und 3D-Spiele entwickeln
Autor: Thomas Theis
Verlag: Rheinwerk Verlag
Erscheinungsdatum: 2021
ISBN: 978-3-8362-8332-8
Seitenzahl: 487
Leseprobe

Einstieg in Unity
Einstieg in Unity

Inhalt

Wie die meisten Bücher geht es erst einmal darum, sich die nötigen Programme zu installieren. Dabei ist man flexibel in der Auswahl seines Betriebssystem, alle aktuellen Systeme werden unterstützt und die Installation im Buch beschrieben.

Während es an das erste 2D-Projekt geht, wird die Unity Umgebung und deren Bedienung erklärt. Ausreichend detailiert erklärt der Autor die Verknüpfung von C# Code und der Unity Engine. In den 18 enthaltenen Games erfährt der Leser Projekte, Scenes und Assets zu verwalten. Collider und Trigger zu behandeln und wie Physik simuliert wird. Neben bekannten Arcade-Klassikern sieht man, wie aktuelle 3D-Adventures oder 3D-Autorennen erstellt werden. Mit eigener Fantasie kann man diese Beispiele selbständig erweitern. Das Buch gibt genug Wissen an die Hand. Alle Code-Beispiele und verwendete Assets können von der Webseite des Verlags heruntergeladen werden.

Abgerundet wird das Buch mit einem eigenen Kapitel als C# Programmierkurs und Hinweisen, wie man seine Spiele auf verschiedenen Plattformen veröffentlicht.

Zusammenfassung

Das Buch beschreibt sich selber als „Ideal für Programmieranfänger“, was ich bestätigen kann. Der Autor fängt mit einfach umzusetzenden Beispielen an und steigert die Anforderungen. Zwischendurch geht er näher ins Detail und ergänzt auch nützliche Hinweise an fehlerträchtigen Stellen. In jedem Kapitel wird der Code nach und nach um Funktionen erweitert. Schon durchgeführte Programmierübungen werden nicht wiederholt, um Doppelungen zu vermeiden und das Buch nich unnötig aufzublähen.

Wenn ich einen Kritikpunkt äußern darf, dann hat dieser nichts mit dem Inhalt des Buches, sondern mit dessen Bindung zu tun. Ein solches Buch liegt bei mir neben der Tastatur, um den Code abzutippen. Leider bleibt das Buch nur geöffnet, wenn es auf beiden Seiten entsprechend gehalten/beschwert wird.

Der Autor liefert, was er verspricht. Der Leser bekommt erste Erfahrungen mit C# und Unity an die Hand, inkl. Erfolgserlebnissen mit guten Beispiel-Games. Für tiefergehende Kenntnisse kann man weitere Literatur oder das Internet bemühen.

Disclaimer: Das Buch wurde mir vom Rheinwerk Computing Verlag kostenfrei zur Verfügung gestellt.
Veröffentlicht unter Bücher, Programmierung | Verschlagwortet mit , , , | Schreib einen Kommentar

Programmieren lernen mit JavaScript

Wieder einmal bekam ich die Gelegenheit, ein Buch aus dem Rheinwerk Computing Verlag zu lesen und darüber zu schreiben. Es geht um JavaScript und den spielerischen Einstieg in die Programmierung damit.

Titel: Programmieren lernen mit JavaScript
Autor: Stephan Elter
Verlag: Rheinwerk Verlag
Erscheinungsdatum: 2019
ISBN: 978-3-8362-7369-5
Seitenzahl: 391

Schon beim ersten durchblättern sieht man, dass es sich um ein Buch für Anfänger handelt. Der Autor beschreibt die Grundlagen von HTML und wie Webseiten aufgebaut sind.

Programmieren lernen mit JavaScript

Inhalt

Nachdem der Autor mit ein paar Code-Beispielen den Aufbau einer HTML-Seite beschrieben hat, geht es mit den JavaScript Grundlagen weiter. Dabei erfährt der Leser wie Ein- und Ausgaben, Schleifen, Berechnungen, Entscheidungen und Variablen in JavaScript umgesetzt werden. Die typischen Grundlagen einer jeden Programmiersprache.

Alle weiteren Beispiele im Buch haben einen spielerischen Hintergrund und sind sehr umfangreich beschrieben. Was der persönliche Schreibstil und die grafische Unterstützung (Hinweistextboxen, Erklärung einzelner Codezeilen) der Codebeispiele noch verstärkt. Ausreichend viele Screenshots lockern die Kapitel auf und helfen zur Kontrolle der eigenen Code-Ergebnisse.

Zu den Beispielen im Buch gehört die Programmierung eines Text-Adventures und auch die Freunde von grafischen Spielen kommen mit einem Mondlande- und einem Tetris-Spiel nicht zu kurz.

Zusammenfassung

Dieses Buch ist jedem zu Empfehlen, der noch keine JavaScript Erfahrungen hat. Nicht nur, dass er hier in die ersten Schritte der Programmierung eingeführt wird, es werden auch die wichtigsten HTML-Grundlagen beschrieben. Wer schon Erfahrungen mit JavaScript hat und nun tiefer (z.B. ein JavaScript Framework) einsteigen möchte, dem empfehle ich ein anderes Buch zur Hand zu nehmen.

Die Codebeispiele und auch eine Leseprobe sind wie immer auf der Webseite zum Buch beim Verlag erhältlich.

Kleine Anekdote am Rande: Ich habe das Buch meinem elfjährigen Neffen zum lesen gegeben und es dauert nicht lange, da durfte ich ihm dabei behilflich sein, den Editor auf seinem Laptop zum Laufen zu bringen. Er begann dann damit, die ersten Beispiele abzutippen und ich erinnerte mich an meine Anfänge in den 1980ern und Basic auf meinem Atari.

Disclaimer: Das Buch wurde mir vom Rheinwerk Computing Verlag kostenfrei zur Verfügung gestellt.
Veröffentlicht unter Allgemein | Verschlagwortet mit , , | Ein Kommentar