RPRSS 17:50:36
小窗 今晚
Madao-kaze 17:51:18
那个hashtable其实就是键值对应啊
RPRSS 17:51:21
我今晚给你个代码,你帮我看看
RPRSS 17:51:31
由于我无办法拿到作者的许可
Madao-kaze 17:51:49
.class文件是二进制代码
Madao-kaze 17:51:53
不是代码
Madao-kaze 17:51:55
二进制文件
RPRSS 17:51:40
所以不要外传
Madao-kaze 17:51:58
好
RPRSS 17:51:57
这个软件是下载kananchan的java工具
Madao-kaze 17:52:26
编译之后代码就变成.class文件了,然后再运行的时候把这些.class加载到JVM中
Madao-kaze 17:52:29
哦
Madao-kaze 17:52:36
我看看能不能看懂了
RPRSS 17:52:35
.class我知道是编译文件
RPRSS 17:52:41
但是我给出的哪个不是
RPRSS 17:52:50
。class是可以打开的
RPRSS 17:53:23
哪个软件不到5000行代码......
Madao-kaze 17:53:43
我去买饭先
RPRSS 17:53:31
哦
Madao-kaze 18:08:09
代码发来
18:11:11
成功发送文件“konachan.rar”(225.00KB)。
Madao-kaze 18:13:17
这些不是源代码啊
RPRSS 18:13:38
==
RPRSS 18:15:38
RPRSS 18:15:54
你无法打开这个结构么?
Madao-kaze 18:16:59
图x了
Madao-kaze 18:17:05
.java文件有没有
RPRSS 18:16:54
没有
RPRSS 18:17:04
我都没有联系过作者
Madao-kaze 18:17:44
这些不是源代码来的
RPRSS 18:17:47
mport javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
public class Konachan {
private float version;
private int itemCount;
private File dirTemp;
private File dirDownload;
private JFrame window;
private JToolBar toolbar;
private JToolBar statusbar;
private JTabbedPane tabbedPanel;
private JScrollPane tabScrollThumb;
private JScrollPane tabScrollLog;
private JScrollPane tabScrollAbout;
private JPanel panelThumbs;
private JPanel panelAbout;
private JButton btnAnalyze;
private JButton btnDownload;
private JButton btnAboutHomepage;
private JButton btnAboutVifix;
private JLabel lblURL;
private JLabel lblPage;
private JLabel lblLimit;
private JLabel lblStatus;
private JLabel lblAboutTitle;
private JLabel lblAboutAuthor;
private JComboBox comboURL;
private JTextField txtPage;
private JTextField txtLimit;
private JTextArea txtLog;
private ImagePanel imgKonachan;
private ImagePanel imgKagamisama;
private ThumbPanel thumbs;
public static Hashtable
public static void main(String args) {
//compiled code
throw new RuntimeException("Compiled Code");
}
public Konachan() {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void log(String txt) {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void lock() {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void unlock() {
//compiled code
throw new RuntimeException("Compiled Code");
}
Madao-kaze 18:18:25
界面
Madao-kaze 18:18:29
界面么
RPRSS 18:18:18
我很清楚的看见代码
RPRSS 18:18:23
并且无乱码
Madao-kaze 18:18:55
你用什么开的
RPRSS 18:18:37
netbean
Madao-kaze 18:22:57
开Konachan.class么
RPRSS 18:22:38
恩
Madao-kaze 18:24:29
真打不开
RPRSS 18:24:41
....
Madao-kaze 18:25:23
为什么你看到这些呢
Madao-kaze 18:25:57
其他都看到么
RPRSS 18:25:55
其实java的加密技术要专门学习才可以加密的,单纯一个指令做出来的.class应该很容易反编译吧
Madao-kaze 18:26:47
你反编译出来的?
RPRSS 18:26:42
不是,java默认的class本来就可以被自动转换
RPRSS 18:27:02
$6$1$1.class
RPRSS 18:27:07
这类打不开
RPRSS 18:27:34
可能性:
1。临时文件,
2。被加密了
Madao-kaze 18:28:34
不是临时文件
RPRSS 18:28:16
3。被加载的第三方技术
Madao-kaze 18:29:27
这个main函数单纯看来啥都没有
RPRSS 18:29:55
==
Madao-kaze 18:31:08
好吧我下了个反编译工具打开了
RPRSS 18:30:50
问题是你在sourceforge里面下载的东西都是这样的形式
Madao-kaze 18:31:33
你下了bin文件吧
RPRSS 18:31:06
main函数很简单,然后连接到去其他类
RPRSS 18:31:17
集成.......
Madao-kaze 18:31:50
public static void main(String[] args)
{
new Konachan();
}
RPRSS 18:31:49
我吃饭去
Madao-kaze 18:32:51
好
Madao-kaze 18:36:01
带$符号的是那些匿名类
Madao-kaze 18:36:24
this.btnAnalyze.addMouseListener(new MouseAdapter() {
例如这句里面new了一个MouseAdapter
Madao-kaze 18:42:50
这个工具是下载完一个图片就在主界面上加一个panel么
Madao-kaze 18:43:27
我教育网无法连Konachan
RPRSS 18:51:06
不是
Madao-kaze 18:52:15
Task是真正执行下载的类
RPRSS 18:51:45
知道
RPRSS 18:51:59
问题是,他连一个循环都没有
Madao-kaze 18:52:48
什么循环
Madao-kaze 18:53:04
Konachan里面没有循环么
RPRSS 18:52:35
难道这个软件不是全部都是变量而已么
Madao-kaze 18:53:29
你指哪里没循环
RPRSS 18:53:12
除了主文件有,之外都没有
Madao-kaze 18:54:09
其实主文件也没有
Madao-kaze 18:54:18
两个listener搞定了
RPRSS 18:54:03
开个blog来解释下代码
RPRSS 18:54:10
这样说,很难
Madao-kaze 18:55:26
没注释很不好读就是了
Madao-kaze 18:55:37
我大概知道他要干嘛
RPRSS 18:55:03
我这里所有代码都没注释,没文档
Madao-kaze 18:55:55
不过没注释也是必然的
Madao-kaze 18:56:06
这个版本又不是给用户看的
Madao-kaze 18:56:58
konachan里面主要是两个listener
Madao-kaze 18:57:07
按钮的点击事件
RPRSS 18:57:01
知道,但是一般不是放去task里面的吗?
Madao-kaze 18:57:58
嗯
Madao-kaze 18:58:05
写到别的地方比较好
Madao-kaze 18:59:06
应该把两个listener抽出来建类
RPRSS 18:58:57
汝还是开个blog说吧,方便以后交流
Madao-kaze 18:59:54
近期都没时间忙找工
RPRSS 18:59:18
哦
Madao-kaze 19:00:32
等安定了考虑买个空间建个wp玩一下
RPRSS 19:00:12
哦
RPRSS 19:00:24
Madao-kaze 19:01:39
下了个工具直接打开jar文件
RPRSS 19:01:15
哪两个监听器,在哪两个文件里面
Madao-kaze 19:02:12
355行
Madao-kaze 19:02:19
428行
RPRSS 19:02:16
给工具过来
RPRSS 19:02:18
工具问题
Madao-kaze 19:03:35
你的netbeans还自带反编译么
RPRSS 19:03:53
官方推荐 工具
Madao-kaze 19:04:46
什么版本
RPRSS 19:04:14
7.0.1
Madao-kaze 19:05:03
哦
Madao-kaze 19:05:06
我是6.8
Madao-kaze 19:05:28
说不定新版本加了啥新功能
RPRSS 19:04:46
工具不同啊~~~
RPRSS 19:04:50
果然
Madao-kaze 19:05:48
自带了反编译插件
RPRSS 19:05:35
谢了,看到这里,我已经知道自己可以解决了
Madao-kaze 19:06:28
RPRSS 19:06:11
慢着,你如何判断泛型跟 数据结构
Madao-kaze 19:07:12
用得多自然就知道了
RPRSS 19:06:39
我的教材没有写<>尖括号的用法
Madao-kaze 19:07:31
Java里面的基本类型就那么几个
Madao-kaze 19:07:53
数据结构记住常见的一些
RPRSS 19:07:16
我用了史上最差的教程
Madao-kaze 19:08:06
什么heap啊stack啊tree啊
Madao-kaze 19:08:37
容器经常用Vector ArrayList Map什么的日期:2011-11-22
RPRSS 14:51:02
// ==UserScript==
// @name Pixiv Lazy
// @namespace pixivlazy
// @description provide a direct link to original image ([s] link), as well as a link to its page ([b] link).
// @include http://www.pixiv.net/*
// ==/UserScript==
// version 0.4 - updated to filter new thumbnails
// version 0.3 - fix a bug, hat-tip to syosyo
// version 0.2 - updated on 2008-06-25
function pixivlink(event){
Items = document.getElementsByTagName('img');
rexa = /\?mode\=medium\&illust_id|\?mode\=big\&illust_id/i;
rexb = /source.pixiv.net/i;
for (var i = 0; i < Items.length; i++) {
var imgR = Items[i];
var aR = imgR.parentNode;
if(rexa.test(aR.href)) {
var srcR = imgR.src.replace(/_s\.|_m\.|_100\./i, ".");
var hrefR = aR.href.replace(/medium/i, "big");
var tdR = aR.parentNode;
var linkB = document.createElement('a');
linkB.href = hrefR;
linkB.target = '_blank';
linkB.appendChild(document.createTextNode('[b]'));
tdR.appendChild(linkB);
if(!rexb.test(srcR)) {
var linkS = document.createElement('a');
linkS.href = srcR;
linkS.target = '_blank';
linkS.appendChild(document.createTextNode('[s]'));
tdR.appendChild(linkS);
}
}
}
}
pixivlink();
RPRSS 14:51:18
怎么看这段代码?
Madao-kaze 16:16:55
Javascript麼
Madao-kaze 16:17:10
@description provide a direct link to original image ([s] link), as well as a link to its page ([b] link).
Madao-kaze 16:45:17
rexa = /\?mode\=medium\&illust_id|\?mode\=big\&illust_id/i;
rexb = /source.pixiv.net/i;
这两个是正则表达式
Madao-kaze 16:46:46
rexa要匹配的是?mode=medium&illust_id或者?mode=big&illust_id
Madao-kaze 16:47:03
/i好象是int类吧,具体我忘记了
RPRSS 18:00:38
处理到xml dom的 多数都是javascript日期:2011-11-24
Madao-kaze 10:16:04
话说konachan下载器
Madao-kaze 10:16:15
TaskExecutor下面的那个download()
Madao-kaze 10:16:29
那个switch语句的意义何在
RPRSS 11:49:12
==
RPRSS 11:54:11
你觉得Hashtable是用在哪里,先讲讲这个
Madao-kaze 12:09:05
看了一下HashTable里面的integer貌似不是1就是0?
Madao-kaze 12:10:49
那个参数在TaskWorker里面有用到
Madao-kaze 12:11:08
1就代表是下载大图
0就代表是下载缩略图
Madao-kaze 12:12:17
呃好像看错了
RPRSS 12:14:21
如果突然一幅图片下载速度,因为网络原因变慢了,定在哪里不动的时候,作为编程的,你会怎样处理这种情况
Madao-kaze 12:14:45
一般设置一个定时器
Madao-kaze 12:14:50
到了还没完成就cancel掉
Madao-kaze 12:15:02
或者重试
RPRSS 12:15:25
除非我理解错了HashTable,否则我猜测就是解决这个问题
Madao-kaze 12:15:31
下载途中也可以抛出些异常
Madao-kaze 12:15:42
捕获到异常就可以处理
RPRSS 12:16:01
不要用异常处理,软件跟企业级应用不同
Madao-kaze 12:16:22
为什么不用……
Madao-kaze 12:16:28
这么好的东西
RPRSS 12:17:01
读者不需要你返回print信息
Madao-kaze 12:17:09
我没说要print啊
Madao-kaze 12:17:17
也没说catch里面一定要print
RPRSS 12:17:49
而且没到1M的软件,干嘛用异常
Madao-kaze 12:18:04
常见的例如说出异常了我弹个窗出来告诉用户不是很应该么
Madao-kaze 12:18:30
异常没规定一定要什么规模才能用
RPRSS 12:18:36
问题是你告诉用户,用户也解决不了啊.......
Madao-kaze 12:18:37
有需要就可以用
Madao-kaze 12:18:56
那程序处理不了就让它自己死掉对不
RPRSS 12:19:06
而且我记得异常是有限制的
Madao-kaze 12:19:16
是
Madao-kaze 12:19:23
例如内存溢出的那些搞不定的
Madao-kaze 12:20:04
但例如链接断掉的话,这个异常抛出来了,你就可以让程序重新建立链接
RPRSS 12:20:45
我总觉得异常还有几个很明显的限制,是不适合用于小程序的
Madao-kaze 12:20:46
不是的
Madao-kaze 12:20:59
实际经验告诉我该用的时候就要用
RPRSS 12:21:11
哦
Madao-kaze 12:22:23
简单的情况,计算一条很长的数学式子,如果中间遇到除数为0的话,一般用异常来搞的
Madao-kaze 12:22:57
有些时候你如果不try catch的话IDE会不让你编译的
RPRSS 12:24:57
异常难道不是要继承的么?
Madao-kaze 12:25:04
自己写的异常么
Madao-kaze 12:25:25
Java里面已经设计好一大堆可以直接用的异常了
RPRSS 12:25:38
这个难道不是就是限制了么?
Madao-kaze 12:25:48
你说的限制是哪方面
RPRSS 12:27:47
我觉得哪些直接可以用的异常,有时候覆盖不到...各种情况
Madao-kaze 12:28:12
只能说涵盖了大部分日常可以出现的异常咯
Madao-kaze 12:28:49
但你一句话也就抛一个异常
RPRSS 12:29:10
核心技术哪本书里面记得都是推荐用循环语句来代替异常的
Madao-kaze 12:29:08
对不同的话进行trycatch不就行了
Madao-kaze 12:30:00
Madao-kaze 12:30:12
这么多异常类能涵盖很多情况了
Madao-kaze 12:36:05
话说这个下载器所分析的xml有没有例子
Madao-kaze 12:37:04
HashTable的Integer值是标识第几个节点?
Madao-kaze 12:37:20
nodes = (NodeList)result;
tasks = new Hashtable();
for (int i = 0; i < nodes.getLength(); i++)
tasks.put(Integer.valueOf(i),
new Task(i,
nodes.item(i).getAttributes().getNamedItem("preview_url").getNodeValue(),
nodes.item(i).getAttributes().getNamedItem("file_url").getNodeValue()));
Madao-kaze 12:38:44
那么说这个HashTable就是用来标识这张图片是属于xml文件里面的第几个节点咯
RPRSS 12:54:34
文档中的第一行:XML 声明 - 定义了文档中使用的 XML 版本和字符编码。此例子遵守 1.0 规范,并使用 ISO-8859-1 (Latin-1/West European) 字符集。
下一行是标识此文档是一个 RSS 文档的 RSS 声明(此例是 RSS version 2.0)。
下一行含有
每个
每个
最后,后面的两行关闭
Madao-kaze 12:54:55
不是这个
Madao-kaze 12:55:00
我说konachan的xml
RPRSS 12:55:28
RSS 就是XML
Madao-kaze 12:55:34
能贴出来看看不
RPRSS 12:57:30
我拿不到kanachan的XML
Madao-kaze 12:57:28
哦
RPRSS 12:58:03
其实我觉得konachan里面的这个XML就是跟RSS一样的东西
Madao-kaze 12:58:11
rss本质就是xml吧
RPRSS 13:02:52
RPRSS 13:04:02
反正我觉得他分析的这个就是RSS......
Madao-kaze 13:04:11
就是了
RPRSS 13:06:37
http://konachan.com/post
RPRSS 13:06:44
登陆不到网站么
RPRSS 13:06:46
?
Madao-kaze 13:06:42
打不开
RPRSS 13:06:54
.....
Madao-kaze 13:06:48
网比较渣
Madao-kaze 13:07:07
能把页面下载下来不
Madao-kaze 13:07:15
或者直接打开源代码看
RPRSS 13:07:41
不,而且我觉得意义不大
Madao-kaze 13:10:39
拿了preview_url和file_url就可以去下载了
RPRSS 13:14:00
QQ刚才死了
Madao-kaze 13:14:25
qq今天经常死
RPRSS 13:14:34
.......