Praca Grupowa/Kontrola wersji

By programistaaccess on Maj 31st, 2012

Wstęp

Pisząc programy w Access, albo nawet ogólnie pisząc oprogramowanie dochodzimy do etapu w którym trzeba zrobić coś z kimś wspólnie lub chcielibyśmy kontrolować zmiany dokonywane w kodzie. Wracając do swoich początków pamiętam, że cyklicznie robiłem kopię swoich plików mdb, a pracując z kimś wspólnie, była wersja główna do której dodawało się poprzez import formularze, a kod mergowało się na poziomie kopiuj/wklej…
Wszystko to prowadziło do frustracji i problemów podczas łączenia pracy zespołu. Wtedy też odkryłem systemy kontroli wersji, co zdecydowanie wpłynęło na poprawę zarządzania tworzonym kodem.

Jak to się robi w Access

Technicznie baza Accessa to jeden plik mdb/accdb, więc praca w oparciu o systemy kontroli wersji opiera się na wyodrębnieniu obiektów (formularze, moduły, raporty) do plików tekstowych, a te z kolei podlegają wersjonowaniu za pomocą jakiegoś systemu kontroli wersji.
Oczywiście nie robimy tego ręcznie, do tego służy: Access Source Code Control add-in

Dzięki temu dodatkowi będziemy mogli wykorzystać systemy kontroli wersji do których dostępny jest provider MSSCCI.

Świat Microsoft

Jako, że kręcimy się wokół technologi Microsoft opiszę dwa produkty kontroli wersji:
Visual Source Safe i Team Foundation Server. Oba, jeżeli chodzi o interface Access’a niewiele się różnią praca z nimi wygląda tak samo. Jednak po kilku latach używania obu mogę powiedzieć że nie jest to przyjemne.
Przede wszystkim zdarza się, że mimo wy-ewidencjonowania obiektu zmiany nie są zapamiętane, nie jest to nagminne, ale boli zawsze tak samo. Dodatkowo cyklicznie zdarza się komunikat: File not found, co wymaga generowania wersji na nowo.
Właściwie poza kontrolowaniem kodu dodatkowe czynności związane z opieką nad kodem nie są możliwe…
Jednego jednak rozwiązaniom MS nie mogę odmówić mianowicie, można wygenerować nową wersję jednym kliknięciem od A do Z.

Świat poza Microsoft

Prawda jest taka, że czasami koszt wejścia (licencje) nie daje pełnej satysfakcji, moje poszukiwania doprowadziły mnie do spojrzenia na kontrolę wersji za pomocą SVN, dodatkowo chciałem uciec od dodatku Source Code Control. Rozwiązałem to przy pomocy OASIS-SVN. Integracja z Tortoise SVN, dodatkowo system zadań Redmine z włączoną integracją z Subversion, wniosło pracę grupową na nowy poziom.

Zakończenie

Zachęcam każdego do spróbowania przygody z kontrolowaniem kodu, niezależnie od wybranego rozwiązania przyniesie to wiele dobrego w codziennej pracy, nawet jeżeli pracujecie w pojedynkę. Jeżeli czujesz niedosyt po przeczytaniu tego postu, zostaw swój komentarz, bo pisząc szczerze nie wiem czy poruszę tę tematykę jeszcze na blogu.

Najpopularniejszy protokół transferu plików

By TechNet Polska on Maj 31st, 2012

Tytuł jest przewrotny. Bo choć jeden protokół transferu plików jednoznacznie się wyróżnia w statystykach, to mało kto zgadnie przy pierwszej próbie o jaki protokół chodzi. A chodzi o BITS czyli Background Intelligent Transfer Service.
Administratorzy zazwyczaj kojarzą, że taki protokół gdzieśtam istnieje, często nawet wiedzą do czego się nadaje, ale dla pewności, podsumuję jego najważniejsze cechy:

  • BITS działa asynchronicznie. Po zleceniu transmisji, komputer ją realizuje niezależnie od działania zlecającej aplikacji, chwilowych przerw w dostępności serwera, restartów czy innych przeszkód. Czas, przez który rozpoczęta transmisja jest aktywna można konfigurować, ale domyślnie wynosi on 90 dni.
  • Zadanie kopiowania można dowolnie zatrzymywać i uruchamiać ponownie. To czasem cenne.
  • BITS potrafi użyć HTTP, HTTPS oraz SMB. Ten ostatni protokół nie istniał w BITS do wersji 1.5 włącznie, więc mimo, że mamy teraz 4.0, to często się o nim zapomina, podczas gdy świetnie sprawdza się na przykład podczas kopiowania plików w sieciach lokalnych.
  • BITS może sprawdzać wysycenie łącza i jeżeli wykryje innych chętnych do transmisji, spowolnić swoje działanie. W efekcie, nawet transferując duże pliki, nie przeszkadza użytkownikowi w normalnej pracy. Warto jednak pamiętać, że BITS będzie próbował przesyłać dane również, gdy łącze jest całkowicie wysycone. Nie będzie tego dużo, ale może być zauważalne. Wykrywając wysycenie łącza, BITS może zrobić tylko tyle ile się da. Jeżeli nie dogada się z routerem (przez UPnP) a LAN jest znacząco szybszy od WAN – mechanizmy oszczędzania łącza mogą działać niepoprawnie. Administratorowi pozostaje ręczne określenie maksymalnego dozwolonego pasma.
  • BITS działa na plikach. Jeżeli trzeba przesłać wiele małych plików albo całą strukturę katalogów – najlepiej wszystko spakować w jedną całość i przesłać całe archiwum na raz.
  • BITS w obecnie dostępnej wersji pozwala na pobieranie plików, wysyłanie plików oraz na transmisję typu upload-and-reply, gdzie serwer po otrzymaniu pliku od klienta generuje i odsyła odpowiedź.
  • BITS działa tylko, jeżeli użytkownik inicjujący transmisję jest zalogowany. Jeżeli jest to problemem, zawsze można zlecić transmisję na koncie LocalSystem, NetworkService albo LocalService.
  • BITS nie może transmitować otwartych plików. Jeżeli to poważny problem, to zawsze można użyć VSS do zrobienia migawki i przesłać plik z migawki.
  • BITS w Windows 7 korzysta z dobrodziejstw BranchCache, dzięki czemu przesłanie plików przez WAN do wielu komputerów jest bardzo "oszczędne".
  • Transmisji BITS można nadać jeden z czterech priorytetów, w zależności od tego czy bardziej zależy nam na czasie zakończenia operacji czy na umiarkowanym wysyceniu łącza. Transmisje o takim samym priorytecie wykonywane są równocześnie, podczas gdy te o niższym – oczekują na zakończenie lub zatrzymanie ważniejszych. Transmisje z priorytetem BG_JOB_PRIORITY_FOREGROUND (najwyższym) nie używają mechanizmów ograniczania prędkości transmisji, więc walczą o pasmo z innymi aplikacjami użytkownika.
  • Wysłanie wielu plików w jednej transmisji jest możliwe, ale będą one wysłane jeden po drugim. Chcąc zrównoleglić ich transmisję, najlepiej utworzyć wiele zadań o tym samym priorytecie.
  • Transmisje BITS mogą się uwierzytelniać na wiele różnych sposobów od uwierzytelniania Basic, przez NTLM aż po passport.
  • BITS domyślnie używa ustawień proxy skonfigurowanych w IE, ale w razie potrzeby można użyć dowolnych innych. Warto pamiętać, że ustawienia te nie muszą być identyczne dla każdego użytkownika, zwłaszcza dla kont takich jak LocalSystem, NetworkService czy LocalService.
  • BITS ma konfigurowalne limity zleceń. Domyślnie to 60 na użytkownika i 300 na komputer. Jedno zlecenie to maksymalnie 200 plików. Te i inne parametry mogą być ustalane przy pomocy Group Policy i nie dotyczą użytkowników o uprawnieniach administratora.
  • Wśród parametrów konfiguracyjnych BITS, wspomnieć trzeba również o sposobach radzenia sobie z błędami transmisji. BITS będzie próbował ponowić transmisję określoną ilość razy w określonym czasie. Czasem może przydać się precyzyjne dostrojenie tych wartości.
  • BITS nie sprawdza integralności plików. Jeżeli ktoś "w locie" podmieni fragment przesyłanej bazy danych, BITS da się oszukać. Jeżeli integralność jest istotna, trzeba sobie zapewnić własne mechanizmy.
  • Jeżeli ktoś zmieni źródłowy plik w czasie transmisji – BITS zacznie jego transfer jeszcze raz. Jeżeli podejrzewamy, że to prawdopodobny scenariusz, możemy skorzystać z VSS.
  • Za realizację zadań zleconych BITS odpowiada dedykowana usługa systemowa – BITS.
  • Jeżeli potrzebujemy opartego na HTTP/HTTPS prostego serwera BITS, w Windows Server 2008 mamy BITS Compact Server. Po zainstalowaniu możemy przesyłać pliki bez dłubania się w złożonych konfiguracjach, choć nawet te niezłożone mogą być w tym przypadku nieco uciążliwe. Oczywiście, można użyć i IIS jeżeli ktoś lubi, potrzebuje albo po prostu pewniej się czuje w dostępnych opcjach.
  • Działanie BITS można monitorować mechanizmami trace, na przykład z wykorzystaniem gotowych skryptów
  • Zlecanie transferów BITS jest bardzo proste niezależnie od tego, czy patrzy się z punktu widzenia programisty czy administratora. Można znaleźć nawet narzędzia GUI, ale prawdziwi twardziele używają odpowiednich cmdletów PowerShell. Należey tylko pamiętać o "Import-Module BitsTransfer"

Na szybko to byłoby na tyle. Mając następnym razem duże pliki do przesłania, jakiego mechanizmu użyjesz…?

Autor: Grzegorz Tworek [MVP]

PS Było kiedyś narzędzie bitsadmin. Ale obecnie jego użycie jest odradzane. Zresztą, kto chciałby takie narzędzie, mając do dyspozycji PowerShella?

Mała wielka zmiana w Exchange

By Konrad Sagala on Maj 31st, 2012

Kiedy w Service Packu 1 pojawił się w ustawieniach DAG parametr AllowCrossSiteRPCClientAccess, wiele osób miało nadzieję na pełną automatyzację przy przełączaniu Outlooków pomiędzy site’ami w przypadku awarii (dla Database Availability Group rozciągniętej między site’ami).

Niestety przełącznik ten był nieaktywny (niezależnie od ustawień). W przypadku awarii ośrodka podstawowego i niedostępności serwerów w tym ośrodku, bazy przełączały się automatycznie do ośrodka zapasowego, ale Outlooki wskazywały na ten sam serwer CAS (zdefiniowany we właściwościach bazy danych). Oczywiście powodowało to przejście w stan disconnected i nerwowe telefony użytkowników. Administratorzy radzili sobie przekierowywując skryptami klientów do ośrodka zapasowego (np. poprzez przypisanie innego adresu IP do nazwy CAS Array dla danego site’u.

Wprowadzona kilka dni temu poprawka RU3 dla Exchange 2010 SP2 zmienia ten stan rzeczy. W przypadku przełączenia aktywnej bazy do innego site’u, nastąpi automatycznie modyfikacja. Gdy mamy atrybut DAG’a AllowCrossSiteRPCClientAccess ustawiony na $false (jest to wartość domyślna), zdefiniowany w profilu Outlooka odnośnik do serwera RPC zostanie zaktualizowany na RPC Client Access Server Array, w lokalizacji AD, w której baza jest aktywna i zamontowana. Zmiana ta nie modyfikuje atrybutu RPCClientAccessServer, wskazującego na preferowany site. Przełączenie spowoduje wyłączenie Outlooków, ale po ich uruchomieniu klienci połączą się z aktywną bazą poprzez CAS Array w lokalizacji z aktywną bazą.

Jednak takie rozwiązanie nie każdemu może się podobać – każde przełączenie bazy (co w przypadku DAG’a zbudowanego z dwóch serwerów w oddzielnych site’ach AD może zdarzać się stosunkowo często) powoduje wyłączenie Outlooków dla wszystkich przełączanych userów. Żeby tego uniknąć możemy zmienić komendą set-databaseavailabilitygroup wartość atrybutu AllowCrossSiteRPCClientAccess na $true.

Wszystkie aspekty operacji ciekawie opisał Ross Smith IV na blogu produktowym Exchange. Zachowanie Outlooka w trakcie przenoszenia między bazami, które jest analogiczne do powyższej sytuacji również zostało opisane przez Rossa na tym samym blogu.

Windows 8 Release Preview, Windows Server 2012 Release Candidate, Microsoft Hyper-V Server 2012 Release Candidate już dostępne do pobrania

By Łukasz Kałużny on Maj 31st, 2012

Windows 8 Release Preview, Windows Server 2012 Release Candidate, Microsoft Hyper-V Server 2012 Release Candidate  już dostępne do pobrania na MSDN.

U mnie już się lecą na dysk

I już 8 RP jest dostępna publicznie – http://windows.microsoft.com/en-US/windows-8/iso, strona trochę tylko się muli teraz.

Zmiana Planów w Office 365

By Szymon Bochniak on Maj 31st, 2012

Użytkownicy planów Small Business Premium oraz Midsize Business muszą przygotować się na zmiany. Opowie o nich Karolina Król.

Continue Reading

Szczegóły problemów z April Cumulative Update 2012

By Szymon Bochniak on Maj 31st, 2012

Wyszły na jaw szczegóły problemów związanych z April Cumulative Update 2012. Jeśli go zainstalowaliście prawie na pewno nie powinniście być narażeni na duże problemy. Obecnie wiadomo już, że poprawka uszkadza mechanizm przychodzących wiadomości w SharePoint. Użytkownicy, którzy narażeni są na ten problem zdiagnozowali, że przychodzące maile do SharePointa nie są przez niego przechwytywane w związku z bugiem dotyczącym quoty na witrynie.

W tej sytuacji mogą ucierpieć również użytkownicy rozwiązania Nintex Workflow, którym w związku z powyższą usterką mogła przestać działać usługa Lazy Approval.

Społeczność opracowała już workaround dla obu błędów. Szczegóły znajdziecie na blogu Christiana Heindela.

 

Uczulałbym jednak przed zamykaniem potencjalnych błędów do powyższej listy. Jeden z pracowników Microsoftu na portalu Facebook podał informację dotyczącą problemów z ustalaniem IDków elementów list. W takim wypadku problemów docelowo może pojawić się więcej.

 

W każdym wypadku odradzam potencjalną instalację tej poprawki do czasu wydanie wersji poprawionej i jej przetestowania przez społeczność. Na testy pracowników Microsoftu chyba nie ma co liczyć …

Warto przeczytać również:


© admin for SharePoint Blog, 2012. |
Permalink |
Nikt jeszcze nie skomentował tego wpisu |
Add to
del.icio.us

Post tags: , , ,

Chmura a Office 365 – rok później

By Tadeusz on Maj 31st, 2012

Aż trudno mi uwierzyć, że zbliża się rok komercyjnej dostępności Office 365.
Ja sam dzisiaj więcej korzystam z chmury niż z lokalnych zasobów.
Dlaczego? Jeżeli chcecie posłuchać to … Postanowiłem wspomóc warszawskie community i opowiedzieć o chmurze i swoich doświadczeniach – w trakcie prezentacji „Chmura obliczeniowa – szósta platforma w historii informatyki – rewolucja, czy może to wszystko już było?”.
W poniedziałek 4 czerwca. Szczegóły tutaj. Jeżeli chcecie posłuchać, to konieczna jest rejestracja (szukajcie tabu „rejestracja”).
Nie trzeba jechać do Warszawy. Można posłuchać on-line.
Serdecznie zapraszam.

EventID 13568 (ntfrs) – rozwiązanie.

By robertmandziarz on Maj 31st, 2012

Poniżej przedstawiam rozwiązanie dla błędu usługi Active Directory przedstawionego poniżej:

Continue Reading

Zarządzanie uprawnieniami w SharePoint Online część 1

By Szymon Bochniak on Maj 31st, 2012

Pierwsza część prezentacji dotycząca uprawnień w SharePoint Online w usłudze Office 365.

SharePoint na Euro 2012

By Jarek Szybiński on Maj 30th, 2012

Postanowiłem, podążając za wszechobecnym trendem, również podłączyć się tematyczne do Euro 2012. Widzieliście już jogurty kibica, piwa z flagą narodową, kolej na SharePoint dla kibica!

Jeden z naszych Partnerów – firma Vialution,  tworząca rozwiązania na platformie SharePoint 2010, wyprodukowała mini aplikację w postaci webpart do SharePoint 2010. Możecie zainstalować ten komponent na swoim portalu SPS 2010 i bawić się w typowanie wyników.

Tutaj opis produktu: http://www.vialutions.pl/produkty/sp-webparts/vgoal-webpart/ a tutaj opis – dlaczego się za to zabrali: http://www.sharepointcorner.pl/index.php/sharepoint-webparts/39-em-webpart-typuj-wyniki-meczow-pilkarskich-w-sharepoint

Miłej zabawy i trzymam kciuki za naszą drużynę!

Szkolenie “combo” z wirtualizacji Hyper-V oraz System Center

By Dariusz Porowski on Maj 30th, 2012

Centrum Komputerowe ZETO S.A. w Łodzi prowadzi obecnie zapisy na szkolenie autoryzowane Microsoft 10215A (najlepiej oceniane szkolenie MS w ostatnim czasie), wraz z egzaminem 70-659 oraz dodatkowo 1 dniem warsztatowym extra Na dodatek do całego pakietu będzie jeszcze szkolenie integracyjne dla wszystkich uczestników!

Całe przedsięwzięcie jest współfinansowane z EU, więc za kilka własnych zł w porównaniu ze standardową ceną szkolenia można dostać fajny i ciekawy “combo pack”

Dodatkowo będę miał przyjemność poprowadzić to szkolenie – zapraszam!

Szczegóły i informacje na poniższych stronach:

oraz w ulotce:

UWAGA! Ilość miejsc jest ograniczona tylko do 6 osób! Dodatkowo osoby, które zgłoszą się do 1 czerwca mają szanse na nagrody (szczegóły w ulotce).

Jeżeli ktoś jest zainteresowany to niech da znać!

Usuwanie polskich znaków – [PowerShell]

By Mateusz Nadobnik on Maj 29th, 2012

Potrzebowałem skryptu który będzie usuwać wszystkie polskie znaki z danego ciągu, po dłuższej chwili… stworzyłem coś takiego:

$Polish = "ą", "ć", "ę", "ł", "ń", "ó", "ś", "ż", "ź", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ż", "Ź"
$English = "a", "c", "e", "l", "n", "o", "s", "z", "z", "A", "C", "E", "L", "N", "O", "S", "Z", "Z"

$ciag = ("Chrząszcz brzmi w trzcinie w Szczebrzeszynie, W szczękach chrząszcza trzeszczy miąższ, 
Czcza szczypawka czka w Szczecinie, Chrząszcza szczudłem przechrzcił wąż, 
Strząsa skrzydła z dżdżu, A trzmiel w puszczy, tuż przy Pszczynie, Straszny wszczyna szum...")
foreach($litera in $ciag.toCharArray())
{
    for($i=0; $i -lt 19; $i++)
    {
        if($litera.ToString().Equals($Polish[$i]))
        {
         $ciag=$ciag.Replace($Polish[$i],$English[$i])
        }
    }
} $ciag

Zastanawiam się czy idzie to napisać prościej, lepiej? Jakieś pomysły, propozycje?


 

Na pozbycie się polskich znaków jest prostszy w zapisie  i przede wszystkich szybszy sposób. Liczby mówią wszystko, tak na szybko porównanie mojego skryptu z skryptem napisanym w komentarzu przez Kacpra za co wielkie dzięki

function Remove-DiactricChars1{
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true)]
[string]$ciag
)
begin
    {
    $Polish = "ą", "ć", "ę", "ł", "ń", "ó", "ś", "ż", "ź", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ż", "Ź"
    $English = "a", "c", "e", "l", "n", "o", "s", "z", "z", "A", "C", "E", "L", "N", "O", "S", "Z", "Z"
    $Elapsed = [System.Diagnostics.Stopwatch]::StartNew()
    }
process
{
    foreach($litera in $ciag.toCharArray())
    {
        for($i=0; $i -lt 19; $i++)
        {
            if($litera.ToString().Equals($Polish[$i]))
            {
             $ciag=$ciag.Replace($Polish[$i],$English[$i])
            }
        }
    }
}
end
    {
    $ciag
    Write-Host “Calkowity czas: $($Elapsed.Elapsed.ToString())”
    }
}

Trzy próby dały wynik:

  • Całkowity czas: 00:00:00.2308620
  • Całkowity czas: 00:00:00.2129062
  • Całkowity czas: 00:00:00.2629116
function Remove-DiactricChars{
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true)]
[string]$text
)
begin
    {
    $Elapsed = [System.Diagnostics.Stopwatch]::StartNew()
    $chars = @{“ą”=”a”;“ć”=”c”;“ę”=”e”;“ł”=”l”;“ń”=”n”;“ó”=”o”;“ś”=”s”;“ż”=”z”;“ź”=”z”}
    }
process
    {
    $chars.GetEnumerator() | ForEach-Object{
    $text = $text -replace $_.Key, $_.Value}
    }
end
    {
    $text
    Write-Host “Calkowity czas: $($Elapsed.Elapsed.ToString())”
    }
}

Również trzy próby:

  •  Całkowity czas: 00:00:00.0312814
  • Całkowity czas: 00:00:00.0367986
  • Całkowity czas: 00:00:00.0326167

Update Rollup 3 dla Exchange 2010 Service Pack 2

By Konrad Sagala on Maj 29th, 2012

Trochę czasu minęło i pojawił się kolejny Rollup dla Exchange 2010 SP2. Zawiera on szereg poprawek, do błędów wychwyconych przez użytkowników i serwis, w szczególności:

  • KB2689810 Meeting Requests bodies get rendered in plain text in Outlook when created via Exchange Web Services.
  • KB2674445 Need the function to check ACL consistency during moving mailbox.
  • KB2700705 RpcClientAccess crashes with SocketException when UDP push notification is enabled.
  • KB2705425 Memory Leak in UMWorkerProcess.exe.
  • KB2698976 MRM Assistant doesnt process a mailbox with a contact created in other tenants.

Pełna lista poprawek znajduje się tutaj – KB2685289 Description of Update Rollup 3 for Exchange Server 2010 Service Pack 2, a instalka tutaj – Update Rollup 3 for Exchange Server 2010 SP2. Oczywiście jak zawsze przez wdrożeniem na serwerach z Forefront Protection dobrze jest zdisable’ować FPE (fscutility /disable). Po zakończonej instalacji należy FPE ponownie włączyć – fscutility /enable. Nie zapominajcie również o kopii zapasowej.

„Otwarty Kongres FLOSS” czyli nadrabiam zaległości

By T4ngram on Maj 29th, 2012

Bardzo dawno już nie pisałem. Dużo się działo i prawie wszystko na wyjazdach. Teraz powinienem nadrobić – w ciągu kilkunastu dni mam nadzieję opisać ostatnie tygodnie.
„Na początek rzeczy pierwsze” – tym razem według dat chyba.
27 maja Polska Grupa…(read more)

„Otwarty Kongres FLOSS” czyli nadrabiam zaległości

By T4ngram on Maj 29th, 2012

Bardzo dawno już nie pisałem. Dużo się działo i prawie wszystko na wyjazdach. Teraz powinienem nadrobić – w ciągu kilkunastu dni mam nadzieję opisać ostatnie tygodnie.
„Na początek rzeczy pierwsze” – tym razem według dat chyba.
27 maja Polska Grupa…(read more)