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

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. İndiğ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-bira 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:

(Not: “user@computer:$” satırlarını önemsemeyin)

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..

user@computer:$
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ı..

user@computer:$
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..

user@computer:$
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..

user@computer:$
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..

user@computer:$
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ı..

user@computer:$
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..

user@computer:$
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..

user@computer:$
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..:)

user@computer:$
# 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..

user@computer:$
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..

user@computer:$
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..

GRUB with Reiser4 howto

Reiser4, a.k.a wife killer fs [link] + GRUB
Here it is, i won’t warn you about nothing, if you don’t know what the hell are you doing, don’t!

Create >20mB ext2 partition and mount as /boot
I’ll say /boot as sda1 and root directory (/) is sda3

mkdir gdeneme
sudo mount /dev/sda1 gdeneme
sudo cp -aR /boot/* gdeneme/
sudo umount gdeneme
rmdir gdeneme

# Now boot sda1 as /boot really
sudo mount /dev/sda1 /boot

Real shit:
What you need:
grub-0.97 [link]
libaal-1.0.5 [link]
reiser4progs-1.0.5 [link]
grub-0.97-libaal-1.0.5-reiser4progs-1.0.5.patch [link]

Create a seperated /grub directory and untar all of this into grub dir.

Note: if your box is x86_64, don’t forget export that m32 shit:
export CC="gcc -m32"

# exporting temporary LDFLAGS
export LDFLAGS=-L/grub/r4/lib CPPFLAGS=-I/grub/r4/include

We’ll create a directory (like r4) and install into this. First, aal libraries:
cd /grub/libaal-1.0.5
./configure --prefix=/grub/r4
make
make install

Now our old reiser4progs:
cd /grub/reiser4progs-1.0.5
./configure --prefix=/grub/r4
make
make install

into grub dir:
cd /grub/grub-0.97

patch:
patch -p1 < ../grub-0.97-libaal-1.0.5-reiser4progs-1.0.5.patch

and compile (look, this time prefix=usr)
./configure --prefix=/usr
make

Control:
ls /grub/grub-0.97/stage2/*1_5

if you see this files: e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 iso9660_stage1_5 jfs_stage1_5 minix_stage1_5 reiser4_stage1_5 reiserfs_stage1_5 ufs2_stage1_5 vstafs_stage1_5 xfs_stage1_5

you can OVERWRITE:
make-install

Last one, re-write grub:
grub-install /dev/sda

And edit /boot/grub/menu.lst if neccesary.

Reference: [link]

Yeni mime türü (mime-type) oluşturma

Taze program yazan kişilerin başına dert olabilecek bir olay: Programınızın ürettiği dosyaların kde/gnome/xfce/blabla altında hiçbir ayar yapmadan, tıklayınca programınızla beraber çalışmasını istersiniz. Bilinen dosya türlerinden biri ile çalışmıyorsanız işiniz zor. Bilemiyorum bu işlemi herhangi bir geliştirme ortamı yardımıyla yapılan programlar otomatik olarak hallediyor mu ama, çift tıklayınca “ilişkilendirilmiş uygulama yok” hatasına kesin çözüm yollarından birisi olarak yepyeni, cillop gibi bir mimetype üretmeyi anlatacağım.

Programınızın ürettiği bir dosyanın mime türünü “file dosya_adi” komutu ile görebilirsiniz. Anlatacağım yöntem, olabilecek en kötü ihtimallerden olan, yalnızca “data” çıktısına sahip dosyalar için işe yaradı.

Programınızı çalıştırmak için gerekli komutun “programim” olduğunu varsayıyorum. Ürettiğiniz/açmak istediğiniz dosyanın uzantısı da “weq” olsun (nasıl salladım ama).

Bu arada programın komut satırından dosya açabildiğini bilmemiz gerek, “programim /home/blabla/dosya_adi” komutu ile açabiliyor olması gerek.

Yeni mime türü oluşturmaya başlayalım, öncelikle/usr/share/mime/packages/programim.xml diye bir dosya oluşturuyoruz. İçeriği şu şekilde ayarlıyoruz:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
   <mime-type type="application/programim">
     <comment>Programim</comment>
     <glob pattern="*.weq"/>
   </mime-type>
</mime-info>

sonra, /usr/share/mime-info/programim.mime :

application/programim
	ext: weq

/usr/share/mime-info/programim.keys :

application/programim:
	description=Benim Programim Walla
	default_action_type=application
	short_list_application_ids_for_novice_user_level=programim
	category=Documents/Data

/usr/share/applications/programim.desktop :

[Desktop Entry]
Encoding=UTF-8
Name=Programım
Comment=Bu benim öyle gıcıklık olsun diye yazdığım bi program
Exec=programim %f
Icon=/usr/share/benim_simgem.png
Terminal=false
Type=Application
Categories=GNOME;GTK;Game; #(artık neyse kategoriniz yazarsınız)
StartupNotify=true
MimeType=application/programim;

Son olarak, /usr/share/application-registry/programim.applications :

programim
	command=programim
	name=Programim
	can_open_multiple_files=false
	expects_uris=false
	requires_terminal=false
	mime_types=application/programim

Bitirdikten sonra da root olarak “update-desktop-database” komutu verirseniz, artık “.weq” uzantılı dosyalara çift tıkladığınızda “programim” ile açılacaktır. Bunu da artık atarsınız kurulum prosedürünün bi kenarına, onu da mı anlatayım..