25 Aralık 2014 Perşembe

SOAP ile REST Web Servislerin Farkları

Web Servisler uygulamalar tarafından kullanılan metodların bir sunucu üzerinde çalıştırılıp değer döndürmesini sağlayan yapılardır. Böylece farklı uygulamalarda veya farklı teknolojilerle kullanabileceğimiz metodları bir kere yazıp platformdan bağımsız bir şekilde çalıştırabiliriz.
Web servis mimarisinin temeli HTTP üzerine kurulmuştur. Yani genel olarak web servise bir istek gelir ve web servis bu isteği yapıp bir sonuç döndürür. Web servisin bu işlemi yapabilmesi için tanımlanmış farklı yöntemler bulunmaktadır. Bu yazıda bahsedilecek olan yapılardan biri SOAP protokolü diğeri ise REST’dir.
SOAP (Simple Object Access Protocol) uygulamalar ile web servislerin bilgi aktarımını sağlayan XML tabanlı bir protokoldür. Yani web servise giden bilgi XML olarak gönderilir, web servis bu bilgiyi yorumlar ve sonucunu XML olarak geri döndürür. SOAP tabanlı bir web servisin, gönderilen XML verisini nasıl yorumlayacağının tanımlanması gerekir. Bu web servis tanımlaması WSDL standardı ile yapılır.

REST mimarisinde ise işlemler resource kavramıyla yapılır. Resource URI ile tanımlanır ve bir metod tanımlaması veya bir değişken olabilir. Yani REST’te SOAP’ta olduğu gibi XML yardımıyla metodlar çağırılmaz bunun yerine o metodu çağıracak URIler ile web servise HTTP protokolüyle istek yapılır. Böylece REST için WSDL gibi bir tanımlama diline ihtiyaç kalmaz işlemler tamamen HTTP metodları üzerinden yapılır. Örneğin, bir web servisin metodunu SOAP ile “getProductName” şeklinde çağırırken REST ile “/products/name/1″ URI’si ile çağırabiliriz. Ayrıca RESTin döndürdüğü veri tipinin de XML olması zorunlu değildir JSON, XML, TXT, HTML gibi istenen veri türünde değer döndürülebilir.

Yazının devamı;

SOAP ile REST Web Servislerinin Farkları

 

 

Sakai'ye Yeni Modül Eklemek

Sakai Uzaktan Eğitim Sistemini Kullanırken yeni araçlara ihtiyaç duyabiliriz. Bu araçları sisteme eklemek için aşağıdaki yöntemi deneyebilirsiniz;

Sakai Source klasörünün bulunduğu dizine "contribs" adında yeni bir dizin oluşturulur ve yeni modülün kaynak kodu buraya indirilir.

Sakai için yazılmış olan modülleri "https://source.sakaiproject.org/contrib/" adresinden indirebilirsiniz.

Daha sonra maven ile derleyip mvn -Dtomcathome = "" sakai:deploy komutu ile Tomcat'in  bulunduğu yere deploy etmemiz gerekiyor.

Kaynak kodunu indirip derlediğimiz modülü Sakai'de bir siteye eklemek içinse;

eklemek istediğimiz site seçilir,
"tools" sekmesine girilip yukarda görünen "New Tool" butonu ile gelen liste içinde eklediğimiz Tool bulunur ve işaretlenir.

Böylece Sakai'de kullanmak üzere yeni bir aracı; kaynak kodlarını indirip, derleyip, Tomcate deploy ettikten sonra siteye eklemiş olduk.

Eklediğimiz Tool için bir de configurasyon yapmamız gerekebilir. Bu configurasyonlar genelde indirdiğiniz kaynak kodun içinde readme dosyalarında bulunuyor.

MYSQL Parolası Değiştirme

Linux işletim sisteminde Mysql root parolasını / şifresini unuttum ne yapmalıyım diyorsanız aşağıdaki komutu kullanarak root kullanıcınız için yeni bir parola belirleyebilirsiniz. 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yeni_parola');

6 Aralık 2014 Cumartesi

PHP Fat Free Framework'ü Apache'de Subfolder'da kurmak için örnek .htaccess Dosyası



