Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

Hook on header and footer

Posted on 2012 年 7 月 18 日2021 年 3 月 12 日 By 日落 在〈Hook on header and footer〉中尚無留言

最近學用 Ajax 處理一些網頁上的事件,javascript 越寫越長,就覺得有必要按照程式碼類別拆成不同檔案,在執行時期決定到底哪些檔案需要匯入。像是管理介面用的 CSS、javascript 就需要在一般頁面當中載入,或是在不需要使用到 Google Maps 時將 javascript API 拿掉。

CodeIgniter 在 controller 與 view 切開後,傳遞資訊只能在 loader 載入時送參數,不過若有多個需要動態載入的資源放在一起,程式寫起來會很麻煩。

// Controller
$data['googleMapAPI'] = true;
$data['jqueryPlugin'] = true;

// View
<?php if( $googleMapAPI == true ): ?>
   <script src=" ..... "></script>
<?php endif; ?>

<?php if( $jqueryPlugin == true ): ?>
   <script src="...."></script>
<?php endif; ?>

這時候想到 WordPress Codex 有個不錯的作法可以參考。Wordpress 為了讓樣板、外掛製作能夠分開、不會互相影響,做出了一個 add_action( ) 的功能,外掛設計師將需要執行的動作「註冊」到系統中,樣板設計師在特定位置呼叫時,系統便會執行已註冊的動作。

// Plugin
<?php
   add_action('wp_head', 'js_include');
   add_action('wp_footer', 'action-on-ready');

   function js-include(){
      echo '<script src="..."></script>';
   }

   function action-on-ready(){
      echo '<script> $('document').ready(); </script> ';
   }
?>

// Template
<html>
<head>
   <titie> .... </title>
   <!-- load script in header -->
   <?php echo wp_head(); ?>
</head>
<body>
   ......
   <!-- load page scripts in footer -->
   <?php wp_footer(); ?>
</body>
</html>

CodeIgniter 有 Hook 類別,不過並沒有 view 的插入點,想試試看能不能把 wordpress add_action( )  功能實作出來。

Tags:PHP, 網頁設計

animate on jQuery

Posted on 2012 年 7 月 1 日2021 年 3 月 12 日 By 日落 在〈animate on jQuery〉中尚無留言

初學 jQuery 第一個感想就是 selector 非常好用,加上 effects 功能後,可以說是懶人的一大福音。

在 effects 中有看到 slide down / up,區塊會上下滑動,但沒看到左右滑動的,所以自己試著刻一個。

<style>
#box {
   width: 200px;
   display:  inline;
}
</style>

$('#box').animate(   {
      width: '0px',
      display: 'none'
   } , 'slow'  };

不過發現 box 不會消失,用開發人員工具去看 display 屬性沒有被改變。後來看了文件才發現是自己耍蠢。

jQuery 建立動畫特效的方式,是依照 duration 以及物件屬性的數字差,並在固定時間間隔對屬性的數值做遞增、遞減,是「數值」遞增、遞減,display 屬性值並非數字,所以 jQuery 沒辦法處理。

ps. 用了 jQuery 以後就不會寫 Javascript 了 …. Orz

Tags:JavaScript, jQuery, 程式設計

CodeIgniter 使用心得分享

Posted on 2012 年 6 月 15 日2021 年 3 月 12 日 By 日落 在〈CodeIgniter 使用心得分享〉中尚無留言

以前寫 PHP 時不知道有 framework 可以用,程式從頭到尾都硬幹,每個輪子都自己打造的下場,不外乎就是時間不夠用、事情常常 delay、bug 買一送二越 de 越多 …..。

得知有 PHP frameworks 時,大為欣喜,只是這麼多套 framework 到底應該先挑哪一套當作起步?就怕挑了一個功能太強太複雜的會讓自己一直碰壁、挑了個太冷門的之後換一套 framework 就接近從頭學起。

經朋友介紹,CodeIgniter 該有的基本功能都有了,且不難上手,適合第一次沒用過 framework 的人當作入門。所以最近幾個網頁功能都用 CodeIgniter 當作練習。

最近 C4Labs 朋友在玩  PHP,所以藉機分享一下最近 CodeIgniter 的使用經驗,以及問題、解決方法。以下是投影片,請多指教。

Introduction to codeigniter

View more PowerPoint from Zero Huang

Ref:
CodeIgniter | 小惡魔 – 電腦技術 – 工作筆記 – AppleBOY
http://blog.wu-boy.com/tag/codeigniter/

ps. 沒事不要裝 ion_auth 啊,會讓人嚴重墮落 XD

Tags:CodeIgniter, PHP

XSS Filter on CodeIgniter

Posted on 2012 年 6 月 13 日2021 年 3 月 12 日 By 日落 在〈XSS Filter on CodeIgniter〉中有 2 則留言

過去防止 XSS 攻擊都是透過 htmlspecialchars() 將「<」、「>」等符號編碼,但若是前端有使用 CKEditor 之類工具,文章中的樣式也會全部被洗掉。

最近用 CodeIgniter Input class 提供的 XSS filter 時,無意間發現 filter 不是將所有特殊符號過濾掉,而是經過 parser 以後才決定哪些標籤和屬性需要刪除。

一般常見用來測試 XSS 的字串:

<script>alert(123)</script>

輸出:

[removed]alert(123)[removed]

若是將 javascript 嵌在屬性當中,CodeIgniter 會將標籤留下、屬性刪除:

<a href="#" onclick="alert(123)">test</a>

輸出:

<a >test</a>
Tags:CodeIgniter, PHP, 資訊安全

取消 Ubuntu 上 MySQL 的開機自動啟動

Posted on 2012 年 6 月 8 日2021 年 3 月 12 日 By 日落 在〈取消 Ubuntu 上 MySQL 的開機自動啟動〉中有 2 則留言

由於小筆電跑很慢、記憶體也不多,想說 Apache 和 MySQL 都取消開機自動啟動,有需要在手動執行,便把 /etc/init.d 底下二個 script 砍刪除:

$ cd /etc/init.d/
$ rm apache2 mysql

重新啟動後,Apache 沒有啟動,但是 MySQL 卻活的好好的!

執行 /etc/init.d/mysql stop 後才注意到提示訊息,MySQL 必須使用 service 來控制啟動與停止:

Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql
mysql start/running, process 2035

service 似乎只能控制啟動或是停止服務,並沒有辦法修改開機啟動設定,問了男人以後看到「see also」有個 update-rc.d,男人說是用來設定不同 run-level 底下服務是否啟動。

印象中 Ubuntu 沒有 run-level 這東西吧,不過試試也無妨:

$ update-rc.d mysql disable 2 3 4 5    # /etc/init.d/mysql missing LSB information
$ update-rc.d -f mysql remove   # Nothing special

重新開機,還是看到 MySQL 在對我微笑 ……

找了 chkconfig、sysv-rc-conf 來看到底是自己代賽還是哪裡出錯,不過確實看到 MySQL 在 run-level 2 3 4 5 下都是關著的,開機仍舊會自動啟動。

Linux 上 everything is a file,不會用工具至少還可以改設定檔內容,用 find 和 grep 把 /etc 底下所有和 mysql  有關的檔案都掃了一遍,發現 /etc/init (不是 init.d) 下還有個 mysql.conf,而且把這個設定檔砍掉以後 service 就無法辨識服務。

開啟 /etc/init/mysql.conf,前面有幾行,註解掉以後開機就不會自動啟動 MySQL 了:

start on (net-device-up
          and local-filesystems
          and runlevel [2345])
stop on runlevel [016]

Ref:
Disable autostart from mysql
http://ubuntu.5.n6.nabble.com/Disable-autostart-from-mysql-td1537743.html

ps. 太久沒寫文章,手感都沒了 QQ

Tags:Linux, Ubuntu

文章分頁

上一頁 1 ... 124 125 126 ... 319 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.