易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
久未更新,上来发个牢骚

久未更新,上来发个牢骚

不得不说,就目前为止,我MAC下面必装 的软件就是MacJournal了,当然 我这是指工具软件。在没有Onenote的前提下,它是我用到现在最舒服的软件之一,虽然他有很多让我不爽的地方,但好歹,他能够让我记事。

不要和我提什么evernote之类的,它不适合我。

在翻开Macjounral的时候,突然看到了一年前有人留 下的一段话:

我个人推荐学习顺序。
基础部分
一、UIView及其子类 UILabel UITextFiled UIImageView UITextView UITableView [重点] 等等以UI开头的视图
特别需要搞明白UITableView,一通百通。
二、NSObject 子类, 就是NSString NSNumber NSArray NSDictionary == 以NS的类型对象 。
三、对象的@property属性和其涉及的内存机制,ARC虽好,但是我不推荐不懂非ARC。
四、Animation 动画效果,包括UIView提供的动画效果,CA动画效果,CI动画效果,更深层次的3D动画效果。
五、BLOCK和GCD。
正好借着双11的机会买了不少书,终于又可以看起来了。

话说这些年乱看看了不少东西,却没有深入,都是浅尝即止。这次是逼着自己每天必看。每天至少半小时(本想夸海口要1小时或者2小时,想想又不敢保证,但至少半小时还是能抽得出)

Yii2-smarty的一些小坑

Yii2-smarty的一些小坑

在写本文前我不得不说一句,其实我是不想用smarty的,我想尝试一下twig,但是phpstorm的Twig插件真要命,卡成翔,所以我只能用smarty。为什么不用prado了呢?官方说不支持了,我晶啊

在使用smarty的时候官方的代码和例子看上去很美,不过要注意几点

1、用yii2-smarty,还是必须得用layout,如果你不支持layout文件,默认就是/layouts/main.php,天啊,为什么是PHP?而且在这里面也还真的能用PHP代码。整个都崩溃了

2、你可以指定layout文件,比如:main.tpl,OK你必须得象PHP文件一样,得写{$this->head()},{$this->startBody()}{$this->endPage()}等,否则 ClientScript功能就无法使用

3、如果你指定layout=false,那么,就不支持ClientScript了。因为你incude file='xxx.tpl',在每一个独立的文件里都必须要象2中一个个的this->head(),this->endPage全写上

4、再来一个bug:{registerJsFile url=''},这个函数有BUG

原来是:

public function functionRegisterJsFile($params, $template)
{
if (!isset($params['url'])) {
trigger_error("registerJsFile: missing 'url' parameter");
}

$url = ArrayHelper::remove($params, 'url');
$key = ArrayHelper::remove($params, 'key', null);
$depends = ArrayHelper::remove($params, 'depends', null);
if (isset($params['position']))
$params['position'] = $this->getViewConstVal($params['position'], View::POS_END);

Yii::$app->getView()->registerJsFile($url, $depends, $params, $key);
}

改成为:

/**
* Smarty function plugin
* Usage is the following:
*
* {registerJsFile url='http://maps.google.com/maps/api/js?sensor=false' position='POS_END'}
*
* Supported attributes: url, key, depends, position and valid HTML attributes for the script tag.
* Refer to Yii documentation for details.
* The position attribute is passed as text without the class prefix.
* Default is 'POS_END'.
*
* @param $params
* @param \Smarty_Internal_Template $template
* @return string
* @note Even though this method is public it should not be called directly.
*/
public function functionRegisterJsFile($params, $template)
{
if (!isset($params['url'])) {
trigger_error("registerJsFile: missing 'url' parameter");
}

$url = ArrayHelper::remove($params, 'url');
$key = ArrayHelper::remove($params, 'key', null);
$params['depends'] = ArrayHelper::remove($params, 'depends', null);
if (isset($params['position']))
$params['position'] = $this->getViewConstVal($params['position'], View::POS_END);

Yii::$app->getView()->registerJsFile($url, $params, $key);
}

其实就是$params['depends']这个参数。registerJsFile只能接受3个参数,但事实上用了4个参数,所以调整一下即可

怎样删除vmware fusion

怎样删除vmware fusion

早些年用vmware fusion的时候,就感觉速度不行。总是觉得卡卡顿顿的,后来用了pd后才发现,真心不是一个量级的

vmware我分配了2G内存,才跑起来不卡,我用PD,512M都能飞一样的。

但早期我删除的vmware的时候,是直接把vmware fusion.app拖到垃圾筒里了,结果。它的虚拟网卡还在,这让我很烦恼,如今,有一个比较方便的方法:

