5 Şub 2012 18:13 tarihinde Ugur ARPACI tarafından yayınlandı
[
5 Şub 2012 18:15 güncellendi
]
I have designed gmail tar.gz mail monster script in order to automatize sending relatively massive amount of file transfer over gmail. This script is born in the need of my photograph sessions, which produces hundreds of .jpeg files that need to be transferred to some mail accounts. From now on, I simply compress image files with tar.gz and put all of them in a directory. Inside that newly created directory, I run the following script.
- create a directory that includes tar.gz files that will be transferred
- put the python file inside that directory
- create a file named 'account.conf', and populate it with your sender account username and password in separate lines as follows:
- run the script, all tar.gz files inside that directory will be posted to the mail address that you provide in the beginning of the execution.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import datetime
import smtplib
import random
import string
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import parseaddr, formataddr
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import sys,os
import re
import gzip
import shlex
#assume gmail file limit is 20 MB
GMAIL_FILE_LIMIT = 20000000L
session = None
msg = None
def send_files(recipient='',files=[]):
global session
global msg
print "Logging in gmail..."
session = smtplib.SMTP('smtp.gmail.com',587)
session.ehlo()
session.starttls()
session.ehlo()
session.login(username,password)
print "Logged in to the gmail_smtp."
sendList = []
mailTempBuffer = 0L
msg = None
msg = initializeMsg(msg)
for filename in files:
if not isFileValid(filename):
print str(filename) + " seems MORE than 20 mb , FAIL TO SEND, over capacity, file skipped..."
continue
if GMAIL_FILE_LIMIT > mailTempBuffer+os.path.getsize(filename):
mailTempBuffer = mailTempBuffer + os.path.getsize(filename)
sendList.append(filename)
continue
else:
send_mail(sendList)
mailTempBuffer = 0L
sendList = []
msg = None
msg = initializeMsg(msg)
mailTempBuffer = mailTempBuffer + os.path.getsize(filename)
sendList.append(filename)
if sendList:
send_mail(sendList)
session.quit()
print "Logged out from gmail"
def send_mail(sendList):
global session
global msg
informationMessage = "Following files are in process...\n"
for mailItem in sendList:
informationMessage = informationMessage + "[" + str(mailItem) + "]" + "\n"
print informationMessage
for mailItem in sendList:
appendAttachment(mailItem)
print "mail is sending..."
session.sendmail(username,[recipient],msg.as_string())
def initializeMsg(msg):
msg = MIMEMultipart()
msg['From'] = username
msg['To'] = recipient
msg['Subject'] = message
msg['Date'] = formatdate(localtime=True)
msg.attach(MIMEText(message))
return msg
def appendAttachment(mailItem):
global session
global msg
filePtr = open(mailItem,"rb")
part = MIMEBase('application', "octet-stream")
part.set_payload( filePtr.read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % mailItem)
print "[" + mailItem + "]" + " is attaching..."
msg.attach(part)
filePtr.close()
print "[" + mailItem + "]" + " is attached."
def getFiles():
allFiles = os.listdir(".")
allTarFiles = []
for tars in allFiles:
if 'tar.gz' in tars:
allTarFiles.append(tars)
return allTarFiles
def isFileValid(filename):
if os.path.getsize(filename) < GMAIL_FILE_LIMIT:
return True
return False
f=open("account.conf","r")
username = f.readline()
password = f.readline()
f.close()
username = username.rstrip('\n')
password = password.rstrip('\n')
if len(sys.argv) < 2:
print "USAGE: python send-files-over-mail.py <destination@gmail.com> <message>"
sys.exit(1)
files = getFiles()
message = sys.argv[len(sys.argv)-1]
recipient = sys.argv[1]
send_files(recipient,files)
|
2 Şub 2012 15:42 tarihinde Ugur ARPACI tarafından yayınlandı
[
2 Şub 2012 15:45 güncellendi
]
Ubuntu 11.10 ile gelen varsayılan arayüz olan Gnome-3' te, açılan gnome-terminallerde bizim elle kapattığımız halde bile her seferinde açılan terminal menubar ı, gtk da kaynaklanan bir bug yüzünden olmakta imiş. Bug numarası #787465 imiş ve çözümünü gtk nın appmenu paketini kaldırarak buldum.
sudo apt-get --purge autoremove appmenu-gtk appmenu-gtk3
Get rid of gnome-3 terminal menu bar, make it disappear in default by running above as root. Remoce gtk's appmenu package. |
28 Oca 2012 13:50 tarihinde Ugur ARPACI tarafından yayınlandı
[
28 Oca 2012 13:50 güncellendi
]
The main topic of this article should be expected as 'Linux vs Others' or 'Open Source vs Others'. From beginning this point, I am not going to discuss some well known facts between two facts such as outcome of licence agreement existence, however I will try to focus on more fatal ( deadly points or/and life saving ) points which I see more clearly as I evolve with these stuff more.
Amateur and logical question at first is 'Can I do everything that I do on my current installed OS_?'. The answer of the question comes with the newly integrated technologies. In the following years, we will probably never see end system computers which depends on a logical hard drive. Beginning from the involvement of Google's web browsers in industry, it is shown that browsers can actually make underlying systems in an abstract manner. End systems will need to use computing clouds by only authenticating themselves. Actually, Google's main perspective that they had on during the development of google-chrome browser is to catch the improving quality of web in the browsers side. According to the Google Chrome development team, they started Chrome browser project because browsers had not been improved as much as web. So what they did was making innovations on browsers, such as each tab is a separate process or a the fastest just-in-time compiler for a faster javascript execution. These improvements leaded to emerge a new era in cloud systems for end systems. Because today, we can survive with only a browser; most of the time, we don't need a local hard drives in end systems to store any data. Instead of classical computer architecture, It is like each of end system has an individual shell in the cloud, dedicated to them.
This 'browser based' new era makes end system 'OS-Independent'. End systems become an interface between user and cloud more than user and hardware. New era is more flexible,secure,fast and cheaper. It is faster because gigabit transfers are more faster ( relatively ) than local disk I/O ( Cloud servers could possibly use proxy caching ), cheaper because cloud servers could possibly use virtualization in order to optimize environment so that one physical hardware can be shared among multiple end users.
Open source community makes themselves mature each day by evolving in real problems. When an end developer ( developer meaning an system developer or administrator ) faces a problem, It is get fixed by his fellas. On the other hand, in proprietary world, you are stuck with people who emerged the system. Maybe a daily computer user cannot detect a difference ( daily user is used as who do nothing more than checking e-mail or at most playing computer games ) but as system developers, It is at least similar to Nazi era in World War 2. You have to play your game how much your fuhrer lets you so. Some fellas around thinks that this opinion is a nerdy over-reaction but open source is maybe the only true independent democracy environment that any humanity could not obtain so far. People say what they think, and others choose the optimal idea according to them and use it in the way that they need. And this possibly the only independent environment that anyone can live in without supplying any money.
Since end system reflection of free software environments are operating systems, there are pretty much available options which are available beyond one Google search. You simply search it, download it, install it and experience it. Among these options, probably Debian is the most stable Linux distribution. It provides one of the flexible and secure environments and It stands as the hardcore of freedom. On the other hand, we have to accept ( as statistics show ), Debian is not the first option for end users. However, another distribution based on totally Debian takes this role. Nowadays, It is possible to hear from administrators to hear 'Use Ubuntu' instead of 'Use Linux'. Since it is free, flexible to the cloud implementation and supported by thousands of developers around the world, It become one of the leading example in this environment.
|
31 Ara 2011 11:00 tarihinde Ugur ARPACI tarafından yayınlandı
[
31 Ara 2011 14:27 güncellendi
]
RSA ve DSA birer authentication protokolüdür. Uzaktaki bir makineye erişim için kullanılan SSH ( OpenSSH ) protokolü, RSA ve DSA ile entegre olarak çalışabilmektedir. Bu iki authentication protokolü, birbirini tamamlayan sayısal anahtarlardan oluşmaktadır. Birbirini tamamlayan bu anahtarlar makineler arası entegrasyonu sağlamaktadır. Bu iki protokolü kullanarak, ssh ile uzaktaki bir makineye parola olmaksızın güvenli bir şekilde bağlanmak mümkündür.
- RSA ve DSA protokolleri, public ve private key faktörlerine dayalı olarak çalışmaktadır.
- Bağlantı sağlamak istediğimiz client' lara kendimizin oluşturduğu public key leri dağıtırız.
- Bizim oluşturduğumuz ve dağıtımda bulunduğumuz public key, sadece mesajları enkripte etmek için kullanılır.
- Uzaktaki makine göndereceği mesajları bize, bizim gönderdiğimiz public key ile enkripte ederek gönderir. Biz de uzaktaki makine için, bu sürecin tam tersini yaparız. ( Uzaktaki makinenin public key ini alıp, mesajlarımızı enkripte ederiz )
- Aldığımız şifrelenmiş mesajları, bizim private key imizi kullanarak kullanıma hazır hale getiririz.
- Bağlantı sağlayacağımız her sistem için birer public key-private key çifti yaratma zorunluluğumuz yoktur. Sadece bir tane anahtar çifti yaratıp, birkaç sistemte kullanmakta bir sakınca yoktur.
Bağlantı kurulum aşamasında ilk gerçekleşen güvenlik adımı aşağıdaki gibidir:
Uzaktaki makine ile aramıdaki bağlantı yaygın olarak yapılan man in the middle ile yada herhangi bir şekilde dinleniyor olsa bile ve mesajlar sniff edilse bile, mesajlar şifrelenmiş oldukları için kullanılacak durumda olmayacaklardır. Bu durum public key imiz için de geçerlidir. Public key imizi herkese dağıtabiliriz, ancak private key imizi güvenli bir yerde saklamak önemlidir.
OpenSSH ile anahtar çifti yaratmak- OpenSSH ile anahtar çifti oluşturma işlemi ssh-keygen komutu ile yapılmaktadır.
- Oluşturulan RSA anahtar çiftlerinin saklanmak istediği dosya yolunu giriyoruz. Anahtar dosyaları default olarak ~/.ssh klasörü altında tutulmaktadır.
- Daha sonra, OpenSSH' ın sağlamış olduğu bir diğer güvenlik önlemi olan passphrase kelimemizi giriyoruz. Bu passphrase, bizim private key mizi enkripte edecektir. Böylelikle private key' imizi ele geçiren biri olsa bile, belirlediğimiz passphrase' i bilmeden kullanamaz.
 - Oluşturduğumuz public key i hedef bilgisayara, scp (secure copy komutu ile gönderiyoruz.)
- scp ~/.ssh/public_key.pub kullanici_adi@hedefmakine:/home/kullanici_adi/.ssh
- Kullanıcı adı, uzaktaki makinede yer alan (bizim login olmak istediğimiz kullanıcı adıdır.
- Hedef bilgisayarda yapmamız gereken, client tan gelen public key i ~/.ssh/authorized_keys dosyasına eklemektir. Bu cat komutu ile rahatlıkla yapılabilinir. Eğer authorized_keys dosyası yok ise elle oluşturuyoruz.
- Hedef bilgisayar bu işlem alternatif olarak şu şekilde yapılabilir:
- /etc/ssh/<kullanici_adi>/ isimli olarak, her kullanıcı için bir klasör yaratıp, authorized_keys dosyası buraya taşınır.
- Bu adımdan sonra, SSH a bu dosya yolunu belirtmemiz gerekmektedir. Bunu da /etc/ssh/sshd_config dosyası içerisinde yer alan - AuthorizedKeysFile %h/.ssh/authorized_keys + AuthorizedKeysFile /etc/ssh/%u/authorized_keys satırlardaki düzenlemeleri yaparak gerçekleştiriyoruz.
- Dosya hakları ile aşağıdaki gibi bir değişiklik yapmamız gerekiyor.
- sudo chmod 755 /etc/ssh/<kullanici_adi>/
- sudo chmod 644 /etc/ssh/<kullanici_adi>/authorized_keys
Tüm bu adımlardan sonra ssh kullanıcı_adı@host ile gerçekleşen bağlantılarda, bize şifre yerine passphrase sorulacak. Dolayısı ile, artık güvenlik sadece parola ile değil, passphrase ve private key ile ( bir yerine iki etmen kontrol ediliyor ) sağlanmaktadır. Passphrase i kötü ellere düşürsek bile, private key imiz sayesinde hesabımız güvenlik altında olacaktır.
|
6 Mar 2011 13:40 tarihinde Ugur ARPACI tarafından yayınlandı
[
6 Mar 2011 14:05 güncellendi
]
Herkese
bir şeyler katmak değildir benim amacım, bu ne benim işimdir ne de
benim haddime kalmış bir şeydir. Ben gördüklerimi, duyduklarımı kendi
içimdeki ben ile şöyle bir harmanladıktan sonra ya söylerim ya yazarım
yada çizerim. 'Yol göstermek' denilen eylemin rotasından ayrılmamaya çalışırım. Hedefe varmak için üzerinde yol aldığım yolları anlatırım.
Bu yollardan herhangi birisini izle diye kimseye de şartlandırma
yapmam. Ben sadece anlatırım. Sadece bir şeyler arayanlar bir takım
cevaplar bulurlar. ( Amacım sadece benim içimdekileri anlatmak olunca,
kitlesel bir hitap kullanmaktan uzak duracağim ve bende ne varsa onu
yansıtmaya çalışacağim. Fakat 'ben' kelimesini, sadece bir şeyler arayanları nitelemek için çok keskin bir hitap olarak kullanacağım. )
Her insan, farklı bir düşüncedir. Böyle olunca su an dünya üzerinde
milyarlarca düşünce, eş zamanlı bir şekilde var olmaktadır. Farklı
düşüncelerin var olması, her zaman tercih sebebimdir. Bu kadar farklı
düşüncenin var olması , bu düşüncelerin birbirinden bağımsız olarak
hayata geçmesini gerektiriyor demiyorum. Bu denli farklı varyasyonların
var olduğu bir çevrede ortak bir protokolün olmasının, düşüncelerin
etkileşmesi açısından gerekli bir şey olduğunu söylüyorum. 'Yol' denilen
kavram, şu an içinde olduğum bir protokoldür. Ne kadar çok yol
görürsem, o kadar kültürlü bir birey olurum. Kültür ise, içimdekileri
aktarmamda kullandığım başka bir araç oluyor.
Kişileri anlamak, yaşanılan dünyayı anlamak anlamına gelebiliyor. Asıl
engel ise yaşanılan dünyayı algılamamı engelleyen aciz, güçsüz ve beni
şaşırtan duygularımdır. Bu şaşkınlık yaratan duygular, insanın gözünün
önüne perde çekebiliyor. Bunu daha önce çok defa gördüm. Gözlerine perde
çekilmiş bir insan için ise, neleri bildiğinin bir önemi olmuyor. Daha
da vahim olan; göremediği şeyleri yok zannedenlerdir. Bu sadece tek bir
yola sıkışmış kişilerin opsiyonu oluyor. Tek bir yola sıkışanlar, tek
bir iplik ile hayata bağlananlar oluyor. Ki bu benim istemediğim bir
kavram. İnsan sadece tek bir şey ile hayata bağlanamaz. Hayata
bağlandığı ipliklerin sayısını arttırarak, bunu sağlam bir halat gibi
sıkı sıkıya kuvvetlendirmem gerekmektedir. Duyduğu tek bir duygunun
acizliğine kapılmamalıyım. Bu şaşırtıcı, yanıltıcı ve ileride can sıkıcı
olacaktır.
Yol
gösterici olan kişinin, sadece sözlerinde durulmaktan vazgeçmeye
başladım daha sonra. Bir kişi bir şey söylediğinde, sadece sözün
öneminden ziyade, o kişi bu sözü ne söylettiriyor diyerek irdelemeye
başladım. Sadece söylenenin doğru olup olmadığına bakmadım, aynı zamanda
o kişinin söylediği söze ne kadar kendisini kattığını da anladım. Kişi sadece kendisini kattığı zaman, kitaplardan yazanlardan farklı şeyler söylemiş oluyor. Bu
durumda, söylenenlere bir isim koymadan bir paylaşım oluyor. Özgür bir
iletişim içinde, bir şeyler paylaşmış oluyorum. Sadece ve sadece
içimdekileri paylaşmış oluyorum. Başlangıçta
sadece düşmeyi öğrendim, bu bana gösterilen ve benim seçtiğim bir yol
idi. İlk düşüşlerim yıkılma şeklinde idi. Zaman geçtikçe daha iyi
düşmeye başladım. Bir noktada artık yıkılmadan düşmeyi başarmaya
başladım. Bunu başardığımda, bundan sonraki evre olan diğerlerini
düşürme evresine geçtim. Öğrenme isteği ile yanıp tutuşanlara, nasıl
düşmeleri gerektiğini konusunda yol göstermeye çalıştım. Bu iletişimden
saygı doğdu. Bana saygı duyuldu. Benim
gibi düşmeyi öğrenme evresini tamamlamış ile savaşlarımda ise düştükten
sonra, enerjilerini iyi kullanarak kısa süre içerisinde zıpkın gibi
dikilenleri gördüm. Önlerinde saygı ile eğildim. Bu savaşlarda,
bulundukları kıdem derecesine düşmeyi kavrayamadan gelenleri de gördüm.
Düşmeyi bilmeden düşürmeye çalışanlardı bu kişiler. Kendini hasmın
yerine koymadan savaşanlardı.
Değişim denen bir
kavram vardır. Ben, insanın kümülatif değiştini algıladım. Eski
tuğlaların üstüne yenisini koyarak büyüyen bir yapı gibi. 'Hiçkimse ama
hiçkimse nereden geldiğini unutmamalıdır', bu benim aklıma kazındı. Bu
yoldan şaşanların, şaşırdıklarını ve başkalarını da şaşırtmaya
çalıştıklarını gördüm. Nereden geldiğini unutmayanların önünde saygıyla
eğildim.
|
3 Mar 2011 10:09 tarihinde Ugur ARPACI tarafından yayınlandı
[
4 Mar 2011 06:07 tarihinde Uğur ARPACI tarafından güncellendi
]
Yeditepe Üniversitesinde 7. si 25-26-27 Şubat 2011 tarihleri arasında düzenlenen BİLMÖK'ün (Bilgisayar mühendisliği öğrencileri kongresi) bu 3 günü organizasyona emek veren herkes için farklı tecrübeler ile geçti. Organizasyonu üstlenen (40) aktif üyeden biri olarak bende bu çorbaya biraz tuz katmaya çalıştım. Kongreye davet edilen Richard STALLMAN'ın (Free Software Foundation kurucusu) İstanbul'da geçireceği süre içerisinde ona yardımcı olma görevi bana (Uğur ARPACI) ve Gizem AKTİ'ye (Yeditepe Üniversitesi bilgisayar mühendisliği öğrencisi ve Yeditepe Üniversitesi bilgisayar kulübü üyesi) verildi.
Önceleri ismini tuğla kalınlığındaki akademik kitaplarda duyduğum, kendini herkese anlatabilme amacı içinde olmadığı gibi göründüğünü kanıksadığım, "free software" diye herkesin kafasını karıştırmakla kalmayıp, sanki yazılım geliştiricilerin, geliştirdikleri kodları sokağa atmalarını istiyormuş gibi anlaşılan ve bu yüzden akıllarda pek tutmayan birisi idi Richard amca. Kendisi, içinde bulunduğu dünyanın üzerine kurulduğu temel kavramlara, bu kavramlar ilgili oynanan oyunlara dikkat çekmek istiyordu daimi olarak ve bunu yapmak için hiçbir fırsatı kaçırmamaya çalışıyordu. 24 Şubat 2011 günü saat 19:30 da kendisini hava alanından aldıktan sonra, terminalde çektiğimiz ilk fotoğrafın hangi sosyal ağlarda paylaşabileceğimizi sorduğumuzda, isimden bağımsız olarak izledikleri politikaların göz önünde bulundurulması gerektiğini belirtti. Bu açıklamayı yaparken hava alanı terminalinden, otoparka doğru yürüyorduk ve "dakika bir, gol bir" deyişi aklımda yankılandı. Diğer taraftan, Richard amcanın kariyeri ve yaşantısı hakkında üstünkörü de olsa bir bilgim vardı ve bu bilgilerin etkisi altında peşin bir hüküm vermemek için, otoparka doğru yürümeye devam ettik.
Arabada, yanıma, ön taraftaki yolcu koltuğuna yerleşti. Daha önce görmediğim, duymadığım marka bir netbook çıkardı çantasından. Yanından hiç ayırmadığı bir çantası vardı ve hayli ağır bir çanta idi. Netbook un girişinden bir kablonun çantanın içine doğru sarkması dikkatimi çekti. Daha sonra göndüm ki, Stallman amcanın hayatı yollarda geçtiği için, zaman zarfında netbook un enerji ihtiyacını karşılama çözümü imiş o kablo. İki tane birbirine bağlı pil ile bir sistem geliştirmiş kendine, bu sistem mobil olduğu zamanlarda çantasından hiç çıkartmıyor ve saatlerde hatta bana kalırsa bir gün boyunca hiç bir enerji şebekesine gerek kalmadan netbook unu kullanabiliyor. Yanında olduğum üç günlük süre içerisinde, sadece arabada olduğu sürelerde, bir çesit bootloader çalıştırırken gördüm Stallman amcayı. Diğer zamanlarda uyku moduna aldığı netbook nu, oturabildiği her noktada çıkartıyor, hiç konuşmadan kendi geliştirdiği ve grafiksel bir arayüzü olmayan text editör mail okuyup cevaplıyordu. Bunu her gün saatlerde yapıyor ve kendisi bunu bir iş olarak görmüyordu. 2-3 saat içerisinde 350 civarı mail okuyup cevaplak benim kendimi sorgulamama neden olmuştu, ilerleyen zamanlarımda. Cevapladığı mailleri bilgisayarının hafızasında tutuyor, herhangi bir İnternet erişim noktası bulduğu zaman ise, bu yazmış olduğu mailleri gönderilmesi gereken adreslere gönderiyor, daha sonra cevaplanması için bekeleyen mailleri bilgisayarına indirip yoluna devam ediyordu. Yazacağı şeyleri düşünmek dışında gözleri, 9' lik ekrandan hiç ayrılmıyordu.
Etkinlik süresince Üniversitemiz asistanlarından Murat BİRBEN, Stallman amcaya evinin kapılarını açmıştı. (Ev çok güzeldi, söylemeden geçemeyeceğim) İlk günün akşamı 4 kişi (ben, Gizem AKTİ, Destan SARPKAYA, Murat BİRBEN) evde yemek yerken, kendisi ile sohbet etme fırsatı bulduk. Destan ile aralarında hararetli bir şekilde siyaset konuştular. Zeitgeist üzerinde uzun denebilecek bir süre muhabbet ettiler. Stallman amca özgürlükçü idi. (Bu özgürlük kavramını konudan bağımsız olarak dile getiriyordu. Herhangi bir şey için olabilirdi, ama üzerinde durduğu her konuyu bir şekilde kişinin "free" olarak yaşamasına etki etmeyen bir yapıda olması gerektiğine getirebiliyordu.) Yemek sonunda da vitamin haplarını ve balık yağı kapsülünü de hüpletti.
Bol, bol çay tüketen bir insan aynı zamanda. Murat BİRBEN hocanın aylık çay stokunun bir kısmını eritmiştir diye tahmin ediyorum. Günün büyük bir bölümünü gelen mesajlarını okuyup - cevaplayarak geçirdiğinden dolayı, abur cubur yerine, bir gazete parçasına sarıp daimi olarak yanında taşıdığı peynirini tüketiyordu, içecek olarak ta çayı tercih ediyordu. Mutlu edilmesi zor olmayan biri olduğu aşikar. Yapılması gereken inanılması zor şekildeki göbeğinin içindeki midesini hiç boş yer kalmayacak şekilde doldurmak. O zaman suratında bir gülümseme belirmeye başlıyor.
Cumartesi günü İstanbul'da Avrupa yakasına geçerken, metrobüslerin trafik akış yönü ile normal trafiğin akış yönünün farklı olduğunu görünce gülmekten kendini alıkoyamadı. İstanbul ona farklı geliyordu tabii ki, çok fazla farklı şey bir arada idi. Boğaziçi köprüsüne kadar ve sonrasında yaşadığımız bir trafik sıkışıklığında, Stallman amca yüzlerce maile cevap vermişti. Trafik bir süre sonra onun canını sıkmıştı ve "There are huge amounts of car araund here" bir nara patlattı, haklıydı. Folkloru sevdiğini biliyorduk Stallman amcanın, zira gençliğinde kendisi de folklor oynamıştı. Bizlere, eğer burada bir folklor gösterisi ayarlayabilirsek memnun olacağını belirtmişti. Yaptık, oldu, hemde Anadolu ateşi. Anadolu ateşi dans gösterisine şans eseri yer bulmuştuk. Salona girip yerlerimizi aldığımızda gösterinin başlamasına dakikalar vardı ve amca yine netbookuna sarıldı. Oyun incesi gelen son maillerini cevaplamaya koyuldu. Anadolu ateşi gösterisini bende ilk defa izliyordum ve harika bir performans gösterdiler, oyun sırasında Stallman amacanın suratında gördüğüm mutluluk ifadesi, doğru karar verdiğimizi söyler nitelikte idi.
7. Bilmök'ün ağır konuşmacılarından Stallman amcanın, konuşma yapacağı olan Cumartesi günü (26 Şubat 2011, ki aynı zamanda benim doğum günüm), Gizem ile beraber, sabah saatlerinde, Stallman amcayı Murat BİRBEN'in evinden almak için yola koyulduk. Eve vardığımızda, her halini koruyan, stabir bir Stallman bulduk yine. Görünüş olarak fazla bir hazırlık yapmamıştı, aynı t-shirt, pantolon vs bıraktığımız gibi idi. 'Rahatlık' kelimesinin Stallman amcadan geldiğini söyleseler garipsemem. Sahneye çıkınca, bu kavramı da aşıp, sweatshirt ünü ve ayakkabalarını çıkarıp, aşınmış çoraplarını 1400 den fazla izleyiciye göstererek, 'özgür olun' demek, farklı yapıda biri olmayı gerektiriyor, bunu yapmaya herkes cesaret edemez.
Stallman amca konuşmasına kısa bir 'free software' tanımı yaparak başladı. O meşhur 4 kanunu saydı ve sonra asıl olarak bir "free" nasıl olur, bunun üzerinde durdu. Bu konuda söylenecek şey, "free software" olmak demek, sadece yazılan kodların ve fikirlerin paylaşılması demek değildir. Hele ki bu işten para kazanılmaması demek hiç değildir. Stallman amcanın üzerine basa, basa söylediği konulardan bazıları bunlar olmasına rağmen, konuşma sonrasında gelen sorular içerisinde (ısrarla İngilizce konuşmaya çalışanların dikkat etmeleri gerektiği belki de daha önceden söylenmeliydi) "open software = free software" şeklinde bir izlenim olduğunu gören Stallman amca, çıldırmak üzereydi ki bu sorular daha tamamlanmadan diğerlerine geçildi. Konuşmada herkes kendine göre bir takım cevaplar bulmuştu. Stallman amca konuşmasını, gelen istekler üzerine "free software" şarkısı ile bitirdi.
Kendine özgü olan giyim, yemek yeme ve yaşam tarzı bir yana, kendisinin bir profesyonel olduğunu sahneye çıkınca bir kaç dakika içinde hissedebiliyorsunuz. Dünya'da bu kadar ciddi bir konuşmayı aşınmış bir çift çorap, sıradan bir pantolon, her zaman giydiği bir t-shirt ve arkaya doğru açtığı saçlarıyla iki saatlik bir zaman dilimi içerisinde anlatması ve kendini binin üzerinde kişiye dinletmesi bana kalırsa bir profesyonellik, kendini kabul ettirmişlik ölçüsüdür.
Richard STALLMAN ile üçüncü günün sonuna geldiğimizde, bana söylediği tek şey, veda cümlesi olan "Happy Hacking" idi...
Richard Stallman FSF song |
7 Oca 2011 06:03 tarihinde Ugur ARPACI tarafından yayınlandı
[
16 Nis 2011 12:27 tarihinde Uğur ARPACI tarafından güncellendi
]
In this article, i will try to explaing Lisch and Eisch database structure algorithms over an example program that i have prepared myself, in C programming language.
As you know that both of these algorithms are used in some applications against collisions. There are many methods and algorithms that suits well with collisions and when 'coalesced' hashing is in game which means the new coming record goes at the bottom. As you have probably seen hundreds of same example (for now to confuse you that much); i will show that thing again.
27-18-29-28-39-13-16-42-17 ( is the sequence of records that comes into the system )hash(key)=key mod 11 ( is the hashing function that we use as a function of table size )
| Location | Record | Link | | 0 | | | | 1 | | | | 2 | 13 | | | 3 | 17 | | | 4 | 42 | 3 | | 5 | 27 | 8 | | 6 | 28 | 9 | | 7 | 18 | 10 | | 8 | 16 | | | 9 | 39 | 4 | | 10 | 29 |
By using the same logic, i am introducing a real life application which includes 50,000 records. That much record will be read from a file sequentially and will be written 6 different files which will be created in scope of lisch-eisch algorithms. Program starts creating LISCH-EISCH algorithm filtered files when it is executed and creates 6 different files by separating them with respect to packing factors. As you can imagine, these packing factors are obtained depending on the chosen table size in the corresponding files.
Considering 50,000 records;
.50. files uses 100003 record table size; hashing function will be hash(key)=key mod 100003 .75. files uses 66653 record table size; hashing function will be hash(key)=key mod 66653 .95. files uses 52631 record table size; hashing function will be hash(key)=key mod 52631
Records are read from file studentsSEQ.dat sequentially and written into the following files after their creation. In order to find the correct location of the records, fseek-fread-fwrite functions are used. studentsLISCH50.dat studentsLISCH75.dat studentsLISCH95.dat studentsEISCH50.dat studentsEISCH75.dat studentsEISCH95.dat (Format of the studentsSEQ.dat file is STUDENT-ID,NAME,SURNAME.)
Regarding this Windows console application, outputs of the program are -time intervals of 6 file creations in millisecond -time interval of an arbitrary student match in sequential search -time interval of an arbitrary student match in direct access from the 6 file that has been created.
|
18 Eyl 2010 09:33 tarihinde Ugur ARPACI tarafından yayınlandı
[
16 Nis 2011 12:28 tarihinde Uğur ARPACI tarafından güncellendi
]
The first version of this program was designed basically and it had security issues due to using a text file to store users information. I publish this version as 2.0 instead of 1.6 or 1.8 because it deserves. :-) . Version 2.0 fully supported by MySQL and i have worked on Eclipse Galileo environment which means by importing header files on your eclipse environment, any developer can start to enlarge the program.
Of course this version still needs some upgrades ( but i call these upgrades as deficiencies ) and instead of loosing times on these upgrades, i wanted to publish a version. According to the scenario, this version executes as a dentist appointment program. On the other hand with some arrangements, it can support variety of purposes. In the first version, i had some troubles with connectors of Gnomes Gtkmm libraries and at the beginning, this version was a nightmare for MySQL connectors between mysql.h and Eclipse environment, but i make it work. I have googled these issues and i actually got confused. If anyone needs some help about connectors of Eclipse-MySQL connectors and Gnomes Gtkmm libraries, i can help you via info@ugurarpaci.com .
About version 2.0
This version was compiled by gcc compiler and it is executable on any Linux environment. ( Personally i have executed on three different environments as Pardus, Ubuntu and Fedora. )
I have used a couple of different algorithm ( such as checking e-mail address ), and i gave some of their references, which i copied from technical books.
As i succeeded, MySQL database supported 2.0 can be used on a network by settling database on a server. I used my home server two computers can send queries. ( This aspect can be used as a real world problem as having more than one dentist institute so that, doctors can reach any patiences information simultaneously )
In order to use database, database connection information need to be initialized with respect to proper database. This can be done by using sqlInformation.h header file. I organized this file as follows: static char* sqlPassword(){password="";return password;}; //MySQL Password static char* sqlUsername(){username="";return username;}; //MySQL Username static char* sqlServer(){server="";return server;}; //MySQL server address static char* sqldb_name(){db_name=""; return db_name;}; //MySQL database name
You can change these information by writing your MySQL password,username,servername and databasename between " " . Let's make an initialization as follows;
Let MySQL database password be "abcdef" Let MySQL database granted username be "doctorJohn" Let MySQL server ip address be "192.168.5.87" Let MySQL database database name be "dentistDatabase"
( database user must have query send and select query privileges otherwise execution could end or return by a database connection error )
static char* sqlPassword(){password="abcdef";return password;}; static char* sqlUsername(){username="doctorJohn";return username;}; static char* sqlServer(){server="192.168.5.87";return server;}; static char* sqldb_name(){db_name="dentistDatabase"; return db_name;};
Now that is a proper bunch of information to run database.
MySQL column names:
I used one table called 'member' and 8 columns named as:
memberNumber memberName, memberSurname, memberAge, memberEmail, mumberMobile, memberDate, memberSymptoms
When i send my query to database, columns look like as follows;
query="SHOW COLUMNS FROM members;"
You can download either executable on linux environment ( it won't work anyway- it does not include database connection information ) or download source code files. |
28 Ağu 2010 05:59 tarihinde Ugur ARPACI tarafından yayınlandı
[
16 Nis 2011 12:28 tarihinde Uğur ARPACI tarafından güncellendi
]
With some adjustments, a little bit more intelligent C++ appointment program (as version 1.1) has been released. The new features are;
-Exception Handling in user input verification. (I have used some default rules to decide which one is acceptable but you can change it in your way)
-This exception handling operations throws unmatched strings or empty field error and these are caught and warns user by MessageDialog Boxes.
-User can select a date via Gtk::SpinButton interface which contains current day,month and year.
Following program is a simple database application that uses a file I/O to store information and includes Gnome's gtkmm graphical user interface libraries. Besides it's application programming interface, there is a helpful PDF document that might help you about gtkmm libraries. By using this PDF, you can make progress in a short period of time. I am publishing this appointment program as version 1.0.
There are source sites that might help you about gtkmm libraries:
http://ruby-gnome2.sourceforge.jp/hiki.cgi?tut-gtk2-treev-parts
http://www.pygtk.org/
appointment_v1.0.zip indir. appointment_v1.1.zip indir
|
26 Tem 2010 02:07 tarihinde Ugur ARPACI tarafından yayınlandı
[
3 Ağu 2011 21:42 güncellendi
]
Uğur ARPACI
e-mail: ugurarpaci [at] gmail.com
PERSONAL PROFILE
Performing a challenging personality and ability in organizations and projects that is being attempted, only aim is to gain more experience in every stage of progress on the heap of existed experiences on extensive areas. Main goal is to accomplish the task by taking time to settle the current environment in order to work efficiently.
|
OBJECTIVE
Taking part as member of a team with experienced professionals to take organization further.
|
EDUCATION
Yeditepe University, Istanbul, Turkey Bachelor in Computer Science Engineering, Expected Graduation in June 2012.
Sakıp Sabancı High School, Istanbul, Turkey, 2008
|
PREVIOUS EMPLOYMENT EXPERIENCE
The Municipality of Buyukcekmece, Istanbul, Turkey 2004-2010 Administrative Member (2010)
-Managing communication between International groups and Municipality members.
Guide (2004-2009)
-Managing the programs of the different folk dance groups for their performance within one of the biggest International Folk Festival -Managing the requirements of the dance contest -Organizing the travel agenda for the foreign groups
The Municipality of Kucukcekmece, Istanbul, Turkey
Guide (2009)
-Managing the programs of the different folk dance groups for their performance within the International Folk Festival -Managing the requirements of the dance contest -Organizing the travel agenda for the foreign groups
38th CIOFF World Congress, Istanbul, Turkey IT Management (September-December 2008)
-Organizing the travel agenda for the international delegates.
|
ACADEMIC ACHIEVEMENTS
-Higher Education Council of Turkey (ÖSYM) Scholarship ( including all educational outflows) -Yeditepe University partial scholarship for books.
|
Skills
|
Technical Skills
MS Office Programs Open Office Programs C,C++ Programming Language Personal Home Page Developing(Elementary) JAVA Programming Language(Elementary) Object Oriented Programming (Elementary) MySQL Database Assembly Language Programming Integrated Circuit Design Joomla! Open Source Content Management System Open Source Developing
|
Languages
English(Fluent) Turkish(Fluent) German(Elementary)
Driving Licence
Class B-Automobile Licence |
|
PERSONAL DETAILS
Date of Birth: 26th February 1990 Nationality: Turkish
|
|
INTERESTS AND ACTIVITIES
-Martial Art (Aikido) 1st Dan Black Belt Degree Trainer (2005-Present) -Uğur Arpacı Personal Page (http://www.ugurarpaci.com) -Web Page design (http://www.nazotasarim.com) -Web site project , 2004-2005 (http://www.sabancilisesi.k12) -Basketball player at Galatasaray Sport Club( 1997-2001 Amateur, 2001-2003 Professional)
-Semi-Professional Photography -Sport, reading (technical), programming electronic devices.
|
REFERENCES
Will be provided. |
|
|