grpc-go
git-lfs
Our great sponsors
grpc-go | git-lfs | |
---|---|---|
29 | 159 | |
19,836 | 12,405 | |
1.2% | 1.2% | |
9.5 | 9.1 | |
1 day ago | 16 days ago | |
Go | Go | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
grpc-go
-
Reverse Engineering Protobuf Definitions from Compiled Binaries
The reflection service is open-sourced (at least for some sdks):
* https://github.com/grpc/grpc-go/blob/master/Documentation/se...
* https://chromium.googlesource.com/external/github.com/grpc/g...
-
gRPC Name Resolution & Load Balancing on Kubernetes: Everything you need to know (and probably a bit more)
We’re hoping to make this rate at least optional via this pull request but as the time of writing this blog, it’s nothing we can do to circle our way around it.
-
Full Stack Forays with Go and gRPC
First, I started with gRPC’s recommended starter repository for learning gRPC, their **helloworld **example, which is a part of the official gRPC repository.
-
Tools besides Go for a newbie
IDE: use whatever make you productive. I personally use vscode. VCS: git, as golang communities use github heavily as base for many libraries. AFAIK Linter: use staticcheck for linting as it looks like mostly used linting tool in go, supported by many also. In Vscode it will be recommended once you install go plugin. Libraries/Framework: actually the standard libraries already included many things you need, decent enough for your day-to-day development cycles(e.g. `net/http`). But here are things for extra: - Struct fields validator: validator - Http server lib: chi router , httprouter , fasthttp (for non standard http implementations, but fast) - Web Framework: echo , gin , fiber , beego , etc - Http client lib: most already covered by stdlib(net/http), so you rarely need extra lib for this, but if you really need some are: resty - CLI: cobra - Config: godotenv , viper - DB Drivers: sqlx , postgre , sqlite , mysql - nosql: redis , mongodb , elasticsearch - ORM: gorm , entgo , sqlc(codegen) - JS Transpiler: gopherjs - GUI: fyne - grpc: grpc - logging: zerolog - test: testify , gomock , dockertest - and many others you can find here
-
Curl 8.0.1 because I jinked it
If you read the first comment, you’ll see the API was documented as being experimental.
https://github.com/grpc/grpc-go/issues/3798#issuecomment-670...
-
When is go not a good choice?
The lack of this analysis still results in bugs and CVEs. See how many races are found and fixed in gRPC releases: https://github.com/grpc/grpc-go/releases (search "race"). It's a shame Google does not publish these as CVEs, because many of them qualify.
-
Rust for backend. Is it recommended?
I like to point people at this release to show that not even Google -- in its own language on its own library for its own RPC protocol -- can write thread-safe Go, so what chance does anyone else have. Maybe we have to stop thinking of Go as a language for mission critical parallel computing and think of it more like a Python 4 made for low-risk prototyping. Mature libraries help for that prototyping, you know how to put them together and get something working, that something just won't be scaleable, efficient, or thread-safe.
-
Partially-Implemented Interfaces in Go
I first learned about this technique when gRPC generated code started using it. See the short readme and the long issue discussion. I think a lot more of the rationale from the discussion should have made it into the readme, since this is the only time most Go developers will ever see this technique used, especially since it can't be retrofitted to existing interfaces without breaking existing implementations.
-
goRPC or gRPC?
I don't have any experience with goRPC (I'm assuming you're referring to https://github.com/valyala/gorpc), but just to note that that repo hasn't been updated in 7 years and has open issues that are that old, too. https://github.com/grpc/grpc-go has 17.5k stars and is actively maintained. That doesn't say anything about their relative performance - goRPC might be faster - but you probably won't have a fun time if you run into issues.
-
Golang is evil on shitty networks
Found the root cause from https://github.com/grpc/grpc-go/commit/383b1143 (original issue: https://github.com/grpc/grpc-go/issues/75):
// Note that ServeHTTP uses Go's HTTP/2 server implementation which is
git-lfs
-
Git-annex: manage large files in Git without storing the contents in Git
What's the difference between this and Git-LFS?
- Twenty Years Is Nothing
-
Aho – a Git implementation in Awk
It doesn't, since Git's data model has to be changed to content-defined chunks to solve the issue.
You should look at git-lfs[1] instead.
-
Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative
Congrats on the HN launch. How does this improve or expand or blow git-lfs[1] out of the water because if I needed large blob file support it's what I would use instead. It offers pointers to the big files to the hosted git instead of pushing around the binaries itself -- though I am speculating since I've not used it myself just read about it online.
-
Ask HN: How do you keep your documentation, how-to, examples and blogs updated?
Specifics depend on project types, but literate programming[0] and using/enforcing coding/git/versioning standards helps. re: outdated responses -- email list for 'new/updated version available' with errata/change log location.
[0] : https://blog.bitsrc.io/literate-programming-a-radical-approa...
[1] : https://blog.codacy.com/coding-standards
[2] : https://github.com/git-lfs/git-lfs/blob/main/.github/workflo...
-
Ask HN: Can we do better than Git for version control?
fine with layers: e.g., large binary files via git-lfs (https://git-lfs.com) and merge conflicts in non-textual files by custom merge resolvers like Unity’s (https://flashg.github.io/GitMerge-for-Unity/).
Perhaps in the future, almost everyone will keep using Git at the core, but have so many layers to make it more intuitive and provide better merges, that what they’re using barely resembles Git at all. This flexibility and the fact that nearly everything is designed for Git and integrates with Git, are why I doubt it’s ever going away.
Some alternatives for thought:
- pijul (https://pijul.org), a completely different VCS which allegedly has better merges/rebases. In beta, but I rarely hear about it nowadays and have heard more bad than good. I don’t think we can implement this alternate rebases in Git, but maybe we don’t need to; even after reading the website, I don’t understand why pijul’s merges are better, and in particular I can’t think of a concrete example nor does pijul provide one.
- Unison (https://www.unison-lang.org). This isn’t a VCS, but a language with a radical approach to code representation: instead of code being text stored in files, code is ASTs referenced by hash and stored in essentially a database. Among other advantages, the main one is that you can rename symbols and they will automatically propagate to dependencies, because the symbols are referenced by their hash instead of their name. I believe this automatic renaming will be common in the future, whether it’s implemented by a layer on top of Git or alternate code representation like Unison (to be clear, Unison’s codebases are designed to work with Git, and the Unison project itself is stored in Git repos).
- SVN, the other widespread VCS. Google or ask ChatGPT “Git vs SVN” and you’ll get answers like this (https://www.linode.com/docs/guides/svn-vs-git/, https://stackoverflow.com/a/875). Basically, SVN is easier to understand and handles large files better, Git is decentralized and more popular. But what about the differences which can’t be resolved by layers, like lazygit for intuition and git-lfs for large files? It seems to me like even companies with centralized private repositories use Git, meaning Git will probably win in the long term, but I don’t work at those companies so I don’t really know.
- Mercurial and Fossil, the other widespread VCSs. It seems these are more similar to Git and the main differences are in the low-level implementation (https://stackoverflow.com/a/892688, https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki#....). It actually seems like most people prefer Mercurial and Fossil over Git and would use them if they had the same popularity, or at least if they had Git’s popularity and Git had Mercury or Fossil’s. But again, these VCSs are so similar that with layers, you can probably create a Git experience which has their advantages and almost copies their UI.
- We Put Half a Million Files in One Git Repository, Here's What We Learned (2022)
-
Show HN: Gogit – Just enough Git (in Go) to push itself to GitHub
> I don’t know what that is
its a standard output from `go doc`, rendered as HTML. if you dont recognize that, then you aren't really in a position to be commenting on the topic. nothing is stopping anyone from pinning to a tag:
https://github.com/git-lfs/git-lfs/tags
or even a commit and relying of a specific version of the software. yes upgrades might be painful but a module IS available.
-
Unable to push because of large file deleted in the past
# git push origin feature-branch /usr/bin/gh auth git-credential get: 1: /usr/bin/gh auth git-credential get: /usr/bin/gh: not found /usr/bin/gh auth git-credential store: 1: /usr/bin/gh auth git-credential store: /usr/bin/gh: not found Enumerating objects: 9228, done. Counting objects: 100% (7495/7495), done. Delta compression using up to 8 threads Compressing objects: 100% (2090/2090), done. Writing objects: 100% (6033/6033), 72.77 MiB | 7.39 MiB/s, done. Total 6033 (delta 4402), reused 5194 (delta 3616) remote: Resolving deltas: 100% (4402/4402), completed with 477 local objects. remote: error: Trace: c1c90b47a5483929dcdd8c974a6c7d0695e86f67f680d8b88b80ef1c1bce74a remote: error: See https://gh.io/lfs for more information. remote: error: File deployment_20200220.sql is 872.78 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. To https://github.com/my-org/my-project.git ! [remote rejected] rest-logging -> rest-logging (pre-receive hook declined) error: failed to push some refs to 'https://github.com/my-org/my-project.git'
- What and Why, Git LFS?
What are some alternatives?
rpcx - Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱! build for cloud!
onedrive - OneDrive Client for Linux
validator - :100:Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving
git-fat - Simple way to handle fat files without committing them to git, supports synchronization using rsync
go-zero - A cloud-native Go microservices framework with cli tool for productivity.
Gitea - Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD
go-micro - A Go microservices framework
git - A fork of Git containing Windows-specific patches.
Echo - High performance, minimalist Go web framework
nixpkgs - Nix Packages collection & NixOS
KrakenD - Ultra performant API Gateway with middlewares. A project hosted at The Linux Foundation
scalar - Scalar: A set of tools and extensions for Git to allow very large monorepos to run on Git without a virtualization layer