我已经尝试按照 Apollo Client 上的说明将 cookie 与 graphql 请求一起发送,但是 express 服务器没有接收任何 cookie,当我检查请求时,它显示没有 cookie 与响应一起发送。
在此页面之后:
https://www.apollographql.com/docs/react/recipes/authentication.html
我的代码是
const link = createHttpLink({
uri: 'http://localhost:3000/api/graphql',
opts: {
credentials: 'include',
}
});
const client = new ApolloClient({
link,
cache: new InMemoryCache()
});
Run Code Online (Sandbox Code Playgroud)
我的设置非常简单,我只是在 localhost:3000 上使用 create-react-app 服务器,将 api 请求发送到 localhost:5000(快速 api 服务器)。我可以通过 localhost:3000 在其他路由上设置和检索 cookie,只有 Apollo Client 不发送它们。
我正在使用Ubuntu 16.04并且无法遵循Vapor Toolbox的安装指南.我使用了指南中描述的swiftenv,并安装了Swift的Ubuntu 15.10版本,但是尝试安装工具箱会导致以下结果:
$ curl -sL toolbox.vapor.sh | bash
? Compatible
Downloading...
Compiling...
<unknown>:0: error: build had 1 command failures
error: exit(1): /home/william/.swiftenv/versions/DEVELOPMENT-SNAPSHOT-2016-09-06-a/usr/bin/swift-build-tool -f /home/william/workspace/.vapor-toolbox-0.10.2/vapor-toolbox/.build/release.yaml
Installing...
bash: line 24: .build/release/Executable: No such file or directory
Use vapor --help and vapor <command> --help to learn more.
Run Code Online (Sandbox Code Playgroud)
尝试'蒸汽'会导致:
$ vapor
vapor: command not found
Run Code Online (Sandbox Code Playgroud) 我对Rails几乎全新,或者我相信我会知道如何自己回答这个问题.我只是想修改基本的ActionCable演示中创建的基本聊天应用程序:https://medium.com/@dhh/rails-5-action-cable-demo-8bba4ccfc55e#.6lmd6tfi7
我没有只有一个聊天室,而是想拥有多个聊天室,所以我routes.rb通过添加以下行来修改我:
get '/rooms/show/:topic', to: 'rooms#show'
所以现在我可以根据不同的主题访问不同的聊天室.房间控制器/app/controllers/rooms_controller.rb处理这些路线没有问题:
class RoomsController < ApplicationController
def show
@topic = params[:topic]
@messages = Message.all
end
end
Run Code Online (Sandbox Code Playgroud)
但是这个参数没有传递给app/channels/room_channel.rb我,我只是不确定我需要做什么修改.我目前的尝试:
class RoomChannel < ApplicationCable::Channel
def subscribed
stream_from "room_channel_#{params[:topic]}"
end
Run Code Online (Sandbox Code Playgroud)
只返回"room_channel_"
我看了终极版的egghead.io教程,觉得我有什么终极版是某种意义上试图做的,但它的实际工作方式仍然是神秘的给我。我使用react-redux connect方法实现了Dan的简单计数器应用程序,但是我不太了解我的实现。我尝试了两种可能的方法:
没有通过调度:
const mapDispatchToProps = {
upIt: () => {
return ({type:'INCREMENT'}
)
},
downIt: () => {
return({type:'DECREMENT'})
}
}
Run Code Online (Sandbox Code Playgroud)
通过调度:
const mapDispatchToProps = dispatch => ({
upIt: () => {
dispatch({type:'INCREMENT'}
)
},
downIt: () => {
dispatch({type:'DECREMENT'})
}
})
Run Code Online (Sandbox Code Playgroud)
计数器使用这两个选项中的一个或两个来工作,但是我不确定第一个选项(我从不称其为“ dispatch”)如何设法连接到store.dispatch方法。有什么理由比另一种我更喜欢一种编写方法的方法吗?
我正在尝试使用html2canvas将DOM元素呈现为.png图像,然后将其上传到服务器。这是我的代码:
import React, { Component, PropTypes } from 'react';
import html2canvas from 'html2canvas';
import axios from 'axios';
const sendScreenshot = (img) => {
const config = {
headers: {
'content-type': 'multipart/form-data'
}
}
let data = new FormData();
data.append('screenshot', img);
return axios.post('/api/upload', data)
}
export default class Export extends Component {
printDocument() {
const input = document.getElementById('divToPrint');
html2canvas(input).then(canvas => {
document.body.appendChild(canvas);
const imgData = canvas.toDataURL('image/png');
sendScreenshot(imgData)
});
}
...
Run Code Online (Sandbox Code Playgroud)
我可以看到DOM元素已正确转换为图像,因为我可以看到它附加在页面上。
在node.js服务器端,我可以看到表单正在通过,但是“截屏”是作为文本字段而不是文件接收的。我正在使用multer,并且确认至少在使用Postman时,我可以正确接收和保存文件上传。
所以我想基本的问题是我需要指出我要附加到FormData的项是文件,而不是文本字段。但是我不知道该怎么做。我尝试使用带有三个参数的append,并尝试将imgData转换为如下所示的Blob:
const blob = new Blob([img], {type: 'image/png'});
但是结果并没有使我更接近我想要的。
我知道标题听起来很无聊,因为很多人已经问过这个话题了.我希望它可以帮助我深入了解随机模块的工作原理.问题是,我写的,我认为应该是相同的两个不同的功能,但我得到的结果是不相同的,我不明白为什么.
我希望最终得到一个"洗得很好的套牌".我只关心卡片是红色还是黑色,所以我的套牌非常简单.我称之为"1"红色和"0"黑色.
我的想法是通过附加1(红色),如果random.random()是> .5,或者除了0(黑色),然后在我达到26(甲板的一半)时自动附加1或0来构建套牌)一种颜色.但是出了点问题.deckmaker()无法正常工作,尽管deckmaker2()可以正常工作.谁能提供洞察力?
import random
def deckmaker():
deck = []
for i in range(52):
if deck.count(0) == 26:
deck.append(1)
elif deck.count(1) == 26:
deck.append(0)
elif random.random() > .5:
deck.append(0)
else:
deck.append(1)
return deck
def deckmaker2():
newdeck = []
for i in range(26):
newdeck.append(0)
for i in range(26):
newdeck.append(1)
deck = []
for i in range(52):
x = random.randint(0,len(newdeck)-1)
deck.append(newdeck.pop(x))
return deck
Run Code Online (Sandbox Code Playgroud)
注意:在写这个问题的时候,我发现了random.shuffle列表操作符,它与我的第二个函数做了同样的事情,所以当然让洗牌后的表变得容易.但我仍然想知道为什么我的原始代码不会做同样的事情.
编辑:抱歉对deckmaker()的确切问题含糊不清.问题是,我并不完全明白什么是错的.它与它产生的甲板上的事实有关,当你逐一"翻转"卡片时,有一些策略可以让你预测"下一张牌"是红色还是黑色不是使用random.shuffle创建的套牌
编辑2: [更多信息]我将解释我如何确定甲板制造商不起作用,以防重要.我在写这个程序模型拼图张贴在这里:http://www.thebigquestions.com/2013/12/17/tuesday-puzzle-4/
我的策略是记住最后几张牌,然后用这些信息决定何时决定拿下一张牌.我想也许在连续获得5张"黑色"牌之后,现在是预测"红色"的好时机.我是这样实现的:
mycards = []
for j in range(1000):
mydeck = deckmaker(52)
mem_length …Run Code Online (Sandbox Code Playgroud) 我知道这是一个非常简单的问题,但不幸的是我不知道足以有效地搜索答案.我应该已经知道的任何答案或链接将不胜感激.
我想要做的是在Python中创建一个环境,我有一堆乌龟在做各种事情(它基本上就像麻省理工学院的StarLogo).
class Turtle:
def __init__(self,x,y):
self.xpos = float(x)
self.ypos = float(y)
self.head = 0.0
numTurtles = 4
for i in range(numTurtles):
...
MyTurtles = [...]
Run Code Online (Sandbox Code Playgroud)
每只乌龟都有一个x位置,一个位置和一个标题(以弧度表示).我想要做的就是创建它们并告诉它们站在哪里(它们的x和y坐标),然后将所有的乌龟放入一个列表中,以便稍后我可以告诉整个组采取某种行动.
我希望能够改变海龟的数量,否则我只会称它们为[a,b,c,d].但我认为必须有更好的方法.
python ×2
reactjs ×2
algorithm ×1
cookies ×1
express ×1
javascript ×1
multer ×1
random ×1
react-apollo ×1
react-redux ×1
shuffle ×1
ubuntu ×1
ubuntu-16.04 ×1
vapor ×1