Not a tile, a char neither a monster. The old friend of mine Boris, now in pixels.
Not a tile, a char neither a monster. The old friend of mine Boris, now in pixels.
I created some illustrative and simple implementations of common Unix commands. For those who are familiar with Unix-like systems them make easier to understand Java. For those who are familiar with Java them make easier to understand Unix-like systems. 🙂
1. PWD
The first one is pwd that show the current working directory.
public class Jpwd {
public static void main(String[] args) {
String pwd = System.getProperty("user.dir");
System.out.println(pwd);
}
}
Running this at /home/silveira directory gives us as output:
$ java Jpwd
/home/silveira
1. CAT
The command cat is usually utilized for displaying files.
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Jcat {
public static void main(String[] args) {
if(args.length==1){
try {
FileReader fileReader = new FileReader(args[0]);
BufferedReader in = new BufferedReader(fileReader);
String line;
while((line = in.readLine())!= null){
System.out.println(line);
}
} catch (FileNotFoundException ex) {
System.out.println(args[0]+", file not found.");
}
catch (IOException ex) {
System.out.println(args[0]+", input/output error.");
}
}
}
}
$ java Jcat /etc/timezone
America/Fortaleza
3. LS
The command ls is to list files. The File API (java.io.File) is very flexible and portable, but in this example I want just list files and directories of the current directory.
import java.io.File;
public class Jls {
public static void main(String[] args) {
File dir = new File(System.getProperty("user.dir"));
String childs[] = dir.list();
for(String child: childs){
System.out.println(child);
}
}
}
Usage:
$ java Jpwd
/home/silveira/example
$ java Jls
directoryA
fileA
.somefile
4. CD
The cd command changes the current working directory.
import java.io.File;
public class Jcd {
public static void main(String[] args) {
if(args.length==1){
File dir = new File(args[0]);
if(dir.isDirectory()==true) {
System.setProperty("user.dir", dir.getAbsolutePath());
} else {
System.out.println(args[0] + "is not a directory.");
}
}
}
}
Usage:
$ java Jpwd
/home/silveira
$ java Jcd /tmp
$ java Jpwd
/tmp
Boris, refletindo sobre a vida…
Boris Wilson, originally uploaded by Silveira Neto.
Boris, thinking about life…
Boris Wilson, my girlfriend’s pet, a siamese cat. He loves play in a new box.
Lembra daquele nosso gato em Java FX? Agora ele move os olhos com cliques em botões.
Código fonte:
import javafx.ui.canvas.*;
import javafx.ui.*;
class Cat extends CompositeNode{
attribute look: Number; // -1.0 to 1.0
operation lookLeft();
operation lookCenter();
operation lookRight();
}
attribute Cat.look = 0; // 0 = middle
operation Cat.lookLeft(){
look = [look, look - 0.1 .. -1.0] dur 1000;
}
operation Cat.lookCenter(){
var step = if look < 0 then 0.1 else -0.1;
look = [look, look+step .. 0.0] dur 1000;
}
operation Cat.lookRight(){
look = [look, look + 0.1 .. 1.0] dur 1000;
}
function Cat.composeNode(){
var head = Ellipse {cx:100, cy:100, radiusX:100, radiusY:50, fill:black };
var rightEar = Arc {x:100, y:10, height:150, width:100,
startAngle:-20, length:90, closure:PIE, fill:black};
var leftEar = Arc {x:000, y:10, height:150, width:100,
startAngle:110, length:90, closure:PIE, fill:black};
var leftEye = Ellipse { cx:60, cy:100, radiusX:30, radiusY:15, fill:white};
var rightEye = Ellipse { cx:140, cy:100, radiusX:30, radiusY:15, fill:white};
var nose = Arc { x:85, y:110, height:20, width:30,
startAngle:45, length:90, closure:PIE, fill:white};
var rightIris = Ellipse { cx: bind 140+look*20, cy:100,
radiusX:5, radiusY:15, fill:black};
var leftIris = Ellipse { cx: bind 60+look*20, cy:100,
radiusX:5, radiusY:15, fill:black};
return Group{content: [head, rightEar, leftEar, leftEye,
leftIris, rightEye, rightIris, nose]};
}
var myCat = Cat{};
var myCatControl = View {
transform: [translate(0, 150)]
content: GroupPanel {
cursor: DEFAULT
var row = Row {alignment: BASELINE}
var column1 = Column { }
var column2 = Column { }
var column3 = Column { }
var column4 = Column { }
var column5 = Column { }
rows: [row]
columns: [column1, column2, column3, column4]
content:
[SimpleLabel {
row: row
column: column1
text: "Look:"
},
Button {
row: row
column: column2
mnemonic: L
text: "Left"
action: operation() {
myCat.lookLeft();
}
},
Button {
row: row
column: column3
mnemonic: C
text: "Center"
action: operation() {
myCat.lookCenter();
}
},
Button {
row: row
column: column4
mnemonic: R
text: "Right"
action: operation() {
myCat.lookRight();
}
}]
}
};
Canvas {
content: [myCatControl, myCat]
}
Downloads: