H5端js触发input file权限问题和图片选择预览

近日复习熟悉前端知识,发现一件事情很有趣。

页面隐藏input file,然后用js来触发,10年前在PC页面就开始用了,不算新知识,但ios会没响应,查找资料发现这样操作是个安全问题,官方是不推荐的,后来在网上看到一个巧妙的解决方式,为input file增加一个label,如<label for=”input1″/>用js触发这个label的事件来激活input file。

 

另一件事,是input选择完后,用jqueryupload上传成功了,但页面的image.src修改为服务器端地址后,会很长时间才加载,5秒以上,查找网上资料,发现这段代码简直是神级代码:
function readURL(input) {

if (input.files && input.files[0]) {
var reader = new FileReader();

reader.onload = function (e) {
$(‘#blah’).attr(‘src’, e.target.result);
}

reader.readAsDataURL(input.files[0]);
}
}

$(“#imgInp”).change(function(){
readURL(this);
});
对应的HTML:


your image

用了这段代码之后,加载迅速。。。
代码原帖地址:https://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded

Debian 8 升级Debian 9后记:妥善解决MySQL的升级

之前在对博客虚机升级系统后,写了一篇升级指引:debian 8 Jessie升级到debian 9 stretch指引 。

里面提到Debian 8 升级到Debian 9 时,会未经提示,直接把Mysql 5.5升级到MariaDB 10.x,然后导致数据库最终无法启动,应用全部陷入瘫痪 8O

这让我一度怀疑,Debian还要不要继续用下去,怎么会有如此糟糕的体验?仿佛自从Debian 的创始人Ian Murdock去世以后,接手的人就开始瞎搞了 :(

今天在MysqlRelease上看到相关的文章,也说到这个情况:

Debian 9有一个意想不到的,迟来的变化可能会导致那些从Debian 8直接升级到9的MySQL用户的MySQL运行失败,并被其他东西(MariaDB)所替代。 所以要注意的是,如果你想保留在MySQL上,而不是冒险升级,在升级之前可能需要采取一些额外的步骤。

下面,我们将介绍一些最常见的情况,即在Debian 8上安装了MySQL,并且您想升级到Debian 9并继续运行MySQL。

首先,如果你是从MySQL官方仓库repo.mysql.com的安装MySQL, 不用担心,你的MySQL不会被Debian自动升级。

但是,如果你是从Debian自己的软件包安装的MySQL,然后继续升级到Debian 9的话,Debian会自动卸载MySQL,并强制将其替换为不兼容的MariaDB 10.x,而不会提示和警告。 要继续使用MySQL,你应该从Debian 8本地MySQL(5.5)包升级到Mysql的官方版本(5.6或更高版本)的包。 总的来说,这是可行的,原因有几个,其中包括所有的GA和MySQL的早期发行版本,以及各种MySQL客户端,工具和实用程序,在MYSQL官方仓库都是随时可用的,并且完全是最新的官方版本。

现在,按下面步骤操作:

  • 启用https://dev.mysql.com/downloads/repo/apt/中所述的官方MySQL软件包仓库。 现在我们建议选择升级到MySQL 5.7,这是在最新的MySQL的版本,与Debian 8自带的MySQL5.5相比,包含了大量新功能和优化 ; 而5.6也是一个备选的替代方案。
  • 切换到官方的MySQL仓库后运行apt-get update和apt-get dist-upgrade来升级。
  • 继续操作升级到Debian9,在/etc/apt/sources.list和/etc/apt/sources.list.d/mysql.list替换“stretch”的所有“jessie”,然后…
    运行apt-get update和apt-get dist-upgrade 。
  • 最终的结果就升级到Debian 9了,并且你的MySQL安装完好无损。

 

 

芽庄自由行DAY 3

day3.

今天去了龙山寺。

猫头鹰上说不让中国人进,和导游沟通后结果是,中国的旅游团进去很随便很吵,乱丢垃圾,所以不让。个人去没关系。

打车过去果然没拦,给了个围裙系上进去了。

看到小孩子在组织学习佛法,

从小有信仰是最好的,

在国内一定是组织纪念XX周年。

今天去只是路过,也没有什么可求的,因为如果到时候成真还愿有点麻烦。然后我和佛祖说,你好我好大家好就完了,不许愿了。


看到树下有个弥勒佛,可以有些碎了

然后下山返回,打不到车。索性走回去。路上又遇到乌云压顶,电闪雷鸣的,于是又走进一个教堂里避雨。


我和玛利亚说啊,你们念啥我也听不懂,都是越南语,我就进来避避雨,这没啥吧?

坐了半天居然没下雨,继续走,到highlands要了杯美式,应该是越南的星巴克?居然给了个叫号器,做好了会振动以提示去自取,好高级!


跑马灯加振动,屌爆了!

Java XSS过滤

 

Atom 安装插件失败的解决方案

Atom 安装插件失败的解决方案

如果能到墙外面去看看的,下面的对你没有太多的作用

我们在第一次使用Atom的时候避免不要需要安装一下有助于敲代码的插件比如

  1. emmet
  2. minimap这个插件用过sublime的同学肯定不会陌生的。代码地图。
  3. linter这货默认可以识别多门语言的错误,但是不细致,属于主插件,可以针对性的安装更细致的检查插件,下面是可能用到的:linter-phplinter-jshintlinter-scss-lintlinter-lesslinter-csslint著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  4. file-icons这个插件可以对不同类型的文件显示不同的文件图标,包含在目录树里面和标签页里面都会显示。
  5. docblockr这个插件可以帮助你快速的生成注释,很多高级的编辑器都有这个功能,Atom怎么能少呢?
  6. autoclose-html自动闭合html标签,很实用的功能,可以节省很多的时间。
  7. highlight-line高亮当前行,快速找到光标在什么地方。
  8. highlight-selected 高亮当前所选文字,双击后全文这个词或者变量都会高亮哦
  9. simplified-chinese-menu Atom 的简体中文汉化语言包,目前最全的汉化包。包含菜单汉化、右键菜单汉化以及设置汉化。

以上就是一下常用的插件,这里面只是一些前端用的比较多的插件。但是对于一个刚刚接触这个编译器的人来说这些安装这些插件就是一项不小的工程。

虽然在软件内有自带的安装步骤file-->setting-->install然后输入需要的插件名就能搜索到对应的插件,然后点击install即可。以上是正常的安装步骤。

但是在我们安装的时候在某些情况下就会出现安装失败的情况,或者等待很长时间的也没有安装成功。

####安装失败   如果出现安装失败,有可能是你没有安装相关软件,(我在安装的时候没有出现这种情况)但是经过百度以后(屌丝一枚没有实力google)安装Atom插件需要安装node.js软件, 但是网上有人说需要安装python,但是我感觉这个不需要因为我安装的时候只安装了node.js。当然这还是没有结束,还需要设置node.js npm的国内镜像。如何切换将在说完使用命令行安装以后再说。

####使用命令行安装失败

安装方法使用cmd进入系统个人目录下C:\Users\你电脑用户名\.atom\packages下然后进入你下载的插件包里面。不推荐使用apm install https://github.com/xxxxx/xxxx.git这种安装方式,因为在我安装的时候现在及其慢。然后再对应的插件包目录下面使用apm install回车即可。之后就会出现各种情况。

  1. 如果是报错就是没有安装相关的软件环境,安装软件就是node.js
  2. 如果在回车之后等待许久也没有反应那么,就带修改安装源为国内源的时候了。因为在安装的时候虽然不需要下载,但是还是需要联网验证一下的(这是我猜测的)

####切换为国内镜像   因为apm是node.js里面的npm的一个分支,所以在要保证在切换之前已经安装node.js而且环境变量已经配置结束(不会请百度吧)。

NPM国内镜像

  1. http://npm.hacknodejs.com/
  2. http://registry.npmjs.vitecho.com/
  3. https://registry.npm.taobao.org

永久使用镜像命令: npm config set registry https://registry.npm.taobao.org
临时使用镜像命令:npm --registry "http://npm.hacknodejs.com/" install underscore

以上切换那个元都行。

然后重复以上的安装方法即可,但是还有在安装的时候在有些时候是需要修改你下载的插件包的文件名的,通过git clone 获取的文件有时候会多一些文字需要去掉。(我安装中遇到的坑)

最后以上是我安装Atom的步骤以及一些解决办法 ​

原文链接:http://blog.lll0.net/post/atom_install_fail.html

在debian上安装go lang 1.8

 

SOA和微服务(microservice)有什么区别?

这些天,在工作场所或技术讲座上有关于Microservices的大量讨论。 如果您之前曾经与SOA合作,您可能会想知道SOA与微服务之间有什么区别。 以下是两种架构的详细比较。

SOA

面向服务的架构是一种软件架构模式,哪些应用程序组件通过网络通过通信协议向其他组件提供服务。 该通信可以涉及简单的数据传递,或者可以涉及两个或更多个协调彼此连接服务的服务。 服务(如RESTful Web服务)执行一些小功能,例如验证订单,激活帐户或提供购物车服务。

在SOA,服务提供商和服务消费者中有两个主要角色。 软件代理可以扮演两个角色。 消费者层是消费者(人类用户,其他服务或第三方)与SOA进行交互的关键点,而提供者层由SOA中定义的所有服务组成。 下图显示了SOA架构的快速浏览。

图1:SOA架构

企业服务总线 (ESB)是集成架构的一种风格,允许通过公共通信总线进行通信,该通信总线由提供商和消费者之间的各种点对点连接组成。 除了上述之外,数据存储在SOA中的所有服务中共享。

现在,我们来看看Microservices架构,然后将它们进行比较。

微服务架构

Microservices是一种软件架构模式,其中复杂应用程序由小而独立的进程组成,使用语言无关的API进行通信。

微服务必须是系统架构的真正需求,因为它可能被错误地设计。 这意味着服务应该是可以独立部署的,或者在系统中不需要时可以关闭服务,并且不应该对其他服务产生任何影响。 下图显示了Microservices架构的快速浏览。

图2:微服务架构

如上所示,每个服务都有自己的数据库,或者数据库在几个微服务器之间共享。

微服务架构与SOA

如上所述,两种架构具有相似的优缺点和一些差异。 在这两种架构中,每个服务 – 不像单片架构 – 都有一定的责任。 因此,可以在各种技术层面开发服务,这将技术多样性带入开发团队。 服务的开发可以组织在多个团队中,但是每个团队都需要了解SOA中的通用通信机制。

在微服务中,与SOA不同,服务可以独立于其他服务进行操作和部署。 因此,更容易经常部署新版本的服务或独立扩展服务。

在SOA中,ESB可能会成为影响整个应用程序的单点故障。 由于每个服务都通过ESB进行通信,如果其中一个服务减慢,可能导致ESB被该服务请求阻塞。 另一方面,微服务在容错方面要好得多。 例如,如果在一个微服务器中存在内存泄漏,那么只有该微服务器将受到影响。 其他微服务将继续处理请求。

在这两种架构中,开发人员必须处理架构和分布式系统的复杂性。 开发人员必须实现微服务之间的服务间通信机制(如果消息队列在微服务架构中使用)或ESB和服务中。

单元测试   开发人员在测试中必须模拟通信机制,这是更困难的。 由于许多不同的服务类型,部署和操作复杂性在两种体系结构中都是一个问题。

在SOA中,服务共享数据存储(如图1所示),而每个服务可以在微服务中具有独立的数据存储。 共享数据存储有其优缺点。 例如,数据可以在所有服务之间重新使用,同时它在服务中带来依赖性和紧密耦合。

最后但并非最不重要的是,SOA与微服务的主要区别在于规模和范围。 Microservice必须明显小于SOA趋于成为,而且主要是小型(呃)独立部署的服务。 另一方面,SOA可以是整体,也可以由多个微服务组成。

图3:SOA和微服务

同样重要的是,SOA已经以各种样式设计和实现,这可能与此处描述的不同,通常是由于专注于用于集成单片应用程序的ESB。

 

原文地址:https://dzone.com/articles/microservices-vs-soa-2

debian 8 Jessie升级到debian 9 stretch指引

debian 9上个月发布了,代码stretch。

离发布 debian 8 有2年时间,变化很大

下面列一下升级步骤及遇到的坑。

首先更新现有版本,把jessie版本更新到最新:

备份apt源:

使用sed命令更新sources.list文件,把jessie全部替换为stretch:

更新新版本的源,开始升级:

执行完以后就是stretch版本了,重启,搞定。

 

===== 千年坑 ===========

原先是卸载了iptables的,使用ufw很方便,升级完以后iptables又回来了,需要卸掉。

升级后shadowsocks起不来了,原因是升级了openssl的类库,解决:

这个错误是由于 openssl 1.1.0 版本废弃了 EVP_CIPHER_CTX_cleanup 造成的。clowwindy 现在也不继续维护源代码了,所以只能自己修改一下。

在 shadowsocks/crypto/openssl.py 中,查找所有 EVP_CIPHER_CTX_cleanup,改成 EVP_CIPHER_CTX_reset 即可

shadowsocks恢复。

 

2017/08/17更新:如果你提前看完我的这篇文章《Debian 8 升级Debian 9后记:妥善解决MySQL的升级》再升级,下面剩下的内容就不用看了,可以成功避免:|。

 

升级后把mysql替换成mariadb了,然后,就瘫痪了。mariadb 5.x和mysql是同步的代码,文件直接拷过去是可以执行的,但debian9带的是mariadb10.1,和mysql不兼容,而且debian 9自带的mariadb版本和官方的配置文件还有出入。很坑,所以升级前千万要备份mysql的数据。重复解决一天都没解决,mariadb还自带脑残限制,如果data目录在/home下是不可以的,网友说明:

这时我发现,如果直接用mysqld_safemysqld命令,跳过systemctl启动进程,能够让MariaDB正常起来,于是就去检查mariadb.service

发现其中有一行

注释是

而我的datadir=/home/mysql

于是把它改成false,就能够正常启动服务了

 

我的解决方式是把之前的mysql卸载删除干净,mariadb也卸载删除干净,从mysql.com官网安装mysql,文件拷贝过去,重启,成功。

勒索病毒(蠕虫WannaCry)预防windows补丁下载

WannaCry(想哭),又叫Wanna Decryptor,一种“蠕虫式”的勒索病毒软件,大小3.3MB,是不法分子利用了美国国家安全局网络武器库中泄漏出的黑客工具。
该恶意软件会扫描电脑上的TCP 445端口(Server Message Block/SMB),以类似于蠕虫病毒的方式传播,攻击主机并加密主机上存储的文件,然后要求以比特币的形式支付赎金。勒索金额为300至600美元。2017年5月14日,
WannaCry 勒索病毒出现了变种:WannaCry 2.0,取消Kill Switch 传播速度或更快。
截止2017年5月15日,WannaCry造成至少有150个国家受到网络攻击,已经影响到金融,能源,医疗等行业,造成严重的危机管理问题。中国部分Window操作系统用户遭受感染,校园网用户首当其冲,受害严重,大量实验室数据和毕业设计被锁定加密。

2017年5月13日微软为已停止服务的XP和部分服务器版操作系统发布了特别补丁,下载地址如下,请广大用户抓紧打补丁:
winxp特别补丁KB4012598
winxp3 32位 Security Update for Windows XP SP3 (KB4012598)
winxp2 64位 Security Update for Windows XP SP2 for x64-based Systems (KB4012598)

 
win2003特别补丁KB4012598
2003SP2 32位 Security Update for Windows Server 2003 (KB4012598)
2003SP2 64位 Security Update for Windows Server 2003 for x64-based Systems (KB4012598)

 

win2008R2补丁 KB4012212、KB4012215
March, 2017 Security Only Quality Update for Windows Server 2008 R2 for x64-based Systems (KB4012212)
March, 2017 Security Monthly Quality Rollup for Windows Server 2008 R2 for x64-based Systems (KB4012215)

 

win7补丁 KB4012212、KB4012215
win7 32位
March, 2017 Security Only Quality Update for Windows 7 (KB4012212)
March, 2017 Security Monthly Quality Rollup for Windows 7 (KB4012215)

win7 64位
March, 2017 Security Only Quality Update for Windows 7 for x64-based Systems (KB4012212)
March, 2017 Security Monthly Quality Rollup for Windows 7 for x64-based Systems (KB4012215)

 

win10 1607补丁 KB4013429
win10 1607 32位
Cumulative Update for Windows 10 Version 1607 (KB4013429)

win10 1607 64位
Cumulative Update for Windows 10 Version 1607 for x64-based Systems (KB4013429)

 

win2012R2补丁 KB4012213、KB4012216
March, 2017 Security Only Quality Update for Windows Server 2012 R2 (KB4012213)
March, 2017 Security Monthly Quality Rollup for Windows Server 2012 R2 (KB4012216)

 

win2016补丁 KB4013429
Cumulative Update for Windows Server 2016 for x64-based Systems (KB4013429)

 

其他版本补丁从这里下载:

https://technet.microsoft.com/zh-cn/library/security/MS17-010

该病毒称为“比特币病毒”是不准确的,因为比特币只是勒索转账途径,类似支付宝。

Nginx 证书部署备注

nginx的配置在版本上是有所区别的。

一个nginx下必须有一个站点在listen端口号时,要标记为default_server,以前要标记default。

后面的ssl则属于必须配置,不然会报错。

在配置HTTPS之后,一般需要将http的也跳过来,今天学到一个窍门,在HTTP的Server段添加一行代码即可,以前都是走301或在.htaccess加重写规则实现的,今天这一行代码加在nginx的站点配置文件中:

主流浏览器现在对非HTTPS的站点访问时会显著标注不安全,所以HTTPS已经是必备的了,不推荐看作可选项。

Apache.common3.time封装类

原文地址:http://blog.csdn.net/u010446936/article/details/53009641

部分代码可借鉴。

logback+ELK搭建

Elasticsearch配置文件(/etc/elasticsearch/elasticsearch.yml)需要配置的部分:

 

 

Logstash配置文件(/etc/logstash/conf.d/logstash.conf):

Kibana配置文件(centos在/opt/kibana/config/kibana.yml)部分配置:

这样ELK就配置完了,需要注意ElasticSearch和Kibana的配置IP,如果不是同一台机器,要配置成外网IP。Kibana是可以公开访问的,如果放外网,需要封一下端口号,用nginx转发的话在nginx上做基本验证。这是我的nginx配置:

passwd.db是用来放置用户名密码的,格式要用unix的格式,一般是让用htpasswd来生成的,如果没有可以用这个网上的工具来加密生成。
格式为:账号:加密后密码

接下来来设置java项目中的logback,pom.xml增加依赖:

接下来在logback的配置文件里设置,logback.xml:

 

以上代码已测试可通。配置过程中遇到以下问题:

1、用插件后logback的日志会以json格式推送,这是需要配置的,不然收不到日志消息;

2、elasticsearch的文件夹是需要权限的,没权限会影响启动;

 

ELK已经是成熟的日志收集工具,logback则可以搭配任意第三方,如直接进elasticsearch,进redis,进mq。

后续会视效果扩容es。

4/19更新:

elasticsearch有提供Api操作,删除最近30天记录的api:

如果没设置username/password,则-u参数可以省略,下面设置在cron里计划任务,每天跑一遍,只保留最近30天的记录(视硬盘大小决定吧):

完成。

Mixing programming with java,scala,maven on Intellij IDEA

base on maven pom setting:

 

this means to tell IDE when compiler scan source files include *.java and *.scala,and the result is can mixing .java file and .scala file to reference together.it’s not support write java and scala in one file.but it’s enough.

2017/1记事 – 港澳行

香港是个法制完善的地方,真正的法治,用法律解释,而不是人来解释。

澳门赌场相当于挨着香港和大陆的一个富士康工厂,吃喝拉撒都有,但只要都是为了赌博。时间匆忙,没到澳门乡下去感受原住民文化。

用照片记录看到的东西吧,不写说明了,太多,懒。

Continue reading “2017/1记事 – 港澳行”

Java Web技术栈汇总整理

后端:
核心框架:Spring Framework
安全框架:Apache Shiro
视图框架:Spring MVC
服务端验证:Hibernate Validator
布局框架:SiteMesh
工作流引擎:Activiti
任务调度:Spring Task
持久层框架:MyBatis
数据库连接池:Alibaba Druid
缓存框架:Ehcache 、Redis、HazelCast
日志管理:SLF4J 、Log4j
工具类:Apache Commons、Jackson 、Xstream 、Dozer 、POI
测试框架:
Gatling 性能测试工具
Cucumber 自动化测试框架
swagger RESTFUL接口的文档在线自动生成+功能测试功能软件
swagger2markup swagger接口文档生成
springfox swagger2markup不支持springMVC,springfox用来封装

前端:
JS框架:jQuery
CSS框架:Twitter Bootstrap
客户端验证:JQuery Validation Plugin
富文本在线编辑:CKEditor
在线文件管理:CKFinder
动态页签:Jerichotab
手机端框架:Jingle
数据表格:jqGrid
对话框:jQuery jBox
下拉选择框:jQuery Select
树结构控件:jQuery zTree
日期控件: My97DatePicker
leaflet 移动端地图js库
formvalidation        表单验证Js控件