Android Debug Bridge (adb) – HowTo


In diesem Blog-Post beschreibe ich ein wenig die Funktionen der “Android Debug Bridge” (adb), dies ist ein Programm um von einen PC (Linux, Windows, MAC) mit dem Android-Handy zu kommunizieren, ich habe in diesem HowTo Windows verwendet. Adb ist im “Android-SDK” enthalten.

1. Vorbereitung

Als erstes müssen wir uns die Android-SDK herunterladen und installieren.


1.1) Treiber
Wenn du dein Handy noch nie mit deinem PC verbunden hast, musst du ggf. auch noch die Treiber installieren.


Windows XP” -> “SAMSUNG New PC Studio” -> Download-Link

Windows 7” -> “SAMSUNG Kies“ -> Download-Link


1.2) Download


1.3) Installation
android-sdk*.zip entpacken wir als erstes, dann kopieren wir “android-sdk-windows” nach C:\ und starten den darin enthaltenen “SDK Manager.exe”.



ADB
ADB


1.4) USB Debug aktivieren
USB debug auf dem Handy aktivieren…
Einstellungen – Anwendung – Entwicklung: „USB-Debugging“
…und danach dein Android per USB mit dem PC verbinden.


2.) ADB-Kommandos

Nun starten die die Windows-Kommandozeile…



cmd
cmd



… und können nun folgende Befehle ausführen.
# in folgndes Verzeichnis wechseln
cd C:\android-sdk-windows\platform-tools
# ADB-Hile anziegen lassen
adb -h
# zeigt die angeschlossenen Android-Geräte an
adb devices
# Android wird neu-gestartet
adb reboot
# Android wird im Recovery-Modus gestartet
adb reboot recovery
# dumping Debug Information (~ tail -f /var/log/everything.log) ;-)
adb logcat
# der allgemine Befehl für Kommandos
adb [-s ] 
# startet die Android-Konsole, dann kannst
adb [-s ] shell
# zeigt das Android-Logfile an (~tail -f /var/log/everything)
adb logcat
V —> Verbose (lowest priority)
D —> Debug
I —> Info
W —> Warning
E —> Error
F —> Fatal
S —> Silent (highest priority, on which nothing is ever printed)
# z.B. alle Error-Meldungen anziegen lassen
adb logcat *:E
radio  —> View the buffer that contains radio/telephony related messages.
events —> View the buffer containing events-related messages.
main   —> View the main log buffer (default)
# z.B. alle Event-Meldungen anziegen lassen
adb logcat -b events
# installiert ein App von deinem PC aus
adb install \
# Upload eine Datei von deinem PC (localfile) zum Handy
adb push  
# Download eine Datei von Handy zu deinem PC
adb pull  


In dem CyanogenMod – Wiki gibt es noch weitere hilfreiche Befehle: http://wiki.cyanogenmod.com/index.php?title=ADB


— die nachfolgenden Befehle werden in der “adb shell” ausgeführt —


Dabei können die meisten der folgenden Befehle können auch in anderen Linux-Systemen verwendet werden… :-)


# zeigt das Android-Logfile an (~tail -f /var/log/everything)
logcat
# zeigt Kernel-Debug Infos an
dmesg
# zeigt die System-Apps an (ls = dir unter Windows)
ls /system/app/
# zeigt die installierten Apps an
ls /data/app/
# zeigt Daten auf deiner SD-Karte an
ls /mnt/sdcard/
# zeigt den Inhalt einer Datei an oder kopiert diese auch, wenn nötig
cat lall.txt
cat lall.txt > lall_copy.txt
# zeigt an wer du bist ;-)
whoami
# zeigt die laufenden Prozesse an
ps 
#zeigt die Systemauslastung an
top | tail
# zeigt alle eingehängten Partitionan an
mount
# grep filtert z.B. Ausgaben
mount | grep system
# root-Rechte erhalten (su = substitute user)
su
# alle Partition können nun beschrieben werden
remount rw
# z.B. die Partition /system kann nun beschrieben werden (read & write)
remount rw /system
# die Partition /system kann nun nicht mehr beschrieben werden (read only)
remount ro /system
# z.B. löscht ein System-App (rm = del unter Windows)
rm /system/app/
# löscht ein installiertes App
rm /data/app/


PS: Da ich den “Cyanogenmod” bei mir installiert habe, stehen mir noch viele weitere Programme wie z.B. einen SSH-Server (dropbear), wget… zur Verfügung, :-) die hier gezeigten Befehle sollten aber auch ohne diesen Mod funktionieren.

Weihnachtsgeschenke für Geeks

Ein Geschenk für einen Computer-Freak zu finden ist gar nicht so schwer wie man auf Anhieb denkt. Denn es gibt ganze Webseiten, welche sich auf diese Kundschaft ausgerichtet haben. :-) Um einigen ahnungslosen Eltern, Freunden/-innen von (uns) Geeks einen Tipp zu geben, habe ich folgende kleine Liste zusammengestellt und wie man sieht müssen die Geschenke nicht einmal viel kosten.


1.) Taschentücher -> 1,25 €

US_Dollar
US Dollar als Taschentuch

2.) PC-Sticker -> 1.99 $

casebadges
casebadges


3.) 3D Notizblock -> 5,90 €

3D Notizblock
3D Notizblock

4.) Sudoku-Klopapier -> 6,95 €

sudoku_klopapier
sudoku Klopapier


5.) bOOleO Kartenspiel -> 11,90 €

bOOleO Kartenspiel
bOOleO Kartenspiel


6.) Lesezeichen an der Wand -> 14,90 €

Lesezeichen + Buchhalter
Lesezeichen + Buchhalter

7.) außergewöhnliche Ohrstöpsel -> 14,95 €

witzige Kopfhörer
witzige Kopfhörer

8.) myAVR Board light, Bausatz -> 14,95 Euro

board light Bausatz
board light Bausatz

9.) myBrett ->  15 €

myBrett
myBrett

10.) Widerstand ist zwecklos (T-Shirt) -> ~14,90 €

widerstand-zwecklos
widerstand-zwecklos

11.) Kaffee ist unverzichtbar -> 18.00 $

Kaffeetasse
Kaffeetasse

12.) Slide to unlock (Fußmatte) -> 19,90 €

Fußmatte Slide to unlock
Fußmatte Slide to unlock

13.) Selbstrührende Thermo-Tasse -> 19,95 €

selbstruehrende-tasse
selbstruehrende-tasse

14.)  W-Lan – T-Shirt -> 29,90 €

wlan_shirt
wlan_shirt


Auf den Webseiten gibt es natürlich noch Unmengen weitere interessante Dinge, über die sich jeder Geek freuen wird -> z.B.: “Fernzündung von Feuerwerkskörpern“, “Musikkissen“…

unoconv: umwandlung zwischen allen Dokument-Formaten von OpenOffice

Mit unoconv kann man viele Dokument-Formate konvertieren, unterstützte Formate sind unter anderem das  “Open Document Format” (.odt), “MS Word” (.doc), “MS Office Open/MS OOXML” (.xml), “Portable Document Format” (.pdf), “HTML”, “XHTML”, “RTF”, “Docbook” (.xml)…  

Funktionen:

  • konvertiert alle Formate die OpenOffice unterstützt
  • OpenOffice unterstützt bis zu 100 Dokument Formate :-)
  • kann genutzt werden um Vorgänge zu automatisieren (Skripte -> z.B. shell oder php)
  • unterstützt weitere Tools -> “asciidoc”, “docbook2odf/xhtml2odt”
  • kann Style-Vorlagen (templates) während der Konvertierung anwenden (corporate identity)
  • kann sowohl als Server, als auch als Client fungieren


Formate:

Es folgt eine Liste von Ausgabe-Formaten von OpenOffice (und somit auch von unoconv), die Eingabe-Formate können sich jedoch unterscheiden -> INPUT / EXPORT


