2012年10月30日 星期二

2012年10月29日 星期一

FleaPHP find() 查詢不確定多條件


$conditions = null;

$fields = array('id', 'name', 'sex', 'phone');

foreach($fields as $each)
{
    if(!empty($_POST[$each]))
    {
        if($conditions)
        {
            $conditions .= " AND {$each}={$_POST[$each]}";
        }
        else
        {
            $conditions .= "{$each}={$_POST[$each]}";
        }
    }
}

?>




Reference :
fleaphp下不确定的多条件查询的巧妙解决方法_php技巧_脚本之家 
FleaPHP数据库操作的Condition分析_咨询界_百度空间



FleaPHP find 不查詢關聯數據表

/**
* 返回符合条件的第一条记录及所有关联的数据,查询没有结果返回 false
*
* @param mixed $conditions
* @param string $sort
* @param mixed $fields
* @param mixed $queryLinks
*
* @return array
*/
function & find($conditions, $sort = null, $fields = '*', $queryLinks = true)
{
...
}


    $rowsets = $tableposts->find('', '', '', false);
    dump($rowsets);




    /**
     * 查询所有符合条件的记录及相关数据,返回一个包含多行记录的二维数组,失败时返回 false
     *
     * @param mixed $conditions
     * @param string $sort
     * @param mixed $limit
     * @param mixed $fields
     * @param mixed $queryLinks
     *
     * @return array
     */

function & findAll($conditions = null, $sort = null, $limit = null, $fields = '*', $queryLinks = true)
{
...
}





Reference :
fleaphp crud操作之find函数的使用方法_php技巧_脚本之家 

2012年10月28日 星期日

libvirt cgroup

# mount -t cgroup none /sys/fs/cgroup -o remount,rw,relatime,perf_event,blkio,net_cls,freezer,devices,cpuacct,cpu,cpuset,devices,memory

mknod - make block or character special files

# mknod [OPTION]... NAME TYPE [MAJOR MINOR]




Reference :
Making static devices in UDEV (Shallow Thoughts)

Error creating domain: device model ‘/usr/lib64/xen/bin/qemu-dm’ not found

Unable to complete install ‘libvirt.libvirtError POST operation failed: xend_post: error from xen daemon: (xend.err “Error creating domain: device model ‘/usr/lib64/xen/bin/qemu-dm’ not found”)



# ln -s /usr/lib/xen-4.0 /usr/lib64/xen





Reference :
转发:在Ubuntu11.10上安装Xen 4.0

2012年10月25日 星期四

Debian Xen 初安裝

# apt-get install xen-hypervisor-4.1-i386 xen-linux-system-3.2.0-3-686-pae xen-utils-4.1 xenstore-utils xen-tools xenwatch xen-shell


// 設定 image-base 可用 VM 個數 (如果是 LVM 則可跳過)
# vi /etc/modules
[...]
loop max_loop=64

// 設定網路為 bridge 模式,即可接收外部 dhcp server IP 配置等
# vi /etc/xen/xend-config.sxp
[...]
(network-script network-bridge)
(network-script 'network-bridge netdev=eth1')
(network-script 'network-bridge antispoof=yes')

[...]
#(network-script network-dummy)
[...]
(vif-script vif-bridge)
[...]

// 設定 dom0 關機時 domU 也正常關機而不是儲存狀態
# vi /etc/default/xendomains
#XENDOMAINS_RESTORE=true
XENDOMAINS_RESTORE=false
...
#XENDOMAINS_SAVE=/var/lib/xen/save
XENDOMAINS_SAVE=""

// 設定 dom0 可用記憶體大小 (避免佔用過多)
# vi /boot/grub/menu.lst
title Xen 4.1-i386 / Debian GNU/Linux, kernel 3.2.0-3-686-pae
root (hd0,0) kernel /boot/xen-4.1-i386.gz dom0_mem=256M vga=792
module /boot/vmlinuz-3.2.0-3-686-pae root=/dev/sda1 ro console=tty0
module /boot/initrd.img-3.2.0-3-686-pae

// 允許 virt-manager 管理 Xen,否則會出現如下訊息
Unable to open a connection to the libvirt management daemon.
Verify that:
 - A Xen host kernel was booted
 - The Xen Service has been started
# vi /etc/xen/xend-config.sxp
(xend-unix-server yes)

// 遠端 VNC 連線
# vi /etc/xen/xend-config.sxp
(vnc-listen '0.0.0.0')


# reboot


# uname -r
# xm list




Reference :
Xen - Debian Wiki





2012年10月24日 星期三

製作 Debian 安裝 USB 碟

// 從 http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-i386/current/images/hd-media/ 下載 boot.img.gz

$ wget http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-i386/current/images/hd-media/boot.img.gz
// 將開機檔案解壓至隨身碟 (注意:此時隨身碟應為非掛載狀態,執行動作後隨身碟資料會被洗掉)
# zcat boot.img.gz > /dev/sdb (應改為你的 USB 碟位置)


// 從這裡 http://www.debian.org/distrib/netinst#smallcd 下載安裝 iso 檔

$ wget http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-6.0.6-i386-businesscard.iso
// 將隨身碟掛載起來,並將 iso 檔複製進去
# mount /dev/sdb1 /mnt
# cp debian-6.0.6-i386-businesscard.iso /mnt/netinst.iso
# umount /mnt


之後即可以隨身碟開機安裝




Reference :
4.4. 準備從 USB 隨身碟開機的檔案
製作 Debian GNU/Linux 的 USB 開機網路安裝碟 « hiroshi yui

Windows VirtualBox 使用 USB

Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer.
VirtualBox 存取 usb 子系統時失敗



若是在虛擬機設定值裡點選 USB 出現錯誤而無法新增篩選器

進入以下資料夾 C:\Program Files\Oracle\VirtualBox\drivers\USB\filter

對 VBoxUSBMon.inf 按右鍵 -> 安裝

重啟 VirtualBox




Reference :
安裝 VirtualBox 的 Windows USB 驅動程式 ( Driver )
virtualbox.org • View topic - USB not working

VirtualBox 從隨身碟開機

VirtualBox boot from usb

Linux :
$ VBoxManage internalcommands createrawvmdk -filename ~/mydrive.vmdk -rawdisk /dev/sda -partitions 1

Windows :
> cd C:\Program Files\Oracle\VirtualBox
> VBoxManage internalcommands createrawvmdk -filename D:\mydrive.vmdk -rawdisk \\.\PhysicalDrive3 -partitions 1


* 在 Windows 下的 PhysicalDrive 代號為磁碟管理裡面的磁碟編號



* 產生的 VMDK 是對實體 Partition 的映射,而非將 physical disk (partition、raw) 轉成新的 image。

* Windows 下產生的 VMDK 映像支援 Linux 下的 ext3 格式

* 如果只有一個 partition 時,可以不指定 -partitions

* 指定 -partitions 時會產生多個 VMDK 檔 (例:mydrive.vmdk、mydrive-pt.vmdk),加入裝置時加入 mydrive.vmdk 即可。


* 以後完全不使用時,記得到虛擬媒體管理員將硬碟釋放、移除。



加入映像方法:

設定值 -> 存放裝置 -> IDE 控制器 -> 加入硬碟

選擇現有的硬碟


如果原本已經有安裝系統,加入新的映像後會多一個裝置,選擇 2) Primary Slave 從隨身碟開機




Reference :
VirtualBox虚拟机与物理机文件传输九大方法总结 | 奶牛博客
VirtualBox設定由USB隨身碟開機 « 高登工作室


DD-WRT VPN Server 設定 (PPTP Server)

Services -> VPN -> PPTP Server


KMPlayer 旋轉影片

右鍵 -> 選項 ->進階選單

右鍵 -> 視訊(基本) -> 螢幕旋轉(CCW) -> 90度旋轉

右鍵 -> 視訊(進階) -> 正常 (不能用高速模式或超高速模式)


此時再開啟影片播放

2012年10月23日 星期二

git reset a uncommit file

恢復一個未 commit 的檔案
$ git checkout filename




Reference :
git: revert (reset) a single file

FleaPHP 版本

在 FLEA/FLEA.php 裡,第 35 行可看到
define('FLEA_VERSION', '1.0.70.1078');

2012年10月18日 星期四

Windows 7 修改開機選單

> bcdedit
無法開啟開機設定資料存放區。
存取被拒。


開始 -> 所有程式 -> 附屬應用程式 -> 命令提示字元(按右鍵) -> 以系統管理員身份執行



列出目前使用中的開機載入器資訊
> bcdedit
等同於
> bcdedit /enum ACTIVE
 
修改顯示系統名稱
XP
> bcdedit /set {ntldr} description "Windows XP"
7
> bcdedit /set {current} description "Windows 7"

設定預設開機系統為 XP
> bcdedit /default {ntldr}

設定等候時間
> bcdedit /timeout 15




Reference :
如何修改Win7開機選單 啟動選單 | IT 達人

網頁 document.ready / window.onload 事件

ready : 在網頁 DOM 結構就緒時

jQuery
$(document).ready(function(){
//do something
});

jQuery 默認參數是 document 
 
$().ready(function(){
//do something
});
 
$(function(){
//do something
});

onload : 在網頁所有關聯文件皆載入後

javascript
window.onload = function(){
//do something
};
jQuery
$(window).load(function(){
//do something
});




Reference :
jQuery ready vs load - 黑暗執行緒
jquery中的$(document).ready()方法和window.onload方法区别 | 梦三秋
document.ready和onload的区别——JavaScript文档加载完成事件
Javascript在页面加载时的执行顺序 @ 随网之舞

MySQL Query History

設定 MySQL General Log、Slow Query Log


MySQL 5.1 /etc/mysql/my.cnf 設定檔有些小更改 (see below)
Slow Query Log in MySQL 5.1 Cheat Sheet | Palomino DB 


MySQL 5.1 以上支援動態啟用 Log
mysql> set global log_output=file;
mysql> set global general_log_file='/var/log/mysql/general.log';
mysql> set global slow_query_log_file='/car/log/mysql/slow.log';
mysql> set global general_log=on;
mysql> set global slow_query_log=on;

mysql> SHOW VARIABLES LIKE 'slow_query_log_file';


View Log
# cat /var/log/mysql/general.log | grep -E '[[:space:]]+[[:digit:]]+[[:space:]]Query' | grep -iE 'Query([[:space:]])+(/\*.*\*/)?(insert|update|delete)'




Reference :
Enable slow query logging in MySQL
MySQL :: MySQL 5.1 Reference Manual :: 5.2.5 The Slow Query Log
MySQL 日志文件 说明 - David Dai -- Focus on Oracle - 博客频道 - CSDN.NET 


SQL - MySQL Server 日常維護: Log 分析(mysqlsla) - 史萊姆論壇

查看 apt-get / aptitude 的 log

使用 apt-get 管理的會記錄在 /var/log/apt/history.log

使用 aptitude 管理的會記錄在 /var/log/aptitude

但底層都是 dpkg,所以會在 /var/log/dpkg.log


將以下函式加入 ~/.bashrc
function apt-history(){
      case "$1" in
        install)
              cat /var/log/dpkg.log | grep 'install '
              ;;
        upgrade|remove)
              cat /var/log/dpkg.log | grep $1
              ;;
        rollback)
              cat /var/log/dpkg.log | grep upgrade | \
                  grep "$2" -A10000000 | \
                  grep "$3" -B10000000 | \
                  awk '{print $4"="$5}'
              ;;
        *)
              cat /var/log/dpkg.log
              ;;
      esac
}

之後就可以執行如 apt-history install 來查看




Reference :
Linux Commando: How to show apt log history

2012年10月17日 星期三

rtl8192cu Failed to request firmware

rtl8192cu:rtl92cu_init_sw_vars():<0 -0="-0"> Failed to request firmware!
$ wget ftp://WebUser:Lc9FuH5r@209.222.7.36/cn/wlan/RTL819xC_USB_linux_v3.4.4_4749.20120806.zip
$ unzip RTL819xC_USB_linux_v3.4.4_4749.20120806.zip
$ cd RTL8188C_8192C_USB_linux_v3.4.4_4749.20120806/
$ chmod u+x install.sh
$ ./install.sh





Reference :
[SOLVED] trying to install Netgear usb wireless adapter - Page 4 - Ubuntu Forums
Realtek

2012年10月14日 星期日

2012年10月9日 星期二

OpenVAS Server

Nessus 在 3.0 後更改授權,現改用免費的 OpenVAS (從 Nessus 分支)

# apt-get install openvas-client openvas-server openvas-plugins-base

# openvas-mkcert

// create a user that for client login by pass or cert
# openvas-adduser

// updates the OpenVAS security checks
# openvas-nvt-sync

// waiting for a long time
# /etc/init.d/openvas-server start





