小编kon*_*onr的帖子

图像处理,在Clojure中扩展JPanel和模拟类

那里!我正在使用swing/clojure构建一个图像处理应用程序,现在我需要开发一个图像面板,我可以在其中单击并计算数据.感谢coobird,我现在对如何用Java做了很好的想法,但我仍然没有遇到很多与Clojure集成的问题.

让我们来看看coobird如何建议我这样做.首先,我们应该在Java中扩展一个类.在clojure中,我们用proxy宏来做这个,所以我们有这样的事情:

(def painting-panel
  (proxy [JPanel] []))

下一步是创建类构造函数并设置一些变量.

  1. 我可以在代理的第二个参数之后定义函数,但是如何创建构造函数?绘图面板是这个类的名称(因此我应该创建的函数的名称)?

  2. 我该如何处理类变量?我应该let像我一样定义它们吗?

  3. thissuper供我使用,像我一样下面?

(def painting-panel
  (let [background-image (Image.)
          point-clicked (Point.)]
    (proxy [JPanel] []
        (paintComponent [g]
          (do ((.paintComponent super) g)
            (doto g
              (.drawImage background-image 0 0 nil)
              (.fillRect (.x point-clicked) (.y point-clicked) 1 1))))
        (painting-panel []; constructor?
          ((.addMouseListener this)
             (proxy [MouseAdapter] []
               (mouseClicked [e]
                 (do
                   (def point-clicked (.getPoint e)) 
                   (.repaint this)))))))))

建议和代码更正也欢迎!

谢谢!

lisp swing clojure

7
推荐指数
1
解决办法
1328
查看次数

所有模式下的Viper模式

我正在从vi移动到emacs,并且使用viper和vimpulse,当我C-w C-w进入窗口并且无法使用相同的命令返回原始窗口时它会变得非常烦人,因为另一个缓冲区(可能是帮助缓冲区)不是在Viper模式下.我怎样才能解决这个问题?

我尝试将其他模式添加到viper配置中,并使用默认情况下使用挂钩启动viper模式:

