
Meow
10.05.2018
08:02:24
Мне нравятся строго типизированые языки
И компилируемые

Anton
10.05.2018
08:02:35
ясно, ок

Meow
10.05.2018
08:02:53
Либу для ботов для себя тоже написал:
https://github.com/floodcode/tgbot

Google

Danil
10.05.2018
08:03:08

Meow
10.05.2018
08:04:44
Ну что нельзя делать такое:
var a = "Hello"
a = 123

Anton
10.05.2018
08:06:16
это называется статически типизированные

FRD Official - Dmitriy
10.05.2018
08:06:23

Anton
10.05.2018
08:06:39
строго, это когда нельзя 1 + '1'

Meow
10.05.2018
08:07:17

Alexey
10.05.2018
08:07:25
Типизация бывает (строгая и слабая) и (статическая и динамическая)

Kirill
10.05.2018
08:07:53

Anton
10.05.2018
08:08:13

Kirill
10.05.2018
08:08:28

Alexey
10.05.2018
08:08:40

Anton
10.05.2018
08:08:44
строгая (сильная) типизация не позволяет делать неявных преобразований типов

Google

Anton
10.05.2018
08:09:24
а статическая - типы известны и заданы на этапе компиляции
в го и то и то

Kirill
10.05.2018
08:09:59
Эмм... чет вроде это все про статическую

Anton
10.05.2018
08:10:01
но
var a = "Hello"
a = 123
это пример статической, а не строгой

FRD Official - Dmitriy
10.05.2018
08:10:17
https://play.golang.org/p/CWd-zO5RPDn
статическая и строгая децл о разных вещах

Anton
10.05.2018
08:10:51
так да
в руби например строгая динамическая

Alexey
10.05.2018
08:11:26

FRD Official - Dmitriy
10.05.2018
08:11:44

Meow
10.05.2018
08:11:50
Попробуй так же с string

FRD Official - Dmitriy
10.05.2018
08:12:01
не сработает
вообще статическая - это проверка на соответствие при сборке

Anton
10.05.2018
08:12:27
и строгая

Alexey
10.05.2018
08:12:29
В питоне, кстатти, строгая, но 5 * "abc" работает. Но это потому что там так задумано изначально

Dmitri
10.05.2018
08:12:50
Как-то не считал, но да на линухофорумах их больше
дык, киллер-фичей было то, что из доступных видимоплейеров нормально субтитры в свое время умел только MPlayer. А он линуксовый. И народ в погоне за халявным рисованным порно с русскими субтитрами РЕАЛЬНО бросал винду и переходил на линукс и фрибзд. "Как пропатчить KDE под FreeBSD" погугли... топовый запрос на анимушных форумах одно время был...

Anton
10.05.2018
08:13:17

FRD Official - Dmitriy
10.05.2018
08:13:52

Meow
10.05.2018
08:14:50
Просто анимешники "НИТАКИЕ КАК ФСЕ"

Dmitri
10.05.2018
08:15:19

Google

Elter
10.05.2018
08:15:29

Anton
10.05.2018
08:15:51

Dmitri
10.05.2018
08:16:35
Я думал, это просто шутка...
в каждой шутке есть доля... Я реально помню приседания с русскими субтитрами в анимехах под виндой. На линухе работало "искаропки"

Elter
10.05.2018
08:17:10

Dmitri
10.05.2018
08:17:30
еще в 2007-м GNU/MPlayer пользовался достаточно мощным спросом под виндой.
Да и VLC примерно по той же причине сильно в гору в свое время пошел среди анимушников, точнее, больше из-за кодеков, но и за субтитры тоже

Daniel
10.05.2018
08:19:19
Коллеги, не увлекайтесь :)

Dmitri
10.05.2018
08:19:25
короче, жесть была... Зато веселая... Я цистерны 2 пива выпил за настройку отображения субтитров...
Ок, завязали)

Elter
10.05.2018
08:20:24
уже и забыл про этот "мем"

asterisk
10.05.2018
08:30:59
контекст - он такой контекст...
Скажем, ситуации "я хочу потрогать игру, в которую я собираюсь играть, до выпуска, и за это издатель имеет меня в качестве бесплатного бета-тестера" и "кто-то хочет, чтобы я забесплатно потестил его телеграм-бота, но не хочет мне говорить, что этот бот делает" - достаточно разные ситуации. Тут различие не то чтобы техническое, оно, скорее, морально-этического плана.
А уж тем более зайти на технический или околотехнический канал, призвать всех-всех-всех затестить "myFirstHelloWorldBot", заявить, что 200 строк кода не дашь посмотреть, потому что здесь а) никто не сможет написать такое же, б) вы у меня мой ценный код спиздите... Ну, так себе подача, например.
Спасибо

mstrVLT
10.05.2018
08:35:28
А может и моего бота посмотрите?
https://gist.github.com/MstrVLT/834f03208c69f823bb99554c28aeca4e
Есть сервер сборок Jenkins - бот просто оповещает о новых сборках на которые подписался пользователь

Pawel
10.05.2018
08:43:17

Artem
10.05.2018
08:44:30

Artem
10.05.2018
08:55:38

mstrVLT
10.05.2018
08:56:29
а можно по развернутее )

Artem
10.05.2018
08:56:35
а тут как минимум допольнительный уровень вложенности почти во всех функциях, зачем?

mstrVLT
10.05.2018
08:56:37
думаю было бы полезно узнать

Google

Алекс
10.05.2018
08:57:47
уважаемые, а никто не сталкивался со странными тормозами при использовании runtime.GOMAXPROCS(runtime.NumCPU())?

Alexey
10.05.2018
08:58:07

Artem
10.05.2018
08:58:25
а можно по развернутее )
Ну, можно написать как у вас, а можно что-то вроде:
if err != nil {
return nil, err // условно
}
// далее идет уже логика, которая отрабатывает если ошибки не было и все ок
этот вариант как правило как минимум читабельнее

mstrVLT
10.05.2018
08:59:52
в некоторых случаях я согласен да - но есть хитрые кейсы которые надо обрабатывать немного иначе - а времени подумать о красоте как всегда нетю (

Artem
10.05.2018
09:00:25
ну и в вашем случае получается, что обработка нормального повидения убрана на уровень вложенности ниже, а обработки ошибки вообще нет

Admin
ERROR: S client not available

Vladimir
10.05.2018
09:00:31
обычно код который полагается на штатную работу длинее чем обработка ошибки )

mstrVLT
10.05.2018
09:02:02
?согласен согласен

Dmitri
10.05.2018
09:02:48
думаю было бы полезно узнать
как правило, конструкции вида if err == nil {} не очень хорошо пахнут по 3 причинам, имхо:
1. обычно это способ проигнорировать обработку ошибки. Т.е. читать как "если ошибка не возникла, делаем вот этот правильный код, а если возникла - насрать"
2. если ошибку все же захочется обработать, появится else, а это уже -100500 к читабельности всей этой штуки, оно уже "спагетти"-запах приобретает
3. чаще всего принято делать так: в if err != nil совать обработку ошибки и возвращаться из функции. Как правило, "правильный флоу" у функции один, и в этом варианте все, что пошло "нестандартно" будет в отдельном уровне, а значит, будет проще понять, ЧТО на самом деле функция должна делать.


mstrVLT
10.05.2018
09:08:37
как правило, конструкции вида if err == nil {} не очень хорошо пахнут по 3 причинам, имхо:
1. обычно это способ проигнорировать обработку ошибки. Т.е. читать как "если ошибка не возникла, делаем вот этот правильный код, а если возникла - насрать"
2. если ошибку все же захочется обработать, появится else, а это уже -100500 к читабельности всей этой штуки, оно уже "спагетти"-запах приобретает
3. чаще всего принято делать так: в if err != nil совать обработку ошибки и возвращаться из функции. Как правило, "правильный флоу" у функции один, и в этом варианте все, что пошло "нестандартно" будет в отдельном уровне, а значит, будет проще понять, ЧТО на самом деле функция должна делать.
Полезно!


Alexandr
10.05.2018
09:50:14
Подскажите товарищи, как быть если при получении json я получаю пустое поле.
В моей структуре куда я анмаршаллю - это поле имеет тип float64, а если в json есть данные, то анмаршаллится нормально, но если это поле приходит пустое, то появляется ошибка.
panic: json: cannot unmarshal string into Go struct field OpenData.mydata type float64

Kirill
10.05.2018
09:51:07
сделай поле ссылкой на флоат?

Alexandr
10.05.2018
09:54:28
ща попробую.. я в структуре поле удалил вообще, а ошибка осталась. что за нафиг
а нет, заело видимо. Так сейчас попробую ссылкой
нет, не поменялось

The
10.05.2018
10:07:09
,string
хотя, если оно в JSON либо как число, либо как строка, то это не поможет.

Alexandr
10.05.2018
10:09:20
,string
json: invalid use of ,string struct tag, trying to unmarshal "" into float64

The
10.05.2018
10:11:44
тогда сделай его типом MyFuckingFloat64OrString от базового float64, и имплементируй json.Unmarshaler

Google

Alexandr
10.05.2018
10:12:18
Вот гемор... ща попробую.

The
10.05.2018
10:12:35
либо всю структуру имплементируй Unmarshaler

Alexandr
10.05.2018
10:14:26

Sam
10.05.2018
10:14:44
Возможно, но было такое.

The
10.05.2018
10:17:09
ну я думаю лучше для поля. но если у тебя это поле часто участвует во всяких арифметических операциях, или передеается в аргументы фукнции, тебе придется его туда-сюда конвертировать, т.к. твой MyFuckingFloat нельзя будет сложить с тем типом, на котором он построен, например float64.

Daniel
10.05.2018
10:17:38
а точно нельзя перестать передавать поле то как число то как строку?

Alexandr
10.05.2018
10:18:11
видимо, нельзя ?

Daniel
10.05.2018
10:19:05
тогда только кастомный анмаршалер для конкретного поля
(что означает кастомный тип, и соответственно, конвертацию его во float64 при каждом сипользовании)

The
10.05.2018
10:20:40
Можно для красоты ему метод сделать, Float64() float64, но от конвертаций это особо не спасет

Alexandr
10.05.2018
10:20:48
А для чего нужен кастомный тип? Разве я не могу в кастомном анмаршаллере сделать проверку - если поле пустое, то конвертировать его в нужный мне float64 сразу

Daniel
10.05.2018
10:21:10
кастомный анмаршалер можно приписать только к кастомному типу

Pawel
10.05.2018
10:22:23
а добавить
`json:"mydata,omitempty"`
?

Daniel
10.05.2018
10:22:29

Pawel
10.05.2018
10:22:57

Dmitri
10.05.2018
10:23:12
Возможно, но было такое.
Тут концептуальная проблема еще есть. Смотри, чатик называется "pro.go", и посвящён он, предположительно, языку Go, проблематике, с ним связанной, и инструментарию вокруг, best-practices и всему вот этому.
Именно по этой причине собравшихся тут интересует, по большей части не "конечный продукт", а "как это работает" и "как сделать лучше". Т.е. тут принято кодом делиться, обмениваться опытом (предположительно, по факту, конечно, нет, тут просто флудят).
И тут ты предлагаешь потестить бота на Go, причем не показывая кода. Даже если предположить, что тут все готовы потрогать/потестить/заюзать что угодно, лишь бы оно на Go было... где гарантии, что именно твой бот на Go написан? А вдруг он на php, а ты - жестокий обманщик??? Это ведь получится, что я буду php-бота тестить!!!)))
Поэтому у тебя и спросили код, чтобы был пруф того, что ты по адресу.

Alexandr
10.05.2018
10:23:14