The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          #

               摘要: //百度地圖的坐標轉(zhuǎn)換,由于百度地圖在GCJ02協(xié)議的基礎上又做了一次處理,變?yōu)?BD09協(xié)議的坐標,以下是坐標的轉(zhuǎn)化方式,可以方便和其他平臺轉(zhuǎn)化jQuery.MapConvert = {    x_pi: 3.14159265358979324 * 3000.0 / 180.0,    /// <summary...  閱讀全文
          posted @ 2015-01-23 18:56 Eric_jiang 閱讀(913) | 評論 (0)編輯 收藏

          工作中,使用JAVA的JAXP讀取解析XML文件中,就碰到了一件奇件的事。在Web工程中,調(diào)試發(fā)現(xiàn)JAXP實際使用的是Xerces解析器, 
          可是,當將工程中的一個小Swing工具,與Web使用一樣的jar包,打成一個可執(zhí)行的jar包時,調(diào)試卻發(fā)現(xiàn)JAXP實際使用的是Crimson 
          解析器,還會發(fā)現(xiàn)解析XML文件時出現(xiàn)錯誤,經(jīng)過分析,發(fā)現(xiàn)Crimson解析器是Sun公司開發(fā)的(實際使用發(fā)現(xiàn)Crimson沒有Xerces解析器穩(wěn)定), 
          打包在JAVA_HOME/lib/dt.jar包中,這個dt.jar被設置在環(huán)境變量CLASSPATH中了,當運行可執(zhí)行的jar包是,JAXP會使用CLASSPATH的解析器, 
          在Web工程中的War包則不會。 
          通過閱讀JDK源碼javax.xml.parsers.FactoryFinder,javax.xml.parsers.SAXParserFactory以及DocumentBuilderFactory發(fā)現(xiàn)JDK按照如下順序:

          1 系統(tǒng)屬性javax.xml.parsers.DocumentBuilderFactory或javax.xml.parsers.SAXParserFactory

          2 在jdk-dir/lib/jaxp.properties中設定的javax.xml.parsers.DocumentBuilderFactory或javax.xml.parsers.SAXParserFactory屬性

          3 運行時jar包中META-INF/services/javax.xml.parsers.DocumentBuilderFactory或javax.xml.parsers.SAXParserFactory文件中設定的值

          4. 如果上面的解析器都沒有找到,則使用Crimson。如果還沒有。。。。。。那報ClassNotFound異常了。

          通過JAXP查找解析器的順序,我們可以使用下面方式來決定,我們使用的實際解析器,
          1 在程序中寫死實際的解析器

          javax.xml.parsers.DocumentBuilderFactory factory= new org.apache.crimson.jaxp.DocumentBuilderFactoryImpl();
          2 使用JAXP的 DocumentBuilderFactory 工廠類,如
          javax.xml.parsers.DocumentBuilderFactory factory= javax.xml.parsers.DocumentBuilderFactory.newInstance();
          再通過下面的方式來指定實際的解析器類
          方法一:在運行java時,通過設置java -D javax.xml.parsers.DocumentBuilderFactory=new org.apache.crimson.jaxp.DocumentBuilderFactoryImpl
          方法二:在程序中調(diào)用System.setProperty(“javax.xml.parsers.DocumentBuilderFactory”,” org.apache.crimson.jaxp.DocumentBuilderFactoryImpl”)
          來設定實際的XML解析器.
          方法三:編寫一個jaxp.properties文件,在其中加入如下內(nèi)容
          javax.xml.parsers.DocumentBuilderFactory=org.apache.crimson.jaxp.DocumentBuilderFactoryImpl
          再將此文件放入JAVA_HOME/lib/下
          方法四:在打jar包下,在目錄META-INF/下新建一個services目錄,在此目錄新建一個文件名為javax.xml.parsers.DocumentBuilderFactory的文件,
          文件內(nèi)容寫上實際使用的解析器類,如寫org.apache.crimson.jaxp.DocumentBuilderFactoryImpl
          通過,上面,我們就可以對JAXP有一個比較深的了解。其實,JAVA中有許多這種思想的做法,這種思想,指的是什么的,就是平臺無關性,發(fā)展到不依賴于具體的實現(xiàn)。
          如我們熟悉的JNDI,JDBC,JAXP等。JNDI是抽像各種目錄服務操作的類庫,因為目錄服務器廠商太多了,如SUN公司的ldapsdk,還有novell公司等等。JDBC是抽像各種數(shù)據(jù)庫
          操作的類庫,因為數(shù)據(jù)庫廠商也太多了,如ORACLE,SQLSERVER,MYSQL,INFORMIX等等,JAXP就是抽像各種XML解析器和轉(zhuǎn)換器產(chǎn)品的類庫,因為XML解析器和轉(zhuǎn)換器產(chǎn)品夠多
          的了。

          訪問AIX系統(tǒng)中部署在OC4J中的web 模塊的頁面時遇到這個錯誤:
          javax.xml.parsers.FactoryConfigurationError: Provider null could not be instantiated: 
          java.lang.NullPointerException
          at javax.xml.parsers.SAXParserFactory.newInstance(Unknown Source)
          at org.apache.commons.digester.Digester.getFactory(Digester.java:478)
          at org.apache.commons.digester.Digester.getParser(Digester.java:683)
          at org.apache.commons.digester.Digester.getXMLReader(Digester.java:891)
          at org.apache.commons.digester.Digester.parse(Digester.java:1591)
          at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1433)
          at org.apache.struts.action.ActionServlet.init(ActionServlet.java:466)
          at javax.servlet.GenericServlet.init(GenericServlet.java:256)
          at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpApplication.loadServlet(HttpApplication.java:2231)
          at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpApplication.findServlet(HttpApplication.java:4617)
          ……
          或者這樣的異常:
          javax.servlet.jsp.JspException: Can't get definitions factory from context.
          at org.apache.struts.taglib.tiles.InsertTag.processDefinitionName(InsertTag.java:583)
          at org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:487)
          at org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:451)
          at _welcome._jspService(_welcome.java:54)
          [SRC:/welcome.jsp:4]

          …… 
          而當在Windows環(huán)境下部署時就沒有問題。

          這里是因為IBMAIX系統(tǒng)使用的是IBMJDK。而出現(xiàn)這個問題正是因為IBMSUNJDK的差異。 具體是因為$JAVA_HOME/jre/lib/jaxp.properties 這個文件。

          這個文件以key=value的形式配置和指定實際使用的XML解析器實現(xiàn)類(譬如:javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl)。在XML解析器初始化之前,JDK首先會搜索Systemproperties尋找解析器的配置項,如果沒有則會搜索 $JAVA_HOME/jre/lib 路徑下的 jaxp.properties 文件,如果還沒有,接下來會在classpath上的.jar包中尋找,仍然沒有的話就會使用默認的解析器。

          實際上這個文件在SUNJDK中是不存在的。在找不到文件的情況下,最終將使用默認解析器。在IBMJDK中存在 jaxp.properties這個文件。但是這個文件中默認所有的配置項是注釋掉的,所以在搜索到此處時,不再繼續(xù)向下搜索,但是由于讀取不到配置項,所以會返回null ,于是出現(xiàn)了上文的第一個錯誤。第二個異常大概是因為訪問使用tiles框架的頁面時,由于XML解析器初始化出錯,所以tiles框架的配置文件也就讀取不了了。

          posted @ 2015-01-15 12:42 Eric_jiang 閱讀(829) | 評論 (0)編輯 收藏

          Windows 強制刪除文件及文件夾命令

          一、刪除文件或目錄CMD命令:

          rd/s/q 盤符:\某個文件夾  (強制刪除文件文件夾和文件夾內(nèi)所有文件)
          del/f/s/q 盤符:\文件名  (強制刪除文件,文件名必須加文件后綴名)


          XCOPY復制組文件 
          COPY復制文件 
          拷貝目錄和文件——xcopy 
          在拷貝單個文件時,可以使用copy命令完成,但當我們要成批拷貝文件,甚至連同子目錄一起拷貝時,就要用到xcopy。

           一、Xcopy參數(shù)介紹

            命令格式:XCOPY source [destination] 一堆可選的參數(shù)

            參數(shù)介紹

            source 指定要復制的文件。

            destination 指定新文件的位置和/或名稱。

            /A 只復制有存檔屬性集的文件, 但不改變屬性。

            /M 只復制有存檔屬性集的文件, 并關閉存檔屬性。

            /D:m-d-y 復制在指定日期或指定日期以后改變的文件。如果沒有提供日期,只復制那些源時間比目標時間新的文件。

            /EXCLUDE:file1[+file2][+file3]... 
            指定含有字符串的文件列表。如果有任何字符串與要被復制的文件的絕對路徑相符,那個文件將不會得到復制。

            例如,指定如 \obj\ 或 .obj 的字符串會排除目錄 obj 下面的所有文件或帶有 .obj 擴展名的文件。

            /P 創(chuàng)建每個目標文件前提示。

            /S 復制目錄和子目錄,除了空的。

            /E 復制目錄和子目錄,包括空的。 與 /S /E 相同。可以用來修改 /T。

            /V 驗證每個新文件。

            /W 提示您在復制前按鍵。

            /C 即使有錯誤,也繼續(xù)復制。

            /I 如果目標不存在,又在復制一個以上的文件, 則假定目標一定是一個目錄。

            /Q 復制時不顯示文件名。

            /F 復制時顯示完整的源和目標文件名。

            /L 顯示要復制的文件。

            /G 允許將沒有經(jīng)過加密的文件復制到不支持加密的目標。

            /H 也復制隱藏和系統(tǒng)文件。

            /R 改寫只讀文件。

            /T 創(chuàng)建目錄結構,但不復制文件。不包括空目錄或子目錄。/T /E 包括空目錄和子目錄。

            /U 只復制已經(jīng)存在于目標中的文件。

            /K 復制屬性。一般的 Xcopy 會重設只讀屬性。

            /N 用生成的短名復制。

            /O 復制文件所有權和 ACL 信息。

            /X 復制文件審核設置(隱含 /O)。

            /Y 禁止提示以確認改寫一個現(xiàn)存目標文件。

            /-Y 導致提示以確認改寫一個現(xiàn)存目標文件。

            /Z 用重新啟動模式復制網(wǎng)絡文件。

            二、Xcopy命令實例介紹

            ①本機復制文件或文件夾的實例

            Xcopy d:\UpdateFiles e:\123  /s /e /y

            命令解釋:將D盤的UpdateFiles文件夾中包含的所有東西,全部復制到E盤的123文件夾內(nèi);/s /e /y 參數(shù)說明:在復制文件的同時也復制空目錄或子目錄,如果目標路徑已經(jīng)有相同文件了,使用覆蓋方式而不進行提示。

            ②在局域網(wǎng)中的應用實例

            Xcopy \\192.168.0.168\UpdateFiles e:\123  /s /e /y

            命令解釋:將192.168.0.168這臺計算機的名稱為UpdateFiles的文件夾內(nèi)的所有東西,全部復制到本機的e:\123 文件夾;參數(shù)說明:在復制文件的同時也復制空目錄或子目錄,如果目標路徑已經(jīng)有相同文件了,使用覆蓋方式而不進行提示。

          刪除一個或數(shù)個文件。

          一、Del參數(shù)介紹


          DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
          ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
            names         指定一個或數(shù)個文件或目錄列表。通配符可被用來
                          刪除多個文件。如果指定了一個目錄,目錄中的所
                          有文件都會被刪除。
            /P            刪除每一個文件之前提示確認。
            /F            強制刪除只讀文件。
            /S            從所有子目錄刪除指定文件。
            /Q            安靜模式。刪除全局通配符時,不要求確認。
            /A            根據(jù)屬性選擇要刪除的文件。
            attributes      R  只讀文件                     S  系統(tǒng)文件
                            H  隱藏文件                     A  存檔文件
                            -  表示“否”的前綴
          如果命令擴展名被啟用,DEL 和 ERASE 會如下改變:
          /S 開關的顯示句法會顛倒,即只顯示已經(jīng)
          刪除的文件,而不顯示找不到的文件。
          posted @ 2015-01-15 10:56 Eric_jiang 閱讀(200) | 評論 (0)編輯 收藏

          有時候我們需要設置一個alarmmanager事件
          但是如果這個事件的時間是凌晨三點 我們不可能等到凌晨三點吧
          adb中提供了查看alarmmanager的命令
          adb shell dumpsys alarm
          通過這命令可以查看被放到定時隊列里面的事件

              RTC_WAKEUP #1: Alarm{52c2ad84 type 0 com.sina.weibo}     type=0 when=+3m1s330ms repeatInterval=0 count=0     operation=PendingIntent{529fa514: PendingIntentRecord{52a7b220 com.sina.weibo broadcastIntent}} 

          如果我們就可以看到其中一個微博的alarm 如果我們想看他intent的詳細信息
          就可以用下面這個命令
          adb shell dumpsys activity intents
          然后找到里面id是52a7b220 的那一段

            * PendingIntentRecord{52a7b220 com.sina.weibo broadcastIntent}     uid=10073 packageName=com.sina.weibo type=broadcastIntent flags=0x0     requestCode=1383195892 requestResolvedType=null     requestIntent=act=AlarmTaskSchedule     sent=true canceled=false
          posted @ 2015-01-06 15:26 Eric_jiang 閱讀(465) | 評論 (0)編輯 收藏

           
          1、AlarmManager,顧名思義,就是“提醒”,是Android中常用的一種系統(tǒng)級別的提示服務,在特定的時刻為我們廣播一個指定的Intent。簡單的說就是我們設定一個時間,然后在該時間到來時,AlarmManager為我們廣播一個我們設定的Intent,通常我們使用 PendingIntent,PendingIntent可以理解為Intent的封裝包,簡單的說就是在Intent上在加個指定的動作。在使用Intent的時候,我們還需要在執(zhí)行startActivity、startService或sendBroadcast才能使Intent有用。而PendingIntent的話就是將這個動作包含在內(nèi)了。
          定義一個PendingIntent對象。
          PendingIntent pi = PendingIntent.getBroadcast(this,0,intent,0);
          2、AlarmManager的常用方法有三個:
          (1)set(int type,long startTime,PendingIntent pi);
          該方法用于設置一次性鬧鐘,第一個參數(shù)表示鬧鐘類型,第二個參數(shù)表示鬧鐘執(zhí)行時間,第三個參數(shù)表示鬧鐘響應動作。
          (2)setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
          該方法用于設置重復鬧鐘,第一個參數(shù)表示鬧鐘類型,第二個參數(shù)表示鬧鐘首次執(zhí)行時間,第三個參數(shù)表示鬧鐘兩次執(zhí)行的間隔時間,第三個參數(shù)表示鬧鐘響應動作。
          (3)setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
          該方法也用于設置重復鬧鐘,與第二個方法相似,不過其兩個鬧鐘執(zhí)行的間隔時間不是固定的而已。
          3、三個方法各個參數(shù)詳悉:
          (1)int type: 鬧鐘的類型,常用的有5個值:AlarmManager.ELAPSED_REALTIME、 AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、 AlarmManager.RTC_WAKEUP、AlarmManager.POWER_OFF_WAKEUP。
          AlarmManager.ELAPSED_REALTIME表示鬧鐘在手機睡眠狀態(tài)下不可用,該狀態(tài)下鬧鐘使用相對時間(相對于系統(tǒng)啟動開始),狀態(tài)值為3;
          AlarmManager.ELAPSED_REALTIME_WAKEUP表示鬧鐘在睡眠狀態(tài)下會喚醒系統(tǒng)并執(zhí)行提示功能,該狀態(tài)下鬧鐘也使用相對時間,狀態(tài)值為2;
          AlarmManager.RTC表示鬧鐘在睡眠狀態(tài)下不可用,該狀態(tài)下鬧鐘使用絕對時間,即當前系統(tǒng)時間,狀態(tài)值為1;
          AlarmManager.RTC_WAKEUP表示鬧鐘在睡眠狀態(tài)下會喚醒系統(tǒng)并執(zhí)行提示功能,該狀態(tài)下鬧鐘使用絕對時間,狀態(tài)值為0;
          AlarmManager.POWER_OFF_WAKEUP表示鬧鐘在手機關機狀態(tài)下也能正常進行提示功能,所以是5個狀態(tài)中用的最多的狀態(tài)之一,該狀態(tài)下鬧鐘也是用絕對時間,狀態(tài)值為4;不過本狀態(tài)好像受SDK版本影響,某些版本并不支持;
          (2)long startTime: 鬧鐘的第一次執(zhí)行時間,以毫秒為單位,可以自定義時間,不過一般使用當前時間。需要注意的是,本屬性與第一個屬性(type)密切相關,如果第一個參數(shù)對 應的鬧鐘使用的是相對時間(ELAPSED_REALTIME和ELAPSED_REALTIME_WAKEUP),那么本屬性就得使用相對時間(相對于 系統(tǒng)啟動時間來說),比如當前時間就表示為:SystemClock.elapsedRealtime();如果第一個參數(shù)對應的鬧鐘使用的是絕對時間 (RTC、RTC_WAKEUP、POWER_OFF_WAKEUP),那么本屬性就得使用絕對時間,比如當前時間就表示 為:System.currentTimeMillis()。
          (3)long intervalTime:對于后兩個方法來說,存在本屬性,表示兩次鬧鐘執(zhí)行的間隔時間,也是以毫秒為單位。
          (4)PendingIntent pi: 綁定了鬧鐘的執(zhí)行動作,比如發(fā)送一個廣播、給出提示等等。PendingIntent是Intent的封裝類。需要注意的是,如果是通過啟動服務來實現(xiàn)鬧鐘提 示的話,PendingIntent對象的獲取就應該采用Pending.getService(Context c,int i,Intent intent,int j)方法;如果是通過廣播來實現(xiàn)鬧鐘提示的話,PendingIntent對象的獲取就應該采用 PendingIntent.getBroadcast(Context c,int i,Intent intent,int j)方法;如果是采用Activity的方式來實現(xiàn)鬧鐘提示的話,PendingIntent對象的獲取就應該采用 PendingIntent.getActivity(Context c,int i,Intent intent,int j)方法。如果這三種方法錯用了的話,雖然不會報錯,但是看不到鬧鐘提示效果。
          4.舉例說明:定義一個鬧鐘,5秒鐘重復響應。
          (1)MainActivity,在onCreate中完成:
           
           //創(chuàng)建Intent對象,action為ELITOR_CLOCK,附加信息為字符串“你該打醬油了”   
           Intent intent = new Intent("ELITOR_CLOCK");  
           intent.putExtra("msg","你該打醬油了");    
             
           //定義一個PendingIntent對象,PendingIntent.getBroadcast包含了sendBroadcast的動作。   
           //也就是發(fā)送了action 為"ELITOR_CLOCK"的intent   
           PendingIntent pi = PendingIntent.getBroadcast(this,0,intent,0);    
             
           //AlarmManager對象,注意這里并不是new一個對象,Alarmmanager為系統(tǒng)級服務   
            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);    
              
            /設置鬧鐘從當前時間開始,每隔5s執(zhí)行一次PendingIntent對象pi,注意第一個參數(shù)與第二個參數(shù)的關系   
           // 5秒后通過PendingIntent pi對象發(fā)送廣播   
           am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),5*1000,pi);  
          那么啟動MainActivity之后,由于定義了AlarmManager am,并且調(diào)用了am.setRepeating(...)函數(shù),則系統(tǒng)每隔5s將會通過pi啟動intent發(fā)送廣播,其action為ELITOR_CLOCK。所以我們需要在Manifest.xml中注冊一個receiver,同時自己定義一個廣播接收器類。
          (2)定義一個廣播接收器類MyReceiver,重寫onReceive()函數(shù)。
           
          public class MyReceiver extends BroadcastReceiver  
          {  
            
              @Override  
              public void onReceive(Context context, Intent intent)  
              {  
                  // TODO Auto-generated method stub   
                  Log.d("MyTag", "onclock......................");  
                  String msg = intent.getStringExtra("msg");  
                   Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();  
               }  
             
           }  
          (3)在Manifest.xml中注冊廣播接收器:
           
           <receiver android:name=".MyReceiver">  
                   <intent-filter>  
                      <action android:name="ELITOR_CLOCK" />  
                  </intent-filter>  
           </receiver>  
           
           
           
           
          posted @ 2015-01-05 16:59 Eric_jiang 閱讀(356) | 評論 (0)編輯 收藏

          當我們從網(wǎng)上下載的原版蘋果系統(tǒng)是DMG格式的,要做系統(tǒng)引導必須做成ISO才能做系統(tǒng)盤,所以本文介紹在Windows7下如何來制作蘋果系統(tǒng)光盤,各位黑蘋果的童鞋要注意了。

            準備以下三個東西。

            1、蘋果OS10.8種子下載 OS X 10.8 正式版種子.torrent

            2、 制作光盤工具UltraISO UltraISO破解帶注冊碼.zip

            3、7zip http://www.7-zip.org/

            用種子下載整個鏡像,是InstallESD.dmg,用7zip打開。

            

          點擊查看原始圖片

           

            進入 InstallMacOSX.pkg 目錄 提取 InstallESD.dmg 這個才是真正的鏡像文件。

            

          點擊查看原始圖片

           

            我們可以改個名字,再進行格式轉(zhuǎn)換。

            

          點擊查看原始圖片

           

            轉(zhuǎn)換成標準ISO,這個ISO才是我們要的光盤文件,可以來引導安裝蘋果系統(tǒng)。

            

          點擊查看原始圖片

           

            介紹完畢,各位想裝蘋果系統(tǒng)要注意,使用原版蘋果系統(tǒng)都要提取轉(zhuǎn)換鏡像,適用于OS X 10.7\OS X 10.8.

          posted @ 2014-12-31 10:49 Eric_jiang 閱讀(301) | 評論 (0)編輯 收藏

          中文名稱:11.28補丁包1.1a Mac OS X Tiger 10.4.3 For x86 PC破解版
          英文名稱:Mac OS X Tiger 10.4.3 For x86 PC patch
          資源類型:ISO
          版本:11.28升級補丁包1.1a
          地區(qū):大陸
          語言:普通話
          軟件介紹:這個ISO映像已經(jīng)打好11.28日發(fā)布的1.1a補丁包,可以支持8XX板安裝。
          地址如下:http://www7.rapidupload.com/file.php?filepath=1416
          我用以下的方法,已經(jīng)安裝成功,感覺兼容性比以前版本好多了,以及對中文、輸入法的支持等,趕快下載體驗一下吧

          安裝簡介(如下說明為單硬盤XP(2K/2K3)和MAC共存安裝):
          VM安裝,這個步驟較復雜,只能簡說一下,安裝方法很多,只能擇其一說一下。
            用VM(好像5.0以上版本)安裝,既可以安裝在客戶機上,也可以安裝在實體機上。
            在客戶機上安裝非常簡單,就不說了。
            用VM安裝在實體機上,網(wǎng)上也已經(jīng)很多了,就簡單說一下。
          (1) 在裝之前,用PQ8分區(qū)大師(最好漢化的)先分出一個6G以上(一般10G以上最好)空白分區(qū),分區(qū)切記一定要在擴展分區(qū)之前,否則不能安裝。
          (2) 然后創(chuàng)建主分區(qū):  
            #在PQ中創(chuàng)建主分區(qū),要選擇未格式化的主分區(qū),然后再打開PQ目錄下的PTEDIT32.EXE,將要安裝MAC的空白分區(qū)的類型改為AF(所在分區(qū)的第一個框)。
            或者#也可以用XP下的DISKPART工具來更改分區(qū)類型符(較麻煩),在PQ分出空白分區(qū)(1)之后,執(zhí)行:
              DISKPART
              SELECT DISK 0(本說明只講單硬盤,如果為雙硬盤的第二個,則為DISK 1)
              SELECT PARTITION X(X為你的空白分區(qū)號,可用LIST PARTITION 來查看號碼)
              CREATE partition primary ID=AF
           這樣就建立了一個分區(qū)類型為AF(HFS)的MAC分區(qū)了。
          (3) 要裝上DEAMON TOOL虛擬光驅(qū),將轉(zhuǎn)換好的ISO文件導入虛擬光驅(qū)中。
          在VM中新建客戶機,一路選擇其它,內(nèi)存越大越好,客戶機建立后,在配置中刪除虛擬硬盤,然后添加硬盤設備,將剛分出的MAC分區(qū)選擇上。
          (4) 之后用記事本打開你的VM虛擬機下的.vmx配置文件,添加一行:paevm=true
          之所以這樣,是因為10.4.3版的Tiger要求CPU的PAE(Physical Address Extension)支持(用HWINF32可以查看),所以沒有PAE的機子還是用VM安裝。
          (5) 之后啟動VM,將DEAMON TOOL的光驅(qū)導入VM光驅(qū)中,啟動安裝。
          如果出現(xiàn) "Cannot load /com.apple.Boot.plist"這樣的錯誤信息,可以在啟動提示時按F8然后輸入: 
          代碼: kernel=mach_kernel.xxx 
          其中"xxx"對應不同的kernel(只針對下載Maxxuss的kernel)。
          進入設置,選擇你適合的內(nèi)核設置,有如下幾種內(nèi)核選擇:
                mach_kernel (默認): 同 mach_kernel.sse2 一樣 
                mach_kernel.sse2: 支持 SSE2 CPUs, 需 NX/XD CPU 支持(在XP中可以打開控制面板-系統(tǒng) -高級-數(shù)據(jù)執(zhí)行保護,看你的CPU是不是支持DEP,支持DEP就有NX/XD) 
               mach_kernel.nonx: 支持 SSE2 CPUs, 不需要 NX/XD CPU 支持 
               mach_kernel.orig: 原來的內(nèi)核, SSE3 CPUs 帶 NX/XD 支持的 
          (6) 在進入安裝界面后,選擇上面的disk utility,將要安裝的分區(qū)(會突顯)erase,然后安裝就可以了。
          之后就可以盡情享受了MAC了。
          具體安裝方法很多,大家可以用GOOGLE搜索一下!
          有些騾友提了很多問題,確實很白
          其實我懂的也不是太多,盡能力總結答復一下:
          只有是SSE2 或 SSE3的機子,AMD的機子是兼容SSE2/SSE3的,也應該都是可以安裝的。
          MAC Tiger可以實體安裝,也可以用VM模擬安裝做客戶機,在VM上安裝時,要在.vmx配置文件上加上一行 "paevm=true" 。先將ISO文件導入Daemon Tools 虛擬光驅(qū)中, 不要用 VMWare CD/DVD 光盤驅(qū)動器模擬. 
          實體刻盤安裝,要機子支持PAE,所以還是建議在VM中安裝,然后在實體中運行。
          這個版本的MAC是至今為止,中文化程度最好的一個,性能的提升也是最好的。
          MAC上的軟件相當豐富,只要你努力去搜尋,因為MAC機本來是專于多媒體,所以這方面的軟件很多。
          這個補丁是第一版的,以后還會繼續(xù)完善,只要能裝上,以后升級補丁可以單獨下,然后在MAC中打補丁也是一樣的。
          MAC系統(tǒng)不光是界面好,而且裝在PC上啟動運行也是相當快的,反正在我的本本上比XP要快,并不是像人所說的,裝在PC上很慢。這個補丁包就是可以保證性能的! 
          posted @ 2014-12-31 10:46 Eric_jiang 閱讀(271) | 評論 (0)編輯 收藏

          在英文輸入法模式下:

          0-9 對應的keyCode是 48-57

           

          在中文輸入法模式下:

          數(shù)字和字母的按鍵,以及tab鍵的keyCode為229

          回車的回車的 keyCode 為8

           

           

          以后在JS中少用按鍵的keyCode來判斷數(shù)字的輸入

          直接用String.fromCharCode的方法來獲得輸入的字符,然后進行正則表達式的判讀

           

           

          找到一種可以屏蔽復制,拖曳的方法,并且只能輸入數(shù)字,而且使用能讓輸入法的框消失

          1. onkeypress="return event.keyCode>=48&&event.keyCode<=57||event.keyCode==46" onpaste="return !clipboardData.getData('text').match(//D/)" ondragenter="return false" style="ime-mode:Disabled"  
          另外注意,小鍵盤的onKeyPress 和 onKeyDown的 keyCode是不一樣的
          posted @ 2014-12-31 10:11 Eric_jiang 閱讀(367) | 評論 (1)編輯 收藏

          Android SDK的tools目錄下提供了一個sqlite3.exe工具,這是一個簡單的sqlite數(shù)據(jù)庫管理工具。開發(fā)者可以方便的使用其對sqlite數(shù)據(jù)庫進行命令行的操作。

          程序運行生成的*.db文件一般位于"/data/data/項目名(包括所處包名)/databases/*.db",因此要對數(shù)據(jù)庫文件進行操作需要先找到數(shù)據(jù)庫文件:

          1、進入shell 命令

          adb shell

          2、找到數(shù)據(jù)庫文件

          #cd data/data #ls                --列出所有項目 #cd project_name   --進入所需項目名 #cd databases     #ls                --列出現(xiàn)寸的數(shù)據(jù)庫文件

          3、進入數(shù)據(jù)庫

          #sqlite3 test_db   --進入所需數(shù)據(jù)庫

          會出現(xiàn)類似如下字樣:

          SQLite version 3.6.22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>

          至此,可對數(shù)據(jù)庫進行操作。

           

          4、sqlite常用命令

          >.databases        --產(chǎn)看當前數(shù)據(jù)庫 >.tables           --查看當前數(shù)據(jù)庫中的表 >.help             --sqlite3幫助 >.schema            --各個表的生成語句
          posted @ 2014-12-30 15:40 Eric_jiang 閱讀(199) | 評論 (0)編輯 收藏

          因CooCox用戶數(shù)及影響力越來越大,CooCox團隊也逐漸提高了對軟件及代碼協(xié)議的重視。在收集整理的過程中,一些歸納好的信息和大家分享一下。

          首先借用有心人士的一張相當直觀清晰的圖來劃分各種協(xié)議:開源許可證GPL、BSD、MIT、Mozilla、Apache和LGPL的區(qū)別
          license.jpeg 

          以下是上述協(xié)議的簡單介紹:
          BSD開源協(xié)議
          BSD開源協(xié)議是一個給于使用者很大自由的協(xié)議。基本上使用者可以”為所欲為”,可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。

          但”為所欲為”的前提當你發(fā)布使用了BSD協(xié)議的代碼,或則以BSD協(xié)議代碼為基礎做二次開發(fā)自己的產(chǎn)品時,需要滿足三個條件:

              如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議。
              如果再發(fā)布的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協(xié)議。
              不可以用開源代碼的作者/機構名字和原來產(chǎn)品的名字做市場推廣。

          BSD 代碼鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由于允許使用者修改和重新發(fā)布代碼,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是對商業(yè)集成很友好的協(xié)議。而很多的公司企業(yè)在選用開源產(chǎn)品的時候都首選BSD協(xié)議,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發(fā)。

          Apache Licence 2.0
          Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議。該協(xié)議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)。需要滿足的條件也和BSD類似:

              需要給代碼的用戶一份Apache Licence
              如果你修改了代碼,需要再被修改的文件中說明。
              在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標,專利聲明和其他原來作者規(guī)定需要包含的說明。
              如果再發(fā)布的產(chǎn)品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現(xiàn)為對Apache Licence構成更改。

          Apache Licence也是對商業(yè)應用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售。
          GPL

          我們很熟悉的Linux就是采用了GPL。GPL協(xié)議和BSD, Apache Licence等鼓勵代碼重用的許可很不一樣。GPL的出發(fā)點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售。這也就是為什么我們能用免費的各種linux,包括商業(yè)公司的linux和linux上各種各樣的由個人,組織,以及商業(yè)軟件公司開發(fā)的免費軟件了。

          GPL協(xié)議的主要內(nèi)容是只要在一個軟件中使用(”使用”指類庫引用,修改后的代碼或者衍生代碼)GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議,既必須也是開源和免費。這就是所謂的”傳染性”。GPL協(xié)議的產(chǎn)品作為一個單獨的產(chǎn)品使用沒有任何問題,還可以享受免費的優(yōu)勢。

          由于GPL嚴格要求使用了GPL類庫的軟件產(chǎn)品必須使用GPL協(xié)議,對于使用GPL協(xié)議的開源代碼,商業(yè)軟件或者對代碼有保密要求的部門就不適合集成/采用作為類庫和二次開發(fā)的基礎。

          其它細節(jié)如再發(fā)布的時候需要伴隨GPL協(xié)議等和BSD/Apache等類似。

          LGPL
          LGPL是GPL的一個為主要為類庫使用設計的開源協(xié)議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協(xié)議不同。LGPL 允許商業(yè)軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。這使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售。

          但是如果修改LGPL協(xié)議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議。因此LGPL協(xié)議的開源代碼很適合作為第三方類庫被商業(yè)軟件引用,但不適合希望以LGPL協(xié)議代碼為基礎,通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用。

          GPL/LGPL都保障原作者的知識產(chǎn)權,避免有人利用開源代碼復制并開發(fā)類似的產(chǎn)品

          MIT
          MIT是和BSD一樣寬范的許可協(xié)議,作者只想保留版權,而無任何其他了限制.也就是說,你必須在你的發(fā)行版里包含原許可協(xié)議的聲明,無論你是以二進制發(fā)布的還是以源代碼發(fā)布的.

          MPL
          MPL是The Mozilla Public License的簡寫,是1998年初Netscape的 Mozilla小組為其開源軟件項目設計的軟件許可證。MPL許可證出現(xiàn)的最重要原因就是,Netscape公司認為GPL許可證沒有很好地平衡開發(fā)者對源代碼的需求和他們利用源代碼獲得的利益。同著名的GPL許可證和BSD許可證相比,MPL在許多權利與義務的約定方面與它們相同(因為都是符合OSIA 認定的開源軟件許可證)。但是,相比而言MPL還有以下幾個顯著的不同之處:

          ◆ MPL雖然要求對于經(jīng)MPL許可證發(fā)布的源代碼的修改也要以MPL許可證的方式再許可出來,以保證其他人可以在MPL的條款下共享源代碼。但是,在MPL 許可證中對“發(fā)布”的定義是“以源代碼方式發(fā)布的文件”,這就意味著MPL允許一個企業(yè)在自己已有的源代碼庫上加一個接口,除了接口程序的源代碼以MPL 許可證的形式對外許可外,源代碼庫中的源代碼就可以不用MPL許可證的方式強制對外許可。這些,就為借鑒別人的源代碼用做自己商業(yè)軟件開發(fā)的行為留了一個豁口。
          ◆ MPL許可證第三條第7款中允許被許可人將經(jīng)過MPL許可證獲得的源代碼同自己其他類型的代碼混合得到自己的軟件程序。
          ◆ 對軟件專利的態(tài)度,MPL許可證不像GPL許可證那樣明確表示反對軟件專利,但是卻明確要求源代碼的提供者不能提供已經(jīng)受專利保護的源代碼(除非他本人是專利權人,并書面向公眾免費許可這些源代碼),也不能在將這些源代碼以開放源代碼許可證形式許可后再去申請與這些源代碼有關的專利。
          ◆ 對源代碼的定義
          而在MPL(1.1版本)許可證中,對源代碼的定義是:“源代碼指的是對作品進行修改最優(yōu)先擇取的形式,它包括:所有模塊的所有源程序,加上有關的接口的定義,加上控制可執(zhí)行作品的安裝和編譯的‘原本’(原文為‘Script’),或者不是與初始源代碼顯著不同的源代碼就是被源代碼貢獻者選擇的從公共領域可以得到的程序代碼。”
          ◆ MPL許可證第3條有專門的一款是關于對源代碼修改進行描述的規(guī)定,就是要求所有再發(fā)布者都得有一個專門的文件就對源代碼程序修改的時間和修改的方式有描述。
          posted @ 2014-12-30 14:10 Eric_jiang 閱讀(315) | 評論 (0)編輯 收藏

          僅列出標題
          共57頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 
          主站蜘蛛池模板: 芦山县| 三江| 耒阳市| 仁布县| 岳阳县| 平罗县| 江西省| 浦江县| 上高县| 通河县| 抚宁县| 平罗县| 申扎县| 郑州市| 大丰市| 维西| 呈贡县| 淮滨县| 铁力市| 仪陇县| 梅河口市| 红原县| 乌海市| 芦山县| 辛集市| 南江县| 台湾省| 喜德县| 康乐县| 昔阳县| 章丘市| 长垣县| 泌阳县| 平乐县| 太白县| 峨眉山市| 伽师县| 特克斯县| 饶阳县| 安西县| 荥经县|