|
|
|
|
| Zitat von GH@NDI
Also hier mit Debian Squeeze und Opera 11.01 lädt die google WebFont Seite super. Dauert bei meinem DSL 2000 halt nur ein klein wenig, bis alle fonts da sind. In der Zeit hing Opera zu meiner Verwunderung doch tatsächlich für ~10sekunden
| |
Ubuntu und Chrome Dev (10.irgendwas), geht prima und läd in...naja, verdammt schnell.
|
|
|
|
|
|
|
Mensch ist das ärgerlich, mein Sansa Clip+ hat schon einen Wackelkontakt an der Buchse. Hrmm. Total nervig wenn beim Laufen ständig das Signal vom linken Ohrhörer stottert oder gar nichts kommt.
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
| Zitat von GH@NDI
Also hier mit Debian Squeeze und Opera 11.01 lädt die google WebFont Seite super. Dauert bei meinem DSL 2000 halt nur ein klein wenig, bis alle fonts da sind. In der Zeit hing Opera zu meiner Verwunderung doch tatsächlich für ~10sekunden
| |
Ubuntu und Chrome Dev (10.irgendwas), geht prima und läd in...naja, verdammt schnell.
| |
wenns chrome nich laden würde, wärs jan ziemlicher fail
|
|
|
|
|
|
|
| Zitat von TriggerTG Na seht ihr, es gibt also wirklich Geräte die den SD-Slot-Speicher mit dem internen Speicher mergen.
War meine Feststellung bezüglich des Sansa CLip+ doch nicht so abwegig. Bei der Konsequenz "Auf Factory Settings zurücksetzen" würde ich dann aber doch drauf verzichten | | ja eben. eine „sinnvolle“ politik, wie man das merget, gibt’s halt net.
|
|
|
|
|
|
|
windows 7 + firefox 4.0b10: webfontseite zeigt alles in standardschrift an.
ach und @schmartphones: das iphone 4 hat einen scheiß-bildschirm. leim, der nicht gescheit transparent ist gibt gelbe flecken und das teil ist noch nicht mal ein oled-screen. und die dpi-zahl und auflösung ist auch nicht höher als bei vielen androids.
|
|
|
|
|
|
|
| Zitat von eX-blood
| Zitat von GH@NDI
Also hier mit Debian Squeeze und Opera 11.01 lädt die google WebFont Seite super. Dauert bei meinem DSL 2000 halt nur ein klein wenig, bis alle fonts da sind. In der Zeit hing Opera zu meiner Verwunderung doch tatsächlich für ~10sekunden
| |
Puh keinen schimmer. Auf meinen beiden Ubuntus mit Firefox semmelt er sofort ab und da schein ich nicht der einzige zu sein. Auf meinem Windows gehts mit Firefox, allerdings mit dem Internet Explorer 7 nicht. Erst mit Version 8.
Aber ich hab dann ein bisschen recherchiert und gesehen, dass jeder aktuellere Browser mittlerweile Webfonts unterstüzt. Ich implementier es grad ohne Google. Auch besser so. Ihr wisst schon, Google ist böze
| Die Browserunterstützung der Webfonts ist durchaus unterschiedlich:
* Der Safari Browser unterstützt die Webfonts seit Version 3.1 in den Formaten TrueType (*.ttf), OpenType (*.otf) und SVW (*.svg).
* Google Chrome unterstützt die Webfonts seit Version 4.0 in den Formaten TrueType (*.ttf) und OpenType (*.otf).
* Opera unterstützt die Webfonts seit Version 10 in den Formaten TrueType (*.ttf), OpenType (*.otf) und SVW (*.svg).
* Mozilla Firefox unterstützt die Webfonts seit Version 3.5 in den Formaten TrueType (*.ttf) und OpenType (*.otf).
* Internet Explorer unterstützt die Webfonts seit Version 4 in dem Format EOT (Embedded Open Type)
| | Quelle: http://css3-html5.de/css3-web-fonts
==> Ergo braucht man die Schriftart nur noch im .ttf oder .otf -Format.
Die .eot für den Internet Explorer kann man sich einfach hier zusammenbauen lassen und in css mit
|
@font-face {
font-family: 'BeliebigerName';
src: url('foo-webfont.eot');
url('foo-webfont.ttf') format('truetype'),
font-weight: normal;
font-style: normal;
}
| |
einbinden
| |
fontsquirrel.com ftw
Das einzige was imo bei webfonts richtig stört ist das "umschalten" der Font nach dem laden, wenn die Font nicht im cache ist. Sieht man auf fontsquirrel auch gut; die seite läd, wird angezeigt, läd dann die Font nach und die schrift ändert sich -> bäh
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Noch_ein_Kamel am 05.02.2011 14:41]
|
|
|
|
|
|
Oha, Fontsquirrel sieht ja mal super aus, sicher eine gute Alternative zur Google Font API
---
Ich habe eine
|
Code: |
public abstract class ConsoleAction {
public abstract String getCommand();
public String checkArgs(String[] args) {
return null;
}
public abstract void execute(String[] args);
} |
|
Ich glaube ich habe die schon mal gepostet, aber ich habe jetzt die Prüfung auf korrekte Argumente in eine checkArgs verschoben - wenn die etwas Anderes als null zurückgibt wird execute nicht ausgeführt und die Fehlermeldung die checkArgs zurückgegeben hat ausgegeben. Implementierung beispielsweise so.
Irgendwie habe ich aber Zweifel dass das so schön ist. Fachliche Meinung dazu?
|
|
|
|
|
|
|
Anstatt eine Fehlermeldung mit return auszugeben, könntest du eine Exception schmeißen.
|
|
|
|
|
|
|
Da würde ich vom Übungsleiter Prügel bekommen - uns wurde häufig und ausführlich erklärt warum wir Exceptions nur werfen dürfen wenn das Programm abstürzen würde und nicht im Fall von "verträglichen" Falscheingaben.
|
|
|
|
|
|
|
| Zitat von Danzelot
Da würde ich vom Übungsleiter Prügel bekommen - uns wurde häufig und ausführlich erklärt warum wir Exceptions nur werfen dürfen wenn das Programm abstürzen würde und nicht im Fall von "verträglichen" Falscheingaben.
| |
Der ist auch hoch qualifiziert wat?
|
Code: |
String ret = doSomething();
if (ret == "Falsche Eingabe") doStuff(1);
if (ret == "Zu große Zahl") doStuff(2);
|
|
vs
|
Code: |
try {
doStuff();
} catch (FooException e) {
bla();
} catch (BarException a) {
bar();
}
|
|
Was ist wohl besser in ner Objektorientierten Sprache geeignet?
|
|
|
|
|
|
|
| Zitat von Teufel
| Zitat von Danzelot
Da würde ich vom Übungsleiter Prügel bekommen - uns wurde häufig und ausführlich erklärt warum wir Exceptions nur werfen dürfen wenn das Programm abstürzen würde und nicht im Fall von "verträglichen" Falscheingaben.
| |
Der ist auch hoch qualifiziert wat?
| |
Ja, der ist fast so gut wie der Prof
Mal gucken ob ich das eher nach meinem Gewissen oder nach dessen Anforderungen machen werde...
|
|
|
|
|
|
|
| Zitat von Danzelot
Da würde ich vom Übungsleiter Prügel bekommen - uns wurde häufig und ausführlich erklärt warum wir Exceptions nur werfen dürfen wenn das Programm abstürzen würde und nicht im Fall von "verträglichen" Falscheingaben.
| | Dann frag ihn mal, wofür wohl eine IllegalArgumentException da ist. Oder sag mir seinen Namen. Dann such ich mir hier einen Professor, der ihm eine Urkunde über maximales Unverständnis ausstellt.
|
|
|
|
|
|
|
|
Code: |
public Person(String name) {
if(!name.matches("[A-Z][a-z]*")) {
throw new IllegalArgumentException("Error: Name must not be "+name);
}
this.setName(name);
} |
|
Ausdrücklich verboten sowas.
|
|
|
|
|
|
|
| Zitat von Danzelot
Da würde ich vom Übungsleiter Prügel bekommen - uns wurde häufig und ausführlich erklärt warum wir Exceptions nur werfen dürfen wenn das Programm abstürzen würde und nicht im Fall von "verträglichen" Falscheingaben.
| |
Mein Gott, dein Übungsleiter ist ja ein verdammt großer Pfosten. Grüß ihn mal schön von jemanden der Ahnung hat...im Prinzip also jedem hier.
Exceptions sind Ausnahmen (oho, das kann man sogar wortwörtlich Übersetzen!), d.h. alles, was nicht zum normalen Programmfluss gehört. Somit sind Eingaben in eine Methode, die nicht "korrekt" im Sinne der Dokumentation, sehr wohl ein Fall für Exceptions. Dein Übungsleiter hat also schlichtweg unrecht, man setzt Exceptions nicht nur ein, wenn das Programm sonst "abstürzen" würde.
In deinem konkreten Fall würde ich aber sagen, dass hier eine Exception nicht sinnvoll ist. Die Begründung: Die Eingaben in deine Methode sind Benutzeingaben die du als Entwickler natürlich nicht kontrollieren kannst. Du musst also prinzipiell davon ausgehen, dass sie falsch sind und der normale Programmfluss führt also zwangsweise durch eine Validierung. Außerdem musst du damit rechnen, dass diese fehlschlägt.
Deine Methodik ist zwar nicht hübsch, aber im Prinzip das einzige "einfache" was du machen kannst.
|
|
|
|
|
|
|
| Zitat von Danzelot
|
Code: |
public Person(String name) {
if(!name.matches("[A-Z][a-z]*")) {
throw new IllegalArgumentException("Error: Name must not be "+name);
}
this.setName(name);
} |
|
Ausdrücklich verboten sowas.
| |
Falsch, das kommt auf den Kontext an. Sofern dokumentiert ist, dass der Name nur dieses Format haben darf (z.B. aus technischen Gründen, weil das Ding in Dateinamen verwendet wird und da sind aus irgendeinem Grund keine anderen Zeichen erlaubt), dann ist das legitim. Die Exception richtet sich an den Aufrufer aber nicht an den Endbenutzer.
Wie schon gesagt: Zur Validierung von Benutzereingaben sind Exception tatsächlich falsch.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Achsel-des-Bösen am 05.02.2011 15:53]
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
Wie schon gesagt: Zur Validierung von Benutzereingaben sind Exception tatsächlich falsch.
| |
Wenn der interne Programmfluss durch invalide Benutzereingaben geändert wird sind sie völlig in Ordnung.
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
Deine Methodik ist zwar nicht hübsch, aber im Prinzip das einzige "einfache" was du machen kannst.
| |
Dann bleibe ich dabei, ist zumindest schöner als die Überprüfung auf korrekte Werte in der execute() zu machen.
Die Begründung warum das in dem Person-Beispiel falsch war war ja sogar verständlich, die Klasse soll nämlich auch funktionieren wenn andere Bedingungen für Namen gelten sollten - und auf null prüfen sollen wir dann doch inklusive Exception.
Noch was Anderes: In dem Programm habe ich vier Listen von gleichartigen Objekten (Personen, Organisationen, Geräte und Räume), jede Sorte Objekte hat ihre eigenen Validitätsprüfungen und Fehlermeldungen.
Ursprünglich wollte ich da jeweils Arrays machen, aber Java kann keine Arrays mit generischen Typen drin.
Ich hätte ja eine Map verwendet, aber die ist verboten. Sonst eine Idee?
|
|
|
|
|
|
|
Grundsätzlich kann man sich ja daran halten, dass man eine Exception wirft, wenn die Funktion nicht das tun kann, was der Name besagt. Wenn ein Setter-Methode einen Wert nicht setzen kann, dann soll sie eine Exception werfen (ArgumentException bzw. in Java InvalidArgumentException).
Die Alternative ist eben eine Methode bool trySetName(String name) . Die keine Exception wirft, aber eben den Namen nicht setzt, wenn er falsch ist. Aber bitte nicht einfach folgendes machen
|
Code: |
void setName(String name) {
if (null == name) {
throw new InvalidArgumentException("name");
}
this.name = name;
}
bool trySetName(String name) {
try {
this.setName(name);
}
catch (InvalidArgumentException) {
this.name = null;
return false;
}
return true;
}
|
|
Sondern die gleiche Logik, die die Exception verursachen würde, nochmal anwenden, nur eben false zurückgeben.
|
|
|
|
|
|
|
| Zitat von Danzelot
Noch was Anderes: In dem Programm habe ich vier Listen von gleichartigen Objekten (Personen, Organisationen, Geräte und Räume), jede Sorte Objekte hat ihre eigenen Validitätsprüfungen und Fehlermeldungen.
Ursprünglich wollte ich da jeweils Arrays machen, aber Java kann keine Arrays mit generischen Typen drin.
Ich hätte ja eine Map verwendet, aber die ist verboten. Sonst eine Idee?
| |
Achtung: C#, da ich die Schnittstellen in Java nicht kenne
|
Code: |
abstract class Unit
{
public bool IsValid(ICollection<string> errors)
{
IEnumerable<string> messages = this.Validate();
if (!messages.Any())
{
return true;
}
foreach (string error in messages)
{
errors.Add(message);
}
return false;
}
protected abstract IEnumerable<string> Validate();
}
class Person : Unit
{
public string Name { get; set; }
protected IEnumerable<string> Validate()
{
if (String.IsNullOrEmpty(this.Name))
{
yield return "Name darf nicht null oder leer sein.";
}
}
}
static void Main(string[] args)
{
Unit[] units = new Unit[]
{
new Person { Name = "Jonas" },
new Person { Name = null },
new Person { Name = "" }
};
foreach (Unit unit in units)
{
List<string> errors = new List<string>();
if (!unit.IsValid(errors))
{
foreach (string error in errors)
{
Console.WriteLine("Fehler gefunden: {0}", error);
}
}
}
}
|
|
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [DK]Peacemaker am 05.02.2011 16:29]
|
|
|
|
|
|
| Zitat von [DK]Peacemaker Grundsätzlich kann man sich ja daran halten, dass man eine Exception wirft, wenn die Funktion nicht das tun kann, was der Name besagt. | | bzw. was sie tun soll. schöne richtlinie, danke.
|
|
|
|
|
|
|
| Zitat von flying sheep
| Zitat von [DK]Peacemaker Grundsätzlich kann man sich ja daran halten, dass man eine Exception wirft, wenn die Funktion nicht das tun kann, was der Name besagt. | | bzw. was sie tun soll. schöne richtlinie, danke.
| |
Übrigens nicht von mir. Aber in "Exception heavy" Programmiersprachen wie Java oder C# recht gängig.
|
|
|
|
|
|
|
Missverständnis, ich habe ein anderes Problem: Momentan registriere ich jeweils eine ConsoleAction für "ADD PERSON", eine für "ADD ORGANIZATION", eine für "ADD DEVICE" und so weiter, und das gleiche noch für alle möglichen anderen Befehle. Und ich bin noch nicht einmal bei allen möglichen Kombinationen wer was bucht angekommen.
Aber ich glaube mir ist gerade eine Idee beim Formulieren dieser Antwort gekommen
|
|
|
|
|
|
|
| Zitat von Teufel
| Zitat von SkunkyVillage
lulz, Apple Fanboi prügelt auf Microsoft ein. Dass der Großteil von dem, was da steht, einfach Grütze ist, lass ich mal außen vor.
| |
Und ich dachte schon du lässt jetzt mal wieder einen Haufen geistigen Durchfall los.
| |
Hast du ja schon erledigt.
|
|
|
|
|
|
|
AAAAAAAAAAAAAAAAAAAA
Scheiss Nachbar mit Schlagbohrer unter mir -_-
e: falsches icon
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Noch_ein_Kamel am 05.02.2011 17:23]
|
|
|
|
|
|
Das einzige was übrigens Dünnschiss ist, ist das was bei dir übrigens in der Birne abgeht. Um einfach mal niveaulos zurückzuscheißen, kannst du ja scheinbar am besten.
|
|
|
|
|
|
|
Scheiß Erkältung. Das zweite Mal in drei Wochen.
//Und scheiß mimimi hier
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Smoking am 05.02.2011 17:24]
|
|
|
|
|
|
|
|
|
|
trolololo
|
|
|
|
|
|
|
MAN DIREKT UNTER MEINEM SCHREIBTISCH!!!!!!!!!!!!!!!!!!111111111111111111111111111111111111111111111111111111111111111
|
|
|
|
|
|
|
| Zitat von SkunkyVillage
Das einzige was übrigens Dünnschiss ist, ist das was bei dir übrigens in der Birne abgeht. Um einfach mal niveaulos zurückzuscheißen, kannst du ja scheinbar am besten.
| |
Du bist da aber auch nicht schlecht, wie man hier sieht.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |