Skip to content

freiesMagazin für 12/2014 erschienen

Heute ist die Dezember Ausgabe (12/2014) vom freiesMagazin erschienen,
hier mal ein kurzer Überblick über die Themen, die Ausgabe könnt ihr über den oberen Link in verschiedenen Versionen downloaden.

Inhalt der Ausgabe
* Ubuntu und Kubuntu 14.10
* State of the Commons – Zustand der Creative-Commons-Lizenzen
* Der November im Kernelrückblick
* Git-Tutorium – Teil 1
* Shellskript podfetch – Podcasts automatisch herunterladen
* Broken Age
* Eine Einführung in Octave
* Ubucon 2014 in Katlenburg-Lindau
* Interview mit den Musikpiraten
* Rezension: Schrödinger lernt HTML5, CSS3 und JavaScript
* Rezension: Java – Eine Einführung in die Programmierung
* Die dritte Katastrophe – Teil 2
* FAQ zum siebten freiesMagazin-Programmierwettbewerb
* Leserbriefe und Veranstaltungen


freiesMagazin für 05/2014 erschienen

Heute ist die Mai Ausgabe (05/2014) vom freiesMagazin erschienen,
hier mal ein kurzer Überblick über die Themen, die Ausgabe könnt ihr über den oberen Link in verschiedenen Versionen downloaden.

Inhalt der Ausgabe
* Der April im Kernelrückblick
* E-Mails filtern mit KMail
* Multimedia- und Liedprojektion mit OpenLP
* jEdit – der unterschätzte Texteditor
* Mit Tarnkappe im Netz – Das Tor Browser Bundle
* tmux – Das Kung-Fu der Terminal-Ninjas
* Vorstellung: BeagleBone Black
* Linux auf dem Laptop (Acer Aspire V3-771G)
* Rezension: BeagleBone für Einsteiger
* Rezension: JavaScript – Grundlagen, Programmierung, Praxis
* Rezension: Eclipse IDE
* freiesMagazin als HTML und EPUB erstellen
* Leserbriefe und Veranstaltungen

freiesMagazin für 10/2013 erschienen

Heute ist die Oktober Ausgabe (10/2013) vom freiesMagazin erschienen,
hier mal ein kurzer Überblick über die Themen, die Ausgabe könnt ihr über den oberen Link in verschiedenen Versionen downloaden.

Inhalt der Ausgabe
* Datenschutz als Illusion
* Der September im Kernelrückblick
* Desaster Recovery mit Hilfe der richtigen Backup Strategie
* Firefox-Erweiterungen mit dem Add-on-SDK erstellen – Teil VII: Netzwerk-Anfragen
* PowerDNS – die andere VerBINDung
* Rezension: Dropbox – Sicher speichern und effektiv arbeiten in der Cloud
* Rezension: Android-Apps entwickeln für Einsteiger
* Rezension: Node.js – Das umfassende Handbuch
* Leserbriefe und Veranstaltungen

ProEngineer Webschnittstelle (Teil 4)

So heute gibts nur einen Kurzeintrag zur Ausweisung von Parametern um diese z.B. mit externen Programmen auslesbar zu machen.
Das ganze ist wirklich simpel, nachdem die Verbindung zur ProEngineer Sitzung bereits hergestellt ist (davon gehe ich einfach mal aus ;-))

Ruft ihr entweder pwlParameterDesignationAdd oder pwlParameterDesignationRemove auf übergebt den Dateinamen,
einer Datei die sich in der aktiven Sitzung befindet und den Parameter der ausgewiesen oder die Ausweisung entfernt werden soll.

Das ganze könnte in einer kleinen Funktion etwa so aussehen:
function Designation ( Dateiname , Parameter , Mode )
{
        if ( Mode == "add" )
        {
                document.pwl.pwlParameterDesignationAdd ( Dateiname , Parameter );
        }
        else
        {
                document.pwl.pwlParameterDesignationRemove ( Dateiname , Parameter );
        }
}


Designation ( 'test.prt' , 'Benennung', 'add');
Designation ( 'test.prt' , 'Werkstoff', '');

Das Beispiel würde z.B. den Parameter Benennung lesbar in der Modelldatei stehen, der Werkstoff würde nicht mehr auftauchen.
Alle Parameter die nicht genannt werden, bleiben unverändert, d.h. ihr müsst für jeden Parameter die Funktion aufrufen, wenn ihr alle ändern möchtet.

So das war's für heute, ich versuche zum Wochenende mal die Bibliothek zum Auslesen der ProEngineer Dateien aufzuarbeiten,
damit könntet ihr dann die Parameter, welche ausgewiesen sind auslesen. Allerdings befindet sich die Bibliothek in einer frühen Alphaphase,
d.h. es könnte bei bestimmten Parametern und Wertkombinationen zu Fehlern kommen.
Die ProEngineer Daten sind natürlich nicht dazu da von externen Programmen ausgelesen zu werden, sonst wäre die Software unbrauchbar ^^

ProEngineer Webschnittstelle (Teil 3)

Naja, da diese Funktion in etwa der ähnelt für die Erzeugung eines Parameters,
werde ich nur noch die Änderung angeben, da die ersten Zeilen bei den Parameterfunktionen eigentlich weitestgehend identisch sind.

Wir verwenden nur statt document.pwl.pwlParameterValueCreate eine andere Funktion
        document.pwl.pwlParameterValueSet (
        Dateiname,
        ItemType,
        featureID,
        Parameter, ValueType,
        IntValue, FloatValue, StringValue, BoolValue);


Diese Änderung und es wird der entsprechende Parameter geupdatet, wenn der Parameter nicht existiert wird kein Fehler ausgegeben,
aber auch kein Parameter erzeugt, weswegen ich in meiner Toolsammlung meist so vorgegangen bin:
Zuerst hab ich Funktion für die Parameter Erzeugung aufgerufen und direkt danach diese Funktion hier. Es ist eigentlich ganz einfach erklärt,
wieso es keine Probleme gemacht hat, die Funktion zum Erzeugen ändert den Parameter nicht wenn dieser bereits existiert.
Die Vorteile dieser zwei Funktionen sind gleichzeitig ihre Schwachstellen, sie geben bei vorhanden bzw. nicht vorhanden Parametern keine Fehler aus,
dies müsste über zwei weitere Funktionen geprüft werden, erstens Abfrage der vorhandenen Parameter und zweitens überprüfen, ob der Parameter existiert. "ProEngineer Webschnittstelle (Teil 3)" vollständig lesen

ProEngineer Webschnittstelle (Teil 2)

So wie bereits erwähnt gibts heute den Auszug aus der Toolbox zum Erzeugen eines Parameter in ProEngineer mit Hilfe der Webschnittstelle.

