{"id":1331,"date":"2009-04-25T23:00:43","date_gmt":"2009-04-25T21:00:43","guid":{"rendered":"http:\/\/firefang.net\/blog\/?p=1331"},"modified":"2009-04-25T23:08:16","modified_gmt":"2009-04-25T21:08:16","slug":"swush","status":"publish","type":"post","link":"https:\/\/firefang.net\/blog\/1331","title":{"rendered":"Swush"},"content":{"rendered":"<p>\u05d0\u05e3 \u05e4\u05e2\u05dd \u05dc\u05d0 \u05d7\u05d9\u05d1\u05d1\u05ea\u05d9 \u05d0\u05ea XML.<br \/>\n\u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05e2\u05dd \u05d4\u05e9\u05e4\u05d4 \u05e2\u05e6\u05de\u05d4 \u05de\u05e1\u05d5\u05e8\u05d1\u05dc\u05ea, \u05e7\u05dc \u05de\u05d0\u05d5\u05d3 \u05dc\u05d8\u05e2\u05d5\u05ea \u05d5\u05dc\u05d3\u05e4\u05d5\u05e7 \u05e7\u05d5\u05d1\u05e5 \u05e9\u05dc\u05dd \u05d5\u05d9\u05e9 \u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d9 \u05ea\u05d5\u05d5\u05d9\u05dd \u05de\u05d9\u05d5\u05ea\u05e8\u05d9\u05dd \u05e9\u05dc\u05d0 \u05ea\u05d5\u05e8\u05de\u05d9\u05dd \u05db\u05dc\u05d5\u05dd \u05dc\u05ea\u05d5\u05db\u05df \u05d4\u05d0\u05de\u05d9\u05ea\u05d9.<br \/>\n\u05d0\u05e4\u05d9\u05dc\u05d5 \u05d4\u05e9\u05dd \u05de\u05d2\u05e2\u05d9\u05dc: \u05d0\u05d9\u05db\u05e1 \u05d0\u05de \u05d0\u05dc.<\/p>\n<p>\u05d9\u05e9 \u05e0\u05d8\u05d9\u05d9\u05d4 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1XML \u05db\u05e9\u05e4\u05d4 \u05dc\u05e7\u05d1\u05e6\u05d9 \u05e7\u05d5\u05e0\u05e4\u05d9\u05d2\u05d5\u05e8\u05e6\u05d9\u05d4. \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e8\u05d0\u05d5\u05ea \u05d0\u05ea \u05d6\u05d4 \u05d1\u05d4\u05de\u05d5\u05df \u05e4\u05e8\u05d5\u05d9\u05d9\u05e7\u05d8\u05d9\u05dd (\u05dc\u05de\u05e9\u05dc Tomcat \u05d5 Pidgin).<br \/>\nXML \u05db\u05e9\u05e4\u05d4 \u05de\u05e0\u05e1\u05d4 \u05dc\u05e4\u05ea\u05d5\u05e8 \u05db\u05dc \u05de\u05e0\u05d9 \u05d1\u05e2\u05d9\u05d5\u05ea \u05e9\u05dc\u05d0 \u05de\u05e2\u05e0\u05d9\u05d9\u05e0\u05d5\u05ea \u05d1\u05de\u05d9\u05d5\u05d7\u05d3 \u05d0\u05ea \u05e8\u05d5\u05d1 \u05d4\u05de\u05e4\u05ea\u05d7\u05d9\u05dd, \u05d5\u05dc\u05db\u05df \u05d4\u05de\u05d9\u05de\u05d5\u05e9 \u05e9\u05dc \u05e7\u05d5\u05e8\u05d0\u05d9 XML \u05ea\u05e7\u05e0\u05d9\u05d9\u05dd \u05d4\u05d5\u05d0 \u05de\u05d5\u05e8\u05db\u05d1.<br \/>\n\u05d4\u05d3\u05d1\u05e8 \u05d1\u05de\u05e2\u05e6\u05d1\u05df \u05d1\u05d9\u05d5\u05ea\u05e8 \u05d1XML \u05d4\u05d9\u05d0 \u05e9\u05d4\u05d9\u05d0 \u05e7\u05e9\u05d4 \u05d2\u05dd \u05dc\u05d0\u05e0\u05e9\u05d9\u05dd \u05e9\u05de\u05e0\u05e1\u05d9\u05dd \u05dc\u05e7\u05e8\u05d5\u05d0 \u05d0\u05d5\u05ea\u05d4 (\u05d0\u05d5 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05d5\u05ea\u05d4), \u05d5\u05d2\u05dd \u05dc\u05de\u05d7\u05e9\u05d1\u05d9\u05dd &#8211; \u05d0\u05d5 \u05d9\u05d5\u05ea\u05e8 \u05e0\u05db\u05d5\u05df \u05dc\u05de\u05e4\u05ea\u05d7\u05d9\u05dd &#8211; \u05e9\u05de\u05e0\u05e1\u05d9\u05dd \u05dc\u05e7\u05e8\u05d5\u05d0 \u05d0\u05d5\u05ea\u05d4.<\/p>\n<p>\u05e0\u05d9\u05e7\u05d7 \u05dc\u05d3\u05d5\u05d2\u05de\u05d0 \u05d0\u05ea \u05e4\u05d9\u05e1\u05ea \u05d4XML \u05d4\u05d1\u05d0\u05d4 (\u05e7\u05d5\u05d3 \u05d0\u05de\u05d9\u05ea\u05d9 \u05de\u05d4\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e9\u05dc \u05d8\u05d5\u05de\u05e7\u05d8):<\/p>\n<p>[code lang=&quot;xml&quot;]<br \/>\n    <ResourceParams name=\"UserDatabase\">\n      <parameter>\n        <name>factory<\/name><br \/>\n        <value>org.apache.catalina.users.MemoryUserDatabaseFactory<\/value>\n      <\/parameter>\n      <parameter>\n        <name>pathname<\/name><br \/>\n        <value>conf\/tomcat-users.xml<\/value>\n      <\/parameter>\n    <\/ResourceParams><br \/>\n[\/code]<\/p>\n<p>\u05d4\u05e8\u05d1\u05d4 \u05de\u05dc\u05dc \u05db\u05d3\u05d9 \u05dc\u05d4\u05d2\u05d9\u05d3 \u05e9\u05d9\u05e9 \u05d3\u05d1\u05e8 \u05db\u05d6\u05d4 UserDatabase, \u05d5\u05d9\u05e9 \u05d1\u05ea\u05d5\u05db\u05d5 \u05e9\u05e0\u05d9 \u05d6\u05d5\u05d2\u05d5\u05ea Key-value, \u05dc\u05d0?<br \/>\n\u05d0\u05e4\u05e9\u05e8 \u05d2\u05dd \u05dc\u05e6\u05d9\u05d9\u05df \u05d0\u05ea \u05d0\u05d5\u05ea\u05d5 \u05de\u05d9\u05d3\u05e2 \u05db\u05da:<br \/>\n[code lang=&quot;java&quot;]<br \/>\nResourceParams{<br \/>\n     UserDatabase{<br \/>\n           factory : org.apache.catalina.users.MemoryUserDatabaseFactory<br \/>\n           pathname : conf\/tomcat-users.xml<br \/>\n    }<br \/>\n}<br \/>\n[\/code]<br \/>\n\u05d9\u05d5\u05ea\u05e8 \u05e7\u05d5\u05de\u05e4\u05e7\u05d8\u05d9 \u05d5\u05e4\u05d7\u05d5\u05ea \u05e4\u05dc\u05e6\u05e0\u05d9.<br \/>\n\u05d4\u05e9\u05e4\u05d4 \u05e9\u05d1\u05d4 \u05d4\u05e9\u05ea\u05de\u05e9\u05ea\u05d9 \u05d1\u05e4\u05e2\u05dd \u05d4\u05e9\u05e0\u05d9\u05d4 \u05d4\u05d9\u05d0 <a href=\"http:\/\/swush.firefang.net\">Swush<\/a>, \u05e9\u05e4\u05d4 \u05e9\u05d4\u05d2\u05d3\u05e8\u05ea\u05d9 \u05d5\u05de\u05d9\u05de\u05e9\u05ea\u05d9 \u05d1\u05e1\u05d5\u05e4&quot;\u05e9.<br \/>\nSwush (\u05e1\u05d5\u05d5'\u05e9 \u05d1\u05e2\u05d1\u05e8\u05d9\u05ea, \u05e0\u05e8\u05d0\u05d4 \u05dc\u05d9 \u05e9\u05d0\u05e0\u05d9 \u05d0\u05d3\u05d1\u05d5\u05e7 \u05d1\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea), \u05ea\u05d5\u05de\u05db\u05ea \u05d1\u05d4\u05e2\u05e8\u05d5\u05ea \u05d1\u05e1\u05d2\u05e0\u05d5\u05df C\/C++ \u05d5bash:<br \/>\n[code]<br \/>\n\/\/ C++ single line comment<br \/>\n\/* C multi-<br \/>\nline comment*\/<br \/>\n# Bash style comments<br \/>\n[\/code]<\/p>\n<p>\u05d1\u05e0\u05d5\u05e1\u05e3, \u05e1\u05d8\u05e8\u05d9\u05e0\u05d2\u05d9\u05dd \u05d1Swush \u05dc\u05d0 \u05de\u05d7\u05d9\u05d9\u05d1\u05d9\u05dd \u05d2\u05e8\u05e9\u05d9\u05d9\u05dd, \u05d0\u05d1\u05dc \u05d0\u05dd \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d1\u05d2\u05e8\u05e9\u05d9\u05d9\u05dd \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05e1\u05d8\u05e8\u05d9\u05e0\u05d2\u05d9\u05dd \u05e2\u05dd \u05e8\u05d5\u05d5\u05d7\u05d9\u05dd \u05d5\u05d0\u05e4\u05d9\u05dc\u05d5 \u05e9\u05d5\u05e8\u05d4-\u05d7\u05d3\u05e9\u05d4 \u05d1\u05ea\u05d5\u05db\u05dd.<br \/>\n[code]<br \/>\nstring1<\/p>\n<p>&quot;another string&quot;<\/p>\n<p>&quot;multi<br \/>\nline<br \/>\nstring&quot;<br \/>\n[\/code]<\/p>\n<p>\u05d4\u05de\u05d9\u05de\u05d5\u05e9 \u05e9\u05dc\u05d9 \u05dcSwush \u05d4\u05d5\u05d0 \u05d1\u05e9\u05e4\u05ea \u05d2'\u05d0\u05d5\u05d5\u05d4, \u05d0\u05d1\u05dc \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d0\u05e4\u05e9\u05e8\u05d9 \u05e9\u05d9\u05d4\u05d9\u05d5 \u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05d1\u05e9\u05e4\u05d5\u05ea \u05e0\u05d5\u05e1\u05e4\u05d5\u05ea (\u05d1\u05d9\u05df \u05d0\u05dd \u05e9\u05dc\u05d9 \u05d0\u05d5 \u05e9\u05dc \u05d0\u05e0\u05e9\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd).<br \/>\nSwush \u05ea\u05d5\u05de\u05da \u05d1\u05e8\u05e9\u05d9\u05de\u05d4 \u05e4\u05e9\u05d5\u05d8\u05d4 \u05e9\u05dc \u05de\u05e4\u05ea\u05d7-\u05e2\u05e8\u05da, \u05dc\u05de\u05e9\u05dc:<br \/>\n[code lang=&quot;java&quot;]<br \/>\nhost : &quot;locahost&quot;<br \/>\nport : 8080<br \/>\n[\/code]<br \/>\n\u05db\u05db\u05d4 \u05e9\u05d0\u05e4\u05e9\u05e8 \u05d1\u05e7\u05dc\u05d5\u05ea \u05e8\u05d1\u05d4 \u05dc\u05d4\u05d7\u05dc\u05d9\u05e3 \u05d0\u05d5\u05ea\u05d5 \u05e7\u05d1\u05e6\u05d9 properties \u05e9\u05dc \u05d2'\u05d0\u05d5\u05d5\u05d4.<\/p>\n<p>\u05de\u05d1\u05d7\u05d9\u05e0\u05ea \u05d4\u05e7\u05d5\u05d3, \u05d4\u05e9\u05ea\u05d3\u05dc\u05ea\u05d9 \u05e9\u05d4\u05d5\u05d0 \u05d9\u05d4\u05d9\u05d4 \u05de\u05d4 \u05e9\u05d9\u05d5\u05ea\u05e8 \u05e4\u05e9\u05d5 \u05dc\u05e9\u05d9\u05de\u05d5\u05e9.<br \/>\n\u05d0\u05e4\u05e9\u05e8 \u05dc\u05d9\u05e6\u05d5\u05e8 \u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 Swush \u05d1\u05db\u05de\u05d4 \u05e6\u05d5\u05e8\u05d5\u05ea:<br \/>\n[code lang=&quot;java&quot;]<br \/>\nSwush fromFile = new Swush(new File(filename));<\/p>\n<p>Swush fromString = Swush.constructFromString(&quot;swush:rocks&quot;,&quot;UTF-8&quot;);<\/p>\n<p>Swush usingCode = new Swush();<br \/>\nusingCode.add(new Swush(&quot;key&quot;,&quot;value&quot;));<br \/>\nusingCode.add(new Swush(&quot;node&quot;));<br \/>\nusingCode.getChildren(1).add(new Swush(&quot;key2&quot;, &quot;value2&quot;));<br \/>\n[\/code]<\/p>\n<p>\u05d0\u05d7\u05ea \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05d4\u05de\u05e2\u05e0\u05d9\u05d9\u05e0\u05d5\u05ea \u05e9\u05dc \u05d4\u05de\u05d9\u05de\u05d5\u05e9 \u05e9\u05dc\u05d9 \u05d4\u05d9\u05d0 \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d9\u05ea select, \u05e9\u05de\u05d7\u05d6\u05d9\u05e8\u05d4 \u05e8\u05e9\u05d9\u05de\u05d4 \u05e9\u05dc \u05e6\u05de\u05ea\u05d9\u05dd \u05e9\u05de\u05ea\u05d0\u05d9\u05de\u05d9\u05dd \u05dc\u05e7\u05e8\u05d9\u05d8\u05e8\u05d9\u05d5\u05ea \u05e9\u05e6\u05d5\u05d9\u05d9\u05df, \u05dc\u05d3\u05d5\u05d2\u05de\u05d0 &#8211; \u05d0\u05dd \u05d9\u05e9 \u05dc\u05e0\u05d5 \u05e7\u05d5\u05d1\u05e5 Swush \u05db\u05d6\u05d4:<br \/>\n[code lang=&quot;java&quot;]<br \/>\naddressbook<br \/>\n{<br \/>\n\tmax_size : 30<\/p>\n<p>\titem<br \/>\n\t{<br \/>\n\t\tphone : 123<br \/>\n\t\tname : &quot;The dude&quot;<br \/>\n\t\taddress : &quot;Multi<br \/>\nLine address&quot;<br \/>\n\t}<\/p>\n<p>\titem<br \/>\n\t{<br \/>\n\t\tphone : 3454<br \/>\n\t\tname : &quot;Another dude&quot;<br \/>\n\t\taddress : unknown<br \/>\n\t}<br \/>\n}<br \/>\n[\/code]<br \/>\n\u05d5\u05d0\u05e0\u05d7\u05e0\u05d5 \u05e8\u05d5\u05e6\u05d9\u05dd \u05dc\u05d2\u05e9\u05ea \u05dc\u05e6\u05de\u05ea\u05d9\u05dd \u05e9\u05dc \u05d4Item, \u05e0\u05d5\u05db\u05dc \u05dc\u05e2\u05e9\u05d5\u05ea \u05de\u05e9\u05d4\u05d5 \u05db\u05d6\u05d4:<br \/>\n[code lang=&quot;java&quot;]<br \/>\nSwush swush = new Swush(new File(filename));<br \/>\nList<Swush> matchs = swush.select(&quot;addressbook.item&quot;);<br \/>\n[\/code]<br \/>\n\u05d4\u05e8\u05e9\u05d9\u05de\u05d4 \u05e9\u05d7\u05d5\u05d6\u05e8\u05ea \u05ea\u05db\u05d9\u05dc \u05d0\u05ea \u05e9\u05e0\u05d9 \u05d4\u05e6\u05de\u05ea\u05d9\u05dd \u05d4\u05de\u05ea\u05d0\u05d9\u05de\u05d9\u05dd (\u05de\u05e1\u05d5\u05d2 item \u05e9\u05e0\u05de\u05e6\u05d0\u05d9\u05dd \u05d1\u05ea\u05d5\u05da addressbook).<br \/>\nSwush \u05de\u05de\u05d5\u05de\u05e9\u05ea \u05e2\u05dd Antlr, \u05d5\u05d4\u05d4\u05d2\u05d3\u05e8\u05d4 \u05e9\u05dc\u05d4 \u05de\u05d0\u05d5\u05d3 \u05e4\u05e9\u05d5\u05d8\u05d4, \u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05e2\u05d1\u05d9\u05e8 \u05d0\u05d5\u05ea\u05d4 \u05d1\u05db\u05de\u05d4 \u05d3\u05d9\u05d0\u05d2\u05e8\u05de\u05d5\u05ea:<br \/>\n<img decoding=\"async\" src=\"http:\/\/swush.firefang.net\/files\/img\/swush_file.png\" alt=\"\" \/><br \/>\n<img decoding=\"async\" src=\"http:\/\/swush.firefang.net\/files\/img\/swush.png\" alt=\"\" \/><br \/>\n<img decoding=\"async\" src=\"http:\/\/swush.firefang.net\/files\/img\/pair.jpg\" alt=\"\" \/><br \/>\n<img decoding=\"async\" src=\"http:\/\/swush.firefang.net\/files\/img\/string.jpg\" alt=\"\" \/> <\/p>\n<p>Swush \u05de\u05e9\u05d5\u05d7\u05e8\u05e8\u05ea \u05d1\u05e8\u05e9\u05d9\u05d5\u05df BSD, \u05d5\u05d0\u05e4\u05e9\u05e8 \u05dc\u05d4\u05d5\u05e8\u05d9\u05d3 \u05d0\u05d5\u05ea\u05d4 <a href=\"http:\/\/swush.firefang.net\">\u05de\u05e4\u05d4<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u05d0\u05e3 \u05e4\u05e2\u05dd \u05dc\u05d0 \u05d7\u05d9\u05d1\u05d1\u05ea\u05d9 \u05d0\u05ea XML. \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05e2\u05dd \u05d4\u05e9\u05e4\u05d4 \u05e2\u05e6\u05de\u05d4 \u05de\u05e1\u05d5\u05e8\u05d1\u05dc\u05ea, \u05e7\u05dc \u05de\u05d0\u05d5\u05d3 \u05dc\u05d8\u05e2\u05d5\u05ea \u05d5\u05dc\u05d3\u05e4\u05d5\u05e7 \u05e7\u05d5\u05d1\u05e5 \u05e9\u05dc\u05dd \u05d5\u05d9\u05e9 \u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d9 \u05ea\u05d5\u05d5\u05d9\u05dd \u05de\u05d9\u05d5\u05ea\u05e8\u05d9\u05dd \u05e9\u05dc\u05d0 \u05ea\u05d5\u05e8\u05de\u05d9\u05dd \u05db\u05dc\u05d5\u05dd \u05dc\u05ea\u05d5\u05db\u05df \u05d4\u05d0\u05de\u05d9\u05ea\u05d9. \u05d0\u05e4\u05d9\u05dc\u05d5 \u05d4\u05e9\u05dd \u05de\u05d2\u05e2\u05d9\u05dc: \u05d0\u05d9\u05db\u05e1 \u05d0\u05de \u05d0\u05dc. \u05d9\u05e9 \u05e0\u05d8\u05d9\u05d9\u05d4 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1XML \u05db\u05e9\u05e4\u05d4 \u05dc\u05e7\u05d1\u05e6\u05d9 \u05e7\u05d5\u05e0\u05e4\u05d9\u05d2\u05d5\u05e8\u05e6\u05d9\u05d4. \u05d0\u05e4\u05e9\u05e8 \u05dc\u05e8\u05d0\u05d5\u05ea \u05d0\u05ea \u05d6\u05d4 \u05d1\u05d4\u05de\u05d5\u05df \u05e4\u05e8\u05d5\u05d9\u05d9\u05e7\u05d8\u05d9\u05dd (\u05dc\u05de\u05e9\u05dc Tomcat \u05d5 Pidgin). XML \u05db\u05e9\u05e4\u05d4 \u05de\u05e0\u05e1\u05d4 \u05dc\u05e4\u05ea\u05d5\u05e8 \u05db\u05dc &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/firefang.net\/blog\/1331\" class=\"more-link\">\u05dc\u05d4\u05de\u05e9\u05d9\u05da \u05dc\u05e7\u05e8\u05d5\u05d0<span class=\"screen-reader-text\"> Swush<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,17],"tags":[],"class_list":["post-1331","post","type-post","status-publish","format-standard","hentry","category-java","category-open-soruce"],"_links":{"self":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/posts\/1331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/comments?post=1331"}],"version-history":[{"count":10,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/posts\/1331\/revisions"}],"predecessor-version":[{"id":1339,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/posts\/1331\/revisions\/1339"}],"wp:attachment":[{"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/media?parent=1331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/categories?post=1331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/firefang.net\/blog\/wp-json\/wp\/v2\/tags?post=1331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}