24 Mart 2017 Cuma

OpenCV Imgproc Sınıfı

Canny metodu
Şöyle yaparız.
Mat imgGray =...;
Mat imgCanny = ...;
Imgproc.Canny(imgGray, imgCanny, 50, 150);
GaussianBlur metodu
Şöyle yaparız.
Imgproc.GaussianBlur(mat, dstMat,new Size (15, 15), 0);
dilate metodu
Nesnelerin arasındaki boşlukları doldurur. Şöyle yaparız.
Mat rgbImage = ...
Mat destination = new Mat(rgbImage.rows(), rgbImage.cols(), rgbImage.type());

int dilation_size = 2;

Mat element1 = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, 
  new Size(dilation_size, dilation_size));

Imgproc.dilate(rgbImage, destination, element1);
imread metodu
Şöyle yaparız.
Mat img = Imgcodecs.imread(path);
imwrite metodu
Şöyle yaparız.
Mat img = ...;
Imgcodecs.imwrite(path, img);
rectangle metodu
Şöyle yaparız.
Mat image = ...;
Rect rect = ...;
Imgproc.rectangle(image, new Point(rect.x, rect.y),
   new Point(rect.x + rect.width, rect.y + rect.height),
   new Scalar(0, 255, 0)
);

JPA @Inheritance Anotasyonu

Giriş
Şu satırı dahil ederiz.
import javax.persistence.Inheritance;
Bir hiyerarşinin aynı tabloda saklanması durumunda kullanılır.

Tanımlama
Ata sınıfı tanımlamak için şöyle yaparız.
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE",
  discriminatorType=DiscriminatorType.STRING,length=2)
public abstract class Foo implements Serializable {
  ...
}

23 Mart 2017 Perşembe

Math Sınıfı

Giriş
java.lang paketi kendiliğinden dahil edildiği için şu satıra gerek yok.
import java.lang.Math;
abs metodu
double alıp double dönen overload için şöyle yaparız.
double nmber = ...;
double number_abs = Math.abs (number);  
acos metodu
Örnek ver

cos metodu
Şöyle yaparız.
double latitudeRad = ...;
Math.cos(lat1Rad);
exp metodu
e üzeri x'in sonucunu döner. Şöyle yaparız.
double x = ...;
double result = Math.exp (x);
log10 metodu
Şöyle yaparız.
Math.log10(2);
min metodu
Şöyle yaparız.
int hours = ...;
int hoursWorked = Math.min (8, hours);
max metodu
Şöyle yaparız.
int hours = ...;
int hoursWorked = Math.max (8, hours);
İkiden fazla parametre vermek istersek şöyle yaparız.
Integer maxValue = Math.max(Collections.max(data1),
 Math.max(Collections.max(data2), Collections.max(data3)));
PI Alanı
Şöyle yaparız.
static double getCircumference(double radius ) {
  return Math.PI * 2 * radius;
}
public static double getArea(double radius) {
  return Math.PI * radius * radius;
}
pow metodu
Double tipinden parametreler alır ve double bir sonuç döner. Şöyle yaparız.
Math.pow(2,31);
random metodu
Açıklaması şöyle. Math sınıfı içindeki Random nesnesinin kullandığı için Random.nextDouble() ile aynı işi yapar.
Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
Şöyle yaparız.
double randVal = Math.random();
Sayı [0,1) aralığında olduğu için şöyle yapmak hep 0 sonucunu verir.
double randVal = (int) Math.random();
round metodu
Açıklaması şöyle
Returns the closest long to the argument, with ties rounding to positive infinity.
double alıp long dönen overload için şöyle yaparız.
double _number = ...;  
long rd = Math.round (number);
sin metodu
Şöyle yaparız.
double latitudeRad = ...;
Math.sin(lat1Rad);
toRadians metodu
Şöyle yaparız.
double latitude = ...;
double latitudeRad = Math.toRadians(latitude);

Jersey

Jersey Nedir?
Açıklaması şöyle. JAX-RS API'sini gerçekleştirmek ve GlassFish içinde kullanmak. Bizim açımızdan GlassFish önemli olmaıdğı için sadece JAX-RS API'sini gerçekleştirmesi yeterli :)
Goals of Jersey project can be summarized in the following points:
  • Track the JAX-RS API and provide regular releases of production quality Reference Implementations that ships with GlassFish;
Kurulum
Şöyle yaparız. Jersey + Jackson beraber indirilir.
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.25.1</version>
</dependency>
ServletContainer - XML
Şöyle yaparız.
<servlet>
  <servlet-name>Jersey</servlet-name>
  <servlet-class>
    com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
  ...
</servlet>
ServletContainer - Kod
ServletContainer hem HttpServlet hem de Filter sınıflarından kalıtır. Kod ile kullanmak istersek şöyle yaparız.
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.mvc.jsp.JspMvcFeature;
import org.glassfish.jersey.servlet.ServletContainer;
import org.glassfish.jersey.servlet.ServletProperties;


Filter getJerseyFilter() {
  final ResourceConfig config = new ResourceConfig()
    .register(new Foo())
    .register(JspMvcFeature.class)
    .property(ServletProperties.FILTER_FORWARD_ON_404, true);
  return new ServletContainer(config);
}
@Path
Path Anotasyonu yazısına taşıdım.

@Post
Post Anotasyonu yazısına taşıdım.

@Consumes
Post metodu ile veri alırken kullanılır. Şu satırları dahil ederiz.
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
Şöyle yaparız.
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadFile(
  @FormDataParam("file") InputStream uploadedInputStream,
  @FormDataParam("file") FormDataContentDisposition fileDetail) {
    ...
}
Şöyle yaparız.
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("text/html")
public Response uploadFile(
  @FormDataParam("username") String username,
  @FormDataParam("password") String password,
  @FormDataParam("title") String title,
  @FormDataParam("file") InputStream fileInputString,
  @FormDataParam("file") FormDataContentDisposition fileInputDetails) {
    String status = "File has been uploaded to ...";    ...
    return Response.status(200).entity(status).build();
}

@Produces
Get metodu ile sonuç dönerken kullanılır. Şu satırları dahil ederiz.
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
Metodun başına yazarız. Şöyle yaparız.
@GET
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public List<Party> getAllParties() throws Exception
{...}