for

绘制SVG内容到Canvas的HTML5应用

十年热恋 提交于 2019-12-05 07:33:49
SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术,两种绘制图形方式各有优缺点,但两者并非水火不容,尤其是SVG内容可直接绘制在Canvas上的功能,使得两者可以完美的融合在一起,让Canvas可享用到现有丰富的SVG素材,并不失SVG矢量无级缩放的特点。 《 基于HTML5的Drag and Drop生成图片Base64信息 》这篇虽然展示的是拖拽普通栅格图片的效果,但你也可以直接拖拽SVG格式的图片进行显示,只不过普通图片的格式数据为data:image/png类型,而SVG格式的数据类型为data:image/svg+xml的类型,下图为该 HT for Web 拓扑图拖拽入SVG格式图片的运行效果: 以下一段小例子,展示了加载一个SVG图片后,分为七个基本进行缩放绘制的效果,可看出Canvas绘制SVG可保持其矢量不失真的特性 function draw(){ var img = new Image(); img.src = 'chart.svg'; document.body.appendChild(img); img.onload = function(){ var canvas = document.getElementById('canvas'); var g = canvas.getContext('2d'); var width = img

SELECT ... FOR UPDATE

倖福魔咒の 提交于 2019-12-04 07:17:33
MySQL 使用SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式: SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE 这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行。而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update 同一个表单时很容易造成死锁 。 简单的说,如果SELECT 后面若要UPDATE 同一个表单,最好使用SELECT ... UPDATE。 举个例子: 假设商品表单products 内有一个存放商品数量的quantity ,在订单成立之前必须先确定quantity 商品数量是否足够(quantity>0) ,然后才把数量更新为1。 不安全的做法: SELECT quantity FROM products WHERE id=3; UPDATE products SET quantity = 1 WHERE id=3; 为什么不安全呢? 少量的状况下或许不会有问题,但是大量的数据存取「铁定」会出问题。

在windows下使用OpenSSH(上)

牧云@^-^@ 提交于 2019-12-03 15:07:10
SSH与OpenSSH 传统的网络服务程序,如 :ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据 。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。 SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。 最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。 SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的

HTML5矢量实现文件上传进度条

和自甴很熟 提交于 2019-12-03 05:01:47
在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传、上传成功了没有,所以今天给大家介绍的内容是通过 HT for Web 矢量来实现HTML5文件上传进度条,矢量在《 矢量Chart图表嵌入HTML5网络拓扑图的应用 》一文中已经讲述了关于setCompType()方法的应用,今天我们用setImage()方法充分利用系统中定义好的矢量资源来实现文件上传进度条,我们先来看下效果图: 从效果图可以看到,向服务器上传了一个mp4文件,并在最下方显示当前上传进度。 那么接下来我们就来探讨下具体实现: 首先,我们来分析下进度条的结构: 1. 需要一个背景,background 2. 需要一个当前进度值,value 3. 需要一个前景,foreground,根据当前进度值,绘制前景,盖过背景 结构就这么简单,那么接下来就是具体的实现了,看码: ht.Default.setImage('progress', { width : 150, height : 12, comps : [ // 绘制背景 { type : 'rect', rect : {x : 0, y : 0, width : 115, height : 12}, background : {func : function(data) {return data.a(

基于HT for Web矢量实现HTML5文件上传进度条

余生长醉 提交于 2019-12-03 05:01:34
在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传、上传成功了没有,所以今天给大家介绍的内容是通过 HT for Web 矢量来实现HTML5文件上传进度条,矢量在《 矢量Chart图表嵌入HTML5网络拓扑图的应用 》一文中已经讲述了关于setCompType()方法的应用,今天我们用setImage()方法充分利用系统中定义好的矢量资源来实现文件上传进度条,我们先来看下效果图: 从效果图可以看到,向服务器上传了一个mp4文件,并在最下方显示当前上传进度。 那么接下来我们就来探讨下具体实现: 首先,我们来分析下进度条的结构: 1. 需要一个背景,background 2. 需要一个当前进度值,value 3. 需要一个前景,foreground,根据当前进度值,绘制前景,盖过背景 结构就这么简单,那么接下来就是具体的实现了,看码: ht.Default.setImage('progress', { width : 150, height : 12, comps : [ // 绘制背景 { type : 'rect', rect : {x : 0, y : 0, width : 115, height : 12}, background : {func : function(data) {return data.a(

MySQL 使用SELECT ... FOR UPDATE

假装没事ソ 提交于 2019-12-03 04:52:17
MySQL 使用SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式: SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE 这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行。而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update 同一个表单时很容易造成死锁 。 简单的说,如果SELECT 后面若要UPDATE 同一个表单,最好使用SELECT ... UPDATE。 举个例子: 假设商品表单products 内有一个存放商品数量的quantity ,在订单成立之前必须先确定quantity 商品数量是否足够(quantity>0) ,然后才把数量更新为1。 不安全的做法: SELECT quantity FROM products WHERE id=3; UPDATE products SET quantity = 1 WHERE id=3; 为什么不安全呢? 少量的状况下或许不会有问题,但是大量的数据存取「铁定」会出问题。

第十章 Scala 容器基础(十):使用for循环来遍历一个集合

孤街醉人 提交于 2019-12-03 04:14:04
Problem 我想使用for循环来遍历容器的所有元素,或者通过for yield来创建一个新的集合。 Solution 你可以使用for循环遍历所有的Traversable类型(基本上所有的sequency都可以): scala> val fruits = Traversable("apple", "banana", "orange") fruits: Traversable[String] = List(apple, banana, orange) scala> for (f <- fruits) println(f) apple banana orange scala> for (f <- fruits) println(f.toUpperCase) APPLE BANANA ORANGE 如果你的循环体代码很长,那么你同样可以像正常使用for循环一样,执行多行的代码块: scala> for (f <- fruits) { | val s = f.toUpperCase | println(s) | } APPLE BANANA ORANGE 使用一个计数器当作下标来访问一个集合: scala> val fruits = IndexedSeq("apple", "banana", "orange") fruits: IndexedSeq[String] = Vector

怎么实现ABBYY FineReader Pro for Mac的快速激活

99封情书 提交于 2019-11-30 14:50:29
  ABBYY FineReader Pro for Mac是一款OCR文字识别软件,专为使用苹果电脑的个人用户以及小到中等规模的企业量身定做,为各种各样的任务提供了全面的解决方案,可快速方便地将扫 描纸质文档、PDF文件和数码相机图像转换为可编辑、可搜索的文档,支持189种识别语言,再也不需要手动重新输入或格式化了,那么拥有这样一款优秀软 件,该怎么激活以便更好地使用呢?   注意:如果从Mac App购买了软件,则无需激活。   要激活ABBYY FineReader Pro for Mac,需要提供购买软件时收到的序列号,序列号会连同正式版下载链接一起通过邮件发送到购买软件时预留的邮箱里。   没激活软件之前,打开软件会出现以下提示:   激活ABBYY FineReader Pro for Mac:   直接点击激活按钮,进入FineReader Pro激活界面,输入正版序列号,点击激活。   按照激活向导一步步进行操作,ABBYY FineReader Pro for Mac激活过程是不是很简单?不妨试试吧。   关于 ABBYY FineReader 12 的更多内容,大家可前往ABBYY中文网了解相关信息。 来源: oschina 链接: https://my.oschina.net/u/2459783/blog/673257

该如何用好Automator中的文件夹操作

笑着哭i 提交于 2019-11-30 07:33:36
  ABBYY FineReader Pro for Mac是一款 OCR文字识别软件 ,专为苹果电脑用户量身定做,能够快速方便地将扫描纸质文档、PDF文件和数码相机的图像转换成可编辑、可搜索的文本,前面详细介绍过Mac版ABBYY FineReader如何在Automator应用程序中自动化任务并创建工作流程,今天具体给大家讲讲Automator中的文件夹操作工作流程,方便大家更好地理解这一概念。    文件夹操作工作流程   工作流程的目的:从截屏中提取文本。   操作方法:创建一个工作流程,自动处理截屏(这个截屏是通过Grab应用程序获取的,并且放在特定的文件夹里)。   Grab应用程序制作截屏有以下两种快捷方式:   1、Command+Shift+3,捕捉整个屏幕;   2、Command+Shift+4,捕捉选定区域。   默认情况下,截屏会自动保存到桌面上,但我们需要将它们保存到文件夹中,这样我们的工作流程才能处理这些截屏,完成以下步骤,更改Grab应用程序保存截屏的目录:   ?创建一个新的文件夹。在这个示例中,我们将这个文件夹称为Screenshots(截屏), 你也可以用你喜欢的任何名称。   为简单起见,我们将该文件夹放在桌面上,也可以在任何地方创建。   ?在Terminal(终端)应用程序中执行以下命令:   defaults write com

android ant Compile failed; see the compiler error

99封情书 提交于 2019-11-30 04:04:16
android ant 打包遇到 Compile failed; see the compiler error output for details. 1.把jdk换成jdk1.7 就能看到中文的错误信息,不然有的地方是乱码都看不懂。。。 2.如果遇到 错误: 非法字符: \65279( 在eclipse 中修改提示有非法字符的java文件的编码为:ISO-8859-1 就 看到java文件的开头有些乱码 ,删除即可 .修改完之后,把文件的编码改回utf-8 保存)其他问题就看错误信息修改吧 没错误了 用ant打包即可 来源: oschina 链接: https://my.oschina.net/u/267558/blog/209034