網頁

2012年11月26日 星期一

iOS開發筆記-橫向model mode啟動

花了一整個晚上的時間查這長久困擾我的問題,就是presentModalViewController似乎無法在橫向時使用,不甘心決定花時間下去找出問題,心中一直想著是否是viewController無法取得,若是,那要如何取得,最後終於找到方法,我的直覺是對的,取得ViewController的方法也很簡單

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
//上述的AppDelegate指的是在建立整個專案時,那個唯一的ApplicationDelegate
appDelegate.viewController <-- 就是目標viewController


所以整個code如下,就用下面這幾行就搞定了:
UIViewController *file = [[UIViewController alloc] ......];
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

[appDelegate.viewController presentModalViewController:file animated:YES]
[file release];


這花了我一堆時間,我還是太嫩....

參考網址:
iOS模态窗口的实现。(横屏问题)

2012年11月23日 星期五

iOS開發筆記-WebView中點擊link直接開browser以及放在UIScroll中會有的問題

有個需求
  1. 在一個上View載入不知多長的網頁,不要用到WebView的scroll
  2. 點擊上面的link,是開browser瀏覽

基本上在UIWebView Class Reference提到
Important: You should not embed UIWebView or UITableView objects in UIScrollView objects. If you do so, unexpected behavior can result because touch events for the two objects can be mixed up and wrongly handled.

不過還是有人提出方法解決,用以下的方式就可以解,可能只是walk around的方式,不過用了至少可以達到我要的需求
webView.opaque = YES;

可以放在UIScroll下後,就解決長度問題,可以用iOS開發筆記-動態更動UIWebView的長度,達到第一個需求

再來第二個,保有WebView目前在看的,要看內容開瀏覽器,在WebViewDelegate中有個function:
(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
可以達到這要求

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }
    return YES;

}

紅字部分就是要求另開app打開url,由os自動決定(似乎就是看預設是哪個app開啟)

參考網址:
UIWebView cannot click link
iPhone: After UIWebView opens external browser, then retruning to app opens it a second time

另外:

2012年11月21日 星期三

iOS開發筆記-動態更動UIWebView的長度

需求:一次載入網頁,動態更動UIWebView的長度

使用UIWebViewDelegate中提供的- (void)webViewDidFinishLoad:(UIWebView *)aWebView,程式碼如下:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
    CGRect frame = aWebView.frame;
    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    aWebView.frame = frame;

 
    [self setContentSize:CGSizeMake(self.contentSize.width, self.contentSize.height + fittingSize.height)];
}


我在這邊使用的self是個UIScroll,所以直接設定ContentSize的長寬,這樣就行了

參考網址:
How to determine the content size of a UIWebView?

Spring、J2EE學習筆記-數字百分比呈現,是double? int?

不知道是不是太久沒寫java的程式了,今天只是想寫個呈現百分比的字串,結果....嗯~先這樣講好了,我寫成以下樣子

int x = 20;
int y = 100;
double z = x / y;
Numberformat nf = Numberformat.getPercentInstance();
nf.setMinimumFractionDigits(2);
Sytem.out.println(nf.format(z));

結果是:0.00%

一看就知道是有問題的 orz,改成底下這樣子


double x = 20;
double y = 100;
double z = x / y;
Numberformat nf = Numberformat.getPercentInstance();
nf.setMinimumFractionDigits(2);
Sytem.out.println(nf.format(z));

結果是:20.00%


這....我該說是我沒注意,還是compiler或run time是要寫明....

2012年11月20日 星期二

Spring、J2EE學習筆記-中文在input傳送的亂碼問題

在J2EE中,傳送input資料時,預設是使用ISO-8895-1編碼,英文傳送是沒問題,但中文傳送就會變成亂碼,解決方式就是在tomcat的server.xml中,收

<Connector SSLEnabled="true" clientAuth="false" keystoreFile="/XXX/.key" keystorePass="AAAA" maxThreads="150" port="8443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLS" />

改成

<Connector SSLEnabled="true" clientAuth="false" keystoreFile="/XXX/.key" keystorePass="AAAA" maxThreads="150" port="8443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLS" URIEncoding="UTF-8" />

不過,在我的狀況,是用8443,若我使用跟參考網址一樣的8080的那個部分,中文一樣會亂碼,猜測這部分也是要看你實際使用的port

參考網址:
http://wenku.baidu.com/view/4148a2e8f8c75fbfc77db25e.html

如何block submit form by Robots-後續

這篇是繼上篇文章:如何block submit form by Robots的後續,實驗了2~3天,看來都沒有任何的亂七八糟文章進來了,真的有用,我個人是用方法一,但我多加了用css,而不是在tag後寫入display:none,例如

<style>
.xxx{
   display:nonee;
}
</style>
<input name="check" type="text" value="" class="xxx" />

這樣可以達到相同效果,但對機器人而言,要處理就更麻煩

2012年11月19日 星期一

如何block submit form by Robots

最近maintain的一個網站一直被攻擊,但明明那位置要登入才能寫入,查了查原因,看來當初設計有問題,回應部分是不需要登入,但回應又設計成跟文章是一塊的,真是有夠怪,但這次重點在一直有機器人塞廣告進來,客戶不堪其擾,但又不想又要客戶看什麼鳥圖示鍵入文字,所以需求如下:
  1. 擋掉機器人
  2. 不要另外又要鍵入
查了查資料,真有聰明人寫出了一些方式,方法有兩種:
  1. 利用css中的display:none
  2. 利用javascript(但javascript關掉就沒用了)
方法1,利用css中的display:none,例如

<input name="check" type="text" value="" style="display:none" />

這是利用機器人看到input就會填滿,但display:none讓使用者看不到,所以在server端去檢查這變數是否被塞值,來判定是否是機器人,有值就跳掉。

方法2,利用javascript,例如

<form name="myform" method="post" action="empty.php">...</form>

<script type="text/javascript">
var NameInFormTag = "myform";
var ActionURL = "youwant.php";
eval("document."+NameInFormTag+".action='"+ActionURL+"'");
</script>


這樣讀完網頁後,實際要傳值的php存放在瀏覽器中,但機器人看到的是empty.php

實際用方法1,目前看起來還算ok

參考網址:
Protect Your Forms from Spam
One Way to Block Form Submission Robots

2012年11月17日 星期六

iOS開發筆記-Missing Localized Screenshots的處理

Apple store上的蠢事有增無減,承繼上次的upload事件是java問題後,再來一個所謂“Missing Localized Screenshots”。

本來看到這次預設語言有了Traditional Chinese,正在想Apple終於看到我們了,上傳都沒有問題,正在爽時,突然status改成“Missing Localized Screenshots”,完全不知道狀況,以為跟Localizations這個有差,硬是在info.plist中加入Localizations:Chinese (Traditional),重傳依然沒用,查了下才知道,要上傳iphone 5尺寸的screen shot,這是什麼錯誤回應,jobs掛了後,Apple是失神了嗎?


參考網址:
Missing Localized Screenshots Simplified Chinese

2012年11月15日 星期四

資料庫學習筆記-Table is marked as crashed....

最近多災多難,壞事通常一塊發生,昨天主機空間不足,造成網站crash,清出空間後,以為沒事了,但還是有人回報沒法使用,在mysqld的log中發現類以這種log

121114 22:44:51 [ERROR] /usr/libexec/mysqld: Table './xxxxx' is marked as crashed and should be repaired

查了下資料,有工具可以修,但不知道原因為什麼,不過先弄好他吧,指令如下:

REPAIR TABLE `TableName`

這樣就正常了

參考網址:
MYSQL 資料表 顯示 #145 - Table './xxxx/' is marked as crashed and should be repaired

2012年11月13日 星期二

Spring、J2EE學習筆記-HttpOnly設定

有個案子安全檢測來了個底下這個低風險的問題


[1/2] 在階段作業 Cookie 中遺漏 HttpOnly 屬性 


說實在,第一眼看到時,完全不知道是什麼,總之,就是要我處理掉它(內心os:處理掉不知道會有什麼問題)。

查了下資料,Tomcat 7及spring 3後,都可以在web.xml中的session-config去設定,例如:

<session-config>
        <session-timeout>10</session-timeout>
        <cookie-config>
            <http-only>true</http-only>
            <secure>true</secure>
        </cookie-config>
</session-config>

只是,我用的好像是很舊的,但還是有法子,就是在server.xml中的Context加入

<Context docBase="{你的專案路徑}" path="{你的專案路徑}" reloadable="true" useHttpOnly="true"/>

這樣就ok了,查了下是說防止xss的方法之一,只能說年頭要防的東西太多了

參考網址:
Java EE 6.0 的 Cookie 类已经有设置 HttpOnly 的方法
Spring安全控制
How do you configure HttpOnly cookies in tomcat / java webapps?
HttpOnly介绍以及防止XSS攻击时的作用(转)
How do I set httpOnly and secure cookies with Spring Security?

2012年11月11日 星期日

iOS開發筆記-設定User Header Search Paths 記得用雙引號包起來

之前的公司的一個產品我用到static library,對這東西一直是一知半解(現在依然),在使用上常常出錯,常見的就是找不到.h檔,有時build成功了,但使用Archive時,又找不到了,路徑的設定如下:

(自己的project路徑)/Build/Products/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/(static library project folder名)


其中$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)是讓xcode決定是在Debug還是在Release中(這部分我也還是在一知半解中,沒時間好好看)。總之,這設定是ok的,但重點在,沒有雙引號包起來,會造成compiler在處理時,找不到路徑folder,尤其是若Configurations中,像我習慣設定Distribution hoc這樣的字眼,中間有空格,那就是自討苦吃,找半天也不知道錯在哪,在這記下,要記得寫成

"(自己的project路徑)/Build/Products/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/(static library project folder名)"

2012年11月6日 星期二

Eclipse筆記-jdk on mac版本問題

這篇不知道該歸在哪個範圍,主要是因為這篇iOS開發筆記-上傳app發生”an error occurred uploading to the itunes store“所做的動作,造成的後續問題,就是Eclipse打不開了,出來了個畫面



果然是Work around的做法,一個問題解了,另一個問題出來了。這時只能再改回去用1.7才行,ooxx的不知道該怎說,太忙了沒時間去找root cause(一般工程師都會用的藉口),先這樣吧。

2012年11月3日 星期六

LARAVEL開發筆記-使用Route,卻一直無法成功

昨天一直想用Laravel先做出一個網頁,當作一個開端,但只是在route.php上加上

Route::get('hello', function(){
   return 'Hello!';
});


就一直無法成功。
php artisan route:call get hello

發現有成功回傳,但怎做都無法成功,不服氣的一直徹夜查到的結果是

在httpd.conf中加上一段

<Directory /volume/html/booiki/courses_demo>
   AllowOverride All
</Directory>


原來是無法Override掉網址,就完全ok了....我被ko了....orz 昨天真的不是很順,雖然最後因為知識的累積,想起這麼做....

2012年11月2日 星期五

iOS開發筆記-上傳app發生”an error occurred uploading to the itunes store“

一個很蠢的問題,但最近總覺得Apple發生的狀況越來越多....今天上傳app時,發生了以下的問題,以為是認證出錯(太自以為是,沒有先查查google),為此更正了數次的認證,最後Google了下才發現很多人都有這問題


主要的問題在於Java版本,最近正好整個作業系統重灌,當然Java就用最新的1.7(因為Mac OS不再內建Java),而這正好是因為版本太新,查了以下的網址


全都是一樣的解法,如下:

cd /System/Library/Frameworks/JavaVM.framework/Versions

sudo ln -s CurrentJDK /System/Library/Frameworks/JavaVM.framework/Versions/1.5

sudo ln -s CurrentJDK /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0

可惜的是,這服藥我服下後,沒有任何用處,還回應了我
ln: /System/Library/Frameworks/JavaVM.framework/Versions/1.5/CurrentJDK: File exists

說穿了,就是找java version嘛,查了下java查詢的路徑
ls -l /usr/bin/java
回應:/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

直接
cd /System/Library/Frameworks/JavaVM.framework/Versions

查了底下有1.5、1.5.0、1.6、1.6.0及Current,作了底下的動作
sudo mv Current Current1.7
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0 Current


再打java -version,就回應
java version "1.6.0_37"

這時再重新上傳就正常了....要命的蠢問題,而且沒法真正解決

2012年11月1日 星期四

CentOS筆記-修改防火牆

做個記錄

修改防火牆的規則
vim /etc/sysconfig/iptables

重啟防火牆
/sbin/service iptables restart

這樣就可以用載入剛才寫的了

下次再來寫防火牆的規則寫法好了....太多事情要做了 orz