Ana Sayfa

3 Şubat 2016 Çarşamba

unicode (utf8) harfler

äöşü gibi noktali harfleri unicode karşılığı

ç => "\u00e7"
ö => "\u00f6"
ş => "\u015f"
ü => "\u00fc"
ğ => "\u011f"
ı => "\u0131"
ä => "\u00E4"
Ç => "\u00c7"
Ö => "\u00d6"
İ => "\u0130"
Ş => "\u015e"
Ü => "\u00dc"
Ğ => "\u011e"
Ä => "\u00C4"
ß => "\u00DF"


16 Mayıs 2015 Cumartesi

Tiva C Series ile Programlamaya Giriş
Sistem Clock' unun Ayarlanması



Merhaba arkadaşlar, sizlerle içerisinde ARM'ın M4F çekirdeğini barındıran,birçok konuda maharetli ve enerji tüketimi açısından da gayet ideal olan Texas Instruments'ın ürettiği Tiva C Series hakkında temel bilgiler paylaşacağım. Öncelikle kullandığım kart TM4C123GXL. Ürünün özellikleri, detaylı bilgi ve dökümantasyon için buraya bakabilirsiniz

 
http://www.ti.com/tool/ek-tm4c123gxl/




#include                     // Standart input-output kütüphanesi
#include                     // Standart int kütüphanesi
#include                    // Standart bool kütüphanesi (bool değişkenleri için)
#include "driverlib/sysctl.h"         // System control library 

uint32_t SysClock;    // unsigned integer-32 bit, Sistem Clock'umuz burada tutulacak
int main(void)
{

/* Sistem Clock'unu değiştirmek için erişim aldigimiz header driverlib icerisindeki 'sysctl.h' dosyasidir. Burada tanimli SysCtlClockSet()
ile sistem clock'unu ayarliyoruz. PLL + MAIN OSILATOR + KRISTAL = 200 Mhz.
Sysdiv_5 ---> Clock frekansi, 200/5 = 40 Mhz oldu.*/

SysCtlClockSet(SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ|SYSCTL_SYSDIV_5);  
SysClock=SysCtlClockGet();            // Daha sonra bu değer değişkenimize atandİ.

while(1)                               // Loop forever
{
} 
}

Evet arkadaşlar, kodlar bu kadar basit. Bu konuyla ilgili ilk paylaşımım olduğundan olayı giriş seviyesinde tutmak istedim. Bu arada derleyeici olarak IAR Embedded Workbench, Code Composer Studio ya da Keil MVision kullanabilirsiniz. Yukarıda yazdığım kodlar Keil kullanılarak derlenmiştir. Gelelim test aşamasına. Sistemizin gerçekten 40 MHz frekansında çalıştığını anlayabilmek için 'SysClock' değişkenimizi kullanacağız. Derleyiciyi debug moduna alıp 'Watch Window' ile değişkenimizin değerini gözlemleyebilirsiniz. Aşağıda olduğu gibi 40000001 değerini görmeniz yeterlidir arkadaşlar.



















Daha sonraki yazılarımda GPIO kullanımı ve Board üzerinde LED yakıp söndürme konusundan bahsedeceğim. Takip etmenizi öneririm. :) Bu konu ile ilgili sorularınız için yorum kısmından bana ulaşabilirsiniz.

14 Aralık 2014 Pazar

Apache Wicket Tree Uygulaması


Apache Wicket ile Tree Uygulaması


TestPage.html

<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" xmlns="http://www.w3.org/1999/xhtml">
<body>
<table>
<div wicket:id="tree">
</div>
</table>
</body>
</html>


TestPage.java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.tree.Tree;

public class TestPage extends WebPage {
 private static List items = new ArrayList();
 static {
items.add(new AccordionItem("Title 1", "content 1.1", "content 1.2","content 1.3"));
  items.add(new AccordionItem("Title 2", "content 2.1", "content 2.2"));
  items.add(new AccordionItem("Title 3", "content 3.1"));
  items.add(new AccordionItem("Title 4", "content 3.1", "content 3.2"));
 }

 public TestPage() {
  DefaultMutableTreeNode root0 = new DefaultMutableTreeNode("Root");
  final DefaultTreeModel treeModel = new DefaultTreeModel(root0);
  for (AccordionItem accordionItem : items) {
   DefaultMutableTreeNode root = new DefaultMutableTreeNode(
     accordionItem.title);
   for (String s : accordionItem.childs) {
  final DefaultMutableTreeNode rootChild = new DefaultMutableTreeNode(s);
    root.add(rootChild);
   }
   root0.add(root);
  }
  final Tree tree = new Tree("tree", treeModel) {
   private static final long serialVersionUID = 1L;
   @Override
   protected String renderNode(TreeNode node) {
   DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) node;
    return String.valueOf(treeNode.getUserObject());
   }
   @Override
   protected void onNodeLinkClicked(AjaxRequestTarget target,
     TreeNode node) {
    super.onNodeLinkClicked(target, node);
   DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) node;
    System.out.println(treeNode.getUserObject());
   }
  };
  tree.getTreeState().expandNode(root0);
  add(tree);
 }

 public static class AccordionItem {
  private String title;
  private List childs;

  public AccordionItem(String title, String... content) {
   this.title = title;
   this.childs = Arrays.asList(content);
  }
 }
}
pom.xml

   
                  <dependency>
   <groupId>org.apache.wicket</groupId>
   <artifactId>wicket-spring</artifactId>
   <version>1.5.11</version>
   <exclusions>
    <exclusion>
     <artifactId>spring</artifactId>
     <groupId>org.springframework</groupId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>org.apache.wicket</groupId>
   <artifactId>wicket-core</artifactId>
   <version>1.5.11</version>
  </dependency>
  <dependency>
   <groupId>org.apache.wicket</groupId>
   <artifactId>wicket-datetime</artifactId>
   <version>1.5.11</version>
  </dependency>
  <dependency>
   <groupId>org.apache.wicket</groupId>
   <artifactId>wicket-core</artifactId>
   <version>1.5.11</version>
  </dependency>
  <dependency>
   <groupId>org.apache.wicket</groupId>
   <artifactId>wicket-extensions</artifactId>
   <version>1.5.11</version>
  </dependency>
  <dependency>
   <groupId>org.apache.wicket</groupId>
   <artifactId>wicket-auth-roles</artifactId>
   <version>1.5.11</version>
  </dependency>
  <dependency>
   <groupId>org.apache.wicket</groupId>
   <artifactId>wicket-devutils</artifactId>
   <version>1.5.11</version>
  </dependency>

15 Ekim 2014 Çarşamba

Apache Wicket Framework ile Form işlemleri



<html xmlns:wicket="http://wicket.apache.org">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
 <h2>form</h2>
 <form wicket:id="form">
  <div wicket:id="lbl"></div>
  <input wicket:id="searchH" type="text" />
  <input type="submit" name="Ara" value="Ara" />
   
 </form>
 <br />
        <a href="#" wicket:id="link">TEXT TO REPLACE</a> 
</body>
</html>


import java.io.Serializable;
public class Musteri implements Serializable{

    public String searchH;
    public String getSearchH() {
  return searchH;
 }
 public void setSearchH(String searchH) {
  this.searchH = searchH;
 }
}

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.PropertyModel;

public class HomeData extends WebPage 
{
 private static final long serialVersionUID = 1L;
 private Musteri musteri = new Musteri();
 
 public <T> HomeData() {
                            //Butona tıklanınca çalışır
Form<Musteri> frm = new Form<Musteri>("form", new CompoundPropertyModel<Musteri>(musteri)) {
   private static final long serialVersionUID = 1L;
   @Override
   protected void onSubmit() {
    System.out.println("on submit "+musteri.getSearchH());
   }
  };
  
final Label label = new Label("lbl", new PropertyModel<String>(musteri, "searchH"));
  label.setOutputMarkupId(true);
  
  frm.add(label);  
              // TextField onkeyup özelliğine göre çalışır
frm.add(new TextField<String>("searchH").add(new AjaxFormComponentUpdatingBehavior("onkeyup"){
   private static final long serialVersionUID = 1L;
   @Override
   protected void onUpdate(AjaxRequestTarget target) {
    target.addComponent(label);
    System.out.println(musteri.getSearchH());
   }
  }));
                     //Link popup olarak açılır
 add(new AjaxLink("link"){      
  private static final long serialVersionUID = 1L; 
  @Override                                            
  public void onClick(AjaxRequestTarget target) {        
  target.appendJavascript("window.open('http://www.javamakale.com/')");
   }                                                                   
   });
  add(frm);
 }
}

Apache Wicket Framework ile repeater kullanımı

repeater.html

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<head>
<title>repeat</title>
</head>
<body>
 <div wicket:id="repeater">
  <h3 wicket:id="title"></h3>
  <ul>
   <li wicket:id="childs"><div wicket:id="content"></div></li>
  </ul>
 </div>
</body>
</html>


repeater.java
package org.jtpd.wicket.repeater;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.list.PropertyListView;

public class repeater extends WebPage {
private static List<AccordionItem> items = new ArrayList<AccordionItem>();
static {
 items.add(new AccordionItem("title 1", "content 11", "content 12", "content 13"));
 items.add(new AccordionItem("title 2", "content 21"));
 items.add(new AccordionItem("title 3", "content 31"));
}
public repeater() {
ListView<AccordionItem> view = new PropertyListView<AccordionItem>("repeater", items) {
 private static final long serialVersionUID = 1L;
 @Override
 protected void populateItem(ListItem<AccordionItem> item) {
  item.add(new Label("title"));
  item.add(new PropertyListView<String>("childs") {
   private static final long serialVersionUID = 1L;
   @Override
   protected void populateItem(ListItem<String> item) {
    item.add(new Label("content", item.getModel()));
   }
  });
 }
 };
  add(view);
 }
 public static class AccordionItem {
  private String title;
  private List<String> childs;
  public AccordionItem(String title, String... content) {
   this.title = title;
   this.childs = Arrays.asList(content);
  }
 }
}


19 Ocak 2014 Pazar

IBM DB2 ile DataSource bağlantı



Eclipse Projesi: indir


IBM DB2 Veritabanı yapısı
CREATE table IF NOT EXISTS USERS(
USERID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
NAME varchar(20),
SURNAME varchar(20),
PASSPORT INTEGER,
primary key (USERID))

ConnectWithDataSource.Java
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectWithDataSource implements Serializable{

 private static final long serialVersionUID = 1L;
 static Connection connection = null;

 public static Connection getConnection() {

  try {
   InitialContext context = new InitialContext();
   DataSource dataSource = (DataSource) context.lookup("java:/comp/env/jdbc/MYDB");
   connection = dataSource.getConnection();
  } catch (NamingException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return connection;
 }

 public static boolean closeConnection() {

  boolean result = false;
  try {
   if (connection != null && !connection.isClosed()) {
    connection.close();
    System.out.println("Database connection terminated");
    result = true; 
   }
  } catch (Exception ex) {
   ex.printStackTrace();
   result = false;
  }
  return result;
 } 
}

DBController.Java
import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
 
public class DBController {
private DataSource ds;
private Connection con;// NEW CHANGE

public void setUp() throws NamingException,SQLException{
 
 InitialContext ctx = new InitialContext();
    ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/MYDB");
    con = ds.getConnection(); // NEW CHANGE
}

public ResultSet readRequest(String dbQuery){
    ResultSet rs=null;
    try{
        Statement stmt = con.createStatement();
        rs = stmt.executeQuery(dbQuery);
    }
    catch(Exception e){e.printStackTrace();}
    return rs;
}

public int updateRequest(String dbQuery){
    int count=0;
    try{
        Statement stmt = con.createStatement();
        count=stmt.executeUpdate(dbQuery);
    }
    catch(Exception e){e.printStackTrace();}
    return count;
}

public void terminate(){
    try {con.close();}
    catch(Exception e){e.printStackTrace();}
}
}

Kisiler.Java
 public class Kisiler
{
private int _tcno;
private String _adi;
private String _soyadi;
public Kisiler() {

}
public int get_tcno() {
    return _tcno;
}
public void set_tcno(int _tcno) {
    this._tcno = _tcno;
}
public String get_adi() {
    return _adi;
}
public void set_adi(String _adi) {
    this._adi = _adi;
}
public String get_soyadi() {
    return _soyadi;
}
public void set_soyadi(String _soyadi) {
    this._soyadi = _soyadi;
}
 
}

PersonelBean.Java
import java.io.Serializable; 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.naming.NamingException;

@ManagedBean(name = "yb")
@SessionScoped
public class PersonelBean implements Serializable{
 private static final long serialVersionUID = 1L;
 public PersonelBean() {
    }
    public List<Kisiler> getPersonelList() throws SQLException,NamingException{

     DBController cntrl =new DBController();
     cntrl.setUp();

        ResultSet resultSet =  cntrl.readRequest("SELECT * FROM DB2ADMIN.users");

        List<Kisiler> list = new ArrayList<Kisiler>();

        while(resultSet.next()){
         Kisiler personel = new Kisiler();
      
         personel.set_adi(resultSet.getString("NAME"));
         personel.set_soyadi(resultSet.getString("SURNAME"));
         personel.set_tcno(resultSet.getInt("USERID"));

            list.add(personel);
        }
        cntrl.terminate();
        return list;
    }
   
}
Context.xml
 <?xml version="1.0" encoding="UTF-8"?>
<Context>
      <Resource name="jdbc/MYDB" auth="Container" 
  type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="db2admin" password="db2admin" 
               driverClassName="com.ibm.db2.jcc.DB2Driver"
               url="jdbc:db2://localhost:50000/MYDB" 
               />  
            
</Context>

test.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
<h:head><title>PrimeFaces Test</title>
</h:head>
<h:body>
<h:form prependId="false">  
  
    <p:dataTable id="dataTable" var="car" value="#{yb.personelList}"  
                 paginator="true" rows="10"  
                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                 rowsPerPageTemplate="5,10,15">  
        <f:facet name="header">  
            Ajax Pagination  
        </f:facet>  
  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Model" />  
            </f:facet>  
            <h:outputText value="#{car._adi}" />  
        </p:column>  
  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Year" />  
            </f:facet>  
            <h:outputText value="#{car._soyadi}" />  
        </p:column>  
  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Manufacturer" />  
            </f:facet>  
            <h:outputText value="#{car._tcno}" />  
        </p:column>  
         
    </p:dataTable>  
  
</h:form>  
                
</h:body></html>


Jquery ile Scroll indikçe Veri Yüklemek

Merhabalar,
Herkesin bildiği gibi Facebook uygulamasındayken, scrool ile sayfanın aşağısına inince veriler otomatik olarak yükleniyor. Bu uygulama çok hoşuma gitmişti. Bende Javada yapmak istedim.
Php'de bulduğum örneği Javada uyarladım sizlere.



Eclipse Projesi: indir


Veritabanı Yapısı
CREATE TABLE 'actor_info' (
  'id' int(5) NOT NULL AUTO_INCREMENT,
  'first_name' varchar(45) NOT NULL,
  'last_name' varchar(45) NOT NULL,
  'film_info' text NOT NULL,
  PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=latin1


ConnectionFactory.Java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
public class ConnectionFactory {
    //static reference to itself
    private static ConnectionFactory instance = new ConnectionFactory();
    String url = "jdbc:mysql://localhost/test";
    String user = "username";
    String password = "password";
    String driverClass = "com.mysql.jdbc.Driver"; 
 
    //private constructor
    private ConnectionFactory() {
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static ConnectionFactory getInstance()   {
        return instance;
    }
    public Connection getConnection() throws SQLException,
    ClassNotFoundException {
        Connection connection =
            DriverManager.getConnection(url, user, password);
        return connection;
    }
}


EmployeeDAO.Java
import java.util.ArrayList;
import java.util.List;
import java.sql.*;
 
public class EmployeeDAO {
Connection connection;
    Statement stmt;
    private int noOfRecords;

    public EmployeeDAO() { }
 
    private static Connection getConnection() throws SQLException,ClassNotFoundException{
        Connection con = ConnectionFactory.
                getInstance().getConnection();
        return con;
    }
    public List<MyData> viewAllEmployees(int offset,int noOfRecords)
    {
        String query = "select SQL_CALC_FOUND_ROWS * from actor_info ORDER BY id DESC limit "
                 + offset + ", " + noOfRecords;
        List<MyData> list = new ArrayList<MyData>();
        MyData employee = null;
        try {
            connection = getConnection();
            stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                employee = new MyData();
                employee.setId(rs.getInt("id"));
                employee.setName(rs.getString("first_name"));
                employee.setLastname(rs.getString("last_name"));
                employee.setInfo(rs.getString("film_info"));
                list.add(employee);
            }
            rs.close();
 
            rs = stmt.executeQuery("SELECT FOUND_ROWS()");
            if(rs.next())
                this.noOfRecords = rs.getInt(1);
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally
        {
            try {
                if(stmt != null)
                    stmt.close();
                if(connection != null)
                    connection.close();
                } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return list;
    }
    public int getNoOfRecords() {
        return noOfRecords;
    }
}

MyData.Java
public class MyData {
 private int id;  
    private String name;
    private String lastname; 
    private String info;
    
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getLastname() {
  return lastname;
 }
 public void setLastname(String lastname) {
  this.lastname = lastname;
 }
 public String getInfo() {
  return info;
 }
 public void setInfo(String info) {
  this.info = info;
 }
}

index.jsp
<%@page import="com.sample.EmployeeDAO"%>
<%@page import="com.sample.MyData"%>
<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
 <link rel="stylesheet" href="css/style.css">
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
 <script type="text/javascript" src="js/jquery-ias.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
         // Infinite Ajax Scroll configuration
            jQuery.ias({
                container : '.wrap', // main container where data goes to append
                item: '.item', // single items
                pagination: '.nav', // page navigation
                next: '.nav a', // next page selector
                loader: '<img src="css/ajax-loader.gif"/>', // loading gif
                triggerPageThreshold: 3 // show load more if scroll more than this
            });
        });
    </script>
</head>
<% 
 String next="";
 int pagee=1;
 int limit=10;
 
 if(request.getParameter("p")!=null)       
   pagee=Integer.parseInt(request.getParameter("p"));
 
 EmployeeDAO dao = new EmployeeDAO();
 
 int start = (pagee * limit)-limit;
 List<MyData> list = dao.viewAllEmployees(start,limit);
 
 int rowCount = dao.getNoOfRecords();
 int noOfPages = (int) Math.ceil(rowCount * 1.0 / limit);
 if( rowCount > (pagee * limit) ){
  next = ++pagee+"";
}

 %> 
 <body><div class="wrap">
 
<%
 for (MyData m:list) {
 
  %>
     <div class="item" id="item-<%=m.getId()%>">
  <h2>
   <span class="num"><%= m.getId()%></span>
   <span class="name"><%= m.getName()%> <%=m.getLastname()%></span>
  </h2>
  <p><%=m.getInfo()%></p>
 </div>
     <%
 }
%>
<!--page navigation-->
 <% if (next!=null){ System.out.println(next); %>
 <div class="nav">
  <a href='index.jsp?p=<%=next%>'>Next</a>
 </div>
 <%}%>

</div><!--.wrap-->
</body>
</html>


style.css
*{
 margin: 0;
 padding: 0;
 box-sizing: border-box;
 -webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
 -webkit-font-smoothing: antialiased;
 -moz-font-smoothing: antialiased;
 -o-font-smoothing: antialiased;
 font-smoothing: antialiased;
 text-rendering: optimizeLegibility;
}
body{
 font: 12px Arial,Tahoma,Helvetica,FreeSans,sans-serif;
 text-transform: inherit;
 color: #333;
 background: #e7edee;
 width: 100%;
}
.wrap{
 width: 720px;
 margin: 15px auto;
 padding: 15px 10px;
 background: white;
 border: 2px solid #DBDBDB;
 -webkit-border-radius: 5px;
 -moz-border-radius: 5px;
 border-radius: 5px;
 overflow: hidden;
}
.item{
 margin: 10px 0;
 padding: 5px 10px;
 background: #f9f9f9;
 border-radius: 5px;
}
a{ text-decoration: none; color: #333}
h1{
 font-family: Georgia, "Times New Roman", Times, serif;
 font-size: 2.8em;
 text-align: center;
 margin: 15px 0;
}
h2{font-size: 1.5em; margin: 8px 0}
h2 span.name{font-size: 1em}
h2 span.num{font-size: 1.5em; font-style: italic}
.item p{text-transform: lowercase}

/*Loader style*/
.ias_loader, .ias_trigger {
 text-align:center;
 margin: 30px 0 40px;
}
.ias_trigger a:link,
.ias_trigger a:visited {
    padding: 4px 50px;

    background-color: #f9f9f9;
    border: solid 1px #ddd;
    border-radius: 2px;

    font: bold 12px Arial, sans-serif;
    color: #555;
    text-decoration: none;
}
.ias_trigger a:hover,
.ias_trigger a:active {
    border-color: #ccc;
}