Applet: Zegar analogowy

5 05 2008

import java.applet.*;
import java.awt.*;
import java.util.*;

/*<APPLET CODE=”Zegar.java” WIDTH=300 HEIGHT=300></APPLET>*/
public class Zegar extends Applet implements Runnable {
int sizeX, sizeY, Cx, Cy, r;
Color clockColor;
boolean stopped;
double hour, minute, second;
Graphics mDC, gDC;
Image img;

@Override
public void init() {
sizeX= getSize().width;
sizeY=getSize().height;

img= createImage(sizeX, sizeY);
mDC= img.getGraphics();
gDC= getGraphics();

Cx= (sizeX / 2);
Cy= (sizeY / 2);

if(sizeX < sizeY) {
sizeY=sizeX;
}
else if(sizeX > sizeY) {
sizeX=sizeY;
}

r= (sizeX / 2);
clockColor= Color.yellow;
}

@Override
public void start() {
stopped= false;
Thread thread= new Thread(this);
thread.start();
}

public void run() {
while(!stopped) {
draw();
try {
Thread.sleep(1000);
}
catch(InterruptedException e) {

}
}
}

@Override
public void stop() {
stopped= true;
}

@Override
public void paint(Graphics gDC) {
draw();
}

public void draw() {
getTime();

mDC.setColor(Color.white);
mDC.fillRect(0, 0, getSize().width, getSize().height);
mDC.setColor(clockColor);
mDC.fillOval(Cx - sizeX / 2, Cy - sizeY / 2, sizeX, sizeY);

drawDigits(mDC);
drawHands(mDC);

gDC.drawImage(img,0,0,null);
}

public void drawDigits(Graphics gDC) {
gDC.setColor(Color.black);

for(int i= 1; i<=12; i++) {
int digitWidth= gDC.getFontMetrics().stringWidth(Integer.toString(i));
int digitHeight= gDC.getFontMetrics().getHeight();
int x= (int)(Cx + (r- digitHeight)*Math.cos(Math.PI / 6 * (i-3)));
int y= (int)(Cy + (r- digitHeight)*Math.sin(Math.PI / 6 * (i-3)));
x -= digitWidth / 2;
y += digitHeight / 2;
gDC.drawString(Integer.toString(i),x,y);
}
}

public void drawHands(Graphics gDC) {
double hVal= hour*60+minute;

int xH=(int)(Cx+(r*0.6)*Math.cos(Math.PI/360*(hVal-180)));
int yH=(int)(Cy+(r*0.6)*Math.sin(Math.PI/360*(hVal-180)));

int xM=(int)(Cx+(r*0.65)*Math.cos(Math.PI/30*(minute-15)));
int yM=(int)(Cy+(r*0.65)*Math.sin(Math.PI/30*(minute-15)));

int xS=(int)(Cx+(r*0.7)*Math.cos(Math.PI/30*(second-15)));
int yS=(int)(Cy+(r*0.7)*Math.sin(Math.PI/30*(second-15)));

gDC.setColor(Color.red);
gDC.drawLine(Cx,Cy,xH,yH);
gDC.drawLine(Cx-1, Cy-1, xH, yH);
gDC.drawLine(Cx+1, Cy+1, xH, yH);

gDC.setColor(Color.green);
gDC.drawLine(Cx,Cy,xM,yM);
gDC.drawLine(Cx-1, Cy-1, xM, yM);
gDC.drawLine(Cx+1, Cy+1, xM, yM);

gDC.setColor(Color.blue);
gDC.drawLine(Cx, Cy, xS, yS);
}

public void getTime() {
GregorianCalendar calendar= new GregorianCalendar();
hour= calendar.get(Calendar.HOUR);
minute= calendar.get(Calendar.MINUTE);
second= calendar.get(Calendar.SECOND);
}
}




Metoda MonteCarlo

28 04 2008

import java.util.*;
import java.io.*;
import java.util.concurrent.*;

