Ruby One-Liner für zufällige IP- und MAC-Adressen

Hier mal zwei lustige Einzeiler für die Generierung von zufälligen Fake-IP und Mac-Adressen.

IP-Adresse:

Array.new(4).map!{rand(256)}.join(".")
# => "220.58.246.123"

MAC-Adresse:

Array.new(6).map!{"%02x" % rand(256)}.join(":")
# => "86:c8:11:c6:18:57"

Ich würde mich über weitere praktische Einzeiler (gerne auch in anderen Programmiersprachen!) in den Kommentaren freuen!

Ruby FTP stoppt Upload ohne Error

Ich habe ein kleines Ruby Skript geschrieben, welches einen Ordner mit allen Inhalten (Dateien und Unterordner) per Net::FTP auf einen Server kopiert. Der Upload stoppte aber immer nach ein paar Dateien ohne Fehlermeldung und das Skript lief ohne etwas zu tun weiter. Es hat mich zwei Stunden gekostet, bis ich eine Lösung dafür hatte: Die FTP Verbindung muss explizit in den passiven Modus geschaltet werden:

ftp.passive = true

Scripting mit Blender 2.61 #2

Habe mal den Code vom letzen Blender Post erweitert und etwas Bewegung hinzugefügt. In ein Blender Skript kopieren und im Animationsfenster auf Play drücken.

#import blender stuff
import bpy

#loop through all objects in the scene
#bpy.context.scene.objects is a list
for obj in bpy.context.scene.objects:
    #use only real opbject, not the camera or lamp
    if obj.type == 'MESH':
        #select the current object
        obj.select = True
        #remove the current selected object (which will always be obj)
        bpy.ops.object.delete()

#create a new cube object
bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0))

#define a function which will be called every frame change
def my_func(scene):
    obj = scene.objects[0]
    obj.location.x = scene.frame_current/50
    print("frame #", scene.frame_current)

#remove all handlers
for i in range( len( bpy.app.handlers.frame_change_pre ) ):
        bpy.app.handlers.frame_change_pre.pop()

#append handler
bpy.app.handlers.frame_change_pre.append(my_func)

Neues GNOME 4 Desktop Design

Es sind erste geheime Bilder von Designstudien des GNOME 4 Desktops aufgetaucht.

GNOME 4 Desktop

Scripting mit Blender 2.61

Heute mal aus Spaß und Interesse angefangen, mit dem Pythonscripting in Blender 2.61 rumzuspielen. Nach anfänglichen Schwierigkeiten mit den Objektselektoren habe ich dann doch noch ein kleines Script hinbekommen, welches aber doch ein paar grundlegende Aspekte des Scriptings in Blender zeigt.

#import blender stuff
import bpy

#loop through all objects in the scene
#bpy.context.scene.objects is a list
for obj in bpy.context.scene.objects:
    #use only real opbject, not the camera or lamp
    if obj.type == 'MESH':
        #select the current object
        obj.select = True
        #remove the current selected object (which will always be obj)
        bpy.ops.object.delete()

#create a new cube object
bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0))

#select this object
obj = bpy.context.scene.objects[0]

#move to another location
obj.location = 5.0, 0.0, 0.0


print('----------')
# print all objects
for obj in bpy.data.objects:
    print(obj.name)

Links zum Weiterlesen:

Blender 2.61 Python API

Blender 2.6 Manual