# Enable rewrite engine and route requests to framework


RewriteEngine On


# Some servers require you to specify the `RewriteBase` directive


# In such cases, it should be the path (relative to the document root)


# containing this .htaccess file


#


RewriteBase /dizin_ismi/


RewriteRule ^(lib|tmp)\/|\.(ini|php)$ - [R=404]


RewriteCond %{REQUEST_FILENAME} !-l


RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d


RewriteRule .* /dizin_ismi/ [L,QSA]


RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]



18 Mart 2014 Salı

Design Patterns (Tasarım Şablonları) nedir?

Merhaba arkadaşlar,

Bugünden itibaren Nesne Tabanlı Programlamada işleri yarı yarıya kolaylaştıran, daha önceden karşılaşılan problemler üzerinde kafa yorularak taslak haline getirilmiş yapılar olan Tasarım Şablonları (Design Patterns) yazı dizisine başlıyoruz. Hepimize hayırlı olsun :)

Design Patterns Nedir?
Yukarıda da bahsettiğim gibi Design Patterns sıklıkla karşılaşılan problemlere genel çözümler bulmak için oluşturulmuş yapılardır ve tecrübelere dayanır. Bu yüzden sağlam bir yapı oluşturmak için kullanılması tavsiye edilir.

Oluşturmak istediğimiz hemen her dizayn için bir design pattern bulabiliriz veya birkaç patterni birleştirerek problemimize daha uygun yapılar elde edebiliriz. Yapmamız gereken şey sadece hangi şablon ya da şablonların problemimize daha uygun olduğuna karar vermek olacaktır.

Tasarım şablonlarının kullanımında Nesne Tabanlı Programlamanın birçok özelliği kullanılır bu yüzden tasarım şablonlarını daha rahat kavramak için coupling ve cohesion, inheritence, interface, polymorphism gibi konulara hakim olmanız önerilir.

Tasarım şablonları birkaç alt başlık altında incelenir. Bunlar;

Creational ; objelerin oluşturulması ile ilgili tasarımlar,

Structural ; yazılımın genel yapısını kolaylaştıran tasarımlar,

Behavioral ; objelerin birbirleri ile ilişkilerini ve davranışlarını düzenleyen tasarımlar.

Toplamda yaklaşık 25 tasarım şablonu bulunmaktadır. En çok kullanılanlar ve benim bahsedeceklerim şimdilik aşağıdakiler;

1- Strategy pattern (Behavioral)

2-Observer Pattern (Behavioral)
3- Decorator Pattern (Structural)
4-Factory Pattern (Creational)

5-Singleton Pattern (Creational)
6-Command (Behavioral)
7-Adapter (Structural)
8-Facade (Structural)
9-Template (Behavioral)
10-Iterator(Behavioral)

11-Composite (Structural)

12-State (Behavioral)
13-Compound (Patternlerin birlikte kullanılması)

Design Patterns konusuna geçmeden önce ileride çok kullanacağımız ve bu konuyu daha rahat anlamamızı sağlayacak bir yapıdan bahsetmek gerek diye düşündüm ve UML'den biraz bahsetmek istedim.

UML nedir?

UML (Unified Modeling Language), objelerin tasarımı aşamasında kullanılan bir dildir. Objeleri şekillerle ifade ederek object oriented dizaynımızı daha rahat oluşturmamıza ve oluşturduğumuz yapıların başkaları tarafından kolayca anlaşılmasına olanak sağlar. Bir classın UML ile gösterimi aşağıdaki gibidir;

kedi

En başta class adı, daha sonra sınıfa ait değişkenler, son olarak da classın metodları gösterilir. UML'de kullanılan " - " simgesi değişkenin private olduğunu, "+" simgesi public olduğunu, "#" ise protected olduğunu gösterir. Değişkenler için önce değişkenin ismi, ":" simgesi ve daha sonra değişkenin tipi belirtilir. Metodlarda ise, metod adı, parantez içinde metodun parametreleri (parametrenin adı : parametre tipi) şeklinde belirtilir.

Sonuç olarak, bir Uml diyagramına baktığımızda, bu classın kodlarını istediğimiz dilde yazabiliriz. Hatta Uml'den koda dönüştüren araçlar da mevcuttur.

Bu şekildeki UML'i aşağıda linkini verdiğim aracı kullanarak oluşturdum.

http://staruml.sourceforge.net/en/

Bir sonraki yazıda Strategy Pattern'i anlatmaya çalışacağım. Herkese kolay gelsin...

14 Mart 2014 Cuma

Android - R cannot be resolved to a varIable hatası



Geçenlerde Android ile birşeyler yapayım dedim Linux 64 bit sistemime ADT kurdum. Fakat bir de baktım ki yeni oluşturduğum projelerde "R cannot be resolved a variable" hatasını alıyorum. kütüphane ekle çıkart derken internette bu aşağıdaki komutu buldum denedim ve artık düzgün çalışıyor.
Eğer siz de 64-bit Ubuntu kullanıyorsanız ia32-libs 'i aşağıdaki gibi sisteminize kurduğunuzda "R cannot be resolved a variable" hatasını almayacaksınızdır herhalde...
sudo apt-get install ia32-libs

20 Ocak 2014 Pazartesi

SAKAI KURULUM ADIMLARI (LINUX - UBUNTU)

Kurmadan önce özet geçmek gerekirse Sakai Uzaktan Eğitim Sistemini çalıştırmak için kurmamız ve yapmamız gerekenler şöyle;

  1. Java Kurulumu

  2. Tomcat Kurulumu ve Konfigürasyonu

  3. Mysql Kurulumu

  4. Mysql Connector Yükleme

  5. Maven Kurulumu ve Konfigürasyonu

  6. Subversion Kurulumu

  7. Sakai Database'ini oluşturma

  8. Sakai Yükleme ve Konfigürasyonu

  9. Derleme ve Deploy


1. Java

Eğer Open jdk varsa kaldırıyoruz.

sudo apt-get purge openjdk*

Daha sonra aşağıdaki adımları uygulayarak oracle java yı kuruyoruz.

sudo add-apt-repository ppa:eugenesan/java
sudo apt-get update
sudo apt-get install oracle-java7-installer


Ben bu aşamada şöyle bir hata almıştım;
Oracle JDK 7 is NOT installed.
dpkg: error processing oracle-java7-installer (--configure):
subprocess installed post-installation script returned error exit status 1
Setting up lame (3.99.3+repack1-1) ...
Errors were encountered while processing:
oracle-java7-installer
E: Sub-process /usr/bin/dpkg returned an error code (1)

