jimmy8646

jimmy8646

因緣際會之下接觸了 Drupal CMS 慢慢學會了寫程式,在參加了一日班之後用 Laravel Framework 找到了工程師的工作,碰上公司改組轉而成為了前端工程師,因為技術線是 Vue 所以我是 Vue 派的XD 現在公司的技術線是用 Ruby on Rails ,偶而會碰碰行銷案當個切版工。 現在覺得最難的事情是增肌,同時是個重機、滑板的初學者。

📍 Taipei
開發 Drupal 你都怎麼 Debug ?
Drupal

開發 Drupal 你都怎麼 Debug ?

前言 身為一位開發 Drupal 的工程師,平時寫寫 code 也是很正常的事情,不管你是很土炮的使用 PHP 的 print_r() 還是 var_dump() 又或是使用模組 devel [https://www.drupal.org/project/devel] 自帶的 dpm() 這些都是很好用的 debug 工具。 你會可能會遇到一個狀況 說了這麼多我們 debug 都是在本機上作業,可是當我們遇到了本機無法測試的狀況就很頭大了。比如說:有些程式是背景傳送的,也就是一定要在網路上找的到你的網站才能接收到資料,這個時候就只能寫 PHP log 或是用 Drupal 的 watchdog [https://api.drupal.org/api/drupal/includes%

PHP 密碼加密函式
PHP

PHP 密碼加密函式

為什麼需要加密 輸入帳號密碼這種事情每天都在做,可是你有沒有想過,到底密碼是以什麼樣子的形式再傳送的,如果你有一點資安想法的話應該不難想到,密碼這種東西不應該以明文來傳送的,如果你常看人說某某功能某某網站的密碼是以明文來傳送的那真的挺糟糕的。 加密方式 列出個人常用的加密方式 md5 [http://php.net/manual/en/function.md5.php] sha1 [http://php.net/manual/en/function.sha1.php] 或是使用 hash [http://php.net/manual/en/function.hash.php] 也是可以 $srting='some text'; echo md5($srting); echo sha1($srting); echo

Drupal 你還在慢慢刻表單寫資料進 variable 嗎?試試 system_settings_form 吧
Drupal

Drupal 你還在慢慢刻表單寫資料進 variable 嗎?試試 system_settings_form 吧

為何我們需要這個? 系統控制表單那是什麼東西?可以吃嗎?在這之前你必須要認識 Variable [https://www.drupal.org/project/variable] 這個模組。那麼 variable 又是什麼呢,Drupal 很多的系統設定都是以 variable 的方式存在系統後台上面,舉凡網站名稱(site name)、網站口號(slogan)、外觀(theme)設定等,這些都是以 variable 的形式儲存在後台內。 那麼話說回來,system_settings_form 跟 variable 有啥關係?作用就在於有些系統設定想要給使用者改,又不想開放這麼大的權限讓使用者亂搞,就會需要用到它了。 我該怎麼看到 variable 當我們將 variable 模組裝起來之後,要開啟附加模組 variable_admin 就可以看到儲存於後台全部的 variable

硬碟壞軌怎麼辦?先試試看自救吧
硬碟

硬碟壞軌怎麼辦?先試試看自救吧

雖然說硬碟這種東西,現在的平均壽命大概是三年左右,不過還是能省則省,如果有天你的硬碟壞軌了該怎麼辦?如果沒有什麼重要的東西就沒必要資料救援了,難得碰上了一次外接硬碟壞軌就順手記錄了一下過程。 指令 首先先打開你的 Windows 命令提示字元,或是直接 開始 搜尋 cmd 執行,並且打入以下指令 chkdsk e: /f /r 自行將 e: 替換成你的槽,就會看到如下圖的過程 整個硬碟掃描完成,運氣好就可以找到硬碟了。 本人親測有用

PHP 如何進行字串切割
Language

PHP 如何進行字串切割

為何需要字串切割 我們在串接 API 時需要將取回的資料進行處理,不過各家廠商開出來的規格都不一定,如果是丟回 JSON 格式還好處理,只需要使用 json_decode [http://php.net/manual/en/function.json-decode.php] 就直接將資料轉成 物件(object) 或是 陣列(array) 可是如果運氣不好一點,回傳回來的資料可能就是純粹的陣列帶字串,看到這種也只能硬著頭皮硬幹下去了,廠商總不可能為了你一個人去改功能吧。 > JSON: JavaScript Object Notation. 是一種純粹的文字資料交換格式。 範例 那麼這個時候我們就只需要使用 PHP explode [http://php.net/manual/en/function.explode.php] 這個 function 就好了,

WordPress NinjaFirewall 外掛刪除導致無法上傳檔案
WordPress

WordPress NinjaFirewall 外掛刪除導致無法上傳檔案

案發現場 今早起床時突然看到了一位棒子傳來的訊息欸 圖片不能上傳阿 HTTP 錯誤真的是讓人睡意全消阿,待著忐忑不安的心情只好上班去,我記得我沒有做什麼事情阿 下班時終於可以好好的來處理這個問題,首先先來看看 還真的壞了…. 等等…這傢伙怎麼有點眼熟,這不是我兩天前停用的外掛嗎!!為了驗證是他的問題,所以我將外掛裝了回來,回復預設值之後果不其然的正常運作了。為了解決此問題立馬查了一下外掛官方的 FAQ [https://nintechnet.com/ninjafirewall/wp-edition/help/] 一瞧 > To uninstall NinjaFirewall: 1. Log in to your administration console, click on the “Plugins” menu and deactivate the NinjaFirewall. 2. Click “Delete” to remove

WordPress 中 is_home() 與 is_front_page() 的差異
WordPress

WordPress 中 is_home() 與 is_front_page() 的差異

當我們在開發自己的 theme 時,常需要針對判斷當前頁面是否為首頁,這件事情來做相對應的判斷,舉個例子 <body class ="<?php is_home() ? print 'front' : print 'not-front'; ?>"> //balabala </body> 判斷當前是否為首頁並在 body 的元素上給上想要的 class 方便我們寫 CSS 樣式,可是設定為首頁卻得到 not-front 實在讓人疑問,難道是 BUG 嗎 > 在這裡使用 PHP if() 條件式的簡寫 可以參考PHP: if [http:

Drupal FAPI drupal_array_set_nested_value 錯誤
Drupal

Drupal FAPI drupal_array_set_nested_value 錯誤

情境 有時候我們總需要使用 hook_form_alter [https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_form_alter/7.x] 將現有的 form elements 進行一些改變或是增加欄位 ,所以我新增了一個自訂的 AJAX 讓它 return 一個 from 給我,可是只要當前頁面 return 兩次以上,或是當前的 form 有錯誤並且再按送出就會有以下的錯誤 Warning:Illegal string offset 'und' at drupal_array_set_

使用 Microsoft LUIS 串接聊天機器人語意分析
chatbot

使用 Microsoft LUIS 串接聊天機器人語意分析

Microsoft LUIS [https://www.microsoft.com/cognitive-services/en-us/language-understanding-intelligent-service-luis] Microsoft LUIS 是什麼呢?就是 Language Understanding Intelligent Service 簡單來說就是語意分析 那我為何會推薦這套服務呢?其實小編今天有小小的試用了一下,真的讓人驚豔,尤其是後台操作真的是很簡單在來就是跟 Microsoft Bot Framework 整合得很好看來微軟真的是有意吃下這塊大餅 But…聊天機器人到底還能紅多久?蘋果手機都已經有 Siri 了可以直接講話誰還會跟你打字阿。 #chatbot

HybridAuth Social Login Facebook 登入又壞啦
Facebook

HybridAuth Social Login Facebook 登入又壞啦

案發經過 HybridAuth Social Login [https://www.drupal.org/project/hybridauth] FB 登入又壞啦,真的我也是醉了,之前遇到 HTTPS 登入失效這次是沒有 HTTPS 的網站也壞了,立馬去查模組 Issues 果然也是有人遇到相同的問題 解法 阿反正去打一下 Patch 去更新一下 Library 就好了大家也都是這樣所以他被 Closed (fixed) 理所當然我也照做了,裝 dev 版本用最新的 Library 豈料最新的 Library 有問題阿,模組直接噴錯給你看 結論 吃我的 Simple FB Connect [https://www.drupal.org/project/simple_fb_

瀏覽器相容性檢測工具
檢測工具

瀏覽器相容性檢測工具

拜託IE瀏覽器快消失吧 最近找了兩個測試網站來檢視 IE 瀏覽器的相容性,結果真是差的可以阿。 > 自 2016 年 1 月 12 日起,只有受支援作業系統可用的最新版 Internet Explorer 可得到技術支援和安全性更新。Internet Explorer 11 是最新版的 Internet Explorer,其將在 Windows 7、Windows 8.1 和 Windows 10 上獲得安全性更新、相容性修正程式和技術支援。 不知道還要多久 IE 瀏覽器才可以正式的從網路世界消失 HTML5 TEST [https://html5test.com/index.html] THE CSS3 TEST [http://css3test.com/

WordPress

如何利用 FB2WP integration tools 讓粉絲團發文同步至我們的網站上(2018/03/07更新)

FB2WP integration tools 今天來介紹 FB2WP integration tools [https://tw.wordpress.org/plugins/fb2wp-integration-tools/] 這個外掛,它可以幫我們在粉絲專頁發文之後,Facebook 自動的幫我們把資料送回網站上並且發佈這篇文章,簡單來說就是粉絲團發文會順便送給 WordPress 將文章儲存,講到這裡你是不是覺得很興奮呢?想想有多少的小編只要專心在粉絲團上面操作就好,剩下的交給程式幫我們搬到網站上,聽起來真的是懶人的一大福音阿。 我需要什麼? 那我們會需要什麼呢? 我們會需要 * 一個 HTTPS 的網址 * 一個 Facebook 應用程式 * 一個粉絲專頁 在這之前你的網站必須要是 HTTPS 因為 Facebook 的 App Messenger, Webhooks 的回呼網址 需要 HTTPS 如果你的網站還不是 HTTPS 的話可以參考使用 Let’s

Laravel 一日速成班 學習筆記心得

Laravel 是什麼? Laravel 是一套 PHP 的 Framework 簡單的 Router 系統 MVC 的架構,並且使用 Composer 管理 PHP 套件,使用起來非常的簡單。 Blade Templates 前台使用 Blade Templates 作為輸出 Blade 寫起來就與一般的 HTML 沒兩樣,在透過插入 short code 達到動態輸出的效果。 環境使用 Homestead Homestead 官方的 Vargant 包裡面已經安裝好作業環境只需將環境 run 起來即可。 可能遇到的地雷 > 最新可能會有問題5.1.16? Vargant 版本為 5.1.14

Language

PHP OOP編程的觀念心得筆記

前言 最近幾年程式語言的 framework 進步真的是飛快,像是最近很火紅的 Vue.js、ReactJS、或是老牌的 Laravel等,而在 PHP 的 framework 當中又以 Laravel 最受開發者青睞,在開始學習 Laravel 之前必須先學習什麼是 OOP (物件導向程式設計 Object-oriented programming) 物件導向並非是有特定的程式規格,就以我個人的觀感理解比較可以說是他是一種 設計模式比較恰當,在學習的過程中只要一直圍繞著他的中心思想,想必在學習上會較為輕鬆。 說這麼多不如直接殺 code 會比較有感覺,在拜讀過 O’reilly現代PHP 之後其中一句話讓人印象深刻意思大概是這樣: > 你不需要現在就立馬實踐物件導向設計風格,你只需要將他記在你的腦袋中,直到有一天你豁然開朗的將他應用在你的程式代碼上。 對於像我這樣的新手來說要立馬用上可能有點困難,所以才寫下此篇筆記以供未來參考。 物件導向 命名 通常我們的檔名會與class同名 類別 在英文中又稱 class 在 OOP

ubuntu 16.04修改網路卡名稱

前言 如果你最近有重灌伺服器,作業系統灌ubuntu16.04灌完之後,只要設定好IP能連上網路就可以在遠端直接ssh進行設定,可是人生就是這個”可是”網路卡設定怎樣就是up不起來…..原來!! ubuntu16.04與ubuntu14.04在網路卡的命名方式上有很大的差別,如果剛從14跳到16在設定靜態IP會一直出現找不到裝置的錯誤訊息,原來命名方式更改了所以才一直找不到,藉此寫下筆記以免日後忘記。 更改回14版的命名方式 修改grub的檔案 sudo nano /etc/default/grub 並將參數更改如下: GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" 重新產生grub設定檔 sudo grub-mkconfig -o /boot/grub/grub.cfg 以上設定完成之後就可以重新開機囉。 設定靜態IP 這裡就自行設定IP了 sudo nano /etc/network/interfaces 設定完成之後啟用網路卡

如何使用ssh私鑰訪問伺服器

前言 有時候你是否會覺得每次登入都要打密碼其實是很麻煩的事情,而且密碼也是有機會被暴力破解的可能性。 SSH是如何運作? 簡單來說系統會產生出一對經過加密的”鑰使”與”鎖頭”,只有持有鑰使的人才可以打開該鎖頭,進而防止密碼被暴力破解這回事。 如何設定? 首先我們先在伺服器上產生一組ssh key給我們 ssh-keygen -f myserver > -f 這個參數是將檔案命名成我們想要的名子”myserver” 接者系統會問你檔案生成的路徑以及密碼我們都只要enter就好 此時系統就會幫我們產生一組公鑰以及私鑰,接著我們將公鑰加入authorized_keys這個檔案應該會在你的家目錄底下如果沒有的話我們就自己產生一個。 cd ~/.ssh touch authorized_keys cat myserver.pub >> authorized_keys 如此一來我們就將公鑰加入authorized_keys了,接著我們就可以將私鑰存回自己的電腦囉。 > 將私鑰存回自己電腦我自己是直接打開檔案複製貼上比較快(笑 嘗試一下 ssh -i /path/to/

你的git專案不小心commit了別人的git該怎麼辦

前言 git是一項非常好用的版本控制工具,可是其背後的運作原理可是複雜得很,要如何用的好又是一門學問了。 有時候我們git化一個專案的時候,很有可能你使用的一些模組、library已經有被版本控制了,這個時候我們將整個資料夾git化之後很開心的就推上了自己的git repository去了 會發生什麼事情? 當你的同事將git專案clone下來之後繼續工作,直到他發現了某個重要的資料夾消失了,這位可憐的同事一頭霧水的開始去找git repository發現那個資料夾內根本是空的!!最後才發現自己的專案內還有另一個git存在 為何會這樣? 首先你必須要知道git的 子模組 (Submodules) 以下我引述git的文件 > 這裡有一個例子。假設你在開發一個網站,並提供 Atom 訂閱(Atom feeds)。你不想自己編寫產生 Atom 的程式,而是決定使用一個 Library。你可能必須從 CPAN install 或者 Ruby gem 之類的共用庫(shared library)將那段程式 include 進來,或者將原始程式碼複製到你的專案樹中。如果採用包含程式庫的辦法

drush

如何在bluehost上安裝composer與drush

在基本的bluehost環境之下應該是沒有apt-get或是yum的指令 安裝套件並不是如此的容易 你可能遇到的問題 * bluehost環境之下我要怎麼安裝composer * 為什麼我打composer都是command not found 核心重點 * 讓shell認識composer * 安裝完composer再用composer安裝drush * 在讓shell認識drush 教學步驟 首先我們假設你已經順利的安裝完php了並且可以用command執行php 如果你執行PHP出現command not found的話先執行以下步驟 先去編輯你的.bashrc他的位置應該會在~/.bashrc 並且加上這段code alias php='/usr/php/56/bin/php' > * 這邊要注意的是你PHP安裝的位置以及版本未必會跟我相同所以這裡路徑要請自己替換一下 因為我們新增了一個alias所以我們必須要讓shell重新的掃描一次指令如下: source ~/.bashrc 如此一來shell就會認得php這個指令了 接著讓我們下載com

.htaccess改寫你的網址

前言 通常我們都會在網址上將網頁的副檔名隱藏,一來美觀、二來簡潔這個時候我們就會需要使用到網址rewrite的功能 這個功能如果你的web server是用apache的話記得要將rewrite模組打開 linux : a2enmod rewrite 接者在你的根目錄底下新增一個.htaccess檔案加入以下code就可以隱藏檔案副檔名了 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/$ $1.php RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ RewriteRule (.*)$ /$1/ [R=301,L] 參考資料 How to remove .php, .html, .htm

PHP筆記

PHP結構 要倒出object要使用 var_dump($object); print_f($object); 雙引號內會對變數進行解析而單引號不會 $dbname="phpguestbook"; $sql="SHOW DATABASES LIKE '$dbname'"; var_dump($mysql->query($sql)); 變數遞增與遞減 //先遞增x在進行判別式 if (++$x == 10) { echo "$x"; } //判別式完成之後在遞增 if ($x++ == 10) { echo "$x"; } -------------------------------------------------------------------------------- PHP函式 include & require

CMS

UX/UI系列:網站拉皮術,跟簡陋的下拉選單說再見!

前言 你是否有時覺得Drupal後台某些功能看起來就是醜醜的,用起來也並不是那麼的直覺,給自己使用就還好如果是給客戶使用總會希望給予更好的使用體驗,今天要介紹一個我們常常在使用的模組:Chosen,這個模組使用jQuery讓你的下拉式選單更加的美觀以及方便使用,讓我們看看他可以做到哪些事情吧。 簡介 Chosen模組使用了jQuery套件讓我們的下拉式選單更美化更好用,安裝上只需要模組以及放入libraries [http://harvesthq.github.io/chosen/],在後台選擇啟用就可以看到效果囉。 使用教學 首先我們先安裝chosen模組 你可以使用drush幫你放好libraries 或是手動放入libraries 以下我們使用drush示範 drush en chosen drush chosenplugin 當你安裝好後可以在設定/使用者界面/chosen看到一些預設的設定 你也可以在欄位的設定選擇是否啟用chosen 預設是No preference如果要啟用我們選擇Apply即可 以下就是啟用之後的差別囉 未啟用