2013年12月17日 星期二
Windows 7 移除IE10大全
case 1 : IE10 是從Windows更新後來的
解法:Windows Update裡面找到IE10,移除該更新即可
case2:IE10是灌好OS就有了
解法:無法從Windows Update移除,因為是OS自帶的,
另外從控制台>程式與功能>開啟或關閉Windows功能也是沒有用的,會移不乾淨
正確的解法是用系統管理員身分執行命令提示字元,執行:
FORFILES /P %WINDIR%\servicing\Packages /M Microsoft-Windows-InternetExplorer-*10.*.mum /c "cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /quiet /norestart"
這一串指令,過程會出現幾個存取拒絕的錯誤,按確定就好了,等到C:/>這個提示字元出現後,再重新開機,你的IE8就回來了
2013年10月23日 星期三
[技術筆記] SNMP 吃記憶體 (snmp4j)
public class TestSnmp{
TransportMapping transport;
(下略五千字)
public void go(){
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();
}
}
TestSnmp testSnmp = new TestSnmp();
(略)
testSnmp.go;
這時候就算你把snmp.close()、你狠一點把 testSnmp=null 都沒用
該死的transport的參考還會在,記憶體就會被一直吃,
使用snmp4j時,除了snmp.close(),千萬要記得把那個transport.close()
TransportMapping transport;
(下略五千字)
public void go(){
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();
}
}
TestSnmp testSnmp = new TestSnmp();
(略)
testSnmp.go;
這時候就算你把snmp.close()、你狠一點把 testSnmp=null 都沒用
該死的transport的參考還會在,記憶體就會被一直吃,
使用snmp4j時,除了snmp.close(),千萬要記得把那個transport.close()
2013年10月16日 星期三
Java 排程工具、定時執行Class的好工具:Quartz
使用 quartz-all-2.1.0.jar
另外還需要commons-logging-1.1.1.jar 這一類的包,因為Quartz用的logeer是這個
原理:建立Scheduler,建立一個指定要定時工作的Class以及日期參數(類似CRONTAB)的Job,建立 Trigger,將Job與Trigger與Scheduler綁定,至於進階的Group跟Trigger那些沒用的很深,就不研究了。
時間到了Quartz會很聰明的執行你指定的Class,Class本身要實作Quartz的Job介面
範例:
極重要!務必在你要新建Quartz的CLASS裡面加入這行
如果你想被洗版的話例外... Logger.getLogger("org.quartz").setLevel(Level.INFO);
Scheduler sched; public void initAJob{
try {
//建立一個Scheduler
SchedulerFactory sf = new StdSchedulerFactory();
sched = sf.getScheduler();
JobDetail job = newJob(PollingWorker.class).withIdentity( "JobA","JobAGroup").build();
//如果在工作執行時,需要傳入變數或物件,可以使用getJobDataMap()方法放東西進去
job.getJobDataMap().put("param", param);
job.getJobDataMap().put("connectionPool", connectionPool);
CronTrigger trigger = newTrigger().withIdentity("JobATrigger", "JobAGroup")
.withSchedule(cronSchedule("0 11 0 * * ?")).build();
//將Job與Trigger放入scheduler
Date ft = sched.scheduleJob(job, trigger);
System.out.println(job.getKey() + " has been scheduled to run at: " + ft
+ " and repeat based on expression: "
+ trigger.getCronExpression());
//執行就可以了
sched.start();
} catch (Exception ex) {
//do something
}
}
-----------------
PollingWorker.class
public class PollingWorker implements Job { //必須實作Job 介面
//我自己用到的變數
NDSExternalPolling NDSEP;
Param param;
ConnectionPool connectionPool;
public PollingWorker() {
}
@Override
public void execute(JobExecutionContext jec) throws JobExecutionException {
//拿傳入變數只要這樣拿出來再轉型就可以了
JobDataMap dataMap = jec.getJobDetail().getJobDataMap();
param = (Param) dataMap.get("param");
connectionPool = (ConnectionPool)dataMap.get("connectionPool");
//do something
}
}
----
簡易時間參數說明
"0 11 0 * * ?" 每天零點11分執行,不限月日
"0 47 0/2 * * ?" 每兩小時(從0點開始算:0,2,4,6,8~22) 的47分時執行,不限月日
"0 3/10 * * * ?" 每10分鐘執行一次(從3分開始算:3,13,23,33,43,53)
更進階的自己GOOGLE
另外還需要commons-logging-1.1.1.jar 這一類的包,因為Quartz用的logeer是這個
原理:建立Scheduler,建立一個指定要定時工作的Class以及日期參數(類似CRONTAB)的Job,建立 Trigger,將Job與Trigger與Scheduler綁定,至於進階的Group跟Trigger那些沒用的很深,就不研究了。
時間到了Quartz會很聰明的執行你指定的Class,Class本身要實作Quartz的Job介面
範例:
極重要!務必在你要新建Quartz的CLASS裡面加入這行
如果你想被洗版的話例外... Logger.getLogger("org.quartz").setLevel(Level.INFO);
Scheduler sched; public void initAJob{
try {
//建立一個Scheduler
SchedulerFactory sf = new StdSchedulerFactory();
sched = sf.getScheduler();
JobDetail job = newJob(PollingWorker.class).withIdentity( "JobA","JobAGroup").build();
//如果在工作執行時,需要傳入變數或物件,可以使用getJobDataMap()方法放東西進去
job.getJobDataMap().put("param", param);
job.getJobDataMap().put("connectionPool", connectionPool);
CronTrigger trigger = newTrigger().withIdentity("JobATrigger", "JobAGroup")
.withSchedule(cronSchedule("0 11 0 * * ?")).build();
//將Job與Trigger放入scheduler
Date ft = sched.scheduleJob(job, trigger);
System.out.println(job.getKey() + " has been scheduled to run at: " + ft
+ " and repeat based on expression: "
+ trigger.getCronExpression());
//執行就可以了
sched.start();
} catch (Exception ex) {
//do something
}
}
-----------------
PollingWorker.class
public class PollingWorker implements Job { //必須實作Job 介面
//我自己用到的變數
NDSExternalPolling NDSEP;
Param param;
ConnectionPool connectionPool;
public PollingWorker() {
}
@Override
public void execute(JobExecutionContext jec) throws JobExecutionException {
//拿傳入變數只要這樣拿出來再轉型就可以了
JobDataMap dataMap = jec.getJobDetail().getJobDataMap();
param = (Param) dataMap.get("param");
connectionPool = (ConnectionPool)dataMap.get("connectionPool");
//do something
}
}
----
簡易時間參數說明
"0 11 0 * * ?" 每天零點11分執行,不限月日
"0 47 0/2 * * ?" 每兩小時(從0點開始算:0,2,4,6,8~22) 的47分時執行,不限月日
"0 3/10 * * * ?" 每10分鐘執行一次(從3分開始算:3,13,23,33,43,53)
更進階的自己GOOGLE
2013年8月5日 星期一
[心得] Steve Vai Live in Taipei 2013
作者 gmoz ( This can't do that. ) 看板 RockMetal
標題 [心得] Steve Vai Live in Taipei 2013
時間 Mon Aug 5 00:39:56 2013
───────────────────────────────────────
結論:太爽啦XDDDD 全部照片:http://ppt.cc/XfDz
今天4點就到ATT上面,不過感覺工作人員一開始沒在狀況內,
本來在猜要從樓梯那邊排,不過沒看到任何標示(貼在裡面= =)
還好後來別人在問的時候有偷聽到,立馬跑去,大概是教父區前10人XD
不過樓梯真的爆熱,後來主辦單位就請我們到BOX2理面排隊吹冷氣
不然沒有室內飲水300CC真的可能會中暑
開場Neil Zaza馬上帶來耳熟能詳的I'm Alright,音場真的超優,
我一開始以為我在聽CD
http://ppt.cc/W8n5
老范出場後嗨番啦~~~ 服裝一樣騷包,花褲子黑衣服加黑帽
http://ppt.cc/68aA
想聽的歌都有了,而且靠隊友我拿到一對Jeremy Colson丟出來的鼓棒啦
http://images.plurk.com/iItL-6uJCUOadO5ONvqiBYZSJVv.jpg
以前第一次看到JC打鼓動作跟力道超狂野,但是點卻超細膩簡直不可思議
今天現場看到果然還是一樣神
然後也有搞笑片段XD http://ppt.cc/7tHL
另外我然後還有摸到Vai的吉他(靠近EVO)!!! http://ppt.cc/nWOA
在幾乎不到三公尺的距離看到現場的「For the Love of God」、
「Building The Church 」真的值得了,
「Tender Surrender」,前奏一出來整場都嗨翻了OMG
這場花招很多,親吉他、吹吉他、咬+拉起吉他弦都有XDD
用搖桿跟觀眾玩對點也有,叫正妹上台一起即興創作也有
LED戰士袍也登場了XDDD
http://ppt.cc/orqH
整場下來音場超正點,優!
真的是值回票價XDDD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.250.170.47
推 DEATH66611:超棒 真的很屌,唯一遺憾就是不該買聖手區,整場下來 08/05 00:47
→ DEATH66611:都在看前方黑壓壓後腦杓 下次應該要花大錢買下去就對了 08/05 00:48
→ gmoz:依經驗看 要就搖滾區或是二樓看台 XDDD 08/05 00:50
推 fabledqqman:二樓看台有種看電影的感覺 顆顆 08/05 00:52
※ 編輯: gmoz 來自: 111.250.170.47 (08/05 01:02)
推 machijoy:超爽的阿~~~~ 08/05 01:03
推 hyper99:出神入化 08/05 01:23
推 johngood2032:爽!!!! 但想求歌單 08/05 02:06
標題 [心得] Steve Vai Live in Taipei 2013
時間 Mon Aug 5 00:39:56 2013
───────────────────────────────────────
結論:太爽啦XDDDD 全部照片:http://ppt.cc/XfDz
今天4點就到ATT上面,不過感覺工作人員一開始沒在狀況內,
本來在猜要從樓梯那邊排,不過沒看到任何標示(貼在裡面= =)
還好後來別人在問的時候有偷聽到,立馬跑去,大概是教父區前10人XD
不過樓梯真的爆熱,後來主辦單位就請我們到BOX2理面排隊吹冷氣
不然沒有室內飲水300CC真的可能會中暑
開場Neil Zaza馬上帶來耳熟能詳的I'm Alright,音場真的超優,
我一開始以為我在聽CD
http://ppt.cc/W8n5
老范出場後嗨番啦~~~ 服裝一樣騷包,花褲子黑衣服加黑帽
http://ppt.cc/68aA
想聽的歌都有了,而且靠隊友我拿到一對Jeremy Colson丟出來的鼓棒啦
http://images.plurk.com/iItL-6uJCUOadO5ONvqiBYZSJVv.jpg
以前第一次看到JC打鼓動作跟力道超狂野,但是點卻超細膩簡直不可思議
今天現場看到果然還是一樣神
然後也有搞笑片段XD http://ppt.cc/7tHL
另外我然後還有摸到Vai的吉他(靠近EVO)!!! http://ppt.cc/nWOA
在幾乎不到三公尺的距離看到現場的「For the Love of God」、
「Building The Church 」真的值得了,
「Tender Surrender」,前奏一出來整場都嗨翻了OMG
這場花招很多,親吉他、吹吉他、咬+拉起吉他弦都有XDD
用搖桿跟觀眾玩對點也有,叫正妹上台一起即興創作也有
LED戰士袍也登場了XDDD
http://ppt.cc/orqH
整場下來音場超正點,優!
真的是值回票價XDDD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.250.170.47
推 DEATH66611:超棒 真的很屌,唯一遺憾就是不該買聖手區,整場下來 08/05 00:47
→ DEATH66611:都在看前方黑壓壓後腦杓 下次應該要花大錢買下去就對了 08/05 00:48
→ gmoz:依經驗看 要就搖滾區或是二樓看台 XDDD 08/05 00:50
推 fabledqqman:二樓看台有種看電影的感覺 顆顆 08/05 00:52
※ 編輯: gmoz 來自: 111.250.170.47 (08/05 01:02)
推 machijoy:超爽的阿~~~~ 08/05 01:03
推 hyper99:出神入化 08/05 01:23
推 johngood2032:爽!!!! 但想求歌單 08/05 02:06
2013年7月23日 星期二
Alesis DM10 + Q502 MIXER 電子鼓錄音分享
作者 gmoz ( This can't do that. ) 看板 Drum
標題 [心得] Alesis DM10 +Q502 MIXER 電子鼓錄音分享
時間 Wed Jul 10 22:45:32 2013
───────────────────────────────────────
最近換了Behringer Q502這台有錄音介面Mixer,錄音更方便啦~
(是Q502 不是502,有Q字才有內建錄音介面)
舊的錄音方式請爬我文,新的方式如下:
剛好剛剛又有板友問我這台電子鼓的錄音方式,就順便再分享一下XD
我是鼓獨立錄,同時錄影片,
再用SONY VEGAS這套軟體把鼓的聲音、原曲音樂、影片合併起來
整體架構圖是這樣的 http://i.imgur.com/AUAKR8D.jpg
input: MP3 player
|
|
|--->AUX IN->[ DM10 ]-> AUX OUT --(drum)-----> Q520 -----usb----> PC
output: |
|-------(drum+mp3)---->headphone
可以看見一個輸入:
1.MP3輸入到DM10的AUX IN (3.5mm公頭轉紅白AUX兩頭)
兩個輸出:
1.一個是從DM10的AUX OUT 只輸出鼓軌 到 Q502 (Q502上請按下To Mixer按鈕)
(請用6.3mm導線接到跟MIC一起的第一軌LINE IN,其他軌不行,因為沒供電)
然後Q502從usb把聲音輸出到PC端
2.另外一個是DM的耳機孔輸出鼓+音樂到你的耳機
DM10請先設定 UTILTY 的 Output 調整為 "MAIN>AUX",
這樣就可以從AUX OUT只輸出鼓,
而不會MP3也跟著鼓一起混著輸出了,若MIXER聲音燈號沒反應,
請檢查這邊是不是有設定好
然後PC端這邊,請先去Behringer官網下載病安裝 U-Control 驅動
這樣你的電腦就會多一個線路輸入(Behringer)
PC端就隨便找一個MP3錄音軟體,輸入來源選擇上面那個線路輸入(Behringer)
然後就可以開始錄啦XDDD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.153.185
推 miyavihide:感謝分享,受用不盡,讓我學到了一課!!! 07/10 23:23
推 shiiz:這個好!!!!!!!!!!!!!!!!!!!! 07/11 16:19
推 kevin00060:太感謝了,解決了我很多問題 07/12 14:29
2013年5月14日 星期二
Date與字串轉換
從DB拿(JPA2.0);Date轉字串,直接拿會多一個.0,需要格式化
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.sql.Timestamp tt = new java.sql.Timestamp(completedTime.getTime());
//completedTime是DB的欄位
String st = sdf.format(tt);
return st;
直接拿系統時間;Date轉字串
java.util.Date ud = java.util.Calendar.getInstance().getTime();
java.sql.Timestamp ts = new java.sql.Timestamp(ud.getTime());
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(ts);
字串轉Date
String dateValue = "2013-05-5 15:14:13";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateValue);
return date;
2013年4月26日 星期五
在glassfish使用JPA元件時Query出錯
哈囉~ 我又來了
繼上次遇到commons-net 的FTP 用新版的會有問題之後,
我又遇到一個BUG啦~~ (眼神死
JSF+JPA(eclipselink)+GlassFish 部屬完之後,
使用JPA在Query的時候就會爆炸了,拿不到東西
頁面會有null resource的訊息,
往後追伺服器的報錯訊息,內容為
「java.lang.IllegalArgumentException: null source at java.util.EventObject
balabala....後面太長..略」
訊息來源是:路徑/WEB-INF/classes/_(你CDI的persistence-unit的名稱)
後來google了很久才看到,不是eclipselink的問題,
是JDBC的lib舊版本的BUG
我出問題的版本是:mysql-connector-java-5.1.6
後來把5.1.14放進glassfish的lib下取代5.1.6
再重啟server, Query就正常了(也有可能是我用的舊版本來就不支援啦 嘻嘻)
給大家參考 \0.0
2013年3月16日 星期六
Battle Cats 第三章第48關巴哈姆特 C3 stage48
過關時數據
生產速度259%
貓耐力265%
攻擊力222%
女武神18級
肌肉、牆壁、龍喵、草泥馬20級
我方基礎技能 基地加農砲13級、基地血10級其他20級
我覺得關鍵在耐力,我耐力220%的時候打不過,提高到260%就過了
打法:
一開始狂出牆壁(肌肉先不用),有錢就升速度,盡量先出第一隻龍喵,
一直這樣狂出牆壁跟龍喵(不能斷),錢自己飆到4000就出女武神,
這樣推到他家門口時你應該有兩隻女武神跟一堆龍喵,
打到基地大約65~68萬血開始也出肌肉喵,
這時候第三隻女武神CD也快差不多了,巴哈出來後如果覺得你的部隊有危險就射基地泡,
我還有混一些草泥馬(牛)喵,然後就贏了=3=
2013年3月4日 星期一
log4j 個別類別輸出個別log檔案
設定檔內容
log4j.rootLogger=Logger, LogFile
log4j.appender.Logger=org. apache.log4j.ConsoleAppender
log4j.appender.Logger.layout= org.apache.log4j.PatternLayout
log4j.appender.Logger.layout. ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%p][%C-%L] %m%n
log4j.appender.LogFile=org. apache.log4j. DailyRollingFileAppender
log4j.appender.LogFile.layout= org.apache.log4j.PatternLayout
log4j.appender.LogFile.layout. ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%p][%F] %m%n
log4j.appender.LogFile.File=./ CHTAdjError.log
log4j.appender.LogFile. MaxFileSize=5000KB
log4j.appender.LogFile. MaxBackupIndex=10
log4j.logger.ADJlog = INFO,CHTAdjError.class
log4j.appender.ADJlogger. apache.log4j. DailyRollingFileAppender
log4j.appender.ADJlogger. layout=org.apache.log4j. PatternLayout
log4j.appender.ADJlogger. layout.ConversionPattern=[%d{ yy/MM/dd HH:mm:ss}][%p][%F] %m%n
log4j.appender.ADJlogger.File= ./CHTAdjErrorAnalyze.log
log4j.appender.ADJlogger. MaxFileSize=5000KB
log4j.appender.ADJlogger. MaxBackupIndex=10
log4j.logger.org.apache.http= ERROR
----------------
rootlogger是上層,所有logger都會繼承他的設定
然後要另外設定個別輸出log的話就像ADJlog
code裡面呼叫方法為 logger = Logger.getLogger("ADJlogger");
2013年1月21日 星期一
Java 正規表示範例
import java.util.regex.Matcher;
import java.util.regex.Pattern;
---------------------------------------------------------------------------------------
public void parserCircuitID(String inputStr) {
String patternStr = "circuit [0-9]+/[0-9]+:[0-9]+:[0-9]+/[0-9]+/[0-9]+/[0-9]+";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find();
System.out.print(matchFound);
while (matchFound) { //有符合項
System.out.println(matcher.start() + "-" + matcher.end());
for (int i = 0; i <= matcher.groupCount(); i++) {
String groupStr = matcher.group(i); //正規表示式若有括號則依序取
System.out.println(i + ":" + groupStr);
}
if (matcher.end() + 1 <= inputStr.length()) { //未到結尾並且還有符合項
matchFound = matcher.find(matcher.end());
} else {
break;
}
}
}
訂閱:
文章 (Atom)