These are chat archives for dev-ua/reactjs

1st
Mar 2016
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 05:34
@ALF-er напомни какое видео ты советовал из конфы
кажется нетфликсовое что-то
Illia Seheda
@ALF-er
Mar 01 2016 08:05
да, вот это вроде
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 08:09
@ALF-er спасибо
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 08:45
оно не опенсорс
не очень понятно как они там трансдюсят
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 08:46
мне кажется это что-то связанно с использованием stateless компонентов, функций
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 08:52
да по идее это не важно. стейтлессы внутри точно такие же как стейтфулл (пока что). просто не очень понятно как они именно HoC’и трансдюсят. пример бы
но идея охеренная
anoru
@anorudes
Mar 01 2016 09:43
Спрашивал в скайпе, но тут больше людей) Ребят, никто не сталкивался с тем, что хотрелоад реакта рефрешит всю страницу в хроме? но в фф все окей. даже если править стили
лол, это был какой-то плагин в хроме глючной, что автоматом рефрешил )
Roman Liutikov
@roman01la
Mar 01 2016 10:22
@chicoxyzzy я так понимаю, что они от hoc отказались вообще, в пользу трансдьюсеров
То есть вместо обертки через hoc у них компонент попадает в цепочку трансформаций пропсов.
Но как именно они это делают снаружи компонента я хз
Denis Stoyanov
@xgrommx
Mar 01 2016 10:55
@roman01la @chicoxyzzy мне больше идея нравится что у recompose-rx где все трансформации на стримах также как и у yolk
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 10:56
но там не трансдюсится ничего вроде как и куча наследуемых компонент получается
как и в случае с обычным recompose
Denis Stoyanov
@xgrommx
Mar 01 2016 10:59
@chicoxyzzy ну по сути это тот же иммутабл должен быть, похожая идея у cycle если я не ошибаюсь
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 11:02
я не очень понял о чем ты, но у нетфликса совсем не так, как в рекомпозе, судя по докладу
Denis Stoyanov
@xgrommx
Mar 01 2016 11:04
@chicoxyzzy глянуть бы на их поделку
Roman Liutikov
@roman01la
Mar 01 2016 11:33
@xgrommx или сделать самому, что бы было как с флаксами 😂
Illia Seheda
@ALF-er
Mar 01 2016 11:35
(а потом прийдёт Абрамов, сделает лучше, и у всех снова воспылает)
Roman Liutikov
@roman01la
Mar 01 2016 11:36
Абрамов сначала добавит в него хотрелоад и сходит на конфу всем показать)
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 11:45

(а потом прийдёт Абрамов, сделает лучше, и у всех снова воспылает)

Лучше? ;)

Illia Seheda
@ALF-er
Mar 01 2016 11:45
а вот и один из тех у кого воспылает )
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 11:46
оу, камон)
Roman Liutikov
@roman01la
Mar 01 2016 12:02
вопрос: по semver что нужно сделать если я обновил зависимости и хочу выкатить новую версию?
мажор минор патч?
Roman Liutikov
@roman01la
Mar 01 2016 12:10
одни конфузы mojombo/semver#148
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 12:10
мажор - брейкинг ченжес
минор - добавил фич
патч - пофиксил баги
Roman Liutikov
@roman01la
Mar 01 2016 12:10
эт я знаю
Sergey Rubanov
@chicoxyzzy
Mar 01 2016 12:10
если ничего не изменилось, то можно и патч имхо
Roman Liutikov
@roman01la
Mar 01 2016 12:11
а там вообще пишут, что можно ту же версию обновить. сумасшедшие
Alexey Volkov
@rosko
Mar 01 2016 12:21
имхо патча достаточно, апи ж совсем не поменялось
Glebcha
@glebcha
Mar 01 2016 12:42
что-то я начал дико тупить под вечер и не могу еще после галпа привыкнуть......подскажите как мне без hmr собирать для продакшна?
вопрос тупой, но и я сейчас не лучше
import path from 'path'
import webpack from 'webpack'
import cssnano from 'cssnano'
import HtmlWebpackPlugin from 'html-webpack-plugin'
import ExtractTextPlugin from 'extract-text-webpack-plugin'

const env = process.env.NODE_ENV
const DEV = env === 'development'

const webpackConfig = {
    devtool: DEV ? 'cheap-module-eval-source-map' : null,
    entry: [
        'webpack-hot-middleware/client',
        './src/index'
    ],
    output: {
        path: path.join(__dirname, 'build'),
        filename: 'bundle.js',
        publicPath: DEV ? 'http://localhost:3000/' : ''
    },
    plugins: [
        new ExtractTextPlugin('[name].css', {
            allChunks: false
        })
    ],
    module: {
        loaders: [
            {
                test: /\.js$/,
                loaders: ['react-hot', 'babel'],
                exclude: /node_modules/,
                include: __dirname
            }
        ]
    }
}

// ------------------------------------
// Plugins
// ------------------------------------
if (env === 'development') {
  console.log('Enable plugins for live development (HMR, NoErrors).')
  webpackConfig.plugins.push(
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin()
  )
} else {
  console.log('Enable plugins for production (OccurenceOrder, Dedupe, HtmlWebpack & UglifyJS).')
  webpackConfig.plugins.push(
    new webpack.optimize.OccurrenceOrderPlugin(),
    new webpack.optimize.DedupePlugin(),
    new HtmlWebpackPlugin(),
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        unused: true,
        dead_code: true,
        warnings: false
      }
    })
  )
}

// Styles{
let lessConfig = {
    test: /\.less$/,
    include: __dirname
}

if(DEV) {
    lessConfig.loaders = [
        'style',
        'css?sourceMap',
        'postcss',
        'less?sourceMap'
    ]
} else {
    lessConfig.loader = ExtractTextPlugin.extract(
        'style',
        'css!postcss!less'
    )
}

webpackConfig.module.loaders.push(lessConfig)

webpackConfig.postcss = [
  cssnano({
    sourcemap: DEV ? true : false,
    autoprefixer: {
      add: true,
      remove: true,
      browsers: ['iOS >= 7', 'Safari >= 6', 'Chrome >= 40']
    },
    safe: true,
    discardComments: {
      removeAll: true
    }
  })
]

webpackConfig.module.loaders.push(
    {
        test: /\.otf(\?v=\d+\.\d+\.\d+)?$/,
        loader: "url?limit=10000&mimetype=application/octet-stream&name=fonts/[name]-[hash].[ext]"
    }
)

module.exports = webpackConfig
Alexey Volkov
@rosko
Mar 01 2016 12:44
о, так в спеке круто все описано:

What should I do if I update my own dependencies without changing the public API?

That would be considered compatible since it does not affect the public API. Software that explicitly depends on the same dependencies as your package should have their own dependency specifications and the author will notice any conflicts. Determining whether the change is a patch level or minor level modification depends on whether you updated your dependencies in order to fix a bug or introduce new functionality. I would usually expect additional code for the latter instance, in which case it's obviously a minor level increment.

Illia Seheda
@ALF-er
Mar 01 2016 12:45
@glebcha не включать в бандл 'webpack-hot-middleware/client',
Roman Liutikov
@roman01la
Mar 01 2016 12:47
@rosko я не понял, то есть они хотят что бы в таких случаях мейнтенер как-то по своему управлял зависимости или что?
Glebcha
@glebcha
Mar 01 2016 12:47
@ALF-er забыл убрать, не включаю и все равно в консоли ругается на hmr
Alexey Volkov
@rosko
Mar 01 2016 12:49
@roman01la да, это зависит от того добавляется ли новый функционал (даже при прежнем АПИ) (тогда минор) или нет (тогда патч)
или если изменение версии зависимости связано с тем, что в будущем ты хочешь добавить новый функционал на основе новой версии зависимости, то тогда лучше тоже сделать минор
Roman Liutikov
@roman01la
Mar 01 2016 12:52
@rosko понял, спасибо
Illia Seheda
@ALF-er
Mar 01 2016 12:54
this is going to take a while
Roman Liutikov
@roman01la
Mar 01 2016 12:56
главное, что взялся пацан, я верю в него
Glebcha
@glebcha
Mar 01 2016 13:01
убрал из .babelrc и из конфига, десять раз погуглил, один фиг на hmr ругается
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 13:15

вопрос: по semver что нужно сделать если я обновил зависимости и хочу выкатить новую версию?

если нет новых фич и сохраняется обратная совместимость то патч

Alexey Migutsky
@mr-mig
Mar 01 2016 13:36
Пацаны, на чем там щас модно реакт+редукс тесты гонять?
Мока + ?
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 13:41
а какие тесты?
Alexey Migutsky
@mr-mig
Mar 01 2016 13:41
юнит
а шо, есть варианты?
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 13:41
mocha/jest
Alexey Migutsky
@mr-mig
Mar 01 2016 13:41
вебдрайвер на селениуме?
жесть отстой
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 13:41
есть еще ui/e2e
для них селениум же)
Illia Seheda
@ALF-er
Mar 01 2016 13:42
tape всем нравится
Alexey Migutsky
@mr-mig
Mar 01 2016 13:42
чет я думал по дефолту unit подразумеваетася
тейп тоже вариант, но такое
а на чем дом гонять?
jsdom ?
или чо там свежее и быстрее?
Illia Seheda
@ALF-er
Mar 01 2016 13:42
вроде да
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 13:42
дом для юнит тестов реакта?
no
shallow render
твои юнит тесты не юнит тесты если тестируешь DOM
Alexey Migutsky
@mr-mig
Mar 01 2016 13:46
ну ок, тогда мои юнит тесты не тесты
чойта они не юнит-тесты?
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 13:59
потому что ты тестируешь то, что протестировано в реакте
Eugene Moroz
@b1ff
Mar 01 2016 14:02
@mr-mig https://github.com/airbnb/enzyme с последним релизом ок стал, на него перехал, кода меньше стало
Kirill Yakovenko
@blia
Mar 01 2016 14:13
Ну да, зачем дом в юнит тестах?
Eugene Moroz
@b1ff
Mar 01 2016 14:14
православные ивенты?
Kirill Yakovenko
@blia
Mar 01 2016 14:17
@b1ff это мне?
Eugene Moroz
@b1ff
Mar 01 2016 14:17
угу
дом нужен что бы ивенты были приблеженные к реальности
Kirill Yakovenko
@blia
Mar 01 2016 14:17
ну это же вроде уже не юнит, а инеграционные.
Eugene Moroz
@b1ff
Mar 01 2016 14:18
ну иногда логика может быть завязана на извращении в обработке событий
ну если дом например создается и умирает для теста, то имхо юнит тестами это назвать можно
Maxim
@stigmat4j
Mar 01 2016 14:32
Подскажите как брать отдельные значения по id из редюсера? В стейте хранится массив.
Denis Stoyanov
@xgrommx
Mar 01 2016 14:34
@stigmat4j получить весь массив и выбрать через filter первый елемент?
Maxim
@stigmat4j
Mar 01 2016 14:34
@xgrommx а поэлегантнее нет варианта?
Illia Seheda
@ALF-er
Mar 01 2016 14:35
mapStateToProps специально для этого
Denis Stoyanov
@xgrommx
Mar 01 2016 14:38
@ALF-er ну в нем и сделать)
Illia Seheda
@ALF-er
Mar 01 2016 14:38
да
Maxim
@stigmat4j
Mar 01 2016 14:38
state => ({
    broker: state.users.brokers.filter(({id}) => id == this.id)
  }),
я правильно понял?
Illia Seheda
@ALF-er
Mar 01 2016 14:39
откуда у вас в mapStateToProps this вечно берётся
Maxim
@stigmat4j
Mar 01 2016 14:39
а как мне достать id по другому?
Illia Seheda
@ALF-er
Mar 01 2016 14:39
а что это за айди? с телепатией сегодня тяжко
Maxim
@stigmat4j
Mar 01 2016 14:40
этот айди пришёл в компонент с пропсов. По нём надо достать элемент из стейта
Denis Stoyanov
@xgrommx
Mar 01 2016 14:40
@ALF-er @stigmat4j у меня через роут приходит
Maxim
@stigmat4j
Mar 01 2016 14:40
роутом у меня не получится, всё внутри одной страницы
Denis Stoyanov
@xgrommx
Mar 01 2016 14:40
function mapStateToProps(state, props) {
    const {
        tournaments: {tournaments, isFetching},
        } = state;
    const {tournamentId} = props.params;

    return {
        tournamentId,
        tournaments,
        isFetching
    }
}
у меня тоже через пропс
export default (
    <Route path="/" component={App}>
        <Route path="events" component={EventsPage} />
        <Route path="events/:eventId" component={EventDetailPage} />
        <Route path="events/:eventId/tournaments/:tournamentId" component={TournamentDetailPage} />
        <IndexRoute component={EventsPage} />
    </Route>
);
чо у тебя там с роутом не пошло?
Maxim
@stigmat4j
Mar 01 2016 14:44
http://i.imgur.com/oacRN6g.png
Вот начало юзкейса.
Потом по клику надо показать в активном блоке полную инфу.
Denis Stoyanov
@xgrommx
Mar 01 2016 14:45
у меня похоже)
Maxim
@stigmat4j
Mar 01 2016 14:47
всеравно что-то не врублюсь как мне достать))
Illia Seheda
@ALF-er
Mar 01 2016 14:47
где у тебя хранится этот id?
Maxim
@stigmat4j
Mar 01 2016 14:48
приходит в компонент из пропсов.
в пропсах короче
Denis Stoyanov
@xgrommx
Mar 01 2016 14:48
            { event.tournaments.map(tournament => (
                <tr key={tournament.id}>
                    <td>{tournament.id}</td>
                    <td>{tournament.name}</td>
                    <td>{moment(tournament.startDate).format('dddd, MMMM Do YYYY, h:mm')}</td>
                    <td>{moment(tournament.endDate).format('dddd, MMMM Do YYYY, h:mm')}</td>
                    <td><Link to={`events/${event.id}/tournaments/${tournament.id}`}>Details</Link></td>
                </tr>
            ))}
Maxim
@stigmat4j
Mar 01 2016 14:49
@xgrommx и у тебя получается без переходов между страницами открываются детали?
или детали на отдельной странице?
Illia Seheda
@ALF-er
Mar 01 2016 14:50

приходит в компонент из пропсов.

у mapStateToProps сигнатура: mapStateToProps(state, [ownProps]): stateProps в ownProps будут те пропсы которые пришли бы в твой компонент не будь он обёрнут в connect

Denis Stoyanov
@xgrommx
Mar 01 2016 14:51
@ALF-er ну у меня так
Illia Seheda
@ALF-er
Mar 01 2016 14:52
Судя по продолжившимся вопросам, человек этого не понял
Maxim
@stigmat4j
Mar 01 2016 14:53
Может кто-то показать на примере как делать с mapStateToProps?
Illia Seheda
@ALF-er
Mar 01 2016 14:53
Maxim
@stigmat4j
Mar 01 2016 14:53
Точно, понял. Спасибо
Maxim
@stigmat4j
Mar 01 2016 15:00
Получилось. Спасибо за помощь.
Denis Stoyanov
@xgrommx
Mar 01 2016 15:06
=)
Alexey Migutsky
@mr-mig
Mar 01 2016 16:51
@b1ff спасибо за наводку на enzyme
Alexey Migutsky
@mr-mig
Mar 01 2016 17:23
Опять вопрос ко всем: как я понимаю, Simulate не работае с шеллоу рендерингом. Как тестировать ивенты в компонентах без дома в таком случае ?
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 17:28
ну это же вроде уже не юнит, а инеграционные.
Alexey Migutsky
@mr-mig
Mar 01 2016 17:28
ок, как запускать “вроде как интеграционные” без дома?
мне без разницы, как это назвать. Меня интересует ТДД сетап для проверки структуры и поведения компонент
Alexey Migutsky
@mr-mig
Mar 01 2016 17:34
я так понимаю, что мне в любом случае придется гонять поверх дома. И вопрос шеллоу/дип стоит только для тестирования структуы, но не поведения
а значит подойдет любая карма или жсдом + мокка. Ничо радикально не изменилось под солнцем
я прав?
@kof :arrow_up:
Illia Seheda
@ALF-er
Mar 01 2016 17:39
насколько я помню, @vslinko юзает jsdom для этого
Alexey Migutsky
@mr-mig
Mar 01 2016 17:41
хотя я ж могу хендлеры напрямую вызывать, так?
Оно меня избавит от необходимости иметь ДОМ
Illia Seheda
@ALF-er
Mar 01 2016 17:45
ну это вроде то, что имел ввиду @alexeyraspopov
Alexey Migutsky
@mr-mig
Mar 01 2016 17:47
а где он это имел в виду? Я кажись пропустил
Terry Sahaidak
@terrysahaidak
Mar 01 2016 17:51
@ALF-er яка є нормальна темна тема для vscode, шоб з реактом було норм (хоч шоб підсвічувало нормально теги)?
а то це чуть не основна прчина чому я не хочу його юзати
воно всьо таке страшне
і ніби вобше без підсвітки
Illia Seheda
@ALF-er
Mar 01 2016 17:53
я юзаю Dark+ но если ты не на 10.10, то попробуй язык файла переключить на JavaScript React
@mr-mig я так понял, что это имелось под интеграционностью. короче забей
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 17:55

