sobota, 20 sierpnia 2016

Piekło zamarzło - PowerShell na MAC OS X

Nie mogę w to uwierzyć, ale stało się. PowerShell jest na MAC'a.

Instalkę i src można naleźć na github'ie.

Jak widać, nowa wersja PS 6.0.0 wprowadza rewolucje w świecie Linux'a.
Wpisując Get-Command można porać wszystkie komendy jakie są dostępne, a jest ich na prawdę sporo:


Przez jakiś czas nie pisałem bo urodziła mi się fantastyczna córka, a oprócz tego większość czasu spędzałem na MAC'u. Teraz kiedy PS jest na OSX'a to może pobawię się :)

czwartek, 3 marca 2016

Szablon do sql kursora

Pewne rzeczy nie można przeskoczyć - takie jak kursor w sql server. Często szukam przykładów z użyciem kursora, więc postanowiłem zamieścić szablon.
DECLARE @v_name  NVARCHAR(MAX)
   
DECLARE v_cursor CURSOR LOCAL STATIC FORWARD_ONLY READ_ONLY FOR 
  select * from ....

OPEN v_cursor
WHILE 1=1
BEGIN 
  FETCH NEXT FROM v_cursor INTO @v_name
  IF @@fetch_status = 0   
  BEGIN
   Begin TRY
    .....
   End TRY
   Begin CATCH 
    PRINT Error_Message()
    BREAK
   End CATCH
  END
  ELSE BREAK 
End
CLOSE v_cursor
DEALLOCATE v_cursor
W SSMS przydałby się edytor snippetów. Może kiedyś będzie Resharper dla t-SQL'a :)

czwartek, 4 lutego 2016

IT w filmach

Dzisiaj oglądałem prezentację o tym jak informatyka jest przedstawiana w filmach.



A tutaj przegląd filmów:


Moją ulubioną sceną z CSI jest, gdy Pani detektyw na szybko stworzy interfejs GUI w VB do śledzenia adresu IP należącego do zabójcy:



Mój przyjaciel opowiadał mi, że jak dzwoni do niego HRowiec to używa wszystkich znanych mu słów związanych z programowaniem i zarządzaniem projektem ( nawet tych, których znaczenia nie zna), aby wyjść na bardzo dobrego specjalistę i bardzo często to działa :)







piątek, 29 stycznia 2016

Liczenie w SQL Server za pomocą CTE i ROW_NUMBER

Czasami proste rzeczy są lepsze, ale żeby te proste rzeczy znaleźć to potrzeba czasu.
Aby policzyć od 1 do 10000 to będziemy mogli wykorzystać pseudorekurencja, która opisałem wcześniej na blogu.
with cte (row)
 as (
SELECT 1
UNION all
SELECT c.row+1 FROM cte c
where c.row < 10000

 )
 select * from cte
 OPTION (MAXRECURSION 10000)
Ale wykorzystanie funkcji ROW_NUMBER jest dużo lepszym sposobem:
SELECT TOP (10000) ROW_NUMBER() OVER (ORDER BY s1.[object_id]) as row
FROM sys.all_objects AS s1 
CROSS JOIN sys.all_objects AS s2​

środa, 27 stycznia 2016

Aliasy w GIT

Aliasy w GIT to fantastyczne narzędzie upraszczające pracę.
Parę aliasów stworzyłem i chciałbym się z Tobą nimi podzielić.

Kod z aliasami jest zamieszczony na github'ie.
Żeby skorzystać z tych aliasów to będziesz musiał zmodyfikować configurację.
git config --global --edit
Dobrze jest zmienić edytor w git. Ja korzystam z atoma. Jak też masz atoma to możesz go używać pisząc taką komendę:
git config --global core.editor "atom --wait"
Przykład pobrany stąd.
Jeżeli chcesz, żeby w czasie otwartego programu atom można było pisać w konsoli to usuń parametr wait.
Na Windowsie mam inny tool. Edytor zawsze możemy zmienić przez modyfikację pliku
[core]
editor = \"c:/program files (x86)/Notepad++/notepad++.exe\" -multiInst -nosession
W pliku gitconfig dodaj ścieżkę do pliku z aliasami.
[include]
    path = /PathToRepos/git_config/gitalias
Jeżeli chcesz sprawdzić czy ścieżka jest skonfigurowana to napisz w konsoli:
git config --global include.path
Pod ścieżką /PathToRepos/git_config/ masz plik gitalias, który zawiera wszystkie aliasy.
Możesz sciągnąć kod źródłowy aliasów za pomocą gita uruchamiająć w katalogu PathToRepos taką komendę:
git clone https://github.com/arekbee/git_config

Jak zapiszesz ten plik to możesz zobaczyć jakie aliasy są zdefiniowane poprzez komendę aliasesd:
git aliases
Aby zobaczyć definicje aliasów wystarczy dopisać literkę d do poprzedniego wywołania
git aliasesd


Poniżej zamieszczam krótki opis niektórych komend. Poniższe komendy będę przedstawiał na sklonowanym repo z github.com/fsharp/fsharp.
Szybkie dodanie i spuszowanie zmian. ACP to skrót od Add, Commit i Push.
git acp "message"
Ściągnięcie kodu źródłowego, ale bez folderu .git
git download https://github.com/arekbee/git_config.git
Pobranie autorów kodu z informacjami o liczbie commitów:
git authors | head -10
Kiedy będziesz refaktoryzował kod i nie będziesz wiedział od czego zacząć to może powinieneś poszukać najczęściej modyfikowane pliki.
git churn
Jeżeli chcesz usunąć wszystkie niezatwierdzone zmiany i niewersjonowane pliki to napisz:
git clean-all
Szukanie nazwy plików, które zawierają dany ciąg znaków
git find-file ".exe"
Wyświetla historię commitów
git hist
Jeżeli napiszesz git histd to uzyskasz historię commitów z wiadomościami.
Wyświetl ścieżkę w której repo. zostało stworzone.
git root
Jeżeli chcesz wyświetlić jakieś poliki, które nie zostaną dodane do repo (bo wzorzec w .gitignore jest spełniony) to wywołaj poniższą komendę:
git ls-ignore
Dodać submodule (git externalne repo.)
git siur
Pokaż wszystkie branche które nie zostały zmergowane:
git unmerged-branches 
Stwórz plik z grafem commitów
git graphviz  -n10 > graph.dot
graphviz\dot.exe -Tpng graph.dot -o graph.png​
Tutaj jeszcze będę musiał popracować. Jak na razie wygląda to tak:

Mam nadzieję, że aliasy się przydadzą. Ja najczęściej korzystam z acp.