V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  corningsun  ›  全部回复第 26 页 / 共 32 页
回复总数  639
1 ... 18  19  20  21  22  23  24  25  26  27 ... 32  
2019-04-09 12:32:31 +08:00
回复了 rizon 创建的主题 程序员 有没有一键安装的简单文件服务器?
@jiangnanyanyu seafile+1
2019-04-05 15:22:16 +08:00
回复了 tsc 创建的主题 问与答 一晚上打死 7 只老鼠,我该怎么防止老鼠进家?
某宝找专业来的吧,几百可以包你一年。
要不要考虑换行?
2019-03-21 11:50:52 +08:00
回复了 firhome 创建的主题 程序员 有没有什么办法保存工作流?
再买个 Mac
2019-03-12 10:44:33 +08:00
回复了 ikaros 创建的主题 程序员 允许用户做富文本编辑的站点要怎么防 XSS 呢
XSS 还是得后端处理的,建议直接保存原文到数据库,查询返回前端前做一次转化,后端有很多现成的库可以参考的。

比如说:Jsoup 有很多预定义好的白名单供选择


public static Whitelist relaxed() {
return new Whitelist()
.addTags(
"a", "b", "blockquote", "br", "caption", "cite", "code", "col",
"colgroup", "dd", "div", "dl", "dt", "em", "h1", "h2", "h3", "h4", "h5", "h6",
"i", "img", "li", "ol", "p", "pre", "q", "small", "span", "strike", "strong",
"sub", "sup", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "u",
"ul")

.addAttributes("a", "href", "title")
.addAttributes("blockquote", "cite")
.addAttributes("col", "span", "width")
.addAttributes("colgroup", "span", "width")
.addAttributes("img", "align", "alt", "height", "src", "title", "width")
.addAttributes("ol", "start", "type")
.addAttributes("q", "cite")
.addAttributes("table", "summary", "width")
.addAttributes("td", "abbr", "axis", "colspan", "rowspan", "width")
.addAttributes(
"th", "abbr", "axis", "colspan", "rowspan", "scope",
"width")
.addAttributes("ul", "type")

.addProtocols("a", "href", "ftp", "http", "https", "mailto")
.addProtocols("blockquote", "cite", "http", "https")
.addProtocols("cite", "cite", "http", "https")
.addProtocols("img", "src", "http", "https")
.addProtocols("q", "cite", "http", "https")
;
}


代码调用示例:

import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.safety.Whitelist;

public class JsoupUtil {

private static final Whitelist WHITELIST = Whitelist.relaxed();

static {
// 富文本编辑时一些样式是使用 style 来进行实现的
// 比如红色字体 style="color:red;"
// 所以需要给所有标签添加 style 属性
WHITELIST.addAttributes(":all", "style");
WHITELIST.addAttributes(":all", "class");
WHITELIST.addAttributes(":all", "target");
WHITELIST.addAttributes(":all", "spellcheck");
}

private JsoupUtil() {
}

private static final Document.OutputSettings OUTPUT_SETTINGS = new Document.OutputSettings().prettyPrint(false);

public static String clean(String content) {
if (StringUtils.isBlank(content)) {
return "";
}
return Jsoup.clean(content, "", WHITELIST, OUTPUT_SETTINGS);
}

}
sun772726098
谢谢大佬
2019-02-13 18:20:07 +08:00
回复了 corningsun 创建的主题 Java Spring IO Platform 就要结束使命了,莫名的有点失落
去年刚推广到团队的项目中,然后发现,就要过时了。
有点感慨变化太快
2019-01-17 18:29:02 +08:00
回复了 ooleslie 创建的主题 Python pycharm debug 的疑问
试试 Evaluate Expression ?

没开 Pycharm 拿 IDEA 截个图吧

https://ws2.sinaimg.cn/large/006tNc79gy1fz9raor1w6j30q20km74q.jpg
2019-01-01 16:25:04 +08:00
回复了 1oNflow 创建的主题 程序员 2019 年度晒桌面
2018-12-13 18:15:57 +08:00
回复了 wleexi 创建的主题 程序员 下面 Java 代码怎么用 Lambda 表示
Optional.ofNullable(showView.getProvinceId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setProvinceDisp);
Optional.ofNullable(showView.getCityId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setCityDisp);
Optional.ofNullable(showView.getDistrictId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setDistrictDisp);
Optional.ofNullable(showView.getStreetId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setStreetDisp);
2018-12-12 19:32:27 +08:00
回复了 Kamitora 创建的主题 程序员 打算入一款 mbp,有几个问题...
开学前会有优惠的,还送🎧。
2018-12-04 18:24:17 +08:00
回复了 jerrry 创建的主题 程序员 如何优雅的 Rename 后台接口字段,供前端项目使用
啥都别动,喝喝茶就行了。

如果真要动,直接写新的接口,原来的接口千万要留着。
优酷:你以为充会员就没广告了?我们给会员专门准备了“ VIP 推荐”

https://ws3.sinaimg.cn/large/006tNbRwgy1fxuvtnluz1j318g0p0dh6.jpg
2018-11-21 09:39:19 +08:00
回复了 xuanwu 创建的主题 程序员 哪些开源项目最值得对源码进行翻译(中文命名/注释等)
个人觉得对 java docs 翻译就已经足够了。
显示器包围法,挡住前面和左右,三台应该够了。
2018-10-23 18:39:25 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
终于找到方法了,具体看附言内容,谢谢大家了。
2018-10-23 17:57:51 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
@woodensail 服务端代码改不了了。
@kkkkkrua
fastjson 也有 pretty 方法,但是只是增加了 换行,没有加空格。
objectMapper 的 pretty 方法,在冒号的 两边都加了空格,只去除换行还不够。另外处理 list 数组时,也不一致。
2018-10-23 16:20:46 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
@misaka19000
现在就是这么干的,但是有个字段是富文本,很容易把别的内容覆盖掉,所以来找更好的方法。
2018-10-23 16:10:23 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
@misaka19000 @whileFalse

是的,但是 Python 服务端现状就是这个样子了,没法让对方改了。

已经把 FastJson 源码看了一遍了,并没有找到设置“空格”的地方。。😢

```java
package com.alibaba.fastjson.serializer;

public class FieldSerializer implements Comparable<FieldSerializer> {

private final String double_quoted_fieldPrefix;
private String single_quoted_fieldPrefix;

public FieldSerializer(Class<?> beanType, FieldInfo fieldInfo){
...

this.double_quoted_fieldPrefix = '"' + fieldInfo.name + "\":";
...
}

public void writePrefix(JSONSerializer serializer) throws IOException {
SerializeWriter out = serializer.out;

if (out.quoteFieldNames) {
if (out.useSingleQuotes) {
if (single_quoted_fieldPrefix == null) {
single_quoted_fieldPrefix = '\'' + fieldInfo.name + "\':";
}
out.write(single_quoted_fieldPrefix);
} else {
out.write(double_quoted_fieldPrefix);
}
} else {
if (un_quoted_fieldPrefix == null) {
this.un_quoted_fieldPrefix = fieldInfo.name + ":";
}
out.write(un_quoted_fieldPrefix);
}
}
```

https://ws2.sinaimg.cn/bmiddle/62e721e4gw1et00rn36zaj200k00k0sh.jpg
2018-10-23 14:29:15 +08:00
回复了 fuchunliu 创建的主题 Java 自学 Java ,求推荐书籍
Java 编程思想
1 ... 18  19  20  21  22  23  24  25  26  27 ... 32  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5582 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 50ms · UTC 02:28 · PVG 10:28 · LAX 19:28 · JFK 22:28
Developed with CodeLauncher
♥ Do have faith in what you're doing.