public class MCarlo implements Runnable {
private int n;
private int t;
private double Pi;
private int priorytet;
private double x;
private double y;
private double z;

public MCarlo(int n, int priorytet) {
this.priorytet=priorytet;
this.n=n;
}

public String toString() {
return “Punktow: “+n+” priorytet: “+priorytet+” Pi= “+Pi;
}

public void run() {
//Thread.currentThread().setPriority(priorytet);
for(int i=0;i<n;i++) {
x=Math.random()*0.5;
y=Math.random()*0.5;
z=x*x+y*y;
if(Math.sqrt(z)<=0.5) {t++;}
}
Pi=((4.0*t)/(n*1.0));
System.out.println(this);
}

public static void main(String[] args) throws IOException {
ExecutorService exec= Executors.newCachedThreadPool();

String linia;
int a,b;

BufferedReader in=null;
try { //plik z danymi
in= new BufferedReader(new FileReader(args[0]));
} catch(FileNotFoundException e) {
System.out.println(”Nie mozna otworzyc pliku: “+args[0]);
}

PrintWriter out=null;
try { //plik wynikowy
out= new PrintWriter(new FileWriter(args[1]));
} catch(FileNotFoundException e2) {
System.out.println(”Nie powiodlo sie utworzenie pliku wynikowego “+args[1]);
}

int licznik= 1; //bo numeracja wierczy od 1 a nie od 0

while ((linia= in.readLine())!= null) {
try { //tu dodac co ma robic z zczytanymi danymi…
a=Integer.parseInt(linia.split(” “)[0]);
b=Integer.parseInt(linia.split(” “)[1]);
exec.execute(new MCarlo(a,b));

licznik+=1;
} catch(Exception e3) {
System.out.println(”Blad danych w wierszu: “+licznik);
}
}
exec.shutdown();
in.close();
out.close();
}
}




Wielowątkowość+SwingWorker

22 04 2008

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.SwingUtilities.*;

public class LiczRandom extends JFrame {
JTextField AA= new JTextField(”0″,7);
JTextField BB= new JTextField(”0″,7);
JButton button= new JButton(”Licz”);
JTextField aa= new JTextField(”0″,7);
JTextField bb= new JTextField(”0″,10);

public static void main(String args[]) {
new LiczRandom();
}

class Licz implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(isDouble(AA.getText()) && isDouble(BB.getText())) {
Double Aa= new Double(AA.getText());
Double Bb= new Double(BB.getText());
Double sumaAB= Aa + Bb;
aa.setText(sumaAB.toString());
Double bValue= new Double(bb.getText());
bValue+= sumaAB;
bb.setText(bValue.toString());
}
else {
aa.setText(”policz se sam”);
}
}
}

SwingWorker worker = new SwingWorker() {
public Object construct() {
bb.setText(”0″.toString());
boolean sprawdz = true;
while(sprawdz) {
try {
TimeUnit.SECONDS.sleep(1);
}
catch (InterruptedException e) {
}

Double bValue= new Double(bb.getText());
bValue= ((bValue + Math.random()) * 0.5);
bb.setText(bValue.toString());
}
return true;
}
};

public LiczRandom() {
super();
setTitle(”Uroki wielowatkowosci”);
setSize(600,50);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
Container okienko = getContentPane();
button.addActionListener(new Licz());
okienko.add(AA);
okienko.add(BB);
okienko.add(button);
okienko.add(aa);
okienko.add(bb);
worker.start();
setVisible(true);
}

public boolean isDouble(String xyz) {
try {
Double.parseDouble(xyz);
return true;
}
catch(NumberFormatException e) {
return false;
}
}
}




Wysyłanie maila z podsumowaniem formularza

20 04 2008

Przykładowy skrypt do wysyłki maila z podsumowaniem danych wpisanych w formularzu:

##########################################
#podaj tu odpowiednie dane:
$backurl = “BACK_URL”;
$backname = “BACK_NAME”;
$mailprog = ‘/bin/mail’;
$youmail = $mail;
##########################################
open (MAIL, “|$mailprog $youmail”) || die “Error: $mailprog!\n”;
print MAIL (”Do: $youmail\n”);
print MAIL (”Od: WMichal\n”);
print MAIL (”Temat: Example\n\n”);

print MAIL “Takie dane podano w formularzu: \n”;
print MAIL “Imie $imie \n”;
print MAIL “Nazwisko $nazw \n”;

close (MAIL);

Zmienne $imie i $nazw możemy sczytać sobie zwykłym splitem… Pomoc znajdziecie w necie ;)




Obsługa ciasteczek w Perlu

20 04 2008

#!/usr/bin/perl
use CGI;
#deklaracje odpowiedzialne za obsługę ciasteczek:
use CGI qw/:standard/;
use CGI::Cookie;

#jakaś tam treść skryptu…

#właściwa obsługa ciasteczek:
$ciasteczko=new CGI::Cookie(-name => ‘NAZWA’, -value => ‘WARTOŚĆ’);
#przypisanie ciastku nazwy NAZWA i wartości WARTOŚĆ

#do wypisania ciasteczka:
print header (-cookie => [$ciasteczko]);
#jeżeli mamy więcej ciasteczek:
#print header (-cookie => [$ciasteczko1,$ciasteczko2,$inne_ciastka]);
#wrzucenie obsługi cookies po print “Content-type: text/html\n\n”;
#sprawi , że ciasteczka nie będą działać!!




słownik pol-ang (kolekcje, HashMap)

14 04 2008

import java.util.*;
import java.io.*;

public class AngPol {

public static void main(String args[]) {
Scanner abc = new Scanner(System.in).useDelimiter(”\n”);
Slownik dic = new Slownik();
String input = “”;

while (true) {
if (abc.hasNext()) {
input = abc.next();
}
if (input.matches(”^([^!]+)”)) {
System.out.println(dic.get(input.split(” “)[0]));
}
else if (input.matches(”^!remove\\s(.+)?”)) {
dic.remove(input.split(” “)[1]);
}
else if (input.matches(”^!add\\s(.+)?\\s(.+)?”)) {
dic.add(input.split(” “)[1], input.split(” “)[2]);
}
else if (input.matches(”^!exit”)) {
dic.exit();
break;
}
}
}
}

class Slownik {

private Map<String, String> slowniczek = new HashMap<String, String>();

public void add(String pol, String eng) {
slowniczek.put(pol, eng);
}

public boolean remove(String slowko) {
if (slowniczek.containsKey(slowko)) {
slowniczek.remove(slowko);
return true;
}
else if (slowniczek.containsValue(slowko)) {
for ( String xyz : slowniczek.keySet() ) {
if (slowniczek.get(xyz).equals(slowko)) {
slowniczek.remove(xyz);
return true;
}
}
}
return false;
}

public String get(String slowko) {
if (slowniczek.containsKey(slowko)) {
return slowniczek.get(slowko);
}
else if (slowniczek.containsValue(slowko)) {
for ( String xyz : slowniczek.keySet() ) {
if (slowniczek.get(xyz).equals(slowko)) {
return xyz+”\n”;
}
}
}
return “Nie ma takiego słówka w bazie\n”;
}

//potrzebne do exit() i nie tylko …:
FileInputStream plik;
BufferedReader input;
BufferedWriter output;

public void exit() {
try {
input.close();
output = new BufferedWriter(new FileWriter(”ang-pol.dic”));
for ( String xyz : slowniczek.keySet() ) {
output.write(xyz + ” ” + slowniczek.get(xyz) + “\n”);
}
output.close();
}
catch (IOException e) {
System.out.println(”Coś nie tak z zapisem lub odczytem!! Pokombinuj jeszcze raz…\n”);
System.exit(0);
}
}

public Slownik() {
try {
plik = new FileInputStream(”ang-pol.dic”);
input = new BufferedReader(new InputStreamReader(new DataInputStream(plik)));
String linia;
while ((linia = input.readLine()) != null) {
String slowo[] = linia.split(” “);
if (slowo.length == 2) {
slowniczek.put(slowo[0], slowo[1]);
}
}
}
catch (IOException e) {
System.out.println(”Coś nie tak z zapisem lub odczytem!! Pokombinuj jeszcze raz…\n”);
System.exit(0);
}
}

}




pliki *.MDI

14 04 2008

Kuzynka podesłała mi dzisiaj pliki z rozszerzeniem *.MDI z prośbą bym jej do “zdekodował”. Wcześniej nie miałem do czynienia z czymś takim. Na szczęście google przyszło z pomocą… Jest to Office Document Imaging File który otwiera się programikiem, który jest integralną częścią pakietu Office. Okazało się, że dla posiadaczy Office 2007 wyskakuje mały error, który rozwiązujemy następująco:
1. Start/uruchom
2. Wspisujemy: appwiz.cpl
3. Odszukujemy na liście naszego Office
4. Klikamy Zmień/dodaj lub usuń funkcje
5. Microsoft Office Document Imaging - opcja uruchamiaj wszystko z Mojego Komputera
Potwierdzamy, instalujemy i mamy radochę, że odpalają się nam pliki z rozszerzeniem *.MDI :P




Edytor znaków prywatnych

9 04 2008

Przegrzebując zasoby internetu dowiedziałem się o pewnym ukrytym elemencie naszego poczciwego Windowsa… chodzi mianowicie o Edytor znaków prywatnych. Aby do niego się dostać: start/uruchom wpisujemy eudcedit. Proces tworzenia znaku wygląda następująco:

  • wybieramy kod znaku pod którym będzie on dostępny
  • tworzymy znak
  • zapisujemy go

Jeżeli będziemy chcieli skorzystać z nowoutworzonego znaku np w Wordzie przechodzimy do Tablicy znaków, wybieramy z listy wszystkie czcionki i wyszukujemy nasz znaczek.




implementacja stosu (bez kolekcji)

8 04 2008

import java.util.*;

public class stos<T> {

public stos() {
top=null;
}

private class Node<U> {
U item;
Node<U> next;
Node() {item= null; next= null; }

Node(U item, Node<U> next) {
this.item=item;
this.next=next;
}

boolean end() { return item== null && next== null; }
}

private Node<T> top= new Node<T>();

public void push(T item) {
top= new Node<T>(item,top);
}

public T pop() {
T result= top.item;
if(!top.end()) {
top=top.next;
}
return result;
}

@Override
public String toString() {
String s=”";
if(top==null)
{
s=”Z pustego i Salomon nie naleje :P - Stos jest pusty !!”;
return s;
}

for(Node tmp=top; tmp!=null; tmp=tmp.next)
{
s=s+”(”+tmp.item+”)”;
}
return s;
}

public static void main(String args[])
{
stos<Integer> stos = new stos<Integer>();
stos.push(10);
stos.push(20);
System.out.println(stos);
stos.push(30);
stos.push(40);
System.out.println(stos);
stos.pop();
stos.pop();
System.out.println(stos);

stos<String> stos2 = new stos<String>();
stos2.push(”a”);
stos2.push(”b”);
System.out.println(stos2);
stos2.push(”c”);
stos2.push(”d”);
System.out.println(stos2);
stos2.pop();
stos2.pop();
System.out.println(stos2);
}
}




prima aprilis

2 04 2008

Zastanawiam się dokąd może posunąć się ludzka głupota… Wczoraj dowiedziałem się, że mój kolega miał wypadek samochodowy, i że w ciężkim stanie został przewieziony do szpitala gdzie po kilku godzinach zmarł. Cały dzień o tym myślałem :( dziś dowiedziałem się, że faktycznie miał wypadek i wylądował w szpitalu ale ŻYJE!! Ludzie którzy wymyślają takie głupie rzeczy powinni się zastanowić co czują bliscy takiej osoby, nie życzę znaleźć się w roli matki lub ojca poszkodowanego. Apeluje do wszystkich którzy czytają ten wpis: zastanówcie się nim chcecie wyciąć jakiś żart!! Prima aprilis w końcu już za rok…