skip to Main Content

nokia / alcatel 68xx omni switchlerde linkagg size değişimi

alcatel switchlerde linkagg yi aktif etmişseniz ve sonrasında lag altındaki link sayısını arttırmak isterseniz ne yazıkki aktif çalışan sistemde bunun yapılmasına switch yazılımı izin vermiyor..

6850-> lacp linkagg 1 size 4
ERROR: LAERR08 This aggregate already exists 1

1 id linkagg in zaten mevcut olduğunu söylerek değişimize izin vermiyor. 1 id li linkagg ile ilişkilendirilmemiş fazla tanım yoksa farklı bir id ile linkagg tanıtılarak tanımlar bunun üzerine taşınabilir. ancak çok fazla ilişkili tanım varsa bunu yapmak zor olabilir.. switchin aktif linkagg konfigürasyonun

! Link Aggregate :
lacp linkagg 1 size 2 admin state enable
lacp linkagg 1 actor admin key 32768
lacp agg 1/1 actor admin key 32768
lacp agg 1/2 actor admin key 32768

şeklinde oluğunu varsayalım. benim linkagg size ını arttırmak için kullandığım yöntem boot.cfg dosyasını düzenlemek ve switchi bu konfigürasyon ile yeniden başlatmak. switch üzerinde vi editoru mevcut. vi ile boot.cfg dosyasını açalım

6850-> vi working/boot.cfg

dosyası açtıktan sonra ” lacp linkagg 1 size 2 admin state enable” satırını bulalalım “lacp linkagg 1 size 3 admin state enable” olarak değiştirelim ve değişikliği kaydedelim

vi kullanmayı bilmiyorsanız yapılacka işlem 2 nin üzerine gelin x ile 2 yi silin i ye basın sonrasında 3 yazın esc tuşuna baştıktan sonra :x ile dosyayı kaydedip çıkın

şimdi switchi başlantmaya sıra geldi. switch working konfig ile yeniden başlatalım.

6850-> reload working rollback-timeout 15
Confirm Activate (Y/N) : Y

yukarıaki roolback-timeout 15 yazarak eğer bir sorun olursa switchin 15 dakika sonra yeniden başlatmasını belirttik. switch up olduktan sonra yaptığımız değişikliğin uygulanıp uygulanmadığını kontrol edelim

6850-> show configuration snapshot linkagg
! Link Aggregate :
lacp linkagg 1 size 3 admin state enable
lacp linkagg 1 actor admin key 32768
lacp agg 1/1 actor admin key 32768
lacp agg 1/2 actor admin key 32768

sorun yokssa yeniden başlatmayı iptal edelim.

6850-> reload cancel
Primary reload scheduled in 757 seconds, Confirm cancel reload (Y/N) : Y

lingagg size değerinin arttırdığıma göre lag altında ilave portumuzu ekleyebiliriz

lacp agg 1/3 actor admin key 32768

nokia sr üzerinde satellite tanım silmek

nokia sr router üzerinde artık kullanmadığımız satellite ları silme işlemini yapmak isteyebiliriz.. öncelikle mevcut satellite durumunu göz atalım.


*B:test_router# show system satellite 

===============================================================================
Satellite Information
===============================================================================
SatID     Provisioned Type                         Admin         Oper
              Equipped Type (if different)         State         State
-------------------------------------------------------------------------------
esat-1    es48-sass-1gb-sfp                        up            up
esat-2    es48-sass-1gb-sfp                        up            up
esat-3    es48-sass-1gb-sfp                        down          provisioned
              (not equipped)                       

test_router imiz üzerinde 6 tane satellite tanımlı ve bunların 1 tanesi down edilmiş görülmektedir.

silme işlemini yapabilmek için öncelikle port-topology altındaki port eşleştirmesini silmemiz gerekiyor. satellite ile sr port eşleştirmesine bakalım

*B:test_router# show system port-topology 

===============================================================================
Port Topology
===============================================================================
Port              Far-end
Id                Port Id
-------------------------------------------------------------------------------
1/2/1             esat-1/1/u1
2/1/1             esat-1/1/u2
3/1/1             esat-2/1/u1
3/1/2             esat-3/1/u1
4/1/1             esat-2/1/u2
4/1/2             esat-3/1/u2

buradan esat-3 ait port eşleştirmelerini kaldırmamız gerekiyor.