Die ersten Zeilen haben wie beim Auslesen die Funktion die Berechtigungen zu Prüfen, dies ist bei allen Funktionen immer gleich.
function ParameterCreate(Dateiname,Parameter,Wert)
{
if (!pfcIsWindows())
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");


Es werden wieder die benötigten Variablen für die Funktion festgelegt, in diesem Fall ist es eh etwas seltsam,
die Funktion benötigt nicht nur den gewünschten Parameter (z.B. als String), sondern auch den Parameter in Float, Integer, Boolean,
erst über ValueType wird schließlich der Parametertyp hier String festgelegt.
    var ItemType;
    var StringValue = Wert;
    var FloatValue = parseFloat(Wert);
    var IntValue = parseInt(Wert);
    var BoolValue = (Wert.toLowerCase() == "true") ?
                    true : false;
    var ValueType = document.pwl.eval('PWL_VALUE_STRING');



    ItemType = document.pwl.eval('PWL_MODEL');
        featureID = -1;

Hier ist es wieder so wie bei der Funktion zum Auslesen, ItemType legt den Modelltyp fest (hier PWL_MODEL),
d.h. der Parameter wird in einem Bauteil (prt) oder Baugruppe (asm) erzeugt.

                document.pwl.pwlParameterCreate (
                        Dateiname,
                        ItemType,
                        featureID,
                        Parameter, ValueType,
                        IntValue, FloatValue, StringValue, BoolValue);

Diese Funktion ist das vorhin erwähnte seltsame, bevor ich einen String anlegen kann muss ich einen Integer und Float Wert festlegen,
welcher überhaupt nicht benötigt wird, aber diese Funktion ist allerdings nur ausgelegt um String in ProEngineer auch Zeichenketten festzulegen,
da es zum Zeitpunkt der Entwicklung nur für Text benötigt wurde und sich bis zur Einstellung der Entwicklung nicht geändert hat.

So das war die ganze Funktion, nachdem Aufruf von document.pwl.pwlParameterCreate wird versucht den Parameter zu erzeugen.

Das ganze Snippet erhaltet ihr gleich danach, so bis zum nächsten Mal



"ProEngineer Webschnittstelle (Teil 2)" vollständig lesen

ProEngineer Webschnittstelle (Teil 1)

So nun folgt der erste Teil der ProEngineer Webschnittstelle auch genannt Pro/Web.Link,
viele der zusätzlichen Tools, welche Händler mit liefern oder verkaufen, basieren darauf,
daneben existieren noch eine Schnittstelle für Java und eine für C.

Die Javascript/ActiveX Schnittstelle und die Java-Erweiterung werden kostenfrei mitgeliefert,
die Schnittstelle für C benötigt eine Extralizenz, welche sich die meisten wohl nicht anschaffen können,
werden oder wollen.

So nun kommen wir zur Funktion ParameterGet welche die vorhanden Parameter
aus einer aktiven Sitzung ausliest, es wird benötigt das sich das abzufragende Modell im Sitzungsspeicher befindet.

Wie bei allen Schnittstellen benötigen wir ist einmal eine Verbindung zum Programm, diese liefert ProEngineer
mit der Dokumentation bereits mit die benötigten Dateien werde ich in einem späteren Beitrag erwähnen.

Nun gut, die ersten zwei Zeilen haben folgenden Sinn, diese Fragen nach wird die Seite über den Programm internen
Webbrowser aufgerufen oder nicht, es wird versucht die benötigten Berechtigungen zu erhalten.

function ParameterGet(Dateiname)
{
   if (!pfcIsWindows())
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");



Als nächstes legen wir die verschiedenen Parameter an.

    var ret;
    var ItemType;
        var FeatureID;
        var Daten = new Object();
        Daten['Daten'] = new Object();
        Daten['Parameter'] = new Array();



    if (Dateiname == "")
    {
        return ;
    }

Mit if (Dateiname == "") kann der Browser davor bewahrt werden eine Fehlermeldung
auszuspucken, weil die Datei nicht gefunden oder die Daten nicht geladen werden konnten.


    ItemType = document.pwl.eval('PWL_MODEL');
                FeatureID = -1;
        ret = document.pwl.pwlMdlParametersGet(Dateiname);

Diese drei Zeilen legen folgendes fest:
ItemType ist ein Modell, d.h. eine Baugruppe oder ein Bauteil.
FeatureID wird in diesem Fall ignoriert, da wir kein besonderes Konstruktionselement wählen wollen, sondern die Baugruppe bzw. -teil.
pwlMdlParametersGet liest nun alle verfügbaren Parameter des Modells aus.


Der nächste Abschnitt liest die Daten von ret in ein Array Daten,
da ProEngineer aber zwischen verschiedenen Parametertypen unterscheiden müssen diese Daten korrekt ausgelesen werden,
da es sonst zu Fehlermeldungen der Schnittstelle kommt.

ProEngineer unterscheiden zwischen Double, String, Integer und Boolean Parameter,
diese werden entsprechend ausgelesen, damit Javascript mit diesen Daten korrekt umgeht.

    for (i = 0; i < ret.NumParams; i++)
    {
        var val_ret = document.pwl.pwlParameterValueGet(
                          Dateiname,
                          parseInt(ItemType),
                          FeatureID,
                          ret.ParamNames.Item(i));
                                         
        var answer = "";
                var parameter = "";
        if (val_ret.ParamType == parseInt(document.pwlc.PWL_VALUE_DOUBLE))
        {
            answer = val_ret.ParamDoubleVal;
        }
        else if (val_ret.ParamType == parseInt(document.pwlc.PWL_VALUE_STRING))
        {
            answer = val_ret.ParamStringVal;
                        if(answer == ""){ answer = "&nbsp;"; }
        }
        else if (val_ret.ParamType == parseInt(document.pwlc.PWL_VALUE_INTEGER))
        {
            answer = val_ret.ParamIntVal;
        }
        else if (val_ret.ParamType == parseInt(document.pwlc.PWL_VALUE_BOOLEAN))
        {
            answer = (val_ret.ParamBooleanVal) ? "true" : "false";
                }
                parameter = ret.ParamNames.Item(i);
               
                Daten['Daten']['' + parameter.toLowerCase() + ''] = '' + answer + '';
                Daten['Parameter'] = '' + parameter.toLowerCase() + '';
       


Ich hoffe, ich konnte es wenigstens einigermaßen verständlich rüberbringen, da ich vor weit über einem Jahr,
mit dieser Schnittstelle aufgehört habe und die Dokumentation leider nicht parat habe, kann ich natürlich auch
nicht alle Funktionen mehr 100%ig nachvollziehen. Eins werde ich noch versuchen, die entsprechenden Dokumentationseinträge
der benutzen Funktionen etwas zu erklären, soweit es mit der leider ziemlich undurchsichtigen Dokumentation funktioniert.
Als diese Toolsammlung geschrieben wurde war es mehr ein Learning-by-doing mit Test und Fehlerfaktor ;-)


"ProEngineer Webschnittstelle (Teil 1)" vollständig lesen

Smilies in ein Textfeld einfügen

Es gibt so viele Seiten, auf denen ein Klick auf ein Smilie genügt, um den Code für diesen in ein Textfeld einzutragen. Sie wollen das auch? Dann sollten Sie sich mal dieses Tutorial anschauen.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <script type="text/javascript">
      <!--
       function setsmile(smilie)
       {
         document.formular.textfeld.value += smilie+" ";
         document.formular.textfeld.focus();
       }
     //-->
    </script>
    <title>Smilies einfügen</title>
  </head>
  <body>
    <form name="formular" method="post">
      <a href="javascript:setsmile(':aha:')">
        <img border="0" src="images/smilies/1.gif">
      </a>
      <a href="javascript:setsmile(':-(')">
        <img border="0" src="images/smilies/2.gif">
      </a>
      <a href="javascript:setsmile(':-)')">
        <img border="0" src="images/smilies/3.gif">
      </a>
      <a href="javascript:setsmile(';-)')">
        <img border="0" src="images/smilies/4.gif">
      </a>
      <textarea name="textfeld"></textarea>
      <br />
        <input name="Absenden" type="submit" value="Abschicken" />
    </form>
  </body>
</html>


<!//–>

Wenn Ihr Browser kein JavaScript versteht oder es abgeschaltet wurde, wird alles dazwischen als Kommentar angesehen

setsmile(smile)
Dies ist der Name der Funktion mit Platzhalter. Wenn nun <
document.formular.textfeld.value += " “+smile+" "

Wenn man einen Link anklickt der die JS-Funktion aufruft, wird der Wert in das Textfeld des dazugehörigen Formulars eingetragen. Durch das " " vor und nach +smile+ wird ein Leerzeichen for dem Smiliecode ausgegeben.

----

Quelle: Scripting-Base
Die Quelle beinhaltet nur noch ein Portfolio, die ursprünglichen Tutorials sind dort nicht mehr zu finden.

Hover-Effekt für Tabellen

Es gibt sie in Foren, Blogs und in der Scripting-Base: Den Hover-Effekt an Tabellen.
Dies ist zwar mit CSS auch möglich, jedoch funktioniert dass nicht in allen Browsern, mit einem simplen JavaScript funktioniert es überall (sofern JavaScript aktiviert ist).

<table>
  <tr onmouseover="this.style.background='#C0C0C0';" onmouseout="this.style.background='#FFFFFF'; this.style.cursor='default';">
    <td>Zeile 1</td>
  </tr>
  <tr onmouseover="this.style.background='#C0C0C0';" onmouseout="this.style.background='#FFFFFF'; this.style.cursor='default';">
    <td>Zeile 2</td>
  </tr>
  <tr onmouseover="this.style.background='#C0C0C0';" onmouseout="this.style.background='#FFFFFF'; this.style.cursor='default';">
    <td>Zeile 3</td>
  </tr>
</table>


Durch onmouseover wird dem Browser eine Anweisung übergeben, wenn der Mauszeiger die Tabellenzeile überfährt. Hier wird mit this.style.background=’#C0C0C0′ die Farbe Grau übergeben. Somit wird der Hintergrund grau.
Genau das selbe passiert mit onmouseout. Hier wird der Hintergrund in weiß geändert, wenn der Mauszeiger die Tabellenzeile nicht mehr berührt.
Mit erweiterten CSS-Kenntnissen kann man noch gezielt die Cursor ändern.

----

Quelle: Scripting-Base
Die Quelle beinhaltet nur noch ein Portfolio, die ursprünglichen Tutorials sind dort nicht mehr zu finden.

Berechnen des Volumenstroms

Mit Hilfe dieses kleinen Javascripts könnt ihr den Volumenstroms eines Hydraulikkolbens berechnen, ohne das ihr laufend die Zahlen in den Taschenrechner oder im Kopfrechnen müsst ;-)

So es werden mittels document.getElementsByName("FELDNAME")[0].value der Wert entnommen und nach dem das Feld verlassen wurde wird onchange und damit der aktuelle Qmax-Wert in Liter pro Minute ermittelt.

<script type="text/javascript>

function calc_dim_2_liter ( )
{
 var diameter = document.getElementsByName("diameter")[0].value;
 var stroke = document.getElementsByName("stroke")[0].value;
 var qmax = 0;
 qmax = ((Math.PI*(diameter*diameter))/4)*stroke*0.000001*60;
 document.getElementsByName("qmax")[0].value = qmax.toFixed ( 5 );
}

</script>

<h3>Liter pro Minute nach Maßangaben</h3>
<input type="text" name="diameter" value="1" onchange="calc_dim_2_liter()" size="5" style="text-align: right;" /> mm Kolbendurchmesser<br />
<input type="text" name="stroke" value="1" onchange="calc_dim_2_liter()" size="5" style="text-align: right;" /> mm Hub<br />
<input type="text" name="qmax" size="5" readonly="yes" style="text-align: right;" /> l/min Qmax