Kategoriler
Anlatım Genel Linux

Embed and Subset Fonts

Assalamu alaikum (Peace be upon you) dear visitor,

I have faced with font embed and subset problem every time I submit my research paper to IEEE or ACM conference or journal. In this article, I am going to explain how I embed and subset fonts in Ubuntu 14.04.1 LTS 64 bit. Here is my solution:

  1. Open terminal.
  2. Update repository.
  3. Install texlive.
  4. Install texlive-publishers.
  5. Install ghostscript.
  6. Create a shell script (sh) file in the folder that has your (IEEE, ACM) tex file.
  7. Copy the code below and paste it to the shell script file.
  8. Grant the execution permission and run it!

Congratulations! Now you have a pdf with embeded subset fonts.

Assalamu alaikum (Peace be upon you) 🙂

#!/bin/bash

## do not write tex extension
## only write tex file name
TEX_FILENAME=””
## do not write bib extension
## only write bib file name
BIB_FILENAME=””

if [ $# == 1 ]; then
TEX_FILENAME=$1
BIB_FILENAME=$1
elif [ $# == 2 ]; then
TEX_FILENAME=$1
BIB_FILENAME=$2
else
echo “This script requires two parameters to generate pdf with embeded subset fonts. These are tex and bib filenames.”
echo “You must provide at least one argument. In this case, script assumes that tex and bib file has exactly the same name.”
echo “Otherwise, first one must be tex file name without extension and the second one must be bib file name without extension.”
echo “Example: shellScript.sh myTexFile myBibFile”
echo “Wrong: shellScript.sh myBibFile.bib myTexFile.tex”
echo “Wrong: shellScript.sh myBibFile myTexFile.tex”
echo “Wrong: shellScript.sh myBibFile.bib myTexFile”
echo “Wrong: shellScript.sh myTexFile.tex myBibFile”
echo “Wrong: shellScript.sh myTexFile myBibFile.bib”
echo “Wrong: shellScript.sh myTexFile.tex myBibFile.bib”

exit 1
fi

## globals
LATEX_EXTENSION=”.tex”
BIBTEX_EXTENSION=”.bib”
DVI_EXTENSION=”.dvi”
PS_EXTENSION=”.ps”
PDF_EXTENSION=”.pdf”
AUX_EXTENSION=”.aux”
BBL_EXTENSION=”.bbl”
BLG_EXTENSION=”.blg”
LOG_EXTENSION=”.log”
SYNCTEX_EXTENSION=”.synctex”
GZ_EXTENSION=”.gz”

## create DVI file and update references
latex $TEX_FILENAME
bibtex $BIB_FILENAME
latex $TEX_FILENAME
latex $TEX_FILENAME

## convert DVI to PS
#dvips -Ppdf -G0 -ta4
dvips -Ppdf -G0 -ta4 $TEX_FILENAME

## convert PS to PDF
## in the mean time embed font subsets
ps2pdf -dCompatibilityLevel#1.4 \
-dPDFSETTINGS#/prepress \
-dAutoRotatePages#/None \
-dCompressPages#true \
-dASCII85EncodePages#false \
-dUseFlateCompression#true \
-dEmbedAllFonts#true \
-dSubsetFonts#true \
-dMaxSubsetPct#100 \
-dConvertCMYKImagesToRGB#false \
-dAutoFilterColorImages#true \
-dColorImageFilter#/DCTEncode \
-dEncodeColorImages#true \
-dDownsampleColorImages#true \
-dColorImageDepth#-1 \
-dColorImageResolution#300 \
-dColorImageDownsampleThreshold#1 \
-dColorImageDownsampleType#/Bicubic \
-dAutoFilterGrayImages#true \
-dGrayImageFilter#/DCTEncode \
-dEncodeGrayImages#true \
-dDownsampleGrayImages#true \
-dGrayImageDownsampleThreshold#1 \
-dGrayImageDownsampleType#/Bicubic \
-dGrayImageDepth#-1 \
-dGrayImageResolution#300 \
-dMonoImageFilter#/CCITTFaxEncode \
-dEncodeMonoImages#true \
-dDownsampleMonoImages#true \
-dMonoImageDownsampleThreshold#1 \
-dMonoImageDownsampleType#/Bicubic \
-dMonoImageDepth#-1 \
-dMonoImageResolution#600 \
“$TEX_FILENAME$PS_EXTENSION” “$TEX_FILENAME$PDF_EXTENSION”

## remove unnecessary files automatically
rm $TEX_FILENAME$AUX_EXTENSION
rm $TEX_FILENAME$DVI_EXTENSION
rm $TEX_FILENAME$PS_EXTENSION
rm $TEX_FILENAME$BBL_EXTENSION
rm $TEX_FILENAME$BLG_EXTENSION
rm $TEX_FILENAME$LOG_EXTENSION

Kategoriler
Anlatım Genel Software Defined Networking

How To Install Open vSwitch 2.3.0 to Ubuntu 14.04.1 LTS

Assalamu alaikum wa rahmatullahi wa barakatuh,
Peace be upon you dear visitor 🙂

In this tutorial, I’m going to show you how to install Open vSwitch 2.3.0 in your Ubuntu 14.04.1 LTS. I modified the installation code in Mininet to do that.

If you want to install Mininet and other things (e.g. cbench, wireshark, pox and etc.) from scratch, you should modify the installation script in Mininet, too. Before modifying the installation code, open install.sh in mininet/util directory. Then;

  • Change OVS_RELEASE=1.4.0 to OVS_RELEASE=2.3.0.
  • If you have previous version of Open vSwitch installed in your system, you should remove it. Thus, use remove_ovs function to do that. You can either run this code separately or add to the function all.
  • Comment out ovs line in the function all and add function ubuntuOvs in it.

function all {

echo “Installing all packages except for -eix (doxypy, ivs, nox-classic)…”
kernel
mn_deps
# Skip mn_dev (doxypy/texlive/fonts/etc.) because it’s huge
# mn_dev
of
install_wireshark
remove_ovs
ubuntuOVS
pox
oftest
cbench
echo “Enjoy Mininet!”
}

The script that I use to install Mininet, OpenFlow, OpenFlow v1.3, Wireshark, Floodlight and Open vSwitch 2.3.0 into SDN_RAD folder under home directory is here. Use it at your own risk!

Assalamu alaikum wa rahmatullahi wa barakatuh 🙂

Kategoriler
Genel Software Defined Networking

Floodlight Exact/Prefix IP Matching Tutorial

Assalamu alaikum (Peace be upon you) dear friend =)

In this tutorial, I’m going to show you how to make exact IP matching in the Floodlight controller using Mininet, OpenFlow (of course) and Open vSwitch.

Let’s begin with the topology. We have me (Sadican), my workmate (Workmate) and a server (Bilmuh). All of them are connected to an Open vSwitch. Overall network is something like that:

tut_network_topology

Here are the IP addresses and switch ports for each node:

Node Name IP Address Connected Physical SW Port
Sadican 10.0.0.11 1
Workmate 10.0.0.55 2
Bilmuh Server 10.0.0.99 3

Me and my workmate want connect to the Bilmuh server. Whenever we try to connect to the server, (if there is no corresponding rule in the switch) switch sends packet-in message to the Floodlight (FL) controller. FL takes this message and extracts IP addresses. Then, it generates exact IP matching rules. There are several important things to do that.

  • First of all, FL has to know connected ports of nodes, which are given.
  • Secondly, controller must create 4 flow-mod add rules. 2 Rules for ARP packets from one node to another (e.g. Sadican to Bilmuh server and reverse) and 2 rules for TCP connections.
  • FL must specify data layer type in matching. For TCP, it is 0x800 and for ARP, it is 0x806. Do not forget that!
  • FL must also set both of the network masks to 32 bits (full) for source and destination IP addresses.

For TCP Connections:
match.setWildcards(Wildcards.FULL.matchOn(Flag.IN_PORT)
.matchOn(Flag.DL_TYPE).matchOn(Flag.NW_SRC).matchOn(Flag.NW_DST).withNwSrcMask(32).withNwDstMask(32));
match.setDataLayerType(Ethernet.TYPE_IPv4);
match.setNetworkProtocol(IPv4.PROTOCOL_TCP);

For ARP Connections:
match.setWildcards(Wildcards.FULL.matchOn(Flag.IN_PORT).matchOn(Flag.DL_TYPE).matchOn(Flag.NW_SRC).matchOn(Flag.NW_DST).withNwSrcMask(32).withNwDstMask(32));
match.setDataLayerType(Ethernet.TYPE_ARP);
match.setNetworkProtocol(IPv4.PROTOCOL_TCP);

You can download the Mininet script from here.

You can download the Floodlight module from here. 

If you will test this scenario, you should disable Forwarding and LearningSwitch modules. To do so, open floodlightdefault.properties file and delete the modules. Then, add our module (a.tests.ExactIPMatchingTutorial) in it. Since, they also establish paths between nodes. Here is a screenshot from FL’s UI:

Remarks:
If network source and destination masks are less than 32, exact IP matching becomes prefix matching. Actually, you can try it by changing withNwSrcMask and withNwDstMask to something like 16 or whatever. You will see that there will be less than 8 rules in the switch. It is because some rules overlap and they are removed during addition operation as specified in the OpenFlow version 1.0. Besides, exact IP addresses become prefixed IP addresses. For example, 10.0.0.11 becomes 10.0.0.0.

tut_fl_ss_exact_ip_matching

Kategoriler
Anlatım Software Defined Networking

IP Prefix Matching and Flow Insertion using Static Flow Pusher API of Floodlight

Assalamu alaikum wa rahmatullahi wa barakatuh,
Peace be upon you dear visitor 🙂

In this tutorial, I created a simple topology in Mininet (MN). Topology consists of one switch and two hosts. One of hosts is client and another is server. The topology is illustrated as below.

fl_ip_prefix_match_topo

I disabled Forwarding and LearningSwitch modules of Floodlight (FL) by deleting them from /floodlight/src/main/resources/floodlightdefault.properties. Thus, I was able to see that my code works perfectly. If you disable these two modules and run your MN topology code, you see that client and server can not communicate with each other. Because, there will be no flow entry in the switch to forward packets.

In order to provide connection between these two nodes, at first we must insert ARP flow entry to the switch so that client can find server’s MAC address. I used Static Flow Pusher API of Floodlight to insert flows. In the Static Flow Pusher API page, there is a python script that allows developers to insert flow entries to switches. The following two flow codes do the job.

arp_client_server = {
 'switch':"00:00:00:00:00:00:00:01", # DPID of SW
 'name':"arp_client_server", # unique name of flow entry
 'cookie':"1", # opaque identifier
 'priority':"32767", # highest flow priority
 'ingress-port':"1", # packet that comes in from port ### of sw
 'ether-type':"0x806", # hex of ethernet type of ARP
 'active':"true", # activate flow entry
 'actions':"output=2" # forward matched packet from port ### of sw
 }

arp_server_client = {
 'switch':"00:00:00:00:00:00:00:01",
 'name':"arp_server_client", 
 'cookie':"2",
 'priority':"32767",
 'ingress-port':"2",
 'ether-type':"0x806",
 'active':"true",
 'actions':"output=1"
 }

arp_client_server provides ARP packet forwarding from client to server. arp_server_client does the reverse.

As a next step, tcp flow entries must be inserted to the sw. To do so, I wrote the following codes.

ip_host_server = {
 'switch':"00:00:00:00:00:00:00:01",
 'name':"ip_host_server",
 'cookie':"3",
 'priority':"32767", 
 'ether-type':"0x800", # for TCP
 'src-ip':"10.0.0.0/8", # source IP prefix matching
 'active':"true",
 'ingress-port':"1",
 'actions':"output=2"
 }

ip_server_host = {
 'switch':"00:00:00:00:00:00:00:01",
 'name':"ip_server_host",
 'cookie':"4",
 'priority':"32767", 
 'ether-type':"0x800",
 'src-ip':"10.0.0.0/8", 
 'active':"true",
 'ingress-port':"2",
 'actions':"output=1"
 }

Notice that, I used IP prefix matching in src-ip tag. That means, all packets sending from hosts with 10.0.0.0/8 match with this entry. If you do the same, you will have such a switch as shown in the figure below.

fl_ip_prefix_match_sw

After insertion of required flow entries, I ping server from host. The result is as follows:

fl_ip_prefix_match_mn

If you examine the ping result shown above, you will realize that ping time is a lot less when you use Forwarding or LearningSwitch module. That is because, switch already has required flow entries to forward packets.

Assalamu alaikum wa rahmatullahi wa barakatuh 🙂

Kategoriler
Anlatım Software Defined Networking

Floodlight Unknown Host Discovery

Assalamu alaikum wa rahmatulllahi wa barakatuh.
(Peace be upon you dear visitor.)

In my tests, I saw that Floodlight discovers an unknown host per switch as in the figure below.

fl_unknown_host_discovery

I have Floodlight (FL), Mininet (MN) and Open VSwitch (OVS) installed in the same machine where Ubuntu 14.04 LTS x64 is running. As far as I know, OVS 2.0.1 supports kernel from 2.6.32 to 3.10. Since my Ubuntu kernel is 3.13, this may be the source of problem. Update of OVS or downgrade of Ubuntu kernel may solve the problem but I have another simple, not that good, solution.

With the help and advise of Hung-Wei Chiu from Floodlight-Developers group, I noticed that there are many IPv6 packets in the FL logs as he had told. This unknown IPv6 addresses were the same as MAC addresses of switches or hosts. As a solution to this problem, I disabled IPv6 in my computer.

In order to disable IPv6, you must append the three lines of code as in below to the file located in /etc/sysctl.conf . Note that you need root privileges.

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

After modification, you can either reboot your computer or execute sudo sysctl -p command in terminal.

However, this method may not work as expected. (Well, it did not work for me) Alternatively, there is another way of disabling IPv6 in Linux. Using your favorite text editor, open /etc/default/grub file. Then, add ipv6.disable=1 to the GRUB_CMDLINE_LINUX line. In my computer (Ubuntu 14.04 LTS x64), it was like:

GRUB_CMDLINE_LINUX=""

After change:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

After this modification, you must update grub with executing the command sudo update-grub . Finally, reboot your computer and problem solved!

Assalamu alaikum wa rahmatulllahi wa barakatuh.

Kategoriler
Anlatım Linux

Sublime Text 2 Yükleme (Linux Mint)

Esselamu aleykum ve rahmetullah ve berekatuhu,

Siz de benim gibi her seferinde bir kod dökümanını açmak için uzun uzun sublime uygulamasını koyduğunuz dizinden seçmekten bıktıysanız aşağıda anlattıklarımı uygulayabilirsiniz. Bir kabuk kodu (shell script) yazdım. Çok basit bir kod. Siz alıp özelleştirebilirsiniz. Başka kontroller ekleye de bilirsiniz. Ben ihtiyaç duymadım. Benim kullandığım Linux (linuks diye okunur bu arada sakın linaks falan demeyin – Linus Torvalds böyle okuyor ben bilmem) dağıtımı Mint Xfce. Bu yüzden çözümüm de bu dağıtıma göre oldu. Ama sanıyorum Ubuntu için de oluyor. Daha doğrusu Ubuntu temelli dağıtımlar için diyeyim. Gelelim çözüme:

[well_box]

#!/bin/bash
#indirilen belgeleri klasöre çıkartma
tar xvjf Sublime*Text*2*.tar.bz2
#uygulama klasörünü opt dizinine taşıma
sudo mv -f Sublime*Text*2 /opt/
#komut satırından açabilmek için sembolik bağlantı oluşturma
sudo ln -s -f /opt/Sublime*Text*2/sublime_text /usr/bin/sublime
#uygulama için varsayılan açma dosyası oluşturma
#(launcher demek istiyorum ama İngilizce’ye çeviremedim)
#(Tırnak içindeki alanı keyfinize göre düzenleyebilirsiniz.)
echo “[Desktop Entry]
Name=Sublime Text 2
GenericName=Text Editor
Comment=Edit text/code files
Keywords=Plaintext;Write;
Exec=sublime
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=/opt/Sublime Text 2/Icon/256×256/sublime_text.png
Categories=TextEditor;IDE;Development
Actions=Window;Document;
X-Ubuntu-Gettext-Domain=sublime” > sublime.desktop
#açma dosyasını olması gereken dizine taşıma
sudo mv -f sublime.desktop /usr/share/applications/

[/well_box]

Bu kodları bir kabuk kodu dökümanına (Örn. ıdıVeBıdı.sh ) yapıştırıp kullanabilirsiniz.

UYARI: Kopyala-yapıştır işleminden sonra 10. ve 23. satırlardaki tırnak işaretlerini tekrar silip tekrar yazmayı unutmayın. Yoksa hata alırsınız.

Allah ‘a emanet olun. Selam, dua ve muhabbetle Efendim…

Kategoriler
Anlatım Linux

Xrandr Komutu ile Çift Monitör Ayarı

 

Allah’ın selamı, rahmeti, bereketi, ihsanı ve ikramı üzerinize olsun,

Bu anlatımda kısaca nasıl iki ekran kullanacağınızı anlatacağım.

Diyelim ki iki tane monitörünüz var ve masaüstünü uzatarak ikisini birden kullanmak istiyorsunuz. Bunun için öncelikle monitörlerin sistemdeki adını öğrenmeniz gerekiyor. Ekseriyetle laptoplar için LVDS ve masaüstü bilgisayarlar için VGA kullanılır. Ekran uzatma işlemini yapmadan önce bunu iki bilgiyi elde etmeniz gerekiyor. Bunun için komut satırına xrandr yazmanız yeterlidir. Ekranda bilgisayara bağlı monitörlerin listesi çıkar. Hatta ayrıntılı bir listedir. Siz sadece en baştaki bilgileri kullanacaksınız (örn. LVDS1 veya VGA1 gibi.).

Xrandr Monitör Listesi
xrandr komutunu kullanarak bilgisayara bağlı monitörleri öğrenin

Daha sonra sıra, ekranların hangisinin sağda hangisinin solda olduğunu bilgisayara söylemeye geliyor. Bunun için yine aynı komutu farklı parametrelerle kullanıyoruz. Yön ayarlamasını yapmadan önce birincil ekranın hangisi olduğunu bilgisayara söylememiz gerekiyor. Bunun için:

UYARI: Tek – gibi görünenler aslında çift olacak. Yan yana iki tane yazında tek gibi gösteriyor. Kusura bakmayın. :/

xrandr –output <EKRAN01> –primary

komutunu kullanıyoruz. Son olarak da ikincil ekranın bu ekranın ne tarafında olacağını söylememiz gerekiyor. Bunun için de 4 farklı yön parametremiz var. Genel kullanımı ise şu şekilde:

 Ana ekran yukarıda: xrandr –output <EKRAN01> –above <EKRAN02>

Ana ekran aşağıda: xrandr –output <EKRAN01> –below <EKRAN02>

Ana ekran sağda: xrandr –output <EKRAN01> –right-of <EKRAN02>

Ana ekran solda: xrandr –output <EKRAN01> –left-of <EKRAN02>

NOT: Eğer ekranları uzatmak yerine iki ekrana da aynı görüntünün olmasını isterseniz same-as komutunu kullanabilirsiniz. Yani:

xrandr –output <EKRAN01> –same-as <EKRAN02>

Kategoriler
Anlatım Linux

Xrandr Komutu ile Ekran Çözünürlüğü Ayarlama

Esselamu Aleyküm ve Rahmetullah,

Geçtiğimiz günlerde bilgisayarımda bir sorun oldu. Bilgisayarımda Nvidia ekran kartı var ve Optimus teknolojisine sahip. Kısaca bilgi verecek olursam, bu teknoloji sayesinde istediğim programları harici ekran kartında çalıştırabiliyorum. Avantajı ne? Görsel olarak bilgisayarı yoracak işlemleri harici ekran kartı üzerinde yaparak performansı artırıyorum. Bunun dezavantajı pili çok kullanıyor olması. Eğer basit görsel işlemler yapıyorsam, örneğin yazı yazmak, metin okumak gibi, karmaşık görüntü işlemleri yapmadığım için ekran kartına ihtiyacım olmuyor ve dahili ekran kartı üzerinden işimi halledebiliyorum. Böylece daha az pil harcamış oluyorum. Hem de performans kaybım olmuyor.

Konumuza geri dönelim. Nvidia Linux dağıtımları için bu teknolojinin yazılım desteğini sağlamıyor. Geçtiğimiz yıllarda bir proje çıktı. Adı Bumblebee. Transformers ‘taki Bumblebee bu. Teknolojinin adı Optimus olunca, bu desteği linux için veren yazılımın adını Bumblebee koymuşlar. Başta sadece bir kişi uğraşıyordu. Şimdilerde ilgilenenlerin sayısı epey artmış. Hatta Ironhide diye bir kol daha çıktı. Bu kol ile projeyi ilk başlatan kişi ilgileniyor. Diğer grup Bumblebee’yi geliştirmeye devam ediyor.

Bende bu özelliği bilgisayarımda kullanabilmek için bu açık kaynak yazılımı yükledim. Lakin bir sorun oldu ve birden ekranımın çözünürlüğü 640×480’e düştü. Ayarlardan düzeltmeye çalıştım olmadı çünkü sadece 640×480 çözünürlüğe izin veriyordu. Yazılımı sildim, tekrar yükledim. Başka denemeler yaptım ama bir türlü düzeltemedim. En sonunda ekran çözünürlüğünü tekrar ayarlama kodunu araştırmaya başladım.

Yaptığım araştırmalar sonucunda bu işi Ubuntu’nun versiyonlarında xrandr komutunun yaptığını öğrendim. Aşağıdaki kodu kendinize uyarlayarak sizde seçeneklerin dışındaki ekran çözünürlüklerini elde edebilirsiniz. Burada dikkat etmeniz gereken bir şey var. Çözünürlük sadece o oturum için geçerli. Eğer bilgisayarı kapatırsanız, yeniden başlatırsanız veya oturumu kapatırsanız bu ayar gider. Eğer her seferinde bilgisayarın kodu otomatik olarak çalıştırmasını istiyorsanız o zaman kodu .sh uzantılı bir dosyaya yazarak başlangıçta çalıştırılacak şekilde ayarlama yapmanız lazım.

Son olarak bir şey daha var. Kod otomatik değil. Acelem olduğu için modüler olarak yazamadım. Şimdilik buradan bakarak kendi bilgisayarınıza uygulayın. İlk fırsatta her bilgisayar için uyumlu bir hale getireceğim inşaallah.

#!/bin/sh
# ekran çözünürlüğü hakkında bilgi almak için
# cvt en boy yazarak gerekli bilgileri al
echo "getting resolution information..."
cvt 1366 768
# yeni ekran çözünürlük modu oluşturmak için
# yukarıdaki komut sonucunda dönen yazıdan
# Modeline kısmından sonraki kısmı kopyala
# xrandr --newmode yazıp konsola kopyaladığın
# kısmı yapıştır
echo "creating new mode..."
xrandr --newmode "1366x768" 85.25 1366 1440 1576 1784 768 771 781 798 -hsync +vsync
# yeni ekran çözünürlük modunu sisteme eklemek için
# xrandr --addmode yazıp monitör ismini ekrana yaz
# ben laptopda çalıştığım için LVDS1 yazdım
# monitör adından sonra Modeline kısmından sonra
# yazan tırnak içindeki mod adını kopyala
# monitör adından sonra boşluk bırakarak yapıştır
echo "adding it to the system..."
xrandr --addmode LVDS1 "1366x768"
# yeni oluşturduğun ekran çözünürlüğüne geçmek için
# xrandr --output LVDS1 --mode yazıp mod adını da
# ekleyerek ekranı dinamik olarak tekrar ayarla
echo "switching to new mode..."
xrandr --output LVDS1 --mode "1366x768"
echo "WELL DONE!"
notify-send -t 1000 "Resolution mode was changed!"

İnşaallah yardımcı olmuştur. Başka bir anlatımda görüşmek dileğiyle,

Allah ‘a emanet olun (:

Kategoriler
Anlatım Linux

Xubuntu Wireless Kart Sorunu

Allah ‘ın selamı, rahmeti, bereketi, ihsanı ve ikramı üzerinize olsun (:

Uzun zamandır yaşadığım basit ama sinir bozucu bir sorunun çözümünden bahsetmek istedim.

Ubuntu, Kubuntu, Xubuntu vb dağıtımları kullanan arkadaşlar bilirler ki, kablosuz ağınızı elle (bir tuş üzerinden) kapatırsanız, tekrar açtığınızda kablosuz ağınız çalışmıyor. Hangi durumlarda olduğunu tam olarak bilmiyorum. Sanıyorum bilgisayarı kablosuz ağı donanımsal olarak kapattığınız zaman oluyor. Yani kapatmadan önce tuşla kapatıyorsunuz. Bilgisayarı tekrar açtığınızda tekrar açsanız bile yazılımsal olarak kilitli kalıyor.

Bu durumdan kurtulmak çok kolay aslında. Rfkill komutunu kullanarak açabiliyorsunuz fakat yine de sinir bozucu. Her seferinde konsolu kullanarak bu işi yapmak yerine bir kod yazdım. Kod aslında çok kısa olabilirdi fakat ben süslü bir şey olsun diye biraz uzattım.

Metin editörünüzü açıp kodu içine kopyalayın ve kaydedin. Daha sonra sağ tıklayıp izinler kısmında çalıştırma izni verin. Son olarak da sağ tıklayıp çalıştır deyin. Masaüstü bildirimleri sayesinde sonucu görebilirsiniz. Masaüstü bildirim kütüphanesi yüklü değilse ekranda herhangi bir şey çıkmayacaktır. Fakat terminalden çalıştırırsanız bildirimleri görebilirsiniz.

#!/bin/sh
# _ubuntu wireless card on-off script

 

hard=$(rfkill list wlan | grep -c “Hard blocked: yes”)
soft=$(rfkill list wlan | grep -c “Soft blocked: yes”)

 

if [ $hard -eq 1 ]
then
notify-send -t 3000 “Wlan is blocked hard! Switch card on!”
echo “Wlan is blocked hard! Switch card on!”
exit

 

elif [ $soft -eq 1 ]
then
notify-send -t 3000 “Wlan is blocked soft! It will be opened soon…”
echo “Wlan is blocked soft! It will be opened soon…”
rfkill unblock wlan
notify-send -t 3000 “Wlan is unblocked!”
echo “Wlan is unblocked!”
exit 0

 

else
notify-send -t 3000 “Wlan is unblocked already!”
echo “Wlan is unblocked already!”
exit 0
fi

Bir başka çözümde daha görüşmek dileğiyle, Allah ‘a emanet olunuz efendim (:

Kategoriler
Anlatım Linux

Linux’te Çok Tuşlu Mouse Ayarı

Merhaba sevgili okur,

Linux kullanıyorsun ve çok tuşlu farenin bazı tuşlarını kullanamıyor musun? O zaman bu makaleyi okumalısın…

Aynı dert bende de vardı. Ufak bir araştırmayla sorun halloldu. Ben Ubuntu Linux kullanıyorum ve Vx-Nano farem var. Standart tuşların dışındaki tuşları kullanamıyordum. Araştırmalar sonucunda btnx adlı bir uygulamanın bu iş için yazıldığını öğrendim.

İlk yapman gereken şey bu programı sisteme kurmak. Eğer Ubuntu kullanıyorsan synaptics kullanarak btnx ve btnx-config adlı iki paketi yükle. Daha sonra programı menülerden bulup aç. Bundan sonra ki kısmı kendin tahmin ederek çıkartabilirsin yada aşağıdaki açıklamaları okuyabilirsin. Sana yardımcı olması açısından işine yarayacak şeyleri oraya yazdım.

Program arayüzü aşağıdaki gibi… Ama sendeki farklı olabilir.

 

btnx

 

Ayar Yapma:

1- Programı açtıktan sonra “New” deyip yeni bir ayar dosyası oluşturabilirsin. Ben “Default” olan üzerinden gittim.

2- “Detect mouse & buttons” kısmından farenin her tuşu için (scrolllar için bile) denilenleri yap. O butona tıklayınca karşına bir pencere çıkacak. Çıkan pencerede sana söylenilenleri yap. O işlem bittikten sonra belirlenen tuş sayısı “Device detection” kısmında görülür. Mesela benim 7 tuş + 1 scroll (yukarı + aşağı) olmak üzere toplam 9 tuşum var.

3- Bütün tuşları bulduktan/ekledikten sonra ana pencerenin sol üstündeki tablardan “Buttons” kısmını seç ve her tuş için ilgili ayarları yap. Keycode kısmından uygun fare olayını seç. Örneğin sol tuş için BTN_LEFT yapmalısın.

4- Tüm bunlar bittikten sonra sağ altta “Restart btnx” butonu var. Ona basarak aktifleştir.

5- Eğer canın isterse sol orta kısımdaki “Mouse properties” kısmını doldurabilirsin.

6- Son olarakta uygulamayı kapatmadan önce “Backup” ile yedek almanı öneririm. Eğer bir aksilik olursa “Restore” ile ayarları geri yüklersin.

Umarım yardımcı olabilmişimdir, başka bir anlatımda görüşmek dileğiyle (: