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()

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





















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

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;
            }
        }
    }
終焉に咲く花-Asriel