Home
golang
golang@conference.jabber.ru
Вторник, 19 апреля 2016< ^ >
Deirz установил(а) тему: Go Programming Language.
|| Изучаем: https://gobyexample.com/
|| Тур: http://tour.golang.org/
|| Как писать код: http://golang.org/doc/code.html
|| Как писать эффективный код: http://golang.org/doc/effective_go.html
|| FAQ: http://golang.org/doc/faq
|| 99% ответов о языке Go тут: http://golang.org/ref/spec
|| Сторонние либы: http://godoc.org/ https://github.com/avelino/awesome-go
|| Логи: http://chatlogs.jabber.ru/golang@conference.jabber.ru/
|| This chatroom does not adhere to any codes of conduct, be they implied or explicitly stated by someone. Your feelings can and WILL be hurt without a warning.
Конфигурация комнаты
Участники комнаты

GMT+3
[00:01:38] <Deirz> надо подумать и попробовать
[00:02:48] Magiq вошёл(а) в комнату
[00:02:48] mantyr@jabberon.ru вышел(а) из комнаты
[00:06:08] mantyr@jabberon.ru вошёл(а) в комнату
[00:17:58] kms вышел(а) из комнаты
[00:19:56] kms вошёл(а) в комнату
[00:24:01] <Deirz> правильно я понимаю, что мне понадобится два стека - один для значений, другой для операций?
[00:24:56] <Deirz> т.е. есть у меня экспрешн (funcA a b c) + 3, которая преобразуется в (plus (funcA a b c) 3)
[00:26:32] <Deirz> сначала видим plus и кладём его в оп-стек, смотрим на его аргументы - видим funcA, кладём её на оп-стек, смотрим по очереди на a b и c, извлекаем значения переменных и кидаем их на val-стек
[00:26:34] <kpmý> значения это тоже expression
[00:27:05] <Deirz> потом достаём funcA с оп-стека, достаём три значения с val-стека и совершаем вызов
[00:27:09] <Deirz> всё так?
[00:29:07] Magiq вышел(а) из комнаты
[00:30:28] <Deirz> необходимо свести expression к value и потом уже сделать вызов
[00:30:34] <kpmý> ага
[00:32:18] <Deirz> kpmý: твои интерпретаторы прямо ast читали?
[00:32:39] <Deirz> или промежуточное представление запиливал?
[00:33:02] <kpmý> ну, бегали по дереву стейтментов и выражений.
[00:33:36] kms вышел(а) из комнаты
[00:34:14] plumbum вышел(а) из комнаты
[00:36:48] kms вошёл(а) в комнату
[00:41:50] <kpmý> промежуточное представление это просто сериализованное дерево
[00:41:59] <kpmý> в xml/zip
[00:42:22] <kpmý> пилил васмы ещё до того, как это стало мейнстримом)
[00:43:34] <Deirz> байткод какой-нибудь
[00:44:35] <kpmý> не, у меня всё довольно высокоуровнево было
[01:08:57] kpmý вышел(а) из комнаты
[01:29:50] kms вышел(а) из комнаты
[01:33:31] kms вошёл(а) в комнату
[01:36:17] krab вышел(а) из комнаты: Replaced by new connection
[01:36:19] krab вошёл(а) в комнату
[01:53:38] <Deirz> в обратной польской нотации дерево уже вывернуто наизнанку и экспрешны в листьях дерева находятся раньше экспрешнов в узлах
[01:54:50] krab вышел(а) из комнаты: Replaced by new connection
[01:54:52] krab вошёл(а) в комнату
[01:56:28] krab вышел(а) из комнаты: Left Vacuum-IM
[01:57:54] krab вошёл(а) в комнату
[02:00:45] krab вышел(а) из комнаты: Left Vacuum-IM
[02:06:03] krab вошёл(а) в комнату
[02:08:06] krab вышел(а) из комнаты: Left Vacuum-IM
[02:12:05] krab вошёл(а) в комнату
[02:12:43] kms вышел(а) из комнаты
[02:28:42] Deirz вошёл(а) в комнату
[02:33:49] kms вошёл(а) в комнату
[02:37:25] kms вышел(а) из комнаты
[02:41:56] krab вышел(а) из комнаты
[02:44:18] Deirz вышел(а) из комнаты
[03:10:28] Deirz вышел(а) из комнаты
[07:17:25] dzendmitry вошёл(а) в комнату
[07:32:55] cheshir вошёл(а) в комнату
[07:44:34] ascrazy@jabber.ru вышел(а) из комнаты
[08:12:38] plumbum вошёл(а) в комнату
[08:25:36] begemot_sun вошёл(а) в комнату
[08:25:39] plumbum вышел(а) из комнаты
[08:36:05] Laz вошёл(а) в комнату
[09:14:39] Magiq вошёл(а) в комнату
[09:31:28] Magiq вышел(а) из комнаты
[09:31:47] Magiq вошёл(а) в комнату
[09:33:18] <Magiq > пишу тесты подменяю объект db для тестов. Но если локально не запущен mysql всеравно выдает ошибку, потому что запускает init() в main.go
[09:33:21] <Magiq > что можно сделать ?
[09:40:46] <Laz> перенести код из init() в main()
[09:43:45] plumbum вошёл(а) в комнату
[09:46:37] <Magiq > логичноэ
[09:51:08] <Laz> давно уже вопрос мучает
[09:51:16] <Laz> чем evaluation отличается от computation?
[09:51:30] <Laz> у этих терминов вообще есть какое-то стандартное определение?
[09:52:05] avz вошёл(а) в комнату
[10:02:22] Magiq вышел(а) из комнаты
[10:02:48] Magiq вошёл(а) в комнату
[10:05:42] Magiq вышел(а) из комнаты
[10:06:14] Magiq вошёл(а) в комнату
[10:08:39] Magiq вышел(а) из комнаты
[10:10:30] Magiq вошёл(а) в комнату
[10:13:16] mks2 вошёл(а) в комнату
[10:14:35] unixlike вошёл(а) в комнату
[10:14:48] avz вышел(а) из комнаты
[10:15:04] <unixlike> Hi there !
[10:16:32] kpmý вошёл(а) в комнату
[10:30:26] mks2 вышел(а) из комнаты
[10:30:46] ermine вошёл(а) в комнату
[10:35:19] mks2 вошёл(а) в комнату
[10:55:33] <kpmý> evaluation over computation :)
[10:55:38] Magiq вышел(а) из комнаты
[10:57:17] kms вошёл(а) в комнату
[11:00:12] Magiq вошёл(а) в комнату
[11:21:45] Magiq вышел(а) из комнаты
[11:29:19] Magiq вошёл(а) в комнату
[11:31:05] Deirz вошёл(а) в комнату
[11:52:04] <Magiq > У меня тут такой вопрос не знаю даже как сформулировать
[11:52:28] <Laz> лучше всего в виде кода
[11:52:44] <Magiq > кодом сложно
[11:54:12] <Laz> ну давай человеческим языком тогда
[11:56:12] <Magiq > ща, в код пробую оформить
[11:59:21] <Magiq > блин я пока оформил код оказалось что у меня как-то не так работает))))
[11:59:46] <Magiq > т.е работает как нужно и вопросов нет
[12:01:49] <Laz> супер
[12:02:38] Deirz вышел(а) из комнаты
[12:03:34] Deirz вошёл(а) в комнату
[12:07:57] <unixlike> что лучше использовать для безопасного доступа(добавление/удаление) к массиву, чтобы не возникало таких ситуаций
[12:08:01] <unixlike> http://play.golang.org/p/pVeJjeTxpo
[12:08:43] <unixlike> предположим if i == 2 { int_array = append(int_array[:0], int_array[0+i:]...)  }   выполняется в другой горутине в тот момент когда в этой горутичне идет чтение
[12:25:59] <kpmý> использовай мудекс
[12:29:39] <unixlike> kpmý:Спасибо ! Буду курить что это
[12:31:42] <Magiq > http://play.golang.org/p/wRFLyjU34j
[12:31:44] <Magiq > почему не работает
[12:31:56] <Magiq > именна переменных изменено, не спрашивайте только зачем все это
[12:33:38] <Magiq > *имена переменных изменены
[12:34:42] <Laz> потому что так нельзя делаьт
[12:34:51] <Laz> доставай значение из мапа, изменяй, клади обратно
[12:39:15] <Magiq >     хорошо я понял
[12:46:39] radioqt вошёл(а) в комнату
[12:52:06] mantyr@jabberon.ru вышел(а) из комнаты
[13:31:58] Magiq вышел(а) из комнаты
[13:38:59] radioqt вышел(а) из комнаты
[13:51:55] Deirz вышел(а) из комнаты
[13:52:11] Deirz вошёл(а) в комнату
[14:00:29] <unixlike> вроде запилил с мутексами . Как я понимаю там все верно только сама функция мейн неправильная , а с несколькими горутинами будет норм работать
[14:00:36] <unixlike> http://play.golang.org/p/9Z-YDBMcy4
[14:08:27] <Laz> Unlock() принято пихать в defer
[14:09:21] <Laz> да и мутекс можно приватным сделать
[14:09:51] <Laz> Set и Get тоже должны сериализовывать доступ к слайсу
[14:10:11] <Laz> зачем 38-я строчка?
[14:10:13] Deirz вошёл(а) в комнату
[14:12:10] Magiq вошёл(а) в комнату
[14:17:13] Deirz вышел(а) из комнаты: Disconnected
[14:17:27] Deirz вошёл(а) в комнату
[14:21:32] Magiq вышел(а) из комнаты
[14:30:38] <unixlike> Laz:
Блокировать на момент чтени
[14:31:07] <Laz> што?
[14:31:20] <unixlike> переменную array
[14:31:31] <unixlike> внутри MutexArray
[14:31:58] <Laz> это ты мне к чему пишешь?
[14:32:34] <unixlike> ответ на вопрос:
зачем 38-я строчка
[14:32:59] <Laz> а
[14:33:02] <Laz> ну это ошибка
[14:33:47] <unixlike> ну да я понял это ошибка теста , а если бы  my_int_array.RemoveItem(i) выполнялся из другой горутины то все было бы норм
[14:33:58] <Laz> вряд ли
[14:34:25] <unixlike> заблокировалось бы на время либо чтение либо удаление
[14:34:55] <Laz> а, ты в одной рутине лочишь и итерируешь по массиву, а в другой удаляешь?
[14:35:16] <Laz> тогда ок
[14:35:38] <Laz> я бы, правда, предпочёл другой интерфейс
[14:35:58] <Laz> но в го так не выйдет :)
[14:36:25] <unixlike> Laz:Спасибо!
[14:39:03] <Laz> велкам
[14:39:21] <kpmý> не нужно возвращать array
[14:39:51] <kpmý> потому что внутри слайсов сложная система поинтеров и прочей хуеты
[14:40:18] <kpmý> лучше вернуть канал и по нему ходить с помощью range
[14:43:16] <unixlike> в канал кто-то должен писать и из него читать - блин неохота с этим
заморачиваться. Мне главное чтобы не срабатывала index out of range
[14:43:49] <unixlike> я так понял решение предложенное мной позволит избежать ошибок такого рода
[14:44:03] <Laz> методы Get и Set убери тогда
[14:44:15] <Laz> а если хочешь наверняка, переходи на агду
[14:44:22] <Laz> недавно как раз новая версия вышла
[14:45:54] <unixlike> Laz: в принципе можно и убрать , еще раз спасибо
[14:46:35] <Laz> хотя нет
[14:46:40] <Laz> это я гоню
[14:46:56] <Laz> правильнее будет сделать array приватным
[14:47:02] <Laz> а из Get возвращать его копию
[14:47:28] <Laz> кароче, надо на задачу смотреть
[14:47:40] <unixlike> ну он ведь и так приватный , раз сс маленькой буквы
[14:48:04] <Laz> точняра
[14:59:04] Deirz вышел(а) из комнаты
[14:59:07] Deirz вошёл(а) в комнату
[15:07:16] Magiq вошёл(а) в комнату
[15:12:46] Magiq вышел(а) из комнаты
[15:15:03] <kpmý> unixlike: лучше час потерять, а потом за 5 минут долететь
[15:15:44] <unixlike> kpmý : ты думаешь через канал быстрее будет ?
[15:21:55] <kpmý> правильнее
[15:25:37] Magiq вошёл(а) в комнату
[15:27:05] <kpmý> плюс я думаю, тебе правильнее применить RWMutex
[15:27:14] <kpmý> потому что читать массив можно и вместе
[15:27:22] <kpmý> а вот записывать только в одну харю
[15:41:12] <unixlike> kpmý : Спасибо !
[15:45:34] <unixlike> а с помощью пакета sync можно ли создать внутри модуля например переменную , которая пронициализурется вызовом функции из этого модуля и потом когда другие модули будут импортировать этот модуль они бы видели эту переменную ?
[15:47:44] <kpmý> для этого есть функция init, разве нет?
[15:47:57] <kpmý> не очень понимаю, зачем тут sync
[15:49:54] <unixlike> то есть функция init выполниться только при первом импорте этого модуля ?
[15:50:30] <Laz> импорт тащмта не выполняется
[15:50:33] <Laz> в рантайме
[15:51:00] <kpmý> ну, при загрузке бинарника, а импорт это просто пожелание использовать объекты из модуля, который уже готов (по идее)
[15:51:33] <Laz> ну да
[15:51:51] <Laz> я к тому, что нет первого импорта или второго импорта
[15:52:34] <kpmý> импорт это не действие, короче, это указание
[15:52:52] <kpmý> а так да, есть main, а есть init которая точно выполнится перед main
[15:53:18] <Laz> типа отго
[15:53:26] <Laz> импорт не является термом языка
[15:53:31] <Laz> и не вычисляется
[15:53:39] <Laz> блин, не силён я в этих всех теориях
[16:35:52] Magiq вышел(а) из комнаты
[17:06:56] kms вышел(а) из комнаты
[17:46:19] Magiq вошёл(а) в комнату
[17:50:03] kms вошёл(а) в комнату
[18:01:40] krab вошёл(а) в комнату
[18:02:29] <kpmý> у wasm такая охуенная подробная документация :D
[18:02:39] <kpmý> //на самом деле нет
[18:03:15] cheshir вышел(а) из комнаты
[18:08:43] kpmý вышел(а) из комнаты
[18:14:49] Magiq вышел(а) из комнаты
[18:19:47] mantyr@jabberon.ru вошёл(а) в комнату
[18:26:18] Laz вышел(а) из комнаты
[18:32:26] krab вышел(а) из комнаты
[18:39:31] krab вошёл(а) в комнату
[18:43:55] 5UN5H1N3 вошёл(а) в комнату
[18:45:00] plumbum вышел(а) из комнаты
[19:45:31] unixlike вышел(а) из комнаты
[19:55:39] Deirz вышел(а) из комнаты
[20:07:27] 5UN5H1N3 вышел(а) из комнаты
[20:09:31] dzendmitry вошёл(а) в комнату
[20:09:39] dzendmitry вышел(а) из комнаты
[20:11:42] postman вошёл(а) в комнату
[20:12:30] <postman> я объебался.
[20:18:30] <ermine> кто-нибудь пишет гуй на говядине?
[20:18:41] Deirz вошёл(а) в комнату
[20:19:05] <ermine> есть ли вообще полноценный гуй на говядине?
[20:20:09] <postman> это плохая идея.
[20:20:24] <Deirz> postman, опять аниму по вене пускал?
[20:20:37] <postman> не, на работу устроился.
[20:21:34] <Deirz> кек
[20:22:02] <Deirz> теперь ты питономакака?
[20:22:12] <postman> не-а
[20:22:19] <postman> я вчера кароч сходил на собес.
[20:22:20] Deirz вышел(а) из комнаты
[20:22:33] <postman> а вмето собеса поработал евангелистов goвна.
[20:22:57] <postman> теперь переписываю ноджс-дрисню на goвно.
[20:23:26] <postman> и я уже хочу переломать пальцы авторам го-биндингов для Thrift.
[20:24:03] <postman> (ну у нас фронтендер написал этот сервак за неделю)
[20:24:32] <postman> и там один хэндлер на 400 строк со свитчами внутри.
[20:24:49] <postman> (надеюсь, в goвне это будет лучше выглядеть)
[20:25:41] <postman> они мне еще не хотели верить, что goвноприложения собираются статически, пока я про -tags netgo не вспомнил.
[20:26:05] <postman> 1.6 чет пиздец долго конпелирует на моем калькуляторе.
[20:27:01] <postman> они еще спрашивали, можно ли еще и пхп переписать.
[20:27:19] <postman> так что я требую индульгенцию от пайка и кернигана.
[20:27:36] <postman> за мои прегрешения с нормальной обработкой ошибок в пистоне.
[20:27:59] Deirz вошёл(а) в комнату
[20:28:46] <Deirz> кек
[20:29:33] <Deirz> the toppest one
[20:29:48] <postman> молиться, поститься, if err != nil
[20:29:50] <Deirz> postman, ещё к хипстерам каким-то пришёл?
[20:30:00] <postman> в СТАРТАП
[20:30:05] <postman> но не к хипстерам.
[20:30:08] <Deirz> раз ты их уговорил за одно собеседование на го переписывать
[20:30:27] <postman> некому дножс поддерживать, как я понял
[20:31:39] <postman> если goвно по производительности проиграет днужс, я вас всех тут выибу.
[20:32:21] <Deirz> придётся на протобуф переделывать
[20:32:42] Deirz вышел(а) из комнаты
[20:33:09] <postman> ага, и приложения под ведро и айось, и еще несколько хуйней, ага.
[20:33:23] Deirz вошёл(а) в комнату
[20:33:27] <postman> я спросил, почему не протобуф, кстати, только не помню, что они мне ответили.
[20:34:23] <Deirz> тебе денег то заплатят то, в стартапе этом?
[20:34:25] kpmý вошёл(а) в комнату
[20:34:54] <postman> ага, только не спрашивай сколько, а то помрешь со смеху в своей мацкве.
[20:35:10] <kpmý> чё, постман галеру нашёл?
[20:37:01] <Deirz> скорее каяк
[20:37:10] <postman> ладью.
[20:37:10] <kpmý> каяк, каяк
[20:37:12] <Deirz> сколько там человек, в этом стартапе?
[20:37:23] <postman> не ебу.
[20:40:48] <kpmý> ну норм кстати единственный профессианальный гофер
[20:40:57] <kpmý> -> постман
[20:41:31] <kpmý> сразу там поставь систему сборки, кончиниус интеграцион
[20:41:43] <kpmý> короче оформи всё как хер)
[20:53:04] plumbum вошёл(а) в комнату
[20:53:15] cheshir вошёл(а) в комнату
[21:08:08] <mantyr@jabberon.ru> Так ты им что продал-то?:) Большую производительность по сравнению с Node.JS?:)
[21:16:09] <postman> kpmý: а какие у хера тесты?))))))0000
[21:18:00] dzendmitry вошёл(а) в комнату
[21:19:58] avz вошёл(а) в комнату
[21:43:11] <kpmý> this
[21:47:02] <postman> https://godoc.org/git.apache.org/thrift.git/lib/go/thrift — за такие фабрики фабрик нужно расстреливать нахуй.
[21:47:08] <postman> гноить в подвалах.
[21:48:45] <kpmý> TBINARYPROTOCOL smells like DELPHI
[21:49:59] <postman> смеллз лайк мессаджпак.
[21:50:20] <postman> я вообще не понял, почему пацаны взяли трифт, если рпц-функциональность не юзают.
[21:57:46] <kpmý> because fuck you, that's why
[22:01:06] <kpmý> зато ты узнаешь для нас, готов ли пщ для продукшона
[22:01:27] <kpmý> чотам у тебя вместо IDE?
[22:05:05] krab вышел(а) из комнаты: Left Vacuum-IM
[22:10:11] unixlike вошёл(а) в комнату
[22:10:25] cheshir вышел(а) из комнаты
[22:17:47] <postman> я из дома пока сижу.
[22:17:51] <postman> а дома у меня саблайм.
[22:17:58] plumbum вышел(а) из комнаты
[22:18:08] <postman> есть какие-то причины что-то другое юзать?
[22:18:26] <postman> ты там в идею небось пердолишься?
[22:22:33] <kpmý> на работе идеюшка, а дома liteide
[22:22:50] <postman> ну на goвне ты в чем пишешь?
[22:22:55] <unixlike> я в виме хуячу
[22:23:50] <kpmý> ну я на работе тоже liteide поставил, но чот потом вышел плагин пщ для идеи, поэтому я его поставил.
а дома для пщ liteide
[22:24:02] <unixlike> мне мышка только для копипаста нужна
[22:24:33] <postman> ну да, когда хоткей для копирования длиной в четыре клавиши, без мышки хуево.
[22:45:19] ftrvxmtrx вошёл(а) в комнату
[23:20:17] <Deirz> 3
[23:20:38] <Deirz> и этими тремя можно скопировать сразу нужный кусок
[23:20:53] <Deirz> yi" для копирования строки в "
[23:20:55] <Deirz> например
[23:28:50] <mantyr@jabberon.ru> Пишу в консольных редакторах:)
[23:31:00] Deirz вышел(а) из комнаты
[23:32:21] Deirz вошёл(а) в комнату
[23:46:41] Magiq вошёл(а) в комнату
[23:53:05] ermine вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!