2017年9月

Amaze UI学习笔记(1)Hello World

据说Amaze UI是一个很好的网页框架,学学看吧,官网http://amazeui.org/,
首先下载软件包,目前的版本是2.7.2,961K,解压后2.76M,带有demo,
index.html和其它一些页面,可以感觉一些都能实现一些什么样式,也算是一个学习的目标吧
创建一个helloworld.html,贴入代码看看

<!doctype html>
<html class="no-js">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="description" content="">
  <meta name="keywords" content="">
  <meta name="viewport"
        content="width=device-width, initial-scale=1">
  <title>Hello Amaze UI</title>

  <!-- Set render engine for 360 browser -->
  <meta name="renderer" content="webkit">

  <!-- No Baidu Siteapp-->
  <meta http-equiv="Cache-Control" content="no-siteapp"/>

  <link rel="icon" type="image/png" href="assets/i/favicon.png">

  <!-- Add to homescreen for Chrome on Android -->
  <meta name="mobile-web-app-capable" content="yes">
  <link rel="icon" sizes="192x192" href="assets/i/app-icon72x72@2x.png">

  <!-- Add to homescreen for Safari on iOS -->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content="Amaze UI"/>
  <link rel="apple-touch-icon-precomposed" href="assets/i/app-icon72x72@2x.png">

  <!-- Tile icon for Win8 (144x144 + tile color) -->
  <meta name="msapplication-TileImage" content="assets/i/app-icon72x72@2x.png">
  <meta name="msapplication-TileColor" content="#0e90d2">

  <link rel="stylesheet" href="assets/css/amazeui.min.css">
  <link rel="stylesheet" href="assets/css/app.css">
</head>
<body>
<p>
  Hello Amaze UI.
</p>

<!--在这里编写你的代码-->

<!--[if (gte IE 9)|!(IE)]><!-->
<script src="assets/js/jquery.min.js"></script>
<!--<![endif]-->
<!--[if lte IE 8 ]>
<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
<script src="http://cdn.staticfile.org/modernizr/2.8.3/modernizr.js"></script>
<script src="assets/js/amazeui.ie8polyfill.min.js"></script>
<![endif]-->
<script src="assets/js/amazeui.min.js"></script>
</body>
</html>

好像就看到Hello Amaze UI.几个字母,略有失望,还缺少jquery.min.js,可能是为了减肥?下载了2.2.2版本放到了js文件夹
下面就从布局开始学起吧,有个概念叫做响应式布局,就是一个网站可以兼容多种终端,为啥还有人要禁止呢

简单的UDP通信

TCP维持起来比较复杂,相对来说,UDP就简单很多了,正好有一个东西需要传递一些信息,就又学习了一下UDP
参考这个:http://www.cnblogs.com/sunev/archive/2012/08/15/2604190.html
首先需要建立一个UDP的接收端,尽量化简,有什么问题再说吧
代码很简单

int listenPort = 4567;
ipEndPoint = new IPEndPoint(IPAddress.Any, listenPort);
udpReceive = new UdpClient(ipEndPoint);
IAsyncResult iar = udpReceive.BeginReceive(new AsyncCallback(ReceiveCallback), udpReceive);

接收回调

private void ReceiveCallback(IAsyncResult iar)
{
    UdpClient udpReceive = iar.AsyncState as UdpClient;
    Byte[] receiveBytes = udpReceive.EndReceive(iar, ref ipEndPoint);
    string receiveString = Encoding.Default.GetString(receiveBytes);
    udpReceive.BeginReceive(new AsyncCallback(ReceiveCallback), udpReceive);
}

然后就需要一个测试的客户端了

byte[] buf = Encoding.UTF8.GetBytes("MikuQ");
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4567);
UdpClient udpSend = new UdpClient();
udpSend.Send(buf, buf.Length, remoteEP);
udpSend.Close();

不知道Close是不是多余的,有时间再研究,换C语言试试,要加一句#pragma comment(lib,"WS2_32.lib")

int sockfd=socket(AF_INET,SOCK_DGRAM,0);  
char buf[80];
struct sockaddr_in adr_srvr;  
adr_srvr.sin_family=AF_INET;  
adr_srvr.sin_port=htons(4567);  
adr_srvr.sin_addr.s_addr = inet_addr("127.0.0.1");  
memset(adr_srvr.sin_zero,0,8);
sprintf(buf,"%d:%s",0,str);  
int z=sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_srvr,sizeof(adr_srvr));

大概这个样子吧,记录一下,有时间再写TCP的。

玩M5STACK

很精致,很精致,很精致
首先是开发环境,下载最新的Arduino IDE版本是1.8.4,有160M。
打开IDE,文件->首选项->附加开发板管理器网址:http://www.M5Stack.com/download/package_m5stack_index.json
工具->开发板->开发板管理器,搜索M5就剩一个了,版本是0.0.3,点击安装,35M,速度比起下载IDE,慢多了
40多分钟,下了28M,一个没注意,电脑待机了,回来就不动了,悲催了
先下2014的driver吧,竟然win10都不带驱动
还好可以断点,一个多小时35M下完,还有76M的第二包,秒下,剩下的50%进度是安装,也很快
按照说明,工具->开发板->M5Stack,工具->端口->COM5(装完驱动出来的)
文件->示例->M5Stack->Basic->Hello,然后点箭头运行就可以了,和8266一样,编译慢,下载也慢。

#include <M5Stack.h>

// the setup routine runs once when M5Stack starts up
void setup(){

  // Initialize the M5Stack object
  m5.begin();
  
  // LCD display
  m5.Lcd.printf("hello MikuQ.com");
}

// the loop routine runs over and over again forever
void loop() {

}

最后不得不说的是150mA的电池和1W的喇叭都挺鸡肋的

蛙板新尝试CDC-VCP虚拟串口

其实不懂到底应该叫啥,CDC的全称是Communication Device Class,VCP的全称是Virtual Com Port,或者说VCP是CDC的一种应用,个人理解起来就是虚拟串口吧。
有了以前的基础,差别只在“选择USB_Device设备类型HID”改成选择CDC,然后生成就好啦,win7识别不到驱动,win10识别USB 串行设备,有串口号,这就够了,然后就是一段程序。

 if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0)
 {
   HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
 }
 else
 {
   HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
   uint8_t buff[] = "Hello MikuQ!\n";
   CDC_Transmit_FS(buff,sizeof(buff));
   HAL_Delay(500);
  }

打开串口接收软件,速率不重要,默认就可以,这个速率以后怎么传递给设备呢,这是一个问题,运行结果就是,按一下按键,发送一条数据。

和water学sqlserver

最近SQLServer经常拒绝服务,Water教了一着如何监视

通过性能监视器监视链接池化
单击开始,指向程序,指向管理工具,然后单击性能运行性能监视器。
在图表背景中右击,然后单击增加计数器。
在性能对象下拉列表框中,单击SQL Server:通用统计。
在出现的列表中,单击用户链接。
单击增加,然后单击关闭。 

还有生动的录像,尝试上传,不一定能传上来,SQL.gif

这个录像是用一个叫LICEcap的软件做的,真生动,下边就是观察日志了。