Binzume Yousei?
Korrekt, du bist wieder dran.
Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!
Zu der Infoseite von „Die Mo-Mo-Manie“Binzume Yousei?
Korrekt, du bist wieder dran.
Also dann, auf ein neues… Mal gucken ob's jetzt jemand errät^^
Tipps:
Falsch:
Hyouka?
Okay, nächstes Bild:
Tipps:
Falsch:
Ist das dein Ernst? Grade vor einer Seite hatten wir (von dir) die Serie dazu…
Dirty Pair: Project Eden (bzw. im Original einfach Dirty Pair: The Movie)
Könnte es eventuell Nausicaä aus dem Tal der Winde gewesen sein? Klingt jedenfalls irgendwie danach.
Die neue Version ist soweit vom Funktionsumfang her ganz nett, allerdings lässt die Responsiveness einiges zu wünschen übrig – der nationale Pokedex braucht fast 2 Sekunden zum Laden/Rendern/Whatever, und die anderen etwa eine, und mein Rechner dürfte leistungsmäßig mindestens im oberen Mittelfeld liegen – und aussehenstechnisch ist sie einfach grottig. Ich lehne mich mal aus dem Fenster und behaupte, mit dem Standardstil würde die App mehr hermachen. Die mitgelieferten Themes haben zwar das Potential, awesome auszusehen, aber damit sie das auch tun, darf man die UI nicht einfach so hinrotzen; ein Problem, das das Standardtheme nicht hat, oder zumindest nicht so stark (Oder ich bin im Oberflächen basteln wesentlich besser als ich glaube, was natürlich auch sein kann).
Und da ich den Fehler gemacht habe, mal mit dotPeek drüberzuschauen, folgt hier noch ein kleiner Rant zu Implementierungsdetails (sieh es als Code-Review oder was auch immer):
Ja, du hast vorher mit Java gearbeitet, wo man das halt so macht, und es ist ein Privatprojekt, dessen Code außer dir vermutlich nie jemand warten wird. Dennoch hättest du dich an die grundsätzlichen Namenskonventionen und Richtlinien für .NET Entwickler halten können… Properties und Methoden mit großem Anfangsbuchstaben, keine öffentlichen Felder verwenden (sondern diese, falls nötig, über Properties nach außen reichen), aussagekräftige Namen für alles verwenden (WTF soll "icsvm" heißen? Und "CreatingSorting" ist auch etwas unglücklich gewählt, weil das zum einen wie ein Name für ein Event klingt und zum anderen nicht wirklich viel über die Methode aussagt – sie sortiert etwas oder erstellt etwas, was etwas sortiert, aber was genau wird sortiert?) etc.
Gibt es einen bestimmten Grund, dass PokeViewModel.pokeDisplay eine ObservableCollection ist, aber trotzdem bei jedem schreibenden Zugriff durch eine neue Instanz ersetzt wird? ObservableCollections zu benutzen ergibt nur Sinn, wenn sich tatsächlich der Inhalt ändert. Sonst kannst du auch einfach eine Collection<T>, List<T> oder sogar ein Array verwenden, was in den meisten Fällen mindestens Speicher spart, wenn nicht sogar schneller ist.
Um den Code etwas übersichtlicher zu gestalten, ist es eventuell sinnvoll, das folgende Snippet in eine eigene Methode auszulagern (falls der code anders aussehen sollte als bei dir, liegt das daran, dass ich die DLL von dotPeek zu einem C# Projekt habe konvertieren lassen, und anschließend einmal die Code Cleanup Funktion von ReSharper habe drüberlaufen lassen):
if (lastRegion != currentRegion){ sortedPokemonInformation = pokemonInformation.OrderBy(o => o.mountainKalosDex).Where(o => o.mountainKalosDex != 0).ToList(); alreadyChecked = false; break;}if (!alreadyChecked){ sortedPokemonInformation = pokemonInformation.OrderBy(o => o.mountainKalosDex).Where(o => o.mountainKalosDex != 0).Where(o => !o.caught).ToList(); alreadyChecked = true; break;}sortedPokemonInformation = pokemonInformation.OrderBy(o => o.mountainKalosDex).Where(o => o.mountainKalosDex != 0).ToList();alreadyChecked = false;break;
Das ist relativ simpel, und führt dazu, dass deine CreateSortings Methode plötzlich auf eine Seite passt, auch wenn man die ausgelagerte Methode dazu zählt (was gut ist).
Implementation und Aufruf könnten etwa so aussehen:
// Aufruf (eine Zeile statt 15):
case "Kalos Gebirgs Pokédex":
SortPokemonByRegionalNumber(o => o.mountainKalosDex);
break;
// Implementation (ich war so frei, den Code etwas aufzulockern und den Memory Footprint etwas zu reduzieren):
private void SortPokemonByRegionalNumber(Func<PokeInformation, int> regionalNumberSelector)
{
// Wenn die Region bereits ausgewählt ist, togglen wir das alreadyChecked Flag, sonst setzen wir es auf false,
// um per default immer alle Pokemon für den entsprechenden Dex anzuzeigen
alreadyChecked = lastRegion == currentRegion && !alreadyChecked;
// Wenn du die Wahl hast, solltest du immer erst filtern und dann sortieren. Je weniger Elemente vorliegen, desto schneller ist die Sortierung.
var query = pokemonInformation.Where(x => regionalNumberSelector(x) != 0);
// Wenn alreadyChecked (das besser "removeCaughtPokemon" oder so heißen sollte) true ist, müssen wir die gefangenen Pokemon rauswerfen.
if (alreadyChecked)
{
query = query.Where(x => !x.caught);
}
sortedPokemonInformaiton = query.OrderBy(regionalNumberSelector).ToList();
}
Alles anzeigen
Den Rest guck ich mir jetzt lieber nicht mehr an, sonst wird das vermutlich für uns beide zu deprimierend ;)
Winziges Update:
Yay, Feedback :D Dafür schonmal herzlichen Dank.
*Buddhaa einen großen Dankeschön-Keks an den Kopf werf*
Bug:
- Wenn ich als Edition X oder Y wähle und anschließend den Dex auf z.B. Kalos-Gebirgsdex stelle, werden in der Habitatslist bei vielen Pokemon die Nummern nicht mehr angezeigt. Stattdessen steht dann z.B. "??? Raupy". Sobald ich den Dex wieder auf den nationalen stelle, werden die Nummern angezeigt.
- Es kommt mir so vor, dass wenn ich nach unten scrolle es ein wenig lagt, wenn ich nach oben scrolle aber nicht. (Hängt vllt. mit dem Laden der Bilder zusamme?) Kann aber auch sein, dass ich mir das einbilde.
Zum ersten: Sehr eigenartig. Muss ich mir mal angucken. Fixed.
Das mit dem leichten Ruckeln beim Scrollen ist mir auch schon aufgefallen. An dem Laden der Bilder kanns aber eigentlich nicht liegen (bzw. nur beim ersten mal runterscrollen, weil die im Hintergrund asynchron geladen werden, oder wenn sie das erste mal angezeigt werden sollen). Ich schätze einfach, dass das Panel, das ich mir da ausm Internet geklaut und gebugfixt habe, beim runterscrollen noch minimale Performance-Probleme hat – entweder beim Berechnen, welche Elemente als nächstes angezeigt werden müssen oder beim Rendern derselben. Ich kann mal versuchen, da noch ein bisschen Performance rauszuholen, aber versprechen kann ich leider nichts. Und ja, mich nervt das ruckeln auch^^
Verbesserungsschläge:
- eine Darstellung als Liste ohne Pokemon-Icons. (nicht) Gefangen kann dann durch einen (nicht) transparenten Pokeball dargestellt werden. In einer Liste, am Besten über mehrere Spalten, habe ich einfach eine bessere Übersicht und muss nicht ewig scrollen wenn ich im nationalen Dex bin.
- Bei der Sprachauswahl vllt. das zusätzliche Untermenü rausnehmen und es wie bei der Editionswahl "direkt" im Menü implementieren. Falls du das Untermenü beibehalten willst, vllt. so abändern dass man nicht auf "Deutsch -> Englisch" klicken muss, sondern auf "Sprache -> Englisch". Fande es im ersten Moment etwas verwirrend^^
- Ein Icon :D (mega important, I know ^^)
1. Ergibt Sinn, und ist notiert. (aber KA, wann ich das einbaue, da ich im Moment ne ganze Menge um die Ohren hab)
2. Ergibt ebenfalls Sinn. (das Flaggen-Icon bleibt aber da wo es ist :P) Erledigt
3. Kommt, sobald ich jemanden gefunden hab, der mir für lau ein fetziges Icon erstellt. Wenns um Grafik geht habe ich exakt ZERO Ahnung von allem :)
Ansonsten: Ich werde mal sehen müssen, ob ich das Tool regelmäßig nutze. Bisher habe ich immer eine gedruckte Liste genutzt und dort schön fleißig durchgestrichen. Das Problem ist einfach, wenn ich am DS bin, bin ich selten auch am Rechner und dann vergesse ich gerne mal was ich gefangen habe ^^ Und zum Nachschauen was ich noch nicht gefangen habe, ist es auch nicht praktisch wenn der Rechner aus ist. (Ingame Pokedex ist aber auch nicht grade schön zu bedienen). Optimal wäre imo eine App (Android pls^^), die ihre Datenbank online mit der Version auf dem Rechner synchonisiert. Aber ich schätze das wird wohl nicht so leicht zu machen sein :D
EDIT: Ach ja, meine Katze ist tot, an wen kann ich mich wenden? :D
Android App kannst du haben, wenn du mir ne All Inclusive Xamarin Lizenz spendierst (bleib mir bloß weg mit Java und Eclipse) sowie nen etwas leistungsfähigeren Server. Dann kriegst du aber direkt noch ne iOS App dazu ;)
Ansonsten musst du dich mit einer Windows 8.1 bzw. mit einer Windows Phone 8.1 App begnügen (die dann auch nur miteinander, aber nicht mit der Desktop App synchronisieren – sich dafür aber grade in der Mache befinden).
Wegen deiner Katze: Ich würde nen Tierpräparator, Nekromanten oder auch den Chinesen deines Vertrauens vorschlagen, je nachdem wie du jetzt weiter mit ihr verfahren wollen würdest.
Edit: Der kleine Bug (Nummern in der Habitatsliste) und die Sache mit der Sprachauswahl sind fixed. Außerdem hab ich endlich mal die Gelegenheit genutzt und der Habitatsauswahl ne feste Breite spendiert.
Von den bereits genannten (Chrona – dessen Geschlecht afaik nicht mal offiziell bekannt gegeben wurde –, Kurapika – der männlich ist iirc – und den ganzen offiziellen Traps/Reverse Traps) mal abgesehen, gibt es noch einen Charakter, bei dessen Geschlecht ich mir bis heute nicht einhundertprozentig sicher bin:
Combat Cyborg Nummer 8, "Otto" aus Mahou Shoujo Lyrical Nanoha StrikerS.
Sogar im StrikerS Manga (den ich zugegebenermaßen noch nicht ganz zu Ende gelesen habe) und im direkten Sequel zu StrikerS, Mahou Shoujo Lyrical Nanoha ViVid, wird insgesamt nur ein einziges mal Ottos Geschlecht angesprochen, wo man letztendlich aber enttäuscht wird ("Das ist ein Geheimnis"). Dementsprechend weiß selbst das Gros der Combat Cyborgs sein/ihr Geschlecht nach meinem Informationsstand nicht mit Sicherheit.
Laut dem Wiki handelt es sich um ein Mädchen bzw. eine Frau (was nahe liegt, da alle anderen Combat Cyborgs ebenfalls weiblich sind, und laut Scaglietti auch alle Combat Cyborgs mit einem Klon seiner selbst schwanger sind), aber offizielle Quellen dazu gibt es nicht. Die Tatsache, dass Otto – was in diesem Fall einfach italienisch für acht ist – im deutschen ein eindeutig männlicher Name ist, trägt nicht unbedingt dazu bei, die Verwirrung aufzulösen.
Ab sofort läuft das ganze Backend-Gedöns auf nem neuen Server (yay). Das bedeutet für euch vor allem mehr maximale Downloadgeschwindigkeit bei Updates – die Azure Server haben minimal mehr Power als mein alter verstaubter Laptop zu Hause, und auch eine minimal dickere Leitung – sowie weniger Ausfälle.
Außerdem habe ich vor, da über die nächsten Wochen eine Webseite drumrum zu bauen, mit toller Screenshot Galerie und nem vernünftigen Changelog und so. Man kann also gespannt sein.
(Und falls jemand befürchtet, dass ich mich mit dem Serverumzug in Unkosten gestürzt haben könnte: Der Storage für die Dateien kostet derzeit ungefähr einen fünftel US-Cent im Monat, und die Webseite selbst ist komplett gratis. Wenn ich also verhungern sollte, wird es nicht daran liegen.)
Und nur mal nebenbei bemerkt: Über etwas Feedback würde ich mich wirklich freuen. So seh ich nur, dass X Leute (derzeit 43) das runtergeladen haben, hab aber keine Ahnung, ob die tatsächlich benutzt wird, oder ob ich mir die ganze Mühe umsonst mach.
Update:
Alles in allem 339 Bände…
* Ich hatte bereits den ersten Band der deutschen Übersetzung (und den 2. vorbestellt), als ein Arbeitskollege bei JList was bestellt hat, und wissen wollte, ob ich evtl. was mit bestellen will, um Versandkosten zu sparen… Und ich dachte mir "why not", mit dem Resultat, dass ich jetzt also diese beiden Bände auch im japanischen Original besitze.
** Derselbe Arbeitskollege hat dann angefangen Bleach zu sammeln, und nach den ersten 3 Bänden jemanden auf Ebay gefunden, der die ersten X Bände als Komplettpaket zu nem Schleuderpreis rausgehauen hat, woraufhin er mir die Bände, die er nun doppelt hatte, geschenkt hat.
^ Ganz richtig ist das nicht. Wenn die Datei nicht verschlüsselt ist (und das nicht irgendwie Java oder .NET Bytecode ist, der erst zur Laufzeit in Maschinencode umgewandelt wird und deshalb sowieso ziemlich einfach dekompiliert werden kann), kommt man ohne jedwede Schwierigkeit an den Assemblercode (weil jede Maschinenanweisung 1:1 in Assembler umgewandelt werden kann), und wenn man den hat, kann man mit etwas Übung entschlüsseln, was das Programm macht (auch wenn das möglicherweise ziemlich kompliziert ist, wenn man z.B. optimierten Code hat, der von nem C++ Compiler generiert wurde).
Zur Frage: Keine Ahnung, ich hab mich noch nie mit Verschlüsselung von ausführbarem Code beschäftigt.
Sieht nett aus, hat aber noch einige Schwächen:
Und in Anbetracht der Tatsache, dass der OP hier seit Mai nicht mehr gesehen wurde: Ich habe mir erlaubt, die generelle Idee zu klauen und ein paar extra Features hinzuzufügen – Habitatsliste, Regionale Pokedexe, eigenes Profil für jede Edition, filtern nach gefangenen/nicht gefangenen Pokemon, automatische Updates – (siehe meine Signatur), mit dem Unterschied, dass meine Umsetzung Windows only ist, weil .NET.
Edit @ unter mir:
Oder alternativ einfach meine Version benutzen, weil da der nationale Pokedex überhaupt nicht gruppiert oder in Seiten aufgesplittet ist (und außerdem vollständig) ;)
Da gibt es 2 Möglichkeiten:
1) Deren Service ist buggy, und knallt bei einigen legalen Anfragen mit einer NullReferenceException, obwohl er es nicht sollte. In dem Fall bist du shit out of luck und solltest dich an deren technischen Support wenden.
2) Der Service ist an sich fehlerfrei und mit deiner Anfrage stimmt irgend etwas nicht (und der Service ist zu blöd, das vorher zu validieren). In dem Fall kannst du entweder rumprobieren, bis es klappt, oder dich ebenfalls hilfesuchend an den Support wenden (oder auf einschlägigeren Seiten nachfragen).
In beiden Fällen kannst du hier, glaube ich, mit eher weniger Hilfe rechnen.
Auch auf die Gefahr hin, mich zu wiederholen: in.
Außerdem das hier:
Da ich eh in Hamburg wohne, mache ich meine Ankunftszeit davon abhängig, wann so allgemein die meisten dann ankommen. Aber schätzungsweise so gegen 12 Uhr.
Das scheint ein Problem der Skype Server zu sein; ein Arbeitskollege hat das auch, dass Gruppenkonversationen bei ihm zufällig nur auf dem Rechner oder nur auf dem Handy auftauchen. Ich hatte mal ein ähnliches Problem, dass Nachrichten in Gruppenkonversationen nicht an mein Telefon gepusht wurden und da erst auftauchten, nachdem ich die App gestartet und die Konversationsliste aktualisiert hatte, aber eigenartigerweise tritt das seit einiger Zeit nicht mehr auf.
Ein Workaround ist tatsächlich, sich von allen Skype-Instanzen abzumelden, außer der, in der man die Nachrichten erhalten möchte.
Ich persönlich benutze
Das kann ich dir nicht sagen, ab Windows 8 ist er jedenfalls fest integriert und muss nicht nachinstalliert werden.
Das, was bei Windows 8 Windows Defender heißt, ist nicht dasselbe wie Windows Defender bei älteren Windows Versionen. Vielmehr handelt es sich dabei um eine ins Betriebssystem integrierte Version von Microsoft Security Essentials, die man bei älteren Versionen nachinstallieren muss. Der alte Windows Defender stellt nur einen rudimentären Schutz dar, um zwischen Installation des OS und Installation eines vernünftigen Antivirenprogramms nicht völlig schutzlos zu sein.
Nicht umsonst wird man bei der Inbetriebnahme eines Rechners mit <= Win7 darauf hingewiesen, dass man doch bitte einen Virenscanner installieren sollte.