引用: freebsder 发表于 2015-5-28 00:42
@chenyy 你说的很对,一个谦虚的人在别人指出你可能存在的不足的时候,不是第一时间问为什么这样说,不足在哪里,而是自以为自己为初学者考虑跑来“请问版主:还没学会走,能跑起来吗?”吗?
既然大家都能看,我就说我的理由 @gsjzbj:
1、httpserver的核心是引擎,文章里弄一堆“开始->初始化开发版->引脚复用配置->熄灭LED->...." 好吧,核心不说,告诉初学者httpserver开始熄灭LED创建SLS任务了!我还是那句话,只说样章给出的内容,仅仅是就代码论代码,作者自己可能都没搞清楚几个问题:http server最核心的是http解析过程,生命周期和状态切换(引发的回调),这芯片是怎么处理的?__SL_P_等东西什么时候处理的?怎么处理的?各个callback的调用时机是怎么样的,这些状态可以怎么使用,各个struct的生命周期等等。
2、>>>"浏览 CC3200 的默认主页 mysimplelink.net,并用网页与 CC3200 通信", “网页接收到5个接入点名称后,将它们显示在网页中供用户选择”等等吧不一一列举.
基本常识错了知道吗?知道html渲染吗?谁渲染的?网页吗?知道的话会写网页接受数据,用网页通讯?你模糊的地方可以不写,但乱写,就是你乱教。
3、>>>"设备接收到 HTTP 请求发送的数据后,产生 SL_NETAPP_HTTPPOSTTOKENVALUE_
EVENT 事件,并调用 SimpleLinkHttpServerCallback()进行处理"
>>>设备接收到 GET 令牌后产生 SL_NETAPP_HTTPGETTOKENVALUE_ EVENT(HTTP GET 令牌数据事件)
知道服务端变量吗?token在这里不是通讯里令牌的意思,自然就不是设备接受令牌的意思,http的基础是文本解析,token在这里是指文本解析中的字面量literal,用来做dynamic html的,好吧,产生这个事件是因为http引擎根据固定模式(__SL_P这种,因为CC3200毕竟是嵌入式系统,模式固定简化服务的处理,这也是为什么手册里有专门一小结来告诉你这种变量该怎么定义)识别出这是一个服务端变量,而这个服务端变量又不是系统定义的内部变量,它自己无法告诉你你要的数据,需要人工参与,所以整了HTTPGETTOKENVALUE来让你添数据,这也是我前面说的http引擎为什么需要说,哪怕简单的说的原因。你模糊的地方可以不写,但乱写,就是你乱教。
4、>>>当在手机或笔记本电脑上打开网页 profiles_config.html 时,网页依次发出用户 GET 令牌“__SL_G_US1~5”。
这是最基本的常识错误。浏览器首先用http协议请求profiles_config.html这个资源,服务端(也就是cc3200里面的http server)在rom或flash里找到这个资源。然后服务器做文本解析,类似C编译器的第一个步骤,一个token一个token的解析,寻找上面说的固定格式,比如__SL_G_US1~5,对所有找到的服务端变量(固定格式)进行变量替换(当然不是简单的变量替换,这里借用这个词形象化),系统定义的当然系统就处理了,用户定义的如__SL_G_US1~5,当然它找不到它的value值,这时候用HTTPGETTOKENVALUE来让你添数据,这也是为什么系统定义的服务端变量不会触发HTTPGETTOKENVALUE这个回调的原因,填好之后在资源中__SL_G_US1~5占位符这里做文本替换,替换成你给的值,最后打包成一个html静态内容(也可能是字符流形式)再按字符填充到response body返回浏览器。为什么要把数据转成文本添也是这个原因:html的基础是文本。
好了,那么是“网页依次发出用户 GET 令牌 “__SL_G_US1~5”“呢?还是服务器填充__SL_G_US1~5作为html响应返回给浏览器呢?你模糊的地方可以不写,但乱写,就是你乱教。
5、httprequest 10年前这是清晰的牛逼的,10后的今天这就是乱七八糟的,你可以不会也可以不写,但不要引导初学者一个过时的东西,应用技术过时了能干嘛?真是为初学者考虑?
6、以上http解析的框架过程很复杂吗?以上描述也就1,200个字吧,有谁看不懂的?所以别用初学者做借口,也不要把读者定位成看不懂的傻瓜。
7、@chenyy 管理员,我不谦虚,这篇干货回复没有异议的话是否应该加分呢? 多加点啊,加满
引用: 蓝雨夜 发表于 2015-5-28 07:56 回复很“干”! 下次你在论坛里出些文章供我们菜鸟学习下呀! 不然,TI给个代码,我们根本不知道如何灵活运用,分析这个技术要点在什么地方! 我们该搜寻那些资源,拿过来学习,看什么书! 可以提供个方向也可以的!
引用: freebsder 发表于 2015-5-28 13:34
写文章要论证很多东西太耗精力,有问题提论坛上吧,尽力帮大家,当唠嗑比当写东西轻松。
ps:你是菜鸟的话,那就没人不菜了
引用: 蓝雨夜 发表于 2015-5-28 14:16
HTTP好多都不懂!
现在都是百度看html语法是什么意思!
按例子,照葫芦画瓢,一遇到问题就OVER了
引用: gsjzbj 发表于 2015-5-30 16:27 @freebsder:来而不往非礼也,费了这么大精力写了这么多,咱总得有点反应吧。 首先,有些地方你说对了,我的书就是从应用角度分析TI的例程,没有进行更深层次的分析,不是没那水平,只是没有更多的精力和时间,有些说法可能不专业,有点误人子弟了。 至于httprequest,是TI的例程中用了,我只是分析。TI例程中不止用了httprequest,还用了jQuery.ajax(),WebSocket和MQTT等,这些不算过时吧,相关分析将在提高篇中介绍。 看来你上学时是个勤奋好学的好学生,现在像你这样的好学生越来越少了,只是脾气好像稍微大了点。我的脾气以前也比较大,现在已经越来越没有脾气了。 刚刚拜读了你的新作:CC3200做节点的web服务,可能我基础太差,没完全看明白,暂不做评论。
引用: gsjzbj 发表于 2015-5-30 16:50
我前言中说了:编者水平有限,书中难免会有错误和不妥之处,敬请广大读者批评指正。
老师也是人,当然有出错的时候。也是,现在确实有一些老师做了不少有损老师尊严的事情,以至于有些人连对老师最起码的尊重都没有了。真为老师感到悲哀。
引用: gsjzbj 发表于 2015-5-30 21:35 从应用的角度看,不管http server最核心的是什么,各个callback的调用时机是什么,各个struct的生命周期多长,整个过程也就4步:建立连接,发送请求,接收应答,断开连接。使用HTTP的目的是传送数据,只要保证数据正确传输,如何传输用户根本可以不管。就像软件编程人员只要调用API实现编程,有谁去关心底层硬件如何实现。 我个人也是非常认真的人,所有书稿都是我亲手完成。当然受知识面的限制,难免出现错误。如果大家都因为怕犯错误而不写书,因噎废食,学生拿什么来学习。如果都能看懂程序,还要老师做什么。从另一角度说,方法比内容更重要,老师应该注重的是方法的培养,例如程序的调试方法,内容会过时,方法通常不会过时。
引用: freebsder 发表于 2015-5-28 00:42
@chenyy 你说的很对,一个谦虚的人在别人指出你可能存在的不足的时候,不是第一时间问为什么这样说,不足在哪里,而是自以为自己为初学者考虑跑来“请问版主:还没学会走,能跑起来吗?”吗?
既然大家都能看,我就说我的理由 @gsjzbj:
1、httpserver的核心是引擎,文章里弄一堆“开始->初始化开发版->引脚复用配置->熄灭LED->...." 好吧,核心不说,告诉初学者httpserver开始熄灭LED创建SLS任务了!我还是那句话,只说样章给出的内容,仅仅是就代码论代码,作者自己可能都没搞清楚几个问题:http server最核心的是http解析过程,生命周期和状态切换(引发的回调),这芯片是怎么处理的?__SL_P_等东西什么时候处理的?怎么处理的?各个callback的调用时机是怎么样的,这些状态可以怎么使用,各个struct的生命周期等等。
2、>>>"浏览 CC3200 的默认主页 mysimplelink.net,并用网页与 CC3200 通信", “网页接收到5个接入点名称后,将它们显示在网页中供用户选择”等等吧不一一列举.
基本常识错了知道吗?知道html渲染吗?谁渲染的?网页吗?知道的话会写网页接受数据,用网页通讯?你模糊的地方可以不写,但乱写,就是你乱教。
3、>>>"设备接收到 HTTP 请求发送的数据后,产生 SL_NETAPP_HTTPPOSTTOKENVALUE_
EVENT 事件,并调用 SimpleLinkHttpServerCallback()进行处理"
>>>设备接收到 GET 令牌后产生 SL_NETAPP_HTTPGETTOKENVALUE_ EVENT(HTTP GET 令牌数据事件)
知道服务端变量吗?token在这里不是通讯里令牌的意思,自然就不是设备接受令牌的意思,http的基础是文本解析,token在这里是指文本解析中的字面量literal,用来做dynamic html的,好吧,产生这个事件是因为http引擎根据固定模式(__SL_P这种,因为CC3200毕竟是嵌入式系统,模式固定简化服务的处理,这也是为什么手册里有专门一小结来告诉你这种变量该怎么定义)识别出这是一个服务端变量,而这个服务端变量又不是系统定义的内部变量,它自己无法告诉你你要的数据,需要人工参与,所以整了HTTPGETTOKENVALUE来让你添数据,这也是我前面说的http引擎为什么需要说,哪怕简单的说的原因。你模糊的地方可以不写,但乱写,就是你乱教。
4、>>>当在手机或笔记本电脑上打开网页 profiles_config.html 时,网页依次发出用户 GET 令牌“__SL_G_US1~5”。
这是最基本的常识错误。浏览器首先用http协议请求profiles_config.html这个资源,服务端(也就是cc3200里面的http server)在rom或flash里找到这个资源。然后服务器做文本解析,类似C编译器的第一个步骤,一个token一个token的解析,寻找上面说的固定格式,比如__SL_G_US1~5,对所有找到的服务端变量(固定格式)进行变量替换(当然不是简单的变量替换,这里借用这个词形象化),系统定义的当然系统就处理了,用户定义的如__SL_G_US1~5,当然它找不到它的value值,这时候用HTTPGETTOKENVALUE来让你添数据,这也是为什么系统定义的服务端变量不会触发HTTPGETTOKENVALUE这个回调的原因,填好之后在资源中__SL_G_US1~5占位符这里做文本替换,替换成你给的值,最后打包成一个html静态内容(也可能是字符流形式)再按字符填充到response body返回浏览器。为什么要把数据转成文本添也是这个原因:html的基础是文本。
好了,那么是“网页依次发出用户 GET 令牌 “__SL_G_US1~5”“呢?还是服务器填充__SL_G_US1~5作为html响应返回给浏览器呢?你模糊的地方可以不写,但乱写,就是你乱教。
5、httprequest 10年前这是清晰的牛逼的,10后的今天这就是乱七八糟的,你可以不会也可以不写,但不要引导初学者一个过时的东西,应用技术过时了能干嘛?真是为初学者考虑?
6、以上http解析的框架过程很复杂吗?以上描述也就1,200个字吧,有谁看不懂的?所以别用初学者做借口,也不要把读者定位成看不懂的傻瓜。
7、@chenyy 管理员,我不谦虚,这篇干货回复没有异议的话是否应该加分呢? 多加点啊,加满
引用: freebsder 发表于 2015-5-28 00:42
@chenyy 你说的很对,一个谦虚的人在别人指出你可能存在的不足的时候,不是第一时间问为什么这样说,不足在哪里,而是自以为自己为初学者考虑跑来“请问版主:还没学会走,能跑起来吗?”吗?
既然大家都能看,我就说我的理由 @gsjzbj:
1、httpserver的核心是引擎,文章里弄一堆“开始->初始化开发版->引脚复用配置->熄灭LED->...." 好吧,核心不说,告诉初学者httpserver开始熄灭LED创建SLS任务了!我还是那句话,只说样章给出的内容,仅仅是就代码论代码,作者自己可能都没搞清楚几个问题:http server最核心的是http解析过程,生命周期和状态切换(引发的回调),这芯片是怎么处理的?__SL_P_等东西什么时候处理的?怎么处理的?各个callback的调用时机是怎么样的,这些状态可以怎么使用,各个struct的生命周期等等。
2、>>>"浏览 CC3200 的默认主页 mysimplelink.net,并用网页与 CC3200 通信", “网页接收到5个接入点名称后,将它们显示在网页中供用户选择”等等吧不一一列举.
基本常识错了知道吗?知道html渲染吗?谁渲染的?网页吗?知道的话会写网页接受数据,用网页通讯?你模糊的地方可以不写,但乱写,就是你乱教。
3、>>>"设备接收到 HTTP 请求发送的数据后,产生 SL_NETAPP_HTTPPOSTTOKENVALUE_
EVENT 事件,并调用 SimpleLinkHttpServerCallback()进行处理"
>>>设备接收到 GET 令牌后产生 SL_NETAPP_HTTPGETTOKENVALUE_ EVENT(HTTP GET 令牌数据事件)
知道服务端变量吗?token在这里不是通讯里令牌的意思,自然就不是设备接受令牌的意思,http的基础是文本解析,token在这里是指文本解析中的字面量literal,用来做dynamic html的,好吧,产生这个事件是因为http引擎根据固定模式(__SL_P这种,因为CC3200毕竟是嵌入式系统,模式固定简化服务的处理,这也是为什么手册里有专门一小结来告诉你这种变量该怎么定义)识别出这是一个服务端变量,而这个服务端变量又不是系统定义的内部变量,它自己无法告诉你你要的数据,需要人工参与,所以整了HTTPGETTOKENVALUE来让你添数据,这也是我前面说的http引擎为什么需要说,哪怕简单的说的原因。你模糊的地方可以不写,但乱写,就是你乱教。
4、>>>当在手机或笔记本电脑上打开网页 profiles_config.html 时,网页依次发出用户 GET 令牌“__SL_G_US1~5”。
这是最基本的常识错误。浏览器首先用http协议请求profiles_config.html这个资源,服务端(也就是cc3200里面的http server)在rom或flash里找到这个资源。然后服务器做文本解析,类似C编译器的第一个步骤,一个token一个token的解析,寻找上面说的固定格式,比如__SL_G_US1~5,对所有找到的服务端变量(固定格式)进行变量替换(当然不是简单的变量替换,这里借用这个词形象化),系统定义的当然系统就处理了,用户定义的如__SL_G_US1~5,当然它找不到它的value值,这时候用HTTPGETTOKENVALUE来让你添数据,这也是为什么系统定义的服务端变量不会触发HTTPGETTOKENVALUE这个回调的原因,填好之后在资源中__SL_G_US1~5占位符这里做文本替换,替换成你给的值,最后打包成一个html静态内容(也可能是字符流形式)再按字符填充到response body返回浏览器。为什么要把数据转成文本添也是这个原因:html的基础是文本。
好了,那么是“网页依次发出用户 GET 令牌 “__SL_G_US1~5”“呢?还是服务器填充__SL_G_US1~5作为html响应返回给浏览器呢?你模糊的地方可以不写,但乱写,就是你乱教。
5、httprequest 10年前这是清晰的牛逼的,10后的今天这就是乱七八糟的,你可以不会也可以不写,但不要引导初学者一个过时的东西,应用技术过时了能干嘛?真是为初学者考虑?
6、以上http解析的框架过程很复杂吗?以上描述也就1,200个字吧,有谁看不懂的?所以别用初学者做借口,也不要把读者定位成看不懂的傻瓜。
7、@chenyy 管理员,我不谦虚,这篇干货回复没有异议的话是否应该加分呢? 多加点啊,加满
引用: freebsder 发表于 2015-7-22 12:25
__SL_P_UTP 吧?记得G是说get,P是说post