-
Any.DO:酷味十足的社交型任务管理应用
2011-11-11 16:07:24Any.DO是一款最新推出的很酷的社交型任务管理应用,它设计新颖,功能强大,是一款较为罕见的好应用。 此前,Any.DO的开发团队还曾推出过一款Android Market上颇为热门的任务管理应用Taskos。Taskos主要服务于市场...Any.DO是一款最新推出的很酷的社交型任务管理应用,它设计新颖,功能强大,是一款较为罕见的好应用。
此前,Any.DO的开发团队还曾推出过一款Android Market上颇为热门的任务管理应用Taskos。Taskos主要服务于市场研究,目前拥有超过130万用户,每天处理任务超过15万。
Any.DO由Omer Perchik,Yoni Lindenfeld和Itay Kahana三人于2010年联合创立。现在,在加州Palo Alto和以色列的Tel Aviv均设有办事处。据早前报道称,Any.DO已获得了来自Innovation Endeavors,Blumberg Capital,Genesis Partners,Palantir (Joe Lonsdale),Felicis Ventures (Aydin Senkut)和Brian Koo的100万美元天使资金,并聘请了Facebook移动产品主管Erick Tseng和Twitter企业战略总监Elad Gil作为顾问。
和所有的任务管理应用一样,Any.DO也支持任务添加、标记完成、优先级设定等基本服务。除此以外,Any.DO还提供通过语音输入创建任务,通过手势进行任务管理等服务,如通过拖放分配任务的优先级,通过滑动标记任务完成,通过抖动手机从屏幕上清除已完成任务等。
然而,该应用最重要的特点是后端的智能性。通过从其他用户那搜集数据、分析数据,Any.DO为用户提供常见词汇提示,从而在用户输入时提供自动完成功能。
Any.DO还支持用户与亲朋好友共同合作完成任务。用户新建合作任务时,该应用提供联系建议,对那些非Any.DO用户成员,该应用还支持电子邮件和短信的联系方式。
据联合创始人Perchik透露,Any.DO正在建立一个更智能的系统帮助用户实际完成任务,而不仅仅是将待办事项列出来。虽然具体细节尚未透露,但很可能会类似Siri。
目前,Any.DO只适用Android设备,但几个月后将会迎来iPhone版。
Via TC
原文链接:http://www.leiphone.com/any-do-a-social-to-do-list-app.html
-
Cronette 1.9 Mac 破解版 定时执行任务管理应用
2019-01-05 17:08:21Cronette for Mac这款强大的定时执行任务管理工具,可以帮助您!您可以选择是每天,每周,每月还是每年启动任务,并且可以用于启动几乎任何应用程序。这包括从简单地打开文档到启动应用程序或在浏览器中打开URL的...Cronette for Mac这款强大的定时执行任务管理工具,可以帮助您!您可以选择是每天,每周,每月还是每年启动任务,并且可以用于启动几乎任何应用程序。这包括从简单地打开文档到启动应用程序或在浏览器中打开URL的所有内容。当然,它也可以用来自动关机,重新启动或休眠你的Mac,而且Cronette提供了不同类型的启动任务,并且可以指定任何任务来启动不同类型的执行。
Cronette 1.9 Mac 破解版 介绍
Cronette for Mac是一款小巧实用的计划任务工具。它可用于无人参与的Mac服务器或常规Mac工作站上,用于在夜间执行批量无人值守任务或定期执行定期任务。提供了不同类型的启动任务,并且可以指定任何任务来启动不同类型的执行。
详细说明:
- Cronette中的所有任务都在文档表中表示。该任务在主界面和详细界面中可视化(1Blocker众所周知的布局用于多种Mac软件,用户在主表格中选择任务,他可以在表格下查看和编辑可视化的细节)
- 用户可以插入他多少任务喜欢
- 用户的文件可以分配给任务的名称和备注认识到它
用户可以选择一个任务运行,不同的时间计划类型:
- 日报:任一天运行
- 周刊:指定要运行的任何一周中的哪一天
- 每月:指定任何月份的年运行
- 的这一天:指定月份和日期运行
并具体说明:
- 最多十个不同的时间来运行在每日/每周/每月/每年计划的日子里
- 要在文件开放时运行,如果每日/每周/每月/每年计划与curr匹配如果每天指定的最大运行时间未达到。
最后一项功能对于执行定期活动作为备份,报告创建,电子邮件发送和任何其他您想要执行的任务不是基于时间,而是例如当您关闭Mac并且仅在您指定
用户可以选择当任务被启动
- 启动应用程序或文档
- 打开URL
- 插入的不同类型的消息到要执行的操作的日志
- 执行UNIX直接从Cronette
- 复印文件或命令文件夹
- 移动文件或文件夹
Cronette将在计划后台启动任务。无需采取进一步行动。
Cronette添加到碱性的官能团的附加特点:
- 允许使用Mac标准可可对照(无需进行编Trickster码)
- 即时诊断,因为它们被插入,显示错误存在(错误路径任务的,不完整的时间执行输入以指定一个任务等..)“可运行”任务和“非可运行”任务的
- 显示,以更好地了解你有文件里面什么
- 显示时间安排对任何单独的任务
- 显示时间进度表计算相结合的任务,在用户选择的时间间隔内。用户可以观看未来…
- 在单独的日志中显示执行的过程任何文档的窗口
- 它可以创建用于复制或移动文件的目的,您喜欢的新文件夹,分配当前日期依赖名称和日期标记(在时间作为例子任务执行):基于2017926BACKUP_FILES
Cronette它的文档,允许有不同的文件编组不同的任务设置
它可以操作Cronette作为一个实用工具简单地只用一个文件,并让它开在启动时没有进一步动作(首选项)
进程使用单独的线程启动,即使对于非常耗时的任务,应用程序也不会挂起。
What's New in Cronette
Version 1.9:
- Minor bug fixes
- Optimized for macOS 10.14 Mojave
- Now works for both Light Appearance Mode and Dark Appearance Mode under macOS 10.14 Mojave and successive
Version 1.8:
- Improved log output
- Improved result schedule with automatic update results at any applied changes to any settings
- Various bug fixes
- Optimized for macOS 10.13 (High Sierra)
Cronette 1.9 Mac 破解版 下载
-
实时聊天+任务管理应用Orchestra完成500万美元A轮融资
2011-11-08 11:21:08最新消息,实时聊天+任务管理应用Orchestra宣布,关闭从Charles River Ventures和SV Angel获得的500万美元A轮融资。此前,Orchestra还从Kapor Capital和其他天使投资人那获得了50万美元的种子资金。 Orchestra的...最新消息,实时聊天+任务管理应用Orchestra宣布,关闭从Charles River Ventures和SV Angel获得的500万美元A轮融资。此前,Orchestra还从Kapor Capital和其他天使投资人那获得了50万美元的种子资金。
Orchestra的两位联合创始人 Gentry Underwood和Scott Cannon曾分别就职于IDEO和苹果,崇尚简单的设计理念。Underwood曾将该应用描述为“目的明确的短信”和“简单的任务列表”。Orchestra的用户界面十分友好,在用户第一次下载时为其提供全程的无缝指引。该应用秉承“无摩擦”精神,自动实现与http://www.orchestra.com同步。
Orchestra与其他任务管理服务的最大区别是它的社交性。Orchestra允许用户通过语音(类似低级的人工Siri)或键盘输入任务,并在该应用内、Twitter或Facebook上与其他人分享。用户无需Orchestra账户就可以对任务进行响应,还可将电子邮件通过tasks@orchestra.com中转添加至Orchestra任务列表。
自推出三个星期以来,Orchestra一直位居iTunes “App of the Week”官方推荐栏目,还被著名的生活技巧与软件类博客 Lifehacker评为“最佳iPhone任务管理应用”。
Underwood称,本次融资资金将主要用于扩充位于加州帕罗奥多(Palo Alto)的七人团队,尤其是想招聘更多优秀的工程师和产品设计师。据悉,Android和iPad版的Orchestra正在开发中。
点击这里从 App Store免费下载。
Via TC
-
兰林任务管理应用程序雏形版以及概要说明
2012-09-15 21:54:57做个简易的任务管理器吧,所谓“麻雀虽小,五脏俱全”。希望也能在逐步完善这个任务管理器的时候,能够从中 汲取更多关于编码、设计以及效率的问题,自己也会随着这个小东西的完善而逐渐变得强大的。 ...本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning
上上周五的下午,也就是2012.09.07,终于向主管提出了辞职,也下定决心准备返回武汉工作,原因当然
有很多, 在此也不讲这“数不清理还乱的”事儿了,让各位笑话了。
最近,工作倒挺清闲,俗话说“人太闲了,就容易奇思乱想” ,这不我也觉得天马行空了。于是心里一直在
嘀咕着,该做点什么有意义的事情出来,开发一些App第一个浮现在我脑海里。可我脑子不好使,没有很好地
创意。每次和朋友同事聊天,“有想法,其他都是浮云”总是会从我的嘴里蹦出来,可我只能空口说白话,插科
打诨。呵呵,我也希望自己能多点创新的点子,说不定那天我也去创业了呢? 额,话说大了。还是拉回现实吧。
我只能想啊想,思啊思,偶然间联想到博客中之前对应用程序中相关信息的一系列总结,索性横下一条心,先
做个简易的任务管理器吧,所谓“麻雀虽小,五脏俱全”。希望也能在逐步完善这个任务管理器的时候,能够从中
汲取更多关于编码、设计以及效率的问题,自己也会随着这个小东西的完善而逐渐变得强大的。
差不多占用了周末时间以及晚上(我可没加班)时间,做出来了这个雏形,马马虎虎而已。废话不多说了,见
下文。
主要知识来源:
1、 <<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>
2、<<Android中获取应用程序(包)的大小-----PackageManager的使用(二)>>
3、<<Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用>>
4、关于制作底部导航的相关博文如下:
功能说明:
1、分类列出系统已安装程序的信息:icon(修正app icon大小)、lable、size
2、能卸载第三方应用程序
3、更新系统安装程序信息,例如:卸载、安装程序后。
4、查看、停止正在运行的Service简单点来说,就是把我上面列出的4条单独地个体整理成一个有机的整体,整体才是有生命、充满活力的。
功能简单,程序当然也很简单。 先上图:
工程逻辑图如下:
伪设计说明
使用继承体系
由于我们用于呈现分类的已安装程序的Activity在界面以及功能上大体一致,因此我们将这部分共性(界面等)
抽取出来形成一个抽象父类(BaseActivity),基本上所有功能都由这个抽象父类完成了,子类仅仅提供数据对象。
UML图:
设计缺点
然而,随着后期新功能的加入以及优化,这种在TabActivity中添加Activity的功能已经不能满足需要,甚至
现有设计本身就是欠缺地,只能在后续中重构改善设计。
缺点主要有二:
1、效率比较低下 ---- 需要同时管理多个Activity的生命周期
2、造成了数据之间的过度耦合以及代码冗余 ---- 添加新功能时,发现数据交互之间比较繁杂,例如:添加
一个对ACTION_PACKAGE_XXX的BroadcastReceiver时,需要注册多次,数据交互之间也不很麻烦。
后续优化
计划参考Android2.3 Settings中应用程序功能的实现,采用TabHost.TabContentFactory类为TabActivity提供
视图,在性能上继续优化我们的这个小东西 。
BaseActivity的部分源码如下:
/** @author http://http://blog.csdn.net/qinjuning*/ public abstract class BaseActivity extends Activity implements OnItemClickListener{ private static String TAG = "BaseActivity"; protected ListView mListView = null; protected TextView mTvAppCount = null ; private static PackageManager mPackageManager; protected static List<AppInfo> mAllAppInfoList = new ArrayList<AppInfo>() ; protected static List<AppInfo> mSystemAppInfoList = new ArrayList<AppInfo>(); protected static List<AppInfo> mThirdAppInfoList = new ArrayList<AppInfo>(); protected static List<AppInfo> mSDCardAppInfoList = new ArrayList<AppInfo>(); protected AppInfoAdapter mAppInfoAdapter = null ; //适配器 private PakcageStateChangeReceiver mPackageReceiver = new PakcageStateChangeReceiver(); private static Context mContext ; /** We had loaded the application info*/ private static boolean mHasLoadered = false ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this ; mPackageManager = this.getApplicationContext().getPackageManager(); if(!mHasLoadered) { mHasLoadered = true ; // we have load the application loadAppInfoList(); } initUI(R.layout.browse_app_list); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_PACKAGE_CHANGED); filter.addAction(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addDataScheme("package"); //Attention registerReceiver(mPackageReceiver , filter); } /**设置UI*/ protected void initUI(int resId) { setContentView(resId); mListView = (ListView) findViewById(R.id.listviewApp); mListView.setAdapter(makeAppInfoAdapter()); mListView.setOnItemClickListener(this); mTvAppCount = (TextView)findViewById(R.id.app_type_count); setAppCountView(); } //构建一个BaseAdapter适配器对象,为ListView提供数据 protected BaseAdapter makeAppInfoAdapter() { mAppInfoAdapter = new AppInfoAdapter(this , getAppInfoList()); return mAppInfoAdapter ; } //返回该应用程序适合的容器 protected abstract List<AppInfo> getAppInfoList(); //查询系统应用程序信息并填充到我们的集合中 private static void loadAppInfoList() { // 查询所有已经安装的应用程序 List<ApplicationInfo> listApplications = mPackageManager .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES); Slog.v(TAG, "initAppInfoList:: listApplications Size # " + listApplications.size()); Collections.sort(listApplications, new ApplicationInfo.DisplayNameComparator(mPackageManager));// 排序 for(ApplicationInfo applicationInfo : listApplications ) { //构建一个我们的AppInfo Model类 AppInfo appInfo = makeAppInfo(applicationInfo); //获得应用程序大小...信息 try { Utility.queryPacakgeSize(applicationInfo.packageName, mPackageManager , appInfo); } catch(Exception ex) { ex.printStackTrace(); } fillListByFlag(applicationInfo.flags , appInfo); } } // 构造一个AppInfo Model对象 ,并赋值 private static AppInfo makeAppInfo(ApplicationInfo applicationInfo) { ... } //根据Flag标记分别添加至我们的集合中 private static void fillListByFlag(int flags , AppInfo appInfo) { //所有程序 mAllAppInfoList.add(appInfo); //系统内置程序 if((flags & ApplicationInfo.FLAG_SYSTEM) != 0 ) { mSystemAppInfoList.add(appInfo); appInfo.isSystem = true ; } //本来是系统程序,被用户手动更新后,该系统程序也成为第三方应用程序了 else if ((flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){ mThirdAppInfoList.add(appInfo); } //第三方应用程序 else if ((flags & ApplicationInfo.FLAG_SYSTEM) == 0) { mThirdAppInfoList.add(appInfo); } //安装在SD卡中的程序 if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) { mSDCardAppInfoList.add(appInfo); } } private class PakcageStateChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Slog.v(TAG, "onReceive Action --" + action); if(Intent.ACTION_PACKAGE_CHANGED.equals(action) || Intent.ACTION_PACKAGE_ADDED.equals(action)|| Intent.ACTION_PACKAGE_REMOVED.equals(action)) { String pkgName = intent.getData().getSchemeSpecificPart() ; boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false); Slog.v(TAG, "pkgName --" + pkgName + " replacing : " + replacing); if(!Intent.ACTION_PACKAGE_CHANGED.equals(action)) { if(Intent.ACTION_PACKAGE_REMOVED.equals(action)) { if(!replacing) //Removed { removeAppInfo(pkgName) ; } else { //We will receiver the ACTION_PACKAGE_ADDED later , // do something there. } } else // ACTION_PACKAGE_ADDED { if(!replacing) // 安装了新的应用程序 { addAppInfo(pkgName) ; } else //更新了应用程序 { updateAppInfo(pkgName); } } } } } } }
其他代码就不在贴了,大家有兴趣的自行研究咯。
分享永远是咱移动互联网的精神, 本次雏形版下载地址,http://download.csdn.net/detail/qinjuning/4572769
希望大家能提供宝贵意见。 Over ~~~~
-
Android 平台的 10 款开源任务管理和时间追踪应用
2017-08-03 11:51:1710 个 Android 手机上的应用程序,它们可以帮助你把时间组织起来,记录你在任务上花费的时间...Mirakel 是一个具有现代用户界面的任务管理应用程序,并支持在这样的程序中可能需要的每种格式。在 Mirakel 的基本层面, -
taskmanagist:一个管理应用程序,可帮助您管理任务-源码
2021-02-16 20:29:33任务管理者 描述 一个管理应用程序,可帮助您管理任务 特征 用户可以创建一个帐户并登录 用户可以创建任务 用户可以检索一个任务或所有任务 用户可以更新任务状态 用户可以删除任务 技术领域 Python 烧瓶 应用程式... -
性能监测和优化使用任务管理器管理应用程序和进程
2019-04-07 19:28:21子任务1使用任务管理器管理应用程序和进程 1.Windows任务管理器提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。... -
Pentazemin:用于任务拍摄的应用程序。 帮助保持时间和待办事项管理的重点-源码
2021-02-04 06:43:45一种基于番茄技术的任务管理应用程序。 五角enta的概念 试图控制思想是最糟糕的解决方案。 创建一个系统并运行它。 Pentazemin不仅仅是一个ToDo应用。 这更像是用于时间管理的应用程序。 Pomodoro Technique也有很... -
c#如何操作“应用程序任务“关闭任务管理器的"指定任务
2015-03-12 10:32:33怎么才能关闭**应用程序任务**,而**不是关闭进程**,关闭进程就直接关闭打开的全部任务了,我要是关闭**任务管理器**里面的"**单个任务**” ![图片说明]... -
C#自编获取Windows任务管理器所有应用程序名称
2012-10-12 17:33:58C#自编获取Windows任务管理器所有应用程序名称 -
Android当前任务管理器不显示应用进程
2017-01-18 13:41:29Android当前任务管理器不显示应用进程Android框架为我们维护了一个名叫“最近运行”的应用程序列表,以方便进行应用程序切换。它是通过ActivityManifest.xml中的activity标签定义了一个这样的属性。 ... -
六个高效的任务管理app应用推荐
2013-12-06 13:52:25所谓任务管理,就是将需要完成的任务进行记录、分配并组织安排的一种方式。当你身兼数职时,要兼顾和跟踪每个任务往往不容易。可喜的是,今天有很多工具可以帮助你更好地组织和安排任务,让你在任务扎堆时仍然可以... -
任务显示与隐藏,任务管理器中应用程序显示与隐藏,悬浮窗任务栏显示 效果
2014-09-04 12:55:501. 隐藏底部 “任务栏图标”和 隐藏 “任务任务管理器——应用程序—任务” ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW); ShowWindow(SW_HIDE); 此上为:迅雷悬浮窗任务栏显示效果。 2. 显示... -
任务管理器有些任务杀不死_如何在没有任务管理器的情况下强制杀死Android应用程序...
2020-09-23 18:39:40任务管理器有些任务杀不死If you heavily use your Android phone, you’ve probably come across a situation where a buggy application wasn’t working quite right, but there was no way to exit from the ... -
VS+QT设置应用程序图标到任务管理器
2019-01-23 16:40:35测试后发现编译的exe程序并没有带上图标,且应用程序打开后,系统状态栏的图标时而有用,时而没用,windows任务管理器也不显示应用图标。 改进方法: 添加RC文件 在RC文件内添加语句 IDI_ICON1 ICON "... -
Win10 任务管理栏 太宽问题的解决 及应用只有小图标没有图形化界面问题解决
2020-12-14 12:16:011、在任务栏右键,取消任务栏锁定(如果之前没有锁定过跳过该步骤) 2、上下拖拽任务栏宽度到...win+D两次即可解决(第一次是收起所有的应用,显示桌面,第二次是从显示桌面到显示所有应用,此时所有应用都能显示了) ... -
任务显示与隐藏,任务管理器中应用程序显示与隐藏,悬浮窗任务栏显示 效果...
2014-09-30 18:48:001. 隐藏底部 “任务栏图标”和 隐藏 “任务任务管理器——应用程序—任务” ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW); ShowWindow(SW_HIDE); 此上为:迅雷悬浮窗任务栏显示效果。 2. 显示... -
Schedulerx2.0应用级别资源管理和任务优先级
2020-05-13 22:51:16作为一套分布式计算引擎,用户经常需要资源管理的需求,当前schedulerx仅仅支持单个任务实例的管控(比如单机子任务并发数、拉模型全局子任务并发数等),这一点是远远不够的。比如某一时刻大量任务要触发,用户资源... -
在任务管理器关闭应用程序之后,程序会收到什么事件么?
2016-06-08 03:33:03在任务管理器关闭应用程序之后,程序会收到什么事件么?怎么记录下程序被非法关闭的操作? -
android应用退出后在任务管理器隐藏
2017-02-27 09:32:28许多人有个习惯,就是长按android的home键,然后查看刚才使用的应用。有一些隐藏应用我们不愿给用户显示: So,只要在AndroidManifest.xml中的主Activity中添加这句话。 android:excludeFromRecents="true -
获取 Windows 任务管理器中应用程序和进程 任务
2008-12-08 12:16:00获取应用程序:#pragma once #include "afxcmn.h" /*判断窗口是否是正常运行还是未响应的*/typedef BOOL (WINAPI *PROCISHUNGAPPWINDOW)(HWND);typedef BOOL (WINAPI *PROCISHUNGTHREAD)(DWORD -
NETCF开发之POOM应用开发——任务管理
2006-09-08 09:27:00本文介绍任务管理这种PIM功能的实现。 从开发人员的角度来看,使用任务可能出于多种不同的原因。例如,可以在Pocket PC应用程序内通过任务的方式记录某个项目中等待完成的后续工作。Pocket PC设备上的任务应用程序... -
Windows 任务管理器如何确定应用程序"没有响应"
2008-12-29 19:52:00我把它与WindowsNT的任务管理器进行了比较,发现标准的任务管理器显示应用程序的状态(正在运行或者没有响应)。标准的任务管理器发送(通过SendMessageTimeout函数)一个消息到主应用窗口,如果函数调用失败或者... -
Schedulerx2.0支持应用级别资源管理和任务优先级
2020-04-08 14:52:16作为一套分布式计算引擎,用户经常需要资源管理的需求,当前schedulerx仅仅支持单个任务实例的管控(比如单机子任务并发数、拉模型全局子任务并发数等),这一点是远远不够的。比如某一时刻大量任务要触发,用户资源... -
如何让程序不出现在任务栏和任务管理器“应用程序”中?
2009-09-07 10:30:00不出现在任务栏procedure TForm1.FormCreate(Sender: TObject);begin SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);... 不出现在任务管理器“应用程序”中 Application.Title := ;
-
windows启动nacos启动失败
-
响应式编程入门与实战(Reactor、WebFlux、R2DBC)
-
2021 PHP租车系统 毕业设计 毕设源码 源代码使用教程
-
Y470_Y570 2.12 bios 64位
-
libFuzzer视频教程
-
仿芝麻信用示例Demo.zip
-
用微服务spring cloud架构打造物联网云平台
-
2021-02-25
-
numpy-1.16.5-cp36-cp36m-win_amd64.whl
-
FTPUpload.rar
-
自动化测试Python3+Selenium3+Unittest
-
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
龙芯生态应用开发基础:C语言精要
-
2021年 系统架构设计师 系列课
-
一张完整的中国亲戚关系图
-
基于Qt的LibVLC开发教程
-
PPT大神之路高清教程
-
Liunx 优化思路与实操步骤
-
克服范式,达成真正的敏捷
-
vscode使用教程.xmind