iOS Development – Der Einstieg

Die letzten zwei Abende hab ich mich intensiv mit dem Thema iOS Entwicklung beschäftigt. Mein erstes Projekt war in XCode schnell erstellt und ich konnte den generierte Code begutachten.
Ich hab mich für Objekt-C als Sprache entschieden und war ehrlich gesagt total überfordert. *irgendwas -funtionirgendwas +funktiinwasanderes und und und Wtf

Ich hab den Quellcode wieder geschlossen und mich dem optischen Dingen hingegeben … Kann ja nicht so schwer sein .. denkst
Ich hab dann abgebrochen selbst im Editor und mich der Online Schulung’splattform YouTube zugesendet. Am ersten Abend hab ich mir 4 Stunden Videos zum erstellen von Oberflächen in iOS angeschaut und am nächsten Abend 5 Stunden Videos über Objekt-C

Heute Nacht wird das gesamte wissen aus 9 Stunden YouTube Videos in meine erste iOS App einfließen.

Die Sprache Ansicht finde ich persönlich als Herausforderung da sie so anders ist.. normal schreib ich eine Klasse initialisirre sie und arbeite damit. In Object-c macht man das auch .. nur indirekt. Man teilt im Code mit, mit welchem Objekt im Speicher man gerne arbeiten möchte und schickt dorthin die Anweisung. Interne Magie macht dann den Aufruf auf dem Objekt und gibt einem das Ergebnis.
Vermutlich ist das ganze für C Experten etwas einfacher aber als Java und C# Entwickler doch eine ganz andere Welt.

Aber okay ich Kenn jetzt die Grundlagen weiß das ich mit Pointer auf die Objekte zugreifen.

Bin auf heute Nacht gespannt. Ihr findet mich wie immer in livecoding.TV/Onko channel

iOS Apps entwickeln – Der Einstieg

Okay, Android apps zu schreiben ist kein Problem. Man bekommt von Google alles an die Hand und kann direkt los legen, testen und seiner Kreativität freien lauf lassen. Um das ganze in den App Store zu bringen zahlt man einmalig 25$ für den Developer Account . Entwickeln kann man auf Windows, Linux und Mac.

So jetzt möchte ich eine Native iPhone App entwickeln. Ich muss dazu sagen ich bin besitze keine Apple Produkte. Also was brauch ich… Test Gerät, iPhone, iPad. Jetzt wird’s kompliziert um Apps zu entwickeln und zu testen brauch ich schon mal die Apple Store Lizenz. .. jährlich 99$ .. und zahlt man nicht mehr sind alle apps weg.. bezw nicht mehr nutzbar. Jetzt das nächste Übel. Ohne Mac keine App… Richtig gelesen. Ohne ein MacBook, iMac oder Mac Pro kann man keine Apps Entwickeln… Wtf… Also auf Community und Förderung von Entwicklern wird kein Wert gelegt. Apple ist und bleibt ein Luxus Anbieter, da wird auch kein Unterschied gemacht ob User oder Entwickler.

Danke Apple … Wieder einen Kunden zwangsrekrutiert…

Viel zu faul! Automatisierte Entwicklung.

Ich gehöre, das ist eine Tatsache und nicht mal negativ, ein verdammt fauler Mensch. Immer auf der Suche meine Ziele mit dem geringsten Aufwand zu erreichen und das Maximum raus zu holen.
Das erstrecht wenn ich programmiere. Mein privates PHP Framework aus dem Jahre 2000 ist im Grunde ein Vorlauf Model heutiger Frameworks nur leichter , kleiner und anpassungsfreundlicher.

Immer wieder erstellt man neue Tabellen in der Datenbank. Diese haben 1zu1 , 1 zu N und N zu N Abhängigkeiten sowie zwischen Tabellen. Objekte müssen geladen und gespeichert werden, gelöscht und geupdatet werden.

Und hier fängt das faul sein so richtig an. Es ist immer der gleiche Datenbank Layer und nur die Abfragen ändern sich. Objekte haben die in  der Tabelle definierten propertys und entsprechende fetter und setter.

Wennn ich beim entwickeln merke das ich Code habe der zwar in sich einzigartig ist aber doch für alles mögliche erstellt werden muss nutzte ich die Zeit zum erstellen einer Generator Lösung statt den Code selbst zu schreiben. Dieser generierte Code hat natürlich auch Nachteile. Der wichtigste, Änderungen an dem Objekt werden gelöscht beim generieren. Also werden diese im Generator gemacht. Spezifische Anpassungen werden dann in Klassen geschrieben, welche die generierten Klassen extenden. Also auch dieses Problem ist somit gelöst.

Ich kann es nur jedem Entwickler empfehlen. Werdet fauler und optimiert die Erstellung des Codes.

Keine Zeit, diese Sache mit der Zeit

Soviel möchte ich machen, soviel erreichen und alles am besten sofort.
Aktuell arbeite ich an meinem Content Management System, an der MockBot App, an der Meettube App, einem CRS, dem Minecraft-Social Plugin, einem Redaktionssystem für YouTube Trends und sicher noch ein paar anderen Dingen. Vieles liegt angefangen auf Eis und vieles Spuckt noch in meinem Kopf herum.
Natürlich alles in meiner Freizeit, den fürs Geld verdienen muss ich immer noch aus dem Haus. Wie viel würde ich wohl schaffen wenn ich diese Zeit auch noch hätte und endlich nach und nach die Projekte fertig werden würden.

Wenn… So bleibt die Masse, ein Haufen angefangener Projekte welche niemals fertig werden.

Gesamt Wert des Codes an Stunden berechnet, mehrere hundert tausend Euro. Tatsächlich aber aktuell genau 0 Euro wert.

Es bleibt nur eins , Disziplin und durchhalten. Nach und nach, Stück für Stück Projekte fertig stellen und nur nicht die Übersicht verlieren.                                                                                     
In meinem virtuellen Freizeit Büro gibt’s immer was zu tun. Selbst wenn ich nicht programmiere. Managen, Planen, Konzeption, Architektur und Prioritäten setzten. Sich selbst Abgabe Termine setzten und … als würde ich mir von so einem in meiner Freizeit was sagen lassen.. 

Erinnert mich ganz schön an meine Selbstständigkeit, nur ohne das Risiko und den Druck Geld verdienen zu müssen.

Nächste mal, Burnout durch Freizeitgestaltung?

Docker, rumspielen mit Containern

Diese Woche geht’s um Container, Java,  Tomcat, Jetty, Railo , lucee , Enterprise und Amazon.

Eine Enterprise Lösung soll mit docker in eine Testumgebung gebracht werden.

Die Grundlage bildet ein beliebiges Unix in meinem Fall centos oder wheezy (debian). Der erste Container beinhaltet Java 7 und bildet somit einen wichtigen Grundstein. Ich habe Java in einem eigenen Container damit ich diesen leichter verändern kann ohne die anderen Komponenten zu verändern.
                                                                  
Als nächster Container steht Tomcat, alternativ Jetty auf dem Plan. Diese werden furbdie Java compilierung benötigt.

Der dritte Container ist ein servlet für die jvm dies wird benötigt um coldfusion zu interpretieren. Hier kann noch das letzte stabile railo servlet genutzt werden oder schon der Nachfolger lucee verwendet werden.

Der vierte Baustein ist die Enterprise Lösung als application selbst.

Nun können die verschidenen Container wahlweise aufeinander aufbauen um meine Application auf jetty und tomcat zu testen kann ich natürlich auch zwei verschiedene Testsenarien aufbauen eben so die Verwendung von lucee und railo.

Natürlich kann ich auch noch weitere Java Container einrichten um zu sehen wie es mit Java 8 läuft.

Wenn alle Container eingerichtet sind und ich das Produktions System nachgebildet habe können die Tests der enterprise auch schon losgehen.

Durch das flexible tauschen der Container ist es problemlos möglich upgrades von wichtigen Komponenten schnell und einfach in einer testumgebung laufen zu lassen um zu prüfen ob die produktiv Systeme ein entsprechendes upgrade bekommen können.