(add-to-list viper-vi-state-mode-list 'help-mode)
(add-hook 'help-mode (lambda () (setq viper-mode t)))

但这些命令都没有奏效.实际上,第一个产生了以下错误:

Warning (initialization): An error occurred while loading `/home/konrad/.emacs.d/init.el':

Wrong type argument: symbolp, (fundamental-mode ...

除此之外C-w C-w,我也错过了无法使用hjkl进行导航.有没有办法重用viper设置的键绑定,而不是为每种模式重新绑定它们?

emacs vimpulse viper viper-mode

7
推荐指数
1
解决办法
2001
查看次数

使用elisp处理文本

自从我转换为Emacs教会以来,我一直在尝试从内部做所有事情,我想知道如何快速高效地进行文本处理.

作为一个例子,让我们在几分钟前在org-mode上编辑我正在编辑的列表.

** Diego: b QI
** bruno-gil: b QI
** Koma: jo
** um: rsrs pr0n
** FelipeAugusto: esp
** GustavoPupo: pinto tr etc
** GP: lit gtk
** Alan: jo mil pc
** Jost: b hq jo 1997
** Herbert: b rsrs pr0n
** Andre: maia mil pseudo
** Rodrigo: c
** caue: b rsrs 7arte pseudo
** kenny: cri gif
** daniel: gtk mu pr0n rsrs b
** tony: an 1997 esp
** Vitor: b jo mimimi …

lisp emacs awk elisp

6
推荐指数
3
解决办法
1101
查看次数

Emacs上的重音字符

当我键入一个重音字符(例如ñ,ç,ã)时,它不会立即自动插入,而是将其自身显示在迷你缓冲区上,就好像它是一个前缀键(例如ç - >ç-).有没有办法改变这种行为?我甚至无法通过<f1> kc捕获它以了解发生了什么.

谢谢!

emacs

6
推荐指数
3
解决办法
6276
查看次数

快速处理apache日志

我目前正在运行一个awk脚本来处理一个大的(8.1GB)访问日志文件,它需要永远完成.在20分钟内,它写了14MB的(1000 + - 500)MB我期望它写的,我想知道我是否能以某种方式更快地处理它.

这是awk脚本:

#!/bin/bash

awk '{t=$4" "$5; gsub("[\[\]\/]"," ",t); sub(":"," ",t);printf("%s,",$1);system("date -d \""t"\" +%s");}' $1

编辑:

对于非awkers,脚本读取每一行,获取日期信息,将其修改为实用程序date识别的格式,并将其调用以将日期表示为自1970年以来的秒数,最后将其作为.csv文件的行返回,以及知识产权.

输入示例: 189.5.56.113 - - [22/Jan/2010:05:54:55 +0100]"GET(...)"

退货产出: 189.5.56.113,124237889

apache awk large-data-volumes

6
推荐指数
1
解决办法
7123
查看次数

如何在POST请求中发送文件?

我正在为我的网站构建一个clojure API,它基本上是原始Web API的包装器.我无法实现的功能之一是通过POST请求发送文件,基本上我将在shell中执行curl -F foo=bar baz=@bak.jpg foobar.com.

我正在使用clojure-http-client,并且最初尝试过该表单(resourcefully/post "foobar.com" {} {:foo "bar" :baz (File. "bak.jpg")}),但接收脚本忽略了:baz字段,就像我只发送了一样:foo.后来,我尝试File.改为FileInputStream,因为client.clj的[第51行] [2]似乎正在检查这个特定的类,但仍然得到相同的结果.

然后我创建了一个简单的打印$ _POST的php页面来检查我的请求,显然这些对象的数据是按字面意思发送的.看一看:

Clojure =>(资源/帖子" http://ptchan.org/pttest.php "{} {:foo"bar":baz"/tmp/bak.jpg"}){:body-seq("Array"" (""[foo] => bar""[baz] => /tmp/bak.jpg"")"),: code 200,:msg"OK",:方法"POST",:headers {:date( "周五,2009年10月2日11:41:15 GMT"),:vary("Accept-Encoding"),:content-length("53"),: connection("close"),:content-type("text/html"),: server("Apache/2.2.9(Debian)PHP/5.2.6-1 + lenny3与Suhosin-Patch"),:x-powered-by("PHP/5.2.6-1 + lenny3 ")} ,: get-header#,: cookies nil,:url" http://ptchan.org/pttest.php "}

Clojure =>(资源/后" http://ptchan.org/pttest.php "{} {:foo"bar":baz(文件."/ tmp/bak.jpg")}){:body-seq( "Array""("[[foo] => bar""[baz] => /tmp/bak.jpg""))),: code 200,:msg"OK",:方法"POST",:header {:date("星期五,2009年10月2日11:41:30 GMT"),:vary("Accept-Encoding"),:content-length("53"),: connection("close"),: content- type("text/html"),: server("Apache/2.2.9(Debian)PHP/5.2.6-1 + lenny3 with Suhosin-Patch"),: x-powered-by("PHP/5.2.6 …

lisp clojure

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

使用TagSoup将HTML页面转换为XHTML

很抱歉,如果这太简单了,但我找不到教程,也没有找到TagSoup Java版本的文档.

基本上我想从互联网上下载HTML网页并将其转换为包含在字符串中的XHTML.我怎么能用TagSoup做到这一点?

谢谢!

java xhtml parsing

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

你能给我一些真实的 - >宏的例子吗?

它似乎是一个强大的宏,但我没有将它应用于任何愚蠢的例子.你能告诉我一些真正的用途吗?

谢谢!

macros clojure

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

使用Swing,我想绘制几点

...在图像中并对其[xy]坐标进行一些计算.

我的第一个想法是使用图像作为JPanel的背景,然后注册点,但我不确定是否有办法在JPanel上标记这些.还有我不熟悉的绘图库,但我不确定我是否可以将它们与Swing结合起来.

你能说出我可以使用的包/类来完成任务吗?已经提到的代码的参考也是受欢迎的.

谢谢!

java swing drawing 2d

2
推荐指数
1
解决办法
8861
查看次数

IllegalAccessError和代理

我正在将此代码翻译为Clojure.正如你所看到的,我必须扩展课程ArthurFrame,但IllegalAccessError每次使用时我都会得到(proxy [ArthurFrame] [] ...).

知道为什么吗?这是班级的来源.

谢谢!

编辑: 这是在REPL上运行(proxy [ArthurFrame] [])的完整错误堆栈.

编辑2:实际上,即使实例化该类也会产生错误.以下是来自的输出(ArthurFrame. wid):

tried to access class com.trolltech.demos.ArthurFrame from class user$eval__2205
  [Thrown class java.lang.IllegalAccessError]

Restarts:
 0: [ABORT] Return to SLIME's top level.

Backtrace:
  0: user$eval__2205.invoke(NO_SOURCE_FILE:1)
  1: clojure.lang.Compiler.eval(Compiler.java:4642)
  2: clojure.core$eval__5254.invoke(core.clj:2031)
  3: swank.commands.basic$eval_region__907.invoke(basic.clj:40)
  4: swank.commands.basic$eval_region__907.invoke(basic.clj:31)
  5: swank.commands.basic$eval__927$listener_eval__929.invoke(basic.clj:54)
  6: clojure.lang.Var.invoke(Var.java:359)
  7: user$eval__2202.invoke(NO_SOURCE_FILE)
  8: clojure.lang.Compiler.eval(Compiler.java:4642)
  9: clojure.core$eval__5254.invoke(core.clj:2031)
 10: swank.core$eval_in_emacs_package__455.invoke(core.clj:59)
 11: swank.core$eval_for_emacs__533.invoke(core.clj:128)
 12: clojure.lang.Var.invoke(Var.java:367)
 13: clojure.lang.AFn.applyToHelper(AFn.java:179)
 14: clojure.lang.Var.applyTo(Var.java:476)
 15: clojure.core$apply__4379.invoke(core.clj:434) …

java clojure

2
推荐指数
1
解决办法
1106
查看次数

将Cc重新绑定到Cc

我使用的是蝰蛇,我想改变它C-cC-g原来的emacs的功能.我可以重新绑定C-g使用(define-key viper-vi-global-user-map "C-g" 'keyboard-quit),但我怎么能重新绑定C-c,因为它是一个前缀键?

谢谢!

emacs viper viper-mode

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

标签 统计

clojure ×4

emacs ×4

java ×3

lisp ×3

awk ×2

swing ×2

viper ×2

viper-mode ×2

2d ×1

apache ×1

drawing ×1

elisp ×1

large-data-volumes ×1

macros ×1

parsing ×1

vimpulse ×1

xhtml ×1