中文


1. Yii — MVC 开发 — M,V,C各自的职责

Model 表示网站内在的数据结构,它的代码中不应该包括HTML,CSS等前端语言,并且不应该处理$_GET, $_POST的用户请求。前者是Controller来做的,后者是View来处理的。 它的职责是对数据库进行增删改查,并且在进行数据库操作前进行数据合法性的校验。 View 面对用户呈现数据最终的表现形式。 它应该包括HTML代码,和简单的遍历,格式化,渲染数据的PHP代码。 它不应该包括对数据库的操作和对用户请求的处理($_GET, $_POST) 他可以调用Controller或Model的成员变量或是方法,但它应该仅仅用来呈现数据。 View可以有不同的复用形式: Layout: 页面中共同的表现区域,比如header,footer就可以放在layout的view中 Partial views:partial view渲染时不会被layout装饰,也即它不会带上layout的渲染代码。它可以被用来作为页面区域的复用。 Widgets:如果partial view中需要很多的逻辑计算,那它就是一个空间(widgets)。它可以是一个HTML的标记区域。包含复杂的逻辑。 Helper class:如果view中我们需要一些代码片段来格式化数据或者生成HTML标签。我们就可以把他们放在helper class中而不是直接放在view中。Yii有一个强大的CHtml helper class可以产生常用的HTML代码。Helper Class可以放在自动加载目录中,这样它就可以不用显式地加载就可以被使用。 Controller Controller就像胶水一样,把model,view和其他components粘在一起,共同组成一个可以运行的网站应用。Controller负责直接处理用户的请求,也就是说,controller: 1. 直接访问$_GET, $_POST,和其他包含用户请求的PHP变量。 2. 创建model的实例并且控制它的生命周期。比如,在一个典型的model update的动作中,controller可以先创建model的实例;然后用用户输入填充这个model实例。在成功存储model后,controller可以把用户浏览器重定向到model的详情页。注意,实际的存储model的实现代码需要写在model中而不是controller。 3. 应该避免包括SQL语句,它应该在model中。 4. 应该避免包括HTML语句,它应该在view中。   在一个设计良好的MVC应用中,controller应该非常短小,可能只包含几十行代码。大量的代码在model中,因为它需要处理数据。并且每个应用的model的业务逻辑都不尽相同。


wr703n路由器通过串口与红板MWC通信(MEGA2560)

学会很多东西,终于解决了路由器与飞控板的通信问题。离毕设成功又近了一步。 其中,河南科技大学的仲志丹所写的《TL-WR703N的应用与开发》很有用。网上有PDF版。 其中讲了TL-WR703N如何刷入OPENWRT,如何安装USB转串口驱动,如何安装串口转发至TCP包的软件。   我的MWC板子上自带一个串口转USB芯片,其型号为SILABS-CP2012,所以需要到openwrt官网上下载 kmod-usb-serial-cp210x_3.3.8-1_ar71xx.ipk 这个驱动,并手动解决安装包依赖问题。也就是一个一个手动下载依赖包。   另外这篇博文对我帮助很大,blog.csdn.net/jiangyuexiang/article/details/7997560 它讲了如何让Arduino和Openwrt进行通信。并且提供了一个测试样例。


openWRT如何修改MAC地址

最简单的做法是通过串口控制台修改 /etc/config/ 下的网络配置文件 network. 两个步骤: 步骤一:用vi编辑器打开/etc/config/network 文件 步骤二:在其中增加 macaddr 参数, config interface lan option ifname   eth2 option status   1 option proto    static option ipaddr   192.168.200.1 option netmask  255.255.255.0 option macaddr 00:01:02:03:04:05 转载自:http://blog.csdn.net/nice_cxf/article/details/7939000


嵌入式系统-第一课

课程研究范畴: 计算机体系结构(Computer Architecture)讲的是CPU架构,是在CPU封装之内的东西。 嵌入式系统是将CPU封装之外,机箱之内的东西。   参考书目: 现代嵌入式计算,Peter Barry等,机械工业出版社;   实验平台: 1. Acadia板子 http://www.pcduino.com 一个Linux机器 4核1.2Ghz Cotex A9 CPU Cotex指令集 tx卡槽,SATA接口,USB口, 2. 树莓派板子 一个Linux机器 3. http://www.wrtnode.com MIPS CPU 带wifi,实际上就是路由器。就是tplink-wr703n的板子。   课程网站 http://fm.zju.edu.cn QQ:36292289X   分数构成: 总分=期末闭卷考试40分+平时成绩60分 平时成绩=必做实验40分+选做实验(最多)25分   Micro Control Unit (MCU) 单片机, 无Memory Managment Unit (MMU)   更硬一点-VxWorks ucLinux等无MMU支持的POSIX OS,或ucOS等纯应用不支持POSIX的OS。 这类OS实际是一个函数库,支持多线程。 一般的操作系统和应用程序是独立分开的。但以上操作系统和应用程序编译时是link到一起的,成为一个数据块。 […]


tl-wr703n v1.7 刷 openwrt教程

tplink wr703n硬件版本号:3.17.1 Build 140120 实际上,从硬件上讲,TL-WR703N = FWR171-3G = MW151RM3G 后面两个还便宜一些。 openwrt的中文网http://www.openwrt.com.cn/bbs/ 很多教程和固件资源。 注意:wr703n 的1.7版本会校验固件的rsa签名,导致刷写固件失败。 这里是避免用ttl线的解决方法:http://www.right.com.cn/forum/thread-159078-1-1.html 首先,给本机配置tftp服务。 注意:ubuntu下,配置完的tftp服务器的共享目录在/var/lib/tftpboot下。 然后下载busybox, dd, 和固件http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin 按照教程一点一点操作即可。 需要懂一些linux的知识。 老外的原版解决方案 http://pastebin.com/0wzMthfr Openwrt编译教程 http://forum.cnsec.org/thread-93117-1-1.html    


闪烁的LED灯(LED灯引脚定义)

MWC红色Arduino板(之后的简称Arduino板)上有四个LED灯,分别为LED1~LED4。经过测试,发现其对应的引脚地址为:13,30,31,32. 需要注意:LED1为高电平灯亮,LED2~LED4为低电平灯亮。 pinMode 设置引脚的输入,输出模式; digitalWrite向指定的数字引脚写入值; delay延迟,参数的单位为毫秒。   int LED1 = 13; // HIGH level signal trigger int LED2 = 30; // LOW level signal trigger int LED3 = 31; // LOW level signal trigger int LED4 = 32; // LOW level signal trigger void setup() { // put your setup […]


项目简介- MWC 红板飞控 主控芯片MEGA2560

自己的毕业设计是四轴飞行器的手机控制,需要学习Arduino来编写飞控软件。因此写一系列Arduino开发笔记。一方面帮助自己理解技术知识,一方面帮助可能与我遇到相同问题的人。 我所用的硬件:MWC红板飞控,搭载MEGA2560芯片,板载三轴角速度传感器ITG3205(ITG3200),三轴加速度传感器BMA180,三轴磁罗盘HMC5883,气压计BMP085(9D0F)。


[leetcode] Multiply Strings

Multiply Strings Given two numbers represented as strings, return multiplication of the numbers as a string. Note: The numbers can be arbitrarily large and are non-negative. Tags: math, string 字符串相乘,关键是模拟我们平时手算乘法时的过程。取出num2的每一位,乘以num1,再把之前得到的re向左移一位,再加上这个循环中的结果。所以我们需要实现两个函数multiplyNum(字符串乘以数字)和sum(两个字符串相加)。 num1或num2为零需要单独考虑,否则结果会出现类似0000的情况。 class Solution { public: string multiply(string num1, string num2) { int i = 0; string re; if(num1 == “0” […]