eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPowerShell - ktos uzywa?
Ilość wypowiedzi w tym wątku: 35

  • 11. Data: 2013-03-16 16:32:24
    Temat: Re: PowerShell - ktos uzywa?
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2013-03-16 15:00, Edek Pienkowski pisze:
    > Python nie wspiera natywnie ani WinAPI ani właściwie żadnego innego API.
    > Ma prymitywny dostęp do plików i możliwość exec-a, czyli wykonywania komend,
    > w sensie innych programów z podaniem parametrów.
    > (...)
    > Guglaj. Jeżeli ktoś zintegrował Pythona z administracją Win to ściągnij
    > lub zapłać, jeżeli nie to odpuść. Zresztą powyżej jest odpowiedź na to
    > pytanie wprost, co nie znaczy, że ktoś tego z jakiegoś powodu nie
    > próbował zrobić.

    Istnieje coś takiego http://sourceforge.net/projects/pywin32/
    Używam do porozumiewania się z programami przez COM (Adobe
    Illustrator, InDesign, Corel pod Win XP). Wiele programów pod
    windows udostępnia COM i bardzo fajnie się z tym pracuje. Chyba
    jest też możliwość pracy z winapi, ale nie używałem.



  • 12. Data: 2013-03-16 19:54:20
    Temat: Re: PowerShell - ktos uzywa?
    Od: "M.M." <m...@g...com>

    W dniu sobota, 16 marca 2013 12:48:50 UTC+1 użytkownik Marek Borowski napisał:

    > Obawiam sie ze w przypadku windows to by sie nie sprawdzilo. Powershell
    > ma ponad 3000 cmd-letow ktore nie maja zamiennika w postaci .exe. Nie
    > wydaje mi sie tez aby powstatly dekykowane bibioteki do Perla.
    > W windows 2012 kazda klikana akcja moze byc zapisana jaka ciag polecen
    > powershell. Takze jesli windows i skrypty to wybor jest klarowny.

    Czyli powershell to nie tylko język, ale zestaw gotowców specjalnie do
    administracji windows? Skoro tak, to Perle, Pythony itd nie będą miał
    szans. W przypadku gdy jakaś procedura naprawdę będzie wymagała
    normalnego języka programowania, to zawsze można ją napisać w C i potem
    z powershella wywołać. Hmm... ale w drugą stronę też można, logika w
    innym języku, a to co charakterystyczne dla windows w powershellu.
    Gdy mi czegoś brakowało w cmd, to pisałem programik w C++ i z pliku *.bat
    wywoływałem. Tak więc jest jeszcze możliwość połączenia dwóch języków.

    Pozdrawiam


  • 13. Data: 2013-03-16 20:14:17
    Temat: Re: PowerShell - ktos uzywa?
    Od: Roman W <b...@g...pl>

    On Sat, 16 Mar 2013 12:23:17 +0000 (UTC), Adam Przybyla
    <a...@r...pl> wrote:
    > ... jesli juz, pomysl o pythonie. Zastosujesz wszedzie, nie tylko
    na
    > niszowym PC. Z powazaniem

    Ze niby co jest niszowe, PC z Windows? Lol.

    RW


  • 14. Data: 2013-03-16 21:39:08
    Temat: Re: PowerShell - ktos uzywa?
    Od: "R.e.m.e.K" <g...@d...null>

    Dnia Sat, 16 Mar 2013 16:32:24 +0100, Piotr Chamera napisał(a):

    > Istnieje coś takiego http://sourceforge.net/projects/pywin32/
    > Używam do porozumiewania się z programami przez COM (Adobe
    > Illustrator, InDesign, Corel pod Win XP). Wiele programów pod
    > windows udostępnia COM i bardzo fajnie się z tym pracuje. Chyba
    > jest też możliwość pracy z winapi, ale nie używałem.

    To rzeczywiscie wyglada tak jak moje o tym wyobrazenie ;-)
    Dzieki, bede probowal ugryzc.

    --
    pozdro
    R.e.m.e.K


  • 15. Data: 2013-03-17 00:52:03
    Temat: Re: PowerShell - ktos uzywa?
    Od: "AK" <n...@n...com>

    Użytkownik "Piotr Chamera" <p...@p...onet.pl> napisał:

    > Chyba jest też możliwość pracy z winapi, ale nie używałem.

    Skrotowo.
    Mimo ze glowny focus w PyWinie to COM to jest tez pelne Win API.

    PS: Nie potrzeba nawet PyWina.
    Standardowe ctypes moze w zupelnosci wystarczyc.
    Ponizej zmodyfikowany pod ctypes przykladzik
    (uruchomi sie na standardowym Pythonie):

    --------------------------------------------

    #import win32con
    class win32con:
    NULL = 0
    CS_VREDRAW = 1
    CS_HREDRAW = 2
    IDI_APPLICATION = 32512
    IDC_ARROW = 32512
    WHITE_BRUSH = 0
    WS_OVERLAPPED = 0
    WS_CAPTION = 12582912
    WS_SYSMENU = 524288
    WS_THICKFRAME = 262144
    WS_MINIMIZEBOX = 131072
    WS_MAXIMIZEBOX = 65536
    WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | \
    WS_CAPTION | \
    WS_SYSMENU | \
    WS_THICKFRAME | \
    WS_MINIMIZEBOX | \
    WS_MAXIMIZEBOX)
    CW_USEDEFAULT = -2147483648
    SW_SHOWNORMAL = 1
    WM_PAINT = 15
    WM_CLOSE = 16
    WM_DESTROY = 2
    DT_SINGLELINE = 32
    DT_CENTER = 1
    DT_VCENTER = 4

    import sys
    import ctypes as ct
    from ctypes import windll as win

    WNDPROC = ct.WINFUNCTYPE(ct.c_long, ct.c_int, ct.c_uint, ct.c_int, ct.c_int)

    class WNDCLASS(ct.Structure):
    _fields_ = [('style', ct.c_uint),
    ('lpfnWndProc', WNDPROC),
    ('cbClsExtra', ct.c_int),
    ('cbWndExtra', ct.c_int),
    ('hInstance', ct.c_int),
    ('hIcon', ct.c_int),
    ('hCursor', ct.c_int),
    ('hbrBackground', ct.c_int),
    ('lpszMenuName', ct.c_char_p),
    ('lpszClassName', ct.c_char_p)]

    class RECT(ct.Structure):
    _fields_ = [('left', ct.c_long),
    ('top', ct.c_long),
    ('right', ct.c_long),
    ('bottom', ct.c_long)]

    class PAINTSTRUCT(ct.Structure):
    _fields_ = [('hdc', ct.c_int),
    ('fErase', ct.c_int),
    ('rcPaint', RECT),
    ('fRestore', ct.c_int),
    ('fIncUpdate', ct.c_int),
    ('rgbReserved', ct.c_char * 32)]

    class POINT(ct.Structure):
    _fields_ = [('x', ct.c_long),
    ('y', ct.c_long)]

    class MSG(ct.Structure):
    _fields_ = [('hwnd', ct.c_int),
    ('message', ct.c_uint),
    ('wParam', ct.c_int),
    ('lParam', ct.c_int),
    ('time', ct.c_int),
    ('pt', POINT)]

    def ErrorIfZero(handle):
    if handle == 0:
    raise WinError()
    else:
    return handle

    def MainWin():
    CreateWindowEx = win.user32.CreateWindowExA
    CreateWindowEx.argtypes = [ct.c_int, ct.c_char_p, ct.c_char_p, ct.c_int,
    ct.c_int, ct.c_int,
    ct.c_int, ct.c_int, ct.c_int, ct.c_int, ct.c_int,
    ct.c_int]
    CreateWindowEx.restype = ErrorIfZero

    # Define Window Class
    wndClass = WNDCLASS()
    wndClass.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW
    wndClass.lpfnWndProc = WNDPROC(WndProc)
    wndClass.cbClsExtra = wndClass.cbWndExtra = 0
    wndClass.hInstance = win.kernel32.GetModuleHandleA(ct.c_int(win32con.NULL
    ))
    wndClass.hIcon = win.user32.LoadIconA(ct.c_int(win32con.NULL),
    ct.c_int(win32con.IDI_APPLICATION))
    wndClass.hCursor = win.user32.LoadCursorA(ct.c_int(win32con.NULL),
    ct.c_int(win32con.IDC_ARROW))
    wndClass.hbrBackground = win.gdi32.GetStockObject(ct.c_int(win32con.WHITE_BRU
    SH))
    wndClass.lpszMenuName = None
    wndClass.lpszClassName = "MainWin"
    # Register Window Class
    if not win.user32.RegisterClassA(ct.byref(wndClass)):
    raise WinError()
    # Create Window
    hwnd = CreateWindowEx(0,
    wndClass.lpszClassName,
    "Python Window",
    win32con.WS_OVERLAPPEDWINDOW,
    win32con.CW_USEDEFAULT,
    win32con.CW_USEDEFAULT,
    win32con.CW_USEDEFAULT,
    win32con.CW_USEDEFAULT,
    win32con.NULL,
    win32con.NULL,
    wndClass.hInstance,
    win32con.NULL)
    # Show Window
    win.user32.ShowWindow(ct.c_int(hwnd), ct.c_int(win32con.SW_SHOWNORMAL))
    win.user32.UpdateWindow(ct.c_int(hwnd))
    # Pump Messages
    msg = MSG()
    pMsg = ct.pointer(msg)
    NULL = ct.c_int(win32con.NULL)

    while win.user32.GetMessageA(pMsg, NULL, 0, 0) != 0:
    win.user32.TranslateMessage(pMsg)
    win.user32.DispatchMessageA(pMsg)

    return msg.wParam

    def WndProc(hwnd, message, wParam, lParam):
    ps = PAINTSTRUCT()
    rect = RECT()

    if message == win32con.WM_PAINT:
    hdc = win.user32.BeginPaint(ct.c_int(hwnd), ct.byref(ps))
    win.user32.GetClientRect(ct.c_int(hwnd), ct.byref(rect))
    win.user32.DrawTextA(ct.c_int(hdc),
    "Python Powered Windows" ,
    ct.c_int(-1), ct.byref(rect),
    win32con.DT_SINGLELINE|win32con.DT_CENTER|win32con.D
    T_VCENTER)
    win.user32.EndPaint(ct.c_int(hwnd), ct.byref(ps))
    return 0
    elif message == win32con.WM_DESTROY:
    win.user32.PostQuitMessage(0)
    return 0

    return win.user32.DefWindowProcA(ct.c_int(hwnd), ct.c_int(message),
    ct.c_int(wParam),
    ct.c_int(lParam))

    if __name__=='__main__':
    sys.exit(MainWin())


    PS: w ctypes.windll jest dostep dllek:
    kernel32
    user32
    shell32
    gdi32
    w ctypes.wintypes do wielu stalych i nieco struktur
    (ale pywin jest tu zdecydowanie pelniejszy. hint : modul win32api)

    ------------------------------

    Przy okazji przykladzik Wordowania poprzez PyWin COM:

    import sys
    from win32com.client import constants
    import win32com.client

    word = win32com.client.Dispatch('Word.Application')

    word.Visible = True

    doc = word.Documents.Add()
    doc.Activate()

    range = doc.Range(Start=0, End=0)
    range.Text = 'Czesc Kolego ! Tu jestem :)'

    ---------------------------

    a tu Excelowania:

    import sys
    from win32com.client import constants
    import win32com.client

    excel = win32com.client.Dispatch("Excel.Application")

    excel.Visible = True

    if len(excel.Workbooks) == 0:
    excel.Workbooks.Add()

    excel.Cells(1,1).Value = "Hello"

    ---------------------------------------------------

    Tu jakies zabawy z IE przez COM:

    import time
    import win32com.client

    READYSTATE_COMPLETE = 4

    ie = win32com.client.Dispatch('InternetExplorer.Applicati
    on')

    def result(ie):
    while True:
    state = ie.ReadyState
    if state == READYSTATE_COMPLETE:
    break
    time.sleep(0.1)
    return ie.Document.documentElement.innerHTML

    def getURL(ie, url):
    ie.Navigate(url)
    return result(ie)

    def refreshURL(ie):
    ie.Refresh()
    return result(ie)


    if __name__ == '__main__':
    print getURL(ie, 'http://python.pl')

    ----------------------------------------

    A tu jakies zabawy z Pythonem na cudzym
    komputerze poprzez DCOM ale tez z wykorzystaniem
    WinAPI:

    import pythoncom, win32com.client
    import win32api

    clsctx=pythoncom.CLSCTX_LOCAL_SERVER
    i = win32com.client.DispatchEx("Python.Interpreter", "PLK-PLEWALSK-XP",
    clsctx=clsctx)
    i.Exec("import win32api")
    print i.Eval("win32api.GetComputerName()")
    print win32api.GetComputerName()

    PS: No ale oczywiscie "Python nie ma dostepu do WinAPI ani do niczego... " ;)

    AK


  • 16. Data: 2013-03-17 00:56:27
    Temat: Re: PowerShell - ktos uzywa?
    Od: "AK" <n...@n...com>

    Użytkownik "Piotr Chamera" <p...@p...onet.pl> napisał:

    > Wiele programów pod windows udostępnia COM

    Mozna spokojnie powiedziec ze wiekszosc (a wszystkie powazniejsze).
    Tylko ze trzeba sie tego naumiec, a taki np. AutoCAD tp daje API
    ActiveX-owe liczace tysiace funkcji.

    PS: Uj biedne i nieswiadome te ayatollahy Unixow wszelkich ;)

    AK


  • 17. Data: 2013-03-17 01:12:51
    Temat: Re: PowerShell - ktos uzywa?
    Od: "AK" <n...@n...com>


    Użytkownik "AK" <n...@n...com> napisał w wiadomości
    news:ki30rj$q0s$1@speranza.aioe.org...
    > Użytkownik "Piotr Chamera" <p...@p...onet.pl> napisał:
    >
    >> Wiele programów pod windows udostępnia COM
    >
    > Mozna spokojnie powiedziec ze wiekszosc (a wszystkie powazniejsze).
    > Tylko ze trzeba sie tego naumiec, a taki np. AutoCAD tp daje API
    > ActiveX-owe liczace tysiace funkcji.
    >
    > PS: Uj biedne i nieswiadome te ayatollahy Unixow wszelkich ;)
    >
    > AK

    Jeszcze moze sie komus przydac COMowy dostep do ADO.
    Kilka linijek raptem, a dostep do wszystkiego SQLowego poprzez
    standardowe dla Win ADO API:

    To fragment bardzo starych jakies wypocin i nawet nie wiem co robiace
    i dlaczego tak'namotane. To ma sluzyc _tylko_ jako zrab sposoby dostepu
    do ADO API przez COM.

    -----------------


    def openBase(server, database, user=None, password=None):

    import win32com.client
    import pywintypes

    def cn_cursor(self):

    def rs_close(self):
    pass

    rs = win32com.client.Dispatch('ADODB.Recordset')
    rs.ActiveConnection = self

    rs.execute = self.Execute
    rs.close = rs_close

    return rs

    def cn_commit(self):
    pass

    cn = win32com.client.Dispatch('ADODB.Connection')

    cn.cursor = cn_cursor
    cn.commit = cn_commit
    cn.close = cn.Close

    # oConn.Open "Provider=OraOLEDB.Oracle;" & _
    # "Data Source=MyOracleDB;" & _
    # "OSAuthent=1"

    # DSN = 'Provider=msdaora;' +
    # 'Data Source=BMM;' +
    # 'User Id=/;' +
    # 'Password='

    # Set connection properties.
    cn.Provider = 'sqloledb'
    cn.Properties['Data Source'].Value = server
    cn.Properties['Initial Catalog'].Value = database
    if '.' not in server:
    cn.Properties['Integrated Security'].Value = 'SSPI'
    else:
    cn.Properties['User ID'].Value = user
    cn.Properties['Password'].Value = password

    # Open connection.
    cn.Open()

    return cn


    def createCm(cn):

    import win32com.client
    import pywintypes

    # cm = CreateCm(cn)
    # cm.CommandText = cmd
    # rs = cm.Execute()

    cm = win32com.client.Dispatch('ADODB.Command')
    cm.ActiveConnection = cn

    return cm

    ---------------------------------

    PS: PyWinowy modul "adodbapi" do powazniejszych zastosowan
    http://sourceforge.net/projects/adodbapi

    AK


  • 18. Data: 2013-03-17 11:14:42
    Temat: Re: PowerShell - ktos uzywa?
    Od: PawelS <c...@1...pl>

    R.e.m.e.K pisze:
    > Dnia Sat, 16 Mar 2013 12:54:09 +0100, PawelS napisał(a):
    >
    >>> Ale skladnia Perla mnie mocno odrzuca :/
    >> A jaka to konkretnie składnia Perla Cię odrzuca,
    >> mógłbyś podać przykłady (tak z ciekawości pytam).
    >
    > Chocby pierwszy lepszy z polskiej wiki:
    >
    > $_ = "Magiczna liczba to 150\n";
    > print;
    > s/\d+/-1/;
    > print;
    To jest niestety problem ... wikipedii i wikipedystów,
    przedstawiających takie, a nie inne przykłady
    a na to nic nie poradzimy ...
    To powyżej powinno być zapisane:
    my $var; # using strict w perlu trzeba deklarować jednak zmienne ;)
    $var="Magiczna liczba to 150\n";
    print($var);
    # na to niestety nie ma akurat rady, chyba że własna sub:
    # coś na kształt PHP:
    # sub preg_replace {
    # my ($pattern,$replacement,$subject)=@_;
    # $subject=~s/$pattern/$replacement/g;
    # return $subject;
    # }
    $var=~s/\d+/-1/; # lub $var=preg_replace('\d+', '-1', $var);
    print($var);
    Jak dla mnie tak jest czytelniej,
    wystarczy przestać używać wynalazków i skrótów perla.

    > Albo:
    >
    > $n = $#a - $[ + 1;
    > print "ilosc elementow w wektorze: $n \n";
    >
    > Taki $#a czy $[ jako zywo przypomina mi idee Brainfucka, ktory jest fajny,
    > bo dowcipny i pomyslowy, ale jest tylko zartem.
    Jeśli nie można czegoś zmienić, to ...
    $#a - odpowiednik: count(ARRAY)-1
    ewentualnie, można zapisać własne sub:
    # sub count { my (@LIST)=@_; return $#LIST; }
    # przy czym to mylące, bo zwraca indeks ostatniego elementu
    # powinno być raczej: return $#LIST+1;
    przy czym to ARRAY to LIST, a jest jeszcze HASH,
    tu akurat w wielu językach jest to lepiej rozwiązane
    bez podziału na listę (klucze numeryczne)
    i hash (klucze to ciągi znaków)

    >> Wprawdzie Perl ma pewne swoje takie, a nie inne konstrukcje,
    >> jednakże w Perlu można pisać całkiem czytelne programy,
    >> składnią przypominające programy pisane w C
    >> (oczywiście poza pewnymi drobnymi wyjątkami).
    >
    > W Pythonie tez mozna, w Rubym tez mozna, ostatecznie w Visual Basicu tez
    > mozna. To nie jest argument, ze da sie pisac czytelnie, czytelnosc powinna
    > byc odgornie narzucona imho.
    Niestety z racji, że python narzuca na formatowanie,
    to i nie bardzo mi się podoba.
    Często stosuję tego typu pseduo kompresję kodu:
    if (conditional) { $a=1; $B[2]=2; $C['key']=3; }
    a gdzie indziej jeśli to potrzebne dekompresję:
    if (conditional) {
    $a=1; # bo jest to pierwsza zmienna w if ;)
    $B[2]=2; # bo jest to druga zmienna w if, to klucz = 2 i wartość = 2
    $C['key']=3; # bo musi być inaczej niż w poprzednich liniach
    }

    Poza tym zawsze się zastanawiam,
    jeśli w pytonie napiszę:
    if conditional
    instrukcja # linia rozpoczęta 1 tabulatorem
    instrukcja # linia rozpoczęta 4 spacjami
    instrukcja # linia rozpoczęta 1 tabulatorem
    instrukcja # linia rozpoczęta 4 spacjami

    to pytanie jak python to zinterpretuje?
    Przeglądając kody źródłowe (like C) często widzę
    mieszany styl wcięć, kilka linii ładnie spacjami,
    kolejne linie ładnie tabulatorami,
    i jeśli ja mam inne ustawienia np: vim ts=4 sw=4
    to niestety kod rozjeżdża mi się na ekranie,
    po prostu cudowny haos ...
    a i nawet kody w pythonie tak zapisane skrypty widziałem ...
    co dla mnie jest zastanawiające jak to się wykona
    analogicznie jak dla Ciebie powyższe perlowe replace ...


  • 19. Data: 2013-03-17 12:14:23
    Temat: Re: PowerShell - ktos uzywa?
    Od: Adam Przybyla <a...@r...pl>

    Roman W <b...@g...pl> wrote:
    > On Sat, 16 Mar 2013 12:23:17 +0000 (UTC), Adam Przybyla
    > <a...@r...pl> wrote:
    >> ... jesli juz, pomysl o pythonie. Zastosujesz wszedzie, nie tylko
    > na
    >> niszowym PC. Z powazaniem
    >
    > Ze niby co jest niszowe, PC z Windows? Lol.
    ... niszowy jest PC, niewazne z jakim systemem. Z powazaniem
    Adam Przybyla


  • 20. Data: 2013-03-17 12:27:47
    Temat: Re: PowerShell - ktos uzywa?
    Od: "R.e.m.e.K" <g...@d...null>

    Dnia Sun, 17 Mar 2013 11:14:42 +0100, PawelS napisał(a):

    >>> A jaka to konkretnie składnia Perla Cię odrzuca,
    >>> mógłbyś podać przykłady (tak z ciekawości pytam).
    >>
    >> Chocby pierwszy lepszy z polskiej wiki:
    >>
    >> $_ = "Magiczna liczba to 150\n";
    >> print;
    >> s/\d+/-1/;
    >> print;
    > To jest niestety problem ... wikipedii i wikipedystów,
    > przedstawiających takie, a nie inne przykłady
    > a na to nic nie poradzimy ...

    Zawsze mozesz wyedytowac wiki i poprawic, sam tak czasem robie :-)

    > To powyżej powinno być zapisane:
    > my $var; # using strict w perlu trzeba deklarować jednak zmienne ;)
    > $var="Magiczna liczba to 150\n";
    > print($var);
    > # na to niestety nie ma akurat rady, chyba że własna sub:
    > # coś na kształt PHP:
    > # sub preg_replace {
    > # my ($pattern,$replacement,$subject)=@_;
    > # $subject=~s/$pattern/$replacement/g;
    > # return $subject;
    > # }
    > $var=~s/\d+/-1/; # lub $var=preg_replace('\d+', '-1', $var);
    > print($var);
    > Jak dla mnie tak jest czytelniej,
    > wystarczy przestać używać wynalazków i skrótów perla.

    Ale jak sam piszesz przestac nie tak latwo, bo "na to niestety nie ma rady".

    >> Albo:
    >> $n = $#a - $[ + 1;
    >> print "ilosc elementow w wektorze: $n \n";
    >>
    >> Taki $#a czy $[ jako zywo przypomina mi idee Brainfucka, ktory jest fajny,
    >> bo dowcipny i pomyslowy, ale jest tylko zartem.

    btw powyzszy przyklad nie jest juz z wiki, tylko jakiegos studenckiego
    skryptu.

    > Jeśli nie można czegoś zmienić, to ...
    > $#a - odpowiednik: count(ARRAY)-1
    > ewentualnie, można zapisać własne sub:
    > # sub count { my (@LIST)=@_; return $#LIST; }
    > # przy czym to mylące, bo zwraca indeks ostatniego elementu
    > # powinno być raczej: return $#LIST+1;
    > przy czym to ARRAY to LIST, a jest jeszcze HASH,
    > tu akurat w wielu językach jest to lepiej rozwiązane
    > bez podziału na listę (klucze numeryczne)
    > i hash (klucze to ciągi znaków)

    czyli koszmarek :)

    >>> Wprawdzie Perl ma pewne swoje takie, a nie inne konstrukcje,
    >>> jednakże w Perlu można pisać całkiem czytelne programy,
    >>> składnią przypominające programy pisane w C
    >>> (oczywiście poza pewnymi drobnymi wyjątkami).

    Ja zdaje sobie sprawe, ze po miesiacu perlowania nie bede sie juz potykal o
    te dziwactwa, ale naprawde wole power inwestowac w rzeczy bardziej
    uniwersalne niz pomysly zwyciezcy konkursu "najbardziej zamotana skladnia".

    >> W Pythonie tez mozna, w Rubym tez mozna, ostatecznie w Visual Basicu tez
    >> mozna. To nie jest argument, ze da sie pisac czytelnie, czytelnosc powinna
    >> byc odgornie narzucona imho.
    > Niestety z racji, że python narzuca na formatowanie,
    > to i nie bardzo mi się podoba.
    > Często stosuję tego typu pseduo kompresję kodu:
    > if (conditional) { $a=1; $B[2]=2; $C['key']=3; }
    > a gdzie indziej jeśli to potrzebne dekompresję:
    > if (conditional) {
    > $a=1; # bo jest to pierwsza zmienna w if ;)
    > $B[2]=2; # bo jest to druga zmienna w if, to klucz = 2 i wartość = 2
    > $C['key']=3; # bo musi być inaczej niż w poprzednich liniach
    > }

    Teraz ja z ciekawosci spytam. Po co stosujesz kompresje? Masz jakis cel w
    tym, zeby plik zrodla bym mniejszy? Osobiscie unikam takich praktyk jak
    ognia, bo po roku, gdy musze ten kod czytac to chetnie sam bym sie kopnal w
    dupe za taki styl. Znaczy juz nie musze, bo od lat tego nie robie.

    > Poza tym zawsze się zastanawiam,
    > jeśli w pytonie napiszę:
    > if conditional
    > instrukcja # linia rozpoczęta 1 tabulatorem
    > instrukcja # linia rozpoczęta 4 spacjami
    > instrukcja # linia rozpoczęta 1 tabulatorem
    > instrukcja # linia rozpoczęta 4 spacjami
    >
    > to pytanie jak python to zinterpretuje?

    Czy to nie zalezy od ustawien kompilatora? Poza tym uzywajac dobrego edytora
    mozna o tym problemie zapomniec bez wzgledu na to czy uzywasz spacji, taba
    czy obu naraz. Mam na mysli edytor, ktory w locie podmieni taby na spacje
    lub spacja na taby - tak jak chcesz.
    Zatem jest to problem wagi lekkiej, w przeciwienstwie do perlowych kompresji
    zabetonowanych w jezyk na zawsze.

    > Przeglądając kody źródłowe (like C) często widzę
    > mieszany styl wcięć, kilka linii ładnie spacjami,
    > kolejne linie ładnie tabulatorami,
    > i jeśli ja mam inne ustawienia np: vim ts=4 sw=4
    > to niestety kod rozjeżdża mi się na ekranie,
    > po prostu cudowny haos ...
    > a i nawet kody w pythonie tak zapisane skrypty widziałem ...
    > co dla mnie jest zastanawiające jak to się wykona
    > analogicznie jak dla Ciebie powyższe perlowe replace ...

    A jednak sie jakos wykonuje chyba. Czyli moze python jest "madrzejszy" niz
    sie wydaje? :-)

    --
    pozdro
    R.e.m.e.K

strony : 1 . [ 2 ] . 3 . 4


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: