小编Jus*_*rce的帖子

使用argparse在Python中使用可选的stdin

我发现了非常有用的语法

parser.add_argument('-i', '--input-file', type=argparse.FileType('r'), default='-')
Run Code Online (Sandbox Code Playgroud)

用于指定输入文件或使用stdin - 我想在程序中使用它们.但是,并不总是需要输入文件.如果我没有使用-i或重定向输入

$ someprog | my_python_prog
$ my_python_prog < inputfile
Run Code Online (Sandbox Code Playgroud)

我不希望我的Python程序等待输入.我希望它只是移动并使用默认值.

python stdin argparse

60
推荐指数
3
解决办法
2万
查看次数

我应该如何用JSON表示表格数据?

我正在编写一个API,用于通过JSON从JDBC连接的Java Servlet中检索数据.我选择使用JSON,因为我们想要对浏览器中的数据进行排序和其他操作,我们将从跨域访问数据.

由于我基本上是在JavaScript中进行SQL查询,因此返回的数据本质上是表格式的.我开始编写这个,以便您返回列标签列表,然后返回值数组,例如:

{
  "columns": [
    "given_name",
    "surname",
  ],
  "results": [
    [
      "Joe",
      "Schmoe"
    ],
    [
      "Jane",
      "Doe"
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是当我开始编写JavaScript来处理返回的数据时,我想知道用键/值对输出结果是否更好,例如:

{
  "results": [
    {
      "given_name": "Joe",
      "surname": "Schmoe"
    },
    {
      "given_name": "Jane",
      "surname" : "Doe"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如果你要返回很多结果,那就是很多重复的文本.但是我们将要运输gzip,所以我不太关心带宽.

基本上,我应该设计这个,以便我访问我的数据

$.getJSON(query, function(data) {
  var columns = data.columns;
  var results = data.results;
  $.each(results, function(key, row) {
    console.log(row[columns.indexOf('surname')]);
  });
});
Run Code Online (Sandbox Code Playgroud)

或者更漂亮

$.getJSON(query, function(data) {
  var results = data.results;
  $.each(results, function(key, row) {
    console.log(row.surname);
  });
});
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我想知道对性能的潜在影响是否证明了后一种选择的更清晰的语法.

跟进

我确实实现了它的方式和配置文件.分析是个好主意! …

javascript jquery json

29
推荐指数
3
解决办法
9919
查看次数

为什么我在JavaScript中需要`date`关键字作为'Date`的实例?

我理解行为上的差异.Date()返回表示当前日期的String,并new Date()返回我可以调用其方法的Date对象的实例.

但我不知道为什么.JavaScript是原型,因此Date是一个函数一个具有成员函数(方法)的对象,它们也是对象.但我没有编写或阅读任何行为方式的JavaScript,我想了解其中的区别.

有人可以向我展示一个具有方法的函数的示例代码,使用new运算符返回一个实例,并在直接调用时输出一个String吗?即这样的事情是怎么发生的?

Date();                   // returns "Fri Aug 27 2010 12:45:39 GMT-0700 (PDT)"
new Date();               // returns Object
new Date().getFullYear(); // returns 2010
Date().getFullYear();     // throws exception!
Run Code Online (Sandbox Code Playgroud)

非常具体的要求,我知道.我希望这是件好事.:)

javascript syntax new-operator operator-keyword

13
推荐指数
1
解决办法
1465
查看次数

为什么我的Servlet不会响应UTF-8中的JSON请求?

我的Servlet不会使用UTF-8进行JSON响应.

MyServlet.java:

public class MyServlet extends HttpServlet {

  protected void doPost(HttpServletRequest req, HttpServletResponse res) throws Exception {

    PrintWriter writer = res.getWriter();

    res.setCharacterEncoding("UTF-8");
    res.setContentType("application/json; charset=UTF-8");

    writer.print(getSomeJson());
  }
}
Run Code Online (Sandbox Code Playgroud)

但是特殊字符没有显示出来,当我查看我在Firebug中找回的标题时,我明白了Content-Type: application/json;charset=ISO-8859-1.

grep -ri iso .在我的Servlet目录中做了一个,并且什么都没有,所以我没有明确地将类型设置为ISO-8859-1.

我还应该指定我在Eclipse中的Tomcat 7上以J2EE目标作为开发环境运行它,使用Solaris 10以及他们称之为Web服务器环境的任何人(其他人管理它)作为生产环境,行为是相同.

我还确认提交的请求是UTF-8,只有响应是ISO-8859-1.

更新

我修改了代码以反映我在设置字符编码之前调用PrintWriter.我从原来的例子中省略了这一点,现在我意识到这是我问题的根源.我在这里读到你必须在调用之前设置字符编码HttpServletResponse.getWriter(),否则getWriter会为你设置它为ISO-8859-1.

这是我的问题.所以上面的例子应该调整为

public class MyServlet extends HttpServlet {

  protected void doPost(HttpServletRequest req, HttpServletResponse res) throws Exception {

    res.setCharacterEncoding("UTF-8");
    res.setContentType("application/json");

    PrintWriter writer = res.getWriter();
    writer.print(getSomeJson());
  }
}
Run Code Online (Sandbox Code Playgroud)

java encoding json servlets http-headers

12
推荐指数
1
解决办法
9802
查看次数

通过软件控制USB灯

我有一个USB供电灯.我希望能够用软件打开和关闭它.我将它附加到Linux计算机上.我有一个以前项目Atmel ATtiny2313,但我宁愿用一个简单的黑客来做这个,而不是重新利用我的微控制器.

这可能吗?我怀疑这是不可能的,因为没有某种USB兼容固件,计算机不会与设备通信?

我发现了这个问题,其中有一条评论暗示OP使用LM317电压调节器来改变USB电压.我不认为这适用于我,但我想我会提到它.

更新:

看起来我可以将USBtiny放在我的微控制器上,然后我可以将它连接到灯,然后我可以编写一个应用程序来控制控制器.听起来好像很多工作.我宁愿做一个简单的黑客,但我缺乏USB的经验.

linux hardware usb microcontroller atmel

9
推荐指数
1
解决办法
7164
查看次数

我应该在匿名JavaScript函数中封装功能块吗?

我的直觉是,在这样的匿名函数中封装代码块是个好主意:

(function() {
  var aVar;
  aVar.func = function() { alert('ronk'); };
  aVar.mem = 5;
})();
Run Code Online (Sandbox Code Playgroud)

因为我不再需要aVar了,所以我假设垃圾收集器会aVar在超出范围时删除.这是正确的吗?或者是口译员足够聪明,看到我不再使用变量并立即清理它?是否有任何理由,如风格或可读性,我应该使用匿名函数这种方式?

另外,如果我命名函数,如下所示:

var operations = function() {
  var aVar;
  aVar.func = function() { alert('ronk'); };
  aVar.mem = 5;
};
operations();
Run Code Online (Sandbox Code Playgroud)

operations那么必然留下来,直到它超出范围?或者口译员可以立即告诉它何时不再需要?

一个更好的例子

我还想澄清一点,我不一定谈论全球范围.考虑一个看起来像的块

(function() {

  var date = new Date(); // I want to keep this around indefinitely

  // And even thought date is private, it will be accessible via this HTML node
  // to other scripts. …
Run Code Online (Sandbox Code Playgroud)

javascript garbage-collection scope anonymous-function

8
推荐指数
1
解决办法
2197
查看次数

语法[*a..b]在Ruby中意味着什么?

注意:在GitHub上的 mischa的splat有很多很酷的交互式示例*在行动中.

通过谷歌搜索,我发现在Ruby中迭代一系列数字的一种方法(你的经典C风格的循环)

for (i = first; i <= last; i++) {
  whatever(i);
}
Run Code Online (Sandbox Code Playgroud)

是做这样的事情

[*first..last].each do |i|
  whatever i
end
Run Code Online (Sandbox Code Playgroud)

但是这种[*first..last]语法究竟发生了什么?我一起玩irb,我看到了这个:

ruby-1.9.2-p180 :001 > 0..5
 => 0..5 
ruby-1.9.2-p180 :002 > [0..5]
 => [0..5] 
ruby-1.9.2-p180 :003 > [*0..5]
 => [0, 1, 2, 3, 4, 5] 
ruby-1.9.2-p180 :004 > *0..5
SyntaxError: (irb):4: syntax error, unexpected tDOT2, expecting tCOLON2 or '[' or '.'
*0..5
    ^
Run Code Online (Sandbox Code Playgroud)

我在网上看到的所有内容都讨论了一元星号对扩展和折叠传递给方法的参数很有用,对于可变长度参数列表非常有用

def foo(*bar)
  bar 
end

foo 'tater' # => ["tater"] …
Run Code Online (Sandbox Code Playgroud)

ruby syntax operators splat

8
推荐指数
1
解决办法
1326
查看次数

我在哪里将非Ruby文件放在我的gem中?

我想在我的Ruby gem中放置一个Upstart配置文件.这是我目前最好的猜测

Gem::Specification.new do |s|

  # ...

  s.files = %w(
    lib/rt_watchdog.rb
    lib/upstart/rt_watchdog.conf
    bin/rt_watchdog
  )
end
Run Code Online (Sandbox Code Playgroud)

一般来说,配置文件和其他类型的脚本在哪里进入gem?

更新:我改变了我的例子中,路径从Upstart/rt_watchdog.conflib/upstart/rt_watchdog.conf作为这就是我决定去与现在,但我还是不觉得很大了.

ruby gem rubygems directory-structure upstart

5
推荐指数
1
解决办法
437
查看次数

安卓蓝牙后台监听器

我正在开发一个带有蓝牙聊天功能的 android 应用程序。我已经成功地用两部手机实现了蓝牙聊天。但我的问题是,如果我从聊天活动更改为下一个活动,连接就会丢失,那么我无法从第二个活动发送消息。如何保持连接?
那就是我想通过我的应用程序保持联系。每当用户按下退出按钮时,只有连接才能断开连接。我想从一个活动发送消息并从另一个活动接收这就是我想要的。我无法使用我的代码创建后台服务。
谁能帮我拆分我的代码?如果我从一部手机收到一条消息,那么我想处理该消息并发回结果,该处理将在下一个活动中进行,这是我的应用程序的工作。

  public class BluetoothTexting extends Activity {

  private static int DISCOVERY_REQUEST = 1;

  private Handler handler = new Handler();

  private ArrayList<BluetoothDevice> foundDevices = new ArrayList<BluetoothDevice>();
    private ArrayAdapter<BluetoothDevice> aa; 
  private ListView list;

  private BluetoothAdapter bluetooth;
  private BluetoothSocket socket;
  private UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    configureBluetooth();


    setupListView();    


    setupSearchButton();


    setupListenButton();
    }

     private void configureBluetooth() {
     bluetooth = BluetoothAdapter.getDefaultAdapter();
     }

      private void setupListenButton() {
      Button listenButton = (Button)findViewById(R.id.button_listen);
      listenButton.setOnClickListener(new OnClickListener() {
      public void …
Run Code Online (Sandbox Code Playgroud)

android bluetooth background-service android-bluetooth

5
推荐指数
1
解决办法
1万
查看次数

为什么update_attributes会破坏我的Rails应用程序?

原始问题

我在Ruby 1.9.2上运行Rails 3.0.1.以下是相关的模型,控制器和视图.

user.rb:

class User < ActiveRecord::Base
  belongs_to :directory

  attr_accessor :new_password, :new_password_confirmation

  validates_confirmation_of :new_password, :if => :password_changed?

  before_save :hash_password, :if => :password_changed?

  def self.authenticate(login, password)

    # Check to see if the user exists
    if user = find_by_login(login)

      # If this is an directory user, authenticate them against their directory
      if user.directory
        return directory_auth user, password

      # Otherwise, authenticate them against the local database
      elsif user.hash == Digest::SHA2.hexdigest(user.salt + password)
        return user
      end
    end
    return nil
  end

  def …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

4
推荐指数
1
解决办法
1519
查看次数