Category Archives: Mac

MAC’te dosya ve klasörlerin gelişmiş yetkileri (ACL)

MAC OS X işletim sistemi de Linux gibi Unix temellidir ve Linux’la pek çok benzerliği bulunur. Dosya izinleri de bunlardan birisidir. Mac ve Linux’ta dosyaların sahipleri, aynı gruptaki kullanıcılar ve diğer kullanıcılar için izinleri ayrı ayrı belirlenebilir.

Dosyanın özelliklerini ve izinlerini görmek için `ls -l` komutu kullanılabilir. Örneğin:

ls -l
total 59
drwxrwxr-x+ 97 root  admin  3298  8 Ara 15:43 Applications
drwxr-xr-x+ 63 root  wheel  2142  9 Kas 12:57 Library
[email protected]  3 root  wheel   102  8 Ara 12:19 Network
[email protected]  4 root  wheel   136  9 Kas 12:59 System
lrwxr-xr-x   1 root  wheel    49  8 Eyl  2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x   7 root  admin   238  8 Ara 10:58 Users
[email protected]  3 root  admin   102  8 Ara 12:19 Volumes
[email protected] 39 root  wheel  1326  9 Kas 12:59 bin
[email protected]  2 root  admin    68  2 Eki 12:35 cores
dr-xr-xr-x   3 root  wheel  7634  8 Ara 12:19 dev
[email protected]  1 root  wheel    11  2 Eki 12:34 etc -> private/etc
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 home
[email protected]  1 root  wheel   313 23 Ağu 05:35 installer.failurerequests
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 net
[email protected]  6 root  wheel   204  2 Eki 12:35 private
[email protected] 59 root  wheel  2006  9 Kas 12:59 sbin
[email protected]  1 root  wheel    11  2 Eki 12:34 tmp -> private/tmp
[email protected] 12 root  wheel   408  2 Eki 12:39 usr
[email protected]  1 root  wheel    11  2 Eki 12:34 var -> private/var

İlk sütun dosya veya klasörün (kullanıcı, aynı gruptaki kullanıcılar ve diğer kullanıcılar için) izinlerini belirtir.

d/l => directory (klasör) / file (dosya)
r => read (okuma)
w => write (yazma)
x => execute (çalıştırma)

Bazı dosyalarda ilk sütunun sonunda + veya @ işareti olduğunu görüyoruz. Bu dosyalar için klasik POSIX izinlerine ek olarak ACL (access control list) yetkileri tanımlanmıştır. `ls -le` veya `ls [email protected]` komutlarıyla ayrıntılarını görebilirsiniz:

ls [email protected]
drwxr-xrwx   28 mustafa  staff   952  8 Ara 17:45 Desktop
drwxr-xrwx   18 mustafa  staff   612  7 Ara 09:35 Documents
drwxr-xrwx  103 mustafa  staff  3502  7 Ara 21:33 Downloads
[email protected]  37 mustafa  staff  1258  8 Ara 22:39 Dropbox
	com.apple.FinderInfo	  32 
[email protected]  19 mustafa  staff   646 30 Kas 14:25 Google Drive
	com.apple.FinderInfo	  32 

 

Şimdi gelelim, durup dururken bu ACL’den neden bahsettiğime. Sisteminizdeki pek çok hatanın kaynağı dosyalarınızın izinlerini bozmanız olabilir. Benim örneğimde, bilgisayarımı şirket ağına bağlaması için götürdüğüm IT görevlisi bana bir şey sormadan kullanıcı klasörümdeki tüm dosyaların yetkilerini değiştirmişti. Bunun üzerine bana ait olan dosyaları silmek veya değiştirmek istediğimde her seferinde şifre sormaya başladı. Word, Excel her açılışta “kaydedilmemiş dökümanlarını kurtarmaya çalışıyoruz” şeklinde uyarı vermeye başladı. Evernote her açılışta “notunu kaydedemiyorum” hatası vermeye başladı. Hatta, Android Studio projemi derlememeye başladı.

Benim bulduğum çözüme gelirsek, ACL tanımlarını kaldırmak için `chmod -RN DOSYA_ADI` komutunu kullandım. Sonra da tüm dosyalarımın izinlerini 644, tüm klasörlerimin izinlerini 755 yaptım.

chmod -RN DOSYA_ADI
find ./ -type d -exec chmod 755 {} \;
find ./ -type f -exec chmod 644 {} \;

Not: bu komutlar benim sorunumu çözdü, ama sizin sisteminizde başka yazılımların çalışmasında hataya neden olabilir.

Not 2: (çok hızlı gelen edit) benim sistemimde de kullanıcı dizinimin altında çalıştırmam gereken dosyalar varmış. pek doğru bir iş olmasa da Android SDK’sını kullanıcı klasörümün altına koymuşum. bu dosyalar için kendime `chmod u+x DOSYA_ADI` komutuyla çalıştırma izni vermem gerekti.

Mac OS X El Capitan üzerinde OpenCV3 Yüklemek

Linux’tan Mac’e geçenler aptitude’un eksikliğini hep hissetmişlerdir. Homebrew ve Macports Apple’ın bu açığını kapatmak üzere geliştirilen projeler. Ben birkaç denemeden sonra Homebrew’i tercih ettim. Kullanımı oldukça kolay ve açık kodlu olduğu için ne yaptığını anlamak da oldukça kolay.

https://github.com/Homebrew adresinde Homebrew’in kendi kodunu ve pek çok tarif bulmak mümkün. Örneğin homebrew-science reposunda bilimsel işler için kullanılan programları yüklemek için hazırlanmış tarifler var, OpenCV de burada.

opencv3.rb tarifine göz atarsak önce Github’dan opencv ve opencv_contrib projelerini indirileceği linkleri belirttiğini sonra da vereceğiniz argümanlara göre hangi özelliklerin derlemeye dahil edileceğini ayarladığını görebiliriz.

Bu kadar temel bilgiden sonra, şimdi Mac üzerinde OpenCV3 yüklemek için yapmamız gerekenlere gelelim.

Öncelikle Homebrew’in kendisi yüklenmeli:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

Düzgün yüklenip yüklenmediğini kontrol edelim:

brew update

 

Sonra da OpenCV yükleyelim:

brew install opencv3

 

Sisteminizde bulunmayan bazı başka bileşenlerin de yüklenmesi gerekebilir. Bu yüzden bu komutun biraz zaman almasına şaşırmayın.

Eğer OpenCV’yi Ffmpeg desteğiyle derlemek isterseniz yükleme komutunu şöyle değiştirmeniz gerekecek:

brew install opencv --with-ffmpeg

Contrib paketini de yüklemek isterseniz şu komutu kullanmanız gerekecek:

brew install opencv --with-ffmpeg --with-contrib

Homebrew bazı programları, bir güvenlik önlemi olarak, keg-only yüklüyor, yani derlediği programları /usr/local/Cellar klasörüne koyuyor, ve /usr/local/bin, /usr/local/lib klasörlerine linklemiyor. OpenCV de bu şekilde yükleniyor. Bu yüzden geliştirdiğiniz kodu derleyebilmeniz için şu iki satıra ihtiyacınız olabilir:

LDFLAGS: -L/usr/local/opt/opencv3/lib
CPPFLAGS: -I/usr/local/opt/opencv3/include

 

SSH Tüneli ve SSH Ters Tüneli

Sefa Grid’in blogunda oldukça güzel anlatmış. Her ofis çalışanı için gerekli bilgiler…

http://blog.grid.org.tr/?p=69

http://blog.grid.org.tr/?p=82

Mac’den Linux’a Wifi Interneti Ethernet İle Paylaştırmak

Beagleboard’umun bir Wifi adaptörü olmadığı ve arka odadan salondaki ADSL modeme kadar ethernet kablosu da çekmek istemediğim için ihtiyaç oldukça Macbook’umun Wifi ile bağlandığı internetini Beagle’a ethernet kablosu ile paylaştırıyorum. Bunun için şu adımları takip etmek gerekiyor:

