I found really useful documentation for Linux beginners.
"This Debian Reference (http://qref.sourceforge.net/) is intended to provide a broad overview of the Debian system as a post-installation user’s guide. It covers many aspects of system administration through shell-command examples. Basic tutorials, tips, and other information are provided for topics including fundamental concepts of the Debian system, system installation hints, Debian package management, the Linux kernel under Debian, system tuning, building a gateway, text editors, CVS, programming, and GnuPG for non-developers."
This book is devoted to Debian system but it is topical for some other Linux systems.
22 January, 2008
StarCraft (Brood War) under Linux (Wine)
I use this script to play network StarCraft under wine:
I think it is the best game.
#!/bin/bash #At first, run "wine setup.exe" BROODWAR_HOME=/usr/games/broodwar ipx_interface add -p eth0 802.2 0x39ab0222 cd $BROODWAR_HOME xinit /usr/bin/wine starcraft.exe
I think it is the best game.
Flash-light from console
With this script I use my monitor as flash-light in the darkness.
#!/bin/bash
#Switch monitor (CRT or LCD) to flash-light mode.
echo -e "\\033[47;30m"
clear
read
echo -e "\\033[0m"
clear
16 January, 2008
Java processes viewer
There is a way how to retrieve information about all running JVMs.
Since Java 1.5 Sun provides sources of jvmstat classes for JVM monitoring.
I've created simple program that is used these classes.
It detects all running JVMs and prints their information.
Aliases for virtual machine's properties have been taken from jdk1.5 sources (jdk-1_5_0-src-scsl.zip) from the file j2se\src\share\classes\sun\jvmstat\perfdata\resources\aliasmap.
Compile this code via command:
and run:
jvmstat package locates in tools.jar
Example of results output:
Since Java 1.5 Sun provides sources of jvmstat classes for JVM monitoring.
I've created simple program that is used these classes.
It detects all running JVMs and prints their information.
JavaPS.java
import java.util.Set;
import sun.jvmstat.monitor.HostIdentifier;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.StringMonitor;
import sun.jvmstat.monitor.VmIdentifier;
public class JavaPS {
private static final String[] vmProperties = new String[]{
"java.property.java.vm.name",
"java.property.java.vm.vendor",
"java.property.java.vm.version",
"java.property.java.home",
"java.property.java.class.path",
"java.rt.vmArgs",
"java.rt.vmFlags",
"sun.rt.javaCommand"};
public static void main(String[] args) {
Set jvms;
MonitoredHost monitoredHost;
try {
monitoredHost = MonitoredHost.getMonitoredHost(new HostIdentifier("localhost"));
jvms = monitoredHost.activeVms();
} catch (Exception e) {
e.printStackTrace();
return;
}
for (Object jvm : jvms) {
int jvmid = (Integer) jvm;
System.out.println("Process ID: \t" + String.valueOf(jvmid));
try {
VmIdentifier id = new VmIdentifier("//" + jvmid + "?mode=r");
MonitoredVm vm = monitoredHost.getMonitoredVm(id, 0);
for (String vmProperty : vmProperties) {
System.out.println(vmProperty + ": \t"
+ ((StringMonitor) vm.findByName(vmProperty)).stringValue());
}
System.out.println();
monitoredHost.detach(vm);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Aliases for virtual machine's properties have been taken from jdk1.5 sources (jdk-1_5_0-src-scsl.zip) from the file j2se\src\share\classes\sun\jvmstat\perfdata\resources\aliasmap.
Compile this code via command:
javac -classpath %JAVA_HOME%\lib\tools.jar JavaPS.javaand run:
java -classpath .;%JAVA_HOME%\lib\tools.jar JavaPS >JavaPS.txtjvmstat package locates in tools.jar
Example of results output:
JavaPS.txt
Process ID: 2144
java.property.java.vm.name: Java HotSpot(TM) Client VM
java.property.java.vm.vendor: Sun Microsystems Inc.
java.property.java.vm.version: 1.6.0_03-b05
java.property.java.home: C:\Program Files\Java\jre1.6.0_03
java.property.java.class.path: .;E:\Devel\jdk1.5.0_09\lib\tools.jar
java.rt.vmArgs:
java.rt.vmFlags:
sun.rt.javaCommand: JavaPS
Process ID: 364
java.property.java.vm.name: Java HotSpot(TM) Client VM
java.property.java.vm.vendor: Sun Microsystems Inc.
java.property.java.vm.version: 1.6.0_03-b05
java.property.java.home: C:\Program Files\Java\jre1.6.0_03
java.property.java.class.path: SwingSet2.jar
java.rt.vmArgs:
java.rt.vmFlags:
sun.rt.javaCommand: SwingSet2.jar
Simple RTF to XML converter
RTFEditorKit (javax.swing.text.rtf.RTFEditorKit) from Sun Java API - special class for operations with RTF (Rich Text Format) documents.
I've created java sample that converts RTF document to XML.
This is the source of this converter:
But RTFEditorKit isn't so powerful and friendly as I want.
I think, iText will be better for operations with RTF (and other document formats).
It's the good and free decision.
I've created java sample that converts RTF document to XML.
This is the source of this converter:
Rtf2XML.java
import javax.swing.text.AbstractDocument.BranchElement;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.BadLocationException;
import javax.swing.text.rtf.RTFEditorKit;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
public class Rtf2XML {
private DefaultStyledDocument rtfSource;
private org.w3c.dom.Document xmlTarget;
private org.w3c.dom.Element xmlRoot;
private void expandElement(javax.swing.text.Element rtfElement) {
for (int i = 0; i < rtfElement.getElementCount(); i++) {
javax.swing.text.Element rtfNextElement = rtfElement.getElement(i);
if (rtfNextElement.isLeaf()) {
try {
addElement(rtfNextElement);
} catch (Exception e) {
e.printStackTrace();
}
} else {
expandElement(rtfNextElement);
}
}
}
private void addElement(javax.swing.text.Element rtfElement)
throws UnsupportedEncodingException, BadLocationException {
String style = new String(rtfSource.getLogicalStyle(rtfElement.getStartOffset())
.getName().getBytes("ISO-8859-1"));
String text = new String(rtfSource.getText(rtfElement.getStartOffset(),
rtfElement.getEndOffset() - rtfElement.getStartOffset())
.getBytes("ISO-8859-1"));
org.w3c.dom.Element node = xmlTarget.createElement("p");
node.appendChild(xmlTarget.createTextNode(text));
node.setAttribute("style", style);
xmlRoot.appendChild(node);
}
public void convert(String sourceFileName) throws Exception {
rtfSource = new DefaultStyledDocument();
RTFEditorKit kit = new RTFEditorKit();
kit.read(new FileInputStream(sourceFileName), rtfSource, 0);
xmlTarget = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().newDocument();
BranchElement rtfRoot = (BranchElement) rtfSource.getDefaultRootElement();
xmlRoot = xmlTarget.createElement("data");
expandElement(rtfRoot);
xmlTarget.appendChild(xmlRoot);
Transformer t = TransformerFactory.newInstance().newTransformer();
t.transform(new DOMSource(xmlTarget),
new StreamResult(new FileOutputStream(sourceFileName + ".xml")));
}
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("Usage: *.rtf");
return;
}
try {
new Rtf2XML().convert(args[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
}
But RTFEditorKit isn't so powerful and friendly as I want.
I think, iText will be better for operations with RTF (and other document formats).
It's the good and free decision.
Subscribe to:
Posts (Atom)