Catch The Veggies (Universal App (iPhone+iPad))

Catch The Veggies

——————

Hilf dem kleinen Hund das ganze Gemüse zu fangen und einzusortieren.
Durch die Bewegungen deines iPhones/iPods/iPads lenkst du den kleinen Hund in die richtige Richtung und sobald ein Gemüse gefangen wurde, schmeiss es in die richtige Box, in dem du mit einem Finger auf den Bildschirm tippst.

Durch jedes richtig einsortierte Gemüse wirst du erfolgreich belohnt.

iTunes Link:

http://itunes.apple.com/de/app/catch-the-veggies/id488677930?mt=8

Das Game Center erfreut sich immer größerer Beliebtheit und deswegen habe ich mich auch entschlossen, diese Unterstützung in deHangman2 zu integrieren.

Die ersten Funktionen werden sich auf die Leaderboards und Achievements beschränken. Die Standardfunktionen Friends und Authentication werden automatisch mit dem Game Center integriert.

Noch ist keine Zeile Code geschrieben, aber mit der gute Dokumentation von Apple: Game Center Implementierung!

Nach einem langen hin und her mit dem Review-Team von Apple, kann ich euch heute mitteilen, dass deHangman2 es endlich in den Appstore geschafft hat.

deHangman2:

Status: Im Appstore verfügbar.

deHangman2 basiert auf den bekannten Hangmanspiel!

Ziel des Spieles ist es, die Begriffe zu erraten ohne dabei erhängt zu werden. Man sollte deswegen seine Buchstaben nicht sinnlos wählen, sondern etwas nachdenken und rätseln.
Das Spiel enthält knapp 1000 Wörter und wird mit Updates erweitert.

Neue Features in deHangman2:
Änderungen zum Vorgänger:

    - komplette Grafiken und Code überarbeitet
    – 2 Spieler Modus vorhanden
    – längere Wörter sind nun möglich
    – dynamische Hintergründe
    – Highscore kann an Twitter gesendet werden
    – komplett neue Soundkulisse
    – und noch einiges mehr…

Screenshots:

UPDATE:
Apple hat wieder die App rejected, da man mit zwei Versionen durcheinander kommen könnte. Obwohl es nur noch eine Version gibt. deHangman ist nicht mehr verfügbar im Appstore. Die erste Version kann ich nicht mehr hinzufügen und deHangman2 wird nicht zugelassen. Super Apple. Stehe zur Zeit in Kontakt mit dem ReviewTeam, aber Hoffnung habe ich immer weniger.

deHangman2 wurde gestern bei Apple eingereicht und wartet auf sein Review.

Da nur eine Version im Appstore vorhanden sein kann, musste ich für diese Zeit deHangman aus dem Appstore entfernen.

Sobald deHangman2 freigegeben wird. Werde ich es hier veröffentlichen.

So das Update ist fertig und entfernt den nervigen Fehler mit der Kategorie-Auswahl.

Ausserdem wurde die Abfrage, ob die deHangman2 Information noch mal angezeigt werden soll, vereinfacht bzw. funktioniert nun auch richtig.

Entschuldigt bitte nochmals das fehlerhafte Update 1.7.

[Update]Update 1.8 ist nun im Appstore verfügbar![/Update]

Hallo zusammen,

bin heute erst nach ca. 1 Monat aus dem Urlaub zurück gekommen. In der Zeit war ich leider sehr schlecht technisch angebunden.
Leider hat das letzte Update diesen Fehler mitgebracht, dass man eine bestimme Kategorie nicht mehr auswählen kann.

Da ich mir schon denken kann wo das Problem liegt, werde ich den Fehler so schnell wie möglich beheben. Denke aber, dass das Update ca. 1 Woche im Apple Prozess braucht.

Als Entschädigung kann ich jedem einen Rabattcode (limitiert auf 50 mehr Codes gibt es leider für eine App nicht) für das nächste deHangman2 anbieten, womit Ihr dieses gratis beziehen könnt.
Schreibt mir nach der Erscheinung von deHangman2 einfach eine E-Mail an hangman(at)codingstube.de mit dem Betreff “Update-Promo”.

Ich gehe davon aus, dass deHangman2 Ende Oktober im Appstore erscheint. Natürlich werde ich es auch im Blog bekannt geben.

Ich entschuldige mich noch einmal für den Fehler und bitte um Verständnis.

Mit freundlichen Grüßen
MS

CreateUserGUI_V1.ps1:

Einer der anstregendsten Aufgaben, die Administratoren durchführen, ist das Anlegen neuer Benutzer. Wenn wir 50 bis 100 Nutzer anlegen müssen, wird man uns bei einer Reihe von sehr starren Mausklicks beobachten können. In diesem Fall sollte muss ein Powershell-Skript mit Hilfe einer csv-Datei zum Einsatz kommen.