1- Mac’de System Preferences / Sharing’den Internet Sharing’i aktif hale getirin.

Share your connection from: Wi-Fi
To computers using: Ethernet

Internet Sharing

2- Mac’de Wifi ağa bağlı olduğunuzdan ve internete girebildiğinizden emin olun.
System Preferences / Network’den Ethernet bağlantısı için Manually’yi seçin ve bir IP adresi girin.

mac network

mac network 2

3- Linux’da ağı ayarlayın ve tekrar başlatın:

$ more interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.3.40
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
gateway 192.168.3.1

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 36:ea:73:e5:03:73  
          inet addr:192.168.3.40  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::34ea:73ff:fee5:373/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7342 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5165 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3936991 (3.9 MB)  TX bytes:524362 (524.3 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:247 errors:0 dropped:0 overruns:0 frame:0
          TX packets:247 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:24862 (24.8 KB)  TX bytes:24862 (24.8 KB)


$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.3.1     0.0.0.0         UG    0      0        0 eth0
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

$ sudo /etc/init.d/networking restart

Mac’te Bozuk Harici Disk

Birkaç gün önce can sıkıcı bir olay yaşadım. İçerisindeki çok önemli dosyalar bulunan bir harici diski Macbook Pro’ma taktığımda kilitlendi. Kablosunu çekip çıkarınca da diskin GPT (GUID Partition Table)’si bozuldu. Artık diski bilgisayarıma taktığımda aşağıdaki gibi bir hata mesajı alıyordum.

disk_not_readable1

DiskWarrior adında ücretli bir program tavsiye ediliyordu ama bir türlü çalıştıramadım. Sonunda farkettim ki tek çalıştırmam gereken aşağıdaki bir satırmış:

sh-3.2# diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Mac HD                  249.7 GB   disk0s2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *1.0 TB     disk2
   1:                       0xEE                         1.0 TB     disk2s1

sh-3.2# gpt  recover /dev/disk2
gpt recover: /dev/disk2: recovered primary GPT table from secondary
gpt recover: /dev/disk2: recovered primary GPT header from secondary

 

Mac OS X’te DNS Önbelleğini Temizlemek

Mac’te DNS önbelleğinizi temizlemek için sürümünüze göre aşağıdaki komutlardan birisini kullanmalısınız.

OS X Lion (10.7) ve OS X Mountain Lion (10.8)
sudo killall -HUP mDNSResponder

Mac OS X Leopard (10.5) ve Mac OS X Snow Leopard (10.6)
sudo dscacheutil -flushcache

Mac OS X Tiger (10.4)
lookupd -flushcache

Önbelleği temizledikten sonra bir alanadının hangi adresi gösterdiğini öğrenmek için:
nslookup site.com

GUI Programlamada İlk Adım

Şimdiye kadar ya PHP vb ile web ortamı için ya da C/C++ ile konsol için uygulamalar geliştiriyordum. Ama zaman zaman grafik arayüzü olan uygulamalar da geliştirmem gerekiyor. İnternette kısa bir araştırmadan sonra Qt ile başlamanın daha uygun olacağına karar verdim. Hem çok popüler, hakkında kaynak bulması kolay olur; hem de multi-platform, geliştirdiğim uygulamayı Linux/Mac/Windows ve hatta mobil cihazlar için derleyip çalıştırmak mümkün.

Başlangıç için çok net ve anlaşılır bir video buldum. Size de tavsiye ederim.

Continue reading

VirtualBox’ta paylaşılan klasörler

Mac’te zaman zaman Windows veya Linux’a ihtiyacım oluyor. Bootcamp ile harddiskte bunlar için birer bölüm ayırıp 3 işletim sistemini de kurabilirim. Ama Lion’da Bootcamp 4 sürümü geliyor, ve bunda da Windows XP sürücüleri bulunmuyor. Sadece Windows 7’yi resmi olarak destekliyor. Zaten diğer işletim sistemlerinde küçük bir işim olduğunda diğer işletim sistemine geçmek için bilgisayarı kapatıp açmak zahmetli geliyor.

VirtualBox (veya benzerleri olan Parallels Desktop, VmWare Fusion…) ile bilgisayarınızı hiç kapatmadan diğer işletim sistemini sanal olarak çalıştırabilirsiniz. Eskiden bu yöntemin bilgisayarı çok yavaşlattığını düşünürdüm ama artık ya bu programlar çok geliştiği için ya da bilgisayarlarımızın özellikleri yükseldiği için sıradan işlemlerde hiçbir yavaşlık hissetmeden aynı anda 2-3 işletim sistemini aynı anda kullanabilirsiniz.

Alternatifleri arasında VirtualBox benim için öne çıkıyor. Çünkü hem diğerlerinin sağladığı tüm özellikleri sağlıyor, hem de açık kaynaklı! tabi, aynı zamanda ücretsiz 🙂

Programın kurulumunu anlatmaya gerek yok. Tek yapmanız gereken sitesinden indirmek ve kurulum yönergelerini takip etmek.

Kullanmaya başladıktan sonra sık sık ihtiyacınız olacak şeylerden birisi; asıl işletim sisteminiz ile sanal işletim sisteminiz arasında dosya paylaşmak olacak. Bunun için öncelikle VirtualBox’ta bir Shared Folder tanımlayın.

Şimdi sanal Linux’ta bu klasörü /media/sf_mysharedfolder klasörüne bağlamak (mount etmek) için şu komutu kullanabilirsiniz.

sudo mkdir /media/sf_mysharedfolder
sudo mount -t vboxsf -o uid=1000,gid=1000 MySharedFolder /media/sf_mysharedfolder

 

Eğer bu klasörün Ubuntuyu her açışınızda bağlanmasını isterseniz mount komutunu /etc/rc.local dosyasına yazabilirsiniz.

bkz: http://www.virtualbox.org

Mac’te OpenCV yüklemek

Açık kodlu görüntü işleme kütüphanesi OpenCV robotikten tıbbi görüntülemeye pek çok alanda kullanılıyor. Açık kodlu olması sayesinde hem çeşitli işlemci mimarilerinde hem de farklı işletim sistemlerinde çalışabiliyor.

Mac’inize OpenCV yüklemenin iki yolu var. Birincisi daha basit olan yoldan gidip Mac Ports kullanmak, ikincisi ise OpenCV’nin kaynak kodlarını SVN sunucusundan indirip CMake kullanarak sıfırdan derlemek. Ben kolay olan ilk yöntemi seçtim 🙂

Bu kolay yöntem için bilgisayarınızda Mac Ports yüklü olması gerekiyor. Mac Ports Apple’ın Mac OS X için geliştirdiği paket yöneticisi. Komut satırından çalıştırılan birkaç komut ile basitçe istediğiniz paketleri yükleyebiliyorsunuz. Üstelik sizin için yüklemeye çalıştığınız paketin gerektirdiği diğer paketleri de tespit edip yüklüyor. Öncelikle http://www.macports.org/install.php adresinden Mac Ports’u indirin ve yükleyin. “dmg” imajını indirip installer’ı kullanarak yüklemek en kolay yöntem.

Mac Ports’u yüklendikten sonra OpenCV’yi yüklemek için aşağıdaki komut yeterli:

sudo port install opencv

 

Şimdi Mac Ports önce gerekli paketleri paketleri sonra da OpenCV’yi bilgisayarınıza indirip derleyecek ve sonra kuracak. Her bir paketin derleme işlemi bilgisayarınızda yapıldığı için biraz uzun zaman alabilir. Sabırlı olun.

Not: şimdi gördüğüm bir makaleye göre Mac Ports’u yükleyebilmek için bilgisayarınızda XCode’un yüklü olması gerekiyormuş. XCode’u Mac App Store’dan ücretsiz indirebilirsiniz.