Important
This is an unofficial Korean translation of The Grug Brained Developer by Carson Gross.
Important
This is an unofficial Korean translation of The Grug Brained Developer by Carson Gross.
Highly extensible software like Emacs, Vim, and Neovim tend to grow their own package managers. A software developer, for example, might want to install editor plugins that hook into a particular programming language's linter or language server. The programmer's text editor is therefore extended to support managing additional software to extend the text editor. If this loop continues for too long, the programmer's editor becomes more delicate and complex. The remedy for this problem is to manage software using dedicated tools apart
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <meta http-equiv="X-UA-Compatible" content="ie=edge"> | |
| <title>Quill Form</title> | |
| <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet"> | |
| <script src="https://cdn.quilljs.com/1.3.6/quill.js"></script> |
| package main | |
| import ( | |
| "crypto/tls" | |
| "flag" | |
| "fmt" | |
| "log" | |
| "net/http" | |
| "time" |
| // GetFreePort asks the kernel for a free open port that is ready to use. | |
| func GetFreePort() (port int, err error) { | |
| var a *net.TCPAddr | |
| if a, err = net.ResolveTCPAddr("tcp", "localhost:0"); err == nil { | |
| var l *net.TCPListener | |
| if l, err = net.ListenTCP("tcp", a); err == nil { | |
| defer l.Close() | |
| return l.Addr().(*net.TCPAddr).Port, nil | |
| } | |
| } |
| package main | |
| import ( | |
| "context" | |
| "fmt" | |
| "log" | |
| "net/http" | |
| "time" | |
| ) |
On mac:
/usr/local/bin.