Mac下用dd写入SD卡,提示permission denied

最近入手了树莓派,需要用dd向SD卡中写入系统镜像,按照教程一步步进行,结果在这步卡住了:

sudo dd bs=4m if=/User/zhangshenjia/2013-02-09-wheezy-raspbian.img of=/dev/rdisk4

dd: /dev/rdisk4: Permission denied

在实用工具里的磁盘工具中查看,SD卡的状态为只读: Continue reading Mac下用dd写入SD卡,提示permission denied

通过macports安装的php,extension的配置被分离

我现在的开发环境,php、php-mongo、php-mysql、php-redis、xdebug等都是通过macports安装的。一直使用都没有问题,直到今天编辑php.ini的时候发现,这些extension居然都没有在php.ini中定义。奇怪了,那它们是怎么加载的呢?

首先怀疑我编辑的php.ini不是php实际使用的配置文件。通过查看phpinfo(),在Configure Command中可以确认–with-config-file-path为/opt/local/etc/php54,编辑的php.ini没有问题。

既然php.ini中没有定义,而extension又实际上被加载了。那么可以初步判断,通过macports安装的php,extension的相关配置是存在php.ini之外的一个地方,那么究竟在哪呢?

继续分析phpinfo(),发现这么一条–with-config-file-scan-dir=/opt/local/var/db/php54。进入这个目录一看,mongo.ini、mysql.ini、redis.ini、xdebug.ini等都在这里。于是乎真相大白,原来extension相关的配置文件都被分离到这里了。

究其原因,macports这样做是为了方便维护extension。好处如下:

1、extension的配置与php.ini隔离,方便维护(直接修改php.ini会引发各种问题)
2、各个extension的配置文件相互隔离,互不影响(安装卸载只要添加删除文件即可)

第一次使用mac会遇到的一些典型问题

mac book air入手一周,算是可以进入工作状态了。遇到各种问题,各种google,学到了不少。现在把自己碰到的一些有代表性的问题写出来,希望能给刚开始使用mac的朋友们一些帮助。
  • 几乎所有的app的设置选项,都在屏幕顶部苹果logo右边,点击app名字弹出的菜单中,快捷键是Command+逗号
  • 在finder中按enter是重命名,打开文件夹和文件的快捷键是 Command+Down
  • 在finder中右键菜单中的“复制”是建立副本,“拷贝 xxx”才是复制
  • 在finder中没有剪切这个概念,如果需要移动文件,可以选中之后按 Command+C 拷
    贝,再进入目标目录,按Command+Option+V
  • 在finder的树形视图中选中某个文件夹并不代表进入了这个文件夹,如果想复制文件到该文件夹,需要双击或按Command+Down进入之后才能进行
  • f1 ~ f12键默认是mac自定义的功能键,需要同时按fn才生效,可以在系统偏好设置里更改

mac下配置php环境后出现syntax error

刚在mac上配置好php环境,运行项目代码就出现错误:

Parse error: syntax error, unexpected end of file in xxx.php on line 21

检查出错的文件,21行是该文件的最后一行,是一句很简单的php代码,没有发现任何问题。于是我准备用排除法来定位问题,将该行删除后刷新页面,错误信息变成:

Parse error: syntax error, unexpected end of file in xxx.php on line 20

错误行变成20行,而该行是一个html标签。这样就很奇怪了,非php的代码怎么会引发php的语法错误?

再继续排查,该文件中还有一段php代码:

<?php foreach ( $tags as $tag ) {
    ?><a href="<?= $tag[ 'url' ] ?>"><?= $tag[ 'name' ] ?></a>

虽然觉得不太可能,但还是将这段不能再简单的代码删除测试一下,居然不报错了!

继续测试,结果发现只要把循环体彻底删除,就不会报错。而只要保留循环体,哪怕是?><?,也会报错。脑中浮现出之前google时见过的一个诡异问题,莫非⋯⋯

打开php.ini,搜索short_open_tag,好吧,不知道出于什么目的,在用port装的php54里这个值居然是Off!貌似我用yum、apt-get乃至手动编译php,这个值都是On啊。

果断改之,重启php,问题顺利解决。

 

mac下利用国外的vps建立代理翻墙

现在很多人都有国外的VPS了,那么我们可以利用它建立SSH隧道代理来实现翻墙,解决很多国外网站上不了或间歇性不能访问的问题。

1、首先到http://nihilex.com/secret-socks去下载SecretSocks并安装。

2、运行之后,在SSH hostname中输入自己vps的ip,在Port number中输入ssh的端口(如果你没有改过的话是22),然后在Username中输入可用ssh登录的用户,在Password中输入密码,然后点击Connect按钮。如果看到绿色的对号,说明连接成功了。

3、配置浏览器中的代理,不过我的chrome和safari都自动发现了代理,不需要特别配置就可以使用了。如果你使用的浏览器没有,那么就手动设置一下代理服务器为127.0.0.1:9999。

需要注意的事项:只在需要翻墙的时候Connect,不需要翻墙时记得Disconnect,否则访问国内的网站会很慢或打不开,而且VPS的流量一般是有限的,需要节约使用。