<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>arek on software</title><description></description><managingEditor>noreply@blogger.com (Anonymous)</managingEditor><pubDate>Sun, 1 Sep 2024 14:51:29 +0200</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">254</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://arekonsoftware.blogspot.com/</link><language>en-us</language><item><title>Piekło zamarzło - PowerShell na MAC OS X</title><link>http://arekonsoftware.blogspot.com/2016/08/pieko-zamarzo-powershell-na-mac-os-x.html</link><category>.NET</category><category>git</category><category>MacOs</category><category>powershell</category><pubDate>Sat, 20 Aug 2016 17:48:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-4866549264907422605</guid><description>Nie mogę w to uwierzyć, ale stało się. PowerShell jest na MAC'a. &lt;br /&gt;
&lt;br /&gt;
Instalkę i src można naleźć na &lt;a href="https://github.com/PowerShell/PowerShell"&gt;github'ie&lt;/a&gt;. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVjO-aAtebikQE1S5MIynz6pnHCuWLKcsuV9Vu9uGxBUAok3B36aDHZV-l57e21wX9-za_aQbDVeuErOqWHjvDw2LXEkp9RWUA4p2HPssnvrC8Rvj8nhMuTgaxC67ZCxu9ZupnqSUooO5E/s1600/versiontable_ps_osx.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVjO-aAtebikQE1S5MIynz6pnHCuWLKcsuV9Vu9uGxBUAok3B36aDHZV-l57e21wX9-za_aQbDVeuErOqWHjvDw2LXEkp9RWUA4p2HPssnvrC8Rvj8nhMuTgaxC67ZCxu9ZupnqSUooO5E/s400/versiontable_ps_osx.png" width="400" height="186" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Jak widać, nowa wersja PS 6.0.0 wprowadza rewolucje w świecie Linux'a.&lt;br /&gt;
Wpisując Get-Command można porać wszystkie komendy jakie są dostępne, a jest ich na prawdę sporo: &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilSphfITuI6t6GBCaz5F1AJ48AS6Ng7EVJ-xv-lxG-4tE6pqlD4EAbAwRDdg_bcSfv2OfxVw5-ZZB_N5Z6d7wM6-Zkuju5qwwkU-4gLcsKEmN45YL7XVbEFO5JsiS25HPr1ve6yL10W4Mx/s1600/commands_ps_osx.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilSphfITuI6t6GBCaz5F1AJ48AS6Ng7EVJ-xv-lxG-4tE6pqlD4EAbAwRDdg_bcSfv2OfxVw5-ZZB_N5Z6d7wM6-Zkuju5qwwkU-4gLcsKEmN45YL7XVbEFO5JsiS25HPr1ve6yL10W4Mx/s400/commands_ps_osx.png" width="400" height="346" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
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ę :)&lt;br /&gt;
&lt;br /&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVjO-aAtebikQE1S5MIynz6pnHCuWLKcsuV9Vu9uGxBUAok3B36aDHZV-l57e21wX9-za_aQbDVeuErOqWHjvDw2LXEkp9RWUA4p2HPssnvrC8Rvj8nhMuTgaxC67ZCxu9ZupnqSUooO5E/s72-c/versiontable_ps_osx.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Szablon do sql kursora </title><link>http://arekonsoftware.blogspot.com/2016/03/szablon-do-sql-kursora.html</link><category>best practice</category><category>code</category><category>pattern</category><category>sql</category><category>sql server</category><category>t-sql</category><pubDate>Thu, 3 Mar 2016 20:10:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-519202599107216498</guid><description>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.   &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;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
&lt;/pre&gt;W SSMS przydałby się edytor snippetów. Może kiedyś będzie Resharper dla t-SQL'a :)</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>IT w filmach</title><link>http://arekonsoftware.blogspot.com/2016/02/it-w-filmach.html</link><pubDate>Thu, 4 Feb 2016 23:14:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-3513389407693958082</guid><description>Dzisiaj oglądałem prezentację o tym jak  informatyka jest przedstawiana w filmach.&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;iframe src="https://player.vimeo.com/video/154025470" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
A tutaj przegląd filmów:&lt;br /&gt;
&lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/pe6gGUR3Ga4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
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:&lt;br /&gt;
&lt;center&gt;&lt;iframe width="420" height="315" src="https://www.youtube.com/embed/hkDD03yeLnU" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
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 :)&lt;br /&gt;
&lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/LcC00LLJygw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="420" height="315" src="https://www.youtube.com/embed/od4U8Lj2Xuw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/pe6gGUR3Ga4/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Liczenie w SQL Server za pomocą CTE i ROW_NUMBER</title><link>http://arekonsoftware.blogspot.com/2016/01/liczenie-w-sql-server-za-pomoca-cte-i.html</link><category>code</category><category>sql</category><category>sql server</category><pubDate>Fri, 29 Jan 2016 22:51:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-3831211208555526343</guid><description>Czasami proste rzeczy są lepsze, ale żeby te proste rzeczy znaleźć to potrzeba czasu. &lt;br /&gt;
Aby policzyć od 1 do 10000 to będziemy mogli wykorzystać pseudorekurencja, która &lt;a href="http://arekonsoftware.blogspot.com/2015/08/pseudorekurencja-w-sqlserver.html"&gt;opisałem wcześniej na blogu&lt;/a&gt;.&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;with cte (row)
 as (
SELECT 1
UNION all
SELECT c.row+1 FROM cte c
where c.row &lt; 10000

 )
 select * from cte
 OPTION (MAXRECURSION 10000)
&lt;/pre&gt;

Ale wykorzystanie funkcji ROW_NUMBER jest dużo lepszym sposobem:
&lt;pre name="code" class="vb"&gt;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​
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5p3H38TZHxFNcnBGSQcT7Q5yz23yo5g_IbPFjahtgbIkhlaaUhUXcGmRx5R7Hjr2gvRsDYcY_AeLKh8-P6Uag1QfgwUncqyv8VC95JhaPlOucpKZx2_tT2V3ypZxs6W50M3hh-XQONDXT/s1600/generator.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5p3H38TZHxFNcnBGSQcT7Q5yz23yo5g_IbPFjahtgbIkhlaaUhUXcGmRx5R7Hjr2gvRsDYcY_AeLKh8-P6Uag1QfgwUncqyv8VC95JhaPlOucpKZx2_tT2V3ypZxs6W50M3hh-XQONDXT/s640/generator.png" /&gt;&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5p3H38TZHxFNcnBGSQcT7Q5yz23yo5g_IbPFjahtgbIkhlaaUhUXcGmRx5R7Hjr2gvRsDYcY_AeLKh8-P6Uag1QfgwUncqyv8VC95JhaPlOucpKZx2_tT2V3ypZxs6W50M3hh-XQONDXT/s72-c/generator.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Aliasy w GIT</title><link>http://arekonsoftware.blogspot.com/2016/01/aliasy-w-git.html</link><category>git</category><category>time</category><pubDate>Wed, 27 Jan 2016 22:43:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-2194119327998193676</guid><description>Aliasy w GIT to fantastyczne narzędzie upraszczające pracę. &lt;br /&gt;
Parę aliasów stworzyłem i chciałbym się z Tobą nimi podzielić.&lt;br /&gt;
&lt;br /&gt;
Kod z aliasami jest zamieszczony na &lt;a href="https://github.com/arekbee/git_config"&gt;github'ie&lt;/a&gt;.&lt;br /&gt;
Żeby skorzystać z tych aliasów to będziesz musiał zmodyfikować configurację.&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git config --global --edit
&lt;/pre&gt;Dobrze jest zmienić edytor w git. Ja korzystam z atoma. Jak też masz atoma to możesz go używać pisząc taką komendę:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git config --global core.editor "atom --wait"
&lt;/pre&gt;Przykład pobrany &lt;a href="https://help.github.com/articles/associating-text-editors-with-git/"&gt;stąd&lt;/a&gt;.&lt;br /&gt;
Jeżeli chcesz, żeby w czasie otwartego programu atom można było pisać w konsoli to usuń parametr wait.&lt;br /&gt;
Na Windowsie mam inny tool. Edytor zawsze możemy zmienić przez modyfikację pliku&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;[core]
editor = \"c:/program files (x86)/Notepad++/notepad++.exe\" -multiInst -nosession
&lt;/pre&gt;W pliku gitconfig dodaj ścieżkę do pliku z aliasami. &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;[include]
    path = /PathToRepos/git_config/gitalias
&lt;/pre&gt;Jeżeli chcesz sprawdzić czy ścieżka jest skonfigurowana to napisz w konsoli:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git config --global include.path&lt;/pre&gt;Pod ścieżką /PathToRepos/git_config/ masz plik gitalias, który zawiera wszystkie aliasy. &lt;br /&gt;
Możesz sciągnąć kod źródłowy aliasów za pomocą gita uruchamiająć w katalogu PathToRepos taką komendę:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git clone https://github.com/arekbee/git_config&lt;/pre&gt;&lt;br /&gt;
Jak zapiszesz ten plik to możesz zobaczyć jakie aliasy są zdefiniowane poprzez komendę aliasesd:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git aliases
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY3WP9ijqRmLfbtuLY3eXBn9SYNnnsmJCGGlKYUOrqD-ivbhGl2kaHkiq5H2tEeAoISUh73MUlv7vGVGl5gxzhf47hCfxaEHoU5FeIb6m13j9_EznuHQPA-Hct-LF3w3JgNR6Ho6BrmEV6/s1600/alias.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY3WP9ijqRmLfbtuLY3eXBn9SYNnnsmJCGGlKYUOrqD-ivbhGl2kaHkiq5H2tEeAoISUh73MUlv7vGVGl5gxzhf47hCfxaEHoU5FeIb6m13j9_EznuHQPA-Hct-LF3w3JgNR6Ho6BrmEV6/s640/alias.png" /&gt;&lt;/a&gt;&lt;/div&gt;Aby zobaczyć definicje aliasów wystarczy dopisać literkę d do poprzedniego wywołania&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git aliasesd
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTw-qvj3L2GUPwKRw18Ajolej1qs2LrnnSFMJAfqMNP0-0MllBnkMni3b4aAYgn5esdV276SgB2tECutgQMUTxh8ikaR8ShbD8dtFhOlWEQh3RovxUvHidKPo6EN9skl3-HUd5CZj1gWQ4/s1600/git_aliasesd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTw-qvj3L2GUPwKRw18Ajolej1qs2LrnnSFMJAfqMNP0-0MllBnkMni3b4aAYgn5esdV276SgB2tECutgQMUTxh8ikaR8ShbD8dtFhOlWEQh3RovxUvHidKPo6EN9skl3-HUd5CZj1gWQ4/s640/git_aliasesd.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Poniżej zamieszczam krótki opis niektórych komend. Poniższe komendy będę przedstawiał na sklonowanym repo z  &lt;a href="https://github.com/fsharp/fsharp"&gt;github.com/fsharp/fsharp&lt;/a&gt;. &lt;br /&gt;
Szybkie dodanie i spuszowanie zmian. ACP to skrót od Add, Commit i Push.&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git acp "message"
&lt;/pre&gt;Ściągnięcie kodu źródłowego, ale bez folderu .git&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git download https://github.com/arekbee/git_config.git
&lt;/pre&gt;Pobranie autorów kodu z informacjami o liczbie commitów:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git authors | head -10
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkyN4nGZ5AYnRjOIuD-dT6ffyI1pM35rMIKm6ZPcq73vFhIfFSOisuUZJq6EHLh5AmKMi-c2z6RdZeBqU84Y1-KWLk-GwDkjKrB0sedhAJi_C0x0bxelovuu4c9mV-VpZL0RBeMxRErH1l/s1600/authors.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkyN4nGZ5AYnRjOIuD-dT6ffyI1pM35rMIKm6ZPcq73vFhIfFSOisuUZJq6EHLh5AmKMi-c2z6RdZeBqU84Y1-KWLk-GwDkjKrB0sedhAJi_C0x0bxelovuu4c9mV-VpZL0RBeMxRErH1l/s640/authors.png" /&gt;&lt;/a&gt;&lt;/div&gt;Kiedy będziesz refaktoryzował kod i nie będziesz wiedział od czego zacząć to może powinieneś poszukać najczęściej modyfikowane pliki. &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git churn
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF882hFx0ERPCAHglE8_6MuEYrE4Fk65inE4S7vKC8zVwJG1Jr4m3faUCANMqM2wy3iN2x25P84vVrZFoGQnh4GvOur1MjrUsRNosg1u03wbws66lvP5mdp4prQJG9-7AXUOFZ8YdOsSdd/s1600/churn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF882hFx0ERPCAHglE8_6MuEYrE4Fk65inE4S7vKC8zVwJG1Jr4m3faUCANMqM2wy3iN2x25P84vVrZFoGQnh4GvOur1MjrUsRNosg1u03wbws66lvP5mdp4prQJG9-7AXUOFZ8YdOsSdd/s640/churn.png" /&gt;&lt;/a&gt;&lt;/div&gt;Jeżeli chcesz usunąć wszystkie niezatwierdzone zmiany i niewersjonowane pliki to napisz:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git clean-all
&lt;/pre&gt;Szukanie nazwy plików, które zawierają dany ciąg znaków &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git find-file ".exe"
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQdq94oGUgIDqXkUV_CfsUZ8_XeYzoemEmUF7wfgFCMj6ArD4jzhKoDXB9t_UuJ5kH5w9WusjnJXPnqE-5dx7oVaBxppeXEsO_rpUlibOtaFpWj28fWdXpbx6_R-KS1JxYOZfGoDWTh2Wp/s1600/find-file.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQdq94oGUgIDqXkUV_CfsUZ8_XeYzoemEmUF7wfgFCMj6ArD4jzhKoDXB9t_UuJ5kH5w9WusjnJXPnqE-5dx7oVaBxppeXEsO_rpUlibOtaFpWj28fWdXpbx6_R-KS1JxYOZfGoDWTh2Wp/s640/find-file.png" /&gt;&lt;/a&gt;&lt;/div&gt;Wyświetla historię commitów&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git hist
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi25jAhTcjuug1I3cLt-8LxLE6SZ1tWFuXucKShCIgUI3rXQJKnMSV1bZFqJmVGj1JPsXGf7otRgzcCGJreFJ49XvaN-QyVRryvxlzE6TAFOdbpmSp43oG9z0o6wx77iS_WvLHdnt7riJfw/s1600/hist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi25jAhTcjuug1I3cLt-8LxLE6SZ1tWFuXucKShCIgUI3rXQJKnMSV1bZFqJmVGj1JPsXGf7otRgzcCGJreFJ49XvaN-QyVRryvxlzE6TAFOdbpmSp43oG9z0o6wx77iS_WvLHdnt7riJfw/s640/hist.png" /&gt;&lt;/a&gt;&lt;/div&gt;Jeżeli napiszesz git histd to uzyskasz historię commitów z wiadomościami.&lt;br /&gt;
Wyświetl ścieżkę w której repo. zostało stworzone.&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git root
&lt;/pre&gt;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ę:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git ls-ignore&lt;/pre&gt;Dodać submodule (git externalne repo.) &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git siur
&lt;/pre&gt;Pokaż wszystkie branche które nie zostały zmergowane: &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git unmerged-branches 
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSXT8H_M4r0HsKQqnPmX-vREqy-89A1RfeCK2dT-kOOF_FZYYRv89SeVaAP2Wuks6kzh6je0nYHkhguBPM5yD74wBrGiaHw54EdvIFPTzOUpwMDXV66uTu17NdPYtt4mVGaMBVxnVKIuOH/s1600/unmerged-branches.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSXT8H_M4r0HsKQqnPmX-vREqy-89A1RfeCK2dT-kOOF_FZYYRv89SeVaAP2Wuks6kzh6je0nYHkhguBPM5yD74wBrGiaHw54EdvIFPTzOUpwMDXV66uTu17NdPYtt4mVGaMBVxnVKIuOH/s640/unmerged-branches.png" /&gt;&lt;/a&gt;&lt;/div&gt;Stwórz plik z grafem commitów&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;git graphviz  -n10 &gt; graph.dot
graphviz\dot.exe -Tpng graph.dot -o graph.png​
&lt;/pre&gt;Tutaj jeszcze będę musiał popracować. Jak na razie wygląda to tak:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA7e8nOWL9zTOQPxgqk4pVPxZ7XcpuyIpqGTOPjGhnbBN_ROSQRVvAavq15eKkjsK8aR6edkfSMjUmF1Ilw1_adV7X3TYIlP130mljcjAqTDtUO4g8w7LFfLKdObjBzGHvPhKTNaz_buSJ/s1600/graph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA7e8nOWL9zTOQPxgqk4pVPxZ7XcpuyIpqGTOPjGhnbBN_ROSQRVvAavq15eKkjsK8aR6edkfSMjUmF1Ilw1_adV7X3TYIlP130mljcjAqTDtUO4g8w7LFfLKdObjBzGHvPhKTNaz_buSJ/s640/graph.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Mam nadzieję, że aliasy się przydadzą. Ja najczęściej korzystam z acp.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY3WP9ijqRmLfbtuLY3eXBn9SYNnnsmJCGGlKYUOrqD-ivbhGl2kaHkiq5H2tEeAoISUh73MUlv7vGVGl5gxzhf47hCfxaEHoU5FeIb6m13j9_EznuHQPA-Hct-LF3w3JgNR6Ho6BrmEV6/s72-c/alias.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Benchmarki z webowych frameworków </title><link>http://arekonsoftware.blogspot.com/2015/12/benchmarki-z-webowych-frameworkow.html</link><category>.NET</category><category>benchmark</category><category>java</category><category>performance</category><category>time</category><category>webapp</category><pubDate>Fri, 18 Dec 2015 11:49:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-8433567888605725323</guid><description>Miesiąc temu wyszła 11 runda porównań frameworków webowych pod względem szybkości działania. Teraz już wiem dlaczego (dla celów wydajnościowych) wybiera się java nad c# oraz dlaczego niektóre projekty mają w back-end jvm, a od strony klienckiej jest .NET.   &lt;br /&gt;
&lt;br /&gt;
Wyselekcjonowałem tylko te frameworki, które zostały napisane w java i c#. &lt;br /&gt;
Wyniki są następujące:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjnLuzEpmRGjiWjkVsP74_ytyym1OUMtCRFnBF23dK6u97Z4xL-aGyj2I2l8afRkgP0hH9jdM5y-wa2nziuVQRiUudBM2ZC_C-qlY9-l9ix9ugiiYdxrDiBEN9mi1WTQHPwmxEX_1o8W9U/s1600/framework_benchmark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjnLuzEpmRGjiWjkVsP74_ytyym1OUMtCRFnBF23dK6u97Z4xL-aGyj2I2l8afRkgP0hH9jdM5y-wa2nziuVQRiUudBM2ZC_C-qlY9-l9ix9ugiiYdxrDiBEN9mi1WTQHPwmxEX_1o8W9U/s640/framework_benchmark.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Możesz sam wyselekcjonować te informacje jakie Cię interesują wchodząc na &lt;a href="https://www.techempower.com/benchmarks/"&gt;ten link&lt;/a&gt;.&lt;br /&gt;
Zastanawia się dlaczego Microsoft nie ma na celu zrobienia oddzielnej super szybkiej wersji aspnet'a dla celów komercyjnych. Pewnie wyrzuci się masę funkcjonalności związanymi z bezpieczeństwem, ale trudno. &lt;br /&gt;
&lt;br /&gt;
Zawsze mi mówiono, że najlepsze frameworki powstają w środowiskach otwartych, tam gdzie za daną technologią stoją wielkie firmy - np. java i Oracle, go i google, c++ i producenci gier,  objective-c i Apple, php i wikipedia, js i wszystkie strony :) </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjnLuzEpmRGjiWjkVsP74_ytyym1OUMtCRFnBF23dK6u97Z4xL-aGyj2I2l8afRkgP0hH9jdM5y-wa2nziuVQRiUudBM2ZC_C-qlY9-l9ix9ugiiYdxrDiBEN9mi1WTQHPwmxEX_1o8W9U/s72-c/framework_benchmark.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Dekompozycja projektu w R</title><link>http://arekonsoftware.blogspot.com/2015/12/dekompozycja-projektu-w-r.html</link><category>best practice</category><category>code</category><category>presentation</category><category>R</category><pubDate>Wed, 16 Dec 2015 13:17:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-3388779591095688220</guid><description>Robiłem prezentacje i zastanawiałem się jak można zapisać cały projekt. Szukałem po sieci jakiś &lt;a href="http://www.r-statistics.com/2010/09/managing-a-statistical-analysis-project-guidelines-and-best-practices/"&gt;dobrych praktyk &lt;/a&gt;do dekompozycji plików. Ja wykombinowałem podział całego projektu na kilka plików: &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2sH7PJToiPHs_qW1gVYfGfoRHtmCSmVYDcu0AvW_42DYA-9O5CggqxyVgA5gF6MpIwoA1PNx0bD6Wm8WHPvP_Izk0NuXQXV9uvFHGAc6Bz-4ne5NMhhkOctPYyLNwsTmAQKgRDueddPqN/s1600/decomp_R.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2sH7PJToiPHs_qW1gVYfGfoRHtmCSmVYDcu0AvW_42DYA-9O5CggqxyVgA5gF6MpIwoA1PNx0bD6Wm8WHPvP_Izk0NuXQXV9uvFHGAc6Bz-4ne5NMhhkOctPYyLNwsTmAQKgRDueddPqN/s640/decomp_R.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Co w tych plikach jest? Zaczynając od początku:&lt;br /&gt;
&lt;b&gt;Install.r &lt;/b&gt;- instalacja pakietów (ten skrypt wykonujemy tylko raz, aby pobrać paczki)&lt;br /&gt;
&lt;b&gt;Functions.r &lt;/b&gt;- wszystkie funkcje &lt;br /&gt;
&lt;b&gt;Load.r &lt;/b&gt;-  ładowanie pakietów oraz przygotowywanie danych do prezentacji&lt;br /&gt;
&lt;b&gt;Presentation.rpres &lt;/b&gt;- warstwa prezentacji, równie dobrze możne być to plik w Rmd czy z użyciem shiny (powód istnienia tego pliku jest TYLKO wyświetlanie tych danych jakie chcemy przedstawić, nie ma logiki biznesowej).&lt;br /&gt;
&lt;b&gt;custom.css &lt;/b&gt;- customizacja warstwy prezentacji, czyli overridowane i dodatkowe css'y&lt;br /&gt;
  &lt;br /&gt;
I na końcu w folderze &lt;b&gt;figures&lt;/b&gt; mam wszystkie zdjęcia. &lt;br /&gt;
&lt;a href="https://github.com/arekbee/EconomicCrisesR"&gt;Prezentacja o najpopularniejszych kryzysach ekonomicznych&lt;/a&gt; nie jest skończona. Jeszcze dużo chciałoby się dodać. Zaletą rpres jest to, że za każdym razem możemy mieć aktualne dane na prezentacji.&lt;br /&gt;
Poniżej rezultat wygenerowanej prezentacji: &lt;br /&gt;
&lt;center&gt;&lt;iframe src="https://rawgit.com/arekbee/EconomicCrisesR/master/Publishing/Presentation.html"  width="600" height="650" align="middle"  /&gt;&lt;br /&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2sH7PJToiPHs_qW1gVYfGfoRHtmCSmVYDcu0AvW_42DYA-9O5CggqxyVgA5gF6MpIwoA1PNx0bD6Wm8WHPvP_Izk0NuXQXV9uvFHGAc6Bz-4ne5NMhhkOctPYyLNwsTmAQKgRDueddPqN/s72-c/decomp_R.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Kowboj danych w R</title><link>http://arekonsoftware.blogspot.com/2015/12/kowboj-danych-w-r.html</link><category>fun</category><category>R</category><pubDate>Tue, 15 Dec 2015 21:21:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-9063722864339307067</guid><description>Ostatnio zrobiłem sobie test "jakiego typu Data Scientist'em jestem". Wyszło mi, że jestem kowbojem danych :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8x7mS86yKh10pGf71fHfyscNSpTo_JzjAp50XSYsBBXF4tZovceK-UVBIbUjno5qQYa4-W7KoPm6NGTEqMhFFeGWAKMJh6tzu2DZ_-XEyNoMCWcebODu6xG8yre6QD5MQES3EJIv2iDPn/s1600/what_ds_are_y.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8x7mS86yKh10pGf71fHfyscNSpTo_JzjAp50XSYsBBXF4tZovceK-UVBIbUjno5qQYa4-W7KoPm6NGTEqMhFFeGWAKMJh6tzu2DZ_-XEyNoMCWcebODu6xG8yre6QD5MQES3EJIv2iDPn/s640/what_ds_are_y.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Link do testu jest &lt;a href="https://www.mango-solutions.com/radar/?fs=true&amp;r=3.7,5.8,5.3,3.4,2.5,4.3"&gt;tutaj&lt;/a&gt;.&lt;br /&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8x7mS86yKh10pGf71fHfyscNSpTo_JzjAp50XSYsBBXF4tZovceK-UVBIbUjno5qQYa4-W7KoPm6NGTEqMhFFeGWAKMJh6tzu2DZ_-XEyNoMCWcebODu6xG8yre6QD5MQES3EJIv2iDPn/s72-c/what_ds_are_y.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Historia informatyki</title><link>http://arekonsoftware.blogspot.com/2015/10/historia-informatyki.html</link><category>presentation</category><category>video</category><pubDate>Wed, 21 Oct 2015 20:40:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-1708459158313031153</guid><description>W tygodniu obejrzałem super prezentację dla młodych informatyków. Bardzo polecam do obejrzenia. Cenię sobie tą prezentację z powodu przedstawienia historii informatyki.&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;iframe width="660" height="415" src="https://www.youtube.com/embed/77CNpz7Ytm0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/center&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/77CNpz7Ytm0/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Program jak żarówka</title><link>http://arekonsoftware.blogspot.com/2015/10/program-jak-zarowka.html</link><category>fun</category><category>video</category><pubDate>Tue, 13 Oct 2015 23:05:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-1715668859462577995</guid><description>Obejrzałem filmik dokumentalny o sztucznym wytwarzaniu rynku zbytu dla różnych produktów. Zastanawiam się czy można takie podejście zastosować do oprogramowania, które mogłoby działać jak lodówka, drukarka albo jak współczesna żarówka. Na przykład oprogramowanie może działać tylko przez 1000 godzin lub po danej liczbie uruchomień aplikacja będzie się zacinać. Klient takiej aplikacji będzie musiał zrobić update albo kupi nową wersję aplikacji (lub nowy sprzęt).&lt;br /&gt;
 &lt;br /&gt;
Po dłuższym zastanowieniu się to taki model biznesowy dla oprogramowania już występuje :) &lt;br /&gt;
W każdym razie, zapraszam do obejrzenia filmiku.&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;iframe width="520" height="415" src="https://www.youtube.com/embed/Dg53JcNjILk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/Dg53JcNjILk/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Zmiana culture w bloku using</title><link>http://arekonsoftware.blogspot.com/2015/10/zmiana-culture-w-bloku-using.html</link><category>c#</category><category>code</category><category>pattern</category><pubDate>Wed, 7 Oct 2015 01:09:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-1206071807831004043</guid><description>Bawiłem się kultura i potrzebuję kodu, który zostanie wywołany dla konkretnej kultury, a później wróci do poprzedniej kultury. Żeby to zrobić najprościej to należy użyć interfejsu IDisposable i tyle.&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;public class CultureContext : IDisposable
  {
      private CultureInfo contextCultureInfo = null;
 
      private CultureInfo exitCultureInfo = null;
 
 
   public CultureContext(CultureInfo ci)
   {
       exitCultureInfo = GetCulture();
       contextCultureInfo = ci;
       SetCulture(ci);
   }
 
   public void Dispose()
   {
       SetCulture(exitCultureInfo);
   }
 
      public virtual void SetCulture(CultureInfo ci)
      {
          Thread.CurrentThread.CurrentUICulture = ci;
          Thread.CurrentThread.CurrentCulture = ci;
      }
 
      public virtual CultureInfo GetCulture()
      {
          return Thread.CurrentThread.CurrentCulture;
      }
 
  }
&lt;/pre&gt;Wtedy zastosowanie kultury w bloku using jest proste:&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;using (new CultureContext(new CultureInfo("en-US")))
{
      ...
}
&lt;/pre&gt;Im prostsze rozwiązanie tym lepsze :)&lt;br /&gt;
  &lt;br /&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Walidacja bibliotek jako krok w CI</title><link>http://arekonsoftware.blogspot.com/2015/10/walidacja-bibliotek-jako-krok-w-ci.html</link><category>CI</category><category>code</category><category>powershell</category><category>programming</category><category>test</category><pubDate>Mon, 5 Oct 2015 07:24:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-2025828764959871474</guid><description>Skąd wież, że masz poprawne informacje w biblioteczce (.dll)? &lt;br /&gt;
