小编Sir*_*ert的帖子

在没有临时磁盘文件的情况下在clojure中调整图像大小

我是一个clojure新手(我不知道任何Java可以说).

我的目标是从URL中获取图像并制作它的缩略图.到目前为止我有这个:

(ns myapp.image
  (:require [clojure.java.io :as io])
  (:import  [javax.imageio.ImageIO]
            [java.awt.image.BufferedImage]))

(defn get-remote-image
  [url file]
  (with-open [in (io/input-stream url) out (io/output-stream file)]
    (io/copy in out)))

(defn resize
  "Resize a file.  Pass in a width and height."
  [file-in file-out width height]
  (let [img     (javax.imageio.ImageIO/read (io/file file-in))
        imgtype (java.awt.image.BufferedImage/TYPE_INT_ARGB)
        simg    (java.awt.image.BufferedImage. width height imgtype)
        g       (.createGraphics simg)]
    (.drawImage g img 0 0 width height nil)
    (.dispose g)
    (javax.imageio.ImageIO/write simg "png" (io/file file-out))))
Run Code Online (Sandbox Code Playgroud)

现在它从URL中抓取图像并将其写入磁盘,缓冲区到缓冲区.然后它从磁盘读取并在内存中调整图像大小,再次将其写入新文件.最后,我可以删除第一个副本.

我想在没有临时磁盘写入的情况下一次完成整个操作.我并不特别介意将整个图像存储在记忆中......就我的目的而言,它们通常都是小图像.

我不明白如何将数据从io流传递给java.awt.image.BufferedImage对象.

resize image clojure

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

Datomic - 选择某些属性最高的实体

假设我有一个电影列表,我可以通过以下方式获取它们:

[:find ?year ?title ?rating
 :where
 [?Movie :movie/year ?year  ]
 [?Movie :movie/year ?title ]
 [?Movie :movie/year ?rating]]
Run Code Online (Sandbox Code Playgroud)

我如何进一步限制这一点以仅获取评分最高的电影?我感觉我想要一些类似的东西...

[:find ?year ?title ?rating
 :where
 [?Movie :movie/year ?year  ]
 [?Movie :movie/year ?title ]
 [?Movie :movie/year ?rating]
 [(= ?rating (max ?rating)  ]]
Run Code Online (Sandbox Code Playgroud)

但显然这不会达到我想要的=)提示?

search max datomic

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

NodeJS - 使用 Promise 对文件流进行哈希处理

我现在有一个统计和哈希(可能很大)文件的流程。现在我正在这样做:

function gen_hash (fn, callback) {
  var hash = crypto.createHash('sha256');

  var fh = fs.createReadStream(fn);
  fh.on('data', d => hash.update(d));
  fh.on('end', () => {
    var digest = hash.digest('hex');
  });
}

function gen_stat (fn, callback) {
  fs.stat(fn, function (err, stats) {
    if (err) {
      if (err.code == "ENOENT") {
        file.exists = false;
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一些代码允许在它们都完成时进行回调。正如你可以想象的那样,它相当……复杂。

我认为这与 Promise 非常匹配,但我不知道如何使用它们。

我尝试了一些类似的东西:

const Promises = require('bluebird');
const fs = Promises.promisifyAll(require('fs'));

fh = fs.createReadStream(fn)
.then...
.error...
Run Code Online (Sandbox Code Playgroud)

但我实际上不明白这里要做什么,而且蓝鸟网站似乎缺乏细节。

我觉得类似的东西Promise.all可能是正确的,但我只是没有看到任何正确语法的好例子。

我知道我可以编写一个包装函数,在各种条件下返回一个承诺,但我不太明白它在承诺领域是如何工作的。也许是这样的?

const fs = Promise.promisifyAll(require('fs')); …
Run Code Online (Sandbox Code Playgroud)

file stream node.js promise es6-promise

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

SQL 条件插入

我正在使用MySQL。如何根据相关数据的验证对表执行 INSERT?请原谅这个人为的例子。

如果我的表是:

> SELECT * FROM colors;
id color  owner
-- ------ -----
10 red    2
11 banana 6
12 blue   9
Run Code Online (Sandbox Code Playgroud)

> SELECT * FROM fruit;
id  color_id  name
--  --------  -------
59  10        cherry
60  12        blueberry
Run Code Online (Sandbox Code Playgroud)

其中fruit.color是colors.id的外键

我想插入有关香蕉的信息,但前提是颜色的所有者为 6。这是原始插入:

INSERT INTO
    fruit
    (color_id, name)
VALUES
    (11, 'banana');
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

INSERT INTO
    fruit
    (color_id, name)
VALUES
    (11, 'banana')

-- ??? I have no idea what to put here ???
ONLY IF (
    (SELECT COUNT(*) FROM fruit
    INNER …
Run Code Online (Sandbox Code Playgroud)

mysql sql conditional-statements sql-insert

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

React/Babelify新手; 如何修复"访问PropTypes"警告

我是React和Babelify的新手.

我正在使用Node编译一个Web应用程序.现在我这样做:

browserify({debug: true})
.transform(
  babelify.configure({
    comments : false,
    presets  : [ 
      "react",
      "babili",
    ],  
  })  
)   
.require('./app.js', {entry: true})
.plugin(collapse)
.bundle()
.on("error", function (err) {
  console.log("Error:", err.message);
})  
.pipe(fs.createWriteStream(destination));
Run Code Online (Sandbox Code Playgroud)

我的应用程序是一个非常微不足道的"你好,世界!" 关于这个复杂的概念证明:

class Renderer {
  render () {
    ReactDOM.render(
      <div>Hello, World!</div>
      document.querySelector("#react-app")
    );  
  }
}
module.exports = Renderer;
Run Code Online (Sandbox Code Playgroud)

我收到这个警告:

Warning: Accessing PropTypes via the main React package is deprecated, and 
will be removed in  React v16.0. Use the latest available v15.* prop-types
package from npm instead. For info on usage, …
Run Code Online (Sandbox Code Playgroud)

node.js browserify reactjs babeljs

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

当我需要在 module._compile 中时出现 NodeJS 错误

我正在学习 NodeJS 的require()功能如何工作以更好地了解节点生态系统。

我写了一个使用 module._compile 来编译脚本的脚本。当我尝试require()在字符串中时,它会犹豫……但它似乎有正确的路径。我究竟做错了什么?

我想值得一提的是,我将json3模块安装在./node_modules/.

剧本

我写了这个脚本,它有效——直到我取消注释标记的行。

"use strict";

var json3 = require('json3');

console.log("require.main.filename:", require.main.filename);
console.log("require.main:", require.main);

var module = new module.constructor();
module._compile(`
"use strict";

console.log("require.main.filename:", require.main.filename);
console.log("require.main:", require.main);

// When I uncomment this, it breaks.  Why?
//var json3 = require('json3');

module.exports = {
  run: function () { console.log("It works!") }
};
`, require.main.paths[0]);

module.exports.run();
Run Code Online (Sandbox Code Playgroud)

脚本输出

这是输出(当问题代码被注释掉时)。

require.main.filename: /home/user/tmp/tmp.js
require.main: Module {
  id: '.',
  exports: {},
  parent: null,
  filename: '/home/user/tmp/tmp.js', …
Run Code Online (Sandbox Code Playgroud)

javascript module compilation

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