Frickeln?
-
hi leute,
was versteht man eigentlich unter frickeln?
-
Hi,
würde es mit "basteln" oder "rumprobieren" übersetzen.
-
ich würde es übersetzen mit: "ich trinke ein Glas Mineralwasser"
-
Ich verstehe darunter "hinpfuschen". Wenn ich mal schnell ein kleines Werkzeug programmieren muss, dass ich nur wenige male brauchen werde, dann mach ich das öfter mal. Zum Beispiel habe ich gerade erst folgendes Programm "hingefrickelt":
import java.io.*; import java.util.*; import java.awt.image.*; import java.awt.*; import javax.imageio.*; import java.awt.geom.Rectangle2D; public class SpectrumPrinter { public static void main(String [] args) { try { ArrayList<Integer> spectrum = null; BufferedReader reader = new BufferedReader(new FileReader(new File(args[0]))); PriorityQueue<String> labelQueue = new PriorityQueue<String>(20, new Comparator<String>() { public int compare(String label1, String label2) { int pos1 = getEnergyPosition(label1); int pos2 = getEnergyPosition(label2); return pos1 - pos2; } public boolean equals(Object obj) { return (this == obj); } }); while (reader.ready()) { String line = reader.readLine(); if (line.startsWith("##LABEL")) { String[] tokens = line.split("[|:]"); tokens[1] = tokens[1].replaceAll(" ",""); labelQueue.add(tokens[1]); } if (line.startsWith("#SPECTRUM:")) { spectrum = readSpektrum(reader); BufferedImage image = createImage(spectrum, labelQueue); javax.imageio.ImageIO.write(image,"png",new File("Test.png")); } } reader.close(); } catch (IOException e) { System.out.println(e); } } public static ArrayList<Integer> readSpektrum(BufferedReader reader) throws IOException { ArrayList<Integer> arrayList = new ArrayList<Integer>(2500); String line = reader.readLine(); while (!line.startsWith("#ENDOFDATA:")) { String[] tokens = line.split(","); for (int i = 0 ; i < 4 ; ++i) { tokens[i] = tokens[i].trim(); arrayList.add(Integer.parseInt(tokens[i])); } line = reader.readLine(); } return arrayList; } public static BufferedImage createImage(ArrayList<Integer> spectrum, PriorityQueue<String> labelQueue) { BufferedImage image = new BufferedImage(725,375,BufferedImage.TYPE_INT_RGB); int spectrumWidth = 600; int spectrumHeight = 300; Graphics2D g = image.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0,0,image.getWidth(), image.getHeight()); g.setColor(Color.BLACK); g.drawLine(100,325,100+spectrumWidth,325); g.drawLine(100,25+spectrumHeight,100,25); int max = 0; for (int value : spectrum) { if (value > max) max = value; } for (int i = 0 ; i <= 10 ; ++i) { g.drawLine(100+i*(spectrumWidth/10), spectrumHeight+25, 100+i*(spectrumWidth/10), spectrumHeight+30); g.drawLine(95, 25 + i*(spectrumHeight/10) , 100, 25 + i*(spectrumHeight/10)); String yLabel = String.valueOf(((10-i)*max) /10); String xLabel = String.valueOf((i*20)/10); Rectangle2D rect = g.getFontMetrics().getStringBounds(yLabel,g); int height = (int)Math.round(rect.getHeight()); int width = (int)Math.round(rect.getWidth()); g.drawString(yLabel, 95 - width, (25 + i*(spectrumHeight/10) + (height >> 1))); rect = g.getFontMetrics().getStringBounds(xLabel,g); height = (int)Math.round(rect.getHeight()); width = (int)Math.round(rect.getWidth()); g.drawString(xLabel, 100+i*(spectrumWidth/10) - (width >> 1), spectrumHeight+height+30); } { String xLabel = "Energie [keV]"; String yLabel = "Anzahl []"; Rectangle2D rect = g.getFontMetrics().getStringBounds(xLabel,g); int height = (int)Math.round(rect.getHeight()); int width = (int)Math.round(rect.getWidth()); g.drawString(xLabel, 100+(spectrumWidth/2) - (width >> 1), spectrumHeight+height+50); rect = g.getFontMetrics().getStringBounds(yLabel,g); height = (int)Math.round(rect.getHeight()); width = (int)Math.round(rect.getWidth()); g.drawString(yLabel, 95 - width, 15); } double last = spectrum.get(0); for (int i = 1 ; i < spectrum.size() ; ++i) { int lastX = 100+(int)Math.round((i-1) * ((float) spectrumWidth) / ((float) spectrum.size())); int lastY = (25+spectrumHeight)-(int)Math.round(spectrumHeight * (last/((float)max))); double current = spectrum.get(i); int currentX = 100+(int)Math.round((i) * ((float) spectrumWidth) / ((float) spectrum.size())); int currentY = (25+spectrumHeight)-(int)Math.round(spectrumHeight * (current/((float)max))); g.drawLine(lastX, lastY, currentX, currentY); last = current; } for (int i = 0 ; labelQueue.size() > 0 ; ++i) { g.setColor(Color.BLUE); String label = labelQueue.poll(); int position = getEnergyPosition(label); Rectangle2D rect = g.getFontMetrics().getStringBounds(label,g); int height = (int)Math.round(rect.getHeight()); int width = (int)Math.round(rect.getWidth()); int xPos = 100+(int)((i+0.5)*spectrumWidth/12); g.drawString(label, xPos - (width >> 1), 15); g.setColor(Color.RED); double current = spectrum.get(position); int currentX = 100+(int)Math.round((position) * ((float) spectrumWidth) / ((float) spectrum.size())); int currentY = (25+spectrumHeight)-(int)Math.round(spectrumHeight * (current/((float)max))); g.drawLine(currentX, currentY, xPos, 15); } return image; } public static int getEnergyPosition(String xRayLine) { if (xRayLine.equalsIgnoreCase("C-Ka")) return (int)Math.round((0.277-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("O-Ka")) return (int)Math.round((0.525-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Ni-Ka")) return (int)Math.round((7.47-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Ni-Kb")) return (int)Math.round((8.265-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Ni-Ll")) return (int)Math.round((0.743-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Ni-La")) return (int)Math.round((0.852-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Al-Ka")) return (int)Math.round((1.486-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Si-Ka")) return (int)Math.round((1.740-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Si-Kb")) return (int)Math.round((1.836-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("P-Ka")) return (int)Math.round((2.014-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Ti-Ka")) return (int)Math.round((4.508-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Ti-Kb")) return (int)Math.round((4.932-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Ti-Ll")) return (int)Math.round((0.395-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Cu-Ka")) return (int)Math.round((8.038-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Cu-Kb")) return (int)Math.round((8.904-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Cu-Ll")) return (int)Math.round((0.811-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Cu-La")) return (int)Math.round((0.930-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Zn-La")) return (int)Math.round((1.012-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Zn-Ka")) return (int)Math.round((8.628-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Zn-Kb")) return (int)Math.round((9.60-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Au-Ma")) return (int)Math.round((2.138-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Au-Mb")) return (int)Math.round((2.220-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Au-Mg")) return (int)Math.round((2.404-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Au-La")) return (int)Math.round((9.660-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Au-Lb1")) return (int)Math.round((11.432-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Au-Lb2")) return (int)Math.round((11.585-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Au-Lg1")) return (int)Math.round((13.383-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Pb-Ma")) return (int)Math.round((2.342-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Pb-Mb")) return (int)Math.round((2.442-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Pb-La")) return (int)Math.round((10.505-0.002215) / 0.009995); if (xRayLine.equalsIgnoreCase("Pb-Lb1")) return (int)Math.round((12.618-0.002215) / 0.009995); return 0; } }
-
@Gregor: dein sourcecode interessiert keine sau

-
also ich hab mich dafür interessiert! weiter so gregor.
-
gelangweil0r schrieb:
@Gregor: dein sourcecode interessiert keine sau

Im Chat war der vorhin Anlass dafür, ein bischen über den Zusammenhang zu reden, in dem dieser Code steht. Insofern solltest du vielleicht nicht unbedingt von dir auf andere schließen. IMHO kann nahezu alles Anlass für irgendwelche interessanten Diskussionen usw. geben.
Ich poste relativ häufig jede Art von Code. Das mache ich, weil ich diesbezüglich gerne Feedback kriege. Wenn dich das nicht interessiert, dann brauchst du dir den Code ja nicht angucken. Ich erhebe sicherlich nicht den Anspruch, dass meine Beiträge für alle oder die Mehrheit der Forennutzer oder so interessant sein müssen.
-
ja,ja, "mal eben so" hingefrickelt

-
-
alter Angeber! schrieb:
ja,ja, "mal eben so" hingefrickelt

yo seh icha uch so

-
ackn!!111 schrieb:
alter Angeber! schrieb:
ja,ja, "mal eben so" hingefrickelt

yo seh icha uch so

dito. gena deshalb hab ichs ja geschrieben. der will nur auf ganz plumpe art angeben so nach dem motto "boa ich bin so nen geiler hecht, ich hab den code eben mal so schnell hingerotzt"
-
is frickeln nicht so was ähnliches wie eugeln?

-
gelangweil0r schrieb:
ackn!!111 schrieb:
alter Angeber! schrieb:
ja,ja, "mal eben so" hingefrickelt

yo seh icha uch so

dito. gena deshalb hab ichs ja geschrieben. der will nur auf ganz plumpe art angeben so nach dem motto "boa ich bin so nen geiler hecht, ich hab den code eben mal so schnell hingerotzt"
Oh, danke für das Kompliment!

Ok, Spaß beiseite: Ihr müsst das Niveau der Forennutzer hier ja sehr gering einschätzen, wenn ihr meint, so ein Codestück eigne sich hier zum Angeben. Das IST nur so "hingerotzt". Wenn Ihr da mal genauer draufgucken würdet, dann würdet Ihr sehen, dass da nahezu kein Element guten Stils zu finden ist. Ich habe sehr lange Methoden, die teilweise sehr fragwürdig aufgebaut und eingeteilt sind, ich habe eine ganze Menge Magic Numbers im Code und und und. Eigentlich geht die Lesbarkeit, Wartbarkeit und so weiter des Codes gegen 0. Aus meiner Sicht ist das nur deshalb zu rechtfertigen, weil ich das Programm vielleicht 2 Tage lang nutzen werde und dann wegschmeiße. Weiterhin ist da überhaupt kein anspruchsvolles Element im Code: Es ist kein besonderer Algorithmus implementiert worden und auch keine besondere Datenstruktur oder ähnliches. Wenn Ihr mir Angebertum vorwerfen wollt, dann sucht euch wenigstens ein Codestück von mir, das so ein anspruchsvolles Element realisiert. Da gibt es hier genug zu finden (was auch nicht aus Angeberei gepostet wurde). Ich programmiere nicht erst seit gestern und habe somit sicherlich kein Bedürfnis, mit so einem fragwürdigen Codestück, wie es hier zu sehen ist, anzugeben. Wenn ich angeben wollte, dann würde ich das mit anderem Code machen.
Ihr könnt den Code ja auch mal als das sehen, was es ist: Die Frage war "Was ist frickeln", meine Antwort ist "Das!".
-
Bäh, wer kann nur denken, dass der Code zum Angeben war? Das war Java! Java ist doch viel zu langsam!

-
..klar so in fünf Minuten hingefrickelt.....
-
alex89ru schrieb:
..klar so in fünf Minuten hingefrickelt.....
Wo steht was von 5 Minuten? Ausserdem hat er schon weitaus bessere Sachen hier gepostet, als dass er mit gerade diesem Code angeben müsste. Der Stil _ist_ eben genau das, was man als frickeln bezeichnet.
-
Nö , von 5min stand nix drin...
Bin davon ausgegangen , dass wenn man frickelt,dass man dann etwas schnell "hinschmiert"...
-
Finde auch irgendwie, dass eine unkommentiert 20-Zeilen-Public-Funktion "Frickeln" viel besser beschreibt.
-
Auf http://www.sourceforge.net findet ihr ne Menge von dem Fricklerzeug.
-
Also ich finde Gregors Code nun nicht sonderlich anspruchsvoll, sowohl inhaltlich als auhc stilistisch! *angeb*

-
ich finde frickeln bedeutet, an etwas sehr kleinem arbeiten oder etwas mehr schlecht als recht zum funktionieren bringen. Man macht irgendetwas spitzfindiges, winziges. Etwas quick&dirty zu schreiben verstehe ich nicht darunter. Ein Workaround um einen Bug könnte gefrickelt sein.
geloescht