Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Corpsegrinder
Thema: Bedeutung von \uxxxx in Strings
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

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

Thema: Bedeutung von \uxxxx in Strings
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

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.

Thema: Bedeutung von \uxxxx in Strings
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von MarsStein
Zitat von JAck30lena
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.

Thema: Hello World kompliziert
Am im Forum: Smalltalk

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!

Thema: Zeichnung in 3D Raum extrudieren
Am im Forum: Grafik und Sound

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.

Thema: Statistik der Webprogrammiersprachen
Am im Forum: Smalltalk

Zitat von FZelle
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.

Thema: Statistik der Webprogrammiersprachen
Am im Forum: Smalltalk

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.

Thema: iPhone Apps unter Windows entwickeln
Am im Forum: Rund um die Programmierung

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 ;-)

Thema: Apple Mac Book Air und VS 2010
Am im Forum: Smalltalk

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

Thema: Apple Mac Book Air und VS 2010
Am im Forum: Smalltalk

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

Die sind günstiger.

Thema: Apple Mac Book Air und VS 2010
Am im Forum: Smalltalk

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.

Thema: Ver - und entschlüsseln / Update
Am im Forum: Projekte

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.

Thema: Hostname auflösen mit Timeout?
Am im Forum: Netzwerktechnologien

Zitat von DeViL666.on
Zitat
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: ThreadPool

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.

Thema: Hostname auflösen mit Timeout?
Am im Forum: Netzwerktechnologien

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

Thema: Muss man seine Meinung/Einschätzung immer fundiert begründen?
Am im Forum: Smalltalk

Zitat von Uwe81
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.

Thema: Array-Element bleibt trotz Zuweisung eines Objekts null
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

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.

Thema: Equals und GetHashCode
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

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.

Thema: Equals und GetHashCode
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

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.

Thema: C-code in C# einbinden
Am im Forum: Rund um die Programmierung

Hi,

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

Thema: Eigenes Intellisense programmieren: Auflistung von Methoden die sich in einer Klasse befinden
Am im Forum: Rund um die Programmierung

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.

Thema: Google Instant Suche: Erfahrungen und Meinungen?
Am im Forum: Smalltalk

Zitat von MrSparkle
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.

Thema: Google Instant Suche: Erfahrungen und Meinungen?
Am im Forum: Smalltalk

Zitat von JunkyXL
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.

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Zitat von Arithmetika
sorry aber eine Queue ist nicht Threadsafe und daher ist Synchronisation und Locking notwendig.

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)
      }
    }
  }

}

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

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...

Thema: Verschachtelten und redundanten Code vereinfachen (bezogen auf ein konkretes Beispiel)
Am im Forum: Rund um die Programmierung

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.

Thema: Verschachtelten und redundanten Code vereinfachen (bezogen auf ein konkretes Beispiel)
Am im Forum: Rund um die Programmierung


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.

Thema: Verschachtelten und redundanten Code vereinfachen (bezogen auf ein konkretes Beispiel)
Am im Forum: Rund um die Programmierung


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.

Thema: Verschachtelten und redundanten Code vereinfachen (bezogen auf ein konkretes Beispiel)
Am im Forum: Rund um die Programmierung


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.

Thema: Mono Development - C# WPF under Mac OS X
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

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

Thema: Verschachtelten und redundanten Code vereinfachen (bezogen auf ein konkretes Beispiel)
Am im Forum: Rund um die Programmierung

Zitat von dani_m
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.