Reference :
作業系統弱點掃描 -- OpenVAS:::iThome Download-你要的軟體在這裡:::
[IT][Linux] OpenVAS 安裝與使用 @ xiangyang17 :: 痞客邦 PIXNET ::

php Function split() is deprecated

PHP 5.3 不支持 split() 等函式


不需要 regex 的,可用 explode() 代替
需要 regex 的 split, 可用 preg_split() 代替




Reference :
小美的部落格 » php Function split() is deprecated 的解决办法

2012年10月8日 星期一

FleaPHP RBAC 更新用戶密碼

若是繼承了 FLEA_Com_RBAC_UsersManager,不要使用 update 或 save 來更新密碼,而要使用 FLEA_Com_RBAC_UsersManager 內的函式來更新

因為 FLEA_Com_RBAC_UsersManager 會依據 FLEA_Com_RBAC_UsersManager::$encodeMethod 的方法加密後,才寫回資料庫


FLEA/FLEA/Rbac/UsersManager.php

line 300 :
FLEA_Com_RBAC_UsersManager::changePassword($username, $oldPassword, $newPassword) 

line 323 :
FLEA_Com_RBAC_UsersManager::updatePassword($username, $newPassword)

line 340 :
FLEA_Com_RBAC_UsersManager::updatePasswordById($userid, $newPassword)




Reference :
FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制 - QeePHP 应用程序开发框架 - 博客频道 - CSDN.NET

Warning: 应用程序使用了默认的 RBACSessionKey

/**
 * 指示 RBAC 组件用什么键名在 session 中保存用户数据
 *
 * 如果在一个域名下同时运行多个应用程序,
 * 请务必为每一个应用程序使用自己独一无二的键名
 */

FLEA::setAppInf('RBACSessionKey','project123');




Reference :
RBACSessionKey'报错的解决方法_小陶的备忘录_百度空间

2012年10月4日 星期四

Windows 7 免密碼存取共用資料夾

1. 在要分享的資料夾按右鍵按內容




2. 切到共用標籤,選取進階共用




 3. 將共用此資料夾打勾,另外執行權限進行使用者權限設定




4. 要讓使用者寫入、刪除檔案的話選取完全控制





5. 要允許免密碼連線請進入網絡和共用中心




6. 設定關閉以密碼保護的共用







Reference :
廖子's黑白記: Windows 7網路芳鄰免密碼設定:其實只要兩個步驟,很簡單

Outlook 2010 2013 匯入通訊錄 (.csv)

匯入 .csv 檔

1. 檔案
2. 開啟
3. 匯入
4. 從其他程式或檔案匯入
5. 逗點分隔值 (windows)
6. 以匯入的項目取代重複的項目
7. Outlook 資料檔、[v] 包含子資料夾,匯入項目到以下的資料夾
完成




Reference :
在 Outlook 2010 匯入備份電子郵件和連絡人

windows command line connect share folder

> net use W: \\192.168.11.22\share

> net use /delete W:

> net use n: \\192.168.11.22\share PASSWORD /user:USERNAME

2012年10月2日 星期二

shell script regular expression

print only match string
$ uptime | grep -o '[0-9]\+ users'

shell 輸出無法重定向

$ type time
$ ( time ls ) 2>&1 | grep user


test.sh
                line=$( msgmerge -v -o locale/$i/LC_MESSAGES/messages.po locale/$i/LC_MESSAGES/messages.po messages.po 2>&1 )

                # 檢查是否有更新
                missing=$( echo $line | grep -o 'missing [0-9]\+' | awk '{print $2}' )

                if [ $missing -gt 0 ];then
                        echo "* $missing updated."
                        echo "You should edit 'locale/$i/LC_MESSAGES/messages.po'"
                fi




Reference :
重定向Bash命令——time - seizeF的专栏 - 博客频道 - CSDN.NET
关于dd命令输出结果无法重定向到文件的问题 - feisky - 博客园

xgettext 指定 parse 格式

有時候使用網頁時 view 的部分會以 .html 或 .tpl 等命名,要做多國語系抽樣時會顯示錯誤

warning :
xgettext: warning: file `xxx.html' extension `html' is unknown; will try C



solution :
指定使用該語言語法來 parse
$ xgettext -d messages APP/View/*.html --from-code=UTF-8 --language=PHP




Reference :
G-ROC web applications » Blog Archive » Poedit xgettext parser setup reminder