##################### # Example of event-driven code, buggy version import simplegui size = 10 radius = 10 # Define event handlers. def incr_button_handler(): """Increment the size.""" global size size += 1 label.set_text("Value: " + str(size)) def decr_button_handler(): """Decrement the size.""" global size # Insert check that size > 1, to make sure it stays positive # NOTE that this restriction has changed from the video # since draw_circle now throws an error if radius is zero if size > 1: size -= 1 label.set_text("Value: " + str(size)) def change_circle_handler(): """Change the circle radius.""" global radius radius = size # Insert code to make radius label change. radiuslabel.set_text("Radius: " + str(radius)) def draw_handler(canvas): """Draw the circle.""" canvas.draw_circle((100, 100), radius, 5, "Red") # Create a frame and assign callbacks to event handlers. frame = simplegui.create_frame("Home", 200, 200) label = frame.add_label("Value: " + str(size)) frame.add_button("Increase", incr_button_handler) frame.add_button("Decrease", decr_button_handler) radiuslabel = frame.add_label("Radius: " + str(radius)) frame.add_button("Change circle", change_circle_handler) frame.set_draw_handler(draw_handler) # Start the frame animation frame.start()
Wednesday, September 30, 2015
Python GUI Debugging Tips
Code1:
Monday, September 28, 2015
Stack and Queue
Stack
Applications:
Parsing in a compiler
Java Virtual Machine
Undo in word
Back button in web browser
PostScript language for printers
Implementing function calls in a compiler
Arithmetic Calculation expression
Queue:
Parsing in a compiler
Java Virtual Machine
Undo in word
Back button in web browser
PostScript language for printers
Implementing function calls in a compiler
Arithmetic Calculation expression
Queue:
Monday, September 21, 2015
H1B
http://forum.murthy.com/index.php?/topic/41311-h1b-to-h4-while-looking-for-job/
http://www.mitbbs.com/bbsann2/life.faq/JobHunting/61/h1blayoff/M.1155936613.I0/
H1 - H4 - H1
是否应该withdraw H4
要看你新旧H1B之间是不是有GAP
一般情况是有的
所以你要做的不是withdraw H4
而是call USCIS
告诉他们你的新H1B已经批准了
而你的H4还在pending
USCIS需要尽快批准你的H4申请
而且要确保你的H4生效期早于新H1B的生效期
这样你的新H1B生效时会自动override H4
而H4也合法的cover了两个H1B之间的GAP
H1B -> H4 -> H1B 的整个过程就完整了
准备材料
http://bbs.wenxuecity.com/h1b/334955.html
http://www.huaren.us/dispbbs.asp?boardid=333&Id=951285
http://blog.wenxuecity.com/myblog/14332/200709/147.html
Cap-subject H1B -> H4 -> Cap-Exempt H1B -> Cap-Subject H1B
http://www.hooyou.com/h-1b/h1b_portability.html
http://www.mitbbs.com/bbsann2/life.faq/JobHunting/61/h1blayoff/M.1155936613.I0/
H1 - H4 - H1
是否应该withdraw H4
要看你新旧H1B之间是不是有GAP
一般情况是有的
所以你要做的不是withdraw H4
而是call USCIS
告诉他们你的新H1B已经批准了
而你的H4还在pending
USCIS需要尽快批准你的H4申请
而且要确保你的H4生效期早于新H1B的生效期
这样你的新H1B生效时会自动override H4
而H4也合法的cover了两个H1B之间的GAP
H1B -> H4 -> H1B 的整个过程就完整了
准备材料
http://bbs.wenxuecity.com/h1b/334955.html
http://www.huaren.us/dispbbs.asp?boardid=333&Id=951285
http://blog.wenxuecity.com/myblog/14332/200709/147.html
Cap-subject H1B -> H4 -> Cap-Exempt H1B -> Cap-Subject H1B
http://www.hooyou.com/h-1b/h1b_portability.html
Friday, September 18, 2015
经验之谈
来源:http://www.mitbbs.com/article_t/Java/31146699.html
HTML就是一个协议,按照HTML标准写的文本浏览器可以识别,知道怎么显示。你在这个
网页上右键然后选view source,看到的就是HTML
JS就是javascript, 主要功能就是在客户端(浏览器)做事,相对于HTML是静态的,他
是动态的,可以改变客户端的component, 比如标题拉,文本框拉,什么的
CSS就是定义HTML显示的style, 比如字体大小拉,颜色啦,等等等等
JSON主要是数据传输用的,比如javascript和后端服务器传递信息就可以用json
XML和HTML很类似,但是可以自定义tag和结构
MySQL/Oracle都是relational database, 说白了就是存数据的。但是作为relational
database, 他需要满足一些标准。
你现在的阶段很多人都经历过,就是别人把框架布好,你可以往里填code。拉
一段具体的code出来能写,比如二叉树遍个历啥的,但是不知道这些code能干啥用,往
哪儿用,整体布局糊里糊涂。其实是初学者突然接触到大量知识不知从何下手的正常反
应,有点象盲人摸象,扣到了不少具体的知识点,但是对全局缺乏概念。
走出这个阶段有两个方法,一个是计算机科班出身的方法,每个知识点都学的很细,硬
学,几年下来,这些知识点自然就连起来了。这个方法的优点是基础打的扎实,缺点是
太花时间,很可能花了很多时间去搞没啥用的东西。另一个方法就是我常常推荐给转行
的朋友的,先不要纠结于学会具体的某个技术的某个细节,那些其实都很简单,学的快
忘得也快。先花点时间画个框架出来,搞清楚你要学的技术起到了什么作用,确定自己
理解了,再看那些具体的技术就清楚多了。
以你刚才列的那些东西为例子。一个典型的java based web application:
用户面对的是浏览器,你输入一个URL,浏览器从web server (apache, IIS, etc)那里
下载了HTML, CSS, JS。HTML一般是用来做些基本的网页显示,CSS决定他的style,JS
决定一些动态的东西,比如根据用户名来显示不同的内容。除了这些静态的内容,浏览
器也可能通过web server和它背后的app server对话(比如tomcat),进行一些服务器
端的处理(比如运行在tomcat内部的servlets)。这些web application难免要储存一些
数据,他们可以储存在database里(mysql, oracle, etc)。而servlet和database的读
写通过JDBC来完成。
有了这个基本的概念,下次看到JS,脑子里就明白,他是在浏览器上做动态处理的,看
到mysql就知道,他是backend 存储数据的。
等你把握了这个框架,每个知识点都有常见的扩展,比如js有常用的库,jQuery,
ExtJS, database要会最基本的sql query, 比如inner join, outer join, aggregate
function, etc., 你的servlet要在tomcat中运行,需要先以war的形式deploy。具体
的东西越是繁杂,你越要牢牢记住他们在一个大框架里起了什么作用,这样才不会糊里
糊涂,东一榔头西一棒子。
good luck!
HTML就是一个协议,按照HTML标准写的文本浏览器可以识别,知道怎么显示。你在这个
网页上右键然后选view source,看到的就是HTML
JS就是javascript, 主要功能就是在客户端(浏览器)做事,相对于HTML是静态的,他
是动态的,可以改变客户端的component, 比如标题拉,文本框拉,什么的
CSS就是定义HTML显示的style, 比如字体大小拉,颜色啦,等等等等
JSON主要是数据传输用的,比如javascript和后端服务器传递信息就可以用json
XML和HTML很类似,但是可以自定义tag和结构
MySQL/Oracle都是relational database, 说白了就是存数据的。但是作为relational
database, 他需要满足一些标准。
你现在的阶段很多人都经历过,就是别人把框架布好,你可以往里填code。拉
一段具体的code出来能写,比如二叉树遍个历啥的,但是不知道这些code能干啥用,往
哪儿用,整体布局糊里糊涂。其实是初学者突然接触到大量知识不知从何下手的正常反
应,有点象盲人摸象,扣到了不少具体的知识点,但是对全局缺乏概念。
走出这个阶段有两个方法,一个是计算机科班出身的方法,每个知识点都学的很细,硬
学,几年下来,这些知识点自然就连起来了。这个方法的优点是基础打的扎实,缺点是
太花时间,很可能花了很多时间去搞没啥用的东西。另一个方法就是我常常推荐给转行
的朋友的,先不要纠结于学会具体的某个技术的某个细节,那些其实都很简单,学的快
忘得也快。先花点时间画个框架出来,搞清楚你要学的技术起到了什么作用,确定自己
理解了,再看那些具体的技术就清楚多了。
以你刚才列的那些东西为例子。一个典型的java based web application:
用户面对的是浏览器,你输入一个URL,浏览器从web server (apache, IIS, etc)那里
下载了HTML, CSS, JS。HTML一般是用来做些基本的网页显示,CSS决定他的style,JS
决定一些动态的东西,比如根据用户名来显示不同的内容。除了这些静态的内容,浏览
器也可能通过web server和它背后的app server对话(比如tomcat),进行一些服务器
端的处理(比如运行在tomcat内部的servlets)。这些web application难免要储存一些
数据,他们可以储存在database里(mysql, oracle, etc)。而servlet和database的读
写通过JDBC来完成。
有了这个基本的概念,下次看到JS,脑子里就明白,他是在浏览器上做动态处理的,看
到mysql就知道,他是backend 存储数据的。
等你把握了这个框架,每个知识点都有常见的扩展,比如js有常用的库,jQuery,
ExtJS, database要会最基本的sql query, 比如inner join, outer join, aggregate
function, etc., 你的servlet要在tomcat中运行,需要先以war的形式deploy。具体
的东西越是繁杂,你越要牢牢记住他们在一个大框架里起了什么作用,这样才不会糊里
糊涂,东一榔头西一棒子。
good luck!
Jenkins
Setup master and slave machines
https://wiki.jenkins-ci.org/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines
https://wiki.jenkins-ci.org/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines
Tuesday, September 15, 2015
Python GUI Program
Program Structure:
Globals (state)
Helper Functions
Classes (later)
Define event handler
Create a frame
Register event handler
Start frame & timers
Example:
Canvas (Drawing on GUI):
Globals (state)
Helper Functions
Classes (later)
Define event handler
Create a frame
Register event handler
Start frame & timers
Example:
# SimpleGUI program template # Import the module import simplegui # Define global variables (program state) counter = 0 # Define "helper" functions def increment(): global counter counter += 1 # Define event handler functions def tick(): increment() print counter def buttonpress(): global counter counter = 0 # Create a frame frame = simplegui.create_frame("Simple GUI test", 100, 100) # Register event handlers timer = simplegui.create_timer(1000, tick) frame.add_button("Click me!", buttonpress) # Start frame and timers frame.start() timer.start()
Canvas (Drawing on GUI):
# first example of drawing on the canvas import simplegui # define draw handler def draw(canvas): canvas.draw_text("Hello!",[100, 100], 24, "White") canvas.draw_circle([100, 100], 2, 2, "Red") # create frame frame = simplegui.create_frame("Text drawing", 300, 200) # register draw handler frame.set_draw_handler(draw) # start frame frame.start()Interactive Drawing
# interactive application to convert a float in dollars and cents import simplegui # define global value value = 3.12 # Handle single quantity def convert_units(val, name): result = str(val) + " " + name if val > 1: result = result + "s" return result # convert xx.yy to xx dollars and yy cents def convert(val): # Split into dollars and cents dollars = int(val) cents = int(round(100 * (val - dollars))) # Convert to strings dollars_string = convert_units(dollars, "dollar") cents_string = convert_units(cents, "cent") # return composite string if dollars == 0 and cents == 0: return "Broke!" elif dollars == 0: return cents_string elif cents == 0: return dollars_string else: return dollars_string + " and " + cents_string # define draw handler def draw(canvas): canvas.draw_text(convert(value), [60, 110], 24, "White") # define an input field handler def input_handler(text): global value value = float(text) # create frame frame = simplegui.create_frame("Converter", 400, 200) # register event handlers frame.set_draw_handler(draw) frame.add_input("Enter value", input_handler, 100) # start frame frame.start()Timer. Timer update for specified time interval. Draw update 60Hz.
# Simple "screensaver" program. # Import modules import simplegui import random # Global state message = "Python is Fun!" position = [50, 50] width = 500 height = 500 interval = 2000 # Handler for text box def update(text): global message message = text # Handler for timer def tick(): x = random.randrange(0, width) y = random.randrange(0, height) position[0] = x position[1] = y # Handler to draw on canvas def draw(canvas): canvas.draw_text(message, position, 36, "Red") # Create a frame frame = simplegui.create_frame("Home", width, height) # Register event handlers text = frame.add_input("Message:", update, 150) frame.set_draw_handler(draw) timer = simplegui.create_timer(interval, tick) # Start the frame animation frame.start() timer.start()
Subscribe to:
Posts (Atom)