kopf.lastig Alles mögliche zu Themen wie Familie, Beruf, Medien etc. …

2014-06-25

Querung der Görlitzer Bahn zwischen Grünau und Eichwalde

Filed under: Leben — Schlagwörter: , — Erik @ 22:40

Update: Laut Pressemitteilung des Bezirksamtes wurde die Brücke am 28.11.2014 eröffnet.

Wer derzeit mit der S- bzw. Regional-Bahn von Grünau in Richtung Eichwalde (oder anders herum) fährt, dem werden Bauarbeiten auf Höhe der Ost-Anbindung des Flughafen BER an die Görlitzer Bahn  beidseits der Gleise auffallen. Ich habe mich schon einige Zeit gewundert, was da mitten im Forst gebaut wird.
Baustelle Querung Görlitzer Bahn im Grünauer ForstErklärung: eine Brücke für Radfahrer und Fussgänger, damit man von Bohnsdorf nach Eichwalde gelangen kann.

Baustellenschild

Die aktuellen Satellitenbilder auf Google Maps zeigen, dass die Querung der Ost-Anbindung von Grünau zum BBI bereits existiert:

Hier ein Bild auf den Weg die Brücke hinauf:
Querung Ostanbindung BER Bohnsdorfer Forst

Und von der Brücke auf die Strecke:
Blick von der Fahrradbrücke über der Ostanbindung BER

Hintergrund ist die Anbindung der offizielle Berliner Fahrradroute „RR 10“ in Bohnsdorf an den Alten Radelander Weg in Eichwalde mit Anschluss an die Fahrradroute 5. Die Deutsche Bahn wurde zur Errichtung verdonnert, da half auch eine Klage nicht.

Zum Fertigstellungstermin schreibt das BA Treptow-Köpenick am 05.05.2014 auf eine Kleine Anfrage:

Die Brücke ist nun im Bau und wird voraussichtlich Anfang 2015 für Fußgänger und Radfahrer zwischen Bohnsdorf und der Dahme barriere frei nutzbar sein. Entstehen wird ein geschwungener Steg auf V-förmigen Stahlstützen, welche auf Einzelfundamenten gegründet sind.

Damit wird eine lange bestehende Forderung der BVV und der Bohnsdorfer Bürger umgesetzt.

Siehe auch das Radwegekonzept Treptow-Köpenick 2010, Abschnitt „4.3 Querung S-Bahn und Görlitzer Bahn im Grünauer Forst“:

Die Querung ist erforderlich, um den Verlauf des RR 10 über den Sandbacher Weg zu verlängern und durch den Grünauer Forst über die Görlitzer Bahn zum Alten Radelander Weg zu führen. Über den Alten Radelander Weg führt die Hauptroute nach Eichwalde und schließt dort in der Bahnhofstraße an das Netz der AG Süd an (Route 5, Fließe- und Hügelroute). Von dem wieder herzustellenden Bahnübergang aus führt eine Nebenroute geradeaus zur „Bammelecke“ am Langen See. Diese Route hat für den Freizeitverkehr eine hohe Bedeutung, weil sie die kürzeste Verbindung zwischen Bohnsdorf und dem Langen See darstellt und frei von Kfz-Verkehr ist.

2014-06-20

Accessing JDBC Data Source metrics from an application on a Weblogic Server

Filed under: Java,Software-Entwicklung — Schlagwörter: , , — Erik @ 19:11

I recently felt the need for accessing the metrics / statistics of a JDBC Data Source from within an application that is deployed on a Oracle Weblogic Server. I did not succeed right away, so I document it here.

Basically we just need some calls to JMX. Using the Weblogic RuntimeServiceMBean we navigate from ServerRuntime and JDBCServiceRuntime to JDBCDataSourceRuntimeMBeans. From there we get ObjectNames for each JDBC Data Source that we can access from our application. Using these object names we can retreive the metrics.

First we get the MBeanServer via JNDI:
[sourcecode language=“java“]
MBeanServer getMBeanServer() throws NamingException {
InitialContext ctx = new InitialContext();
MBeanServer server = (MBeanServer) ctx.lookup(„java:comp/env/jmx/runtime“);
return server;
}
[/sourcecode]

Then we navigate as described before:
[sourcecode language=“java“]
ObjectName[] getJdbcDataSourceRuntimeMBeans(MBeanServer server)
throws MalformedObjectNameException, AttributeNotFoundException, MBeanException,
InstanceNotFoundException, ReflectionException {
ObjectName service = new ObjectName(
„com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean“);
ObjectName serverRT = (ObjectName) server.getAttribute(service, „ServerRuntime“);
ObjectName jdbcRT = (ObjectName) server.getAttribute(serverRT, „JDBCServiceRuntime“);
ObjectName[] dsRTs = (ObjectName[]) server.getAttribute(jdbcRT, „JDBCDataSourceRuntimeMBeans“);
return dsRTs;
}
[/sourcecode]

To get the current number of active connections and the current capacity of the connection pool, we access the attributes ActiveConnectionsCurrentCount and CurrCapacity:
[sourcecode language=“java“]
MBeanServer server = getMBeanServer();
ObjectName[] dsRTs = getJdbcDataSourceRuntimeMBeans(server);
for (ObjectName dsRT : dsRTs) {
String name = (String) server.getAttribute(dsRT, „Name“);
Integer activeConnectionsCurrentCount =
(Integer) server.getAttribute(dsRT, „ActiveConnectionsCurrentCount“);
Integer currCapacity =
(Integer) server.getAttribute(dsRT, „CurrCapacity“);
// do something with these metrics
}
[/sourcecode]

There are a bunch of metrics. Here is a list. You can enumerate them using MBeanAttrbuteInfo:
[sourcecode language=“java“]
/**
* Returns MBean-Attribute Infos such as Name, Type and Description
*/
public MBeanAttributeInfo[] getMetricsAttributeInfos() {
try {
MBeanServer server = getMBeanServer();
ObjectName[] dsRTs = getJdbcDataSourceRuntimeMBeans(server);
if (dsRTs.length>0) {
return server.getMBeanInfo(dsRTs[0]).getAttributes();
}
} catch (Exception e) {
// your favourite error logging mechanism here…
}
return new MBeanAttributeInfo[]{};

}
[/sourcecode]
every MBeanAttributeInfo contains name, type and description of the attribute.

Note: I am using Weblogic Server 11g here. I have not tried this on WLS 12c.

2014-06-19

Emacs: create a new buffer quickly

Filed under: Software-Entwicklung — Schlagwörter: — Erik @ 18:43

I love to use Emacs, mostly for org-mode. I also use Notepad++ as an text editor (when using MS Windows), although I would like to use Emacs more. I noticed I choose Notepad++ when I quickly need an editor buffer to paste some text to because Notepad++ has this „New“ icon in its toolbar that creates a new buffer quickly.

Emacs is easily extendible, so how about creating a „quick new buffer“ function myself? It is really easy.

To create a new buffer you use Ctrl-x b (for function switch-to-buffer) and type a buffer name. But even typing in a name is too much for me. Automatically name the buffer „New“ and add a unique number to it! There is a function called rename-uniquely which does what it says. Now we can create a function make-new-buffer:

[sourcecode language=“lisp“]
(defun make-new-buffer ()
„makes a new buffer, uniquely named“
(interactive)
(switch-to-buffer „New“)
(rename-uniquely))
[/sourcecode]

Super easy: it creates a buffer named „New“ and renames it so that it has a unique name. Bind this to a key, I use F5:
[sourcecode language=“lisp“]
(global-set-key (kbd „„) ‚make-new-buffer)
[/sourcecode]

Put this code in your .emacs or whatever.

When you have a bunch of buffers called „New<2>“, „New<3>“ etc., take a look at buffer-menu. You get a list of all buffers. Now you can operate on them. For instance, mark a buffer for deletion with d, repeat for other buffers and execute the command with x. Now you have killed a bunch of buffers quickly and easily.

If you are new to customizing keybindings and writing custom functions, Sacha Chua wrote a nice article „Read Lisp Tweak Emacs (Beginner 3/4): How can I make things more convenient?

Update: Xah Lee over at ErgoEmacs has published a similar article. He came up with the following, slightly more complex function:
[sourcecode language=“lisp“]
(defun xah-new-empty-buffer ()
„Open a new empty buffer.“
(interactive)
(let ((buf (generate-new-buffer „untitled“)))
(switch-to-buffer buf)
(funcall (and initial-major-mode))
(setq buffer-offer-save t)))
[/sourcecode]
What is the difference? It uses generate-new-buffer to generate a new buffer and make sure it has a unique name (line 4). Then it switches to that buffer (line 5). It sets the major mode of the new buffer to the one declared in variable initial-major-mode, if any (line 6). Setting buffer-offer-save to t let Emacs ask you for saving that buffer before exiting Emacs (line 7).

Powered by WordPress