rm -rf /Library/Application\ Support/VMware/
rm -rf /Library/Preferences/VMware\ Fusion
rm -rf ~/Library/Application\ Support/VMware\ Fusion
rm -rf ~/Library/Caches/com.vmware.fusion
rm -rf ~/Library/Preferences/VMware\ Fusion
rm -rf ~/Library/Preferences/com.vmware.fusion.LSSharedFileList.plist
rm -rf ~/Library/Preferences/com.vmware.fusion.LSSharedFileList.plist.lockfile
rm -rf ~/Library/Preferences/com.vmware.fusion.plist
rm -rf ~/Library/Preferences/com.vmware.fusion.plist.lockfile
rm -rf ~/Library/Preferences/com.vmware.fusionDaemon.plist
rm -rf ~/Library/Preferences/com.vmware.fusionDaemon.plist.lockfile
rm -rf ~/Library/Preferences/com.vmware.fusionStartMenu.plist
rm -rf ~/Library/Preferences/com.vmware.fusionStartMenu.plist.lockfile

运行之前,记得先sudo -s 进入管理员模式。

上面的数据不是我平空捏造,它来自官方:http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1017838

同时,该文里还有手动删除 3.x的办法,我想,现在2014年应该没有3.x的用户了吧?

wget与wput

wget与wput

不多写,就几个关键点:

wget ftp://xxx.xxx.xxxx.xxx/data/* --ftp-user=xxx --ftp-password=xxx
用于下载FTP目录
wput /var/www/xxxx ftp://user@password:/data/xxxx
上传目录,但上传的时候会有点小问题,比如有中文、或者有空格的时候,在批量上传的时候可能会失败
据说:
$find /home/test -type f >> ~/list.txt
$while read i ; do wput “$i” ftp://ftpusername:password@ip/myname ; done < ~/list.txt
未测试,但看这个while do 应该可行。
纯笔记
最后附上wget拉取整站的代码:
wget \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--convert-links \
--restrict-file-names=windows \
--domains example.com \
--no-parent \
www.example.com/article/page/
可以参考一下不过对于CSS嵌套CSS中的图片可能不OK
Filezilla 在 yosemite 下的配置文件有变动

Filezilla 在 yosemite 下的配置文件有变动

升级到 yosemite 后,发现耗电量大增,怀疑是当初的配置有问题或者装了一些不该装的软件。所以还是一咬牙重装了,在重装先做一件事,就是备份/Users/(username)的文件夹。其中就有 filezilla 的配置。不然的话,新装之后,我的那么多服务器的配置文件怎么搞?

新装好后。在安装了 filezilla 完成后,将原备份下的.filezilla 拷到现在/Users/(user)目录下。启动 filezilla,结果发现我的站点管理器里并没有出现我原来的站点。感觉很奇怪。

于是我在新装的 filezilla 里新增了一个站点。然后退出。find /Users/(user) -name "filezilla",居然发现在自已的目录下发现了一个.config/filezilla。跑进去一看,里面的文件和.filezilla 一样。于是 cp -R ~/.filezilla/* ~/.config/filezilla/

再启动一下 filezilla。果然配置全回来了。

PS:官网的 filezilla 的安装文件,在安装的时候要注意一下。如果你一直下一步下一步,会多安装两个程序的(开始向国内的用户学习?通过安装程序安装其他 APP 了?提示出现 MacKeeper 等软件的时候,选择 skip 即可)

MAMP Pro 3.05 on Mavericks updated to Yosemite - Apache does not start

MAMP Pro 3.05 on Mavericks updated to Yosemite - Apache does not start

今天新版发布,立刻升级,结果就这MAMP玩意不能启动了。启动的时候直接报错:

dyld: Symbol not found: _iconv Referenced from: /usr/lib/libmecabra.dylib Expected in: /Applications/MAMP/Library/lib/libiconv.2.dylib in /usr/lib/libmecabra.dylib /Applications/MAMP/Library/bin/apachectl: line 80: 2799 Trace/BPT trap: 5 $HTTPD "$
开始没注意,是以为80端口没有足够的权限,再仔细一看,怎么是动态 链接库出问题了?难道是补丁没更新?
于是打开Xcode,果然说有必须要安装的组件等着我更新。更新完后再启动,还是这个问题。
不得已Google一下,果然在stackoverflow上有人有提出了类似的问题,并且被解决了:http://stackoverflow.com/questions/25139599/mamp-pro-3-05-on-mavericks-updated-to-yosemite-apache-does-not-start,解决的方法居然非常简单,只要将MAMP目录下的envvars改名成_envvars就可以了:
mv /Applications/MAMP/Library/bin/envvars /Applications/MAMP/Library/bin/_envvars
记得不要CP,cp没用。。估计会优先检查这个envvars,如果文件存在就用这里面的环境变量了。改名后就不管了
如果觉得有用,记得去上面的链接帮别人点个赞。哈

yii 自动加载其他类

Yii2在项目中使用了composer来管理第三方的类库,Yii呢?就没有这样的目录了。不过在他自己的目录结构里其实有这样目录结构,比如extensions。而且默认是用Yii::import("ext.xxxxx.*");来加载

如果再建一个vendor的目录呢?如果我也要用composer怎么办 呢?Yii的加载是靠类名自动加载的。而它的类名却没有办法认到Vendor目录下的程序。这时候应该怎么办呢?

所以Yii还提供了一个简单的办法:Yii::registerAutoloader(array('Requests', 'autoloader'));

看到这个Requests了没,这个就是第三方的HTTP类库,官网是:http://requests.ryanmccue.info/,这应该是目前PHP中最好的Request的类库了,但默认,它的autoload方式,Yii不支持,所以在Requests.php的第一行加入上面的代码。这回好了,Yii::import("ext.Requests"); 你就可以在任何地方调用:Requests::get($url),而不用担心找不到类了
Yii2 released

Yii2 released

Yii2 终于released了。发现他的advanced的目录和我现在完全一致。哈哈。。。

不过在测试的时候遇到了这个问题:

composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for yiisoft/yii2 * -> satisfiable by yiisoft/yii2[2.0.0].
- yiisoft/yii2 2.0.0 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
Problem 2
- Installation request for yiisoft/yii2-bootstrap * -> satisfiable by yiisoft/yii2-bootstrap[2.0.0].
- yiisoft/yii2-bootstrap 2.0.0 requires bower-asset/bootstrap 3.2.* | 3.1.* -> no matching package found.
Problem 3
- Installation request for yiisoft/yii2-gii * -> satisfiable by yiisoft/yii2-gii[2.0.0].
- yiisoft/yii2-gii 2.0.0 requires bower-asset/typeahead.js 0.10.* -> no matching package found.
Problem 4
- yiisoft/yii2 2.0.0 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
- yiisoft/yii2-faker 2.0.0 requires yiisoft/yii2 * -> satisfiable by yiisoft/yii2[2.0.0].
- Installation request for yiisoft/yii2-faker * -> satisfiable by yiisoft/yii2-faker[2.0.0].

Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

这不是什么大问题,只是安装不上罢了。问题出来哪里呢?看了一下官方的issue,有对它的解释:https://github.com/composer/composer/issues/2873

毕竟,虽然yii2是stable了,但不是所有关联的项目都是stable了。把项目中的:"minimum-stability":"stable"改成 "minimum-stability":"dev"即可

于是:composer install

Loading composer repositories with package information

Installing dependencies (including require-dev)

- Installing yiisoft/yii2-composer (dev-master 73ad236)

Cloning 73ad236be1bf7cf4415559a4b592dd5b9cb4b288

-------EOF。

连接mq出现2538、2539错误

最近在一个合作项目中需要连接ibm的websphere,经常连着连着就报错了。

比如2533错误:Reason:2033 Text:No message available. 没信息了。。。。

再比如2538错误:Connx CompCode:2 Reason:2538 Text:An MQCONN call was issued from a client to connect to a queue manager but the attempt to allocate a conversation to the remote system failed

这2538就是TMD连接不上服务器,后来问了对方,原来,对方挂了。我晕

今天又是2538,再一问,我靠,换IP了。。真受不了

然后改好IP,再连接,结果。。。2539出现了:Reason:2539 Text:An MQCONN call was issued from a client to connect to a queue manager but the attempt to establish communication failed

查了下2539对应的错误:

2539 (09EB) (RC2539): MQRC_CHANNEL_CONFIG_ERROR

Explanation

An MQCONN call was issued from a client to connect to a queue manager but the attempt to establish communication failed. Common causes of this reason code are:

a.The server and client cannot agree on the channel attributes to use.
b.There are errors in one or both of the QM.INI or MQCLIENT.INI configuration files.
c.The server machine does not support the code page used by the client.

有三种可能。。。现在就等对方折腾了。不过查了下,关于第三种,code page不一样的错误,在http://www.cnblogs.com/fromchaos/archive/2010/02/24/1672736.html,有个解释。为了方便我就复制部分东西过来了

选择客户机或服务器编码字符集标识(CCSID)

客户机代码假设通过客户机中 MQI 的字符数据位于机器所配置的 CCSID 中。如果此 CCSID 是一个不支持的 CCSID 或不是必需的 CCSID,可以用 MQCCSID 环境变量覆盖它,例如,在 Windows® 上:

SET MQCCSID=850
更新开始或者,在 UNIX® 系统上:
export MQCCSID=850

如果是CCSID的问题我只要加在rc.local就好了,不过目前还不知道对方是不是这个错误。。。最后再转一下上述文章的最后一段,关于CCSID的说明

IBM Coded Character Set Identifiers (CCSID)码表

A CCSID is a Coded Character Set Identifier. The Unicode standard defines a Coded Character Set as "A character set in which each character is assigned a numeric code value." This means that a CCSID is a number that defines a numeric ordering of characters. The IBM ® Character Data Representation Architecture (CDRA) as defined in SC09-1390, defines CCSIDs that are used with IBM to represent character data. This architecture defines Single Byte Character Set (SBCS) CCSIDs, Multiple Byte Character Set (MBCS) CCSIDs, and Mixed CCSIDs which are a combination of SBCS and MBCS data. MBCS CCSIDs are usually used for languages, such as Chinese, Japanese, and Korean, that define a larger number of characters than can be represented in a single byte.
CCSID是一个字符集的标识。作为unicode标准通过定义一个字符集内每个字符要对应那个数字值的方式定义了一个字符集。这说明CCSID就是一个定义字符集顺序的标识数码罢了。IBM的字符标识架构在文档 SC09-1390(http://www-304.ibm.com/jct03002c/software/globalization/cdra/index.jsp;http://publib.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/FOCREF00/CCONTENTS)中做了定义,CCSID是IBM用来标识字符序列的标识代码。这个架构定义了SDCS(单字符集)的CCSID值,MBCS(多字符集)的CCSID值和混合单字符多字符集的混合CCSID值。多字符集的CCSID一般用于语言,比如中文,日文,韩文,这些语言的字符量很大,无法用单字节的码值来代表。

All SBCS CCSIDs define a similar basic set of characters, although they might define them in different numeric ordering. For instance all SBCS EBCDIC CCSIDs define the number "1" as x'F0' and all SBCS ASCII CCSIDs define the number 1 as x'30'.

CCSID间的转换有多种类型。其中一种转换就是从一种CCSID到另一种CCSID的转换,举例来说从ASCII(CCSID 1252)到EBCDIC(CCSID 37)。另一种是从串数据到另一种数据类型的转换。举例来说转换字符串数据到数值。在所有的这种类型的转换中都必须标识CCSID值来保证转换的正确进行。

但是转换是有要求的,第一种转换的前提是转到的 CCSID的类型中要包含转换前的CCSID类型中要转换的字符,比如,如果从CCSID1381(S-CHGBPC-DATA) 类型的简体中文的PC编码中的一个中文字符"中"字到其他CCSID编码转换到的编码起码要求这个CCSID编码的字符集中包含同样的"中"字。

我从IBM找到的对CCSID说明的列表如下:

摘录自http://www-304.ibm.com/jct03002c/software/globalization/ccsid/ccsid_registered.jsp,如果需要详细信息,请自行查询。

做个笔记,从去年开始,不停的在与第三方对接程序。有时候真心想骂娘,后来想想,大家都是混口饭吃嘛。而且人家还是上游单位,混的比你好多了。。不要与他们一般见识 。

利用时间胶囊为家里共享打印机

利用时间胶囊为家里共享打印机

儿子开始上小学了,学校里布置了各种各样的小东西让他们做。比如出个小板报什么的,用电脑做。。。

于是这就成了我的工作,所幸以前在部队的时候把word还算玩的比较熟,然后利用百度图片找点图片出来,附上去就成了一份小小的板报

现在最大的问题就是打印,本来资料是老婆整理的,于是打印机就接在PC电脑上了,但打印机放在桌子上太占地方了,于是就想过是不是要买一个支持网络打印的。结果看了一下X东网,带网络打印的打印机最便宜的都是1000开外了。想了想,好象胶囊是支持打印机的,然后找了下资料,真的可以

1、windows下面

安装Benjour print services(下载地址是:http://support.apple.com/kb/DL999),该页面有教程(记得中文不好就选择中文),然后点击桌面的“Benjour 打印机向导”,然后就能搜索得到打印机了

2、MAC下面

直接搜索打印机,如果没有驱动,会提醒你下载驱动。

测试了一下打印,两台机器都可以了,心里灰常舒畅。。。打印机也被我扔到角落里去了,不再放在电脑桌上占地方,黑黑

PS:本来很激动的以为有了这玩意,就也可以直接用手机打印了,结果提示我:找不到airprint打印机,看来不是每个打印机都支持啊。。。

PPS:看到官方的一句话了(http://support.apple.com/kb/HT4356?viewlocale=zh_CN)

连接到 Apple AirPort 基站或 AirPort Time Capsule 的 USB 端口的 AirPrint 打印机不支持 AirPrint 功能。通过 Wi-Fi 将 AirPrint 打印机连接到您的网络,或通过以太网将其连接到 AirPort 设备上的 LAN 端口。

心都碎了