*B:test_router# /configure system port-topology
*B:test_router>config>system>port-topology# info 
----------------------------------------------
            port 1/2/1 to esat-1/1/u1 create
            port 2/1/1 to esat-1/1/u2 create
            port 3/1/1 to esat-2/1/u1 create
            port 4/1/1 to esat-2/1/u2 create
            port 3/1/2 to esat-3/1/u1 create
            port 4/1/2 to esat-3/1/u2 create
----------------------------------------------
*B:44_ozalper_t3_1>config>system>port-topology#

portları no port ile kaldırabiliyor..

*B:test_router>config>system>port-topology# no port 3/1/2
*B:test_router>config>system>port-topology# no port 4/1/2

burada dikkat edilmesi gereken nokta 3/1/2 ve 4/1/2 portlarının shutdown yapılmış olması gerekiyor.. yine aynı şekilde esat-3 altındaki 48 portun shutdown yapılmaış olması ve portların default yani network modunda olması gerekiyor. (tabisi herhanbi bir servis tanımı v.b. de olmaması gerekiyor) aksi bir durum varsa hata verecektir.

*B:test_router# /configure port esat-3/1/[1..48] shutdown
*B:test_router# /configure port esat-3/1/[1..48] ethernet no mode
*B:test_router# /configure port 3/1/2 shutdown
*B:test_router# /configure port 4/1/2 shutdown

bundan sonra satellite ları silebiliriz..

*B:test_router# /configure system satellite 
*B:test_router>config>system>satellite# 

altına giriyoruz.. bura öncelik sileceğimiz esat-3 içine girelim

*B:test_router>config>system>satellite# eth-sat 3 
*B:test_router>config>system>sat>eth-sat# info

mevcut konfigürasonu inceleyelim…

      eth-sat 3 create
                description "esat-3"
                mac-address aa:bb:cc:dd:ee:ff
                sat-type "es48-sass-1gb-sfp"
                software-repository "SAS-Sx-images"
                port-map esat-3/1/1 primary esat-3/1/u1 secondary esat-3/1/u2
                port-map esat-3/1/2 primary esat-3/1/u2 secondary esat-3/1/u1
                port-map esat-3/1/3 primary esat-3/1/u1 secondary esat-3/1/u2
                port-map esat-3/1/4 primary esat-3/1/u2 secondary esat-3/1/u1
                port-map esat-3/1/5 primary esat-3/1/u1 secondary esat-3/1/u2
                port-map esat-3/1/6 primary esat-3/1/u2 secondary esat-3/1/u1
                port-map esat-3/1/7 primary esat-3/1/u1 secondary esat-3/1/u2
                port-map esat-3/1/8 primary esat-3/1/u2 secondary esat-3/1/u1
                no shutdown
            exit

şimdi esat-3 ü shutdown edelim ve satellite tipini kaldıralım.. sat-type ı kaldırmadan esat- silme işlemi yapılamıyor.

*B:test_router>config>system>sat>eth-sat# shutdown
*B:test_router>config>system>sat>eth-sat# no sat-type

şimdi satellite i silebiliriz. bu noktada info ile mevcut konfigürasyona bakarsak port-maplarında silindiği görülecek.

*B:test_router>config>system>sat>eth-sat# exit
*B:test_router>config>system>satellite# no eth-sat 3 

nokia sros için araçlar

genel olarak network ekipmanlarında cli ile konfigürasyon yapıyorsanız sıklıkla kopyala – yapıştır yapıyorsunuzdur. ancak bu yöntem hatalara oldukça açıktır.

bu hatayı minimize etmek adına python ile yazılmış nokia sros güzel bir kod bulmuştum. bunu paylaşmak istedim. örnek için aşağıdaki şekilde bir konfigürasyonumuz olsun.. bunu c1.txt olarak kaydediyoruz.

        vpls 11 customer 1 vpn 11 i-vpls create
            backbone-vpls 100:11
            exit
            stp
                shutdown
            exit
            sap 1/5/1:11 create
            exit
            sap 1/5/1:12 create
            exit
            no shutdown
        exit
        vpls 100 customer 1 vpn 100 b-vpls create
            service-mtu 2000
            stp
                shutdown
            exit
            mrp
                flood-time 10
                no shutdown
            exit
            sap 1/5/1:100 create
            exit
            spoke-sdp 3101:100 create
            exit
            spoke-sdp 3201:100 create
            exit
            no shutdown
        exit

t.py olarak kaydettiğimiz python kodunu çalıştığımızda mevcut kodumuz aşağıdaki örnekte görüleceği üzere yeniden düzenleniyor. bu şekilde bir yapı bir çok olası hatanın önüne geçecektir.

fcicek@cicek:~/mpls/sros$ python t.py c1.txt
/configure vpls 11 customer 1 vpn 11 i-vpls create backbone-vpls 100:11
/configure vpls 11 customer 1 vpn 11 i-vpls create stp shutdown
/configure vpls 11 customer 1 vpn 11 i-vpls create sap 1/5/1:11 create
/configure vpls 11 customer 1 vpn 11 i-vpls create sap 1/5/1:12 create
/configure vpls 11 customer 1 vpn 11 i-vpls create no shutdown
/configure vpls 100 customer 1 vpn 100 b-vpls create service-mtu 2000
/configure vpls 100 customer 1 vpn 100 b-vpls create stp shutdown
/configure vpls 100 customer 1 vpn 100 b-vpls create mrp flood-time 10
/configure vpls 100 customer 1 vpn 100 b-vpls create mrp no shutdown
/configure vpls 100 customer 1 vpn 100 b-vpls create sap 1/5/1:100 create
/configure vpls 100 customer 1 vpn 100 b-vpls create spoke-sdp 3101:100 create
/configure vpls 100 customer 1 vpn 100 b-vpls create spoke-sdp 3201:100 create
/configure vpls 100 customer 1 vpn 100 b-vpls create no shutdown

kullanılan t.py

#!/usr/bin/env python3

import re
import math
import sys

def pop(stack):
    try:
        stack.pop()
    except Exception as err:
        print("ERROR: Unable to flush stack - %s" %err)

def output(stack):
    output = " ".join(stack)
    print(output)
    return output

def sros_flatten(data):
    stack = []
    exit_detected = False
    indent = 0
    new_conf = ""

    for line in data.lstrip().splitlines():
        l = len(line) - len(line.lstrip())
        nxt_indent = math.ceil(float(l/4))

        if line.startswith(("#", "echo")) or line.strip() == "":
            pass
        elif line.strip() == "exit all":
            new_conf = new_conf + "\n" + output(stack)
        else:
            if nxt_indent == 0 and line.strip() == "configure":
                new_line = str("/") + str(line.strip())
                stack.append(new_line)

            elif nxt_indent > indent:
                if line.strip() != "configure" and len(stack) == 0:
                    stack.insert(0, "/configure")
                stack.append(line.lstrip())

            elif nxt_indent == indent:
                if line.strip() != "exit":
                    if exit_detected:
                        stack.append(line.strip())
                    else:
                        if len(stack) != 0:
                            new_conf = new_conf + "\n" + output(stack)
                            pop(stack)
                            stack.append(line.strip())
                        else:
                            stack.insert(0, "/configure")
                            stack.append(line.strip())
                    exit_detected = False

            else:
                if line.strip() == "exit":
                    if not exit_detected:
                        new_conf = new_conf + "\n" + output(stack)
                        del stack[-2:]
                    else:
                        pop(stack)
                    exit_detected = True

                else:
                    new_conf = new_conf + "\n" + output(stack)
                    exit_detected = False
                    pop(stack)
            indent = nxt_indent
    
    return new_conf

def main():
    filename = sys.argv[1]
    with open(filename, 'r') as f:
        data = f.read()

    sros_flatten(data)

if __name__ == "__main__":
    main()

alcatel – nokia omni switchlerde mac adres sınırı

tüm donanımlarda olduğu gibi alcatel – nokia omni switchlerin öğrenebileceği mac adresinde bir sınır var. mac move taşıma yapılan bir topoloji de çalıştırıyorsanız buna dikkat edilmesi gerekmektedir. 6850 de bu sınır 32K dır.

Troubleshooting dökümanların da konuyla ilgili olarak aşağıdaki ifadeler yer almaktadır.

“If the problems are associated with the source learning on a specific NI then the limitations of the Number of MAC addresses learned should also be considered. Current limitations are:

Number of learned MAC addresses per network interface (NI) module : 32K
Number of learned MAC addresses per switch : 64K

The OmniSwitch has a distributed architecture. Source Learning is specific to a NI.
Each NI has a layer 2 pseudo-cam which is which can hold 64K entries.
32K entries are reserved for L2 Source Addresses which are local to that NI in L2SA table and the rest of 32K entries are reserved for L2 Destination Addresses which can be from local or remote NI in L2DA table.”

switch üzerinde öğrenilen mac adresi sayısını öğrenmek istiyorsanız

show mac-address-table count

komutunu kullanabilirsiniz.

nokia router üzerinde lag ve lacp ile yedekli devre

nokia router üzerinde lag – lacp aktif olarak yedekli bir devre kurabilmek için öncelikle port konfigürasyonunu yapmamız gerekmedir. burada dikkat edilmesi gereken nokta autonegotiate enable olamayacağıdır. ya disable yada limited olarak ayarlamamız gerekmektedir.

*A:cicek>config>port# /configure port 7/1/10 
*A:cicek>config>port# description "ana-yol" 
*A:cicek>config>port# ethernet 
*A:cicek>config>port>ethernet# mode access 
*A:cicek>config>port>ethernet# encap-type dot1q 
*A:cicek>config>port>ethernet# autonegotiate limited 
*A:cicek>config>port>ethernet# exit 
*A:cicek>config>port# no shutdown 
*A:cicek>config>port# info 
----------------------------------------------
        description "ana-yol"
        ethernet
            mode access
            encap-type dot1q
            autonegotiate limited
        exit
        no shutdown
----------------------------------------------

aynı şekilde kullanılacak 2. portunda konfigürasyonu yapılır.

*A:cicek>config>port# /configure port 7/1/11 
*A:cicek>config>port# description "yedek-yol"
*A:cicek>config>port# ethernet 
*A:cicek>config>port>ethernet# mode access 
*A:cicek>config>port>ethernet# encap-type dot1q 
*A:cicek>config>port>ethernet# autonegotiate limited 
*A:cicek>config>port>ethernet# exit 
*A:cicek>config>port# no shutdown 
*A:cicek>config>port# info 
----------------------------------------------
        description "yedek-yol"
        ethernet
            mode access
            encap-type dot1q
            autonegotiate limited
        exit
        no shutdown
----------------------------------------------

port tanımlarını yaptıktan sonra sıra lag tanımlarını yapmaya geldi. bir id vererek lag ımı oluşturuyoruz. kullanılan routera göre lag sayıları değişmektedir. alcatel sr cihazlardaki kullanılabilecek lag / lacp sayıları yazıda bu sayılara erişebilirsiniz. bu örneğimizde lag altına eklediğimiz iki portun aktif – pasif olarak çalışmasını sağlayacağız. bunu portlara atadığımız öncelik ile sağlıyoruz.

lacp aktif etmek için lacp active dememiz ve bir key belirlememiz gerekmektedir. bu key id müşteri uç cihazında da kullanılmalıdır.

*A:cicek>config>port# /configure lag 10 
*A:cicek>config>lag# description "yedekli-hat"
*A:cicek>config>lag# mode access 
*A:cicek>config>lag# encap-type dot1q 
*A:cicek>config>lag# port 7/1/10 priority 1000 
*A:cicek>config>lag# port 7/1/11 sub-group 2 
*A:cicek>config>lag# dynamic-cost 
*A:cicek>config>lag# lacp active administrative-key 100 
*A:cicek>config>lag# selection-criteria highest-weight 
*A:cicek>config>lag# info 
----------------------------------------------
        description "yedekli-hat"
        mode access
        encap-type dot1q
        port 7/1/10 priority 1000 
        port 7/1/11 sub-group 2
        dynamic-cost
        lacp active administrative-key 100 
        selection-criteria  highest-weight
        no shutdown
----------------------------------------------

sıra geldi servisimiz oluşturmaya. bu örnekte bir ies servise tanımlayarak sap olarak oluşturduğumuz lag ı ekliyoruz.

*A:cicek# configure service customer 100 create 
*A:cicek>config>service>cust$ exit 
*A:cicek# /configure service ies 100 customer 100 create 
*A:cicek>config>service>ies$ interface "yedekli-devre" create 
*A:cicek>config>service>ies>if$ sap lag-10:10 create 
*A:cicek>config>service>ies>if>sap$ exit 
*A:cicek>config>service>ies>if$ no shutdown 
*A:cicek>config>service>ies>if$ exit 
*A:cicek>config>service>ies$ no shutdown 
*A:cicek>config>service>ies$ info 
----------------------------------------------
            interface "yedekli-devre" create
                sap lag-10:10 create
                exit
            exit
            no shutdown
