Обновить
17
-1.6
Andrew Ka@comerc

#кодеротбога

Отправить сообщение

Чтобы стать богатым-знаменитым, нужно построить свою Церковь. Слова приписывают Рону Хаббарду, но вроде бы он этого не говорил. Униформа есть. Кадеты Глубины - служители. Правильной дорогой идёте, товарищи!

Картинка про архитектуру, где сердце - Hasura. Голосую всеми четырьмя лапами! С 2018-ого года бегаю с Хасурой, и пытаюсь везде её применить. R&D с открытым кодом: маркет-плейс на Flutter (на паузе, 850 серий лайв-кода), клон Трелло на React (продолжаю 276 дней). Вам надо бы ещё воткнуть Temporal.io (через Hasura Events - Microservice API) + Kafka (через Hasura Events - Event queue).

А прошлый инвестор... ирония заключается в том, что мы его просто уволили с проекта. Он сохранит за собой свою долю (Ваня болезненно честен, щепетилен в этом вопросе, и ценит участие даже при потерянном доверии), но думаю, вскоре эту долю просто выкупят. У человека был шанс, но теперь его ждёт только забвение. Даже имя его я не стал упоминать, если вы обратили внимание. 


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

Почему хак? Красота! Язык фактически принуждает тебя к этому решению.

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

panic нельзя игнорировать без того, что бы программа не упала.

В чём разница errors.Is() и errors.As()

package main

import "errors"

type MyError struct {
  message string
}

func (e MyError) Error() string {
  return e.message
}

func main() {
  err := MyError{"My custom error"}
  println(errors.Is(err, MyError{"My custom error"})) // true
  println(errors.As(err, &MyError{})) // true
}

Внедрили свой OverflowAI

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

А почему -race не детектит гонку данных для примера кода выше?

Решили написать свое решение. 

Что помешало научиться готовить temporal.io (единорог, на минуточку)? Пилить инфраструктурный велосипед - это значит откладывать на потом "business value".

Ещё один пример в мою коллекцию:
https://habr.com/ru/companies/oleg-bunin/articles/418235/
https://habr.com/ru/companies/ozontech/articles/590709/

В GoLang отсутствуют ссылочные типы данных, но вместо них используются указательные типы данных. Указатели в GoLang позволяют работать с данными по их адресу в памяти. Указательные типы данных в GoLang позволяют эффективно работать с данными и передавать их по ссылке, что может быть полезно во многих ситуациях.

В GоLang нет ссылок, только указатели (ссылки есть в c/c++). У переменой есть значение, адрес ссылки это адрес значения, а указатель на значение имеет свой собственный адрес (​это очень грубое объяснение).

Кошмар для UGC сайтов. Но фарш невозможно провернуть назад. Надо учиться теперь с этим жить.

Это отправная точка. Если относиться к LLM с фигой в кармане, то можно получать некоторую выгоду.

"Огласите весь список, пожалуйста!"

slices, maps, channels, pointers, interfaces, functions, strings.

Почему для “type parameters” квадратные скобки, когда угловые для генериков в Java, C#, C++, TypeScript и Dart?

Вероятно, по аналогии с объявлением типа для ключей мапы: map[int]bool

И чтобы дистанцироваться от генериков в других языках, т.к. нет возможности создавать классы или интерфейсы с “type parameters”. Вместо этого можно использовать обобщенные функции и методы.

Всем известна простая истина - в Go абсолютно все передается по значению.


А вот что рассказывает робот по теме "Ссылочные типы данных":

Ссылочные типы данных в GoLang - это типы данных, которые хранятся в системной куче (heap) и передаются по ссылке, а не по значению. Это означает, что при передаче ссылочного типа данных в функцию, функция работает с оригинальным объектом, а не с его копией. Некоторые из ссылочных типов данных в GoLang:

  • Срезы (slices) - это динамические массивы, которые представляют собой ссылку на последовательность элементов определенного типа.

  • Карты (maps) - это ассоциативные массивы, которые представляют собой ссылку на набор пар ключ-значение.

  • Каналы (channels) - это механизм для обмена данными между горутинами (goroutines) в многопоточной программе.

  • Указатели (pointers) - это переменные, которые хранят адрес в памяти другой переменной.

  • ?? Структуры (structs) - это пользовательские типы данных, которые могут содержать поля разных типов.

  • Интерфейсы (interfaces) - это типы данных, которые определяют набор методов, которые должны быть реализованы для типа данных, чтобы он удовлетворял интерфейсу.

  • Функции (functions) - это типы данных, которые могут быть переданы в качестве аргументов другим функциям или возвращены из функций.

Все эти типы данных являются ссылочными в GoLang и передаются по ссылке, а не по значению.

Нельзя сравнивать []int{1,2,3} == []int{1,2,3}, в отличии от [3]int{1,2,3} == [3]int{1,2,3}

Поправка:

В GoLang тип данных struct является составным типом данных, который объединяет несколько полей разных типов данных в один объект. struct не является ссылочным типом данных, а является значимым типом данных, то есть при передаче struct в функцию или присваивании его переменной происходит копирование значений его полей. Однако, при передаче struct в функцию в качестве аргумента, происходит передача его копии, что может быть неэффективно для больших struct. В таких случаях можно использовать указатели на struct.

Да почему "лажа"? Это отправная точка. Если относится к LLM с фигой в кармане, то можно получать некоторую выгоду.

Добавил про Channel Axioms к 9-му вопросу.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность