Sublime JS美化插件报错问题

报错信息如下:

ImportError: No module named 'six'

根据这里的办法,问题搞定:

Full steps to fix (incorporates 2 separate comments above):

Select Package Control and then Add Repository
Copy/Paste/Enter the URL: https://github.com/fyelles/js-beautify-sublime and hit enter
Select Package Control and Remove Package: Javascript beautify
Select Package Control and Install Package (Note Different Name): js-beautify-sublime

windows8下运行MC1.8.1

儿子玩惯了平板和手机版的MC,觉得可以让他试试电脑版。首先正式版的MC是有时间限制的,所以下载了1.8.1的Beta无限制版。
安装以后发现在64位的win8下巨慢。于是下载官方最新的1.8.8版,同时也安装了最新的jre运行环境,发现速度很快。

于是修改了1.8.1的ini文件,参数复制1.8.8的,java指向最新javaw的路径。再次运行1.8.1。速度提升很多,但是还是没有1.8.8快,不过至少不影响游戏了~

关于win7下virtualbox5的RC:REGDB_E_CLASSNOTREG错误

win7 64位下安装virtualbox5后,也会报这个错”创建 VirtualBoxClient COM 对象失败.”,解决办法:

#virtualboxclient com 对象失败
管理员身份DOS执行:
VBoxSVC.exe /ReRegServer
regsvr32.exe VBoxC.dll
后右键点击属性,在兼容性处勾选已Windows Server 2008,以及下面的 以管理员身份运行此程序。即可。

建立centos7的虚拟机后,启动又报同样的错误”并且提示不能为centos7打开一个新任务”:

The virtual machine ‘centos7’ has terminated unexpectedly during startup with exit code 1 (0x1).

php configure error unsupported size of off_t

系统环境:macos 10.10.2 vbox4.3.20 centos7 php5.6
–enable-opcache出错,取消后
PHP编译时zip_add.c报错:error unsupported size of off_t

但是有意思的事,我把 –with-zilb 和 --enable-zip单独放一行的时候,编译通过。

To Anyone Wanna Buy My Domains

Currently (2015) my available domains ares:

zhaiduo.com
hairfans.com
1f1t.com
hr81.com
zizuyou.com
BIZLAYOUT.COM
Ivnidea.com
LPXQ.NET
shader3D.com
qcDog.com
xfdyc.com
pinlenaicha.com
nbriji.com
vv81.com

Leave me messages if any questions. [4-6-9-1 6597 at qq.com]

spmjs运行构建命令出错

npm update以后,运行spm build提示:
spm Deprecated: buildArgs.include is deprecated, using sea, standalone and umd instead.:

构建失败。貌似spm不小心被升级为3的版本。

试着重装spm@2.x
cnpm cache clean 清理缓存
cnpm uninstall spm -g 卸载模块
cnpm uninstall spm@2.x -g 卸载模块

cnpm install spm@2.x -g
cnpm install spm-build@0.x -g

spm build
//////////////
….
Done: without errors.

问题解决。

更多参考:
迁移 spm2 的模块到 spm3
https://github.com/spmjs/spm/wiki/%E8%BF%81%E7%A7%BB-spm2-%E7%9A%84%E6%A8%A1%E5%9D%97%E5%88%B0-spm3

Grunt Build Error: require.js blocks are no more supported

When I use Yo to test Backbone webapp, I get thie error:
Running "useminPrepare:html" (useminPrepare) task Fatal error: require.js blocks are no more supported.
According to the discuss in grunt-usemin, I update Gruntfile.js with requirejs.dis.options:

Insert the following options:
, include: '../bower_components/requirejs/require', mainConfigFile: yeomanConfig.app + '/scripts/main.js', out: yeomanConfig.dist + '/scripts/app.min.js'

Then update index.html in app category from
&lt;!-- build:js scripts/main.js --&gt; &lt;script data-main="scripts/main" src="bower_components/requirejs/require.js"&gt;&lt;/script&gt; &lt;!-- endbuild --&gt; &lt;/code&gt; to <code> &lt;!-- REMOVE THIS AFTERgrunt build` –>
<script data-main=”scripts/config” src=”bower_components/requirejs/require.js”></script>

&lt;!-- UNCOMMENT THIS AFTER `grunt build` --&gt;
&lt;!-- &lt;script src="scripts/app.min.js"&gt;&lt;/script&gt; --&gt;

`

The problem should be resolved.

And after build app to dist category, don’t forget to change index.html, use app.min.js to replace requirejs/require.js.

论程序员的幸福感

程序员的幸福感是什么?你想一辈子写程序,却没有幸福感,那么你是很难一直写下去的。

所谓程序员的幸福感就是:

  • 写程序有自由感
  • 写程序很享受、有惬意感
  • 写程序有灵感、才思泉涌感
  • 写程序有成就感、荣誉感
  • 写程序足够养家,可以体面地活下去
    如果满足上述条件,我就觉得可以一辈子写程序,写一辈子程序。

现代浏览器工作原理

翻译自:adobe博客

Modern browsers typically have two important threads of execution. These threads work together to render a web page:
现代浏览器渲染网页的两个重要线程:主线程和合成线程

The main thread
The compositor thread
Typically, the main thread is responsible for:
主线程主要负责:

Running your JavaScript.
执行js脚本
Calculating your HTML elements’ CSS styles.
计算页内元素样式
Laying out your page.
装载网页
Painting your elements into one or more bitmaps.
把元素画进一个或多个位图
Handing these bitmaps over to the compositor thread.
把这些位图移交给合成线程
Typically, the compositor thread is responsible for:
合成线程主要负责:

Drawing bitmaps to the screen via the GPU.
用GPU把位图渲染到屏幕
Asking the main thread to update bitmaps for visible or soon-to-be-visible parts of the page.
通知主线程更新可见位图,或者准备位图
Figuring out which parts of the page are visible.
画出位图的可见部分
Figuring out which parts are soon-to-be-visible when you’re scrolling.
准备即将可见的位图部分
Moving parts of the page when you scroll.
屏幕滚动式,渲染对应部分到屏幕
The main thread can be busy for long periods of time running your JavaScript or painting a large element.
这个时候主线程可能忙得不亦乐乎,由于你调用js脚本,或者渲染大型页内元素
While it’s busy, it’s not responsive to user input.
所以,对用户的事件毫无响应

On the other hand, the compositor thread tries to stay extremely responsive to user input.
另一方面,合成线程却对用户的事件有求必应
The compositor tries to redraw the page 60 times per second when the page is changing, even if the page is incomplete.
当网页发生变化时,合成线程尽力做到每秒渲染页面60次,甚至在页面还没有被准备好时。

For example, when the user scrolls a page, the compositor thread asks the main thread to update the bitmaps for newly visible parts of the page.
例如:用户滑动网页,合成线程就会要求主线程为新的页面生成新的位图
However, if the main thread doesn’t respond quickly enough, the compositor doesn’t wait.
然而,主线程并不能立即响应,合成线程也不会等下去
The compositor draws the parts of the page it has so far and draws white elsewhere.
合成线程依然把页面画出来,没有完成的页面部分就被填充成白色(常见这种情况google chrome)

The GPU
I mentioned the compositor thread draws bitmaps to the screen using the GPU. Let’s quickly go over the GPU.
下面讲讲GPU的处理部分

The GPU is a chip found in most phones, tablets, and computers today. It’s extremely specialized,
现代手机、平板已经完全支持GPU芯片
meaning it’s really good at certain things, and it’s not that great at others.
它非常擅长做一些事

GPUs are really fast at:
它的强项有:

Drawing to the screen.
画图到屏幕
Drawing the same bitmap over and over again.
不断的重复画图
Drawing the same bitmap in a different position, rotation, or scale.
根据不同位置、旋转度、缩放画同一幅图

GPUs are relatively slow at:
当然,它也有不擅长

Loading bitmaps into their memory.
把位图装载进内存。

前端打包压缩合并工具Fis

由百度开发的前端打包压缩合并工具Fis,为你解决前端资源的打包压缩问题,赞~!。

首先,把npm切换成国内镜像,加快模块下载速度。感谢淘宝npm
$ npm install -g cnpm –registry=https://registry.npm.taobao.org
以后通过cnpm来下载模块。

然后,安装fis: cnpm install -g fis

然后启动:fis server start

下载fis demo,cd到demo目录,开始测试。

通过修改fis-conf.js配置,运行fis release -omp进行各种压缩合并和优化操作。

fis server open可以打开输出目录,查看生成的合并文件。

seajs开发环境搭建

seajs是基于CMD规范的前端开发工具,和基于AMD的requireJs不同,seajs有着更适合国人使用习惯的使用方法。搭建好Python, nodeJs, npm, grunt开发环境后, 安装好spm2:
$ npm install spm@2.x -g
$ npm install spm-build -g

spm基于gruntjs构建,使用更简单,复杂应用可自行配置gruntfile.js,进行编译。

windows下需要安装GNU win32的make工具, 包括make和coreutils包。(记得设置环境变量)
测试用例采用qunit环境,测试文件放入testssuites目录下,需要在seajs.use中测试。

更多参考:
seajs配置:https://github.com/seajs/seajs/issues/262

Yii PHPUnit

在yii protected/tests/目录下运行:phpunit unit进行单元测试,出现各种错误:
比如pear install phpunit/DbUnit或者PHP_Invoker找不到,这个需要PHP支持pcntl模块,windows下不支持。

如果出现如下错误:
PHPUnit_Extensions_Story_TestCase.php failed to open yiiframeworkYiiBase.php
可以尝试安装:
pear install phpunit/PHPUnit_Story
注意:phpunit的pear库已经移到phpunit.de,并且在2014年底,安装方式会有变化。

You have installed PHPUnit via PEAR. This installation method is no longer
supported and http://pear.phpunit.de/ will be shut down no later than
December, 31 2014.

一般常见找不到问题,可以通过下面来安装,找不到可以pear search试试。

pear install phpunit/PHPUnit
pear install phpunit/PHPUnit_Selenium
pear install phpunit/PHP_Invoker
pear install phpunit/PHPUnit_Story
pear install phpunit/DbUnit

具体测试过程中,Yii include的错误,可以直接注释,或者disable掉

//////////////// yiiframeworktestCTestCase.php
//require_once(‘PHPUnit/Runner/Version.php’);
//require_once(‘PHPUnit/Util/Filesystem.php’); // workaround for PHPUnit <= 3.6.11

spl_autoload_unregister(array(‘YiiBase’,’autoload’));
//require_once(‘PHPUnit/Autoload.php’);
spl_autoload_register(array(‘YiiBase’,’autoload’)); // put yii’s autoloader at the end
////////////////

Failed opening PHPUnit_Extensions_Story_TestCase.php yiiframeworkYiiBase.php
disable include path:
YiiBase::$enableIncludePath=false;

node_modules无法删除integration错误

windows下删除web app的node_modules目录,可能出现无法删除integration错误的提示,根据这里的解释,源自windows路径长度的限制,造成这个bug。

This is the maximum length of a path according to the Windows API, defined as 260 characters.

解决办法:
http://support.microsoft.com/?kbid=320081

you can delete a file named “lpt1” if you specify the full path of the file by using the following special syntax:
del \?c:path_to_filelpt1

或者直接把太深的目录拖到浅一点的目录。

CentOs6.5测试Hadoop

References:
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
http://wiki.apache.org/hadoop/GettingStartedWithHadoop
http://blog.csdn.net/fuwencaho/article/details/37727873

/////////////////////////////////////////////////////////////

=======

Test Single-node-cluster Hadoop on CentOS6.5

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
yum remove java-1.5.0-*
yum install java-1.6.0-openjdk.i686
export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk
java -version

sudo groupadd hadoop
sudo useradd -g hadoop hduser

ssh-keygen -t rsa
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

/etc/sysctl.conf

disable ipv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

cd /usr/local
http://mirrors.hust.edu.cn/apache/hadoop/core/hadoop-2.4.1/hadoop-2.4.1.tar.gz

cd /usr/local
$ sudo tar xzf hadoop-1.0.3.tar.gz
$ sudo mv hadoop-1.0.3 hadoop
$ sudo chown -R hduser:hadoop hadoop

//////////////////////////////

vi $HOME/.bashrc

Set Hadoop-related environment variables

export HADOOP_HOME=/usr/local/hadoop

Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)

export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk

Some convenient aliases and functions for running Hadoop-related commands

unalias fs &> /dev/null
alias fs=”hadoop fs”
unalias hls &> /dev/null
alias hls=”fs -ls”

If you have LZO compression enabled in your Hadoop cluster and

compress job outputs with LZOP (not covered in this tutorial):

Conveniently inspect an LZOP compressed file from the command

line; run via:

#

$ lzohead /hdfs/path/to/lzop/compressed/file.lzo

#

Requires installed ‘lzop’ command.

#
lzohead () {
hadoop fs -cat $1 | lzop -dc | head -1000 | less
}

Add Hadoop bin/ directory to PATH

export PATH=$PATH:$HADOOP_HOME/bin

/////////////////

$ sudo mkdir -p /app/hadoop/tmp
$ sudo chown hduser:hadoop /app/hadoop/tmp

…and if you want to tighten up security, chmod from 755 to 750…

$ sudo chmod 750 /app/hadoop/tmp

/usr/local/hadoop/bin/hadoop namenode -format

echo “foo foo quux labs foo bar quux” | python ./mapper.py
echo “foo foo quux labs foo bar quux” | python ./mapper.py | sort -k1,1 | /home/hduser/reducer.py

if Error:
hadoop ssh: Could not resolve hostname
try:
sbin/start-dfs.sh

if Error:
cat: /usr/local/hadoop/conf/slaves: No such file or directory
try:
cp /hadoop/etc/hadoop/slaves /hadoop/conf/

if Error:
-copyFromLocal: /home/hduser No such file or directory
try:
/usr/local/hadoop$ hdfs dfs -mkdir -p /user/hduser

Test with 332KB text:
/usr/local/hadoop/bin/hadoop dfs -copyFromLocal /home/hduser/tmp/.txt /user/hduser/adam/
/usr/local/hadoop/bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /user/hduser/adam/
.txt /user/hduser/adam-out
/usr/local/hadoop/bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount -D mapred.reduce.tasks=16 /user/hduser/adam/*.txt /user/hduser/adam-out2

Result:

/usr/local/hadoop/bin/hadoop dfs -cat /user/hduser/adam-out/part-r-00000 > words-count.txt

sort -n -k 2 -t t words-count.txt

重复次数最多的单词如下:
development 11
element 11
effect 12
left 12
That 12
amount 13
heat 13
planet 13
vast 13
went 13
bright 14
get 14
last 14
Mount 14
put 14
against 15
right 15
ancient 16
just 16
present 16
yet 16
might 19
fact 21
almost 25
part 28
point 29
What 29
cannot 33
different 39
what 62
first 65
most 66
But 67
must 67
out 80
about 83
light 98
great 114
but 131
It 161
not 200
at 226
it 385

谷歌彻底被墙,该怎么办?

作为谷歌的重度用户,最常用的谷歌服务包括:search、gmail和各种API。一旦谷歌被墙,会让人觉得手足无措。解决的办法应该有:

  1. 购买国外服务器,自己搭建SSH通道 ()
    1. 首先需要一个VPS或者ssh帐号,把公钥复制到VPS上省去每次登陆都需要输入密码:
    把本地~/.ssh/id_rsa.pub 或者id_dsa.pub的内容写入到远程服务器所需要登陆的账户的家目录下(如/root)~/.ssh/authorized_keys.

    也可以自己生成:$ ssh-keygen -t rsa -C “email@example.com”

    2. 利用ssh通道实现端口转发(详见http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/
    ssh -qTfnN -D 7001 root@YOUR_SERVER

3. 此时已经建立了通道,用firefox浏览器的autoproxy插件就可以实现翻gfw墙。

4\. 上面的只适用于firefox,要想使每一个软件都能利用ssh通道,可以借助proxychains软件,ubuntu下:

sudo apt-get install proxychains
编辑配置文件/etc/proxychains.conf:
加上我们自己的proxy:
socks5 127.0.0.1 7001

这是用proxychains YOURAPP &就可以让任何软件翻gfw墙了,如使chrome能够访问twitter:
proxychains chromium-browser

  1. 购买国外服务器,自己写代码,搭桥
    比如用PHP通过imap协议,获取/管理Gmail。

  2. 使用代理服务器
    即使用第三方提供的IP、端口,来访问谷歌。如前面的SSH通道,也可以自己搭建。

    首先在VPS上安装Squid

    yum install -y squid

    然后简单地配置一下squid

    vim /etc/squid/squid.conf

    找到 http_access deny all,改为http_access allow all

    默认端口为3128,如需修改,找到 http_port修改即可

    接着启动squid即可

    /etc/init.d/squid start

    设置putty

    打开putty,到Connection->SSH->Tunnels,填入Source port:3128,选择Dynamic,并点击add。

    点击左边菜单”Session”,输入Host Name,填入Saved Sessions,并保存,点击“open”,输入用户名和密码之后SSH通道就建立好了。

    在这里推荐使用Firefox浏览器

    我们设置一下firefox浏览器就可以用了

    打开火狐浏览器,到“工具->选项->高级->网络“,点击设置

    选择“手动配置代理:(M)”,在“SOCKS主机:”一栏填写:localhost,“端口:(T)”:3128,其它的默认,确定即可。

    基本上是设置完毕了,不过我们还得防DNS劫持啊,所以要修改一下本地的DNS服务器,可以用GOOGLE的:8.8.8.8 8.8.4.4。

  3. 购买VPN
    虚拟专用网络 (VPN) 是跨专用网络或公用网络(例如 Internet)的点对点连接。远程访问 VPN 连接使在家中或路上工作的用户可以使用公用网络(例如 Internet)提供的基础结构来访问专用网络上的服务器。站点间 VPN 连接(也称为路由器间 VPN 连接)使组织可以在各个独立办公室之间或与其他组织之间通过公用网络建立路由的连接,同时帮助保证通信的安全。

  4. 使用别的可以替代谷歌的,可信赖类似服务。如:微软的免费存储空间和邮箱,还有Bing搜索。

  5. 肉身翻墙

什么是DRM数字版权管理?

根据wiki的解释,可以了解到:

虽然防止数字文档拷贝行为是不可能的,但是仍然可以限制包括:

  • 必须在指定计算机或播放机才能播放
  • 必须在特定的日期前才能播放
  • 播放的次数
  • 传输到播放机的次数
  • 刻录到光盘的次数
  • 以上限制的混合

一个简单的绕开音频文档DRM的方法就是用CD-burning软件把CD音频拷贝到硬盘上,转为无DRM的文档。

音频和视听资料的所有形式的DRM(除了交互式的,比如电子游戏)都遭受着“模拟漏洞”,也就是说,为了使观看者得以使用,数字信号必须转换为包含了光与声的模拟信号,如此,便可能有些内容被拷贝后,没有了可用的DRM来控制该形态下内容。换句话说,如果用户使用独立的程序把声音录到电脑里,弄成DRM-free文档格式的话,就可以播放付费的音频。

Nginx + php-fpm 504 Gateway Time-out

Nginx log error like the following:
2014/04/06 23:54:32 [error] 13340#0: *25756 upstream timed out (110: Connection timed out) while reading response header from upstream

Add three timeouts, the problem is resolved.

nginx.conf:
http{
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;

#fastcgi_buffer_size 128k;
#fastcgi_buffers 8 128k;
#fastcgi_busy_buffers_size 256k;
#fastcgi_temp_file_write_size 256k;
#fastcgi_intercept_errors on;

}

console.log加图片加样式的办法

现在流行技术流,有些东西只给搞技术的人看。
前端网页console.log也可以加图片加样式,chrome浏览器支持。
`

//寻觅前端
var isChrome = /webkit/.test(navigator.userAgent.toLowerCase()) && /chrome/.test(navigator.userAgent.toLowerCase());
if(isChrome){
console.log(“%cn “,”font-size:60px;background:url(‘http://sae..../console.gif?v="+$SAE.version+“‘) left top no-repeat;”);
console.log(‘发现了SAE的什么BUG?n还是对我们有什么好的建议?n如果你也对技术充满热情。n期待你的加入。http://sae....tId=177‘);
console.log(“如有意加入,请在邮件标题中注明:%c[“+$SAE.version+”]”,”color:#FF8A0B;font-weight:bold;”);

}

`
24020140330232657