Export:

  • bib – BibTeX [.bib]
  • doc – Microsoft Word 97/2000/XP [.doc]
  • doc6 – Microsoft Word 6.0 [.doc]
  • doc95 – Microsoft Word 95 [.doc]
  • docbook – DocBook [.xml]
  • html – HTML Document (OpenOffice.org Writer) [.html]
  • odt – Open Document Text [.odt]
  • ott – Open Document Text [.ott]
  • ooxml – Microsoft Office Open XML [.xml]
  • pdb – AportisDoc (Palm) [.pdb]
  • pdf – Portable Document Format [.pdf]
  • psw – Pocket Word [.psw]
  • rtf – Rich Text Format [.rtf]
  • latex – LaTeX 2e [.ltx]
  • sdw – StarWriter 5.0 [.sdw]
  • sdw4 – StarWriter 4.0 [.sdw]
  • sdw3 – StarWriter 3.0 [.sdw]
  • stw – Open Office.org 1.0 Text Document Template [.stw]
  • sxw – Open Office.org 1.0 Text Document [.sxw]
  • text – Text Encoded [.txt]
  • txt – Plain Text [.txt]
  • vor – StarWriter 5.0 Template [.vor]
  • vor4 – StarWriter 4.0 Template [.vor]
  • vor3 – StarWriter 3.0 Template [.vor]
  • xhtml – XHTML Document [.html]
  • […]


Installation:

aptitude install unoconv asciidoc docbook2od


Beispiele 1: Standard

Als erstes ein simples Beispiel, hier wird einfach “odt” in ein “pdf” umgewandelt. Sehr hilfreich ist auch sich die Optionen einmal anzuschauen.

# unoconv - Dienst starten
unoconv --listener &
# odt -> pdf 
unoconv -f pdf some-document.odt
# Standard 
(unoconv --server localhost --port 2002 --stdout -f pdf some-document.odt)

Beispiele 2: Vorlage

Wie bereits auf der Entwicklerseite zu lesen ist, hilf uns ein Screenshot nicht wirklich weiter, daher folgt ein zweites Beispiel mit Vorlagen.

# Beispiel Dateien herunterladen 
wget http://dag.wieers.com/cv/Makefile
wget http://dag.wieers.com/cv/curriculum-vitae-dag-wieers.txt
wget http://dag.wieers.com/cv/curriculum-vitae-docbook.ott

# unoconv - Dienst starten
unoconv --listener &
# resume.txt -> resume.xm
asciidoc -b docbook -d article -o resume.xml resume.txt
# resume.xml -> resume.tmp.odt
docbook2odf -f --params generate.meta=0 -o resume.tmp.odt resume.xml
# resume.tmp.odt -> resume.odt + Template
unoconv -f odt -t template.ott -o resume.odt resume.tmp.odt
# resume.tmp.odt -> resume.pdf + Template
unoconv -f pdf -t template.ott -o resume.pdf resume.odt
# resume.tmp.odt -> resume.html + Template
unoconv -f html -t template.ott -o resume.html resume.odt
# resume.tmp.odt -> resume.doc + Template
unoconv -f doc -t template.ott -o resume.doc resume.odt

Beispiele 3: Server <-> Client

Wie bereits erwähnt kann man den Dienst auch als Server starten und von anderen Rechnern darauf zugreifen.

# unoconv - Server-Dienst starten
unoconv --listener --server 1.2.3.4 --port 4567
# Client -> Server 
unoconv --server 1.2.3.4 --port 4567

Beispiele 4: PHP

Man kann dies nun auch in Shell-Skripten nutzen oder wie in diesem Beispiel in PHP einbinden.

$this->Filegenerator = new FilegeneratorComponent ($this->params["form"]['uploaddocfile']);
// if the filegenerator did all it's magic ok then process
if($this->Filegenerator)
// returns the text version of the PDF
$text = $this->Filegenerator->convertDocToTxt();
// returns the html of the PDF
$html = $this->Filegenerator->convertDocToHtml();
// returns the generated pdf file
$pdf = $this->Filegenerator->convertDocToPdf($doc_id);
}
<?php
/**
* Class Used to convert files.
*@author jamiescott.net
*/
class FilegeneratorComponent extends Object {

// input folder types
private $allowable_files = array ('application/msword' => 'doc' );
// variable set if the constuctor loaded correctly.
private $pass = false;
// store the file info from constuctor reference
private $fileinfo;

/**
* Enter description here...
*
* @param array $fileinfo
* Expected :
* (
[name] => test.doc
[type] => application/msword
[tmp_name] => /Applications/MAMP/tmp/php/php09PYNO
[error] => 0
[size] => 79360
)
*
*
* @return unknown
*/
function __construct($fileinfo) {

// folder to process all the files etc
define ( 'TMP_FOLDER', TMP . 'filegenerator/' . $this->generatefoldername () . '/' );

// where unoconv is installed
define ( 'UNOCONV_PATH', '/usr/bin/unoconv' );
// where to store pdf files
define ( 'PDFSTORE', ROOT . '/uploads/generatedpdfs/' );
// where to store doc files
define ( 'DOCSTORE', ROOT . '/uploads/docfiles/' );
// apache home dir
define ( 'APACHEHOME', '/home/apache' );
// set some shell enviroment vars
putenv ( "HOME=".APACHEHOME );
putenv ( "PWD=".APACHEHOME );

// check the file info is passed the tmp file is there and the correct file type is set
// and the tmp folder could be created
if (is_array ( $fileinfo ) &amp;amp;&amp;amp; file_exists ( $fileinfo ['tmp_name'] ) &amp;amp;&amp;amp; in_array ( $fileinfo ['type'], array_keys ( $this->allowable_files ) ) &amp;amp;&amp;amp; $this->createtmp ()) {

// bass by reference
$this->fileinfo = &amp;amp;$fileinfo;
// the constuctor ran ok
$this->pass = true;
// return true to the instantiation
return true;

} else {
// faild to instantiate
return false;

}

}

/**
*      * takes the file set in the constuctor and turns it into a pdf
* stores it in /uploads/docfiles and returns the filename
*
* @return filename if pdf was generated
*/
function convertDocToPdf($foldername=false) {

if ($this->pass) {

// generate a random name
$output_pdf_name = $this->generatefoldername () . '.pdf';

// move it to the tmp folder for processing
if (! copy ( $this->fileinfo ['tmp_name'], TMP_FOLDER . 'input.doc' ))
die ( 'Error copying the doc file' );

$command = UNOCONV_PATH;
$args = ' --server localhost --port 2002 --stdout -f pdf ' . TMP_FOLDER . 'input.doc';

$run = $command . $args;

//echo $run; die;
$pdf = shell_exec ( $run );
$end_of_line = strpos ( $pdf, "\n" );
$start_of_file = substr ( $pdf, 0, $end_of_line );

if (! eregi ( '%PDF', $start_of_file ))
die ( 'Error Generating the PDF file' );

if(!file_exists(PDFSTORE.$foldername)){
mkdir(PDFSTORE.$foldername);
}

// file saved
if(!$this->_createandsave($pdf, PDFSTORE.'/'.$foldername.'/', $output_pdf_name)){
die('Error Saving The PDF');
}

return $output_pdf_name;

}

}

/**
* Return a text version of the Doc
*
* @return unknown
*/
function convertDocToTxt() {

if ($this->pass) {

// move it to the tmp folder for processing
if (! copy ( $this->fileinfo ['tmp_name'], TMP_FOLDER . 'input.doc' ))
die ( 'Error copying the doc file' );

$command = UNOCONV_PATH;
$args = ' --server localhost --port 2002 --stdout -f txt ' . TMP_FOLDER . 'input.doc';

$run = $command . $args;

//echo $run; die;
$txt = shell_exec ( $run );

// guess that if there is less than this characters probably an error
if (strlen($txt) < 10)
die ( 'Error Generating the TXT' );

// return the txt from the PDF
return $txt;

}

}

/**
* Convert the do to heml and return the html
*
* @return unknown
*/
function convertDocToHtml() {

if ($this->pass) {

// move it to the tmp folder for processing
if (! copy ( $this->fileinfo ['tmp_name'], TMP_FOLDER . 'input.doc' ))
die ( 'Error copying the doc file' );

$command = UNOCONV_PATH;
$args = ' --server localhost --port 2002 --stdout -f html ' . TMP_FOLDER . 'input.doc';

$run = $command . $args;

//echo $run; die;
$html= shell_exec ( $run );
$end_of_line = strpos ( $html, "\n" );
$start_of_file = substr ( $html, 0, $end_of_line );

if (! eregi ( 'HTML', $start_of_file ))
die ( 'Error Generating the HTML' );

// return the txt from the PDF
return $html;

}

}
/**
* Create file and store data
*
* @param unknown_type $data
* @param unknown_type $location
* @return unknown
*/
function _createandsave($data, $location, $file) {

if (is_writable ( $location )) {

// In our example we're opening $filename in append mode.
// The file pointer is at the bottom of the file hence
// that's where $somecontent will go when we fwrite() it.
if (! $handle = fopen ( $location.$file, 'w' )) {
trigger_error("Cannot open file ($location$file)");
return false;
}

// Write $somecontent to our opened file.
if (fwrite ( $handle, $data ) === FALSE) {
trigger_error("Cannot write to file ($location$file)");
return false;
}

fclose ( $handle );
return true;

} else {
trigger_error("The file $location.$file is not writable");
return false;
}

}

function __destruct() {

// remove the tmp folder

if (file_exists ( TMP_FOLDER ) &amp;amp;&amp;amp; strlen ( TMP_FOLDER ) > 4)
$this->removetmp ();

}

/**
* Create the tmp directory to hold and process the files
*
* @return unknown
*/
function createtmp() {

if (is_writable ( TMP )) {

if (mkdir ( TMP_FOLDER ))
return true;

} else {

return false;
}

return false;

}

/**
* Delete the tmp dir
*
* @return unknown
*/
function removetmp() {

if (strlen ( TMP_FOLDER ) > 3 &amp;amp;&amp;amp; file_exists ( TMP_FOLDER )) {

if ($this->recursive_remove_directory ( TMP_FOLDER ))
return true;

}

return false;
}

/**
* Return a rendom string for the folder name
*
* @return unknown
*/
function generatefoldername() {

return md5 ( microtime () );

}

/**
* Recursivly delete directroy or empty it
*
* @param unknown_type $directory
* @param unknown_type $empty
* @return unknown
*/
function recursive_remove_directory($directory, $empty = FALSE) {
// if the path has a slash at the end we remove it here
if (substr ( $directory, - 1 ) == '/') {
$directory = substr ( $directory, 0, - 1 );
}

// if the path is not valid or is not a directory ...
if (! file_exists ( $directory ) || ! is_dir ( $directory )) {
// ... we return false and exit the function
return FALSE;

// ... if the path is not readable
} elseif (! is_readable ( $directory )) {
// ... we return false and exit the function
return FALSE;

// ... else if the path is readable
} else {

// we open the directory
$handle = opendir ( $directory );

// and scan through the items inside
while ( FALSE !== ($item = readdir ( $handle )) ) {
// if the filepointer is not the current directory
// or the parent directory
if ($item != '.' &amp;amp;&amp;amp; $item != '..') {
// we build the new path to delete
$path = $directory . '/' . $item;

// if the new path is a directory
if (is_dir ( $path )) {
// we call this function with the new path
recursive_remove_directory ( $path );

// if the new path is a file
} else {
// we remove the file
unlink ( $path );
}
}
}
// close the directory
closedir ( $handle );

// if the option to empty is not set to true
if ($empty == FALSE) {
// try to delete the now empty directory
if (! rmdir ( $directory )) {
// return false if not possible
return FALSE;
}
}
// return success
return TRUE;
}
}
}
?>

CLI Companion – die GUI in der Konsole

CLI Companion ist ein Terminal mit integrierter GUI oder sollte ich besser sagen ein GUI mit integriertem Terminal? Egal. Du kannst Shell-Kommandos (mit Beschreibung) abspeichern, so dass du diese mit der Zeit lernen kannst.


Installation:

sudo add-apt-repository ppa:clicompanion-devs/clicompanion-nightlies
sudo apt-get update
sudo apt-get install clicompanion


Beispiel:

CLICompanion
CLI Companion


Quelle:
launchpad.net/clicompanion

Droopy – Datenübertragung per HTTP

Das Python-Skript Droopy wird auf dem Zielrechner ausgeführt, so dass hier ein kleiner HTTP-Server gestartet wird, der eine einfache Seite mit Uploadformular enthält. Nun muss man nur noch dessen IP-Adresse zusammen mit der Portnummer in die Adresszeile des Browsers eingeben und kann Dateien verschicken (egal ob Windows, Mac, Linux …). Einzige Voraussetzung auf dem Zielrechner ist Python!


Download: droopy

wget http://stackp.online.fr/wp-content/uploads/droopy
mkdir uploads


Usage: droopy [options] [PORT]

Options:
  -h, --help                            show this help message and exit
  -m MESSAGE, --message=MESSAGE         set the message
  -p PICTURE, --picture=PICTURE         set the picture
  -d DIRECTORY, --directory=DIRECTORY   set the directory to upload files to
  --save-config                         save options in a configuration file
  --delete-config                       delete the configuration file and exit


Beispiel: droopy

python2 droopy -d uploads -m "Hi, schick mir doch mal ein paar Dateien... :-)" -p ~/Bilder/gemma-atkinson-108-06.jpg


droopy-Beispiel
droopy-Beispiel

C-Programm – Matrix-Addition

Mit diesen kleinen Programmen kann man Matrix-Addition durchführen, indem die Werte der Matrizen jeweils zusammengerechnet werden. In dem zweiten Programm habe ich mit Funktionen und Pointeren gearbeitet.

/*
 ============================================================================
 Name        : matrix-addition_1.c
 Author      : Voku
 Version     : 1.0
 Description : Matrix-Addition
 ============================================================================
 */

#include <stdio.h>
#define MAX_ZEILEN 10
#define MAX_SPALTEN 10

int main (void) {
	int index_zeile, zeile, index_spalte, spalte;
	double array_a[MAX_ZEILEN][MAX_SPALTEN], array_b[MAX_ZEILEN][MAX_SPALTEN], array_c[MAX_ZEILEN][MAX_SPALTEN];

	// Anzahl der Zeilen einlesen
	do {
		printf("Anzahl der Zeilen (1-%i): ",MAX_ZEILEN);
		scanf("%i",&zeile);
		if (zeile > MAX_ZEILEN ) {
			printf("\n zu viel Zeilen...\n\n");
		} else if (zeile < 1) {
			printf("\n zu wenig Zeilen...\n\n");
		}
	} while (zeile > MAX_ZEILEN || zeile < 1);
	printf("\n");
	// Anzahl der Spalten einlesen
	do {
		printf("Anzahl der Spalten (1-%i): ",MAX_SPALTEN);
		scanf("%i",&spalte);
		if (spalte > MAX_SPALTEN ) {
			printf("\n zu viel Spalten...\n\n");
		} else if (zeile < 1) {
			printf("\n zu wenig Spalten...\n\n");
		}
	} while (spalte > MAX_SPALTEN || spalte < 1);
	printf("\n");

	// Werte fuer Matrize 1 einlesen
	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
  			printf("Wert fuer Zeile %i und Spalte %i (Matrize 1) eingeben: ",index_zeile+1, index_spalte+1);
        		scanf("%lf",&array_a[index_zeile][index_spalte]);
    		}
    	}
	printf("\n");
    	// Werte fuer Matrize 2 einlesen
    	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
    		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
    			printf("Wert fuer Zeile %i und Spalte %i (Matrize 2) eingeben: ",index_zeile+1, index_spalte+1);
        		scanf("%lf",&array_b[index_zeile][index_spalte]);
    		}
    	}

	// Array A und B addieren und in Array C schreiben
	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
    		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
        		array_c[index_zeile][index_spalte]=array_a[index_zeile][index_spalte]+array_b[index_zeile][index_spalte];
    		}
	}

	// Ausgabe
	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
		printf("\n (");
    		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
        		printf(" %.2lf", array_a[index_zeile][index_spalte]);
        	}
		printf(" ) ");
	}
	printf("\n\n +\n");
	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
		printf("\n (");
    		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
			printf(" %.2lf", array_b[index_zeile][index_spalte]);
		}
		printf(" ) ");
	}
	printf("\n\n =\n");
	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
		printf("\n (");
    		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
			printf(" %.2lf", array_c[index_zeile][index_spalte]);
    		}
		printf(" ) ");
	}

	return 0;
}
/*
 ============================================================================
 Name        : matrix-addition_2.c
 Author      : Voku
 Version     : 1.0
 Description : Matrix-Addition mit Funktionen (+Pointer)
 ============================================================================
 */

#include <stdio.h>
#define MAX_ZEILEN 10
#define MAX_SPALTEN 10

void matrix_addition (double *array_a, double *array_b, double *array_c, int zeile, int spalte) {
	int index_zeile, index_spalte;
	// printf("*array_a %lf\n*array_b %lf\n*array_c %lf\n", *array_a, *array_b, *array_c); // TEST-Ausgabe
	for(index_zeile=0; index_zeile < zeile; index_zeile++) {
		for(index_spalte=0; index_spalte < spalte; index_spalte++) {
			*(array_c + (index_zeile * spalte) + index_spalte) = *(array_a + (index_zeile * spalte) + index_spalte) + *(array_b + (index_zeile * spalte) + index_spalte);
		}
		printf("\n");
	}
}

void matrix_ausgabe (double *matrix, int zeile, int spalte) {
	int index_zeile, index_spalte;
	// printf("*matrix %lf", *matrix); // TEST-Ausgabe
	printf("\n\n");
	for(index_zeile=0; index_zeile < zeile; index_zeile++) {
		for(index_spalte=0; index_spalte < spalte; index_spalte++) {
			printf(" %.2lf", *(matrix + (index_zeile * spalte) + index_spalte));
		}
		printf("\n");
	}
}

int main (void) {
	int index_zeile, zeile, index_spalte, spalte;

	// Anzahl der Zeilen einlesen
	do {
		printf("Anzahl der Zeilen (1-%i): ",MAX_ZEILEN);
		scanf("%i",&zeile);
		if (zeile > MAX_ZEILEN ) {
			printf("\n zu viel Zeilen...\n\n");
		} else if (zeile < 1) {
			printf("\n zu wenig Zeilen...\n\n");
		}
	} while (zeile > MAX_ZEILEN || zeile < 1);
	printf("\n");
	// Anzahl der Spalten einlesen
	do {
		printf("Anzahl der Spalten (1-%i): ",MAX_SPALTEN);
		scanf("%i",&spalte);
		if (spalte > MAX_SPALTEN ) {
			printf("\n zu viel Spalten...\n\n");
		} else if (zeile < 1) {
			printf("\n zu wenig Spalten...\n\n");
		}
	} while (spalte > MAX_SPALTEN || spalte < 1);
	printf("\n");

	double array_a[zeile][spalte], array_b[zeile][spalte], array_c[zeile][spalte];

	// Werte fuer Matrize 1 einlesen
	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
    			printf("Wert fuer Zeile %i und Spalte %i (Matrize 1) eingeben: ",index_zeile+1, index_spalte+1);
        		scanf("%lf",&array_a[index_zeile][index_spalte]);
    		}
	}
    	printf("\n");
    	// Werte fuer Matrize 2 einlesen
    	for (index_zeile=0; index_zeile < zeile; index_zeile++) {
    		for ( index_spalte=0; index_spalte < spalte; index_spalte++) {
    			printf("Wert fuer Zeile %i und Spalte %i (Matrize 2) eingeben: ",index_zeile+1, index_spalte+1);
        		scanf("%lf",&array_b[index_zeile][index_spalte]);
    		}
	}

	// printf("zeile + spalta: %i, %i", zeile, spalte); // TEST-Ausgabe

	// Array A und B addieren und in Array C schreiben
	matrix_addition(&array_a[0][0], &array_b[0][0], &array_c[0][0], zeile, spalte);

	// Ausgabe
	matrix_ausgabe(&array_a[0][0], zeile, spalte);
	printf("\n +");
	matrix_ausgabe(&array_b[0][0], zeile, spalte);
	printf("\n =");
	matrix_ausgabe(&array_c[0][0], zeile, spalte);

	return 0;
}

C-Programm – Skalarprodukt

Hier ein kleines Programm, welches das Skalarprodukt von zwei Vektoren berechnet…

/*
 ============================================================================
 Name        : Skalarprodukt.c
 Author      : Voku
 Version     : 1.0
 Description : Skalarprodukt zweier Vektoren
 ============================================================================
 */

#include <stdio.h>
#define MAX 10

int main(void) {
    double vektor1[MAX],vektor2[MAX];  	// Arrays fuer Vektoren (1 und 2)
    int anzahl;      			// Anzahl der Vektoren
    int index;       			// Wert im Array
    double produkt;     		// einzelnes Produkt
    double ergebnis=0.0;  		// Gesamtwert aller Produkte

    printf("Skalarprodukt (innere Produkt) zweier beliebiger Vektoren berechnen:\n\n");

    do {
    	printf("Anzahl der Elemente pro Vektordimension (1-%i):" ,MAX);
        scanf("%i",&anzahl);
        if (anzahl > MAX ) {
        	printf("\n zu viel Dimension...\n\n");
        } else if (anzahl < 1) {
        	printf("\n zu wenig Dimension...\n\n");
        }
    } while (anzahl > MAX || anzahl < 1);

    // Vektorwerte fuer Vektor 1 einlesen
    for (index=0; index < anzahl; index++) {
    	printf("Wert %i fuer Vektor 1 eingeben: ",index+1);
    	scanf("%lf",&vektor1[index]);
    }
    // Vektorwerte fuer Vektor 2 einlesen
    for (index=0; index < anzahl; index++) {
    	printf("Wert %i fuer Vektor 2 eingeben: ",index+1);
    	scanf("%lf",&vektor2[index]);
    }

    // Berechnung des Skalarproduktes
    for(index=0; index < anzahl; index++) {
    	produkt = vektor1[index] * vektor2[index];
    	ergebnis += produkt;
    }

    // Ausgabe
    printf("Skalarprodukt: %.4lf\n",ergebnis);

    return 0;
}

Das Soziale-Netz und die digitale Zukunft

Die digitale Zukunft und wie man diese schon heute nutzen kann. Ich will in diesem Blog-Post einen Überblick über das Web 2.0 geben und beschreiben wie man sich heute im Digitalen-Netz bewegt und wie man Daten / Informationen austauscht. Was Soziale-Netze im Internet sind, sollte den meisten bekannt sein (Facebook, StudiXYZ, Twitter und Co.) wer mit dem Begriff noch nichts anfangen kann, dem empfehle ich den Film “The Social Network”.




Android + Web 2.0
Android + Web 2.0


Allgemeine Infos: Digitale-Welt

Wenn man den Zahlen einer neuen Studie glauben schenken darf, kann man die deutsche Bevölkerung in folgende Gruppen einteilen.:

  • 28 Prozent – Digitale Außenseiter (Digitale Außenseiter sind meist älter und weiblich)
  • 28 Prozent – Gelegenheitsnutzer (Mehrheit noch nicht im digitalen Alltag angekommen)
  • 07 Prozent – Berufsnutzer
  • 20 Prozent – Trendnutzer (Trendnutzer auf dem digitalen Vormarsch)
  • 17 Prozent – Digitale Profis digitale Avantgarde

Link: http://t3n.de/news/digitale-aussenseiter-deutschland-288027/



Weitere Statistiken zeigen, dass die Internet-User immer regelmäßiger Online sind. Dieser Trend dürfte in den nächsten Jahren noch drastisch steigen, da Smartphones und Tablet-PCs momentan meist von Trendnutzern genutzt werden, in Zukunft jedoch in allen Gruppen ankommen werden…


Internetnutzung im Tagesverlauf 300x216 Das Soziale Netz und die digitale Zukunft allgemein



Internetnutzung im Tagesverlauf


… auch wenn sich signifikante Unterschiede in der Altersstruktur der Netze zeigen – eine wirklich scharfe Abgrenzung gibt es nicht.


bild2.jpg 3efb251d3ebc35a9 300x298 Das Soziale Netz und die digitale Zukunft allgemein



Altersstruktur der Netze


Laut dem Bundesverband Informationswirtschaft, Telekommunikation und neue Medien e.V. (Bitkom) (PDF) waren schon im März 2010, 30 Millionen Deutsche ab 14 Jahren Mitglied in mindestens einem Sozialem-Netz (Online-Community), die Gründe einer Community beizutreten können sich natürlich stark unterscheiden.


