runjs 是 oschina 旗下的一个项目,主色调以暗黑色, 网站建成历史较长 runjs.cn域名可追溯到2012年08月29日,成立至今,runjs已处于无人运营状态,oschina将其精力投放于旗下更具商业潜力的众包平台、码云等产品,加上runjs 并不出色的用户体验,和runjs不具备达到期望的商业性目的,现在runjs沦为oschina的边缘产品.
jsrun 作为后起之秀,以良好的用户体验和清新的风格获得了大量技术宅的追捧, 追溯 jsrun.net 域名是 2016年03月18日 注册 ,注册在个人名下。
对比JSRun 和 runjs的界面, jsrun 功能更为实用,交互效果更为有趣美观。 作为新生一代系统 在操作体验上,UI设计上更胜一筹 本也是理所当然的。
作为一名前端工程师,美是最重要的, 这是我选择做为JSRun的忠实粉重要原因,为此我还进行了赞助得到了VIP会员,(只赞助了10元,嘻嘻) 并有幸与站长取得了联系,作了一些交流。
JSRun站长表示,做JSRun网站之缘由也是因为其兴趣之所在, 而H5技术是未来重要的方向, 目前大家把大量的目光投在Android,iOS上,追求极致的运行速度而忽略了硬件水平快速升级的事实,JSRun 做这个,也是为了营造更好的国内H5技术氛围。
JSRun站长表示,随着移动硬件性能的飞速提升,H5成熟的生态体系,开发效率远超Android iOS的情况下 , “ H5工程师全面取代Android iOS 程序员” 将成为大概率事件. 到时Android iOS 开发者将面找不到工作或被迫转行。 而现在这个时间正是Android iOS开发者开始重视和学习H5技术的最佳时机。
听到这些我心里颇为高兴,为了我成功的站队H5。
点赞 1 收藏 分享 文章举报 惠龙e通技术部官方博客 发布了3 篇原创文章 ·
获赞 0 ·
访问量 1642 私信 关注
1.要解决的问题 在分配负载进程时,可以在负载均衡器中使用健康检查功能来评估绑定于负载均衡器上的服务器状态。
例如:在一个包含web服务器、代理服务器、应用程序服务器和数据库服务器的配置中,让我们考虑在web服务器之前使用负载均衡器的情况。
负载均衡器能够评估web服务器的状态,并在web服务器出现故障时将其切断。然而,负载均衡器不能识别后端服务器状态,例如代理服务器、应用程序服务器和数据库服务器。
2.云模式的说明 你可以运用云负载均衡器中的健康检查功能,使用PHP、JavaServelet或类似的(程序)建立一个动态页面来执行检查。这个程序可以检查代理服务器、应用程序服务器、数据库服务器等这一类服务器的运行,并将结果返回给负载均衡器。这样就可以将系统作为一个整体进行检查。
3.实施 在AWS中,ELB的健康检查功能对HTTP(S)是否能连接到指定的URL进行了状态检查。使用这一功能,将健康检查的结果指向一个动态页面。
我们将使用一个由web服务器、代理服务器、应用程序服务器和数据库服务器组成的系统来举例说明如何实现。 (步骤)
启动ELB,并开启健康检查功能。
创建运行在应用服务器上的程序。使其在运行时需要访问数据库。
将ELB的健康检查地址设置为此程序的URL。向此URL发出请求来激活这个程序。
由ELB执行健康检查。
4.配置 5.好处 这使得你可以检查系统运行时所需的所有服务器。
根据程序如何响应健康检查,它可能会执行关闭过程(即拒绝请求),也可能会根据失效的细节返回自定义错误信息。
6.注意事项 如果有大量的服务器,那么健康检查本身可能会造成网络拥塞,所以必须仔细考虑健康检查的的时机。
如果数据库服务器成为单一故障点并发生宕机,这可能会引起一个过度反应而使得所有服务器宕机,这取决于后端服务器检查程序的编写。
同时使用数据库复制模式可以防止数据库服务器成为单一故障点。
通过裁剪平面程序例子学习裁剪相关知识
#include #include #include static GLfloat xRot =0.0f; static GLfloat yRot = 0.0f; void SetupRC(void) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glShadeModel(GL_FLAT); //明暗模式 以最后的所填颜色填充 } void ChangeSize(int w, int h) { if (h == 0) h = 1; //设置视区尺寸 glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //设置修剪空间 GLfloat fAspect = (float)w / (float)h; gluPerspective(60, fAspect, 1.0, 20.0f); glMatrixMode(GL_MODELVIEW); } //在窗口中绘制图形 void RenderScene(void) { //定义裁剪平面方程系数,这里平面方程为x=0; GLdouble equ[4] = { 1.0, 0.0, 0.0 ,0.
###一、概述
相信Adnroid开发都知道,世界上有四款扫描器,Zxing 、Zbar ,Barcode4J、OkapiBarcode 前二者应用较广泛,至于介绍与区别就在此阐述,网上有很多。此文主要介绍在在使用过程中,官方客户端各种达不到需求。相信很多童鞋都有此体会,所以借此机会就在Zxing 官方客户端基础上修改,去除无用功能并二次封装达到可扩展。
官方客户端目前问题汇总 设置功能多余 竖屏后不能正向扫描条形码 扫描框大小、颜色、扫描线配置不够灵活 无生成二维码、主动识别二维码功能 介于以上问题,于是该库就华丽的诞生 修复竖屏不能正向扫描条形码 可定制扫描框与扫描线样式 加入创建二维码、识别图片中的二维码功能 ###二、效果图
本库地址:https://github.com/mylhyl/Android-Zxing
###三、代码说明
Zxing 核心代码 https://github.com/zxing/zxing/tree/master/core 不作任何修改也不需要修改,只管用就行主要修改客户端代码。你可以自己编译成 jar 或者直接下源码拷到工程,可以参考Zxing编译。也可以到github下载本库,利用gradle编译 如下图双击 makeJar
等待控制出现 BUILD SUCCESSFUL 即编译完成,zxing 工程目录build将出libs目录
精简后的代码,去掉资源文件、扫描历史记录、分享等,目录结构如下
camera 摄像头相关 common 全局静态常量相关 decode 解析二维码相关 encode 生成二维码相关 OnScannerCompletionListener 扫描成功接口 ViewfinderView 扫描预览视图 ScannerView 新增自定义View,包括 ViewfinderView 、SurfaceView,公开一些样式设置方法,具体使用后面介绍 样式定义上来说,其实就在darw方法中,与平时自定义View一样,废话不多说来看一下干货 定义所用的变量
private int laserColor = Scanner.color.VIEWFINDER_LASER;//扫描线颜色 private int laserFrameBoundColor = laserColor;//扫描框4角颜色 private int laserLineTop;// 扫描线最顶端位置 private int laserLineHeight;//扫描线默认高度 private int laserMoveSpeed;// 扫描线默认移动距离px private int laserFrameCornerWidth;//扫描框4角宽 private int laserFrameCornerLength;//扫描框4角高 private int laserLineResId;//扫描线图片资源 private String drawText = "
(1)int 3断点,即cc断点,这是一种基于软中断机制断点,3为中断号。OD中,当你在代码区某行按F2即可实现,其机理是把所在代码的第一个字节保存到一张表上,然后将其修改为CC,当程序运行到此代码时,就会产生中断,从而转至中断服务程序。当你去除断点时,OD会从表里读取出当前断点原来的字节内容。 (2)内存断点,假如你用int 3断点对数据区下断,OD会提示你断点可能不会实现,其实也是必然,程序不可能执行数据区,然而我们却可以当数据被读取或写入时进行下断,这种原理主要基于内存属性,当下读写断点是,OD会修改断点处读写属性,如果程序对此数据读写的话,会产生读写异常,OD捕捉此异常并分析,其可以知道运行到何处,对代码段也可以下此断点,机理相似。
(3)硬件断点,这是由硬件实现(这里是CPU实现),其由CPU调试器实现,断点长度有限,其只用两位记录断点长度,所以只支持4个硬件断点,调试寄存器中有3位表示断点状态及属性,000 保留 001 执行断点 010 访问断点 011 写入断点 100 保留 101 临时断点 110 保留 111 保留
0x1 msi安装方法 0x11下载mysql软件 到mysql官网下载最新的mysql版本 下载地址:https://www.mysql.com/downloads/ 下载完成后,双击mysql-installer-community-5.7.13.0.msi进行安装,一路下一步,安装好就行,中间有个配置root密码的地方,记得设置一个比较安全的密码。
0x12配置mysql的root账户远程登陆 最新版本的mysql的配置文件my.ini中已经没有bindaddress这个选项,如果有的话,将其值改为0.0.0.0 my.ini的路径:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
打开路径C:\Program Files\MySQL\MySQL Server 5.7\bin,不选中任何文件,然后右击–>在此处打开命令窗口 输入mysql -uroot -p,直接回车,不用输入密码 然后输入下面语句,给root@%赋予全部权限,%是任意ip的意思,123456是数据库的密码
mysql> Grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; 然后输入下面语句来刷新
mysql> flush privileges; 0x2 mysql5.6绿化版安装 0x21下载绿色版的mysql并进行配置 下载该文件,解压到指定地方,例如D:\elk 将D:\elk\mysql-5.6.31-winx64\bin添加到环境变量的path中 将D:\elk\mysql-5.6.31-winx64下的my-default.ini文件重命名为my.ini 并编辑my.ini,填上basedir和datadir的路径和port的值,如下图所示 以管理员权限打开cmd窗口,切换到D:\elk\mysql-5.6.31-winx64\bin路径下,执行命令安装mysql服务
mysqld -install 安装成功后,使用下面命令启动mysql
net start mysql 0x22配置root账户的密码和远程登陆 打开cmd 登陆mysql,输入如下命令
mysql -uroot -p 提示输入密码,直接回车就好 给root账号添加密码
update user set authentication_string=PASSWORD('123456') where user='root'; 修改root账户的管辖的范围
update user set host='%' where user='root' and host='localhost'; 重启下mysql服务就好了
爬虫第一弹:利用Scrapy爬取1905电影网
啊啊啊!!!!写完没保存!!!!还得重新写一遍!!!!!好气啊!!!!!!
前言 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。 因此现在有很多网站都是用Ajax进行前后端数据交互的。
然而正是因为很多网站使用Ajax导致网络爬虫无法跟进。 这时就需要我们针对不同的网站定制爬虫。
AcFun 评论数据传输分析 页面分析 首先测试爬去使用Ajax传输数据的网站的效果,我们以AcFun视频为例。
打开页面http://www.acfun.tv/v/ac2860882,下图所示是当前页面是直接在浏览器打开的效果,可以看到红色框内的就是当前页面的评论。
下图是通过爬虫爬去该网页的结果,可以看到红色框内并没有评论,因为当前评论没有传过来。 寻找数据 我们现在利用Chrome浏览器的Developer Tools寻找数据。 打开原页面,在当前页面上邮件选择检查,进入到Developer Tools后选择Network。在Network中选择XHR(数据),再刷新当前页面,从左侧列表中寻找评论数据(注意:数据需要从右侧栏需选择Preview栏才可以看到) 构建评论url 我们发现评论是通过comment_list_json.aspx页面发送过来的。 这时我们点开该页面的Query String Parameters查看参数
这个json请求一共有两个参数,且其含义也不难理解
contentId(2860882):当前页面编号,与当前页面URL(http://www.acfun.tv/v/ac2860882)相同 currentPage(1):评论页号 于是这个json请求的url如下所示: http://www.acfun.tv/comment_list_json.aspx?contentId=%1¤tPage=%2
得知url的形式后就可以开始写爬虫了!
程序 理论上所有图灵完备的语言都可以写爬虫,但为了效率与保持心情愉悦我推荐用Python。
我平时喜欢用Scrapy或urllib2写,Scrapy适合中到大规模且爬取逻辑简单的爬虫,如果遇到非常复杂或者是非常简单的爬虫,那么就需要用urllib2定制了,想学Scrapy可以看我的爬虫第一弹
本文致力于一切从简的思想,使用urllib2写一个小的Demo.
#encoding=utf-8 import urllib2 import json def get_page(url): try: timeout = 5 request = urllib2.Request(url) #伪装HTTP请求 request.add_header('User-agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36') request.add_header('connection','keep-alive') request.add_header('referer', url) # request.
问题 更新了Tor之后,关闭后再次连接遇到问题。Windows x64,用的meek-amazon网桥。 查看日志,有如下描述
[NOTICE] DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections. 原因 DisableNetwork is set. 意思大概是当前网络的监管和限制太大,Tor的连接被阻塞掉了。 分析得知,很可能是因为当前防火墙或者带有防火墙功能的杀软对网络的监控太大;或者网络管理员的严格网络设置有关系。
解决方法
1.暂时关闭当前的网络防火墙或杀软;关闭Tor后再重新启动Tor. 2.如果上条不起作用的话,换用obfs4网桥或直连试试. 3.如果还不行的话,仔细查看Tor的错误日志,考虑其他原因。 我将自己的防火墙暂时关闭,再启动Tor就可以连接了。
当我们发送TCP包的时候你是一个一个发的,但是当你接收的时候就可能会一下收到多个包,为了防止少接收包,我是用这种方法的: 首先包的前2个字节声明了这个包后面的数据大小。
void TcpClientSocket::OnReceiveMessage() { QDataStream in(this); in.setVersion(QDataStream::Qt_5_5); while(bytesAvailable()>=sizeof(quint16)){ if(blockSize==0) in>>blockSize; if(bytesAvailable()break; TranslateMessage(); blockSize=0; } } 上面这段代码是我在Qt下写的。 blockSize 是包的数据大小(不包括2字节的数据大小声明) 当数据缓存大于等于2个字节(就是起码可以读到数据声明)时,就进行数据读取。如果blockSize = 0 ,说明这是一个新的数据包,然后首先读取包的大小到blockSize, 然后接下来就是等待缓存大于等于blockSize,然后进行读取 解析数据.