@react_js
React — русскоговорящее сообщество

Обсуждаем React.js и экосистему. См. также: @reactnative_ru, @apollo_ru, @protonnative_ru, @nodejs_ru, @js_ru, @uiux_ru Вакансии и поиск работы: @javascript_jobs Правила: http://bit.ly/our_etiquette Sponsored with ❤️ by www.axept.co

5822 members

Архив канала @react_js 29 апреля 2016 г.

02:53:15 ДП
User 309556
мусора сосать
02:53:22 ДП
User 309556
сорян
02:53:48 ДП
User 309556
сложно бывает домой попасть
02:54:51 ДП
02:55:13 ДП
User 5065922
это чат о ректе?
мусора сосать!
03:03:22 ДП
03:38:05 ДП
User 198292089
User 191299276
можно брать оттуда идеи и переносить в жс
Особенно ленивость в js была бы очень кстати. Бесконечные коллекции и прочая красота.
03:40:08 ДП
User 198292089
User 125547436
Чем атом лучше саблайма в кратце?
Как минимум тем, что он на нашем любимом js и поэтому если кому-то будет чего-то не хватать всегда можно легко написать плагин.
03:44:21 ДП
User 198292089
А еще в нем есть developer tools. Так что если какой глюк всегда можно проинспектировать. Ну и стилики понравившееся можно выдирать к себе в проекты))
04:30:05 ДП
User 143141567
User 198292089
Как минимум тем, что он на нашем любимом js и поэтому если кому-то будет чего-то не хватать всегда можно легко написать плагин.
Из-за этого он так тормозит?)
05:51:13 ДП
User 153807368
<sarcasm>
всегда мечтал о редакторе, к которому нужно самостоятельно писать нужные мне плагины
ну и чтоб тормозил и глючил конечно
</sarcasm>
05:52:58 ДП
User 54357519
/stat@comstatbot
05:53:15 ДП
User 54357519
/stat@comstatbot
05:53:17 ДП
User 54357519
/stat@comstatbot
05:53:22 ДП
User 54357519
/stat@comstatbot
05:55:40 ДП
User 153807368
на пятый раз точно получится, попробуй
05:57:08 ДП
User 143141567
мы верим в тебя!
05:59:00 ДП
User 153807368
главное не сдаваться!
06:03:24 ДП
User 143141567
вся страна смотрит на тебя!
06:05:06 ДП
User 54357519
/stat@comstatbot
06:05:09 ДП
User 54357519
Всё для вас
06:06:06 ДП
07:09:06 ДП
07:33:04 ДП
User 4627228
User 192559518
Коллеги, встречаем! Слава вчера рассказывал про Relay и GraphQL. До этого он целый год с ним работал и даже делал свою реализацию.
07:36:54 ДП
User 192559518
hello world
07:37:04 ДП
User 192559518
у вас тут весело, смотрю
07:37:33 ДП
User 192559518
@chicoxyzzy долго еще сидели после меня?
07:39:18 ДП
User 192559518
@dmitriiabramov ты в fb работаешь?
07:39:52 ДП
User 134245543
клево, мне оч понравился митап :) правда доклады, как показалось, были коротенькие
07:40:01 ДП
User 192559518
формат такой
07:40:30 ДП
User 192559518
вечером на большие доклады нет времени
07:40:50 ДП
User 192559518
на самом деле доклады тут лишь повод
07:40:58 ДП
User 134245543
ну да, согласен, тем более всегда можно пообщаться лично
07:40:58 ДП
User 192559518
повод встретиться и поговорить
07:41:01 ДП
07:41:05 ДП
07:44:40 ДП
User 192559518
@DenisIzmaylov какие еще чаты в телеграмме?
07:45:03 ДП
User 192559518
надо ссылку с набором ссылок
07:51:16 ДП
User 1395200
Есть поди awesome list. Ссылка где-то пробегала.
07:51:47 ДП
User 192559518
я знаю список всех чатов от mr-mig
07:51:54 ДП
User 192559518
надо посмотреть там
07:52:34 ДП
User 86311207
https://github.com/A-gambit/awesome-telegram-chats
github.com/A-gambit/awesome-telegram-chats
Contribute to A-gambit/awesome-telegram-chats development by creating an account on GitHub.
07:52:42 ДП
User 86311207
Вот лови
07:53:15 ДП
User 192559518
ага, спасибо
07:53:28 ДП
User 192559518
а тут нет их, надо добавить https://github.com/mr-mig/ru-it-chats/blob/master/README.md
github.com/mr-mig/ru-it-chats/blob/master/README.md
ru-it-chats - This repo contains a list of various russian-speaking IT-related chats. Русскоязычные IT-чаты. Их есть у нас. Налейтай, торопись!
08:01:29 ДП
User 120647221
Ребят, а есть слайды с докладов или запись?
08:02:16 ДП
User 192559518
слайды поищи в твиттере @moscowjs
08:02:29 ДП
User 192559518
мои точно есть
08:03:11 ДП
User 192559518
видео будет не быстро, его надо обработать
08:04:04 ДП
User 120647221
спасибо)
08:10:59 ДП
User 189910313
User 4627228
Коллеги, встречаем! Слава вчера рассказывал про Relay и GraphQL. До этого он целый год с ним работал и даже делал свою реализацию.
а где то глянуть этот рассказ можно?
08:12:15 ДП
User 192559518
смотри пару сообщений выше
08:18:08 ДП
08:30:28 ДП
User 4627228
https://t.co/Q8WZgCMPlS
gist.github.com/vslinko/34dc982ee9fc85e2b0539e7fe98f2bb1
08:30:44 ДП
User 4627228
https://t.co/Yhm6RywOz5
slideshare.net/VyacheslavSlinko/graphql-relay
Viacheslav Slinko CIAN Group @vslinko GraphQL Relay and
08:30:51 ДП
User 4627228
Это к вопросу про слайды
08:42:29 ДП
08:44:05 ДП
User 153807368
товарищи, кто пользует redux-form, как считаете
для нового проекта стоит сразу брать 6.0.0-alpha или таки 5.2.1?
кто то обкатывал уже 6ую версию?
08:50:30 ДП
User 4627228
Offtop для тех, кому понравилась идея с эффектом CodeInTheDark https://github.com/codeinthedark/awesome-power-mode
github.com/codeinthedark/awesome-power-mode
Awesome Power Mode. Contribute to codeinthedark/awesome-power-mode development by creating an account on GitHub.
08:51:09 ДП
User 1682650
User 153807368
товарищи, кто пользует redux-form, как считаете
для нового проекта стоит сразу брать 6.0.0-alpha или таки 5.2.1?
кто то обкатывал уже 6ую версию?
5 точно не брать если большие формы
08:52:33 ДП
User 185980313
производительность?
08:56:27 ДП
User 153807368
вот как раз большие планируются, с complex данными
08:57:16 ДП
User 153807368
судя по репке товарищ активно занимается проектом, есть надежда в скором времени увидеть stable
08:58:03 ДП
User 153807368
User 185980313
производительность?
вот такой есть мега ишью на эту тему
https://github.com/erikras/redux-form/issues/529
github.com/erikras/redux-form/issues/529
Hi! I'm having some perf issues with a huge form I'm dealing with. The form has 83 fields (yeah.. I know.. but it is what it is) and typing on any input is impossible, as the input lags/hangs to the point where it becomes unusable. For e...
09:00:08 ДП
User 1682650
производительность в первую очередь
09:01:07 ДП
User 1682650
плюс неудобная работа со стейтом вообще. По крайней мере на мой взгляд. Если это не просто форма где показал-сохранил, а как то данные из нее еще используются, то код превращается в какашку
09:01:23 ДП
User 1682650
плюс очень сырокая либа, куча багов
09:05:08 ДП
User 153807368
но достойных альтернатив честно говоря я не нашел, для случаев сложных форм и данных
09:05:34 ДП
User 1682650
мы написали простенькую либу
09:05:34 ДП
User 153807368
пробовал react-redux-form и react-formal, не то
09:06:17 ДП
User 1682650
в принципе либа для формы ничего не должна делать кроме как соханять значение, сохранять поле как touched и вызывать валидацию на каждый чих
09:07:15 ДП
User 1682650
и удобно группировать значение поля, его touched и ошибку в объект, который передается в компонент
09:07:32 ДП
User 21727291
BaobabJS для форм по идее, хорош – там в ветках всё, и много-сценарные формы удобно реализовать
09:07:48 ДП
User 21727291
и Undo из коробки
09:07:59 ДП
User 1682650
все остальное очень опиньёнейтед, в том числе из-за этого сложно что то было под себя переделывать в redux-form
09:09:07 ДП
User 1682650
не знаю как можно использовать анду из коробки, если в приложении уже что то произошло за пределами формы из-за изменения значения в поле
09:09:40 ДП
User 21727291
если весь стейт всего приложения держать в Baobab
09:09:57 ДП
User 21727291
то каждый стейт сохраняется и можно откатить
09:10:10 ДП
User 21727291
*каждая версия
09:17:39 ДП
User 153807368
Baobab имхо черезчур для меня
09:21:56 ДП
User 153807368
http://redux-form.com/6.0.0-alpha.5/docs/MigrationGuide.md/

Array Fields
This part of v6 has not yet been written....

тоска печаль
redux-form.com/6.0.0-alpha.5/docs/MigrationGuide.md
The best way to manage your form state in Redux.
09:22:02 ДП
User 1682650
в редуксе тоже можно весь стейт откать назад, но я ни разу не видел, что бы это использовалось кроме как для дебага
09:23:33 ДП
User 155082981
ребят как у реакта с роутингом щас/
09:23:34 ДП
09:23:42 ДП
User 155082981
С редуксом норм вяжется ?
09:23:55 ДП
User 1682650
User 153807368
http://redux-form.com/6.0.0-alpha.5/docs/MigrationGuide.md/

