if (gflBitmapHasEXIF(gfl_bitmap)!=GFL_TRUE)
{
string="Plik nie zawiera informacji EXIF";
WxMemo1->AppendText(_TEXT(string));
}
else
{
exif=gflBitmapGetEXIF(gfl_bitmap,0);
unsigned i;
for (i=0;iNumberOfItems;i++)
{
string=exif->ItemsList[i].Name;
string+=" - ";
string+=exif->ItemsList[i].Value;
string+="\n";
WxMemo1->AppendText(_TEXT(string));
}
gflFreeEXIF(exif);
}
Applet: Zegar analogowy
5 05 2008import 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);
}
}
Komentarze : Leave a Comment »
Tagi: applet, zegar, zegar analogowy
Kategorie : java
Metoda MonteCarlo
28 04 2008import 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();
}
}
Komentarze : Leave a Comment »
Tagi: MonteCarlo, Pi, wątki
Kategorie : java
Wielowątkowość+SwingWorker
22 04 2008import 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;
}
}
}
Komentarze : 1 Komentarz »
Tagi: dodawanie, SwingWorker, wielowątkowość, wątki
Kategorie : java
Wysyłanie maila z podsumowaniem formularza
20 04 2008Przykł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 ;)
Komentarze : Leave a Comment »
Tagi: formularz, MAIL, perl, skrypt, wysyłanie
Kategorie : perl
słownik pol-ang (kolekcje, HashMap)
14 04 2008import 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);
}
}
}
Komentarze : 1 Komentarz »
Tagi: ang-pol, HashMap, kolekcje, Map, pol-ang, słownik, wyjątki, wyrażenia regularne
Kategorie : java
pliki *.MDI
14 04 2008Kuzynka 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
Komentarze : Komentarzy: 2 »
Tagi: appwiz.cpl, błąd, error, MDI, Microsoft, Microsoft Office Document Imaging, Office
Kategorie : Office
Edytor znaków prywatnych
9 04 2008Przegrzebują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.
Komentarze : Leave a Comment »
Tagi: edytor znaków prywatnych, eudcedit
Kategorie : windows
implementacja stosu (bez kolekcji)
8 04 2008import 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);
}
}
Komentarze : Leave a Comment »
Tagi: kolekcja, Node, pop, push, stos, typy sparametryzowane
Kategorie : java