Pages

Python: Versiyon Numarası Karşılaştırma

21 Haziran 2016 Salı

Bir mobil uygulama geliştiriyorsunuz varsayalım, back-end'de uygulamanın herhangi bir versiyonunda kullanılan bir endpoint'i hatta o endpoint'ten dönecek sonucu bile değiştirmeniz uygulamanın ilgili versiyonlarında hatalar oluşmasına sebep olacaktır.

Bazı uygulamalarda görmüşsünüzdür, birkaç versiyon çıkardıktan sonra artık update almanızı zorunlu kılar, uygulamayı kullandırmaz.

Önce versiyon muhabbeti nasıl işliyor, mantığı düzeni nedir onu bi öğrenelim:
<majör>.<minor>.<bugfix | build> şeklinde gider. daha iyi açıklamak gerekirse;

<yeni güzel bi özellik ekledik>.<ufak tefek bişeyler ekledik>.<a bug in my code? bitch, its a feature>


Django'da böyle bir şeye ihtiyacım oldu, çözümü şu şekilde getirdim:
ilk önce ayarları tutabileceğim bir model oluşturdum. Burada diğer ayarlar dışında minimum android versiyonu ve minimum ios versiyonu diye iki field ekledim, buralarda string olarak uygulamanın minimum olması gereken versiyonunu tuttum 1.3.5 şeklinde.

from distutils.version import StrictVersion 

büyülü pakedimiz bu, application'da her istekte uygulamanın versiyonunu header'da falan bi yerde geçtiğimizi düşünelim,

used_version = request.META.get('APP_VERSION', None)
min_version = <minimum versiyonu çağıran süpersonik kod parçası> (burası isteği gönderen cihaza bakarak onun istediği en ufak versiyonu getiren bir fonksiyon olabilir)


if StrictVersion(used_version) < StrictVersion(min_version):
    return True

dersek yazan versiyon numaralarını integer karşılaştırıyormuş gibi karşılaştırabiliriz.

ElasticSearch: Kaldırmak & Yeniden yüklemek

18 Mart 2016 Cuma

Yeni işim olan hairmod (play store, apple app store) 'da arama işlemleri için ElasticSearch kullanmaktayız. Projeyi ve gerekli paketleri kurarken biraz aceleci davranıp elasticsearch'ün elime geçen ilk sürümünü kurmuşum fakat projede daha üst bir sürüm kullanılıyormuş.

elasticsearch'ün eski sürümleri silelim

sudo apt-get --purge autoremove elasticsearch

elasticsearch ile ilgili dizinleri de silelim
sudo rm -rf /var/lib/elasticsearch/
sudo rm -rf /etc/elasticsearch

şimdi elimizdeki elasticsearch'ün kurmak istediğimiz sürümünün pakedini kuralım:

sudo dpkg -i elasticsearch-x.x.x.deb

marşa basalım :D

sudo service elasticsearch start

çalışıp çalışmadığını test edelim

sudo service elasticsearch status
curl -XGET "http://localhost:9200/_cluster/health?pretty=true"
curl "localhost:9200/_nodes/settings?pretty=true"

Ubuntu: Ekran Çözünürlüğü

10 Mart 2016 Perşembe

Yeni bir işe başladım, yeni bir laptop aldık, elimde lenovo z50 ve lg nin bilmediğim bir model ekranı var, laptop'a ubuntuyu kurdum hadi başlayalım derken taktığım ikinci ekranın çözünürlüğü 1024x768'den falan yukarıya çıkmaz oldu. Zamanında çok uğraşmıştım hiçbirinde bilerek çözememiştim hep şans eseri, stackoverflow'da falan ne gördüysem deniyordum birisi tutuyordu ama bu sefer biraz daha temkinli ilerledim ve tek seferde çözdüm olayı :D

evvela, xrandr yazarak ekranlar hakkında bilgi aldım biraz.

Screen 0: minimum 8 x 8, current 2944 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+1024+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1920x1080      60.1*+   59.9
   1680x1050      60.0     59.9
   1600x1024      60.2
   1400x1050      60.0
   1600x900       60.0
   1280x1024      60.0
   1440x900       59.9
   1280x960       60.0
   1368x768       60.0
   1360x768       59.8     60.0
   1152x864       60.0
   1280x720       60.0
   1024x768       60.0
   1024x576       60.0
   960x540        60.0
   800x600        60.3     56.2
   864x486        60.0
   640x480        59.9
   720x405        60.0
   640x360        60.0
DP1 connected 1024x768+0+312 (normal left inverted right x axis y axis) 477mm x 268mm
   1024x768       60.0*
   800x600        60.3     56.2
   848x480        60.0
   640x480        59.9
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
okuduğum bir yazıda adam diyor ki, bu istediğin çözünürlüğe sahip olmayan ekran için yeni bir mod oluşturup yeni oluşturduğun modu o ekrana atayacaksın.

benim ana ekranımın çözünürlüğü 1920x1080 olduğu için ben onun üzerinden gittim

$ cvt 1920 1080
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
Böyle bir şey çıktı karşıma, Modeline yazan kısmı aldım

$ xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
Daha sonra
$ xrandr --addmode DP1 "1920x1080_60.00"
komutlarını da çalıştırdıktan sonra, görüntü ayarlarına girdim ve 1920x1080 'i ikinci ekranımın seçenekleri arasında gördüm, seçtim kaydettim ve mutlu son.

Bu yazı insanlığa faydası olmasından ziyade developer'ın seyir defterine kendisi için yazdığı bir not gibidir.

Linux: Toplu Dosya İsmi Değiştirmek

18 Şubat 2016 Perşembe

Bir iş için 605 adet font'u çekmem gerekti.
Fontların indirme linkini yazdığım yerde uzantı olarak ".woff" yazmaktansa ".woff?-snx2rh" şeklinde yazmışım ve bütün dosyalar buna göre inmiş. Tekrardan indirmek istemedim, elimde dosyalar var zaten sonundan birkaç karakteri de temizleriz yahu dedim ve başladım yazmaya.

for j in *.woff?-snx2rh; do  mv $j $(echo $j | sed -e 's/\?-snx2rh//'); done
Şöyle bir şey çıktı ortaya. Anlatmak gerekirse;

for j in *.woff?-snx2rh; --> woff uzantılı dosyaları al
do mv $j --> $j değişkeni misal p1.woff-snx2rh olarak geliyor.
$(echo $j | sed-e 's/\?-snx2rh//') --> burada dosyanın o uzun isimli halini alıp regex ile dosyanın isminden kalın yazılı olan kısmı ondan sonraki slaşlar arasındaki değerle değiştir diyoruz.

Ben bunu yazarken adım adım gittim. İlk önce ihtiyacım olan şey ihtiyacım olan dosyaları bir döngüde alabilmek. Bunun için ilk önce for j in *.woff?-snx2rh; do echo $j; done yazdım. daha sonra buradan istemediğim karakterleri değiştirebileceğim bir şey yapmaya çalıştım. O zaman da bu döngü for j in *.woff?-snx2rh; do (echo $j | sed -e 's/\?-snx2rh//'); done şekline dönüştü. Son olarak döngünün içinde echo dediğim kısmı mv dosyanın_ismi dosyanın_yeni_ismi olarak değiştirdim ve istediğim sonucu aldım. 

PostgreSQL: Django Duplicate Key Error

9 Ocak 2016 Cumartesi

Bir projeyi django 1.6'dan 1.9'a çekmek durumunda kaldık. Projenin sürümü güncellerken bazı modelleri falan değiştirdik. Eski veritabanını yeni projeye ve yeni veritabanı sunucusuna taşıma işi bana kaldı bu durumda.

Eski sunucudaki veritabanında projenin yeni halindeki ortak olan tabloların dump'larını alıp gerekli düzenlemeleri yaptım ve yeni veritabanı sunucusundaki yeni proje veritabanına soktum(!).

İlişki tablolarını falan içeriye soktum, verileri çekebiliyor, listeleyebiliyorum fakat bu eski veritabanından içeriye veri soktuğum(!) tablolara insert yapamıyordum.

django.db.utils.IntegrityError: duplicate key value violates unique constraint "app_model_pkey"
DETAIL:  Key (id)=(156) already exists.
Hep bu hatayı alıyordum.

Postgresql'e pek aşina olmadığım için ve daha önce böyle bir veritabanı taşıma işi yapmadığım için sorunu uzun  bir süre çözemedim. En sonunda stackoverflow'dan girdim, postgresql'in, django'nun dökümantasyonundan çıktım, google'da iki takla, çıkan blog yazılarında bi şpagat derken güzel bir blog'a denk geldim.

Siz de benim gibi bir db taşıma işinden sonra böyle bir problemle karşılaştıysanız sorunuzun cevabını bu yazıda bulabilirsiniz.

Yukarıda belirttiğim şekil bir hata aldınız diyelim. Postgresql veritabanımıza bağlanıp şöyle bir sorgu çalıştıralım.

select max(id) from bahsi_gecen_tablo;
------
sonuç: 1759338

Şimdi aldığımız hata bahsi_gecen_tablo_pkey şeklindeydi ya, sequences bölümünde onu bulalım ve şöyle bir query daha çalıştıralım.

select start_value, last_value, max_value from bahsi_gecen_tablo_id_seq;
------
sonuç: start_value = 1, last_value=1, max_value=9223372036854775807
 last_value = 1!

Bir sonraki eklenecek kaydın id'si 1 olmaya çalışıyor, bu id'de daha önceden eklenmiş kaydınız olduğu için size böyle bir hata veriyor işte postgresql. Çözümü ise şu şekilde

alter sequence bahsi_gecen_tablo_pkey restart with 1759338; (bahsi geçen tablonun satır sayısı)
şeklinde bir sorgu çalıştırdığımız zaman sorunumuz çözülmüş oluyor.
 

