今天重做了系统 想起有一个软件没有测试 叫 devtodo 结果出现了错误如下
todoterm.cc:18: error: ‘getenv’ was not declared in this scope
todoterm.cc:22: error: ‘setenv’ was not declared in this scope
查了一下,资料 还真的很少
不过还是可以解决的找个适当的位置 把下面一句话加上就OK 了
#include <cstdlib>
all about symfony
今天重做了系统 想起有一个软件没有测试 叫 devtodo 结果出现了错误如下
todoterm.cc:18: error: ‘getenv’ was not declared in this scope
todoterm.cc:22: error: ‘setenv’ was not declared in this scope
查了一下,资料 还真的很少
不过还是可以解决的找个适当的位置 把下面一句话加上就OK 了
#include <cstdlib>
archlinux 安装 LAMP环境
archlinux 据说是很牛的系统 试了以后 的确很牛,牛到我累了好长时间也不能成功驾驭
不过工作重要 还是先说说LAMP环境如何来做吧。
archlinux 有一个传说中很牛的 类似 apt-get 的东西 叫 pacman
用命令
pacman -S apache mysql php
就可以直接把 apache mysql php 基本安装完成 我不确定顺序是否有影响 但是我建议大家如果想事少一点还是按这个顺序来吧
不知道从什么时候开始 php有一个openbase_dir 的变量 这个变量标识哪些目录可以用来存放 php文件 即 document root 一定要在openbase_dir 里,否则不会执行
而且 archlinux 的默认的document root 是 /srv/html 这个目录默认没有 而且当安装apache的安装后 我习惯的测了一下 ,这个目录不存在,会让apache 启动失败,所以我改成了/var/www 结果 php 放在/var/www下时 ,由于不在 openbase_dir里 所以不能执行 而且不报任何错误(由于php.ini的设置)所以就会出现 要么不解释 php文件 ,解释的时候 什么也没有 就是一片空白 一点错误也不报。 最难受的是 当GOOGLE archlinux lamp 的时候 一点也没有文章 提及这一现像,也没有解决方案 ,让我弄了好长时间才发现解决办法 。
解决办法就是 在php.ini 里 修改openbase_dir 或是 对应的不要修改 把文件直接放到/srv/html里
mysql 也是用得相当吃力 命令行下可以很好的进入 但是phpmyadmin就不可以 提示 连接被拒 也想过很多办法 但是未果 。后来发现不知道什么时候,或是哪条设置让 phpmyadmin不能用root 没有密码的情况下 连接 到mysql 没有办法 只好强行新建一个用户 给出所有权限。还有一点 现在MYSQL聪明了,在 skip-grant-tables时不可以对用户进行操作,这样是安全了很多,也让忘了密码的时候没有办法 进行找回
OK 只要注意以上两点基本上LAMP环境没有问题了
《创建symfony插件》一文中对如何编写插件进行了简单的介绍, 下面用一个例子来详细讲解一些如何创建一个生成QRcode的插件.
什么是QR code(QR码)?
简单来说, QR code是用来存储数据的矩形黑白点阵, 可以在很小的图片中存储大量的数据, 在移动领域应用广泛. 详细的说明请参考维基百科(http://zh.wikipedia.org/wiki/QR%E7%A2%BC)
应项目需求, 我们要编写一个用来生成QR code的Helper, 为了更好的重用性, 我们要将这个Helper写成一个插件.
首先, 创建目录结构
$cd plugins$mkdir QRcodePlugin$cd QRcodePlugin$mkdir lib web$mkdir lib/helper
生成QR code的过程中我们使用到了一个第三方类库 qr_img0.50g, 在readme中我们找到了使用方法如下:
php/qr_img.php?d=data[&e=(L,M,Q,H)][&s=int size][&v=(1-40)][&t=J]
[&m=(1-16)&n=(2-16)[&o=original data][&p=(0-255)]]
访问该文件会根据url中的参数生成一个QR code 图片, 我们只要将这个库放到web目录下就可以了.
$mv qr_img0.50g pathtoproject/plugins/QRcodePlugin/web/qr_img
然后我们来编写Helper, 根据symfony中helper的命名规则创建文件如下
$cd pathtoproject/plugins/QRcodePlugin/lib/helper
$vi QRcodeHelper.php
<?php
# [useage]
# qr_img.php?d=[data]&e=[(L,M,Q,H)]&s=[int]&v=[(1-40)]
# (&m=[(1-16)]&n=[(2-16)](&p=[(0-255)],&o=[data]))
#
# d= data URL encoded data.
# e= ECC level L or M or Q or H (default M)
# s= module size (dafault PNG:4 JPEG:8)
# v= version 1-40 or Auto select if you do not set.
# t= image type J:jpeg image , other: PNG image
#
# structured append m of n (experimental)
# n= structure append n (2-16)
# m= structure append m (1-16)
# p= parity
# o= original data (URL encoded data) for calculating parity
#
function QRcode($d, $e = 'M', $s = null, $v = null, $t = 'P', $m = null, $n = null, $o = null, $p = null)
{
$path = '/QRcodePlugin/qr_img/php/qr_img.php';
$url = $path . '?d=' . $d;
if ($e && in_array(strtoupper($e), array('L', 'M', 'Q', 'H'))) {
$url .= '&e=' . strtoupper($e);
} else {
$url .= '&e=M';
}
if ($s) {
$url .= '&s=' . $s;
}
if ($v) {
$url .= '&v=' . $v;
}
if ($t) {
$url .= '&t=' . $t;
}
if ($m) {
$url .= '&m=' . $m;
}
if ($n) {
$url .= '&n=' . $n;
}
if ($o) {
$url .= '&o=' . $o;
}
if ($p) {
$url .= '&p=' . $p;
}
$output = image_tag($url, array('alt' => $d));
return $output;
}
这样, 我们就写好了一个只有一个Helper的Plugin, 我们来看一下插件结构如下.
|--.lib《创建symfony插件》一文中我们说过项目中是无法直接访问plugin中的web目录的, 所以我们还要copy一份web目录到项目的web目录下
|...`--.helper
|.......`--.QRcodeHelper.php
`--.web
....`--.qr_img
........|--.data
........|--.image
........`--.php
............`--.qr_img.php
$cp -rf pathtoproject/plugins/QRcodePlugin/web pathtoproject/web/QRcodePlugin接下来我们来测试一下Plugin是否有效.
$cd pathtoproject/$./symfony init-app test$./symfony init-module test test$vi apps/test/modules/test/actions/actions.class.php<?php
class testActions extends sfActions
{
public function executeIndex(sfWebRequest $request) { }
}
$vi apps/test/modules/test/templates/indexSuccess.php<?php use_helper('QRcode');?>
<?php echo QRcode('fuck');?>
访问http://project/test.php/test/index效果如下:

源代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css" />
</head>
<body>
<img alt="fuck" src="/QRcodePlugin/qr_img/php/qr_img.php?d=fuck&t=P" />
</body>
</html>
测试通过, 本文完.
常用快捷键
* Alt + F1 打开主菜单
* Alt + F2 运行
* Alt + F4 关闭当前窗口
* Alt + F5 取消最大化窗口 (恢复窗口原来的大小)
* Alt + F7 移动窗口 (注: 在窗口最大化的状态下无效)
* Alt + F8 改变窗口大小 (注: 在窗口最大化的状态下无效)
* Alt + F9 最小化当前窗口
* Alt + F10 最大化当前窗口
* Alt + Space 打开窗口的控制菜单
* Ctrl + Alt + D 显示桌面
* Ctrl + Alt + L 屏幕锁定
* Print Screen 截取全屏
* Alt + Print Screen 截取窗口
* F1 打开帮助文档
* F2 重命名文件/文件夹
* F10 打开窗口的控制菜单
* F11 全屏和普通大小切换
? F12 展示当前窗口所有程序
* Alt + Tab 切换窗口
* Alt+Shift+Tab 反向切换窗口
* 旋转3D桌面 = Ctrl + Alt + 左/右箭头(也可以把鼠标桌面使用滚轮切换)
* 旋转3D桌面( 活动窗口跟随) = Ctrl + Shift + Alt + 左/右箭头
* 手动旋转3D桌面 = Ctrl + Alt + 左键单击并拖拽桌面空白处
* 窗口透明/不透明 = possible with the “transset” utility or Alt + 滚轮
* 放大一次 = 超级键 + 右击
* 手动放大 = 超级键 + 滚轮向上
* 手动缩小 = 超级键 + 滚轮向下
* 移动窗口 = Alt + 左键单击
* 移动窗口时贴住边框 = 左键开始拖动后再 Ctrl + Alt
* 调整窗口大小 = Alt + 中击
* Bring up the window below the top window = Alt + middle-click
* 动态效果减速 = Shift + F10
* 水纹 = 按住 Ctrl+超级键
* 雨点 = Shift-F9
* 桌面展开= Ctrl + Alt + 下箭头,然后按住 Ctrl + Alt 和左/右箭头选择桌面
应用程序快捷键(备注: 并非所有程序都适合)
* Ctrl+C 复制
* Ctrl+N 新建窗口
* Ctrl+S 保存
* Ctrl+V 粘贴
* Ctrl+X 剪切
* Ctrl+Shift+Z 重做刚撤销的一步操作
* Ctrl+Z 撤销上一步操作
操作技巧
* 直接拖拉在最大化时地窗口标题可以还原窗口大小,再拖放回去就最大化
* 在音量控制处用鼠标滚轮滚动可以直接调整音量,在任务栏中滚动滚轮可以切换任务栏,工作区则切换工作区
* 按鼠标滚轮即粘贴, 相应情况下按下鼠标左右键等价于按鼠标中键
* shift + 鼠标滚轮 可以后退页面
* 鼠标中键点标题栏可以隐藏当前窗口
* 按住shift 拖动窗口可以吸附上下边缘地移动
* 直接将 文件管理器 中地文件拖到 GNOME终端 中就可以在终端中得到完整地路径名
* 修改目录图标:可将文件管理器中地图片直接拖到文件夹属性所在地图标上.
* 鼠标中键直接单击 滚动条 地空白处,屏幕即滚动到那处。
* 中键拖动图片到桌面,可择定设为墙纸
* 延时戴屏 在 终端 或 “运行”窗口中输入命令: gnome-screenshot –delay 3 ,将延时 3 秒后戴屏。
前几天刚刚给公司配了新的内网服务器, 今天bobhero要看结果, 那就简单看一下吧.
查看linux内核版本
$uname -r
>2.6.27-7-generic
查看redhat/centos版本
$cat /etc/redhat -release
>CentOS release 5.2 (Final)
查看php版本
$php -v
>PHP 5.2.6 (cli) (built : May 5 2008 10:32:59)
>Copyright (c) 1997-2008 The PHP Group
>Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
查看mysql版本
$mysql -v
>Server version: 5.0.45 Source distribution
查看apache版本
$rpm -qa httpd
>httpd-2.2.3-11.el5_2.centos.4
$apache2 -v
>Server version: Apache/2.2.8 (Ubuntu)
>Server build: Feb 2 2008 04:03:01
查看sendmail版本
$sendmail -d -i
Version 8.13.8
查看symfony的版本
$symfony -V
symfony version 1.2.4-DEV (/home/maker/www/symfony/lib)
由 WordPress 所驱动