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

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

Nvidia Optimus Teknolojisi ve Linux Dağıtımları

Merhaba sevgili okurlar,

Bildiğiniz gibi uzun süre önce Nvidia’nın ortaya çıkardığı Optimus teknolojisi Linux dağıtımları ile uyumsuz. Bu gün sizlere bu uyumsuzluğun sebebini açıklayacağım.

Öncelikle size Nvidia Optimus teknolojisinden bahsetmem gerekiyor. Bildiğiniz gibi her bilgisayarın bir ekran kartı ihtiyacı vardı. Bu ihtiyaç dahili yada harici ekran kartı kullanılarak giderilir. Fakat bir sorunumuz var. Eğer dahili ekran kartımız varsa o çok sevdiğimiz yada büyük hevesle çıkmasını beklediğimiz ayrıca son çıkan ekran kartlarını bile zorlayan oyunları oynayamayız. Fakat pil ömrümüz daha uzundur çünkü çok alengirli şeyler yapamayız ekran kartımız dahilidir ve bilgisayarı kasar. Hatta çoğu zaman çalıştırmaz.. Şimdi diğer seçeneğe gelelim. Çok harika bir ekran kartımız var. Hangi oyunu açarsan aç, oyun grafik ayarlarını ne yaparsan yap ekran kartımız bana mısın demiyor. Fakat en baba oyun oynarken öve öve bitiremediğimiz ekran kartınımız basit bir resimi açarken, bir pdf dosyasını okurken de devrede oluyor. Yani basit bir işlem için bile koca bir ekran kartını çalıştırıyoruz. Gereksiz yere fazla iş yapıyoruz. Doğal olarakta pili daha çabuk yiyoruz.
Nvidia bu tip durumlara çözüm olması için Optimus teknolojisini geliştirdi. Bu teknolojiyle birlikte bilgisayarımızda iki ekran kartını da bulundurabiliyoruz. Aslında bulundurmaktan ziyade kullanabiliyoruz. Basit işlerimizi yaparken dahili ekran kartımız devrede oluyor. Bir oyun açtığımızda ise harici ekran kartımız devreye giriyor. Önceden bunu yapamazdık. Fakat artık böyle bir teknoloji var. Aynı anda iki ekran kartı kullandığımız için bu sistemi “hibrit” olarak adlandırmışlar.
Bu sistem Microsoft’un işletim sistemlerinde gayet güzel işliyor fakat gel gelelim linuxlarda sorun var. Nvidia linux dağıtımlarında Optimus teknolojisinin kullanılması için bir sürücü yazmıyor. Şuan var olan hiçbir sürücü Optimus teknolojisini desteklemiyor. İnternette yaptığım araştırmalara görede yakın bir zamana kadar da böyle bir sürücü yazılmayacak. Aklıma gelen ilk sebep az linux dağıtımı kullanıcısının olması… Mantıklı mı? Bence değil.. Fakat elimizden gelen bir şey yok. İnşaallah en kısa zamanda Linux dağıtımları için Optimus desteği gelir..
Saat epey ilerlemiş ben yazımı yazarken, artık yatma vakti, herkese iyi geceler (: