Laden...

Forenbeiträge von Corpsegrinder Ingesamt 401 Beiträge

03.01.2011 - 21:41 Uhr

Ah, alles klar, danke für die Aufklärung.

03.01.2011 - 21:24 Uhr

Die Standardzeichen in UTF-16 beginnen mit 00 gefolgt von der ASCII Darstellung. Hier beginnt aber keine Folge mit 00. Also entweder sehe ich hier etwas komplett falsch, oder es sind merkwürdige Zeichen.

03.01.2011 - 19:56 Uhr

sollte UTF-8 sein.
Es müsste sich eher um (16 Bit-) Unicode handeln.
Eingeleitetz vom Prefix \u gefolgt von 2 Bytes (hexadezimal).

Sorry, aber das stimmt so nicht. UTF-8 bedeutet nicht, dass es eine Länge von 8-Bit hat. UTF-8 Zeichen können entweder normale 8 Bit Folgen sein, wo sie der ASCII Darstellung entsprechen, oder 2-4 Byte lange Ketten, die eine entsprechende Kodierung aufweisen. Alle Unicode Kodierungen können sämtliche Unicode Zeichen darstellen.

27.12.2010 - 12:46 Uhr

Hier mal in Ruby. Ein minimaler Brainfuck Interpreter, nur +,-,<,> und . sind implementiert, für Hello World reicht es 😉


class BFIP
  
  def initialize
    @arr = []
    @index = 0
    
    @syms = ["+","-","<",">","."]
    
    30000.times do |i|
      @arr[i] = 0
    end
  end
  
  def parse code
    code.each_char do |c|
      self.send(c.to_sym) if @syms.include?(c)
    end
  end
  
  def +
    @arr[@index] = (@arr[@index] + 1) % 256
  end
  
  def -
    @arr[@index] = (@arr[@index] - 1) % 256
  end
  
  define_method :"." do
    print @arr[@index].chr
  end
  
  def <
    @index = (@index - 1) % 30000
  end
  
  def >
    @index = (@index + 1) % 30000
  end
end

a = BFIP.new

code_arr = []

10.times do |i|
  code_arr << "+++++++>++++++++++>+++>+<<<"
end

code_str = "#{code_arr.join}++.>+.+++++++..+++.>++.<< +++++ +++++ +++++.>.+++.------.--------.>+.>."

puts

a.parse(code_str)

puts

edit:

und eine mit metaprogramming


class Foo
  def method_missing(name, *args)
    puts name.to_s.sub(/_/, " ").capitalize
  end
end

Foo.new.hello_world!

17.12.2010 - 19:28 Uhr

Ich halte das für ein Ding der Unmöglichkeit. Wenn so etwas möglich wäre, dann könnten es Programme wie 3dsmax, Cinema 4D etc. schon. Außerdem könnte man von einem einzigen Bild garnicht genug Informationen ziehen, um ein Modell von allen Seiten darzustellen.

16.12.2010 - 19:39 Uhr

z.b. IronRuby.

Allerdings hat Microsoft vor einiger Zeit das IronRuby Team komplett aufgelöst. Also keine offizielle Weiterentwicklung seitens MS mehr. Und der letzte RubySpec den ich von IronRuby kenne waren auch nur 86% und das wahrscheinlich auch nur auf Ruby 1.8.7 bezogen. JRuby hat bei 1.9 inzwischen schon 90% und 1.8 liegt noch darüber. Man kann auch relativ problemlos Rails und .Net Anwendungen miteinander verknüpfen. Oder eben alle JVM Sprachen über JRuby.

16.12.2010 - 15:56 Uhr

Komisch, dass es noch keiner erwähnt hat, aber für die Webentwicklung ist Ruby on Rails unschlagbar. Und mit JRuby oder Ruby Enterprise Edition ist die Performance auch nicht schlecht. Und wirklich performancekritische Bereiche können ja immernoch in anderen Sprachen umgesetzt werden.

16.12.2010 - 14:17 Uhr

Hi,

native Apps kann man für das iPhone nur unter Mac OS X entwickeln. Da man auch für MonoTouch etc. immernoch das iPhone SDK benötigt. Es gibt allerdings die Möglichkeit WebApps mit HTML5, CSS und JavaScript zu entwickeln. Man hat Zugriff auf einige Hardwarefeatures, also reicht es manchmal aus und für's Rumspielen allemal. Erwähnt sei hier auf noch SproutCore, womit man sehr schöne HTML5 Apps schreiben kann, ohne selber HTML schreiben zu müssen 😉

29.10.2010 - 20:10 Uhr

Ah, sry dachte du meinst den normalen Apple EDU Rabatt...

28.10.2010 - 10:02 Uhr

Ein Tipp: http://www.mactrade.de

Die sind günstiger.

27.10.2010 - 10:41 Uhr

Laut aktuellen Tests kann das MBA gut mit dem MBP mithalten. Werde mir sobald das nötige Kleingeld vorhanden ist auch eins kaufen. Gerade durch den Flashspeicher und des trotzdem günstigen Preises ist es imho wirklich attraktiv.

24.10.2010 - 18:07 Uhr

Hi,

das Problem ist, dass deine Verschlüsselung lediglich Security by Obscurity bringt. Solange keiner das Verfahren kennt ist es sicher, allerdings machst du das natürlich durch die Veröffentlichung des Codes hinfällig. Außerdem braucht ja jeder, der Ver- bzw. Entschüsseln will das Programm und könnte durch einen Decompiler wieder an den Code kommen. Nimm besser ein bestehendes Verschlüsselungsverfahren, dass nach heutigen Standards als sicher gilt. Hier bieten sich z.B. AES oder Triple-DES an.

21.10.2010 - 18:01 Uhr

Schau dir einfach mal die asynchronen Aufrufe der Dns Klasse an, z.B. Dns.BeginGetHostAddresses
Das löst aber das Problem nicht, dass er den Timeout nicht selbst festlegen kann.

Da du aber Recht hast, dass man Threads nicht unbedingt abbrechen sollte wäre es in diesem Fall besser den Thread einfach zu ende laufen zu lassen. Durch den Timer hat er ja trotzdem nach seinem Timeout ein Ergebnis. Entweder das Flag ist gesetzt oder eben nicht.

Im Übrigen ist der Einsatz eines Threads überhaupt nicht aufwendig wenn man auf die Möglichkeit des Abbrechen verzichtet:
>

Gruß dev

Löst aber das Problem, dass der Rest der Anwendung nicht weiterläuft und ich glaube das ist hier auch eher das Problem, oder? Ansonsten hat kleines_eichhoernchen ja schon eine gute Lösung gepostet.

20.10.2010 - 18:47 Uhr

Hi,

Threads sind hier absolut unnötig. Erstmal wäre es mit Kanonen auf Spatzen geschossen, und zweitens sollte man niemals einen Thread abbrechen, sondern immer sauber auslaufen lassen. Schau dir einfach mal die asynchronen Aufrufe der Dns Klasse an, z.B. Dns.BeginGetHostAddresses

Gruß

Dario

23.09.2010 - 19:20 Uhr

Extremes Beispiel:Stell die Frage, ob wir gentechnisch manipulierte Lebensmittel in Ordnung sind. Viele Menschen würden "Nein" sagen (ohne das Begründen zu können, sie wollen nicht). Akzeptieren wir aber nur antworten von Experten (in diesem Fall also Forscher und Entwickler in der Gentechnologie), werden fast alle sagen "ist gut". Sollte dann das Unbehagen der breiten Masse übergangen werden?
Beispiel könnte genauso zum Thema Kernenergie etc. gegeben werden.

Das finde ich ist eher ein extrem schlechtes Beispiel... Gentechnik ist ein häufig diskutiertes Thema und viele Menschen, die sich damit auseinandersetzen sind dagegen! Ich zum Beispiel könnte darüber einiges erzählen, obwohl ich weder ein Gentechniker, noch ein Befürworter von Gentechnik bin. Wenn ich zu der Einstellung komme, dass mir eine Technologie nicht gefällt, dann muss ich mich doch zumindest grundlegend damit auseinandergesetzt haben, sonst kann ich das gar nicht beurteilen. Klar muss man nicht gleich ein Experte in dem Bereich sein, aber zumindest sollte man wissen worum es geht, um sagen zu können, dass es einem nicht gefällt. Ansonsten kann man halt sagen, dass es einen nicht interessiert, aber es schlecht machen ohne Begründung ist ziemlich vermessen.

21.09.2010 - 18:27 Uhr

Naja... mal angenommen du hast 2 Clients auf dem Server, lässt aber 100 zu, dann sind natürlich die anderen 98 in deinem Array auf null, weil denen kein Objekt zugewiesen wurde. Also musst du prüfen, ob da überhaupt einer drin ist. Ansonsten schau dir auch mal die foreach Schleife an.

17.09.2010 - 15:30 Uhr

Entschuldigung, da habe ich mich wohl etwas falsch ausgedrückt... Sie "sollten" den gleichen Hashcode liefern. Aber es ist ja klar, dass der Hashcode von Object nicht anhand der Properties entscheiden kann, welchen Hashcode er liefert, ansonsten müsste man sich ja keine Gedanken darüber machen. Ich dachte das wäre soweit klar.

17.09.2010 - 14:56 Uhr

Hi,

der Hashcode zweier Objekte mit gleichen Werten ist auch immer gleich. Allerdings lässt ein Hashcode niemals auf Gleichheit zweier Objekte schließen. Nur wenn 2 Hascodes unterschiedlich sind kann man sicher sein, dass die Objekte nicht gleich sind. Der Hashcode sollte also so zusammengebaut werden, dass er konsistente Ergebnisse liefert. Also für Objekte mit gleichem Wert auch immer den gleichen Hashcode. Aber wie gesagt... auf die wirkliche Gleichheit muss man schon selber prüfen.

17.09.2010 - 14:49 Uhr

Hi,

gibt es viele Beiträge hier im Forum und auch viele Treffer bei Google: Klick mich

17.09.2010 - 14:39 Uhr

Hi,

was genau meinst du damit? Innerhalb eines Programmes kannst du per Type.GetMethods ein Array der Methoden bekommen. Type.GetMethods Method

Wenn du allerdings eine *.cs Datei hast, die du einliest, dann musst du dir wohl einen Parser dafür bauen.

15.09.2010 - 14:02 Uhr

Ich hab mal irgendwann gehört, wielange man eine Glühlampe brennen lassen kann mit dem Strom, der für eine einzige Google-Suchanfrage verbraucht wird. War eine Stunde oder sowas in der Größenordnung... Dann wird das mit der Instant-Suche jetzt wahrscheinlich der doppelte Wert sein 😃

Und genau deswegen setzt Google auch auf erneuerbare Energie. Ich denke bevor man anfängt sich um sowas Gedanken zu machen sollte man lieber gucken, wo man selber etwas verändern kann. Google setzt viel daran CO2 neutral zu arbeiten.

@JunkyXL:

Ja, aber ich versetehe nicht, wo da das Problem ist? Wenn Google die Kapazitäten hat, dann können sie sie meinetwegen auch ausschöpfen.

15.09.2010 - 13:20 Uhr

Der einzige Vorteil für mich speziell liegt darin, dass ich nicht mehr Enter drücken muss, um die Anfrage abzufeuern.
Ansonsten find ichs relativ penetrant während dem Eintippen. Traffic erzeugt es sowieso ohne Ende, zumindest müsste es eine Verzögerung geben, nach der die Suche erst gestartet wird.

Ach komm, die paar bytes, die da durchgehen sind im Zeitalter der Breitbandverbindungen doch ein Witz. Würde es verzögert werden wäre es ja nicht mehr "Instant". Ich finde dieses Feature zeigt sehr schön die technischen Möglichkeiten der heutigen Webtechnologie und vor allem, wie Leistungsstark Googles Search Engine ist. Der praktische Nutzen sei jetzt mal vollkommen aussen vor gelassen.

07.09.2010 - 11:39 Uhr

Wenn du meine Aufgabe gelesen hättest, dann wüsstest du, dass ich erlaubt habe Strukturen zu benutzen, die schon Threadsafe sind. Also auch eine Threadsafe Queue.

Hier aber nochmal eine Lösung, die ich eben erstellt habe:


import scala.actors.Actor
import scala.collection.immutable.HashMap

object Main {

  /**
   * @param args the command line arguments
   */

  def main(args: Array[String]) = {
    TransactionSystem ! ('create, "foo", 4000.)
    TransactionSystem ! ('create, "bar", 0.)
    TransactionSystem ! ('transfer, "foo", "bar", 2000.)
    println(TransactionSystem !? Tuple2('balance, "foo"))
    println(TransactionSystem !? Tuple2('balance, "bar"))
    TransactionSystem ! 'exit
  }

  object TransactionSystem extends Actor {
    start
    case class Account(val amount: Double)
    def act {
      act(HashMap[String, Account]())
    }
    def act(accs: HashMap[String, Account]): Unit = {
      react {
        case ('transfer, from: String, to: String, amount: Double)
          if(accs.contains(from) && accs.contains(to) &&
             accs(from).amount >= amount) => {
            act(accs.filter((acc) => acc != from && acc != to) ++
                HashMap(from -> Account(accs(from).amount - amount),
                        to -> Account(accs(to).amount + amount)))
        }
        case ('create, name: String, amount: Double) if(!accs.contains(name)) => act(accs ++ HashMap(name -> Account(amount)))
        case ('balance, name: String) if(accs.contains(name)) => reply(Some(accs(name).amount)); act(accs)
        case 'exit => exit
        case _ => println("Operation could not be completed."); act(accs)
      }
    }
  }

}

07.09.2010 - 11:04 Uhr

Also ich habe jetzt keine programmierte Lösung parat, aber es wäre relativ einfach gewesen. Alle Transaktionen kommen in eine Queue und werden nacheinander abgearbeitet, so ist kein Lock und keine Synchronisation nötig 😉.

edit: lesen des aktuellen Kontostandes geschieht natürlich direkt...

02.09.2010 - 11:29 Uhr

Und im Bereich "Rund um die Programmierung", der nicht auf C# beschränkt ist. Und wo benutze ich eine statische Methode? Hast du die Implementierung von DataFactory gesehen? Wie gesagt... einige Sprachen kennen keine statics, sondern benutzen andere Prinzipien. In Scala und Ruby ist ALLES ein Objekt.

02.09.2010 - 11:23 Uhr

Der Sinn dieser Factory Methode ist es einen Parameter "Kategorie" anzunehmen und eine Liste mit Daten zurückzuliefern. Keine Seiteneffekte. Das ist absolut testbar. Außerdem denkst du viel zu sehr in C#... Ich benutze z.Zt. so gut wie nie C#, sondern andere Sprachen, die das Konzept der Objektorientierung strikter umsetzen, wie z.B. Ruby oder Scala. Da gibt es keine statischen Klassen, von Daher kann man da auch wunderbar Mocks benutzen. Unterstelle anderen nicht irgendetwas aufgrund von Indizien die du dafür zu sehen glaubst.

02.09.2010 - 11:08 Uhr

Klar ist das Test-Driven. Ich habe keine Zeile der Implementierung geschrieben, bevor der Test fertig war 😉. Außerdem ist das ein Beispiel und stellt keinerlei Anspruch auf Vollständigkeit. Und ich habe geschrieben, dass es Pseudocode ist. Welche Methoden man im .Net Framework zur Verfügung hat ist hierbei vollkommen irrelevant. Aber ich merke schon, dass man mit dir nicht sachlich diskutieren kann.

02.09.2010 - 10:43 Uhr

Ganz einfach... wenn ich die von FZelle und mir vorgeschlagene Variante mit der Factory nehme schreibe ich mir einfach Test-Cases für die 3 verschiedenen Auswahlmöglichkeiten. Was ist daran nicht testbar?



// Angenommen ich habe in der Datenbank die Länder
// Deutschland, England und Spanien gespeichert,
// so erwarte ich, dass ich eine Liste dieser Länder
// erhalte, wenn ich DataFactory.getData(Categories.Country)
// aurufe
def testGetCountries {
  var countries = List("Deutschland", "England", "Spanien")
  var dbCountries = DataFactory.getData(Categories.Country)
  assertEqual(countries.size, dbCountries.size)
  assert(dbCountries.containsAll(countries))
}

Das ist nur schnell hin gehackter Pseudocode, aber sollte zeigen, dass es sich durchaus testen lässt.

01.09.2010 - 23:03 Uhr

Hi,

WPF gibt es nicht für OSX. Aber mit CocoaSharp sollten sich auch schöne Oberflächen erstellen lassen.

01.09.2010 - 18:26 Uhr

Wenn ihr nur die zwei Prinzipien befolgen wollt na gut. [...] Uncle Bob (ObjectMentor) sorry ich hab geglaubt deine Prinzipien sind wichtig und sollten beachtet werden. Hier habe ich erfahren es gibt nur 2 Prinzipien die ich befolgen soll...

Also erstmal kannst du dir deinen Sarkasmus sparen. Zweitens habe ich mit keinem Wort gesagt, dass es nicht sinnvoll ist XP zu betreiben. Ganz im Gegenteil, ich bin ein absoluter Befürworter von TDD, BDD und Pair Programming. Allerdings halte ich es für ein wenig blauäugig zu sagen, dass man es IMMER benutzen muss und egal was man tut auch ja auf Pattern achten sollte. Außerdem wie ich schon sagte ist es einfach nicht richtig aufgrund 2 Prinzipien auf eine gesamte Vorgehensweise einer Person zu schließen.

Wie du schon sagtest geht es im TDD bzw. BDD auch darum möglichst kurze Methoden zu schreiben. Das stimmt, allerdings gilt es auch herbei darauf zu achten nicht mehr Code zu produzieren, als unbedingt nötig. Siehe Red-Green-Refactor Cycle. Du schreibst einen Test, lässt ihn fehlschlagen, schreibst genau so viel Code, dass der Test erfolgreich durchläuft und refaktorisierst dann unnötigen Code raus. In deinem Fall hast du aber unnötig viel Code hergezaubert. Das widerspricht im eigentlichen Sinne dem Red-Green-Refactor Cycle.

01.09.2010 - 16:29 Uhr

Wenn du schon mit KISS und YAGNI arbeitetst dann ist das sicherlich XP.

Was haben denn KISS und YAGNI mit XP zu tun? Das sind grundlegende Prinzipien. XP ist eine Vorgehensweise, in der auch auf so etwas geachtet wird, aber nur weil jemand KISS und YAGNI beherzigt heisst es noch lange nicht, dass er/sie XP betreibt.

01.09.2010 - 13:47 Uhr

Ich sehe das ähnlich wie FZelle. Eine Factory wäre hier durchaus sinnvoll, da man so den unschönen Seiteneffekt des Befüllens der ComboBox aus der Methode zum Auswählen des korrekten Datensatzes entfernen könnte. Wenn wir hier schon über KISS und YAGNI reden, dann würde ich hier auch gerne noch "side effects considered harmful" einbringen. Ich weiss, dass in der OOP selten darauf geachtet wird, wo man andere Objekte verändert, dennoch sollte man sinnvoll trennen. Seiteneffekte die sich auf die GUI beziehen haben nichts in der Logik verloren und vice versa.

31.08.2010 - 20:03 Uhr

Kompositionen:
Ich habe eine Klasse FootballClub und eine Klasse Stadium,
Hier habe ich eine Ganz-Teil Beziehung, Club ist Ganz und Stadium Teil und in diesem Fall eine Komposition; Wenn der Club weg ist, also nicht mehr existiert, dann existiert Stadium quasi auch nicht mehr.
-> Stadium ist eine Eigenschaft von Club und diese Referenz taucht nur in diesem Club auf

Würde ich anders sehen... Ein Stadion fällt ja nicht in sich zusammen, nur weil es den Club nicht mehr gibt. Außerdem gibt es auch Stadien, die nicht nur von einem Club bzw. einer Sportart bespielt werden. Z.B. wurde erst das Olympiastadion und jetzt die Allianz Arena sowohl vom FC Bayern München, als auch vom TSV 1860 München bespielt. Ich würde Stadion zu Club eher in eine 1 zu n Beziehung stellen, da jeder Club in einem Heimstadion spielt, aber in einem Heimstadion mehrere Clubs spielen können und sowohl Stadion, als auch Club unabhängig voneinander existieren können.

30.08.2010 - 18:41 Uhr

Das Problem ist, dass Python dynamisch typisiert ist, du also häufig erst zur Laufzeit weisst, von welchem Typ ein Objekt ist. Genauer gesagt immer dann, wenn das Objekt nicht im aktuellen Kontext erstellt wird. Deswegen wirst du nie durch eine reine Analyse des Quellcodes alle Fehler, bzw. durch eine solche Analyse nur die wenigsten Fehler finden können.

Mit Tests schreiben meine ich z.B. Unittests. Die sagen dir zwar nicht genau welche Zeile Fehlerhaft ist, dafür aber, in welcher Methode.

Btw. liefert der Python Interpreter dir die Angaben, die du haben möchtest. Also Dateiname und Zeilennummer, in der der Fehler aufgetreten ist.

30.08.2010 - 16:21 Uhr

Ich denke das geht leichter, wenn du es direkt mit Python machts. Siehe exec. Einfach Zeile für Zeile ausführen und wenn es knallt haste die Zeilennummer.

edit: Obwohl das natürlich nur für einfachen Code geht...

edit 2: Du willst dir also einen Parser bauen, der deinen Code aus Korrektheit überprüft, der wie verstehe ich das? Wäre es nicht einfacher Tests zu schreiben? Dann hast du zwar nicht die genaue Zeile, aber es ist deutlich weniger Aufwand und Tests sollte man eh schreiben 😉

28.08.2010 - 11:32 Uhr

Oder du macht einfach ein 802.1X WLAN und jeder, der das WLAN benutzen will bekommt dann halt ein Kärtchen mit Username und Passwort.

27.08.2010 - 15:06 Uhr

Nicht ganz. Der BackgroundWorker verwendet einen Thread aus dem ThreadPool, die Thread Klasse hingegen nicht.

Threading macht überall da Sinn, wo du eine aufwändige Aufgabe erledigen willst, aber das Programm trotzdem weiterhin auf eingaben reagieren soll. Oder eben da, wo du Aufgaben parallel ausführen kannst.

27.08.2010 - 09:52 Uhr

Schau dir mal "Active Patterns" an. Damit kannste auch normale .NET-Strukturen in den Patterns analysieren. Genauso wie in dem Scala-Snippet von dir.

Ah, okay... die wurden in dem ersten Beitrag den ich gelesen habe garnicht erwähnt 😉. Dann ist es wohl doch recht ähnlich.

27.08.2010 - 01:22 Uhr

Falls das das gleiche ist wie bei F#: FULLACK

Hab mir gerade das Pattern Matching in F# angeschaut und muss sagen, dass das von Scala noch mächtiger ist. Vor allem dadurch, dass Scala eine objekt-funktionale Sprache ist. Beispiel für ein cooles Feature sind Extraktoren. So kann man quasi die Werte aus einem Objekt extrahieren, oder auch Werte vorgeben, bei denen es sich anders verhalten soll:



object Test {
  case class Person(val name: String, val age: Int)
  case class Square(val size: Int)

  def main(args: Array[String]) {
    val p = Person("Joe", 42)
    val s = Square(10)

    matchTest(p)
    matchTest(s)
    matchTest(Array(1,2,3))
  }

  def matchTest(a: Any) = a match {
    case Person("Joe", a) => println("Oh no, it's Joe.")
    case Person(n,a) => println(String.format("Person with name: \"%s\" and age: \"%s\".", n, a.toString))
    case Square(s) => println(String.format("Square with size: \"%s\".", s.toString))
    case _ => println("Unknown object.")
  }
}

führt zur Ausgabe:


Oh no, it's Joe.
Square with size: "10".
Unknown object.

Aber nicht nur das geht, man kann auch einfach auf Typen checken und hat dann gleich dann gleich eine Variable vom richtigen Typen zur Verfügung:


val p = Person("Joe", 42)

p match {
  case x: Person => println(x.name)
}

Und auch mit Regex kann man tolle Dinge tun. Aber das würde jetzt hier den Rahmen sprengen 😉

26.08.2010 - 19:42 Uhr

Oder du benutzt deinen Apache als Proxy für den IIS. Hier eine Beschreibung: http://zeiler.me/julian/techzap/server/windows/iis-und-apache-auf-einem-server-parallel-betreiben/

26.08.2010 - 16:46 Uhr

Hi,

for in Scala ist keine Schleife, sondern eine Comprehension. Und einfach durch das Zuweisen ist auch nicht ganz richtig, der Compiler erkennt den Typen, Stichwort: Type inference.

Wo wir schon bei Scala sind.. ein wirklich cooles Feature wäre Pattern Matching im Scala-/Erlang-Style.

12.08.2010 - 14:11 Uhr

Ein Vorteil wäre z.B., dass man direkt sieht, dass ein übergebenes Argument den Wert null hat und nicht innerhalb der für den Benutzer evtl. nicht einsehbaren Klasse ein Fehler ist, der zu einer NullReferenceException führt. Desweiteren kannst du natürlich einen eigenen Text für die Exception angeben und evtl. sogar mitteilen, welcher Parameter null ist usw... Natürlich mach es in diesen Fällen nur Sinn für Debugginginformationen. Vielleicht fallen jemand anderen aber auch noch andere Gründe ein?

12.08.2010 - 08:14 Uhr

C und C++ sollten auch möglich sein. - Auf jedenfall C.

Stimmt nicht ganz. Man kann Teile einer Applikation in C schreiben, aber das Gerüst und die GUI müssen immernoch in Java geschrieben werden.

11.08.2010 - 19:40 Uhr

Du kannst für Android auch in Scala programmieren. Hab selber noch nichts für Android gemacht, aber Scala kann ich nur empfehlen, wenn man mal was neues machen möchte.

10.08.2010 - 17:07 Uhr

Ich hab auch ein neues Spielzeug 😉

iMac 27" late 2010
Core i5 4x 2,8 GHz
4GB DDR3 1333 MHz <-- wird möglichst schnell auf 8GB aufgestockt
Radeon 5750 mit 1GB GDDR5 Speicher
1 TB 7200 rpm Platte
Auflösung 2560 x 1440
Apple Wireless Bluetooth Tastatur
Apple Magic Mouse

09.08.2010 - 13:37 Uhr

Das absolute Standardwerk der "Gang of Four" 😉

Design Patterns

Gruß

Dario

09.08.2010 - 13:34 Uhr

muss nich i = list.count-1 sein ? 😉

Oh man... das war eben schnell reingehackt.. ich denke es sollte klar sein, was gemeint ist 😛

09.08.2010 - 13:31 Uhr

Oh, sry.. kleiner typo... ich pass es mal an.

Ansonsten gern geschehen 😉

09.08.2010 - 13:24 Uhr

Hi,

ganz ohne Index geht es nicht, aber folgendes sollte dir helfen:


for(int i = list.Count - 1; i>= 0; i--) {
  if(list[i].Flag == Flag.MyFlag) {
    list.RemoveAt(i);
  }
}

Da die Liste rückwarts durchlaufen wird, werden auch keine Einträge übersprungen.

Gruß

Dario

typo edit: ++ zu --, Count - 1

04.08.2010 - 19:59 Uhr

Vorsicht! Das kann zu Deadlocks führen.

Bsp:

Wenn die Queue leer ist wartet Dequeue, bis ein Element verfügbar ist, es kann aber kein Element hinzugefügt werden, weil die Queue noch gelockt ist und der Bereich, der ein Element hinzufügen will wartet, bis die Queue wieder freigegeben wird.

Schau dir einfach mal SyncQueue <T> - Eine praktische Job-Queue an.

Edit: Oh, scheint in .Net doch anders zu sein... der wirft einfach ne Exception, wenn die Queue leer ist...