Mac PROBLEMS

2013-09-15 00:00:00 +0000

Mac command line

mdfind

mdfind can find something in Mac

cal

cal launch a calendar

start/stop apache:

$ sudo apachectl start
$ sudo apachectl stop

remove dir:

rm -rf dir

brew install

Install homebrew

Mac install homebrew,we can use git as from: http://blog.jjgod.org/2009/12/21/homebrew-package-management/

$ sudo chown -R `wanggengzhou` /usr/local
$ cd /usr/local
$ git init
$ git remote add origin git://github.com/mxcl/homebrew.git
$ git pull origin master

Testing: brew search

install ruby:

$ brew install ruby

Configure the path: PATH=$(brew –prefix ruby)/bin:$PATH

$ vim ~/.bash_profile

input:

export PATH=$(brew --prefix ruby)/bin:$PATH

install jekyll:

$ gem update --system
$ gem install jekyll

Mac vim

vimrc configure

$ sudo vim /usr/share/vim/vimrc

input:

set ai                  " auto indenting
set history=100         " keep 100 lines of history
set ruler               " show the cursor position
syntax on               " syntax highlighting
set hlsearch            " highlight the last searched term
filetype plugin on      " use the file type plugins

" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if ! exists("g:leave_my_cursor_position_alone") |
\ if line("'\"") > 0 && line ("'\"") < = line("$") |
\ exe "normal g'\"" |
\ endif |
\ endif

File System

The path of QQ information:

~/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ

Questions:

can’t open file for writing

Maybe the file owner becomes root

Permission denied

cannot open .git/FETCH_HEAD: Permission denied

$ sudo chown -R .git/

Mac ssh need not to be root accout

Lauchpad icon information is in

~/Library/Application\ Support/Dock/*.db

ubuntu phpmyadmin

2013-08-31 00:00:00 +0000

安装phpmyadmin在/usr/share/phpmyadmin目录下:sudo apt-get install phpmyadmin

重启apache:

$ sudo /etc/init.d/apache2 restart

dpkg -L phpmyadmin 看看安装在什么地方

http://localhost/phpmyadmin/

[转载]JS为什么 ++[[]][+[]]+[+[]] = 10 ?

2013-08-27 00:00:00 +0000

转自:珠海GDG微信

qrcode_for_gh_5e32c47b5b23_258.jpg

为什么 ++[[]][+[]]+[+[]] = 10

全文引用自:

http://www.aqee.net/can-you-explain-why-10/

首先,问这个问题 的人是个天才,他怎么会遇到这样的一个问题。其次,回答这个问题的人更是一个天才,我难以想象他会回答这个问题,更难以想象的是,他的回答是如此的详细和丰富和完整,真正称得上诲人不倦。

是的所有令人激荡不已的问题以及回答,现在多数出自: “栈溢出”

http://stackoverflow.com/questions/7202157/can-you-explain-why-10

既然遇到了这个问题,我们不妨也跟着提高一下。

这是一个Javascript语言题目,一个完全有效的等式,不信自己可以试一下,下面看看高人的题解:

++[[]][+[]]+[+[]]

如果把这段表达式拆分开来,它相等于:

++[[]][+[]]
+
[+[]]

在JavaScript里,+[] === 0是完全正确的。 + 会把一些字符转化成数字,在这里,这个式子会变成+""0

因此,我们可以简化一下(++ 比 + 有更高的优先级):

++[[]][0]
+
[0]

因为[[]][0]的意思是:获取[[]]的第一个元素,这就得出了下面的结果:

[[]][0]返回内部数组 ([])。

根据语言规范,我们说[[]][0] === []是不正确的,

但让我们把这个内部数组称作 A,以避免错误的写法。 ++[[]][0] == A + 1,因为++的意思是“加一”。 ++[[]][0] === +(A + 1)

换句话说,你得到的永远是个数值

(+1并不一定得到的是个数值,但++一定是)。

同样,我们可以把这一堆代码简化的更清晰。让我们把 A 换回成[]:

+([] + 1)
+
[0]

在JavaScript里,这也是正确的:

[] + 1 === "1",因为[] == ""

(这相当于一个空的数组的内部元素连接),于是:

+([] + 1) === +("" + 1),并且 +("" + 1) === +("1"),并且 +("1") === 1

让我们再次简化一下:

1
+
[0]

同样,在Javascript里,这是正确的:

[0] == "0",因为这是相当于一个有一个元素的数组的内部元素的连接。各元素会使用,分隔。当只有一个元素时,你可以推论出这个过程的结果就是它自身的第一个元素。 所以,最终我们得到

(数字 + 字符串 = 字符串):

1
+
"0"
=== "10"

(^0^)/耶!

结论

JS 是个变态语言!

[转载]git使用ssh密钥

2013-08-06 00:00:00 +0000

转载自:git使用ssh密钥

git使用https协议,每次pull, push都要输入密码,相当的烦。

使用git协议,然后使用ssh密钥。这样可以省去每次都输密码。

大概需要三个步骤:

  • 一、本地生成密钥对;
  • 二、设置github上的公钥;
  • 三、修改git的remote url为git协议

一、生成密钥对。

大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有操作系统上都差不多。首先先确认一下是否已经有一个公钥了。SSH 公钥默认储存在账户的主目录下的 ~/.ssh目录。进去看看:

$ cd ~/.ssh 
$ ls
authorized_keys2  id_dsa       known_hosts config            id_dsa.pub

关键是看有没有用 something 和 something.pub 来命名的一对文件,这个 something 通常就是 id_dsa 或 id_rsa。有 .pub 后缀的文件就是公钥,另一个文件则是密钥。假如没有这些文件,或者干脆连 .ssh 目录都没有,可以用 ssh-keygen 来创建。该程序在 Linux/Mac 系统上由 SSH 包提供,而在 Windows 上则包含在 MSysGit 包里:

git使用ssh密钥(转)

$ ssh-keygen -t rsa -C "<em>your_email@youremail.com</em>"
# Creates a new ssh key using the provided email # Generating public/private rsa key pair. 
# Enter file in which to save the key (/home/<em>you</em>/.ssh/id_rsa):

直接Enter就行。然后,会提示你输入密码,如下(建议输一个,安全一点,当然不输也行):

Enter passphrase (empty for no passphrase): <em>[Type a passphrase]</em> 
# Enter same passphrase again: <em>[Type passphrase again]</em>

完了之后,大概是这样。

Your identification has been saved in /home/<em>you</em>/.ssh/id_rsa. 
# Your public key has been saved in /home/<em>you</em>/.ssh/id_rsa.pub. 
# The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db <em>your_email@youremail.com</em>

这样。你本地生成密钥对的工作就做好了。 git使用ssh密钥(转)

二、添加公钥到你的github帐户

1、查看你生成的公钥:大概如下:

$ cat ~/.ssh/id_rsa.pub  
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABABAQDx22Bj5dKvRhwFili/DIKqlcYPIVIGv04h0p0JG+0CZQrGk2iBV/0X+bGJXJFl3cgydfgzxV77qRfbQ8B8nXfTuvYbAttzbCj0U97Aj9/XX4ZxXDLLkbtLrZeOVM0NRAJkPb1/EznQ/rsm8gAyUZRLv+L8lqMaTSkAZiL1LggFASDDa2Rq9MbRaYUTzaL2Fmx0Hg8HKlPQiXhZ8U8wISLySPYzWpCvWBAcOCT5EbgrnqbD1W1Ec4XVutalh98LdDoBYzZO4T6D59ce1jiasIL1U/0Y6Nc3ZEDATfGLWKLnpRKZnxx42LG2cMhij4XZIFsL5lLh2bT+emVjkmRb64DJdr 326684793@qqcom

2、登陆你的github帐户。然后 Account Settings -> 左栏点击 SSH Keys -> 点击 Add SSH key

git使用ssh密钥(转) git使用ssh密钥(转)

3、然后你复制上面的公钥内容,粘贴进“Key”文本域内。 title域,你随便填一个都行。
4、完了,点击 Add key。

这样,就OK了。然后,验证下这个key是不是正常工作。

$ ssh -T git@github.com
# Attempts to ssh to github

如果,看到:

Hi username! You’ve successfully authenticated, but GitHub does not # provide shell access.

git使用ssh密钥(转)

就表示你的设置已经成功了。

三、修改你本地的ssh remote url. 不用https协议,改用git 协议

可以用git remote -v 查看你当前的remote url

$ git remote -v
origin https://github.com/someaccount/someproject.git (fetch)
origin https://github.com/someaccount/someproject.git (push

可以看到是使用https协议进行访问的。

你可以使用浏览器登陆你的github,在上面可以看到你的ssh协议相应的url。类似如下:

git@github.com:someaccount/someproject.git

这时,你可以使用 git remote set-url 来调整你的url。

$ git remote set-url origin git@github.com:someaccount/someproject.git

完了之后,你便可以再用 git remote -v 查看一下。 git使用ssh密钥(转)

当git remote -v 之后变成类似这种git@github.com的形式,就说明用的是SSH协议进行访问。OK。

至此,OK。

你可以用git fetch, git pull , git push, 现在进行远程操作,应该就不需要输入密码那么烦了。

wubi 安装 Ubuntu

2013-07-06 00:00:00 +0000

Ubuntu

Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造的开源GNU/Linux操作系统。为桌面虚拟化提供支持平台。 百度百科

Ubuntu下载地址: http://www.ubuntu.org.cn/download/desktop

可以考虑12.04版本,当然也可以考虑新版13.04

用挂载下载的iso文件,我用的是DAEMON挂载

Daemon下载地址: http://www.daemon-tools.cc/chn/products/dtLite#features

打开挂载的文件夹 将wubi这个文件拷到任何位置,运行wubi,配置一些基本的设置,接着它就开始安装了,安装完后,提示重启,重启后在启动项上指定ubuntu,ubuntu将自动安装,安装完后将自动重启。

PS:

  • 记得要挂载那个iso文件,不然wubi会重新下载ubuntu到某临时文件夹,这将耗费大量时间
  • 可以考虑断网,因为有网络,ubuntu将需要下载安装一些必要的文件。不过断网的话,安装可能会出错,感觉这算是一个概率问题。
  • 另外13.04的版本的wubi貌似对应的是64位系统,这意味着,你的镜像挂载要挂载64位系统版本的ubuntu,不然它会联网下载64位Ubuntu。

倘若ubuntu开机进不了桌面,可以通过重装桌面修复它。

ubuntu12.04已经自带了ibus输入法框架和一些中文输入法。 想要谷歌输入法可以移步到 ubuntu 下的 google 拼音输入法

bin/bash --login/

2013-06-20 00:00:00 +0000

If you run “rvm use XXX” then output “‘/bin/bash –login’ as the command” '/bin/bash <wbr>--login' <wbr>command <wbr>problem

You can do as follow:
1. Open a terminal,
2. Choice the drop-down menu 'Edit'
3. Click the menu 'Profile Preferences'

'/bin/bash <wbr>--login' <wbr>command <wbr>problem

4. Choice 'Title and Command'

'/bin/bash <wbr>--login' <wbr>command <wbr>problem

5. Click the command 'Run command as a login shell'

'/bin/bash <wbr>--login' <wbr>command <wbr>problem

Then you can't run '/bin/bash --login' next time.

Reference:

Ubuntu 配置安卓

2013-06-12 00:00:00 +0000

有问题看问题解答.

首先下载 Android SDK

ubuntu配置安卓

Android SDK官方下载地址:http://developer.android.com/sdk/index.html

下载Linux 32-bit版本 .

ubuntu配置安卓

解压 然后到目录下的tools里面 ubuntu配置安卓

输入$ ./android启动Android SDK Manager

ubuntu配置安卓 勾中Tools和Android 4.2(API 17),还可以安装以前的Android 4.1.2或者2.3版本,一般我们选择最新版本就好了,因为选择的版本越多下载时间就越长。SDK可以向下兼容, 意思就是4.2版本可以运行2.3 不过2.3 不一定可以运行4.2 ubuntu配置安卓 选中后,点击右下角的Install 5 packages… ubuntu配置安卓

这时就开始在线下载文件了,时间会比较长,中途如果弹出错误窗口也不用管,等待下载完成。

跟windows环境安装安卓模拟器不一样,linux环境下需要用命令来建立模拟器。

首先在终端中输入

$ ./mksdcard 512M mysd01

上面的512M是指虚拟机的SD卡大小,mysd01是指卡的名称,大小和名称可以更改为别的。

$ ./android create avd -n myphone01 -t 2

创建虚拟手机设备,这里的myphone01是指虚拟机名称,也可以更改。

ubuntu配置安卓

出现上面这种提示就表示模拟器建立好了

Auto-selecting single ABI armeabi-v7a
Created AVD 'myphone01' based on Google APIs (Google Inc.), ARM (armeabi-v7a) processor,
with the following hardware config:
hw.lcd.density=240
vm.heapSize=48
hw.ramSize=512

最后运行模拟器

$ sudo ./emulator @myphone01 -sdcard mysd01 -scale 0.8

不过上面这一块其实不用处理的, 因为你只要直接插上手机, eclipse运行的程序直接在手机上面跑. 

问题解答: 一开始敲入这个命令: $ ./android

bash: ./android: 权限不够  

chmod a+x 可以增加权限

输入: $ chmod a+x ./android 然后输入 $ ./android 即可.

Failed to get the adb version: Cannot run program "/media/m_backup/Setup_Files/Programing/android-sdk-linux/platform-tools/adb": java.io.IOException: error=13, 权限不够 from '/media/m_backup/Setup_Files/Programing/android-sdk-linux/platform-tools/adb' - exists=true

在sdk文件夹里面输入~/android-sdk$ sudo chmod -R a+wrx * 注意: 因为坑爹的XX墙, 所以改HOSTS进 https://developer.android.com/sdk/index.html

References:

Java Problem

2013-06-06 00:00:00 +0000

error 1: failed to load the jni shared library jre bin client jvm.dll

你安装的JDK版本就不对,对应你64位电脑的版本名称是 jdk-7-windows-x64.exe

C#代码生成label和button

2013-05-25 00:00:00 +0000

//自动生成label
for (int x = 0; x < 5;x++ )
{
    Graphics
     dc = CreateGraphics();
    Show();
    Pen bluePen = new Pen(Color.Blue, 3);
    dc.DrawRectangle(bluePen, x*80, 0, 50, 50);
}

int _Height = 0;

for (int i = 0; i < 10; i++)
{
    Label sy = new Label();
    sy.AutoSize = true;
    sy.Location = new Point(0, _Height);
    _Height += sy.Height;
    sy.Text = i.ToString();
    Controls.Add(sy);
}

//生成button
Button[] buttons = new Button[50];
// for (int i = 0; i < 5; i++) // 只产生5个button
for (int i = 0; i < classroom_name_init.Length; i++)
{
    int t_y = i / 10;
    int t_x = i % 10;
    if (classroom_name_init[i] != null)
    {
        buttons[i] = new Button();
        buttons[i].Name = "button" + i;
        // buttons[i].Text = buttons[i].Name;
        buttons[i].Text = zone_name_init + classroom_name_init[i];
        buttons[i].Size = new Size(60, 25);
        buttons[i].Location = new Point(110 + 70 * t_x, 210 + 50 * t_y);

        //panel1.Controls.Add(buttons[i]);
        buttons[i].BringToFront();//置于顶层
        buttons[i].Click += new EventHandler(Buttons_Click);
    }
    else
    {

    }
}
this.Controls.AddRange(buttons);

//生成的button有按键效果
void Buttons_Click(object sender, EventArgs e)
{
    date_str = comboBox3.Text + " " + comboBox4.Text + "-" + comboBox5.Text;
    this.Text = (sender as Button).Text;
    Classroom classroom = new Classroom(zone_name_init, classroom_name_init, this.Text, date_str);
    this.Hide();
    classroom.ShowDialog();
}

关于 android 报 exception 的问题

2013-05-21 00:00:00 +0000

android 程序只要你写错了就报异常,莫名其妙退出

所以可以考虑用 try-catch 的形式抓取异常, 然后很多时候你感觉哪里出异常了,不过实际上是另外一个地方出现异常 在安卓里面 onPause 在你调用别的 layout 的时候有可能就会出现异常

References: