[EN] SQL Server 2008 Service Pack 3 Cumulative Update 9 is available

By koprowskit on Styczeń 31st, 2013

On 21st January Microsoft released Cumulative Update No 9 for SQL Server 2008 with Service Pack 3. In this Cumulative Update 9 [version build 10.00.5829.00] resolved three bugs listed below and wchich could be applied for: Microsoft SQL Server 2008 Service Pack 3 Microsoft SQL Server 2008 Enterprise Microsoft SQL Server 2008 Standard Microsoft SQL […]

Jak wybrać element ze zbioru

By Paweł Goleń on Styczeń 31st, 2013

Na początek zagadka. Co jest nie tak z tym kodem (Python):

import random
osoby = ['osoba1', 'osoba2', 'osoba3']
print osoby[random.randint(0,10)%len(osoby)]

Jeśli ten sposób losowania jest wykorzystywany do wyznaczania osoby, która ma zrobić coś, czego nikt nie chce robić, to osoba3 ma lepiej niż osoba1. Dowód? Proszę:

In [41]: x = [random.randint(0,10)%3 for x in range(10)]

In [42]: x.count(0), x.count(1), x.count(2)
Out[42]: (5, 3, 2)

Wartość 0 jest losowana wyraźnie częściej, niż inne, w szczególności niż wartość 2. Czyli wracając do pierwszego przypadku osoba1 będzie miała wątpliwą przyjemność wykonywać tę niechcianą czynność częściej niż inni.

Jeśli ktoś twierdzi, że 10 prób to za mało by wyciągać wnioski, nie ma racji. To znaczy ma w tym sensie, że rzeczywiście uzyskanie takiego wyniku w 10 próbach przy „sprawiedliwym” losowaniu nie jest nieprawdopodobne (jeśli komuś się nudzi, może policzyć z jakie jest prawdopodobieństwo takiego wyniku losowania). W tym wypadku jednak nie jest to przypadek.

Funkcja randint zwraca element z przedziału (domkniętego) [0;10]. Wybrana wartość jest poddawana operacji modulo 3 (bo tyle jest osób), a więc wynikiem całości jest zbiór 0, 1 i 2. Przeprowadzamy zbiór składający się z 11(!) elementów w zbiór, który składa się z 3 elementów. Elementy 0, 3, 6 i 9 wskazują na osoba1, 1, 4, 7 i 10 na osoba2, na osoba3 wskazują tylko elementy 2, 5 i 8.

Zakładając, że prawdopodobieństwo wylosowania każdej z tych wartości jest jednakowe, osoba1 i osoba2 są losowane z jednakowym prawdopodobieństwem 4/11 natomiast osoba3 z prawdopodobieństwem 3/11. Różnica może niewielka, ale jest. Gdyby z kolei chodziło o faworyzowanie osoba1, to lepszym rozwiązaniem byłaby sytuacja z modulo 9, każdy może sobie przeliczyć dlaczego.

W tym konkretnym przypadku problem można rozwiązać korzystając z random.choice, co w praktyce sprowadza się do:

    def choice(self, seq):
        """Choose a random element from a non-empty sequence."""
        return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty

Jest jednak inna kwestia, która czasem może, choć wcale nie musi, powodować problem. Cytując dokumentację:

Python uses the Mersenne Twister as the core generator. It produces 53-bit precision floats and has a period of 2**19937-1. The underlying implementation in C is both fast and threadsafe. The Mersenne Twister is one of the most extensively tested random number generators in existence. However, being completely deterministic, it is not suitable for all purposes, and is completely unsuitable for cryptographic purposes.

Nie zawsze to muszą być zastosowania związane z kryptografią. Jeśli atakujący w jakiś sposób pozna wewnętrzny stan generatora, będzie w stanie przewidzieć kolejne jego wskazania. Jeśli atakującemu daje to jakąkolwiek korzyść, to mamy problem.

Problem możemy rozwiązać korzystając z os.urandom (w przypadku Pythona). Funkcja ta zwraca n (pseudo)losowych bajtów, ale w tym wypadku generator PRNG, z którego one pochodzą, nadaje się do zastosowań kryptograficznych. W tym przypadku jednak mamy n bajtów, jak mając 8 bajtów mamy sprawiedliwie wybrać spośród 3 elementów?

Rozwiązanie z modulo 3 oczywiście nie nadaje się do zastosowania. Prawidłowym rozwiązaniem jest to, które polega na losowaniu do czasu, gdy wylosowana wartość mieści się w przedziale [0;3]. Takie podejście jest oczywiście bardzo nieefektywne, aż 252 możliwe wyniki losowania trzeba konsekwentnie odrzucać.

Można zrobić jeszcze inaczej – sama operacja modulo nie jest taka zła, pod warunkiem, że przedział jest odpowiednio dobrany. W początkowym przykładzie nie byłoby problemu, gdyby pierwsze losowanie odbywało się z przedziałów [0;2] (tu modulo nie jest potrzebne), [0;5], [0;8], [0;11], (…).

Ogólnie jeśli chcemy wybrać element z przedziału 0, …, n-1 to możemy znaleźć taką wartość k, gdzie 2**k >= n. Tą wartość k wybieramy w sposób dogodny dla nas, czyli na przykład może to być wartość 8, bo 2**8 to 256, co jest zdecydowanie więcej niż 3 (szukamy z wartości z przedziału [0, 2] czyli nasze n to 3), a z generatora dostajemy co najmniej 8 bitów.

W kolejnym kroku wyliczamy pewną wartość q, w ten sposób, że dzielimy (bez reszty) 2**k przez nasze n. W tym wypadku daje nam to 85. Jeśli wybierzemy losowo wartość [0; n*q-1], w tym wypadku [0; 254], a następnie wykonamy operację modulo n (teraz – modulo 3), dostaniemy wartość z interesującego nas przedziału, przy czym każda wartość jest jednakowo prawdopodobna. Najważniejsze jest jednak to, że musimy przy tym losowaniu odrzucać tylko dwa wyniki – 255 i 256, a więc takie podejście jest zdecydowanie bardziej efektywne.

Cały ten wpis to może „oczywiste oczywistości”. Dla innych osób kombinowanie z jakimś dziwnym „bezpiecznym” generatorem nie ma sensu, po co się męczyć, skoro są funkcje, które robią to, o co chodzi (np. wspomniany random.choice)? Ja patrzę na to nieco inaczej. Dla mnie jeśli coś ma być losowe, to ma być nieprzewidywalne. Jeśli ma być nieprzewidywalne, to trzeba użyć „bezpiecznego” generatora, a tak się składa, że te „bezpieczne generatory” często nie są obudowane takimi przydatnymi funkcjami.

Jeśli wpis ten czyta ktoś, kto nie do końca potrafi zrozumieć różnicę między „zwykłym” i „bezpiecznym” generatorem liczb pseudolosowych, krótkie wyjaśnienie.

Ten „zwykły” generator liczb pseudolosowych ma to do siebie, że liczby przez niego generowane wcale nie są losowe (w sensie – nieprzewidywalne). Owszem, spełniają określone wymagania statystyczne, ale jeśli zainicjujemy generator w ten sam sposób (seed), to otrzymamy taką samą sekwencję na wyjściu. Taka powtarzalność jest wymagana choćby w symulacjach numerycznych (patrz też: Metoda Monte Carlo). W takich przypadkach powtarzalność symulacji jest nie tyle pożądana co wręcz niezbędna.

Zupełnie inaczej jest w przypadku, gdy wartości muszą być „prawdziwie” losowe. W tym wypadku każda generowana wartość powinna być nieprzewidywalna, atakujący obserwujący wcześniejsze wyjście generatora nie powinien móc przewidzieć kolejnej wygenerowanej wartości. By to osiągnąć generatory zbierają dane (entropię) z różnych źródeł (ruchy myszką, znaki wprowadzane na klawiaturze, ruch sieciowy, praca dysków, itp.) i uwzględniają je przy generowaniu kolejnych wartości.

Distributed File System za pomocą DFSUtil

By Mateusz Nadobnik on Styczeń 31st, 2013

Do obsługi obszarów nazw systemu plików DFS w systemie Windows Server 2008, 2008R2 jak i 20012 można posłużyć się polecenie DFSUtil . Polecenie jest przydatne, kiedy chcemy zautomatyzować zarządzanie DFS za pomocą skryptu. Poniżej przykładowe użycie utworzenia katalogu głównego o nazwie Public dla domeny domain12.pl na serwerze WS08R2 oraz dodanie folderu z obiektem docelowym:

Tworzymy folderu DFSRoots:
mkdir C:\DFSRoots
Następnie dodajemy podfolder, który będzie katalogiem głównym obszaru nazw
mkdir C:\DFSRoots\Public
Udostępniamy folder oraz nadajemy uprawnienia Odczytu dla Wszystkich
net share Public = C:\DFSRoots\Public


Poleceniem net share Public możemy sprawdzić nadane uprawnienia.

Po tak przygotowanej strukturze folderów możemy użyć DFSUtil w celu dodania nowego obszaru nazw.
dfsutil Root addDom \\WS08R2\Public „Ogólnie dostępny zasób firmowy „
Kolejnym poleceniem możemy dodawać foldery z obiektami docelowymi:
dfsutil link add \\domain12.pl\Public\Dokumenty \\192.168.10.131\Dokumenty

Wiedzę to wykorzystałem do automatyzacji wdrożenia DFS przy użyciu narzędzia dfsutil oraz Powershell. Skrypt tworzy folder w obszarze nazw dla każdego użytkownika, następnie dodaje foldery z obiektami docelowymi, co zaoszczędziło mi wiele czasu i pracy. Skrypt, co prawda stworzony dla własnych potrzeb, ale po drobnych modyfikacjach umieszczam poniżej, może ktoś się nim zainspiruje;)

Param (
    [parameter(Mandatory=$true)][string] $Server,
    [parameter(Mandatory=$true)][string] $sharePath,
    [parameter(Mandatory=$true)][string] $domainName
)
Set-Location C:\DFSRoots

Add-PSSnapin Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue    
Import-Module ActiveDirectory -ErrorAction SilentlyContinue  
$users = Get-QADUser | Select LogonName, Name, Path

foreach($user in $users)
{
mkdir $user.LogonName

$netshare= "net share " +  $user.LogonName+ "=C:\DFSRoots\"+$user.LogonName
$netshare
CMD /C $netshare

$dfsRoot = "dfsutil root addDom \\"+$Server+"\"+ $user.LogonName + ' "'+$user.Name+'"' 
$dfsRoot
CMD /C $dfsRoot

$dfsLinkPersonal =  "dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Osobiste \\"+ $sharePath+"\"+$user.LogonName + ' "Pliki i dokumenty osobiste"' 
$dfsLinkPersonal 
CMD /C $dfsLinkPersonal

$dfsLinkPublic =  " dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Publiczne \\"+ $sharePath+"\Public" + ' "Pliki i dokumenty publiczne"' 
$dfsLinkPublic
CMD /C $dfsLinkPublic

switch -wildcard ($user.Path)
    {  
    "*OU=WP,*"  {$dfsLinkDepart =  "dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Wydzialowe \\"+ $sharePath+"\WP" + ' "Pliki i dokumenty wydziałowe"' 
     CMD /C $dfsLinkDepart}

     "*OU=IT,*"  {$dfsLinkDepart =  "dfsutil link add \\"+ $domainName+"\"+$user.LogonName+"\Wydzialowe \\"+ $sharePath+"\IT" + ' "Pliki i dokumenty wydziałowe"' 
     CMD /C $dfsLinkDepart}

    }
}

Czyszczenie bufora wydruku (spoolera)

By Rafał Kosewski on Styczeń 31st, 2013

Ostatnimi czasy wielokrotnie zdarzyło mi się przyjmować wyzwania jakie rzucają drukarki, zaczynając od prostej atramentówki biurowej kończąc na korporacyjnych „kombajnach do drukowania”. Były to problemy z drukowaniem wynikające z różnych czynników, które skutecznie blokują … Więcej →

Post Czyszczenie bufora wydruku (spoolera) pojawił się poraz pierwszy w Porady Windows, Linux, Sieci, IT w firmie – Spece.IT.

Exchange Event id 3 WebHost failed to process a request

By Remigiusz Szatkowski on Styczeń 31st, 2013

Jeżeli macie problem z uruchomieniem serwisu Microsoft Exchange Mail Submission  lub Microsfot Exchange Transport lub jeżeli użytkownicy nie mogą usunąć wiadomości korzystając z OWA (Microsoft Outlook Web Access) otrzymując komunikat:
An unexpected error occurred and your request couldn’t be handled

sprawdźcie Event Log i poszukajcie poniższych błędów:

Event ID: 3 
Description:
WebHost failed to process a request.

 

Event ID: 1031
Description:
The service configuration file could not be loaded for the following reason: System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize —> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section system.serviceModel. (C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config line 134) at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)

 

Event ID: 1002
Description:
Unable to start the Microsoft Exchange Mail Submission service: System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize —> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section system.serviceModel. (C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config

 

Jeżeli znajdziecie takie wpisy oznacza to, że macie problemy powstałe po zainstalowniu KB2756920 .NET Framework Update.

 

Rozwiązaniem jest zainstalowanie: KB2637518 Hotfix for Microsoft .NET Framework 3.5.1 on Windows 7 RTM and Windows Server 2008 R2 RTM

 


© Remigiusz Szatkowski for ExchangeBlog, 2013. |
Permalink |
No comment |
Add to
del.icio.us

Post tags: , , , ,

Feed enhanced by Better Feed from Ozh

A czy TY chcesz mieć Internet Explorer 10?

By TechNet Polska on Styczeń 31st, 2013

Nie wiem czy osobiście używasz Internet Explorera, ale jeżeli zarządzasz jakimś nie całkiem małym systemem, to pewnie IE tam jest. Jest, a programiści w Microsoft nie śpią i na horyzoncie majaczy już wersja 10 dla najpopularniejszych obecnie systemów czyli Windows 7. Gdy pojawi się wersja finalna – systemy automatycznego aktualizowania wrzucą ją na komputery klienckie i serwery. Dla pojedynczego użytkownika to pewnie dobrze. Ale dla dużej firmy, w której dookoła przeglądarki zbudowane są rozwiązania biznesowe, z całej masy różnych powodów może okazać się to kłopotem. Rada tak naprawdę jest jedna: przetestować wszystkie rozwiązania z nową przeglądarką. Ewentualnie unowocześniając je tak, żeby działały bez problemów. Bo zgodność wstecz to jedna sprawa ale programiści potrafią "wystrugać" takie cuda, że najlepiej nie dotykać stacji klienckiej, bo wszystko się zawali.

A jeżeli nie zrobiłeś jeszcze testów? Jeżeli nie możesz spać w nocy, myśląc nad tym jak skończy się automatyczna przesiadka na nową wersję IE? Albo po prostu nie masz ochoty jej oglądać, bo liczba 10 źle Ci się kojarzy? Pozostaje zrobić tylko jedno: zabronić aktualizacji twoim komputerom. Robi się to tak samo, jak przy poprzednich wersjach przeglądarki: uruchamiając specjalny, przygotowany przez Microsoft program, który w rejestrze zabroni instalacji IE10 – Internet Explorer 10 Blocker Toolkit.

Warto wiedzieć, że nawet, jeżeli zabroniłeś już instalacji IE8 czy IE9 (o Blocker Toolkitach do nich pisałem gdy były nowością), Internet Explorer 10 wymaga swojej blokady i tak. To jest oddzielnie zarządzane.

Tak więc, jeżeli nie chcesz aktualizować systemów do IE10 – czym prędzej pobierz Blocker Toolkit i przygotuj mniej lub bardziej zautomatyzowaną jego dystrybucję na zarządzane komputery.

Autor: Grzegorz Tworek [MVP]

PS Jeżeli użytkownik ma odpowiednie prawa i poczuje się mądrzejszy niż jego administrator, to nową przeglądarkę zainstaluje i tak. Blocker Toolkit uniemożliwia instalację automatyczną a nie ręczną.

PS2 Jeżeli używasz WSUS czy SCCM, to oczywiście sam określasz co ma się instalować i kiedy. Blocker Toolkit broni przed instalacją przez "goły" Windows Update.

Oracle Enterprise Console: Błąd ORA-12545

By morfeusz on Styczeń 31st, 2013

Z artykułu:

http://blog.askomputer.pl/logowanie-do-oracle/

dowiedzieliśmy się o sposobach dostępu do baz Oracle.

Korzystając z zapisanych skrótów do baz w programie „Oracle Enterprise Console”, podczas łączenia może się pojawić komunikat: „ORA-12545:Connect failed because target host or object does not exist”.

Wynika to najczęściej z powodu ustawień zmian dostępu do bazy. Przykładowo mógł się zmienić numer portu lub lokalizacja bazy, a my nie zmodyfikowaliśmy ustawień w naszym kliencie.

Ustawienia każdej zapisanej przez nas bazy możemy sprawdzić klikając na nią w drzewku ”Network/Database/Nazwa Bazy” i odczytując informacje z pola TNS Descriptor.

 

 

 

 

 

 

 


Mamy tu oczywiście podane informacje na temat nazwy bazy, serwera na którym przechowywana jest baza oraz numer portu:

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))(CONNECT_DATA=(SID=sad)(SERVER=DEDICATED)))

Ustawienia te zapisane są w pliku:

tnsnames.ora

W wersji 10 Oracla zainstalowanego na systemie XP, plik znajduje się w miejscu:

D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\

Oczywiście, jego lokalizacja jest zależna od wersji oprogramowania, systemu operacyjnego oraz tego jak zainstalowaliśmy samego Oracla. Jest więc duże prawdopodobieństwo, że będziecie musieli go poszukać.

Uruchamiamy go za pomocą notatnika. Wyszukujemy naszej bazy. W tym przypadku jest to „SAD”. Jak widzimy dane z pliku pokrywają się z tym co widzimy w opisie manadzera. I te właśnie dane musimy poprawić.

Położenie bazy możemy znaleźć uruchomienie konsoli CMD oraz wpisanie polecenia:

tnsping

W tym przypadku będzie to

Tnsping sad

Polecenie zwróci podobny wynik:

C:\Documents and Settings\arkadiusz.siczek>tnsping sad 

TNS Ping Utility for 32-bit Windows: Version 9.2.0.5.0 – Production on 31-JAN-20

13 09:15:06 

Copyright (c) 1997 Oracle Corporation.  All rights reserved. 

Used parameter files:

D:\oracle\ora92\network\admin\sqlnet.ora 

Used HOSTNAME adapter to resolve the alias

Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SID=*)(SERVICE_NAME=sad

p))(ADDRESS=(PROTOCOL=TCP)(HOST=tsnoafsp)(PORT=1521)))

TNS-12541: TNS:no listener

Teraz już wiemy jakie dane lokalizacyjne powinny zostać zastosowane w ustawieniach manadżera.

Może się również zdarzyć, że problemem są DNSy. Warto wtedy w pliku w polu HOST= podać adres IP zamiast nazwy maszyny.

Update: Autoruns v11.42

By safarr_msft1 on Styczeń 31st, 2013

Autoruns v11.42: This release fixes a bug in the parsing of network file paths introduced in v11.41.

Jak odzyskac pliki wydruków ze spoolera Windows

By losiak on Styczeń 30th, 2013

Dzisiaj jeden z użytkowników wysłał dokument do wydruku na nieistniejącą już drukarkę sieciową, która nadal była, chociaż jako offline, widoczna w jego komputerze. Dokument ten został wygenerowany w systemie ERP, który nie pozwala na ponowny wydruk oryginału bez ingerencji administratora. Na szczęście dokument „siedział” w spoolerze systemowym i jakoś trzeba było się do niego dobrać.

Continue Reading

Microsoft Dynamics CRM 2011 Update Rollup 12 jest z powrotem dostępny i jest… fajny

By Jakub (Kuba) Skałbania on Styczeń 30th, 2013

Dziś w nocy Microsoft przywrócił ponownie przetestowany i działający (!) Update Rollup 12. Zgodnie z komunikacją, w którą zaangażowany jest już naprawdę top management (patrzcie tutaj), Update Rollup 12 wymagał przetestowania kilku scenariuszy, które powodowały błędy.

Continue Reading

Exchange 2010 usuniecie mobile device blad The ActiveSyncDevice Cannot be Found

By Remigiusz Szatkowski on Styczeń 30th, 2013

Jeżeli dla jakiejś skrzynki próbujecie usunąć lub wyczyścić urządzenie mobilne (Mobile Device) tak aby już więcej nie było połączone z kontem emailowym, możecie czasami otrzymać błąd:

The ActiveSyncDevice Cannot be Found

Błąd ten spowodowany jest tym, że użytkownik do którego należy skrzynka był przenoszony do innego OU po podłączeniu urządzenia. Przez co odwołanie do urządzenia jest nieprawidłowe ponieważ zawiera „ścieżkę” do poprzedniego OU z którego użytkownik został przeniesiony.

Jest to spowodowane tym, że Exchange nie aktualizuje informacji dla urządzenia mobilnego o tym że użytkownik został przeniesiony w Active Directory.

Jeżeli wykonacie polecenie Get-ActiveSyncDeviceStatistics dla danej skrzynki jak poniżej:

Get-ActiveSyncDeviceStatistics -mailbox JSmith | select DeviceId, Identity

w wyniku otrzymamy:

DeviceID                 Identity
--------                 --------
androidc1640524549       domain.local/Users/Test1/Smith John/.....
androidc2040902280       domain.local/Users/Test2/Smith John/.....

(…)
Read the rest of Exchange 2010 usuniecie mobile device blad The ActiveSyncDevice Cannot be Found (230 words)


© Remigiusz Szatkowski for ExchangeBlog, 2013. |
Permalink |
No comment |
Add to
del.icio.us

Post tags: , , , , , , ,

Feed enhanced by Better Feed from Ozh

Raport z vSphere

By Damian garbus on Styczeń 29th, 2013

Ostatnio bardzo wciągnęła mnie magia Powershell :))) Wiadomo bez przesady ale faktycznie coraz więcej widzę plusów aby skryptować powtarzające się zadania. Ostatnio umieściłem wpis nt. kasowania logów (bądź dowolnych plików). Skrypt możecie zobaczyć TUTAJ. Dziś chciałbym pokazać Wam skrypt który zaoszczędził mi sprawdzania oraz wykonania raportu ze środowiska vSphere które obecnie jest w tracie przejmowania przez zespół w którym pracuje.

Klimatyzacja w serwerowni

By morfeusz on Styczeń 29th, 2013

Wydarzenie jak na przedstawionej historii może się wydawać absurdalne, jednak ostatnio miałem okazję się spotkać z czymś takim. W wyniku wysokich mrozów zamarzł agregat klimatyzacji na dachu pewnej firmy i tym samym chłodzenie przestało działać.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Na szczęście w nieszczęściu, tam również działał Zabbix w sposób podobny to opisanej przeze mnie kiedyś historii: http://blog.askomputer.pl/uratowana-firma-przez-zabbixa/

Dzięki powiadomieniu z systemu monitoringu, informatycy mogli szybko zadziałać. Jak widać, przypadki problemów z klimatyzacją zdarzają się bardzo często i należy wcześniej zabezpieczyć się o odpowiedni system powiadomień.

Przy okazji, wreszcie nadchodzi ocieplenie. Już nawet słońce u mnie świeci


Owoce dyskusji o SOA (4)

By Sebastian Grugel on Styczeń 29th, 2013

Podsumowanie dyskusji z panem Krzysztofem Bokiejem (dalej w podsumowaniu – KB) o architekturze SOA Cz 1.

Będę ją streszczał, nauczony doświadczeniem, w małych kawałkach, odnoszących się do konkretnych dyskutowanych tez. 

Łatwiej będzie o linki w dalszej dyskusji, ułatwi jej śledzenie i utrzymanie ładu. Continue Reading

Owoce dyskusji o architekturze SOA (3)

By Sebastian Grugel on Styczeń 28th, 2013

Wyjaśnienia o istocie DMA (Data Mart for Analysis)

Odpowiedzi na pytania Krzysztofa Bokieja

DMA jest własnością analityka – to rozumiem. Ale co to jest „abstrakt opisu zasobu danych”? Czy tu chodzi o abstrakt tego co dane w organizacji opisują? Continue Reading