Benutzer-Werkzeuge

Webseiten-Werkzeuge

Übersetzungen dieser Seite:
de

programming:start

Programmierung

in diesem Abschnitt habe ich ein paar von mir häufig verwendete Code-Schnipsel hinterlegt. vielleicht ist der eine oder andere hilfreich ;)

GIT

GIT-Guide useful commands

SVN-Guide SVN

Bash

FIXME

root-check

if [ $UID -eq 0 ];then echo "root";fi

online-check

  ping -c 1 ${HOST} -W 1 >/dev/null
  if [ $? == 0 ];
  then
 
  fi

farben

clr_red=$'\e[1;31m'
clr_green=$'\e[1;32m'
clr_yellow=$'\e[1;33m'
clr_blue=$'\e[1;34m'
clr_reset=$'\e[0m'
 echo ${clr_red}test${clr_reset}

logging

einzelnen Befehl mitloggen (nur stderr) und gleichzeitig anzeigen (stdout+stderr)

#via Process Substitution (https://www.gnu.org/software/bash/manual/bash.html#Process-Substitution)
make 2> >( tee "$logfile" ) ; echo $?

ganzen Block mitloggen:

exec 3> >(tee logfile)
 
make alpha 2>&3 &&
make bravo 2>&3 &&
make charlie 2>&3 && success=1
 
exec 3>&-

Case

case "$string" in 
  *foo*)
    # irgendwas
  ;;
  [1-6]*)
    #zahlenbereiche
  ;;
  *)
    #alles andere
  ;;
esac

Stringmanipulation

In Bash 4: alles klein

$ echo "${string,,}"

alles groß:

$ echo "${string^^}"

Quelle

Pfad / Verzeichnis

$ VAR=/home/me/mydir/file.c
$ DIR=$(dirname "${VAR}")
$ echo "${DIR}"
/home/me/mydir
$ basename "${VAR}"
file.c

Teilstrings

a=string
b=${a:p:l}
#p=Position (0-basiert),l=Länge

ersetzen

orig="AxxBCyyyDEFzzLMN"
mod=${orig//[xyz]/_}

Regex-Prüfung

string='My string';

if [[ $string =~ .*My.* ]]
then
  echo "It's there!"
fi

rechnen

GPIO_NO=$((232+25))

Zahlenbereiche

ls IMG_20170923_{17..18}*

Sprache

kurzzeitig umstellen (z.b. um Fehlermeldungen auf englisch zu bekommen für Foren):

LANG=C

Batch

C/C++

CSS

JavaScript

Datumsfunktionen (de):

Zum Anzeigen hier klicken ⇲

Zum Verstecken hier klicken ⇱

function GerDate(d) //formatiert ein JavaScript-Date-Objekt nach deutschem Format dd.mm.yyyy (wg. Probleme mit dateobj.toLocaleStr)
{
  var month = d.getMonth()+1;
  var year = d.getYear();
  var day = d.getDate();
  if(day<10) day = "0" + day;
  if(month<10) month= "0" + month;
  if(year<1000) year+=1900;
  return day+'.'+month+'.'+year;
}
 
function heute() //liefert das aktuelle Datum in deutscher Formatierung
{
  var today = new Date();
  var month = today.getMonth()+1;
  var year = today.getYear();
  var day = today.getDate();
  if(day<10) day = "0" + day;
  if(month<10) month= "0" + month;
  if(year<1000) year+=1900;
  return day+'.'+month+'.'+year;
}
 
function GerDay(mod) //Datumsmanipulation vom aktuellen Datum +/- x Tage
{
  var now = new Date();
  var today = now.getTime();
  if (mod)
  {
    var than = today + (mod * 24 * 60 * 60 * 1000);
    now.setTime(than);
  }
  var month = now.getMonth()+1;
  var year = now.getYear();
  var day = now.getDate();
  if(day<10) day = "0" + day;
  if(month<10) month= "0" + month;
  if(year<1000) year+=1900;
  return day+'.'+month+'.'+year;
}
 
function jetzt(sec)
{
  var today = new Date();
  var hour = today.getHours();
  var minute = today.getMinutes();
  var second = today.getSeconds();
  if(hour<10) hour= "0" + hour;
  if(minute<10) minute="0" + minute;
  if(second<10) second="0" + second;
  if (sec)
    return hour+':'+minute+':'+second;
  else
    return hour+':'+minute;
}
 
function calc_endtime(f) //rechnet x minuten (feld duration) auf datum in starttime
	{
		var dtstr = f.starttime.value;
		if (dtstr.match(/^\d\d\.\d\d\.\d\d\d\d \d\d:\d\d$/))
		{
		var dt = dtstr.split(" ");//datum und zeit trennen
		  var d=dt[0].split(".");
		  var t=dt[1].split(":");
		  var ts  = new Date(d[2], d[1]-1, d[0]);
		  //alert(t[0]+'h'+t[1]+'+'+f.duration.value);
		  ts.setHours(t[0],parseInt(t[1])+parseInt(f.duration.value));
		  var endtime = ("0" + ts.getDate()).slice(-2) + "." + ("0"+(ts.getMonth()+1)).slice(-2) + "." +
			ts.getFullYear() + " " + ("0" + ts.getHours()).slice(-2) + ":" + ("0" + ts.getMinutes()).slice(-2);
		  f.endtime.value=endtime;
		}else alert(dtstr+' hat falsches Format!');
	}

label-Text

Zum Anzeigen hier klicken ⇲

Zum Verstecken hier klicken ⇱

function GetLabelText(cb_id)
{
  var t="";
  var labels=document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++)
  {
    if (labels[i].htmlFor==cb_id)
      t=labels[i].innerHTML;
    //alert(labels[i].title);
  }
  return t;
}
 
function SetLabelText(cb_id,txt)
{
  var labels=document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++)
  {
    if (labels[i].htmlFor==cb_id)
      labels[i].innerHTML=txt;
    //alert(labels[i].title);
  }
}

Abmessungen/Position

Zum Anzeigen hier klicken ⇲

Zum Verstecken hier klicken ⇱

function GetRect (o)
{
  var r = { top:0, left:0, width:0, height:0 };
 
  if(!o) return r;
  else if(typeof o == 'string' ) o = document.getElementById(o);
  if( typeof o != 'object' ) return r;
 
  if(typeof o.offsetTop != 'undefined')
  {
    r.height = o.offsetHeight;
    r.width = o.offsetWidth;
    r.left = r.top = 0;
 
    while (o)
    {
      r.top  += parseInt( o.offsetTop );
      r.left += parseInt( o.offsetLeft );
      o = o.offsetParent;
    }
  }
  return r;
}
 
function SetRect(e,l,t,w,h)
{
  //alert('[SetRect] '+l+' '+t+' '+w+' '+h);
  if(typeof e == 'string' ) e = document.getElementById(e);
  if (typeof e == 'object')
  {
    e.style.left=l+'px';
    e.style.top=t+'px';
    if (w>0) e.style.width=w+'px';
    if (h>0) e.style.height=h+'px';
  } else alert('[SetRect] e not found!\n'+typeof e);
}
 
function SetHeight(e,v)
{
  if(typeof e == 'string' ) e = document.getElementById(e);
  if (typeof e == 'object')
  {
    e.style.height=v+'px';
  } else alert('[SetHeight] e not found!\n'+typeof e);
}
 
function SetWidth(e,v)
{
  if(typeof e == 'string' ) e = document.getElementById(e);
  if (typeof e == 'object')
  {
    e.style.width=v+'px';
  } else alert('[SetWidth] e not found!\n'+typeof e);
}

AJAX

Zum Anzeigen hier klicken ⇲

Zum Verstecken hier klicken ⇱

var loading_html='<img src="images/loading.gif">';
 
function setInnerText(divID, text)
{
  if (divID)
  {
    var el = (document.getElementById) ? document.getElementById(divID) : document.all[divID];
    if(el) { el.innerHTML = text; }else alert('[AJAX] div "'+divID+'" not found');
  }
}
 
// create Object
function GetHttpRequest()
{
  if (window.XMLHttpRequest) 
    return new XMLHttpRequest();// Mozilla, Safari, Opera, IE>=7
  else if (window.ActiveXObject)
  {
    try 
    {
      return new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    } catch (e) 
    {
      try 
      {
        return new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
      } catch (e) {}
    }
  }else 
  {
    alert("Your browser does not support AJAX.");
  }
  return null;
}
 
function request_get(xmlHttp,serverscript,params)
{
  if(xmlHttp)
  {
    xmlHttp.open("GET", serverscript+'?'+params, true);
    xmlHttp.send(null);
  }else alert('HttpRequest wurde nicht erstellt!');
}
function request_post(xmlHttp,serverscript,params)
{
  if(xmlHttp)
  {
    xmlHttp.open("POST", serverscript, true);
 
    //Send the proper header information along with the request
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(params);
  }else alert('HttpRequest wurde nicht erstellt!');
}
 
function ajax_request(divID, url, params,callback) 
{
  var xmlHttp = GetHttpRequest();
  if (xmlHttp)
  {
    if(callback == undefined) //if callback defined no loading-image
	setInnerText(divID,loading_html);
	xmlHttp.onreadystatechange = function()
	{
	  if(xmlHttp.readyState == 4) 
	  {
		if(callback != undefined && typeof callback == 'function')
			callback(divID, xmlHttp.responseText);
		else
			setInnerText(divID, xmlHttp.responseText);
	  }
	}
      request_post(xmlHttp,url,params);
  }
  return false;
}

ein/ausblenden

Zum Anzeigen hier klicken ⇲

Zum Verstecken hier klicken ⇱

function ShowDivTag(e,show)
{
  if (e)
  {
    if (show=='toggle') show=(e.style.display=='none');
    if (show)
      e.style.display='';
    else
      e.style.display='none';
  }
}
 
function ShowDiv(id,show)
{
  var e=document.getElementById (id);
  ShowDivTag(e,show);
}

Radiobutton/Checkbox

Zum Anzeigen hier klicken ⇲

Zum Verstecken hier klicken ⇱

function GetRadioValue(radioname)
{
  //alert(radioname);
  if (radioname)
  {
    if(radioname.length==undefined)//wenn nur ein radio-button existiert
    {
      if(radioname.checked==true)
        return radioname.value;
    }else
    {
      for(var i=0; i<radioname.length; i++)
      {
        if(radioname[i].checked == true)
            return radioname[i].value;
      }
    }
  }else alert('radiobutton nicht gefunden!');
 
  return -1;//if nothing found
}
 
function SetRadioValue(radioname,val)
{
  //alert(radioname);
  if (radioname)
  {
    if(radioname.length==undefined)//wenn nur ein radio-button existiert
    {
      if(radioname.value==val)
	  {
        radioname.checked=true;
		return true;
	  }
    }else
    {
      for(var i=0; i<radioname.length; i++)
      {
        if(radioname[i].value==val)
        {
	  radioname[i].checked=true;
	  return true;
	}
      }
    }
  }else alert('radiobutton nicht gefunden!');
 
  return false;//if nothing found
}
 
function GetCheckboxValues(chk_name,sep)
{
  //var s=GetCheckboxValues('chk[]',',');
  var sOut = "";
  if (!sep) sep=',';
  var cb = document.getElementsByName(chk_name);
  if (cb!=null)
  {
    for(var i=0;i<cb.length;i++)
    {
      if (cb[i].checked==true)
      {
        if (sOut!="") sOut+=sep;
        sOut += cb[i].value;
      }
    }
  }
  return sOut;
}

Class-Manipulation (css)

Zum Anzeigen hier klicken ⇲

Zum Verstecken hier klicken ⇱

function addClass (element, className) {
    if (!hasClass(element, className)) {
        if (element.className) {
            element.className += " " + className;
        } else {
            element.className = className;
        }
    }
}
 
function removeClass (element, className) {
var regexp = addClass[className];
    if (!regexp) {
        regexp = addClass[className] = new RegExp("(^|\\s)" + className + "(\\s|$)");
    }
    element.className = element.className.replace(regexp, "$2");
}
 
function hasClass (element, className) {
    var regexp = addClass[className];
    if (!regexp) {
        regexp = addClass[className] = new RegExp("(^|\\s)" + className + "(\\s|$)");
    }
    return regexp.test(element.className);
}
 
function toggleClass (element, className) {
    if (hasClass(element,className)) {
        removeClass(element,className);
    } else {
        addClass(element,className);
    }
}

HTML

PHP

Parameter auslesen

  $filter="";
  if (isset($_POST["filter"]))
    $filter=$_POST["filter"];
  else if (isset($_GET["filter"]))
    $filter=$_GET["filter"];
  $filter_a=array();
  if ($filter)$filter_a=preg_split("/,/",$filter);

mehrstufige Sortierung

(3fach,2stellig,Trennzeichen /)

function port_cmp($a, $b)
{
  $a_a=preg_split("/\//",$a); //Werte nach Trennzeichen (hier /) trennen
  $a_b=preg_split("/\//",$b);
 
  $a_a[]="0";//sicherstellen, dass mindestens 3 Einträge im array sind
  $a_b[]="0";
  $a=sprintf("%02d%02d%02d",$a_a[0],$a_a[1],$a_a[2]); //2-stellig (führende 0) alle 3 Werte hintereinander
  $b=sprintf("%02d%02d%02d",$a_b[0],$a_b[1],$a_b[2]);
 
  //If a = b, return 0, If a > b, return 1, If a < b, return -1
  if (intval($a)==intval($b))
    return 0;
  else if (intval($a)>intval($b))
    return 1;
  else return -1;
}
 
uksort($ports,"port_cmp");//user-key-sort

Diskussion

programming/start.txt · Zuletzt geändert: 2018/02/18 17:50 von frank