背景:我正在尝试将使用带有D3.js数据可视化库的Crossfilter库的一些JavaScript代码转换为CoffeeScript.
将JavaScript forEach循环/函数转换为CoffeeScript的最佳方法是什么?
这是JavaScript代码:
// A little coercion, since the CSV is untyped.
flights.forEach(function(d, i) {
d.index = i;
d.date = parseDate(d.date);
d.delay = +d.delay;
d.distance = +d.distance;
});
Run Code Online (Sandbox Code Playgroud)
CoffeeScript可以在循环中执行内联函数吗?现在我猜我需要把它分解成一个函数和循环:
coerce = (d) ->
d.index = 1
d.date = parseDate(d.date)
d.delay = +d.delay
d.distance = +d.distance
coerce(flights) for d in flights
Run Code Online (Sandbox Code Playgroud) 这是我的简单测试程序(使用ActionMailer 3.0.8,Ruby 1.9.2p180 Mac OS X):
require 'rubygems'
require 'action_mailer'
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "my_exchange_server",
:port => 25,
:domain => 'my_domain.org',
:authentication => :login,
:user_name => 'my_user',
:password => 'my_password',
:enable_starttls_auto => false
}
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.default :from => 'from_email@my_company.com'
m = ActionMailer::Base.mail :to => 'to_email@my_company.com', :subject => 'this is a test', :body => 'this is a test'
m.deliver
Run Code Online (Sandbox Code Playgroud)
尝试各种身份验证类型我收到以下错误:
:普通错误:
smtp.rb:966:in `check_auth_response': 504 5.7.4 Unrecognized authentication type. (Net::SMTPAuthenticationError)
Run Code Online (Sandbox Code Playgroud)
:登录错误:
smtp.rb:972:in `check_auth_continue': …Run Code Online (Sandbox Code Playgroud) 我找不到任何文档或示例.到目前为止,我可以成功连接,但我不知道选择和返回数据的语法.
:odbc.start()
{:ok, conn} = :odbc.connect('DSN=mydsn;UID=myuid;PWD=mypwd', [])
:odbc.execute_stmt(conn, 'select count(*) from mytable')
:odbc.stop()
Run Code Online (Sandbox Code Playgroud)
**(UndefinedFunctionError)未定义函数:: odbc.execute_stmt/2(odbc):odbc.execute_stmt(#PID <0.85.0>,'从mytable中选择计数(*)')
2015年10月6日更新
我发现了怎么做.我相信我找不到有关Elixir的任何文档,因为Elixir只是对Erlang库进行了传递.
在任何情况下,它是sql_query或select_count:
{:selected, colNames, rows} = :odbc.sql_query(conn, 'select count(*) from mytable')
Run Code Online (Sandbox Code Playgroud)
{:已选中,['COUNT'],[{'182'}]}
{:ok, count} = :odbc.select_count(conn, 'select * from mytable')
Run Code Online (Sandbox Code Playgroud)
{:好的,182}
2015年10月7日更新
这是我的最终代码,我认为这更加惯用:
:odbc.start()
case :odbc.connect('DSN=mydsn;UID=#{System.get_env("MY_UID")};PWD=#{System.get_env("MY_PASSWORD")}', []) do
{:ok, conn} ->
case :odbc.sql_query(conn, 'select count(*) from mytable') do
{:selected, _colNames, [{count}]} -> IO.puts "count = #{count}"
{:error, err} -> {:error, err}
end
{:error, err} -> {:error, err}
end
:odbc.stop()
Run Code Online (Sandbox Code Playgroud) 我正在尝试合并Mike的两个例子:Zoomable Circle Packing + Automatic Text Sizing.
它最初显示在顶层时有效.但是,如果放大到下一级别,字体的大小不正确.
我不确定是否需要修改变换,或修改计算字体大小的部分.
这是我的代码:http://codepen.io/anon/pen/GJWqrL
var circleFill = function(d) {
if (d['color']) {
return d.color;
} else {
return d.children ? color(d.depth) : '#FFF';
}
}
var calculateTextFontSize = function(d) {
return Math.min(2 * d.r, (2 * d.r - 8) / this.getComputedTextLength() * 11) + "px";
}
var margin = 20,
diameter = 960;
var color = d3.scale.linear()
.domain([-1, 18])
.range(["hsl(0,0%,100%)", "hsl(228,30%,40%)"])
.interpolate(d3.interpolateHcl);
var pack = d3.layout.pack()
.padding(2)
.size([diameter - margin, …Run Code Online (Sandbox Code Playgroud) Elixir是否支持日期范围?例如,在Elixir中可以使用这样的Ruby代码吗?
require 'date'
d1 = Date::civil 2015, 1, 1
d2 = Date::civil 2015, 1, 7
(d1..d2).each {|d| puts d }
Run Code Online (Sandbox Code Playgroud)
输出:
2015-01-01 2015-01-02 2015-01-03 2015-01-04 2015-01-05 2015-01-06 2015-01-07
我正在尝试从Elixir中的ODBC数据库中获取计数.我可以看到我的结果回来了,但是,我不知道如何提取价值.
{:ok, conn} = :odbc.connect('DSN=mydsn;UID=myuid;PWD=mypwd', [])
{:selected, _colNames, rows} = :odbc.sql_query(conn, 'select count(*) from mytable')
Run Code Online (Sandbox Code Playgroud)
{:已选中,['COUNT'],[{'182'}]}
如何以整数形式获得182?
我得到的最接近的是获得内部元组:
hd(rows)
Run Code Online (Sandbox Code Playgroud)
{ '182'}
我在 Pandas DataFrame 中有一个计算列,需要根据条件进行分配。例如:
if(data['column_a'] == 0):
data['column_c'] = 0
else:
data['column_c'] = data['column_b']
Run Code Online (Sandbox Code Playgroud)
但是,这会返回错误:
ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
我有一种感觉,这与必须以矩阵样式完成的事实有关。将代码更改为三元语句也不起作用:
data['column_c'] = 0 if data['column_a'] == 0 else data['column_b']
Run Code Online (Sandbox Code Playgroud)
有谁知道实现这一目标的正确方法?将 apply 与 lambda 一起使用?我可以通过循环进行迭代,但我宁愿保持这种首选的 Pandas 方式。
我有一个用 Go 编写的 S3 触发的 AWS Lambda。我已经能够成功测试所有辅助代码,但是,我一直在尝试测试 lambda 处理程序。
这是我的处理程序的签名:
func HandleRequest(ctx context.Context, s3Event events.S3Event)
Run Code Online (Sandbox Code Playgroud)
这是测试代码:
package main
import (
"context"
"encoding/json"
"testing"
"github.com/aws/aws-lambda-go/events"
"github.com/stretchr/testify/assert"
)
func TestHandleRequest(t *testing.T) {
// 1. read JSON from file
inputJSON, err := readJSONFromFile("./testdata/s3-event.json")
if err != nil {
t.Errorf("could not open test file. details: %v", err)
}
// 2. de-serialize into Go object
var inputEvent events.S3Event
if err := json.Unmarshal(inputJSON, &inputEvent); err != nil {
t.Errorf("could not unmarshal event. details: %v", err)
} …Run Code Online (Sandbox Code Playgroud) 我想将登录用户名存储在cookie中,该cookie将在2周左右到期.我还希望登录视图填充cookie中的用户名.没有"记住我"复选框或任何必要的身份验证代码.
基于下面的答案,这是我工作的伪代码:
# encoding: utf-8
class SessionsController < ApplicationController
skip_before_filter :authorize
def new
params[:username] = cookies[:username] unless cookies[:username].nil?
end
def create
if user
cookies[:username] = {:value => params[:username].downcase, :expires => 2.weeks.from_now }
end
end
end
Run Code Online (Sandbox Code Playgroud)
为清楚起见,省略了大部分代码.
我有一个我编写的自定义 Python 蛋,我无法从外部加载子模块(或嵌套模块)。我已经能够很好地加载一个根级模块。
这是混淆的结构:
我的蛋/
我的蛋/
__init__.py(空文件)
module_one.py
我的子目录\
__init__.py(空文件)
module_two.py
设置文件
导入 module_one 有效:
from my_egg import module_one
Run Code Online (Sandbox Code Playgroud)
但我似乎无法导入 module_two。这是我尝试过的:
from my_egg.my_subdir import module_two
from my_egg import my_subdir.module_two
from my_egg.my_subdir.module_two import *
Run Code Online (Sandbox Code Playgroud)
这些都没有用。这是我的 setup.py 的样子:
from setuptools import setup
setup(name='my_egg',
version='0.1',
packages=['my_egg'],
test_suite='nose.collector',
tests_require=['nose'],
zip_safe=False)
Run Code Online (Sandbox Code Playgroud) 我需要一个与日期和可选时间匹配的正则表达式模式.
日期应为m/d/yyyy格式的有效美国日期.时间应该是h:mm:ss am/pm24小时或24小时hh:mm:ss.
赛事:2011年9月1日| 2011年9月1日上午10:00 | 9/1/2011 10:00 AM | 2011年9月1日10:00:00
这个模式将在Ruby on Rails项目中使用,因此它应该是可以通过Ruby使用的格式.请参阅http://rubular.com/进行测试.
这是我现有的日期模式(可能是过度杀戮):
DATE_PATTERN = /^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}/
Run Code Online (Sandbox Code Playgroud) elixir ×3
d3.js ×2
javascript ×2
python ×2
ruby ×2
aws-lambda ×1
circle-pack ×1
coffeescript ×1
cookies ×1
crossfilter ×1
dataframe ×1
datetime ×1
egg ×1
email ×1
foreach ×1
go ×1
login ×1
odbc ×1
pandas ×1
regex ×1
setuptools ×1
smtp ×1