Вопросы по тегу: alpine.js

(5516)

Производительность большого списка с React

Я создаю фильтруемый список с помощью React. Структура списка показана на изображении ниже.ПОМЕЩЕНИЕВот описание того, как это должно работать: Состояние находится в компоненте самого высокого уровня, компоненте Поиск. Состояние описывается следующим образом: { visible : boolean, files : array, filtered : array, query : string, currentlySelectedIndex : integer } files — потенциально очень большой массив, содержащий пути к файлам (10000 записей — правдоподобное число). filtered — это отфильтрованный массив после того, как пользователь введет не менее 2 символов. Я знаю, что это производные данные, и поэтому можно привести аргумент о сохранении их в состоянии, но это необходимо для currentlySelectedIndex который является индексом текущего выбранного элемента из отфильтрованного списка. Пользователь вводит более 2 букв в компонент Input, массив фильтруется и для каждой записи в отфильтрованном массиве отображается компонент Result* 100023* Каждый компонент Результат отображает полный путь, который частично соответствует запросу, а часть пути с частичным совпадением выделена. Например, DOM компонента Result, если пользователь ввел «le», будет выглядеть примерно так: это/является/файломфайл/путь Если пользователь нажимает клавиши вверх или вниз, когда компонент Input сфокусирован, currentlySelectedIndex изменяется на основе массива filtered. Это приводит к тому, что компонент Result, соответствующий индексу, помечается как выбранный, вызывая повторный рендеринг ПРОБЛЕМАПервоначально я протестировал это с достаточно небольшим массивом из файлов, используя разрабатываемую версию React, и все работало нормально.Проблема возникла, когда мне пришлось иметь дело с массивом files размером до 10000 записей. Ввод 2 букв в поле ввода привел бы к созданию большого списка, и когда я нажимал клавиши вверх и вниз для навигации по нему, он сильно тормозил.Сначала у меня не было определенного компонента для элементов Result, и я просто составлял список на лету, при каждом рендеринге компонента Search, как таковой:results = this.state.filtered.map(function(file, index) { var start, end, matchIndex, match = this.state.query; matchIndex = file.indexOf(match); start = file.slice(0, matchIndex); end = file.slice(matchIndex + match.length); return ( {start} {match} {end} ); }.bind(this)); Как вы понимаете, каждый раз, когда currentlySelectedIndex изменялся, это вызывало повторную визуализацию, и список каждый раз создавался заново. Я думал, что, поскольку я установил значение key для каждого элемента li, React избежит повторного рендеринга каждого другого элемента li, у которого нет его className измениться, но видимо это было не так.В итоге я определил класс для элементов Result, где он явно проверяет, должен ли каждый элемент Result повторно отображаться на основе того, был ли он выбран ранее и на основе текущего пользовательский ввод:var ResultItem = React.createClass({ shouldComponentUpdate : function(nextProps) { if (nextProps.match !== this.props.match) { return true; } else { return (nextProps.selected !== this.props.selected); } }, render : function() { return ( {this.props.children} ); } }); И список теперь создан как таковой: results = this.state.filtered.map(function(file, index) { var start, end, matchIndex, match = this.state.query, selected; matchIndex = file.indexOf(match); start = file.slice(0, matchIndex); end = file.slice(matchIndex + match.length); selected = (index === this.state.currentlySelected) ? true : false return ( {start} {match} {end} ); }.bind(this)); } Это улучшило производительность немного, но все равно недостаточно. Дело в том, что когда я тестировал производственную версию React, все работало плавно, без задержек.НИЖНЯЯ ЛИНИЯТакое заметное расхождение между разрабатываемой и производственной версиями React нормально?Я понимаю/делаю что-то не так, когда думаю о том, как React управляет списком? ОБНОВЛЕНИЕ 14-11-2016Я нашел эту презентацию Майкла Джексона, где он решает проблему, очень похожую на эту: https://youtu.be/7S8v8jfLb1Q?t=26m2sРешение очень похоже на решение, предложенное Аскаровым Бекнаром ответ, нижеОБНОВЛЕНИЕ 14-4-2018Поскольку это, по-видимому, популярный вопрос, и с тех пор, как был задан первоначальный вопрос, дела пошли дальше, хотя я рекомендую вам посмотреть видео по ссылке выше, чтобы получить представление о виртуальном макете, я также рекомендую вам использовать библиотеку React Virtualized, если вы не хотите заново изобретать велосипед.
D

Dimitris Karagiannis

6 лет назад

Ответов: 9

Каковы аргументы «уровни», «ключи» и имена для функции concat Pandas?

Вопросы Как использовать pd.concat? Для чего нужен аргумент levels? Для чего нужен аргумент keys? Есть ли куча примеров, которые помогут объяснить, как использовать все аргументы? ФункцияPandas concat является швейцарским армейским ножом объединенных утилит. Разнообразие ситуаций, в которых это полезно, многочисленно. Существующая документация упускает некоторые подробности о некоторых необязательных аргументах. Среди них аргументы levels и keys. Я решил выяснить, что делают эти аргументы.Я задам вопрос, который послужит воротами во многие аспекты pd.concat.Рассмотрите кадры данных d1, d2и d3:import pandas as pd d1 = pd.DataFrame(dict(A=.1, B=.2, C=.3), [2, 3]) d2 = pd.DataFrame(dict(B=.4, C=.5, D=.6), [1, 2]) d3 = pd.DataFrame(dict(A=.7, B=.8, D=.9), [1, 3]) Если бы я объединил их вместе сpd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3']) Я получаю ожидаемый результат с pandas.MultiIndex для моего объекта columns: A B C D d1 2 0.1 0.2 0.3 NaN 3 0.1 0.2 0.3 NaN d2 1 NaN 0.4 0.5 0.6 2 NaN 0.4 0.5 0.6 d3 1 0.7 0.8 NaN 0.9 3 0.7 0.8 NaN 0.9 Однако я хотел использовать уровни документацию по аргументам: levels: список последовательностей, по умолчанию нет. Конкретные уровни (уникальные значения), используемые для построения MultiIndex. В противном случае они будут выводиться из ключей. Так я прошелpd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'], levels=[['d1', 'd2']]) И получите KeyError ValueError: ключ d3 не находится на уровне Index(['d1', 'd2'], dtype='object') Это имело смысл. Уровни, которые я прошел, были недостаточны для описания необходимых уровней, обозначенных клавишами. Если бы я ничего не прошел, как я сделал выше, уровни выводятся (как указано в документации). Но как еще я могу использовать этот аргумент для большего эффекта?Если бы я попробовал это вместо этого:pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'], levels=[['d1', 'd2', 'd3']]) I и получил те же результаты, что и выше. Но когда я добавляю еще одно значение к уровням,df = pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'], levels=[['d1', 'd2', 'd3', 'd4']]) В итоге я получаю такой же фрейм данных, но результирующий MultiIndex имеет неиспользуемый уровень.df.index.levels[0] Index(['d1', 'd2', 'd3', 'd4'], dtype='object') Так в чем смысл аргумента уровень и должен ли я использовать ключи по-другому?Я использую Python 3.6 и Pandas 0.22.
p

piRSquared

4 года назад

Ответов: 1

Состояние как массив объектов и объект с ключом по идентификатору

В главе Проектирование формы состояниядокументация предлагает хранить ваше состояние в объекте с ID: Сохраняйте каждую сущность в объекте с идентификатором в качестве ключа и используйте идентификаторы для ссылки на нее из других сущностей или списков. Они продолжают говорить Подумайте о состоянии приложения как о базе данных. Я работаю над формой состояния для списка фильтров, некоторые из которых будут открыты (они отображаются во всплывающем окне) или имеют выбранные параметры. Когда я прочитал «Думайте о состоянии приложения как о базе данных», я подумал о том, чтобы думать о них как об ответе JSON, поскольку он будет возвращен из API (который сам поддерживается базой данных).Я думал об этом как[{ id: '1', name: 'View', open: false, options: ['10', '11', '12', '13'], selectedOption: ['10'], parent: null, }, { id: '10', name: 'Time & Fees', open: false, options: ['20', '21', '22', '23', '24'], selectedOption: null, parent: '1', }] Однако в документации предлагается формат, больше похожий на{ 1: { name: 'View', open: false, options: ['10', '11', '12', '13'], selectedOption: ['10'], parent: null, }, 10: { name: 'Time & Fees', open: false, options: ['20', '21', '22', '23', '24'], selectedOption: null, parent: '1', } } Теоретически это не имеет значения, если данные сериализуемы (под заголовком "Состояние").Поэтому я с удовольствием использовал подход с массивом объектов, пока не написал свой редьюсер.При подходе с ключом объекта по идентификатору (и свободном использовании синтаксиса распространения) часть редуктора OPEN_FILTER становитсяswitch (action.type) { case OPEN_FILTER: { return { ...state, { ...state[action.id], open: true } } } В то время как подход с массивом объектов более подробный (и зависит от вспомогательной функции)switch (action.type) { case OPEN_FILTER: { // relies on getFilterById helper function const filter = getFilterById(state, action.id); const index = state.indexOf(filter); return state .slice(0, index) .concat([{ ...filter, open: true }]) .concat(state.slice(index + 1)); } ... Итак, у меня три вопроса:1) Является ли простота редуктора мотивацией для использования подхода с ключом объекта по идентификатору? Есть ли другие преимущества в этой форме состояния?и2) Похоже, что подход с ключом объекта по идентификатору усложняет работу со стандартным вводом/выводом JSON для API. (Вот почему я в первую очередь выбрал массив объектов.) Итак, если вы выберете этот подход, вы просто используете функцию для преобразования его туда и обратно между форматом JSON и форматом формы состояния? Это кажется неуклюжим. (Хотя, если вы поддерживаете этот подход, является ли частью ваших рассуждений то, что он менее неуклюж, чем редуктор массива объектов выше?)и3) Я знаю, что Дэн Абрамов разработал редукцию, чтобы теоретически быть независимым от структуры данных и состояния (как было предложено «По соглашению, состояние верхнего уровня является объектом или какой-либо другой коллекцией ключ-значение, такой как Карта, но технически это может быть любой тип, " подчеркнуто мной). Но, учитывая вышеизложенное, просто «рекомендуется» сохранить его как объект с ключом по идентификатору, или есть другие непредвиденные болевые точки, с которыми я столкнусь, используя массив объектов, которые делают его таким, что я должен просто прервать это спланировать и попытаться придерживаться объекта с ID?
n

nickcoxdotme

6 лет назад

Ответов: 3

Стиль React-Native Button не работает

Импортировать_этоимпорт {AppRegistry, Text, View, Button, StyleSheet} из 'React-Native'; Это мой код кнопки React, но стиль не работает Заяц... Также пробовал по этому коду Нажмите на меня! Обновить вопрос:Также я пробовал вот так..ку ка Стильпостоянные стили = StyleSheet.create({ стиль кнопки: { красный цвет', полеВерх: 20, набивка: 20, backgroundColor: зеленый } }); Но нет вывода: Скриншот моего телефона: -
M

MD Ashik

5 лет назад

Ответов: 14

Ошибка компиляции сборки Maven: не удалось выполнить цель org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (компиляция по умолчанию) в проекте Maven

У меня есть проект maven, разветвленный и клонированный из репозитория git на мое затмение. Он построен на Java 8. Первое, что я делаю, это выполняю mvn clean install Но я получаю следующее сообщение об ошибке:[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ Maven --- [INFO] Deleting /Users/vshukla/git/Prism/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Maven --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /Users/vshukla/git/Prism/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Maven --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 66 source files to /Users/vshukla/git/Prism/target/classes [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/scanUtility.java:[54,52] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/main/AppUtility.java:[87,86] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/ComparisionUtility.java:[58,52] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator) [INFO] 3 errors [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.266 s [INFO] Finished at: 2017-03-01T12:11:27+05:30 [INFO] Final Memory: 13M/309M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Maven: Compilation failure: Compilation failure: [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/scanUtility.java:[54,52] diamond operator is not supported in -source 1.5 [ERROR] (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/main/AppUtility.java:[87,86] diamond operator is not supported in -source 1.5 [ERROR] (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/ComparisionUtility.java:[58,52] diamond operator is not supported in -source 1.5 [ERROR] (use -source 7 or higher to enable diamond operator) [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException Однако ниже приведены сведения о пути сборки проекта, в котором явно настроена JRE-8: и настройка компиляции:Независимо от того, сколько раз я собираю проект, я получаю ту же ошибку. Даже после очистки проекта и его обновления из eclipse не помогает. Пожалуйста, помогите.ОБНОВЛЕНИЕ:После добавления свойств для установки плагина компилятора maven 1.8 1.8 , получаю следующую ошибку:[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ Maven --- [INFO] Deleting /Users/vshukla/git/Prism/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Maven --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /Users/vshukla/git/Prism/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Maven --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 66 source files to /Users/vshukla/git/Prism/target/classes [INFO] ------------------------------------------------------------- [WARNING] COMPILATION WARNING : [INFO] ------------------------------------------------------------- [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java uses or overrides a deprecated API. [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: Recompile with -Xlint:deprecation for details. [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: Some input files use unchecked or unsafe operations. [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: Recompile with -Xlint:unchecked for details. [INFO] 4 warnings [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[26,22] package com.apple.eawt does not exist [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,41] cannot find symbol symbol: class Application [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,67] cannot find symbol symbol: variable Application [INFO] 3 errors [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.591 s [INFO] Finished at: 2017-03-01T13:09:47+05:30 [INFO] Final Memory: 21M/347M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Maven: Compilation failure: Compilation failure: [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[26,22] package com.apple.eawt does not exist [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,41] cannot find symbol [ERROR] symbol: class Application [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,67] cannot find symbol [ERROR] symbol: variable Application [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException А вот фрагмент кода, выдающий ошибку компиляции из класса MainUITabbed:import com.apple.eawt.Application; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Application application = Application.getApplication(); // line 93 ImageIcon imgicon = new ImageIcon(getClass().getResource( "ICON.jpg")); Image img = imgicon.getImage(); application.setDockIconImage(img); MainUITabbed frame = new MainUITabbed(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); }
r

roger_that

5 лет назад

Ответов: 25

Swift 3.0 Данные в строку?

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {} Я хочу deviceToken в строкуно:let str = String.init(data: deviceToken, encoding: .utf8) строка равно нольсвифт 3.0 как я могу преобразовать data в string ?Регистрация для получения push-уведомлений в Xcode 8/Swift 3.0? не работает, а ответ несколько месяцев назад, я пробовал:и напечатайте:
w

weijia.wang

5 лет назад

Ответов: 12

__file__ не существует в Jupyter Notebook

Я на сервере Jupyter Notebook (v4.2.2) с Python 3.4.2 и Я хочу использовать глобальное имя __file__, потому что блокнот будет клонирован от других пользователей и в одном разделе я должен запустить:def __init__(self, trainingSamplesFolder='samples', maskFolder='masks'): self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder) self.maskFolder = self.__getAbsPath(maskFolder) def __getAbsPath(self, path): if os.path.isabs(path): return path else: return os.path.join(os.path.dirname(__file__), path) The __getAbsPath(self, path) проверяет, является ли параметр path относительным или абсолютным путем, и возвращает абсолютную версию path. Поэтому я могу безопасно использовать возвращенный путь позже.Но я получаю ошибку NameError: имя '__file__' не определено Я искал эту ошибку в Интернете и нашел "решение", которое лучше использовать sys.argv[0], но print(sys.argv[0]) возвращает /usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py Но правильное местоположение блокнота должно быть /home/ubuntu/notebooks/.Спасибо за ссылку Как мне получить текущее имя ноутбука IPython от Мартина Питерса (комментарии) последний ответ (не принят) идеально подходит для моих нужд:печать(os.getcwd()) /дом/ubuntu/ноутбуки
F

Fabian

5 лет назад

Ответов: 4

Как можно импортировать moment.js с машинописным текстом?

Я пытаюсь изучить Typescript. Хотя я не думаю, что это уместно, я использую VSCode для этой демонстрации.У меня есть package.json, в котором есть эти фрагменты:{ "devDependencies": { "gulp": "^3.9.1", "jspm": "^0.16.33", "typescript": "^1.8.10" }, "jspm": { "moment": "npm:moment@^2.12.0" } } Тогда у меня есть класс Typescript main.js вот так:import moment from 'moment'; export class Main { } Мой gulpfile.js выглядит так:var gulp = require('gulp'); var typescript = require('gulp-tsb'); var compilerOptions = { "rootDir": "src/", "sourceMap": true, "target": "es5", "module": "amd", "declaration": false, "noImplicitAny": false, "noResolve": true, "removeComments": true, "noLib": false, "emitDecoratorMetadata": true, "experimentalDecorators": true }; var typescriptCompiler = typescript.create(compilerOptions); gulp.task('build', function() { return gulp.src('/src') .pipe(typescriptCompiler()) .pipe(gulp.dest('/dest')); }); Когда я запускаю сборку gulp, я получаю сообщение: "../main.ts(1,25): Cannot file module 'moment'."Если я использую import moment = require('moment');, тогда jspm будет работать и вставлять модуль при запуске приложения, но я все еще получаю сообщение об ошибке сборки. Я также пробовал:npm install typings -g typings install moment --ambient --save Вместо того, чтобы решить проблему, она ухудшилась. Теперь я получаю указанную выше ошибку при сборке, а также следующее: "../typings/browser/ambient/moment/index.d.ts(9,21): Не удается найти пространство имен 'moment'."*100003 *Если я перейду к файлу, предоставленному путем набора текста, и добавлю внизу файла:declare module "moment" { export = moment; } Я могу избавиться от второй ошибки, но мне по-прежнему нужен оператор require, чтобы заставить момент работать в моем файле main.ts, и я все еще получаю первую ошибку сборки.Нужно ли мне создать свой собственный файл .d.ts на данный момент или я просто упускаю какую-то часть установки?
p

peinearydevelopment

6 лет назад

Ответов: 7

Чтение тела обещания Fetch

У меня есть следующая экспресс-конечная точка для загрузки в облачное хранилище Google. Он отлично работает, и ответ от API Google дает мне уникальное имя файла, которое я хочу передать обратно в свой внешний интерфейс:app.post('/upload', (req, res) => { var form = new formidable.IncomingForm(), files = [], fields = []; form .on('field', function(field, value) { fields.push([field, value]); }) .on('file', function(field, file) { files.push([field, file]); }) .on('end', function() { console.log('-> upload done'); }); form.parse(req, function(err, fields, files){ var filePath = files.file.path; bucket.upload(filePath, function(err, file, apiResponse){ if (!err){ res.writeHead(200, {'content-type': 'text/plain'}); res.end("Unique File Name:" + file.name); }else{ res.writeHead(500); res.end(); } }); }); return; }); Я достигаю этой конечной точки, вызывая короткую функцию, которая передает ей файл:function upload(file) { var data = new FormData(); data.append('file', file); return fetch(`upload`,{ method: 'POST', body: data }); } const Client = { upload }; export default Client; Эта функция вызывается из моего внешнего интерфейса следующим образом:Client.upload(this.file).then((data) => { console.log(data); }); Этот окончательный console.log(data) регистрирует ответ на консоль. Однако я нигде не вижу ответа, который я написал в ("Уникальное имя файла:" + имя_файла)Как я могу получить эту информацию из тела ответа на стороне клиента?data выглядит так, когда я запускаю console.log:Это ответ, который я получаю, когда отправляю файл на свою конечную точку с помощью Postman:
q

quicklikerabbit

5 лет назад

Ответов: 4

Использование async/await внутри функционального компонента React

Я только начинаю использовать React для проекта, и мне очень сложно включить асинхронную/ожидающую функциональность в один из моих компонентов.У меня есть асинхронная функция с именем fetchKey, которая получает ключ доступа от API, который я обслуживаю через AWS API Gateway:const fetchKey = async authProps => { try { const headers = { Authorization: authProps.idToken // using Cognito authorizer }; const response = await axios.post( "https://MY_ENDPOINT.execute-api.us-east-1.amazonaws.com/v1/", API_GATEWAY_POST_PAYLOAD_TEMPLATE, { headers: headers } ); return response.data.access_token; } catch (e) { console.log(`Axios request failed! : ${e}`); return e; } }; Я использую тему пользовательского интерфейса React Material и отказываюсь использовать один из его шаблонов Dashboard. К сожалению, в шаблоне Dashboard используется функциональный компонент без сохранения состояния:const Dashboard = props => { const classes = useStyles(); const token = fetchKey(props.auth); console.log(token); return ( ... rest of the functional component's code Результатом моего console.log(токена) является обещание, которое ожидается, но скриншот в моем браузере Google Chrome несколько противоречив - он находится в ожидании или решен? Во-вторых, если я попробую вместо token.then((данные, ошибка)=> console.log(данные, ошибка)), я получу undefined для обеих переменных. Мне кажется, это указывает на то, что функция еще не завершена и, следовательно, не разрешила никаких значений для data или error. Тем не менее, если я попытаюсь поставить const Dashboard = async props => { const classes = useStyles(); const token = await fetchKey(props.auth); React сильно жалуется:> react-dom.development.js:57 Uncaught Invariant Violation: Objects are > not valid as a React child (found: [object Promise]). If you meant to > render a collection of children, use an array instead. > in Dashboard (at App.js:89) > in Route (at App.js:86) > in Switch (at App.js:80) > in div (at App.js:78) > in Router (created by BrowserRouter) > in BrowserRouter (at App.js:77) > in div (at App.js:76) > in ThemeProvider (at App.js:75) Теперь я буду первым, кто заявит, что у меня недостаточно опыта, чтобы понять, что происходит с этим сообщением об ошибке. Если бы это был традиционный компонент класса React, я бы использовал метод this.setState для установки какого-то состояния, а затем пошел бы своим веселым путем. Однако у меня нет такой опции в этом функциональном компоненте.Как включить асинхронную/ожидающую логику в мой функциональный компонент React?Изменить: Так что я просто скажу, что я идиот. Фактически возвращаемый объект ответа не response.data.access_token. Это было response.data.Item.access_token. Дох! Вот почему результат возвращался как неопределенный, хотя фактическое обещание было разрешено.
Y

Yu Chen

2 года назад

Ответов: 4

Не удалось создать адаптер вызова для io.reactivex.Observable

Я собираюсь отправить простой метод get на свой сервер (это приложение Rails) и получить результат, используя RxJava и Retrofit. Я сделал следующее:Мой интерфейс:общедоступный интерфейс ApiCall { Строка SERVICE_ENDPOINT = "https://198.50.214.15"; @GET("/api/сообщение") io.reactivex.Observable getPost(); } Моя модель:сообщение открытого класса { @СериализованноеИмя("идентификатор") частный строковый идентификатор; @SerializedName("тело") частное тело String; @SerializedName("название") частное строковое название; общедоступная строка getId () { вернуть идентификатор; } публичная строка getBody () { вернуть тело; } публичная строка getTitle () { вернуть заголовок; } } И вот что я делал в своей деятельности:общедоступный класс Javax расширяет AppCompatActivity { RecyclerView rvListContainer; постадаптер постадаптер; List messageList=new ArrayList<>(); @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(savedInstanceState); setContentView (R.layout.activity_javax); rvListContainer = (RecyclerView) findViewById (R.id.recyclerView); postAdapter = новый postAdapter (список сообщений); rvListContainer.setAdapter(postAdapter); } @Override защищенная пустота onResume() { супер.onResume(); Модернизация модификация=новая модификация.Builder() .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .baseUrl("https://198.50.214.15") .строить(); ApiCall apiService=retrofit.create(ApiCall.class); Observable observable=apiService.getPost(); observable.subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe (данные ответа -> { messageList.add(responseData.getTitle()); postAdapter.notifyDataSetChanged(); }); } } Я не знаю, почему я получаю эту ошибку, говорящую о том, что у меня проблема с адаптером. Я также включил адаптер в Gradle:E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.hussein.sqlitedatabase, PID: 19445 java.lang.RuntimeException: Unable to resume activity {com.example.hussein.sqlitedatabase/com.example.hussein.sqlitedatabase.Javax}: java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex.Observable for method ApiCall.getPost at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2964) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2993) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5292) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex.Observable for method ApiCall.getPost at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:751) at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:236) at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:161) at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:169) at retrofit2.Retrofit$1.invoke(Retrofit.java:146) at $Proxy0.getPost(Native Method) at com.example.hussein.sqlitedatabase.Javax.onResume(Javax.java:42) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1197) at android.app.Activity.performResume(Activity.java:5343) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2950) ... 12 more Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for io.reactivex.Observable. Tried: * retrofit2.adapter.rxjava.RxJavaCallAdapterFactory * retrofit2.ExecutorCallAdapterFactory at retrofit2.Retrofit.nextCallAdapter(Retrofit.java:240) at retrofit2.Retrofit.callAdapter(Retrofit.java:204) at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:234) ... 20 more Это моя зависимость Gradle:dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support:appcompat-v7:25.3.1' testCompile 'junit:junit:4.12' compile 'com.squareup.retrofit2:retrofit:2.2.0' compile 'com.android.support:recyclerview-v7:25.3.1' compile 'com.android.support:design:25.3.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.0' compile 'com.google.code.gson:gson:2.4' }
H

Hussein Ojaghi

5 лет назад

Ответов: 3

Могу ли я добавить ключевую опору к фрагменту React?

Я генерирую dl в React: { highlights.map(подсветка => { const count = text.split(highlight).length - 1; возвращение ( <> {highlight} {count} ); }) } Это дает мне предупреждение: Предупреждение: каждый дочерний элемент в списке должен иметь уникальный ключевой реквизит. Это удалит предупреждение, но не сгенерирует нужный мне HTML: { highlights.map(подсветка => { const count = text.split(highlight).length - 1; возвращение ( {выделение {количество ); }) } И я не могу добавить реквизит key к фрагменту (<> ).Как это обойти?Я использую React 16.12.0.
s

sdgfsdh

2 года назад

Ответов: 2

Строки таблицы Angular2 как компонент

Я экспериментирую с angular2 2.0.0-beta.0У меня есть таблица, и содержимое строки генерируется angular2 следующим образом: .... содержание .... Теперь это работает, и я хочу инкапсулировать содержимое в компонент "строка таблицы". А в компоненте шаблон имеет содержимое .Но теперь таблица больше не работает. Это означает, что содержимое больше не отображается в столбцах. В браузере инспектор показывает мне, что элементы DOM выглядят так: .... Как мне заставить это работать?
f

fbenoit

6 лет назад

Ответов: 5

Получение ошибки говорит: «Имя записи 'res/layout/test_toolbar.xml' столкнулось» при создании подписанного apk

Сегодня я обновил свою студию Android с 3.5.x до 3.6 и получил сообщение об ошибке при создании подписанного apk для варианта сборки, показывающее следующее сообщение - Имя записи ' res/layout/test_toolbar.xml' столкнулся У меня вообще нет макета с таким названием во всем проекте. У меня есть пользовательский вариант сборки с именем «stage», и всякий раз, когда я пытаюсь собрать подписанный apk, он всегда терпит неудачу. Я считаю найти любое решение еще. Пожалуйста, помогите мне с этой проблемой. СпасибоОбновление: Та же проблема может возникнуть и с этими следующими сообщениями (как я обнаружил в AS - 3.6.1 - Продолжается иногда с 4.x.x). Так что не беспокойтесь о такого рода неизвестных и неразрешимых сообщениях. На данный момент я обнаружил два новых типа сообщений при создании подписанного apk: Имя записи 'kotlin/collections/MapWithDefault.kotlin_metadata' столкнулось Доступ запрещен Результат тот же. Иногда для этого может потребоваться Invalidate Cache and Restart AS. Дайте мне знать ваши выводы. СпасибоБыстрое решение: (самый популярный ответ, и я согласен) удалить папку проекта\создать удалить папку проекта\отладить удалить папку проекта\выпуск удалить папку проекта\приложение\сборка удалить папку проекта\приложение\сборка\отладка удалить папку проекта\приложение\сборка\релиз Значит, вам нужно удалить все сборки, каталоги отладки и выпуска.Обратите внимание, что вы, возможно, не сможете удалить все каталоги отладки и выпуска, но вы можете удалить все их содержимое.
A

A S M Sayem

2 года назад

Ответов: 26

Symfony получает имя актива в выводе Assetic

Я генерирую свой файл с таким кодом:{% block head_stylesheets %} {% stylesheets filter='?uglifycss' '@MyBundle/Resources/public/less/myfile.less' %} {% endstylesheets %} {% endblock head_stylesheets %} Он создает дамп файла с таким именем: c543k540_myfile_1.cssЭтот файл состоит из имени ресурса, за которым следует имя файла: {имя_ресурса}_{имя_файла}.cssКак я могу настроить вывод, сохраняя имя актива в выводе?{% block head_stylesheets %} {% stylesheets output="css/mynewfilename.{assetName}.css" // {% endstylesheets %} {% endblock head_stylesheets %} Обновление для уточненияЯ знаю, что если я использую параметр name, в prod он будет скомпилирован в myyouputname.css, но то, что я хотел бы иметь в среде отладки/разработки, следует нижеприведенному коду, например мой файл_myyouputname_1.css{% block head_stylesheets %} {% stylesheets name="myouputname" // {% endstylesheets %} {% endblock head_stylesheets %} Спасибо за ответ.
B

BENARD Patrick

5 лет назад

Ответов: 1

Невозможно установить ссылку на работающий контейнер, запущенный командой docker-compose.

Я настраиваю свою локальную среду разработки с контейнерами Docker. Docker-compose.yml выглядит следующим образом:version: '2' services: db: image: mongo:3 mq: image: rabbitmq:3 api: build: . image: my_app/api ports: - "3000:3000" links: - db - mq environment: - NODE_ENV=development Запускается без ошибок. И докер перечисляет 3 запущенных контейнераdocker-compose up -d docker ps e90e5a8b5d33 my_app/api "/usr/local/bin/node " 0.0.0.0:3000->3000/tcp my_app_api_1 42bfcd971b16 mongo:3 "/entrypoint.sh mongo" 27017/tcp my_app_db_1 a0685a816c47 rabbitmq:3 "/docker-entrypoint.s" 4369/tcp, 5671-5672/tcp, 25672/tcp my_app_mq_1 Однако, когда я пытаюсь подключиться к этим запущенным контейнерам из другого контейнераdocker run --link my_app_mq_1:mq --link my_app_db_1:db -it worker Я получаю ошибку docker: Error response from daemon: Cannot link to /my_app_mq_1, as it does not belong to the default network. Я также пробовал docker run --link my_app_mq_1:mq --link my_app_db_1:db -it --net default worker Та же ошибка.Итак, как мне связать работающий контейнер, запущенный с помощью docker-compose?
G

George Chen

6 лет назад

Ответов: 3

Как мы можем использовать наборы цветов каталога активов?

Я обычно использую пользовательские UIColors на iOS с помощью расширений Swift, но теперь с iOS 11/Xcode 9 мы можем создавать наборы цветов. Как мы можем их использовать?Обновление — СоветКак говорит @Cœur, мы можем перетаскивать цвет и использовать его как объект UIColor, и возможным решением может быть использование его в качестве расширения: Или как константа:Теперь я хочу знать, можем ли мы получить к ним доступ, как доступ UIImage к Asset Image или нет, например:UIImage(named: "image-name") -> UIColor(named: "color-name")
e

elGeekalpha

5 лет назад

Ответов: 11

Заставить гибкий элемент охватить всю ширину строки

Я пытаюсь сохранить первые 2 дочерних элемента в той же строке, в то время как третий элемент находится внизу на полную ширину, и все это при использовании flex.Меня особенно интересует использование свойств flex-grow и flex-shrink для первых двух элементов (это одна из причин, по которой я не использую проценты), однако третий элемент действительно должен быть полной ширины и ниже первых двух.Элемент label программно добавляется после элемента text при возникновении ошибки и невозможности изменить код.Как заставить элемент метки располагаться на 100 % по ширине ниже двух других элементов, расположенных с помощью flex? .родитель { дисплей: гибкий; выравнивание элементов: по центру; ширина: 100%; цвет фона: #ececec; } .родитель * { ширина: 100%; } .родитель #текст { минимальная ширина: 75 пикселей; гибкая усадка: 2,25; } Сообщение об ошибке
M

MPaul

4 года назад

Ответов: 1

Джанго: TemplateDoesNotExist (rest_framework/api.html)

В моей функции просмотра я хотел бы вернуть объект json (data1) и некоторый текст/html (форма). Возможно ли это?МОЙ код@api_view(['POST']) @permission_classes((AllowAny,)) def create_user(request): if request.is_ajax(): if request.method == 'POST': serializer = SignupSerializer(data=request.data) print 'ser' print serializer if not serializer.is_valid(): return Response(serializer.errors,\ status=status.HTTP_400_BAD_REQUEST) else: serializer.save() data={'status': 'Created','message': 'Verification email has been sent to your email. Please verify your account.'} return Response(data, template_name='register.html') else: return HttpResponse('hello world') Когда я вызываю URL-адрес, я получаю код состояния 500 с ошибкой, как показано ниже TemplateDoesNotExist rest_framework/api.html когда я проверяю как API, я получаю ответ со статусом 200 ok. Это показывает, что я не могу получить свою html-страницуКак мне получить свой html в зависимости от запросаЗаранее спасибо
C

Coeus

6 лет назад

Ответов: 12

Как использовать модули npm из машинописного текста?

Пробую машинопись. Он отлично работает на сцене hello world. Сейчас я пытаюсь использовать модуль npm:index.ts =import _ = require('lodash') console.log(_.toUpper('Hello, world !')) Это не работает : tsc index.ts -> Не удается найти модуль «lodash». (2307) node-ts index.js -> Не удается найти модуль «lodash». (2307) Просмотр документации машинописного текста и в гугле не помог. Другие вопросы S/O либо остались без ответа (здесь и здесь), либо не имеют отношения к делу.Элементы : машинопись 1.8 последняя Да, lodash установлен npm i --save lodash и существует в моей файловой системе (проверено) Я также сделал typings i --save lodash варианты импорт * as _ from 'lodash' или const _ = require('lodash') тоже не работают Я попытался настроить параметры tsconfig.json, как было предложено в других ответах. не работает Как использовать пакет npm в typescript ??
O

Offirmo

6 лет назад

Ответов: 5

R dplyr: удалить несколько столбцов

У меня есть фрейм данных и список столбцов в этом фрейме данных, которые я хотел бы удалить. В качестве примера возьмем набор данных iris. Я хотел бы удалить Sepal.Length и Sepal.Width и использовать только оставшиеся столбцы. Как это сделать, используя select или select_ из пакета dplyr?Вот что я уже пробовал:drop.cols % select(-drop.cols) Ошибка в -drop.cols: недопустимый аргумент для унарного оператора iris %>% select_(.dots = -drop.cols) Ошибка в -drop.cols: недопустимый аргумент для унарного оператора iris %>% select(!drop.cols) Ошибка в !drop.cols: недопустимый тип аргумента iris %>% select_(.dots = !drop.cols) Ошибка в !drop.cols: неверный тип аргумента Мне кажется, что я упускаю что-то очевидное, потому что это кажется довольно полезной операцией, которая уже должна существовать. На Github кто-то опубликовал подобную проблему, и Хэдли сказал использовать «отрицательное индексирование». Это то, что (я думаю) я пробовал, но безрезультатно. Есть предложения?
N

Navaneethan Santhanam

6 лет назад

Ответов: 10

ошибка: нет шаблона с именем «remove_cv_t» в пространстве имен «std»; Вы имели в виду 'remove_cv'?

Моя проблема похожа на эту проблему, за исключением того, что это происходит, когда я запускаю yarn install в приложении rails.Когда я запускаю yarn install, некоторое время он работает успешно, затем../src/libsass/src/ast.hpp:1614:25: warning: loop variable 'numerator' of type 'const std::__1::basic_string' creates a copy from type 'const std::__1::basic_string' [-Wrange-loop-analysis] for (const auto numerator : numerators) ^ ../src/libsass/src/ast.hpp:1614:14: note: use reference type 'const std::__1::basic_string &' to prevent copying for (const auto numerator : numerators) ^~~~~~~~~~~~~~~~~~~~~~ & ../src/libsass/src/ast.hpp:1616:25: warning: loop variable 'denominator' of type 'const std::__1::basic_string' creates a copy from type 'const std::__1::basic_string' [-Wrange-loop-analysis] for (const auto denominator : denominators) ^ ../src/libsass/src/ast.hpp:1616:14: note: use reference type 'const std::__1::basic_string &' to prevent copying for (const auto denominator : denominators) ^~~~~~~~~~~~~~~~~~~~~~~~ & 2 warnings generated. rm -f Release/sass.a && ./gyp-mac-tool filter-libtool libtool -static -o Release/sass.a Release/obj.target/libsass/src/libsass/src/ast.o Release/obj.target/libsass/src/libsass/src/ast_fwd_decl.o Release/obj.target/libsass/src/libsass/src/backtrace.o Release/obj.target/libsass/src/libsass/src/base64vlq.o Release/obj.target/libsass/src/libsass/src/bind.o Release/obj.target/libsass/src/libsass/src/cencode.o Release/obj.target/libsass/src/libsass/src/check_nesting.o Release/obj.target/libsass/src/libsass/src/color_maps.o Release/obj.target/libsass/src/libsass/src/constants.o Release/obj.target/libsass/src/libsass/src/context.o Release/obj.target/libsass/src/libsass/src/cssize.o Release/obj.target/libsass/src/libsass/src/emitter.o Release/obj.target/libsass/src/libsass/src/environment.o Release/obj.target/libsass/src/libsass/src/error_handling.o Release/obj.target/libsass/src/libsass/src/eval.o Release/obj.target/libsass/src/libsass/src/expand.o Release/obj.target/libsass/src/libsass/src/extend.o Release/obj.target/libsass/src/libsass/src/file.o Release/obj.target/libsass/src/libsass/src/functions.o Release/obj.target/libsass/src/libsass/src/inspect.o Release/obj.target/libsass/src/libsass/src/json.o Release/obj.target/libsass/src/libsass/src/lexer.o Release/obj.target/libsass/src/libsass/src/listize.o Release/obj.target/libsass/src/libsass/src/memory/SharedPtr.o Release/obj.target/libsass/src/libsass/src/node.o Release/obj.target/libsass/src/libsass/src/operators.o Release/obj.target/libsass/src/libsass/src/output.o Release/obj.target/libsass/src/libsass/src/parser.o Release/obj.target/libsass/src/libsass/src/plugins.o Release/obj.target/libsass/src/libsass/src/position.o Release/obj.target/libsass/src/libsass/src/prelexer.o Release/obj.target/libsass/src/libsass/src/remove_placeholders.o Release/obj.target/libsass/src/libsass/src/sass.o Release/obj.target/libsass/src/libsass/src/sass2scss.o Release/obj.target/libsass/src/libsass/src/sass_context.o Release/obj.target/libsass/src/libsass/src/sass_functions.o Release/obj.target/libsass/src/libsass/src/sass_util.o Release/obj.target/libsass/src/libsass/src/sass_values.o Release/obj.target/libsass/src/libsass/src/source_map.o Release/obj.target/libsass/src/libsass/src/subset_map.o Release/obj.target/libsass/src/libsass/src/to_c.o Release/obj.target/libsass/src/libsass/src/to_value.o Release/obj.target/libsass/src/libsass/src/units.o Release/obj.target/libsass/src/libsass/src/utf8_string.o Release/obj.target/libsass/src/libsass/src/util.o Release/obj.target/libsass/src/libsass/src/values.o c++ '-DNODE_GYP_MODULE_NAME=binding' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/st/.node-gyp/16.0.0/include/node -I/Users/st/.node-gyp/16.0.0/src -I/Users/st/.node-gyp/16.0.0/deps/openssl/config -I/Users/st/.node-gyp/16.0.0/deps/openssl/openssl/include -I/Users/st/.node-gyp/16.0.0/deps/uv/include -I/Users/st/.node-gyp/16.0.0/deps/zlib -I/Users/st/.node-gyp/16.0.0/deps/v8/include -I../../nan -I../src/libsass/include -O3 -gdwarf-2 -mmacosx-version-min=10.7 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=c++11 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/binding/src/binding.o.d.raw -c -o Release/obj.target/binding/src/binding.o ../src/binding.cpp In file included from ../src/binding.cpp:1: In file included from ../../nan/nan.h:56: In file included from /Users/st/.node-gyp/16.0.0/include/node/node.h:63: In file included from /Users/st/.node-gyp/16.0.0/include/node/v8.h:30: /Users/st/.node-gyp/16.0.0/include/node/v8-internal.h:452:38: error: no template named 'remove_cv_t' in namespace 'std'; did you mean 'remove_cv'? !std::is_same>::value>::Perform(data); ~~~~~^~~~~~~~~~~ remove_cv /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:697:50: note: 'remove_cv' declared here template struct _LIBCPP_TEMPLATE_VIS remove_cv ^ 1 error generated. make: *** [Release/obj.target/binding/src/binding.o] Error 1 gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/Users/st/rails/myapp/node_modules/node-gyp/lib/build.js:262:23) gyp ERR! stack at ChildProcess.emit (node:events:365:28) gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12) gyp ERR! System Darwin 20.3.0 gyp ERR! command "/usr/local/Cellar/node/16.0.0/bin/node" "/Users/st/rails/myapp/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" gyp ERR! cwd /Users/st/rails/myapp/node_modules/node-sass gyp ERR! node -v v16.0.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok Есть идеи, как это решить? (я даже не уверен, что это проблема с xcode/node/rails/c++)Другие примечания /usr/bin/xcodebuild-версия возвращает Xcode 12.4 Build version 12D4e cpp --version возвращает Apple clang version 12.0.0 (clang-1200.0.32.29) Target: x86_64-apple-darwin20.3.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Обратите внимание: я не пишу код на cpp, поэтому у меня очень мало контекстных знаний о том, как решать.
s

stevec

9 месяцев назад

Ответов: 14

Сброс стека навигации для главного экрана (React Navigation и React Native)

У меня проблема с навигацией React Navigation и React Native. Речь идет о сбросе навигации и возврате на главный экран.Я создал StackNavigator внутри DrawerNavigator, и навигация между главным экраном и другими экранами работает. Но проблема в том, что стек навигации растет и растет. Я не знаю, как удалить экран из стека.Например, при переходе с начального экрана на экран настроек, затем на экран ввода и, наконец, снова на начальный экран, начальный экран дважды находится в стеке. Кнопкой назад не выхожу из приложения, а опять на экран входа.При повторном нажатии кнопки «Домой» сброс стека был бы замечательным, но я не знаю, как это сделать.Здесь кто-то пытался помочь другому человеку с похожей проблемой, но решение не сработало для меня.const Stack = StackNavigator({ Home: { screen: Home }, Entry: { screen: Entry }, Settings: { screen: Settings } }) export const Drawer = DrawerNavigator({ Home: { screen: Stack }}, { contentComponent: HamburgerMenu } ) А это простой пример экрана ящикаexport default class HamburgerMenu extends Component { render () { return { this.props.navigation.navigate('Home')}}> {I18n.t('home')} { this.props.navigation.navigate('Settings')}}> {I18n.t('settings')} { this.props.navigation.navigate('Entry')}}> {I18n.t('entry')} } } Надеюсь, вы сможете мне помочь. Это неотъемлемая часть навигации, и решение было бы отличным!
D

Daniel

5 лет назад

Ответов: 15

selenium - исполняемый файл chromedriver должен находиться в PATH

Сообщение об ошибке: исполняемый файл chromedriver должен находиться в PATH Я пытался закодировать скрипт с использованием селена в pycharm, однако произошла ошибка, описанная выше.Я уже связал свой селен с pycharm, как показано здесь (свежий и актуальный).Я новичок в селене, в папке «селен» нет хромированного драйвера. Если нет, то где его найти и добавить в путь?Кстати, я пытался ввести "chromedriver" в cmd, однако это не было распознано как внутренняя или внешняя команда.ошибка показана ниже:Traceback (most recent call last): File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start stdout=self.log_file, stderr=self.log_file) File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 947, in __init__ restore_signals, start_new_session) File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 1224, in _execute_child startupinfo) PermissionError: [WinError 5] Permission denied During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:/Users/sebastian/PycharmProjects/web/bot.py", line 10, in browser = webdriver.Chrome("C:/Users/sebastian/desktop/selenium-3.0.1") File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 62, in __init__ self.service.start() File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: 'selenium-3.0.1' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home Exception ignored in: > Traceback (most recent call last): File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__ self.stop() File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop if self.process is None: AttributeError: 'Service' object has no attribute 'process'
S

Sebastian Nielsen

5 лет назад

Ответов: 7

Переместить корневую файловую систему WSL (Bash в Windows) на другой жесткий диск?

Я только что обновил Windows 10 на своем ноутбуке до Redstone 1. Итак, у меня был тест подсистемы Linux (она же WSL, LXSS или Bash в Windows). В принципе все хорошо, но есть проблема, что RootFS WSL находится по пути %LocalAppData% (например, C:\Users\xyz\AppData\Local), это также место, где находится моя ОС Windows. Он занимает много места на жестком диске SSD в моем ноутбуке, и я надеюсь, что смогу перенести его на внешний жесткий диск.Есть еще одна проблема. Поскольку другие разделы жесткого диска смонтированы как DriveFS, он не поддерживает некоторые функции файловой системы Linux, такие как chmod, а некоторые сценарии сборки моего проекта Linux работают только в VoIFS, который находится только в /*. 100005* и /дом.Итак, я попытался переместить всю WSL RootFS на другой жесткий диск. Во-первых, я попытался создать соединение NTFS (жесткая ссылка) для C:\Users\xyz\AppData\Local\lxss. Я полностью удалил WSL и запустил mklink для RootFS на другой жесткий диск, и когда я снова переустановил WSL, не смог создать нового пользователя и сообщает об ошибке с кодом 0x80070003.Затем я поискал и получил следующее: перемещение файловой системы Linux - проблема #449.Похоже, что перемещение и создание жесткой ссылки для WSL RootFS работает только до Windows 10 Build 14388, это не работает в Windows 10 Build 14393 RTM. Единственный способ — это перемещение всего %LocalAppData% на внешний жесткий диск, но я не могу этого сделать, так как я пользователь ноутбука, и я не могу повсюду носить с собой внешний жесткий диск!Итак, я хотел бы спросить, есть ли другие способы переместить WSL из моего системного раздела? Если я не могу этого сделать, могу ли я создать дополнительный рабочий каталог VoIFS в других местах и ​​скомпилировать свои материалы?С уважением, Джексон
J

Jackson Ming Hu

5 лет назад

Почему any (True for... if cond) намного быстрее, чем any (cond for...)?

Два похожих способа проверить, содержит ли список нечетное число:any(x % 2 for x in a) any(True for x in a if x % 2) Результаты хронометража с a = [0] * 10000000 (по пять попыток, время в секундах):0,60 0,60 0,60 0,61 0,63 любое (x % 2 для x в a) 0,36 0,36 0,36 0,37 0,37 любой (Истинно для x в a, если x % 2) Почему второй способ почти вдвое быстрее?Мой тестовый код:from timeit import repeat setup = 'a = [0] * 10000000' expressions = [ 'any(x % 2 for x in a)', 'any(True for x in a if x % 2)', ] for expression in expressions: times = sorted(repeat(expression, setup, number=1)) print(*('%.2f ' % t for t in times), expression) Попробуй онлайн!
n

no comment

5 месяцев назад

Ответов: 5

Git pull/push - невозможно получить доступ к HTTPS, процедуры SSL, похоже, не работают

Я использую Git (и GitHub) ежедневно, и все работает нормально, и вдруг я больше не могу общаться с моим удаленным репозиторием GitHub с помощью команд Git. Когда я пытаюсь "Git pull", выдает следующую ошибку: fatal: невозможно получить доступ к 'https://github.com/snahrvar/eatibl.git/': ошибка: 1407742E: подпрограммы SSL: SSL23_GET_SERVER_HELLO: предупреждение tlsv1 версия протокола Итак, я протестировал несколько репозиториев и получил те же ошибки на своем компьютере. У меня был кто-то, кто взаимодействовал с теми же репозиториями, и у них это отлично работает. До этой ошибки я выполнил «npm install sharp» в проекте, и это закончилось неудачей, и я подозреваю, что это могло испортить некоторые настройки SSL, но это дикое предположение!Будем признательны за любые общие мысли или советы!Если это вообще полезно, вот моя среда: Git-версия: 1.9.4.msysgit.2 Версия Windows: Windows 8.1
S

Shayan Nahrvar

4 года назад

Ответов: 19

Python – преобразовать массив байтов в формат JSON

Я хочу проанализировать строку bytes в формате JSON, чтобы преобразовать ее в объекты python. Вот исходник, который у меня есть:my_bytes_value = b'[{\'Date\': \'2016-05-21T21:35:40Z\', \'CreationDate\': \'2012-05-05\', \'LogoType\': \'png\', \'Ref\': 164611595, \'Classe\': [\'Email addresses\', \'Passwords\'],\'Link\':\'http://some_link.com\'}]' И это желаемый результат, который я хочу получить:[{ "Date": "2016-05-21T21:35:40Z", "CreationDate": "2012-05-05", "LogoType": "png", "Ref": 164611595, "Classes": [ "Email addresses", "Passwords" ], "Link": "http://some_link.com"}] Сначала я преобразовал байты в строку:my_new_string_value = my_bytes_value.decode("utf-8") , но когда я пытаюсь вызвать loads, чтобы разобрать его как JSON:my_json = json.loads(my_new_string_value) Я получаю эту ошибку:json.decoder.JSONDecodeError: Expecting value: line 1 column 174 (char 173)
M

Merouane Benthameur

5 лет назад

Ответов: 4

Vagrant не смог смонтировать общие папки VirtualBox

Текущая установка: Virtualbox 5.1.20 с Vagrant 1.9.3Предыдущая рабочая конфигурация: Virtualbox 5.1.18 с Vagrant 1.9.3Я установил последнюю версию Virtualbox и попытался запустить виртуальную машину. Установка папки перестала работать. Такое же монтирование папок отлично работает в Virtualbox 5.1.18. Я получаю следующее сообщение об ошибке: Vagrant не удалось смонтировать общие папки VirtualBox. Обычно это происходит потому, что файловая система "vboxsf" недоступна. Эта файловая система доступна через гостевые дополнения VirtualBox и модуль ядра. Убедитесь, что эти гостевые дополнения правильно установлены в гостевой системе. Это не ошибка в Vagrant и обычно вызвана неисправной коробкой Vagrant. Для контекста предпринята следующая команда: mount -t vboxsf -o uid=1000,gid=1000 ключей /ключей Вывод ошибки команды: mount: неправильный тип файловой системы, неверный параметр, неверный суперблок на ключах, отсутствует кодовая страница или вспомогательная программа или другая ошибка В некоторых случаях полезная информация находится в системном журнале — попробуйте dmesg | хвост или около того. Я пытался вручную установить vagrant-vbguest плагин (через vagrant plugin install vagrant-vbguest), но это ничего не исправило. Понижение версии до 5.1.18 решает эту проблему, но это не лучший вариант для дальнейшего продвижения.Как заставить работать монтирование папок с Virtualbox 5.1.20 и Vagrant 1.9.3?
e

edwardmlyte

5 лет назад

Ответов: 11

Является ли innerHTML асинхронным?

Надеюсь, я не выставлю себя дураком, но я пытаюсь понять, что происходит в этих двух строчках кода:document.body.innerHTML = 'something'; alert('something else'); Я наблюдаю, что предупреждение появляется до того, как HTML был обновлен (или, может быть, он был, но страница не была обновлена/перекрашена/что-то еще)Проверьте это codepen, чтобы понять, что я имею в виду.Обратите внимание, что даже установка alert в setTimeout(..., 0) не помогает. Похоже, для innerHTML требуется больше циклов событий, чтобы фактически обновить страницу.РЕДАКТИРОВАТЬ:Забыл упомянуть, что использую Chrome и не проверял другие браузеры. Похоже, это видно только в Chrome. Тем не менее, мне все еще интересно, почему это происходит.
a

apieceofbart

5 лет назад

Ответов: 3

2022 WebDevInsider