Path versionFile = installationPath.resolve("large.xml"); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); InputStream is = openStream(versionFile); class BreakException extends SAXException { private String value = null; private static final long serialVersionUID = 1L; } try { parser.parse(is, new DefaultHandler() { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("InstallType".equals(qName)) { String value = attributes.getValue("currentVersion"); // really dirty way to break sax parsing on demand and return value out of anonymous handle by the way ;) BreakException breakException = new BreakException(); breakException.value = value; throw breakException; } } }); } catch (BreakException be) { return be.value; }
poniedziałek, 14 listopada 2016
Java - stop reading possibly huge xml once given element found
piątek, 19 sierpnia 2016
Ratpack And Spring Getting Started
Maven dependendencies
io.ratpack ratpack-core 1.3.3
Spring initialization
@Configuration @Profile(WEB_CONSOLE) public class WebConsoleConfiguration { @Bean public ServerConfigBuilder webServerConfig() { ServerConfigBuilder embedded = ServerConfig.embedded(); embedded.sysProps(); return embedded; } @Bean public RatpackServer webServer(ServerConfigBuilder config) throws Exception { RatpackServer server = RatpackServer.of(b -> b .serverConfig(config) .registryOf(r -> r.add(String.class, "world")) .handlers(chain -> chain .get("hello", ctx -> { ctx.render(ctx.get(String.class) + " !"); }) .get("metrics", ctx -> { ctx.render("Ooo.."); }) ) ); server.start(); return server; } }
wtorek, 5 kwietnia 2016
git - stucked with modified files due to eol differences
Once you've got * text=auto
set in your .gitattribute
file all text files stored in repository will be changed into EOL sequence adequate to the host system. But any time checkouting on another system - all eols will be replaced with its specific. Quite nifty, isn't it?
But if for some reason your text file you've got in staging area contains for instance CRLF and you are working on linux machine - git status reporting it as modified
. But you cannot reset this as there are no diff in terms of text=auto
. Moreover git stash
also seems to work badly, as again nothing to stash found.
If you faced such a problem here is the solution
- Edit the
.gitattribute
file by commenting out the* text=auto
line (with # sign) - Type
git status
on the command line - Revert .gitattribute file
środa, 24 lutego 2016
Hibernate - relation owner explained
mappedBy
property.
Lets say we have the following model.
BrickSet owns many Bricks One Brick belongs to many BrickSet
@Entity @Table(name = "BrickSet") public class BrickSet { @ManyToMany(fetch=FetchType.Lazy, cascade= {CascadeType.ALL} @JoinColumn(name="id") public SetgetBricks() { return bricks; } }
czwartek, 14 stycznia 2016
Ubuntu - disappeared unity windows recovery guide
I found myself really confused that after some operations (eg. switching external displays around) I cannot activate opened applications. I suspected that those apps have to be somewhere on desktop, but apparently not in current view port. There have to be a way to grab and move them.. but how??
After a while of googling wmctrl
nifty friend was on my toolbox ready for action.
Lets start from looking at options by typing wmctrl -h
for displaying a help.
Now try to figure out what windows are on your desktop:
$ wmctrl -l 0x02e00002 0 krma-laptok XdndCollectionWindowImp 0x02e00005 0 krma-laptok unity-launcher 0x02e00008 0 krma-laptok unity-panel 0x02e0000b 0 krma-laptok unity-dash 0x02e0000c 0 krma-laptok Hud 0x0280000a 0 krma-laptok Desktop 0x0460000b 0 krma-laptok krma@krma-laptok: ~ 0x044000b3 0 krma-laptok Inbox - Mozilla Thunderbird 0x0400053b 0 krma-laptok Java - EclipseLets look at the desktop present on our system
$ wmctrl -d 0 * DG: 3840x1080 VP: 0,0 WA: 45,24 3795x1056 N/ABut how to identify those that are out of viewport?
$ wmctrl -lG 0x02e00002 0 -3940 -1180 3840 1080 krma-laptok XdndCollectionWindowImp 0x02e00005 0 0 24 45 1056 krma-laptok unity-launcher 0x02e00008 0 0 0 1920 24 krma-laptok unity-panel 0x02e0000b 0 -1241 -740 1141 640 krma-laptok unity-dash 0x02e0000c 0 -1060 -164 960 64 krma-laptok Hud 0x0280000a 0 0 0 3840 1080 krma-laptok Desktop 0x0460000b 0 2101 114 1601 844 krma-laptok krma@krma-laptok: ~ 0x044000b3 0 70 266 1294 629 krma-laptok Inbox - Mozilla Thunderbird 0x0400053b 0 7655 92 1860 988 krma-laptok Java - EclipseEclipse's x position seems to be a little to high, isn't? Lets move it to (20,20) and leave existing size (1860,988) unchanged:
$ wmctrl -i -r 0x0400053b -e 0,20,20,-1,-1PS. another nice tool is
xdotool
. It can
$ xdotool getwindowgeometry 0x0400053b Window 67110203 Position: 55,62 (screen: 0) Geometry: 1860x988Note that position is different from (20,20) - moved (35,42)??
poniedziałek, 11 stycznia 2016
How to run javascript script in jvm environment?
jjs
command which runs javascript code agains nashorn
build-in engine.
Assumming the following piece of code
// script.js var lines = `ls -lsa`.split("\n"); for each (var line in lines) { print("|> " + line); }After running it with the following command:
jjs -scripting script.jsWe will be given with a nice listing of working directory