Some usefulness

Problem Officer?

Copying Is Theft!

I saw some retards (maybe there’s some organisations behind these ideas, i dunno) says “copying is not theft! i don’t steal the software, i’m just copying..” and “if i steal an orange¹, the original one disappears, but if i copy it, there’s no problem”.

NO! moron, it’s pure theft.

People are not selling oranges in software world. While the software is running, a person or corp. is having a benefit from it. It’s not important if you steal the original one or not (funny, how could you “steal” the original one actually if it’s a software?). Main idea is, you’re using some codes which someone f*cked their days (even years) for it. Also they’re not selling “the code”, they’re selling authorization to “using” this code (if you ever read the EULA’s or licences, whatever).

The dramatic part, for me, some of this retards are supporting free software. They don’t even know what “freedom” is. Freedom includes your right to sell your own, “i gave everything to write this shit”-code. By the way, i don’t like licences (see the licence information on the right column), i’m trying to use softwares which i’ve right to use.

¹ For some kind of retards, who says “it’s not theft, it’s plagiarism”, i can say “thesis” instead of orange.

Wake On Lan

(From Wikipedia) Wake-on-LAN is an Ethernet computer networking standard that allows a computer to be turned on or woken up by a network message.

If you want to wake your computer up from the outside of LAN, it’s mostly about your router. I’ll give a shot to explain how it works for me.

First you should emerge ethtool on which box you’re planning to wake up. And check the ethernet card if its wol capable with a command like “ethtool eth0“. You probably will see something like “Wake-on : d” if it’s intelligent enough, you should change this to “g” with a command like “ethtool -s eth0 wol g” to enable wol. It’s better to add this command to an init script (best choice looks like /etc/conf.d/local.start). And don’t forget to check MAC address of the network card (e.g ifconfig | grep HWaddr ).

Now you can switch off your box and wake it up from another LAN client with sending a magic packet to its MAC (wakeonlan XX:XX:XX:XX:XX:XX). You just need “wakeonlan” package to install.

What about outside of local network? Well, wakeonlan uses 9th UDP port by default. I found a solution in ArchLinux wiki. First you should connect your router (with ssh, telnet or something) and forward a special IP to special MAC address (in this case, your box’s MAC) E.g:

arp -s 192.168.1.254 XX:XX:XX:XX:XX:XX

And now, forward your 9th UDP port to 192.168.1.254 from your router’s interface. Now you can send magic packets to your router’s IP from internet. It should be like:

wakeonlan -i IP_ADDRESS -p 9 XX:XX:XX:XX:XX:XX

It’s better to set up a dynamic dns if you’re using dynamic IP. For this case, i wrote a dirty script to wake my computer up from internet to solve IP address and send the package. With using your box’s MAC address:

#!/bin/bash
IPWTF=`ping -c 1 dynamic_dns_address_of_your_box.com | grep “bytes of”| awk ‘{ print $3 }’ | sed ’1s/^.//’ | sed ‘$s/.$//’`
wakeonlan -i $IPWTF -p 9 XX:XX:XX:XX:XX:XX

Don’t forget to establish a ssh connection to switch it off :P Have fun!

More Source:

http://wiki.archlinux.org/index.php/Wake-on-LAN

http://en.gentoo-wiki.com/wiki/Wake_on_LAN

RGBA?

I like that rgba shit. Can make transparent some parts of an application. So i write a funky script to make easier patching apps for rgba.

Warning, that’s very risky to use that. But you can have applications like that [link] after the patches..

Here you can download the script, read the instructions carefully!

[Download]

Note: it needs murrine-svn (you can find here) and a theme which supports rgba.
Note2: And, umm.. :)  rgba and this patches can cause X crashes if you don’t use a composite manager (compiz like..)
Note3: you can check [here] for more patches..

Hash sistemleri hakkında!

madBüyük büyük dosyalar yapıyoruz, indiriyoruz.. Sağlam mı acaba indirdiğimiz kopyaladığımız bu dosya diye düşündüğümüzde aklımıza hemen tek bir değer geliyomd5sum! Dosyanın md5sum kontrol numarasını alıyoruz, karşıdaki ile karşılaştırıyoruz, aynıysa dosya sağlam diyoruz.. (Pek bilinmiyor da sha1sumkullananlar da var..)
Neyse, aklıma takılan nokta bu hash sistemlerinin yöntemi..
Biraz kafa yordum da, “Dosyanın rastgele yerlerinden bir değer seçip ona bir değer atayabilir mi?” dedim,olmaz.. Çünkü bir rastgele sayacı kolay kolay aynı numarayı döndermez ki dosyada yeri (doğal olarak kontrol numarası) tutsun..
Belli yerlerinden değer alması tek mantıklı yol, tabi bunun da güvenliğinin sağlanması için dosya boyutunun (byte cinsinden) değişken rol oynatması olabilir, (ancak aynı byte boyutundaki 2 büyük dosyadan bir harfin yeri değişik olsun hash değeri farklı çıkıyor, bu konuya girersek iyice az sonraki teorimi desteklemiş oluruz)..
Diyeceğim şudur ki:
Diyelim ki elimizde 10.999.200 Byte değerinde bir dosya var ve karşı tarafa yolladık. Karşı tarafta hash değeri alınırken byte değerine ve dosyanın belirli yerlerinden alınan örnekler kullanıldı ve her ne kerametse dosya sağlam gönderildiği için bu değerler tuttu..
Hash sistemlerine güvenmemek gerek, ki fazla belge okumadım büyük ihtimalle üreticileri de bunu yazmışlardır, %100 doğru çalışan bir sistem değil, olmaması gerek..
Neden mi? Tersi durumda, yani hash sistemi %100 güvenli, en ufak bir değişiklikte kontrol numarası da değişecek olsa..
10.999.200 byte değerindeki bütün diğer dosyalarda farklı bir hash kontrol numarası değerini vermesi gerekecekti. Bu da o bayt değeri için o hash kontrol numarasını özel yapardı.
O zaman bütün 10.999.200 byte’lık dosyayı yollamamıza gerek kalmazdı :)

Sadece hash kontrol numarası ve “10.999.200″ sayısını gönderirdik, karşı tarafta (teorik bir) reverse-md5 betiği bu değerlerin özel olduğu asıl göndermek istediğimiz dosyayı kendisi üretirdi..
Düşünsene bütün harddiski kopyalayacağına sadece 2 kb veri yolla, karşı taraf üretir..
Hash sistemlerinde hata payı azaldıkça benim dediğim teoriye yaklaşır, çoğaldıkça da güvenilirlik riske girer.. “Çok çok az” hata payı var derseniz, o zaman teorikreverse-md5 betiğimiz o bayt değerinde, aynı md5sum’a sahip 4-5 dosya üretir (olasılıkları). Sonra da sha1sum ya da başka bi ölçüt kullanarak doğruyu eleyip diğerlerini silebiliriz. Yine indirme sıfır, dosya elimde..

Umarım sıkılmadan ve demek istediğimi anlayarak okuyabildiniz. Eğer varsa bilen bi eleman, bunların çalışma-kontrol sisteminin nasıl işlediğini ve güvenlik durumunu anlatırsa çok iyi olur. Gördüğünüz gibi çıldıracam.. deli

Sosyal olalım!

Bir geek blogunda tuhaf kaçsa da bugün bilgisayarla uğraşmayın! Çıkın dışarı dolaşın. Bırakın bu sanal işleri. Sosyal olun biraz, rahat kıyafetler giyip dışarı çıkın.
Komşunuzun aksi suratını önemsemeyin. Sadece size uzaylı gibi bakanlardan biri.. Hatta yüzünüze karşı “iyi ki böyle evladım yok” demiş bile olabilir. Boşverin, vurun kendinizi yola. Hemen sokağın başındaki taşmış çöp bidonuna aldırış etmeyin. Kokusundan kurtulmak için karşıya geçmeyi deneyin. Yeşil yanmasını bekleyin, yansa da ne olur ne olmaz yurdumun şöförleri. Siz dikkat edin! Otobüs durağına giderken sırf sizin tipinize gıcık olduğundan size omuz atan uyuzu adamdan saymayın. Bugün sosyalsiniz, bilgisayarsız.
Otobüs kuyruğu görünce şaşırmayın. ite kalka binin otobüse. “Arkaya doğru ilerleyelim” dediklerinde ilerleyin. Koyun gibi hissetmeyin sakın. Ter kokusundan kaçın, hava alan bir yerine gidin otobüsün. Tabi öndeki araba yol vermeyince salyalar saçarak küfreden şöföre de acıyın sadece.
Bu arada herkesin baktığı yöne boşuna bakıp da canınızı sıkmayın.. Onlar sadece etrafa dağılmış insan parçacıkları. Her gün olan şey, kazalar..
Zaten bunlarla uğraşırken ineceğiniz yer geldi, ite kalka inin otobüsten. indiği gibi tüküren kütleyi insandan saymayın. Sahile ilerleyin.. Bir banka oturun, ama sakın yan banktaki tinerciyi rahatsız etmeyin. Canınızdan olmak istemezseniz. Kalkın, gezin.. Aman dikkat basmayın çimlere! O çimlerde uzanıp piknik yapan aileleri de görmezden gelin. “Ne bakıyon lan” tarzında bir hoşgeldine gerek yok boş yere..
Koyun olun yani o kalabalıkta..

Ya da boşverin bunları, açın bilgisayarı. Yan tarafta kahve-kola ne severseniz. Pijamalarınızla kendi kurduğunuz sanal dünyada yaşayın. Elbette “sosyal” ortamdan gelip sizin temiz sanal dünyanızı b*k etmek isteyenler olacaktır. Engelleyin, banlayın.. Dışardan iyidir.. Linuxunu aç, kurcala ne istersen! Bırak “asosyal” desinler sana, koyun olmaktan iyidir!

“Tolga Salgar’ın taa ne zamanki gameworld’deki yazısından düzenlenmiştir.”

Zsh!

Ne kadar zamandır bir farklılık yapmayı düşünüyordum. Terminalde “bash”dan “bash”ka alternatiflerim de vardı, zsh, ksh gibi.. Gentoo forumlarındaki zsh aşıkları başlığını görünce dayanamadım zsh ve zsh-completion paketlerini kurup zsh komutu vererek bilmediğim bi aleme daldım..

Nedir yani?
Bildiğiniz komut satırı işte, şekli biraz değişik. Yine tab tuşuyla tamamlama var ama biraz daha akıllıca yapmışlar bu elemanlar. Ayrıca eix, equery ve genlop’da bile portage paket ismi tamamlaması yapabiliyor (hayvan!)
Ancak biraz ayarlamam gerekti, .bashrc gibi bir .zshrc bakındım ve buldum da. Forumlardan wikilerden derken .zshrc’yi kıvama getirdim.
Ham halde kullanınca zsh’dan nefret edebilirsiniz. Home, End, Del gibi tuşlar çalışmayabiliyor. Ama bu sanki bash’dan daha bi esnek, parmaklanabilir..
Neyse, şöyle böyle derken deneye yanıla bir .zshrc ürettim kendime. Tabi bu işi abartıp konsolu şöyle gösteren arkadaşlar da yok değil nette:
zsh

(Boru değil o başta yazan yüzde de bataryanın doluluk oranı)

Ben sade severim diyip daldım rc dosyasına. İşte açıklamalarıyla benim örnek rc:

Bu kısımda standart gentoo otomatik tamamlamalar vs belirlenmiş, bi de arkasına case falan bi fonksiyon atmışım ama nedir hatırlayamıyorum, kesin işe yarıyordur :)  Sanırım Terminal adı ayarlama meselesi..

autoload -U compinit promptinit
compinit
promptinit; prompt gentoo
zstyle ':completion::complete:*' use-cache 1
export PS1='(%n @ %m) %#'
exec 2>>(while read line; do
print '\e[91m'${(q)line}'\e[0m' > /dev/tty; done &)
chpwd() {
[[ -t 1 ]] || return
case $TERM in
sun-cmd) print -Pn "\e]l%~\e\\"
;;
*xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;%~\a"
;;
esac
}

Bu bölümde de eğer root’san başta yazan isim kırmızı, değilsen yeşil olsun ayarlanması..

if [ `/usr/bin/whoami` = 'root' ]
then
export PS1="%{${fg_bold[red]}%n%}@%{${fg_bold[blue]}%}%m: %~ %{${fg[white]}%}%# "
else
export PS1="%{${fg_bold[green]}%n%}@%{${fg_bold[blue]}%}%m: %~ %{${fg[white]}%}%# "
fi

Burda bi history dosyası ayarlıyoruz ki yukarı basınca eski komutlar gelsin. Bunu bile biz yapıyoz diye sevdim.. Evet manyağım..

export HISTFILE=~/.zsh_history
export HISTSIZE=50000
export SAVEHIST=50000
# eval `dircolors -c`

Setopt zımbırtısı seçenek belirleme.. baya işe yarıyor, kurcalayın..

setopt autopushd pushdminus pushdsilent pushdtohome
setopt autocd
setopt cdablevars
setopt ignoreeof
setopt interactivecomments
setopt nobanghist
setopt noclobber
setopt HIST_REDUCE_BLANKS
setopt HIST_IGNORE_SPACE
setopt SH_WORD_SPLIT
setopt nohup
setopt nonomatch

Bu kısımda home end falan ayarlamaları yaptım. Sizin makinanızda tuş girdileri farklı olabilir..

bindkey "\e[2~" transpose-words
bindkey "\e[3~" delete-char
bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
bindkey '\e[2~' overwrite-mode
case $TERM in (xterm*)
bindkey '\eOH' beginning-of-line
bindkey '\eOF' end-of-line
esac

Man sayfaları için otomatik tamamlama, belki lazım olur..
Kodun şu haline bak, yazan manyak olmalı..

compctl -f -x 'S[1][2][3][4][5][6][7][8][9]' -k '(1 2 3 4 5 6 7 8 9)' \
- 'R[[1-9nlo]|[1-9](|[a-z]),^*]' -K 'match-man' \
- 's[-M],c[-1,-M]' -g '*(-/)' \
- 's[-P],c[-1,-P]' -c \
- 's[-S],s[-1,-S]' -k '( )' \
- 's[-]' -k '(a d f h k t M P)' \
- 'p[1,-1]' -c + -K 'match-man' \
-- man

Normal aliaslar, kafanıza göre takılın..

alias ls='ls --color=auto -F'
alias lsd='ls -ld *(-/DN)'
alias lsa='ls -ld .*'
alias f='find |grep'
alias c="clear"
alias dir='ls -1'
alias gvim='gvim -geom 82x35'
alias ..='cd ..'
alias mem="free -m"

Bu kod, bir klasörün sadece adını yazarak o klasöre cd ile girmenizi sağlıyo.. Walla ben uyuşuk adamım..

compctl -/ cd

Bunlar da tamamlama ile ilgili daha garip şeyler..
PID tamamlama falan iyice geek stuff’a kaçtık, elemanın birinden buldum, bakının..:)

# allow approximate
zstyle ':completion:*' completer _complete _match _approximate

zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric

# tab completion for PID :)
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always

# cd not select parent dir.
zstyle ':completion:*:cd:*' ignore-parents parent pwd

Belirli dosyaların adını girerek direkt olarak ilişkilendirdiğiniz programla açın..

compctl -g '*.(jpg|jpeg|bmp|tiff|pcx|pbm|pgm|ppm|xpm|png)' eog
compctl -g '*.(gif)' gthumb
compctl -g '*.(avi|mpg|mpeg|flv)' mplayer

Bunu yazan adamın zihnini özellikle merak ediyorum;
eğer son işlem başarılı sonuçlandıysa yeşil bir gülen surat ( :)  ), başarısız sonuçlandıysa kırmızı bi üzgün surat ( :(  ) yazdırıyor..
Not: Bunu kullanırsanız o yukardaki yeşil-kırmızılı root kullanıcısı betiğini kullanamazsınız..

PROMPT=$'%{\e[0;32m%}%B[%b%{\e[0m%}%n%{\e[0;32m%}@%{\e[0m%}%(4c,./%1~,%~)%{\e[0;32m%}%B]%b% %(?,%{\e[0;32m%}:%)%{\e[0m%},%{\e[0;31m%}:(%{\e[0m%}) %# '

Eveet. Sevdiyseniz başlayabilirsiniz zsh’a. Ha bu arada unutmadan, zsh’ı öntanımlı kabuk yapmak isterseniz komut:
usermod -s /bin/zsh kullanıcı_adi
Tabi bunu root olarak verin. Root kullanıcısı değilseniz bir alternatif yöntem de .bashrc dosyanıza :
exec zsh
satırı eklemek, başlar başlamaz zsh’a geçiyor, aynı şey yani. Ama bu yöntem root kullanıcısında güvenlik amacıyla engellenmiş sanırım..

Bu kadar, Kolay gelsin :)

Not: O resmini gördüğünüz terminal gibi şekil yapmak isterseniz burdan buyrun :[link]

Chroot sisteme giriş (X ile)

Klasör altına derlediğiniz/kurduğunuz sistemin grafiksel ortamdaki ayarlamalarını yapmak ya da normal sisteminiz gibi kullanmak gibi amaçlarla giriş yapmanız gerekiyorsa, buyrun..
Biraz kurcalayarak becerdim ama modüllere ve kernel farklılığına hassasiyeti olabilecek bi yöntem.
Anlattığım yöntem gentoo altında uygulanmış/denenmiş hali, gentoo da olsa diğer dağıtımları kullananların daha kolay kavraması için (sistemimde ve chroota) PATH altına kendim yerleştirdiğim “service” betiğini kulanıyorum. Betiğin işlevi çok basit, “service servis_adı start/stop/restart/vs..”
İlgilenen gentoo kullanıcıları için işte betik:

#!/bin/bash
service=$1 ; shift
/etc/init.d/$service “$@”

Neyse, anlatıma geçelim. Önce ctrl-alt-f1 ile konsoldan root girişi yapıp kullandığımız X ortamını kapatıyoruz:
service xdm stop (ya da killall gdm/kdm)

Kullanıyorsak birincil ekran kartı sürücü modülünü kaldırıyoruz:
rmmod nvidia (ati ise fglrx vs..)

Çalışan xorg.conf’u chroot’a kopyalıyoruz, eskisinin yedeğini alarak..
mv chroot_dizini/etc/X11/xorg.conf chroot_dizini/etc/X11/xorg.conf.yedek
cp /etc/X11/xorg.conf chroot_dizini/etc/X11/xorg.conf

Şimdi rc-status komutu ile çalışan servisleri görüp, local hariç hepsini kapatıyoruz:
service servis_adı stop

Şimdi dizine chroot girişi yapıyoruz:
cd chroot_dizini
mount -o bind /etc etc/
mount -o bind /dev dev/
mount -o bind /proc proc/
mount -o bind /dev/pts dev/pts
(bu içerde terminaller çalışsın diye)
chroot . /bin/bash –login

İşimize yarayan servisleri chroot içinde açıyoruz, açmak için “restart” kullanmamız gerek, sistem hafiften aptallaşıyor çünkü artık :)
service servis_adı restart

Birincil sürücü modülümüzü chroot modüllerinden yüklüyoruz. Eğer kernel sürümü/adı farklıysa bu adım hata verebilir, chroot’taki xorg.conf’u düzenleyerek vesa sürücüsü kullanmanız gerekebilir.
modprobe nvidia (fglrx bla bla..)

Artık gdm, kdm gibi komutlarla X sunucuyu açabiliriz. Servislere bu kadar önem vermeden, sadece ekran ayarlamasıyla da halledebilirdik, ancak bu şekilde neredeyse herşeyin (işlemci seviye ve parlaklık appletleri/ayarlayıcıları gibi) çalışmasını sağladık.

Çıkışta ise bu işlemleri adım adım geri uygulayabilir, ya da kısaca “init 6” komutu vererek sistemi yeniden başlatabilirsiniz..

←Older