PowerShellã§2chãã¥ã¼ã¯ ãã£ã¨ã¤ã«ã¹ã®ä½ã£ã
これã§PowerShellã®ã¹ã¯ãªãããçµã¿åããã¦2chãã¥ã¼ã¯ãä½ã£ããã©ãこんなことãã§ããã¨ããã£ã¦ããã£ã¨ã¤ã«ã¹2chãã¥ã¼ã¯ãæãã¤ããã
ã½ã¼ã¹ã¯ãã¨ã«ãã¦ãã½ã¼ã¹ã¯ä»¥ä¸ãã
ã©ããªé¢¨ã«2chããã¥ã¼ãããã¨ããã¨ã
ã¾ãã2chããã©ã¤ãã«cdããã
PS > cd 2ch: PS 2ch:\>
ããã§dirããã¨ã»ã»ã»
PS 2ch:\> dir | more æ¿å ã«ãã´ãªã¼ ---- ---------- å°éheadline å°é å°ééå ± å°é è¨æå°é å°é è¨æå°é+ å°é ãµããã¨ç´ç¨ ãããã ãã¸ãã¹news+ ãããã æ°åææç ãããã ãã¤ã³ãã»ãã¤ã« ãããã é¢ç½ãã¿news be ãªãã§ã質å be æç be éå ±headline ãã¥ã¼ã¹ ãã¸ãã¹news+ ãã¥ã¼ã¹ ãã¥ã¼ã¹éå ±+ ãã¥ã¼ã¹ ãã¥ã¼ã¹äºè»+ ãã¥ã¼ã¹ èããã¥ã¼ã¹+ ãã¥ã¼ã¹ è¸ã¹ãéå ±+ ãã¥ã¼ã¹ ç¾äººãã¥ã¼ã¹+ ãã¥ã¼ã¹ çããã¥ã¼ã¹+ ãã¥ã¼ã¹ ç§å¦ãã¥ã¼ã¹+ ãã¥ã¼ã¹ ãè©«ã³+ ãã¥ã¼ã¹ ãã¥ã¼ã¹å®æ³+ ãã¥ã¼ã¹ ãã¥ã¼ã¹éå ± ãã¥ã¼ã¹ 交éæ å ± ãã¥ã¼ã¹ è¸è½é³æ¥½éå ± ãã¥ã¼ã¹ ã¢ãã¡æ¼«ç»éå ± ãã¥ã¼ã¹ <Space> 次ã®ãã¼ã¸ã<CR> 次ã®è¡ãQ çµäº
æ¿ä¸è¦§ã表示ãããã
ããã¦ãè¦ããæ¿ã«cdããã
PS 2ch:\> cd çããã¥ã¼ã¹+ PS 2ch:\çããã¥ã¼ã¹+>
ããã§dirããã¨ã»ã»ã»
PS 2ch:\çããã¥ã¼ã¹+> dir | more ID ã¹ã¬ããå ã¬ã¹ -- ---------- --- 1203341698.dat ã社ä¼ãæ±äº¬å¥³åå»å¤§ã®å å¤ç§å»ãçè·... 44 1203584635.dat ç³ç ´é²è¡ç¸ãã¤ã¼ã¸ã¹è¦è¡çªäºæ ã§éºæ... 32 1203441030.dat åºä¼ãç³»ã§ç¥ãåã£ãä¸1女åã強姦ãç³... 70 1203583985.dat éåãå©ç¨ãã¦çºé» 12 1203338084.dat ãã³ã°ã³ã³ã°è¥¿éã2ã¡ããããã¼ã«ãæ ¹... 493 1203580010.dat ãAKIRAãã®ããªã¦ããå®åæ ç»å... 45 1203567091.dat ããããæ¬å½ã®ã«ã³ãã¼ãµãã«ã¼ãæ¥æ¬... 127 1203344559.dat ã¬ã½ãªã³ã¾ãå¤ä¸ããï¾ï¾ï¾ï½¥ï½¥ 37 1202013605.dat æ°ä¸» å¨æ¥éå½äººãªã©ã®åæ¿æ¨©ã§é£èªã 205 1203326351.dat äºç°å¤§æ¯ ãããã解éãâ¦ã¸ã ãé¢åè¦... 161 1203583826.dat ãã©ã¯ã¨9ãä»å¹´ã¯çºå£²ãããªã 19 1203569785.dat Gã¹ãããã®è¬ã解æã 39 1203566601.dat æµ·ä¸èªè¡éãè¡æ¹ä¸æç¶åã®è¦ªæã«å£æ¢... 65 1201861948.dat æ¯é¤ååé¡ãä¸å½ã§ã¯ãããã ãã§ãªã... 400 1203408558.dat ãã²ã³ãã¤ãç³åé½ç¥äºã¯ç¡è²¬ä»»ã奥ç°... 42 1202133296.dat ãå·æ³ããµã©ãªã¼ãã³å·æ³ãå ¥é¸ï¼ï¼ï¼... 860 1203514365.dat ãæããçåãã¦ããªããï¼èªæ°ã»ç¬¹å·... 152 1150282472.dat ã大éªãè¦å®ã«åµæããï¼å°å¹´é®æãã... 948 1203432245.dat æ®ããªããçºã§æ¯åãã¤ãããï¼ãéå «... 112 1203439034.dat é³¥åçã®å°å¦æ ¡ã§ããããã¯ãã®çµ¦é£ã«... 105 1192624249.dat å æãåã®ç·åé«æ ¡çã¨ãã§ã¡ãã§ã¡ã®... 944 1203160616.dat âââââââââââââââãã¹ã¬... 44 1202803457.dat é æ°å¸¯ã³ã§äºæ ãèµ·ãããéªãé£ã¹ã¦ã... 95 1202915768.dat ä½å®¶ã»æ³ç¾éã女æ§é±åèªè¨è ã®å®åã... 479 1203499809.dat ä»æ¥â復帰âãããããã«å± å ´æã¯ããã®ï¼ 59 1198665544.dat å¤ç°éãå ¥å£ä¼è¦ãããããã¨èããã®... 146 <Space> 次ã®ãã¼ã¸ã<CR> 次ã®è¡ãQ çµäº
ã¹ã¬ããä¸è¦§ã表示ãããã
ããã¦ãè¦ããã¹ã¬ããã«cdããã
PS 2ch:\çããã¥ã¼ã¹+> cd 1203341698.dat PS 2ch:\çããã¥ã¼ã¹+/1203341698.dat>
ããã§dirããã¨ã»ã»ã»
PS 2ch:\çããã¥ã¼ã¹+/1203522504.dat> dir | more ã¬ã¹çªå· : 1 ã¿ã¤ãã« : ç¦æ¯Ï â æ¥ä» : 2008/02/18(æ) 22:34:58 0 æ¬æ : ä»®ç ä¸ã®çè·å¸«ã«ç¡ç å¤ã¨ã¿ããã液ä½ã注å°ãã¦æ§çæ´è¡ããããã¨ããã¨ãã¦ãè¦è¦åºç込署ã å æ±äº¬å¥³åå»å¤§ç é¢å¿èè¡ç®¡å¤ç§å»å¸«ãå±±å´æ容çè ï¼ï¼ï¼ï¼ï¼æ±äº¬é½æ°å®¿åºè¥æ¾çºï¼ã強姦 ï¼ããããï¼è´å·ã¨å·å®³å®¹çã§é®æãã¦ãããã¨ãåãã£ããå±±å´å®¹çè ã¯ãããè¦ãã¦ããªããã¨å®¹ç ãå¦èªãã¦ããã 調ã¹ã§ã¯ãå±±å´å®¹çè ã¯æ¨å¹´ï¼ï¼æï¼ï¼æ¥ååï¼æãããæ°å®¿åºæ²³ç°çºã®åç é¢ä¼è°å®¤ã§ãä»®ç ä¸ ã ã£ãï¼ï¼ä»£ã®å¥³æ§çè·å¸«ã®å°»ã«æã®ä¸ããç¡ç å¤ã¨ã¿ããã注å°ãæã¡ãæ§çæ´è¡ããããã¨ãã çããããã«å¥³æ§ãæ°ä»ãã¦æµæãããããé¡é¢ãæ®´ããªã©ãã¦ï¼é±éã®ãããè² ãããçãã 女æ§ãä¼è°å®¤ã®å¤ã«éããé§ãã¤ããååãåãæ¼ããããå±±å´å®¹çè ã¨å¥³æ§ã¯å®¿ç´å¤åã§ãå¥³æ§ ã¯ä¼è°å®¤ã§ï¼äººã§å¯ã¦ãããæ±äº¬å¥³åå»å¤§ã¯æ¨å¹´ï¼ï¼æï¼ï¼æ¥ä»ã§å±±å´å®¹çè ãæ²æ解éã«ããã åç é¢ã®æ°¸äºåå¿é¢é·ã¯ã社ä¼çã«è¨±ãããªãè¡çºã§æ¥µãã¦éºæ¾ãææ»ã®æ¨ç§»ãè¦å®ããããã¨è©±ã ã¦ããã http://mainichi.jp/select/jiken/news/20080219k0000m040112000c.html ã¬ã¹çªå· : 2 ã¿ã¤ãã« : ãªã¬ãªã¬!ãªã¬ã ããåç¡ãã ã!! æ¥ä» : 2008/02/18(æ) 22:37:07 0 æ¬æ : ãã¡ããã ã ã¬ã¹çªå· : 3 ã¿ã¤ãã« : ãªã¬ãªã¬!ãªã¬ã ããåç¡ãã ã!! æ¥ä» : 2008/02/18(æ) 22:37:22 0 <Space> 次ã®ãã¼ã¸ã<CR> 次ã®è¡ãQ çµäº
ï½·ï¾ââââââ(ï¾âï¾)ââââââ !!!!!
ããã®ããã¨ããã¯ãã¹ãè¦ãã¦ããã°ãããã«ã¬ã¹ã¾ã§ããããã¨ã
PS c:\> cd 2ch:\çããã¥ã¼ã¹+/1203522504.dat PS 2ch:\çããã¥ã¼ã¹+/1203522504.dat>
ã¾ã ãã£ãã·ã¥ã¨ããã¦ããªãããç¡é§ãå¤ããã©ãããªãããããããPowerShellã®å¯è½æ§ãå£éè¦ãæ°ãããã
以ä¸å ¨ã½ã¼ã¹
PS2chSnapIn.cs
using System; using System.Management.Automation; using System.ComponentModel; using System.Diagnostics; namespace PS2ch.Configuration { /// <summary> /// PowerShellã«PS2ï½ï½ã®ã¹ãããã¤ã³ãã¤ã³ã¹ãã¼ã«ããã¯ã©ã¹ /// </summary> [RunInstaller(true)] public class PS2chSnapIn : PSSnapIn { public PS2chSnapIn() { } public override string Description { get { return "PowerShellã§2chã®é²è¦§ãå¯è½ã«ãã¾ã"; } } public override string Name { get { return "PS2ch"; } } public override string Vendor { get { return "coma2n"; } } } }
PS2chBoard.cs
using System; using System.Diagnostics; namespace PS2ch { /// <summary> /// 2chã®æ¿ã®æ å ±ãæ ¼ç´ããã¯ã©ã¹ /// </summary> [Serializable] [DebuggerStepThrough] public class PS2chBoard { private string name; private string category; private string directory; private string domain; /// <summary> /// æ¿åãåå¾ãè¨å®ãã¾ãã /// </summary> public string Name { get { return name; } set { name = value; } } /// <summary> /// æ¿ã®ã«ãã´ãªãåå¾ãè¨å®ãã¾ãã /// </summary> public string Category { get { return category; } set { category = value; } } /// <summary> /// æ¿ã®ãã£ã¬ã¯ããªåãåå¾ãè¨å®ãã¾ãã /// </summary> public string Directory { get { return directory; } set { directory = value; } } /// <summary> /// æ¿ã®ãã¡ã¤ã³ãåå¾ãè¨å®ãã¾ãã /// </summary> public string Domain { get { return domain; } set { domain = value; } } public PS2chBoard() { } public PS2chBoard(string name, string category, string directory, string domain) { this.name = name; this.category = category; this.directory = directory; this.domain = domain; } public override string ToString() { return string.Format("Name = {0}", Name); } } }
PS2chThread.cs
using System; using System.Diagnostics; namespace PS2ch { /// <summary> /// 2chã®ã¹ã¬ããã®æ å ±ãæ ¼ç´ããã¯ã©ã¹ /// </summary> [Serializable] [DebuggerStepThrough] public class PS2chThread { private string id; private string name; private int count; private PS2chBoard board; /// <summary> /// ã¹ã¬ããã®IDãåå¾ãè¨å®ãã¾ãã /// </summary> public string ID { get { return id; } set { id = value; } } /// <summary> /// ã¹ã¬ããåãåå¾ãè¨å®ãã¾ãã /// </summary> public string Name { get { return name; } set { name = value; } } /// <summary> /// ã¬ã¹æ°ãåå¾ãè¨å®ãã¾ãã /// </summary> public int Count { get { return count; } set { count = value; } } /// <summary> /// ã¹ã¬ãããå±ããæ¿ãåå¾ãè¨å®ãã¾ãã /// </summary> public PS2chBoard Board { get { return board; } set { board = value; } } public PS2chThread() { } public PS2chThread(string id, string name, int count, PS2chBoard board) { this.id = id; this.name = name; this.count = count; this.board = board; } public override string ToString() { return string.Format("ID = {0}, Name = {1}", ID, Name); } } }
PS2chResponse.cs
using System; using System.Diagnostics; namespace PS2ch { /// <summary> /// 2chã®ã¬ã¹ã®æ å ±ãæ ¼ç´ããã¯ã©ã¹ /// </summary> [Serializable] [DebuggerStepThrough] public class PS2chResponse { private int index; private string title; private string date; private string body; /// <summary> /// ã¬ã¹çªãåå¾ãè¨å®ãã¾ãã /// </summary> public int Index { get { return index; } set { index = value; } } /// <summary> /// ã¿ã¤ãã«ãåå¾ãè¨å®ãã¾ãã /// </summary> public string Title { get { return title; } set { title = value; } } /// <summary> /// æ¥ä»ãåå¾ãè¨å®ãã¾ãã /// </summary> public string Date { get { return date; } set { date = value; } } /// <summary> /// æ¬æãåå¾ãè¨å®ãã¾ãã /// </summary> public string Body { get { return body; } set { body = value; } } public PS2chResponse() { } public PS2chResponse(int index, string title, string date, string body) { this.index = index; this.title = title; this.date = date; this.body = body; } public override string ToString() { return string.Format("Title = {0}", Title); } } }
PS2chProvider.cs
using System; using System.IO; using System.Net; using System.Web; using System.Text; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Management.Automation; using System.Management.Automation.Provider; using System.Diagnostics; namespace PS2ch { /// <summary> /// 2chã®é²è¦§ãå¯è½ã«ãããããã¤ãã¯ã©ã¹ /// </summary> [CmdletProvider("PS2ch", ProviderCapabilities.ShouldProcess)] public class PS2chProvider : NavigationCmdletProvider { public PS2chProvider() { } /// <summary> /// æ¿ä¸è¦§ãåæãã¾ãã /// </summary> /// <returns>æ¿ã®ã³ã¬ã¯ã·ã§ã³</returns> private static IEnumerable<PS2chBoard> Enum2chBoard() { return Enum2chBoard(null); } /// <summary> /// æ¿ä¸è¦§ãåæãã¾ãã /// </summary> /// <param name="includeName">çµæã«å«ããæ¿å</param> /// <returns>æ¿ã®ã³ã¬ã¯ã·ã§ã³</returns> private static IEnumerable<PS2chBoard> Enum2chBoard(string includeName) { TextReader rs = GetHttpResponseStream( "http://azlucky.s25.xrea.com/2chboard/2channel.brd" ); rs.ReadLine(); // ä¸è¡ç®ã¯ç¡è¦ string line, category = null; while((line = rs.ReadLine()) != null) { if(line.StartsWith("\t") && category != null) { string[] values = line.Split('\t'); string name = values[3]; if(includeName == null || name == includeName) { yield return new PS2chBoard(name, category, values[2], values[1]); } } else { category = line.Split('\t')[0]; } } } /// <summary> /// æå®ããæ¿åã®æ¿ãåå¾ãã¾ãã /// </summary> /// <param name="name">æ¿å</param> /// <returns>æ¿</returns> private static PS2chBoard Get2chBoard(string name) { List<PS2chBoard> result = new List<PS2chBoard>(Enum2chBoard(name)); return result.Count > 0 ? result[0] : null; } /// <summary> /// æå®ããæ¿ã®ã¹ã¬ããä¸è¦§ãåæãã¾ãã /// </summary> /// <param name="board">æ¿</param> /// <returns>ã¹ã¬ããã®ã³ã¬ã¯ã·ã§ã³</returns> private static IEnumerable<PS2chThread> Enum2chThread(PS2chBoard board) { return Enum2chThread(board, null); /// <summary> /// æå®ããæ¿ã®ã¹ã¬ããä¸è¦§ãåæãã¾ãã /// </summary> /// <param name="board">æ¿</param> /// <param name="includeThreadID">çµæã«å«ããã¹ã¬ããID</param> /// <returns>ã¹ã¬ããã®ã³ã¬ã¯ã·ã§ã³</returns> private static IEnumerable<PS2chThread> Enum2chThread(PS2chBoard board, string includeThreadID) { TextReader rs = GetHttpResponseStream( string.Format("http://{0}/{1}/subject.txt", board.Domain, board.Directory) ); string line; while((line = rs.ReadLine()) != null) { // ãã©ã¼ããã // (THREAD_ID).dat<>(ã¹ã¬ããå + åè§ã¹ãã¼ã¹ + ã¬ã¹æ°) string[] values = line.Split( new string[] { "<>" }, StringSplitOptions.RemoveEmptyEntries ); string threadID = values[0]; if(includeThreadID == null || threadID == includeThreadID) { int pos = values[1].LastIndexOf(" "); string name = values[1].Substring(0, pos); int count = int.Parse(values[1].Substring(pos + 1).Trim('(', ')')); yield return new PS2chThread(threadID, name, count, board); } } } /// <summary> /// æå®ããã¹ã¬ããIDã®ã¹ã¬ãããåå¾ãã¾ãã /// </summary> /// <param name="board">æ¿</param> /// <param name="threadID">ã¹ã¬ããID</param> /// <returns>ã¹ã¬ãã</returns> private static PS2chThread Get2chThread(PS2chBoard board, string threadID) { List<PS2chThread> result = new List<PS2chThread>(Enum2chThread(board, threadID)); return result.Count > 0 ? result[0] : null; } /// <summary> /// æå®ããã¹ã¬ããã®ã¬ã¹ä¸è¦§ãåæãã¾ãã /// </summary> /// <param name="thread">ã¹ã¬ãã</param> /// <returns>ã¬ã¹ã®ã³ã¬ã¯ã·ã§ã³</returns> private static IEnumerable<PS2chResponse> Enum2chResponse(PS2chThread thread) { TextReader rs = GetHttpResponseStream( string.Format("http://{0}/{1}/dat/{2}", thread.Board.Domain, thread.Board.Directory, thread.ID) ); string line; if((line = rs.ReadLine()) == "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>") { } else { rs.ReadLine(); // "<text><![CDATA[" ãé£ã°ã } int index = 1; while((line = rs.ReadLine()) != null) { // ãã©ã¼ããã // 1è¡ç®: (åå)<>(ã¡ã¼ã«æ¬)<>(æ¸ãè¾¼ã¿æ¥æ)<>(åè§ã¹ãã¼ã¹) + (æ¬æ)<>(ã¹ã¬å) string[] values = line.Split(new string[] { "<>" }, StringSplitOptions.RemoveEmptyEntries); if(values.Length > 2) { yield return new PS2chResponse( index++, Escape(values[0]), Escape(values[1]), Escape(values[2]) ); } } } /// <summary> /// æå®ããURIã®ãµã¤ãã«ãªã¯ã¨ã¹ããéãããã®ã¬ã¹ãã³ã¹ã¹ããªã¼ã ãåå¾ãã¾ãã /// </summary> /// <param name="uri">URI</param> /// <returns>ã¹ããªã¼ã </returns> private static TextReader GetHttpResponseStream(string uri) { HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create(uri); webReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)"; using(HttpWebResponse webRes = (HttpWebResponse)webReq.GetResponse()) { using(StreamReader sr = new StreamReader( webRes.GetResponseStream(), Encoding.GetEncoding("Shift-JIS"))) { return new StringReader(sr.ReadToEnd()); } } } /// <summary> /// æå®ãããã¹ãåå²ãã¦ãæ¿åãã¹ã¬ããIDãåå¾ãã¾ãã /// </summary> /// <param name="path">ãã¹</param> /// <param name="boardName">æ¿å</param> /// <param name="threadID">ã¹ã¬ããID</param> private void SplitPath(string path, out string boardName, out string threadID) { boardName = threadID = null; if(path.StartsWith(base.PSDriveInfo.Root)) { path = path.Substring(base.PSDriveInfo.Root.Length); } string[] values = path.Split( new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries ); if(values.Length > 0) boardName = values[0]; if(values.Length > 1) threadID = values[1]; } private static string Escape(string value) { return HttpUtility.HtmlDecode(value).Replace("<br>", "\r\n"); } protected override Collection<PSDriveInfo> InitializeDefaultDrives() { Collection<PSDriveInfo> driveInfos = new Collection<PSDriveInfo>(); driveInfos.Add( new PSDriveInfo("2ch", base.ProviderInfo, "2ch://", "", base.Credential) ); return driveInfos; } protected override void GetChildItems(string path, bool recurse) { if(path == base.PSDriveInfo.Root) { foreach(PS2chBoard o in Enum2chBoard()) WriteItemObject(o, path, true); } else { string name, threadID; SplitPath(path, out name, out threadID); if(name != null) { PS2chBoard board = Get2chBoard(name); if(board != null) { if(threadID != null) { PS2chThread thread = Get2chThread(board, threadID); if(thread != null) { foreach(PS2chResponse o in Enum2chResponse(thread)) WriteItemObject(o, path, false); } } else { foreach(PS2chThread o in Enum2chThread(board)) WriteItemObject(o, path, true); } } } } } protected override bool IsItemContainer(string path) { return true; } protected override bool ItemExists(string path) { if(path != base.PSDriveInfo.Root) { string boardName, threadID; SplitPath(path, out boardName, out threadID); if(boardName != null) { PS2chBoard board = Get2chBoard(boardName); if(threadID != null) { PS2chThread thread = Get2chThread(board, threadID); return (thread != null); } return (board != null); } } return true; } protected override string MakePath(string parent, string child) { if(child.Length == 0) return parent; if(parent.Length == 0) return child; return string.Format("{0}{1}{2}", parent, (parent.EndsWith("/") ? string.Empty : "/"), child ); } protected override string NormalizeRelativePath(string path, string basePath) { return path == basePath ? string.Empty : path.Substring(basePath.Length); } protected override bool IsValidPath(string path) { return true; } } }
ps2ch.format.ps1xml
<?xml version="1.0" encoding="utf-8" ?> <Configuration> <ViewDefinitions> <View> <Name>PS2ch.PS2chBoard</Name> <ViewSelectedBy> <TypeName>PS2ch.PS2chBoard</TypeName> </ViewSelectedBy> <TableControl> <TableHeaders> <TableColumnHeader> <Label>æ¿å</Label> <Width>20</Width> </TableColumnHeader> <TableColumnHeader> <Label>ã«ãã´ãªã¼</Label> <Width>20</Width> </TableColumnHeader> </TableHeaders> <TableRowEntries> <TableRowEntry> <TableColumnItems> <TableColumnItem> <PropertyName>Name</PropertyName> </TableColumnItem> <TableColumnItem> <PropertyName>Category</PropertyName> </TableColumnItem> </TableColumnItems> </TableRowEntry> </TableRowEntries> </TableControl> </View> <View> <Name>PS2ch.PS2chThread</Name> <ViewSelectedBy> <TypeName>PS2ch.PS2chThread</TypeName> </ViewSelectedBy> <TableControl> <TableHeaders> <TableColumnHeader> <Label>ID</Label> <Width>15</Width> </TableColumnHeader> <TableColumnHeader> <Label>ã¹ã¬ããå</Label> <Width>40</Width> </TableColumnHeader> <TableColumnHeader> <Label>ã¬ã¹æ°</Label> <Width>10</Width> </TableColumnHeader> </TableHeaders> <TableRowEntries> <TableRowEntry> <TableColumnItems> <TableColumnItem> <PropertyName>ID</PropertyName> </TableColumnItem> <TableColumnItem> <PropertyName>Name</PropertyName> </TableColumnItem> <TableColumnItem> <PropertyName>Count</PropertyName> </TableColumnItem> </TableColumnItems> </TableRowEntry> </TableRowEntries> </TableControl> </View> <View> <Name>PS2ch.PS2chResponse</Name> <ViewSelectedBy> <TypeName>PS2ch.PS2chResponse</TypeName> </ViewSelectedBy> <ListControl> <ListEntries> <ListEntry> <ListItems> <ListItem> <Label>ã¬ã¹çªå·</Label> <PropertyName>Index</PropertyName> </ListItem> <ListItem> <Label>ã¿ã¤ãã«</Label> <PropertyName>Title</PropertyName> </ListItem> <ListItem> <Label>æ¥ä»</Label> <PropertyName>Date</PropertyName> </ListItem> <ListItem> <Label>æ¬æ</Label> <PropertyName>Body</PropertyName> </ListItem> </ListItems> </ListEntry> </ListEntries> </ListControl> </View> </ViewDefinitions> </Configuration>