Tuesday, December 15, 2015

Script to Reduce SVG Size by Rounding Decimal Points

Here is a small script, which rounds the decimal points for each path in a svg image:

function round(toRound, points) {
    return toRound.replace(/[ ][d][=]["']{1}((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']{1}/g, function(m){
        return m.replace(/[\d]*\.[\d]*/g, function(n){
            return +parseFloat(n).toFixed(points)
        });
    });
}


Try It:

Just copy the xml source of your svg image into the "Source" field, and click the "Round"-Button:

(394 Characters)


(0 Characters, 0% saved)

You will find the code of this example here: jsfiddle.net/aLhm2s2z/

Wednesday, November 12, 2014

MAKING-OF: wer-schenkt-wem.de clip

An dieser Stelle möchte ich ein bisschen von der Entstehung unseres kurzen wer-schenkt-wem.de Erklär-Videos zeigen.

HardwareSoftware
Papier (grün und weiß) > Stifte > ScannerFinal Cut Pro X (Schnitt)
Kamera: Nikon Coolpix AW110Cubase (Audio Aufnahmen)
LED Leuchte (400lm)Gimp (Grafiken)
Halogenlampe (als Stativ und zur Beleuchtung)jQuery / jQuery UI (Animationen)
MXL - V69 Mogami EditionQuickTime Player (Screencast)
JBL - LSR 2300 Studiomonitore

Animationen

Einige der im Clip verwendeten Animationen sind mit jQuery und jQuery UI programmiert und dann per Screencast aufgezeichnet worden.
Ein Beispiel dafür ist der „laufende“ Kalender: zur Kalender Animation.

Die Animation als zum Schneiden fertiger Clip sieht dann so aus:


Grafiken

Alle Grafiken sind von Hand gezeichnet (auf echtem Papier!) und nach der Digitalisierung nachbearbeitet. Die Nachbearbeitungsschritte waren Anpassung in der Größe, Anpassung des Hintergrunds (bzw. Transparenz), sowie die Kolorierung.

Ein Teil der Grafiken wurde „live“ gezeichnet. Dafür wurde die Kamera auf das „Stativ“ montiert. Durch das Zeichnen auf grünem Papier konnte der Hintergrund während der Videobearbeitung leicht entfernt werden.

Vertonung

Die angenehme Stimme der Sprecherin stammt von Linda Schinkel. Sie hat für die Aufnahmen Ihr eigenes Tonstudio genutzt.

Wenn ihnen die Stimme von Linda genau so gut gefällt wie uns, können wir diese Seiten empfehlen:

Der fertige Film

Zum Schluss nochmal der fertige Film:



Tuesday, September 30, 2014

Trac: Ticket Workflow > Testing > Documentation > Translation

Today I would like to share the ticket workflow, we use in most of our trac environments.

Trac's basic workflow is extended by testing, documentation and translation:

Here is the configuration for the conf/trac.ini:

[ticket-workflow]
# AT ALL STAGES
leave = * -> *
leave.default = 1
leave.operations = leave_status

reassign = accepted, testing, documentation, translation -> *
reassign.name = reassign
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY


# HANDLE DISCARD
discard = new, accepted -> discarded
discard.operations = set_resolution
discard.permissions = TICKET_MODIFY
restore = discarded -> accepted
restore.operations = del_resolution
restore.permissions = TICKET_MODIFY


# WORKFLOW
accept = new -> accepted
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY

resolve = accepted -> testing
resolve.operations = set_resolution
resolve.set_resolution = fixed
resolve.permissions = TICKET_MODIFY

testPassed = testing -> documentation
testPassed.name = Test passed
testPassed.permissions = TICKET_MODIFY

documentationDone = documentation -> translation
documentationDone.name = Documentation updated
documentationDone.permissions = TICKET_MODIFY

translationDone = translation -> closed
translationDone.name = Translation updated
translationDone.permissions = TICKET_MODIFY

closeNoDT = testing -> closed
closeNoDT.name = Test passed (no documentation, no translation)
closeNoDT.permissions = TICKET_MODIFY

closeNoT = documentation -> closed
closeNoT.name = Documentation updated (no translation)
closeNoT.permissions = TICKET_MODIFY

closeNoD = testing -> translation
closeNoD.name = Test passed (no documentation)
closeNoD.permissions = TICKET_MODIFY

reopen = documentation, translation, closed -> accepted
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE

testFailed = testing -> accepted
testFailed.name = Test failed
testFailed.operations = del_resolution
testFailed.permissions = TICKET_CREATE


You can find the docs with more information how to customize your ticket workflow here.

Wednesday, August 20, 2014

Django: HowTo Apply Template-Filters To A Translated String

Recently I faced the problem, to apply a django template filter to a translated string:

<p>{% trans 'yes' %}</p>

In this case I would like the displayed translation in upper letters. In order not to generate a second translation, I would like to apply the build-in upper filter.

Solution

There's a build-in filter tag, which is very useful in this case:

<p>{% filter upper %}{% trans 'yes' %}{% endfilter %}</p>

Thursday, February 6, 2014

Python: Generate Colorized QR-Codes

In this small snippet, I would like to show you how to generate colorized QR-Codes using python:

import qrcode
from qrcode.constants import ERROR_CORRECT_M as ERR_M

qr = qrcode.QRCode( version = 2, error_correction = ERR_M, box_size = 4, border = 2 )
qr.add_data( 'http://www.unimedia-webservice.de' )
qrimg = qr.make_image().convert( 'RGBA' )
pixels = qrimg.load()
for x in range( qrimg.size[0] ):
    for y in range( qrimg.size[0] ):
        if pixels[x,y] == ( 255, 255, 255, 255 ):
            pixels[x,y] = ( 17, 136, 207, 255 ) # RGBA for background
        else:
            pixels[x,y] = ( 0, 5, 128, 255 ) # RGBA for code
qrimg.show() # or save: qrimg.save( 'qr-code.png', 'PNG' )

The python qrcode library (https://pypi.python.org/pypi/qrcode) is used to generate the QR-Code.

Result

And here is what it looks like:

Downloads

Tuesday, January 21, 2014

16 Mio. Nutzerdaten in Botnetz aufgespürt

Deutschen Ermittlern ist es gelungen aus einem Botnetzwerk rund 16 Millionen geklaute Benutzerdatensätze zu filtern. Bei einem Großteil der Daten handelt es sich um Emailadresse mit .de Endung deren Nutzer wahrscheinlich Deutsche sind.

Das BSI hat eine Seite eingerichtet, auf der Sie überprüfen können ob ihre Emailadresse in den gestohlenen Daten enthalten ist:
https://www.sicherheitstest.bsi.de/

Wir empfehlen alle Internetnutzer zufällige Passwörter zu verwenden, die keine Name, Wörter oder Jahreszahlen enthalten. Auch Tastenkombinationen (z.B. qwertz, qaywsx) sollten vermieden werden.
Wenn Sie einen Passwortmanager verwenden vergeben Sie auf jeden Fall ein Masterpasswort.

Nutzen Sie unseren Passwortgenerator um sichere Passwörter zu erstellen.

Tipp:

Sollten Sie nicht viel unterwegs sein, kann ich Ihnen nur raten einen "offline Passwortmanager" zu benutzen. Ein kleinen Adressbuch mit alphabetischen Reitern, eignet sich dafür ganz hervorragend.
Dann kann garantiert keine Spähsoftware aus dem Internet ihre Benutzerdaten auslesen.