现在我正在使用烧瓶第三方库Flask-Session,我没有运气让会话工作.
当我连接到我的网站时,我收到以下错误:
RuntimeError:会话不可用,因为没有设置密钥.将应用程序上的secret_key设置为唯一且保密的内容.
下面是我的服务器代码.
from flask import Flask, session
from flask.ext.session import Session
SESSION_TYPE = 'memcache'
app = Flask(__name__)
sess = Session()
nextId = 0
def verifySessionId():
global nextId
if not 'userId' in session:
session['userId'] = nextId
nextId += 1
sessionId = session['userId']
print ("set userid[" + str(session['userId']) + "]")
else:
print ("using already set userid[" + str(session['userId']) + "]")
sessionId = session.get('userId', None)
return sessionId
@app.route("/")
def hello():
userId = verifySessionId()
print("User id[" + str(userId) + "]") …
Run Code Online (Sandbox Code Playgroud) 我有一个基类
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
Run Code Online (Sandbox Code Playgroud)
显然有一些遗漏的代码,但你明白了.我使用它作为模板,并使用一些有趣(ommited)枚举,一种方法来确定我正在使用什么样的形状
class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float mHeight;
float mRotation;
}
Run Code Online (Sandbox Code Playgroud)
ShapeF通过定位和定义类型的枚举来完成它的工作.它有访问器和mutator,但没有方法.
我可以将ShapeF设为抽象类,以确保没有人尝试并实例化ShapeF类型的对象吗?
通常,这可以通过在ShapeF中使用纯虚函数来实现
//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;
Run Code Online (Sandbox Code Playgroud)
但是,我目前正处理一个单独的类中的冲突.我可以移动所有东西,但我想知道是否有一种方法可以使类抽象...没有纯虚函数.
在C++中,我喜欢分解我的代码行,如果它们太长,或者if if语句,如果它有很多检查.
if (x == 10 && y < 20 && name == "hi" && obj1 != null)
// Do things
// vs
if (x == 10
&& y < 20
&& name == "hi"
&& obj1 != null)
{
// Do things
}
AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, mAppliedEffects[inEffectIDHash], inTagNameHash);
// vs
AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems,
mAppliedEffects[inEffectIDHash], inTagNameHash);
Run Code Online (Sandbox Code Playgroud)
在Python中,代码块由选项卡定义,而不是由";"定义.在行尾
if number > 5 and number < 15:
print "1"
Run Code Online (Sandbox Code Playgroud)
python中是否可以使用多行?喜欢...
if number > 5
and number < 15:
print "1"
Run Code Online (Sandbox Code Playgroud)
我不认为这是可能的,但它会很酷!
我在Python类中有一个函数,它将接口添加到列表中.
def RegisterAsListener(self, inListener):
self.__TransitListeners.append(inListener)
Run Code Online (Sandbox Code Playgroud)
这很好,因为一个类只需要从我的接口继承,抓住这个对象,并为所有更新注册自己.
class ITransit():
def TransitUpdate(self, data):
raise NotImplementedError("You must define this function.")
Run Code Online (Sandbox Code Playgroud)
(假设我正确地创建了一个接口)
由于我不是这个项目中唯一的一个,我不希望有人用不正确的数据类型调用RegisterAsListener函数.我可以输入代码来检查寄存器函数中的类型,但如果编译器在尝试推送不正确的数据类型时只是对程序员大吼大叫,那么它会更容易.
def RegisterAsListener(self, IListener inListener):
self.__TransitListeners.append(inListener)
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
试图解决导入错误的大部分时间我一直在摔跤.
这是一个常见问题,但之前的问题没有完全解决我的问题.
我正在使用PyDev(一个Eclipse插件)和库Kivy(一个Python库)
我有一个像这样设置的文件结构:
<code>
__init__.py
main.py
engine.py
main_menu_widget.py
Run Code Online (Sandbox Code Playgroud)
"代码"保存在eclipse文件夹"MyProject"中,但它不是包,所以我没有包含它.
文件看起来像这样:
main.py
# main.py
from code.engine import Engine
class MotionApp(App):
# Ommited
Run Code Online (Sandbox Code Playgroud)
engine.py
# engine.py
from code.main_menu_widget import MainMenuWidget
class Engine():
# Ommited
Run Code Online (Sandbox Code Playgroud)
main_menu_widget.py
# main_menu_widget.py
from code.engine import Engine
class MainMenuWidget(Screen):
pass
Run Code Online (Sandbox Code Playgroud)
我收到的错误详细信息是:
Traceback (most recent call last):
File "C:\MyProject\code\main.py", line 8, in <module>
from code.engine import Engine
File "C:\MyProject\code\engine.py", line 6, in <module>
from code.main_menu_widget import MainMenuWidget
File "C:\MyProject\code\main_menu_widget.py", line 3, in <module>
from code.engine import Engine
Run Code Online (Sandbox Code Playgroud)
知道我在这里做错了吗?我刚刚重命名了我的整个文件夹结构,因为我搞砸了这个模块结构这么糟糕,但我觉得我接近它应该看起来......
我正在使用Kivy python库.
我定义了两个小部件.
程序运行时,我运行第一个小部件.
当按下该窗口小部件按钮时,我希望它消失并被第二个窗口小部件替换.
这是两个小部件的.kv
#uitest.kv
<TestForm>:
canvas:
Rectangle:
pos: self.center_x, 0
size: 10, self.height
BoxLayout:
size: root.size
padding: 40
Button:
text: 'Hello'
on_release: root.testCallback()
<TestForm2>:
canvas:
Rectangle:
pos: self.center_x, 0
size: self.height, 10
Run Code Online (Sandbox Code Playgroud)
我的主python文件运行应用程序,并返回第一个小部件
#main.py
from testform import TestForm
from kivy.app import App
class UITestApp(App):
def build(self):
return TestForm()
# Main launching point
if __name__ in ('__main__', '__android__'):
UITestApp().run()
Run Code Online (Sandbox Code Playgroud)
我的第一个小部件有一个回调.这是代码所属的地方
from testform2 import TestForm2
from kivy.uix.widget import Widget
class TestForm(Widget):
def testCallback(self):
TestForm2() # Code in question goes …
Run Code Online (Sandbox Code Playgroud) 我对新的C++ chrono库肯定有点失落.
这里我有一个更新循环.它运行两个操作:
engine.Update()
engine.Render()
Run Code Online (Sandbox Code Playgroud)
这些都是长期操作,很难说它们有多长.
因此,我们测量他们花了多长时间,然后进行一些计算并找出在调用渲染之前逐渐调用更新的最佳方法.
为此,我正在使用C++ 11的Chrono功能.我选择它是因为它听起来很划算:更准确,更依赖于平台.我发现现在我遇到的问题比现在更多.
以下是我的代码,以及我的主要问题.非常需要任何有关问题或正确操作方法的帮助!
我直接在相关行旁边的注释中标记了我的问题,我将在下面重复这些问题.
头文件:
class MyClass
{
private:
typedef std::chrono::high_resolution_clock Clock;
Clock::time_point mLastEndTime;
milliseconds mDeltaTime;
}
Run Code Online (Sandbox Code Playgroud)
简化的更新循环
// time it took last loop
milliseconds frameTime;
// The highest we'll let that time go. 60 fps = 1/60, and in milliseconds, * 1000
const milliseconds kMaxDeltatime((int)((1.0f / 60.0f) * 1000.0f)); // It's hard to tell, but this seems to come out to some tiny number, not what I expected!
while (true)
{
// …
Run Code Online (Sandbox Code Playgroud) 我有一个scalatest文件
// MyDefaultTest.scala
import collection.mutable.Stack
import org.scalatest._
class StackSpec extends FlatSpec {
"A Stack" should "pop values in last-in-first-out order" in {
val stack = new Stack[Int]
stack.push(1)
stack.push(2)
assert(stack.pop() === 2)
assert(stack.pop() === 1)
}
it should "throw NoSuchElementException if an empty stack is popped" in {
val emptyStack = new Stack[String]
intercept[NoSuchElementException] {
emptyStack.pop()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的项目使用Maven.我想,从命令行,只运行"一个堆栈应该以后进先出的顺序弹出值"
我怎样才能做到这一点?
到目前为止,我只想出了如何运行该文件:
mvn test -DwildcardSuites = com.package.whatever.MyStupidTest
我到处都有这样的代码
val someName = 10
var someOtherName = "hello"
def add(a, b) = a + b
Run Code Online (Sandbox Code Playgroud)
我更喜欢在大多数代码中编写类型(而不是编译器计算出来).如果IntelliJ有一些自动格式选项来添加类型,那将是很好的,所以上面变为:
val someName: Int = 10
var someOtherName: String = "hello"
def add(a: Int, b: Int): Int = a + b
Run Code Online (Sandbox Code Playgroud)
有工具吗?
我有两个特点
trait Base[A]
trait SometimesUsedWithBase[A] {
this: Base[A] =>
}
Run Code Online (Sandbox Code Playgroud)
然后我在课堂上使用它们
class StringThing extends Base[String] with SometimesUsedWithBase[String]
Run Code Online (Sandbox Code Playgroud)
如果我不必定义CertainUsedWithBase的类型,那将是很好的,而是它以某种方式理解它使用Base中定义的类型,使它看起来像:
class StringThing extends Base[String] with SometimesUsedWithBase
Run Code Online (Sandbox Code Playgroud)
这可能吗?
python ×5
scala ×3
c++ ×2
kivy ×2
types ×2
c++-chrono ×1
flask ×1
generics ×1
import ×1
interface ×1
maven ×1
milliseconds ×1
module ×1
polymorphism ×1
pure-virtual ×1
scalatest ×1
session ×1
syntax ×1
widget ×1