----------------------------------------------

en temel haliyle 1. routerımızda yapacağımız işlem bu kadar. müşteri tarafında gerekli tanımları yaparak yedekli bir hattımız olacak. burada öncelik verilen porta ve lacp key e dikkat etmemiz zorunluluğudur.

oluşturduğumuz lagı kontrol edelim.


*A:cicek>config>service>ies$ show lag 10 detail 

===============================================================================
LAG Details
===============================================================================
Description        : yedekli-hat
-------------------------------------------------------------------------------
Details
-------------------------------------------------------------------------------
Lag-id              : 10                    Mode                 : access
Adm                 : up                    Opr                  : down
Thres. Exceeded Cnt : 0                     Port Threshold       : 0
Thres. Last Cleared : 05/05/2017 02:31:52   Threshold Action     : down
Dynamic Cost        : true                  Encap Type           : dot1q
Configured Address  : 0c:a4:02:d2:6e:a5     Lag-IfIndex          : 1342177290
Hardware Address    : 0c:a4:02:d2:6e:a5     Adapt Qos (access)   : distribute
Hold-time Down      : 0.0 sec               Port Type            : standard
Per-Link-Hash       : disabled              
Include-Egr-Hash-Cfg: disabled              Forced               : -
Per FP Ing Queuing  : disabled              Per FP Egr Queuing   : disabled
Per FP SAP Instance : disabled              
LACP                : enabled               Mode                 : active
LACP Transmit Intvl : fast                  LACP xmit stdby      : enabled
Selection Criteria  : highest-weight        Slave-to-partner     : disabled
MUX control         : coupled               
Subgrp hold time    : 0.0 sec               Remaining time       : 0.0 sec
Subgrp selected     : 1                     Subgrp candidate     : -
Subgrp count        : 2                     
System Id           : 0c:a4:02:d2:6d:5b     System Priority      : 32768
Admin Key           : 100                   Oper Key             : 100
Prtr System Id      :                       Prtr System Priority : 32768
Prtr Oper Key       : 0                     
Standby Signaling   : lacp                  
Port weight speed   : 0 gbps                Number/Weight Up     : 0
Weight Threshold    : 0                     Threshold Action     : down

-------------------------------------------------------------------------------
Port-id        Adm     Act/Stdby Opr     Primary   Sub-group     Forced  Prio 
-------------------------------------------------------------------------------
7/1/10         up      active    down    yes       1             -       1000
7/1/11         up      standby   down              2             -       32768

alcatel 6850 switchlerde mac adresi tablosu

sorun tespiti ve çözümü işlemi sırasında başvurulan en temel yerlerden birisi mac adresi tabloları dır. alcatel omni serisi switchlerde standart olmak üzere “show mac-address-table” komutu yer almaktadır.

1, 10 ve 305 vlanlarının tüm portlara taglı olarak tanıtımının bir switch üzerinde yapıldığını düşünelim. bu switch üzerinde komutuzu ve çıktılarını inceleyelim…

alcatel_omni_6850> show mac-address-table
Legend: Mac Address: * = address not valid

 Domain   Vlan/SrvcId        Mac Address            Type         Protocol     Operation          Interface
--------+--------------+---------------------+----------------+------------+--------------+------------------------
   VLAN    1              8c:90:d3:a3:21:88     learned          ---          bridging       1/1 
   VLAN    10             8c:90:d3:a3:21:88     learned          ---          bridging       1/1 
   VLAN    305            e0:2f:6d:73:b7:31     learned          ---          bridging       1/5 

Total number of Valid MAC addresses above = 3

tablodan görüldüğü üzere vlanid, mac adresi, interface, mac öğrenme türü protokolü v.b yer almaktadır. bu tablodan 1 ve 10 vlanın 1/1 portundan öğrenildiği 1/5 portundan ise 305 vlanı öğrenildiği görülmektedir. yani switch üzerimizde çalışan bir devre olmadığı görülmektedir.

1/1 portundaki bağlı cihazda gerekli düzenlemeler sonrası komutunu tekrar çalıştırdığımızda aşağıdaki şekilde bir çıktı elde ediyoruz. bu bize 1/1 – 1/5 portlarına bağlı cihazlardan 305 vlanı ile ilgili tanımların yapıldığı göstermektedir.