Die o.a. GUI ist eher für die Benutzeranlage für einige wenige Benutzer während des Betriebs gedacht. Diese ist auf unseren Betrieb angepasst und erstellt zusätzlich auf einem Fileserver ein Benutzerordner, wo nur der angelegte Benutzer Schreibrechte hat + Administratoren.

Das Skript ist einfach aufgebaut. Man trägt die Daten für den Benutzer ein, wählt die OU und die Gruppen aus, wo der oder die Benutzer Mitglied werden soll.

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") 

[system.windows.forms.messagebox]::Show("Only run in Quest Powershell!")

Function createmailbox{
	#Pfad zum Laufwerk, welches ggf. für den Benutzer angelegt werden soll
	$path = "\Server-IP-Addressdatenaustausch"

	#Richtige Domäne eintregen
	$objUser = [ADSI]“LDAP://localhost:389/dc=domain,dc=com”

	$OU = $OUhash1[$ouOuNameDrop.SelectedItem.ToString()]
	$OU = $OU.substring($OU.lastindexof("/")+1)
	$TSOU=[ADSI]“LDAP://localhost:389/ou=$OU,OU=Companies,dc=domain,dc=com”

	if($TSOU.true){

	foreach($row in $dgDataGrid.rows){
		if ($row.Cells[0].Value -ne $null){

			$CN=$row.Cells[1].Value + " " + $row.Cells[0].Value								

			$SN=$row.Cells[1].Value									

			$title="#"

			$description=$row.Cells[3].Value

			$department="#"

			$streetAddress=$row.Cells[5].Value

			$postalcode=$row.Cells[4].Value

			$telephoneNumber=$row.Cells[6].Value

			$givenName=$row.Cells[0].Value	

			$company=$row.Cells[7].Value	

			$mail="#"

			$userPrincipalName=$row.Cells[2].Value + "@domain.com"

			$Samaccountname=$row.Cells[2].Value

			$group1Name=$UD.Gruppe1inOU

			$group2Name=$UD.Gruppe2inOU

			$group3Name=$UD.Gruppe3

			$group4Name=$UD.Gruppe4

			$group5Name=$UD.Gruppe5

			$group6Name=$UD.Gruppe6

			$group7Name=$UD.Gruppe7

			$Location="Deutschland"

			$User=$TSOU.create(“user”,”cn=$cn”)

			$User.Put(“sAMAccountName”,$Samaccountname)

			$User.put(“SN”,$SN)

			$User.put(“Title”,$title)

			$User.put(“Description”,$description)

			$User.put(“department”,$department)

			$User.put(“streetAddress”,$streetAddress)

			$User.put(‘telephoneNumber’,$telephoneNumber)

			$User.put(‘givenName’,$givenName)

			$User.put(‘company’,$company)

			$User.put(‘mail’,$mail)

			$User.put(‘L’,$Location)

			$User.put(‘userPrincipalName’,$userPrincipalName)

			$User.setinfo()

			$User.psbase.Invoke(“SetPassword”,”Caliber1”)

			$User.psbase.InvokeSet(‘Accountdisabled’,$false)

			$User.psbase.CommitChanges()

			write-host "Bitte 5 Sekunden warten - Benutzer wird angelegt..." + $result
			[System.Threading.Thread]::Sleep(5000)
			[system.windows.forms.messagebox]::Show("User " + $row.Cells[0].Value + " " + $row.Cells[1].Value + " created")

			foreach ($objItem in $objListbox.SelectedItems)
   			{
				$group = $Grouphash1[$objItem]
				$groupname = $group.substring($group.lastindexof("/")+1)
				Write-Host $groupname

				Add-QADGroupMember  -Identity $groupname -Member $row.Cells[2].Value
			}

			if ($checkbox.Checked)
			{

			write-host "Datenaustauschlaufwerk anlegen..."

			if (!(Test-Path ($path + $row.Cells[2].Value))){
				new-item -path $path -name $row.Cells[2].Value -type directory
			}else {
				Write-Host $row.Cells[2].Value " folder already exists"
 			}

  			$Acl = Get-Acl ($path+ "" + $row.Cells[2].Value)
    		$Ar = New-Object system.security.accesscontrol.filesystemaccessrule($row.Cells[2].Value,"Modify","ContainerInherit,ObjectInherit","None","Allow")
    		$acl.setAccessRule($ar)
    		Set-Acl ($path + "" + $row.Cells[2].Value) $acl

			Write-Host "Datenaustauschlaufwerk wurde erfolgreich angelegt"
			}
		}
	}

	}else{Write-host “Error OU doesn’t exist to proceed further, please create one” -foregroundcolor RED}

}

$OUhash1 = @{ }
$Grouphash1 = @{ }
$MBhash1 = @{ }

$form = new-object System.Windows.Forms.form
$form.Text = "Quick User Create Form"
$form.size = new-object System.Drawing.Size(910,520) 

$msTable = New-Object System.Data.DataTable

$msTable.TableName = "GroupName"
$msTable.Columns.Add("FirstName")
$msTable.Columns.Add("LastName")
$msTable.Columns.Add("UserName")
$msTable.Columns.Add("Description")
$msTable.Columns.Add("Postal-Code")
$msTable.Columns.Add("StreetAddress")
$msTable.Columns.Add("Telephone")
$msTable.Columns.Add("Company")

# Add DataGrid View

$dgDataGrid = new-object System.windows.forms.DataGridView
$dgDataGrid.Location = new-object System.Drawing.Size(10,10)
$dgDataGrid.size = new-object System.Drawing.Size(870,200)
$dgDataGrid.AutoSizeRowsMode = "AllHeaders"
$form.Controls.Add($dgDataGrid)

$dgDataGrid.DataSource = $msTable

# Add OU Drop Down
$ouOuNameDrop = new-object System.Windows.Forms.ComboBox
$ouOuNameDrop.Location = new-object System.Drawing.Size(100,260)
$ouOuNameDrop.Size = new-object System.Drawing.Size(230,30)
$ouOuNameDrop.Items.Add("/Users")
$OUhash1.Add("/Users","Users")
$root = [ADSI]''
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.Filter = '(objectClass=organizationalUnit)'
$searcher.PropertiesToLoad.Add("canonicalName")
$searcher.PropertiesToLoad.Add("Name")
$searcher1 = $searcher.FindAll()
foreach ($person in $searcher1){
[string]$ent = $person.Properties.canonicalname
$OUhash1.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")),$ent)
$ouOuNameDrop.Items.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")))
}
$form.Controls.Add($ouOuNameDrop)

$objListbox = New-Object System.Windows.Forms.Listbox
$objListbox.Location = New-Object System.Drawing.Size(435,220)
$objListbox.Size = New-Object System.Drawing.Size(445,250) 

$objListbox.SelectionMode = "MultiExtended"

$objListbox.Height = 250

$form.Controls.Add($objListbox)

# Add OU DropLable
$ouOuNamelableBox = new-object System.Windows.Forms.Label
$ouOuNamelableBox.Location = new-object System.Drawing.Size(10,260)
$ouOuNamelableBox.size = new-object System.Drawing.Size(100,20)
$ouOuNamelableBox.Text = "OU Name"
$form.Controls.Add($ouOuNamelableBox) 

# Add Group Drop Down
$searcherGroup = new-object System.DirectoryServices.DirectorySearcher($root)
$searcherGroup.Filter = '(objectClass=group)'
$searcherGroup.PropertiesToLoad.Add("canonicalName")
$searcherGroup1 = $searcherGroup.FindAll()
foreach ($person2 in $searcherGroup1){
[string]$ent = $person2.Properties.canonicalname
$Grouphash1.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")),$ent)
$objListbox.Items.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")))
}  

# Add Group DropLable
$snServerNamelableBox = new-object System.Windows.Forms.Label
$snServerNamelableBox.Location = new-object System.Drawing.Size(380,220)
$snServerNamelableBox.size = new-object System.Drawing.Size(100,20)
$snServerNamelableBox.Text = "Groups:"
$form.Controls.Add($snServerNamelableBox) 

# create radiobutton1
$checkbox = New-Object Windows.Forms.checkbox
$checkbox.text = "Datenaustauschlaufwerk anlegen?"
$checkbox.height = 20
$checkbox.width = 200
$checkbox.top = 300
$checkbox.left =10
$form.controls.add($checkbox)

# Add Create Button

$crButton = new-object System.Windows.Forms.Button
$crButton.Location = new-object System.Drawing.Size(10,360)
$crButton.Size = new-object System.Drawing.Size(150,23)
$crButton.Text = "Create User"
$crButton.Add_Click({CreateMailbox})
$form.Controls.Add($crButton)

$form.topmost = $true
$form.Add_Shown({$form.Activate()})
$form.ShowDialog()

psMan stelle sich vor: Ein Fileserver mit diversen Gruppenberechtigungen am Dateisystem soll durch neue Sicherheitsgruppen, analog der alten Gruppen, erweitert werden.

Beispiel:

Die Sicherheitsgruppe G_Test hat in dem Ordner Fileserver:DatenTemp Vollzugriff. Nun soll Gruppe N_Test dieselben Berechtigungen auf diesen Ordner erhalten.

Und da kommt Powershell wie gerufen. Mit folgendem Skript wird abgefragt, ab welchem Ordner + (Unterordner) überprüft werden soll. Danach wird automatisch nach den angegebenen Gruppen gesucht und diese duch die neue Domäne ersetzt. Auch die Vererbung wird geprüft und ggf. übertragen. Es funktioniert nur, wenn die Gruppen gleich heißen, kann aber schnell abgeändert werden.

#ChangeACL.ps1

#The possible values for Rights are
# ListDirectory, ReadData, WriteData
# CreateFiles, CreateDirectories, AppendData
# ReadExtendedAttributes, WriteExtendedAttributes, Traverse
# ExecuteFile, DeleteSubdirectoriesAndFiles, ReadAttributes
# WriteAttributes, Write, Delete
# ReadPermissions, Read, ReadAndExecute
# Modify, ChangePermissions, TakeOwnership
# Synchronize, FullControl

$StartingDir=Read-Host "What directory do you want to start at?"

foreach ($file in $(Get-ChildItem $StartingDir -recurse | where {$_.PsIsContainer})) {
  " "
  "Objekt: " + $file.FullName

  $name = Get-Acl $file.FullName | ForEach-Object { $_.Access  } | Group-Object IdentityReference | % {$_.Name}
  $rights = Get-Acl $file.FullName | % {$_.Access} | % {$_.FileSystemRights}
  $IsInherited = Get-Acl $file.FullName | % {$_.Access} | % {$_.InheritanceFlags}

  for($i=0;$i -lt $name.count ;$i++)
  {
        "User: " + $name[$i]
        "Rights: " + $rights[$i]

        #Insert your groups which will be replaced
        if($name[$i] -eq "domain_ATest" -or $name[$i] -eq "domain_ATest2")
        {
                $name[$i] = $name[$i].Substring(13)
                $name[$i] = "domain_B"+$name[$i] #type in the new domainname
                $acl = Get-Acl $file.FullName

                $permission = $name[$i],$rights[$i],$IsInherited[$i],"None","Allow"
                $rule=new-object System.Security.AccessControl.FileSystemAccessRule $permission

                $acl.SetAccessRule($rule)
                $acl | Set-Acl $file.FullName

        }
  }

 }

Sumby-Full

Vielen ist es bekannt, dass die Exchange Server Konsole nur wenig Informationen über Postfächer ausgibt, zumindest, wenn man mehrere Postfächer vergleichen möchte. Powershell kann da schon mehr Infos gleichzeitig ausgeben, wobei hier die Übersichtlichkeit leidet.

Mit Hilfe des Exchange Dev Blogs von Glen Scales habe ich eine neue GUI erstellt, welche sehr viele Infos über die Mailboxen auf einem oder mehreren Exchange-Servern darstellt. Z.B.: Kann nach Postfachgröße (Anzahl der Elemente oder der Speicherbelegung) sortiert werden. Eine Auflistung der Unterordner in einem Postfach ist auch möglich.

Einen Auszug von Filtern zeigt der folgende Screenshot:

sumby-filters

Außerdem kann zwischen verbundenen und nicht-verbundenen Postfächern geschaltet werden:

sumby-disconnected

Das Skript muss auf einem Exchange-Server ausgeführt werden. Getestet wurde es auf einem deutschen Exchange-Server 2010. Das Skript muss daher in diesen Ordner kopiert werden: C:Program FilesMicrosoftExchange ServerV14Scripts

Außerdem muss der ausführende Account Zugriffsberechtigungen auf den restlichen Postfächern besitzen.

Das Skript ist hier zum Download verfügbar.

Normalerweise ist es nur an einem Outlook Client oder über OWA möglich seinen eigenen Abwesenheits-Einstellungen zu ändern, bzw. eine automatische Antwort an den Sender zu schicken.

In einem aktuellen Fall zieht Kunde X mit seinem Mailserver um. In dieser Umstellungszeit sollen nun alle Sender eine automatische Antwort erhalten, dass es eben zu Problemen kommen kann oder der Empfang von E-Mail’s nicht zu 100% gewährleistet ist.

Wie schon erwähnt, gibt es keine Transport-Regel o.ä. um so eine automatische-Antwort für bestimmte Postfächer zu setzen.  Dann bin ich auf das Glen’s Exchange Dev Blog aufmerksam geworden. Glen Scales hat eine Library geschrieben (EWSOofUtil.dll), die es für einen Administrator ermöglicht, die Automatische Antwort für jeder Postfach über EWS zu setzen.

Wie es funktioniert, erkläre ich im Folgenden:

…weiterlesen

Pages: 1 2 3 Next

autodesk autocad map 3d 2010 cs4 microsoft windows 7 home premium (32 bit) office 2010 standard (64-bit) Photoshop Top Secret microsoft office excel 2010 adobe audition cs5.5 mac windows vista home basic with sp2 (32bit) word 2010 adobe cs5 master collection mac autodesk mapguide studio 2009 creative suite 4 web standard microsoft office 2007 home and student audition cs5.5 mac mappoint 2006 europe