Erang opt 20.1 contains crypto-4.1 with openssl-1.0.2d. So I was using the same version set.
I used chocolatey.org to install depdencies
- Git
| # -*- coding: UTF-8 -*- | |
| import enum, os, sys | |
| # https://twitter.com/highsenburger69 | |
| from ctypes.wintypes import * | |
| from ctypes import * | |
| # These libraries have the APIs we need | |
| kernel32 = WinDLL('kernel32', use_last_error=True) | |
| advapi32 = WinDLL('advapi32', use_last_error=True) | |
| shell32 = WinDLL('shell32', use_last_error=True) | |
| psapi = WinDLL('psapi.dll', use_last_error=True) |
| ## | |
| ## Windows 10 cleanup script. | |
| ## Remove dodgy tracking settings, unneeded services, all apps, and optional features that come with Windows 10. Make it more like Windows 7. | |
| ## NOTE: this was tested on Creators Update (1703) and Fall Creators Update (1709). Some of this may not work as expected on newer versions. | |
| ## | |
| ## Instructions | |
| ## 1. Run this script (under Powershell as Administrator): | |
| ## powershell -ExectionPolicy Bypass .\cleanup-win10.ps1 | |
| ## 2. Let it run through, you may see a few errors, this is normal | |
| ## 3. Reboot |
| using System; | |
| using System.Collections.Immutable; | |
| using System.Diagnostics; | |
| using System.IO; | |
| using System.Linq; | |
| using System.Reflection; | |
| using System.Reflection.Metadata; | |
| using System.Reflection.PortableExecutable; | |
| using System.Security.Cryptography; |
| # This is a total of 5 logical LOC, but the API is... well hidden and highly opaque | |
| # (magic numbers everywhere!) so it warrents a few dozen lines of comments | |
| function Enable-ANSIEscapes { | |
| # Enable ANSI / VT100 16-color escape sequences: | |
| # Original discovery blog post: | |
| # http://stknohg.hatenablog.jp/entry/2016/02/22/195644 | |
| # Esc sequence support documentation | |
| # https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs.85).aspx |
| var compilation = CSharpCompilation.Create("C") | |
| .AddReferences(MetadataReference.CreateFromFile(pathToAssembly)); | |
| foreach (var type in | |
| from assemblySymbol in compilation.SourceModule.ReferencedAssemblySymbols | |
| from module in assemblySymbol.Modules | |
| from n in module.GlobalNamespace.GetMembers() | |
| where n.IsNamespace | |
| from type in n.GetTypeMembers() | |
| select type) |
One thing that surprises newer programmers is that the older 8-bit microcomputers from the 70s and 80s were designed to run at the speed of random memory access to DRAM and ROM. The C64 was released in 1982 when I was born and its 6502 CPU ran at 1 MHz (give or take depending on NTSC vs PAL). It had a 2-stage pipelined design that was designed to overlap execution and instruction fetch for the current and next instruction. Cycle counting was simple to understand and master since it was based almost entirely on the number of memory accesses (1 cycle each), with a 1-cycle penalty for taken branches because of the pipelined instruction fetch for the next sequential instruction. So, the entire architecture was based on keeping the memory subsystem busy 100% of the time by issuing a read or write every cycle. One-byte instructions with no memory operands like INX still take the minimum 2 cycles per instruction and end up redundantly issuing the same memory request two cycles in a row.
A common pattern for NuGet package versions is producing two sets of .nupkgs for every CI build. That is two sets of functionally equivalent packages produced from the same source. Two sets are:
4.0.0-rc-2046, 3.5.0-rtm-1996, 3.5.0-beta2-1543| using System; | |
| using System.Diagnostics; | |
| using System.Text; | |
| using System.Threading.Tasks; | |
| public static class ProcessAsyncHelper | |
| { | |
| public static async Task<ProcessResult> ExecuteShellCommand(string command, string arguments, int timeout) | |
| { | |
| var result = new ProcessResult(); |
wget https://storage.googleapis.com/golang/go1.7.linux-armv6l.tar.gz
tar -C /usr/local -xzf go1.7.linux-armv6l.tar.gz
export PATH=$PATH:/usr/local/go/bin