+ Rispondi alla Discussione
Pag 1 di 2 12 UltimaUltima
Risultati da 1 a 25 di 40

Discussione: TGM Ladder

  1. #1
    Il Nonno L'avatar di Kralizek
    Data Registrazione
    14-10-01
    Località
    Stockholm
    Messaggi
    9,894

    Predefinito TGM Ladder

    Gironzolando per il sito di SC2Ranks ho trovato una simpatica feature, le custom divisions.

    Con un po' di buona volontà ho preso la lista degli utenti registrati nel topic toppato ed ho creato una custom division per tgm.

    Ecco il link:

    TGM Ladder

  2. #2
    Suprema Borga Imperiale L'avatar di Kemper Boyd
    Data Registrazione
    18-09-02
    Messaggi
    19,101

    Predefinito Riferimento: TGM Ladder

    Simpatica la ladder interna bel lavoro krallo!

  3. #3
    Lo Zio L'avatar di Zephir
    Data Registrazione
    16-12-04
    Località
    Copenhagen area
    Messaggi
    3,321

    Predefinito Riferimento: TGM Ladder

    Io non ci sono

  4. #4
    Il Nonno L'avatar di Kralizek
    Data Registrazione
    14-10-01
    Località
    Stockholm
    Messaggi
    9,894

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Zephir Visualizza Messaggio
    Io non ci sono
    puoi registrarti da solo =)

  5. #5
    Il Nonno L'avatar di cla24
    Data Registrazione
    03-11-02
    Località
    Ercolano
    Messaggi
    7,840

    Predefinito Riferimento: TGM Ladder

    6° su 30, non male


    Bel lavoro kral

  6. #6
    Antares
    ospite

    Predefinito Riferimento: TGM Ladder


  7. #7
    Il Nonno L'avatar di Kralizek
    Data Registrazione
    14-10-01
    Località
    Stockholm
    Messaggi
    9,894

    Predefinito Riferimento: TGM Ladder

    ecco uno script C# per .NET 3.5 che si può eseguire semplicemente su LinqPad

    Codice:
    string url = @"http://sc2ranks.com/api/clist/1347/all/all/1/0.xml?appKey=clansdn.org";
    
    XDocument document = XDocument.Load(url);
    
    var records = from record in document.Root.Elements()
    				let member = record.Element("members").Element("member")
    				select new 
    				{
    					Losses = int.Parse(record.Element("losses").Value),
    					Division = record.Element("division").Value,
    					Ratio = double.Parse(record.Element("ratio").Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat),
    					Points = int.Parse(record.Element("points").Value),
    					Wins = int.Parse(record.Element("wins").Value),
    					Player = new 
    					{
    						Name = member.Element("name").Value,
    						FavoriteRace = member.Element("fav-race").Value,
    						CharacterCode = int.Parse(member.Element("character-code").Value),
    						BattleNetID = int.Parse(member.Element("bnet-id").Value)
    					}
    				};
    				
    var ladder = from record in records
    				orderby record.Points descending
    				select new 
    				{
    					Player = record.Player.Name,
    					Points = record.Points,
    					Wins = record.Wins,
    					Losses = record.Losses,
    					Ratio = record.Ratio
    				};
    				
    ladder.Dump();
    Spoiler:

    un saluto a tutti gli javisti e p(c)accapi-isti

  8. #8
    Suprema Borga Imperiale L'avatar di Kemper Boyd
    Data Registrazione
    18-09-02
    Messaggi
    19,101

    Predefinito Riferimento: TGM Ladder

    Bellino il linq

  9. #9
    Suprema Borga Imperiale L'avatar di Kemper Boyd
    Data Registrazione
    18-09-02
    Messaggi
    19,101

    Predefinito Riferimento: TGM Ladder

    Rilancio con la versione PHP che tiene anche conto della lega nell'ordinamento
    Codice:
    $url = 'http://sc2ranks.com/api/clist/1347/all/all/1/0.xml?appKey=clansdn.org';
    $xml = simplexml_load_file($url);
    
    $players = array();
    
    foreach ( $xml->record as $division ) {
        $players[] = array(
            'player' => (string)$division->members->member->name,
            'league' => (string)$division->league,
            'points' => (int)$division->points,
            'wins'   => (int)$division->wins,
            'losses' => (int)$division->losses,
            'ratio'  => (float)$division->ratio,
        );
    }
    
    usort($players, 'ladder_sort');
    print_r($players);
    
    function ladder_sort($a, $b) {
        $leagues = array(
            'bronze'   => 0,
            'silver'   => 1,
            'gold'     => 2,
            'platinum' => 3,
            'diamond'  => 4,
        );
        if ( $leagues[$a['league']] == $leagues[$b['league']] ) {
            if ( $a['points'] == $b['points'] )
                return 0;
            return $a['points'] > $b['points'] ? -1 : 1;
        }
        return $leagues[$a['league']] > $leagues[$b['league']] ? -1 : 1; 
    }

  10. #10
    Il Nonno L'avatar di Kralizek
    Data Registrazione
    14-10-01
    Località
    Stockholm
    Messaggi
    9,894

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Kemper Boyd Visualizza Messaggio
    Rilancio con la versione PHP che tiene anche conto della lega nell'ordinamento
    Codice:
    $url = 'http://sc2ranks.com/api/clist/1347/all/all/1/0.xml?appKey=clansdn.org';
    $xml = simplexml_load_file($url);
    
    $players = array();
    
    foreach ( $xml->record as $division ) {
        $players[] = array(
            'player' => (string)$division->members->member->name,
            'league' => (string)$division->league,
            'points' => (int)$division->points,
            'wins'   => (int)$division->wins,
            'losses' => (int)$division->losses,
            'ratio'  => (float)$division->ratio,
        );
    }
    
    usort($players, 'ladder_sort');
    print_r($players);
    
    function ladder_sort($a, $b) {
        $leagues = array(
            'bronze'   => 0,
            'silver'   => 1,
            'gold'     => 2,
            'platinum' => 3,
            'diamond'  => 4,
        );
        if ( $leagues[$a['league']] == $leagues[$b['league']] ) {
            if ( $a['points'] == $b['points'] )
                return 0;
            return $a['points'] > $b['points'] ? -1 : 1;
        }
        return $leagues[$a['league']] > $leagues[$b['league']] ? -1 : 1; 
    }
    lo faccio in meno!

    Codice:
    string url = @"http://sc2ranks.com/api/clist/1347/all/all/1/0.xml?appKey=clansdn.org";
    
    XDocument document = XDocument.Load(url);
    
    Dictionary<string, int> leagues = new Dictionary<string,int>
    {
    	{"bronze", 1},
    	{"silver", 2},
    	{"gold", 3},
    	{"platinum", 4},
    	{"diamond", 5}
    };
    
    var records = from record in document.Root.Elements()
    				let member = record.Element("members").Element("member")
    				select new 
    				{
    					Losses = int.Parse(record.Element("losses").Value),
    					Division = record.Element("division").Value,
    					Ratio = double.Parse(record.Element("ratio").Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat),
    					Points = int.Parse(record.Element("points").Value),
    					Wins = int.Parse(record.Element("wins").Value),
    					League = leagues[record.Element("league").Value],
    					Player = new 
    					{
    						Name = member.Element("name").Value,
    						FavoriteRace = member.Element("fav-race").Value,
    						CharacterCode = int.Parse(member.Element("character-code").Value),
    						BattleNetID = int.Parse(member.Element("bnet-id").Value)
    					}
    				};
    				
    var ladder = from record in records
    				orderby record.League descending, record.Points descending
    				select new 
    				{
    					Player = record.Player.Name,
    					Points = record.Points,
    					Wins = record.Wins,
    					Losses = record.Losses,
    					Ratio = record.Ratio,
    					League = record.League
    				};
    				
    ladder.Dump();

  11. #11
    Suprema Borga Imperiale L'avatar di Kemper Boyd
    Data Registrazione
    18-09-02
    Messaggi
    19,101

    Predefinito Riferimento: TGM Ladder



    Comunque suggerirei JSON (8.5kb) invece che XML (22kb).

  12. #12
    Il Nonno L'avatar di Kralizek
    Data Registrazione
    14-10-01
    Località
    Stockholm
    Messaggi
    9,894

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Kemper Boyd Visualizza Messaggio
    Rilancio con la versione PHP che tiene anche conto della lega nell'ordinamento
    Codice:
    $url = 'http://sc2ranks.com/api/clist/1347/all/all/1/0.xml?appKey=clansdn.org';
    $xml = simplexml_load_file($url);
    
    $players = array();
    
    foreach ( $xml->record as $division ) {
        $players[] = array(
            'player' => (string)$division->members->member->name,
            'league' => (string)$division->league,
            'points' => (int)$division->points,
            'wins'   => (int)$division->wins,
            'losses' => (int)$division->losses,
            'ratio'  => (float)$division->ratio,
        );
    }
    
    usort($players, 'ladder_sort');
    print_r($players);
    
    function ladder_sort($a, $b) {
        $leagues = array(
            'bronze'   => 0,
            'silver'   => 1,
            'gold'     => 2,
            'platinum' => 3,
            'diamond'  => 4,
        );
        if ( $leagues[$a['league']] == $leagues[$b['league']] ) {
            if ( $a['points'] == $b['points'] )
                return 0;
            return $a['points'] > $b['points'] ? -1 : 1;
        }
        return $leagues[$a['league']] > $leagues[$b['league']] ? -1 : 1; 
    }
    Citazione Originariamente Scritto da Kemper Boyd Visualizza Messaggio


    Comunque suggerirei JSON (8.5kb) invece che XML (22kb).
    Per Json devo sbattermi a scrivere le classi e passare il tutto al deserializzatore. Altrimenti, se volessi qualcosa tipo Linq to Xml per Json dovrei rivolgermi a questo progetto OS.

    Ad ogni modo, in genere preferisco lavorare: se i dati vengono importati sul server, preferisco usare xml. se è una richiesta dal client, meglio json.

    Un po' per i tool, un po' perchè xml è migliore nella comunicazione B2B (business-to-business) per via degli schema e dei namespace che permettono di avere un po' di gioco con i problemi di versioning.

  13. #13
    Suprema Borga Imperiale L'avatar di Kemper Boyd
    Data Registrazione
    18-09-02
    Messaggi
    19,101

    Predefinito Riferimento: TGM Ladder

    Sisi mi riferivo al caso in questione non in genere, e credevo che linq supportasse nativamente json, quindi bon (stiamo esagerando )

  14. #14
    Il Nonno L'avatar di Kralizek
    Data Registrazione
    14-10-01
    Località
    Stockholm
    Messaggi
    9,894

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Kemper Boyd Visualizza Messaggio
    Sisi mi riferivo al caso in questione non in genere, e credevo che linq supportasse nativamente json, quindi bon (stiamo esagerando )
    linq supporta tutto e niente. nel senso che di base linq non è che un set di operazioni costruite intorno ad un'interfaccia ( IEnumerable<T> ). Tutto ciò che implementa questa interfaccia è buona da mandare in pasto a Linq.
    Ma nel frattempo non abbiamo ancora nulla. Ed in questo viene in aiuto un'altra interfaccia ( IQueryable<T> ) che, per dirla in breve, permette di trasformare una query linq in qualcosa di totalmetne diverso (ad es. LinqToSql e LinqToEntities trasformano una query linq in una query sql).

    Spoiler:

    cmq ecco qui la versione json
    ho aggiunto anche delle enum, altrimenti il codice è di difficile lettura

    come vedi ho dovuto creare delle classi che mi permettessero di istruire il serializzatore sul come leggere la stringa json. Laborioso ma efficace e type-safe... quelle cose che noi architetti amiamo insomma =)

    Codice:
    void Main()
    {
    	string url = @"http://sc2ranks.com/api/clist/1347/all/all/1/0.json?appKey=clansdn.org";
    
    	WebClient wc = new WebClient();
    	byte[] json = wc.DownloadData(url);
    
    	DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Record[]));
    
    	MemoryStream ms = new MemoryStream(json);
    
    	var records = (Record[])serializer.ReadObject(ms);
    
    	var ladder = from record in records
    				 orderby record.League descending, record.Points descending
    				 select record;
    
    	ladder.Dump();
    }
    
    // Define other methods and classes here
    	[DataContract(Name = "record")]
    	public class Record
    	{
    		[DataMember(Name = "losses")]
    		public int Losses { get; set; }
    
    		[DataMember(Name = "is_random")]
    		public bool IsRandom { get; set; }
    
    		[DataMember(Name = "division")]
    		public string Division { get; set; }
    
    		[DataMember(Name = "ratio")]
    		public double Ratio { get; set; }
    
    		[DataMember(Name = "division_id")]
    		public int DivisionID { get; set; }
    
    		[DataMember(Name = "bracket")]
    		public int Bracket { get; set; }
    
    		[DataMember(Name = "league")]
    		protected string LeagueRaw { get; set; }
    
    		[DataMember(Name = "points")]
    		public int Points { get; set; }
    
    		[DataMember(Name = "division_rank")]
    		public int DivisionRank { get; set; }
    
    		[DataMember(Name = "wins")]
    		public int Wins { get; set; }
    
    		[DataMember(Name = "members")]
    		public Member[] Members { get; set; }
    
    		public League League { get { return (League)leagues[LeagueRaw]; } }
    
    		static Dictionary<string, League> leagues = new Dictionary<string, League>
    		{
    	        {"bronze", League.Bronze },
    	        {"silver", League.Silver },
    	        {"gold", League.Gold },
    	        {"platinum", League.Platinum },
    	        {"diamond", League.Diamond }
    		};
    	}
    
    	[DataContract(Name = "member")]
    	public class Member
    	{
    		[DataMember(Name = "fav_race")]
    		protected string FavoriteRaceRaw { get; set; }
    
    		public Race FavoriteRace { get { return races[FavoriteRaceRaw]; } }
    
    		[DataMember(Name = "region")]
    		protected string RegionRaw { get; set; }
    
    		public Region Region { get { return regions[RegionRaw]; } }
    
    		[DataMember(Name = "character_code")]
    		public int CharacterCode { get; set; }
    
    		[DataMember(Name = "name")]
    		public string Name { get; set; }
    
    		[DataMember(Name = "bnet_id")]
    		public int BattleNetID { get; set; }
    
    		static Dictionary<string, Region> regions = new Dictionary<string, Region>
    		{
    			{"eu", Region.EU }
    		};
    
    		static Dictionary<string, Race> races = new Dictionary<string, Race>
    		{
    			{ "protoss", Race.Protoss },
    			{ "terran" , Race.Terran },
    			{ "zerg", Race.Zerg },
    			{ "random", Race.Random }
    		};
    	}
    
    	[DataContract]
    	public enum League : short
    	{
    		[EnumMember(Value = "bronze")]
    		Bronze = 1,
    
    		[EnumMember(Value = "silver")]
    		Silver = 2,
    
    		[EnumMember(Value = "gold")]
    		Gold = 3,
    
    		[EnumMember(Value = "platinum")]
    		Platinum = 4,
    
    		[EnumMember(Value = "diamond")]
    		Diamond = 5
    	}
    
    	[DataContract(Name = "race")]
    	public enum Race : short
    	{
    		[EnumMember(Value = "terran")]
    		Terran = 1,
    
    		[EnumMember(Value = "protoss")]
    		Protoss = 2,
    
    		[EnumMember(Value = "zerg")]
    		Zerg = 3,
    		
    		[EnumMember(Value = "random")]
    		Random = 0
    	}
    
    	[DataContract(Name = "region")]
    	public enum Region : short
    	{
    		[EnumMember(Value = "eu")]
    		EU = 1
    	}

  15. #15
    Festonio da Trolla L'avatar di Kurtz
    Data Registrazione
    01-04-03
    Località
    Ocopoli
    Messaggi
    16,804

    Predefinito Riferimento: TGM Ladder

    osignore fermatevi

  16. #16
    Festonio da Trolla L'avatar di Kurtz
    Data Registrazione
    01-04-03
    Località
    Ocopoli
    Messaggi
    16,804

    Predefinito Riferimento: TGM Ladder

    cmq bravo renato, carina come idea

  17. #17
    Il Nonno L'avatar di Spazzy84
    Data Registrazione
    05-11-03
    Località
    B E R G A M O
    Messaggi
    5,181

    Predefinito Riferimento: TGM Ladder

    Voi programmatori siete gente strana.

    Per fortuna ho fatto il sistemist... oh wait

  18. #18
    Festonio da Trolla L'avatar di Kurtz
    Data Registrazione
    01-04-03
    Località
    Ocopoli
    Messaggi
    16,804

    Predefinito Riferimento: TGM Ladder

    ma complimenti al darth che sfiora i 1500 e sopratutto mantiene un ottimo 60% winrate in piena mid diamond complimenti.

  19. #19
    Suprema Borga Imperiale L'avatar di Kemper Boyd
    Data Registrazione
    18-09-02
    Messaggi
    19,101

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Spazzy84 Visualizza Messaggio
    Voi programmatori siete gente strana.

    Per fortuna ho fatto il sistemist... oh wait


    Citazione Originariamente Scritto da Kurtz Visualizza Messaggio
    ma complimenti al darth che sfiora i 1500 e sopratutto mantiene un ottimo 60% winrate in piena mid diamond complimenti.
    Si davvero, grats darth!

  20. #20
    Il Nonno L'avatar di Spazzy84
    Data Registrazione
    05-11-03
    Località
    B E R G A M O
    Messaggi
    5,181

    Predefinito Riferimento: TGM Ladder

    già già il 60 è una % della madonna

    Io per tenere il 50 scarso in platinum sto davvero faticando

  21. #21
    Festonio da Trolla L'avatar di Kurtz
    Data Registrazione
    01-04-03
    Località
    Ocopoli
    Messaggi
    16,804

    Predefinito Riferimento: TGM Ladder

    io non sto capendo il sistema, fa fare 5 partite vs platinum / low diamond poi mi sbatte 5 volte contro gente a 1700 e poi torna ai platinum etc etc, continuo a vincere 6 perdere 4 vincere 6 perdere 4

    poi odio i cheese, ci perdo un sacco di partite e mi incazzo.

  22. #22
    Suprema Borga Imperiale L'avatar di Kemper Boyd
    Data Registrazione
    18-09-02
    Messaggi
    19,101

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Kurtz Visualizza Messaggio
    poi odio i cheese, ci perdo un sacco di partite e mi incazzo.


    Continuo a ripetermi che sono tutte strategie legittime ecc ecc pero' mi girano le balle ogni volta

  23. #23
    Suprema Borga Imperiale L'avatar di DagonCultist
    Data Registrazione
    17-01-06
    Località
    Columbia
    Messaggi
    20,604

    Predefinito Riferimento: TGM Ladder

    bellissima

  24. #24
    Il Nonno L'avatar di Spazzy84
    Data Registrazione
    05-11-03
    Località
    B E R G A M O
    Messaggi
    5,181

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Kemper Boyd Visualizza Messaggio


    Continuo a ripetermi che sono tutte strategie legittime ecc ecc pero' mi girano le balle ogni volta
    *


    specialmente i cheese protoss, quando mi zealotano in base, anche se scoutati non riesco a fermarli

  25. #25
    Il Nonno L'avatar di Kralizek
    Data Registrazione
    14-10-01
    Località
    Stockholm
    Messaggi
    9,894

    Predefinito Riferimento: TGM Ladder

    Citazione Originariamente Scritto da Spazzy84 Visualizza Messaggio
    *


    specialmente i cheese protoss, quando mi zealotano in base, anche se scoutati non riesco a fermarli
    sei OT!

+ Rispondi alla Discussione
Pag 1 di 2 12 UltimaUltima

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice HTML è Disattivato