SlideShare a Scribd company logo
1 of 57
Download to read offline
Python 于 web-game 的应用

 赖勇浩(http://laiyonghao.com)
       2011.12.04


                              1
自我介绍
• 网游从业超过 6 年              • 天下盛境
• 曾在网易、江苏盛典                –   团队建设
                           –   项目管理
  (广州)等公司工作
                           –   服务器端
• 珠三角技术沙龙                  –   通信与安全
• 赖勇浩的编程私伙局               • 斩魂
  – pv 1,000,000+          – 服务器端
  – csdn blog top100       – AI
• twitter/weibo/42qu/CP   • 幻想三国、疯狂石头
  yUG/gzlug                 和泡泡游戏等

                                        2
启发于……




http://slidesha.re/aGrXfY   http://slidesha.re/fQhtkL

                                                        3
以我经历的项目为蓝本,向大家讲述
 web-game 服务器端技术与工具



    源于项目,高于项目。

                      4
项目介绍1
• 天下盛境
  – 横版卷轴
  – 动作类网页游戏
• 0505u.com
• 服务器端完全使
  用 Python 开发
• 2010.08~现在
                  5
项目介绍2




• 棋牌OnWeb
   – QQgame copy cat
• http://qp-demo.laiyonghao.com/client/
• 服务器端完全使用 Python 开发
• 2009.01~2009.03
                                          6
library




          7
Python 在 Python 项目中的位置



   C/C++         Python
           lua            C/C++



           lua            Python




                                   8
大中型 Python 项目




                9
大中型 Python 项目




                10
大中型 Python 项目




                11
lib 应该在 Lib/site-packages 目录




                               12
要整这么复杂吗?




           13
就一个 setup.py 而已……



        • 避免手写 setup.py
        • 如何建立命名空间包




                          14
神器 paster
     • http://pypi.python.org/
       pypi/PasteScript
     • 创建、安装、测试、
       部署、运行
     • Many different kinds
       of projects have
       created skeletons for
       their projects (Pylons,
       TurboGears,
       ZopeSkel, and others).
     • http://pypi.python.org/
       pypi/PasteDeploy
                            15
基本用法




       16
pbp.skels
• http://pypi.python.org/pypi/pbp.skels
• pbp.skels is a collection of templates to
  speed up the creation of standardized,
  boiler-plate code.




                                              17
• paster create -t pbp_package my.package




                                            18
http://lucasmanual.com/mywiki/PythonPaste


  编写自己的 templates, commands




                                            19
开发、测试、打包、更新
•   python setup.py develop
•   python setup.py test
•   python setup.py bdist
•   python setup.py sdist --formats=gztar,zip
•   python setup.py register
•   python setup.py upload


                                                20
virtualenv
• http://pypi.python.org/pypi/virtualenv
• Virtual Python Environment builder
• 《Python于Web 2.0网站的应用》介绍过了




                                       21
plugin




         22
what is the difference between
         plugin and library?
• A plugin extends the capabilities of a
  larger application.
• A library is a collection of subroutines or
  classes used to develop software.

• http://stackoverflow.com/a/2792342



                                                23
以《棋牌OnWeb》为例……




                 24
到后台看看……




          25
神器 setuptools




                26
setup.py
entry_points="""
# -*- Entry points: -*-
[qipaionweb.games]
doudizhu = doudizhu.game_impl:GameImpl
"""




                                         27
def get_game_impl_class(game_name):
  group = 'qipaionweb.games'
  prj = game_name
  return pkg_resources.load_entry_point(
      prj,
      group,
      game_name)


                                           28
接口与实现
• game_interface   • game_impl
  – 与房间进程交互         – 实现接口
  – 通用功能(踢人)        – 实现业务逻辑
  – 计时器管理           – 不接触网络
  – 定义接口            – 不接触数据库
                    – 单线程


                                 29
进阶:Trac Component Architecture

•    trac.core.ComponentManager
•    trac.core.Component
•    trac.core.ExtensionPoint
•    trac.core.Interface




    http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture
    http://trac.edgewall.org/wiki/TracDev/PluginDevelopment
                                                                  30
参考:ulipad
• http://code.google.com/p/ulipad/source/bro
  wse/trunk/modules/Mixin.py
• 另一种 plugin 机制




                                           31
I/O




      32
I/O needs to be done differently.




                                    33
I/O needs to be done differently.




                                    34
35
http://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf
                                                               36
This is how I/O should be done.
def sign_in(username, password):
  result = db.query('select ...')
  if len(result) == 1:
       token = game.sign_in(...)
       return token               2            DB
                       1
                                       3

                       6     sign_in       4

                                       5
                                           game
                             7                      37
协程才是未来!




          38
gevent




         39
gevent = libevent + greenlet




                               40
libevent
• 提供指定文件描述符事件发生时调用
  回调函数的机制
• timeouts, signals




                      41
greenlet
• green thread
  – user space
  – pseudo-concurrently
  – scheduled by VM
  – http://wikipedia.org/wiki/Green_threads
• greenlet = python's green thread


                                              42
echo server
•   from gevent.server import                   •   if __name__ == '__main__':
    StreamServer                                •       server =
•   def echo(socket, address):                      StreamServer(('0.0.0.0', 6000),
                                                    echo)
•      fileobj = socket.makefile()
                                                •       print ('Starting echo server
•      while True:                                  on port 6000')
•          line = fileobj.readline()            •       server.serve_forever()
•          if not line:
•              break
•          if line.strip().lower() == 'quit':
•              print ("client quit")
•              break
•          fileobj.write(line)
•          fileobj.flush()

                                                                                  43
参考:eurasia
• http://code.google.com/p/eurasia/




                                      44
protocol




           45
google protobuf
• http://code.google.com/p/protobuf/
• 协议描述语言
• C++、java、Python and more




                                       46
RPC




      47
abu.RPC = gevent + protobuf




                              48
abu.RPC
•   更小(得益于 google protobuf)
•   更快(得益于 libevent)
•   同步API(利益于 greenlet)
•   并行管线
•   双向调用

                              49
并行管线




http://wiki.msgpack.org/display/MSGPACK/Design+of+RPC
                                                        50
echo server
from abu.rpc import Server, send_return
import echo_pb2 as echo
class EchoService(echo.EchoService):
   @send_return
   def echo(self, controller, request, done):
      return request
server = Server(('0.0.0.0', 1008),(EchoService(),))
print 'serving...'
server.serve_forever()

                                                      51
publish-subscribe




                    52
import message                • hello, lai.
def hello(context, name):
 print 'hello, %s.'%name
message.sub('greet', hello)
message.pub('greet', 'lai')




                                              53
python-message
• http://pypi.python.org/pypi/message
• 进程内的 publish-subscribe 机制
• 受 falcon 编程语言启发而写
• http://www.slideshare.net/laiyonghao/pyth
  onmessage010
• 应用于任务、邮件、好友等子系统


                                              54
utils




        55
absolute32
•   http://pypi.python.org/pypi/absolute32
•   [-2**31, 2**31-1]
•   ubuntu 10.04 LTS 32-bit/64-bit
•   python 2.6/3.1
•      hash
•      add
•      crc
•      adler
                                             56
谢谢。
  Q&A


http://laiyonghao.com


                        57

More Related Content

What's hot

Python 入门
Python 入门Python 入门
Python 入门kuco945
 
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇Justin Lin
 
HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享Chong-Kuan Chen
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and nodePeter Yi
 
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程zhangdaiping
 
iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门Lucien Li
 
Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望jeffz
 
Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望jeffz
 
Advanced heap exploitaion
Advanced heap exploitaionAdvanced heap exploitaion
Advanced heap exploitaionAngel Boy
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出wang hongjiang
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹Johnny Sung
 
jQuery源码学习
jQuery源码学习jQuery源码学习
jQuery源码学习fangdeng
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月鍾誠 陳鍾誠
 

What's hot (18)

Node way
Node wayNode way
Node way
 
Python 入门
Python 入门Python 入门
Python 入门
 
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
 
Py ladies 0928
Py ladies 0928Py ladies 0928
Py ladies 0928
 
HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and node
 
ios分享
ios分享ios分享
ios分享
 
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程
 
iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门
 
Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望
 
Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望
 
Advanced heap exploitaion
Advanced heap exploitaionAdvanced heap exploitaion
Advanced heap exploitaion
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
 
Ooredis
OoredisOoredis
Ooredis
 
jQuery源码学习
jQuery源码学习jQuery源码学习
jQuery源码学习
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
 

Similar to Python 于 webgame 的应用

DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代scott liao
 
[3]投影片 futurewad樹莓派研習會 141204
[3]投影片 futurewad樹莓派研習會 141204[3]投影片 futurewad樹莓派研習會 141204
[3]投影片 futurewad樹莓派研習會 141204CAVEDU Education
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
Binary exploitation - AIS3
Binary exploitation - AIS3Binary exploitation - AIS3
Binary exploitation - AIS3Angel Boy
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨Wen-Tien Chang
 
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?Andy Dai
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Chu-Siang Lai
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Bo-Yi Wu
 
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析CC
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式Stanley Ho
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] PytorchTzu-Wei Huang
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer TalkLarry Cai
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardJui An Huang (黃瑞安)
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践Na Lee
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 Renaun Erickson
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdfczzz1
 

Similar to Python 于 webgame 的应用 (20)

DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
[3]投影片 futurewad樹莓派研習會 141204
[3]投影片 futurewad樹莓派研習會 141204[3]投影片 futurewad樹莓派研習會 141204
[3]投影片 futurewad樹莓派研習會 141204
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
Binary exploitation - AIS3
Binary exploitation - AIS3Binary exploitation - AIS3
Binary exploitation - AIS3
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
 
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?
 
Django step0
Django step0Django step0
Django step0
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] Pytorch
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdf
 

More from 勇浩 赖

一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构勇浩 赖
 
2012,我的技术之选
2012,我的技术之选2012,我的技术之选
2012,我的技术之选勇浩 赖
 
珠三角技术沙龙广州场
珠三角技术沙龙广州场珠三角技术沙龙广州场
珠三角技术沙龙广州场勇浩 赖
 
为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?勇浩 赖
 
Behavior+tree+ai lite
Behavior+tree+ai liteBehavior+tree+ai lite
Behavior+tree+ai lite勇浩 赖
 
敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法勇浩 赖
 
先用再学 - 借助 Xna 快速开发游戏原型
先用再学  - 借助 Xna 快速开发游戏原型先用再学  - 借助 Xna 快速开发游戏原型
先用再学 - 借助 Xna 快速开发游戏原型勇浩 赖
 
关于Bitworld的一些话题222
关于Bitworld的一些话题222关于Bitworld的一些话题222
关于Bitworld的一些话题222勇浩 赖
 
03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏勇浩 赖
 
06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源勇浩 赖
 
07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪勇浩 赖
 
01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做勇浩 赖
 
如何做好沙龙演讲
如何做好沙龙演讲如何做好沙龙演讲
如何做好沙龙演讲勇浩 赖
 
虚拟世界是怎么炼成的(图片版)
虚拟世界是怎么炼成的(图片版)虚拟世界是怎么炼成的(图片版)
虚拟世界是怎么炼成的(图片版)勇浩 赖
 
