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.

İyi ve güzel şeyler

Hayatta güzel ve iyi şeyler de oluyor. Eminim aile kuran, çocuk yetiştiren, iş kuran, okumaya devam eden, düne, bugüne değil de yarına bakan insanlar bunu sadece alışkanlıkla yapmıyorlar. Eminim sandığın dibinden çıkan bir umut kuşu var bir yerlerde.

Bizim çocukluğumuzda ortam o kadar kötüydü ki, bugünün ortamında geçmişin hayal meyal hatırlanan kabusları gibi geliyor. Ne kimin kimi öldüreceği belli, ne seçilen politikacıların hükümet edip edemeyecekleri. Evdeki margarin tenekesi boşaldığında yenisinin bakkalda olup olmayacağı belli değil. Margarin olsa, yemek yapacak LPG bayide belki var belki yok.

Benim yaş grubumda ve daha yaşlı olanların ortamdaki mevcut değişimlere bakışımızın gençlerden daha olumsuz olmasının sebeplerinden biri bu. Mevcut durum iyidir, kötüdür, umut vardır, yokturdan öteye, bir şekilde kurtulduğumuz geçmişin berbat günlerine dönme korkusu yaşıyoruz bence.

İlginç şekilde o kötü günlerden bir sürü güzel hatıramız da var. Bunu açıkçası ailelerimizin fedakarlıkları ve iyilikleri dışında bir gerekçe ile açıklayamıyorum. Bugünlerde aile olma cesaretini ya da aptallığını (ne açıdan bakarsanız artık) gösteren kişilere saygı duyuyorum.

. TR MOL