Seite 3 von 7 ErsteErste 1234567 LetzteLetzte
Ergebnis 41 bis 60 von 385

Thema: IM IN YR LOOP\n VISIBLE FOO\n IM OUTTA YR LOOP - Der Programmierer-Spamthread #2

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Cherry
    Code:
    Print Sgn(Abs(CInt(&h80000000)))
    Sleep
    What is the output of this program going to look like?

    "1", one would probably think.

    You are wrong, it's "-1".

    But mind you, this is not a bug. It's merely a result of how signed integers work. The absolute value of a number with only the highest bit set (in any kind of integer, so it applies to Byte, Short, Integer and LongInt) will be negative! Actually, Abs(x) will return x in this case.

    Think about it! The range of a signed 32-bit integer goes from -2147483648 (-&h80000000, which is +&h80000000 if you cast treat it as unsigned!) to +2147483647 (+&h7FFFFFFF). The absolute value of -2147483648 would be +2147483648, but this value needs 33 bits including the positive sign bit! Thus, an overflow occurs and the 32-bit value returned by Abs() will again be -2147483648.

    A variation of this pitfall is:
    Code:
    Dim x As Integer
    Input x
    If x = -x Then Print "Neutral number!" Else Print "Non-neutral number!" 
    Sleep
    This code will output "Neutral number!" if you input 0, but also if you input 2147483648 or -2147483648!

    Just keep this in mind. It might produce some nasty bug one day if you blindly assume that Abs(x) will never be a negative number!

    This kind of bug even slipped into the Windows kernel and stayed there for decades.
    Interessiert euch vielleicht auch.

  2. #2
    Weil mir grad danach ist: https://github.com/Regiden/RadicalFishEngine

    Daran arbeite ich gerade

  3. #3
    Coole Sache! Mit libGDX haben wir über das letzte Jahr hinweg auch ein Projekt entwickelt, das ist echt ein schönes Framework. Bin gespannt auf deine Engine.

  4. #4
    Die Engine ist der Beste wo gibt!!!1

    Aktuell macht der Entwickler Tests um zu schauen ob er das Ganze nicht auch auf Console zum laufen bringt (Android, iOS und WebGL geht ja schließlich auch so why not). Es gibt aber einige Sachen die mich stören und wo ich mit wünschte man würde mehr plattform spezifische Features einbaut (vor allem was sound angeht)

    Ich arbeite eigentlich die ganze Zeit dran und man kann schon damit arbeiten, eine einfache Klasse die z.B. BasicGame oder Game implementiert und vom GameContainer verwaltet wird kann schon für einfache Sachen genutzt werden. Als Test soll auf jeden Fall ein Tetrisklon her (Will auch gleich zeigen wie man Speicher sparen kann, z.B. mit der ObjectIntMap).

  5. #5
    Warum schreibt hier keiner? Oo

    Naja.

    Ich hab gerade festgestellt dass LINQ cooler ist als ich dachte.

    Code:
    Dim heightOffset As Integer = (From b In {ls.ShowDefaultSearchChekbox, ls.ShowHomepageCheckbox, ls.ShowNewTabCheckbox} Where b).Sum(Function(b) 12)
    Eine Zeile. Bewirkt dass ls.ShowDefaultSearchChekbox, ls.ShowHomepageCheckbox, ls.ShowNewTabCheckbox jeweils auf True überprüft wird (da alle Werte Booleans sind entspricht "Where b" hier "Where b = True") und für jedes davon, was True ist, wird 12 zu heightOffset dazugezählt.

    Naja, also im Prinzip hab ich so angefangen:

    Code:
    Dim heightOffset As Integer = 0
    If ls.ShowDefaultSearchCheckbox Then heightOffset += 12
    If ls.ShowHomepageCheckboxThen heightOffset += 12
    If ls.ShowNewTabCheckbox Then heightOffset += 12
    Dann wurde draus:

    Code:
    Dim heightOffset As Integer = 0
    For Each b As Boolean In {ls.ShowDefaultSearchChekbox, ls.ShowHomepageCheckbox, ls.ShowNewTabCheckbox}
        heightOffset += 12
    Next
    Und am Schluss eben die eine Zeile.

  6. #6
    Lesbarer wird der Code dadurch halt nich.

    Ich könnte grade höchstens ausgiebig motzen:

    • Ich code grade was für ein Uniprojekt. Das Institut verwendet immer noch svn und lässt sich nicht dazu überreden, ein git Repository als Abgabe zu akzeptieren. Jeder einzelne Commit soll in svn auftauchen.
    • git-svn ist scheiße. Jedes Mal, wenn ich was ins svn Repo committen will, zerhauts mir meine History.
    • Java hat kein unsigned long. Wenn ich das Netzwerkprotokoll korrekt implementieren wollte, müsste ich ein BigInteger verwenden. Ich hoffe jetzt einfach mal, dass mir niemand SO große Dateien andrehen will.
    • Im RFC für das Protokoll sind immer noch diverse Inkonsistenzen. Mal wird der Typ einer Nachricht in Caps geschrieben, mal nicht. Teilweise fehlen Angaben, welchen Wertebereich bestimmte Felder haben dürfen, teilweise ist man dann aber überspezifisch.


    Just my two cents.

  7. #7
    Zitat Zitat von DFYX Beitrag anzeigen
    Lesbarer wird der Code dadurch halt nich.

    Ich könnte grade höchstens ausgiebig motzen:

    • Ich code grade was für ein Uniprojekt. Das Institut verwendet immer noch svn und lässt sich nicht dazu überreden, ein git Repository als Abgabe zu akzeptieren. Jeder einzelne Commit soll in svn auftauchen.
    • git-svn ist scheiße. Jedes Mal, wenn ich was ins svn Repo committen will, zerhauts mir meine History.
    • Java hat kein unsigned long. Wenn ich das Netzwerkprotokoll korrekt implementieren wollte, müsste ich ein BigInteger verwenden. Ich hoffe jetzt einfach mal, dass mir niemand SO große Dateien andrehen will.
    • Im RFC für das Protokoll sind immer noch diverse Inkonsistenzen. Mal wird der Typ einer Nachricht in Caps geschrieben, mal nicht. Teilweise fehlen Angaben, welchen Wertebereich bestimmte Felder haben dürfen, teilweise ist man dann aber überspezifisch.
    Das Problem kenn ich, allerdings anders rum. In einem Kurs dieses Semester waren alle abgaben per git zu erledigen. Auf die Frage am Ende der LVA, was denn das größte Problem war gab es eine fast einstimmige Antwort: git
    Kennt irgendwer was brauchbareres als TortoiseGit? Ich will nicht jedesmal bei einem Push das von Google generierte Passwort nachschlagen und einfügen müssen oder irgendwelche Keys konfigurieren.

    Geändert von nudelsalat (22.01.2013 um 21:37 Uhr)

  8. #8
    Naja, ich finde git ist super für das was es tun soll. Man muss eben sich auch reinlesen wie es geht und vor allem sollte man nicht mit irgendeiner GUI anfangen sondern mit kommandozeile (Das musste ich auf die harte Tour lernen.). Du kannst in git deine Credentials sichern wenn du magst oder du nutzt halt https (was ich lieber mache ) da musst du maximal deine Userdaten eingeben.
    Es gibt mittlerweile auch Aufgaben die ich über gui erledige (commits z.b. oder checkouts. WebStorm integriert git ziemlich awesome). Allerdings gibt es immernoch Sachen die ich lieber über Kommandozeile mache, wie etwa rebases. Die Komandozeile von git sagt einem auch immer was man machen muss daher ist das ganz cool.

    TortoiseGit kann man gut zum commiten, shell visualisierung in Ordnern und zum Anzeigen des logs nutzen. Ich hab damit auch pushen können aber sobald branches ins Spiel kommen ist das ziemlich nutzlos gewesen. GitExtenstions und GitHub App scheinen ganz nett zu sein.

    Ich finde ja es sollte an Unis einen Kurs für Versionskontrolle geben da das heutzutage total wichtig ist. Zumindestens wichtiger als so manche Kurse die ich hier belegen muss (Kein Witz einer meiner Prüfungsleistungen ist ein Gemälde vorstellen...). Da könnte man mit so einfachen Sachen wie SVN anfangen und dann zu git wechseln, evtl noch Perforce erwähnen da es sich ja gut für Assets eignet.
    Was halt viele auch nicht so richtig verstehen ist das man Konflikte in binärdateien nur schlecht lösen kann, schließlich weiß git im Standard ja nicht was das für eine Datei ist... Hab schon viele auf der Uni gesehen die deswegen gemeckert haben, als wenn ein Programm durch magie jeden Dateityp kennt und weiß wie er Konflikte lösen kann... Als wenn es so schwer ist einen neuen branch zu erstellen xD

  9. #9
    Zitat Zitat von R.D. Beitrag anzeigen
    Ich finde ja es sollte an Unis einen Kurs für Versionskontrolle geben da das heutzutage total wichtig ist. Zumindestens wichtiger als so manche Kurse die ich hier belegen muss (Kein Witz einer meiner Prüfungsleistungen ist ein Gemälde vorstellen...). Da könnte man mit so einfachen Sachen wie SVN anfangen und dann zu git wechseln, evtl noch Perforce erwähnen da es sich ja gut für Assets eignet.
    Auf der Schule, wo ich war, gibt es nen kleinen Kurs bezüglich SVN. In den Programmier-Übungen sollten wir auch zeigen, dass wir mit SVN umgehen können. Mir mussten also z.B. absichtlich ein Konflikt erzeugen und zeigen, wie man diesen wieder behebt. Zusätzlich git wäre aber auch nicht schlecht gewesen, schon mal die meisten Dozenten Linux-Fanatiker sind.

    Zitat Zitat von R.D. Beitrag anzeigen
    Was halt viele auch nicht so richtig verstehen ist das man Konflikte in binärdateien nur schlecht lösen kann, schließlich weiß git im Standard ja nicht was das für eine Datei ist... Hab schon viele auf der Uni gesehen die deswegen gemeckert haben, als wenn ein Programm durch magie jeden Dateityp kennt und weiß wie er Konflikte lösen kann... Als wenn es so schwer ist einen neuen branch zu erstellen xD
    Wieso sollte man ein Branch erstellen, nur weil es einen Konflikt gibt? Oftmals passieren grad beim Merging Konflikte, die man nicht mit einem Branch lösen möchte.

    Hier in der Firma benutzen wir noch Visual Sourcesafe für die Versionsverwaltung. Das ist historisch bedingt und soll wohl bald gegen TFS ausgetauscht werden.
    Bei Visual Sourcesafe gibt es ein exklusives Auscheck-Recht. D.h. nur eine Person kann an einer Datei arbeiten, was ein Vorteil ist, um eben Konflikte ein wenig aus dem Weg zu gehen. Hat aber auch den Nachteil, dass eben nur einer an einer Datei basteln kann. Möchte ein weiterer an dieser Datei schrauben, so muss er warten, oder er muss den Schreibschutz der Datei entfernen und später selbst zu sehen, wie er seine Änderungen in die Datei bekommt.

  10. #10
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Hier in der Firma benutzen wir noch Visual Sourcesafe für die Versionsverwaltung. Das ist historisch bedingt und soll wohl bald gegen TFS ausgetauscht werden.
    Das höre ich bei uns seit ich in der Firma bin. SourceSafe zu benutzen ist Zwang bei uns.

    Privat hab ichs mehrfach mit SVN-Zeugs versucht, Turtoise afair, hab aber immer wieder aufgegeben weil ich es nervig fand. Gibt es für dieses Git-Zeugs irgend eine Gui, die das ganze einfach und unkompliziert macht? ( Im Sinne von "verwöhnter Windowsnutzer-einfach" )

  11. #11
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Hier in der Firma benutzen wir noch Visual Sourcesafe für die Versionsverwaltung. Das ist historisch bedingt und soll wohl bald gegen TFS ausgetauscht werden.
    Bei Visual Sourcesafe gibt es ein exklusives Auscheck-Recht. D.h. nur eine Person kann an einer Datei arbeiten, was ein Vorteil ist, um eben Konflikte ein wenig aus dem Weg zu gehen. Hat aber auch den Nachteil, dass eben nur einer an einer Datei basteln kann. Möchte ein weiterer an dieser Datei schrauben, so muss er warten, oder er muss den Schreibschutz der Datei entfernen und später selbst zu sehen, wie er seine Änderungen in die Datei bekommt.
    Haben wir auch noch, migrieren aber inzwischen zu git. Unter anderem, weil es manchmal schwer nachzuvollziehen war, was denn nun zu einer Version gehört. VSS speichert die History ja für jede Datei einzeln. Außerdem gab es immer wieder Helden, die abends vergessen haben, ihre ausgecheckten Dateien wieder freizugeben.
    Ich hab quasi den ganzen November letztes Jahr damit zugebracht, diverse Git-Tutorials zu einem Crashkurs für die Kollegen zusammenzufassen und es scheint zu funktionieren. Ich werd bei Gelegenheit mal nachfragen, ob ich das Ding veröffentlichen darf.

    Ich hab übrigens inzwischen eine "Lösung" für mein Git-SVN Problem gefunden. Wenn ich zwischen master und trunk nur mittels Cherry-Picking Commits hin und her schiebe, krieg ich keine großartigen Probleme, höchstens eine hässliche History.

    Edit @Corti
    Es gibt einen ganzen Batzen GUIs für git, mit denen zumindest die Basics recht einfach sind. Beispielsweise TortoiseGit, GitExtensions, QGit und SmartGit. Wenn du wirklich effizient arbeiten willst, solltest du dich aber mal damit beschäftigen, wie Git intern funktioniert und das geht am leichtesten, indem man mal auf der Kommandozeile damit rumspielt. Schau dir mal Pro Git an. Ist ein schönes E-Book, das gleichzeitig einen Teil der offiziellen Dokumentation darstellt. Für den Anfang sind die Kapitel 1, 2, 3 und 5 interessant. Kapitel 4 brauchst du nur, wenn du einen Server aufsetzen willst und alles ab Kapitel 6 ist für fortgeschrittene User.

    Geändert von DFYX (23.01.2013 um 10:20 Uhr)

  12. #12
    Gutes Ebook, danke dafür, hab bisher nur kurz reingelesen aber das gefällt mir schonmal.

  13. #13

  14. #14
    Folgendes Gedankenspiel, Aufgabe aus der Matheklausur:
    Ihr steht an der Straße und beobachtet ein Glücksspiel. Der Spieler setzt einen Geldbetrag als Einsatz, der Dealer wirft eine Münze. Wenn die Seite der Münze mit dem Tipp des Spielers übereinstimmt, so bekommt er sein Einsatz ausgezahlt. Er hat dann doppelt so viel wie vorher. Sollte der Tipp falsch sein, geht der Einsatz an den Dealer. Ihr beobachtet das Spiel und stellt fest, dass es bei 20 Würfen zu einer normalen Verteilung kam: 9 mal Kopf, 11 mal Zahl. Ein Passant kommt dazu und setzt einen Betrag, tippt auf Zahl. Es fällt Kopf. Der Passant setzt erneut einen Betrag und tippt wieder Zahl. Es fällt wieder Kopf. Nun setzt der Passant wieder einen Betrag, und setzt diesmal auf Kopf. Eine Person aus der Menschenmenge um das Pult herrum schüttelt den Kopf: "Das ist dämlich! Es ist viel wahrscheinlicher, dass die Zahl oben liegt!" - Stimmt das?

  15. #15
    Hi, beim letzten Java Update auf 7 Update 21 gab es eine Änderung an der Klasse java.lang.Runtime, Methode exec(), siehe http://www.oracle.com/technetwork/ja....html#jruntime .

    Mein bisheriger Aufruf war:
    Code:
    Runtime runtime = Runtime.getRuntime();
    try{
    	runtime.exec("\"D:\\irgend ein Ordner\\irgendein Programm.exe\" /argument1 bla /argument2");
    } catch(IOException e){
    	e.printStackTrace();
    }
    Allerdings wirft dieser Code mit der Version 7 Update 21 folgende Exception:
    Code:
    Exception in thread "main" java.lang.IllegalArgumentException: Executable name has embedded quote, split the argument
    Ohne die Anführungszeichen funktioniert das nicht, denn da wird der Pfad nicht gefunden, weil er dann
    Code:
    D:\\irgend
    und den Rest als Argumente aufrufen will. Die Leerzeichen einfach zu escapen geht auch nicht.

    Laut dem Changelog soll man über Runtime.exec sein Programmname und Argumente über ein Array übergeben.
    Folglich kann ich über
    Code:
    runtime.exec(new String[]{"D:\\irgend ein Ordner\\irgendein Programm.exe", "/argument1", "bla", "/argument2"});
    das Programm mit den Argumenten aufrufen. Allerdings muss wirklich jedes Argument in ein neues Element des Arrays, denn alle Argumente in ein Element zu packen funktioniert nicht.

    Der nun elegantere Weg ist es den ProcessBuilder zu nutzen, da man den Konstruktor sein Programmname und Argumente als "String..."-VarArgs übergeben kann.
    Code:
    ProcessBuilder pb = new ProcessBuilder("D:\\irgend ein Ordner\\irgendein Programm.exe", "/argument1", "bla", "/argument2");
    try{
    	pb.start();
    } catch(IOException e){
    	e.printStackTrace();
    }
    Ich frag mich was für DAUs die Entwickler von Java sind, dass sie solch eine Änderung in eine Sicherheits-Update rein machen, statt wie zu erwarten das erst mit dem Release von Java 8.

    PS: Funktionen mit VarArgs eines Typs kann man auch ein Array des gleichen Typs übergeben.

    PPS: Wenn's nicht in den Thread passt, dann bitte ein eigenen Thread daraus machen.

  16. #16
    Zitat Zitat von niR-kun Beitrag anzeigen
    Ich frag mich was für DAUs die Entwickler von Java sind, dass sie solch eine Änderung in eine Sicherheits-Update rein machen, statt wie zu erwarten das erst mit dem Release von Java 8.
    Da Java 8 nicht vor 2014 zu erwarten ist (Verschiebungen haben bei Java Tradition), wäre dies ein richtiger Schritt.
    exec(String command) empfinde ich als Krücke, da man hier wirklich mit dem Escapen aufpassen muss.

    Code:
    exec("C:\\toller ordner\\main.java");
    startet ja nicht die "main.java", sondern "toller". Das kann man durchaus als Sicherheitslücke betrachten. Da ist eine String-Array Variante deutlich besser, und wenn mich nicht alles täuscht, gabs die vorher ja auch schon.

    Geändert von Whiz-zarD (20.04.2013 um 15:29 Uhr)

  17. #17
    Path-finding in CrossCode:


  18. #18

  19. #19

    Users Awaiting Email Confirmation

    Heyjo, ich hoffe ihr könnt mir helfen :>

    Also ich möchte, dass man einen String[][] in Java auf der Festplatte speichern und wieder lesen kann.
    Ich habe für das Speichern also folgendes:
    Code:
          FileOutputStream fos = new FileOutputStream(contactFile);
          ObjectOutputStream oos = new ObjectOutputStream(fos);
          oos.writeObject(contactList);
    die Variable contactList ist ein String[][].
    Wie kann ich diese nun wieder in das Programm einlesen?
    Ich finde irgendwie keine geeignete Methode dafür. In der Schule hatten wir bisher nur das Laden/Speichern von einfachen Objekten.

  20. #20
    @Engel der Furcht: Analog zum ObjectOutputStream gibt es auch einen ObjectInputStream.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •