Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
HTML etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
HTML etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Nisan 2017 Cuma

Form serileştirme

Form içerisinde n tane element olan bir yapı. Form içinde topladığınız bilgileri sunucuya taşıyabilmek için HTTP paketleri kullanıyoruz. Buraya kadar hepimiz biliyoruz ;)
Bu paket başlık ve gövdeden oluşuyor ve aralarında sadece boş bir satır var. Genelde verileri gövde kısmına yükleriz. Sunucunun bu verileri parçalara ayırabilmesi(parse edebilmesi) gerekiyor. Bunu yapsın diye gövdeye yazacağımız bilgiyi iki tarafında (istemci ve sunucu) anlayabileceği şekilde oluşturmamız gerekiyor ki buna mesajın biçimi(formatı) diyoruz.
Mesaj formatlarımız neler:
  • XML
  • JSON
  • x-www-form-urlencoded
  • SOAP
  • multipart/form-data


application/x-www-form-urlencoded yapılan talebe text/html tipinde aldığımız cevap:

Encode ve Decode terimleri hep oldu hep olacak çünkü biz harf yazıyoruz ve bunu bilgisayara manyetik değer olarak kaydediyoruz. Ben bilgiyi dairesel ve çizgisel karakterler olarak ekranda görünecek şekilde kaydediyorum bir başkası video da havanın bükülerek ses dalgaları haline getirerek aktarıyor. Demek ki biz mesajları sürekli encode ediyoruz ve o mesajları okurken, dinlerken decode ediyoruz.

isim="Cem Topkaya" verisini internet ortamında transfer etmek için url'nin sonuna eklediğimizi düşünelim http://cemtopkaya.com/kullanici.php?isim=Cem Topkaya siz de farkettinizki soyisim bir boşlukla ayrıldığı için url'nin parçası olamıyor.

7 Ocak 2016 Perşembe

Dosyayı, sunucudaki adından farklı kaydetmek

Amacım DWelle RSS'indeki Almanca mp3 eğitim dosyalarını eğitimin başlığıyla kaydetmek. Elimizdekiler:
Öncelikle mp3 dosyalarına tıkladığımızda kaydetmek için karşımıza gelecek dosya adı şöyle gözüküyor:
Biz ise kaydederken adının title alanına ".mp3" eklenmiş halini Ders 10 - Bir oda rezervasyonu yaptırmak istiyorum.mp3 istiyoruz. Eğer a etiketi içinde href özelliği bir adresi değilde doğrudan dosyayı içeriyor olsaydı kaydetmek için istediğimiz dosya adını download özelliğine yazmamız ve tıklamamız yeterliydi. <a download="logo.png" href="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">Download transparent png</a> RSS içindeki bilgileri çekmek için XPath kullanabilirsiniz. Bunu da Chrome browser ile yapabilirsiniz. Güzel bir anlatım için aşağıdaki resimlere bakabilirsiniz:
Kaynak: http://yizeng.me/2014/03/23/evaluate-and-validate-xpath-css-selectors-in-chrome-developer-tools/ Bizim a etiketlerimiz şöyle olacak:
<a href='http://radio-download.dw.de/Events/podcasts/tur/3803_DKpodcast_dwn1_tur/DWN_Tuerkisch_Serie1_Lektion01-podcast-3803-293588.mp3' data-saveas='Ders 01 - Bu bir şarkı.mp3'>Ders 01 - Bu bir şarkı</a>
data-saveas içinde yeni dosya adı, href içinde ise sunucudaki dosyanın adresini tutacağız. Haydi başlayalım ! Aşağıdaki kodu Chrom'un Console sekmesinde çalıştırdığınızda xpath ile sogulamalar için hızlı ve manipule edebileceğiniz bir fonksiyonu yüklemiş olursunuz.
var xpath = function(xpathToExecute){
  var result = [];
  var nodesSnapshot = document.evaluate(xpathToExecute, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
  for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ ){
    result.push( nodesSnapshot.snapshotItem(i) );
  }
  return result;
}
Bu kod ile indirilecek a etiketlerini oluşturalım
var aDizi = [], 
    arrTitle= xpath("//item/title/text()"), // Tüm title içindekilerini alalım. Bunlar bizim mp3 dosyamızı kaydederken kullanacağımız dosya adlarımız olacak
    arrUrl=xpath("//item/enclosure/@url/text()");// Tüm mp3 dosyalarının URL adreslerini alalım. Önce stream olarak alıp blob olarak saklayacak ve tıkladığımız a etiketlerinden diskimize kaydedeceğimiz akışlar

arrTitle.forEach(function(_title, _idx){
  console.log(_idx)
  console.log(arrUrl[_idx])
  aDizi.push("<a href='"+arrUrl[_idx].value+"'>"+_title+"</a>");
})
console.log(aDizi); // Ekranda görelimki listeyi kopyalayıp html dosyamıza yapıştırarak indireceğiz
jQuery candır. Onu sayfamıza bir ekleyelim.
<html>
<head>
    <script src=http://code.jquery.com/jquery-2.1.4.min.js></script>
Sayfamızda data-saveas propertysi olan a etiketlerinin üstünden geçerek href özelliklerindeki adresten akışı indireceğiz ve Blob'a yazarak tekrar a etiketine bağlayacağız.
    <script type=text/javascript>
        $(function() {
            // iterate over all the items that are marked as saveas
            $('a[data-saveas]').each(function() {
                var $this = $(this);

                // İndirmek istediğimiz adres ve diske hangi isimle kaydetmek istiyorsak, yeni dosya adı
                var target = $this.prop('href'),
                    saveas = $this.data('saveas');

                // kaynaktan dosyayı indirmek için ajax kullanacağız
                $.ajax({
                    url: target,
                    type: 'GET',
                    mimeType: 'text/plain; charset=x-user-defined', 
                    error: function(a, b, c, d) {
                        debugger;
                    }
                }).done(function(data, textStatus, jqXHR) {

                    // VERİYİ ÇEKTİK VE ŞİMDİ BLOB OLARAK SAKLAYACAĞIZ
                    var bufferBos = new Int8Array(new ArrayBuffer(data.length));
                    for (var i = 0; i < data.length; i++) {
                        var charCode = data.charCodeAt(i); // ascii
                        bufferBos[i] = charCode; // gelen her byte'ı 8 bitlik(octet) elemanlar olarak diziye yerleştirelim
                    }
                    // Blob oluşturmak yapıcı olarak veriyi ve verinin tipini vermemiz gerekiyor
                    // new Blob([bufferlanmış veri], { type: mimeString })
                    var mimeString = jqXHR.getResponseHeader('Content-Type');
                    var blob = new Blob([bufferBos], { type: mimeString });


                    // ŞİMDİ DEFAULT HREF BİLGİLERİNE GÖRE KAYDETMEMEK İÇİN DÜZENLEYELİM
                    // Blob içine kaydettiğimiz veriye erişebilmek için URL oluşturacağız.
                    var href = (window.webkitURL || window.URL).createObjectURL(blob);
                    $this.prop({
                        // Tıklandığında download propertysinden yer alan ad ile kaydedecek
                        'download': saveas,
                        'href': href,
                        'draggable': true
                    }).data({
                        // <a href="#" class="dnd" data-downloadurl="MIME_Type:File_Name:Blob_URL"></a>
                        // Örneğin:
                        // <a href="#" class="dnd" data-downloadurl="image/jpeg:Penguins.jpg:https://www.box.net/box_download_file?file_id=f66690"></a>
                        'downloadurl': [mimeString, saveas, href].join(':')
                    });
                });
            });
        });
    </script>
</head>
HTML dosyamıza bağlantılarımızı da ekleyerek tamamlayalım. Sayfa yüklendiğinde tüm a elemanlarının içinde dolaşarak ilgili dosyaları blob halinde browser'da tutacak ve tıkladığımızda belirttiğimiz dosya adıyla kaydetmiş olacağız.
<body>
    0: <a href='http://radio-download.dw.de/Events/podcasts/tur/3803_DKpodcast_dwn1_tur/DWN_Tuerkisch_Serie1_Lektion01-podcast-3803-293588.mp3' data-saveas='Ders 01 - Bu bir şarkı.mp3'>Ders 01 - Bu bir şarkı</a>
    <br />1: <a href='http://radio-download.dw.de/Events/podcasts/tur/3806_DKpodcast_dwn3_tur/00eb5664-podcast-3806-306737.mp3' data-saveas='Ders 26 - Yalnızca birlikte olmak istiyoruz.mp3'>Ders 26 - Yalnızca birlikte olmak istiyoruz</a>
    <br />2: <a href='http://radio-download.dw.de/Events/podcasts/tur/3806_DKpodcast_dwn3_tur/00eb5675-podcast-3806-306736.mp3' data-saveas='Ders 25 - Önce ufak siparişler gelmesini umuyorum.mp3'>Ders 25 - Önce ufak siparişler gelmesini umuyorum</a>
..
...
....

</body>
</html>
Haydi sonucuna bakalım. Önce dosyanın indiğini chrome network sekmesinden görelim:
Şimdide tıkladığımızda ne olduğuna:
Hepsi bu :)

14 Ağustos 2011 Pazar

XML i XSLT ile HTML e çevirmek

Ref: Youtube














28 Mayıs 2011 Cumartesi

Toast androidin MessageBox'ı gibi




package cem.examples.activityswitch;

import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class Activity1 extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(this);
}

@Override
public void onClick(View v) {
String shtml = "İşte "
+ "ekranda"
+ " mesaj"
+ " kutusu";
Spanned sMesaj = Html.fromHtml(shtml);
Toast.makeText(this, sMesaj, Toast.LENGTH_SHORT).show();
}
}



android.widget.Toast

A toast is a view containing a quick little message for the user. The toast class helps you create and show those.

When the view is shown to the user, appears as a floating view over the application. It will never receive focus. The user will probably be in the middle of typing something else. The idea is to be as unobtrusive as possible, while still showing the user the information you want them to see. Two examples are the volume control, and the brief message saying that your settings have been saved.

The easiest way to use this class is to call one of the static methods that constructs everything you need and returns a new Toast object.

24 Aralık 2010 Cuma

Yuvarlak kenarlı genişleyip daralabilir groupbox










<!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">
<head>
<style type="text/css">
/* CONTAINER */
.divContainer
{
color: White;
font-family: Verdana;
font-size: 10px;
width: 400px;
}
/* UST */
.divBaslik
{
border: 0 solid red;
float: left;
height: 12px;
overflow: hidden;
position: absolute;
text-align: left;
top: 4px;
width: 420px;
}
.divUst, .divUstSag, .divUstOrta
{
height: 22px;
width: 22px;
padding: 0;
margin: 0;
}
.divUst
{
width: 100%;
padding-left: 10px;
background: url("solUstKose.png") no-repeat scroll 0 0 transparent;
}
.divUstOrta
{
background: url("ustOrta.png") repeat-x scroll 0 0 transparent;
width: 100%;
float: left;
position: relative;
}
.divUstSag
{
background: url("sagUstKose.png") no-repeat scroll 0 0 transparent;
float: right;
}
/* ORTA */
.divOrta
{
background: url("Orta.png") repeat-x scroll 0 0 Black;
color: White;
padding: 8px 0px 8px 9px;
width: 100%;
display: block;
}
/* ALT */
.divAltSol, .divAltSag, .divAltOrta
{
height: 22px;
width: 22px;
padding: 0;
margin: 0;
}
.divAltSol
{
background: url("solAltKose.png") no-repeat scroll 0 0 transparent;
width: 100%;
padding-left: 10px;
}
.divAltOrta
{
background: url("AltOrta.png") repeat-x scroll 0 0 transparent;
width: 100%;
float: left;
}
.divAltSag
{
background: url("sagAltKose.png") no-repeat scroll 0 0 transparent;
float: left;
}
</style>
</head>
<body>
<div class="divContainer">
<div class="divUst">
<div class="divUstOrta">
<div class="divBaslik" onclick="f_BaslikTiklandi(21)">
Hemoglobin ( g/dl)
</div>
<img src="sagUstKose.png" style="float: right" />
</div>
</div>
<div class="divOrta" id="Div1">
<img src="Charts%5C32440281510%5C21%5C32440281510_21_5_12_2010.png" height="200px" />
</div>
<div class="divAltSol">
<div class="divAltOrta">
<img src="sagAltKose.png" style="float: right" />
</div>
</div>
</div>
</body>
</html>

