我是一个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对象.
假设我有一个电影列表,我可以通过以下方式获取它们:
[: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)
但显然这不会达到我想要的=)提示?
我现在有一个统计和哈希(可能很大)文件的流程。现在我正在这样做:
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) 我正在使用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) 我是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) 我正在学习 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) node.js ×2
babeljs ×1
browserify ×1
clojure ×1
compilation ×1
datomic ×1
es6-promise ×1
file ×1
image ×1
javascript ×1
max ×1
module ×1
mysql ×1
promise ×1
reactjs ×1
resize ×1
search ×1
sql ×1
sql-insert ×1
stream ×1