Skąd wież, że wszystkie biblioteki w projekcie mają &lt;b&gt;taką samą&lt;/b&gt; wersję lub nazwę produktu?&lt;br /&gt;
Ja napisałem mały skrypcik do walidacji biblioteczek pod względem wersji. Poniżej jest skrypt:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;function Test-AssemblyVersion
{
    param(
        [Parameter(
        Position=0, 
        Mandatory=$true, 
        ValueFromPipeline=$true,
        ValueFromPipelineByPropertyName=$true)
    ]
    [String]
    $filePath
    ,
    [Parameter(
        ValueFromPipeline=$false)
    ]
    [String]
    $ProductVersion
    ,
    [Parameter(
        ValueFromPipeline=$false)
    ]
    [String]
    $FileVersion
    )
    begin{
        $invIC= [System.StringComparison]::InvariantCultureIgnoreCase
    }
    process {
        $file = $_
        if(test-path $file)
        {
            $ass = [System.Reflection.Assembly]::LoadFile($file)
            $fvi = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ass.Location)
            if( $ProductVersion.Equals($fvi.ProductVersion, $invIC) 
               -and  $FileVersion.Equals($fvi.FileVersion, $invIC) )
            {
                Write-Host "$file is ok."
            }
            else
            {
                throw "Wrong ProductVersion or  FileVersion in $file."
            }
        }
    }
}
&lt;/pre&gt;Przykładowe wywołanie przedstawione jest poniżej:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;gci -path .\MyProject\bin\ -recurse -filter 'MyProject.*.dll' | Test-AssemblyVersion -ProductVersion 2.1.0.0 -FileVersion 2.1.0.0
&lt;/pre&gt;Można teraz dodać wywołanie i funkcję do jednego pliku i cały kod wyglądałby tak:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;param(
[string]$ProductVersion, 
[string]$FileVersion
)
function Test-AssemblyVersion
{
    param(
        [Parameter(
        Position=0, 
        Mandatory=$true, 
        ValueFromPipeline=$true,
        ValueFromPipelineByPropertyName=$true)
    ]
    [ValidateNotNullOrEmpty()]
    [String]
    $filePath
    ,
    [Parameter(
        Position=1, 
        Mandatory=$true, 
        ValueFromPipeline=$false,
        ValueFromPipelineByPropertyName=$false)
    ]
    [ValidateNotNullOrEmpty()]
    [String]
    $ProductVersion
    ,
    [Parameter(
        Position=2, 
        Mandatory=$true, 
        ValueFromPipeline=$false,
        ValueFromPipelineByPropertyName=$false)
    ]
    [ValidateNotNullOrEmpty()]
    [String]
    $FileVersion
    )
    begin{
        $invIC= [System.StringComparison]::InvariantCultureIgnoreCase
    }
    process {
        $file = $_
        if(test-path $file)
        {
            $ass = [System.Reflection.Assembly]::LoadFile($file)
            $fvi = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ass.Location)
            if( $ProductVersion.Equals($fvi.ProductVersion, $invIC) -and  $FileVersion.Equals($fvi.FileVersion, $invIC) )
            {
                Write-Host "$File is ok. ProductVersion is $($fvi.ProductVersion) and FileVersion is $($fvi.FileVersion)"
            }
            else
            {
                throw "Wrong ProductVersion or  FileVersion in $file. ProductVersion is $($fvi.ProductVersion) and FileVersion is $($fvi.FileVersion)"
            }
        }
    }
}
$root  = ( gi  '..\..'  ).FullName
Write-host "Root is $root"
$OutputPackage = "$root\bin"
if(Test-path $OutputPackage)
{
    $fcraLib  = gci -path $OutputPackager -filter 'MyProject.*.dll' 
    if( $fcraLib)
    {
        $fcraLib | %{$_.Fullname} | Test-AssemblyVersion -ProductVersion $ProductVersion -FileVersion $FileVersion
    }
    else
    {
        throw "No dll files in dir: $OutputPackage "
    }
}
&lt;/pre&gt;Teraz można ten skrypt podpiąć do TeamCity.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUn7Ez6cTZwq9w3adXeJlT4THX0HRNucYC8HhHBhyphenhyphenfd13XkwXdcG13OmMhjC_a63Lq6PwLDlUuS3-_1I-gefaGWe78__Ji7QV6DxgNdTIBcJA_VRhdNSHC6UR5fbj3_mAsqwI5C5HFzCA_/s1600/assembly_Tests.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUn7Ez6cTZwq9w3adXeJlT4THX0HRNucYC8HhHBhyphenhyphenfd13XkwXdcG13OmMhjC_a63Lq6PwLDlUuS3-_1I-gefaGWe78__Ji7QV6DxgNdTIBcJA_VRhdNSHC6UR5fbj3_mAsqwI5C5HFzCA_/s640/assembly_Tests.png" /&gt;&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUn7Ez6cTZwq9w3adXeJlT4THX0HRNucYC8HhHBhyphenhyphenfd13XkwXdcG13OmMhjC_a63Lq6PwLDlUuS3-_1I-gefaGWe78__Ji7QV6DxgNdTIBcJA_VRhdNSHC6UR5fbj3_mAsqwI5C5HFzCA_/s72-c/assembly_Tests.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Usuwanie .DS_Store poraz n-ty</title><link>http://arekonsoftware.blogspot.com/2015/10/usuwanie-dsstore-poraz-n-ty.html</link><category>git</category><category>MacOs</category><pubDate>Sat, 3 Oct 2015 01:04:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-4640346545581599622</guid><description>Zawsze jak commituje moje repo to przez przypadek dodaje pliki .DS_Store. Już tysiące osób pisało jak rekurencyjnie usuwać takie pliki, to ja też napisze.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;sudo find . -name ".DS_Store"  -type f -depth -exec rm {} \;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Culture w PS</title><link>http://arekonsoftware.blogspot.com/2015/09/culture-w-ps.html</link><category>code</category><category>data</category><category>powershell</category><pubDate>Wed, 30 Sep 2015 00:26:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-7686993668871301357</guid><description>Ostatnio w projekcie jakieś cyrki pojawiały się. Postanowiłem troszkę porozglądać się po kulturze (formatowaniu dat) i napisałem skrypcik do wyświetlania daty dla wszystkich kultur.&lt;br /&gt;
Na początku potrzebujemy funkcję zwracającą listę kultur:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;function Get-Culture
{
 [System.Globalization.CultureInfo]::GetCultures([System.Globalization.CultureTypes]::AllCultures) | %{ 
    try{
        [System.Globalization.CultureInfo]::CreateSpecificCulture($_.Name)
    }catch {}
}
}

&lt;/pre&gt;Wywołąnie jest następujące:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;$dt = Get-Date

Get-Culture 
| %{  New-Object PSObject -Property  @{Str = $dt.ToString($_); Name = $_.Name; DisplayName = $_.DisplayName}  } 
|  sort -Property Name
&lt;/pre&gt;Teraz to można wyeksportować do pliku taki wynik. Poniżej zdjęcie jak wygląda rezultat wywołania w konsoli:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhFIKPbQ8AUWxb8tZgTg0jTLP7hOpbVkr7WUd9kjq-0aIpf0tVs4UpC-snD8S06FXD_nHylaP5wjg-2_TPnv_54lUYAsfvXYaY2Awg9QTOsi3hGOVVXOe9hqs1qpizwILWYSMqbnMkGNfR/s1600/culture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhFIKPbQ8AUWxb8tZgTg0jTLP7hOpbVkr7WUd9kjq-0aIpf0tVs4UpC-snD8S06FXD_nHylaP5wjg-2_TPnv_54lUYAsfvXYaY2Awg9QTOsi3hGOVVXOe9hqs1qpizwILWYSMqbnMkGNfR/s640/culture.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Przykłady jak będzie wyglądał LongDate, LongTime i ShortDate, ShortTime można sprawdzić &lt;a href="http://www.basicdatepicker.com/samples/cultureinfo.aspx"&gt;pod tym linkiem&lt;/a&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhFIKPbQ8AUWxb8tZgTg0jTLP7hOpbVkr7WUd9kjq-0aIpf0tVs4UpC-snD8S06FXD_nHylaP5wjg-2_TPnv_54lUYAsfvXYaY2Awg9QTOsi3hGOVVXOe9hqs1qpizwILWYSMqbnMkGNfR/s72-c/culture.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Działanie mózgu podczas improwizacji</title><link>http://arekonsoftware.blogspot.com/2015/08/dziaanie-mozgu-podczas-improwizacji.html</link><category>improv</category><category>ted</category><category>video</category><pubDate>Sun, 23 Aug 2015 23:23:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-5303272847565696676</guid><description>Już dawno nie improwizowałem żadnej scenki. Natrafiłem na filmik z TED o tym jak działa mózg podczas improwizacji grając na instrumencie czy rapując. Niestety, nie potrafię rapować czy grać na organkach, ale bardzo lubię i całkiem dobrze mi wychodzi improwizacja sceniczna.&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;iframe src="https://embed-ssl.ted.com/talks/charles_limb_your_brain_on_improv.html" width="640" height="360" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Exportowanie praw dostępu  w PS</title><link>http://arekonsoftware.blogspot.com/2015/08/exportowanie-praw-dostepu-w-ps.html</link><category>code</category><category>powershell</category><category>windows</category><pubDate>Sat, 15 Aug 2015 01:46:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-4909369885663414650</guid><description>Krótki kodzik, ale przydatny przy sprawdzaniu praw dostępu do plików. Chcesz wiedzieć jakie są uprawnienia - wystarczy, że uruchomisz ten PS skrypt, a on wygeneruje csv z uprawnieniami.  &lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;function Export-IOPermissions
{
    [cmdletbinding()]
    param(
        [ValidateScript({Test-Path $_ -PathType 'Container'})]    
        [string]
        $dir='.'    
        , 
        [ValidateNotNullOrEmpty()]
        [string]
        $outputcsv = '..\permissions.csv'
        ,
        [ValidateNotNullOrEmpty()]
        [string]
        $Delimiter = ','
    )

$prop = @('Path', 'Group', 'Owner', 'Sddl', 'PSChildName',  'AccessRightType', 'AccessRuleType', 'AreAccessRulesCanonical', 'AreAccessRulesProtected', 'AreAuditRulesCanonical', 'AreAuditRulesProtected', 'AuditRuleType', 'AccessToString', 'AuditToString') 
 
    if( Test-path $outputcsv)
    {
        Remove-Item -path $outputcsv | out-null
    }
gci -Recurse -path $dir  | Get-Acl | select -Property $prop  -Expand Access  |  Sort-Object  -Property, Path, FileSystemRights, IdentityReference | Export-Csv -Path $outputcsv -Delimiter $Delimiter  -NoTypeInformation -Force

}

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Pixar workplace</title><link>http://arekonsoftware.blogspot.com/2015/08/pixar-workplace.html</link><category>graphics</category><category>ppt</category><category>presentation</category><category>productivity</category><category>work</category><pubDate>Sat, 8 Aug 2015 01:11:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-8944147702192456652</guid><description>&lt;br /&gt;
Uważam, że Pixar jest bardzo produktywną firmą, gdzie bardzo zdolni i kreatywni pracownicy mogą realizować piękne projekty. Zastanawiam się czy prace Pixar'a są takie dobre z powodu bardzo uzdolnionych ludzi czy z powodu stworzenia miejsca pracy (środowiska współpracy) dzięki którym pracownicy są bardziej kreatywni.   &lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;br /&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/aMPSFHRUaDlL3o" width="525" height="455" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/center&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Posortowane pola obiektu w PS</title><link>http://arekonsoftware.blogspot.com/2015/08/posortowane-pola-obiektu-w-ps.html</link><category>powershell</category><pubDate>Fri, 7 Aug 2015 01:24:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-447375701250721677</guid><description>Miałeś może do czynienia z obiektem w PS, który miał przynajmniej 30 pól?&lt;br /&gt;
Ciężko jest wyszukać wzrokiem pole wśród tych pól, jeżeli nazwy pól nie są posortowane.  &lt;br /&gt;
Napisałem jednolinijkowca do sortowania properties'ów w obiekcie w PS. &lt;br /&gt;
Następnego dnia znów musiałem napisać tego samego jednolinijkowaca.&lt;br /&gt;
Nie zapisałem sobie i znów musiałem napisać tego jednolinijkowca.&lt;br /&gt;
&lt;br /&gt;
Traktuje mój blog jak zestaw notatek, dla samego siebie niż dla innych :)&lt;br /&gt;
&lt;br /&gt;
Poniżej jest ten jednolinijkowiec: &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;$objWithProp = ..

$objWithProp  | Format-List ([string[]]($objWithProp  | Get-Member -MemberType Property | %{ $_.Name } | Sort-Object))​
&lt;/pre&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Tworzenie backup'u  za pomocą scripter'a w PS </title><link>http://arekonsoftware.blogspot.com/2015/08/tworzenie-backupu-za-pomoca-scriptera-w.html</link><category>code</category><category>data</category><category>powershell</category><category>sql server</category><pubDate>Wed, 5 Aug 2015 01:11:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-49954851790532789</guid><description>Ostatnio musiałem tworzyć skrypty do tworzenia bazy danych (od zera) w sql server. Kod zamieszczony jest na &lt;a href="https://github.com/arekbee/BackupSqlServerPS"&gt;github'ie i projekt nazywa się BackupSqlServerPS&lt;/a&gt;. Projekt nazwałem backupem bo oprócz generowania t-sql skryptów do bazy danych to są tworzone skrypty do sql server jobów, zapisywane są logi z bazy i jobów, zapisywane są dane z tabel w formacie csv oraz tworzone są skrypty z danymi w zapytaniami "insert into values". Projekt jest w budowie. Jeszcze chciałbym dodać export użytkowników, execution planów, diagramów i assemblies oraz tworzenie bak'ów. Jeszcze dużo przede mną :)&lt;br /&gt;
 &lt;br /&gt;
Najważniejszą funkcją do backupów jest tworzenie scryptera. Z mechanizmu skryptera pewnie już korzystałeś &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0WSmzCAPOxZocF5BqUFx-6HuvYow44ydGvyml4ANvhyCoFppDHbHCK_T2xPLVkwY3Uryq8-lgLme_AdrfO8jP6h6Ofn_c1lh_eIYYBnlrzDEWsOq84yZXfPaY7npK1OmHjlu2WOK8raN9/s1600/scripter_sqlserver.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0WSmzCAPOxZocF5BqUFx-6HuvYow44ydGvyml4ANvhyCoFppDHbHCK_T2xPLVkwY3Uryq8-lgLme_AdrfO8jP6h6Ofn_c1lh_eIYYBnlrzDEWsOq84yZXfPaY7npK1OmHjlu2WOK8raN9/s400/scripter_sqlserver.png" /&gt;&lt;/a&gt;&lt;/div&gt;Za każdym razem jak w Sql Server Management Studio przez menu kontekstowe tworzysz zapytanie 'select ...',  create, drop lub podobne to, to zapytanie jest tworzone przez scryptera.&lt;br /&gt;
&lt;br /&gt;
Tak na prawdę skrypter to obiekt klasy &lt;a href="https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.scripter.aspx"&gt;Microsoft.SqlServer.Management.SMO.Scripter&lt;/a&gt; z pakietu Sqlserver Management Objects. Najwięcej problemów było przy ustawianiu &lt;a href="https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.scriptingoptions.aspx"&gt;opcji scriptera&lt;/a&gt;. Poniżej zamieściłem, krótki przykład tworzenia skryptów do tworzenia tabel w bazie danych. Oczywiście napisałem to w PS.&lt;br /&gt;
Na początku musisz załadować SMO:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") 
&lt;/pre&gt;&lt;br /&gt;
Tworzymy obiekt reprezentujący server:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;
$srvConn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
$srvConn.ServerInstance = 'localhost'
$srvConn.Login = 'user'
$srvConn.Password = 'passwd'
$srv = New-Object Microsoft.SqlServer.Management.SMO.Server($srvConn)
&lt;/pre&gt;&lt;br /&gt;
Tworzymy obiekt grający pierwsze skrzypce: &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;$scripter   = New-Object Microsoft.SqlServer.Management.SMO.Scripter($srv)