23 Eylül 2010 Perşembe

JQuery ile SELECT elementine neler yapabiliriz


// Add options to the end of a select
$("#myselect").append("");
$("#myselect").append("");

// Add options to the start of a select
$("#myselect").prepend("");

// Replace all the options with new options
$("#myselect").html("");

// Replace items at a certain index
$("#myselect option:eq(1)").replaceWith("");
$("#myselect option:eq(2)").replaceWith("");

// Set the element at index 2 to be selected
$("#myselect option:eq(2)").attr("selected", "selected");

// Set the selected element by text
$("#myselect").val("Some oranges").attr("selected", "selected");

// Set the selected element by value
$("#myselect").val("2");

// Remove an item at a particular index
$("#myselect option:eq(0)").remove();

// Remove first item
$("#myselect option:first").remove();

// Remove last item
$("#myselect option:last").remove();

// Get the text of the selected item
alert($("#myselect option:selected").text());

// Get the value of the selected item
alert($("#myselect option:selected").val());

// Get the index of the selected item
alert($("#myselect option").index($("#myselect option:selected")));

// Alternative way to get the selected item
alert($("#myselect option:selected").prevAll().size());

// Insert an item in after a particular position
$("#myselect option:eq(0)").after("");

// Insert an item in before a particular position
$("#myselect option:eq(3)").before("");

// Getting values when item is selected
$("#myselect").change(function() {
alert($(this).val());
alert($(this).children("option:selected").text());
});

17 Ağustos 2010 Salı

Arka planlar - Şablon stiller


Linkedin






<!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">
<head>
<title>Untitled Page</title>
<!-- <style>
input, select, textarea, button
{
font-family: Arial,Helvetica, "Nimbus Sans L" ,sans-serif;
}
button, input[type="reset"], input[type="button"], input[type="submit"]
{
background-color: buttonface;
border: 2px outset buttonface;
color: buttontext;
cursor: default;
line-height: normal !important;
padding: 0 6px;
text-align: center;
text-shadow: none;
white-space: pre;
}
input
{
letter-spacing: normal;
text-indent: 0;
text-rendering: optimizelegibility;
text-transform: none;
word-spacing: normal;
}
</style>-->
<style>
input, select, textarea, button
{
font-family: Arial,Helvetica, "Nimbus Sans L" ,sans-serif;
}
</style>
<style>
.btn-primary
{
background-color: #0571A6 !important;
background-position: 0 -400px;
border-color: #045A8B;
color: #FFFFFF !important;
}
.btn-primary:hover
{
background-color: #04608E !important;
background-position: 0 -450px;
border-color: #004A73;
}
.btn-primary:active
{
background-position: 0 -500px;
border-color: #004A73;
}
.btn-primary
{
-moz-border-radius-bottomleft: 3px;
-moz-border-radius-bottomright: 3px;
-moz-border-radius-topleft: 3px;
-moz-border-radius-topright: 3px;
background-image: url(https://www.linkedin.com/scds/common/u/img/sprite/sprite_chrome_v2.png);
background-repeat: repeat-x;
border-style: solid;
border-width: 1px;
cursor: pointer;
font-size: 12px;
line-height: 1.35;
margin: 0;
overflow: visible;
padding: 3px 10px 2px;
text-decoration: none !important;
vertical-align: top;
width: auto;
}
</style>
<style>
.btn-secondary
{
background-color: #CECECE;
background-position: 0 -600px;
border-color: #999999;
color: #666666 !important;
}
.btn-secondary
{
-moz-border-radius-bottomleft: 3px;
-moz-border-radius-bottomright: 3px;
-moz-border-radius-topleft: 3px;
-moz-border-radius-topright: 3px;
background-image: url(https://www.linkedin.com/scds/common/u/img/sprite/sprite_chrome_v2.png);
background-repeat: repeat-x;
border-style: solid;
border-width: 1px;
cursor: pointer;
font-size: 12px;
line-height: 1.35;
margin: 0;
overflow: visible;
padding: 3px 10px 2px;
text-decoration: none !important;
vertical-align: top;
width: auto;
}
.btn-secondary:hover
{
background-color: #B7B7B7;
background-position: 0 -650px;
}
.btn-secondary:active
{
background-color: #C9C9C9;
background-position: 0 -700px;
}
</style>
<style>
.bar
{
-moz-background-clip: border;
-moz-background-inline-policy: continuous;
-moz-background-origin: padding;
background: transparent url(https://www.linkedin.com/scds/common/u/img/sprite/sprite_global_v3.png) no-repeat scroll 0 -470px;
width: 100%;
}
.wrapper
{
color: #000000;
font-family: Arial,Helvetica, "Nimbus Sans L" ,sans-serif;
font-size: 62.5%;
font-size-adjust: none;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1.2;
-moz-background-clip: border;
-moz-background-inline-policy: continuous;
-moz-background-origin: padding;
background: transparent url(https://www.linkedin.com/scds/common/u/img/sprite/sprite_global_v3.png) no-repeat scroll 0 -510px;
height: 39px;
padding: 0 5px;
}
.nav
{
margin-left: 5px;
}
ul, menu, dir
{
-moz-padding-start: 40px;
display: block;
list-style-type: disc;
margin: 1em 0;
}
ol, ul
{
list-style-image: none;
list-style-position: outside;
list-style-type: none;
}
.tab
{
float: left;
font-size: 13px;
line-height: 35px;
margin: 1px 0 0;
margin-left: 10px;
}
</style>
</head>
<body>
<input type="submit" class="btn-primary" value="Submit Address" name="request">
<input type="submit" class="btn-secondary" value="Go" name="ppSearch">
<input type="text" maxlength="20" id="firstName-registration" value="" name="firstName">
<div class="bar">
<div class="wrapper">
<ul class="nav">
<li class="tab" id="nav-primary-home"><a href="http://www.linkedin.com/home?trk=hb_home">
<span>Home</span></a></li>
<li class="tab" id="nav-primary-what"><a href="http://www.linkedin.com/static?key=what_is_linkedin&trk=hb_what">
<span>What is LinkedIn?</span></a></li>
<li class="tab" id="nav-primary-join"><a rel="nofollow" href="/secure/register?trk=hb_join">
<span>Join Today</span></a></li>
<li class="tab" id="nav-primary-auth"><a rel="nofollow" href="/secure/login?trk=hb_signin">
<span>Sign In</span></a></li>
</ul>
</div>
</div>
</body>
</html>


5 Haziran 2010 Cumartesi

HTML içinden XML de arama yapmak


<!-- File Name: Inventory Find.htm -->

<HTML>

<HEAD>

<TITLE>Book Finder</TITLE>

</HEAD>

<BODY>

<XML ID="dsoInventory" SRC="Inventory Big.xml"></XML>

<H2>Find a Book</H2>


Title text: <INPUT TYPE="TEXT" ID="SearchText"> 
<BUTTON ONCLICK='FindBooks()'>Search</BUTTON>
<HR>
Results:<P>
<DIV ID=ResultDiv></DIV>

<SCRIPT LANGUAGE="JavaScript">
function FindBooks ()
{
SearchString = SearchText.value.toUpperCase();
if (SearchString == "")
{
ResultDiv.innerHTML = "<You must enter text into "
+ "'Title text' box.>";
return;
}

dsoInventory.recordset.moveFirst();

ResultHTML = "";
while (!dsoInventory.recordset.EOF)
{
TitleString = dsoInventory.recordset("TITLE").value;

if (TitleString.toUpperCase().indexOf(SearchString)
>=0)
ResultHTML += "<I>"
+ dsoInventory.recordset("TITLE")
+ "</I>, "
+ "<B>"
+ dsoInventory.recordset("AUTHOR")
+ "</B>, "
+ dsoInventory.recordset("BINDING")
+ ", "
+ dsoInventory.recordset("PAGES")
+ " pages, "
+ dsoInventory.recordset("PRICE")
+ "<P>";

dsoInventory.recordset.moveNext();
}

if (ResultHTML == "")
ResultDiv.innerHTML = "<no books found>";
else
ResultDiv.innerHTML = ResultHTML;
}
</SCRIPT>

</BODY>

</HTML>

XML'i TABLE'a sayfalı ilerleyecek şekilde bağla

Normalde ASP.NET ile GridView'a datasource olarak bağlardım. Ama burada daha güzeli var. Hem XML inmiş olur istemciye, hemde sunucu tarafında bir ton yük olmaz. Tabii XML çok büyük olmayacaksa.

Microsoft'un "Adım Adım XML" kitabından güzel bir örnek:


<HTML>

<HEAD>
<TITLE>Book Inventory</TITLE>
</HEAD>

<BODY>

<XML ID="dsoInventory" SRC="Inventory Big.xml"></XML>

<H2>Book Inventory</H2>

<BUTTON ONCLICK="InventoryTable.firstPage()">
|< First Page
</BUTTON>

<BUTTON ONCLICK="InventoryTable.previousPage()">
< Previous Page
</BUTTON>


<BUTTON ONCLICK="InventoryTable.nextPage()">
Next Page >
</BUTTON>

<BUTTON ONCLICK="InventoryTable.lastPage()">
Last Page >|
</BUTTON>
<p>


<TABLE ID="InventoryTable" DATASRC="#dsoInventory"
DATAPAGESIZE="5" BORDER="1" CELLPADDING="5">
<THEAD>
<TH>Title</TH>
<TH>Author</TH>
<TH>Binding</TH>
<TH>Pages</TH>
<TH>Price</TH>

</THEAD>
<TR ALIGN="center">
<TD><SPAN DATAFLD="TITLE"
STYLE="font-style:italic"></SPAN></TD>
<TD><SPAN DATAFLD="AUTHOR"></SPAN></TD>
<TD><SPAN DATAFLD="BINDING"></SPAN></TD>
<TD><SPAN DATAFLD="PAGES"></SPAN></TD>
<TD><SPAN DATAFLD="PRICE"></SPAN></TD>
</TR>
</TABLE>

</BODY>

</HTML>


Bu da XML:

<!-- File Name: Inventory Big.xml -->

<INVENTORY>

<BOOK>
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>

<BOOK>
<TITLE>The Adventures of Tom Sawyer</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>205</PAGES>
<PRICE>$4.75</PRICE>
</BOOK>

<BOOK>
<TITLE>The Ambassadors</TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>305</PAGES>
<PRICE>$5.95</PRICE>
</BOOK>

<BOOK>
<TITLE>The Awakening</TITLE>
<AUTHOR>Kate Chopin</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>195</PAGES>
<PRICE>$4.95</PRICE>
</BOOK>

<BOOK>
<TITLE>Billy Budd</TITLE>
<AUTHOR>Herman Melville</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>195</PAGES>
<PRICE>$4.49</PRICE>
</BOOK>

<BOOK>
<TITLE>A Connecticut Yankee in King Arthur's Court</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>385</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>

<BOOK>
<TITLE>Joan of Arc</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>465</PAGES>
<PRICE>$6.95</PRICE>
</BOOK>

<BOOK>
<TITLE>Leaves of Grass</TITLE>
<AUTHOR>Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>

<BOOK>
<TITLE>The Legend of Sleepy Hollow</TITLE>
<AUTHOR>Washington Irving</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>98</PAGES>
<PRICE>$2.95</PRICE>
</BOOK>

<BOOK>
<TITLE>The Marble Faun</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>473</PAGES>
<PRICE>$10.95</PRICE>
</BOOK>

<BOOK>
<TITLE>Moby-Dick</TITLE>
<AUTHOR>Herman Melville</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>724</PAGES>
<PRICE>$9.95</PRICE>
</BOOK>

<BOOK>
<TITLE>Passing</TITLE>
<AUTHOR>Nella Larsen</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>165</PAGES>
<PRICE>$5.95</PRICE>
</BOOK>

<BOOK>
<TITLE>The Portrait of a Lady</TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>256</PAGES>
<PRICE>$4.95</PRICE>
</BOOK>

<BOOK>
<TITLE>Roughing It</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>324</PAGES>
<PRICE>$5.25</PRICE>
</BOOK>

<BOOK>
<TITLE>The Scarlet Letter</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>253</PAGES>
<PRICE>$4.25</PRICE>
</BOOK>

<BOOK>
<TITLE>The Turn of the Screw</TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>384</PAGES>
<PRICE>$3.35</PRICE>
</BOOK>
</INVENTORY>

9 Ocak 2010 Cumartesi