xcopy批处理报内存不足的错误

网站备份最近两个月一直都有问题,刚刚才发现,手工run了一遍批处理文件,发现在xcopy到一定时候,报insufficient memory的错误,一开始以为xcopy会把文件放到内存里面,文件多的时候导致耗用内存过度,心想这样的算法也太不严谨了,后来查google才知道,应该是文件路径问题。

具体参考:

http://forums.whirlpool.net.au/archive/2150703

从这两篇文章粗看起来,解决起来还挺烦,因为是涉及源文件的路径长度问题,所以要费一些脑筋。

后来看到官方wiki,才知道xcopy已经正式退休弃用,改由robocopy来代替了。

于是脚本做了修改,一切OK了。

在CentOS中为vsftp 添加新用户的方法

这个不属于很难的操作,这里记录一下:

主要的要点,是很多时候我们只需要一个ftp账号,用来进行ftp登录及特定目录内的文件操作。不需要赋予这个账号其它权限。

第一步,添加用户:

# useradd –d /var/www -g ftp –s /sbin/nologin myftp

说明:

-s /sbin/nologin 是让其不能登陆系统
-d 是指定用户目录为/var/www ,这里可以替换成任何你需要的目录。
-g ftp 把用户加入到ftp组中(vsftp已创建)
myftp是ftp用户名,在配置时把这个myftp换成你的ftp用户名。

第二步,配置vsftp:

修改/etc/vsftpd/vsftpd.conf如下:

chroot_list_enable=YES //限制访问自身目录
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

编辑 chroot_list文件,将受限制的用户添加进去,每个用户名一行

改完配置文件,不要忘记重启vsFTPd服务器
[root@iconben.com root]# /etc/init.d/vsftpd restart

也可以参考这里:

CentOS 安装vsftp 建新用户的方法

在linux中添加ftp用户,并设置相应的权限

解决Windows 7 专业版启动报错

客户电脑,Windows 7 Professional 英文版,突然开机报错,提示windows/system32/config下面的某注册文件打不开,网上搜下来,应该是可以用相应的备份文件恢复的,系统自动备份的位置是 windows/system32/config/regback目录,应该说把对应文件拷过来应该就可以解决。

于是用U盘启动WinPE(系统找不到修复选项,所以就随手用WinPE了),进入系统替换以上所提到的相关文件,然而开机系统仍然报错,报BCD 0xc000000f的错。可能是由于之前用Win7安装盘尝试修复系统的缘故,当时修复中途就报“unable to save startup options”,现在重启硬盘上的系统,报的错误还是启动相关的。于是尝试修复BCD。

于是用安装盘选择修复,进入命令行,一开始用bootrec /RebuildBcd命令,总不成功,报“The requested system device cannot be found”错误,后来查到解决方法如下:

How To Fix Boot/BCD 0xc000000f Error Windows 7

结果又发现错误:Failure when attempting to copy boot files. 查到如下文:

Failure when attempting to copy boot files

原来是需要在bcdboot命令中用/s参数指定boot拷贝的源,在本人实例中,修复安装进入命令行后,看到的系统盘为D:\,也就是windows安装位置为D:\windows,而C:盘是Active的启动分区,所以/s参数后面应该用C:。

总之把用bcdboot命令将BCD重新生成之后,终于能开机了。这时候选择进入最后一次成功开机的配置,系统恢复成功。

在以上过程中间折腾的时候,也曾经运行chkdsk命令扫描修复磁盘,未发现坏道,仅发现两个文件链接的错误,不知道这个是不是导致系统开不起来的根本原因。

[转帖]APP设计相关技巧

作者:郦橙锦妖一只麋鹿
链接:http://www.zhihu.com/question/36813390/answer/87029428
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

— 提纲 —

1. 做app需要图标,我又不会画,怎么办?搜到一些现成的,但质量又不高,怎么办?图标不成套怎么办?

2. 没有审美怎么办?

3. 心里有个app想法,但是线框图画不出来怎么办?

4. iOS那么多尺寸,Android尺寸更吓人,全都要记住吗,导出@1x@2x@3x点九图什么的是不是很麻烦?

5. 说了这么多,还是要我从空白画布上画吗?!没有美术基础啊!当然不是啦~

6. 还有什么问题可以提问哈。

— 正文 —

1. 图标苦手怎么办

就算是设计师,一个一个画图标也是很累的。
这时候,如果有钱,请到选项到A;如果没钱或者不想花钱,请到选项B。

A 如果非常有钱,请直接把钱给我,我把图标给你哈哈哈。如果有一点钱,可以去http://www.shutterstock.com/ 或者 http://www.pixeden.com/ 买,图标站还有很多,先列这两个,反正你们更想看免费的对不对。

http://www.flaticon.com 是你的好朋友,最好的朋友之一。虽然最近突然改版,变得有点难用,但海量,成套,免费,你还图啥?缺点可能是风格比较单一,想要fancy一点的怎么办?smashing magazine帮助你,https://www.smashingmagazine.com/ 只要搜索freebie即可,最早几年的icon质量不太行,也过时了,越是新帖质量越好。

举个栗子,随便点开一个。

可以调大小,可以改颜色,可以调线条粗细,用上这些,是不是b格噌得就上天了!这些都是顶级设计师放出来的免费资源,你花钱雇的设计师未必画得出来。。。

2. 没有审美怎么办?

这个就没有特效药了。据我的观察,没有审美天赋的人,可以判断好看和不好看,但无法判断好看和更好看,这时候如果你有个设计师朋友,请付费或者请吃饭,向他咨询咨询吧。

疗程缓慢的办法有:多看dribbble(eye candy多,但可以了解趋势和审美取向),多用好评和获奖的app,“最美应用”你下载了吗?“豌豆荚设计奖”你看了吗?(@马力请点赞~)每年app store 的盘点你都关注了吗?

3. 构思不好app流程怎么办?

$1 prototype大法,来自一本同名书,我刚看完个开头,所以以下是我根据它的目录和我的经验编的。。。具体就是“场景” – “过程” – “界面”。

先想象用户在什么情况下用,涉及几个用户,他们在干什么。比如,yelp,是用户需要找地方吃饭,所以一般只有一个用户(相对于uber两方用户,群聊n方用户),输入是一些查询条件,输出是在哪儿有饭吃。

现在细化过程,用户从打开app到达到目标,有哪些步骤。还是yelp,一般情况就是打开app,输入查询条件,看到结果,筛选,满意的话查看商家详情,不满意的话可能重新搜索可能更改筛选条件。这是主线剧情,还有些支线剧情,比如看到一个用户的评价很好,查看用户的其他评价,follow用户;还有自己身在餐馆,拍了菜单拍了菜,上传到yelp。把所有的剧情,都在流程图上画出来。

期间可能会遇到一些细节。用户先输入什么呢,是餐厅类型,还是只要能吃就可以?距离这个信息是gps给还是用户自己输,或者其实距离无所谓,反正用户有车呢?价格是什么时候出现?是搜索的时候就限定价格,还是结果出来以后再筛选?这些都不怕,反正也是要改的。。。而且一般自己想做的app也没有这么复杂。

你有一个流程图了,界面就简单了。把元素往界面上摆一摆,推荐用手机大小的便利贴,拿铅笔画上去,有很多东西玩app多了都有经验,搜索结果是啥,不就map view和list view么,怎么筛选,放一个漏斗icon在标题栏里呗,酱酱酿酿就好了。接下来就是把亲朋好友拉过来,让他们玩一下这个paper prototype,发现不对的地方再改。

有两个软件推荐,一个https://popapp.in 好久不用,希望它还是免费的。一个https://marvelapp.com 免费无限量project,真良心,我一直期待它被adobe收购,结果adobe既没有收它,也没有invision,而是准备自己做一个comet。。。真傲娇。

4. 尺寸记不住怎么办?

就不要用ps了,sketch做为生产力工具,真的不贵,都不是按月按年subscribe的,一次买一生,有什么舍不得的,买吧。以后用它直接新建画板,就不用记住那么多尺寸了,导出图片也特别方便,ps切图再见。

5. 面对空白画布下不去手怎么办?

前面提到了invision,这家公司的marketing很牛,设计也很牛,市场部为了宣传他们的产品,让设计师做了很多的高质量免费模版给其他设计师下载。

举个栗子。

再举一个。

这些全是一整套,一整套啊,意味着登陆界面,dashboard,阅读文章的界面,购物车,天气,聊天对话各种界面都很可能有。格式一般都有ps,sketch两种,有时有ai,和设计师打包给你的成品差距不大,你可能需要一个切图仔,或者自己来。

这些不够怎么办?
http://graphicburger.com

http://freebiesbug.com/psd-freebies/ui-kits/

https://ui8.net/categories/freebies

这样总行了吧。

6. 其他问题。

应该没有其他问题了吧。

微信网页音频播放遇到的坑(referer防盗链)

最近做微信网页开发,遇到音频问题。方案是在微信网页中,判断用户有收听权限的情况下,让他可以播放音频。在HTML中用了audio标签,用少量js代码控制播放。mp3文件来源是托管在阿里云cdn上面的。

昨天上午刚刚把cdn部署好,测试访问没问题。昨天晚上将带有音频播放功能的网页给用户开放,结果很多用户反应打开不了。明明自己在安卓、苹果上面都测试过了,怎么回事呢。一开始以为是mp3文件的比特率问题。到最后发现不是,后来抱着试试看的心理,清除了cdn里面的防盗链设置

<后续内容遗失>

阿里云CDN使用初探

CDN的基本原理,实际上是将某“加速域名”用CName解析到阿里云的DNS调度服务器,然后再只能分配到离访问用户最近的CDN节点。

加速域名就是你希望最终用户访问的域名,当然是希望该域名下的内容是经过了CDN加速的。

阿里云CDN节点事先没有你网站要提供的文件的,那么加速域名下的内容从何而来,就需要有一个源站,顾名思义,即内容的来源的意思。

举例来说,你希望网站 http://www.anrrzh.com 的所有内容都经过加速,那么就配置加速域名为该域名,而源站的配置方式上,有一个比较tricky的地方,是不管你设置为域名还是ip,都会解析成ip地址访问回去.

这里就涉及到一个很有意思的问题,在阿里云CDN文档中也并没有表述清楚的。那就是回源的请求虽然能以ip地址命中目标机器,但其访问的host信息,其实是可以配置的。源站设成某个域名,回源请求肯定会发回该域名指向的ip,但访问的http头信息中host未必为这个域名。在阿里云cdn管理控制台,还有回源host这项设置,可以指定回源请求以什么host访问。

这一点之所以重要,是因为事关源站服务器的解析,尤其是当源站涉及多站点虚拟主机的配置的时候。源站服务器上,也需要配置回源host所指定域名相应的虚拟主机的解析。

关于数据库主键设计

最近要做一些系统的开发,说实话也是有些年没有在一线工作了,动手的激情和乐趣感觉慢慢的回来了。

系统是一个与微信公众平台有交互的课程系统。由于既要支持微信用户登录,又要支持其他注册登录方式,因此要自己设计会员系统。在做数据库设计的时候,一开始像多年前一样,第一反应是给每张表一个自增长数字id作为唯一标识。但总觉得哪里不太妥。于是决定重新思考这个以前认为是最佳实践的原则,参考了一些文档,得出如下结论:

1,自增长需要等待返回值才能知道主键的具体值,对于多表关联的情况,需要等主键生成后再插入该值到关联表中作为外键,程序逻辑变成了两步插入,不太方便。因此主键最好能预先赋值;(本例中会员ID要更新到微信openid与会员关系的映射表)

2,多系统数据库整合的时候,如果大家都是用自增长,那么很难保证唯一性,当值冲突的时候很麻烦。因此主键最好全局(全世界)唯一;(本例中要考虑未来与第三方的开源微信系统如weiphp或者we7等整合)

3,要满足以上要求,多半需要字符串型字段作为主键;

4,要考虑索引性能;

5,是否要考虑后生成的主键值要比之前的大,还需要再考虑。

基本确定采用字符串型的主键,能预先赋值,且能保证全局唯一性,兼顾性能。暂定GUID方案。

其实在考虑以上问题之前还有一个先确定用业务字段还是非业务字段做主键的问题。如果是选择了非业务字段做主键,再考虑主键的生成方案。其实关于用业务字段还是无意义的非业务字段做主键也有很多争论,其中有一个观点认为:非业务字段做主键也是有缺点的,很多查询语句会变得复杂很多。我是挺同意的。当然业务字段做主键则需要放置业务规则发生变化。

本例中的用户ID字段,属于本系统新增的内容,其对应的业务字段来源有多种,除了微信用户openid可能还有其他第三方的用户标识,不能保证唯一性且不排除有变化的可能,所以只能选择非业务字段。从而才有了上面的选择该字段生成方式的问题。

请参考:

博客:数据库主键的设计和思考

知乎:使用自增主键是否总是最佳实践?

segmentfault: 在数据库设计中,无论如何也该设计一个自增ID字段作为主键吗?

用PHP开发微信应用遇到的坑

最近因为业务需要,尝试着做了一些基于微信公众平台的开发。考虑到主要是网站应用和轻度电商,业务逻辑不复杂,加上看到开源php的东西比较多,于是决定基于php进行开发。
以前基本没怎么研究过php,因此做了如下工作:
安装试用weiphp
安装试用微擎
学习使用thinkphp

遇到问题及解决如下:

PHP方面的:

empty() 只检测变量,检测任何非变量的东西都将导致解析错误。

Thinkphp框架中Model的save()方法,成功时候的返回值并不是数据对象本身,目测是成功的记录条数。

JSON对象要decode成为数组以后,再放入session,取出来的时候方便使用。php还是跟数组配合更好。

foreach语句中,如果要修改所遍历数组的值,则应该用&符号进行引用。

微信方面的:

网页授权的时机选择,如果是在某业务(某方法)中途进行身份验证再去要求网页授权,由于网页授权是回调的方式,因此每个页面(控制器->方法)的逻辑即可能是通过微信回调后在调用的,也可能是还没有微信授权的时候调用的。这样的界面逻辑会比较复杂,容易混乱。因此最后统一成,除非是不需要身份验证的页面,否则一律先要求网页授权再说。

微信内置浏览器/手机浏览器方面的:

注意javascript与html标签在文档中出现的顺序问题,有时候在脚本中用选择器取不到页面元素的值的时候,可能就是这个问题。

音频在部分手机上死活不能播放,哪怕手动点播放按钮也不成。发现跟比特率有关系,128KHz就遇到这样的问题,转成96KHz就好了。

静态页面缓存的问题。有的页面根据业务逻辑会呈现不同的内容,但微信浏览器的缓存会导致最新的业务状态没法体现,显示的还是上一个状态的页面。解决办法是在Header中加入如下信息:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

[转载]这些小工具让你的 Android 开发更高效

本文为作者「Tikitoo」投稿,应该多少受我点影响,Tikitoo也是一位自学的Android工程师,并且完全通过自学找到一份还不错的工作。互联网爱好者,并且是简书专题的运营者,点击「阅读原文」可以跳转到作者的博客。

在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效。

1. Vysor

Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用。

2. Vector Asset

Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset;它可以帮助你在Android 项目中添加Material Icon 和SVG 图片来作为一个Drawable 资源来使用。不过唯一一点的缺陷就是没有搜索功能,如果你想精心挑选Material Icon ,可以打来网页版来选择,也可以下载SVG 和Png 格式。对于VectorAsset 的好处,它的文件更小,更容易适配不同的屏幕。

3. Stetho

Stetho 是一个Android 开发调试小工具,它可以让你使用Chrome Develop Tools 来可以来查看Sqlite 数据库和SharePreferences,而且可以查看网络连接的数据。在Chrome 输入框输入「chrome://inspect」,点击inspect 就可以开始了。如果使用OkHttp 需要添加拦截器StethoInterceptor。

4. OctoTree

OctoTree 是一个浏览器插件,它可以让你在Github 看代码时,左边栏会出现一个树状结构,就像我们在IDE 一样。当我们看一个项目的结构,或者想看具体的某个文件,这样就会很方便。

5. Chrome ADB

Chrome ADB 是一个使用Chrome 来调试Android 的小工具,它除了提供了安装,卸载,清理数据的基本功能,而且还提供了主页,返回,锁屏的虚拟键功能,也可以看各个应用占用的内存(不得不点名批评一下微信,关闭都还占用100M 内存,不知道你要干嘛)。它还有Android 的App,两者交互一定更有意思。

6. TinyPng

TinyPng 是一个图片压缩工具,可能有些人感觉这个工具应该给设计师使用,我觉得也是。不过有些时候,设计师给你出了个1920* 1080 的启动页,一张图片,1M 左右,我也是泪奔了,感觉设计师说话的时间,估计我们都压缩完了,自己动手,丰衣足食。而且它还提供了API,对不同语言都还有提供了插件,比如Java 就提供了Maven 的支持。

7. PostMan

PostMan 是一个API 调试工具,它提供Chrome App 和Mac App,除了提供基本的API 测试功能, 它还可以添加各种的Auth 认证,响应结果可以选择不同类型,比如HTML,JSON 等,可以设置通用的Header,还可以将之前测试的添加到一个集合,而且也可以同步到服务器,而且最近还添加了团队服务,想想服务器端写完测试你就能看到结果,而不是给你API 文档(当然API 文档还是要有的),这画面太美,我不敢想象。当然它的功能也远远不止这些,它还有专业版,想尝试更多的东西可以体验一下。

8. Genymotion 虚拟机

刚开始做开发的时候,每次使用官方的虚拟机,都想吐槽一下,但是发现了Genymotion 之后,这一切都变化了,它的速度几乎可以和真机媲美了,当然如果有真机,当然还是推荐使用真机测试。据说官方模拟器2.0 很快,不知道是不是又吹牛逼。

9. Json2POJO

Json2POJO 是可以将一个Json 字符串转换成Java 的POJO 类的网页工具,而且可以选择转换器,比如我们使用Retrofit 可以选择Jackson,Gson,而且可以选择重写get,set 方法,还有hashcode,equals 和toString 方法,可以省去了不少手写的时间。

10. Android Pixel

AndroidPixel 是一个简单的将不同的分辨率的换算工具,只要你有一个尺寸的大小,其他的尺寸大小就可以得出,当然dp 这样的单位,可以解决一部分问题,但是大多还要需要微调,这时AndroidPixel 就起到了作用。这个工具来自上一个公司同事告诉我的。

11. Android Arsenal

Android Arsenal 主要是推荐Github 上一些流行的Android 开源项目,基本上最近热门的Android 开源项目都会出现在这里,它还对不同类库进行了分类。

12. AndroidAssetStudio

Android Asset Studio 是一个在线制作工具,它可以制作Iocn,ActionBar,点9 图等等,简单的操作,大大提高了我们开发的效率。

13. WiFi ADB

WiFi ADB 是一个通过无线网络来使电脑和手机连接的手机App(可以去Google Play 搜索类似的),当我们做测试的时候,只需在手机上打开,电脑只需在命令行输入「adb connect xxx.xxx.xxx.xxx:5555」,电脑可以连接手机,就可以通过无线网络来调试开发的应用。

14. ES Explorer

ES Explorer 是一款文件管理器,但实际它又不仅仅是一款文件管理器,在获得Root 之后,它的功能更强大了,它可以浏览受限制的文件目录;而且提供了一系列小工具,比如下载器;还有集成了众多云储存服务。

查看原文