alcatel_omni_6850> show mac-address-table     
Legend: Mac Address: * = address not valid

 Domain   Vlan/SrvcId        Mac Address            Type         Protocol     Operation          Interface
--------+--------------+---------------------+----------------+------------+--------------+------------------------
   VLAN    1              8c:90:d3:a3:21:88     learned          ---          bridging       1/1 
   VLAN    10             8c:90:d3:a3:21:88     learned          ---          bridging       1/1 
   VLAN    305            00:14:1c:c1:0a:a8     learned          ---          bridging       1/1 
   VLAN    305            e0:2f:6d:73:b7:31     learned          ---          bridging       1/5 

Total number of Valid MAC addresses above = 4

“show mac-address-table ” komutunun en temel kullanımı bu şekildedir.

komut sonuna vlan veya interface yazılarak çıktı özelleştirilebilir. aşağıdaki örnekte görüldüğü gibi interface yazılınca o interfaceden öğrenilen mac adresleri görülecektir.

alcatel_omni_6850> show mac-address-table  1/5   
Legend: Mac Address: * = address not valid

 Domain   Vlan/SrvcId        Mac Address            Type         Protocol     Operation          Interface
--------+--------------+---------------------+----------------+------------+--------------+------------------------
   VLAN    305            e0:2f:6d:73:b7:31     learned          ---          bridging       1/5 

Total number of Valid MAC addresses above = 4

305 lanının hangi interfacelerden öğrenildiğini öğrenmek istiyorsak aşağıdaki yapıya uygun olarak komutumuzu işletmemiz gerekmektedir. daha fazla parametresi mevcut olup cli un helpinden gerekli bilgi alınabilir.

alcatel_omni_6850> show mac-address-table 305    
Legend: Mac Address: * = address not valid

 Domain   Vlan/SrvcId        Mac Address            Type         Protocol     Operation          Interface
--------+--------------+---------------------+----------------+------------+--------------+------------------------
   VLAN    305            00:14:1c:c1:0a:a8     learned          ---          bridging       1/1 
   VLAN    305            e0:2f:6d:73:b7:31     learned          ---          bridging       1/5 

Total number of Valid MAC addresses above = 4

nokia 6670 schematic

bir zamanlar symbian için kod yazarken edindiğim nokia 6670 in internetten bulduğun schematic dosyası.

[gview file=”http://www.ferhatcicek.com/wp-content/uploads/2014/01/6670_7610_Schematics_3_0.pdf”]

Python ile Nokia S60 için adım adım uygulama geliştirme – II

Bir önceki yazıda S60 cihazımız için python ile uygulama geliştirmek için gerekli dosyaları nereden bulacığımızı ve S60 cihazımıza python yüklemeyi ve çalıştırmayı anlatmıştım.

Bu yazımızda ise işi kişisel bilgisayarımızda python ile kod yazmak için yapmamız gerekenlerden ve bunları S60 cihazımıza yükleyerek yorumlayıcı tarafından çalıştırılması üzerinde duracağız.

Öncelikle forum.nokia sitesinden S60 cihazımıza uygun python SDK ları indirelim ve bilgisayarımıza kuralım. Bununla birlikte python.org sitesinden python un en son sürümünü bilgisayarınıza indirip kurmanızı öneririm. forum.nokia sitesinden indirdiginiz SDK yi bilgisayarınıza kurdugunuz zaman içerisinde işinize yarabilecek oldukça kullanışlı kılavuzlar bulacaksınız.

Şimdi sıra python kodlarını yazacagımız bir editöre ehtiyacımız var. Ben editplus ve ultraedit tercih ediyorum ancak bu yazılımlar paralı oldugu için isterseniz notepad, wordpad v.b. bir editor kullabilir veya context.cx adresinden oldukça başarılı ve bedava bir yazılım olan context i edinebilirsiniz. Tercih sizindir.

Artık kodlama kısmıan geldik. Eğer Python hakkında hiç bir bilginiz yok ise burdan sonrasına devam etmeden önce python.org sitesinden python hakkındaki kılavuzları edinmenizi öneririm. Çünkü bundan sonrası python programlama bilgisine dayanmaktadır.

Bir klasik olarak ilk kodumuzu yazalım..

import appuifw
appuifw.app.title = u”Hello World”
appuifw.note(u”Hello World!”, ‘info’)

Back To Top
X