OSDN Git Service

NCVのリスナー情報同期処理
authorunknown <qwerty2501@users.sourceforge.jp>
Fri, 10 Feb 2012 03:47:29 +0000 (12:47 +0900)
committerunknown <qwerty2501@users.sourceforge.jp>
Fri, 10 Feb 2012 03:47:29 +0000 (12:47 +0900)
12 files changed:
nlite.suo
nlite/nlite.cpp
nlite/nlite.vcxproj
nlite/nlite.vcxproj.filters
nlite/nlite_chatData.cpp
nlite/nlite_chatData.h
nlite/nlite_common.cpp
nlite/nlite_common.h
nlite/nlite_mainframe.cpp
nlite/nlite_property.cpp
nlite/nlite_property.h
todo.txt

index 912e188..a4ef26b 100644 (file)
Binary files a/nlite.suo and b/nlite.suo differ
index 99421dd..8872a48 100644 (file)
@@ -9,7 +9,7 @@ CAppModule _Module;
 
 
 
-static TCHAR localAppDataPath[_MAX_PATH];
+
 
 static WSAData wsaData;                                                        //winsockdata
 static HINTERNET hInternet = NULL;
@@ -159,6 +159,10 @@ static BOOL InitializeNlite(){
                SystemParametersInfo (SPI_SETLISTBOXSMOOTHSCROLLING,FALSE,FALSE,0);
 
 
+               
+               SHGetFolderPathW(0,CSIDL_APPDATA,0,SHGFP_TYPE_CURRENT,appFolderPath);
+               ncvAppSettingPath = appFolderPath;
+               ncvAppSettingPath += TEXT("\\posite-c\\NiconamaCommentViewer\\AppSetting.xml");
        }catch (AppInitException e){
 
                return rslt;
index d868d3c..16cf7e5 100644 (file)
     <None Include="nlite.ico" />
     <None Include="ReadMe.txt" />
     <None Include="small.ico" />
-    <None Include="todo.txt" />
     <None Include="toolbar1.bmp" />
   </ItemGroup>
   <ItemGroup>
index fabd5c6..e0c83f6 100644 (file)
@@ -24,7 +24,6 @@
     <None Include="toolbar1.bmp">
       <Filter>リソース ファイル</Filter>
     </None>
-    <None Include="todo.txt" />
     <None Include="ReadMe.txt">
       <Filter>リソース ファイル</Filter>
     </None>
index 0177243..2d59a08 100644 (file)
@@ -2,7 +2,6 @@
 #include "nlite_include.h"
 
 namespace nlite{
-CListenerList nlite::listenerList;
 
 
 
@@ -317,5 +316,84 @@ CListenerList::reference CListenerList::Register(ListenerData &listener,BOOL bUp
 
 }
 
+BOOL CListenerList::ReadProperty(LPCTSTR fileName){
+       BOOL rslt = FALSE;
+       CAtlFile        userSettingFile;
+       ULONGLONG userSettingFileSize;
+       
+       
+       if(SUCCEEDED(userSettingFile.Create(fileName,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE || SUCCEEDED(userSettingFile.GetSize(userSettingFileSize)) == FALSE){
+
+               throw Exception(TEXT("\83\8a\83X\83i\81[\90Ý\92è\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ\82Å\82µ\82½\81B\82±\82Ì\83G\83\89\81[\82ª\91±\82­\82æ\82¤\82Å\82 \82ê\82Î\81A\88ê\93x\90Ý\92è\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82µ\82Ä\8dÄ\93x\8e\8e\82µ\82Ä\82Ý\82Ä\82­\82¾\82³\82¢"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
+       }
+       std::vector<char> userSettingBuf(static_cast<UINT_PTR>(userSettingFileSize / sizeof(char) + (1 * sizeof(char))));
+       userSettingFile.Read(&userSettingBuf[0],userSettingBuf.size());
+       LPSTR userSettingStart = strstr(&userSettingBuf[0],"<");
+       if(userSettingStart != NULL){
+               ReadUserSettingXML rusx(nlite::listenerList);
+               rusx.Parse(userSettingStart);
+       }
+
+
+       return rslt;
+}
+
+
+ReadUserSettingXML::ReadUserSettingXML(CListenerList &in_listenerList):m_listenerList(in_listenerList),userNodeFlag(FALSE){}
+
+#define NLITE_READ_USER_STRING(at,l,t) if(_tcscmp(at[0],TEXT(#t)) == 0)l.t = at[1]
+#define NLITE_READ_USER_INT(at,l,t)            if(_tcscmp(at[0],TEXT(#t))==0)l.t = _tcstol((const wchar_t*)at[1],NULL,10)
+
+       void ReadUserSettingXML::OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs){
+
+               if(_tcscmp(pszName,TEXT("user")) == 0){
+
+                       this->userNodeFlag = TRUE;
+
+
+                       for(;papszAttrs[0] != NULL;papszAttrs += 2){
+
+                               NLITE_READ_USER_STRING(papszAttrs,listenerBuff,name);
+                               NLITE_READ_USER_STRING(papszAttrs,listenerBuff,community);
+                               NLITE_READ_USER_INT(papszAttrs,listenerBuff,bgcolor);
+                               NLITE_READ_USER_INT(papszAttrs,listenerBuff,time);
+                               
+                       }
+
+               }
+
+               return;
+       }
+
+       void ReadUserSettingXML::OnEndElement (const XML_Char *pszName){
+
+               if(_tcscmp(pszName,TEXT("user")) == 0){
+
+                       listenerList.Register(listenerBuff,TRUE);
+                       this->userNodeFlag = FALSE;
+                       this->listenerBuff.~ListenerData();
+                       new(&listenerBuff) ListenerData();
+
+               }
+
+               return;
+       }
+
+       void ReadUserSettingXML::OnCharacterData (const XML_Char *pszData, int nLength){
+
+               if(this->userNodeFlag == TRUE){
+
+
+                       listenerBuff.user_id.Append(pszData,nLength);
+
+
+
+
+               }
+
+               
+
+               return;
+       }
 
 }
\ No newline at end of file
index 0690b24..cc9efa1 100644 (file)
@@ -104,6 +104,15 @@ namespace nlite{
                reference Register(ListenerData &listener,BOOL bUpdate);
 
 
+               ///
+               ///\83\8a\83X\83i\81[\83f\81[\83^\93Ç\82Ý\8d\9e\82Ý
+               ///
+               BOOL ReadProperty(LPCTSTR fileName);
+
+               ///
+               ///
+               ///
+
                
                ///
                ///\94w\8ci\90F\82ð\8eû\8fW\82·\82é
@@ -158,6 +167,8 @@ namespace nlite{
        };
 
 
+
+
        ///
        ///\83R\83\81\83\93\83g\83\8a\83X\83g\83N\83\89\83X
        ///
@@ -293,5 +304,30 @@ namespace nlite{
                
        };
 
+
+       ///
+       ///\83\86\81[\83U\90Ý\92è\83t\83@\83C\83\8b\93Ç\8eæ\83N\83\89\83X
+       ///
+       class ReadUserSettingXML:public CXmlParser{
+
+       private:
+               ListenerData listenerBuff;
+               CListenerList &m_listenerList;
+               BOOL userNodeFlag;
+               
+               
+               
+
+
+       public:
+
+               ReadUserSettingXML(CListenerList &in_listenerList);
+
+               void OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs);
+
+               void OnEndElement (const XML_Char *pszName);
+
+               void OnCharacterData (const XML_Char *pszData, int nLength);
+       };
        
 }
\ No newline at end of file
index 84710f7..055ca1f 100644 (file)
@@ -21,7 +21,10 @@ namespace nliteregex{
        const  tstring NUTHINGSTRING(TEXT(""));
 }
 Property nliteProperty;        
-
+CListenerList nlite::listenerList;
+TCHAR appFolderPath[_MAX_PATH];
+CString ncvAppSettingPath;
+TCHAR localAppDataPath[_MAX_PATH];
 
  VOID nlite::UnexpectedErrorMessageShow(LPCTSTR headMessage,LPCTSTR summary,UINT line,LPCTSTR fileName,LPCTSTR function){
        tstring errMessage;
@@ -122,6 +125,90 @@ err:
         goto end;
  }
 
+
+///
+///NCV\83\86\81[\83U\8fî\95ñ\83t\83@\83C\83\8b\83p\83X\8eæ\93¾XML\83p\81[\83T
+///
+class CReadNCVListenerInfoFile:public CXmlParser{
+
+private:
+       
+       BOOL settingDirFlag;
+       CString &path;  
+               
+               
+
+
+public:
+
+       CReadNCVListenerInfoFile(CString &in_path):settingDirFlag(FALSE),path(in_path){}
+
+       void OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs){
+
+               if(_tcscmp(pszName,TEXT("SettingDir")) == 0){
+
+                       settingDirFlag = TRUE;
+
+               }
+
+       }
+
+       void OnEndElement (const XML_Char *pszName){
+
+               if(_tcscmp(pszName,TEXT("SettingDir")) == 0){
+
+                       settingDirFlag = FALSE;
+
+               }
+
+       }
+
+       void OnCharacterData (const XML_Char *pszData, int nLength){
+
+               if(settingDirFlag == TRUE){
+
+                       path.Append(pszData,nLength);
+
+               }
+
+       }
+};
+
+ CString GetNCVListenerInfoFilePath(){
+
+       
+       CString rslt;
+       
+
+       if((PathFileExists(ncvAppSettingPath) &&  (!::PathIsDirectory( ncvAppSettingPath )))){
+
+               
+               CAtlFile ncvAppSettingFile;
+               ULONGLONG ncvAppSettingFileSize = 0;
+               if(SUCCEEDED(ncvAppSettingFile.Create(ncvAppSettingPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE ||
+                       SUCCEEDED(ncvAppSettingFile.GetSize(ncvAppSettingFileSize)) == FALSE){
+
+                               throw Exception(TEXT("NCV\82Ì\90Ý\92è\83t\83@\83C\83\8b\82ª\93Ç\82Ý\8d\9e\82ß\82Ü\82¹\82ñ\82Å\82µ\82½"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
+
+               }
+               std::vector<char> fileBuf(static_cast<UINT_PTR>(ncvAppSettingFileSize) / sizeof(char) + (1 * sizeof(char)));
+               ncvAppSettingFile.Read(&fileBuf[0],fileBuf.size());
+               LPSTR startPtr = strstr(&fileBuf[0],"<");
+               if(startPtr != NULL){
+                       CReadNCVListenerInfoFile parser(rslt);
+                       parser.Parse(startPtr);
+                       rslt += TEXT("UserSetting.xml");
+
+               }
+
+       }
+
+
+
+
+       return rslt;
+ }
+
 const CApplicationInfo * appInfo = NULL;
 
 }
\ No newline at end of file
index c667a51..8089571 100644 (file)
@@ -5,6 +5,9 @@ namespace nlite{
        //\83O\83\8d\81[\83o\83\8b\95Ï\90\94
        extern const CApplicationInfo * appInfo;
        extern CListenerList listenerList;
+       extern TCHAR localAppDataPath[];
+       extern TCHAR appFolderPath[];
+       extern CString ncvAppSettingPath;
 
        //\83O\83\8d\81[\83o\83\8b\8aÖ\90\94
        extern VOID UnexpectedErrorMessageShow(LPCTSTR headMessage,LPCTSTR summary,UINT line,LPCTSTR fileName,LPCTSTR function);
@@ -17,6 +20,13 @@ namespace nlite{
        ///
        extern BOOL SurelyCreate(LPCTSTR dir,BOOL bFile);
 
+
+       ///
+       ///ncv\82Ì\83\8a\83X\83i\81[\8fî\95ñ\83t\83@\83C\83\8b\83p\83X\82ð\8eæ\93¾
+       ///
+       extern CString GetNCVListenerInfoFilePath();
+
+
        namespace nliteregex{
                typedef std::tr1::basic_regex<TCHAR> tregex;
                namespace text{
index ff13f7b..90e9079 100644 (file)
@@ -182,20 +182,41 @@ LRESULT CNliteMainFrame::OnCreate(LPCREATESTRUCT lpcs){
 
 VOID CNliteMainFrame::Initialize(LPCTSTR localAppDataPath){
 
-       nliteProperty.ReadProperty();
+       try{
+               nliteProperty.ReadProperty();
 
-       commentView.SetProperty(nliteProperty.cvp,nliteProperty.gp);
+       
+               if((nliteProperty.gp.ncvUserSettingReadedFlag == FALSE) && 
+                       ((PathFileExists(ncvAppSettingPath) &&  (!::PathIsDirectory( ncvAppSettingPath ))))){
+               
+                       if((::MessageBox(NULL,TEXT("NCV\82Ì\83\8a\83X\83i\81[\8fî\95ñ\82Æ\93¯\8aú\82µ\82Ü\82·\82©\81H"),TEXT("\83\8a\83X\83i\81[\8fî\95ñ\93Ç\82Ý\8d\9e\82Ý"),MB_OK | MB_OKCANCEL) == IDOK)){
+                               listenerList.ReadProperty(GetNCVListenerInfoFilePath());
+                       }
+                       nliteProperty.gp.ncvUserSettingReadedFlag = TRUE;
+               
 
-       if(nliteProperty.gp.browserType == BT_NOSETTING){
-               nliteProperty.CookieSetting();
-               while(nliteProperty.gp.browserType == BT_NOSETTING){
-                       ::MessageBox(NULL,TEXT("\83u\83\89\83E\83U\83^\83C\83v\82ð\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B\82±\82ê\88È\8aO\82Ì\83u\83\89\83E\83U\82Í\8c»\8dÝ\8eg\97p\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ"),TEXT("\83u\83\89\83E\83U\83^\83C\83v\8ew\92è\83G\83\89\81["),MB_OK);
+                       
+                       
+               }
+
+               listenerList.ReadProperty(nliteProperty.userSettingPath);
+
+               commentView.SetProperty(nliteProperty.cvp,nliteProperty.gp);
+               if(nliteProperty.gp.browserType == BT_NOSETTING){
                        nliteProperty.CookieSetting();
+                       while(nliteProperty.gp.browserType == BT_NOSETTING){
+                               ::MessageBox(NULL,TEXT("\83u\83\89\83E\83U\83^\83C\83v\82ð\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B\82±\82ê\88È\8aO\82Ì\83u\83\89\83E\83U\82Í\8c»\8dÝ\8eg\97p\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ"),TEXT("\83u\83\89\83E\83U\83^\83C\83v\8ew\92è\83G\83\89\81["),MB_OK);
+                               nliteProperty.CookieSetting();
+                       }
                }
-       }
                        
-       nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
-       nicoLiveStream.SetResFrom(200);
+               nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
+               nicoLiveStream.SetResFrom(200);
+       }catch(Exception &e){
+
+               ::MessageBox(NULL,e.what(),TEXT("\90Ý\92è\83t\83@\83C\83\8b\93Ç\82Ý\8d\9e\82Ý\83G\83\89\81["),MB_OK | MB_ICONERROR);
+
+       }
 
        return;
                        
index 9edb220..c3a1fc6 100644 (file)
@@ -153,9 +153,9 @@ namespace nlite{
 
                CreatePropertyFile();
                CAtlFile        propertyFile;
-               CAtlFile        ncvUserSettingFile;
+               
                ULONGLONG propertyFileSize;
-               ULONGLONG ncvUserSettingFileSize;
+               
                if(SUCCEEDED(propertyFile.Create(propertyPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE || SUCCEEDED(propertyFile.GetSize(propertyFileSize)) == FALSE){
 
                        throw Exception(TEXT("\90Ý\92è\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ\82Å\82µ\82½\81B\82±\82Ì\83G\83\89\81[\82ª\91±\82­\82æ\82¤\82Å\82 \82ê\82Î\81A\88ê\93x\90Ý\92è\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82µ\82Ä\8dÄ\93x\8e\8e\82µ\82Ä\82Ý\82Ä\82­\82¾\82³\82¢"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
@@ -174,24 +174,7 @@ namespace nlite{
                }
 
 
-               if(this->gp.ncvUserSettingReadedFlag == FALSE){
-
-                       TCHAR appFolderPath[_MAX_PATH];
-                       SHGetFolderPathW(0,CSIDL_APPDATA,0,SHGFP_TYPE_CURRENT,appFolderPath);
-                       CString ncvUserSettingPath = appFolderPath;
-                       ncvUserSettingPath += TEXT("\\posite-c\\NiconamaCommentViewer\\UserSetting.xml");
-                       if(SUCCEEDED(ncvUserSettingFile.Create(ncvUserSettingPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE || SUCCEEDED(ncvUserSettingFile.GetSize(ncvUserSettingFileSize)) == FALSE){
-
-                               throw Exception(TEXT("\83\8a\83X\83i\81[\90Ý\92è\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ\82Å\82µ\82½\81B\82±\82Ì\83G\83\89\81[\82ª\91±\82­\82æ\82¤\82Å\82 \82ê\82Î\81A\88ê\93x\90Ý\92è\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82µ\82Ä\8dÄ\93x\8e\8e\82µ\82Ä\82Ý\82Ä\82­\82¾\82³\82¢"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
-                       }
-                       std::vector<char> ncvUserSettingBuf(static_cast<UINT_PTR>(ncvUserSettingFileSize / sizeof(char) + (1 * sizeof(char))));
-                       ncvUserSettingFile.Read(&ncvUserSettingBuf[0],ncvUserSettingBuf.size());
-                       LPSTR ncvUserSettingStart = strstr(&ncvUserSettingBuf[0],"<");
-                       if(ncvUserSettingStart != NULL){
-                               ReadUserSettingXML rusx;
-                               rusx.Parse(ncvUserSettingStart);
-                       }
-               }
+               
 
                return;
        }
@@ -213,7 +196,7 @@ namespace nlite{
                if((_tcslen(propertyBuf) == 0) || !((PathFileExists(propertyBuf) &&  !::PathIsDirectory( propertyBuf )))){
                        
                        propertyFolderPath = appLocalPath;
-                       propertyFolderPath += TEXT("\\qwerty_nico");
+                       propertyFolderPath += TEXT("\\qwerty_nico\\");
                        
                        ::WritePrivateProfileString(sectionName,keyName,propertyFolderPath,iniFile);
                        
@@ -222,11 +205,11 @@ namespace nlite{
 
                }
                propertySaveFolderPath = propertyFolderPath;
-               propertySaveFolderPath += TEXT("\\nlite");
+               propertySaveFolderPath += TEXT("nlite\\");
                propertyPath = propertySaveFolderPath;
-               propertyPath += TEXT("\\property.xml");
+               propertyPath += TEXT("property.xml");
                userSettingPath = propertySaveFolderPath;
-               userSettingPath += TEXT("\\user_setting.xml");
+               userSettingPath += TEXT("listenerData.xml");
                SurelyCreate(propertySaveFolderPath,FALSE);
                SurelyCreate(propertyPath,TRUE);
                SurelyCreate(userSettingPath,TRUE);
@@ -504,59 +487,6 @@ end:
 
 
 
-#define NLITE_READ_USER_STRING(at,l,t) if(_tcscmp(at[0],TEXT(#t)) == 0)l.t = at[1]
-#define NLITE_READ_USER_INT(at,l,t)            if(_tcscmp(at[0],TEXT(#t))==0)l.t = _tcstol((const wchar_t*)at[1],NULL,10)
-
-       void ReadUserSettingXML::OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs){
-
-               if(_tcscmp(pszName,TEXT("user")) == 0){
-
-                       this->userNodeFlag = TRUE;
-
-
-                       for(;papszAttrs[0] != NULL;papszAttrs += 2){
-
-                               NLITE_READ_USER_STRING(papszAttrs,listenerBuff,name);
-                               NLITE_READ_USER_STRING(papszAttrs,listenerBuff,community);
-                               NLITE_READ_USER_INT(papszAttrs,listenerBuff,bgcolor);
-                               NLITE_READ_USER_INT(papszAttrs,listenerBuff,time);
-                               
-                       }
-
-               }
-
-               return;
-       }
-
-       void ReadUserSettingXML::OnEndElement (const XML_Char *pszName){
 
-               if(_tcscmp(pszName,TEXT("user")) == 0){
-
-                       listenerList.Register(listenerBuff,TRUE);
-                       this->userNodeFlag = FALSE;
-                       this->listenerBuff.~ListenerData();
-                       new(&listenerBuff) ListenerData();
-
-               }
-
-               return;
-       }
-
-       void ReadUserSettingXML::OnCharacterData (const XML_Char *pszData, int nLength){
-
-               if(this->userNodeFlag == TRUE){
-
-
-                       listenerBuff.user_id.Append(pszData,nLength);
-
-
-
-
-               }
-
-               
-
-               return;
-       }
 
 }
\ No newline at end of file
index 4bc12ee..ff09d9e 100644 (file)
@@ -198,26 +198,7 @@ namespace nlite{
        };
 
 
-       ///
-       ///\83\86\81[\83U\90Ý\92è\83t\83@\83C\83\8b\93Ç\8eæ\83N\83\89\83X
-       ///
-       class ReadUserSettingXML:public CXmlParser{
-
-       private:
-               ListenerData listenerBuff;
-               BOOL userNodeFlag;
-               
-               
-
-
-
-       public:
-               void OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs);
-
-               void OnEndElement (const XML_Char *pszName);
-
-               void OnCharacterData (const XML_Char *pszData, int nLength);
-       };
+       
 
 
 }
\ No newline at end of file
index 079b0d9..f58ccf9 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -27,16 +27,16 @@ nlite
 \81E\83R\83\81\83\93\83g\8c\9f\8dõ\8b@\94\\8eÀ\91\95
 \81EOpenJTalk\82É\82æ\82é\83R\83\81\83\93\83g\93Ç\82Ý\8fã\82°\8b@\94\\8eÀ\91\95
 \81E\96_\93Ç\82Ý\82¿\82á\82ñ\82É\82æ\82é\83R\83\81\83\93\83g\93Ç\82Ý\8fã\82°\8b@\94\\8eÀ\91\95
-\81E\83o\81[\83W\83\87\83\930.0.0.4\8cö\8aJ
+\81E\83o\81[\83W\83\87\83\930.0.1.0\8cö\8aJ
+\81E\95]\89¿\94Å\8cö\8aJ
 
 \81E\83R\83\81\83\93\83g\93Ç\82Ý\8fã\82°\8aw\8fK\8b@\94\\8eÀ\91\95
 \81E\83c\81[\83\8b\83o\81[\8eÀ\91\95
-\81E\83o\81[\83W\83\87\83\930.0.0.5\8cö\8aJ
+\81E\83o\81[\83W\83\87\83\930.0.1.1\8cö\8aJ
 
 \81Ecom\83X\83N\83\8a\83v\83g\83G\83\93\83W\83\93\82ð\8eg\82Á\82Ä\83v\83\89\83O\83C\83\93\8b@\94\\8eÀ\91\95
 \81E\83v\83\8d\83p\83e\83B\90Ý\92è\83E\83B\83\93\83h\83E\82Ì\8dì\90¬
-\81E\83o\81[\83W\83\87\83\930.0.0.6\8cö\8aJ
-\81E\88ê\94Ê\8cö\8aJ\81H
+\81E\83o\81[\83W\83\87\83\930.0.1.2\8cö\8aJ