Posts

Showing posts from 2013

Drupal : 如何使用同個資料庫但套用不同的 Theme ?

你會不會有這樣的需求? 當這個網站要讓電腦跟手機看到 雖然說 Responsive Design 可以解決大部分的問題 這邊 Subsite 不適用的原因是 雖然 users、roles、sessions 可以共用 但我要的不是另外架一個子站 整個站的資料不要跟主站有所分離 說白了就是 同一個網站要有不同的 view by device 如果你遇到這個問題你會怎麼處理? mobile app 嵌入的 web view 讀到的網頁不要 header 跟 footer (只要 content) 但如果你在 mobile 上瀏覽的網站卻要是正常的(有 header & footer) 其實如果只有單一個網頁個別處理是 ok 的 可以在路徑上面多個參數 搭配 theme function 或 template 去做變化 如果該頁是 view 又有 intra link 可能就會破功 來試試看「 Themekey 」吧! Themekey 就好像是個 for theme 的 Rules 他內建可以 trigger 的 event 相當多 不像 Rules 在不熟悉的時後會覺得使用上沒有頭緒 Themekey 的運作很簡單 先挑選一個 Properties(event),然後在選擇 Operator,再設定 Value 即可 現在假設我要的目的是 電腦跟手機連到同個網站在資料需要一致下,你打算怎麼做? 我一開始想說在網址列多個參數做識別 例如 http://www.facebook.com 跟 http://www.facebook.com/ ?device=mobile 這時候我選的 PROPERTIES 是 SYSTEM:QUERY_STRING Operator 選擇 = Value 設成成 device=mobile 這是 work 的 但有 intra link 的頁面會遇到上面說的問題 後來又想說如果說取得網址時在 meta data 塞些資料識別 但這樣似乎又太麻煩 其實他的 Properties 裡面還有 SYSTEM:USER_AGENT 可以直接針對不同 device 導到不同 Theme 去 後來看到 SYSTEM:HOST 有種一語驚醒夢中人的感覺 直接設定如果

如何找到之前 compile 的指令

因為手殘的關係 不小心把之前紀錄 compile 指令的檔案砍了 想說原本的 compile 的 source 裡面應該有當時下的 compile 參數 果不其然! 在 source 的 config.nice 裡面 #! /bin/sh # # Created by configure './configure' \ '--prefix=/usr/local/php5' \ '--with-apxs2=/usr/local/apache2/bin/apxs' \ '--with-mysql=/usr/local/mysql' \ '--with-mysqli=/usr/local/mysql/bin/mysql_config' \ '--with-config-file-path=/usr/local/php5' \ '--enable-mbstring' \ '--enable-ftp' \ '--with-zlib' \ '--with-regex=php' \ '--with-xmlrpc' \ '--with-gd' \ '--enable-gd-native-ttf' \ '--enable-exif' \ '--with-jpeg-dir=/usr/lib' \ '--with-png-dir=/usr/lib' \ '--with-freetype-dir=/usr/lib' \ '--with-xpm-dir=/usr/lib' \ '--with-gettext' \ '--enable-soap' \ '--with-pdo-mysql=/usr/local/mysql' \ '--with-mhash' \ '--with-mcrypt' \ '--with-openssl' \ '--with-curl' \ '--enabl

The cmdb add entry failed

剛想對 VPN User 做刪除或編輯的動作 但系統會跳出「The cmdb add entry failed」 查了一下有人說重開可能會解決 (大概有十個月沒重開了) 果然就解決了! PS. 要刪除 VPN User 需要先把他所屬的 group 移除 環境: Fortigate 80C

Apache run multiple SSL Virtual Host

基本上要 run single SSL site 在 Apache 上還蠻容易的 但再加上了一個 SSL site 問題就來了 不就在 SSL zone (httpd-ssl.conf)那邊加上另外一個 Virtual Host 就好了嗎? SSL 的 Virtual Host 從 Name Based 換到 IP Based 再加上額外的 Private IP 也是不行 後來用瀏覽器連 Private IP 的 SSL 卻是正常的 才想到說應該把那 Private IP 也 mapping 到另外一個 Public IP 由於我們公司主機在防火牆下 所以除了更改 DNS 外,還有修改一下防火牆的規則 舉個實際例子說明: Public IP 200.200.200.1 (80 & 443) 原本對應到 Private IP 10.1.1.1 後來加入了一個 10.1.1.2 的 Private IP 但連 https://b.test.com 他顯示的認證還是 b.test.com 的 如果只有一個 Public IP 那就只能指定其他的 port(如 https://200.200.200.1:4433) 了 80 跟 443 以外的 port 一般人都蠻難接受的(要公開的話很不方便,自用就還好) 所以還是多個 IP 好辦事阿~ 提供 Apache 的相關設定供參考 這邊僅提供 SSL Virtual Host 的部份 我並沒有去設別設定 Port 80 (httpd-vhost.conf)那邊 Port 80 (httpd-vhost.conf)那邊還是維持 Name Based 的方式 Listen 10.1.1.1:443 Listen 10.1.1.2:443 NameVirtualHost 10.1.1.1:443 NameVirtualHost 10.1.1.2:443   DocumentRoot "/home/www/a.test.com"   ServerName a.test.com:443   ServerAdmin service@test.com   ErrorLog "/usr/local/apache2/logs/error_ssl

When I use button type for ajax, howto skip the validating msg ?

Drupal7 Form API 內建了 ajax 的功能 基本上要做出 JS 連動表單是沒問題的 這問題困擾了我好幾天 我想用 onclick 的方法把資料帶到另外一個表單 某些欄位是必填的 所以當 onlick 的時後 drupal 就會把要填的欄位都檢查一遍 他也會掃過 hook_validate 之前還因為這原因停用了 hook_validate 今天終於找到跳過 validate 的方式(validate 待真正 submit 再去驗證) 只要加入紅色的那行就可以囉! $form['fb'] = array(   '#type' => 'button',   '#value' => 'Grab Facebook data into',   '#ajax' => array(     'callback' => 'ajax_fb_callback',     'wrapper' => 'replacement',     'method' => 'replaceWith',   ),   '#limit_validation_errors' => TRUE, );

mysql 5.5 unknown variable 'master-host=192.168.100.1'

昨天將 Master 升級後 今天 MySQL Slave 也從 mysql 5.1 升級到 mariadb 5.5.29 mariadb 5.5 綜合了 mysql 5.5 及 5.6 的功能 先確定 Master 有開啟 log-bin 功能後 備份一份要同步的資料庫到 slave 去 由於 mysql 5.5 開始不支援 my.cnf 裡 master-host 等的設定 所以不能把 master 的參數設定到裡頭 只能透過 sql 指令的方式建立 replication 連結 不然會看到下面錯誤訊息 Installing MariaDB/MySQL system tables in '/home/mysql/data' ... 130208  7:08:31 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'master-host=192.168.100.1' 130208  7:08:31 [ERROR] Aborting 以下是針對 slave 的操作步驟: install mysql start mysql restore db SQL : slave stop SQL : change master to master_host='192.168.100.1', master_port=3306, master_user='repl', master_password='xxxxxxx'; SQL : slave start Reference : mysql主从配置(freebsd+mysql5.5.13) mysql关于log_bin相关命令

mysql function 中文輸出亂碼

從 mysql 5.1.56 升級到 mariadb 5.5.29 升級完發現手機上某個使用 function 的欄位都是問號 想說改看看 mysql encoding 就正常了 不過改了之後還是一樣 ._. 想說會不會針對 function 的新功能 但怎麼都找不到相關資訊 後來發現原本問題出在 function 的 definer 由於我升級沒有把權限的部份一併帶過去 由於帳號不多而且備份還原權限很麻煩 所以就自己把權限的部份還原 剛好那個 function 的 definer 不在權限列表中 就出現了中文變 ????? 的問題 PS. 如果還是一樣,把 Deterministic 改成 not 看看 僅供參考~