Gründer für die Nutzung von Sozialen Netzwerken 300x218 Das Soziale Netz und die digitale Zukunft allgemein



Gründer für die Nutzung von Sozialen-Netzwerken


Fazit: ”Soziale Netze können vieles sein – Nachrichtenmedium, Kontaktbörse, Visitenkarte für Freiberufler, Spielplatz, Teamwork-Plattform und Suchdienst für verlorene Freunde. Mitglieder nutzen ihre Netzwerke, um zu klatschen, um geschäftliche Kontakte zu pflegen oder um Tipps zum Hobby auszutauschen. Dank Facebook und Co. bleiben sie mit dem nach Übersee ausgewanderten Kumpel in Kontakt und verpassen mit ihrer Smartphone-App auch im Urlaub nicht, was im Freundeskreis zu Hause passiert.

Wie im richtigen Leben gilt: Alles kann, nichts muss. Wer aber erst einmal einen persönlichen Strom aus geschäftlichen Nachrichten, Surf-Empfehlungen und privatem Klatsch eingerichtet hat, der kommt schwer davon wieder los. Manchmal hat es etwas von einer Mischung aus Tagesschau und „Gute Zeiten, schlechte Zeiten“ – wobei alle Inhalte aus dem persönlichen sozialen Netz stammen.” – heise.de


Warum ich so genau auch die Sozialen-Netze eingehe dürfte klar werden, wenn man sich anschaut wie viele Nutzer allein Facebook hat.

Facebook-User – Weltweit: ~574.460.480 (http://www.facebook.com/press/info.php?statistics)

Einwohner – Deutschland: ~82.167.000 (http://de.wikipedia.org/wiki/Liste_der_Staaten_der_Erde#Liste)


Spätesten jetzt dürften diese Dienste auch für Unternehmen interessant werden, denn wo gibt es sonst so viele potenzielle Kunden? Genauer will ich gar nicht auf den allgemeinen Teil und den Statistiken eingehen, dazu haben sich schon viele Leute ausgelassen, welche sich besser in der Digitalen-Welt auskennen als ich! Daher komme ich jetzt zum praktischen Einstig in die Digitale-Welt, auf das es in Zukunft weniger “Digitale Außenseiter” gibt.


Praktischer Einstig: Digitale-Welt

Ich habe hier eine Auflistung von bekannten Diensten im Internet zusammengeschrieben, welche man als User im Web 2.0 kennen sollte. Zudem sollte man sich zumindest kurz den Netzjargon anschauen, da man ansonsten ggf. in Chats, Foren und Sozialen-Netzen nicht weiß was jemand von einem will. icon wink Das Soziale Netz und die digitale Zukunft allgemein Daher muss du dich nicht wundern, wenn du bei einer Anfrage in einen Linux-Forum, als Antwort: “RTFM” bekommst („Read the fucking manual“ = „Lies das verdammte Handbuch“)



1.) Twitter

twitter Das Soziale Netz und die digitale Zukunft allgemein



twitter – Logo

“Twitter ist eine Anwendung zum Mikroblogging. Es wird auch als soziales Netzwerk oder ein meist öffentlich einsehbares Tagebuch im Internet definiert. Unternehmen und Pressemedien nutzen Twitter als Plattform zur Verbreitung von Nachrichten. Twitter wurde im März 2006 der Öffentlichkeit vorgestellt und gewann schnell international an Beliebtheit.” – Wiki



Leider kann man Twitter nicht wirklich so einfach definieren, da man einen “Twitter-Moment” miterleben muss, um zu verstehen worum es wirklich geht. Mein “Twitter-Moment” war z.B. als Strato ein größerer Server Ausfall hatte und auch mein V-Server betroffen war, ich hatte anfangs keine Idee was los war und warum ich meinen Server nicht erreichen konnte, dann habe ich kurzerhand bei Twitter nach dem Stichwort “Strato” gesucht und konnte mich mit vielen anderen Betroffenen live unterhalten und Infos austauschen!


Um Twitter einigermaßen Sinnvoll zu nutzen ist es meiner Meinung nach wichtig Listen zu erstellen, in welchen man andere Twitter-User (Nachrichten) nach Kategorien sortieren kann. Nachdem man einigen Usern folgt und auch selber einige Kurznachrichten (je 140 Zeichen) veröffentlicht hat. Kann man weitere User mit ähnlichen Interessen ausfindig machen:

twitter.com/who_to_follow

followfinder.googlelabs.com


Wichtig sind außerdem noch HashTags, dies sind Schlagwörter, welche zudem als Link (Suchwort) fungieren z.B. #NewTwitter. Desweiteren sollte man @replies verwenden, um einem anderen User zu Antworten, auch wenn dies auf Twitter meist nicht der Fall ist.


Es gibt eine Menge anderer Webseiten, welche Teilweise mit einer Twitter-Anbindung (API) arbeiten, um zusätzliche Funktionen anzubieten.

z.B.:

twitpic.com – Bilder hochladen, kommentieren und bei Twitter veröffentlichen

hootsuite.com – Twitter & Facebook Nachrichten besser organisieren

(hier noch eine Liste mit einigen Twitter-Anbindungen: twitter.pbworks.com)

Natürlich sollte man aufpassen, welchen Webseiten / Software man Zugriff auf seinen Account gewährt!


mein Twitter-Account: suckup_de



2.) Facebook

Facebook Das Soziale Netz und die digitale Zukunft allgemein



Facebook – Logo

“Facebook ist eine Website zur Bildung und Unterhaltung sozialer Netzwerke, die der Firma Facebook Inc. mit Sitz im kalifornischen Palo Alto gehört. Größte Anteilseigner sind Mark Zuckerberg (24 Prozent), Chris R. Hughes (12 Prozent), Peter Thiel (7 Prozent), Digital Sky Technologies (6,9 Prozent), Dustin Moskovitz (6 Prozent), Eduardo Saverin (5 Prozent) und Microsoft (1,6 Prozent).” – Wiki


Facebook hat zumindest in Deutschland Konkurrenz durch StudiVZ, MeinVZ, SchuelerVZ etc., wobei facebook meiner Meinung die bessere Qualität (Chat, HipHop-PHP, NoSQL, API, Places, Apps, Fan-Seiten…) bietet, wobei du bei StudiXYZ wahrscheinlich mehr von deinen Freunden und die lustigeren Gruppen-Namen finden dürftest. icon wink Das Soziale Netz und die digitale Zukunft allgemein


Wobei es bei Facekook, StudiXYZ und Co. geht liegt klar auf der Hand. Die einen wollten kontakt mit Freunden, Bekannten, Kommotionen, Mitschüler etc. pflegen andere nutzen diese Dienste als “Kontaktbörse” (siehe “The Social Network“) oder wie ich, um Informationen mit anderen auszutauschen, welche ähnliche Interessen (~> PC, Linux, Internet, Software) haben. icon smile Das Soziale Netz und die digitale Zukunft allgemein Es gibt natürlich auch viel Kritik an diesen Sozialen-Netzen. (z.B.: Datensammler) Du verlierst z.B. alle Rechte an deine Bilder, wenn du dieser bei facebook veröffentlichst, doch auch an dieser Stelle muss ich auf andere Leute mit mehr Ahnung von der Thematik verweisen, denn ich habe (leider) die AGBs nicht gelesen. Mit deinem Facebook-Account kannst du dich nun an vielen Webseiten direkt anmelden (z.B.: www.qype.com/user_login) oder andere Dienste mit deinem Facebook-Account verknüpfen. z.B.: Twitter-Verbindung herstellen apps.facebook.com/twitter & www.facebook.com/twitter oder man kann z.B. auch seine PS3 (Playstation-Network-Account) mit Facebook verbinden, so dass man seinen Freunden automatisch mitteilen, kann wenn man z.B. ein Spiel gewonnen hat. icon smile Das Soziale Netz und die digitale Zukunft allgemein


mein Facebook-Account: Lars-Moelleken



3.) status.net & identi.ca

Identi.ca logo Das Soziale Netz und die digitale Zukunft allgemein



Identi.ca – Lo

“Identi.ca ist ein Mikro-Blogging-Dienst und ein soziales Netzwerk, ähnlich wie Twitter. Identi.ca unterstützt den freien OpenMicroBlogging-Standard und ist die Referenzimplementierung und bedeutendste Plattform für StatusNet.” – Wiki


Identi.ca versucht die Nachrichten durch das anlegen von Gruppen zu organisieren, wobei du hier mehr Linux-User und Blogger findest (aber wahrscheinlich nicht so viele deiner Schulfreunde). Weiter unten in diesem Blog-Post gehe ich noch darauf ein, wie man identi.ca, twiiter und facebook miteinander verbindet, so dass deine Nachrichten automatisch auf den verschieden Webseiten verteilt werden. identi.ca ist nur eine (die größte) von vielen Seiten, welche auf der freien Software “status.net” und somit dem offenes Protokoll “OStatus” aufbaut. Im Grunde kann sich jeder die PHP-Software auf seinem Server installieren und eine eigene Community gründen und diese dann z.B. Twitter und anderen status.net-Seiten verbinden.



mein identi.ca-Account: voku



4.) Flickr

Flickr Das Soziale Netz und die digitale Zukunft allgemein



Flickr – Log

Flickr (von englisch to flick through something, „etwas durchblättern“, also etwa „Vorrichtung zum Durchblättern“ bzw. „Durchblätterer“ oder von englisch to flicker, „flimmern“) ist ein kommerzielles Web-Dienstleistungsportal mit Community-Elementen, das es Benutzern erlaubt, digitale und digitalisierte Bilder sowie Videos mit Kommentaren und Notizen auf die Website zu laden und so anderen Nutzern zur Verfügung zu stellen. Neben dem herkömmlichen Hochladen über die Website können die Bilder auch per E-Mail oder vom Fotohandy aus übertragen und später von anderen Webauftritten aus verlinkt werden.” – Wiki


Ich nutzte Flickr nur um Bilder hochzuladen, welche längere Zeit zur Verfügung stehen sollen, um diese dann z.B. in Blogs, Foren, E-Mails etc. zu verlinken. Man kann den Zugriff auf bestimmte Bilder auch auf bestimmte Gruppen oder User einschränken und natürlich gibt es eine Anbindung an Twitter und Facebook, so dass alle direkt erfahren, wenn du ein neues Bild hochgeladen hast. icon smile Das Soziale Netz und die digitale Zukunft allgemein Wenn du auf “Facebook”, “Twitter” und Co. direkt veröffentlichen möchtest, wenn du ein neues Foto hochgeladen hast, kannst du dies hier tun: www.flickr.com/account?tab=extend


mein flickr-Account: 41342799@N05



5.) last.fm

Last.fm  Das Soziale Netz und die digitale Zukunft allgemein



Last.fm – Logo

“Last.fm ist ein Internetradio auf Basis von sozialer Software, das entwickelt wurde, um Nutzern aufgrund ihrer Hörgewohnheiten neue Musik, Menschen mit ähnlichem Musikgeschmack und Konzerte in ihrer Umgebung empfehlen zu können. Es ist eine ehemalige Schwesterseite von Audioscrobbler, mit dem es sich früher eine Musikdatenbank teilte. Plattenfirmen und Musiker werden ermuntert, Last.fm Lizenzen zum Abspielen ihrer Musik zu erteilen. Last.fm hat derzeit ein Verzeichnis von über 80 Millionen einzelner Stücke und davon sieben Millionen für sein Internetradio zum Streaming sowie 150.000 kostenlose MP3-Downloads vorrätig.

[…]

Hört ein Nutzer von Last.fm einen Musiktitel, so wird dessen Bezeichnung (Titelzeile und Interpret) an Last.fm übertragen und dort im Nutzerprofil gespeichert und anderweitig statistisch ausgewertet. Diesen Übertragungsvorgang bezeichnet Last.fm als „scrobbeln“ (to scrobble).

Last.fm-Streams können im MP3-Format mit 128 kbit/s bei einer Abtastrate von 44,1 kHz abgerufen werden.” – Wiki


Nachdem man auf Last.fm einige Musik-Titel gehört hat bzw. auf anderem Wege einige Titel gescrobbelt hat, (build.last.fm/category/For+your+Desktop – für Linux empfehle ich “Clementine“ als Musik-Player) kann man Leute finden, welche einen ähnlichen Musikgeschmack haben oder auch ähnliche Künstler. Ein weitere Dienst, welche ein ähnliches


Als alternative will ich hier noch kurt www.simfy.de ansprechen, welcher mit Facebook-Anbindung, Last.fm-Anbindung (scrobble) daherkommt.

Nun kannst du für 7 Tage jeden Titel und alle Applikationen nutzen. Nach diesen 7 Tagen kostenloser Premium Mitgliedschaft kannst du auf der Webseite immer noch über 6 Millionen Songs direkt hören. Auch deine Freunde, Playlists und Charts werden natürlich nicht gelöscht.
 
Nicht mehr benutzen kannst du die mobilen Applikationen für Smartphones, iPod touch sowie die Desktop App für PC und Mac. Deswegen raten wir dir simfy jetzt auf Herz und Nieren zu testen. Du trägst kein Risiko. Diese kostenlose Test-Mitgliedschaft endet automatisch.
 
Eine dauerhafte Premium Mitgliedschaft, kannst du hier für nur 9,99 €<em>/Monat unter http://www.simfy.de/premium/</em> freischalten lassen.
simfy – überall einfach Musik hören!


mein last.fm-Account: voku1987


6.) Google (Buzz, Reader, hotpot, friendconnect, mail, latitude, docs)

Google Account-Übersicht: www.google.com/accounts/ManageAccount?hl=de (PS: hier kannst du dich auch direkt Regieren, falls du noch kein Google-Account hast)


6.1) Google Buzz

“Google Buzz ist eine Website der Google Inc. zur Unterhaltung von sozialen Netzwerken im Internet. Sie ist eine Erweiterung des E-Mail-Dienstes Gmail. Die Benutzer können Nachrichten, Bilder, Videos, Statusnachrichten und Kommentare austauschen.” – Wiki


mein Google-Buzz-Account: voku1987


6.2) Google Reader

“Google Reader ist ein webbasierter Feedreader. Der Nutzer hat die Möglichkeit, aus favorisierten Nachrichten verschiedener Quellen einen eigenen Feed für andere Leser zu erzeugen. Bis September 2007 war der Google Reader nur in Englisch verfügbar und befand sich im Testbetrieb in Google Labs.” – Wiki


Mit Google Reader kann man als nur RSS-Feed lesen und verwalten!!! Du kannst anderen Nutzern folgen, so dass du Ihre Empfehlungen lesen kannst, nachdem du einige RSS-Feed abonniert hast, schlägt dir Google Reader weitere RSS-Feed (Webseiten, Blogs…) vor, welche dich ggf. auch interessieren könnten. Zudem gibt


mein Google-Reader-Account: voku1987


6.3) Google Hotpot

Google Hotpot dient als Bewertung von Hotels, Restaurants, Öffentlichen Plätzen etc.. Es gibt natürlich bereits andere Dienste, welche einen ähnlichen Dienst anbieten und da bisher sind noch nicht viele Bewertungen bei Hotpot abgegeben wurden, kann ich momentan z.B. als alternative “www.qype.com/de” (mit Facebook-/ Google-/ Yahoo- … Anbindung) empfehlen.


6.4) Google Friend Connect

Google Friend Connect kann genutzt werden, um ähnlich wie auf Facebook-Seiten, Communities zu gründen. und zu verwalten. Hier noch ein Beispiel, wie man diese Fan-Seiten in seiner Webseite integrieren kann (in der rechte Widget-Leiste) -> suckup.de/about


6.5.) Google Mail

“Gmail (in Deutschland: Google Mail) ist ein kostenloser E-Mail-Dienst des Suchmaschinenbetreibers Google Inc.” – Wiki


Wer bisher seine E-Mail Adresse auf gmx.de, web.de etc. hatte sollte sich als alternative einmal “Google Mail” (Sie nutzen derzeit 75 MB (1 %) von Ihren 7526 MB.) ansehen.


chat callout Das Soziale Netz und die digitale Zukunft allgemein



Google Mail + Chat



6.6) Google Latitude