Çözümünü araştırdım ve şu şekilde buldum;
sudo rm /var/lib/dpkg/info/oracle-java7-installer*
sudo apt-get purge oracle-java7-installer*
sudo rm /etc/apt/sources.list.d/*java*
sudo apt-get update
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

2. Tomcat

Uygun tomcat sürümünü indirmemiz gerekiyor. Son versiyonu burada mevcut;

http://tomcat.apache.org/download-70.cgi

Fakat benim deneyip çalıştırdığım sürüm 7.0.35 . Test edildi onaylandı ;)

Buradan indirebilirsiniz :  apache-tomcat-7.0.35.tar.gz

Şimdi tomcati sıkıştırılmış bir biçimde indirdiğimize göre açmamız gerekecek. Bunu şu şekilde yapabiliriz;


sudo tar zxvf home/.../Downloads/apache-tomcat-7.0.35.tar.gz /opt/tomcat



Bu komut ile Downloads içerisine indirmiş olduğumuz tomcat dosyasını opt içerisinde oluşturduğumuz tomcat dizinine açmış oluyoruz.

Şimdi tomcat üzerinde birkaç değişiklik yapmamız gerekiyor.
sudo gedit /opt/tomcat/bin/setenv.sh

komutuyla bin dizini altında setenv.sh dosyasını oluşturup açıyoruz ve içine aşağıdaki komutu yapıştırıyoruz.
export JAVA_OPTS="-server -Xmx1028m -XX:MaxPermSize=320m -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dsun.lang.ClassLoader.allowArraySyntax=true"

Şimdi de aşağıdaki işlemleri yapıyoruz.

Conf dizini içindeki catalina.properties dosyasını açıyoruz. Bu şekilde yapılabilir;
sudo gedit /opt/tomcat/conf/catalina.properties

Sonra;
“common.loader=…” ile başlayan satırın sonuna şu kodu ekliyoruz;

,${catalina.base}/common/classes/,${catalina.base}/common/lib/*.jar

“shared.loader=…” ile başlayan satıra şunu;

${catalina.base}/shared/classes/,${catalina.base}/shared/lib/*.jar

“server.loader=…” ile başlayan satıra

${catalina.base}/server/classes/,${catalina.base}/server/lib/*.jar

bu ifadeleri ekliyoruz. Ve tomcat dizinine gelip aşağıdaki şekilde gerekli klasörleri oluşturuyoruz.

mkdir -p shared/classes shared/lib common/classes common/lib server/classes server/lib

Şimdi tomcatin kullanıcı ayarlarını yapacağız. Kullanıcı türleri oluşturup bu türen kullanıcılar üretip şifrelerini vereceğiz.
sudo gedit /opt/tomcat/conf/tomcat-users.xml

komutu ile dosyayı açıyoruz ve aşağıdaki gibi düzenliyoruz. Bu kodların bir kısmı zaten yorum şeklinde dosyanın içinde mevcut yorumları kaldırıp düzenleyebiliriz.
<role rolename='tomcat'/>
<role rolename='admin-gui'/>
<role rolename='manager-gui'/>
<role rolename='role1'/>
<user password='tomcat' roles='tomcat,role1' username='both'/>
<user password='tomcat' roles='role1' username='role1'/>
<user password='tomcat' roles='admin-gui,manager-gui,manager,admin' username='tomcat'/>

Değişikliklerin kaydedilmesi için tomcati aşağıdaki komutlar ile yeniden başlatıyoruz;
sh /opt/tomcat/bin/shutdown.sh
sh /opt/tomcat/bin/startup.sh

3. Mysql

mysql --help komutu ile sistemde daha önceden mysql kurulu olup olmadığını kontrol edelim.
Eğer yoksa aşağıdaki komut ile mysql i sistemimize kuruyoruz.

Kurulum aşamasında şifre istendiğinde root şifresini "mysqlpwd1" olarak verebilirsiniz. Aşağıdaki adımlarda bu şifre ile konfigürasyon yapılacaktır.
sudo apt-get install mysql-server mysql-client libmysqlclient15-dev

apache ve phpmyadmini de şu şekilde kuruyoruz;
sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert phpmyadmin

4. Connector

Mysql ile uygun olan connectorü indirip tomcate eklememiz gerekiyor. Bu linkten uygun versiyonu indirebiliriz. Ben 5.1.28 i indirmişim.

http://dev.mysql.com/downloads/connector/j/5.0.html

tar.gz dosyasını indirip bulunduğu yere açıyoruz. İçindeki mysql-connector-java-version.bin.jar dosyasını tomcat/common/lib e kopyalıyoruz.
sudo cp /home/../Downloads/mysql-connector-java-version/mysql-connector-java-version.bin.jar /opt/tomcat/common/lib

5. Maven

Maven2'yi sisteme kurmak için;



sudo apt-get install maven2




Kurulduktan sonra maven repository için bir dizin oluşturacağız. Home dizinine gidiyoruz

cd home/zeynep/



mkdir -p .m2/repository




.m2 klasörünün içine settings.xml adlı dosyayı oluşturuyoruz.



gedit .m2/settings.xml



Açılan dosyanın içine aşağıdakileri kopyalıyoruz;
<settings xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>tomcat7</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<appserver.id>tomcat7</appserver.id>
<appserver.home>/opt/tomcat</appserver.home>
<maven.tomcat.home>/opt/tomcat</maven.tomcat.home>
<sakai.appserver.home>/opt/tomcat</sakai.appserver.home>
<surefire.reportFormat>plain</surefire.reportFormat>
<surefire.useFile>false</surefire.useFile>
</properties>
</profile>
</profiles>
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>proxy.uma.ac.za</host>
<port>80</port>
<username>dnsusername</username>
<password>pass</password>
<nonProxyHosts>localhost</nonProxyHosts>
</proxy>
</proxies>
</settings>

Localde kuracak olanlar proxies taginin olduğu kısmı kaldırabilirler. Ben localde kurduğum için o kısmı eklemedim.
6. Subversion

Subversion ile daha sonra sakai kaynak kodlarını indireceğiz. Kurmak için;

$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn


7. Database

Sakainin kullanacağı database'i oluşturmak için aşağıdaki adımları izliyoruz;(yukarda root şifresini mysqlpwd1 vermiştik.)

mysql -uroot -pmysqlpwd1
create database sakai default character set utf8;
grant all privileges on sakai.* to 'sakai'@'localhost' identified by 'ironchef';
flush privileges;
quit


8. Sakai yükleme ve Konfigürasyon

Önce /opt dizinine geliyoruz ve aşağıdaki komutla sakai kaynak kodlarını opt altında sakai klasörüne indiriyoruz.
svn co https://source.sakaiproject.org/svn/sakai/tags/sakai-2.9.2/ sakai

Sakai için tomcat dizininde klasör oluşturuyoruz.
mkdir /opt/tomcat/sakai

Oluşturduğumuz yeni klasöre bir setting dosyası yapacağız bu dosyayı da sakainin kaynak kodlarının bulunduğu yerden kopyalayıp içinde düzenlemeler yapacağız
mv config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties /opt/tomcat/sakai/sakai.properties


Bu dosyanın içinde sakainin kullanacağı database ve bunun kullanıcı adı parolası gibi değerler tutuluyor. Bunları kendimize göre ayarlamamız gerekiyor.



sudo gedit /opt/tomcat/sakai/sakai.properties



 

Dosyayı yukardaki gibi açtıktan sonra içindeki DATABASE kısmını bulup bunun altındaki şu değerleri değiştireceğiz;

username@javax.sql.BaseDataSource=sakai

password@javax.sql.BaseDataSource=ironchef

(Bu değerleri sakai database ini oluştururken vermiştik.)

Bu dosyanın içinde ayrıca şu değişikliği de yapacağız. Sakai öntanımlı olarak HSQLDB kullanıyormuş biz bunu MYSQL e çevireceğiz.
Bunun için dosyanın içindeki Database kısmının altında HSQLDB yazan yerleri yorum satırı yapıp. MYSQL kısmındaki yorumları kaldırıyoruz.

Son hali şu şekil oluyor;
# The database username and password. The defaults are for the out-of-the-box HSQLDB.
# Change to match your setup. Do NOT enable access to your database without a password.
username@javax.sql.BaseDataSource=sakai
password@javax.sql.BaseDataSource=ironchef

# HSQLDB settings (DEFAULT)
#vendor@org.sakaiproject.db.api.SqlService=hsqldb
#driverClassName@javax.sql.BaseDataSource=org.hsqldb.jdbcDriver
#hibernate.dialect=org.hibernate.dialect.HSQLDialect
#validationQuery@javax.sql.BaseDataSource=select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
# Two hsqldb storage options: first for in-memory (no persistence between runs), second for disk based.
#url@javax.sql.BaseDataSource=jdbc:hsqldb:mem:sakai
#url@javax.sql.BaseDataSource=jdbc:hsqldb:file:${sakai.home}db/sakai.db

# MySQL settings
vendor@org.sakaiproject.db.api.SqlService=mysql
driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sakai?useUnicode=true&characterEncoding=UTF-8
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED

 

9. Derleme ve Deploy

Şimdi tüm ayarlarımızı yapmış bulunuyoruz...
Bu aşamadan sonra derleme işlemine başlıyoruz
opt/sakai/master dizinine geliyoruz



mvn clean install




komutu ile öncelikle master projesini derlemiş olduk

Şimdi cd .. ile sakai dizinine geri dönelim ve aşağıdaki komutu çalıştırarak tüm kodların derlenmesini ve tomcate deploy edilmesini sağlayalım.



mvn clean install sakai:deploy -Dmaven.tomcat.home=/opt/tomcat -Dsakai.home=/opt/tomcat/sakai/



Bu aşama biraz zaman alabilir. İşlemin sonunda BUILD SUCCESS sonucunu aldıysanız artık çalıştırabilirsiniz.



sh /opt/tomcat/bin/shutdown.sh

sh /opt/tomcat/bin/startup.sh



komutları ile tomcat'i tekrar başlatalım.
Tomcat'in başlaması da biraz uzun sürebilir
3 4 dakika bekledikten sonra localhost:8080/portal adresinden Sakai uygulamasına ulaşmış olacaksınız.(inş ;) )

(localhost:8080/portal adresinden giremezseniz 127.0.0.1:8080/portal adresini de denemeyi unutmayın bu yüzden hata alanlar oluyormuş localleri farklıysa demekki )

Bir de sakai uygulaması açıldığında sisteme giriş yapmak için öntanımlı olarak kullanıcı adı ve şifre "admin" dir.

17 Ocak 2014 Cuma

Specıal Mücver Tarifi

Bu mücver sizin bildiğiniz mücverlerden değil.. Zaten "mücver mi?" diye soracak olursak o konuda benim de şüphelerim var ama güzel bişey oldu sonuçta...

Evde rendelenmiş havuç kabak ve mısır karışık halde bulunuyordu ne yapsam ne etsem derken bunu buldum..

(Bi evde neden rendelenmiş havuç kabak ve mısır karışık halde bulunur derseniz Sütlü mısır çorbası tarifine bakınız... )

20140101_192121

MALZEMELER

-1 kabak

-1 havuç

-Konserve mısır

-Tuz,karabiber

-2 Yumurta

-Un

-Kızartmak için yağ

-İstenirse dereotu da katılabilir

YAPILIŞI

  • Kabak ve havuç rendelenir.

  • Yağ hariç tüm malzemeler karıştırılır, bulamaç haline getirilir

  • Daha sonra geniş bir tavaya kaşık kaşık konarak kızartılır.

Dereotlu Peynirli Muffin Tarifi

20131102_161022

Malzemeler

-3 yumurta

-1 çay bardağı sıvıyağ

-2 kaşık yoğurt

-1 paket kabartma tozu

-8 10 kaşık un

-Beyaz peynir ve kaşar

-Dereotu

-Tuz

Yapılışı :

  • Yumurta ve toz şeker karıştırma kabına alınır. ve 2 3 dakika çırpılır (köpük köpük olana kadar)

  • İçine yağ yoğurt ve tuz eklenir, karıştırılır.

  • Un ve kabartma tozu karıştırılıp karışıma eklenir.

  • İçine peynir, isteğe bağlı kaşar peyniri ve dereotu katılır.

  • Kalıpların yarısına kadar dökülerek 240 derecelik fırına verilir.  Yaklaşık yarım saatte pişer.

Muffin Tarifi ( Resimli )

Merhaba bu tarifler hep lazım oluyodu bulamıyodum artık yaptıklarımı halka arz etmek istedim çok mühim tarifler çünkü :P

(Resimli) ibaresi önemli bişey galiba heryerde yazıyodu benim neyim eksik diyerekten ben de yazdım.
Bi de bu tarifin tuzlu (dereotlu peynirli) olanı da var tarifi için hobilerim -> yemek tarifleri bölümüne bakabilirsiniz.

20131102_172820 20131102_173716

Muffin Tarifi
-3 yumurta

-1 su bardağı toz şeker

-1 çay bardağı sıvıyağ

-1 buçuk çay bardağı süt

-1 paket şekerli vanilin

-1 paket kabartma tozu

-8 10 kaşık un

Yapılışı :

  • Yumurta ve toz şeker karıştırma kabına alınır. ve 2 3 dakika çırpılır (köpük köpük olana kadar)

  • İçine yağ süt ve vanilin eklenir, karıştırılır.

  • Un ve kabartma tozu karıştırılıp karışıma eklenir.

  • İçine isteğe göre damla çikolata, fındık, ceviz, hindistan cevizi v.b. katılır.

  • Kalıpların yarısına kadar dökülerek 240 derecelik fırına verilir. 20 adet civarı çıkıyor. Yaklaşık yarım saatte pişer.

  • Çıktıktan sonra üzeri de süslenebilir. Bu kısım hayal gücüne kalmış.
    Bunun gibi :)20140115_211231