2016-09-06

tomcat 8.5 在 netbeans上無法正常運作 (netbeans無法得知tomcat已啟動)

今天在mac上跑tomcat 8.5遇到很雷的事,
在netbeans上設定tomcat 8.5後,過一陣子netbeans會報tomcat start fail,
但實際上server log是顯示有正常啟動tomcat的,
後來發現是Server header的問題,因此從8.5後開始,必須手動在server.xml加一個「server="Apache-Coyote/1.1"」的attribute:



然後…然後就好了。真的很雷。

ref:
http://stackoverflow.com/questions/22225764/starting-of-tomcat-failed-from-netbeans

2016-08-30

TOMCAT伺服器無回應!

今天一大早進辦公室就在救火,原因是人事系統掛掉了...

掛的方式很奇怪,一開始重啟會維持幾分鐘的正常,之後就無回應了,

仔細點說,就是TCP/IP有成功連線到TOMCAT,但沒有回應字串,直到TIMEOUT。

這種半路就死的反而是最難找原因的,

於是大家就開始猜了,防火牆、資料庫、connection pool.....開始找原因,

最後還把application乾脆移到新的tomcat主機,還是會死掉。

後來我在application的context.xml加了一個設定:


...

...


讓server log 十秒以上沒反應的程式,結果發現是一個syslog程式作怪,把那段程式移除就好了。

(但沒移除之前也活得好好的呀...超怪)

ref:
http://stackoverflow.com/questions/7145131/tomcat-request-timeout
http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Stuck_Thread_Detection_Valve

2016-06-29

在Ubuntu安裝Sublime Text 3及支援中文輸入

1.安裝 sublime text 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

2.建立sublime-imfix.c

2016-06-06

Macbook PRO MBP 2014 & MACOS OS X El Capitan 10.11.5 安裝 BOOTCAMP WINDOWS 7 SP1 遇到雷之解法


之前OS X 10.9 利用 BOOTCAMP 安裝WINDOWS 7 SP1很順,沒啥問題,

直到昨天手殘玩壞分割區,修復試過也沒用,只好重灌WINDOWS,但過程很雷啊...APPLE真是越做越回去了。

網路上利用BOOTCAMP安裝WINDOWS的教學很多,我就不贅述,大概就如下過程:

1.利用BOOTCAMP + WINDOWS ISO檔,製作WIN7 USB開機碟
2.若是安裝WIN7,需手動下載BOOTCAMP WIN DRIVER並放到USB開機碟
3.重新分割出WIN磁區,分割完會自動重新用USB開機安裝WIN7

以上最重要的是,要「一氣呵成」,不能只做前二個步驟,然後第三步驟用別的工具去分割,

不然USB開機碟內會沒有必要的驅動程式而抓不到MAC的輸入裝置(你會以為畫面凍結了,實際上是鍵盤滑鼠抓不到...),這樣也灌不成(APPLE這種作法真的很神邏輯...)。

之後進到WINDOWS安裝畫面,要開始安裝時,會遇到「遺失必要的CD/DVD磁碟裝置驅動程式」這問題,

這是因為找不到WINDOWS安裝光碟,所以要叫你裝一下DVD或USB的驅動程式來找看看WIN光碟在哪(都能開機了跟我說找不到...微軟真是讓我醉了 囧,不過也可能是BOOTCAMP動到了光碟內資料結構的關係)

有的人說這是USB 3.0的問題,改用USB 2.0隨身碟就好,但在OSX 10.9使用BOOTCAMP時並沒有這個問題,而且之前和現在這次我用的隨身碟也確定是USB 2.0的。

所以解法就是,請準備二隻隨身碟,一隻就是上述用BOOTCAMP製作的,一隻則是直接將WINDOWS光碟做成USB開機碟

當畫面進入到詢問驅動程式在哪時,此時插入WINDWOS USB碟,

並將驅動程式路徑指向BOOTCAMP USB開機碟的「$WinPEDriver$\IntelxHCISetup\Drivers\HCSwitch\Win7\x64」
或「$WinPEDriver$\IntelxHCISetup\Drivers\xHCI\Win7\x64」(二個都試試,這是USB3驅動程式)

不行就再重來,多試幾遍即可。

update: 2015版本的macbook pro安裝windows已經不需要usb隨身碟了,會直接在硬碟先暫時做出一個8G大小的partition做為開機安裝碟,安裝完windows重開該暫時磁區便會消失!所以你要準備的就是直接把windows iso先複製到mac內即可!

2016-05-04

讓 Android Studio 2.1 支援 Lambda expression & Stream API & ButterKnife依賴注入框架


要讓 Android Studio 2.1 能支援java 8的Lambda expression & Stream API & ButterKnife依賴注入框架,
請先安裝JDK8,並修改專案gradle設定檔如下:

gradle.build (Project):

buildscript {
    repositories {
        jcenter()
        //加入套件來源maven
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        // 加入dependency (gradle-retrolambda 外掛)
        classpath 'me.tatarka:gradle-retrolambda:3.2.5'
        // 加入dependency (android-apt 外掛)
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

repositories {
    //加入maven 
    mavenCentral()
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2016-01-13

上傳圖像預覽

其實要讀取圖像的資訊跟預覽,無須動用到FileReader。

https://jsfiddle.net/ef0vg2sb/2/



window.URL = window.URL || window.webkitURL;

var fileSel = document.getElementById("fileSel");
var info = document.getElementById("info");

fileSel.addEventListener("change", function(e) {
  e.preventDefault();
  if (this.files && !!this.files.length) {
    info.innerHTML = "";
    for (var i = 0; i < this.files.length; i++) {
      preview(this.files[i]);
    }
  }
}, false);

var preview = function(file) {
  var img = document.createElement("img");
  img.src = window.URL.createObjectURL(file);

  img.onload = function() {
    info.innerHTML += "檔名:" + file.name + ", 大小:" + file.size + "B" + ", w:" + this.width + ", h:" + this.height + "";
    info.appendChild(this);
    //window.URL.revokeObjectURL(this.src);
  }

}

ref:
https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

2015-12-02

Ubuntu 安裝 SublimeLinter + jshint

在Ubuntu上安裝SublimeLinter + jshint時,nodejs版本要安裝nodejs-legacy版本,

不然Linter會找不到正確路徑。

例如要安裝 jshint 及 csslint:

sudo apt-get install nodejs-legacy
sudo apt-get install npm
sudo npm install -g jshint
sudo npm install -g csslint

Preferences » Package Settings » SublimeLinter » Settings-User 設定 paths:

paths": {
"linux": [
"/usr/local/lib/node_modules/jshint/bin",
"/usr/local/lib/node_modules/csslint/bin",
"/usr/bin/php -l"
],
"osx": [],
"windows": []
}