Wednesday, December 8, 2010

java random access file rotating

This code provides a file which is random access,
rotating by means firstly fixed file size
and after the reaching the limit
it'll delete first lines and append new content at the end of file.

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Calendar;

public class RotateRAF
{
public static int Size = 2048;
public RotateRAF(String message, String fileName) throws IOException
{
Calendar cal = Calendar.getInstance();
String time = cal.getTime().toString();
RandomAccessFile raf = new RandomAccessFile(fileName,"rw");
if(raf.length() <= Size)
WriteToRAF(fileName, time, message);
else{
deleteRAF(fileName);
WriteToRAF(fileName, time, message);
}
}
public static void WriteToRAF(String fileName,String time,String message)
throws IOException
{
try
{
RandomAccessFile raf = new RandomAccessFile(fileName,"rw");
raf.seek(raf.getFilePointer());
raf.seek(raf.length());
raf.writeBytes(time);
raf.writeBytes(" ");
raf.seek(raf.length());
raf.writeBytes(message);
raf.seek(raf.length());
raf.writeBytes("\n");
} catch (FileNotFoundException e)
{e.printStackTrace();}
}

public static void deleteRAF(String fileName) throws IOException
{
try
{
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
long pos = 0;
while ( raf.readLine() != null) {
//Create a byte[] to contain the not deleted contents of the file.
// and truncate the file to the pos. of deleted the contains.
byte[] notDeleted = new byte[(int) (raf.length() - raf.getFilePointer())];
raf.read(notDeleted);
raf.getChannel().truncate(pos);
raf.seek(pos);
raf.write(notDeleted);
pos += raf.getFilePointer();
return;
} catch (FileNotFoundException e)
{e.printStackTrace();}
}

public static void main(String args[]) throws IOException
{
for(int i=0;i<=10;i++){
RotateRAF("Computers are useless. They can only give you answers.Pablo Picasso",
"rotateRAF.txt");
RotateRAF("The Internet? Is that thing still around?.Homer Simpson",
"rotateRAF.txt");
}
}

}

Sunday, September 26, 2010

PL control flow structure categories

Control flow is executed or evaluated by a program which would be imperative or declarative via individual statements,instructions, or function calls. The control flow concept is one of the most important issue of programming language design. The control flow issue consist of eight categories. The categories are below:
1. sequencing: statements executed specified order in general in accordance with the code text.
2. selection: using condition constructs such as (also popular) if and case (switch) statements. It would depending on run-time condition.
3. iteration: it provides repeatly execution of a part of code. It can be work absolute number or till a case that the condition is true in run-time. Terms used in example for, do-while, repeat constructs.
4. procedural abstraction: a subroutine which as an example control construct but it is not simple collection of the construct.
5. recursion: recursion on the other hand, self-referential subroutines that the approach to save the information of evaluated partially instances.So,it needs a stack structure. Due to the this feature of the computational model the expression is defined in terms of itself.
6. concurrency: simple means paralellism,more than one part of program are to be executed at the same time.
7. exception handling and speculation: exception handling is when the condition is false, an execution handling works either remainder protected program fragment or the whole protected fragment. The second is speculation.
8. nondeterminacy: The ordering or any choosing of statements is not specified.


and also available details.PLP


---------------------------------------------------------------------------
sirin

Saturday, July 17, 2010

bootstrap devam

bootstrap nedir? ne değildir?

bootstrap

rst to html:
rst2html foo.rst > foo.html





---------------------------------------------------------------------------
sirin

Thursday, July 8, 2010

bootstrap için ön hazırlık

bootstrap için gereken araçlardan bir kesit;



binutils
makine dili derleme ve bağlama aracıdır. içerdiği başlıca araçlar:

ar: arşiv dosyası oluşturmak, değiştirmek ve arşivden bir şey açmak için kullanılır.

as: taşınabilir bir gnu assembler.

ld: object ve arşiv dosyalarını birleştirir, bu dosyaların içerdiği verileri konulması gereken yerlere koyar (relocate) ve sembol referanslarını bağlar. genelde derlemenin son adımında ld çalışır.
nm: object dosyasındaki sembolleri listeler.
objdump: object dosyalarındaki bilgileri gösterir.
ranlib: arşiv dosyasındaki içerik için bir index oluşturur ve arşivde tutar.

pax-utils

ELF32/64 dosyaları üzerinde güvenlik de dahil çeşitli denetimler yapabilen araçtır.


strace

çalışan bir proses ile ilşkili sistem çağrılarını gösteren araç (bu proses tarafından alınan veya çağrılan sistem çağrılarını, bu çağrılara verilen parametreleri ve dönüş değerlerini gösteren bir hata ayıklama aracıdır.)



CFLAGS

gcc ve glibc'nin derleme sırasında sistemin bazı özelliklerini yönetmek için kullandığı bayraklardır.

-D_FORTIFY_SOURCE=2

özellikle string kullanılan yerlerde güvenlik açığına karşın kullanılır.

-O2

yazılımın boyutunu çok fazla büyütmeyen ve hata ayıklamayı engellemeyen eniyileştirmeleri açar.

-fomit-frame-pointer

gcc'nin üretilen kodun çerçeve gösterici onarımını (frame pointer maintenance) atlamasını sağlar, kodun daha küçük ve hızlı olmasını sağlar.

-march

gcc'nin belli bir mimari için eniyileştirme yapmasını sağlar.

-mtune

gcc'nin eski sürümlerindeki -mcpu, -march bayrağına benzer ve aynı seçeneklere sahiptir.

-fstack-protector

yığın koruma sistemi yığın üzerindeki değişkenlerin yerini değiştirerek tampon bellek olarak kullanılan değişkenlerin taşma durumunda diğer değişkenleri etkilemesini önler.

-pipe

gcc'nin derleme yaparken geçici dosyalar üretmemesini sağlar.

LDFLAGS
bağlayıcının (linker) sistemin bazı özelliklerini yönetmek için kullandığı bayraklardır.

--hash-style

linker'ın hash tablosunun tipini belirler.

--as-needed

linker'a üretilmiş olan çalıştırılabilir sonuç dosyası ya da başka bir kitaplıklardan , kitaplıkta bire bir kullanılmış olanları bağlamasını söyler.

--sort-common

linker'a uygun çıkış bölümlerine yerleştirilmiş simgeleri boyutuna göre sıralamasını söyler. bu bayrak simgeler ile sıralanma kısıtları arasındaki uçurumu önler.

-Wl,-z,relro

en son oluşturulan ELF için salt-oku bir relocation tablosu ayırır. -z parametresi tüm relocationların çalışma zamanında çözümlenmesini sağlar.

-Bsymbolic-functions

dinamik bir kitaplık oluşturulurken, eğer kütüphane içerisinde global fonksiyon simgeleri varsa referansları bunlara bağlamaya yarar.

-no-unneeded

bu bayrak kullanılarak inşa (build) sırasında tüm durumlar ele alınır.


sirin

----------------------------------------------------------------------------------------------------------------------------------------------------------------

linux man sayfaları

http://tr.pardus-wiki.org/NASIL:Bayraklar_donanmış_cafcaflı



Friday, June 25, 2010

pardus yaz stajı ilk hafta

Pardus yaz stajı ilk haftası alınan eğitimlerden derlenenler.
Pardus nedir?
Pardus, bir sistemin geri planda nasıl çalıştığı hakkında fikir sahibi olmasına gerek duyulmadan sadece istenilen amaca uygun uygulamayı kullanan olarak tanımlayabileceğimiz bilişim okur-yazarı kullanıcıların temel masaüstü ihtiyaçlarını hedefleyen, var olan Linux dağıtımlarının kavram, mimari ve kod olarak üstün yönlerini kullanan kurulum, yapılandırma ve kullanım kolaylığı sağlamak üzere UEKAE tarafından geliştirilen bir GNU/Linux dağıtımıdır.

ÇOMAR nedir?
ÇOMAR, açılımı COnfiguration MAnageR olan, programlar arası uyum sorunlarını azaltmak, kullanıcının ayar yapma gerekliliğini en aza indirmek amacıyla geliştirilen bir yapılandırma yönetim sistemidir. Yapılandırma sorunları birden fazla uygulamanın birbiriyle uyumlu çalışmasının gerektiği yerde bir de tek bir uygulamanın yapılandırılması sırasında ortaya çıkanlar olarak temelde iki parçadan oluşur. ÇOMAR'ın kullanıcıya faydası kurulan uygulamaları elle ayarlamak, sistemin bildiği ve bulabildiği bilgileri elle girmek ve bunları yapmak için gerekli belgeleri okuyup zaman kaybetmek yerine ÇOMAR'ın yapıyor olamasıdır. Sistemi sürekli kontrol ettiği için ayar sorunları olan programların kullanıcıyı engellemesini önlemektedir.

Müdür nedir?
Müdür, Pardus'un init sistemidir. Açılış sırasında sistem saatini donanım saatiyle senkronize ettikten ve temel ağ ayarlarını da yaptıktan sonra, Pardus'un sistem yapılandırma aracı olan Çomar'ı başlatır. En son olarak Çomar'a servisleri çalıştırması komutunu verir.Bu iki sistemin birlikte çalışması ile açılış süreci oldukça hızlanmaktadır.
ayrıca;
YALI Pardus sisteminin kurulmasını sağlayan araçtır.

Açılış yöneticisi, ağ yöneticisi, disk yöneticisi, geçmiş yöneticisi, güvenlik duvarı yöneticisi, kullanıcı yöneticisi, servis yöneticisi, paket yöneticisi, sistem yöneticisi, ekran ayarları, göç aracı, kaptan ve sistem bilgileri gibi özgün Pardus bileşenleri de bulunmaktadır.

Pardus paket ve kaynak depoları nedir?

Pardus kaynak kod depoları ve paket depoları svn.pardus.org.tr altında bulunmaktadır. Bu depolarda dağıtımların sürümleri tarafından kullanılan devel ve stable ana dalları ve kararlı dal etikletleri bulunur.


Pardus paket depoları devel: programların en son ve ve buna oranla kararsız sürümlerinin paketlerini içeren dizindir. stable: programların karalı hallerindeki sürümlerin paketlerini içeren dizindir. 2008,2009,2011: dağıtım sürümlerinin paketlerini içeren dizinlerdir. corporate2: kurumsal dağıtım paketlerini içeren dizindir.

uludag paket deposu: (ulusal dağıtım) Pardus geliştiricilerinin geliştirdiği yazılımları ve görsel tasarımcıların ürettiği görselleri içeren depodur.
trunk: programların geliştirildiği dizindir.
branches: hali hazırda bir program farklı bir yol izlenerek geliştirilecekse bu alanda geliştirilir.


Paket nedir?
Bir programın derlenmesinden kurulmasına kadar geçen sürecin otomatik olarak yapılmasını sağlayan bir yapılacaklar listesine paket denir. PiSi Pardus'un paket kurma programı bir paket içerisinde yer alan bilgileri kullanarak; derleme öncesi ayarları yapar, programın kaynak kodunu paket içerisinde verilen adresten indirir, yama varsa kodu yamalar, kodun derlenmesini sağlar, programın çalışması için gerekli bağlılık dosyalarını uygun dizinlere taşır ve derlenmiş programa hızlı erişim için kısayol oluşturur.




------------------------------------------------------------------------------------------------------------------------------


[1] http://tr.pardus-wiki.org/Pardus:Geli%C5%9Ftirici_adaylar%C4%B1na_tavsiyeler

[2] http://tr.pardus-wiki.org/Pardus:%C3%87OMAR_Mimarisi




Friday, March 19, 2010

wicket link example

this example about a link in PageableListView;
available code in mercurial repository here

PageableListView authorsTable = new PageableListView("authors", auths,10){
@Override
protected void populateItem(ListItem item) {
Author author = (Author) item.getModelObject();
item.add(new Label("authId", Integer.toString(author.getAuthorId())));

Link authorlink = new Link("authorlink", item.getModel()) {
@Override
public void onClick() {
setResponsePage(new AuthorPage());
}
};
authorlink.add(new Label("authName", author.getAuthorName()));
item.add(authorlink);
}
};

sirin

Tuesday, March 16, 2010

OCaml, history and its paradigm

Caml programming language was developed by INRIA (National Institute for Research into Information and Automation of France) in 1985 with emphasis on reliability and viability of the program. Caml supports functional, imperative and object oriented programming forms. OCaml, that is Objective Caml, constitutes the basic implementation of the Caml programming language.[1] This writing covers information about the history of the OCaml programming language and its general paradigm.

As regards history of the OCaml programming language, studies were first started for adopting a theoretical language to real problems in 1958 upon John McCarthy's inventing the Lisp programming language initially to use on theoretical samples. In 1971, Robin Milner initiated the LCF (the Logic of Computable Functions) project. The project was developed and turned into the language called "meta-language", in short, ML , in 1973. ML and Lisp were alike in that they both provided easy analysis functional structure, but the former had a more natural, mathematics-like notation which was influenced by Pascal at a high extent. Later again, this theoretical language got stranger, and real programmers pioneered writing a real code in ML.

ML was used, among others, in National Institute for Research into Information and Automation- or INRIA of France as one of the facilities it was used on real applications. The Formel project had used ML until around 1987; however, it contained many weak points and errors. As a result; Guy Cousineau from INRIA developed the Lisp-based Categorical Abstract Machine, CAM-ML, in short CAML language, in 1987. In 1991, Xavier Leroy and Damien Doligez developed the Caml-light language. Later in 1996, Xavier Leroy, Jérôme Vouillon, and Didier Rémy contributed by including Objects and the capacity of compiling to machine code.Consequently; the Objective Caml OCaml language came into existence.[2]


It is possible to divide programming languages into two from the paradigm perspective: declarative and imperative. They are divided into subgroups such as functional, data flow, logic or constraint-based, Von Neumann languages, scripting and object-oriented languages.[3] Overall paradigm of the OCaml programming language tells us that OCaml is an object-oriented language which is a derivative of ML, and it has a multi-paradigm structure. In other words, it merges functional, imperative and object-oriented programming approaches.

On one hand, functional nature of the language provides considerable benefits; on the other hand, the object-oriented problem solving methods influenced the modern software engineering and programming practices to a considerably high extent. The OCaml programming language provides many of the features expected from the functional paradigm as well as its support for object-orientedness and further flexibility. Bearing these in mind, it is assumed that the language is quite practical and offers many ways for programmers to solve problems. Also OCaml includes object oriented structures which allow semantics to be consumed easily; therefore, programmers can shift to it so that they can be capable of functional programming without obligation to learn a possibly unfamiliar paradigm.[4]




sirin
........................................................................................................................................

[1] INRIA, The Caml Language (http://caml.inria.fr/), 2005.

[2] Brian Hurt, A Short History of OCaml (http://www.bogonomicon.org/bblog/ocaml-history.html), 2004.

[3] Michael Scott, Programming Language Pragmatics, Third Edition (http://proquestcombo.safaribooksonline.com/-9780080922997), 2009.

[4] Mat Kelly and Angel Brown, OCaml - A Practical Multi-Paradigm Language (http://csci618.matkelly.com/), 2010.