Kurz erläutert: „Speicherleck“ Wird ein Bereich des Arbeitsspeichers von einem Programm belegt, jedoch nicht verwendet und/oder auch nicht mehr freigegeben, so spricht man von einem Speicherleck oder „Memory Leak“. Grund dafür kann ein Fehler im Programm sein, das sich dann zwar einen Speicherbereich reserviert, jedoch den Zeiger, der die Adresse zu diesem Bereich enthält, verliert oder überschreibt. Wird dann durch einen veränderten Zeiger ein anderer Speicherbereich ausgelesen oder gar beschrieben, so können Probleme in ganz anderen Anwendungen auftreten, wodurch das Auffinden des ursprünglichen Problems sehr schwer ist. |
Autoreninformation |
Mathias Menzer wirft gerne einen Blick auf die Kernel-Entwicklung, um mehr über die Funktion von Linux zu erfahren und seine Mitmenschen mit seltsamen Begriffen und unverständlichen Abkürzungen verwirren zu können. |
# stty raw -echo ; nc -l 1025 ; stty sane |
#!/bin/bash # Script: wifishell.sh # Object: Starts TCP/IP Console # for S60 mobiles afterwards # start wifishell.py on your # S60 IP=$(ifconfig | grep 'inet '| grep -v '127\.0\.0\.1' | cut -d: -f2 | awk '{ print $1}') PORT="1025" echo "Your IP address is: $IP " echo "Start now wifishell.py on your phone ..." stty raw -echo ; nc -l 1025 ; stty sane |
IP=$(ifconfig | grep -E 'inet.[0-9]' | grep -v '127\.0\.0\.1' | awk '{ print $2}') |
IP=$(ifconfig -a | grep 'inet ' | grep -v '127\.0\.0\.1' | awk '{ print $2}') |
# Script: wifishell.py # Object: Starts TCP/IP Console # for S60 mobiles before start # wifishell.sh on your Unix box import btconsole, appuifw import sys try: # next lines are important to select an access point sys.modules['socket'] = __import__('btsocket') except ImportError: pass import socket ip = appuifw.query(u"IP address:", "text") port = 1025 sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((str(ip), port)) btconsole.run_with_redirected_io(sock,btconsole.interact,None,None,locals()) sock.close() |
$ stty raw -echo ; nc -l 1025 ; stty sane Python 2.5.4 (r254:67916, Nov 6 2009, 04:18:57) [C] on symbian_s60 >>> import appuifw >>> appuifw.note(u'Hallo Welt!', 'info') |
>>> import appuifw >>> appuifw.note(u'Hallo Welt!', 'info') |
import audio audio.say(u"Hello World!") |
import audio, e32 fn = u"e:\\Musik\\mymusic.mp3" sound = audio.Sound.open(fn) sound.play(times=1) e32.ao_sleep(sound.duration()/1000000 + 3) sound.close() |
import messaging, appuifw contact_number = "+49123456789" contact_name = "Linus" message = (u"SOS, ruf mich an.") messaging.sms_send(contact_number, message, name=contact_name) appuifw.note(u"Die Nachricht wurde gesendet", "info") |
import appuifw, sysinfo battery = sysinfo.battery() appuifw.note(u'Battery: ' + str(battery) + ' %', 'info') |
$ python2.5 ensymble.py py2sis --version=1.0.0 --icon=battery-low.svg --caption="Battery Info" --vendor="Christian Imhorst" batinfo.py batinfo.sis |
# vcalendar export import e32calendar, appuifw cal = e32calendar.open() if len(cal) == 0: appuifw.note( u"No calendar entries.", "info" ) id_list=list() for id in cal: id_list.append(id) vCal = cal.export_vcalendars(tuple(id_list)) # define the directory and file name vCalendar = u"e:\\vCal.vcf" # create file file = open(vCalendar, 'w') # write vcal into file and close the file file.write(vCal) file.close() appuifw.note( u"Success!", "info" ) |
Autoreninformation |
Christian Imhorst hat wegen Appstore-Zwang, iTunes und der ständigen Gängelung durch Apple sein iPhone gegen ein Nokia E71 eingetauscht. Ein Android-Gerät kommt vielleicht später einmal, schließlich gibt es ja SL4A (Scripting Layer for Android). |
# dpkg -i --force-architecture amazonmp3.deb |
# getlibs /usr/bin/amazonmp3 |
$ tar xfvz clamz-0.4.tar.gz $ cd clamz-0.4 $ ./configure $ make |
# make install |
# checkinstall |
$ clamz AmazonMP3-1281195544.amz |
$ tar -xzf Pymazon-0.9.tar.gz $ cd Pymazon-0.9 # python setup.py install |
# checkinstall python setup.py install |
toolkit = gtk |
Autoreninformation |
Dominik Wagenführ liebt Musik – vor allem wenn sie frei ist. Wenn eine Band keinen Spendenknopf auf ihrer Webseite hat, ist der Kauf über Amazon eine gute Alternative, der Band etwas Unterstützung zukommen zu lassen. |
12 + 2 |
(+ 12 2) |
(let* ( Variablen ) Ausdrücke in denen die Variablen gültig sind )
|
(let* ( (varNum1 5)
(varNum2 10)
(Ergebnis)
)
(set! Ergebnis (+ varNum1 varNum2))
)
|
'(0 0 0) ;definiert die Farbe Schwarz '("Erster Eintrag" 2 3) ;ist auch eine moegliche Liste |
(car '(1 2 3)) (cdr '(1 2 3)) |
(car (cdr '(1 2 3)) |
(cdr (cdr '(1 2 3)) |
(cadr '(1 2 3)) (cddr '(1 2 3)) |
(define ( Funktionsname Parameter1 Parameter2 ) Ausdruecke ) |
(Funktionsname 1 "String") |
(if (bedingung) (then-block) (else-block) ) |
(if (= (gimp-image-base-type bild) 2) (gimp-image-convert-rgb bild) ) |
(begin Anweisung1 Anweisung2) |
;Skaliert das Bild auf max. Groesse (define (BildSkalieren inBild inMax ;Variablendeklarationen (let*( (varBreite (car (gimp-image-width inBild))) (varHoehe (car (gimp-image-height inBild))) ) ;hier wird das Bild verkleinert );endLet );endDefine |
(script-fu-register "BildSkalieren" ;Aufzurufende Funktion "<Image>/Online/Forum XY..." ;Name und Position in GIMP "Passt das Bild fuer die Veroeffentlichung \ im Forum XY an (Skalierung,Rahmen,Copyr)." "Ralf Damaschke" "Copyright (C) 2010 Ralf Damaschke under \ terms of GNU General Public License Version3" "Jul 14, 2010" SF-IMAGE "Input image" 0 SF-ADJUSTMENT "maximale Groesse" '(900 1.0 3000 1.0 0 0 0) ) |
(gimp-image-scale image new-width new-height) |
;Neue Breite und Hoehe nach laengster Kante berechnen (if (< varHoehe varBreite) (begin ;Querformat-Block (set! varNeueBreite inMax) (set! varNeueHoehe (/ varHoehe(/ varBreite varNeueBreite))) );then (begin ;Hochformat-Block (set! varNeueHoehe inMax) (set! varNeueBreite (/ varBreite (/ varHoehe varNeueHoehe))) );else );endIf |
;Groesse aendern (gimp-image-scale inBild varNeueBreite varNeueHoehe ) |
;Copyright einfuegen (define (CopyRight ;Funktionsname inBild ;erster Uebergabeparameter inSchriftHoehe ;zweiter Uebergabeparameter ) ;Platzhalter fuer den Code );enddefine ;#=========================================== ;# Im GIMP Menue registrieren (script-fu-register "CopyRight" "<Image>/Online/Copyright einfuegen..." "Fuegt ein Copyrightvermerk ein" "Ralf Damaschke" "Copyright (C) 2010 Ralf Damaschke under \ terms of GNU General Public License Version3" "Jul 14, 2010" SF-IMAGE "Input image" 0 SF-ADJUSTMENT "Schrifthoehe" '(10 1.0 100 1.0 0 0 1) ) |
SF-STRING "Copyrightvermerk" "(C) Ralf Damaschke" |
;Variablendeklarationen (let*( (varEbene (car (gimp-image-get-active-layer inBild))) (varBreite (car (gimp-image-width inBild))) (varHoehe (car (gimp-image-height inBild))) (varText "(C) Ralf Damaschke") (varSchriftart "Century Schoolbook L Bold Italic") (varAbstand 20) (varTextDimensionen) (varX_Pos) (varY_Pos) (varTextEbene) ) |
;Hoehe berech. nach laengster Seite (if (= inSchrifthoehe 0) ;Wenn keine Schrifthoehe angegeben ist... (begin (if (< varHoehe varBreite) (set! inSchrifthoehe (/ varBreite 40));then (set! inSchrifthoehe (/ varHoehe 40));else );endIf );endbegin );endIf |
;Abstand = anderthalfache Schriftgroesse (set! varAbstand (* inSchrifthoehe 1.5)) ;Schrifthoehe und Laenge in eine Liste (set! varTextDimensionen (gimp-text-get-extents-fontname varText inSchrifthoehe PIXELS varSchriftart) );endset ;Die Schriftpositionen berechnen (set! varX_Pos (- varBreite (+ (car varTextDimensionen) varAbstand))) (set! varY_Pos (- varHoehe (+ (caddr varTextDimensionen) varAbstand))) |
;Einstellungen sichern (gimp-context-push) (gimp-image-undo-group-start inBild) |
;Vordergrundfarbe anpassen (gimp-context-set-foreground '(0 0 0)) ;Text-Layer einfuegen (set! varTextEbene (car (gimp-text-fontname inBild -1 ;neues TextLayer varX_Pos varY_Pos varText -1 ;Ramen=0 TRUE ;Antialias inSchriftHoehe PIXELS varSchriftart))) |
;Text-Layer umbenennen (gimp-drawable-set-name varTextEbene "Copyright") |
;Text-Layer Transparenz anpassen (gimp-layer-set-opacity varTextEbene 80) |
;die urspruengliche Ebene anwaehlen (gimp-image-set-active-layer inBild varEbene) (gimp-displays-flush) (gimp-image-undo-group-end inBild) (gimp-context-pop) |
;Bild fuer das ForumXY anpassen (define (Forum_XY inBild) );endDefine |
(BildSkalieren inBild 996) |
(CopyRight run-mode image value) |
(CopyRight inBild 0) (gimp-image-flatten inBild) |
(FarbRahmen inBild 2 '(0 0 0)) |
;Bild fuer das ForumXY anpassen (define (Forum_XY inBild) ;Einstellungen sichern (gimp-context-push) (gimp-image-undo-group-start inBild) ;Bild bearbeiten (BildSkalieren inBild 996) (CopyRight inBild 0) (gimp-image-flatten inBild) (FarbRahmen inBild 2 '(0 0 0)) ;Einstellungen wiederherstellen (gimp-displays-flush) (gimp-image-undo-group-end inBild) (gimp-context-pop) );endDefine |
;Bild fuer fc anpassen (define (fotocommunity inBild) ;Einstellungen sichern (gimp-context-push) (gimp-image-undo-group-start inBild) ;Bild bearbeiten (BildSkalieren inBild 936) ;zweifarbiger Rahmen (FarbRahmen inBild 2 '(0 0 0)) (FarbRahmen inBild 30 '(255 255 255)) ;Copyright in den weissen Rand platzieren (CopyRight inBild 10) (gimp-image-flatten inBild) ;Einstellungen wiederherstellen (gimp-displays-flush) (gimp-image-undo-group-end inBild) (gimp-context-pop) );endDefine |
Autoreninformation |
Ralf Damaschke ist begeisterter Hobbyfotograf und verwendet seit Jahren diverse Bildbearbeitungsprogramme, um seine Bilder nachzuarbeiten. Als Setzer bei freiesMagazin muss er immer wieder Schlagschatten in definierte Größen zu Bildern hinzufügen; diese Aufgabe erledigt heute ein Skript-Fu. |
$ chmod a+x Mega-Glest-Installer-*.*.*_i386_linux |
$ ./Mega-Glest-Installer-*.*.*_i386_linux |
Autoreninformation |
Michael Schwarz wurde es Mitte 2008 zu bunt auf dem DRM- und kopierschutzverseuchten Windowsspielmarkt. Nach seinem Umstieg auf Linux hat er auf der Suche nach Spielen für das freie Betriebssystem schon viele positive Überraschungen entdecken können, darunter auch MegaGlest. |
# dd if=<Dateiname> of=/dev/sdb |
Autoreninformation |
Oliver Johanndrees ist langjähriger Freund und Anweder von Linux und Gründer der Linux User Group Erwitte. Seine Hauptdistribution ist seit jeher openSUSE, er nutzt aber auch Ubuntu für Laptop und Netbook. |
Autoreninformation |
Jochen Schnelle, üblicherweise Ubuntu-Nutzer, muss beruflich Windows nutzen. Als Editor zum schnellen Editieren von Textdatei und Schreiben von kleinen (Python-)Skripten kommt dabei Notepad++ zum Einsatz. |
Buchinformationen | |
Titel | Python – Essential Reference (Fourth Edition) |
Autor | David M. Beazley |
Verlag | Addison Wesley, 2009 |
Umfang | 716 Seiten |
ISBN | 978-0672329784 |
Preis | 29,95 Euro |
Autoreninformation |
Jochen Schnelle verwendet Python also Hauptprogrammiersprache für diverse Werkzeuge für den eigenen Gebrauch sowie für verschiedene Intranet-Applikationen, die sein Arbeitsleben (und das der Kollegen) leichter machen. |
Messen | ||||
Veranstaltung | Ort | Datum | Eintritt | Link |
FrOSCamp | Zürich | 17.-18.09.2010 | frei | http://froscamp.org |
FUDCon | Zürich | 17.-19.09.2010 | frei | https://fedoraproject.org/wiki/FUDCon:Zurich_2010 |
Software Freedom Day | Weltweit | 18.09.2010 | frei | http://softwarefreedomday.org |
Kieler Linuxtage | Kiel | 01.-02.10.2010 | frei | http://www.kieler-linuxtage.de |
Ubucon | Leipzig | 15.-17.10.2010 | 10 EUR | http://www.ubucon.de |
TechTalk: Mobile Anwendungen mit Qt | München | 19.10.2010 | frei | http://www.opensourceschool.de |
Brandenburger Linux-Infotag | Potsdam | 06.11.2010 | frei | http://blit.org/2010 |
OpenRheinRuhr | Oberhausen | 13.-14.11.2010 | 3 EUR | http://www.openrheinruhr.de |
Open Source Expo | Karlsruhe | 15.-16.11.2010 | 10 EUR | http://openexpo.de |
12. LinuxDay | Dornbirn | 17.11.2010 | frei | http://linuxday.at |
$: | Shell-Prompt |
#: | Prompt einer Root-Shell – Ubuntu-Nutzer können hier auch einfach in einer normalen Shell ein sudo vor die Befehle setzen. |
~: | Abkürzung für das eigene Benutzerverzeichnis /home/BENUTZERNAME |
Impressum ISSN 1867-7991 | ||
freiesMagazin erscheint als PDF und HTML einmal monatlich. | ||
Redaktionsschluss für die August-Ausgabe: 19. September 2010 | ||
Kontakt | ||
Postanschrift | freiesMagazin | |
c/o Dominik Wagenführ | ||
Beethovenstr. 9/1 | ||
71277 Rutesheim | ||
Webpräsenz | http://www.freiesmagazin.de/ | |
Autoren dieser Ausgabe | ||
Ralf Damaschke | GIMP automatisieren | |
Christian Imhorst | Symbian für Schlangenbeschwörer | |
Oliver Johanndrees | SUSE Studio als Tool zum eigenen Linux | |
Mathias Menzer | Der August im Kernelrückblick | |
Jochen Schnelle | Notepad++ und Notepad2 – Open-Source-Editoren für Windows, Rezension: Python – Essential Reference | |
Michael Schwarz | MegaGlest – Ein historisch nicht ganz korrektes Strategiespiel | |
Dominik Wagenführ | MP3s von Amazon herunterladen | |
Logo-Design | ||
Arne Weinberg (GNU FDL) |
Erscheinungsdatum: 5. September 2010 | ||
Redaktion | ||
Dominik Honnef | Thorsten Schmidt | |
Dominik Wagenführ (Verantwortlicher Redakteur) | ||
Satz und Layout | ||
Ralf Damaschke | Yannic Haupenthal | |
Nico Maikowski | Matthias Sitte | |
Günther Wutz | ||
Korrektur | ||
Daniel Braun | Frank Brungräber | |
Stefan Fangmeier | Mathias Menzer | |
Karsten Schuldt | Franz Seidl | |
Stephan Walter | ||
Veranstaltungen | ||
Ronny Fischer | ||