Single S3 Bucket Policy

It requires two different policies to be assigned to the group or user. With this policy setup the user can’t list other buckets.

1st Policy


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "XXX",
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::<bucketname>"
]
}
]
}

2nd Policy


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "XXX",
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::<bucketname>/*"
]
}
]
}

The only difference between these two policies are the ARN (Resource) Part. The second has the * wildcard.
If you just use the 1st policy then the user can not make any changes inside the bucket but can list the files. If you just use the 2nd policy the user can not login to the bucket at all. That’s why both are required.

If you have discovered an easier way please share at the comments.

Update:

Similar solution at Blog AWS.


{
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket" ],
"Resource": [ "arn:aws:s3:::test"]
},
{
"Effect": "Allow",
"Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
"Resource": [ "arn:aws:s3:::test/*"]
}
]
}

MySQL CSV Import

Üzerinde çeşitli analizler yapabilmek için son 10 yıllık EUR/USD paritesinin 1 dakikalık verilerini MySQL veritabanına aktarmam gerekti. Siz de veritabanı düzenine sahip herhangi bir CSV dosyasını komut satırını kullanarak aşağıdaki gibi içe aktarabilirsinz.


mysql -u username -p dbname --local-infile


load data local infile 'eurusd.csv'
into table eurusd fields terminated by ','
enclosed by '"' lines terminated by '\n'
(id, date, time, value)

Elinizdeki CSV formatına göre “fields terminated by” ve “enclosed by” parametrelerini değiştirmeyi unutmayın. “terminated by” hücreleri hangi karakterin ayırdığını, “enclosed by” ise hücrelerin hangi karakter ile sarıldığını ifade ediyor. Örnek olarak;


terminated by ',' ve
enclosed by '"'
ise
"Hucre 1","Hucre 2"

“lines terminated by” ifadesi de satır sonunu ifade ediyor. Windows veya Mac bilgisyarda hazırlanan CSV lerin farklı satır bitişleri olabilir.

Geçerli-Basit Tar Komutları

http://xkcd.com/1168/

c: oluştur
v: verbose
f: bundan sonra gelen arşiv adı
z: gzip filtresi
j: bzip filtresi

Tar oluşturma

tar -cvf arsiv_adi.tar dizin_adi

Gzip Tar Oluşturma

tar -zcvf arsiv_adi.tar.gz dizin_adi

Bzip Tar Oluşturma

tar -jcvf arsiv_adi.tar.bz2 dizin_adi

Tar’dan çıkarma

tar -xvf arsiv_adi.tar
tar -zxvf arsiv_adi.tar.gz
tar -jxvf arsiv_adi.tar.bz2

Apache Dosyaları İçin Dosya İzinleri (Apache Permissions)

Kopyalama veya taşıma sırasında internet dosya ve dizinlerinin izinleri bozulabilir. Web dosyalarınızın Apache web sunucunuzda çalışması için, internet dizini altında (Ör: cd /var/www) aşağıdaki komutu çalıştırmanız yeterlidir.

find . -type f -exec chmod 644 {} \; && find . -type d -exec chmod 755 {} \;

Bu komut bütün dizinlere ve dosyalara ihtiyaç duyulan izinleri sağlar.
Dosyalar için 644
Dizinler için 755

Saniyeleri Saat:Dakika:Saniye Formatına Çevirmek

Bazen öyle oluyorki karşılaştığımız sorun için en basit ve en hızlı çözüm gözünüzün önünde dururken aklımıza en uzun ve karmaşık yöntemler geliyor. Her zaman için, detaylara boğulmadan bizi hedefe ulaştıracak çözümü aramamız gerekir. PHP de saniyeleri saat:dakika:saniye formatına çevirmek için önce bölüm yapmak, bölümden kalanları tekrar bölmek gibi uygulaması uzun bir fikir geldi. Arama yapınca diğer yazılımcıların çözümleri de aşağı yukarı bu yöntemin farklı uygulamalarından oluştuğunu gördüm; ama tek satırlık, tek fonksiyonluk nedense hemen aklımıza gelmeyen bir çözüm var :).
Continue reading Saniyeleri Saat:Dakika:Saniye Formatına Çevirmek

substr UTF-8 Karakter Sorunu

PHP’nin substr, strtolower, ucfirst gibi string fonksiyonlarinda utf-8 kodlama problemleri yaşanabiliyor. substr fonksiyonundaki sorun, fonksiyonun her karakteri 1 Byte olarak kabul etmesinden kaynaklanır. Halbuki UTF-8 karakterler 1 ile 4 Byte arasında değişir. Bu nedenle aşağıdaki sonuç ortaya çıkar. Neyseki çözüm basit :).
Continue reading substr UTF-8 Karakter Sorunu

Veritabanlarından Rasgele Satır Çekmek

Bütün veritabanlarında temel sorgu mantığı aynı olmasına rağmen her veritabanını kendine özgü fonksiyonları ve fonksiyon isimleri olabiliyor. MSSql, MySql derken PostgreSql de uzun süredir tecrübe ettiğim bir veritabanı haline geldi. Bugün bir farklılığını daha keşfettim. Rasgele sonuç çekmek için kullanılan fonksiyon MySql deki RAND() fonksiyon yerine RANDOM() fonksiyonuymuş. Sonuç olarak bu 3 veritabanından aşağıdaki gibi rasgele sonuç çekebilirsiniz.

MSSql

SELECT column FROM table ORDER BY NEWID()

MySql

SELECT column FROM table ORDER BY RAND()

PostgreSql

SELECT column FROM table ORDER BY RANDOM()

Ubuntu'da Skype Yazışmaları Nasıl Temizlenir

Skype ayarları kullanıcı dizini altında “.Skype” dizininde bulunur. Bu dizin altında chat geçmişini saklayan dosyaları silmemiz gerekir. Daha sonra “Options > Privacy” menüsünde “Keep chat history for” seçeneğini “Disable History” olarak belirlerseniz bir daha bu dosyalar oluşmaz.
cd /home/user/.Skype/skypename
rm -Rf chatsync
rm chat*

Not: “user” kendi kullanıcı adınız, “skypename” de skype kullanıcı adınız. Dizin altında ls ile listeletirseniz daha önce Skype’a giriş yapmış kullanıcıları görebilir ve istediğiniz dizinleri temizleyebilirsiniz.