Category Archives: Softwareentwicklung

Allgemeines über die Softwareentwicklung

Softwareentwicklung

Subversion vs. Git

In der heutigen Zeit schwören fast alle auf Git. Sachlich betrachtet nach den einzelnen Vorteilen gibt es aber nach wie vor auch Gründe Subversion einzusetzen!

SVN:

VorteileNachteile
zentral auf einem Server verwaltet -> u.a. optimal bei einem Entwickler oder kleines TeamMergen kann sehr aufwendig werden
kann auch große Dateien speichern und verwaltenteilweise langsam
ohne paralleles Arbeiten und das Nutzen von Repositories besser -> kein Mergen
grafische Oberflächen vorhanden
sequentielle Versionsverwaltung (1,2,3,etc.)
unter Entwicklern bekannt
integriertes Rechtemanagment

Git:

VorteileNachteile
ohne Server verwendbarnoch sehr jung und evtl. noch kein Plugin für die eingesetzte Entwicklungsumgebung vorhanden
dezentral auf jedem Client verwaltetkein Rechtemanagement
schneller, teilweise viel schneller (mergen, Erstellen von Branches, etc.)keine sequentielle Versionsverwaltung -> das muss kein Nachteil sein und ist Gewöhnungssache

Fazit:

In Teams, die öfters mergen müssen, die werden auf jeden Fall mit Git schneller und effektiver arbeiten können. Jedoch kann die zentrale Datenverwaltung auch ein großes Plus sein, besonders bei nur einem Entwickler oder einem kleinem Team. Zugleich muss aber auch ein Server vorhanden sein und Datensicherungen durchgeführt werden. In jedem Fall sollte man sich vorher Gedanken über die Vor- und Nachteile machen.

 

Quellen:

http://www.hyperarts.com/blog/version-control-git-vs-svn/

http://blog.projectlocker.com/subversion-vs-git

http://johnragan.wordpress.com/2013/05/05/git-vs-subversion-which-to-use-for-your-next-project/

http://de.slideshare.net/mariomueller/git-vs-svn-eine-vergleichende-einfhrung

 

Softwareentwicklung

Excel-Dateien erstellen und bearbeiten

Mit der Bibliothek PhpExcel lassen sich in PHP bequem Excel-Dateien erstellen und bearbeiten. Selbst einzelne Sheets können neu angelegt oder bearbeitet werden. Das funktioniert einfacher und komfortabler als das Arbeiten mit Word-Dateien.

Auf der Bibliothekswebseite stehen etliche Beispiele bereit, um fast alle Bereiche rund um Excel in PHP abzudecken.

Selbst Zellen mit Formeln können befüllt und erhalten werden. Dazu gibt es die Funktion:

$objWriter->setPreCalculateFormulas(FALSE);

Hier ein Beispiel, um eine Excel-Datei zu öffnen , zu bearbeiten und zu speichern:


<?php
error_reporting(E_ALL);
set_time_limit(0);
date_default_timezone_set('Europe/London');
 
/** Include PHPExcel */
require_once 'Classes/PHPExcel.php';
 
/** PHPExcel_IOFactory */
include 'Classes/PHPExcel/IOFactory.php';
//die Datei demo.xls liegt im gleichen Verzeichnis wie diese PHP-Datei
$objPHPexcel = PHPExcel_IOFactory::load('Demo.xls');
//welches Sheet soll geladen warden?
$objWorksheet = $objPHPexcel->getSheet(1);
//in der nächsten Zeile setzen wir im 1. Sheet in der Zelle A6 den Wert „Mathias Bauer“
$objWorksheet->getCell('A6')->setValue('Mathias Bauer');
//den neu gesetzten Wert auslesen und ausgeben
$value = $objWorksheet->getCell('A6')->getValue();
echo $value;
//das 2. Sheet laden
$objWorksheet0 = $objPHPexcel->getSheet(2);
//und in der Zelle E11 den Wert “An der Gersprenz 7” setzen
$objWorksheet0->getCell('E11')->setValue('An der Gersprenz 7');
//den neu gesetzten Wert auslesen und anzeigen
$value = $objWorksheet0->getCell('E11')->getValue();
echo $value;
//das default Sheet setzen, welches nach dem Öffnen der Datei mit Excel angezeigt warden soll
$objPHPexcel->setActiveSheetIndex(0);
//das Dateiformat setzen
$objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, 'Excel2007');
//evtl. vorhandene Formeln nicht ausführen, sondern lediglich die neuen Werte setezen
$objWriter->setPreCalculateFormulas(FALSE);
//Werte in neuer Datei speichern
$objWriter->save('Demo2.xlsx');
?>

Wenn Ihnen die Lösung weitergeholfen hat, würde ich mich über ein „Like” oder einen Kommentar sehr freuen. Danke!

Softwareentwicklung

Framestarter – Webanwendungen schneller entwickeln

Default Frontend-Template des Framestarters
Default Frontend-Template des Framestarters

In meiner letzten Webanwendung habe ich das Framework CodeIgniter eingesetzt und getestet. CodeIgniter ist sehr gut, schnell und leichtgewichtig. Deshalb kann ich es absolut empfehlen.

Ein Punkt hat mich jedoch gestört. Von Beginn an sind nicht die gängigen Komponenten vorinstalliert, die eine Durchschnittswebanwendung benötigt. Man kann zwar diese Komponenten mittels Plugins nachinstallieren und konfigurieren. Jedoch kostet das den Entwickler bei jeder neuen Webanwendung wieder wertvolle Zeit, die er in die Entwicklung der eigentlichen Funktionen stecken könnte.

Ein Ansatz bietet BonFire. BonFire wurde speziell für die schnelle Entwicklung von CodeIgniter-Anwendungen programmiert. Hier sind von Beginn an schon viele Plugins und eigene Erweiterungen integriert. Allerdings sind das bereits zu viele. Bspw. ist der Administrationsbereich schon zu umfangreich. Auch die Templates sind zu umfassend. In diesem Fall muss man nach der Installation Quellcode anpassen oder entfernen.

Es wird ein Startpacket mit allen Komponenten benötigt, die auf möglichst allen Webseiten zu finden sind. Im Zweifelsfall ist die Komponente weg zu lassen und nachträglich zu installieren und zu konfigurieren.

Deshalb soll Framestarter Abhilfe verschaffen. Die Idee besteht darin, möglichst schnell eine Webanwendung entwickeln zu können ohne das Rad neu erfinden zu müssen. Framestarter basiert auf CodeIgniter und enthält zusätzlich von Beginn an:

  • eine .htaccess-Datei, die aus der URL /index.php/ entfernt.
  • eine Benutzerregistrierung (Tank Auth).
  • Sprachdateien (aus Tank Auth).
  • Die deutsche Sprachdatei wurde angepasst.
  • ein Administrationsbereich mit der Möglichkeit schnell ein Rechtesystem umzusetzen. In  der Datenbank wird standardmäßig die group_id = 3 gesetzt.
  • ein Templatesystem (beinhaltet bewusst zwei rudimentäre Themes für das Frontend und Backend).
  • HMVC, um das Template in Bereiche unterteilen und modular entwickeln zu können.
  • Bsp.-Modulpositionen sind in den Konfigurationsdateien modules.php und admin_modules.php hinterlegt.

Framestarter spart dem Entwickler zu Beginn des Projektes eine Menge Zeit. Somit kann dieser direkt mit der Programmierung der eigentlichen Funktionen beginnen.

Framestarter kann hier kostenlos heruntergeladen werden.

Über ein „Like” oder einen Kommentar würde ich mich sehr freuen. Danke!

Allgemein Softwareentwicklung

CodeIgniter-Pagination: aktuelle Seitenzahl wird nicht angezeigt

Für ein Webprojekt verwende und teste ich im Moment das Framework CodeIgniter.

Der Einsatz der Bibliothek „Pagination“ hat leider auf Anhieb nicht funktioniert. Beim Anklicken von Seitenzahlen wurde zwar die jeweilige Seite angezeigt, aber in der Seitenzahlanzeige selbst wurde immer nur die Eins fett dargestellt.

Anzeige der Seitenzahlnavigation
Anzeige der Seitenzahlnavigation

Abhilfe verschafft hier nur der Eingriff in die Bibliothek. Hierzu müssen Sie in der Datei system/libraries/Pagination.php vor der Zeile 157 folgende Zeile einfügen:


$this->uri_segment = $CI->uri->total_segments();

Der Codeabschnitt sieht nach dem Einfügen wie folgt aus:


if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
{
  if ($CI->input->get($this->query_string_segment) != $base_page)
  {
    $this->cur_page = $CI->input->get($this->query_string_segment);

     $// Prep the current page - no funny business!
     $this->cur_page = (int) $this->cur_page;
  }
}
else
{
  $this->uri_segment = $CI->uri->total_segments();
  if ($CI->uri->segment($this->uri_segment) != $base_page)
  {
     $this->cur_page = $CI->uri->segment($this->uri_segment);

     // Prep the current page - no funny business!
     $this->cur_page = (int) $this->cur_page;
  }
}

 
Wenn Ihnen die Lösung weitergeholfen hat, würde ich mich über ein „Like” oder einen Kommentar sehr freuen. Danke!

Allgemein Softwareentwicklung

PHP: eine dynamische Worddatei erstellen und aufrufen

In diesem Artikel möchte ich Ihnen zeigen, wie man mit PHP eine dynamische Worddatei erstellen kann und diese ohne zwischenzuspeichern dem Anwender zur Verfügung stellt.

Zunächst bedienen Sie sich einem kleinen Trick. Sie erstellen eine Worddatei und speichern diese im RTF-Format ab. Diese Datei dient Ihnen als Template, in dem Sie Platzhalter einbauen und diese später dynamisch in PHP ersetzen können. Im verwendeten Beispiel habe ich die Datei wordfile.rtf genannt.

RTF-Datei
RTF-Datei

Im nächsten Schritt müssen Sie der Datei noch die Endung .php hinzufügen. Dazu benennen Sie im Windowsexplorer die Datei einfach um und hängen die Endung dran.  Die umbenannte Datei können Sie mittels PHP einlesen und bearbeiten!

Anschließend öffnen Sie die Datei wordfile.rtf.php und ersetzen die Platzhalter in PHP wie folgt:


<?php
$content = file_get_contents('wordfile.rtf.php');

//remove php tags
$content = str_replace(‘<?php /*’, ”, $content);
$content = str_replace(‘?>’, ”, $content);

// replace variables
$content = str_replace(‘%test%’, “Das ist ein Test!”, $content);
$content = str_replace(‘%date%’, date(“d.m.Y”), $content);
$content = str_replace(‘%text%’, “Hier steht ein Text.”, $content);
?>

Und mit folgendem Code wird die Datei, ohne diese auf dem Server zu speichern, zum Anwender gesendet:


<?php
// send file to user
header('Content-Type: application/rtf;charset=utf-8');
header('Content-Disposition: attachment; filename="Test.doc"');
print $content;
?>

Das Endergebnis sieht dann wie folgt aus:

Ergebnis der dynamisch erzeugten Worddatei
Ergebnis der dynamisch erzeugten Worddatei

Wenn Ihnen die Lösung weitergeholfen hat, würde ich mich über ein „Like” oder einen Kommentar sehr freuen. Danke!