11 Aralık 2008 Perşembe

Ubuntu and BOINC Server

Hi! In this post we will compile latest stable BOINC server code on Ubuntu 8.10 (Intrepid Ibex) Desktop box.

Actually there is a cookbook for Boinc server installation on Debian 4.0 box so we can use directions in this cookbook, because Ubuntu is debian based. http://boinc.berkeley.edu/trac/wiki/ServerIntro

First of all we have to install following packages which are needed to compile boinc server code. You can easily install these packages by using Synaptic Package Manager.

m4
make
autoconf
automake
gcc
g++
pkg-config
libtool
subversion
vim

apache2-mpm-prefork
libapache2-mod-php5
mysql-client-5.0
mysql-server-5.0
php5-mysql
php5-cli
php5-gd
phpmyadmin
python-mysqldb
libmysql++-dev
libssl-dev

You should choose a root password for mysql and select apache2 for phpmyadmin when asked by Synaptic.

After installation of above packages you should create an user for boinc server. Open an terminal and run following commands to create boincadm user.
useradd -m -s /bin/bash boincadm
usermod -G boincadm www-data

And than we should create mysql user and grant permissions for boinc.
mysql -h localhost -u root -p
(Enter your mysql root password which you entered when using Synaptic)
GRANT ALL ON *.* TO 'boincadm'@'localhost';
SET PASSWORD FOR 'boincadm'@'localhost'='';
quit


Then switch to user boincadm by following code
su boincadm

Now, we should get boinc server source code from BOINC's svn source to boinc folder in your home directory (/home/boincadm/boinc). Run following commands to do this.
cd ~
svn co http://boinc.berkeley.edu/svn/branches/server_stable boinc

Above command may take some time depending on your internet connection speed.

Finally we are going to compile boinc server code. Run following commands respectively.

cd ~/boinc
./_autosetup
./configure --disable-client
make

(Do not make install)

If you don't encounter any error this means you are ready to have a boinc server. Simply, we can create a boinc sample project, this is what we will discuss in next post.

Ubuntu ve BOINC

Merhabalar. Türkçe kaynak olması maksadıyla ubuntu 8.10(Intrepid Ibex) Desktop üzerine BOINC server kurulumunu anlatacağım.

Aslında debian 4.0 için BOINC server kurulumu (yada derlenmesi) ile ilgili bir belge var, ubuntu da debian tabanlı olduğu için pek sıkıntı çekmeyeceğiz. Sözünü ettiğim belge http://boinc.berkeley.edu/trac/wiki/ServerIntro adresinde bulunuyor.

Öncelikle BOINC server kodunun derlenebilmesi için gereken paketleri kurmalıyız. Bu paketleri Synaptic (paket yöneticisi) ile kolayca yükleyebilirsiniz.

m4
make
autoconf
automake
gcc
g++
pkg-config
libtool
subversion
vim

apache2-mpm-prefork
libapache2-mod-php5
mysql-client-5.0
mysql-server-5.0
php5-mysql
php5-cli
php5-gd
phpmyadmin
python-mysqldb
libmysql++-dev
libssl-dev

Paketler yüklenirken mysql root şifresini belirleyeceksiniz ve phpmyadmin için apache2 yi seçmelisiniz.
Bu paketleri yükledikten sonra bir terminal açıp
useradd -m -s /bin/bash boincadm
usermod -G boincadm www-data
komutları ile boincadm kullanıcısını oluşturmalıyız.

Sonra teminale
mysql -h localhost -u root -p komutunu verin. Sizden belirlemiş olduğunuz mysql root parolanız istenecek. Parolanızı girdikten sonra
GRANT ALL ON *.* TO 'boincadm'@'localhost';
SET PASSWORD FOR 'boincadm'@'localhost'='';
quit
komutları ile boinc server için mysql kullanıcısı oluşturuyoruz.

sonra
su boincadm
komutu ile boincadm kullanıcısına geçebiliriz.

Şimdi BOINC kaynak kodunu indirmeliyiz. kaynak kodları boincadm kullanıcısıyken /home/boincadm/boinc dizinine indirmek için aşağıdaki komutu kullanıyoruz.
cd ~
svn co http://boinc.berkeley.edu/svn/branches/server_stable boinc

Bu komut internet bağlantı hızınıza göre biraz zaman alabilir.

