NSMutableArray size count numberofitems

NSMutableArray count

NSMutableArray count

Da bei einem NSMutableArray keine size Operation funktioniert, aber die Anzahl der Elemente wichtig ist nutzt man die Operation count.

NSString *firstObject = @“firstObject“;
NSString *secondObject = @“secondObject“;

NSMutableArray *testArray = [[NSMutableArray alloc]init];
[testArray addObject:firstObject];
[testArray addObject:secondObject];

NSLog(@“Size des Arrays: %i“, [testArray count]);

Resultat eine Log Ausgabe:

2009-09-09 12:27:08.838 XML[56422:20b] Size des Arrays: 2

NSMutableArray LogAusgabe

NSMutableArray LogAusgabe

Bing Useragent Cuil UA Facebook link share

Aktuell wird die neue Microsoft Suchmaschine Bing ja durch alle Medien gezerrt. Der findige Webmaster will natürlich wissen, was der Crawler so auf seiner Seite tut.

Um die Logs entsprechend auswerten zu können, benötigt man den Useragent des Crawlers und dessen restlichen Daten:

IP: 65.55.106.242

Hostname: msnbot-65-55-106-242.search.msn.com

Useragent: msnbot/2.0b (+http://search.msn.com/msnbot.htm)

Desweiteren ist auch die „Link-Share“ Funktionalität von Facebook, dem größten sozialen Netzwerk weltweit mit über 200 Millionen Mitgliedern ein echter Traffic_Bringer, eine Auswertung der Zugriffe über Facebook daher auch nützlich. Hierzu die Facebook Daten:

IP: 69.63.178.249

Hostname: out.249.01.snc1.facebook.com

Useragent: facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)

Und zum Abschluss noch die anfangs gehypte Suchmaschine CUIL, die aber bis dato nicht an Bedeutung gewonnen hat.

IP Adresse: 38.99.13.116

Hostname: crawl-15c.cuil.com

Useragent: mozilla/5.0 (twiceler-0.9 http://www.cuil.com/twiceler/robot.html)

Umgesetzt wurde dieses Wissen in der log-Auswertung von aktuellekalenderwoche.de und oneclickbutton.de bereits.

.tostring() überschreiben für Loggingzwecke

Wenn man am entwickeln ist baut man fast automatisch Logginganweisungen ein um dem Programmverlauf zu folgen, sofern man keine Debug-Umgebung nutzen kann. Meistens nutzt man dann an mehreren Stellen fast die gleichen Zustandsausgaben.

Macht man sich einmal die Arbeit, die tostring() Methode zu überladen, erspart man sich eine Menge Arbeit und hällt nebenbei den Quellcode des eigentlichen Programmablaufs frei von überflüssigem Code.

Folgende Situation:

Object:

public class object {
  private String vString1 = "";
  private int vIntZahl = 1;
  public String toString() {
      return ("der Inhalt des aktuellen Objektes ist: vString1: " + vString1 + " vIntZahl: " + vIntZahl);
  }
  public String getVString1() {
    return vString1;
  }
  public void setVString1(String string1) {
     vString1 = string1;
 }
  public int getVIntZahl() {
    return vIntZahl;
 }
 public void setVIntZahl(int intZahl) {
    vIntZahl = intZahl;
  }
}

Main Mathode:

public class mainclass {
public static void main(String[] args) {
Exampleobject vConcreteObject= new Exampleobject();
System.out.println("Inhalt vorher: "+vConcreteObject.toString());
vConcreteObject.setVIntZahl(3);
vConcreteObject.setVString1("hallo");
System.out.println("Inhalt nachher: "+vConcreteObject.toString());
}
}

Normal müssten wir bei beiden System.out Aufrufen die Get-Funktionen des Objektes nutzen. Die Ausgabe ist nun an jedem Ort normiert und wenn sich etwas am Aufbau des Objektes ändert, kann dies zentral in der toString() Methode angepasst werden und alle zugreifenden Ausgaben können genutzt werden.

Weiterführend könnte man natürlich eine toLog() Funktion einführen, wenn man ausführlichere Informationen haben möchte, das Prinzip bleibt aber gleich.

Noch einen drauf setzen kann man mit dem Umleiten der log Nachrichten per Syslog an seine eigene Syslog factory.