Kendime dersler

Vedat Türkali demiş ki:

Düşündüğünü söylemekten korkmaya başlarsa bir kişi, düşünmekten de korkmaya başlar.

Bu sabah Açık Gazete böyle başladı. Radyo saat sekizde otomatik açılıyor artık. Dolayısıyla bu gün duyduğum ilk sözler bunlar oldu. Sürekli programın kapanışını yakalamaktan sıkılmıştım bir süredir. İnsanın her sabah kendi kendine ne kadar dalgınlaştığını hatırlatması bir süre sonra espri niteliğini kaybediyor, ben de aletin saatini programladım sonunda.

Asıl konuya bakarsak, hepimiz, her yerde bu lafı ya da benzerlerini okuduğumuzda bugünlerde aklımıza devlet korkusu geliyor. Ben bu “devlet korkusu”‘nun içinde bazı kendi kendine söylenen yalanlar görüyorum, işin kötüsü bu yalanları konuşmak da devlete laf etmekten bile daha zor. Çünkü kendine “aydın” ya da “entellektüel” ya da “münevver” diyen insanlarımızın en büyük ortak noktaları kendilerinde hata olmadığına imanları. Kendine “entel” diyen insancıklarımızın durumunu yorumlayamayacağım, neyse ki çevremde yoklar, olmasınlar zaten.

Mevcut devlet ve hükümet yapımızı savunmaya çalışmıyorum, ne o yakınlıktayım pozisyon veya politika olarak ne de durumun/devletin/halkın “savunularak” gelişeceğini düşünüyorum. Bu “savunma” konusu önemli, toplumca (ki bu “toplum” konusu daha da önemli) bir savunma, kaçınma kültürümüz var, bu son 15-20 senenin işi de değil.

Adını anmaktan hoşlanmadığım bir yazarımızın lafıyla, hala Balkan Savaşları ve 1. Dünya Savaşı’nı kaybetmenin sendromunu yaşıyoruz. Politik olarak çok şey değişmiş olabilir ama kültürel olarak hala yabancı devletlere yaranmak için Tanzimat ilan eden insanların mirasından kurtulamamışlığı yaşıyoruz. Eh halk da devleti kendisi dışında bir şey sandığı, devlet memuru olan insanların kendisinin değilse komşusunun oğlu, kızı yeğeni olduğunu unuttuğu sürece halinden memnun, kabahat atacak bir odak bulmanın sevinciyle.

Bu  durumu dışsallaştırmaya da çalışmıyorum, bacak kadar çocukkenden hatırladığım en ağır terbiye lafı “elalem ne der” sorusudur, annemden yaptığım yaramazlıklara karşı gelen. Dolayısıyla ben de kendi iç huzurum, kendi namusum, kendi ahlak anlayışımla değil, komşuların, mahallelinin, akrabaların, arkadaşların beğenilerine, tercihlerine uygun bir hayat yaşamaya çalışarak büyütüldüm.

Neyse ki benim gibi olup da yine benim gibi “problem varsa kaynağı bende, bizde, bizim çevrede olabilir” demeyi beceren insanlar var. Yaygın bir laf vardır teknoloji çevrelerinde, “çözüm problemi görerek başlar” diye. Problemi görmeyerek, görmemeye çalışarak, gözlerini yumarak “benden başka herkes hatalı, probleminizi çözün, beni rahatlatın” diye şekeri alınmış çocuk gibi ağlayarak bir ilerleme sağlanmaz.

Geçenlerde eski ve iyi bir arkadaşımla konuştuk. Bizim okuldan, piyasasında saygın, liberal demokrat, ilerici v.s. v.s. niteliklerde olduğu iddiasında bir insan. Laf döndü dolaştı, bazı Anadolu üniversitelerinden mezun, iş emanet edilecek kalitede çalışanların daha kolay sömürülebilir, buna rağmen daha sadık olmalarıyla ilgili bir iki gözlem anlattı, tabii şahsi tecrübeye dayanarak. Eh yani, liberal demokrat ve ilerici olmak yerine sadece “liberal” olmak böyle bir şey.

“Tek kelime laf ettin mi?” derseniz, cevap hayır. Tamam takdirlerimi de ifade etmedim “ne güzel sömürüyorsunuz çocukları” diye, ama son noktada bir laf edilmesi lazımdı.

İşte böyle şeyleri söylemekten korka korka, sonunda üstlerinde düşünmekten de korkmaya başlanıyor. Arkadaş ne der, sevgili ne der, aile ne der, komşu ne der diye diye…

Jon Postel’i hatırlamak

Bugün Jon Postel’in ölüm yıl dönümü. İnsanları yılda bir kere hatırlamak bile zor gelirken, Postel’i arada geçen zamanda yirmi kere hatırlamam gerekiyordu, kaç kere becerdim bunu bilmiyorum. Internet’in oluşumunda ne seviyede önemli bir insan olduğunu anlatmak zor. Bunu okumak ise bilmeyenlere imkansız, bilenlere gereksiz.

Türkçe’deki “kahraman” kavramımız çok buraya uymasa da Postel kahramanımdı benim, Ritchie, Diffie ve Tanenbaum ile birlikte. Postel ile ilgili neyin beni en çok etkilediğini söylemek kolay değil. Ya, ben yıllarca IANA’yı kocaman bir organizasyon sanmışken, aslında çok uzun süre Jon’un tek başına ve olması gerektiği gibi yürüttüğü bir iş olduğunu anlamamdır, ya ISOC’un bir numaralı üyesi olmasıdır, ya da belki daha hüzünlü şekilde hiç bir zaman Jon olamayacağımı ölümüyle anlamış olmam…

Neyse, aralarındaki imaj farkına rağmen, Vint Cerf’ten daha iyi anlatmak mümkün değil, şunu okumakta fayda var: RFC 2468 Bu RFC yıllarca masamın üstünde, yanında, duvarımda asılı kaldı. En son, Internet’i bilmeyip, sadece sömüren birileri sebebiyle, taa okuldan beri sakladığım printout kaybolunca yenisini basmak istemedim. Önemli olan kağıtta değil kafada ve kalpte taşınan sonuçta.

Kitaplar hakkında

Kitaplığımda, son umut rafında duruyor “suçlu hafıza”. Düşünmekten sıkıldıkça, bıktıkça, tabula rasa’ya hayatta ulaşmaya çabalayıp, aradıkça ve bulamadıkça elimi attığım kitaplardan. Belki son olmasını, belki ilk olmasını umarak, nereden baktığıma bağlı…

kimsenin haketmediği bir yüz vardı çehremde
kendimi bilmezden geldim; sûretimi payladım!
Kalacaktım kaç zaman kaldıysa gene nedensiz
Çağrıldım!….

Cenk Koyuncu, üzerine büyük şeyler söylemeye mezun hissetmediğim bir adam, zaten ihtiyacı da yok hakkında laflar uçurulmasına. Tabii insan merak ediyor bir sürü, “keşke”‘nin, bir sürü “acaba”‘nın olası sonuçlarını.

……Kaybolan izler
yatak, oda, kahrolası bir ceza kalır
paylaştıklarınla… Her ev biraz da
gömmek içindir sende çoğalanları!
Geçmiş uzatmalı Sevgilim, sevdiğim:
Göç denemesiyim, göçmen müsveddesiyim!

Tabii insan bir noktada okumayı bırakmak zorunda kalıyor, yoksa…

kaybolmuşum… Ben yolu bilmeyenlerdenim!

Biliyordun değil mi, bu kitabın bana yapacaklarını? “Tam sana göre” diye elime tutuştururken. Üç gün sonra bir yıl olacak…

This is not what it seems to be…

How to switch a Django form in admin environment depending on Model’s instant status

To switch a Django form in admin environment, depending on Model’s status or any arbitrary environmental criteria, you need to override get_form() method of ModelAdmin. The requirement behind switching form can vary from application to application. Most simple scenario can be that you need one form for adding new instances and another for editing existing instances of the same Model. Easiest way in an overridden get_form method is to check if ModelAdmin is being called for a new object, or an existing one. It is also naturally possible to check attributes in case of an existing Model, or to check any external value, condition in either cases. As a very bare bone sample please see following code.

#coding: UTF-8
from django.contrib import admin
from django import forms

from .models import Person

class PersonForm(forms.ModelForm):
    class Meta:
        model=Person
        fields=['first_name','last_name','password',]
        widgets= {
                'password': forms.PasswordInput(),
            }
    def clean(self):
        password=self.cleaned_data.get('password')
        fname=self.cleaned_data.get('first_name')
        lname=self.cleaned_data.get('last_name')
#
# ..........................................
#
        return self.cleaned_data

class PersonAdmin(admin.ModelAdmin):
#    form=PersonForm
    c_fields=(
            ('first_name','last_name',),
            )
    a_fields=(
            ('first_name','last_name',),
			('password',),
            )
    readonly_fields=('account',)
    def add_view(self, request, form_url='', extra_context=None):
        self.fields=self.a_fields
        return admin.ModelAdmin.add_view(self, request, form_url=form_url, extra_context=extra_context)
    def change_view(self, request, object_id, form_url='', extra_context=None):
        self.fields=self.c_fields
        return admin.ModelAdmin.change_view(self, request, object_id, form_url=form_url, extra_context=extra_context)
    def get_form(self, request, obj=None, **kwargs):
        if obj is None:
            return PersonForm
        else:
            return super(PersonAdmin, self).get_form(request, obj, **kwargs)

admin.site.register(Person,PersonAdmin)

There is one important issue that needs to be noted. It is common practice to use forms statically by declaring a form=PersonForm value in ModelAdmin, as the remarked line shows. Also it is common practice to leave Meta value for field list fields=[] empty in forms called this way. However when you override get_form(), you also override handler for that empty value, which is crucial for form’s operation. So you need either simply to declare your values explicitly in the form itself fields=['first_name','last_name','password',] as this or develop your own get_form() further to put those values there. First option is simpler IMHO.

Otomatik tercüme sistemleri hakkında

Twitter’in tercümesi Google’dan iyi. Bu sabah Twitter’in çok kaliteli bir şekilde otomatik tercüme yaptığını farkettim. Örnek olarak dün attığım bir tweet:

Üffff, son iki üç saatir aradığım hatanın yancı sebeplerinden biri, view tarafından “error_message” gönderip template’de “error_massage” beklemem çıktı. Üfffffff, error_massage ne ya!!!!

Twitter tarafından aşağıdaki şekilde tercüme edilirken:

ÜFFFF, one of the reasons for the error I’ve been looking for for the last two or three hours, is that view sent “Error_message” and waited for “error_massage” in the template. UFFFFFFF, error_massage what!!!!

Google tercümesi ise böyle:

Üffff, the last two or three hours, one of the reasons I’m looking for the error of error, view “error_message” by sending the template “error_massage” was waiting for output. Üfffffff, error_massage what or !!!!

En basit seviyede bakarsak, Twitter’ın tercümesi anlaşılıyor, Google ise umutsuz.

Twitter Microsoft’un tercüme hizmetini kullanıyor, Google ise malum kendi yazılımıyla çalışıyor. Bugüne kadar bazı Türkçe yazışmaları okumak zorunda kalan İngilizce bilen İtalyan iş ortaklarım tercüme için Google kullanıyorlardı, onlara MS servislerini denemelerini önereceğim, bakalım beğenecekler mi?

Microsoft’un Google’a eşdeğer servisleri https://www.bing.com/translator adresinde ve https://translator.microsoft.com adresinde de bir hesap açarak kullanılabilecek canlı chat tarzı bir tercüme hizmeti var. Gördüğüm kadarıyla şahsi kullanım ücretsiz. Beni biliyorsunuz, MS ürünü tavsiye ettiğim durumlar istisnadır. Ama bu konuda çok başarılı olmuşlar sanırım.

İlle Google diyenler tabii https://translate.google.com adresine giderek şanslarını deneyebilirler.

Gelecekten (2021) bir mesaj: Bugün yazıları elden geçirirken bunu görünce aklıma takıldı, kontrol ettim. Öncelikle Twitter artık Google tercümesi kullanıyor. Öte yandan yukarıdaki metinleri yeniden denediğimde Google’ın tercümesinin eskiden çok çok daha iyi ve Bing’den de daha anlaşılır hale geldiğini gördüm.

. TR MOL