Entsprechende Dockerfiles und eine Übersicht nützlicher Befehle werden in kürze folgen.

NPC Shops #Minecraft Bukkit

Das NPC Shopsystem läuft endlich rund. Die Menü Anzeige weißt keine Fehler mehr auf und die Preise ändern sich wie gewünscht, bis auf eine Kleinigkeit. Solange das Menü offen ist ändert sich für den aktuellen Spieler die Preise nicht. Das darf Natürlich nicht sein. es ist zwar nur eine Schönheitsfehler aber stellt mich nicht zufrieden. Das pflegen der Shops über ein Webinterface ist auch extrem angenehm und kann auch von unterwegs gepflegt werden.

Einen Einblick bekommt ihr auf dem Minecradt Server : mcsocial.minecraft.net

#minecraft #bukkit Erste versuche #mclegend

Gestern Abend habe ich angefangen mich mit Minecraft Plugins auf Basis von Bukkit zu beschäftigen.

Sehr insteressantes Thema und auch hervorragend geeignet für Java Einsteiger. Wenn man die Grundlagen hat ist es kein Problem Minecraft nach seinen Wünschen zu Gestalten.

Meinen Server hab ich nun schonmal mit bukkit aufgerüstet und ein wunschplugin installiert das keinen großen Einfluss auf das spiel selbst nimmt. Dabei handelt es sich um das StepsSit Plugin um sich Stühle zu bauen auf dennen man sitzten kann. Ich persönlich finde auch das dieses Plugin weitere Möglichkeiten bietet auf friedlicher Art zusammen zu spielen.

Mein erstes Test Plugin ist für das Projekt #mclegend gedacht. Dieses Plugin gibt Spielern der Gruppe Zandaren einen Buff wenn der nächste Block ein Wasserblock ist. Wie immer hab ich natürlich vergessen zu prüfen ober der Buff bereits existiert, wenn dies zu trifft muss der Buff ja nicht neu gesetzt werden. Zudem würde das neu setzten des Buffs bei jeder Bewegung die Performance des Servers extrem runterziehen. Also Notiz an mich:

TODO: Change Buff Handling 🙂

Mehr zu Plugins in Minecraft demnächst hier im Block.

Wir programmieren einen Bot

Um nun endlich mal vor ran zu kommen, starte Ich hier auf meinem Blog eine Neue Reihe.

Auch wenn ich kein begabter Schreiber bin kann ich trotz allem sehr begabt auf der Tastatur rumhacken.

Dies soll kein Tutorial darstellen und auch keine Anleitung zum Programmieren lernen.
Ich gehe pauschal davon aus das meine Leser ein fundiertes Grundwissen haben. Also ehr mehr wisst als ich? Ich bin gespannt. Challenge accepted! Muhahahah 😉

Okay fangen wir ganz einfach an. Ich arbeite hier mit Visual Studio 2013 da ich beschlossen habe das ganze in C# zu realisieren. Der Bot selbst soll uns im Spiel Ingress unterstützen. Also erstellen wir ein neues Projekt. Welche Art von Projekt man nimmt ist im Grunde wurscht.. ein Texteditor tut es auch! Da mir das aber zu stressig ist und ich nicht auf den Komfort einer IDE verzichten möchte wähle ich ein .. ähm .. WebProjekt. [ASP.net mit MVC]

WebProjekt? WTF?

Ein Bot im WebProjekt? Klar warum nicht?

Meine Wahl beruht auf zwei Überlegungen. Wie oft sitze ich am eigenen Rechner und wo kann ich Software installieren. Nicht oft und ehr weniger im Büro.

Also baue ich das ganze im Web und hoste es auch noch kostenlos bei Azure, also perfekt!

Zack 5 Mausklicks später, das Projekt steht. Na ja, zumindest der Grundrahmen… Einmal auf Azure veröffentlichen und schon ist es auf meiner Azure Webseite verfügbar.

Wie man sieht ist direkt eine „fertig“ Webseite online mit allem was man so braucht. Jetzt das tollste:

Wir implementieren die Google Auth Klamotten damit wir auch direkt mit unserem Spiele Account eingeloggt sind und den Token haben 🙂

Fangen wir mal an:

Öffne App_Start\Startup.Auth.cs

jetzt wird es kniffelig…

aus der letzten Zeile:

// app.UseGoogleAuthentication();

die Kommentar Slash [ // ] entfernen. Fertig.
Gut das war nun wirklich extrem komplex, dafür haben wir nun schon mal einen wichtigen Schritt erledigt. Der Token für die Ingress API steht uns nach dem Login zur Verfügung, cool. Dann testen wir mal den Google Login.  Klappt.

Nun benötigen wir eine Kommunikationsschnittstelle zu Ingress.
Also eine neue Klasse erstellen im neuen Ordner „Bot“ nennen wir sie mal… „IngressWebservice“ und lassen sie im Namespace Bot.

Was brauchen wir noch …
Ein Model für die Points ( Bot.Points)

Soll erstmal reichen da wir erstmal nur versuchen die Points von unserem aktuellem Standort abzurufen. Btw Standort, erstellen wir doch noch ne Klasse GPSControler.
Wir haben zwar im Webserver kein GPS Empfänger, wir wollen aber auch keine GPSDaten auslesen. Wir wollen unsere eigenen GPS Daten nutzen.

Wieder zurück im IngressWebservice:

erstmal ne public Points gePoints() { } Funktion um an die Punkt Daten zu kommen.
Mit dieser Funktion bauen wir erstmal die Kommunikation mit der Ingress API auf und  plaudern mit Ihr. Wie machen wir dass?

Als erstes müssen wir wissen wie die Ingress APP denn mit dem Server kommuniziert.
Das macht sie natürlich über ein Webservice und den findet man unter https://www.ingress.com/r/ also man findet ihn nicht wirklich hier, es kommt eine Weiterleitung und es gibt auch keine öffentliche Dokumentation zur API.. leider …
Aber wenn wir uns den APP Quellcode von Ingress anschauen können wir uns das alles ansehen. Anleitung zum Beispiel: hier

Am besten auch gleich Android Studio mit allem benötigten Zeug installieren.

Auslesen der punkte: /r/or74v5e0dijoseab
Irgendwas für den Chat: /r/tx9a36zfmalr5s35
Game Entinits: r/ivrsh7tuvj0if77k
Action Informationen r/tx9a36zfmalr5s35

Da es eine Rest API ist laufen alle informationen also über JSON \o/ das ist Spitze.

Das abrufen der Punkte würde dann in etwa so aussehen, dieser ganze unleserliche kram sind die geforderten Informationen. Bei meinem letzten Bot war das noch alles schön lesbar. Jetzt ist es verschlüsselt und sicher und keiner kann mehr die Api unberechtigt nutzen. So die Theorie.

{
„tnpkzqqu5p3mn4rp“:“or74v5e0dijoseab“,
„y76begpg0lz0g5s3″:“3aad79b9e7b135fa9c8b2c67bf6a051b0e0617f7“,
„l2pa0wslrtmthlhf“:64,
„s3xowgcoqduol0ij“:-90000000,
„cvv98kwi14wsfesr“:-180000000,
„as1getmlsyn7cyrg“:90000000,
„9xrrc4me7owrbazc“:180000000,
„kz90pcxjj0nypj0a“:0
}

für Portale dann ehr dass hier:

// Portal
{„cprnnhnm9s44iu39“:[„1_34055_21824″,“1_34056_21824″,“1_34055_21826″,“1_34056_21826″],“tnpkzqqu5p3mn4rp“:“ivrsh7tuvj0if77k“,“y76begpg0lz0g5s3″:“3aad79b9e7b135fa9c8b2c67bf6a051b0e0617f7″,“l2pa0wslrtmthlhf“:52,“s3xowgcoqduol0ij“:-90000000,“cvv98kwi14wsfesr“:-180000000,“as1getmlsyn7cyrg“:90000000,“9xrrc4me7owrbazc“:180000000}

Ingress sicher zu gestalten ist echt nicht einfach da der Code, in Java geschrieben wurde, einfach wieder „lesbar“ gemacht werden kann. Im Grunde OpenSource, am einfachsten ist es das ganze auch so zu handhaben und die „Community“ den Rest machen zu lassen 😉

Wie man sehen kann übergibt man die GEO Daten auch an die API, also brauchen wir uns diese auch nur zusammen schupsen und mitliefern.

Als nächstes müssen wir nur noch raus finden was von den Werten was sein soll…
Okay:

„s3xowgcoqduol0ij“:-90000000,
„cvv98kwi14wsfesr“:-180000000,
„as1getmlsyn7cyrg“:90000000,
„9xrrc4me7owrbazc“:180000000,

Das ist noch einfach. Hier haben wir GEO Daten im Grunde brauchen wir davon nichts aber um „sicher“ zu gehen liefern wir immer schön unsere Geo Position mit. Wir wollen ja nicht auffallen.

So dieser Beitrag ist erst mal lang genug.
Teil 2 wird folgen!

Sprits, Grafiken und Co

Ein neues Projekt soll es werden.
Da ich mich in der letzten Woche so ausgiebig mit Spiele Entwicklung und Co beschäftigt habe nun der Plan.

Eine Super Multimedia Extreme Massen Multiplayer Online Rollen Spieler  Wirtschaftssimulation soll es werden Oo. Was auch immer das ist…

Jedenfalls benötigt man hierfür Bilder, Sounds und noch mehr Objekte… *würg* 2D/3D mal sehen wer sich anbietet und was gebaut wird.

Daher mein Aufruf an die Menschen die so was können und auf der Suche nach einem Spass Projekt sind… Meldet Euch!

Ja, es wird auch einen Super Hammer YouTube Chanel eingerichtet mit allen Infos und Mitwirken der Zuschauer, Fan Seite auf Facebook , Twitter und co sowieso.

Bock? Dann los 😉 Hol dir deinen Ruhm!

Ingress Bot zum farmen und mehr als App

In allen großen Spielen gibt es Cheater, Cheats, Modifikationen und mehr.

So natürlich auch bei Ingress.
Wer über root auf seinem Gerät verfügt kann mit verschiedenen Apps seine Koordinaten fälschen und so hacken, linken, zerstören und deployen. Einige dieser Apps bringen im Spiel Störungen die dieses schummeln sehr beeinträchtigen.

Hier habe ich mit einem Kollegen eine App entwickelt der sowohl das GPS Signal, wie auch die Netzwerk Location fälscht. Diese wir Ende der Woche auf dem play Store zu finden sein. Da ich diesen testen möchte.

Nach dem wir dies ermöglicht haben entwickelte ich eine App die einem das klicken im Spiel abgenommen hat.

Auch hier wird Ende der Woche eine App erscheinen um touch Makros zu erstellen.

Kombiniert erhält man einen Farmbot für Ingress. Welcher zu den verschiedenen Portalen geht diese mehrmals hackt und dann weitet zieht.

Weiter habe ich durch den Bot fehlende Funktionen wie Massen drop, Massen Recycling nachgerüstet.
Damit ist es möglich von einem ausgewähltes item eine definierte Menge zu droppen oder zu feuern.

Die Funktionen werden jedoch nicht in Kombination mit den gefälschten Positionen genutzt,  sie bieten nur entsprechende Erleichterung vor Ort.

Die beiden genannten Apps werde ich dann noch bebildert mit der veröffentlichung vorstellen.

image

Hier ein Bild der ersten Beta. Die erweiterten Funktionen sind hier noch nicht zu sehen. Die Auswahl der Portale erlaubt das geziehlte farmen. Die Portal Informationen werden vom Webserver regelmässig aktualliesiert und der App via API zur Verfügung gestellt.

Der Bot ist nicht erhältlich. Und dieser Artikel soll nur aufzeigen welche Möglichkeiten die App Entwicklung bietet. Getestet wurde der Bot mit einem separaten Account und ausschließlich für die Testphase genutzt.