Tag programming
99 bookmarks have this tag.
99 bookmarks have this tag.
We all know that naming things in programming is hard. If you’ve read this entire post it just got a little bit harder.
We are adding a new generated code API to Go Protobuf.
Software Carpentry is a volunteer project dedicated to teaching basic computing skills to researchers.
Не люблю, когда для обхода данных нужна пагинация. Всякие LIMIT/OFFSET,nextToken и прочие костыли.
Да!
PostgreSQL Query Plan Visualizer add new plan
Идемпотентность — звучит сложно, говорят о ней редко, но это касается всех приложений, использующих API в своей работе. Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс Такси. Сегодня я поделюсь с читателями описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте.
Сборник различных сценариев автоматизации и справочных материалов
Есть инструкция для почтового сервиса в кластере
There is a single advice I would give to anyone writing software, and specially to great devs : Always optimize your code for your most junior developers. I agree that it is not a very popular advice, but it is the one that, in my experience, give the biggest bang for the buck.
any variable named
SECONDS
will automatically increment every second. Bash is bonkers
используйте неизменяемые объекты, не допускайте частичной инициализации, требуйте обязательные поля сразу – не надейтесь, что кто-то заполнит их позже
A specification for adding human and machine readable meaning to commit messages
Skip brings Swift app development to Android
It is very important to conduct regular code reviews within every software team, but it is not so easy to do them right; here are a few typical pitfalls.
When project scope is perfectly decomposed and management rules are clear and strict, speed of delivery is the virtue, not the quality.
The concept of feature flags is simple – it’s essentially just an
if
. This makes it a very powerful concept!
Жетбрейнсы рассказывают о концепции фича-флагов
Гайд, как правильно писать сообщения для коммитов. О важности упоминания не просто того, что делает изменение, а зачем оно это делает. Очень мудро.
A properly configured distributed team of programmers can and must deliver a higher quality of code than a co-located one.
Equity or cash? These days, it seems that working for equity is the way to become a millionaire. I don't think it's true.
I often hear the question of how to become a senior developer; this is my story and my advice; hope it helps you.
If you actively use Stack Overflow as a coding instrument, your reputation will be lofty; if you don't use it, you're not really a professional software engineer.
Twenty years ago we worried about performance. Now it is time to worry about maintainability, even though it often compromises performance.
An active open source contribution is a good habit for a software developer who is passionate about his or her job.
In XDSD everybody is motivated to produce tangible and meaningful results. That's why we don't use emails, Skype, HipChat or phone calls.
Patent-pending methodology of breaking down big tasks into smaller ones is explained in the article, by example in Java
Programmers are expensive and difficult to control; here are a few tricks to keep them underpaid and happy, for a while.
How about we measure the amount of times programmers touch the lines. Instead of counting the number of lines we’ll count how many times they were actually modified—we can get this information from Git (or any other SCM). The more you touch that part of the aircraft—the more effort you spent on it, right?
I called it Hits-of-Code (HoC) and created a small tool to help us calculate this number in just one line.
What a nice idea! I installed this program and ran it on Betula and Mycorrhiza codebases. For Betula it's 26350 HoC, for Mycorrhiza it's 137208 HoC. Yeah, Betula is still comparatively young! Hey, what about Mycomarkup? 23443. Oh wow, just a little less than Betula. I expected a small number.
Никита рассказывает про оптимизации в Го.
Треш, конечно. Язык приколов
Uiua (wee-wuh) is a general purpose, stack-based, array-oriented programming language with a focus on simplicity, beauty, and tacit code
Список игр, которые учат компьютер сайенсу
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.
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.
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®.
Достаточно ли отдельных энвайрментов, или нужно тестировать в продакшене, и как это делать безопасно.
Узнал про дебаггер много нового
Innovation tokens and whatnot.
Я согласен с тем, что логику нужно разносить по сервисам. Но сервисы должны использовать общую шину данных: базу, очередь сообщений, файлы в S3 в конце концов. Гонять друг другу JSON выглядит хорошо в теории, но на практике — фу.
Условный Постгрес выплюнет миллион записей за доли секунды. Забрать этот же миллион из другого сервиса — приключение на неделю. Тут и метрики, лимиты, квоты, сетевые спайки, etc… А когда таких запросов несколько, сервис ложится спать.
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
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.
package src
type config struct {
// Required
foo, bar string
// Optional
fizz, bazz int
}
// Each optional configuration attribute will have its own public method
func (c *config) WithFizz(fizz int) *config {
c.fizz = fizz
return c
}
func (c *config) WithBazz(bazz int) *config {
c.bazz = bazz
return c
}
// This only accepts the required options as params
func NewConfig(foo, bar string) *config {
// First fill in the options with default values
return &config{foo, bar, 10, 100}
}
func Do(c *config) {}
You’d use the API as follows:
package main
import ".../src"
func main() {
// Initialize the struct with only the required options and then chain
// the option methods to update the optional configuration attributes
c := src.NewConfig("hello", "world").WithFizz(0).WithBazz(42)
src.Do(c)
}
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
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.
В этом посте рассматривается широкий спектр тем, связанных с созданием сервисов на Go:
Структурирование серверов и обработчиков с расчётом на максимальное удобство поддержки;
Советы и рекомендации по оптимизации сервисов под быстрый запуск и правильное отключение;
Обработка стандартных задач, применимых ко множеству типов запросов;
Глубокое исследование правильного тестирования сервисов.
In this post I describe a couple of practice that makes the process of writing code faster, more predictable and straightforward
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.
Несколько правил, чтобы держать Git приличном виде.
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!
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.
Беру любой JSON и вижу, как его можно упростить, убрав лишнюю вложенность. Вдвойне обидно, что на эту вложенность кто-то тратил время, а она не нужна!