Zeigt auf der Google-Maps Karte deine bzw. die Position deiner Freunde an. Aus Datenschutztechnischen-Gründen kann man diese Funktion z.B. in dem Android Google-Maps App natürlich ein- und ausschalten. icon wink Das Soziale Netz und die digitale Zukunft allgemein


6.7) Google Docs / Google Text & Tabellen

“Google Text & Tabellen (engl. Google Docs) ist eine von Google Inc. angebotene Webanwendung zur Textverarbeitung, Tabellenkalkulation, Präsentation, Erstellung von Formularen und Erstellen von Zeichnungen. Sie ermöglicht Nutzern, Textdokumente, Tabellen und Präsentationen gemeinsam mit anderen Nutzern in Echtzeit online zu erstellen und zu bearbeiten.” – Wiki


z.B.: https://docs.google.com/document/d/1sNeEIBgIHj-d7SOlpYY0Agi1NAUxfOFMD13qD7tIftg/


— weitere Google Dienst —


Google bietet natürlich noch viele weitere Dienst an, welche ich hier noch nicht erwähnt habe z.B.:

Google Webmster: eigene Webseite analysieren

Google Earth + Google Street View: Satelliten-/Luftbilder/Fotos unterschiedlicher Auflösung mit Geodaten, überlagert + einem digitalen Höhenmodell

Google Feedburner: RSS-Feed neu verpacken z.B. http://feeds.feedburner.com/suckup

Google Kalender: ein sehr guter kostenloser Online-Kalender

…und noch vieles mehr…



7.) gravatar.com

“Bei einem Gravatar handelt es sich um einen global verfügbaren Avatar (Globally Recognized Avatar), welcher mit der E-Mail-Adresse des Benutzers verknüpft ist. Verschiedene Seiten bieten den Nutzern an, Avatare auf ihre Server zu laden und mit ihren E-Mail-Adressen zu verknüpfen. So kann ein Benutzer des Internets in jedem Blog oder anderen System seinen globalen Avatar hinterlassen, ohne sich extra bei jedem Blog zu registrieren und dann ein Bild hochzuladen. Für viele Blogsysteme oder andere Internetangebote gibt es Plug-Ins, die das Einbinden solcher kleiner Bilder, die normalerweise eine Größe von 80×80 Pixeln haben, erleichtern.

Es besteht aber auch Kritik an Gravataren. Durch die Verwendung bei unterschiedlichen Internetaktivitäten ist dem Betreiber des Dienstes die Erstellung eines umfassenden Benutzerprofiles des Benutzers möglich, das der Anbieter beispielsweise für Werbezwecke verwenden kann. Auch Ermittlungsbehörden können dadurch auf einfache Art und Weise umfassenden Einblick in die Aktivitäten des Benutzers gewinnen.” – Wiki


Bei aller Kritik finde ich den Dienst trotzdem ziemlich hilfreich, da man über seine E-Mail Adresse, welche man bei den Webseiten angeben muss, um einen Kommentar zu schreiben, direkt ein Profilbild übergibt, zudem kann man dies relativ einfach in jeder Webseite einbauen kann. -> de.gravatar.com/site/implement




8.) disqus.com

Disqus, wie der Name schon verrät geht es hier um Diskussionen (Kommentare) auf Webseiten, Blogs etc.. Ich setze den Dienst auch in diesem Blog ein, so dass ich bisher so gut wie keinen Spam-Kommentar hatte, jeder einen Kommentar ohne vorherige Registrierung abgeben kann und wer will kann anstatt seine E-Mail etc. anzugeben sich per Facebook, Twitter, Yahoo … authentifizieren. Zudem gibt es eine “Akismet“ Integration und eine Menge weitere Features.




9.) foursquare.com & gowalla.com

Dies sind jeweils zwei Dienste welche auch konkurieren, da beide eine Mischung aus “GPS-Ortung” und dem bereits erwähnten qype.com/de (Bewertung/Empfehlung von Orten und Läden) ist. Dies macht natürlich erst Sinn, wenn man z.B. ein Handy mit Internet-Zugang + GPS hat, so dass man Empfehlungen andere User in seiner Nähe sehen kann oder sich anzeigen lassen kann so seine Freunde gerade sind. (ähnlich dem ebenfalls bereits erwähnten “Google Latitude”) Aber auch bei aller Kritik an solchen Dienst, finde ich es ziemlich hilfreich und informativ, wenn man sich z.B. nicht in Krefeld auskennt und dort einen Friseur sucht:

http://gowalla.com/spots#q=Friseur&l=Krefeld

http://foursquare.com/search?q=friseur&near=Krefeld,+Germany

http://www.qype.com/dea14/search/Friseur?suppress_category_redirect=true



10.) youtube.com


YouTube Das Soziale Netz und die digitale Zukunft allgemein



YouTube – Logo

“Auf der Internetpräsenz befinden sich Film- und Fernsehausschnitte, Musikvideos sowie selbstgedrehte Filme. Sogenannte „Video-Feeds“ können in Blogs gepostet oder auch einfach auf Webseiten über eineProgrammierschnittstelle (API) eingebunden werden. […] Am 9. Oktober 2006 wurde YouTube vom Suchmaschinenbetreiber Google für umgerechnet 1,31 Milliarden Euro (in Aktien) gekauft. Die Marke YouTube soll bestehen bleiben; der Betrieb mit 67 Mitarbeitern – darunter die Gründer Chad Hurley und Steve Chen – wird die Geschäfte vorerst unabhängig weiterführen.” – Wiki


YouTube ist über die Jahre gewachsen und hat einige wirklich sehr sehr gute Video zu bieten z.B. “Volker+Pispers“, “poetry+slam” (Andy Strauß muss man gesehen haben ^^) oder wer etwas Mathe lernen will “WieFunktioniertMathe“ … Wenn du YouTube mit “Google Reader”, “Twitter”, “Buzz” und “Facebook” verbinden möchtest, so dass deine Freunde (Un-/Bekannten) direkt sehen können welches Video dir gefällt, kannst du deine Account hier mir einander Verbinden: www.youtube.com/account?feature=mhum#sharing/activity


An dieser Stelle möchte ich auch noch vimeo.com und myvideo.de erwähnen! icon smile Das Soziale Netz und die digitale Zukunft allgemein


mein YouTube-Account: Voku1987



11.) meebo.com

“meebo ist ein auf libpurple basierender Ajax-Instant Messaging-Client und führt AOL Instant Messenger-, ICQ-, Yahoo! Messenger-, Windows Live Messenger-, XMPP-, MySpaceIM und Google Talk-Konten auf einer Seite im Messengerstil zusammen.” – Wiki


ICQ sollte bekannt sein, (alternative XMPP/Jabber) doch nicht jeder kennt meebo.de, hier kannst du auf einer Webseite z.B. über dein ICQ-Account mit deinen Freunden chatten… an dieser Stelle möchte ich auch noch “www.skype.com” erwähnen, auch wenn das Programm eigentlich den Punkt 12.) verdient hätte. icon smile Das Soziale Netz und die digitale Zukunft allgemein Es handelt sich hier um eine unfreie Software zur Internet-Telefonie. Mit Skype ist es möglich, mit den Kontakten zu chatten, ihnen Dateien zu senden, zu telefonieren und auch Videotelefonate zu führen. Alle Daten werden bei Skype verschlüsselt übertragen. Weitere Dienste (z.B. Anrufe in oder aus dem Festnetz oder das Verschicken von SMS) sind kostenpflichtig. Die Grunddienste sind jedoch kostenlos und bedürfen lediglich einer Registrierung. (Quelle: wiki.ubuntuusers.de/skype)


meebo 300x161 Das Soziale Netz und die digitale Zukunft allgemein



meebo



12.) mister-wong.de & digg.com & t3n.de/socialnews/ & webnews.de

Verweise auf Neuigkeiten (Blog-Einträge, Pressemitteilungen oder Nachrichten). Es gibt mittlerweile Unmengen an Nachrichten im Internet, einige sind weniger andere von größerer Bedeutung. Diesen Blog-Post den du gerade list, werde ich auch auf einiger der genannten Webseiten veröffentlichen und andere User können diesen dann Bewerten/Kommentieren und ggf. weiterempfehlen, so dass die User entscheiden was wichtig ist. Nachdem man sich ein wenig mit dem Thema auseinandergesetzt hat, stellt man jedoch schnell fest, dass kleine Webseiten, wie diese hier eine ist nicht viel Zuspruch erhalten. Da ich z.B. meistens nicht schreibt, was die Mehrheit lesen will: Linux. Ubuntu, C-Programmierung… gibt es für solche Webseiten andere Methoden, Informationen zu verbreiten, aber dazu kommen ich im nächsten Punkt (13.).



13.) RSS-Feed – Planet (z.B.: planet.ubuntuusers.de & planet.debianforum.de & planetsuse.org)

Im Grunde kann jeder mit der folgenden Software einen Planet auf seiner Webseite eröffnen. -> http://www.planetplanet.org/ <- Es geht darum RSS-Feeds zu einem bestimmten Thema zusammen zu fassen und somit eine Zusammenstellung aus mehreren Blogs etc. zu einem Themengebiet zu erhalten. Somit landen meine “Ubuntu-Themen” automatisch auf dem “ubuntuusers.de – planet” und Themen zu Debian werden auf dem “debianforum.de – planet” veröffentlicht.



14.) Wikipedia und Co.

Die meisten kennen die Webseite Wikipedia.org, doch wissen nicht, dass man sich die Software worauf diese Webseite basiert auch einfach installieren kann, um z.B. ein privates-Wiki oder ein Firmen-Wiki zu erstellen. Eine Webseite, wo Leute zusammen an einem Dokument arbeiten können und man die Veränderungen an dem Dokument stets nachvollziehen und ggf. Rückgängig machen kann. Wiki-Software-Beispiele:

www.mediawiki.org

www.dokuwiki.org


Wer sich über ein spezielles Thema informieren will, sollte sich einmal auf den verschiedenen Wiki-Seiten umsehen, welche es bereits gibt, hier ein paar Beispiele:

ArchLinux – Wiki

ubuntuusers.de – wiki



15.) slideshare.net

Auf der Seite www.slideshare.net kann man seine Präsentationen und Dokumente mit anderen teilen, aufgebaut ist das System ähnlich wie YouTube mit dem Unterschied, dass man direkt Präsentationen (.ppt .pdf) hochladen kann.


An dieser Stelle möchte ich auch noch prezi.com erwähnen, da man hier sehr ansprechende Präsentationen erstellen kann. Hier direkt eine sehr gute Präsentation zu diesem Thema.




Sozial-Browser – RockMelt

RockMelt ist ein (Facebook-)Browser, welcher auf die Nutzung sozialer Netze (Facebook/Twitter) ausgerichtete ist. Die Software basiert auf Chromium, der Open-Source-Version des Google-Browsers. Die Beta ist momentan leider nur für Windows und Mac OS X verfügbar. Interessierte Nutzer können sich vor einem Download bei RockMelt als Betatester anmelden oder mich um eine Einladung bitten, noch habe ich zwei. ;-)

Beim Start von RockMelt kann man sich bei Facebook einloggt und erhält am linken Bildrand eine (anpassbare) Buddyleiste. Hier kannst du Links ,Bilder oder Videos per Drag and Drop in einen Facebook -Chat/-Message/-Wall deiner Freunde ziehen. Außerdem wird direkt angezeigt wer, momentan online ist.

Die zweite Leiste (am rechten Bildrand) enthält deine gewählten Websites und Dienste. Du kannst z.B. per RSS-Feed neue Blogeinträge erhalten oder Statusupdates von Twitter-Nutzern sehen. Mittels einer Schaltfläche (neben der Adressleiste) kannst du Inhalte mit einem Klick auf Facebook oder Twitter veröffentlichen. Zudem kann man Twitter-Nachrichten auch direkt im Browser als Pop-Up anzeigen lassen und mit dem Suchfeld kann man auch nach Freunden suchen.


Auch wenn ich bisher einiges an negativer Resonanz über RockMelt gelesen habe, bin ich bisher positiv überrascht. Natürlich kann man auch “Google Reader” für RSS-Feeds und “Tweetdeck” für die Kommunikation mit Twitter oder HootSuite, um sowohl Facebook als auch Twitter einfacher zu nutzen.


Medienkompetenz? – Nur mit freier Software

In diesem Beitrag möchte ich kurz beschreiben, wie sich Schulen & Lehrer ändern müssen, um Schülern den korrekten Umgang mit dem PC und somit Medienkompetenz zu vermitteln. Die Überschrift habe ich von einem Vortrag auf der “OpenRheinRuhr-2010” (geklaut) übernommen, wo wir auch gleich beim Thema Open-Source und somit freier und kostenloser Software wären.


An den meisten Schulen ist es nach wie vor so, (Erfahrungen der letzten Jahr) dass komplett auf Microsoft gesetzt wird. Dies fängt beim Betriebssystem an geht über Programmierung, Datenbanken, Tabellenkalkulation, Präsentationen und selbst Textverarbeitung. Die Befürworter werden an dieser Stelle bestimmt das Argument einbringen, dass dies auch von der Wirtschaft (Firmen) gefordert wird, ABER wir sollten die Schüler/innen nicht an einer bestimmten Version eines bestimmten Programms ausbilden! Was bringt es mir das ich vor Jahren in der Schule gelernt habe wie ich mit “Word 2003” einen Serienbrief erstelle? Und warum haben wir “Visual Basic” als Thema gehabt und nicht “C”? Mir persönlich hat dieses Wissen beruflich absolut nichts gebracht, da ich in meiner Ausbildung (Fachinformatiker – Systemintegration) mehr mit Linux, Netzwerken und freier Software zu tun hatte. Aber selbst jemand der mit “Word 2003” einen Serienbrief anfertigen kann, weil er weiß wo der richtige Button dafür ist, findet ggf. den neuen optimierten Button in “Word 2010” nicht mehr, daher sollten man Grundlagen in Textverarbeitung etc. vermitteln und das am besten an freien Standards (lizenzfrei) , welche sich etabliert haben, ggf. kann man dazu noch speziell auf bestimmte Produkte eingehen, somit würde man Schüler langfristig ausbilden und würde Schüler nicht dazu drängen sich illegal Software zu besorgen und zu installieren. Wo wir auch gleich beim nächsten Thema wären.


Ich kann mich noch genau daran erinnern als das Thema “Visual Basic” in der Schule aufkam, wurden als erstes illegale die benötigten Programme unter uns Schülern ausgetaucht. Es gibt zwar Programme von Microsoft für Schüler 1.) DreamSpark 2.) MSDNAA jedoch gibt es hier z.B. kein “Microsoft Office” und wie bereits zuvor angedeutet, macht es ggf. nicht so viel Sinn, eine spezielle Software als Thema im Unterricht zu behandeln. Gut finde ich die Idee von einem Lernstick für Schüler & Lehrer (Software-Überblick), gerade wenn man sich vor dem Schulungs-, Einführungs- und Migrationsaufwand fürchten, sollte man sich mit dem Thema beschäftigen. Zudem sollte man bereits in der Schule alternativen zu Windows vermittel, so dass dieses Wissen in die Firmen getragen wird und dort umgesetzt wird, dann würde die Wirtschaft auch nicht nur “MS Word”, “Excel” und Co. fordern, sondern “Textverarbeitung”, “Tabellenkalkulation” und Co. … In diesem Zusammenhang wurde auf der “OpenRheinRuhr 2010” auch seminarix (Seminarix ist eine auf sidux aufbauende Live-DVD, die für die Lehrerausbildung entwickelt wurde, aber sinnvoll auch im gesamten Bildungsbereich  genutzt werden kann.) Vorgestellt.


Auf der “OpenRheinRuhr 2010” wurde auch darüber diskutiert, ob jeder wissen sollte wie ein PC funktioniert um mit den Techniken der Zukunft umgehen zu können. Diesen Ansatz muss ich jedoch klar widersprechen, denn es ist die Aufgabe von findigen Programmieren und Designern Software benutzerfreundlich zu erstellen, so dass diese von dessen Zielgruppe verwendet werden können. Wie sah / sieht  das an deiner schule aus? Wie ist deine Meinung? Ist Medienkompetenz auch ohne freie Software möglich?