рдПрдХ рдЬрдЯрд┐рд▓ AppEngine рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдЪреАрдЬреЗрдВ

рдореИрдВрдиреЗ рдЦрд┐рд▓реМрдиреЗ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ - рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕рдордЧреНрд░ рд░реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рд░рд╣рддрд╛ рд╣реИ:



рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ AppEngine рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЙрди рд╕рд░рд▓рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рдЗрд╕ рд╕рд░рд▓ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред



рдЬрд╛рд╣рд┐рд░ рд╣реИ, "рдЙрдбрд╝рд╛рди рдкрд░" рд░реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдПрдХ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдп рд╣реИ - рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЙрдирдХреА рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рдкреГрд╖реНрда рдзреАрдорд╛ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдорд╛рди рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛:



class Player(db.Model): name = db.StringProperty() scores = db.IntegerProperty() #  #... rank = db.IntegerProperty() # <--  
      
      







рд╣рд░ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рдЦрд┐рд▓рд╛рдбрд╝реА рдЕрдВрдХ рд╣рд╛рд╕рд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╣рд╛рд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рд╕реНрдерд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреБрдирд░реНрдЧрдгрдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдкрд╣рд▓рд╛ рдирд╛рдо рдРрдирдХ рдЬрдЧрд╣
...
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 123 50
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 121 51
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 3 111 52
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 4 105 53
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 5 100 54
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 6 99 55
...




рдЕрдм, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ 5 рдЕрдВрдХ 21 рдЕрдВрдХ рд╣реИрдВ рдФрд░ рдХреБрд▓ 121 рд╣реИрдВ, рддреЛ рдореИрдВ 100 рдФрд░ 121 рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред

рдкрд╣рд▓рд╛ рдирд╛рдо рдРрдирдХ рдЬрдЧрд╣
...
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 123 50
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 5 121 54
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 121 51
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 3 111 52
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 4 105 53
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 6 99 55
...


рднрд░реНрддреА рдХреЗ рдмрд╛рдж:

рдкрд╣рд▓рд╛ рдирд╛рдо рдРрдирдХ рдЬрдЧрд╣
...
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 123 50
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 5 121 51
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 121 52
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 3 111 53
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 4 105 54
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 6 99 55
...


рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреЗ AppEngine рдкрд░ рдПрдХ рдЙрдЪреНрдЪ рднрд╛рд░ рджрд┐рдпрд╛ (рд╕реАрдкреАрдпреВ рдЫрдд рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ):



рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдФрд░ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреНрд▓рд╛рд╕ рдореЗрдВ 30 рд╕реЗ рдЕрдзрд┐рдХ рдлрд╝реАрд▓реНрдбреНрд╕ рдореЗрдВ рд╣реИ, рдФрд░ AppEngine рдореЗрдВ рдЗрди рд╕рднреА рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдЪрдпрди рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдИ рднреА рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдореИрдВрдиреЗ рдЦрд┐рд▓рд╛рдбрд╝реА рд╡рд░реНрдЧ рд╕реЗ рд░реИрдВрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдХреА рдЧрд┐рдирддреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ "рд▓реЗрдмрд▓" рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

 class Player(db.Model): #...  30-  ... rank = db.ReferenceProperty(reference_class=PlayerRank) class PlayerRank(db.Model): score = db.IntegerProperty() rank = db.IntegerProperty()
      
      





рдЕрдм рдХреЗрд╡рд▓ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд▓реЗрдпрд░рд░реИрдВрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд░реАрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рд╣реБрдИред рдЦреИрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕рдиреЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдорджрдж рдХреА, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рд╕рдВрддреЛрд╖рдЬрдирдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдЬрд╛рд╣рд┐рд░ рд╣реИ, AppEngine рдЬреЛ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЕрдкрдиреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдмреБрд░рд╛ AppEngine рд╣реИред рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдСрдкрд░реЗрд╢рдиреЛрдВ рдореЗрдВ рдереАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдкрд╛рд╕ 1 рд░реЗрдЯрд┐рдВрдЧ рдкреНрд╡рд╛рдЗрдВрдЯ рд╣реИ, рдФрд░ рдЕрдиреНрдп 1000 рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ 2 рдЕрдВрдХ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдХреЗрд╡рд▓ рджреЛ рдЕрдВрдХреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЖрдкрдХреЛ рдЙрди рд╕рднреА 1000 рдЕрдиреНрдп рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЧрд┐рдирдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдм рдЕрдкрдирд╛ рд╕реНрдерд╛рди рдХрдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдЧреЗ рднреА рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдХреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд░рдЦреЗрдВред рдпрд╛рдиреА рдпрджрд┐ 1000 рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ 2 рдЕрдВрдХ рд╣реИрдВ, рддреЛ рдЙрди рд╕рднреА рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рд╣реЛрдЧрд╛ (3000 рд╡рд╛рдВ рдХрд╣реЗрдВ)ред

рдРрдирдХ рдЬрдЧрд╣
...
2 3000
1 3001
...


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╣рдЬрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рджреЛ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

 class Player(db.Model): #...  30-  ... def rank(self): return ScoreRank.all().filter('score =', self.score).get().rank class ScoreRank(db.Model): score = db.IntegerProperty() rank = db.IntegerProperty() count = db.IntegerProperty()
      
      





рдХрд┐рддрдиреЗ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рдЕрдВрдХ рд╣реИрдВ, рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЛрд░рд░реИрдВрдХ.рдХрд╛рдЙрдВрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ 0 рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рджрд┐рдП рдЧрдП рдЕрдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЛрд░рд░реИрдВрдХ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

AppEngine рдиреЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛:





рдирд┐рд╖реНрдХрд░реНрд╖



рдПрдХ рддрд░рдл, AppEngine рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдПрдХ LAMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреВрд╕рд░реА рдУрд░, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддреЗрдЬрд╝ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдкреГрд╖реНрда рдЙрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдореЗрдВ рдпреЗ рдкреГрд╖реНрда рд╢рд╛рдпрдж рдПрдХ рдЕрдбрд╝рдЪрди рдФрд░ рдмреНрд░реЗрдХ рд╣реЛрдВрдЧреЗ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ php + mysql рдкрд░ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдХреЛ рдмреНрд░реЗрдХ рдХрд░рдирд╛)ред рддреАрд╕рд░реЗ рдкрд╛рдпрджрд╛рди рдкрд░, AppEngne рдХрд╛ рдХреЛрдЯрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИред 30 рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 10 рд╣рдЬрд╛рд░ рдЕрдиреБрд░реЛрдз рдФрд░ рдЙрд╕рдХреЗ рдЕрджреНрдпрддрди рдиреЗ рдПрдХ рдореБрдлреНрдд рдХреЛрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдлреЗрдВрдХ рджрд┐рдпрд╛ред рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ AppEngine рдорд╣рдВрдЧрд╛ рд╣реИ , рд▓реЛрдХрдкреНрд░рд┐рдп рдзрд╛рд░рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред



рдЦрд┐рд▓реМрдиреЗ рд╕реЗ рд▓рд┐рдВрдХ: www.vkubiki.ru



All Articles