ну это вроде то, что имел ввиду @alexeyraspopov

именно вызов и тестирование хендлеров и есть unit тесты. при написании тестов с использованием событий DOM мы получаем "интеграционные" (если их действительно можно так назвать) тесты

Terry Sahaidak
@terrysahaidak
Mar 01 2016 17:57
@ALF-er тоже пічаль
весь es6 синтакс не підсвічується(
шолі пул їм кинути
Illia Seheda
@ALF-er
Mar 01 2016 18:00
полазь по темам в сторе. может найдёшь чёт
Terry Sahaidak
@terrysahaidak
Mar 01 2016 18:00
та нє, це проблема синтаксів
в атомі було прощє -- там всьо css, який так як є, так і мапиться
а тут xml, та ще й назви там і назви класів css відрізняються
(це щодо самої теми)
треба ше пошукати де сам JavaScript React є
Illia Seheda
@ALF-er
Mar 01 2016 18:02
Ctrl-K M
или внизу справа
Terry Sahaidak
@terrysahaidak
Mar 01 2016 18:03
нє, я мав на увазі сам xml конфіг)
Illia Seheda
@ALF-er
Mar 01 2016 18:03
или если хочешь, поставь инсайдерский билд. там прокачали парсер и подсветка стала лучше
Terry Sahaidak
@terrysahaidak
Mar 01 2016 18:03
о, а це вже цікаво
але чисто так на перший погляд -- vscode робить в стопіцор раз шустріше атома
опа, в інсайдері все куди краще)
Terry Sahaidak
@terrysahaidak
Mar 01 2016 18:11
набагато краще, але все одно в js react не підсвічуються const
Illia Seheda
@ALF-er
Mar 01 2016 18:24
https://twitter.com/tylermcginnis33/status/704717858190684160 направление куда слать (возможно)
Terry Sahaidak
@terrysahaidak
Mar 01 2016 18:28
там ціни такі ніхілі
Illia Seheda
@ALF-er
Mar 01 2016 18:29
да, я чёт не глянул на цены
Vyacheslav Slinko
@vslinko
Mar 01 2016 18:54
@ALF-er @mr-mig да, я использую jsdom, но это, очевидно, не "без дома" :)
Illia Seheda
@ALF-er
Mar 01 2016 19:06
Lightning Talks - Vivian Cromwell Лайтнинг о том, что нейтивная реализация листов в RN быстро сожрёт память если делать бесконечные списки, а реализация в каком-то Chop под RN не сожрёт и будет работать быстро. Вроде объясняется идея, но я так и не понял что там революционного. Вроде стандартная идея бесконечных списков. И ещё я походу в этом докладе услышал больше повторений "so" чем за всю прошедшую жизнь
Artyom Trityak
@artyomtrityak
Mar 01 2016 19:08
) они сами сделали этот Chop?
Illia Seheda
@ALF-er
Mar 01 2016 19:08
Я вообще не понял что это =/
Lightning Talks - Vivek Patel Вот это полезный лайтнинг. Чувак представляет https://github.com/revivek/oy - набор готовых компонент для вёрстки имейлов. Выдаёт варнинги когда вы забыли какие-нибудь обязательные атрибуты (ширина, высота у картинок в имейлах - обязательны). Короче годнота если вам надо верстать имейлы
Illia Seheda
@ALF-er
Mar 01 2016 19:21
Lightning Talks - Eric Vlad Vicenti Лайтнинг о том, что в RN запилили новую систему с Navigator'ами. Стало заметно круче и легче приделывать анимации и легче реюзать код и одни "Экраны" в приложении стали более отделёнными от других "Экранов" в приложении. Судя по тому, что в чатике уже не раз сетовали на навигаторы в RN это должно быть полезно
Alexey Migutsky
@mr-mig
Mar 01 2016 19:31

(если их действительно можно так назвать) тесты

@alexeyraspopov я бы даже назвал их “аксептанс”

яснопонятно, всем спасибо, буду размышлять
Illia Seheda
@ALF-er
Mar 01 2016 19:34
Lightning Talks - Andres Suarez Лайтнинг о том, что нынче есть в Nuclide в частности для RN: полнофункциональный дебагер, полнофункциональный инспектор, поддержка Флоу и тд и тп. Если кто не в курсе, Nuclide - это целая большая пачка плагинов к Atom и он не только для разработки под RN там и просто React и Hip-Hop. В FB его юзают для разработки своих продуктов. Вобщем not bad (лично я останусь на Code =) ). И я не знал, что Суарез свалил из СаундКлауд.
Artyom Trityak
@artyomtrityak
Mar 01 2016 19:35
Nuclide говорят адски лагает?
Illia Seheda
@ALF-er
Mar 01 2016 19:36
Когда только появился у меня лагал. Сейчас не знаю не запускал его уже очень давно
Artyom Trityak
@artyomtrityak
Mar 01 2016 19:36
@ALF-er ты юзаешь http://www.panic.com/coda/ ?
Illia Seheda
@ALF-er
Mar 01 2016 19:36
что это О.о
нет, я юзаю http://code.visualstudio.com/
Artyom Trityak
@artyomtrityak
Mar 01 2016 19:39
а)
у тебя норм с реакт нейтив идет? у меня с новым плагином кучу ошибок показывает
Illia Seheda
@ALF-er
Mar 01 2016 19:40
я не работаю с RN =)
Artyom Trityak
@artyomtrityak
Mar 01 2016 19:46
пффф
Alexey Raspopov
@alexeyraspopov
Mar 01 2016 20:44
я бы даже назвал их “аксептанс”
Хуептанс
В смысле не очень)
Alexey Volkov
@rosko
Mar 01 2016 20:58
аксептанс = приёмочные
Alexey Migutsky
@mr-mig
Mar 01 2016 21:28
спасибо за перевод, ага
Господа знатоки терминологии? Статью мб подгоните?
Как ещё это обозвать, если в тесте условие “пользователь жмёт на кнопку”, как не аксептанс?
Artyom Trityak
@artyomtrityak
Mar 01 2016 21:36
функциональные?
Alexey Migutsky
@mr-mig
Mar 01 2016 21:53
хер его знает, я такое всегда называл functional/acceptance testing :)
Alexey Volkov
@rosko
Mar 01 2016 22:09
@mr-mig зря ты так, я уже встречал термин “приемочные тесты”, то ли в литературе, то ли где-то в докладах
Terry Sahaidak
@terrysahaidak
Mar 01 2016 22:15
ну на скільки я пам'ятаю з рубішного bdd, коли ми тестуємо якусь поведінку, а не тупо функції, ну типу "нажми на кнопку і має така от хрінь статись", то це інтеграційні тести
Artyom Trityak
@artyomtrityak
Mar 01 2016 23:58
:dancers:
Illia Seheda
@ALF-er
Mar 01 2016 23:59
тараканы?