<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on cederlof.net</title><link>https://www.cederlof.net/post/</link><description>Recent content in Posts on cederlof.net</description><generator>Hugo -- gohugo.io</generator><copyright>Copyright © Erik Cederlöf</copyright><lastBuildDate>Wed, 28 Oct 2020 16:08:11 +0000</lastBuildDate><atom:link href="https://www.cederlof.net/post/index.xml" rel="self" type="application/rss+xml"/><item><title>Ubuntu Home Assistant Docker</title><link>https://www.cederlof.net/ubuntu-home-assistant-docker/</link><pubDate>Wed, 28 Oct 2020 16:08:11 +0000</pubDate><guid>https://www.cederlof.net/ubuntu-home-assistant-docker/</guid><description>
&lt;p>Portainer&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>$ docker volume create portainer_data
&lt;span class="ln">2&lt;/span>$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Home Assistant&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>cd ~/homeassistant-docker
&lt;span class="ln"> 2&lt;/span>
&lt;span class="ln"> 3&lt;/span>#start
&lt;span class="ln"> 4&lt;/span>docker-compose up -d
&lt;span class="ln"> 5&lt;/span>
&lt;span class="ln"> 6&lt;/span>#restart
&lt;span class="ln"> 7&lt;/span>docker-compose restart
&lt;span class="ln"> 8&lt;/span>
&lt;span class="ln"> 9&lt;/span>#update and restart
&lt;span class="ln">10&lt;/span>docker-compose pull
&lt;span class="ln">11&lt;/span>docker-compose up -d --build homeassistant
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Firefox on Docker &lt;a href="https://github.com/jlesage/docker-firefox9">https://github.com/jlesage/docker-firefox9&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker run -d --name=firefox -p 5800:5800 -v /docker/appdata/firefox:/config:rw --shm-size 2g -e &amp;#34;DISPLAY_WIDTH=1000&amp;#34; -e &amp;#34;DISPLAY_HEIGHT=1308&amp;#34; -e &amp;#34;KEEP_APP_RUNNING=1&amp;#34; --security-opt seccomp=/home/ubuntu/firefox-docker/default.json jlesage/firefox
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Mosquitto on Docker&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>cd ~/mosquitto-docker
&lt;span class="ln">2&lt;/span>docker-compose up -d
&lt;span class="ln">3&lt;/span>#port 1883, 127.0.0.1
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Extract .pem and .key from .pfx certificate for Swish</title><link>https://www.cederlof.net/extract-.pem-and-.key-from-.pfx-certificate-for-swish/</link><pubDate>Sun, 11 Oct 2020 18:51:41 +0000</pubDate><guid>https://www.cederlof.net/extract-.pem-and-.key-from-.pfx-certificate-for-swish/</guid><description>
&lt;p>Swish with PHP and curl requires original .pem and additionaly the extracted .key, which was a hassle to extract on Windows.
To extract the key: import the .pem-cert into windows cert store on the machine that created the CSR and then export it to pfx with keys. Then do number two below.&lt;/p>
&lt;h5 id="1-pfx-to-pem">1. .pfx to .pem&lt;/h5>
&lt;p>&lt;code>openssl pkcs12 -in filename.pfx -out cert.pem -nodes&lt;/code>&lt;/p>
&lt;h5 id="2-pfx-to-key">2. .pfx to .key&lt;/h5>
&lt;p>&lt;code>openssl pkcs12 -in filename.pfx -nocerts -out cert.key&lt;/code>&lt;/p>
&lt;h5 id="3-pfx-to-pem-without-key">3. .pfx to .pem without key&lt;/h5>
&lt;p>&lt;code> openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem&lt;/code>&lt;/p>
&lt;p>Källa: &lt;a href="https://www.xolphin.com/support/Certificate_conversions/Convert_pfx_file_to_pem_file">https://www.xolphin.com/support/Certificate_conversions/Convert_pfx_file_to_pem_file&lt;/a>&lt;/p></description></item><item><title>Docker and ASP.NET MVC</title><link>https://www.cederlof.net/docker-and-asp.net-mvc/</link><pubDate>Wed, 18 Dec 2019 10:37:50 +0000</pubDate><guid>https://www.cederlof.net/docker-and-asp.net-mvc/</guid><description>
&lt;h4 id="get-started">Get started&lt;/h4>
&lt;ol>
&lt;li>&lt;code>choco install docker-desktop&lt;/code>&lt;/li>
&lt;li>Open Docker desktop verify it is starting&lt;/li>
&lt;li>Right click icon in taskbar and: Switch to Windows containers&lt;/li>
&lt;/ol>
&lt;p>####Docker cheat sheet&lt;/p>
&lt;p>Get Running containers
&lt;code>docker container ls&lt;/code>&lt;/p>
&lt;p>Run a command inside the container
&lt;code>docker container exec XX ls&lt;/code> (XX är id för containern, kanske funkar med namnet?)&lt;/p>
&lt;p>Attach to a running container and run powershell
&lt;code>docker exec -ti XX powershell&lt;/code>&lt;/p>
&lt;p>Create an image
&lt;code>docker image build --tag jtjp:v1 --file .\Dockerfile .&lt;/code>&lt;/p>
&lt;p>Run the image interactively and start powershell
&lt;code>docker container run -it TAG powershell&lt;/code>&lt;/p>
&lt;p>Run the image detached and map port 80 in container to 8123 in host
&lt;code>docker container run -d -p 8123:80 TAG&lt;/code>&lt;/p>
&lt;p>Inspect en running container (get IP, run status and more)
&lt;code>docker inspect XX&lt;/code>&lt;/p>
&lt;p>####Dockerfile
Create &lt;code>%projectRoot%\docker\web\Dockerfile&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span># escape=`
&lt;span class="ln"> 2&lt;/span>FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019 AS build-agent
&lt;span class="ln"> 3&lt;/span>SHELL [&amp;#34;powershell&amp;#34;, &amp;#34;-Command&amp;#34;, &amp;#34;$ErrorActionPreference = &amp;#39;Stop&amp;#39;; $ProgressPreference = &amp;#39;SilentlyContinue&amp;#39;;&amp;#34;]
&lt;span class="ln"> 4&lt;/span>
&lt;span class="ln"> 5&lt;/span># Install web workload:
&lt;span class="ln"> 6&lt;/span>RUN Invoke-WebRequest -UseBasicParsing https://aka.ms/vs/16/release/vs_buildtools.exe -OutFile vs_BuildTools.exe; `
&lt;span class="ln"> 7&lt;/span> Start-Process vs_BuildTools.exe -ArgumentList &amp;#39;--add&amp;#39;, &amp;#39;Microsoft.VisualStudio.Workload.WebBuildTools&amp;#39;, &amp;#39;--quiet&amp;#39;, &amp;#39;--norestart&amp;#39;, &amp;#39;--nocache&amp;#39; -NoNewWindow -Wait;
&lt;span class="ln"> 8&lt;/span>
&lt;span class="ln"> 9&lt;/span>SHELL [&amp;#34;cmd&amp;#34;, &amp;#34;/S&amp;#34;, &amp;#34;/C&amp;#34;]
&lt;span class="ln">10&lt;/span>RUN @powershell -NoProfile -ExecutionPolicy unrestricted -Command &amp;#34;iex ((new-object net.webclient).DownloadString(&amp;#39;https://chocolatey.org/install.ps1&amp;#39;))&amp;#34; &amp;amp;&amp;amp; SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
&lt;span class="ln">11&lt;/span>
&lt;span class="ln">12&lt;/span># new shell so choco is available
&lt;span class="ln">13&lt;/span>SHELL [&amp;#34;powershell&amp;#34;, &amp;#34;-Command&amp;#34;, &amp;#34;$ErrorActionPreference = &amp;#39;Stop&amp;#39;; $ProgressPreference = &amp;#39;SilentlyContinue&amp;#39;;&amp;#34;]
&lt;span class="ln">14&lt;/span>RUN choco install webdeploy -y;
&lt;span class="ln">15&lt;/span>
&lt;span class="ln">16&lt;/span>WORKDIR C:\src\JTjP
&lt;span class="ln">17&lt;/span>COPY JTjP\*.config ./
&lt;span class="ln">18&lt;/span>RUN nuget restore packages.config -PackagesDirectory ..\packages;
&lt;span class="ln">19&lt;/span>
&lt;span class="ln">20&lt;/span>COPY JTjP\ .
&lt;span class="ln">21&lt;/span>RUN msbuild JTjP.csproj /p:OutDir=C:\out /p:Configuration=Release /p:CreatePackageOnPublish=True /p:DeployOnBuild=True /p:DeployTarget=Package /p:AutoParameterizationWebConfigConnectionStrings=False
&lt;span class="ln">22&lt;/span>
&lt;span class="ln">23&lt;/span>FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2016 AS runtime
&lt;span class="ln">24&lt;/span>SHELL [&amp;#34;powershell&amp;#34;, &amp;#34;-Command&amp;#34;, &amp;#34;$ErrorActionPreference = &amp;#39;Stop&amp;#39;; $ProgressPreference = &amp;#39;SilentlyContinue&amp;#39;;&amp;#34;]
&lt;span class="ln">25&lt;/span>
&lt;span class="ln">26&lt;/span>WORKDIR c:\webfiles
&lt;span class="ln">27&lt;/span>
&lt;span class="ln">28&lt;/span>COPY --from=build-agent /out/_PublishedWebsites/JTjP/ ./
&lt;span class="ln">29&lt;/span>
&lt;span class="ln">30&lt;/span>RUN Remove-Website &amp;#39;Default Web Site&amp;#39;; `
&lt;span class="ln">31&lt;/span> New-Website -Name &amp;#39;jtjp&amp;#39; -Port 80 -PhysicalPath &amp;#39;c:\webfiles&amp;#39;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>####Troubleshooting&lt;/p>
&lt;p>######VirtualBox, Hyper-v osv.
Docker Desktop uses Hyper-v under the hood, and the Windows feature must be installed. Docker Toolbox is for legacy systems, and works with VirtualBox instead. However Docker Desktop is better for Windows. Hanselman has a solution for switching between Hyper-v and VirtualBox &lt;a href="https://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx">https://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx&lt;/a>&lt;/p>
&lt;p>######No internet access from inside container with Docker Desktop&lt;/p>
&lt;p>Trying to restore Nuget, and have no internet access? With multiple network adapters the solution for Win 10 might be to set the interface metric, to the lowest in the system, as Docker/Hyper-v(?) choses the one with the lowest value &lt;a href="https://github.com/docker/for-win/issues/2760#issuecomment-430889666">https://github.com/docker/for-win/issues/2760#issuecomment-430889666&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property InterfaceMetric -Descending
&lt;span class="ln">2&lt;/span>
&lt;span class="ln">3&lt;/span>#from elevated prompt!
&lt;span class="ln">4&lt;/span>Set-NetIPInterface -InterfaceAlias &amp;#39;Wi-Fi&amp;#39; -InterfaceMetric 3
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Ubuntu files backups Onedrive</title><link>https://www.cederlof.net/ubuntu-files-backups-onedrive/</link><pubDate>Sun, 08 Dec 2019 19:59:56 +0000</pubDate><guid>https://www.cederlof.net/ubuntu-files-backups-onedrive/</guid><description>
&lt;p>###OneDrive
Använder fork av skilion/onedrive
&lt;a href="https://github.com/abraunegg/onedrive/blob/master/docs/USAGE.md">https://github.com/abraunegg/onedrive/blob/master/docs/USAGE.md&lt;/a>&lt;/p>
&lt;p>Config:
&lt;em>sudo vim ~/.config/onedrive/config&lt;/em>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>systemctl enable onedrive@&amp;lt;username&amp;gt;.service
&lt;span class="ln">2&lt;/span>systemctl start onedrive@&amp;lt;username&amp;gt;.service
&lt;/code>&lt;/pre>&lt;/div>&lt;p>To view the status of the service running for the user, use the following:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>systemctl status onedrive@&amp;lt;username&amp;gt;.service
&lt;/code>&lt;/pre>&lt;/div>&lt;p>###Copying files
&lt;a href="https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/">https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/&lt;/a>
rsync -avzh&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>rsync -avz /media/sourcedir/ /media/targetdir/
&lt;/code>&lt;/pre>&lt;/div>&lt;p>####screen Run in the background
&lt;a href="https://linuxize.com/post/how-to-use-linux-screen/">https://linuxize.com/post/how-to-use-linux-screen/&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>screen -S session_name
&lt;span class="ln">2&lt;/span>Ctrl+A ? #gives commands
&lt;span class="ln">3&lt;/span>Ctrl+A Ctrl+d #detach from screen
&lt;span class="ln">4&lt;/span>screen -ls #active screens
&lt;span class="ln">5&lt;/span>screen -r 10835 #reattach screen with id
&lt;span class="ln">6&lt;/span>screen -rd 10835 #reattach if not detached
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>node-red</title><link>https://www.cederlof.net/node-red/</link><pubDate>Mon, 14 Jan 2019 07:47:28 +0000</pubDate><guid>https://www.cederlof.net/node-red/</guid><description>
&lt;p>Autostart capability using SystemD&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/nodered.service -O /lib/systemd/system/nodered.service
&lt;span class="ln">2&lt;/span>sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-start -O /usr/bin/node-red-start
&lt;span class="ln">3&lt;/span>sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-stop -O /usr/bin/node-red-stop
&lt;span class="ln">4&lt;/span>sudo chmod +x /usr/bin/node-red-st*
&lt;span class="ln">5&lt;/span>sudo systemctl daemon-reload
&lt;/code>&lt;/pre>&lt;/div>&lt;p>To then enable Node-RED to run automatically at every boot and upon crashes
&lt;code>sudo systemctl enable nodered.service&lt;/code>&lt;/p>
&lt;p>It can be disabled by
&lt;code>sudo systemctl disable nodered.service&lt;/code>&lt;/p>
&lt;p>Systemd uses the /var/log/system.log for logging. To filter the log use
&lt;code>sudo journalctl -f -u nodered -o cat&lt;/code>&lt;/p></description></item><item><title>VIM Simple Vim VSCode VsVim</title><link>https://www.cederlof.net/vim-simple-vim-vscode-vsvim/</link><pubDate>Wed, 19 Dec 2018 09:29:06 +0000</pubDate><guid>https://www.cederlof.net/vim-simple-vim-vscode-vsvim/</guid><description>
&lt;p>Cheat sheet for Simple Vim in VSCode&lt;/p>
&lt;p>&lt;a href="https://marketplace.visualstudio.com/items?itemName=jpotterm.simple-vim">https://marketplace.visualstudio.com/items?itemName=jpotterm.simple-vim&lt;/a>&lt;/p>
&lt;p>&lt;strong>Move around&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>Ctrl+b page up
&lt;span class="ln"> 2&lt;/span>Ctrl+f page down
&lt;span class="ln"> 3&lt;/span>$ end of line
&lt;span class="ln"> 4&lt;/span>% matching bracket
&lt;span class="ln"> 5&lt;/span>[{ previous bracket or next: ]}
&lt;span class="ln"> 6&lt;/span>* or # Jump to next/prev occurrence of word under cursor
&lt;span class="ln"> 7&lt;/span>A Move to end of line and enter Insert mode.
&lt;span class="ln"> 8&lt;/span>I Move to beginning of line and enter Insert mode.
&lt;span class="ln"> 9&lt;/span>dd Delete current line.
&lt;span class="ln">10&lt;/span>dw Delete current word.
&lt;span class="ln">11&lt;/span>c Delete current character.
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Selection&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>c Delete range and enter insert mode.
&lt;span class="ln">2&lt;/span>ggVG Select all
&lt;span class="ln">3&lt;/span>&amp;lt; or &amp;gt; Intent, repeat with .
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Comment out block&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>0 go to start of line
&lt;span class="ln">2&lt;/span>ctrl + V enter select vertical mode
&lt;span class="ln">3&lt;/span>j go down
&lt;span class="ln">4&lt;/span>shift + I put cursors
&lt;span class="ln">5&lt;/span>// to select
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://stackoverflow.com/questions/1676632/whats-a-quick-way-to-comment-uncomment-lines-in-vim">https://stackoverflow.com/questions/1676632/whats-a-quick-way-to-comment-uncomment-lines-in-vim&lt;/a>&lt;/p>
&lt;p>&lt;strong>Copy paste&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>yy Yank current line.
&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Select characters: &lt;em>v&lt;/em> or &lt;em>V&lt;/em> (whole line)&lt;/li>
&lt;li>Press &lt;em>d&lt;/em> to cut or &lt;em>y&lt;/em> to copy&lt;/li>
&lt;li>Press &lt;em>P&lt;/em> to paste before the cursor or &lt;em>p&lt;/em> to paste after*&lt;/li>
&lt;/ul>
&lt;p>d stands for delete in Vim, which in other editors is usually called cut
y stands for yank in Vim, which in other editors is usually called copy
Source: &lt;a href="http://vim.wikia.com/wiki/Copy,_cut_and_paste">http://vim.wikia.com/wiki/Copy,_cut_and_paste&lt;/a>&lt;/p>
&lt;p>&lt;strong>Macro&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>qa Record macro to &amp;#39;a&amp;#39;-register
&lt;span class="ln">2&lt;/span>_ Jump to beginning of line and do what macro will do
&lt;span class="ln">3&lt;/span>jq Jump down to next line and end macro recording
&lt;span class="ln">4&lt;/span>
&lt;span class="ln">5&lt;/span>@a play macro
&lt;span class="ln">6&lt;/span>5@a play macro on next 5 lines
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Source: &lt;a href="https://stackoverflow.com/questions/11784408/vim-multiline-editing-like-in-sublimetext">https://stackoverflow.com/questions/11784408/vim-multiline-editing-like-in-sublimetext&lt;/a>&lt;/p>
&lt;p>&lt;em>&lt;strong>Recursive macro&lt;/strong>&lt;/em>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>qq4f,lr[Enter]@qq
&lt;span class="ln"> 2&lt;/span>
&lt;span class="ln"> 3&lt;/span>qq starts a new macro called q.
&lt;span class="ln"> 4&lt;/span>4f, finds the forth ,
&lt;span class="ln"> 5&lt;/span>l moves to the right of it
&lt;span class="ln"> 6&lt;/span>renter replaces the space with an enter
&lt;span class="ln"> 7&lt;/span>@q calls the macro you have just made to recursively call it
&lt;span class="ln"> 8&lt;/span>q to finish recording
&lt;span class="ln"> 9&lt;/span>
&lt;span class="ln">10&lt;/span>Then simple @q to format it.
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Source: &lt;a href="https://stackoverflow.com/questions/42314897/enter-a-new-line-after-4-commas-in-vim/42315209#42315209">https://stackoverflow.com/questions/42314897/enter-a-new-line-after-4-commas-in-vim/42315209#42315209&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://fuqua.io/blog/2017/08/level-up-your-vsvim/">https://fuqua.io/blog/2017/08/level-up-your-vsvim/&lt;/a>&lt;/p></description></item><item><title>git cheat sheet</title><link>https://www.cederlof.net/git-cheat-sheet/</link><pubDate>Tue, 27 Feb 2018 13:30:10 +0000</pubDate><guid>https://www.cederlof.net/git-cheat-sheet/</guid><description>
&lt;p>merge PR into fork&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git remote add pr-source https://github.com/&amp;lt;user-providing-pull-request&amp;gt;/&amp;lt;repo-name&amp;gt;
&lt;span class="ln">2&lt;/span>git fetch pr-source
&lt;span class="ln">3&lt;/span>git merge pr-source/&amp;lt;pull-request-branch-name&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>checkout commit&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git checkout &amp;lt;sha1&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>sync fork with remote master&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git clone git@github.com:&amp;lt;your-gh-name&amp;gt;/ezpublish.git ezforksync
&lt;span class="ln">2&lt;/span>cd ezforksync
&lt;span class="ln">3&lt;/span>git remote add upstream https://github.com/ezsystems/ezpublish.git
&lt;span class="ln">4&lt;/span>git pull upstream master
&lt;span class="ln">5&lt;/span>git push
&lt;span class="ln">6&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>undo latest commit&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> git reset HEAD~
&lt;/code>&lt;/pre>&lt;/div>&lt;p>undo two latest commits&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git reset HEAD~2
&lt;/code>&lt;/pre>&lt;/div>&lt;p>undo to a commit (warning, hard will delete local changes)&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git reset --hard &amp;lt;sha1_of_where_you_want_to_be&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>undo a rebase (must be the last thing you did) (else, use reflog)&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git reset --hard ORIG_HEAD
&lt;span class="ln">2&lt;/span>git rebase --abort
&lt;/code>&lt;/pre>&lt;/div>&lt;p>#####Rebase with squash/pick commits
Source: &lt;a href="http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html">http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html&lt;/a>
&lt;a href="https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History">https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>$ git rebase -i HEAD~4
&lt;/code>&lt;/pre>&lt;/div>&lt;p>In editor that appears, change pick to squash into the above picked commit:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>pick 01d1124 Adding license
&lt;span class="ln">2&lt;/span>pick 6340aaa Moving license into its own file
&lt;span class="ln">3&lt;/span>pick ebfd367 Jekyll has become self-aware.
&lt;span class="ln">4&lt;/span>pick 30e0ccb Changed the tagline in the binary, too.
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Next choose commit message, just comment out all lines but one, and write a pretty msg.
Done.&lt;/p>
&lt;p>#####Cleanup branches
Source: &lt;a href="https://railsware.com/blog/2014/08/11/git-housekeeping-tutorial-clean-up-outdated-branches-in-local-and-remote-repositories/">https://railsware.com/blog/2014/08/11/git-housekeeping-tutorial-clean-up-outdated-branches-in-local-and-remote-repositories/&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>#what branches are merged into master?
&lt;span class="ln"> 2&lt;/span>git checkout master
&lt;span class="ln"> 3&lt;/span>git branch --merged
&lt;span class="ln"> 4&lt;/span>
&lt;span class="ln"> 5&lt;/span>#remove branch with name
&lt;span class="ln"> 6&lt;/span>git branch -d name-of-branch-to-remove
&lt;span class="ln"> 7&lt;/span>
&lt;span class="ln"> 8&lt;/span>#what branches are not merged?
&lt;span class="ln"> 9&lt;/span>git branch --no-merged
&lt;span class="ln">10&lt;/span>
&lt;span class="ln">11&lt;/span>#remove if abandoned
&lt;span class="ln">12&lt;/span>git branch -D name-of-branch-to-remove
&lt;span class="ln">13&lt;/span>
&lt;span class="ln">14&lt;/span>#cleanup stale references
&lt;span class="ln">15&lt;/span>git branch -r
&lt;span class="ln">16&lt;/span>git remote prune origin
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Kentor Authservices</title><link>https://www.cederlof.net/kentor-authservices/</link><pubDate>Fri, 23 Feb 2018 08:24:05 +0000</pubDate><guid>https://www.cederlof.net/kentor-authservices/</guid><description>
&lt;p>Logging events&lt;/p>
&lt;pre>&lt;code>public class ElmahLoggerAdapter : Kentor.AuthServices.ILoggerAdapter
{
public void WriteInformation(string message)
{
LogText(message);
}
public void WriteError(string message, Exception ex)
{
LogText(ex + Environment.NewLine + message);
}
public void WriteVerbose(string message)
{
LogText(message);
}
private void LogText(string message)
{
File.AppendAllText(@&amp;quot;c:\temp\authServicesLog.txt&amp;quot;, message + Environment.NewLine + @&amp;quot;********************&amp;quot; + Environment.NewLine);
}
}
&lt;/code>&lt;/pre>
&lt;p>I Global.asax Application_Startup&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>influxdb grafana</title><link>https://www.cederlof.net/influxdb-grafana/</link><pubDate>Mon, 12 Feb 2018 20:16:05 +0000</pubDate><guid>https://www.cederlof.net/influxdb-grafana/</guid><description>
&lt;p>&lt;a href="https://community.home-assistant.io/t/complete-guide-on-setting-up-grafana-influxdb-with-home-assistant-using-official-docker-images/42860">https://community.home-assistant.io/t/complete-guide-on-setting-up-grafana-influxdb-with-home-assistant-using-official-docker-images/42860&lt;/a>
&lt;a href="https://snillevilla.se/snygg-statistik-i-home-assistant-med-grafana-och-influxdb/">https://snillevilla.se/snygg-statistik-i-home-assistant-med-grafana-och-influxdb/&lt;/a>&lt;/p>
&lt;p>access grafana on http://IP-ADRESS:3000 admin/admin&lt;/p>
&lt;p>start influxdb container&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker run -d \
&lt;span class="ln">2&lt;/span>--name=&amp;#34;influxdb&amp;#34; \
&lt;span class="ln">3&lt;/span>--restart always \
&lt;span class="ln">4&lt;/span>-p 8086:8086 \
&lt;span class="ln">5&lt;/span>-p 8083:8083 \
&lt;span class="ln">6&lt;/span>-v /volume1/docker/influxdb/:/var/lib/influxdb \
&lt;span class="ln">7&lt;/span>influxdb
&lt;/code>&lt;/pre>&lt;/div>&lt;p>run client&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker exec -it influxdb influx
&lt;/code>&lt;/pre>&lt;/div>&lt;p>run grafana container&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker run --user 104 -d -p 3000:3000 --name=&amp;#34;grafana&amp;#34; -v /volume1/docker/grafana:/var/lib/grafana grafana/grafana
&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="upgrade-grafana">Upgrade grafana&lt;/h4>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker pull grafana/grafana
&lt;span class="ln">2&lt;/span>docker stop grafana
&lt;span class="ln">3&lt;/span>docker rm grafana
&lt;span class="ln">4&lt;/span>docker run --user 104 -d -p 3000:3000 --name=&amp;#34;grafana&amp;#34; -v /volume1/docker/grafana:/var/lib/grafana grafana/grafana
&lt;/code>&lt;/pre>&lt;/div>&lt;p>####Troubleshooting
get docker containers&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker ps -a
&lt;span class="ln">2&lt;/span>
&lt;span class="ln">3&lt;/span>docker logs XXXX #container-id - get logs of container
&lt;span class="ln">4&lt;/span>docker logs -f --tail 100 #tail takes 100 last rows
&lt;/code>&lt;/pre>&lt;/div>&lt;p>if error when trying to start container: &lt;em>Error response from daemon: driver failed programming external connectivity on endpoint influxdb: Error starting userland proxy: listen tcp 0.0.0.0:8086: bind: address already in use&lt;/em>
Find process using port and kill it:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo netstat -nl -p tcp | grep 8086
&lt;span class="ln">2&lt;/span>sudo kill 1259
&lt;span class="ln">3&lt;/span>docker start influxdb
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Home-assistant venv Ubuntu</title><link>https://www.cederlof.net/home-assistant-venv-ubuntu/</link><pubDate>Sun, 07 Jan 2018 19:48:35 +0000</pubDate><guid>https://www.cederlof.net/home-assistant-venv-ubuntu/</guid><description>
&lt;p>Upgrade Python to 3.5.4
&lt;a href="https://sgrudadh.blogspot.se/2017/12/upgrading-python-virtual-environment.html">https://sgrudadh.blogspot.se/2017/12/upgrading-python-virtual-environment.html&lt;/a>&lt;/p>
&lt;p>Install hass in venv
&lt;a href="https://sgrudadh.blogspot.co.uk/2017/12/installing-home-assistant-in-virtual.html">https://sgrudadh.blogspot.co.uk/2017/12/installing-home-assistant-in-virtual.html&lt;/a>&lt;/p>
&lt;p>You can watch Home Assistant start (and run) with:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>$ sudo journalctl -f -u home-assistant
&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can stop watching that by pressing CTRL+C - it won't stop any service.&lt;/p>
&lt;p>activate user env and upgrade hass&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo su -s /bin/bash homeassistant
&lt;span class="ln">2&lt;/span>source /srv/homeassistant/homeassistant_venv/bin/activate
&lt;span class="ln">3&lt;/span>pip3 install --upgrade homeassistant
&lt;span class="ln">4&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>control hass service&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo systemctl start home-assistant
&lt;span class="ln">2&lt;/span>sudo systemctl stop home-assistant
&lt;span class="ln">3&lt;/span>sudo systemctl restart home-assistant
&lt;/code>&lt;/pre>&lt;/div>&lt;p>######Samba share&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo nano /etc/samba/smb.conf
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Once &amp;quot;smb.conf&amp;quot; has loaded, add this to the very end of the file:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>[&amp;lt;folder_name&amp;gt;]
&lt;span class="ln">2&lt;/span>path = /home/&amp;lt;user_name&amp;gt;/&amp;lt;folder_name&amp;gt;
&lt;span class="ln">3&lt;/span>valid users = &amp;lt;user_name&amp;gt;
&lt;span class="ln">4&lt;/span>read only = no
&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo service smbd restart
&lt;span class="ln">2&lt;/span>
&lt;span class="ln">3&lt;/span>#test with
&lt;span class="ln">4&lt;/span>testparm
&lt;/code>&lt;/pre>&lt;/div>&lt;p>###backup
&lt;a href="https://blog.ceard.tech/2017/10/backing-up-home-assistant.html?view=sidebar">https://blog.ceard.tech/2017/10/backing-up-home-assistant.html?view=sidebar&lt;/a>&lt;/p></description></item><item><title>postgresql</title><link>https://www.cederlof.net/postgresql/</link><pubDate>Tue, 21 Nov 2017 09:06:43 +0000</pubDate><guid>https://www.cederlof.net/postgresql/</guid><description>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>#change to user postgres
&lt;span class="ln"> 2&lt;/span>sudo -i -u postgres
&lt;span class="ln"> 3&lt;/span>
&lt;span class="ln"> 4&lt;/span>#get into sql-mode
&lt;span class="ln"> 5&lt;/span>psql
&lt;span class="ln"> 6&lt;/span>
&lt;span class="ln"> 7&lt;/span>#create new role
&lt;span class="ln"> 8&lt;/span>createuser --interactive
&lt;span class="ln"> 9&lt;/span>
&lt;span class="ln">10&lt;/span>#list dbs
&lt;span class="ln">11&lt;/span>\l
&lt;span class="ln">12&lt;/span>
&lt;span class="ln">13&lt;/span>#select db
&lt;span class="ln">14&lt;/span>\c database-name
&lt;span class="ln">15&lt;/span>
&lt;span class="ln">16&lt;/span>#list tables
&lt;span class="ln">17&lt;/span>\dt
&lt;span class="ln">18&lt;/span>
&lt;span class="ln">19&lt;/span>#exit postgres
&lt;span class="ln">20&lt;/span>\q
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-16-04">https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-16-04&lt;/a>&lt;/p></description></item><item><title>hassbian Home Assistant</title><link>https://www.cederlof.net/hassbian-home-assistant/</link><pubDate>Tue, 05 Sep 2017 09:12:51 +0000</pubDate><guid>https://www.cederlof.net/hassbian-home-assistant/</guid><description>
&lt;p>####Docker (tamarind)
&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04">https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04&lt;/a>
&lt;a href="https://home-assistant.io/docs/installation/docker/">https://home-assistant.io/docs/installation/docker/&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> #config: /home/erik/docker-conf
&lt;span class="ln">2&lt;/span>
&lt;span class="ln">3&lt;/span> docker run --rm -d --name=&amp;#34;home-assistant&amp;#34; -v /home/erik/docker-conf:/config -v /etc/localtime:/etc/localtime:ro --privileged -v /dev/ttyACM0:/dev/ttyACM0 --net=host homeassistant/home-assistant
&lt;span class="ln">4&lt;/span>
&lt;span class="ln">5&lt;/span> docker restart home-assistant
&lt;span class="ln">6&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>To show only running containers use the given command:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker ps
&lt;span class="ln">2&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>To show all containers use the given command:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>docker ps -a
&lt;span class="ln">2&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>####Byt till hass-användaren och redigera conf:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo su -s /bin/bash homeassistant
&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>cd ~/.homeassistant/
&lt;span class="ln">2&lt;/span>nano configuration.yaml
&lt;span class="ln">3&lt;/span>
&lt;span class="ln">4&lt;/span>#görs utan att vara i bash för home assistant
&lt;span class="ln">5&lt;/span>sudo systemctl stop home-assistant@homeassistant.service
&lt;span class="ln">6&lt;/span>sudo systemctl start home-assistant@homeassistant.service
&lt;/code>&lt;/pre>&lt;/div>&lt;p>#####CHECK YOUR CONFIGURATION
Log in as the pi account and execute the following commands:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>$ sudo su -s /bin/bash homeassistant
&lt;span class="ln">2&lt;/span>$ source /srv/homeassistant/bin/activate
&lt;span class="ln">3&lt;/span>#den ligger nu kanske i /home/homeassistant/homeassistant/bin/activate (?)
&lt;span class="ln">4&lt;/span>$ hass --script check_config
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://home-assistant.io/docs/installation/hassbian/common-tasks/">https://home-assistant.io/docs/installation/hassbian/common-tasks/&lt;/a>&lt;/p>
&lt;p>####Tellsticken&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>#lista enheter
&lt;span class="ln"> 2&lt;/span>tdtool -l
&lt;span class="ln"> 3&lt;/span>
&lt;span class="ln"> 4&lt;/span>#redigera tellstick.conf
&lt;span class="ln"> 5&lt;/span>sudo nano /etc/tellstick.conf
&lt;span class="ln"> 6&lt;/span>
&lt;span class="ln"> 7&lt;/span>#starta om
&lt;span class="ln"> 8&lt;/span>sudo /etc/init.d/telldusd restart
&lt;span class="ln"> 9&lt;/span>
&lt;span class="ln">10&lt;/span>#sätt device i learning mode
&lt;span class="ln">11&lt;/span>#kör för id 7 i conf-filen
&lt;span class="ln">12&lt;/span>tdtool -e 7
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="http://developer.telldus.com/wiki/TellStick_conf">http://developer.telldus.com/wiki/TellStick_conf&lt;/a>&lt;/p>
&lt;p>####Lyssna på remotes&lt;/p>
&lt;p>PHP-script (sparat på /home/pi/phpscripts)&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>&amp;lt;?php
&lt;span class="ln">2&lt;/span>$s = stream_socket_client(&amp;#39;unix:///tmp/TelldusEvents&amp;#39;);
&lt;span class="ln">3&lt;/span>while(1){
&lt;span class="ln">4&lt;/span> echo stream_socket_recvfrom($s,1024).&amp;#34;\n&amp;#34;;
&lt;span class="ln">5&lt;/span>}
&lt;span class="ln">6&lt;/span>?&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Kör från commandline med&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>php -f ./readRemotes.php
&lt;/code>&lt;/pre>&lt;/div>&lt;p>####Samba shares&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo nano /etc/samba/smb.conf
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add network user with name &amp;quot;username&amp;quot;&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>sudo smbpasswd -a username
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>ESP8266 Arduino Wifi-module</title><link>https://www.cederlof.net/esp8266-arduino-wifi-module/</link><pubDate>Mon, 15 May 2017 12:50:30 +0000</pubDate><guid>https://www.cederlof.net/esp8266-arduino-wifi-module/</guid><description>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>
&lt;span class="ln"> 2&lt;/span>AT+CWJAP= “Wi-FiNetwork”,“Password”
&lt;span class="ln"> 3&lt;/span>
&lt;span class="ln"> 4&lt;/span>OK
&lt;span class="ln"> 5&lt;/span>AT+CIPMUX=1
&lt;span class="ln"> 6&lt;/span>
&lt;span class="ln"> 7&lt;/span>
&lt;span class="ln"> 8&lt;/span>OK
&lt;span class="ln"> 9&lt;/span>AT+CIPSERVER=1,80
&lt;span class="ln">10&lt;/span>
&lt;span class="ln">11&lt;/span>
&lt;span class="ln">12&lt;/span>OK
&lt;span class="ln">13&lt;/span>AT+CIFSR
&lt;span class="ln">14&lt;/span>
&lt;span class="ln">15&lt;/span>+CIFSR:STAIP,&amp;#34;192.168.1.230&amp;#34;
&lt;span class="ln">16&lt;/span>+CIFSR:STAMAC,&amp;#34;a0:20:a6:0e:ac:af&amp;#34;
&lt;span class="ln">17&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Source: &lt;a href="http://www.instructables.com/id/Getting-Started-With-the-ESP8266-ESP-01/">http://www.instructables.com/id/Getting-Started-With-the-ESP8266-ESP-01/&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>Try to connect The GPIO0 with a 10k resistor to ground and the CH_PD to VCC and it works :)
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Source: &lt;a href="https://github.com/esp8266/Arduino/issues/2801">https://github.com/esp8266/Arduino/issues/2801&lt;/a>&lt;/p></description></item><item><title>SQL Server cheat sheet</title><link>https://www.cederlof.net/sql-server-cheat-sheet/</link><pubDate>Tue, 20 Sep 2016 13:40:21 +0000</pubDate><guid>https://www.cederlof.net/sql-server-cheat-sheet/</guid><description>
&lt;p>######Reset auto-increment Key to 1&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>DBCC CHECKIDENT (&amp;#39;[dbo].[ServiceIntegrations]&amp;#39;, RESEED, 0)
&lt;span class="ln">2&lt;/span>GO
&lt;/code>&lt;/pre>&lt;/div>&lt;p>######Drop constraint with unknown name&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>DECLARE @ObjectName NVARCHAR(100)
&lt;span class="ln">2&lt;/span>SELECT @ObjectName = OBJECT_NAME([default_object_id]) FROM SYS.COLUMNS
&lt;span class="ln">3&lt;/span>WHERE [object_id] = OBJECT_ID(&amp;#39;[tableSchema].[tableName]&amp;#39;) AND [name] = &amp;#39;columnName&amp;#39;;
&lt;span class="ln">4&lt;/span>EXEC(&amp;#39;ALTER TABLE [tableSchema].[tableName] DROP CONSTRAINT &amp;#39; + @ObjectName)
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Source: &lt;a href="http://stackoverflow.com/questions/1430456/how-to-drop-sql-default-constraint-without-knowing-its-name">http://stackoverflow.com/questions/1430456/how-to-drop-sql-default-constraint-without-knowing-its-name&lt;/a>&lt;/p></description></item><item><title>Powershell - remove old files and folders</title><link>https://www.cederlof.net/powershell-remove-old-files-and-folders/</link><pubDate>Sun, 12 Jun 2016 16:32:38 +0000</pubDate><guid>https://www.cederlof.net/powershell-remove-old-files-and-folders/</guid><description>
&lt;p>Remove files older than X days, and remove empty folders.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span># set folder path
&lt;span class="ln"> 2&lt;/span>$dump_path = &amp;#34;c:\Temp\remove-files-ps&amp;#34;
&lt;span class="ln"> 3&lt;/span>
&lt;span class="ln"> 4&lt;/span># set min age of files
&lt;span class="ln"> 5&lt;/span>$max_days = &amp;#34;-20&amp;#34;
&lt;span class="ln"> 6&lt;/span>
&lt;span class="ln"> 7&lt;/span># get the current date
&lt;span class="ln"> 8&lt;/span>$curr_date = Get-Date
&lt;span class="ln"> 9&lt;/span>
&lt;span class="ln">10&lt;/span># determine how far back we go based on current date
&lt;span class="ln">11&lt;/span>$del_date = $curr_date.AddDays($max_days)
&lt;span class="ln">12&lt;/span>echo $del_date
&lt;span class="ln">13&lt;/span>
&lt;span class="ln">14&lt;/span># delete the files
&lt;span class="ln">15&lt;/span>Get-ChildItem $dump_path -Recurse | Where-Object { $_.LastWriteTime -lt $del_date } | Remove-Item
&lt;span class="ln">16&lt;/span>#Get-ChildItem $dump_path -Recurse | Where-Object { $_.LastWriteTime -lt $del_date } | echo
&lt;span class="ln">17&lt;/span>
&lt;span class="ln">18&lt;/span>(gci $dump_path -r | ? {$_.PSIsContainer -eq $True}) | ? {$_.GetFiles().Count -eq 0} | Remove-Item
&lt;span class="ln">19&lt;/span>#(gci $dump_path -r | ? {$_.PSIsContainer -eq $True}) | ? {$_.GetFiles().Count -eq 0} | echo
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Backup SQL Server databases with T-SQL</title><link>https://www.cederlof.net/backup-sql-server-databases-with-t-sql/</link><pubDate>Tue, 15 Mar 2016 13:32:28 +0000</pubDate><guid>https://www.cederlof.net/backup-sql-server-databases-with-t-sql/</guid><description>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>DECLARE @name VARCHAR(50) -- database name
&lt;span class="ln"> 2&lt;/span>DECLARE @path VARCHAR(256) -- path for backup files
&lt;span class="ln"> 3&lt;/span>DECLARE @fileName VARCHAR(256) -- filename for backup
&lt;span class="ln"> 4&lt;/span>DECLARE @fileDate VARCHAR(20) -- used for file name
&lt;span class="ln"> 5&lt;/span>DECLARE @debug BIT = 0
&lt;span class="ln"> 6&lt;/span>
&lt;span class="ln"> 7&lt;/span>-- specify database backup directory
&lt;span class="ln"> 8&lt;/span>SET @path = &amp;#39;c:\temp\db-backup\&amp;#39; --must exist on disk
&lt;span class="ln"> 9&lt;/span>
&lt;span class="ln">10&lt;/span>-- specify filename format
&lt;span class="ln">11&lt;/span>SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
&lt;span class="ln">12&lt;/span>
&lt;span class="ln">13&lt;/span>DECLARE db_cursor CURSOR FOR
&lt;span class="ln">14&lt;/span>SELECT name
&lt;span class="ln">15&lt;/span>FROM master.dbo.sysdatabases
&lt;span class="ln">16&lt;/span>WHERE name NOT IN (&amp;#39;tempdb&amp;#39;) -- exclude these databases
&lt;span class="ln">17&lt;/span>
&lt;span class="ln">18&lt;/span>OPEN db_cursor
&lt;span class="ln">19&lt;/span>FETCH NEXT FROM db_cursor INTO @name
&lt;span class="ln">20&lt;/span>
&lt;span class="ln">21&lt;/span> WHILE @@FETCH_STATUS = 0
&lt;span class="ln">22&lt;/span> BEGIN
&lt;span class="ln">23&lt;/span> SET @fileName = @path + @name + &amp;#39;.BAK&amp;#39;
&lt;span class="ln">24&lt;/span> if @debug = 0 BACKUP DATABASE @name TO DISK = @fileName with init, format, COMPRESSION
&lt;span class="ln">25&lt;/span> if @debug = 1 print &amp;#39;backup &amp;#39; + @name + &amp;#39; to &amp;#39; + @fileName
&lt;span class="ln">26&lt;/span>
&lt;span class="ln">27&lt;/span> FETCH NEXT FROM db_cursor INTO @name
&lt;span class="ln">28&lt;/span> END
&lt;span class="ln">29&lt;/span>
&lt;span class="ln">30&lt;/span>CLOSE db_cursor
&lt;span class="ln">31&lt;/span>DEALLOCATE db_cursor
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Knockout binding to JavaScript-dates and moment-formatting</title><link>https://www.cederlof.net/knockout-binding-to-javascript-dates-and-moment-formatting/</link><pubDate>Thu, 22 Oct 2015 11:25:28 +0000</pubDate><guid>https://www.cederlof.net/knockout-binding-to-javascript-dates-and-moment-formatting/</guid><description>
&lt;p>Data-binding an input-field or text-field to a JavaScript date is not implemented by default in Knockout. Here is a solution using MomentJS for formatting the date.&lt;/p>
&lt;pre>&lt;code> /*
* use like this: data-bind=&amp;quot;date: dateVariable, format: 'YYYY-MM-DD'&amp;quot;
*/
ko.bindingHandlers.date = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
ko.utils.registerEventHandler(element, 'change', function() {
var value = valueAccessor();
if (element.value !== null &amp;amp;&amp;amp; element.value !== undefined &amp;amp;&amp;amp; element.value.length &amp;gt; 0) {
value(element.value);
} else {
value('');
}
});
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var val = valueAccessor();
var formatted = 'Invalid date';
var date = moment(ko.utils.unwrapObservable(val));
var format = allBindingsAccessor().format || 'YYYY-MM-DD';
if (date &amp;amp;&amp;amp; date.isValid()) {
formatted = date.format(format);
}
if ($(element).is('input') === true) {
$(element).val(formatted);
} else {
$(element).text(formatted);
}
}
};&lt;/code>&lt;/pre></description></item><item><title>NHibernate Lazy loading and JSON</title><link>https://www.cederlof.net/nhibernate-lazy-loading-and-json/</link><pubDate>Tue, 20 Oct 2015 08:48:03 +0000</pubDate><guid>https://www.cederlof.net/nhibernate-lazy-loading-and-json/</guid><description>
&lt;p>När man arbetar med NHibernate mot databas så är lazy-loading aktiverat per default.&lt;/p>
&lt;pre>&lt;code>var session = sessionFactory.OpenSession();
var users = session.Query&amp;lt;User&amp;gt;()
.ToList();
&lt;/code>&lt;/pre>
&lt;p>Denna query hämtar Users-tabellen och ingenting annat. Trots att man gjort ToList() är inte kopplingen mot sessionen bruten, så går man ner i users-objektet så finns relationerna där så länge sessionen är öppen.&lt;/p>
&lt;pre>&lt;code>var roles = users.Roles.ToList(); //fungerar!
&lt;/code>&lt;/pre>
&lt;p>Notera att i ovan fall så sker det då flera frågor mot databasen, eftersom att i första läget hämtas bara Users-tabellen, och sen när man väl punktar ner till en relation görs det nya frågor. Vet man med sig att man vill arbeta på relationerna så kan man göra en &lt;em>eager load&lt;/em>, och ta med dem i samma SQL-fråga mot databasen med &lt;code>Fetch()&lt;/code>:&lt;/p>
&lt;pre>&lt;code>var session = sessionFactory.OpenSession();
var users = session.Query&amp;lt;User&amp;gt;()
.Fetch(u =&amp;gt; u.Roles)
.ToList();
&lt;/code>&lt;/pre>
&lt;p>Problemet är när man vill returnera &lt;code>users&lt;/code> från en Controller med t ex Json, då serialiseringen traverserar de properties som finns och därmed gör ytterligare slagningar mot databasen. Ett litet objekt med många relationer kan bli hur stort som helst och ge många onödiga slagningar mot DB.&lt;/p>
&lt;p>En lösning är att &lt;a href="http://stackoverflow.com/questions/1913125/is-it-possible-to-enable-disable-lazy-loading-for-all-entities-across-a-nhiberna">använda en &lt;code>StatelessSession&lt;/code>&lt;/a> istället för en vanlig Session. Den gör att objektet inte har någon koppling till sessionen efter en ToList().&lt;/p>
&lt;pre>&lt;code>var session = sessionFactory.OpenStatelessSession();
var users = session.Query&amp;lt;User&amp;gt;()
.ToList();
&lt;/code>&lt;/pre>
&lt;p>Här gäller det dock att notera att man inte kan jobba vidare på objektet och spara tillbaka det i sessionen. Det här blir alltså endast en read-onlyvy.&lt;/p>
&lt;p>Även om Stateless-sättet fungerar så är &lt;strong>&lt;a href="http://stackoverflow.com/questions/6666653/asp-net-mvc-json-over-fluent-nhibernate-model">det rekommenderade&lt;/a>&lt;/strong> för att leverera data från server till klient att skapa domänobjekt som man returnerar från Controllern med JSON, så man har full kontroll över vad som skickas över till klienten. Alltså antingen returnera ett anonymt otypat objekt, eller skapa en ny klass som man populerar med de värden vi behöver för klienten.&lt;/p></description></item><item><title>Regex cheatsheet</title><link>https://www.cederlof.net/regex-cheatsheet/</link><pubDate>Fri, 09 Oct 2015 08:44:16 +0000</pubDate><guid>https://www.cederlof.net/regex-cheatsheet/</guid><description>
&lt;p>####Search-replace i Sublime&lt;/p>
&lt;p>Text: &lt;code>County = &amp;quot;03&amp;quot;,&lt;/code>
Ersätt med: &lt;code>&amp;lt;County&amp;gt;03&amp;lt;/County&amp;gt;&lt;/code>&lt;/p>
&lt;p>Search: &lt;code>County = &amp;quot;([0-9]*&amp;quot;),&lt;/code>
Replace: &lt;code>&amp;lt;MasterCounty&amp;gt;\1&amp;lt;/MasterCounty&amp;gt;&lt;/code>&lt;/p>
&lt;hr>
&lt;p>&lt;a href="https://github.com/dmikalova/sublime-cheat-sheets/blob/master/cheat-sheets/Regular%20Expressions.cheatsheet">https://github.com/dmikalova/sublime-cheat-sheets/blob/master/cheat-sheets/Regular%20Expressions.cheatsheet&lt;/a>&lt;/p></description></item><item><title>Chocolatey and Boxstarter</title><link>https://www.cederlof.net/chocolatey-and-boxstarter/</link><pubDate>Wed, 08 Jul 2015 13:20:10 +0000</pubDate><guid>https://www.cederlof.net/chocolatey-and-boxstarter/</guid><description>
&lt;p>Download Boxstarter: &lt;a href="http://boxstarter.org/Learn/SimplePackage">http://boxstarter.org/Learn/SimplePackage&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Install &lt;code>setup.bat&lt;/code> with admin-rights.&lt;/li>
&lt;li>Open up powershell and run &lt;code>BoxstarterShell.bat&lt;/code>.&lt;/li>
&lt;li>Install a boxstarter-script (.ps1) with:
&lt;code>Install-BoxstarterPackage -PackageName C:\bin\boxes\hej.ps1&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Boxstarter script&lt;/p>
&lt;pre>&lt;code># Boxstarter options
$Boxstarter.RebootOk=$true # Allow reboots?
$Boxstarter.NoPassword=$false # Is this a machine with no login password?
$Boxstarter.AutoLogin=$true # Save my password securely and auto-login after a reboot
# Basic setup
Update-ExecutionPolicy Unrestricted
Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrives -EnableShowProtectedOSFiles -EnableShowFileExtensions -EnableShowFullPathInTitleBar
Enable-RemoteDesktop
Disable-InternetExplorerESC
Disable-UAC
Set-TaskbarOptions -Size Small
if (Test-PendingReboot) { Invoke-Reboot }
# Update Windows and reboot if necessary
Install-WindowsUpdate -AcceptEula
if (Test-PendingReboot) { Invoke-Reboot }
# Install Visual Studio 2013 Professional
cinst VisualStudio2013Professional -InstallArguments WebTools -y
if (Test-PendingReboot) { Invoke-Reboot }
cinst DotNet3.5 -y # Not automatically installed with VS 2013. Includes .NET 2.0. Uses Windows Features to install.
if (Test-PendingReboot) { Invoke-Reboot }
# VS extensions
Install-ChocolateyVsixPackage StopOnFirstBuildError http://visualstudiogallery.msdn.microsoft.com/91aaa139-5d3c-43a7-b39f-369196a84fa5/file/44205/3/StopOnFirstBuildError.vsix
# Apps / Tools
choco install chocolatey -y
choco install microsoft-edge -y
choco install googlechrome -y
choco install visualstudiocode -y
# choco install lastpass -y
choco install bitwarden -y
# choco install sublimetext3 -y
# choco install SublimeText3.PackageControl -y
choco install totalcommander -y
choco install 7zip -y
choco install 7zip.install -y
choco install sysinternals -y
choco install autohotkey -y
choco install dropbox -y
# choco install ditto -y
choco install spotify -y
choco install rdmfree -y
choco install git -y
choco install git.install -y
choco install tortoisegit -y
# choco install sourcetree -y
choco install git-fork -y
choco install winscp -y
#choco install skype -y
#choco install windirstat -y
choco install tortoisesvn -y
choco install dropbox -y
choco install javaruntime -y
choco install teamviewer -y
choco install greenshot -y
choco install vlc -y
choco install fiddler4 -y
choco install linqpad4 -y
choco install linqpad4.install -y
choco install firefox -y
choco install nodejs.install -y
choco install soapui -y
choco install slack -y
# choco install crashplan -y
choco install licecap -y
choco install virtualbox -y
choco install powertoys -y
choco install audioswitcher -y
choco install irfanview -y
choco install zoom -y
#cinst Microsoft-Hyper-V-All -source windowsFeatures
cinst IIS-WebServerRole -source windowsfeatures -y
cinst IIS-HttpCompressionDynamic -source windowsfeatures -y
cinst IIS-ManagementScriptingTools -source windowsfeatures -y
cinst IIS-WindowsAuthentication -source windowsfeatures -y
#Install-ChocolateyPinnedTaskBarItem &amp;quot;$($Boxstarter.programFiles86)\Google\Chrome\Application\chrome.exe&amp;quot;
#Install-ChocolateyPinnedTaskBarItem &amp;quot;$($Boxstarter.programFiles86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe&amp;quot;
&lt;/code>&lt;/pre>
&lt;p>Original source: &lt;a href="http://blog.zerosharp.com/provisioning-a-new-development-machine-with-boxstarter/">http://blog.zerosharp.com/provisioning-a-new-development-machine-with-boxstarter/&lt;/a>&lt;/p>
&lt;p>Packages as we speak:&lt;/p>
&lt;pre>&lt;code>Chocolatey v0.10.3
7zip 16.02.0.20160811
7zip.commandline 16.02.0.20160811
7zip.install 16.02.0.20160811
autohotkey.portable 1.1.24.01
beyondcompare 4.1.9.21719
chocolatey 0.10.3
chocolatey-core.extension 1.0.2
cpu-z 1.78.0.20161124
cpu-z.install 1.78.0.20161124
ditto 3.21.50.0
DotNet4.5.1 4.5.1.20140606
dropbox 8.4.19
fiddler4 4.6.2.29442
Firefox 48.0.2
git 2.9.3
git.install 2.9.3
GoogleChrome 52.0.2743.116
greenshot 1.2.8.12
javaruntime 8.0.73
jdk8 8.0.112
lastpass 4.1.2
licecap 1.26.0.20160226
linqpad4 4.57.02
linqpad4.install 4.57.02
mm-choco.extension 0.0.4.1
nodejs.install 6.4.0
OpenSSL.Light 1.1.0.20161111
rdmfree 2.6.4.0
slack 1.0.0
soapui 5.2.1.20160819
SourceTree 1.9.6.1
spotify 1.0.33.106
sublimetext3 3.0.0.3114
SublimeText3.PackageControl 2.0.0.20140915
sysinternals 2016.07.29
teamviewer 11.0.64630
tortoisegit 2.2.0.0
tortoisesvn 1.9.4
totalcommander 8.52.01.20160421
winscp 5.9.1
winscp.install 5.9.1
VisualStudioCode 1.4
vlc 2.2.4
XnView 2.36
&lt;/code>&lt;/pre></description></item><item><title>Node.js, Grunt i Visual Studio 2013</title><link>https://www.cederlof.net/node.js-grunt-i-visual-studio-2013/</link><pubDate>Tue, 16 Jun 2015 15:04:00 +0000</pubDate><guid>https://www.cederlof.net/node.js-grunt-i-visual-studio-2013/</guid><description>
&lt;p>##Bower&lt;/p>
&lt;p>Först behöver du installera Node: &lt;a href="https://nodejs.org/">https://nodejs.org/&lt;/a>&lt;/p>
&lt;p>Sen i Powershell:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>npm install -g bower
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Skapa bower.json-fil med. Lämna allt default utom förslagsvis namn och att inte publicera till det publika bower-repot.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>bower init
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Installera de paket som behövs, för ASP.NET MVC t ex.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>bower install jquery --save
&lt;span class="ln">2&lt;/span>bower install jquery-validation --save
&lt;span class="ln">3&lt;/span>bower install jquery-validation-unobtrusive --save
&lt;span class="ln">4&lt;/span>bower install modernizr --save
&lt;span class="ln">5&lt;/span>bower install bootstrap --save
&lt;span class="ln">6&lt;/span>bower install respond-minmax --save
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Sen kan man avinstallera de NuGetPaket man inte behöver längre och referera in de bower-paket som istället har laddats ner till bower_configuration-katalogen.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>Uninstall-Package Microsoft.jQuery.Unobtrusive.Validation
&lt;span class="ln">2&lt;/span>Uninstall-Package jQuery.Validation
&lt;span class="ln">3&lt;/span>Uninstall-Package Bootstrap
&lt;span class="ln">4&lt;/span>Uninstall-Package jQuery
&lt;span class="ln">5&lt;/span>Uninstall-Package Respond
&lt;span class="ln">6&lt;/span>Uninstall-Package Modernizr
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://nodejs.org/">https://nodejs.org/&lt;/a>&lt;/p>
&lt;p>##Grunt&lt;/p>
&lt;p>Installera Grunt från commandline med npm:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>npm install grunt-cli -g
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>package.json&lt;/strong> som läggs i roten (kan också skapas med &lt;code>npm init&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>{
&lt;span class="ln"> 2&lt;/span> &amp;#34;name&amp;#34;: &amp;#34;projekt-namn&amp;#34;,
&lt;span class="ln"> 3&lt;/span> &amp;#34;version&amp;#34;: &amp;#34;0.1.0&amp;#34;,
&lt;span class="ln"> 4&lt;/span> &amp;#34;description&amp;#34;: &amp;#34;&amp;#34;,
&lt;span class="ln"> 5&lt;/span> &amp;#34;dependencies&amp;#34;: {
&lt;span class="ln"> 6&lt;/span> &amp;#34;grunt&amp;#34;: &amp;#34;^0.4.5&amp;#34;,
&lt;span class="ln"> 7&lt;/span> &amp;#34;grunt-contrib-nodeunit&amp;#34;: &amp;#34;^0.4.1&amp;#34;,
&lt;span class="ln"> 8&lt;/span> &amp;#34;grunt-contrib-jshint&amp;#34;: &amp;#34;^0.10.0&amp;#34;,
&lt;span class="ln"> 9&lt;/span> &amp;#34;grunt-contrib-uglify&amp;#34;: &amp;#34;^0.5.1&amp;#34;
&lt;span class="ln">10&lt;/span> },
&lt;span class="ln">11&lt;/span> &amp;#34;devDependencies&amp;#34;: {
&lt;span class="ln">12&lt;/span> &amp;#34;grunt&amp;#34;: &amp;#34;^0.4.5&amp;#34;
&lt;span class="ln">13&lt;/span> }
&lt;span class="ln">14&lt;/span>}
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>gruntfile.js&lt;/strong> läggs bredvid package.json&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>module.exports = function (grunt) {
&lt;span class="ln">2&lt;/span> // Do grunt-related things in here
&lt;span class="ln">3&lt;/span>};
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Extensions till Visual Studio 2013&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://visualstudiogallery.msdn.microsoft.com/8e1b4368-4afb-467a-bc13-9650572db708">Task Runner Explorer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://visualstudiogallery.msdn.microsoft.com/dcbc5325-79ef-4b72-960e-0a51ee33a0ff">Grunt Launcher&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://visualstudiogallery.msdn.microsoft.com/65748cdb-4087-497e-a394-2e3449c8e61e">Package Intellisense&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>DNX, dnxcore50, .NET on OS X</title><link>https://www.cederlof.net/dnx-dnxcore50-.net-on-os-x/</link><pubDate>Sat, 13 Jun 2015 16:42:05 +0000</pubDate><guid>https://www.cederlof.net/dnx-dnxcore50-.net-on-os-x/</guid><description>
&lt;p>För att installera DNVM med Homebrew, först behövs Homebrew, i Terminalen:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>ruby -e &amp;#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&amp;#34;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Sen ladda ner dnx med Homebrew:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>brew tap aspnet/dnx
&lt;span class="ln">2&lt;/span>brew update
&lt;span class="ln">3&lt;/span>brew install dnvm
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Registrera DNVM-kommandot i bash för sessionen:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>source dnvm.sh
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Eller registrera &lt;code>source dnvm&lt;/code> i bash-profilen:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>cd ~/
&lt;span class="ln">2&lt;/span>touch .bash_profile
&lt;span class="ln">3&lt;/span>open -a TextEdit.app .bash_profile
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Kör med dnvm&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>dnx . run
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Manual: &lt;a href="http://dotnet.readthedocs.org/en/latest/getting-started/installing-core-osx.html">Installing .NET Core on OS X&lt;/a>&lt;/p></description></item><item><title>Terminalen i OS X och .command-filer</title><link>https://www.cederlof.net/terminalen-i-os-x-och-.command-filer/</link><pubDate>Tue, 09 Jun 2015 17:34:00 +0000</pubDate><guid>https://www.cederlof.net/terminalen-i-os-x-och-.command-filer/</guid><description>
&lt;p>Visa nuvarande path&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>pwd
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Skapa en textfil med ändelsen .command:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="ln">1&lt;/span>&lt;span class="cp">#!/bin/sh
&lt;/span>&lt;span class="ln">2&lt;/span>&lt;span class="cp">&lt;/span>
&lt;span class="ln">3&lt;/span>&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;****************************&amp;#34;&lt;/span>
&lt;span class="ln">4&lt;/span>&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;Hej hej&amp;#34;&lt;/span>
&lt;span class="ln">5&lt;/span>&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;****************************&amp;#34;&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Gör en .command-fil körbar&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>chmod -x ./path-to-file
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Hämta resultat från curl i XML och formatera resultatet&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>result=$(curl -X &amp;#34;GET&amp;#34; &amp;#34;https://api.fortnox.se/3/invoices&amp;#34; \
&lt;span class="ln">2&lt;/span> -H &amp;#34;Access-Token: xxx&amp;#34; \
&lt;span class="ln">3&lt;/span> -H &amp;#34;Client-Secret: xxx&amp;#34; \
&lt;span class="ln">4&lt;/span> -H &amp;#34;Content-Type: application/xml&amp;#34; \
&lt;span class="ln">5&lt;/span> -H &amp;#34;Accept: application/xml&amp;#34;)
&lt;span class="ln">6&lt;/span>
&lt;span class="ln">7&lt;/span>echo &amp;#34;$result&amp;#34; | xmllint --format -
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Trace på WCF-tjänst, loggning (SSL- och TLS-fel eller när man saknar loggning)</title><link>https://www.cederlof.net/trace-p%C3%A5-wcf-tj%C3%A4nst-loggning-ssl-och-tls-fel-eller-n%C3%A4r-man-saknar-loggning/</link><pubDate>Wed, 03 Jun 2015 12:46:46 +0000</pubDate><guid>https://www.cederlof.net/trace-p%C3%A5-wcf-tj%C3%A4nst-loggning-ssl-och-tls-fel-eller-n%C3%A4r-man-saknar-loggning/</guid><description>
&lt;p>Man kan lägga en trace på de olika dll:erna som skriver ner dess loggdata. Får man konstiga fel vid kommunikation till eller från WCF-tjänst t ex så kan man ofta här hitta orsaken, när felen inte dyker upp i felloggen från början.&lt;/p>
&lt;p>&lt;strong>Här behövs nog bara loggning på System.Net&lt;/strong>
&lt;em>The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the &lt;serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.&lt;/em>&lt;/p>
&lt;p>Kan läsas med &lt;code>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\SvcTraceViewer&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>&amp;lt;system.diagnostics&amp;gt;
&lt;span class="ln"> 2&lt;/span> &amp;lt;sources&amp;gt;
&lt;span class="ln"> 3&lt;/span> &amp;lt;source name=&amp;#34;System.ServiceModel&amp;#34;
&lt;span class="ln"> 4&lt;/span> switchValue=&amp;#34;Information, ActivityTracing&amp;#34;
&lt;span class="ln"> 5&lt;/span> propagateActivity=&amp;#34;true&amp;#34; &amp;gt;
&lt;span class="ln"> 6&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln"> 7&lt;/span> &amp;lt;add name=&amp;#34;System.Net&amp;#34;/&amp;gt;
&lt;span class="ln"> 8&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln"> 9&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">10&lt;/span> &amp;lt;source name=&amp;#34;System.ServiceModel.MessageLogging&amp;#34;&amp;gt;
&lt;span class="ln">11&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln">12&lt;/span> &amp;lt;add name=&amp;#34;System.Net&amp;#34;/&amp;gt;
&lt;span class="ln">13&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln">14&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">15&lt;/span> &amp;lt;source name=&amp;#34;myUserTraceSource&amp;#34;
&lt;span class="ln">16&lt;/span> switchValue=&amp;#34;Information, ActivityTracing&amp;#34;&amp;gt;
&lt;span class="ln">17&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln">18&lt;/span> &amp;lt;add name=&amp;#34;System.Net&amp;#34;/&amp;gt;
&lt;span class="ln">19&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln">20&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">21&lt;/span> &amp;lt;/sources&amp;gt;
&lt;span class="ln">22&lt;/span> &amp;lt;sharedListeners&amp;gt;
&lt;span class="ln">23&lt;/span> &amp;lt;add
&lt;span class="ln">24&lt;/span> name=&amp;#34;System.Net&amp;#34;
&lt;span class="ln">25&lt;/span> type=&amp;#34;System.Diagnostics.XmlWriterTraceListener&amp;#34;
&lt;span class="ln">26&lt;/span> initializeData=&amp;#34;C:\Temp\System.Net.trace4.log&amp;#34;
&lt;span class="ln">27&lt;/span> /&amp;gt;
&lt;span class="ln">28&lt;/span> &amp;lt;/sharedListeners&amp;gt;
&lt;span class="ln">29&lt;/span>
&lt;span class="ln">30&lt;/span> &amp;lt;trace autoflush=&amp;#34;true&amp;#34; /&amp;gt;
&lt;span class="ln">31&lt;/span> &amp;lt;/system.diagnostics&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Vid fel i kommunikation med extern webbtjänst, t ex &lt;em>Cannot establish secure channel for SSL/TLS with authority. System.ServiceModel.Security.SecurityNegotiationException. Could not create SSL/TLS secure channel.&lt;/em>&lt;/p>
&lt;p>Lägg följande i &lt;code>&amp;lt;configuration&amp;gt;&lt;/code>. OBS: generar a boat-load of data.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>&amp;lt;system.diagnostics&amp;gt;
&lt;span class="ln"> 2&lt;/span> &amp;lt;sources&amp;gt;
&lt;span class="ln"> 3&lt;/span> &amp;lt;source name=&amp;#34;System.Net&amp;#34; tracemode=&amp;#34;includehex&amp;#34;&amp;gt;
&lt;span class="ln"> 4&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln"> 5&lt;/span> &amp;lt;add name=&amp;#34;ExternalSourceTrace&amp;#34;/&amp;gt;
&lt;span class="ln"> 6&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln"> 7&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln"> 8&lt;/span> &amp;lt;source name=&amp;#34;System.Net.Sockets&amp;#34;&amp;gt;
&lt;span class="ln"> 9&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln">10&lt;/span> &amp;lt;add name=&amp;#34;ExternalSourceTrace&amp;#34;/&amp;gt;
&lt;span class="ln">11&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln">12&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">13&lt;/span> &amp;lt;source name=&amp;#34;System.Net.Cache&amp;#34;&amp;gt;
&lt;span class="ln">14&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln">15&lt;/span> &amp;lt;add name=&amp;#34;ExternalSourceTrace&amp;#34;/&amp;gt;
&lt;span class="ln">16&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln">17&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">18&lt;/span> &amp;lt;source name=&amp;#34;System.Net.Security&amp;#34;&amp;gt;
&lt;span class="ln">19&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln">20&lt;/span> &amp;lt;add name=&amp;#34;ExternalSourceTrace&amp;#34;/&amp;gt;
&lt;span class="ln">21&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln">22&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">23&lt;/span> &amp;lt;source name=&amp;#34;System.Security&amp;#34;&amp;gt;
&lt;span class="ln">24&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln">25&lt;/span> &amp;lt;add name=&amp;#34;ExternalSourceTrace&amp;#34;/&amp;gt;
&lt;span class="ln">26&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln">27&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">28&lt;/span> &amp;lt;/sources&amp;gt;
&lt;span class="ln">29&lt;/span> &amp;lt;switches&amp;gt;
&lt;span class="ln">30&lt;/span> &amp;lt;add name=&amp;#34;System.Net&amp;#34; value=&amp;#34;Verbose&amp;#34;/&amp;gt;
&lt;span class="ln">31&lt;/span> &amp;lt;add name=&amp;#34;System.Net.Sockets&amp;#34; value=&amp;#34;Verbose&amp;#34;/&amp;gt;
&lt;span class="ln">32&lt;/span> &amp;lt;add name=&amp;#34;System.Net.Cache&amp;#34; value=&amp;#34;Verbose&amp;#34;/&amp;gt;
&lt;span class="ln">33&lt;/span> &amp;lt;add name=&amp;#34;System.Security&amp;#34; value=&amp;#34;Verbose&amp;#34;/&amp;gt;
&lt;span class="ln">34&lt;/span> &amp;lt;add name=&amp;#34;System.Net.Security&amp;#34; value=&amp;#34;Verbose&amp;#34;/&amp;gt;
&lt;span class="ln">35&lt;/span> &amp;lt;/switches&amp;gt;
&lt;span class="ln">36&lt;/span> &amp;lt;sharedListeners&amp;gt;
&lt;span class="ln">37&lt;/span> &amp;lt;add name=&amp;#34;ExternalSourceTrace&amp;#34;
&lt;span class="ln">38&lt;/span> type=&amp;#34;System.Diagnostics.TextWriterTraceListener&amp;#34;
&lt;span class="ln">39&lt;/span> initializeData=&amp;#34;network.log&amp;#34;
&lt;span class="ln">40&lt;/span> /&amp;gt;
&lt;span class="ln">41&lt;/span> &amp;lt;/sharedListeners&amp;gt;
&lt;span class="ln">42&lt;/span> &amp;lt;trace autoflush=&amp;#34;true&amp;#34;/&amp;gt;
&lt;span class="ln">43&lt;/span> &amp;lt;/system.diagnostics&amp;gt;
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Tekniklunch</title><link>https://www.cederlof.net/tekniklunch/</link><pubDate>Wed, 27 May 2015 19:10:36 +0000</pubDate><guid>https://www.cederlof.net/tekniklunch/</guid><description>
&lt;p>###LINQpad
&lt;a href="http://www.linqpad.net/">http://www.linqpad.net/&lt;/a>
(Notera att för intellisense och autocomplete krävs en licens. Men det går utmärkt att köra med gratisvarianten, även om det är en lite större utmaning.)&lt;/p>
&lt;p>###Sublime Text
&lt;a href="http://www.sublimetext.com/">http://www.sublimetext.com/&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://packagecontrol.io/">Package control&lt;/a> är ett måste.&lt;/p>
&lt;p>Gå till &lt;a href="https://github.com/dmikalova/sublime-cheat-sheets/blob/master/cheat-sheets/Regular%20Expressions.cheatsheet">Regular expression cheat sheet&lt;/a> för oslagbara regexpar.&lt;/p>
&lt;p>#####Rekommenderade paket&lt;/p>
&lt;ul>
&lt;li>Indent XML&lt;/li>
&lt;li>Pretty JSON&lt;/li>
&lt;li>SqlBeautifier&lt;/li>
&lt;li>Compare Side-By-Side&lt;/li>
&lt;li>&lt;a href="http://docs.emmet.io/">Emmet&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/Cacodaimon/GhostText-for-SublimeText">GhostText&lt;/a> (kräver addon till Chrome/Firefox)&lt;/li>
&lt;/ul>
&lt;p>Se även Package controls sida med de &lt;a href="https://packagecontrol.io/browse/popular">populäraste paketen&lt;/a>.&lt;/p></description></item><item><title>GIT cheat sheet</title><link>https://www.cederlof.net/git-cheat-sheet/</link><pubDate>Fri, 22 May 2015 20:27:18 +0000</pubDate><guid>https://www.cederlof.net/git-cheat-sheet/</guid><description>
&lt;p>Byt branch&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git checkout master
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Hämta hem det senaste&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git pull
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Visa status&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git status
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Visa commits&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git log
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Visa vilka remotes vi har uppsatt&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git remote -v
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Lägg till ny remote&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git remote add upstream https://github.com/otheruser/repo.git
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Hämta senaste från upstream (eller annat namn)&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git fetch upstream
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Uppdatera till master och spela upp branchens ändringar ovanpå. Obs, det här ändrar ju historiken, så om man har andra branchar från denna bör även de göras en rebase på.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git rebase upstream/master
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Vid merge-conflicts fixa mergefelet i filen, sen gör&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git add filen-med-conflict
&lt;span class="ln">2&lt;/span>git rebase --continue
&lt;/code>&lt;/pre>&lt;/div>&lt;p>VARNING FÖR NEDAN, tar bort filer...
Ta tillbaka sånt som inte ännu är pushat&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git reset --hard HEAD~1
&lt;span class="ln">2&lt;/span>git reset --hard &amp;lt;sha-hashen&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Om det är pushat&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>git push origin HEAD --force
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Run Performance Monitor remotely</title><link>https://www.cederlof.net/run-performance-monitor-remotely/</link><pubDate>Tue, 12 May 2015 17:47:51 +0000</pubDate><guid>https://www.cederlof.net/run-performance-monitor-remotely/</guid><description>
&lt;ul>
&lt;li>Add Firewall rule Performance Logs and Alerts from the predefined rule list.&lt;/li>
&lt;li>From client, run the Performance Monitor as the remote user
Eg: &lt;code>runas /netonly /user:remote_machine\username &amp;quot;mmc perfmon.msc&amp;quot;&lt;/code>&lt;/li>
&lt;li>Add the user connecting to user groups &amp;quot;Performance Log users&amp;quot; and/or &amp;quot;Performance Monitor Users&amp;quot;.&lt;/li>
&lt;/ul>
&lt;p>In perfmon, don't directly connect to remote computer, go to add new performance counter and type in the ip/host in &amp;quot;Select counters from computer&amp;quot;.&lt;/p>
&lt;p>Tip: Run first mmc (start it with the user as above) and Add snapin-module. Then you are able to Save as... to save the counter-setup.&lt;/p></description></item><item><title>Code First Db Initializer and config transforms</title><link>https://www.cederlof.net/code-first-db-initializer-and-config-transforms/</link><pubDate>Fri, 03 Oct 2014 10:43:50 +0000</pubDate><guid>https://www.cederlof.net/code-first-db-initializer-and-config-transforms/</guid><description>
&lt;p>I Web.Config&lt;/p>
&lt;pre>&lt;code>&amp;lt;entityFramework&amp;gt;
&amp;lt;contexts&amp;gt;
&amp;lt;context type=&amp;quot;Base.DataAccess.DbContext, Base.DataAccess&amp;quot;&amp;gt;
&amp;lt;databaseInitializer type=&amp;quot;System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Base.DataAccess.DbContext, Base.DataAccess], [Base.DataAccess.Migrations.Configuration, Base.DataAccess]], EntityFramework&amp;quot; /&amp;gt;
&amp;lt;/context&amp;gt;
&amp;lt;/contexts&amp;gt;
&amp;lt;/entityFramework&amp;gt;
&lt;/code>&lt;/pre>
&lt;p>I config-transform&lt;/p>
&lt;pre>&lt;code>&amp;lt;entityFramework&amp;gt;
&amp;lt;contexts&amp;gt;
&amp;lt;context type=&amp;quot;Base.DataAccess.DbContext, Base.DataAccess&amp;quot; disableDatabaseInitialization=&amp;quot;true&amp;quot; xdt:Locator=&amp;quot;Match(type)&amp;quot; xdt:Transform=&amp;quot;Replace&amp;quot; /&amp;gt;
&amp;lt;/contexts&amp;gt;
&amp;lt;/entityFramework&amp;gt;&lt;/code>&lt;/pre></description></item><item><title>Uppgradera från ASP.NET MVC3 till MVC4</title><link>https://www.cederlof.net/uppgradera-fr%C3%A5n-asp.net-mvc3-till-mvc4/</link><pubDate>Mon, 12 May 2014 12:07:00 +0000</pubDate><guid>https://www.cederlof.net/uppgradera-fr%C3%A5n-asp.net-mvc3-till-mvc4/</guid><description>
&lt;p>Kör i Package Manager Console:&lt;/p>
&lt;pre>&lt;code>PM&amp;gt; Install-Package Microsoft.AspNet.Mvc -Version 4.0.30506
&lt;/code>&lt;/pre>
&lt;p>Ersätt följande i Web.Config, så att de nya versionsnumren kommer med&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>&amp;lt;add assembly=&amp;#34;System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;#34; /&amp;gt;
&lt;span class="ln">2&lt;/span>&amp;lt;add assembly=&amp;#34;System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;#34; /&amp;gt;
&lt;span class="ln">3&lt;/span>&amp;lt;add assembly=&amp;#34;System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;#34; /&amp;gt;
&lt;span class="ln">4&lt;/span>&amp;lt;add assembly=&amp;#34;System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;#34; /&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Lägg till/uppdatera följande i appSettings i Web.Config&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>&amp;lt;appSettings&amp;gt;
&lt;span class="ln">2&lt;/span> &amp;lt;add key=&amp;#34;webpages:Version&amp;#34; value=&amp;#34;2.0.0.0&amp;#34; /&amp;gt;
&lt;span class="ln">3&lt;/span> &amp;lt;add key=&amp;#34;PreserveLoginUrl&amp;#34; value=&amp;#34;true&amp;#34; /&amp;gt;
&lt;span class="ln">4&lt;/span>&amp;lt;/appSettings&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>I alla Web.Config som ligger på andra håll i projeketet (t ex i Views/) så ersätt på alla ställen (lätt att missa något) så de nya versionsnumren kommer med för följande:&lt;/p>
&lt;pre>&lt;code>System.Web.Mvc, Version=4.0.0.0
System.Web.WebPages.Razor, Version=2.0.0.0.
&lt;/code>&lt;/pre>
&lt;p>Unload:a projektfilen och välj Edit. I elementet ProjectTypeGuids ersätt: {E53F8FEA-EAE0-44A6-8774-FFD645390401} med {E3E379DF-F4C6-4180-9B81-6769533ABE47}.&lt;/p>
&lt;p>Reloada projektet, och jag fick följande fel:&lt;/p>
&lt;pre>&lt;code>error : Specified condition &amp;quot;$(PackageAsSingleFile)&amp;quot; evaluates to &amp;quot;&amp;quot; instead of a boolean. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets
&lt;/code>&lt;/pre>
&lt;p>Lösning, starta om Visual Studio...&lt;/p>
&lt;p>Officiell dokumentation: &lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806">http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806&lt;/a>&lt;/p></description></item><item><title>XML to and from an object (Object to XML)</title><link>https://www.cederlof.net/xml-to-and-from-an-object-object-to-xml/</link><pubDate>Mon, 13 Jan 2014 13:52:00 +0000</pubDate><guid>https://www.cederlof.net/xml-to-and-from-an-object-object-to-xml/</guid><description>
&lt;p>Serialize an object to xml.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>var docs = new MyObject();
&lt;span class="ln">2&lt;/span>
&lt;span class="ln">3&lt;/span>var serializer = new XmlSerializer(typeof(MyObject));
&lt;span class="ln">4&lt;/span>var stringWriter = new StringWriter();
&lt;span class="ln">5&lt;/span>var writer = XmlWriter.Create(stringWriter);
&lt;span class="ln">6&lt;/span>serializer.Serialize(writer, docs);
&lt;span class="ln">7&lt;/span>var xml = stringWriter.ToString(); // Your xml
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Deserialize object from xml&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>protected T FromXml&amp;lt;T&amp;gt;(String xml)
&lt;span class="ln"> 2&lt;/span>{
&lt;span class="ln"> 3&lt;/span> T returnedXmlClass = default(T);
&lt;span class="ln"> 4&lt;/span>
&lt;span class="ln"> 5&lt;/span> try
&lt;span class="ln"> 6&lt;/span> {
&lt;span class="ln"> 7&lt;/span> using (TextReader reader = new StringReader(xml))
&lt;span class="ln"> 8&lt;/span> {
&lt;span class="ln"> 9&lt;/span> try
&lt;span class="ln">10&lt;/span> {
&lt;span class="ln">11&lt;/span> returnedXmlClass =
&lt;span class="ln">12&lt;/span> (T)new XmlSerializer(typeof(T)).Deserialize(reader);
&lt;span class="ln">13&lt;/span> }
&lt;span class="ln">14&lt;/span> catch (InvalidOperationException)
&lt;span class="ln">15&lt;/span> {
&lt;span class="ln">16&lt;/span> // String passed is not XML, simply return defaultXmlClass
&lt;span class="ln">17&lt;/span> }
&lt;span class="ln">18&lt;/span> }
&lt;span class="ln">19&lt;/span> }
&lt;span class="ln">20&lt;/span> catch (Exception ex)
&lt;span class="ln">21&lt;/span> {
&lt;span class="ln">22&lt;/span> }
&lt;span class="ln">23&lt;/span>
&lt;span class="ln">24&lt;/span> return returnedXmlClass ;
&lt;span class="ln">25&lt;/span>}
&lt;span class="ln">26&lt;/span>
&lt;span class="ln">27&lt;/span>//Call it using this code:
&lt;span class="ln">28&lt;/span>YourStrongTypedEntity entity = FromXml&amp;lt;YourStrongTypedEntity&amp;gt;(YourMsgString);
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Get XML from file&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>var doc = new XmlDocument();
&lt;span class="ln">2&lt;/span>doc.Load(@&amp;#34;c:\temp\test.xml&amp;#34;);
&lt;span class="ln">3&lt;/span>string xmlcontents = doc.InnerXml;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>eller som XDocument för att kunna köra LINQ mot den&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>var doc = XDocument.Load(@&amp;#34;c:\temp\test.xml&amp;#34;);
&lt;span class="ln">2&lt;/span>var users = from user in doc.Descendants(&amp;#34;Users&amp;#34;).First().Descendants(&amp;#34;User&amp;#34;)
&lt;span class="ln">3&lt;/span> select user;
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>SoapUI scripts</title><link>https://www.cederlof.net/soapui-scripts/</link><pubDate>Tue, 07 Jan 2014 14:53:00 +0000</pubDate><guid>https://www.cederlof.net/soapui-scripts/</guid><description>
&lt;p>###Get request data for use in script&lt;/p>
&lt;p>(Note the use of XPATH)&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> def holder = new com.eviware.soapui.support.XmlHolder( mockRequest.requestContent )
&lt;span class="ln">2&lt;/span> def personalNumber = holder[&amp;#34;//rootNode/subNode/text()&amp;#34;]
&lt;span class="ln">3&lt;/span> requestContext.myValue = personalNumber
&lt;/code>&lt;/pre>&lt;/div>&lt;p>###Return above as response&lt;/p>
&lt;pre>&lt;code>${myValue}
&lt;/code>&lt;/pre>
&lt;p>###Read xml from file and return it as response&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> // get and parse XML file content
&lt;span class="ln">2&lt;/span> path = &amp;#34;C:\\Documents\\schemas\\TestData\\lab_DEMO.xml&amp;#34;;
&lt;span class="ln">3&lt;/span> def doc = new XmlSlurper().parse(path)
&lt;span class="ln">4&lt;/span>
&lt;span class="ln">5&lt;/span> // generate and return XML string as service response
&lt;span class="ln">6&lt;/span> import groovy.xml.StreamingMarkupBuilder
&lt;span class="ln">7&lt;/span> def result = new StreamingMarkupBuilder().bind{ mkp.yield doc }.toString()
&lt;span class="ln">8&lt;/span> mockResponse.setResponseContent(result)
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Check if JavaScript variable is undefined</title><link>https://www.cederlof.net/check-if-javascript-variable-is-undefined/</link><pubDate>Mon, 09 Dec 2013 09:31:00 +0000</pubDate><guid>https://www.cederlof.net/check-if-javascript-variable-is-undefined/</guid><description>
&lt;p>Well, first of all, in JavaScript null is an object. There's another
value for things that don't exist, undefined. The DOM returns null for
almost all cases where it fails to find some structure in the
document, but in JavaScript itself undefined is the value used.&lt;/p>
&lt;p>Second, no, they are not directly equivalent.
If you really want to check for null, do:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> if (null == yourvar) // with casting
&lt;span class="ln">2&lt;/span> if (null === yourvar) // without casting
&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you want to check if a variable exist&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> if (typeof yourvar != &amp;#39;undefined&amp;#39;) // Any scope
&lt;span class="ln">2&lt;/span> if (window[&amp;#39;varname&amp;#39;] != undefined) // Global scope
&lt;span class="ln">3&lt;/span> if (window[&amp;#39;varname&amp;#39;] != void 0) // Old browsers
&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you know the variable exists but don't know if there's any value
stored in it:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> if (undefined != yourvar)
&lt;span class="ln">2&lt;/span> if (void 0 != yourvar) // for older browsers
&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you want to know if a member exists independent of whether it has
been assigned a value or not:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> if (&amp;#39;membername&amp;#39; in object) // With inheritance
&lt;span class="ln">2&lt;/span> if (object.hasOwnProperty(&amp;#39;membername&amp;#39;)) // Without inheritance
&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you want to to know whether a variable autocasts to true:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> if(variablename)
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Source: &lt;a href="http://lists.evolt.org/archive/Week-of-Mon-20050214/099714.html">http://lists.evolt.org/archive/Week-of-Mon-20050214/099714.html&lt;/a>&lt;/p></description></item><item><title>Stored procedure SP - backup all databases</title><link>https://www.cederlof.net/stored-procedure-sp-backup-all-databases/</link><pubDate>Mon, 04 Nov 2013 13:34:00 +0000</pubDate><guid>https://www.cederlof.net/stored-procedure-sp-backup-all-databases/</guid><description>
&lt;p>Stored procedure for backuping all databases in a MSSQL-database.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>
&lt;span class="ln"> 2&lt;/span>DECLARE @name VARCHAR(50) -- database name
&lt;span class="ln"> 3&lt;/span>DECLARE @path VARCHAR(256) -- path for backup files
&lt;span class="ln"> 4&lt;/span>DECLARE @fileName VARCHAR(256) -- filename for backup
&lt;span class="ln"> 5&lt;/span>DECLARE @fileDate VARCHAR(20) -- used for file name
&lt;span class="ln"> 6&lt;/span>
&lt;span class="ln"> 7&lt;/span>SET @path = &amp;#39;C:\Backup\&amp;#39;;
&lt;span class="ln"> 8&lt;/span>
&lt;span class="ln"> 9&lt;/span>SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
&lt;span class="ln">10&lt;/span>
&lt;span class="ln">11&lt;/span>DECLARE db_cursor CURSOR FOR
&lt;span class="ln">12&lt;/span>SELECT name
&lt;span class="ln">13&lt;/span>FROM master.dbo.sysdatabases
&lt;span class="ln">14&lt;/span>WHERE name NOT IN (&amp;#39;master&amp;#39;,&amp;#39;model&amp;#39;,&amp;#39;msdb&amp;#39;,&amp;#39;tempdb&amp;#39;)
&lt;span class="ln">15&lt;/span>
&lt;span class="ln">16&lt;/span>OPEN db_cursor
&lt;span class="ln">17&lt;/span>FETCH NEXT FROM db_cursor INTO @name
&lt;span class="ln">18&lt;/span>WHILE @@FETCH_STATUS = 0
&lt;span class="ln">19&lt;/span>BEGIN
&lt;span class="ln">20&lt;/span>SET @fileName = @path + @name + &amp;#39;_&amp;#39; + @fileDate + &amp;#39;.bak&amp;#39;
&lt;span class="ln">21&lt;/span>BACKUP DATABASE @name TO DISK = @fileName
&lt;span class="ln">22&lt;/span>FETCH NEXT FROM db_cursor INTO @name
&lt;span class="ln">23&lt;/span>END
&lt;span class="ln">24&lt;/span>CLOSE db_cursor
&lt;span class="ln">25&lt;/span>DEALLOCATE db_cursor
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Låt en "Alla"-checkbox styra och styras av en checkboxlista</title><link>https://www.cederlof.net/l%C3%A5t-en-alla-checkbox-styra-och-styras-av-en-checkboxlista/</link><pubDate>Fri, 13 Sep 2013 09:56:00 +0000</pubDate><guid>https://www.cederlof.net/l%C3%A5t-en-alla-checkbox-styra-och-styras-av-en-checkboxlista/</guid><description>
&lt;p>Javascript&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>var checkBoxContainer = $(&amp;#34;#container&amp;#34;);
&lt;span class="ln"> 2&lt;/span>var checkboxValueId = valueOfClickedCheckbox;
&lt;span class="ln"> 3&lt;/span>var checkBox = checkBoxContainer.find(&amp;#34;input[type=checkbox][value=&amp;#34; + checkboxValueId + &amp;#34;]&amp;#34;);
&lt;span class="ln"> 4&lt;/span>var isChecked = checkBox.is(&amp;#34;:checked&amp;#34;);
&lt;span class="ln"> 5&lt;/span>
&lt;span class="ln"> 6&lt;/span>if (checkboxValueId == 0) {
&lt;span class="ln"> 7&lt;/span> if (isChecked)
&lt;span class="ln"> 8&lt;/span> checkBoxContainer.find(&amp;#34;input[type=checkbox][value!=&amp;#34; + checkboxValueId + &amp;#34;]&amp;#34;).attr(&amp;#34;checked&amp;#34;, &amp;#34;checked&amp;#34;);
&lt;span class="ln"> 9&lt;/span> else
&lt;span class="ln">10&lt;/span> checkBoxContainer.find(&amp;#34;input[type=checkbox][value!=&amp;#34; + checkboxValueId + &amp;#34;]&amp;#34;).removeAttr(&amp;#34;checked&amp;#34;);
&lt;span class="ln">11&lt;/span> } else {
&lt;span class="ln">12&lt;/span> if (!isChecked)
&lt;span class="ln">13&lt;/span> checkBoxContainer.find(&amp;#34;input[type=checkbox][value=0]&amp;#34;).removeAttr(&amp;#34;checked&amp;#34;);
&lt;span class="ln">14&lt;/span> else {
&lt;span class="ln">15&lt;/span> if (checkBoxContainer.find(&amp;#34;input[type=checkbox][value!=0]&amp;#34;).not(&amp;#34;:checked&amp;#34;).length &amp;lt; 1)
&lt;span class="ln">16&lt;/span> checkBoxContainer.find(&amp;#34;input[type=checkbox][value=0]&amp;#34;).attr(&amp;#34;checked&amp;#34;, &amp;#34;checked&amp;#34;);
&lt;span class="ln">17&lt;/span> }
&lt;span class="ln">18&lt;/span>}
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Konstiga felmeddelanden</title><link>https://www.cederlof.net/konstiga-felmeddelanden/</link><pubDate>Wed, 11 Sep 2013 10:00:00 +0000</pubDate><guid>https://www.cederlof.net/konstiga-felmeddelanden/</guid><description>
&lt;p>##TFS Build Service försöker bygga och publicera en solution till IIS. Får följande felmeddelande:&lt;/p>
&lt;pre>&lt;code>Handle Test Run Exception
TF10127: The path does not include a source control item. Type or select a different path.
&lt;/code>&lt;/pre>
&lt;p>Lösning: Ett test-projekt var tillagt i solution, som var ibockat att byggas för den här konfigurationen. Testprojekten ska inte byggas utanför dev-miljön.&lt;/p></description></item><item><title>Att använda Team Foundation Service från OSX med Git</title><link>https://www.cederlof.net/att-anv%C3%A4nda-team-foundation-service-fr%C3%A5n-osx-med-git/</link><pubDate>Tue, 10 Sep 2013 06:19:00 +0000</pubDate><guid>https://www.cederlof.net/att-anv%C3%A4nda-team-foundation-service-fr%C3%A5n-osx-med-git/</guid><description>
&lt;p>(Första gången:) Ladda ner en påbörjad repo till datorn:&lt;/p>
&lt;pre>&lt;code>$ git clone https://xxxxxx.visualstudio.com/DefaultCollection/_git/MyProject ~/MyProject
&lt;/code>&lt;/pre>
&lt;p>Få ner de senaste uppdateringarna (ställ dig i projektets katalog först):&lt;/p>
&lt;pre>&lt;code>$ git pull
&lt;/code>&lt;/pre>
&lt;p>Gör ändring i koden och sen commit till ditt lokala repo:&lt;/p>
&lt;pre>&lt;code>$ git commit -a
&lt;/code>&lt;/pre>
&lt;p>Här kommer Vim upp, skriv in beskrivning av incheckning och använd kommando för att spara och avsluta (write + quit):&lt;/p>
&lt;pre>&lt;code>&amp;lt;Esc&amp;gt; :wq
&lt;/code>&lt;/pre>
&lt;p>Skicka upp det till TFS med:&lt;/p>
&lt;pre>&lt;code>$ git push&lt;/code>&lt;/pre></description></item><item><title>Bra att ha till Visual Studio</title><link>https://www.cederlof.net/bra-att-ha-till-visual-studio/</link><pubDate>Tue, 03 Sep 2013 05:43:00 +0000</pubDate><guid>https://www.cederlof.net/bra-att-ha-till-visual-studio/</guid><description>
&lt;p>###&lt;a href="http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6">Web Essentials 2012&lt;/a>###
Här släpps det som senare kan komma in i Visual Studio. Bra för Less, JavaScript, HTML osv.&lt;/p>
&lt;p>###&lt;a href="http://visualstudiogallery.msdn.microsoft.com/b1ef7eb2-e084-4cb8-9bc7-06c3bad9148f">TFS 2012 Power Tools&lt;/a>###
För att komma åt TFS:en direkt från Utforskaren (utan att behöva gå via Visual Studio)&lt;/p>
&lt;p>###&lt;a href="http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5">SlowCheetah - XML Transforms&lt;/a>###
För att förhandsgranska Web.Config-transforms.&lt;/p>
&lt;p>###&lt;a href="http://snippetdesigner.codeplex.com/">Snippet Designer&lt;/a>
För att skapa och redigera code-snippets&lt;/p></description></item><item><title>Run batch file</title><link>https://www.cederlof.net/run-batch-file/</link><pubDate>Tue, 20 Aug 2013 23:24:00 +0000</pubDate><guid>https://www.cederlof.net/run-batch-file/</guid><description>
&lt;p>Run OpenCover test coverage, and produce report with Report Generator&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span> set &amp;#34;path1=C:\Builds\1\JPN\RunTests\Binaries\Test1.dll&amp;#34;
&lt;span class="ln"> 2&lt;/span> set &amp;#34;path2=C:\Builds\1\JPN\RunTests\Binaries\Test2.dll&amp;#34;
&lt;span class="ln"> 3&lt;/span> set &amp;#34;targetargs=-targetargs:&amp;#34;/testcontainer:\&amp;#34;%path1%\&amp;#34; /testcontainer:\&amp;#34;%path2%\&amp;#34;&amp;#34;&amp;#34;
&lt;span class="ln"> 4&lt;/span>
&lt;span class="ln"> 5&lt;/span> REM do code review
&lt;span class="ln"> 6&lt;/span> &amp;#34;C:\Builds\OpenCover\OpenCover.Console.exe&amp;#34; -target:&amp;#34;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe&amp;#34; %targetargs% -output:&amp;#34;C:\Builds\Code coverage\JPN\Test-coverage.xml&amp;#34; -filter:+[*]* -register:user -targetdir:C:\Temp\CodeCoverageTestResults\ &amp;gt; C:\Temp\Log1OpenCover.txt
&lt;span class="ln"> 7&lt;/span>
&lt;span class="ln"> 8&lt;/span> ECHO &amp;#34;C:\Builds\OpenCover\OpenCover.Console.exe&amp;#34; -target:&amp;#34;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe&amp;#34; %targetargs% -output:&amp;#34;C:\Builds\Code coverage\JPN\Test-coverage.xml&amp;#34; -filter:+[*]* -register:user &amp;gt; C:\Temp\Erik4.txt
&lt;span class="ln"> 9&lt;/span>
&lt;span class="ln">10&lt;/span>
&lt;span class="ln">11&lt;/span> set SAVESTAMP=%DATE:/=-%_%TIME::=-%
&lt;span class="ln">12&lt;/span> set SAVESTAMP=%SAVESTAMP:~0,-3%
&lt;span class="ln">13&lt;/span>
&lt;span class="ln">14&lt;/span>
&lt;span class="ln">15&lt;/span> REM generate report with date
&lt;span class="ln">16&lt;/span> &amp;#34;C:\Builds\Report generator\ReportGenerator.exe&amp;#34; -reports:&amp;#34;C:\Builds\Code coverage\JPN\Test-coverage.xml&amp;#34; -reporttypes:Html -targetdir:&amp;#34;C:\Builds\Code coverage\JPN\%SAVESTAMP%_Report&amp;#34; &amp;gt; C:\Temp\Log1ReportGenerator.txt
&lt;span class="ln">17&lt;/span>
&lt;span class="ln">18&lt;/span> ECHO &amp;#34;C:\Builds\Report generator\ReportGenerator.exe&amp;#34; -reports:&amp;#34;C:\Builds\Code coverage\JPN\Test-coverage.xml&amp;#34; -reporttypes:Html -targetdir:&amp;#34;C:\Builds\Code coverage\JPN\%SAVESTAMP%_Report&amp;#34; &amp;gt; C:\Temp\Erik5.txt
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Publicera från TFS till IIS</title><link>https://www.cederlof.net/publicera-fr%C3%A5n-tfs-till-iis/</link><pubDate>Mon, 19 Aug 2013 10:58:00 +0000</pubDate><guid>https://www.cederlof.net/publicera-fr%C3%A5n-tfs-till-iis/</guid><description>
&lt;p>&lt;strong>Edit build definition&lt;/strong>&lt;/p>
&lt;p>&lt;em>Process -&amp;gt; Items to Build&lt;/em>&lt;/p>
&lt;p>Välj solutionfilen, samt konfigurationen du vill bygga (så att det blir rätt web.config). Viktigt att det blir rättstavat, case sensitive. Fyll i om ditt värde inte finns.&lt;/p>
&lt;p>&lt;em>Under Process -&amp;gt; Advanced -&amp;gt; MSBuild Arguments&lt;/em>&lt;/p>
&lt;pre>&lt;code>/p:CreatePackageOnPublish=true /p:DeployOnBuild=true /p:AllowUntrustedCertificate=True
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>Redigera projektfilerna du vill publicera&lt;/strong>&lt;/p>
&lt;p>Högerklicka på projektet i solution explorer, välj Unload project. Högerklicka igen och välj Edit file.
Under första &lt;PropertyGroup> så anges default-värden för alla konfigurationer. Lägg till:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> &amp;lt;DeployOnBuild&amp;gt;False&amp;lt;/DeployOnBuild&amp;gt;
&lt;span class="ln">2&lt;/span> &amp;lt;DeployTarget&amp;gt;MsDeployPublish&amp;lt;/DeployTarget&amp;gt;
&lt;span class="ln">3&lt;/span> &amp;lt;CreatePackageOnPublish&amp;gt;True&amp;lt;/CreatePackageOnPublish&amp;gt;
&lt;span class="ln">4&lt;/span> &amp;lt;MSDeployPublishMethod&amp;gt;WMSVC&amp;lt;/MSDeployPublishMethod&amp;gt;
&lt;span class="ln">5&lt;/span> &amp;lt;UserName&amp;gt;user&amp;lt;/UserName&amp;gt;
&lt;span class="ln">6&lt;/span> &amp;lt;Password&amp;gt;pw&amp;lt;/Password&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Sedan under &lt;PropertyGroup> för konfigurationen du vill publicera:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>&amp;lt;DeployOnBuild&amp;gt;True&amp;lt;/DeployOnBuild&amp;gt;
&lt;span class="ln">2&lt;/span>&amp;lt;MSDeployServiceUrl&amp;gt;https://server:8172/msdeploy.axd&amp;lt;/MSDeployServiceUrl&amp;gt;
&lt;span class="ln">3&lt;/span>&amp;lt;DeployIisAppPath&amp;gt;Default Web Site/MySite&amp;lt;/DeployIisAppPath&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;em>Glöm inte checka in projektfilen innan du skapar nytt bygge.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Kontrollera på byggservern&lt;/strong>&lt;/p>
&lt;p>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0 måste innehålla katalogerna Web och WebApplications. I annat fall kan du ta dem från din maskin.&lt;/p>
&lt;p>&lt;strong>Installera Web Deploy och Kontrollera på target-servern&lt;/strong>&lt;/p>
&lt;p>Öppna IIS Manager, markera servern se att Management Service finns under Management, och i den så ska det vara enablat (om det är en remote-server) och startat.&lt;/p>
&lt;p>Öppna Web Platform installer sök på recommended och installera recommended &lt;em>någonting&lt;/em> for Hosting &lt;em>någonting&lt;/em>.&lt;/p>
&lt;p>Avsluta med att endast installer Web Deploy 3.5 for Hosting Services (3.6 verkar inte fungera).&lt;/p>
&lt;p>&lt;strong>IIS Manager users&lt;/strong>&lt;/p>
&lt;p>Om man vill publicera med en IIS Manager user (och inte ett datorkonto) så skapar man en användare, och ger den access till siten genom att högerklicka på den i vänsterlistan och väljer Deploy-&amp;gt;Configure - då ska den får rätt läsrättigheter till katalogen etc. Sen när man publicerar så ska man göra det till handlern (axd-filen), t ex: &lt;code>https://server/msdeploy.axd?Site=Default%20Web%20Site&lt;/code>&lt;/p>
&lt;p>När man publicerar med ett användarkonto kan man publicera till servernamnet endast.&lt;/p>
&lt;p>&lt;strong>Vid 404 Not found ERROR___DESTINATION___NOT__REACHABLE&lt;/strong>&lt;/p>
&lt;p>Om axd-filen är nåbar i webbläsaren (kolla med F12-tools) men den inte hittar siten, så: Web Deploy måste installeras efter deployment manager, så installera om Web Deploy för att vara säker på att den kickar igång.&lt;/p>
&lt;p>&lt;strong>Om du inte vill publicera till IIS, utan skapa ett web deploy zip-paket&lt;/strong>&lt;/p>
&lt;p>Här räcker det med att ange följande i MSBuild Arguments i Edit Build Definition. Har man en speciell parameterfil för just detta bygge så ange: ProjectParametersXMLFile (relativt till roten i webprojektet) annars läser den från defaultfilen parameters.xml i roten på webprojektet - om den finns.&lt;/p>
&lt;pre>&lt;code>/p:CreatePackageOnPublish=true /p:DeployOnBuild=true /p:DeployTarget=Package /p:ProjectParametersXMLFile=parameters_release.xml
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>Missing or Invalid property value for $(MsDeployServiceUrl)&lt;/strong>&lt;/p>
&lt;p>Ett eventuellt felmeddelande man kan stöta på vid bygge är:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="ln">1&lt;/span>&lt;span class="nx">Web&lt;/span> &lt;span class="nx">Deploy&lt;/span> &lt;span class="nx">publish&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="kn">package&lt;/span> &lt;span class="nx">validating&lt;/span> &lt;span class="kt">error&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nx">Missing&lt;/span> &lt;span class="nx">or&lt;/span> &lt;span class="nx">Invalid&lt;/span> &lt;span class="nx">property&lt;/span> &lt;span class="nx">value&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="err">$&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">MsDeployServiceUrl&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Och här behöver man se i Configuration Manager (dropdownen i Visual Studio där man väljer configuration som ska användas) att alla applikationer som ska byggas är inställd på rätt configuration som pekas på i projektfilen.&lt;/p></description></item><item><title>Debugga .NET Web-service referenser bättre</title><link>https://www.cederlof.net/debugga-.net-web-service-referenser-b%C3%A4ttre/</link><pubDate>Sat, 15 Jun 2013 12:05:00 +0000</pubDate><guid>https://www.cederlof.net/debugga-.net-web-service-referenser-b%C3%A4ttre/</guid><description>
&lt;p>Date: 2013-06-15 Title: Debugga .NET Web-service referenser bättre&lt;/p>
&lt;p>För att få ut rå-xml som kommuniceras till och från en service-referens i ett .NET-projekt, lägg följande snutt i Web.config i configuration-elementet.&lt;/p>
&lt;p>Om du får problem, se till att du har skrivrättigheter för användaren som kör appen (App-poolen i IIS) till katalogen som anges i TraceFile:s initializeData.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span>&amp;lt;system.diagnostics&amp;gt;
&lt;span class="ln"> 2&lt;/span> &amp;lt;trace autoflush=&amp;#34;true&amp;#34;/&amp;gt;
&lt;span class="ln"> 3&lt;/span> &amp;lt;sources&amp;gt;
&lt;span class="ln"> 4&lt;/span> &amp;lt;source name=&amp;#34;System.Net&amp;#34; maxdatasize=&amp;#34;1024&amp;#34;&amp;gt;
&lt;span class="ln"> 5&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln"> 6&lt;/span> &amp;lt;add name=&amp;#34;TraceFile&amp;#34;/&amp;gt;
&lt;span class="ln"> 7&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln"> 8&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln"> 9&lt;/span> &amp;lt;source name=&amp;#34;System.Net.Sockets&amp;#34; maxdatasize=&amp;#34;1024&amp;#34;&amp;gt;
&lt;span class="ln">10&lt;/span> &amp;lt;listeners&amp;gt;
&lt;span class="ln">11&lt;/span> &amp;lt;add name=&amp;#34;TraceFile&amp;#34;/&amp;gt;
&lt;span class="ln">12&lt;/span> &amp;lt;/listeners&amp;gt;
&lt;span class="ln">13&lt;/span> &amp;lt;/source&amp;gt;
&lt;span class="ln">14&lt;/span> &amp;lt;/sources&amp;gt;
&lt;span class="ln">15&lt;/span> &amp;lt;sharedListeners&amp;gt;
&lt;span class="ln">16&lt;/span> &amp;lt;add name=&amp;#34;TraceFile&amp;#34; type=&amp;#34;System.Diagnostics.TextWriterTraceListener&amp;#34;
&lt;span class="ln">17&lt;/span> initializeData=&amp;#34;c:\temp\trace.log&amp;#34;/&amp;gt;
&lt;span class="ln">18&lt;/span> &amp;lt;/sharedListeners&amp;gt;
&lt;span class="ln">19&lt;/span> &amp;lt;switches&amp;gt;
&lt;span class="ln">20&lt;/span> &amp;lt;add name=&amp;#34;System.Net&amp;#34; value=&amp;#34;Verbose&amp;#34;/&amp;gt;
&lt;span class="ln">21&lt;/span> &amp;lt;add name=&amp;#34;System.Net.Sockets&amp;#34; value=&amp;#34;Verbose&amp;#34;/&amp;gt;
&lt;span class="ln">22&lt;/span> &amp;lt;/switches&amp;gt;
&lt;span class="ln">23&lt;/span>&amp;lt;/system.diagnostics&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Tags: xml, .net, webservice, web.config&lt;/p></description></item><item><title>Färger</title><link>https://www.cederlof.net/f%C3%A4rger/</link><pubDate>Wed, 12 Jun 2013 23:27:00 +0000</pubDate><guid>https://www.cederlof.net/f%C3%A4rger/</guid><description>
&lt;p>Sida för att ta fram färgskalor baserat på en grundfärg: &lt;a href="http://colorschemedesigner.com/">http://colorschemedesigner.com/&lt;/a>&lt;/p>
&lt;p>Färgskaleinspiration: &lt;a href="http://www.colourlovers.com/">http://www.colourlovers.com/&lt;/a>&lt;/p>
&lt;p>Color-picker för Windows: &lt;a href="http://www.colorschemer.com/colorpix_info.php">http://www.colorschemer.com/colorpix_info.php&lt;/a>&lt;/p>
&lt;p>CSS-Gradient generator för alla webbläsare: &lt;a href="http://www.colorzilla.com/gradient-editor/">http://www.colorzilla.com/gradient-editor/&lt;/a>&lt;/p></description></item><item><title>Visual Studio Code snippets</title><link>https://www.cederlof.net/visual-studio-code-snippets/</link><pubDate>Mon, 03 Jun 2013 22:00:00 +0000</pubDate><guid>https://www.cederlof.net/visual-studio-code-snippets/</guid><description>
&lt;p>Code snippets är ett smidigt sätt att snabb skriva kod, man skriver många gånger.&lt;/p>
&lt;p>Man kan göra mycket avancerade grejer, men det enklaste möjliga fallet är t ex för ett unit test, då jag alltid skriver:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> //arrange
&lt;span class="ln">2&lt;/span>
&lt;span class="ln">3&lt;/span>
&lt;span class="ln">4&lt;/span> //act
&lt;span class="ln">5&lt;/span>
&lt;span class="ln">6&lt;/span>
&lt;span class="ln">7&lt;/span> //assert
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Min snippet ser ut så här:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span> &amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;
&lt;span class="ln"> 2&lt;/span> &amp;lt;CodeSnippets xmlns=&amp;#34;http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&amp;#34;&amp;gt;
&lt;span class="ln"> 3&lt;/span> &amp;lt;CodeSnippet Format=&amp;#34;1.0.0&amp;#34;&amp;gt;
&lt;span class="ln"> 4&lt;/span> &amp;lt;Header&amp;gt;
&lt;span class="ln"> 5&lt;/span> &amp;lt;SnippetTypes&amp;gt;
&lt;span class="ln"> 6&lt;/span> &amp;lt;SnippetType&amp;gt;Expansion&amp;lt;/SnippetType&amp;gt;
&lt;span class="ln"> 7&lt;/span> &amp;lt;/SnippetTypes&amp;gt;
&lt;span class="ln"> 8&lt;/span> &amp;lt;Title&amp;gt;ArrangeActAssert&amp;lt;/Title&amp;gt;
&lt;span class="ln"> 9&lt;/span> &amp;lt;Author&amp;gt;Erik Cederlöf&amp;lt;/Author&amp;gt;
&lt;span class="ln">10&lt;/span> &amp;lt;Description&amp;gt;Adds Arrange/Act/Assert-comments to a test method&amp;lt;/Description&amp;gt;
&lt;span class="ln">11&lt;/span> &amp;lt;HelpUrl&amp;gt;
&lt;span class="ln">12&lt;/span> &amp;lt;/HelpUrl&amp;gt;
&lt;span class="ln">13&lt;/span> &amp;lt;Shortcut&amp;gt;aaa&amp;lt;/Shortcut&amp;gt;
&lt;span class="ln">14&lt;/span> &amp;lt;/Header&amp;gt;
&lt;span class="ln">15&lt;/span> &amp;lt;Snippet&amp;gt;
&lt;span class="ln">16&lt;/span> &amp;lt;Code Language=&amp;#34;csharp&amp;#34;&amp;gt;&amp;lt;![CDATA[
&lt;span class="ln">17&lt;/span> //arrange
&lt;span class="ln">18&lt;/span> //act
&lt;span class="ln">19&lt;/span> //assert
&lt;span class="ln">20&lt;/span> ]]&amp;gt;&amp;lt;/Code&amp;gt;
&lt;span class="ln">21&lt;/span> &amp;lt;/Snippet&amp;gt;
&lt;span class="ln">22&lt;/span> &amp;lt;/CodeSnippet&amp;gt;
&lt;span class="ln">23&lt;/span> &amp;lt;/CodeSnippets&amp;gt;
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Placeras hos mig på: C:\Users\XXX\Documents\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets&lt;/p>
&lt;p>Mer information om code snippets: &lt;a href="http://msdn.microsoft.com/en-us/library/ms165394.aspx">http://msdn.microsoft.com/en-us/library/ms165394.aspx&lt;/a>&lt;/p>
&lt;p>En användbar plugin till VS är Snippet designer - då slipper man xml:en: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/B08B0375-139E-41D7-AF9B-FAEE50F68392">http://visualstudiogallery.msdn.microsoft.com/B08B0375-139E-41D7-AF9B-FAEE50F68392&lt;/a>&lt;/p></description></item><item><title>Entity Framework Code First Migration - Lathund</title><link>https://www.cederlof.net/entity-framework-code-first-migration-lathund/</link><pubDate>Mon, 03 Jun 2013 10:00:00 +0000</pubDate><guid>https://www.cederlof.net/entity-framework-code-first-migration-lathund/</guid><description>
&lt;p>Lägg till ny migrering&lt;/p>
&lt;pre>&lt;code>PM&amp;gt; Add-Migration &amp;quot;Namn För Migrering&amp;quot;
&lt;/code>&lt;/pre>
&lt;p>Kör migrering mot databas.&lt;/p>
&lt;pre>&lt;code>PM&amp;gt; Update-Database -Verbose
-ConnectionStringName &amp;quot;MyConnectionName&amp;quot;
-script //förhandsgranska script utan att köra
-f //force, kör trots att data kan raderas
&lt;/code>&lt;/pre>
&lt;p>Hämta alla migreringar som har körts på databasen&lt;/p>
&lt;pre>&lt;code>PM&amp;gt; Get-Migrations
&lt;/code>&lt;/pre>
&lt;p>Rulla tillbaka/framåt till en specifik migration&lt;/p>
&lt;pre>&lt;code>PM&amp;gt; Update-Database -TargetMigration:&amp;quot;1234&amp;quot;
&lt;/code>&lt;/pre>
&lt;p>Rulla tillbaka alla migreringar&lt;/p>
&lt;pre>&lt;code>PM&amp;gt; Update-Database -TargetMigration:0
&lt;/code>&lt;/pre>
&lt;p>Starta om från scratch och strunta i alla migreringar.&lt;/p>
&lt;p>Radera den fysiska databasen och kör nedan, vartefter du tar bort migration-filerna i Migrations-katalogen. Sen är det bara att lägga upp en ny migrering som vanligt för att initiera alla klasser/tabeller.&lt;/p>
&lt;pre>&lt;code>PM&amp;gt; Enable-Migrations -Force
&lt;/code>&lt;/pre>
&lt;p>Kör SQL-filer som resurser i en migrering:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln"> 1&lt;/span> public partial class MigrationName: DbMigration
&lt;span class="ln"> 2&lt;/span> {
&lt;span class="ln"> 3&lt;/span> public override void Up()
&lt;span class="ln"> 4&lt;/span> {
&lt;span class="ln"> 5&lt;/span> this.Sql(SqlFiles.Drop_Job_ClearExpiredSessionData);
&lt;span class="ln"> 6&lt;/span> this.Sql(SqlFiles.Create_Job_ClearExpiredSessionData);
&lt;span class="ln"> 7&lt;/span> }
&lt;span class="ln"> 8&lt;/span>
&lt;span class="ln"> 9&lt;/span> public override void Down()
&lt;span class="ln">10&lt;/span> {
&lt;span class="ln">11&lt;/span> this.Sql(SqlFiles.Drop_Job_ClearExpiredSessionData);
&lt;span class="ln">12&lt;/span> }
&lt;span class="ln">13&lt;/span> }
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Skapa unikt index på kolumn:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span> CreateIndex(table: &amp;#34;DbTabell&amp;#34;,
&lt;span class="ln">2&lt;/span> column: &amp;#34;DbKolumn&amp;#34;,
&lt;span class="ln">3&lt;/span> unique: true,
&lt;span class="ln">4&lt;/span> name: &amp;#34;MittUnikaIndex&amp;#34;);
&lt;span class="ln">5&lt;/span>
&lt;span class="ln">6&lt;/span> DropIndex(&amp;#34;DbTabell&amp;#34;, &amp;#34;MittUnikaIndex&amp;#34;);
&lt;/code>&lt;/pre>&lt;/div>&lt;p>Mergeproblem när man i två separata brancher skapar migrations som mergas in till samma branch, vilket vid update-database resulterar i:
&lt;em>Unable to update database to match the current model because there are pending changes and automatic migration is disabled.&lt;/em>
Vid add-migration vill den skapa en ny migration med samma innehåll som redan finns.
Lösningen är att gå tillbaka till migreringen innan problemen, köra update-database mot den första problematiska (som targetmigration) och sen göra add-migration med samma namn som den andra migreringen som står på tur. Då uppdateras enbart resx-filen:
Källa: &lt;a href="https://coding.abel.nu/2012/02/ef-migrations-and-a-merge-conflict/">https://coding.abel.nu/2012/02/ef-migrations-and-a-merge-conflict/&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="ln">1&lt;/span>Update-Database -Verbose -TargetMigration &amp;#34;201810081228449_Mig1&amp;#34;
&lt;span class="ln">2&lt;/span>Add-Migration &amp;#34;201810291303139_Mig2&amp;#34;
&lt;span class="ln">3&lt;/span>Update-Database -Verbose
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Gör Sublime Text 2 användbar</title><link>https://www.cederlof.net/g%C3%B6r-sublime-text-2-anv%C3%A4ndbar/</link><pubDate>Sun, 12 May 2013 23:00:00 +0000</pubDate><guid>https://www.cederlof.net/g%C3%B6r-sublime-text-2-anv%C3%A4ndbar/</guid><description>
&lt;p>&lt;a href="http://www.sublimetext.com/">Sublime Text&lt;/a> är inget utan sina paket.&lt;/p>
&lt;p>Installera package control i Sublime Text 2 genom att öppna dess konsol och klistra in följande blobb:&lt;/p>
&lt;pre>&lt;code>import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')
&lt;/code>&lt;/pre>
&lt;p>(Källa: &lt;a href="http://wbond.net/sublime_packages/package_control/installation">http://wbond.net/sublime_packages/package_control/installation&lt;/a>)&lt;/p>
&lt;p>###Paket
För att installera nya paket/add-ons klicka Ctrl/Cmd+Shift+P och skriv in &lt;em>install package&lt;/em>+Enter.&lt;/p>
&lt;p>####Tips på paket&lt;/p>
&lt;ul>
&lt;li>Indent XML&lt;/li>
&lt;/ul>
&lt;p>###Användningstips&lt;/p>
&lt;ul>
&lt;li>Klicka ut fler &amp;quot;cursors&amp;quot; genom att hålla in Ctrl/Cmd och klicka. Sedan kan man radera/skriva tecken på flera ställen samtidigt.&lt;/li>
&lt;li>Markera ett textstycke och tryck Ctrl+Shift+L för att få en enda stor cursor för hela texten - en per rad.&lt;/li>
&lt;/ul></description></item></channel></rss>