Joomla jconsole 開發應用

如果在執行指令時有需要其它額外的指令或選項,在 JConsole 可以這樣做:
[cc lang=”bash”]
php cli/console hello who where -a
[/cc]

鍵入 php cli/console hello -h 時會列出以下的 help:
qweqwe
其中紅線所指的指令格式 [command] 為 Argument , [option] 當然不用說就是 option。
Continue reading Joomla jconsole 開發應用

使用 Joomla Jconsole 操作方法

在前篇 [Joomla 3 cli 開發範例] 有提過使用 Joomla 內所使用的 cli 目錄來開發 CLI 的應用程式。

除此這樣的應用之外,還有一個叫做 JConsole 的套件可提供許多現有的方法來快速開發,你可以到這位作者 asika32764 的 Github asika32764/JConsole 查閱相關資訊。
Continue reading 使用 Joomla Jconsole 操作方法

直接從 Github fetch PR 做測試

如何直接從別人家所開 PR 直接抓下來測試?

現在 Github 有個新功能可以直接抓 PR ,命令如下:
[cc code=”bash”]
$git fetch remoteName pull/PRNumber/head:PRNumber
[/cc]

如果開的 PR 號碼是 199 那指令就像這樣:
[cc code=”bash”]
$git fetch upstream pull/199/head:pr199
[/cc]

然後切換要測試的 Branch
[cc code=”bash”]
$git checkout pr199
[/cc]

這樣就可以直接測試人家做的程式了。

Joomla 3 cli 開發範例

在 Joomla 3.3 的版本中,要用 Command line 操作命令比先前的版本較為簡單多了,一來是不需要用到 Web Server 來埶行,只要用 php cli 就可以使用,這篇先用比較簡單的方式來新增一個用 cli 的應用程式。

  • 首先在 joomla/cli 下用 update_cron.php 為範例,複製一個名為 test.php 的檔案,並保留檔頭資訊。
  • 在 class Updatecron extends JApplicationCli 的 Updatecron 變更 class 名稱為 TestSample 。
  • 將 doExecute() 的裡的程式碼也移除。並鍵入這樣的程式碼。
    [cc lang=”php”]echo ‘Hello world !!’ . PHP_EOL;[/cc]
  • 在最後一行 JApplicationCli::getInstance(‘Updatecron’)->execute(); 中的 Updatecron 也更改為剛剛的 class 名稱 TestSample。
  • 最後在文字提示命令輸入 php cli/test.php 出現如下的畫面,接下來就可以再做後續的 cli 應用開發了。

2014_7_8_上午11_33

整個程式碼如下,請參考。
Continue reading Joomla 3 cli 開發範例

在 Joomla 使用 SQL 字串的 IN()

一般說來要用 WHERE “IN()” 這個功能來選出指定的資料,都會寫這樣的程式碼來組 SQL 字串。
[cc lang=”php”]
//原資料如下
$filterCity = Array
(
[0] => 臺北市
[1] => 臺中市
[2] => 宜蘭縣
[3] => 花蓮縣
)

//用 implode 組成 IN 的 SQL 字串
$inCity = “‘” . implode(“‘, ‘”, $filterCity) . “‘”;
$sqlWhereCity = sprintf(“city_title IN(%s)”, $inCity);

[/cc]

在 Joomla 中可以這樣直接寫。

[cc lang=”php”]

//在這因為是字串,所以必需要借用 getDbo 的 quote 為陣列成為字串時加上單引號
$db = \JFactory::getDbo()
$filterCity = $db->quote($filterCity);

//如果要選的資料是純數字的 ID 其實只要這行即可
$sqlWhereCity = ‘`city_title`’ . new \JDatabaseQueryElement(‘IN()’, $filterCity);
[/cc]

另外,如果使用了 Windwalker 還可以這樣寫。

[cc lang=”php”]
//如果在 name space 下要在該檔最前面引入 Windwalker 的程式組
use Windwalker\Compare\InCompare;

$sqlWhereCity = (string) new InCompare(‘`city_title`’, $filterCity);
[/cc]

PHP 效率寫法

原來寫法是這樣
[cc lang=”php”]
type == ‘individual’)
{
$buttonStyle = ‘btn-info’;
}
elseif($item->type == ‘resident’)
{
$buttonStyle = ‘btn-warning’;
}
else
{
$buttonStyle = ‘btn-inverse’;
}
echo $buttonStyle;
?>
[/cc]

後來看到這樣有效率的寫法

[cc lang=”php”]
$styles = array(‘individual’ => ‘btn-info’, ‘resident’ => ‘btn-warning’);
$buttonStyle = (isset($styles[$item->type]) ? $styles[$item->type] : ‘btn-inverse’;
echo $buttonStyle;
[/cc]

把要檢查的值都放在 Array 裡,再將 Array 裡的鍵值做比對轉換出來的值跟當初用 if 判斷是一樣的效果的。

PHPConf Taiwan 2013議程簡報資訊

556607_668734586472080_1556986640_n

PHPConf Taiwan 到今年是第三屆了,時間過的很快,我也連續參加了三屆。除了去認識親友之外,也聽了不少還不錯的議程,在這裡先收集一下講師有釋出的簡報,然後利用空閒時間來試一下這些議程中提到的技術。

矛盾大對決 – 能入侵任何網站的駭客 vs. 絕對不會被入侵的網站

https://speakerdeck.com/p8361/phpconf-2013-mao-dun-da-dui-jue

Evernote SDK for PHP 你所不知道的 Evernote

http://apptrunks.com/phpconf.html

用 Gearman 與 CodeIgniter 打造 PHP 排程系統

http://blog.wu-boy.com/2013/10/2013-phpconf-introduction-to-gearman-in-php/

5 Easy Ways To Speed Up Your Web Application

http://2fb70562.s3-ap-southeast-1.amazonaws.com/phpconf-taiwan.html#slide-0

PHP 也是可以很 event – 用 PHP 打造一個 Realtime Web

PHPConf 2013 php 也是可以很 event

如何在內部網路下得知對外的 IP (不是LP)

LP的哏請點右邊的連結:LP分享器

通常我們在家裡申裝的網路是動態的 IP ,而且有些 ISP 公司會不斷的更換 IP ,或是在你網路設備重開機之後會變更,因此我們要自架一台 Server 就非常不方便。

架 Server 基本的條件就是要找到它並為我的需求提供服務,常常找不到人那是要怎麼做服務呢?但是!有固定 IP 是好的,壞處就是電腦會被成為攻擊的對像,防不勝防,這樣對我的需求來說動態 IP 可以減低我防避攻擊的心力。所以我嘗試寫一個程式讓在家裡的電腦隨時通知動態 IP 的位址。

家裡的網路環境如下圖:

currentipfromnat

Continue reading 如何在內部網路下得知對外的 IP (不是LP)