思维导图软件Xmind(3.2.1破解)--转载大全
心智图,又称脑图、思维导图、灵感触发图、概念地图或思维地图,是一种图像式思维的工具与及一种利用图像式思考辅助工具来表达思维的工具。
1:说说这两天的使用感受。说真的不用不知道一用吓一跳,真的很佩服托尼·巴赞(Tony Buzan)大侠提出了思维导图这个概念。给我的感觉就是用了思维导图后思维会变得非常的有条理,不会像以前那样对于知识的了解只是一个大概,根本没有建立起一个完整的知识架构。说到这里不得不提的一个感觉就是:知识需要慢慢的积累,但知识更需要吸纳,没有不断地学习,迟早是要落后的。
先给个创始人Tony Buzan的靓照,表示下对大侠的崇拜之情。

2:现阶段针对思维导图这个概念的应用软件非常之多比如说Xmind ,MindManager ,Inspiration ,SmartDraw等等等等,这里就说说我正在使用的Xmind。
就我所知Xmind是一个免费的开源软件,但是它有商业版本的(PS:每年49美元)。说实话太贵了,向我一样的学生现在还真的付不起,想想最近几年的通货膨胀。哎……而且软件还是跨平台的,支持Windows,Mac OS X,Debian/Ubuntu(32位和64位),便携版(支持3上述3中平台下),官方给了源码包需要在其他Linux发行版的朋友可以自行编译安装,比如我用的Fedora。其实我第一个使用思维导图软件是MindManager的,虽然说功能相当于Xmind要强大的很多。但是我看中的主要就是Xmind的跨平台。
3:既然说到了这个软件,不得不提的就是另外一个在windows下做笔记比较方便的软件MyBase DeskTop,现在的版本估计比较高了。我还在5.0纠结着,但是也够用了。
4:贴上我自己的Xmind截图:

上面是我自己做的一个思维导图,感觉还不错。哈哈……
下面说下软件里面比较常使用的几个快捷键:
1:Insert,主要的功能就是在选定的一个项目(比如说我上面截图里的矩形框或者椭圆框)里面插入其子项目。
2:按F2直接修改选定项目的内容,说个技巧:在你新建一个项目或子项目的时候可以直接键盘输入项目的名称而不必点击F2,这样可以节省大量的时间。
3:F6钻入功能,当导图过大的时候,使用此功能可以使自己的导图形成一种嵌套式的结构。这样大大地简化了导图的大小,而且对于知识的整理可以更加的清晰,不会让人产生一种眼花缭乱的感觉。
给几个个样式图:
最外层导图:

点击绿色箭头后进入区域内部的导图:

4:敲击回车创建相对应的项目,比如说主项目或者是子项目。
5:创建注释,这个快捷键没找着。但是这个功能让我有种想直接抛弃MyBase DeskTop的冲动。
快捷键是F4感谢gaoyy童鞋的提醒………
给个样式图:

由于使用软件的时间不大久,一些高级的应用还没有搞清楚怎么用,推荐一个Xmind的中文论坛:http://actsmind.com/forum/index.php,需要高级应用或者有什么问题不懂得可以问上面的人。
下面给出软件的破解方案了:
软件直接从官方网站上下载了,这个就不给地址了,自己Google、百度吧。
安装默认的安装路径将软件装与C盘中:比如我的路径C:\Program Files\XMind,然后下载这个破解插件:已经上传到Dbank数据银行上了,大家放心下载。需要的朋友看这里吧:http://dl.dbank.com/c0s1pxtxw1,下载完破解补丁以后可以看到一个文件名为net.xmind.verify_3.2.1.201011212218的文件,然后进入到你的Xmind安装目录:C:\Program Files\XMind\plugins找到类似于上面的文件,记住修改破解补丁文件为你所使用Xmind版本内类似于net.xmind.verify_3.2.1的文件名,然后替换掉就可以破解使用Xmind的Pro功能了,这里提醒下;每次开启软件都需要输入账号与密码,破解完后通过普通可以使用Pro功能,未破解需要使用49美元的那个收费账号,有钱的话还是买正版吧。有个收费账号就可以,离线使用Pro功能了…….
都快4点了,就写到这里了….以后有补充再添加进来…..睡觉去…..O(∩_∩)O哈哈~
本文短链接:http://goo.gl/YBVZO 源链接:http://www.taglete.info/archives/2010/11/307
------------------------

2
3 import java.io.PrintStream;
4 import java.util.ArrayList;
5 import java.util.List;
6 import net.xmind.signin.IAccountInfo;
7 import net.xmind.signin.IAuthenticationListener;
8 import net.xmind.signin.IDataStore;
9 import net.xmind.signin.ISignInDialogExtension;
10 import net.xmind.signin.IXMindNetCommand;
11 import net.xmind.signin.IXMindNetCommandHandler;
12 import net.xmind.signin.XMindNet;
13 import net.xmind.signin.internal.InternalXMindNet;
14 import net.xmind.signin.internal.JSONStore;
15 import net.xmind.signin.internal.XMindNetAccount;
16 import net.xmind.verify.IVerifyListener;
17 import org.apache.commons.httpclient.HttpClient;
18 import org.apache.commons.httpclient.methods.GetMethod;
19 import org.eclipse.core.runtime.Assert;
20 import org.eclipse.core.runtime.IProgressMonitor;
21 import org.eclipse.core.runtime.IStatus;
22 import org.eclipse.core.runtime.SafeRunner;
23 import org.eclipse.core.runtime.Status;
24 import org.eclipse.core.runtime.jobs.IJobChangeEvent;
25 import org.eclipse.core.runtime.jobs.Job;
26 import org.eclipse.core.runtime.jobs.JobChangeAdapter;
27 import org.eclipse.jface.preference.IPreferenceStore;
28 import org.eclipse.jface.util.SafeRunnable;
29 import org.json.JSONObject;
30
31 public class UserInfoVerifier
32 implements IAuthenticationListener, IXMindNetCommandHandler
33 {
34 static final String UID = "uid";
35 private static final String EXPIRATION = "expiration";
36 private static final boolean DEBUG = false;
37 private static UserInfoVerifier instance = null;
38 private IPreferenceStore prefStore;
39 private final boolean isVindy;
40 static final IStatus validity = createValidity(1);//by imxylz, force passed
41 private List<IVerifyListener> listeners;
42 private List<IVerifyListener> callbacks;
43 private boolean notifyingListeners = false;
44
45 private VerifyJob verifyJob = null;
46
47 private boolean internalSigningOut = false;
48 final static String i_user = "imxylz";//by imxylz
49 final static String i_uid = "20110407";//by imxylz
50
51 private UserInfoVerifier(IPreferenceStore prefStore)
52 {
53 this.prefStore = prefStore;
54 isVindy = checkVindy();
55
56 if (isVindy) {
57 InternalXMindNet.getInstance().getAccount().preauthorized();
58 } else {
59 XMindNet.addAuthenticationListener(this);
60 XMindNet.addXMindNetCommandHandler("refresh", this);
61 }
62 }
63
64 private boolean checkVindy() {
65 String distribId =
66 System.getProperty("org.xmind.product.distribution.id");
67 if ((distribId == null) || ("".equals(distribId)) ||
68 (!distribId.startsWith("vindy"))) {
69 return false;
70 }
71 String name =
72 System.getProperty("org.xmind.product.distribution.vindy.org");
73 if ((name == null) || ("".equals(name))) {
74 return false;
75 }
76 String time =
77 System.getProperty("org.xmind.product.distribution.vindy.time");
78 if ((time == null) || ("".equals(time))) {
79 return false;
80 }
81 String digest =
82 System.getProperty("org.xmind.product.distribution.vindy.name");
83 if ((digest == null) || ("".equals(digest))) {
84 return false;
85 }
86 return digest.equals(Cryptus.digest(name + time +
87 "30e207986ea2b691faa41fa51cc1b8e7"));
88 }
89
90 public void postSignIn(IAccountInfo accountInfo)
91 {
92 if (verifyJob == null)
93 verify(null, true, null, null);
94 }
95
96 public void postSignOut(IAccountInfo oldAccountInfo)
97 {
98 if (!internalSigningOut) {
99 saveExpTime(0L, null);
100 notifyValidity(validity, null);
101 }
102 }
103
104 public boolean isValid() {
105 return (validity != null) && (validity.getCode() == 1);
106 }
107
108 public void verify() {
109 verify(null, false, null, null);
110 }
111
112 public void verify(IVerifyListener callback) {
113 verify(callback, false, null, null);
114 }
115
116 public void verify(IVerifyListener callback, boolean silent, String signInMessage, ISignInDialogExtension signInExtension)
117 {
118 if (validity != null) {
119 int code = validity.getCode();
120 if ((code == 1) ||
121 ((code & 0x80000018) != 0)) {
122 notifyValidity(validity, callback);
123 return;
124 }
125 }
126
127 if (callback != null) {
128 if (callbacks == null)
129 callbacks = new ArrayList();
130 callbacks.add(callback);
131 }
132
133 if (verifyJob == null) {
134 VerifySession session = new VerifySession(signInMessage,
135 signInExtension);
136 verifyJob = new VerifyJob(session, silent);
137 verifyJob.addJobChangeListener(new JobChangeAdapter() {
138 public void done(IJobChangeEvent event) {
139 if (verifyJob == event.getJob()) {
140 verifyJob = null;
141 }
142 IStatus r = event.getResult();
143 UserInfoVerifier.this.notifyValidity(validity, null);
144 }
145 });
146 verifyJob.schedule();
147 } else if (!silent) {
148 verifyJob.setSilent(silent);
149 }
150 }
151
152 private void saveExpTime(long expTime, String uid) {
153 if (expTime == 0L)
154 prefStore.setToDefault("expiration");
155 else
156 try {
157 if (expTime < 0L)
158 expTime = 9223372036854775807L;
159 String value = Cryptus.encrypt("`\t\n" +
160 Long.toString(expTime, 16), uid);
161 if (value != null)
162 prefStore.setValue("expiration", value);
163 }
164 catch (Exception localException)
165 {
166 }
167 }
168
169 public IStatus getValidity()
170 {
171 return validity;
172 }
173
174 private int parseValidityState(IDataStore data, String uid) {
175 // if (!data.has("expireDate")) {
176 // saveExpTime(0L, uid);
177 //
178 // return 8;
179 // }
180 //
181 // long expireDate = data.getLong("expireDate");
182 // if (expireDate < 0L) {
183 // saveExpTime(0L, uid);
184 //
185 // return 8;
186 // }
187 //
188 // boolean expired = data.getBoolean("expired");
189 // if (expired) {
190 // saveExpTime(0L, uid);
191 //
192 // return 16;
193 // }
194 //
195 // saveExpTime(expireDate, uid);
196 //
197 // long now = System.currentTimeMillis();
198 // if (now > expireDate)
199 // {
200 // return 16;
201 // }
202
203 return 1;
204 }
205
206 private static IStatus createValidity(int state)
207 {
208 return createValidity(state, null);
209 }
210
211 private static IStatus createValidity(int state, Throwable error)
212 {
213 int severity;
214 if (state == -2147483648)
215 severity = 2;
216 else {
217 severity = 0;
218 }
219 return new Status(severity, "net.xmind.varify", state, null, error);
220 }
221
222 private void notifyValidity(IStatus validity, IVerifyListener callback)
223 {
224 Assert.isNotNull(validity);
225 if (callback != null)
226 callback.notifyValidity(validity);
227 else {
228 notifyCallbacks(validity);
229 }
230 notifyListeners(validity);
231 notifyXMindNetAccount(validity);
232 }
233
234 private void notifyXMindNetAccount(IStatus validity)
235 {
236 int code = validity.getCode();
237 if (code == -2147483648) {
238 InternalXMindNet.getInstance().getAccount().unauthorized(
239 new Status(validity.getSeverity(), validity.getPlugin(),
240 2, validity
241 .getMessage(), validity.getException()));
242 } else if (code == 4) {
243 InternalXMindNet.getInstance().getAccount().unauthorized(
244 new Status(validity.getSeverity(), validity.getPlugin(),
245 1, validity
246 .getMessage(), validity.getException()));
247 }
248 else
249 {
250 int subscriptionStatus;
251 if (code == 1) {
252 subscriptionStatus = 2;
253 }
254 else
255 {
256 if (code == 16)
257 subscriptionStatus = 3;
258 else
259 subscriptionStatus = 1;
260 }
261 InternalXMindNet.getInstance().getAccount().authorized(
262 subscriptionStatus);
263 }
264 }
265
266 private synchronized void notifyCallbacks(final IStatus validity)
267 {
268 if (callbacks == null)
269 return;
270 for (IVerifyListener callback0 : callbacks) {
271 final IVerifyListener callback = callback0;
272 SafeRunner.run(new SafeRunnable() {
273 public void run() throws Exception {
274 ((IVerifyListener)callback).notifyValidity(validity);
275 }
276 });
277 }
278 callbacks.clear();
279 callbacks = null;
280 }
281
282 private void notifyListeners(final IStatus validity)
283 {
284 if ((listeners == null) || (notifyingListeners))
285 return;
286 notifyingListeners = true;
287 for (IVerifyListener callback0 : listeners) {
288 final IVerifyListener callback = callback0;
289 SafeRunner.run(new SafeRunnable() {
290 public void run() throws Exception {
291 ((IVerifyListener)callback).notifyValidity(validity);
292 }
293 });
294 }
295 notifyingListeners = false;
296 }
297
298 public void addVerifyListener(IVerifyListener listener) {
299 if (listeners == null)
300 listeners = new ArrayList<IVerifyListener>();
301 listeners.add(listener);
302 }
303
304 public void removeVerifyListener(IVerifyListener listener) {
305 if (listeners != null)
306 listeners.remove(listener);
307 }
308
309 private static void debug(String message)
310 {
311 System.out.print("[verify] ");
312 System.out.println(message);
313 }
314
315 private static void debug(Throwable e) {
316 e.printStackTrace();
317 }
318
319 public static UserInfoVerifier getInstance()
320 {
321 if (instance == null) {
322 instance = new UserInfoVerifier(VerifyPlugin.getDefault()
323 .getPreferenceStore());
324 }
325 return instance;
326 }
327
328 public boolean handleXMindNetCommand(IXMindNetCommand command) {
329 return refreshValidity(command.getContent());
330 }
331
332 private boolean refreshValidity(IDataStore data) {
333 // if (data == null) {
334 // return true;
335 // }
336 // String user = data.getString("user");
337 // String uid = data.getString("uid");
338 // if ((user == null) || (uid == null)) {
339 // return true;
340 // }
341 // IAccountInfo accountInfo = XMindNet.getAccountInfo();
342 //
343 // if ((accountInfo == null) || (!user.equals(accountInfo.getUser()))) {
344 // return true;
345 // }
346 prefStore.putValue("user", i_user);
347 prefStore.putValue("uid", i_uid);
348
349 int state = parseValidityState(data, i_uid);
350
351 notifyValidity(validity, null);
352 return true;
353 }
354
355 private class VerifyJob extends Job
356 {
357 private boolean silent;
358 private UserInfoVerifier.VerifySession session;
359
360 public VerifyJob(UserInfoVerifier.VerifySession session, boolean silent)
361 {
362 super("");
363 this.session = session;
364 this.silent = silent;
365 setSystem(silent);
366 }
367
368 public void setSilent(boolean silent) {
369 this.silent = silent;
370 }
371
372 private IStatus err(int validityState, IStatus error) {
373 return UserInfoVerifier.createValidity(1);
374 }
375
376 protected IStatus run(IProgressMonitor monitor)
377 {
378 monitor.beginTask(null, 90);
379 monitor.done();
380 return validity;//ok status
381 }
382 }
383
384 private class VerifySession
385 {
386 public static final int INITIALIZED = 0;
387 public static final int RETRIEVING_USER_INFO = 1;
388 public static final int RETRIEVING_UID = 2;
389 public static final int VERIFYING = 3;
390 public static final int COMPLETED = 4;
391 private String user;
392 private String token;
393 private String uid;
394 private int validityState = 0;
395
396 private int status = 0;
397 final IStatus termination = Status.OK_STATUS;;//by imxylz, force passed
398 private String signInMessage;
399 private ISignInDialogExtension signInExtension;
400
401 public VerifySession(String signInMessage, ISignInDialogExtension signInExtension)
402 {
403 this.signInMessage = signInMessage;
404 this.signInExtension = signInExtension;
405 }
406
407 public int getValidityState() {
408 return validityState;
409 }
410
411 public boolean hasUserID() {
412 return (user != null) && (!"".equals(user));
413 }
414
415 public boolean hasToken() {
416 return (token != null) && (!"".equals(token));
417 }
418
419 public boolean hasUID() {
420 return (uid != null) && (!"".equals(uid));
421 }
422
423 public boolean hasValidityState() {
424 return validityState > 0;
425 }
426
427 public boolean hasError() {
428 return (termination != null) && (termination.matches(4));
429 }
430
431 public IStatus getError() {
432 return termination;
433 }
434
435 private IStatus ok() {
436 return termination;
437 }
438
439 private IStatus err(int code, Throwable e) {
440 return termination;
441 }
442
443 public void reset() {
444 }
445
446 public IStatus retrieveLocalUserInfo() {
447 status = 1;
448 validityState = 0;
449
450 IAccountInfo accountInfo = XMindNet.getAccountInfo();
451 user = (accountInfo == null ? null : accountInfo.getUser());
452 token = (accountInfo == null ? null : accountInfo.getAuthToken());
453 if ((user == null) || (token == null)) {
454 validityState = 4;
455 }
456
457 return ok();
458 }
459
460 public IStatus retrieveUserInfo() {
461 status = 1;
462 validityState = 0;
463
464 internalSigningOut = true;
465 XMindNet.signOut();
466 internalSigningOut = false;
467 IAccountInfo accountInfo = XMindNet.signIn(
468 signInMessage == null ? Messages.verifyJob_message :
469 signInMessage, signInExtension);
470 user = (accountInfo == null ? null : accountInfo.getUser());
471 token = (accountInfo == null ? null : accountInfo.getAuthToken());
472 if ((user == null) || (token == null)) {
473 validityState = 4;
474 }
475
476 return ok();
477 }
478
479 public IStatus retrieveLocalUID() {
480 status = 2;
481 uid = null;
482
483 String verifiedUserId = prefStore.getString("user");
484
485 if ((verifiedUserId != null) && (verifiedUserId.equals(user))) {
486 uid = prefStore.getString("uid");
487 }
488 else
489 {
490 prefStore.setToDefault("uid");
491 }
492 return ok();
493 }
494
495 public IStatus retrieveUID() {
496 status = 2;
497 uid = null;
498
499 String url = "https://www.xmind.net/_res/uid/" + user;
500
501 GetMethod method = new GetMethod(url);
502 method.setRequestHeader("AuthToken", token);
503 method.setRequestHeader("accept", "application/json");
504 try {
505 int code = new HttpClient().executeMethod(method);
506
507 if (code != 200) {
508 return err(code, null);
509 }
510 JSONObject resp = new JSONObject(method
511 .getResponseBodyAsString());
512 code = resp.getInt("_code");
513
514 if (code != 200) {
515 return err(code, null);
516 }
517 uid = resp.getString("uid");
518
519 if ((uid != null) && (!"".equals(uid))) {
520 prefStore.putValue("user", user);
521 prefStore.putValue("uid", uid);
522 } else {
523 prefStore.setToDefault("user");
524 prefStore.setToDefault("uid");
525 }
526 }
527 catch (Exception e)
528 {
529 return err(0, e);
530 }
531 return ok();
532 }
533
534 public IStatus retrieveLocalValidityState() {
535 return retrieveValidityState();//by imxylz, ignore checking
536 // status = 3;
537 // validityState = 0;
538 //
539 // String value = prefStore.getString("expiration");
540 //
541 // if ((value != null) && (!"".equals(value))) {
542 // try {
543 // value = Cryptus.decrypt(value, uid);
544 //
545 // if ((value != null) &&
546 // (!"".equals(value)) && (value.startsWith("`\t\n"))) {
547 // long expTime = Long.parseLong(value.substring(3), 16);
548 //
549 // validityState = (System.currentTimeMillis() < expTime ? 1 :
550 // 16);
551 //
552 // return ok();
553 // }
554 // }
555 // catch (Exception e)
556 // {
557 // return err(0, e);
558 // }
559 // }
560 // return ok();
561 }
562
563 public IStatus retrieveValidityState() {
564 status=4;
565 validityState=1;
566 return ok();//by imxylz, ignore checking
567 // status = 3;
568 // validityState = 0;
569 //
570 // String url = "https://www.xmind.net/_res/verify/" + user;
571 //
572 // GetMethod method = new GetMethod(url);
573 // method.setRequestHeader("UID", uid);
574 // method.setRequestHeader("accept", "application/json");
575 // try {
576 // int code = new HttpClient().executeMethod(method);
577 //
578 // if (code != 200) {
579 // return err(code, null);
580 // }
581 // JSONObject resp = new JSONObject(method
582 // .getResponseBodyAsString());
583 // code = resp.getInt("_code");
584 //
585 // if (code != 200) {
586 // return err(code, null);
587 // }
588 // validityState = UserInfoVerifier.this.parseValidityState(new JSONStore(resp), uid);
589 //
590 // status = 4;
591 // return ok();
592 // }
593 // catch (Exception e) {
594 // }
595 // return err(0, e);
596 }
597 }
598 }
- 第40行final字段强制修改状态为通过认证状态!
- 第48/49行搞一个写死的user/uid,其实我也不知道user/uid的格式是什么。
- 175~201行忽略过期时间,总是有效
- 380行,强制为认证状态(final字段)
- 所以状态校验的逻辑都改为397行的OK状态(final字段)
浙公网安备 33010602011771号