
Oleg
12.05.2017
06:50:33
Что такое быдлокод?:)
Это код, с которым взаимодействовать невозможно.
Код, который по своим понятиям общается.
Код, с которым придется бороться не на жизнь, а на смерть, т.к. по-нормальному от него чего-то добиться не получится.

Andrey
12.05.2017
06:53:26
не, ну если ему по понятиям СОЛИДных людей заяснить, думаю, одумается

?FLERRY?
12.05.2017
06:59:33
?

Google

?FLERRY?
12.05.2017
07:02:16
объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы
Википедия, мать ее

Alexander
12.05.2017
07:22:16
Понятно всё, вы чо. Но практического смысла не очень много, если уже есть какой-то опыт разработки
А если нет, то людям непонятно
?

Maxim
12.05.2017
07:31:00
вот тут-то я и проиграл

Aleksandr
12.05.2017
07:47:27

Alexander
12.05.2017
07:58:52
практического не очень много, особенно сейчас. теоретический наверное есть

Anton
12.05.2017
08:02:02
но это же solid
я думаю в нем есть смысл даже сейчас

Alexander
12.05.2017
08:05:41
но это неточно(с) :)

Anton
12.05.2017
08:06:42
)))

Maxim
12.05.2017
08:16:54

Google

Maxim
12.05.2017
08:37:07
кто-нибудь юзал container/heap?
он потокобезопасный?
вроде как нет, ну ладно

Aleksandr
12.05.2017
08:41:12

Alexander
12.05.2017
08:42:57
то как оно работает – это конкретная реализация, и решения авторов языка. тезисы лисков настолько абстаркты что применимы много к чему. на практике нас интересуют детали

?FLERRY?
12.05.2017
08:43:05
очень понятно написано
я вполне себе понимаю это, но читая определение с википедии это непонятно моментально, во всяком случае у меня так было, хоть и давненько
в отличие от остальных принципов

Aleksandr
12.05.2017
08:45:26

Alexander
12.05.2017
08:47:51
More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address titled Data abstraction and hierarchy
до 87 года не было интерфейсов или чего-то подобного в ЯП?

Aleksandr
12.05.2017
08:49:58
да, не только интерфейсы, но и наследование где оно есть итд. в общем в разных языках есть реализации, и на этих реализациях основано современное программирование. Поэтому тезис что это не актуально, не верен.

Alexander
12.05.2017
08:55:00
тезис не полезен на практике и замутняет мозг неофитам из-за своей абстрактности, не неофитам он тоже уже не нужен, потому что они столкнулись уже с конкретными реализациями. его полезность тока теоретическая чтобы абстрактно дискутировать о программировании в общем, без конкеретики.
чем мы и занимаемся последние -цать минут :)

m
12.05.2017
08:56:49

Aleksandr
12.05.2017
08:57:06
как может быть не полезен тезис, реализациями которого ты пользуешься каждый день в работе?

Alexander
12.05.2017
08:58:26
см. выше

Aleksandr
12.05.2017
08:59:01

Alexander
12.05.2017
08:59:02
это не реализации, наоборот принцип описывает абстрактно то что уже есть в ЯП
И зачем тезис объяснять, если вы не в академии? на практике то он не нужный, лучше объяснить что-такое интерфейсы и как они реализованы в конкретных ЯП и почему так.

Google

Aleksandr
12.05.2017
08:59:27

Alexander
12.05.2017
08:59:41
важна, в академиях
я про практику программирования, которое ремесленный навык, а не инженерный или абстрактно математический

Aleksandr
12.05.2017
09:00:37
тогда теоретические книги по парадигмам прогарммирования можно вообще не читать. только учебники по конкретным языкам. остальное оставим академикам.

Alexander
12.05.2017
09:01:49
это правда. можно не читать, но можно почитать если интересно теоретическую базу прокачать

Aleksandr
12.05.2017
09:04:34

Alexander
12.05.2017
09:05:45
ну ок, у меня протовоположно мнение. только практика может прокачать в таком прикладном скилле как программирование, теория не будет понятна и будет применятся неправильно без солидной практики

Alexander
12.05.2017
09:06:03
На самом деле принцип подстановки Лисков очень простой и большинство программистов придерживается его на интуитивном уровне. Но академическое определение действительно может ввести в ступор :)

Alexander
12.05.2017
09:06:16
на этом предлагаю закончить спор, каждый высказал своё мнение

Anton
12.05.2017
09:06:52
и все-таки LSP не только о наследованиии, а еще и о API, так что не вижу тут капитанства в нем

?FLERRY?
12.05.2017
09:09:07

Alexander
12.05.2017
09:12:02
я ничего против Liskov, SOLID и абстрактных знаний не имею, если чо
пугает просто религиозность в отношении к ним и черезмерное внимание к принципам а не к реальной практике (смотри посты от разных авторов про то как надо правильно писать SOLID-программы)

Мерлин
12.05.2017
14:16:59
Используете ли вы системы сборки?
ничего – 12
??????? 44%
make – 10
?????? 37%
другое – 3
?? 11%
gb – 1
? 4%
gulp o_O – 1
? 4%
gradle O_o
▫️ 0%
? 27 people voted so far.

Constantine
12.05.2017
14:17:53
ааа, только один вариант
ну как так

Мерлин
12.05.2017
14:18:27

⠀
12.05.2017
14:18:35
webpack

Ruslan
12.05.2017
14:19:10
webpack
в приличном обществе о таком не говорят

Мерлин
12.05.2017
14:19:23

Mars
12.05.2017
14:20:31
Я использую make, а внутри уже и webpack и xgettext и много чего еще

Google

Ruslan
12.05.2017
14:20:35

Мерлин
12.05.2017
14:22:13

Mars
12.05.2017
14:22:52

Мерлин
12.05.2017
14:23:07
ну тогда норма
У меня есть знакомый, который грейдлом go собирает

Илья
12.05.2017
14:26:06
у меня как то make + gb
тк одного костыля недостаточно

Alexey
12.05.2017
14:26:41
Подскажите пожалуйста.
Мне нужно внутри go выполнить команду ffmpeg.
На вход я передаю mp4 файл в виде resp.Body от http запроса, который выполнился до этого куска кода
cmd := exec.Command("ffmpeg",
"-f", "lavfi",
"-i", "anullsrc=channel_layout=stereo:sample_rate=44100",
"-i", "pipe:0",
"-shortest", "-c:v", "copy", "-c:a", "aac",
"output.mp4")
cmd.Stdin = resp.Body
cmd.Run()
На выходе после cmd.Run() хочу получить объект io.Reader, как результат работы ffmpeg, который можно было бы потом скормить телеграм боту
reader := tgbotapi.FileReader{Name: "test", Reader: output, Size: int64(contentLength)}
file := tgbotapi.NewDocumentUpload(messageChatID, reader)
код по ffmpeg выше сейчас сохраняет на диске output.mp4, тем саммым показывая, что передача resp.Body в пайп работает.
Нокак сделать, чтобы на выходе еще был результат обработки в виде объекта, а не файла, я не понимаю ?

Мерлин
12.05.2017
14:26:57
хотелось бы что-то типа build.go в корне проекта
было бы очень удобно


Mikalai
12.05.2017
14:29:40
Подскажите пожалуйста.
Мне нужно внутри go выполнить команду ffmpeg.
На вход я передаю mp4 файл в виде resp.Body от http запроса, который выполнился до этого куска кода
cmd := exec.Command("ffmpeg",
"-f", "lavfi",
"-i", "anullsrc=channel_layout=stereo:sample_rate=44100",
"-i", "pipe:0",
"-shortest", "-c:v", "copy", "-c:a", "aac",
"output.mp4")
cmd.Stdin = resp.Body
cmd.Run()
На выходе после cmd.Run() хочу получить объект io.Reader, как результат работы ffmpeg, который можно было бы потом скормить телеграм боту
reader := tgbotapi.FileReader{Name: "test", Reader: output, Size: int64(contentLength)}
file := tgbotapi.NewDocumentUpload(messageChatID, reader)
код по ffmpeg выше сейчас сохраняет на диске output.mp4, тем саммым показывая, что передача resp.Body в пайп работает.
Нокак сделать, чтобы на выходе еще был результат обработки в виде объекта, а не файла, я не понимаю ?
А если вместо output.mp4 передать '-' ?


Alexey
12.05.2017
14:30:22
пробовал... но не понятно в какой переменной ловить аутпут?

Mikalai
12.05.2017
14:31:23

Мерлин
12.05.2017
14:34:07

Alexey
12.05.2017
14:35:42

Илья
12.05.2017
14:49:58
хм
см что-нибудь такое pr, pw := io.Pipe()
tr := io.TeeReader(u, pw)
даже pipe, наверное, хватит

Alexey
12.05.2017
14:51:48

Илья
12.05.2017
14:53:06
ну, я не вдавался в подробности, но, думаю, горутина, которая занимается транскодингом может получать pipe, писать в pipewriter, а другая горутина pipereader отправить в telegramapi

Google

Илья
12.05.2017
14:54:08
см https://garbagecollected.org/2015/05/30/io-with-go-io-pipe/
я понятно выражаюсь? :)


Aleksandr
12.05.2017
14:59:29
Подскажите пожалуйста.
Мне нужно внутри go выполнить команду ffmpeg.
На вход я передаю mp4 файл в виде resp.Body от http запроса, который выполнился до этого куска кода
cmd := exec.Command("ffmpeg",
"-f", "lavfi",
"-i", "anullsrc=channel_layout=stereo:sample_rate=44100",
"-i", "pipe:0",
"-shortest", "-c:v", "copy", "-c:a", "aac",
"output.mp4")
cmd.Stdin = resp.Body
cmd.Run()
На выходе после cmd.Run() хочу получить объект io.Reader, как результат работы ffmpeg, который можно было бы потом скормить телеграм боту
reader := tgbotapi.FileReader{Name: "test", Reader: output, Size: int64(contentLength)}
file := tgbotapi.NewDocumentUpload(messageChatID, reader)
код по ffmpeg выше сейчас сохраняет на диске output.mp4, тем саммым показывая, что передача resp.Body в пайп работает.
Нокак сделать, чтобы на выходе еще был результат обработки в виде объекта, а не файла, я не понимаю ?
а resp.Body не закроется раньше, чем кодирование закончится?


Alexey
12.05.2017
15:03:36
но я выше писал, что код по ffmpeg, что я показал сейчас сохраняет на диске output.mp4, тем саммым показывая, что передача resp.Body в пайп работает.

Мерлин
12.05.2017
15:07:06
https://medium.com/@cep21/preemptive-interface-anti-pattern-in-go-54c18ac0668a

Alexey
12.05.2017
15:08:09
я понятно выражаюсь? :)
посмотрел, понял пока на до конца... не понятно как это поможет забрать результат обработки ffmpeg

Мерлин
12.05.2017
15:09:00

Alexey
12.05.2017
15:09:15

Aleksandr
12.05.2017
15:10:20

Мерлин
12.05.2017
15:11:12
И обязательно нужно проверять на ошибку
Go дайджест. События, статьи, интересные проекты из мира Go (1 — 12 мая 2017)
Всем привет!
В этом дайджесте представлены лучшие статьи за прошедшую неделю, а также новости, события и проекты, заслуживающие ваше внимание.
Новости, События
— Gobot 1.5 EN
— Релиз 3.1.0 веб-фреймворка echo EN
...
https://tehnojam.pro/category/development/go-dajdzhest-sobytija-stati-interesnye-proekty-iz-mira-go-1--12-maja-2017.html
http://golangshow.com/online/

Ighar
12.05.2017
15:29:44

Мерлин
12.05.2017
15:30:19
Иначе было бы странно

Ighar
12.05.2017
15:30:56
? это да