piątek, 29 maja 2015

Rozdzielanie argumentów cmd w PS

Jak pracowałeś z aplikacjami konsolowymi z gigantyczną liczba argumentów to za pewne dostawałeś oczopląsu - ja tak miałem. Mam mały skrypcik do rozwiązania tego problemu:
function Split-Args
{
    param(
    [ValidatenotNullOrEmpty()]
    [string]$argStr
    )
    [hashtable]$arg =@{}

    [regex]::Matches($argStr, '-.+') | %{
        [string]$value = $_.Groups[0].Value
        [string]$first, $second = $value.Split([char[]]@(' ','=',':'),2)
        $first = $first.Replace('-','')
        $arg[$first] = $second
    }

    return $arg.GetEnumerator() | sort  Name
}
Wywołanie jest następujące:
Split-Args "-unzip=true -zippedFile zipfile1.ZIP -unzipFolder .\unzips.temp\ --date sysdate -year:2014 ​"
Przyjemniej szuka się parametrów posortowanych po kluczu w kilku linijkach niż w jednej lini:



środa, 27 maja 2015

A\B U B\A

Dlaczego taki dziwny tytuł - dla ćwiczeń chciałem sobie napisać zapytanie wyświetlające różnicę między tabelą A i B.

Dajmy na to, że mamy tabele A z liczbami parzystymi:
 SELECT  LEVEL * 2  AS n  
            FROM DUAL
            CONNECT BY LEVEL <= 100

oraz tabele B z liczbami podzielnymi przez 3:
SELECT  LEVEL * 3  AS n  
            FROM DUAL
            CONNECT BY LEVEL <= 100

Teraz spróbujemy wyciągnąć różnice między tablą A i B. Całe zapytanie wygląda następująco:
WITH 
A AS
    (
         SELECT  LEVEL * 2  AS n  
            FROM DUAL
            CONNECT BY LEVEL <= 100
       
    ),  
B AS
     (
         SELECT  LEVEL * 3  AS n  
            FROM DUAL
            CONNECT BY LEVEL <= 100
       )
    

(SELECT 'a' tab ,n FROM A
MINUS
SELECT 'a' tab ,n FROM B)
UNION ALL
(SELECT 'b' tab ,n FROM B
MINUS
SELECT 'b' tab ,n FROM A)
ORDER by n 
;

Wynik takiego zapytania jest przedstawiony poniżej:

środa, 20 maja 2015

Autosys JILs i notepad++

Troszkę mam do czynienia z autosysem i bardzo nie lubię pracować z JILami. JILe (Job Information Language) to taki język, który opisuje proces lub paczkę procesów (Box). Przykład jak wygląda jil to można zobaczyć tutaj pod 8-m punkcie
lub tutaj.
Dodałem repo. z podświetleniem dla JILów. Repo jest tutaj. Dla takiego jila mamy takie podświetlenie:




Instrukcja jak zainstalować language file jest tutaj.
Uruchamiasz Notepad++ i w zakładce View idziesz na User Defined Language

Podświetlenie powinno być już zainstalowane. Możesz sprawdzić czy jest wpis z rozszerzeniem jil w pliku %APPDATA%\Notepad++\userDefineLang.xml​. W zakładkach języków powinieneś widzieć zmianę ( jak nie to uruchom jeszcze raz notepadd++).

Lista dostępnych podświetleń dla notepad++ możesz znaleźć pod tym linkiem.
Projekt pochodził z tego repozytorium.
Dzisiaj mam bardzo dużo 'tutaj' :)

sobota, 9 maja 2015

For loop dla msbuild

Jak będziesz chciał uruchomić kilka razy dany proces to możesz wykorzystać polecenia for. Ja tak muszę z budowaniem projektów w .NETcie. Musze 2 razy uruchomić msbuild'a. Niektóre projekty nie maja referencji do innych projektów w solucji, ale do zbudowanych bibliotek w specjalnym folderze. Problem też może być jak jedno budowanie projektu potrzebuje dużo czasu (dajmy na to 25 minut) i w każdym momencie może wystąpić błąd.

Polecenie do dwukrotnego budowania jest poniżej:
for /L %n in (1,1,2) do ( msbuild myProject.sln /m )​

Takie proste, a tak upraszcza życie :)

poniedziałek, 4 maja 2015

Kontrolowanie uwagi

Dzisiaj obejrzałem filmik o kontrolowaniu uwagi przez złodzieja.Wcześniej pisałem o sztuczce z kolorami, która również nawiązuje do kontrolowania uwagi.
Troszkę mnie to przeraża jak łatwo jest oszukać nasz umysł.


Zapraszam do obejrzenia.