網頁

2013年6月30日 星期日

Wordpress開發筆記-拿掉後台管理區上那煩人的更新訊息

之前很多網站都用Wordpress開發,總會在最上面有個wordpress更新,給客戶看到總怪怪的,關掉它的理由:

  1. 客戶看到很怪也有會問那是什麼
  2. 總也有好奇心強的客戶就給它按下去,最後沒完沒了的收拾

最後結論:關掉它吧

但這好像是內定的,沒地方處理,找到這篇如何關閉 WordPress 管理後台的「版本更新」通知?,看起來除了改掉沒什麼方式,所以改掉方式如下:

Step1: 找到wp-admin/includes/update.php,最好先備份一下
Step2: 打開update.php,找到“echo "<div class='update-nag'>$msg</div>";”就comment掉

再進入後台就ok了。不過若是做了更新,要記得再做一次就是

參考網址:
如何關閉 WordPress 管理後台的「版本更新」通知?

2013年6月25日 星期二

CentOS筆記-fsockopen()被SELinux擋掉

裝好centOS 6後,預設SeLinux是開啟的,我懶的關掉他,不過他倒是造成了像我這篇CentOS筆記-postfix服務與php mail()所述的問題,今天又發現用fsocketopen會有問題,查到Enable remote fsockopen() in PHP on Fedora (SELinux)這篇,才發現又有個要設定,如下述指令,打開後就ok了
setsebool -P httpd_can_network_connect 1

可以用底下這個來看剛才的動作有沒有成功(查詢server上有哪些動作的message)
tail /var/log/messages

參考網址:
Enable remote fsockopen() in PHP on Fedora (SELinux)
SELinux, Apache/httpd, PHP establishing socket connections using fsockopen() et al

2013年6月24日 星期一

Wordpress開發筆記-json_encode

有個需求
  1. 取得訊息,轉成json格式
  2. 當成post的meta存進資料庫

使用get方式丟上中文message後,本以為message有url encode過,再來用json_encode就沒問題了,卻發現取得時本來應該要是\U1234這樣的格式變成U1234的樣子存進資料庫,本以為是GET的中文出問題,但從$_GET取得時,是正常呈現。

找半天才發現是add_post_meta及update_post_meta會將“\”去除,若用json_encode過,會將中文都變成無法還原的亂碼。所以

Step1: 取得數值
$value = $_GET['test'];

Step2: 轉json格式
$value = json_encode($value);

Step3: url encode將“\”轉成ascii code
$value = urlencode($value);

Step4: 存進資料庫
add_post_meta(post_id,'message', $value);

記得取出時要decode回來,如:
$value = urldecode(get_post_meta(post_id,'message'));

參考網址:
解決json_encode中文UNICODE轉碼問題
解決PHP JSON 中文亂碼的問題

2013年6月19日 星期三

iOS開發筆記 - 取得目前時間和指定時間剩多少時間

需求:
  1. 一特定時間距目前時間多久
  2. 分成天時分
//Step 1: 通常輸入都有個固定模式,這邊先用yyyyMMddHHmm

NSDateFormatter *format = [[[NSDateFormatter alloc] init] autorelease];
format.timeStyle = NSDateFormatterNoStyle;
format.dateFormat = @"yyyyMMddHHmm";

//Step 2: 轉換成NSDate
NSDate *date = [format dateFromString:temp.endTime];

//Step 3: 取得和目前差距時間
NSTimeInterval sinceNow = [date timeIntervalSinceNow];

//Step 4: 取得天時分的倒數
int day = floor(sinceNow/86400);
int hour = floor((sinceNow - day * 86400)/3600);
int min = floor((sinceNow - day * 86400 - hour * 3600)/60);


很簡單,不過這邊的程式碼可以優化,我懶 XD

參考網址:
How to convert an NSTimeInterval (seconds) into minutes
關於 NSDateFormatter 的二三事

2013年6月18日 星期二

iOS開發筆記 - nil? Null? [NSNull null]?

老是在用nil、Null,卻從沒想過之間的分別,看了幾篇文章,其實都是一樣,只是為了可讀性(這很重要),不過大概的分別如下:

nil: 給Object-C object用
Nil: 給Object-C class用

個人觀感: 关于 [NSNull null] 的一些疑惑有提到一些Demo,但說實在我感受不出來差別,我都用nil

NULL: C opinter用
個人觀感:例如@seleter這類的pointer,我都用nil,看來要好好學起來

NSNull: 一個讓人用的null class,使用上會抛出NSException
個人觀感:第一次用時,發現一直丟出Exception,覺得煩人,但我個人覺得比nil讓人更清楚,不過nil還是方便好多吶


底下轉貼nil / Nil / NULL / NSNull上的結論



參考網址:
关于 [NSNull null] 的一些疑惑
Are NULL and nil equivalent?
nil / Nil / NULL / NSNull

2013年6月16日 星期日

Code Style - HTML中的attribute的值要記得加上雙引號包住

很多時候的bug,只是很單純的一個逗點沒打,一個符號打錯,大部分的時候都是正確的,只有某些狀況出現,就一切都掛點了,例如底下這樣的寫法:

<td><input size="15" type=text name="test[]" value='.$value.'></td>


其實沒什問題,大部分狀況是ok的,因為瀏覽器會自動幫忙處理,但這段程式有個問題,value這部分要是$value的值是有空格的,那就會發生空格後的值都消失了,改成

<td><input size="15" type=text name="test[]" value="'.$value.'"></td>


重點是加上雙引號,就ok了,其實是很小的問題,但卻搞到整個系統資料大亂,找還找不出來,有些好習慣是一定要好好培養,不然bug解不完

2013年6月9日 星期日

sqlite學習筆記 - sqlite初體驗

sqlite是我從來沒用過,但在手機端還真的好用,一般的linux或mac os x都內建,這邊就稍微記錄一下從無到有做一個user_meta的table,放個資料做個select

Step1: 創建一個名叫xxx的DB
>sqlite3 xxx.db

執行完會進入sqlite3的command link
Step2: 建立table
sqlite> create table user_meta (id integer primary key, meta_key varchar(50), meta_value varchar(300));

Step3: 測試一下,insert一筆
sqlite> insert into user_meta(meta_key, meta_value) values('account','alvin');

Step4: 測試一下,select
sqlite> select * from user_name

顯示--> 1|account|alvin

Step5: 離開
sqlite>.exit

超簡單~

2013年6月7日 星期五

iOS開發筆記 - UIBackgroundModes & Newstand features failed

有朋友又請教我一個問題,如下圖:

查了下,發現這是指app是Newsstand的app,內容是敘述要上架的東西,照著iOS 5 newsstand application icon所提就可以解決,不過討論完後,根本不需要啊~都砍光光~比較快~

突然覺得還是都貼過來比較放心,iOS 5 newsstand application icon討論串就貼在底下了

I just did a quick test. In my project I put the icon files in the main app directory, where main.m resides. They are called Icon.png and Icon@2x.png for the application icons, and Newsstand-Cover-Icon.png and Newsstand-Cover-Icon@2x.png
The CFBundleIcons section of the *.plist file (found in the main app directory) looks like this:
<key>CFBundleIcons</key>
<dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>Icon.png</string>
            <string>Icon@2x.png</string>
        </array>
    </dict>
    <key>UINewsstandIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>Newsstand-Cover-Icon.png</string>
            <string>Newsstand-Cover-Icon@2x.png</string>
        </array>
        <key>UINewsstandBindingType</key>
        <string>UINewsstandBindingTypeMagazine</string>
        <key>UINewsstandBindingEdge</key>
        <string>UINewsstandBindingEdgeLeft</string>
    </dict>
</dict>
Other relevant sections of the *.plist file are set to this:
<key>UIBackgroundModes</key>
<array>
    <string>newsstand-content</string>
</array>


<key>UINewsstandApp</key>
<true/>
You may have to build and launch your app on the device a couple of times, before the icons appear on the Newsstand shelf.
You can edit *.plist files with a text editor like TextWrangler (free), TextMate (paid), or MacVim (free).
Hope this helps!

參考網址:
iOS 5 newsstand application icon
Contents of the UINewsstandIcon Dictionary

iOS開發筆記 - icon specified in the Info.plist

看到這個,莫名其妙


查了下info.plist,發現icon file list有多了個空的

會掉它,就解決了。

總覺得雖然都相同的訊息,但大家遇到的狀況好像都不同

參考網址:
App Icons on iPad and iPhone
icon Specified in the info.plist error
iTunesArtwork breaking release submit to app store

2013年6月6日 星期四

iOS開發筆記 - 幾個大陸社群網站iOS SDK整合的初步查看

微博
>>>>>>>>>>>>>>>>
API site:http://open.weibo.com/wiki/IOS_SDK

開發者申請:用微博或新浪的帳號
資料填寫如下圖:




功能(從sample code抄下來的):
  • 登入整合:有
  • 取得自己的資料:有
  • 取得自己的timeline
  • 貼訊息(文字及圖)

QQ
>>>>>>>>>>>>>>>>
API site:http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91IOS_SDK%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E


開發者申請:用QQ的帳號
申請時資料填寫如下圖:



功能(從sample code抄下來的):




  • 登入整合:有
  • 分享(?)
  • 取得會員訊息
  • 取得相簿
  • 發表說說
  • 取得相簿列表
  • 驗證空間粉絲
  • 創建空間相簿
  • 發表日誌
  • 設制個人圖像
  • 基本會員信息
  • 詳細會員信息
  • 微博好友提示
  • 微博好友提示
  • 退出

微信
>>>>>>>>>>>>>>>>
API site:http://open.weixin.qq.com/

開發者申請:用QQ的帳號,不用申請QQ的開發者認證,是裡頭最簡單的


功能:

  • 登入整合:沒有
  • 對著朋友傳訊息(文字、照片、link等)
  • 貼訊息上自己的朋友圈


說實在,會員的申請好難用啊,尤其是QQ的密碼要是弄丟了,要你提供訊息就算了,還要三個人的認證,然後再等上個幾個小時,我個人要求密碼(沒人認證),等了四個小時後被回絕,一氣之下重申請,爛爆了~~~~~

微博在申請帳號時,簡訊一直傳不來,尤其是他的雲端服務,要我自行再寄信去要認證碼....昏了

大陸祖國的東西我實在.....

2013年6月2日 星期日

iOS開發筆記 -NSDate用字串初始及轉回字串

NSString -> NSDate
=======================================

NSDateFormatter *format = [[[NSDateFormatter alloc] init] autorelease];

format.timeStyle = NSDateFormatterNoStyle;
format.dateFormat = @"yyyy/MM/dd";
NSDate *date = [format dateFromString:@"1970/01/01"];


NSDate -> NSString
=======================================

NSDateFormatter *format = [[[NSDateFormatter alloc] init] autorelease];

format.timeStyle = NSDateFormatterNoStyle;
format.dateFormat = @"yyyyMMdd";
__birthField.text = [format stringFromDate:__birthPicker.date];


參考網址:
How can I initialize a date to NSdate?
Objective-C - NSString 和 NSDate 互相轉換

iOS開發筆記 - 限制UITextView的行數

UITextView有個貼心處,有scroll view,可以不限字數的一直填字,但有時就是希望只有可視範圍的大小,將scroll的功能disable後還是不夠,這時只能依靠UITextViewDelegate中的兩個function,來做到限定的功能,我在此的需求如下:

字數及游標只能在UITextView bound的範圍內

字數可以藉由底下的shouldChangeTextInRange來處理,若超過剛填入的字就去除,但若要讓游標到最後一行就停住,就得由textViewDidChange來控制,兩個的內容都一樣,但作用的點不同。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    //防止使用者輸入字數超過輸入區
    if (textView.contentSize.height > textView.frame.size.height + 10) {
        textView.text = [textView.text substringToIndex:[textView.text length]-1];
        return NO;
    }
 
    return YES;
}

- (void)textViewDidChange:(UITextView *)textView
{
    //防止Enter鍵會讓游標下移超過輸入區
    if (textView.contentSize.height > textView.frame.size.height + 10) {
        textView.text = [textView.text substringToIndex:[textView.text length]-1];
        //        textView.contentSize = textView.frame.size;
    }
}


參考網址:
UITextView 限制行数解决方案
如何实现对UITextField ,UITextView等输入框的 字数限制