Array Fields
This part of v6 has not yet been written....

тоска печаль
redux-form.com/6.0.0-alpha.5/docs/MigrationGuide.md
The best way to manage your form state in Redux.
кстати в нашей мини либе мы вообще не делали различий между типами полей и получилось что ничего особенного для массивов не нужно. ты всегда можешь заменить весь массив в своем стейте целиком. А все остальное (concat, delete etc) делать перед тем как отправить экшн на изменение значения
09:25:36 ДП
User 153807368
то есть передавали поле внутрь отдельного компонента как "documents" вместо "documents[${index}].some_field"?
09:26:24 ДП
User 153807368
годная идея
09:27:03 ДП
User 1682650
если нужно редактировать some_field, то передавали documents[${index}].some_field
если нужно было добавлять/удалять элементы в documents, то его целиком
09:27:33 ДП
User 1682650
у нас нет схемы как в redux-form, поэтому любой уровень в объекте может быть самостоятельные филдом
09:27:59 ДП
User 153807368
вот второе нужно как раз
09:28:18 ДП
User 153807368
надо обкатать на react-formal, в нем на массивах объектов пошли глюки и стал смотреть в сторону альтернатив
09:28:33 ДП
User 1682650
пока мне очень нравится что получается. будем допиливать и может выложим
09:29:06 ДП
User 153807368
желаю успеха, обязательно выкладывайте 👍
09:45:50 ДП
User 70738083
User 4627228
https://t.co/Yhm6RywOz5
slideshare.net/VyacheslavSlinko/graphql-relay
Viacheslav Slinko CIAN Group @vslinko GraphQL Relay and
мерси
10:11:14 ДП
User 4627228
Плагинчик к ESLint для валидации GraphQL
https://github.com/apollostack/eslint-plugin-graphql
github.com/apollostack/eslint-plugin-graphql
eslint-plugin-graphql - Check your GraphQL query strings against a schema.
10:12:27 ДП
User 4627228
Спасибо Косте Таркусу за ссылку)
11:12:01 ДП
User 152745946
Как вы предпочитаете делать, с bool пропсами
11:12:23 ДП
User 152745946
делать их не required, если по умолчанию false, или ставить defaultProps в false?
11:14:01 ДП
User 122105125
я по умолчанию ставлю всем required, а если это не возможно, то определяю дефолтное значение для него
11:14:13 ДП
User 122105125
в этом случае API становится чуть более явным на мой взгляд
11:16:21 ДП
User 152745946
да, тут согласен
11:17:42 ДП
User 122105125
@gusnkt https://github.com/JedWatson/react-select/blob/master/src/Select.js#L29-L131
github.com/JedWatson/react-select/blob/master/src/Select.js
react-select - The Select for React.js
11:21:55 ДП
User 152745946
только у него все не required
11:24:42 ДП
User 122105125
да, это так
11:24:57 ДП
User 122105125
я как пример хотел показать, как досканально можно описывать эти штуки
11:25:11 ДП
User 122105125
было круто потом еще доку для компенентов генерить по этим декларациям
11:36:50 ДП
User 152745946
я не понимаю, почему не появилось красивого генератора доков по propTypes
11:37:00 ДП
User 152745946
это же элементарно делается
11:39:44 ДП
User 4627228
https://github.com/kadirahq/react-storybook ?
github.com/storybooks/storybook
storybook - UI Component Dev Environment for React
11:41:34 ДП
User 122105125
@gusnkt вероятно внутри больших проектов и делают, правда никто наружу не выкладывает
11:41:43 ДП
User 122105125
а так да, там не сложно сделать
11:42:03 ДП
User 143141567
User 4627228
https://github.com/kadirahq/react-storybook ?
github.com/storybooks/storybook
storybook - UI Component Dev Environment for React
Цас пользуюсь этой вещью, довольно удобная
11:44:14 ДП
User 68520717
GitHub.com/sapegin/styleguidist кажется здесь используются проптайпы
11:45:03 ДП
User 68520717
https://github.com/sapegin/react-styleguidist
github.com/sapegin/react-styleguidist
react-styleguidist - React style guide generator
11:46:52 ДП
User 4627228
User 122105125
@gusnkt вероятно внутри больших проектов и делают, правда никто наружу не выкладывает
Сказал так, словно что-то там скрывает и не выдаёт наружу. Лёш, делись наработками ваших Яндекс-ниндзя :)
12:19:33 ПП
User 4627228
Коллеги, а кто в каком порядке методы в компонентах определяет?
1. constructor, lifecycle, handlers, sub-renders, render, utils
2. constructor, lifecycle, render, sub-renders, handlers, utils
3. constructor, utils, handlers, sub-renders, render, lifecycle
4. ...?
12:20:45 ПП
12:21:00 ПП
User 143141567
constructor, geters, lifecycle, render, handlers, utils
12:21:27 ПП
User 63637623
constructor, lifecycle, handlers, [sub-renders, utils,] render
12:21:35 ПП
User 143141567
хотя тут geters можно прировнять и utils/sub-render, но я их обычно в вверх выношу
12:21:45 ПП
User 143141567
приравнять*
12:22:32 ПП
User 4627228
интересно
12:24:03 ПП
User 1682650
а все придерживаются рекоммендации фейсбука и делают все компоненты в системе с уникальными именами7
12:25:49 ПП
User 1682650
я че то подзадолбался. Супер длинные имена уже
12:26:20 ПП
User 143141567
AnotherComponentInLeftSidebarOnAboutPage?:D
12:26:31 ПП
12:26:57 ПП
User 153807368
а как же реюзабельные компоненты?
12:27:03 ПП
User 185980313
Тоже за вариант - 
constructor, lifecycle, handlers, [sub-renders, utils,] render
В конце рендер удобно держать.
12:27:28 ПП
12:27:38 ПП
User 143141567
я рендер иногда вообще в отдельный файл выношу, тип template.js
12:27:50 ПП
User 153807368
constructor, lifecycle, ...whatever..., render
12:27:50 ПП
User 1682650
ну реюзабельные или нет, все равно их много
12:27:57 ПП
User 4627228
User 143141567
я рендер иногда вообще в отдельный файл выношу, тип template.js
почти Angular 2 )
12:28:27 ПП
User 4627228
User 1682650
ну реюзабельные или нет, все равно их много
containers?
12:28:33 ПП
User 4627228
medium.com/@DenisIzmaylov/application-and-universal-components-7b760f1d4831
medium.com/@DenisIzmaylov/application-and-universal-components-7b760f1d4831
I really like Dan Abramov. He created much cool things for React community. But there is one thing I really don’t like as an “old-school…
12:28:43 ПП
User 143141567
просто сейчас где я работаю, до этого кложур от гугла использовали, а там структура такая, что компонент это папка
12:28:49 ПП
User 1682650
хотя и так уже все сгруппировано по папкам, если бы не требование уникальных имен можно было бы сделать так:
AboutPage/LeftSidebat/User.js
12:29:00 ПП
User 143141567
и там два файла index.js/template.js
12:29:13 ПП
User 1682650
User 4627228
containers?
не обазательно
12:29:22 ПП
User 143141567
поэтому я чтобы не сбивать других коллег и им легче было перейти на React и вебпаки всякие
12:29:39 ПП
User 143141567
сохраняю такую идею, но template обычно только в контейнерах
12:29:45 ПП
User 143141567
а обычные компоненты в index.js помещаются
12:29:49 ПП
User 153807368
https://medium.com/@alexmngn/how-to-better-organize-your-react-applications-2fd3ea1920f1?utm_campaign=React%2BNewsletter&utm_medium=email&utm_source=React_Newsletter_29#.lf69bwwbu

тут тоже пишут про группировку по папкам
medium.com/@alexmngn/how-to-better-organize-your-react-applications-2fd3ea1920f1
I’ve been working on very large web applications for the past few years, starting from ground zero and, with a dozen other developers…
12:34:05 ПП
User 63637623
User 4627228
это ты к чему?
12:35:14 ПП
User 1682650
User 153807368
https://medium.com/@alexmngn/how-to-better-organize-your-react-applications-2fd3ea1920f1?utm_campaign=React%2BNewsletter&utm_medium=email&utm_source=React_Newsletter_29#.lf69bwwbu

тут тоже пишут про группировку по папкам
medium.com/@alexmngn/how-to-better-organize-your-react-applications-2fd3ea1920f1
I’ve been working on very large web applications for the past few years, starting from ground zero and, with a dozen other developers…
спс, почитаю
12:42:20 ПП
User 428114
для продакшена поделитесь через что прогоняете бандл
12:46:06 ПП
User 143141567
кстати, а кто-нибудь действительно пишет тест для компонентов?
12:49:28 ПП
User 152745946
@Melongeno я писал, но для опенсорс компонентов и очень простые
12:49:30 ПП
User 152745946
а какой вопрос?
01:33:23 ПП
User 122105125
@DenisIzmaylov не, у меня пока не ахти :)
01:39:49 ПП
User 597730
Airbnb React/JSX Style Guide 
https://github.com/airbnb/javascript/tree/master/react
github.com/airbnb/javascript/tree/master/react
JavaScript Style Guide. Contribute to airbnb/javascript development by creating an account on GitHub.
01:39:53 ПП
User 89478045
User 4627228
Коллеги, а кто в каком порядке методы в компонентах определяет?
1. constructor, lifecycle, handlers, sub-renders, render, utils
2. constructor, lifecycle, render, sub-renders, handlers, utils
3. constructor, utils, handlers, sub-renders, render, lifecycle
4. ...?
constructor, lifecycle, publicMethods, render, privateMethods
01:45:45 ПП
01:46:40 ПП
User 63637623
User 89478045
constructor, lifecycle, publicMethods, render, privateMethods
ну и что за pricateMethods?... : / чем они private?
01:47:20 ПП
User 89478045
User 63637623
ну и что за pricateMethods?... : / чем они private?
Ну условно на самом деле =) Прост договорились их не юзать обзначаем через _
01:47:37 ПП
User 89478045
не юзать из вне
01:47:50 ПП
User 89478045
Но там в основном utils, handlers
01:48:11 ПП
User 89478045
handerls обозначаем по старинке _on…()
01:49:13 ПП
01:49:27 ПП
User 152745946
зачем хэндлерам добавлять _ префикс?
01:50:11 ПП
User 63637623
User 89478045
Ну условно на самом деле =) Прост договорились их не юзать обзначаем через _
Вот именно, что условно. Потому на мой взгляд странная имитация.

Хочется реально private method — так можно же просто к компоненту не цеплять, типа так:

function privateUtilMethod() { ... }

class SomeComponent extends React.Component { ... }


а если не хочется...то зачем их приватным считать?

И на мой взгляд писать что-либо ниже render() жутко неудобно.

Когда читаешь код компонента, как-то инстинктивно ждёшь, что к моменту рендеринга всё необходимо уже написано сверху.
01:50:22 ПП
User 63637623
*необходимое
01:51:10 ПП
User 89478045
User 63637623
Вот именно, что условно. Потому на мой взгляд странная имитация.

Хочется реально private method — так можно же просто к компоненту не цеплять, типа так:

function privateUtilMethod() { ... }

class SomeComponent extends React.Component { ... }


а если не хочется...то зачем их приватным считать?

И на мой взгляд писать что-либо ниже render() жутко неудобно.

Когда читаешь код компонента, как-то инстинктивно ждёшь, что к моменту рендеринга всё необходимо уже написано сверху.
Вы используете свой code-style, мы свой =)
01:51:38 ПП
User 63637623
:)) ну началось
01:52:43 ПП
User 309556
был у нас один такой (есть все еще), писал “приватные” методы через _. я потом себе глаза выколол
01:53:13 ПП
User 89478045
User 309556
был у нас один такой (есть все еще), писал “приватные” методы через _. я потом себе глаза выколол
А чем тебя это смущает?
01:53:26 ПП
User 309556
тем, что у меня глаз теперь нету
01:53:56 ПП
01:54:01 ПП
01:54:14 ПП
User 309556
о, это папа мой
01:54:42 ПП
User 309556
(я Сергей Евгеньевич — тру стори)
01:57:46 ПП
User 89478045
Коллеги, я честно говоря, не совсем понимаю почему _ в качестве обозначение приватности это не хорошо. В Go такая практика - норма. В JS JSdoc  так определяет метод по _ его открытость
01:58:27 ПП
User 68520717
потому что это неправда же
01:58:38 ПП
User 68520717
это видимость приватности
01:58:49 ПП
User 89478045
User 68520717
потому что это неправда же
Согласен. Но это договоренность скорей
02:00:01 ПП
User 90246751
Вобще да, соглашение есть соглашение
02:00:25 ПП
User 309556
то есть соглашения over инвалидность — это ок?
02:00:30 ПП
User 90246751
Тем не менее, думаю, что писать приватные методы как функции вне объявления класса практика лучше
02:02:51 ПП
User 89478045
User 90246751
Тем не менее, думаю, что писать приватные методы как функции вне объявления класса практика лучше
Предлагаете каждый раз контекст прокидывать?
02:03:25 ПП
User 4274761
User 309556
был у нас один такой (есть все еще), писал “приватные” методы через _. я потом себе глаза выколол
...потом его в дурку забрали, конечно?
02:03:44 ПП
User 309556
сорян, я что-то упустил видимо там выше, но как могут быть приватные методы вне класса? они приватные методы чего?
02:04:20 ПП
User 637362
А что, никто не делает приватные методы и проперти символами?
02:05:23 ПП
User 90246751
function privateMethods() {
  console.log(this.a);
}

export default class SomeClass {
  
  constructor() {
    this.a = 1;
  }

  somePublicMethod() {
    privateMethod.call(this);
  }

}
02:05:49 ПП
User 90246751
Форматирование :с
02:05:57 ПП
User 309556
сорян, я что-то упустил видимо там выше, но как могут быть приватные методы вне класса? они приватные методы чего?
02:06:10 ПП
User 309556
я должен тебе кое-что рассказать. сорян..
02:06:11 ПП
User 309556
Symbol.for(key)
02:06:13 ПП
User 1340580
User 637362
А что, никто не делает приватные методы и проперти символами?
WeakMap еще можно.
02:06:21 ПП
User 309556
я не хотел, но..
02:06:27 ПП
02:06:32 ПП
User 309556
не то зацитировал
02:07:04 ПП
User 309556
вообще символы не для этого
02:07:20 ПП
User 309556
а для того, чтобы говноспеку в “порядок” привести
02:07:28 ПП
User 309556
Symbol.iterator и тд
02:07:40 ПП
User 309556
для утят
02:07:49 ПП
User 637362
Symbol.for("test") не вернёт тоже что Symbol("test")
02:08:16 ПП
User 89478045
User 90246751
function privateMethods() {
  console.log(this.a);
}

export default class SomeClass {
  
  constructor() {
    this.a = 1;
  }

  somePublicMethod() {
    privateMethod.call(this);
  }

}
не всегда удобно, но да, тут уже кто как любит =)
02:08:49 ПП
User 637362
User 309556
вообще символы не для этого
Ну у нас ничего для приватных методов нет, поэтому извращаемся как можем.
02:09:38 ПП
User 309556
есть еще со времен es5
02:09:41 ПП
User 309556
ваще-то
02:09:51 ПП
User 309556
defineProperty
02:10:14 ПП
02:10:50 ПП
02:10:54 ПП
User 309556
^ норм
02:10:56 ПП
User 4627228
когда можно будет emojii кидать?
02:11:04 ПП
User 4627228
в коде
02:11:22 ПП
User 309556
через секунду можешь
02:11:32 ПП
User 4274761
SexyComponent["@renderTime"]()
Сорри, нет эмодзи. И приватности нет :)
02:12:25 ПП
User 309556
хз, у меня есть
02:12:36 ПП
User 309556
(не приватность)
02:13:05 ПП
User 4627228
я помню мне в стрипклубе кто-то тоже придлагал приват
02:13:09 ПП
User 4274761
На клавиатуре нет) но я показываю, что это просто префикс, никакого private method не делает. И почему я такой серьёзный...
02:13:39 ПП
User 4627228
это потому что ты Angular кодишь
02:13:53 ПП
User 309556
держись, брат
02:15:07 ПП
02:15:23 ПП
User 4627228
будни JavaScript разработчиков
02:15:35 ПП
02:15:45 ПП
User 309556
^ тру стори
02:16:03 ПП
User 309556
только там еще утята должны быть
02:19:21 ПП
User 637362
User 309556
вообще символы не для этого
Мне кажется вполне для этого подходят)
02:19:21 ПП
02:19:57 ПП
User 309556
ничего не вижу
02:25:03 ПП
User 309556
бтв кто-нибудь в курсе что есть тайпскрипт?
02:25:16 ПП
02:25:36 ПП
User 90854158
User 309556
бтв кто-нибудь в курсе что есть тайпскрипт?
Сегодня столкнулся с сим чудом
02:25:38 ПП
User 309556
сириосли
03:09:42 ПП
User 152745946
function markdown(text) {
  ...
  return html;
}

class Text extends Component {
  render() {
    const html = markdown(this.props.text);

    return (
      <div dangerouslySetInnerHTML={{ __html: html }} />
    )
  }
}
03:09:50 ПП
User 152745946
вот так приватные методы можно делать
03:10:00 ПП
User 152745946
они будут реально приватные
03:10:24 ПП
User 152745946
и скорее всего их можно вынести в папочку utils или helpers
03:21:32 ПП
User 309556
это не приватный метод по определению
03:27:01 ПП
User 152745946
ок, вместо приватных методов
03:34:40 ПП
User 63637623
User 309556
это не приватный метод по определению
это "скрытый" метод; недоступный из вне
Собственно это и не "метод" конечно. Но суть-то ты понял) Не дать возможность вызвать функцию из вне, что как правило и является целью, когда "договариваются" не использовать методы, названные через _name
03:45:07 ПП
User 89478045
Если на вас посмотреть, то хоть в падаваны к вам иди =) Тогда встает вопрос, если вы такие умные, то что ж обработчики то не прячете?
03:46:22 ПП
User 152745946
их не надо прятать
03:46:48 ПП
User 152745946
надо иметь мозг и не вызывать у компонентов методы, которые не для этого сделаны
03:46:58 ПП
User 89478045
User 152745946
надо иметь мозг и не вызывать у компонентов методы, которые не для этого сделаны
Вот блядь, вот я о чем
03:47:02 ПП
User 63637623
какие обработчики?
03:47:17 ПП
User 89478045
User 63637623
какие обработчики?
какой js =)
03:47:21 ПП
03:47:37 ПП
User 309556
jы yt ye;ty
03:47:44 ПП
User 309556
js не нужен
03:47:44 ПП
User 152745946
ну так без мозга ____privateMethodDoNotUseIt() - и такой метод кто-то, да вызовет
03:48:13 ПП
User 89478045
User 309556
js не нужен
потому что говно =)
03:48:24 ПП
User 309556
это так
03:49:05 ПП
User 63637623
....а зачем вообще реакт компоненту private method? В том плане что... а какие методы кто-то вообще вызывает из вне, кроме как внутри render?
03:49:27 ПП
User 89478045
User 152745946
ну так без мозга ____privateMethodDoNotUseIt() - и такой метод кто-то, да вызовет
Ну, а значит есть какое то обще принятое соглашение, где подобные вещи не вызывать. Все о чем вы говорите круто и правда, так же как и _ =)
03:49:28 ПП
03:49:30 ПП
User 63637623
Я могу представить пару кейсов, но они исключение скорее
03:49:39 ПП
User 89478045
User 63637623
....а зачем вообще реакт компоненту private method? В том плане что... а какие методы кто-то вообще вызывает из вне, кроме как внутри render?
Ну если речь про container =)
03:50:08 ПП
User 89478045
В глупых компонента, сомневаюсь, что нужны, решается хелперами
03:50:30 ПП
User 152745946
еще как нужны
03:50:32 ПП
03:50:57 ПП
User 89478045
User 152745946
scrollTo
Не совсем понял
03:52:04 ПП
User 152745946
render() {
  const { top, height, dragging } = this.state;

  const className = classNames('scroller__container', this.props.className);
  const scrollbarClassName = classNames('scroller__scrollbar', {
    'scroller__scrollbar--active': dragging
  });

  return (
    <div className="scroller__wrapper">
      <div className={className} ref={this.onReference} onScroll={this.onScroll}>
        {this.props.children}
      </div>
      <div className={scrollbarClassName}>
        <div
          className="scroller__thumb"
          style={{ top, height }}
          onMouseDown={this.onMouseDown}
        />
      </div>
    </div>
  );
}

scrollTo(offset) {
  this.container.scrollTop = offset;
}
03:52:15 ПП
User 89478045
Этж public ?
03:52:31 ПП
User 152745946
а, да, затупил))
03:52:45 ПП
User 152745946
я думал вы про публичные методы
03:53:03 ПП
User 152745946
....а зачем вообще реакт компоненту private method? В том плане что... а какие методы кто-то вообще вызывает из вне, кроме как внутри render?
03:53:08 ПП
User 152745946
а не, ничего не затупил
03:53:21 ПП
User 152745946
или затупил
03:53:33 ПП
User 63637623
да-да, я про это
03:53:52 ПП
User 309556
yt pfnegbk
03:54:18 ПП
User 63637623
scrollTo как раз на мой взгляд исключение вроде того, что я предполагал

Но и вызов такого метода вызывает вопросы о правильности того, что делаешь. Слишком императивно! И можно обыграть флаксом нормально.
03:54:41 ПП
User 309556
блин, кстати, у всех ос х тупит? не успевает переключать раскладку до набора и иногда с порадком символов ваще говно какое-то?
03:54:52 ПП
User 309556
пора венду ставить, там теперь баш есть
03:55:02 ПП
User 152745946
ты мне сказки не рассказывай про скролл) я его вдоль и поперек изучил за последние пару недель)
03:55:33 ПП
User 63637623
а где сказки ) я же не про механизм, а про способ вызова
03:56:02 ПП
User 63637623
точно так же можно обернуть такой компонент котейнером, который будет слушать некий UI стор и скроллиться, если нужно
03:56:29 ПП
User 89478045
User 63637623
точно так же можно обернуть такой компонент котейнером, который будет слушать некий UI стор и скроллиться, если нужно
Мудрено, не?
03:56:36 ПП
03:56:36 ПП
User 63637623
Да. И декларативно.
03:56:40 ПП
User 89478045
User 309556
блин, кстати, у всех ос х тупит? не успевает переключать раскладку до набора и иногда с порадком символов ваще говно какое-то?
Везде прям?
03:56:50 ПП
User 309556
на третьем маке так уже
03:57:26 ПП
User 152745946
твоя декларативность разобьется о перфоманс
03:57:33 ПП
User 152745946
я думал передавать это в props
03:57:43 ПП
User 63637623
Но не суть, я в общем-то и начал с того, что подобный кейс как раз и представляю.

И вопрос — много подобных кейсов что ли, чтобы отдельно помечать остальные методы, как "нельзя трогать из вне"? По-моему скорее наоброт получается.
03:57:45 ПП
User 309556
про переключение раскладки медленное недавно вроде появилось, а вот про то, что курсор куда-то двигается сам — везде
03:57:59 ПП
User 152745946
но каждый раз, как ты трогаешь scrollTop/scrollHeight и другие подобные свойства, браузер пересчитывает пол мира
03:58:05 ПП
User 89478045
User 309556
про переключение раскладки медленное недавно вроде появилось, а вот про то, что курсор куда-то двигается сам — везде
Ну я на pro mid2015 все шикарно
03:58:22 ПП
User 309556
но у меня бета следующей оси ща. так что раскладки хер с ними
03:58:34 ПП
User 309556
а вот с позицией курсора я негодую
03:58:41 ПП
User 63637623
Я про то, что вот такие scrollTo скорее нужно помечать как "метод предназначен для дёргания снаружи", а не наоборот.
03:59:06 ПП
User 152745946
это да
03:59:08 ПП
User 309556
_scrollTo
03:59:19 ПП
User 309556
_ <- public
03:59:26 ПП
User 309556
збс будет
03:59:48 ПП
03:59:52 ПП
03:59:53 ПП
User 152745946
вот это збс будет
03:59:56 ПП
User 89478045
@chicoxyzzy ты тоже на работе всех бомбить заставляешь?
03:59:58 ПП
User 12791
@vslinko ага. там :)
04:01:00 ПП
User 309556
конечно
04:01:09 ПП
User 309556
но Ярослав кажется уже привык)
04:02:08 ПП
User 309556
Слава в чати +50 к релею
04:02:35 ПП
User 1340580
User 309556
блин, кстати, у всех ос х тупит? не успевает переключать раскладку до набора и иногда с порадком символов ваще говно какое-то?
BT клава?
04:02:49 ПП
User 309556
макбучека клава
04:02:55 ПП
User 309556
родненькая
04:02:59 ПП
User 309556
любимая горячо
04:03:00 ПП
User 162236709
User 309556
пора венду ставить, там теперь баш есть
го
04:03:09 ПП
04:03:12 ПП
User 309556
так уже, но в параллелс пока тока
04:03:17 ПП
User 309556
тупит страшно
04:03:17 ПП
User 1340580
Ну не знаю, у меня такой проблемы нет. Думал может в блутусной сели батареи.
04:03:31 ПП
User 309556
Ну не знаю, у меня такой проблемы нет. Думал может в блутусной сели батареи.
04:03:36 ПП
User 309556
ага или не включена
04:04:12 ПП
User 309556
на венде теперь есть жизнь, люблю ее
04:04:21 ПП
User 309556
(жизнь)
04:04:33 ПП
User 4274761
User 309556
про переключение раскладки медленное недавно вроде появилось, а вот про то, что курсор куда-то двигается сам — везде
у меня давно эта фигня, первая буква или даже несколько после переключения частенько на старой раскладке
04:04:37 ПП
User 162236709
User 309556
так уже, но в параллелс пока тока
на десктоп
04:04:39 ПП
User 1340580
Ну хузнает.
04:04:52 ПП
User 309556
десктопы не нужны
04:04:58 ПП
User 309556
я лаптоп фанбой
04:05:05 ПП
User 309556
винда на макбучике
04:05:06 ПП
User 1340580
User 4274761
у меня давно эта фигня, первая буква или даже несколько после переключения частенько на старой раскладке
Эта хуйня происходит потому что не успеваешь с CMD убрать палец.
04:05:07 ПП
User 162236709
ну я имел ввиду как основную ось
04:05:14 ПП
User 162236709
User 162236709
на десктоп
хуево сказал, да
04:05:15 ПП
User 309556
ага, дуалбут надо
04:05:19 ПП
04:05:53 ПП
User 309556
сегодня же и займусь. без шуток
04:05:59 ПП
User 309556
ток лицуха дорогая
04:06:03 ПП
User 309556
собака
04:06:15 ПП
User 162236709
тут groove music обновили
04:06:20 ПП
User 309556
может есть у кого ключик от ненужной семерки, чят?
04:06:26 ПП
User 162236709
User 309556
может есть у кого ключик от ненужной семерки, чят?
кек
04:06:28 ПП
User 309556
я б проапгрейдился
04:06:39 ПП
User 162236709
а в параллелях откуда у тебя лицензия?
04:06:48 ПП
User 309556
а там не надо
04:06:51 ПП
User 4274761
а кто-нибудь делал или видел, можно ли делать так сказать условный транспилинг, чтобы для новых версий браузера было меньше всяких полифилов и рантаймов, если они напрямую все это быстрее сделают?
04:06:58 ПП
User 309556
но она обрезанная чуток
04:07:00 ПП
User 162236709
User 309556
а там не надо
лол
это легально вообще?
04:07:03 ПП
04:07:14 ПП
User 162236709
и поэтому она такая дорогая?
04:07:18 ПП
User 4274761
User 1340580
Эта хуйня происходит потому что не успеваешь с CMD убрать палец.
неа. и точно не за несколько букв) с cmd бы нажатым фигня всякая происходила
04:07:19 ПП
User 309556
обои нельзя поменять короче
04:07:33 ПП
User 162236709
User 309556
обои нельзя поменять короче
она не куплена, лолл
04:07:41 ПП
User 309556
там так и написано
04:07:46 ПП
User 162236709
ну вот
04:07:50 ПП
User 162236709
нет лицензии
04:07:52 ПП
User 309556
но это легально
04:07:59 ПП
User 4274761
хэй-хэй, тут вопрос про es6 и babel, а не про анимэ!)
04:07:59 ПП
User 162236709
ты так можешь сделать и в дуалбуте
04:08:06 ПП
User 309556
там специальная версия прмиком от мс
04:08:17 ПП
User 309556
не, я хочу обои от макоси
04:08:27 ПП
User 162236709
User 309556
там специальная версия прмиком от мс
поехал
04:08:29 ПП
User 309556
потому что сейчас у меня обои на макоси от венды 95
04:08:39 ПП
User 162236709
User 162236709
поехал
в винде без лицензии нет персонализации
04:08:43 ПП
04:08:44 ПП
User 309556
пруф
04:09:24 ПП
User 309556
не оригинальные, но мне нравятся
04:09:40 ПП
User 4274761
а у меня Безмятежность =)
04:09:58 ПП
User 309556
тоже есть. ставил, но вернулся на 95
04:10:01 ПП
User 309556
люблю ее
04:10:03 ПП
User 1340580
О, кстати. Круто.
04:10:23 ПП
User 162236709
User 162236709
тут groove music обновили
и я влюбился
04:10:45 ПП
User 309556
норм музяка
04:10:56 ПП
User 309556
пятничный чят
04:11:19 ПП
User 309556
реакт не нужен
04:11:24 ПП
User 309556
музыка нужна
04:11:27 ПП
User 162236709
/angular_js
04:11:29 ПП
User 309556
и венда
04:12:22 ПП
User 309556
эппол не торт
04:12:39 ПП
User 162236709
в айтюнс музыке получается всегда должна быть открыта какая-нибудь фигня снизу, а плеер сверху?
04:12:43 ПП
User 309556
но роутер хороший
04:14:41 ПП
User 4274761
а кто-нибудь делал или видел, можно ли делать так сказать условный транспилинг, чтобы для новых версий браузера было меньше всяких полифилов и рантаймов, если они напрямую все это быстрее сделают?
04:15:04 ПП
User 4274761
что-то типа modernizr+babel с несколькими сборками или разными чанками
04:17:11 ПП
User 68520717
такое есть для ноды
04:17:22 ПП
User 68520717
babel-preset-es2015-node6 например
04:17:36 ПП
User 4274761
сейчас получается, что браузеры улучшаются, поддерживают дофига всего, а мы в них все равно суем ES5/ES3 код
04:18:16 ПП
User 68520717
для браузеров похожее есть
04:18:19 ПП
User 63637623
хоупфулли это ненадолго
реалистикли — по-другому пока не скоро
04:18:23 ПП
User 68520717
https://www.npmjs.com/package/babel-preset-modern
https://www.npmjs.com/package/babel-preset-modern-browsers
npmjs.com/package/babel-preset-modern
Babel preset for modern browsers.
04:20:02 ПП
User 4274761
User 68520717
https://www.npmjs.com/package/babel-preset-modern
https://www.npmjs.com/package/babel-preset-modern-browsers
npmjs.com/package/babel-preset-modern
Babel preset for modern browsers.
и внизу страницы писать “Этот сайт поддерживает только Firefox 46+ и новый Сафари”?)
04:20:47 ПП
User 63637623
было на эту тему кстати вот https://davidwalsh.name/es6-features-testing

>>> Here's the problem: if you only use a build-step transpiler and you unconditionally always serve that ES5 equivalent transpiled code, you will never actually be using any of the native feature implementations. You'll always and forever be using the older, bigger, (perhaps) slower transpiled code.
davidwalsh.name/es6-features-testing
Using in-browser features for ES6 features/syntax to serve the best code to each browser.
04:22:23 ПП
User 4274761
User 63637623
было на эту тему кстати вот https://davidwalsh.name/es6-features-testing

>>> Here's the problem: if you only use a build-step transpiler and you unconditionally always serve that ES5 equivalent transpiled code, you will never actually be using any of the native feature implementations. You'll always and forever be using the older, bigger, (perhaps) slower transpiled code.
davidwalsh.name/es6-features-testing
Using in-browser features for ES6 features/syntax to serve the best code to each browser.
круто, спасибо! И автор крутой)
04:22:49 ПП
User 68520717
если использовать понифилы, то будет использоваться нативное если есть
global.Promise = global.Promise || require('es6-promise');
window.Promise = window.Promise || require('es6-promise');
04:24:46 ПП
User 4274761
и надо попробовать try{
  await(1);
} catch(e) {
  require(‘async-await-polyfill’);
}
04:31:11 ПП
User 152745946
зачем такие пресеты подключать?
04:31:27 ПП
User 152745946
es5 работает быстрее es6 сахара
04:32:40 ПП
User 68520717
@gusnkt какие?
04:33:00 ПП
User 4274761
User 152745946
es5 работает быстрее es6 сахара
пруфы? for..of теоретически должен быть на том же уровне
04:33:09 ПП
User 152745946
const/let как минимум точно
04:33:18 ПП
User 68520717
я видел только перф-тестирование нативного и транспилированного кода
04:33:28 ПП
User 68520717
наибольшее отклонение 2.6%
04:33:35 ПП
User 152745946
я немного тестил на ноде, классы быстрее работают
04:33:36 ПП
User 68520717
это в рамках погрешности
04:33:48 ПП
User 152745946
тупо из-за чека бабеля в конструкторе
04:34:03 ПП
User 152745946
так даже ради 2.6 процентов зачем?
04:34:17 ПП
User 68520717
чтобы кода было меньше наверное
04:34:35 ПП
User 152745946
вроде es6 код еще никто жать не умеет?
04:34:43 ПП
User 152745946
темплейты тормозят дико
04:34:49 ПП
User 152745946
Hello, ${name}
04:35:30 ПП
User 152745946
и главное - зачем лишать поддержки, возможно и кривой, те браузеры, где нет этих фич? Чтобы меньше плагинов было в babelrc?
04:35:50 ПП
User 68520717
эти пресеты используют для ноды
04:36:08 ПП
User 68520717
я сейчас не про b-p-es2015-modern*
04:36:09 ПП
User 152745946
https://www.npmjs.com/package/babel-preset-modern-browsers
npmjs.com/package/babel-preset-modern-browsers
Babel presets for modern browsers
04:36:16 ПП
04:36:20 ПП
User 68520717
это хз
04:36:29 ПП
User 68520717
спросили, нашёл
04:36:40 ПП
User 185980313
Они наверное хотят разные пакеты собрать
04:37:33 ПП
User 152745946
они старов хотят собрать) Я хз кто такое в продакшн потащит, а главное - зачем
04:37:35 ПП
User 4274761
User 185980313
Они наверное хотят разные пакеты собрать
мой вопрос был как раз про условную подгрузку разных сборок. там дальше линк на статью
04:44:49 ПП
User 191299276
подскажите чятик с дизайнерами
05:37:23 ПП
User 155082981
react-router подойдет для проектов на редукс ?
05:37:31 ПП
User 155082981
или там какие то проблемы будут ?
05:38:25 ПП
User 125547436
очень хорошо подойдет
05:39:22 ПП
User 63637623
User 155082981
react-router подойдет для проектов на редукс ?
Да не связан редакс с раутингом никак, если специально не связывать конечно
05:42:37 ПП
User 4627228
Ребят, а кто делал react-intl совместно с Server-Side Rendering?
05:42:56 ПП
User 4627228
Чтобы webpack собирал бандлы для каждого языка
05:43:46 ПП
User 12791
моя команда делала
05:44:03 ПП
User 4627228
Поделитесь, как вы это делали?
05:44:04 ПП
User 12791
но не с webpack :)
05:44:07 ПП
05:44:25 ПП
User 4627228
Там вроде через одно место всё
05:45:16 ПП
User 4627228
https://github.com/i18next/react-i18next/tree/master/example
github.com/i18next/react-i18next/tree/master/example
react-i18next - Internationalization for react done right. Using the i18next i18n ecosystem.
05:45:19 ПП
User 4627228
не удобней ли?
05:46:09 ПП
User 162236709
какие есть стоящие альтернативы вебпаку?
05:47:06 ПП
User 185980313
browserify
05:47:32 ПП
User 162236709
точно, с watchify
05:47:46 ПП
User 152745946
rollup я пробовал, не зашел(
05:55:53 ПП
User 192559518
а что, есть проблемы?
05:56:06 ПП
User 192559518
с react intl
05:57:25 ПП
User 4627228
SSR делал с ним?)
05:57:59 ПП
User 192559518
нет, но на вскидку не могу придумать проблемы
05:58:53 ПП
User 152745946
А что такое сср?
05:59:04 ПП
User 192559518
отдельные бандлы для языков не проблема
05:59:35 ПП
User 192559518
интересно, как работает require.ensure при запуске на ноде
05:59:45 ПП
User 192559518
ssr server side rendering
06:03:01 ПП
User 12791
@DenisIzmaylov мы генелили json с локалями
06:03:10 ПП
User 12791
которые потом инжектили в html
06:03:53 ПП
User 4627228
в React?
06:03:55 ПП
User 12791
в бандл оно не шло соответственно
06:04:00 ПП
User 4627228
надо чтбоы шло)
06:04:04 ПП
User 4627228
SSR + SPA
06:04:18 ПП
User 4627228
SSR(lang) + SPA(lang)
06:04:39 ПП
User 12791
ну да. на клиенте бандл отдельно с app подгружается
06:04:55 ПП
User 12791
и локали уже все готовые html лежат
06:06:38 ПП
User 12791
проблема с этим была только то что если локаль меняется то нужен хард релоад
06:08:24 ПП
User 4627228
Зачем в переводе используются ключи?
06:08:32 ПП
User 4627228
Английский текст может же быть ключом
06:09:01 ПП
User 192559518
я использовал require.ensure и хранил в редакс, в итоге и бандлы и кеш и нет хард релоадп
06:09:23 ПП
User 4627228
ОМГ :)
06:09:28 ПП
User 4627228
Никому об этом не говори))
06:10:16 ПП
06:10:33 ПП
User 12791
ну а почему нет. главное чтобы в итоге локали шардились :)
06:10:57 ПП
User 4627228
Главное ребята сердцем не-Store-ть
06:11:10 ПП
User 4627228
https://github.com/yahoo/babel-plugin-react-intl
github.com/yahoo/babel-plugin-react-intl
Extracts string messages from React components that use React Intl. - yahoo/babel-plugin-react-intl
06:13:33 ПП
User 4627228
Babel прогоняет весь код проекта
06:13:44 ПП
User 4627228
Извлекает строки
06:13:54 ПП
User 192559518
User 4627228
Никому об этом не говори))
будут проблемы? 😀
06:14:17 ПП
User 4627228
Не, не будут - я прикрою :)
06:14:20 ПП
User 4627228
Всё ок
06:14:45 ПП
06:20:39 ПП
User 4627228
Ребят
06:20:41 ПП
User 4627228
Объясните
06:20:47 ПП
User 4627228
Почему id для сообщений используется?
06:20:55 ПП
User 4627228
Почему в качестве id не использовать английский текст?
06:21:07 ПП
User 4627228
Может я что-то упускаю из вида?
06:21:30 ПП
User 12791
английский текст может быть разный
06:21:34 ПП
User 12791
если у тебя есть button
06:21:38 ПП
User 12791
на котором написано "post"
06:21:45 ПП
User 12791
это может быть a verb, or a noun
06:22:00 ПП
User 12791
переводится будет соответственно по разному
06:22:18 ПП
User 12791
плюс в id часто еще скоуп проекта
06:22:33 ПП
User 12791
чтобы было не "post"
06:22:39 ПП
06:22:48 ПП
User 12791
а "my_project:my_tab:post"
06:22:49 ПП
User 4627228
А часто ли такое случается?
06:22:55 ПП
User 12791
каждый день :)
06:23:18 ПП
User 12791
даже если post как глагол, в разных компонентах по разному фразиурется
06:23:21 ПП
User 12791
в зависимоти от языка
06:23:23 ПП
User 4627228
Проблема ID - ещё одна структура, которую необходимо держать в голове
06:23:27 ПП
User 4627228
когнитивная нагрузка
06:23:39 ПП
User 12791
без него никуда
06:23:48 ПП
User 12791
если инфраструктуры конечно нет вокруг этого
06:24:55 ПП
User 4627228
Автогенерация если только
06:24:59 ПП
User 4627228
На основе пути файла
06:25:10 ПП
User 12791
ну мы дедали колокацию с компонентами
06:26:18 ПП
User 4627228
Это как?
06:26:31 ПП
User 12791
у нас проект web почти был. Там было несколько больших кусков которые мы называли моелкулами: "compose", "message_view", "message_read", etc..
06:27:09 ПП
User 12791
парсили все переводы из этих кусков, потом освновываясь на том где этот кусок использовался генерили отедльынй бандл
06:27:19 ПП
User 12791
"compose:string_id"
06:27:26 ПП
User 12791
или "message_view:string_id"
06:27:54 ПП
User 12791
но в коде это все прозрачно.. внутри "compose"  просто юзается "string_id"
06:28:20 ПП
User 4627228
Отдельные бандлы - да это правильно
06:30:11 ПП
User 12791
react-intl из этого проекта вышел какраз
06:30:43 ПП
User 12791
эрик который над ним работал в моей команде до недавнего времени был, если нужно, я могу из него инфу вытянуть
06:35:55 ПП
User 4627228
В итоге react-intl более перспективней, чем i18next?
06:36:18 ПП
User 4627228
Из вашего проекта вышел react-intl? O_o
06:37:29 ПП
User 309556
и яху?
06:37:45 ПП
User 12791
ну мы его тестили на нашем проекте преде тем как в открытый интернет отправить
06:37:55 ПП
User 4627228
Real cool
06:46:38 ПП
User 181923858
Всем привет, подскажите как правильнее всего передавать json на сервер с картинками. Например есть комментарий и в нем несколько картинок. Просто картинки в base64 закодировать и как массив передать?
06:48:06 ПП
User 12791
multipart!
06:48:39 ПП
User 12791
json отдельным куском, потом картинки по одному куску каждая
06:49:09 ПП
User 181923858
То есть в несколько запросов?
06:49:43 ПП
User 12791
один multipart запрос
06:49:47 ПП
06:49:49 ПП
User 181923858
Понял
06:49:52 ПП
06:50:38 ПП
User 12791
он создаст один большой запрос в котором будут разные куски разного типа
06:50:53 ПП
User 12791
1. application/json 2. jpeg...
06:50:54 ПП
User 181923858
А на сервере просто перебрать
06:51:16 ПП
User 181923858
Поищу примеры
06:51:24 ПП
User 12791
на сервере нужно будет распарсить
06:52:10 ПП
User 12791
https://github.com/expressjs/multer
github.com/expressjs/multer
Node.js middleware for handling `multipart/form-data`. - expressjs/multer
06:52:13 ПП
User 12791
как пример
06:52:49 ПП
User 181923858
На клиенте через formdata можно?
06:52:56 ПП
06:53:19 ПП
06:53:37 ПП
User 181923858
Ну все, теперь дело пойдёт
06:54:01 ПП
User 12791
👍🏼
06:56:14 ПП
User 181923858
А подскажи как лучше картинки хранить, оригинал и миниатюры или лучше оригинал а потом при запросе нужный размер отдавать?
06:57:16 ПП
User 12791
зависит от скейла. на небольшом скейле можно ресайзить+кешировать и отдавать
06:57:30 ПП
User 12791
на большом такое уже не прокатит :)
06:58:57 ПП
User 181923858
Ну как бы я для себя делаю как хобби. Но стараюсь делать как правильно, то есть, при сохранении на сервере создавать миниатюры?
06:59:25 ПП
User 192559518
твиттер ресайзит а через N времени удаляет миниатюры
06:59:32 ПП
User 192559518
когда твит ушел в историю
06:59:39 ПП
User 192559518
вроде 20 дней постчитали
06:59:49 ПП
User 12791
если для хобби, то не важно.. основная проблема в том что если хранишь оригинал + 100x100
06:59:51 ПП
User 192559518
так что да, зависит от проекта
06:59:59 ПП
User 12791
когда меняется дизайн и нужно 120x120
07:00:08 ПП
User 12791
приходится расайзить все :)
07:00:11 ПП
User 12791
ну или как твитте
07:00:15 ПП
User 12791
делать долгий кеш
07:00:35 ПП
User 181923858
Эх, сколько же много тонкостей
07:00:46 ПП
User 12791
поэтому всегда начинай с того что проще и работает
07:01:01 ПП
User 12791
и когда появится проблема со скейлом, начинай смотреть на мелочи :)
07:01:11 ПП
07:01:32 ПП
User 192559518
@dmitriiabramov некоторые решения могут покалечить, например не хранить оригиналы :)
07:01:47 ПП
User 192559518
так что о чем-то нужно задуматься
07:02:00 ПП
User 12791
User 192559518
@dmitriiabramov некоторые решения могут покалечить, например не хранить оригиналы :)
хаха :) ну совсем думать переставать конечно не нужно
07:02:07 ПП
07:02:10 ПП
User 12791
но думать слишком много это тоже проблема
07:03:51 ПП
User 181923858
У node.js с отдачей статики нет проблем, или лучше на nginx перевести
07:04:00 ПП
User 192559518
@dmitriiabramov о, а у тебя есть что сказать по поводу 
https://www.facebook.com/groups/moscowjs/permalink/1206065032751729/
07:04:31 ПП
User 181923858
Хм тогда не ясно как ресайзить на лету
07:07:35 ПП
User 47375937
ресайз происходит или при сохранении, или при запросе, если в кеше нет, в первом случае отдавать уже через nginx можно, так как путь до файла уже есть, во втором нужно нодой готовить картинку
07:12:51 ПП
07:12:54 ПП
07:13:11 ПП
User 181923858
Буду делать
07:24:05 ПП
User 4627228
Как сделать несколько бандлов (один язык = один бандл) правильней? loader, plugins?
07:26:40 ПП
User 4627228
entry: {
    'default': [
      './react-app/index.jsx?locale=en-US',
Есть какая-то возможность в index.jsx подхватить query?
07:29:06 ПП
User 4627228
хотя вот это же работает webpack-hot-middleware/client?path=http://0.0.0.0:8080
07:29:42 ПП
User 4627228
if (__resourceQuery) {
  var querystring = require('querystring');
  var overrides = querystring.parse(__resourceQuery.slice(1));
07:29:44 ПП
User 4627228
Прекрасно
07:34:10 ПП
User 104477
Нихуя не понял. Ладно.
07:45:15 ПП
User 4627228
Во, можно ещё: expose?__I18N_LOCALE__!./i18n/en_US.json
07:46:02 ПП
User 121762741
а почему не через ENV_VAR какой-нить?
07:48:34 ПП
User 4627228
require('./i18n/' + process.env['LOCALE']  + '.js') ?
07:48:57 ПП
User 4627228
DefinePlugin обработает модули до резолв?
07:48:59 ПП
User 121762741
ну это же в конфиге вебпака? (уебищно, да =)
07:49:11 ПП
User 121762741
нет вроде
07:49:14 ПП
User 121762741
но я бы проверил
07:52:46 ПП
User 4627228
Вроде тоже нет, хотя может и да
07:53:27 ПП
User 121762741
нужен конфиг к конфигу.
07:53:50 ПП
User 121762741
config fatigue 😠
07:54:17 ПП
User 12791
User 192559518
@dmitriiabramov о, а у тебя есть что сказать по поводу 
https://www.facebook.com/groups/moscowjs/permalink/1206065032751729/
ну главный сайт это монстр сшитый из 1000 кусков :)
07:54:17 ПП
User 61730194
@DenisIzmaylov https://github.com/perchlayer/po-loader чекни примеры, может что полезное выдернешь
github.com/perchlayer/po-loader
po-loader - PO loader for webpack
07:54:56 ПП
User 309556
юзали этот лодер кстати
07:54:56 ПП
User 192559518
@DenisIzmaylov а что не require.ensure?
07:57:41 ПП
User 4627228
entry: {
    'default': [
      './react-app/index.jsx',
      './scss/all.scss'
    ],
    'default-en_US': [
      'expose?i18n!./i18n/locales/en-us.json',
      './react-app/index.jsx',
      './scss/all.scss'
    ],
вроде работает
08:01:25 ПП
User 4627228
а как ensure применить для этого?
08:01:41 ПП
User 4627228
необходимо SSR + SPA
08:02:05 ПП
User 4627228
т.е. догружать ещё один JS чё-то не хочется
08:03:46 ПП
User 4627228
User 61730194
@DenisIzmaylov https://github.com/perchlayer/po-loader чекни примеры, может что полезное выдернешь
github.com/perchlayer/po-loader
po-loader - PO loader for webpack
🎉 норм
08:16:04 ПП
User 4627228
https://webpack.github.io/docs/api-in-modules.html
08:22:40 ПП
User 35172279
^^ А если у тебя будет 50 языков, ты будешь 50 entry point обявлять? ;)
08:23:45 ПП
08:23:53 ПП
User 4627228
https://github.com/browniefed/react-webpack-empty-starter/blob/master/make-webpack-config.js
github.com/browniefed/react-webpack-empty-starter/blob/master/make-webpack-config.js
Contribute to react-webpack-empty-starter development by creating an account on GitHub.
08:23:59 ПП
User 4627228
как только люди не извращаются :)
08:25:31 ПП
08:25:47 ПП
User 4627228
Паш, я у этой банды научился =)
08:27:33 ПП
User 35172279
Только en-us это плохо. Тексты у тебя для en все одиныковые, а вот локали меняют форматирование (дат, чисел)
Так что тексты в en, а настройки Intl уже подгоняются под локаль пользователя.
Чтобы у всех en-US en-GB en-AU, были теже английские тексты но с разным форматированием
08:29:31 ПП
08:29:36 ПП
User 4627228
Спасибо
08:30:00 ПП
User 35172279
И не надо ограничивать себя json, используй стандартный js, там всякое может творится. Например,подставлятся дополнительные тексты от бекенда во время сборки или пишутся специфические для intl правила eslint
08:30:54 ПП
User 4627228
Всегда можно съехать при необходимости, но я скорее вижу то, что перевод будет браться во время сборки из БД
08:31:46 ПП
User 4627228
А куда копнуть за локалями Intl?
08:32:14 ПП
User 4627228
https://github.com/yahoo/react-intl
github.com/yahoo/react-intl
Internationalize React apps. This library provides React components and an API to format dates, numbers, and strings, including pluralization and handling translations. - yahoo/react-intl
08:32:18 ПП
User 4627228
вроде их явно не задаёт
08:33:05 ПП
User 35172279
http://formatjs.io/guides/basic-i18n/
formatjs.io/guides/basic-i18n
General information on getting started internationalization web apps client and server in JavaScript.
08:34:27 ПП
User 35172279
Ну и с Intl играться, react-intl его использует внутри
// US English uses month-day-year order
console.log(new Intl.DateTimeFormat('en-US').format(date));
// → "12/19/2012"

// British English uses day-month-year order
console.log(new Intl.DateTimeFormat('en-GB').format(date));
// → "20/12/2012"
08:34:34 ПП
User 57648988
User 35172279
^^ А если у тебя будет 50 языков, ты будешь 50 entry point обявлять? ;)
FYI в Facebook 10000 билдов JS (инфа 2016) за счёт таких вот веселых комбинаций
08:35:36 ПП
User 35172279
Я не говор про билды, а говорю про способ задания конфига.
Нужно уметь просто задавать сборщику массив из языков, а не копи-пастить entry-points)
08:36:19 ПП
User 57648988
Понял, да
08:36:44 ПП
User 4627228
Как для webpack это сделать?
08:36:58 ПП
User 309556
Себастьян недавно писал, что у них куча говнокода там в фб
08:37:08 ПП
User 4627228
Они поэтому и опенсорсить начали
08:37:10 ПП
User 309556
поэтому многое не опенсорс
08:37:20 ПП
User 4627228
Чтобы в порядок приводить начать
08:40:17 ПП
User 35172279
User 4627228
Они поэтому и опенсорсить начали
Генерировать конфиг вебпака на лету, исходя из человекочитаемого общего конфига проекта.
Плюс всякие плюшки типа генерации итоговых скриптов для каждого языка паралелльно, используюя все ядра процессора
Начни с одного etry-point и меняй его вместе с любыми другими параметрами конфига на лету
08:40:35 ПП
User 35172279
User 4627228
Как для webpack это сделать?
^^ Это был ответ к этому
08:43:53 ПП
User 4627228
Я сейчас вижу такой процесс:
1. babel-plugin-react-intl извлекает сообщения в директорию src/i18n/messages
2. сборщик накладывает существующую локализацию поверх каждого перевода, чтобы было понятно, что ещё не переведено (в будущем - работа через внешний веб-сервис)
2. в webpack-конфиге функция проходит все файлы перевода и добавляет entry
08:44:26 ПП
User 35172279
Я помимо умножения бандла на языки еще и умножаю на два: для современных браузеров с поддержкой es6 и для остальных. Соответсовенно, разные настройки бабел-лоадера и externals. Все это делается динамически с использованием фермы (чтобы загрузить все ядра).
Чтобы в итоге получить что-то типа app.en.js, app.en.compatible.js, app.fr.js, app.rf.compatible.js, etc.
08:46:05 ПП
User 4627228
Ты компилируешь отдельно для топовых?
08:46:32 ПП
User 35172279
Да, в деве с hmr для каждого и в проде.
08:47:00 ПП
User 4627228
А как все ядра процессора загружаешь?
08:48:06 ПП
User 4627228
> Начни с одного etry-point и меняй его вместе с любыми другими параметрами конфига на лету

По другому и не рассматривали - пример он и был для того пример. :)
08:48:08 ПП
User 35172279
В деве тот-же принцип - каждый webpack-dev-server  для каждого былда сидит на отдельном процессе, паралелльно, так что все доступно сразу, с какгого браузера не зайди. Изначально я это делал в прошлом году чтобы не использовать sourcemap - это ускоряет сборку и hmr раза в два
08:48:58 ПП
User 4627228
/off Хорошая шутка была про vim)

А, ты с этой стороны заходишь.
08:49:53 ПП
User 4627228
Ускоряет имено конфигурации 1 entry => 1 сервер?
08:50:00 ПП
User 12791
+1 к ферме. в прошлом году билд распараллелил и сэкономил много времени
08:50:09 ПП
User 35172279
User 4627228
А как все ядра процессора загружаешь?
Я использую worker-farm, в нем есть некоторые недостатки, но в целом работает как надо. Гасишь основной процесс - гасятся все дочерние специфичческие сборщики и тд
08:50:25 ПП
User 4627228
Дим, а вы что использовали?
08:50:33 ПП
User 12791
worker-farm
08:50:51 ПП
User 12791
мы его в тестовой инфраструктуре сейчас гоняем
08:51:25 ПП
User 4627228
https://www.npmjs.com/package/parallel-webpack
npmjs.com/package/parallel-webpack
Builds multiple webpack configurations in parallel and allows you to easily create variants to those configurations.
08:51:27 ПП
User 12791
с ~15с до <1c сократили
08:51:52 ПП
User 4627228
Очень круто, огонь просто :)
08:52:31 ПП
User 4627228
parallel-webpack не использовали или через него и делали всё?
08:53:11 ПП
User 35172279
Но надо быть гововым что в CI может не хватать памяти на несколько параллельных былдов. У нас каждый занимает ~1GB памяти, много модулей и трансформеров
08:54:12 ПП
User 35172279
Точнее для современных браузеров ~700Mb, для остальных с пресетом 2015 ~ 1.5Gb
08:54:15 ПП
08:54:46 ПП
User 35172279
сейчас у нас да
08:54:53 ПП
User 4627228
А как вы разделяете "современные браузеры"? Где та бритва оккама?
08:55:51 ПП
User 35172279
Я сам пишу пресеты и нужный shim для core-js для современных браузеров. Обычно это 1-2 последние версии хрома и ff
08:56:21 ПП
User 309556
и сафари 8 лол
08:56:40 ПП
User 35172279
вебпаком заменяю babel-polyfill на написанный shim
08:57:02 ПП
User 4627228
=) Вот это космос
08:57:17 ПП
User 4627228
"Наш веб-сервис сделан вручную"
08:59:10 ПП
User 4627228
Мы ушли далеко с локалей (спасибо за параллелизацию - будет как раз уместно внедрить для сборки локалей) и i18n. А как у вас управление переводами и отслеживание новых/изменение старых сообещний реализовано? Также, веб сервис или через файлы вручную переводчики правят?
08:59:37 ПП
User 35172279
Зато будешь хорошо знать все специфичные баги движков по es6. Например в ff все плохо в некоторых местах, например, некоторые комбинации циклов с let/const. Возможно я его исключю из modern билда, даже в 49 еще не пофикчили
09:01:27 ПП
User 4627228
Если хочется знать интересные специфичные баги, то рекомендую активно поработать с анимацией (transform/transition) в IE11 и последних Safari. 😈
09:01:41 ПП
User 12791
User 4627228
Мы ушли далеко с локалей (спасибо за параллелизацию - будет как раз уместно внедрить для сборки локалей) и i18n. А как у вас управление переводами и отслеживание новых/изменение старых сообещний реализовано? Также, веб сервис или через файлы вручную переводчики правят?
насчет переводов кстати.. если сообщения из кода выдераешь, то будь осторожен с whitespace
09:02:14 ПП
User 12791
когда девелоперы индентацию меняют, у нас в системе оно регистрировось как новая строка, и иногда ее переводили заново :)
09:05:01 ПП
User 4627228
Казалось бы почему автоматически не обрабатывать текст? :) Антон Шувалов начинал работу над таким год назад
09:05:14 ПП
User 4627228
Паш, ты там на обед ушёл? :)
09:05:38 ПП
User 162236709
User 4627228
Если хочется знать интересные специфичные баги, то рекомендую активно поработать с анимацией (transform/transition) в IE11 и последних Safari. 😈
да ну
09:05:48 ПП
User 162236709
у меня намного больше проблем было в хроме чем в ие/edge
09:05:51 ПП
User 162236709
с анимациями
09:05:57 ПП
User 12791
у нас на CI  был отдельынй степ где мы выдергивали все строки из кода, смотрили что переведено а что нет. если там что-то не переведеное, то отправляли через веб сервис на перевод
09:06:03 ПП
User 162236709
особенно, когда элемент pos fixed
09:06:24 ПП
User 12791
в том же билде, смотрели апдейт с сервиса, есть ли новые переводы, сохраняли их, коммитили, пушили обратно в репозиторий
09:06:35 ПП
User 35172279
User 4627228
Мы ушли далеко с локалей (спасибо за параллелизацию - будет как раз уместно внедрить для сборки локалей) и i18n. А как у вас управление переводами и отслеживание новых/изменение старых сообещний реализовано? Также, веб сервис или через файлы вручную переводчики правят?
Я написал несколько eslint правил для языкового бандла, чтобы избегать дупликатов, чтобы дерево было правильно оформлено и тд. И написал плагины для бабела и вебпака, которые при сборке инлайнят значение вместо вызова функции и подчитывают кол-во использований по каждому ключу, чтобы люди не забывали удалять неиспользуемые ключи. Инлайнинг кажется экстра-фичей, но у нас 2000 ключей, которые вызываются при первом открытии сотни раз, инлайнинг уменьшил итоговый бандл на 200kb и уменьший время первого рендеринга на 200mc
09:10:59 ПП
User 35172279
Для переводчиков отдельный файл, типа таблицы, который экспортится-импортится назад в проект. Но это очень далеко от идеала, нужно давать им править прямо в интерфесе
09:11:51 ПП
User 35172279
Они без видения контекста происходящего часто фигню переводят
09:12:28 ПП
User 35172279
Даже если хоро знают ICU и CLRD правила
09:12:45 ПП
09:14:37 ПП
User 4627228
User 12791
в том же билде, смотрели апдейт с сервиса, есть ли новые переводы, сохраняли их, коммитили, пушили обратно в репозиторий
Поделись скриптом :)
09:15:58 ПП
User 12791
я бы с радостью, но меня в тюрьму посадят за такое :)
09:16:31 ПП
User 4627228
User 35172279
Для переводчиков отдельный файл, типа таблицы, который экспортится-импортится назад в проект. Но это очень далеко от идеала, нужно давать им править прямо в интерфесе
Я в 2011-м такой веб-сервис делал для NSN, но это было всё на PHP :)
09:16:40 ПП
User 4627228
Должны быть сервисы
09:16:46 ПП
09:17:16 ПП
User 4627228
User 35172279
Я написал несколько eslint правил для языкового бандла, чтобы избегать дупликатов, чтобы дерево было правильно оформлено и тд. И написал плагины для бабела и вебпака, которые при сборке инлайнят значение вместо вызова функции и подчитывают кол-во использований по каждому ключу, чтобы люди не забывали удалять неиспользуемые ключи. Инлайнинг кажется экстра-фичей, но у нас 2000 ключей, которые вызываются при первом открытии сотни раз, инлайнинг уменьшил итоговый бандл на 200kb и уменьший время первого рендеринга на 200mc
Когда будет в open source? :)
09:17:35 ПП
User 4627228
User 12791
я бы с радостью, но меня в тюрьму посадят за такое :)
Если используешь OSS в работе, то делиться - это тоже твоя работа :)
09:18:56 ПП
User 35172279
Должны быть описаны сценарии поведения для переводчика на сайте, все элементы текста contenteditable, и он просто ходит, кликает и переводит in place с сохранением в базу, которые нужный человек проверит и заапрувит - вот к этому надо стремиться)
09:20:11 ПП
User 57648988
User 12791
у нас на CI  был отдельынй степ где мы выдергивали все строки из кода, смотрили что переведено а что нет. если там что-то не переведеное, то отправляли через веб сервис на перевод
Мы часть этого цикла тоже автоматизировали, на базе API oneskyapp.com + 200 строк js (основная идея: webpack-плагин с сайд-эффектами)
09:20:21 ПП
User 4627228
User 35172279
Должны быть описаны сценарии поведения для переводчика на сайте, все элементы текста contenteditable, и он просто ходит, кликает и переводит in place с сохранением в базу, которые нужный человек проверит и заапрувит - вот к этому надо стремиться)
Вот это я и сделал тогда :)
09:20:26 ПП
User 57648988
Сейчас есть https://www.transifex.com, и там есть CLI — с CLI проще работать, чем просто с API, но я не пробовал
transifex.com
Integrate with Transifex to manage the creation of multilingual websites and app content. Order translations, see translation progress, and tools like TM.
09:21:10 ПП
User 12791
User 57648988
Мы часть этого цикла тоже автоматизировали, на базе API oneskyapp.com + 200 строк js (основная идея: webpack-плагин с сайд-эффектами)
ну оно к тому и сводится в итоге :) девелоперы пишут код, а потом он магическим образом компилится в переведенный на все языки :)
09:21:34 ПП
User 4627228
Прекрасно же
09:22:48 ПП
User 4627228
https://github.com/yahoo/react-intl/issues/162#issuecomment-143512617
github.com/yahoo/react-intl/issues/162
UPDATED: 2015-11-11 React Intl v2 has been in development for several months and the current release is v2.0.0-beta-1 — the first v2 beta release — v2 has been promoted from preview release to beta...
09:23:02 ПП
User 35172279
User 12791
ну оно к тому и сводится в итоге :) девелоперы пишут код, а потом он магическим образом компилится в переведенный на все языки :)
Как: девелоперы пишут на любом языке, а потом он магическим образом переводится на WebAssembly)
09:24:30 ПП
User 309556
тут было что-то про еслинт. неполенюсь попиарить правило для него, после которого вам будут не нужны остальные. поддерживает реакт как бонус
https://github.com/chicoxyzzy/eslint-plugin-no-js
github.com/chicoxyzzy/eslint-plugin-no-js
eslint-plugin-no-js - :shipit: ESLint plugin to disable JavaScript
09:24:32 ПП
User 4627228
Сейчас Сережа проснется
09:24:36 ПП
09:24:41 ПП
User 12791
еще бы люди начали на WebAssembly разговаривать.. тогда можно было бы бабел и i18n вобще задеприкейтить :)
09:25:18 ПП
User 4627228
К сожалению, вселенной ближе энтропия
09:26:53 ПП
User 309556
васм нас спасет (на самом деле нет)
09:27:13 ПП
User 309556
(есть еще хтмл и цсс, которые сосут больше, чем жс)
09:30:14 ПП
User 4627228
https://github.com/yahoo/react-intl/issues/65#issuecomment-70380782
github.com/yahoo/react-intl/issues/65
A core principal behind FormatJS is providing a declarative way to format data and strings by providing high-level integrations with template/component libraries. The first version of React Intl on...
09:30:31 ПП
10:39:50 ПП
User 4627228
Где-то в параллельной вселенной https://hackage.haskell.org/package/react-flux-1.0.7/docs/React-Flux-Addons-Intl.html
10:41:35 ПП
User 309556
хаскель не нужен
10:42:12 ПП
User 196895
User 4627228
Где-то в параллельной вселенной https://hackage.haskell.org/package/react-flux-1.0.7/docs/React-Flux-Addons-Intl.html
глядя на 5 пример кода становится грустно.
10:42:23 ПП
User 196895
все стремятся упрощать код, а тут... без поллитра не разберёшь
10:42:42 ПП
User 309556
так писать не обязательно. это пример
10:45:09 ПП
User 309556
как ты узнал мою секретную формулу?
10:48:43 ПП
User 309556
@DenisIzmaylov ты случайно не знаешь как отписаться от спама Олега Бунина?
10:48:56 ПП
User 309556
он заебал своими вебинарами!
10:54:29 ПП
User 4627228
Знаю, приходи на мой платный вебинар о том, как отписаться от Олега Бунина
10:57:04 ПП
User 4627228
При оплате до 29 апреля у тебя будет возможность купить видеозапись вебинара, где я сижу в трусах у монитора со скидко в 7% :)
10:59:04 ПП
User 196895
чёрт заманчиво
10:59:21 ПП
User 196895
но я все деньги потратил на муку и лимоны
10:59:53 ПП
User 309556
и что ты с ними будешь делать?
11:00:42 ПП
11:01:09 ПП
11:01:19 ПП
11:01:53 ПП
11:02:55 ПП
11:03:05 ПП
User 4627228
^ Вы не подумайте. Это не доллары. Это тикеты от заказчика.