我必须忽略一些非常简单的东西,但我似乎无法弄清楚如何使用哈希映射的值渲染一个简单的ERB模板.
来自python的我对ruby比较新.我有一个ERB模板(不是HTML),我需要使用从哈希映射中获取的上下文来渲染,我从外部源接收.
但是,ERB的文档说明该ERB.result
方法需要一个binding
.我才知道,他们是保持着可变背景的红宝石东西(像locals()
和globals()
在python,我相信?).但是,我不知道如何从哈希映射中构建绑定对象.
一点点(很多,实际上)谷歌搜索给了我这个:http://refactormycode.com/codes/281-given-a-hash-of-variables-render-an-erb-template,它使用了一些红宝石元编程魔法逃避我
那么,这个问题不是一个简单的解决方案吗?或者是否有更好的模板引擎(不依赖于HTML)更适合这种情况?(我只选择了ERB,因为它在stdlib中).
所以,再一次,我做了一个很好的python程序,让我的生活变得更轻松,节省了大量的时间.当然,这涉及到virtualenv,由virtualenvwrapper的mkvirtualenv
功能.该项目有一个requirements.txt文件,其中包含一些必需的库(请求也是:D),如果没有这些库,程序将无法运行.
我试图添加一个bin/run-app
可执行的shell脚本,它将在我的路径中(实际上是符号链接).现在,在这个脚本里面,我需要切换到virtualenv才能运行这个程序.所以我把它放进去了
#!/bin/bash
# cd into the project directory
workon "$(cat .venv)"
python main.py
Run Code Online (Sandbox Code Playgroud)
一个文件.venv
包含virtualenv名称.但是当我运行这个脚本时,我会收到workon: command not found
错误.
当然,我在我的bashrc中有virtualenvwrapper.sh,但它似乎在这个shell脚本中不可用.
那么,我如何在这里访问那些virtualenvwrapper函数呢?或者我这样做是错误的吗?你如何启动你的python工具,每个工具都有自己的virtualenv!?
我已经是一名Python程序员已有近两年了,我习惯于编写小脚本来自动执行我在办公室必须完成的一些重复性任务.现在,显然我的同事注意到了这一点,他们也想要这些脚本.
其中一些有Mac,有些是Windows; 我在windows上做了这些.我调查了使用py2exe甚至py2app来制作我的脚本的原生的可能性,但他们从未满足我......
我开始知道他们所有人都在他们的系统上有JVM,所以我可以使用像Jython这样的东西给他们一个可执行的JAR文件吗?
这有多可行......我的意思是,我不知道如何为Jython编写脚本,在我写这些脚本时我也不关心它......它会给出什么样的问题?
我将数据放在以下结构的数组中,
[[1293606162197, 0, 0],
[1293605477994, 63, 0],
[1293605478057, 0, 0],
[1293605478072, 2735, 1249],
[1293606162213, 0, 0],
[1293606162229, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
第一列是纪元时间(in ms
),第二列是第三列y1
,第三列是y2
.我需要在x轴上y1
以及y2
在左右y轴上绘制时间的图.
我一直在浏览文档,但找不到任何方法让我的x轴刻度显示日期和时间,如"28/12 16:48",即"日期/月份小时:分钟".所有文档对我的帮助就是单独显示日期,但这不是我想要的.任何帮助将不胜感激.
而且,如果看起来像,这不是功课.它实际上是对我之前的问题的一个跟进,读取和绘制从大文件中读取的数据.
我开始使用mongodb并拥有一个包含如下文档的集合
{
"type": 1,
"tags": ["tag1", "tag2", "tag3"]
}
{
"type": 2,
"tags": ["tag2", "tag3"]
}
{
"type": 3,
"tags": ["tag1", "tag3"]
}
{
"type": 1,
"tags": ["tag1", "tag4"]
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我想要一组特定类型的所有标签.例如,对于类型1,我想要tag1, tag2, tag3, tag4
(任何顺序)的集合.
我能想到的只是获取标签并将它们添加到set
python中,但我想知道是否有办法用mongodb的mapreduce或其他东西来做.请指教.
我最近开始使用clojure,我正在使用leiningen创建一个小项目.我在让leiningen用命令行参数表现时遇到了麻烦.以下是我的src/project/core.clj
(ns project.core
(:gen-class))
(defn -main [& args]
(println (apply str args)))
Run Code Online (Sandbox Code Playgroud)
和我的 project.clj
(defproject project "1.0.0-SNAPSHOT"
:description "FIXME: write"
:main project.core
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]])
Run Code Online (Sandbox Code Playgroud)
现在当我跑步时lein run arg1 arg2
,它给了我这个错误:
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: arg1 in this context (NO_SOURCE_FILE:1)
at clojure.lang.Compiler.analyze(Compiler.java:5205)
at clojure.lang.Compiler.analyze(Compiler.java:5151)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3057)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:5371)
at clojure.lang.Compiler.analyze(Compiler.java:5190)
at clojure.lang.Compiler.analyze(Compiler.java:5151)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:4670)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:4328)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3173)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:5367)
at clojure.lang.Compiler.analyze(Compiler.java:5190)
at clojure.lang.Compiler.eval(Compiler.java:5421)
at clojure.lang.Compiler.eval(Compiler.java:5415)
at clojure.lang.Compiler.eval(Compiler.java:5391)
at clojure.core$eval.invoke(core.clj:2382)
at clojure.main$eval_opt.invoke(main.clj:235) …
Run Code Online (Sandbox Code Playgroud) 我是haskell的初学者,正在阅读"了解你是一本哈克尔书".我一直试图消化仿函数和应用函子一段时间.
在应用性函子的话题,为实例执行Maybe
给定为
instance Applicative Maybe where
pure = Just
Nothing <*> _ = Nothing
(Just f) <*> something = fmap f something
Run Code Online (Sandbox Code Playgroud)
所以,据我所知,Nothing
如果左侧仿函数(for <*>
)为Nothing ,我们得到.对我来说,似乎更有意义
Nothing <*> something = something
Run Code Online (Sandbox Code Playgroud)
所以这个applicative functor没有效果.什么是用例,如果有的话给出Nothing
?
说,我Maybe String
和我在一起,我不知道它的价值.我必须将它赋予Maybe
第三方功能,但希望其结果先经过几次Maybe (a -> b)
.如果其中一些函数是Nothing
我希望它们默默地返回它们的输入,而不是给出一个Nothing
,这就是数据丢失.
那么,Nothing
在上面的例子中回归的想法是什么?
以下是我想要说明的简单测试用例.
在bash,
# define the function f
f () { ls $args; }
# Runs the command `ls`
f
# Runs the fommand `ls -a`
args="-a"
f
# Runs the command `ls -a -l`
args="-a -l"
f
Run Code Online (Sandbox Code Playgroud)
但在zsh
# define the function f
f () { ls $args }
# Runs the command `ls`
f
# Runs the fommand `ls -a`
args="-a"
f
# I expect it to run `ls -a -l`, instead it gives me an error
args="-a -l" …
Run Code Online (Sandbox Code Playgroud) 我在matplotlib中做了一个vlines图,我在数据集中得到了所有的y值>=0
.我希望我的y轴最下方可以读取0
,但相反,我得到-500.
这是代码:
#!/usr/bin/env python
import numpy as np
from matplotlib import pyplot as plt, dates as mdates
import datetime as dt, time
# Read the data and turn it into a numpy array
#store = map(lambda line: map(int, line.strip().split()), open(name + '.txt').readlines())
store = [
[1293606162197, 0, 0],
[1293605477994, 63, 0],
[1293605478057, 0, 0],
[1293605478072, 2735, 1249],
[1293606162213, 0, 0],
[1293606162229, 0, 0],
]
nstore = np.array(store)
# Get arrays of each columns in the store …
Run Code Online (Sandbox Code Playgroud) 我的一个jinja模板中的代码与以下内容类似
{% for post in posts %}
{% include ["posts/" + post.type + ".html", "posts/default.html"] %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
根据帖子的不同,它应该post
在posts
集合中呈现每个集合.type
.我为每个人设置了不同的模板post.type
.对于那些我没有模板的人,它会恢复到default
帖子模板.
现在,我希望帖子的索引从帖子模板的底部显示,由提供loop.revindex
.但出于某种原因,如果我loop.revindex
在帖子模板中使用,我会收到错误说法UndefinedError: 'loop' is undefined
.
那么,是loop
不是在使用include
d模板?这是设计的吗?我是否在组织模板以使其无法使用时出错?
编辑好的,我在for循环中提出了一个解决方法,在我包含模板之前,我做了
{% set post_index = loop.revindex %}
Run Code Online (Sandbox Code Playgroud)
并post_index
在帖子模板中使用.不理想,但似乎是唯一的方式.我仍然想知道你的解决方案.
编辑2的另一件事,我能够访问post
内部变量include
d模板,而不是loop
变量.
python ×5
bash ×2
matplotlib ×2
applicative ×1
clojure ×1
distribution ×1
erb ×1
functor ×1
haskell ×1
jinja2 ×1
jython ×1
leiningen ×1
mongodb ×1
pymongo ×1
ruby ×1
shell ×1
virtualenv ×1
zsh ×1