Tag programming

70 bookmarks have this tag.

2024-04-11

604.

How I write tests in Go

blog.verygoodsoftwarenotvirus.ru/posts/testing-in-go

In many other languages, you have to not only evaluate testing libraries, but also write your tests in a style that complies with that library’s expectations. Gophers are blessed to have a thoroughly adequate solution out-of-the-box, and even further blessed to have an active ecosystem where folks are making in-depth testing a walk in the park.

603.

ETag and HTTP caching

rednafi.com/misc/etag_and_http_caching

2024-04-01

Reposted 597.

Trunk Based Development

trunkbaseddevelopment.com

A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’ *,
resist any pressure to create other long-lived development branches by employing documented techniques. They
therefore avoid merge hell, do not break the build, and live happily ever after.

2024-03-24

586.

Redict

redict.io

Redict is a distributed key/value store (a remote dictionary, if you will).

Redict is an independent fork of Redis®1 OSS 7.2.4 licensed under the Lesser GNU General Public license (LGPL-3.0-only). Redict is not affiliated with Redis®.

2024-03-12

576.

Михаил Раер - Testing in Production

www.youtube.com/watch?v=evDn0AvTDSQ

Достаточно ли отдельных энвайрментов, или нужно тестировать в продакшене, и как это делать безопасно.

575.

Антон Архипов - Полезняшки отладчика в IntelliJ IDEA

www.youtube.com/watch?v=4sKpx2F30r8

Узнал про дебаггер много нового

Reposted 573.

Choose Boring Technology

boringtechnology.club

Innovation tokens and whatnot.

2024-03-10

567.

Сервисы

grishaev.me/services

Я согласен с тем, что логику нужно разносить по сервисам. Но сервисы должны использовать общую шину данных: базу, очередь сообщений, файлы в S3 в конце концов. Гонять друг другу JSON выглядит хорошо в теории, но на практике — фу.

Условный Постгрес выплюнет миллион записей за доли секунды. Забрать этот же миллион из другого сервиса — приключение на неделю. Тут и метрики, лимиты, квоты, сетевые спайки, etc… А когда таких запросов несколько, сервис ложится спать.

566.

valyala/quicktemplate

github.com/valyala/quicktemplate

Fast, powerful, yet easy to use template engine for Go. Optimized for speed, zero memory allocations in hot paths. Up to 20x faster than html/template

2024-03-07

549.

SQL Polyglot

codapi.org/sql

SQL Polyglot is a quick way to see if a particular SQL feature is supported in different database systems. Write a query and see it run anywhere from PostgreSQL to DuckDB without leaving your browser.

548.

Структурированное логирование в Go с помощью Slog

habr.com/ru/companies/slurm/articles/798207

2024-03-06

547.

Dysfunctional options pattern in Go

rednafi.com/go/dysfunctional_options_pattern
Reposted 546.

Task

taskfile.dev

Task is a task runner / build tool that aims to be simpler and easier to use

version: '3'

tasks:
  hello:
    cmds:
      - echo 'Hello World from Task!'
    silent: true

2024-03-05

543.

Wrapping Errors in Go - How to Handle Nested Errors

blog.boot.dev/golang/wrapping-errors-in-go-how-to-handle-nested-errors

By wrapping errors and building well-formatted error messages, we can keep better track of where errors are happening. I often just add the name of the function being called to my error messages, but we can make the message say whatever we want. For example, I’ll often include parameter information in the error so I know which inputs caused the error.

2024-03-04

541.

Как я пишу HTTP-сервисы спустя 13 лет работы с Go

habr.com/ru/articles/793166

В этом посте рассматривается широкий спектр тем, связанных с созданием сервисов на Go:

  • Структурирование серверов и обработчиков с расчётом на максимальное удобство поддержки;

  • Советы и рекомендации по оптимизации сервисов под быстрый запуск и правильное отключение;

  • Обработка стандартных задач, применимых ко множеству типов запросов;

  • Глубокое исследование правильного тестирования сервисов.

2024-03-02

540.

The Blessing of Interactive Development

tonsky.me/blog/interactive-development

In this post I describe a couple of practice that makes the process of writing code faster, more predictable and straightforward

2024-02-18

524.

Strategy pattern in Go

rednafi.com/go/strategy_pattern

2024-02-12

521.

Functional programming in Go

bitfieldconsulting.com/golang/functional

Thanks to generics, there are some interesting new ways to program in Go. This article explains how we can use functional programming techniques like Map, Filter, and Reduce, and what kind of problems they might help us to solve.

2024-02-11

520.

Гигиена в Git

grishaev.me/git-pretty

Несколько правил, чтобы держать Git приличном виде.

2024-02-01

512.

Some activities are harder than others

alexschroeder.ch/view/2024-01-31-activities

from bouncepaw:

Alex tells us that, for him, baking and cooking are easier than programming and soldering, because the errors there average out. As for me, this is completely inverse.

In programming, an error never fixes itself. You can observe it and fix it, you can write tests. You can run the program multiple times. It's you who fixes it, and you can understand how it's done. It's measurable!

Meanwhile, cooking is a nightmare. Burning something is routine for me. Is that too much or too little oil? For how long do I fry? What do I do with these spices? Do they really affect the taste? And to observe something, I can't rely on symbolic things like text. No, I have to look (is this color good? No idea!), smell (as if I know the difference) and taste (nothing more inaccurate).

I'm happy when something can be cooked with a timer. 15 min for buckwheat? I'm in. I'm more happy when the time is short. 4 min for this thin kind of spaghetti? Already boiling water!

I mean, even boiling water is not simple. My parents told me to wait until the correct bubbles appear. I'm waiting for the scary ones. Also, salt is supposed to make it boil faster. How much salt do I add?

And I didn't even talk about plants, which Alex also considers easy. They're not 😭

Totally agree!

2024-01-31

509.

A New Medium for Communicating Research on Programming Languages

willcrichton.net/nota

Papers about programming languages involve complex notations, systems, and proofs. Static PDFs offer little support in understanding such concepts. I describe Nota, a framework for academic papers that uses the browser's interactive capabilities to support comprehension in context. Nota uses hover effects, tooltips, expandable sections, toggleable explanations, and other interactions to help readers understand a language's syntax and semantics. I demonstrate the use of Nota by rewriting a PL paper using its primitives, and also by writing this paper in Nota.

2024-01-27

502.

Вложенность

grishaev.me/nesting-01

Беру любой JSON и вижу, как его можно упростить, убрав лишнюю вложенность. Вдвойне обидно, что на эту вложенность кто-то тратил время, а она не нужна!

2024-01-17

496.

Google I/O 2013 - Advanced Go Concurrency Patterns

www.youtube.com/watch?v=QDDwwePbDtw

Concurrency is the key to designing high performance network services. This talk expands on last year's popular Go Concurrency Patterns talk to dive deeper into Go's concurrency primitives, and see how tricky concurrency problems can be solved gracefully with simple Go code.

2024-01-12

488.

Фаззинг (fuzzing) тестирование

b.sattellite.me/2022/01/2022-01-golang-fuzzing

2024-01-10

Reposted 485.

What We Got Right, What We Got Wrong

commandcenter.blogspot.com/2024/01/what-we-got-right-what-we-got-wrong.html

2024-01-06

Reposted 480.

Есть табак, да нечем нюхать: Об использовании Питона в высшем образовании

shmat-razum.blogspot.com/2024/01/python.html

Смешной текст о том, что питон учить не надо. Я Питон не люблю, но тут совсем кринж!

2023-12-29

476.

Две проблемы

grishaev.me/two-problems

Первая — программист закладывает абстракции там, где не следует.

Бритва Оккама ?

Вторая проблема — наоборот: программист не оставляет шанса поправить его код.

475.

Проблема и решение

grishaev.me/problem-and-solution

Бывает, проблему можно поправить функцией или макросом, но в код тянут библиотеку. Или можно купить готовое решение, но тимлид говорит: мы напишем свое через три месяца. Или разработчик насмотрелся видосов со свежей конфы и хочет проверить чужие идеи.

474.

Горизонтальное масштабирование

ambment.cat/posts/2023-12-26-1.html

если в процессе обсуждения архитектуры вы пришли у выводу, что в проекте потребуется настоящее горизонтальное масштабирование — вам не обойтись без конечных автоматов (так-то лучше вообще любую бизнес-логику строить именно на конечных автоматах, но в автономной системе можно подкостылить и без них, а вот в кластере — уже никак)

Так или иначе, если вы хотите оказаться готовым отмасштабироваться в горизонталь — стройте критические процессы на конечных автоматах и полностью асинхронно

Зато асинхронные взаимодействия поверх FSM — сделают в дальнейшем масштабирование безболезненным, ведь в такой парадигме не имеет никакого значения, на какой ноде выполнится код, отвечающий на запрос.

2023-12-21

468.

research!rsc: Coroutines for Go

research.swtch.com/coro
Reposted 466.

NilAway: Practical Nil Panic Detection for Go

www.uber.com/blog/nilaway-practical-nil-panic-detection-for-go

A linter for Go that finds nil panics. It found several potential nil panic in Betula and Mycorrhiza codebases that I didn't bother fixing.

2023-12-20

Reposted 463.

Zeal - Offline Documentation Browser

zealdocs.org

2023-12-16

457.

Banish state-mutating methods from data classes

rednafi.com/python/dataclasses_and_methods

Data classes are containers for your data—not behavior

2023-12-12

454.

Finding unreachable functions with deadcode

go.dev/blog/deadcode

Functions that are part of your project’s source code but can never be
reached in any execution are called “dead code”, and they exert a drag
on codebase maintenance efforts.
Today we’re pleased to share a tool named deadcode to help you identify them.

2023-12-03

447.

Computers can be understood - Made of Bugs

blog.nelhage.com/post/computers-can-be-understood

This belief is, for me, not some abstruse theoretical assertion, but a deeply felt belief that essentially any question I might care to ask (about computers) has a comprehensible answer which is accessible with determined exploration and learning.

2023-11-29

442.

Обратное собеседование

github.com/kix/reverse-interview/blob/master/README.md

Это список вопросов, который может быть интересен соискателю должности технического специалиста.

2023-11-25

433.

godocs.io

godocs.io

2023-11-19

427.

Gripes With Go

peppe.rs/posts/gripes_with_go

2023-11-14

410.

An Engineer's Formula for Software Estimation

blog.bonnieeisenman.com/blog/a-software-engineers-guide-to-estimation

A rough formula for tshirt-sizing estimates for software projects.

2023-11-13

409.

More than Coding: What is Exploratory Work?

blog.bonnieeisenman.com/blog/senior-work

Implementation versus exploration. Who is expected to do what. Being glue.

2023-11-04

393.

Progopedia

progopedia.com

Free Encyclopedia of Programming Languages.

2023-10-27

374.

CodePhoto

code.xxut.ru

Генерирует фотку экрана с кодом, который вставит пользователь

2023-10-21

Reposted 370.

banging errors in go

flak.tedunangst.com/post/bango

Tedu wrote a tool that lets you handle errors in Go like this:

func decomp(filename string) ([]byte, error) {
        fd := ^os.Open(filename)
        defer fd.Close()
        zd := ^gzip.NewReader(fd)
        data := ^io.ReadAll(zd)
        return data, nil
}

Funky!

2023-10-14

366.

Helper library for OAuth2 in command-line tools

github.com/Zverik/cli-oauth2

2023-10-11

361.

CodeReviewComments

github.com/golang/go/wiki/CodeReviewComments

This page collects common comments made during reviews of Go code, so
that a single detailed explanation can be referred to by shorthands.
This is a laundry list of common style issues, not a comprehensive style guide.

2023-10-10

Reposted 360.

My personal C coding style as of late 2023

nullprogram.com/blog/2023/10/08

2023-10-02

348.

The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 (Still No Excuses!)

tonsky.me/blog/unicode

Никита рассказывает про текст и кодировки

2023-09-24

Reposted 338.

Writing safe-to-use Go libraries

blog.orsinium.dev/posts/go/safe-api

The Go standard library is full of bad design choices from the perspective of safety of use.

2023-09-20

337.

In a git repository, where do your files live?

jvns.ca/blog/2023/09/14/in-a-git-repository--where-do-your-files-live-

2023-09-14

325.

Comparative Analysis

matklad.github.io/2023/09/13/comparative-analysis.html

The core idea is to canonicalize things. Both x < y and y > x mean the same, and, if you usethem with roughly equal frequency, you need to spend extra mental capacity to fold the two versionsinto the single “x tiny, y HUGE” concept in your head.

2023-09-11

317.

A Senior Engineer's CheckList

littleblah.com/post/2019-09-01-senior-engineer-checklist

This is a simple checklist, and while it is useful to any software engineer, it is especially useful to senior engineers.

2023-09-03

313.

Как растить джуниоров

strizhechenko.github.io/2017/01/14/junior-learning.html

Выделите джуниору части проекта, где он будет главным, через него будут решаться все вопросы связанные с ними. При срочной необходимости, можно всё сделать самому, но в штатном режиме хозяин кода - он.

2023-08-31

309.

Делаем Django на Go (ну почти)

blog.exo.icu/posts/django-on-go

Go - классный язык программирования у которого есть все шансы обеспечить конкуренцию Python. Этот очерк показывает как из уже существующих библиотек построить крутой бекенд для web-приложения.

Теперь почти все готово к первому билду, осталось только синхронизировать зависимости, выполняем такую команду

go mod tidy && go mod verify && go mod tidy

2023-08-26

304.

Monorepo Explained

monorepo.tools

Everything you need to know about monorepos, and the tools to build them.

2023-08-14

286.

HTMX

grishaev.me/htmx

Заметка Ивана об htmx

2023-08-07

279.

Elements of C Style

www.teamten.com/lawrence/style

Заметки о том, как писать и оформлять код на Си

278.

Don't write bugs

www.teamten.com/lawrence/programming/dont-write-bugs.html

If you want a single piece of advice to reduce your bug count, it’s this:
Re-read your code frequently. After writing a few lines of code (3 to 6 lines, a short block within a function), re-read them. That habit will save you more time than any other simple change you can make.

277.

Programming people

leftoversalad.com/c/015_programmingpeople

Языки программирования как люди

2023-07-26

252.

Introduction to Compilers and Language Design

www3.nd.edu/~dthain/compilerbook/compilerbook.pdf

2023-07-25

249.

SQL-шпаргалка

antonz.ru/sql-cheatsheet

Для всех, кто знал SQL, но подзабыл

2023-07-24

248.

The regex [,-.]

pboyd.io/posts/comma-dash-dot

Я ещё так никогда не удивлялся регулярному выражению

247.

5 Ways to Write a Go Database Model

pboyd.io/posts/5-ways-to-write-a-go-database-model

Choosing the right tools to write a database model in Go can be overwhelming. This post describes the various approaches.

2023-07-09

232.

Минимализм в IDE

mitrich.me/posts/ide-minimalism

Дима рассказывает, как сделать ИДЕ от ЖетБрейнс минималистичной, но при этом оставить её удобной в использовании

2023-07-08

230.

Simple Made Easy

www.infoq.com/presentations/Simple-Made-Easy

Рич Хикки рассказывает о различиях простоты и лёгкости в контексте проектирования и написания программ.

Говорит, что многие выбирают лёгкость, забывая про простоту. Со временем комплексность превращается во что-то такое, что сложно поддерживать и в чём сложно разобраться новичкам.

Нужно стремиться искать лёгкие способы делать простые программы.

1