• Как сделать формирование динамического PDF в NodeJS?

    boratsagdiev
    @boratsagdiev
    pdfkit.org - библиотека для генерации
    https://github.com/alvarcarto/url-to-pdf-api - конвертация url в pdf как микросервис
    Ответ написан
    2 комментария
  • Как в приложении react+redux реализовать отправку картинки?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Почему не можете? Это же тоже обычное поле формы.
    Посмотрел старый проект, где это делал. Было так:
    ...
    const request = require('superagent-bluebird-promise')
    ...
    export function addProduct(formData) {
      return dispatch => {
        dispatch({ type: PRODUCT_ADD_REQUEST })
        if (formData.image) {
          return request.post(`${API_ROOT_V1}/api/v1/products/add`)
            .field('name', formData.name)
            .field('price', formData.price)
            .field('description', formData.description)
            .field('providerId', formData.providerId)
            .attach('image', formData.image, formData.image.name) // добавление картинки
            .then(...) // здесь дальнейшая обработка в случае успеха
        } else { // кейс, когда у товара нет картинки
          return request.post(`${API_ROOT_V1}/api/v1/products/add`)
            .send(formData)
            .then(...)
        }
      }
    }


    В коде компонента formData формирую так:
    ... 
    // (обработчик сабмита формы)
    this.props.addProduct({
          name,
          price,
          description,
          image: findDOMNode(this.refs.image).files[0], // (забираю картинку)
          providerId: this.props.providerId,
        })
    ...
    
    // непосредственно кнопка загрузки файла в форме
    <div className='form-group'>
              <input
                id='productImage'
                type='file'
                name='image'
                placeholder='Image'
                onChange={this.handleChange}
                value={this.state.image}
                data-field-name='image'
                ref='image' />
              <p>Load product image</p>
            </div>
    ...
    Ответ написан
    2 комментария
  • Как подключиться к firebase?

    gadfi
    @gadfi
    https://gamega.org
    {
      "rules": {
        ".read": "auth != null",
        ".write": "auth != null"
      }
    }

    означает что читать и писать может только авторизованный пользователь, тоесть вам снчала нужно его зарегестрировать, можно использовать почту и пароль, или соцесети
    также для проверки можно использовать симулятор (нажмите кнопку вконсоли firebase )
    https://firebase.google.com/docs/auth/web/password-auth

    зы вообще система прав в firebase очень гибкая, конкретно сейчас у вас любой авторизированный пользователь имеет право читать и писать в любое мест о бд, хоть целиком затереть

    зыы а вы уверены что вам реально нужен firebase
    Ответ написан
    4 комментария
  • Как в webpack задать компиляцию в несколько файлов?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Нужно использовать extractTextPlugin
    Кусочек конфига:

    для webpack 2:
    module.exports = {
      devtool: 'cheap-module-source-map',
      entry: [
        './src/index'
      ],
      output: {
        path: path.join(__dirname, 'production/public/'),
        filename: 'bundle.js',
        publicPath: '/',
      },
      plugins: [
        new webpack.DefinePlugin({
          'process.env': {
            'NODE_ENV': JSON.stringify('production')
          }
        }),
        new ExtractTextPlugin({
          filename: 'style.css',
          disable: false,
          allChunks: false, // true
        })
      ],
      module: {
        rules: [
          {
            test: /\.js$/,
            loaders: ['babel-loader'],
            include: path.join(__dirname, 'src'),
          },
          {
            test: /\.css$/,
            loader: ExtractTextPlugin.extract({
              fallbackLoader: 'style-loader',
              loader: ['css-loader', 'postcss-loader'],
              publicPath: '/public',
            }),
          }, {
            test: /\.scss$/,
            loader: ExtractTextPlugin.extract({
              fallbackLoader: 'style-loader',
              loader: ['css-loader', 'postcss-loader', 'sass-loader'],
              publicPath: '/public',
            }),
          },
    ....


    Для webpack 1:
    module.exports = {
      devtool: 'cheap-module-source-map',
      entry: [
        './src/index'
      ],
      output: {
        path: path.join(__dirname, 'production/public/'),
        filename: 'bundle.js',
        publicPath: '/',
      },
      plugins: [
        new webpack.DefinePlugin({
          'process.env': {
            'NODE_ENV': JSON.stringify('production')
          }
        }),
        new ExtractTextPlugin('style.css', {
          allChunks: false
        })
      ],
      module: {
        loaders: [
          {
            test: /\.js$/,
            loaders: ['babel'],
            include: path.join(__dirname, 'src')
          },
          {
            test: /\.scss$/,
            include: path.join(__dirname, 'src'),
            loader: ExtractTextPlugin.extract('style-loader', 'css-loader!postcss-loader!sass-loader')
          },
          {
            test: /\.css$/,
            loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
          },
    ...


    Само собой, нужно не забыть добавить ExtractTextPlugin
    const ExtractTextPlugin = require('extract-text-webpack-plugin');
    Ответ написан
    5 комментариев
  • Пространство имен и подключение класса?

    @pudovMaxim
    web-developer
    Юрий верно говорит, только в Вашем случае надо не "App: src/" папку, а "App: classes/", т.е. корень ваших исходников. И расположить файлы в соответствии указанного PSR-0. (www.php-fig.org/psr/psr-0 )
    Также можно воспользоваться PSR-4 (www.php-fig.org/psr/psr-4 ) там чуток другие правила.
    Я, например делаю так:
    "autoload": {
        "psr-4": {
          "Appname\\": "src/"
        }
      }

    Соответственно код лежит в папке src со следующей структурой (Это, кстати, как раз Silex проект.):
    src/
    --Appname/
    ----Controller/
    ------IndexController.php


    В контроллере будет namespace Appname\Controller;
    А использование его как use Appname\Controller\IndexController as Control;

    и еще помогает обновить автоловад composer dump-autoload -o
    Ответ написан
    2 комментария
  • Пространство имен и подключение класса?

    riky
    @riky
    Laravel
    в файле composer.json надо автолоад прописать.
    "autoload": {
            "psr-0": {
                "App": "src/"
            }
        },

    и обновить
    composer update
    все классы в неймспейсе App будут загружаться из папки src.
    Ответ написан
    3 комментария