$scripter.Options.IncludeDatabaseContext = $false
$scripter.Options.WithDependencies       = $false 
$scripter.Options.AllowSystemObjects     = $false
$scripter.Options.NoCommandTerminator    = $false
$scripter.Options.ScriptSchema           = $true 
$scripter.Options.SchemaQualify          = $true
$scripter.Options.DriAll                 = $true
&lt;/pre&gt;&lt;br /&gt;
Teraz wyciągamy wszystkie obiekty z bazy danych &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;$db = $srv.Databases['database']
$tbl = $db.tables | ? {-not $_.IsSystemObject }
foreach ($o in $tbl) {  
{
   $scripter.Options.FileName = $o.Name + ".sql"
   $scripter.Script($o) 
}
&lt;/pre&gt;Jeżeli będziemy tworzyć inserty z danymi to zamiast $scripter.Script($o)  powinniśmy wywołać $scripter.EnumScript($o)&lt;br /&gt;
&lt;br /&gt;
Skrypt główny, który robi wszystko ('śpiewa i tańczy') nazywa się &lt;a href="https://github.com/arekbee/BackupSqlServerPS/blob/master/src/backup-sqlserver.ps1"&gt;backup-sqlserver.ps1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Oprócz tabel to tworzymy skrypty do Stored Procedures, widoków, user-defined functions oraz typów.&lt;br /&gt;
Po uruchomieniu skryptu będziemy mieli foldery w którym będą skrypty do tworzenia obiektów.&lt;br /&gt;
 &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj930JM16Swzs6CidkWLjNVQnbmtv9sW_rrHK5leEER2HsJIfrlAJ-HkSmy5Djy0v6A1RQOi_v-DvXpFNUjRUulXDw9ycGDTa7el1M3sMEdBQjESdwL-J5bLSMIWspBqlijitDxhxUY85fZ/s1600/folders.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj930JM16Swzs6CidkWLjNVQnbmtv9sW_rrHK5leEER2HsJIfrlAJ-HkSmy5Djy0v6A1RQOi_v-DvXpFNUjRUulXDw9ycGDTa7el1M3sMEdBQjESdwL-J5bLSMIWspBqlijitDxhxUY85fZ/s400/folders.png" /&gt;&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0WSmzCAPOxZocF5BqUFx-6HuvYow44ydGvyml4ANvhyCoFppDHbHCK_T2xPLVkwY3Uryq8-lgLme_AdrfO8jP6h6Ofn_c1lh_eIYYBnlrzDEWsOq84yZXfPaY7npK1OmHjlu2WOK8raN9/s72-c/scripter_sqlserver.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Konwersja w sql serer </title><link>http://arekonsoftware.blogspot.com/2015/08/konwersja-w-sql-serer.html</link><category>docs</category><category>image</category><category>sql server</category><pubDate>Tue, 4 Aug 2015 23:50:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-7481902887754051192</guid><description>W moje ręce trafiła grafika pokazująca konwersje danych pomiędzy różnymi typami danych w sql serverze. Grafikę znalazłem na stronie &lt;a href="https://msdn.microsoft.com/en-us/library/ms187928.aspx"&gt;msdn&lt;/a&gt;  i można ją pobrać w postaci &lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=35834"&gt;PDF&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpGgIThwADXj1lO7fXfYbh6YeBRRSbFFThL2XOKOxNt6kuoGPxfPvJNXdV2ch7GhdVQBsn3i18tUxFVjDS0wLuHjuoHNkRMiA3ZjXSOTxyn5d7TDkt0owRlnAuzoscl6QmFD4bUwN7eQIp/s1600/IC797967.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpGgIThwADXj1lO7fXfYbh6YeBRRSbFFThL2XOKOxNt6kuoGPxfPvJNXdV2ch7GhdVQBsn3i18tUxFVjDS0wLuHjuoHNkRMiA3ZjXSOTxyn5d7TDkt0owRlnAuzoscl6QmFD4bUwN7eQIp/s640/IC797967.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpGgIThwADXj1lO7fXfYbh6YeBRRSbFFThL2XOKOxNt6kuoGPxfPvJNXdV2ch7GhdVQBsn3i18tUxFVjDS0wLuHjuoHNkRMiA3ZjXSOTxyn5d7TDkt0owRlnAuzoscl6QmFD4bUwN7eQIp/s72-c/IC797967.jpeg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Pseudorekurencja w SqlServer</title><link>http://arekonsoftware.blogspot.com/2015/08/pseudorekurencja-w-sqlserver.html</link><category>algorithms</category><category>code</category><category>sql</category><category>sql server</category><pubDate>Sat, 1 Aug 2015 07:39:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-2089142952638413000</guid><description>Już dawno nie miałem styczności z SqlServerem więc muszę sobie przypomnieć. Dla treningu zrobiłem zapytanie rekurencyjne (pseudorekurencje). Już taki skrypt wykonałem dla &lt;a href="http://arekonsoftware.blogspot.com/2014/07/pseudorekurencja-w-oracle.html"&gt;Oracla&lt;/a&gt; i muszę powiedzieć, że kod wygląda identycznie :)&lt;br /&gt;
Dla problemu liczby fibonacciego tworzymy CTE:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;WITH Fibonacci_cte  AS
(
     SELECT 0 as PrevFibN, 1 as FibN, 1 as Nr
     UNION ALL

     SELECT FibN, PrevFibN + FibN, Nr+1
     FROM Fibonacci_cte
     WHERE FibN &lt; 1000000000
)
select * from Fibonacci_cte

&lt;/pre&gt;

Wynik zapytania wygląda tak:

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxaWsKYclPO7btmLB35ve5hTn9se-P6Ha5USufFm77WarPLtHTqOUjxtGdmIg4X7bhCMhdlYNfoICw530IeTFHUFCXCmaf22-tsZ1nZgS5gOCcsbWC-gT7X55_mHkbrIVGofeMS-Fk2o5C/s1600/fib.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxaWsKYclPO7btmLB35ve5hTn9se-P6Ha5USufFm77WarPLtHTqOUjxtGdmIg4X7bhCMhdlYNfoICw530IeTFHUFCXCmaf22-tsZ1nZgS5gOCcsbWC-gT7X55_mHkbrIVGofeMS-Fk2o5C/s400/fib.png" /&gt;&lt;/a&gt;&lt;/div&gt;

Dla problemu &lt;a href="http://arekonsoftware.blogspot.com/2014/02/wizualizacja-algorytmu-wiezy-hanoi.html"&gt;wieży Hanoi&lt;/a&gt; mamy model:

&lt;pre name="code" class="vb"&gt;with Hanoi_cte   AS 
(
select 
1 as n,
1 as counts

union all

select n +1 as n, POWER(2, n+1) -1 as counts
from Hanoi_cte 
where n &lt; 30
)
select * from Hanoi_cte  

&lt;/pre&gt;

Wyniki zapytania są poniżej:

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiteCowkJNCif90ci4c1dKLYf8q6dBJULAJNirXdtUmypCXcmA3wTFPzmbUPYTkyc4Dz0d-C_-7DLT6ETLREbIoOM3N8gXhfuZdRe8p9OuqQ4vywSUeDQ-C4HPa6Az0B0ucsT_xdir2GqN/s1600/hanoi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiteCowkJNCif90ci4c1dKLYf8q6dBJULAJNirXdtUmypCXcmA3wTFPzmbUPYTkyc4Dz0d-C_-7DLT6ETLREbIoOM3N8gXhfuZdRe8p9OuqQ4vywSUeDQ-C4HPa6Az0B0ucsT_xdir2GqN/s400/hanoi.png" /&gt;&lt;/a&gt;&lt;/div&gt;
W tych przykładach dostaje często wyjątek związany z przekroczeniem dozwolonej wielkości dla typu kolumny (int).
&lt;br/&gt;
&lt;b&gt;Arithmetic overflow error for type int, value = 2147483648.000000.&lt;/b&gt;
&lt;br/&gt;

Możemy zmienić typ kolumny w zapytaniu. Do sprawdzenia typu pomocne nam będzie &lt;a href="https://msdn.microsoft.com/en-us/library/ms178550.aspx"&gt;funkcja SQL_VARIANT_PROPERTY&lt;/a&gt;. Przykład wykorzystania takiej funkcji jest poniżej:
&lt;pre name="code" class="vb"&gt;select SQL_VARIANT_PROPERTY(POWER(CAST (2 as bigint), 2) , 'BaseType')​
&lt;/pre&gt;

Kiedy dodamy kastowanie do bigint to możemy już uzyskiwać większe liczby.
&lt;pre name="code" class="vb"&gt;with Hanoi_cte   AS 
(
select 
CAST (1 AS bigint) as n,
CAST (1 AS bigint) as counts

union all

select 
n + 1   as n 
,POWER(CAST (2 as bigint), n+1) -1 as counts
from Hanoi_cte 
where counts &lt; CAST(0x3FFFFFFFFFFFFFFF AS bigint)
)
select * from Hanoi_cte  

&lt;/pre&gt;
Ale i tak dla tego problemu możemy iterować do 63 rekordu - czy wiesz może dlaczego :)

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41dsRdHX_uP_8ung5domfCOYjhTOSWG5T8Hjs8JvJfRJseI4sBxMNfCSl8spxF2Q-W7hCRNt0s9BVwZhWk7Qn2aZCkyCbkHfJ7bT3iY791cUq-Rd8oyDYjW-2dlJpfKmwkTgv3Ftpis5u/s1600/hanoi_bigint.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41dsRdHX_uP_8ung5domfCOYjhTOSWG5T8Hjs8JvJfRJseI4sBxMNfCSl8spxF2Q-W7hCRNt0s9BVwZhWk7Qn2aZCkyCbkHfJ7bT3iY791cUq-Rd8oyDYjW-2dlJpfKmwkTgv3Ftpis5u/s400/hanoi_bigint.png" /&gt;&lt;/a&gt;&lt;/div&gt;

Tak samo dodałem kastowanie do bigint dla problemu fibonacciego:
&lt;pre name="code" class="vb"&gt;WITH Fibonacci_cte  AS
(
     SELECT 
CAST (0 as bigint) as PrevFibN, 
CAST(1 as bigint) as FibN, 
1 as Nr

     UNION ALL

     SELECT 
FibN, 
PrevFibN +FibN, 
Nr+1 
     FROM Fibonacci_cte
     WHERE Nr &lt; 92 
)
select * from Fibonacci_cte
&lt;/pre&gt;

A wyniki tego zapytania są poniżej:

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8NO0h-8fWqZyte4ZlOJ8mejzYBiIM9xFpjsAD7B7Dd0EOp7FlYFq4eBO8yGv_ftK0HLGYFH_JQCCphGHK6XWUHpUf3wDrrfZndrRzrNubYgR9d6JKgab_QBBN945mhnEhmvwzorbwJjqw/s1600/fib_bigint.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8NO0h-8fWqZyte4ZlOJ8mejzYBiIM9xFpjsAD7B7Dd0EOp7FlYFq4eBO8yGv_ftK0HLGYFH_JQCCphGHK6XWUHpUf3wDrrfZndrRzrNubYgR9d6JKgab_QBBN945mhnEhmvwzorbwJjqw/s400/fib_bigint.png" /&gt;&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxaWsKYclPO7btmLB35ve5hTn9se-P6Ha5USufFm77WarPLtHTqOUjxtGdmIg4X7bhCMhdlYNfoICw530IeTFHUFCXCmaf22-tsZ1nZgS5gOCcsbWC-gT7X55_mHkbrIVGofeMS-Fk2o5C/s72-c/fib.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Sposób na przeglądanie folderów w powolnej sieci</title><link>http://arekonsoftware.blogspot.com/2015/07/sposob-na-przegladanie-folderow-w.html</link><category>admin</category><category>windows</category><pubDate>Fri, 31 Jul 2015 23:38:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-3211009487109418361</guid><description>Jeżeli zdarzyło Ci się, że musiałeś poznać strukturę folderów w sieci, a połączenie było super wolne to, to rozwiązanie spodoba Ci się. &lt;br /&gt;
Wpadłem na nie dopiero pod koniec mojego poprzedniego projektu. Potrzebowałem informacji jak wygląda struktura folderów, nie potrzebowałem informacji o plikach, a połączenie było tak powolne, że krew mnie zalewała :)&lt;br /&gt;
 &lt;br /&gt;
Z pomocą przyszło do mnie polecenie &lt;a href="http://ss64.com/nt/xcopy.html"&gt;xcopy&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;xcopy /t /e  \\Shared\ c:\toCheck\
&lt;/pre&gt;&lt;br /&gt;
To polecenie kopiuje foldery z \\Shared\ do c:\toCheck\.&lt;br /&gt;
Działa bardzo szybko bo nie musi przetwarzać plików, a tylko info. o strukturze folderów.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Jednolinijkowiec do czyszczenia projektu</title><link>http://arekonsoftware.blogspot.com/2015/07/jednolinijkowiec-do-czyszczenia-projektu.html</link><category>.NET</category><category>powershell</category><category>visual studio</category><pubDate>Sun, 26 Jul 2015 00:05:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-1372992724863676931</guid><description>Bierzesz Clean w VS i nie działa?&lt;br /&gt;
Nie wszystko usuwasz z binów.&lt;br /&gt;
Przyczyn może być wiele, &lt;br /&gt;
np. interakcja z inną aplikacją lub jak nasza aplikacja tworzy dodatkowe pliki w folderze bin.&lt;br /&gt;
Wtedy musisz usunąć wszystkie pliki w tym folderze.&lt;br /&gt;
&lt;br /&gt;
Tutaj sprawdza się nasz jednolinijkowiec:&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;$path = "path_to_project"

gci -path $path -Recurse  
 | ? {$_.FullName.Contains("\bin\Debug\") 
   -or $_.FullName.Contains("\bin\Release\") } 
 | Remove-Item​
&lt;/pre&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>Zmapowane dyski sieciowe</title><link>http://arekonsoftware.blogspot.com/2015/07/zmapowane-dyski-sieciowe.html</link><category>admin</category><category>powershell</category><category>windows</category><pubDate>Wed, 22 Jul 2015 23:52:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-6460848840004688610</guid><description>Na komputerach zdalnych mam zmapowane dyski sieciowy i czasami muszę przesłać ścieżkę.&lt;br /&gt;
Poniższa funkcja w PS zwróci Ci wszystkie zmapowane dyski:  &lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="vb"&gt;function Get-NetworkDrive([string]$ln = "Z", [switch]$all, [string[]]$computername='.') {
if($all) {
    gwmi  -Class Win32_NetworkConnection  -computername  $computername 
    }
else {
    gwmi  -Class Win32_NetworkConnection  -Filter "LocalName like `'$ln%`'"  -computername $computername 
    }
}
&lt;/pre&gt;&lt;br /&gt;
Przykład działania funkcji na komputerze lokalnym wygląda tak: &lt;br /&gt;
&lt;pre name="code" class="vb"&gt;Get-NetworkDrive P
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfA1LRFYsacVu1HprPl-PLb4hQnOpqYiW9cPYmr48btEzcHR6Mguese6fZ1-nETIupcjhMJhDV_xkaaKNYDGcfnpBRulf1prW-zY9gDGqn8IDl3PDzM63K5NodHnkYC9V6EyJyaEki-0nX/s1600/get-networkDrive.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfA1LRFYsacVu1HprPl-PLb4hQnOpqYiW9cPYmr48btEzcHR6Mguese6fZ1-nETIupcjhMJhDV_xkaaKNYDGcfnpBRulf1prW-zY9gDGqn8IDl3PDzM63K5NodHnkYC9V6EyJyaEki-0nX/s640/get-networkDrive.png" /&gt;&lt;/a&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfA1LRFYsacVu1HprPl-PLb4hQnOpqYiW9cPYmr48btEzcHR6Mguese6fZ1-nETIupcjhMJhDV_xkaaKNYDGcfnpBRulf1prW-zY9gDGqn8IDl3PDzM63K5NodHnkYC9V6EyJyaEki-0nX/s72-c/get-networkDrive.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item><item><title>ApressOpen</title><link>http://arekonsoftware.blogspot.com/2015/07/apressopen.html</link><category>book</category><pubDate>Wed, 15 Jul 2015 00:46:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8294770370120501831.post-4872636547276143669</guid><description>Wydawnictwo Apress udostępniło książki do pobrania w wersji elektronicznej (format PDF, ePub oraz MOBI) za darmo.&lt;br /&gt;
Książki można kupić przez ten link:&lt;br /&gt;
&lt;a href="http://www.apress.com/apressopen"&gt; http://www.apress.com/apressopen&lt;/a&gt;&lt;br /&gt;
Teraz to trzeba będzie się brać za czytanie :)&lt;br /&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (arekbee)</author></item></channel></rss>