Ara...

Etiketler

linux (8) ubuntu (8) backtrack (6) php (6) dinle (4) django (4) debian (3) indir (3) jquery (3) python (3) facebook (2) javascript (2) lyrics (2) mysql (2) müzik (2) postgresql (2) reggae (2) unix (2) windows 7 (2) youtube (2) 15 ocak (1) Here Comes The Rain Again (1) Hypnogaja (1) Hypnogaja - Here Comes The Rain Again (1) Knock Out Ft. Adrenalin - Eşşoğlueşşek (1) RnB (1) Senatör ft. Iskeltan - Cennet Cehennem (1) adele (1) adrenalin (1) ais (1) ais ezhel - rastalar baş kaldırmış (1) application center (1) asosyal (1) asosyaller için hayatta kalma rehberi (1) asosyallik (1) backtrack chrome yüklemek (1) backtrack ta tor browser (1) bad video card drivers (1) baş (1) blues (1) bob marley (1) boyutlandırma (1) candy crush (1) candy crush ekstra hamle hilesi (1) candy crush hile (1) centos (1) cheat engine (1) cheat engine kullanımı (1) chrome hiç bir siteye girmiyor çözümü (1) chrome ile gmail'e giremiyorum çözümü (1) chrome internete bağlanmıyor çözümü (1) crack (1) crontab (1) css (1) database designer (1) dbdsgnr (1) debian install mysql (1) deep web (1) default editör değiştirmek (1) django admin (1) django humanize (1) django ile tarihi gün önce şeklinde yazdırmak (1) django-admin hatası (1) django-admin not working (1) downgrade (1) download (1) duplicate key error postgres (1) duplicate key value violates unique constraint (1) düştü (1) e book (1) efektli geçiş (1) ekran çözünürlüğü (1) elastic search (1) elasticsearch (1) elasticsearch downgrade (1) elasticsearch upgrade (1) embed (1) ezhel (1) eşek (1) eşşoğlueşşek (1) facebook candy crush (1) facebook tarzı zaman yazdırma (1) facebook yeni özellik (1) flash bellek (1) flash belleğe ikon vermek (1) gnome-utils (1) google (1) google chrome (1) google chrome ile google giremiyorum (1) google eşek mi öldürdü (1) google maps (1) google street view (1) graph search (1) hard disc resize (1) hard disk boyutlandırmak (1) hata (1) hile (1) hiphop (1) html (1) humanize (1) iframe (1) ikinci ekran (1) image (1) install (1) iskeltan (1) izle (1) jamaika (1) jquery kayma efekti (1) kaldırmış (1) key (1) keygen (1) klip (1) knock out (1) konsol (1) kullanım (1) lenovo (1) linux in a nutshell (1) linux in a nutshell 6th edition (1) linux komutları (1) linux_in_a_nutshell_6th_edition (1) memcache (1) memcached (1) minecraft (1) multiple file rename (1) music (1) mv (1) nasıl kullanılır (1) nasıl kurulur (1) ne işe yarar (1) nedir (1) nvidia (1) odaklanma (1) online üyeler (1) online üyeleri görmek (1) parametreleri (1) password generator (1) php ile alfabe (1) php ile online üyeleri bulmak (1) php ile resim boyutlandırma (1) php natural time (1) php random password (1) php tarih yazdırma (1) php x saniye önce (1) php5 (1) random password (1) range (1) range fonksiyonu (1) range function (1) rap (1) rasgele şifre (1) rasta (1) rasta bakım (1) rasta fiyatları (1) rasta nasıl yapılır (1) rasta yaptırmak (1) rastafari (1) rastafarianizm (1) rastalar (1) remove (1) resim (1) resolution (1) reyhan karaca (1) roger s. pressman (1) sahte rasta yapımı (1) screen resulation (1) screenshot (1) second monitor (1) sed (1) senatör (1) serial (1) set fire to the rain (1) sevdik sevdalandık (1) shell (1) shorty wanna be a thug (1) software (1) software center (1) software engineering (1) sözleri (1) tanımlanamayan ağ sorunu (1) tooltip (1) toplu dosya ismi değiştirmek (1) toplu fotoğraf boyutlandırma (1) tor (1) tor browser (1) tor browser in backtrack (1) tupac (1) tütün (1) tütün nasıl sarılır (1) uninstall (1) upgrade (1) usb bellek (1) uygulama merkezi (1) varsayılan editör değiştirmek (1) vbox (1) veritabanına dışarıdan erişim (1) version compare (1) versiyon karşılaştırma (1) video (1) virtualbox (1) w7 (1) windows 7 crack (1) windows 7 keygen (1) xorg xserver reconfigure (1) yazılım mühendisliği (1) yazılım mühendisliği kitabı (1) youtube embed üzerine div getirmek (1) youtube mp3 indir (1) youtube video indir (1) çözüm (1) çözümü (1) öldü (1) şarkı (1)