C# Interop PPT Microsoft Graph 图表使用经验
作者:V君 发布于:2013-10-28 16:56 Monday 分类:挖坑经验
标签: 软件开发 C# Office Interop PPT MicrosoftGraph Winform
如何兼容各种浏览器“复制到剪贴板”?——略恶搞但很实用!
作者:V君 发布于:2013-9-29 12:10 Sunday 分类:挖坑经验
折腾Chrome复制到剪贴板,又不想用Flash什么的
依然是咕狗,然后妥妥的堆栈溢出
http://stackoverflow.com/questions/400212/how-to-copy-to-the-clipboard-in-javascript
function copyToClipboard (text) {
window.prompt ("Copy to clipboard: Ctrl+C, Enter", text);
}
见到这凶残的prompt用法,第一反应就是笑尿了
但还是很实用的 -- 这个回答得到了400个赞
尽管只能复制一行文本, 但足以应对大部分情况啦!
标签: 软件开发 javascript Chrome
令人感到十分恶心的国产垃圾软件“繁衍”行为
作者:V君 发布于:2013-9-23 22:24 Monday 分类:心情
帮额娘维护电脑。
由于在我强烈建议下不使用周数字,让许多垃圾软件有机可乘。
首先是桌面一大堆各种垃圾插件,XX日历 XX新闻(右下角弹窗) XX启动。
恶心行为之一:
“根本不知道怎么来的”
-- 目测是各种安装向导最后一步的默认打钩
小白们总是一个劲的下一步,这已司空见惯,
常见的捆绑都很明显,把选中取消就可以了。但仍默认选中仍然是比较恶心的。
有点良心的捆绑会有明显的“跳过”按钮,如SmartDefrag的安装程序
(不知道现在有没有继续秉承这良好的作风,反正咱用过的都有明显的跳过按钮),
这个可以赞扬一下,一边良好的帮助推广,一边不给用户添麻烦。
-- 主动各种诱导、恐吓用户(静默)安装
老周、企鹅之流很爱干这事,右下角弹出个小窗口,小白们不仔细看就点确定。
结果就静默安装了,这就是小白们所说的“我没有安装啊?这怎么来的?”
这行为是罪不可恕的,主动来找用户麻烦,天杀的!
恶心行为之二:
“越卸载越多”
-- 卸载向导最后一步,窗口底端不显眼的“推荐”
通常有点良心的垃圾软件通过卸载程序都能拔掉插入系统的组件,
尽管不能完全删完文件,对系统性能已经影响不大。
但一些黑心的垃圾软件厂商玩起了“回马枪”,在卸载向导完成前加入3~4个“推荐”,
在白色的背景向导对话框底部显示不显眼灰色的字体和复选框,并默认选中。
我™第一次卸载没注意就被坑,卸载掉XX日历后立马个冒出4个还被立即启动弹出窗口!
第二次卸载盯准每个角落不放过,总算是卸载干净了。卸载过程中就有两个有【行为二】!
假如“稍稍懂一点的小白”进行了卸载,只会越来越糟……
卸载掉之后用SystemInternal::AutoRuns工具清理自启动项以及多余组件,
最后用SmartDefrag整理碎片。整完之后重启一下应该能流畅许多。
哎-- 拿什么来来拯救你,国产软件!
[重口]蜘蛛vs臭虫
作者:V君 发布于:2013-9-1 20:05 Sunday
内详, 不适勿入构思做一套自己的wiki系统 (元芳快来告诉我你的看法!)
作者:V君 发布于:2013-8-31 18:17 Saturday 分类:折腾手记
V君老早就想建一个属于自己的wiki了,
用于刊登各种电脑故障解决方法和操作技巧以及各种概念提纯什么的
因为V君人际圈中太多小白, 每次都要从头开始解释, 这让v君略不耐烦
你可能会问为什么要自己做?
因为V君的树莓派服务器跑不动MediaWiki... V君很喜欢MediaWiki的页面布局
查找对比了很多个wiki引擎都不满意
干脆自己捏一个吧! 使用完全静态页面, 每逢内容更新就生成一遍.
概要设计:
+ 自己组织的内容
* 使用数据库或者直接打散到文件系统
* 维基百科有的定义可以直接外链引用
+ 使用以上内容生成静态HTML
* 仿照MediaWiki布局
+ 贡献内容
* 开设一个投稿入口, 审核后采用
- 详细设计 -
预定义目录结构
WebRoot
|-resources //公共资源
...|-theme.css
...|-common.js
...|-sprite.png
|-index.html //首页(手动指定特色条目/分类导航/最近更新)
|-entry1 //条目1
...|-index.html //条目1内容
...|-image.jpg //条目1附件
|-entryn.html
...|-index.html
...|-image.jpg
实体:条目
名称
标题(消歧义)
内容(exRTF)
附件(dic[key,mime]=blob)
分类(NullableRef)
最后编辑时间(DB/allFT)
实体:分类
名称(唯一)
简介(exRTF)
父类(NullableRRef)
定义:exRTF
创造一种类似wiki标记语言的轻量级富文本格式
语法参照UBB或直接裸写HTML
最终生成HTML达到wiki条目页面效果
细节:
引用附件
[att key]
链接
条目内链,照搬
[[xxx]]
外链,照搬固定
[http://xxxremark]
特定目标图标
[wiki-ref[name]]引用维基百科条目
目录,照搬自动提取到头部 先不做还不知道用不用得上
==xxx==
===xxx===
底部注释(上下跳转) 先不做还不知道用不用得上
[summary-0[xxx]http://]
维护
找被引用但出未撰写的条目以补充
数据库
<x>SQLCE
<!>不跨平台
<*>FSDB
文件夹实体
方案1
ini
<!>WINAPI不跨平台
<!>自行实现略不易
exRTF
方案2
打散属性到文件(kvp)?
<!>注意IO/WA
<*>架构扩展十分方便
<?>SQLite
略(貌似没什么问题,只是扩展略麻烦)
经过许多考虑,选择采用打散文件系统的形式存储已整理的资料
应用程序根目录
|-cwBaseLib.dll //共用功能类库 cw = Coder Wiki
|-cwGenerate.exe //主程序 - 完整生成
|-cwPreview.exe //预览程序 - 关联.wiki-entry 文件实现双击启动
|-cwMaintenance.exe //维护程序 - 代劳各重复活~
|-templates
...|-entry.template //这里存放模板吧
...|-(略) //尽管还可能有更多东西, 用了打散就方便扩展~
|-categories
...|-category1
......|-name.kvp //键值对, 存储分类名称 可选-不存在时使用文件夹名称
......|-parent.kvp //同上, 存储父类名称, 可选 没有就当做root级分类
......|-summary.exrtf //同上, 存储简介, 使用前面说的exRTF格式
|-entries
...|-entry1
......|-entry.wiki-entry //空文件, 可以双击预览生成结果
......|-title.kvp //键值对, 存储标题, 可选-不存在时使用文件夹名称
......|-body-content.exrtf //主体内容, 使用前面说的exRTF格式
......|-attament.lst //附件列表, 使用类INI格式 key=mime
......|-key.attachment //附件, 可以是任意文件供主体内容引用
......|-type.kvp //同上, 存储所属分类名称
......|-xxx.kvp //还可以轻松地增加实体属性
...|-entry2
......|-同上结构
|-output //输出文件夹, 见上面预定义的结构
...|-index.html
...|-entry1
......|-...
|-output.7z //生成内容的打包 方便部署到服务器
内容解析/HTML生成器作成一个类库
这货供主程序、预览程序以及维护程序调用
主程序(控制台):
双击弹出控制台显示进度, 生成内容到输出文件夹, 完成后自动打包
预览(也是一个控制台, 懒得拖控件!):
双击wiki-entry文件, 生成选定内容到输出文件夹, 直接打开浏览器呈现结果
当然, 还有各种完整性检查:
被引用的附件不存在
所属分类不存在
维护(还是一个控制台?加参数呗~)
数据完整性检查/修复
繁琐的重复活(如类名更改,批量转移,找出未撰写条目等等)
这堆文件夹结构难记?其实可以集成到右键菜单嘛!
向SVN/git学习,右键初始化wiki库
自动创建目录结构~~
元芳你怎么看?
blogger
Google Web Translator
热门日志
随机日志
最新日志
最新评论
- V君
@Quartz:(出现)... - Quartz
怎么不见人了呢... - V君
@Soar:DHCP 协议相... - V君
@Soar:当然是非... - Soar
@V君:谢谢 有空... - Soar
搞一个 1230v3+B85... - V君
@Soar:另外,也可... - V君
@Soar:iscsi服务端... - Soar
难怪这么卡,尤其... - Soar
clone了源码,提示...
分类
存档
- 2024年5月(1)
- 2023年7月(1)
- 2023年5月(1)
- 2022年11月(1)
- 2022年10月(1)
- 2022年9月(1)
- 2022年8月(1)
- 2022年7月(1)
- 2022年6月(1)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(1)
- 2022年2月(1)
- 2022年1月(1)
- 2021年12月(1)
- 2021年11月(1)
- 2021年10月(1)
- 2021年9月(1)
- 2021年8月(1)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(1)
- 2021年4月(1)
- 2021年3月(1)
- 2021年2月(1)
- 2021年1月(1)
- 2020年12月(1)
- 2020年11月(1)
- 2020年10月(2)
- 2020年9月(1)
- 2020年8月(1)
- 2020年7月(1)
- 2020年6月(1)
- 2020年5月(1)
- 2020年4月(2)
- 2020年3月(3)
- 2020年2月(1)
- 2020年1月(1)
- 2019年12月(1)
- 2019年11月(1)
- 2019年10月(1)
- 2019年9月(1)
- 2019年8月(2)
- 2019年7月(1)
- 2019年6月(1)
- 2019年5月(1)
- 2019年4月(1)
- 2019年3月(1)
- 2019年2月(1)
- 2019年1月(2)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(3)
- 2018年9月(4)
- 2018年8月(6)
- 2018年7月(4)
- 2018年6月(1)
- 2018年5月(2)
- 2018年4月(2)
- 2018年3月(3)
- 2018年2月(1)
- 2018年1月(1)
- 2017年12月(1)
- 2017年10月(2)
- 2017年9月(1)
- 2017年8月(2)
- 2017年7月(1)
- 2017年6月(5)
- 2017年5月(2)
- 2017年4月(2)
- 2017年3月(3)
- 2017年2月(2)
- 2017年1月(2)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(3)
- 2016年9月(4)
- 2016年8月(2)
- 2016年7月(4)
- 2016年6月(3)
- 2016年5月(1)
- 2016年4月(4)
- 2016年3月(3)
- 2016年2月(1)
- 2016年1月(5)
- 2015年12月(4)
- 2015年11月(5)
- 2015年10月(1)
- 2015年9月(6)
- 2015年8月(4)
- 2015年7月(1)
- 2015年6月(6)
- 2015年5月(3)
- 2015年4月(3)
- 2015年3月(2)
- 2015年2月(1)
- 2015年1月(3)
- 2014年12月(1)
- 2014年11月(1)
- 2014年10月(1)
- 2014年9月(3)
- 2014年8月(1)
- 2014年7月(1)
- 2014年6月(1)
- 2014年5月(3)
- 2014年4月(1)
- 2014年3月(1)
- 2014年2月(2)
- 2014年1月(1)
- 2013年12月(2)
- 2013年11月(2)
- 2013年10月(1)
- 2013年9月(3)
- 2013年8月(14)
- 2013年7月(7)
- 2013年4月(1)
- 2013年3月(4)
- 2013年2月(6)
- 2013年1月(6)
- 2012年12月(8)
- 2012年11月(6)