daha sonra sırasıyla aşağıdaki komutları vererek boinc server kodunu derleyebiliriz.
cd ~/boinc
./_autosetup
./configure --disable-client
make
(Make install yapmayın)
Eğer herhangi bir sorunla karşılaşmadıysanız artık çalışan bir boinc servere sahip olabilirsiniz. Bunun en basit yolu BOINC serverinize bir deneme projesi kurmaktır. Bir sonraki yazıda bunu yapacağız. Şimdilik hoşçakalın.

16 Ağustos 2008 Cumartesi

bolumle.m

%    Yayıncı     : Şenol Korkmaz < senol.korkmaz@gmail.com >
% Dosya Adı : bolumle.m
% Gerekenler : partitions.m < http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=12009&objectType=file >
% Tanım : Sayı Bölümleme maksatlı MATLAB işlevi
% Kullanım : bolumle(n,m,k)
%
% Girdi : n --> Bölümlenecek sayı
% : m --> Bölümlemelerin kaçar sayıdan oluşacağını belirten vektör
% : k --> Bölümlemede kullanılacak sayıların seçileceği vektör
%
% Çıktı : Bu işlev bölümlemeleri döndürür
%
% Sürüm : 1.0
%
% Lisans : GNU/GPL v3 <http://www.gnu.org/licenses/>

function bolumler = bolumle(n,m,k) % İşlevi ve girdilerini tanımla

if (nargin==1) % Eğer sadece bir girdi var (n) ise
m = 1:n; % m = 1 den n'ye kadar tamsayıları içeren vektör
k = m; % k = 1 den n'ye kadar tamsayıları içeren vektör
end

if (nargin==2) % Eğer sadece iki girdi var (n & m) ise
k = 1:n; % k = 1 den n'ye kadar tamsayıları içeren vektör
end

% k vektöründeki sayıları kullanarak harici partitions fonksiyonu ile n'i bölümle
% hamBolumler, her bölümlemede hangi sayının kaçar defa kullanıldığı bilgisini içerecek
hamBolumler = partitions(n,k);

hamBolumler = hamBolumler(find(ismember(sum(hamBolumler,2),m)==1),:); % m vektöründe belirtilenler kadar sayı kullanılmış bölümlemeleri al

bolumler = zeros(size(hamBolumler,1),max(m)); % Çıktı şablonu

for i = 1:size(hamBolumler,1) % Her bir ham bölüm için döngü

buSatir = []; % O an işlenecek satır için boş vektör

for j = 1 : size(hamBolumler,2) % Her bir ham bölümü oluşturan her bir sayı için döngü

% hamBolumler vektöründe her sayının kaçar defa kullanıldığı bilgisi yer almaktadır
% bu bilgiyi kullanarak buSatır vektörüne o sayıları kullanıldıkları kadar ( repmat ile)
% ekler ve onları azalan sıra ile sıralarız
buSatir = horzcat(buSatir,repmat(k(j),1,hamBolumler(i,j)));
end

% buSatır vektörünün boyu max(m) kadar olmalıdır, bu yüzden kalan yerlere 0 doldurulur
buSatir = horzcat(buSatir,repmat(0,1,size(bolumler,2)-size(buSatir,2)));

% buSatır vektörünü çıktıya ekle
bolumler(size(hamBolumler,1)-i+1,:) = sort(buSatir,'descend') ;
end

11 Ağustos 2008 Pazartesi

intpart.m

%    Author      : Senol Korkmaz < senol.korkmaz@gmail.com >
% Filename : intpart.m
% Requires : partitions.m < http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=12009&objectType=file >
% Description : A Matlab Function to calculate partitions of an integer
% Usage : intpart(n,m,k)
%
% Input : n is an integer to find out its partitions
% : m is a vector which indicates that how many numbers can be used
% : k is a vector which indicates that which numbers can be used
%
% Output : This function returns a matrice that includes partitions of n
%
% Version : 1.0
%
% License : GNU/GPL v3
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.

function iparts = intpart(n,m,k) % Declare function and its arguments

if (nargin==1) % There is only one input (n)
m = 1:n; % Consider that m is a vector that contains all integers from 1 to n
k = m; % Consider that k is a vector that contains all integers from 1 to n
end

if (nargin==2) % There are two inputs ( n & m)
k = 1:n; % Consider that k is a vector that contains all integers from 1 to n
end

partlist = partitions(n,k); % Calculate the partitions of n with the numbers whis is in the vector k

% Code explanations will be written as soon as possible

partlist = partlist(find(ismember(sum(partlist,2),m)==1),:);

iparts = zeros(size(partlist,1),max(m));

for i = 1:size(partlist,1)

tmpROW = [];

for j = 1 : size(partlist,2)
tmpROW = horzcat(tmpROW,repmat(k(j),1,partlist(i,j)));
end

tmpROW = horzcat(tmpROW,repmat(0,1,size(iparts,2)-size(tmpROW,2)));
iparts(i,:) = sort(tmpROW,'descend') ;
end

15 Temmuz 2008 Salı

Ergenek1, ergenek2, ... , ergenek10

Ergenek1, ergenek2, ... , ergenek10

           Halkımızın merakla bekle-til-diği ergenekon iddianamesi nihayet açıklandı. Oldukça dalgalı ilerleyen bu soruşturma öylesine gizli yapıldı ki biz tutukluların ne yiyip içtiğini bile basından öğrenebildik. Hatta iddianamenin açıklandığı gün samanyolu haber'i okuyanlar davanın sonucunu bile “işte ergenekoncuların alacakları cezalar” başlıklı yazıdan öğrendiler! Ele geçirilen delillerin imha edildiğini iddia eden tezler bile birkaç gün içinde imha edildi. Bir yandan Cumhuriyetçi bir parti “terör ile suçlanan bir topluluğun savunmasını üstlendi”, diğer yandan Adaletçi bir parti “fırsat bu fırsat, hazır eliniz değmişken şunları da tutuklayıverin dedi” gibi görünüyor, tabii gerçeği bilemiyoruz, Türkiye'de gerçeği öğrenmek zordur.

           Aslında son günlerde açılan iki önemli dava da çok önemli bir konunun iki -çok- farklı kesim tarafından anlaşılmasına yaptığı (ya da benim öyle olmasını umduğum) katkıdan dolayı önemlidir. Bir yanda hıristiyanlar kulübüne girmeye çalışan muhafazakar bir kesim, diğer yanda biz kendimize yeteriz diyen başka bir kesim, bu iki -zıt- kesimi buluşturan ortak payda ise Avrupa Birliği ve insan hakları konuları oldu. İki kesim de Mehmet Ali Birand'ın da dediği gibi Avrupa Birliğinin eksikliğini hissetmiş olmalılar. Bir kesim parti kapatmanın demokrasi ayıbı olduğunu ve insan haklarına aykırı olduğunu söylerken diğer kesim malum soruşturmanın insan ayıbı olduğunu ve yine insan haklarına aykırı olduğunu iddia etti. Bu bize şunu gösteriyor; “ne kadar büyük bir tabana sahip olursanız olun, ne kadar çok destekçiniz olursa olsun, konvoyunuz alabildiğince uzun olsun, eğer bir insansanız, bir gün mutlaka insan haklarına ihtiyaç duyacaksınız”. Kim bilir belki de karşı oldukları bir medeniyet-ler- topluluğuna üye olsaydık insan hakları, iddia ettikleri kadar ihlal edil-e-mezdi. Görünen o ki eski koltuk kavgaları şimdilerde daha organize koltuk savaşlarına dönüştü.

           Birbirine çok benzeyen iki dava var önümüzde. Öncelikle deliller hemen hemen aynı türden, davanın biri gazete kupürleri delil edilmiş diye eleştirilirken diğer davada gazeteciler yazdıkları hakkında sorgulandı. Her iki davada da klasörler dolusu iddianame va kanıt gösterildi. Temel olarak her iki davanın muhattapları da “devlet rejimine karşılıklık” ile suçlanıyor gibi.

           Dalga dalga ilerleyen soruşturmanın son dalgasından (6. dalga) sonra bittiğini düşünüyorduk, ama bugünlerde medyada yer alan söylentilere göre soruşturma kapsamında yeni göz altılar da olabilir-miş-. Eğer iddia edildiği gibi soruşturma AKP'nin ters düştüğü isimler üzerine yoğunlaşıyorsa belki 6. dalgaya yetişemeyen bazı yeni oluşum hareket-ler-i de açığa çıkar ve onlar da soruşturmaya dahil edilirler. Yeni oluşum hareketleri demişken Abdüllatif Şener den de bahsetsek iyi olur. Bildiğiniz gibi AKP ile yollarını ayıran Şener, yeni bir parti için kolları sıvadı, konvoyları hazırladı. Fakat nedendir bilinmez bu ayrılık AKP den biraz aşırı tepki aldı gibi. Sanırım AKP liler Şener'in gömlek değiştirmiş olabileceğini hesaba katmadılar, halbuki bu o kesimde gayet doğal hatta moda bir davranış biçimidir. Kirlenen gömleği değiştirmek kolay gibi görünüyor fakat gömlek ne kadar yeni ve temiz olursa olsun içindeki aynı. Yine Şener'i siyasi fırsatçılık ile suçladılar ki bu davranış da malum kesim için olağan sayılır. Acaba AKP iktidara gelirken, eski siyasetçilere bıkkınlık ve kızgınlıktan kaynaklanan bir boşluğu kullanarak siyasi fırsatçılık yapmamış mıydı? Hani yukarıda sözünü ettiğim ve zıt olarak nitelediğim bu iki kesim var ya, işte o zıtlığa bir örnek vereyim isterseniz, bu iki kesimden birinde gömlek değiştirmek moda olmasına karşın diğer kesimde gömlek asla çıkarılmaz diye bir kaide var sanırım, baksanıza Sinan Aygün tutukluluğun ardından yine aynı kırmızı gömleği ile çıktı karşımıza.

           Sanırım bu yazıyı fazla uzatmanın alemi yok, iki bin dört yüz elli beş sayfa yazamam herhalde. Özetle şunu diyebiliriz, Türkiye'de görünen o ki iki kesim arasındaki iktidar savaşı aynı silah yani hukuk kullanılarak devam ediyor. Umarım galip taraf hukuk, demokrasi, laiklik ve insan hakları olur çünkü bu kavramlara herkesin ihtiyacı var. Son gelişmeler sayesinde bunu iktidar ve güç sahipleri de anlamışlardır umarım. Türkiye'de soruştumalar, davalar uzar gider, biz de saymaya devam ederiz. Ama çoğu gitti azı kaldı; ergenek7, ergenek8, ergenek9, ergenek10. Umarım Türkiye bu adımları bilim, teknoloji, sanat, kültür, insan hakları, eğitim, sağlık ... gibi konularda da atmaya başlar. Şunun şurasında 2023'e ne kaldı. Daha çok yol almalıyız. Misal; türksat4, türksat5, türksat6, ...

14 Temmuz 2008 Pazartesi

Ramsey Sayıları

Ramsey sayıları ile ilgili çalışmanın en son haline (01.08.2008)

                          http://docs.google.com/fileview?id=0B_AjGTl8wNS-YzU0MDM1NTItMjhjNy00ZTA2LTgxMTgtYTFkOTBkNTIyM2Qy&hl=tr

adresinden PDF biçeminde erişebilirsiniz.

Belge henüz taslak halindedir, lütfen gördüğünüz eksikleri bana iletiniz.

12 Temmuz 2008 Cumartesi

loto0.m

%    #######################  loto0.m DRAFT  #######################
%
% Author : Senol Korkmaz <senol.korkmaz@gmail.com>
% Filename : loto0.m
% Description : A MATLAB script to calculate n/m\k
% Usage : Run script and follow instructions.
% Version : 0 (Draft)
%
% License :
GNU/GPL v3
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.

%% Clear all variables and screen
clear;
clc;

%% Get user inputs n,m,k and validate
n = input(' n : ');
if ~(n>1)
error(' n must be greater than 1 (n=%d)',n);
end;

m = input(' m : ');
if ~(m>n)
error(' m must be greater than n (m=%d , n=%d)',m,n);
end;

k = input(' k : ');
if (k>n)
error(' k cannot be greater than n (k=%d , n=%d)',k,n)
end;

%% Generate variables

tmp = 0; % Temporary variable
flg = false; % Flag variable
covered = false; % Is selections covered target_pool in scope k ?
sub_combinations = 0; %

i = 0; % index to be used within loops
j = 0; % index to be used within loops
l = 0; % index to be used within loops
z = 0; % index to be used within loops

target_pool = combnk(1:m,n); % One of these combinations will be selected in loto
source_pool = target_pool; % Min of these combinations should be selected to cover target_pool at scope k
selections = zeros(1,n); % Current selections to test
selections_scope = [];
show_info = 0;

%% cycle throught combinations

while ~(covered) % Main loop
i = i + 1; % It is not enought, increase i
sub_combinations = combnk(1:size(source_pool,1),i); % Generate subcombinations
j=0;
z=size(sub_combinations,1);
show_info_period = z/100;

while ( (j < z) && ~(covered)) % #######
j = j+1;
selections = source_pool(sub_combinations(j,:),:);
show_info = show_info+1;

if (show_info > show_info_period)
disp(sprintf('is %d enought ? sub-Combination %d/%d , Completed = %d %%',i,j,z,fix(j/show_info_period)));
show_info = 0;
end;

selections_scope = selections(1,1:k); % ###################

for
l=1:i % Prepare k scope to test target_pool ########
selections_scope = union(selections_scope,combnk(selections(l,:),k),'rows');
end;

for l=1:size(target_pool,1)
if (size(intersect(combnk(target_pool(l,:),k),selections_scope,'rows'),1)==0)
break;
end;
if (l==size(target_pool,1))
covered = true;
end;
end;
end;
end;

%% Show results

disp(sprintf('Answer = %d',i));

3 Temmuz 2008 Perşembe

Asosyallikten E-sosyalliğe, Facebook.

Mirc, icq, yahoo, msn, space, blogs, yonja... Milletimizin maksatsız tüketim çılgınlığına bir yenisi daha eklendi, Facebook.
" Facebook is a social utility that connects you with the people around you."
" Facebook, sizi çevrenizdeki insanlarla birbirinize bağlayan bir sosyal araçtır. "
Facebook'un giriş sayfasında yapılan bu tanımlama onun kullanım maksatlarıyla kullanım şekli arasındaki tezatlığı sergiler gibi duruyor. Facebook'un 23 yaşındaki kurucusu Mark Zuckerberg facebook'u tanımlarken çok kullanılan "social network - sosyal ağ" demek yerine, "social utility - sosyal araç" terimini kullanıyor. Bu gayet bilinçli bir tanım olsa gerek, çünkü facebook bir insan tanıştırma ağı olmaktan ziyade birbirini tanıyan insanları bir araya getirmeyi amaç edinmiş gibi görünüyor. Tezatlığı yaratan ise yüzyılın asosyallik sebebi olarak görülen bilgisayarın ve dolayısıyla internetin "sosyal araç" olarak kullanılmaya çalışılması. Öyle ki insanların komşularını, sınıf arkadaşlarını, iş arkadaşlarını, akrabalarını vs. facebook vasıtasıyla bulması ve sosyal faaliyette bulunması bekleniyor. Tüm bu sosyal faaliyeti asosyal daha da doğrusu e-sosyal bir ortamda yapması isteniyor. Kim bilir belki de facebook, asosyallik sebebi olarak görülen internet'in günahını çıkarmaya çalışıyor.

Türkiyede teknolojinin ne kadar maksatsız kullanıldığına bir çok kez şahit olduk, zaten refüjlerin mesire yeri olarak kullanıldığı bir ülkede pek de geripsenmeyecek durumlardır bunlar.

Facebook da yurdum insanından nasibini aldı filmlere, esprilere konu oldu, "haydi gençler ........ kaç kişi olduğumuzu herkese duyuralım" , "bahse girerim ....... olan 1 milyon kişi bulurum" şeklinde gruplar açılıp taş çatlasın 5 - 10 bin üyeye erişildi, birbirimizi facebook'tan dürtükler (poke) olduk, rakı sofraları kurduk, "People You May Know" dan tanımasak da ne çok ortak arkadaşımız varmış diye kimseler ekledik, fal baktırdık, olmayan hediyeler aldık verdik, mümkün olan en garip kıyafetlerimizle en garip pozlarımızı çekip profil oluşturduk, sağ tıkladık müslüman sol tıkladık liberal olduk, ne işe yaradığını bilmediğimiz requestlere "yes" dedik, Super Wall'dan tıkla bakalım ne olacak deyip ilgili ilgisiz herkese saçmalık gönderdik ...

İşte böyle, uzun lafın kısası facebook'un da book'unu çıkardık. Darısı facebook'un yerini alacak furya neyse onun başına...

Sayısal lotoyu garantilemek.

Başlık sizi heyecanladırmasın, bahsedeceğim sayısal loto Milli Piyango İdaresinin 6/49 luk lotosu değil, benim naçizane 4/6 lık sayısal lotom olacak.

Soru : 4/6 lık bir loto çekilişinde en az bir tane 3 tutturmayı en az kaç kolon oynayarak garantileyebiliriz.
Kolonlar rasgele değil bilinçli olarak an az sayıda kolon ile 3 tutturmayı garantileyecek şekilde oynanacaktır.

Yanıt :
3 kolon kâfi gelir.

1 2 3 4
1 2 5 6
3 4 5 6
Bakınız : loto0.m

Konular

Matematik (5) Kod (4) Gündem (2) Bilgisayar (1) İnternet (1)