Techparty story
Techparty storyTechparty story
Techparty story勇浩 赖
 

More from 勇浩 赖 (20)

一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构
 
Tp web
Tp webTp web
Tp web
 
2012,我的技术之选
2012,我的技术之选2012,我的技术之选
2012,我的技术之选
 
Scala
ScalaScala
Scala
 
珠三角技术沙龙广州场
珠三角技术沙龙广州场珠三角技术沙龙广州场
珠三角技术沙龙广州场
 
为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?
 
Behavior+tree+ai lite
Behavior+tree+ai liteBehavior+tree+ai lite
Behavior+tree+ai lite
 
敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法
 
先用再学 - 借助 Xna 快速开发游戏原型
先用再学  - 借助 Xna 快速开发游戏原型先用再学  - 借助 Xna 快速开发游戏原型
先用再学 - 借助 Xna 快速开发游戏原型
 
关于Bitworld的一些话题222
关于Bitworld的一些话题222关于Bitworld的一些话题222
关于Bitworld的一些话题222
 
Stekin
StekinStekin
Stekin
 
03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏
 
abu.rpc intro
abu.rpc introabu.rpc intro
abu.rpc intro
 
06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源
 
07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪
 
01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做
 
Python 温故
Python 温故Python 温故
Python 温故
 
如何做好沙龙演讲
如何做好沙龙演讲如何做好沙龙演讲
如何做好沙龙演讲
 
虚拟世界是怎么炼成的(图片版)
虚拟世界是怎么炼成的(图片版)虚拟世界是怎么炼成的(图片版)
虚拟世界是怎么炼成的(图片版)
 
Techparty story
Techparty storyTechparty story
Techparty story
 

Python 于 webgame 的应用