PAYPAL IPN开发小结

时间:2019-05-12 16:47:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《PAYPAL IPN开发小结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《PAYPAL IPN开发小结》。

第一篇:PAYPAL IPN开发小结

PayPal支付接口IPN开发小结

1.IPN简介及其工作方式

PayPal IPN(Instant Payment Notification),就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后,交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方式,将交易的一些变量提交给网站的某个页面(称之为IPN Handler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证的cmd=_notify-validate,POST回Paypal的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为VERIFIED,那么你的程序就可以使用这些数据进行操作。

另外,IPN只针对PayPal的Business用户开放。

2.SANDBOX使用介绍

Paypal专门开发了Sandbox给开发人员进行开发,首先到https://developer.paypal.com/ 注册一个开发帐号,好了之后再进入Sandbox建立测试用的Paypal虚拟帐号(至少应该建立一个Business的和一个Personal的),这种账号注册方法和Paypal的流程一样,信息可以是假的,包括银行帐号、信用卡(其实Paypal Sandbox会自动生成一些随机的号码)。接下来需要激活Paypal Sandbox的虚拟帐号,注意,这里不管你在Paypal Sanbox注册时填什么邮件地址,有任何发送到虚拟帐号所填邮箱的邮件都存会在开发帐号的管理界面中的Email页(导航栏上有)中。登录Sandbox的虚拟Paypal环境,还需要验证虚拟帐号的银行,这里可以随便填,然后通过Add Funds来给账户充值(想填多少填多少)。然后,还需要激活IPN的选项,在Business的那个账户的Profile设置页面中,点击,然后点击Edit按钮,打开IPN,这里如果你使用的是固定的IPN Handle,可以直接将地址填入。

测试案例:

登录Business帐户,在Merchant Service中点击Buy Now Buttons生成一个PAY按钮的HTML代码; 在My Account中点击Profile,然后点击Instant Payment Notification Preferences设置IPN Handel;在Website Payment Preferences中可以设置PAY完成之后返回的页面;

在一个页面中嵌入PAY按钮代码,点击支付后IPN Handel就会收到PayPal POST过来的数据;

3.IPN Handel IPN Handel只需接收POST来的参数就可以了,下面列举一些重要的参数:

payment_status:显示交易的状态,有Completed, Pending, Failed等几种状态,一般买家通过PAY按钮付款之后处于Pending状态,确认付款之后处于Completed状态,放弃付款处于Failed状态

item_name:货物的名称 item_number:货物的编号 mc_gross:支付的金额

可以在http://paypaltech.com中找到IPN Handel的示例代码 下面截取一个IPN Handel的代码参考

<%@LANGUAGE=“VBScript”%> <% ' dim some variables Dim Item_name, Item_number, Payment_status, Payment_amount Dim Txn_id, Receiver_email, Payer_email Dim objHttp, str

'begin IPN handling ' read post from PayPal system and add 'cmd' str = Request.Form & “&cmd=_notify-validate” ' post back to PayPal system to validate set objHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP”)' set objHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP.4.0”)' set objHttp = Server.CreateObject(“Microsoft.XMLHTTP”)objHttp.open “POST”, “https://www.xiexiebang.com/cgi-bin/webscr”, false objHttp.setRequestHeader “Content-type”, “application/x-www.xiexiebang.completed”)then pay_status=1 ' completed else if(trim(payment_status)=“Pending”)then pay_status=0 ' pending else if(trim(payment_status=“Failed”))then pay_status=2 'failed else

pay_status=-1 ' unknown status end if end if end if

' order id order_id=trim(payment_date)response.Write(mc_gross&“fsafaffas”)money=CDbl(mc_gross)

'get account information set rsAccount = server.CreateObject(“ADODB.Recordset”)

sql = “select * from cleanpick_account where login_id = ” & login_id rsAccount.Open sql, objConn, 3, 1 if rsAccount.EOF then Pbalance = 0 'delete redundance objConn.execute(“delete from cleanpick_account where login_id=”&login_id)

'if we can not find the account information from database create one 'Default account's balance is 0 dollor sql=“insert into cleanpick_account(login_id, balance, description, searches, deals)values”_

& “(”&login_id&“,0,'New User', 0, 0)”

objConn.execute(sql)else Pbalance = rsAccount(“balance”)end if rsAccount.close()

if(pay_status=1)then Pbalance2 = Pbalance+money else Pbalance2 = Pbalance end if

if(pay_status<>-1)then 'delete redundancy sql=“DELETE FROM cleanpick_deposithistory where login_id=” & login_id & _

“ and deposit_money=” & money & “ and order_id='” & order_id & “'” objConn.execute(sql)

sql=“insert into cleanpick_deposithistory ”_

&“(deal, login_id, deposit_money, balance_before, ”_

&“balance_after, deposit_type, deposit_description, pay_status, order_id)values”_

&“(0,”&login_id&“,”&money&“,”&Pbalance& “,” _

&Pbalance2&“,1,'Store Money by PayPal',”&pay_status&“,'”&order_id&“')” objConn.execute(sql)

'update account information sql=“update cleanpick_account set balance=” & Pbalance2 & “ where login_id=” & login_id objConn.execute(sql)end if

'End Disposalink handling here

####

elseif(objHttp.responseText = “INVALID”)then ' log for manual investigation ' add code to handle the INVALID scenario response.Write(“INVALID handle”)else ' error end if set objHttp = nothing %>

第二篇:hr开发小结

HR信息类型增强

信息类型是SAP HR模块数据单元,用于对人员数据的记录和维护,是HR的基础。信息类型按照其创建方式的不同可以分为:人事信息类型、组织信息类型。信息类型数据的维护主要在事物码PA30、PA40、po10、P013 中进行。信息类型的创建

信息类型的创建涉及到的两个事务码:PM01,PPCI。分别对应人事主数据与组织、职位主数据的增强。

人事信息类型在生成时,系统会自动生成2000、1000、3000等屏幕,以及相应的类,和PR模块。其中2000屏幕是我们在PA30中(对人事信息类型来说)编辑或查看时看到的屏幕,一般做好信息类型增强后需要对2000屏进行修改,像设置下拉框、设置单选按钮组、制作树型结构F4等;3000屏为列表屏幕,是我们点击概览时所看到的屏幕。PR模块用于信息类型的显示(具体的我也不清楚)。

组织信息或职位信息类型,有时需要创建7000屏,也就是我们常见的PPOSE屏,这个屏幕可以在生成信息类型时直接在PPCI里生成(点击菜单栏中,信息类型—创建子屏幕 即可,当然逻辑流要与2000屏的逻辑流保持一致)。人事信息类型的创建 创建信息类型

HR本身提供一些常用的信息类型,但当有特殊的需求时需要进行信息类型的创建。自己创建的信息类型编码是以„9‟开头的四位数字,其他数字开头的信息类型为系统自带的。像9025、9195、9135等。创建步骤如下(以9001为例):TCODE PM01 PM01——》创建IT——》输入9001——》选择PS结构——》编辑,进入ps9001编辑界面。维护后点击 ;

信息类型增强时,需要创建一个结构,用于说明该信息类型有哪些字段,结构的名称格式为:”PS+信息类型”。实例结构如下: 保存,激活后返回PM01界面,点击生成对象,同前。维护信息类型特征:

系统会按照你提供的字段生成2000屏、3000屏;其中2000屏为我们在PA30中进行维护(查看)时展现出的屏幕,3000屏即列表屏,当我们选择概览时的所看到屏幕。

详细设置如下:(我们可以通过SM30维护V_T582A中信息从而实现对信息类型的属性的维护)

维护完保存,进入PA30,效果如下:

信息类型自动生成完成。由于屏幕是自动生成,屏幕中的所有字段均由结构中的字段生成。所以需要对屏幕进行修改。(像:屏幕字段描述的修改、F4帮助、下拉列表等)增强单个屏幕 当某些信息类型的字段不能满足当前的业务需求时,需要对这个信息类型进行增强。单个屏幕增强的步骤如下(以信息类型0529为例)。PM01——》单个屏——》信息类型号0529——》客户包含——》编辑,这时进入CI_P0529结构的创建。

CI_0529结构中的字段即为需要在屏幕中增强的附加字段。CI_0529结构如下:

创建完成后,保存,激活,回到PM01初始界面,点击生成对象,这时系统会给出一系列提示消息框,不要理会,点确定直到不出现。这时相关的屏幕、结构、表都已经创建完毕,但要在前台界面显示出来还需做一定的设置。

PM01——》分配增强——》新条目。

维护好之后,保存,退出,现在可在事务码PA30里看到效果了。注: 屏幕自动生成的字段的输入/输出以及可修改性是可以在屏幕修正(v_t588m/t588m)里进行设置。组织职位信息类型的创建 创建信息类型

组织信息信类型的创建TCODE为:PPCI 信息类型以9开头,最好与人事的信息类型编码区分开。

首先要创建HRIXXXX结构。SE11 根据业务字段进行HRI结构的创建.(在创建组织信息类型时要,收集好需求,避免遗漏字段。组织信息类型后期删除比较麻烦。)创建信息类型 PPCI 进行检查 生成信息类型

维护信息类型视图(SM30 —— T777I),维护时间限制和信息类型类型 组织职位中子屏幕(7000)屏幕的创建

进入PPCI,填写信息类型,点击创建,点击菜单栏中的“信息类型”,选择“创建子屏幕”。

创建完子屏幕后,对新生成屏幕的逻辑流及屏幕进行修改。HR出口(CMOD)增强 HR出口增强中常用的 方法有:

1、cl_hr_pnnnn_type_cast=>prelp_to_pnnnn “ 获取数据

2、cl_hr_pnnnn_type_cast=>pnnnn_to_prelp “写入数据 HR中常用的BADI

1、HRBAS00INFTY “ 作用于 OM

2、HRPAD00INFTY “ 作用于 PA 原始字段描述修改增强

1、CMOD HR程序开发

HR程序开发如其他模块开发有些不同。主要是因为HR模块中引入了信息类型、逻辑数据库和宏。2.1 逻辑数据库

HR中常用的逻辑数据库为:PNP、PCH、PNPCE、PAP,其中PNP及PCH用的最多。PNP 用于获取人员信息,PCH用于获取组织信息。2.2 Provide PROVIDE常用于HR的取数中。

一般provide和end provide用于处理时间限制是1和2的infotype.会一笔一笔的循环该infotype.provide endprovide 会将符合条件的记录进行分段,因此会改变pnnnn-begda 或 pnnnn-endda 的值,使用时要注意。2.3 HR报表常用的宏

1、rp_provide_from_last 用于获取信息类型中的最新的一笔数据

2、rp_provide_from_frst 用法与rp_provide_from_last 相同,用于获取信息类型中的第一笔数据 与HR相关的FM

1、RH_STRUC_GET 用于获取组织单元下的职位及人员信息

2、CU_READ_RGDIR 薪资报表中用于获取期间

3、PYXX_READ_PAYROLL_RESULT 根据索引号得到工资数 一般与CU_READ_RGDIR一起用

4、RP_LAST_DAY_OF_MONTHS 获取一个月的最后一天

5、HR_GET_TIME_BETWEEN_DATES 获取日期 年月差

6、RH_OBJID_REQUEST 获取组织对象

7、HR_HCP_READ_OBJECT_TEXT 获取对象文本

8、RP_HIRE_FIRE 获取0041中的日期

9、HR_AUPBS_AGE 计算员工年龄

第三篇:Android蓝牙开发小结

学习之前先了解两个基本概念:

一、RFCOMM协议:

一个基于欧洲电信标准协会ETSI07.10规程的串行线性仿真协议。此协议提供RS232控制和状态信号,如基带上的损坏,CTS以及数据信号等,为上层业务(如传统的串行线缆应用)提供了传送能力。

RFCOMM是一个简单传输协议,其目的是针对如何在两个不同设备上的应用之间保证一条完整的通信路径,并在它们之间保持一通信段。

RFCOMM是为了兼容传统的串口应用,同时取代有线的通信方式,蓝牙协议栈需要提供与有线串口一致的通信接口而开发出的协议。RFCOMM协议提供对基于L2CAP协议的串口仿真,基于ETSI07.10。可支持在两个BT设备之间同时保持高达60路的通信连接。

RFCOMM只针对直接互连设备之间的连接,或者是设备与网络接入设备之间的互连。通信两端设备必须兼容于RFCOMM协议,有两类设备:DTE(Data Terminal Endpoint,通信终端,如PC,PRINTER)和DCE(Data Circuit Endpoint,通信段的一部分,如Modem)。此两类设备不作区分。

二、MAC硬件地址

MAC(Medium/MediaAccess Control, 介质访问控制)MAC地址是烧录在NetworkInterfaceCard(网卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特长(6字节),16进制的数字组成.0-23位叫做组织唯一标志符(organizationally unique,是识别LAN(局域网)节点的标识.24-47位是由厂家自己分配。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。

Android平台提供的蓝牙API去实现蓝牙设备之间的通信,蓝牙设备之间的通信主要包括了四个步骤:设置蓝牙设备、寻找局域网内可能或者匹配的设备、连接设备和设备之间的数据传输。以下是建立蓝牙连接的所需要的一些基本类:

BluetoothAdapter类:代表了一个本地的蓝牙适配器。它是所有蓝牙交互的的入口点。利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket(作为服务器端)来监听来自其他设备的连接。

BluetoothDevice类:代表了一个远端的蓝牙设备,使用它请求远端蓝牙设备连接或者获取远端蓝牙设备的名称、地址、种类和绑定状态。(其信息是封装在bluetoothsocket中)。

Bluetoothsocket类:代表了一个蓝牙套接字的接口(类似于tcp中的套接字),它是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。

Blueboothserversocket类:代表打开服务连接来监听可能到来的连接请求(属于server端),为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远端设备发起连接连接请求的时候,并且已经连接到了的时候,Blueboothserversocket类将会返回一个bluetoothsocket。

Bluetoothclass类:描述了一个蓝牙设备的一般特点和能力。它的只读属性集定义了设备的主、次设备类和一些相关服务。然而,它并没有准确地描述所有该设备所支持的蓝牙文件和服务,而是作为对设备种类来说的一个小小暗示。下面说说具体的编程实现 1.启动蓝牙功能:

首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapter,以后你就可以使用该对象了。如果返回为空,the story is over。例如:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if(mBluetoothAdapter == null){ // Device does not support Bluetooth } 其次,调用isEnabled()来查询当前蓝牙设备的状态,如果返回为false,则表示蓝牙设备没有开启,接下来你需要封装一个ACTION_REQUEST_ENABLE请求到intent里面,调用startActivityForResult()方法使能蓝牙设备,例如:

if(!mBluetoothAdapter.isEnabled()){ Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);}

2.查找设备:

使用BluetoothAdapter类里的方法,你可以查找远端设备(大概十米以内)或者查询在你手机上已经匹配(或者说绑定)的其他手机了。当然需要确定对方蓝牙设备已经开启或者已经开启了“被发现使能”功能(对方设备是可以被发现的是你能够发起连接的前提条件)。如果该设备是可以被发现的,会反馈回来一些对方的设备信息,比如名字、MAC地址等,利用这些信息,你的设备就可以选择去向对方初始化一个连接。

如果你是第一次与该设备连接,那么一个配对的请求就会自动的显示给用户。当设备配对好之后,他的一些基本信息(主要是名字和MAC)被保存下来并可以使用蓝牙的API来读取。使用已知的MAC地址就可以对远端的蓝牙设备发起连接请求。

匹配好的设备和连接上的设备的不同点:匹配好只是说明对方设备发现了你的存在,并拥有一个共同的识别码,并且可以连接。连接上:表示当前设备共享一个RFCOMM信道并且两者之间可以交换数据。也就是是说蓝牙设备在建立RFCOMM信道之前,必须是已经配对好了的。

3.查询匹配好的设备:

在建立连接之前你必须先查询配对好了的蓝牙设备集(你周围的蓝牙设备可能不止一个),以便你选取哪一个设备进行通信,例如你可以你可以查询所有配对的蓝牙设备,并使用一个数组适配器将其打印显示出来:

Set pairedDevices = mBluetoothAdapter.getBondedDevices();// If there are paired devices if(pairedDevices.size()> 0){ //Loop through paired devices for(BluetoothDevice device : pairedDevices){ // Add the name and address to an array adapter to show in a ListView mArrayAdapter.add(device.getName()+ “n” + device.getAddress());} 建立一个蓝牙连接只需要MAC地址就已经足够了。

4.扫描设备:

扫描设备,只需要简单的调用startDiscovery()方法,这个扫描的过程大概持续是12秒,应用程序为了ACTION_FOUND动作需要注册一个BroadcastReceiver来接受设备扫描到的信息。对于每一个设备,系统都会广播ACTION_FOUND动作。例如: // Create a BroadcastReceiver for ACTION_FOUND private final BroadcastReceiver mReceiver = new BroadcastReceiver(){ public void onReceive(Context context, Intent intent){ String action = intent.getAction();// When discovery finds a device if(BluetoothDevice.ACTION_FOUND.equals(action)){ // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);// Add the name and address to an array adapter to show in a ListView mArrayAdapter.add(device.getName()+ “n” + device.getAddress());} } };// Register the BroadcastReceiver IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(mReceiver, filter);// Don't forget to unregister during onDestroy 注意:扫描的过程是一个很耗费资源的过程,一旦你找到你需要的设备之后,在发起连接请求之前,确保你的程序调用cancelDiscovery()方法停止扫描。显然,如果你已经连接上一个设备,启动扫描会减少你的通信带宽。

5.使能被发现:Enabling discoverability 如果你想使你的设备能够被其他设备发现,将ACTION_REQUEST_DISCOVERABLE动作封装在intent中并调用startActivityForResult(Intent, int)方法就可以了。他将在不使你应用程序退出的情况下使你的设备能够被发现。缺省情况下的使能时间是120秒,当然你可以可以通过添加EXTRA_DISCOVERABLE_DURATION字段来改变使能时间(最大不超过300秒,这是出于对你设备上的信息安全考虑)。例如: Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);startActivity(discoverableIntent);运行该段代码之后,系统会弹出一个对话框来提示你启动设备使能被发现(此过程中如果你的蓝牙功能没有开启,系统会帮你开启),并且如果你准备对该远端设备发现一个连接,你不需要开启使能设备被发现功能,因为该功能只是在你的应用程序作为服务器端的时候才需要。

6.连接设备:

在应用程序中,想建立两个蓝牙设备之间的连接,必须实现客户端和服务器端的代码(因为任何一个设备都必须可以作为服务端或者客户端)。一个开启服务来监听,一个发起连接请求(使用服务器端设备的MAC地址)。当他们都拥有一个蓝牙套接字在同一RFECOMM信道上的时候,可以认为他们之间已经连接上了。服务端和客户端通过不同的方式或其他们的蓝牙套接字。当一个连接监听到的时候,服务端获取到蓝牙套接字。当客户可打开一个FRCOMM信道给服务器端的时候,客户端获取到蓝牙套接字。

注意:在此过程中,如果两个蓝牙设备还没有配对好的,android系统会通过一个通知或者对话框的形式来通知用户。RFCOMM连接请求会在用户选择之前阻塞。如下图:

7.服务端的连接:

当你想要连接两台设备时,一个必须作为服务端(通过持有一个打开的BluetoothServerSocket),目的是监听外来连接请求,当监听到以后提供一个连接上的BluetoothSocket给客户端,当客户端从BluetoothServerSocket得到BluetoothSocket以后就可以销毁BluetoothServerSocket,除非你还想监听更多的连接请求。

建立服务套接字和监听连接的基本步骤:

首先通过调用listenUsingRfcommWithServiceRecord(String, UUID)方法来获取BluetoothServerSocket对象,参数String代表了该服务的名称,UUID代表了和客户端连接的一个标识(128位格式的字符串ID,相当于PIN码),UUID必须双方匹配才可以建立连接。其次调用accept()方法来监听可能到来的连接请求,当监听到以后,返回一个连接上的蓝牙套接字BluetoothSocket。最后,在监听到一个连接以后,需要调用close()方法来关闭监听程序。(一般蓝牙设备之间是点对点的传输)

注意:accept()方法不应该放在主Acitvity里面,因为它是一种阻塞调用(在没有监听到连接请求之前程序就一直停在那里)。解决方法是新建一个线程来管理。例如: private class AcceptThread extends Thread { private final BluetoothServerSocket mmServerSocket;public AcceptThread(){ // Use a temporary object that is later assigned to mmServerSocket, // because mmServerSocket is final BluetoothServerSocket tmp = null;try { // MY_UUID is the app's UUID string, also used by theclient code tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);} catch(IOException e){ } mmServerSocket = tmp;} public void run(){ BluetoothSocket socket = null;// Keep listening until exception occurs or a socket is returned while(true){ try { socket = mmServerSocket.accept();} catch(IOException e){ break;} // If a connection was accepted if(socket!= null){ // Do work to manage the connection(in a separate thread)manageConnectedSocket(socket);mmServerSocket.close();break;} } } /** Will cancel the listening socket, and cause the thread to finish */ public void cancel(){ try { mmServerSocket.close();} catch(IOException e){ } } }

8.客户端的连接:

为了初始化一个与远端设备的连接,需要先获取代表该设备的一个BluetoothDevice对象。通过BluetoothDevice对象来获取BluetoothSocket并初始化连接,具体步骤:

使用BluetoothDevice对象里的方法createRfcommSocketToServiceRecord(UUID)来获取BluetoothSocket。UUID就是匹配码。然后,调用connect()方法来。如果远端设备接收了该连接,他们将在通信过程中共享RFFCOMM信道,并且connect()方法返回。例如: private class ConnectThread extends Thread { private final BluetoothSocket mmSocket;private final BluetoothDevice mmDevice;public ConnectThread(BluetoothDevice device){ // Use a temporary object that is later assigned to mmSocket, // because mmSocket is final BluetoothSocket tmp = null;mmDevice = device;// Get a BluetoothSocket to connect with the given BluetoothDevice try { // MY_UUID is the app's UUID string, also used by the server code tmp = device.createRfcommSocketToServiceRecord(MY_UUID);} catch(IOException e){ } mmSocket = tmp;}

public void run(){ // Cancel discovery because it will slow down the connection mAdapter.cancelDiscovery();try { // Connect the device through the socket.This will block // until it succeeds or throws an exception mmSocket.connect();} catch(IOException connectException){ // Unable to connect;close the socket and get out try { mmSocket.close();} catch(IOException closeException){ } return;} // Do work to manage the connection(in a separate thread)manageConnectedSocket(mmSocket);}

注意:conncet()方法也是阻塞调用,一般建立一个独立的线程中来调用该方法。在设备discover过程中不应该发起连接connect(),这样会明显减慢速度以至于连接失败。且数据传输完成只有调用close()方法来关闭连接,这样可以节省系统内部资源。

9.管理连接(主要涉及数据的传输):

当设备连接上以后,每个设备都拥有各自的BluetoothSocket。现在你就可以实现设备之间数据的共享了。

1> 首先通过调用getInputStream()和getOutputStream()方法来获取输入输出流。然后通过调用read(byte[])和write(byte[]).方法来读取或者写数据。

2> 实现细节:以为读取和写操作都是阻塞调用,需要建立一个专用现成来管理。3>

private class ConnectedThread extends Thread { private final BluetoothSocket mmSocket;private final InputStream mmInStream;private final OutputStream mmOutStream;public ConnectedThread(BluetoothSocket socket){ mmSocket = socket;InputStream tmpIn = null;OutputStream tmpOut = null;// Get the input and output streams, using temp objects because // member streams are final try { tmpIn = socket.getInputStream();tmpOut = socket.getOutputStream();} catch(IOException e){ } mmInStream = tmpIn;mmOutStream = tmpOut;} public void run(){ byte[] buffer = new byte[1024];// buffer store for the stream int bytes;// bytes returned from read()// Keep listening to the InputStream until an exception occurs while(true){ try { // Read from the InputStream bytes = mmInStream.read(buffer);// Send the obtained bytes to the UI Activity mHandler.obtainMessage(MESSAGE_READ, bytes,-1, buffer).sendToTarget();} catch(IOException e){ break;} } } /* Call this from the main Activity to send data to the remote device */ public void write(byte[] bytes){ try { mmOutStream.write(bytes);} catch(IOException e){ } } /* Call this from the main Activity to shutdown the connection */ public void cancel(){ try { mmSocket.close();} catch(IOException e){ } } }

第四篇:wireshark插件开发小结

wireshark插件开发小结

关键字:wireshark, plugin, lua,protocol 概述wireshark是非常流行的网络封包分析软件,功能十分强大。可以抓取各种网络包,并显示网络包的详细信息。为什么使用wiresharkTroubleshoot network problems

定位网络问题Debug protocol implementations 调试自己实现的协议Learn network protocol internals 分析协议内部实现分析网络性能网络端点,统计每个端点的地址、发送或收到的数据包的数量和字节数。

网络会话,统计地址A 和地址B 端点间会话的发送或收到的数据包的数量和字节数。协议分层,可查看各种协议的分布统计情况。数据包长度分析。架构Wireshark是分析网络数据的利器,也是掌握计算机网络的工具。wireshark用C语言开发,架构合理。wireshark从网络协议栈拷贝网络包,可以保存为pcap文件。wireshark 内部实现

Plugin dissectorDecodes protocols that are newly added.解析新的网络协议Faster rebuilds and bug correction.(Due to stand alone librariesgenerated for each plugin dissector)? 每个插件是单独的dll文件,这样可以快速替换插件,加快插件开发速度。插件文件路径 : 安装目录/plugins/ Wiretapused to read/write capture files

pcap文件读写 winpcap

(windows packet capture)是windows平台下一个免费,公共的网络访问系统。winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。插件(plugin)Wireshark使用C语言编写而成,它支持动态链接库形式的插件扩展。除此之外,wireshark内置了Lua脚本引擎,可以使用Lua脚本语言编写dissector插件。Wireshark lua proto APIfunctiondescriptionProto.new(name, desc)Creates a new protocolproto.dissectorThe protocol's dissectorproto.fieldsThe Fields Table of this dissectorproto.prefsThe preferences of this dissectorproto.prefs_changedThe preferences changed routine of this dissectorproto.initThe init routine of this dissectorproto.nameThe name given to this dissectorproto.descriptionThe description given to this dissector

第五篇:校本课程开发阶段小结

积极开发校本课程

大力推进课改实验

——屈原镇校本课程开发与实施阶段性小结

教育部在《基础教育课程改革纲要》中明确指出,学校在执行国家课程和地方课程的同时,应视社会经济发展的具体情况,结合本校的实际和优势,学生的兴趣和需要开发或选用适合本校的课程。校本课程就是这一纲领性的文件所派生出来的新型课程。它是以学校教师为主体,在具体实施国家课程和地方课程的前提下,通过对本校学生的需求进行科学的评估,充分利用当地社会和学校的课程资源,根据学校办学思想而开发的多样性的、可供学生选择的课程。我镇的《新滩中学‚屈原文化‛校本课程》和《新滩小学‚新滩文化‛校本课程》就是在校本课程这一新课程理念召唤下开发出来的新的课程产品。

屈原镇地处举世瞩目的长江三峡工程坝上库首,是中国历史上最伟大的爱国诗人屈原的故里,是闻名遐迩的‚柑桔之乡‛。屈原的‚求索、奋进、博闻、强治‛精神是我镇对学生进行思想品德教育的现成教材;屈原的‚爱国、求索、苦读、廉洁、关爱‛精神对后人来说是一笔巨大的精神财富;屈原的出现,在我国文化、文学史上具有划时代的意义,有人说‚中国是诗人的国度‛,而屈原乃是我国文学史上最早出现的一颗诗国巨星。文化最终的沉淀是人格。张扬屈原一生坚持理想、保持操守、崇尚高洁的伟大人格,可以让社会群体,尤其是学生群体增加一点高贵的因素;弘扬伟大诗人屈原的崇高思想境界,可以让学生多一份感动、多一份自尊。同时,屈原镇有多资多采的民俗、古朴淳厚的民风,奇异的峡谷山水、秀美的田园风光,因此屈原人不知屈原、新滩学子不知新滩是一件非常遗憾的事情。多年来,新滩小学一直注重利用教师资源和社会资源,以学生为主体,设计并开展丰富多彩的综合性实践活动,并以校为单位成立了腰鼓、鼓号、书法、手工制作等兴趣小组。新滩中学长期坚持‚科研兴校‛之路,把‚提高学生素质,着眼于学生全面发展‛放在教育教学工作的首位,并取得了显著的成绩。在继承屈原文化,弘扬民族精神方面,新滩中学历来重视利用节日开展丰富多彩的教育活动,形成了浓浓的校园文化氛围。在教育教学活动中,培养了一大批骨干教师。他们具有较强的工作责任感和敬业精神,具有较高的专业素质和研究水平,为‚屈原文化‛校本课程的开发奠定了良好的人才基础,同时‚杜镇远图书馆‛的建成、微机室、多媒体教室的建立也为校本课程的开发与实施提供了丰富的课程资源和有利条件。

随着新一轮课程改革的推进,学校要实现‚推名师、创名校‛的目标,就需要教师不断地提升专业水平,学校才能够办出特色。教师需要以本地有特色的资源进行开发,在开发的过程中提高教师课程建设、开发的能力,并力争走在课改的前列;学生需要学习和开发屈原文化,包括新滩文化;社会需要生活在新滩的人们---屈原人民传承屈原文化,弘扬屈原文化,传播屈原文化。在课程开发的过程中,提高学生主动搜集信息、处理息信的能力,为学生终身发展奠基,为学生终身求索启航。因此,2003年春季学期,我们遵照县教育局《关于印发〈秭归县义务教育学校课程开设与管理实施意见(试行)〉的通知》文件要求,开起了初中以新滩中学、小学以新滩小学为龙头的校本课程开发课改实验研究。

基 本 作 法

(一)加强学习与研究,认真组织各类培训,为校本课程开发奠定理论基础。一是积极参加课改通识性培训和县、市两级的骨干教师培训和教务主任培训,共培训达308人次,为校本课程开发培养了一批骨干。二是认真学习贯彻秭教发[2003]73号文件,明确校本课程开发的任务与要求;三是把校本课程开发纳入校本教研、校本培训的重要内容,进行专题研究。

(二)、加强领导,健全组织,为校本课程开发建立保障机制。一是以新滩中学、新滩小学为龙头,成立了以镇中心学校校长为组长,各中小学校校长为成员的校本课程开发领导小组;二是按照秭教发[2003]73号文件建立健全三个制度:《课程审议制度》、《校本课程评价制度》、《校本课程管理岗位责任制及相关激励制度》。三是积极争取当地政府和社会各界的支持。镇政府领导高度重视,经常关心和过问校本课程开发与实施的进展,并积极参加校本课程开发与实施的研讨,为校本课程开发专题会议提供经费3000元;社会各界及各单位大力支持。原镇政协主席向富昌、原镇委宣传委员杜远庆(退休)、退休教师宋大顺、谭众孚等社会知名人士热心参与校本课程开发,提出了很多好的建议,并在教学资源上给予大力支持;各单位领导主动积极筹资,为校本课程开发提供经费保障。镇委副书记林文虎、管教育的副镇长宋兴建、镇城环所所长丁朝清、镇卫生院院长龚建平、镇电力公司经理李圣书、长江村村主任杜远平等领导为校本课程开发筹资近万元。

(三)、充分开发利用本地教育资源,精心制定具有地方特色、学校特色的校本课程实施方案。2004年4 月,在县教研室的大力支持和精心指导下,在屈原镇校本课程开发领导小组的直接领导下,结合本镇文化背景,新滩中学确定了以‚屈原文化‛为主题,辐射屈原中小学、北峰小学、仙女坪小学,新滩小学以‚新滩文化‛为主题,辐射南坪小学、铺坪小学的校本课程开发项目,并成立了以新滩中学副校长或新滩小学校长为主任的校本课程开发评审委员会,以新滩中学教导主任或新滩小学教导主任为组长的校本课程开发研究指导小组。聘请了县教研室江全佐、镇委副书记林文虎、原镇政协主席向富昌、原镇委宣传委员杜远庆、长江村村主任杜远平、退岗教师杜远海、退休教师谭众孚等多方位的领导、专家、学者和社会知名人士参与学校校本课程开发研究。制定了较为完善的《秭归县新滩中学‚屈原文化‛校本课程开发实施方案》和《新滩小学‚新滩文化‛校本课程开发实施方案》。

《新滩中学‚屈原文化‛校本课程》由屈原生平文化、屈原故里风情、屈原生态旅游三部分组成,从七、八、九年级三个阶段逐级开发,分段实施。《屈原文化》校本课程实施方案有指导思想、资源需求分析、课程开发目标、课程开发原则、课堂结构及内容、课程评价、课程组织领导与管理体系、保障机制八个项目;七年级的《屈原生平文化》,八年级的《屈原故里风情》,九年级的《屈原生态旅游》都分别编制有《课程纲要》。《纲要》有课程性质、课程目标、课程结构与内容、课程开发与实施建议、课程开发评价建议等内容。

课程开发的原则主要有以学生为主体的主体性原则、让学生接触实际的实践性原则、内容、要求、功能的综合性原则、注重活动环节的过程性原则、培养求异思维的开放性原则。课程结构尽量体现学生的认知规律,循序渐进。课程内容根据七、八、九年级学生不同的知识积累、认知水平,分年级设定多样的可供学生选择的教学内容。课程开发目标设有总体目标和具体目标。具体目标因课程的内容、年级的不同而拟定不同的目标系列。具体目标系列中有七年级的《屈原生平文化》、八年级的《屈原故里风情》、九年级的《屈原生态旅游》知识与技能、过程与方法、情感态度与价值观三位一体的目标系列。目标的制定尽量贴近学生的生活实际,立足于学生的全面发展。课程评价主要从评价的原则、对教师的评价、对学生的评价三个方面拟定实施方案。评价原则体现‚三化‛:即评价主体的多元化、全面化,评价方法的多样化。对老师的评价主要通过四看:看学生选择该课的人数;看学生学习过程中的发展程度;看领导、教师、家长听课后的反响;看学生问卷调查的结果。教师的教学要求做到‚四有‛:有计划、有进度、有教案、有评价。对学生的评价主要采取‚三看‛:看学生学习该课程的学时总量;看学生在学习过程中的积极表现、态度;看学生的学习成果。新滩中学为保证校本课程全面、快速实施,从宣传发动、师资培训、资源提供、竞争激励等方面建立了保障机制,以确保校本课程长期、健康发展。

《新滩小学‚新滩文化‛校本课程开发实施方案》在指导思想、课程结构、方法措施、实施程序等方面与《新滩中学‚屈原文化‛校本课程开发实施方案》基本相似。《新滩小学‚新滩文化‛校本课程》分为新滩文化与三峡文化、屈原文化与新滩文化、新滩文化与柑桔文化三个门类。因课程的具体内容难易、深浅程度不同而分年段分阶段实施。在实施过程中,新滩小学建立了较为规范、便于操作的学生搜集资料整理记录卡片和教师校本课程备课模式(表样式)。

(四)、按照新课程计划认真组织实施,确保‚三开‛。今年秋季,新滩中学正式在七年级两个班开设《屈原生平文化》校本课程。新滩小学在一至三年级三个班按课时计划开课,一至二年级每周三节,三年级每周二节。到目前为止,新滩中学屈原文化课程教学完成了屈原的故事与传说的搜集和整理工作。开设的第一节课为‚走近‘屈原文化’校本课程‛,向学生简要的介绍了校本课程开发的意义,让学生了解了《屈原文化》校本课程开发的内容和结构,并使学生明白了七年级在‚屈原生平文化‛的开发中,应该做些什么。最后,发给学生《新滩中学校本课程开发‘屈原生平文化’形成性评价》,对学生学习该课程提出了一些基本的要求。为搜集、整理好屈原的生平、故事,带领学生走进图书馆查阅资料,发动学生借阅与屈原有关的书籍阅读,摘抄。利用‚十〃一‛假期,采访民间艺人,请退休教师到校现场讲演屈原故事,让学生上网查阅资料。并通过填写屈原故事登记卡、办手抄报等形式,为学生搜集整理信息提供一个展示的平台。通过一系列的师生动手的实践活动、成果交流,把《屈原生平文化》校本课程开发推向了一个小小的高潮。

经 验 点 滴

(一)、学校高度重视,领导保驾护航,是校本课程开发顺利实施的保证。这主要表现在:一是教学时间给予充分的保证,开学后,校本课程开发作为一门独立的学科开课,并且每小周两节课。二是教学工作量给予科学的核定。考虑到校本课程开发的实际,学校领导规定:一节校本课程相当于两节语文课的工作量。三是学校领导积极参与指导,校长、教育干事、教导主任经常参加校本课程开发与实施研究活动,询问校本课程开发实施的具体情况,并提出一些建设性的意见。四是教学管理由教导处单列检查、督导。校本课程的备课,直接由教导处检查,督导落实实施过程。五是物力上给予倾斜,为各项实践、研训活动提供物资、经费保障。

(二)、部门紧密配合,教师群策群力,是校本课程开发有效实施的关键。校本课程开发有效实施是我们教师齐心协力的结果,首先,两名指导老师加强集体备课。指导老师团结协作,勤奋研究,积极探索,解决了《纲要》在实施中存在的难以操作的问题。其次,相关教师通力协作。图书管理员熊春林老师年岁已高,身体较差,但为了校本课程开发,牺牲大量的休息时间,为学生查阅资料大开方便之门,热情为师生服务。信息技术老师周志华,本来工作量就大,为了学生上网查阅资料,不仅毫无怨言,而且主动为学生提供技术指导。其它几名校本课程开发指导老师在教学中积极参与,献计献策,提供了不少的新点子、新方法,解决了许多在实施过程中的难题。

(三)、社会各界大力支持,出谋划策,是校本课程开发顺利、有效实施的坚强后盾。新滩中学校本课程开发聚着各界人士的心血:(1)县教研室专家精心指导。江全佐老师无论是在校本课程开发方案的制定上,还是在今秋的实施过程中,都给予了极大的关怀和指导,让我们的教师对开发‚屈原文化‛、‚新滩文化‛课程资源充满信心,使我们在实施过程中少走了许多弯路。(2)退休教师热心参与。为丰富搜集资源的渠道,退休教师宋大顺同志到校为学生进行了精彩的讲座,不计报酬,收到了良好的效果。(3)民间艺人积极配合。假期,学生在民间搜集屈原的故事,得到了家长、民间艺人的大力支持,搜集到了许多书本上没有,网上查不到的故事。七年级二班学生冀小莉进三闾拜访屈原庙守庙人徐正端老人,受到徐老的热情接待,而且不厌其烦地为她讲述了屈原勤奋好学、忠君爱国的故事。了解到屈原投江的三个原因。这是书本上难以查找的第一手资料。(4)顾问真诚建议。10月28日,全镇校本课程开发顾问齐聚新滩中学,听取了新滩中学‚屈原文化‛、新滩小学‚新滩文化‛校本课程开发实施方案后,建议在开发实施过程中应做到‚三贴近‛(贴近学生的思想、贴近学生的生活,贴近学生的学习)和‚三立足‛(立足于素质教育,立足于后代的培养,立足于社会的需求),真正领悟屈原精神的内涵(求索、奋进、博闻、强治)和外延(求索、爱国、苦读、廉洁、关爱)。并建议学校采取有效的形式加大对校本课程的宣传力度,让校本课程为家长和社会所接受。(5)县、镇各单位大力支持。镇文化广播站在过去为宣传我镇教育做了大量工作,会上承诺,在今后一定尽力做好校本课程开发实施宣传报道工作;长江村主任杜远平和镇直单位负责人对我镇校本课程开发也给予了高度评价,认为这是一项创新的工作,有着极其重要的现实意义,并表示尽最大努力解决校本课程开发实施过程中的经费问题。

体 验 感 悟

在领导的关心和指导下,在社会各界人士的大力支持下,在指导老师的紧密配合下,我镇校本课程开发特别是新滩中学‚屈原文化‛校本课程开发呈现出可喜的局面:(1)学生学习方式正在悄然变化。过去,大多数学生只能被动的接受知识,在教师、家长的高压下完成教学任务,而校本课程开发,学生重在实践,重在主动参与,学生的自主、合作、探究意识明显增强了。(2)学生综合素质逐步得到了提高。在搜集屈原故事时,我们采取了图书查阅、网上下载、民间采访等多种形式,人均搜集故事10个,其中30多人搜集的故事超过了10个,最多的达15个,最少的也有8个故事。在搜集过程中,学生了解了在图书馆查阅资料的基本方法,学会了上网搜集及下载信息的基本技能,提高了与他人交往的能力。搜集后,学生交流、办报,无形中提高了学生筛选信息、整合信息的能力。(3)学生情操受到了陶冶,行为日趋规范。在搜集屈原故事的过程中,学生深深感到:少年屈原勤奋好学,中年屈原勤政为民,老年屈原忠心报国。在教室里,在操场上,说脏话、闲话的人少了,谈屈原、爱学习、爱文娱的人多了。屈原的人格魅力对学生行为起到了潜移默化的作用。(4)教师适应新课程改革的能力有所增强。在制定校本课程开发方案前,我们教师可以说是眼前一团漆黑,不知所措。经过县、校校本课程培训后,我们才算初见‚光亮‛,对校本课程开发总算有所了解。经过艰苦学习、研讨,制定出《方案》,在实施中,又不断探索,学习,研究,调整,我们对‚屈原文化‛‚新滩文化‛校本课程开发与实施终于有点眉目了,积累了一些实践经验,教师能力明显提高了。(5)、屈原文化校本课程方案在市教育局组织的基础教育课程改革实验‚四优‛评比中获得一等奖。11月5日,全县中小学校本课程开发教学观摩会在我镇召开,新滩中学、新滩小学介绍了校本课程的开发与实施方案,其中两节观摩课得到所有与会者的一致好评。

不过,我们在实践过程中也存在一些困惑:一是如何对校本课程开发进行科学的评价,特别怎样对学生进行科学的评价。评价在新课程中是一个令人关注,也是一个难以把握的课题。校本课程又是一门重过程、重实践的综合性课程,这无疑增加了评价的难度。我们虽从知识与技能、过程与方法、情感态度与价值观三方面制定了一个形成性评价表,但明显感到还很粗糙,不系统,不科学,操作性不够强。二是开发条件受到制约,增添了实施的难度。学校虽有微机室、图书馆,但相应资料却很少;微机虽可上网,仅利用上课时间远远不够。本地经济落后,文化氛围不浓等诸多因素,严重地制约着校本课程的开发。三是教师的素质与时代的要求还有一定的差距。在当今知识爆炸的时代,知识更新太快,基础教育课程改革对教师提出了相当高的要求,校本课程更是如此。我们在实施过程中,明显感到吃力,付出的很多,收获的却很少。

基础教育课程改革是一场变革,变革难免会遭遇困难。有利于发展学生的个性潜能、有利于特色学校形成、有利于教师个性的养成、有利于培养多样人才的校本课程是一个全新的课题,全新更需要我们去探索。‚路漫漫其修远兮,吾将上下而求索。‛在新的挑战面前,我们需要努力,也一定会努力探索出一条具有学校特色的校本课程开发的新路子。

屈原镇中心学校

二00四年十月

下载PAYPAL IPN开发小结word格式文档
下载PAYPAL IPN开发小结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    勘探开发研究院实习小结

    勘探开发研究院实习小结 在过去的一个月的时间,我们完成了在勘探开发研究院的实习。在这短暂的过程,通过各位领导及师傅的言传身教,了解到了勘探开发研究院如何对玉门油田的发......

    校本课程开发阶段小结

    双泉小学 校本课程开发阶段总结 (2011-2012学年下期) 2012.6 双泉小学 校本课程开发阶段总结 经过了一个学期的努力工作,已初步完成了本阶段的计划,学生在学习《雕版印刷》......

    异地跨团队开发小结

    异地跨团队开发小结 对开发中遇到的问题进行小结: 1计划很重要 包括项目完整流程的计划,各阶段各方面各部门各环境的计划与协调。计划时有留下余地时间,计划制定要从粗到细,具......

    化工开发与设计小结范文

    第一章小结 1、实验室研究的结果是确定一种有希望的反应方法;化工过程开发的结果是实现工业化。 2、化工过程研究与开发的基本方法有实验研究方法和数学模型方法,数学模型方法......

    开发区党委副书记个人思想工作小结

    开发区党委副书记个人思想工作小结 开发区XX年5月成立时,我在五吕镇担任党委副书记,随镇成建制划入开发区而成为一名开发区人,XX年2月调区农办任副主任、同年8月调区党政办任副......

    课程资源的开发和利用课题小结

    《课程资源的开发和利用》课题小结 从2008年2月起,我在学校低年级中进行了“课程资源的开发和利用“的小课题研究。经过初步探索,参与这一课题实验的教师无论是从理念的转变,行......

    县委组织部关于干部培训和人才培养开发的小结

    组织部关于干部培训和人才培养开发工作小结2011年以来,我县人才工作坚持以科学发展观为指导、坚持党管人才原则,牢固树立“人才是第一资源”的工作理念,不断创新人才工作体制机......

    热力学开发试验与数据分析小结

    热力学开发试验与数据分析小结 热力学开发的定义个人认为,是对设计出的基本型发动机,通过调整点火提前角、空燃比、进排气凸轮相位、CBR状态等参数(对于增压直喷发动机则另有增......