花式手动安装 Win7——无阉割完整安装64位Windows7仅需7G硬盘空间!

作者:V君 发布于:2017-3-6 4:41 Monday 分类:折腾手记

TL;DR: 

在 PE,NTFS 格式化分区启用压缩(可选), 7z 解开 install.wim\4, 激活分区并 bcdboot.

走完安装流程,去掉休眠文件和页面文件.

安装前启用 NTFS 压缩能让装完以后只占用 7G 多一点的硬盘空间.


扯一扯:

最近又给自己弄了台机器(你特么几台机了?), 需要装系统.

听说NT6安装工具会有奇怪的东西跑进系统, 所以尝试着自己手动进行.

还意外地发现安装前设置压缩能很给力 乂目


详细步骤:

●准备系统盘ISO

  不扯,MSDN你懂得 (´∀((☆ミつ

准备PE

  装系统首先要准备一个对应 32/64 位的 PE, 因为稍后要执行 bcdboot 设置启动引导.

创建一个分区用来装系统

  不想破坏原有系统的情况下,可以将系统盘收缩,在紧随其后的空间建立一个主分区.

  格式化成NTFS,并激活. 然后重启再次进入PE,确保激活的分区被识别为C盘.

●解开系统包

  用 7z 打开系统盘里的 install.wim 按需找版本目录, 一般情况下旗舰版是 4, 可参考xml

  把里面的东西解压到根目录,启用压缩能省下不少空间(貌似还能缩短wim解包时间?)

●设置引导

  开个命令行,转到 windows\system32 目录, 执行 bcdboot c:\windows /s c:

  然后重启就能进入Sysprep流程

●后续优化

  要达到装完以后只占7G硬盘空间, 需要禁止休眠 powercfg -h off

  还要去掉页面文件, 但还是推荐留下 512MB 供辅助诊断

标签: Windows7 系统安装

评论(0) 引用(0) 浏览(1337)

Mono Android WebView 应用之 JavascriptInterface

作者:V君 发布于:2017-2-26 18:45 Sunday 分类:折腾手记

上次咱初体验了 Android 的 WebView 随着使用中发现, 

原来这货也可以把原生对象实例,作为接口丢进 js.实现在网页脚本直接调用原生功能.

只是方式有点坑, 不过咱还是填上了. 能够挺愉快的使用.


查阅了许多资料,具体限制为只能将字符串作为脚本调用的返回值.

如果你用字符串数组,那么 js 调用端会得到 undefined.

如果被调用的方法发生异常, 则整个应用挂掉...

接下来泥应该知道咱会怎样解决了吧.


是的, 用 JSON 包裹参数和返回值,并且封装调用结果(成功与否、异常信息).

只是, 没想到一直使用的 JSON 库 Newtonsoft.Json 在 2.2 版安卓上并不支持.

只好再找一个叫做 fastJson 的实现, 做个条件编译分别使用了.


到这里, 剩下的就是各种花样展开了.

如果每次都写完参数和返回值的 JSON 转换, 那要不要太呛?

于是,咱们需要封装, 同时也要自动生成 js 的 function stub.


就酱: 一个未经性能优化的初版封装出来了.

继承它,添加公开实例方法,打上 JsApi 特性.

将实例打进 WebView, 同时把 stub 打进 Razor 模板. 定义一个标识符存放输出的 stub.


这样就可以愉快的从 js 直接调用原生功能辣!

标签: 软件开发 移动端 Android HybridApp

评论(0) 引用(0) 浏览(1755)

Mono Android WebView 应用初体验[Updated]

作者:V君 发布于:2017-2-16 20:38 Thursday 分类:折腾手记

Hybrid App 这个技术诞生的时间很早, 到现在已经颇为成熟.

虽然略有所闻, 也在 Windows forms 上面用 CEF 玩得很溜, 但还是没去实际接触开发.

由于最近有想折腾的玩意儿, 况且公司在不久之后有需要做APP的可能.

就开始去接触吧!

 

略去安装开发环境的过程, 打开 VS2015. (当然要用我大井来写, 做什么都要用我大井才爽啊)

首先新建 WebView 项目, 然后观察. 


和常见的 Android 项目一样, 也见到了熟悉的 Assets Resources MainActivity 这些玩意儿.

不过多了 Models 和 Views 这两个文件夹.


MainActivity 的模板初始化代码也从按钮事件处理, 替换成了 WebView 视图初始化.

还没来得及纠结如何实现页面与原生功能交互时, 已经能看到模板类 HybridWebViewClient 了.


虽然方式有点土, 只能通过请求拦截来实现调用原生代码.

但这已经满足了 APP 开发的最低要求.


那问题来了: (挖掘机哪家强) 跑在手机应用的网页要怎样调试脚本呢?

我们知道 Chrome 的 F12 很好用, 但 APP 能这样整吗?

答案是可以! 咕狗关键字 Android Web View Debug 第一条就找到了官方文档.

官方文档也是先 TL;DR 地列出3个粗略的步骤, 然后再对其逐一详细解释.


1) 启用 WebView 调试属性.

2) 开个Chrome浏览器访问 chrome://inspect 这个 URI.

3) 在页面上列出的视图列表上找到你的应用对应视图, 点击 inspect 链接.


山口山! 一个 F12 工具蹦出来了! 鼠标在元素列表上划过, 手机端视图也和浏览器一样高亮!

整个就像是 Chrome的 F12 一样! (´∀((☆ミつ 本来这就是 Chrome 的 F12! 


初体验结束. 接下来可以愉快地写 APP 辣!


Update:

发现要做到这样调试还有一个前提, 也就是需要科学咳咳. 不信你就看 → git/issues

在另一台机做了同样操作,发现白屏了,咕狗一下才知道原来只要这样搞.

因为一直都有自动电梯, 所以没察觉到有这要求...

标签: 软件开发 调试技术 移动端 Android HybridApp

评论(0) 引用(0) 浏览(1503)

解决Win7更新服务(wuauserv)占用过多内存和CPU——总算治好顽疾

作者:V君 发布于:2017-1-30 15:12 Monday 分类:折腾手记

TL;DR: 安装这两个补丁(KB3050265)(KB3102810)然后重启.

听我扯扯:

一直都被这个问题困扰着。
Windows 7更新服务一旦犯病就会变得很占内存和CPU。
内存小的机器就会因为交换虚拟内存耗尽IO,把各种操作响应变慢导致整个体验变得很糟糕。

只能通过手动停止其服务才能消停一阵子。又不能把更新服务彻底禁用。。。

今天帮人重装系统,打补丁时就犯这毛病了,全新的系统也闹这样,真受不了。
咕狗,找到了这个帖子。然后药到病除!快来点赞!

标签: Windows7 故障解决

评论(0) 引用(0) 浏览(2846)

软件开发辅助工具 - 将EntityFramework实体文档注释搬进数据库(MSSQL)

作者:V君 发布于:2017-1-9 21:22 Monday 分类:我的应用

TL;DR
[ 本体 ][ 源代码 ]

效果:生成SQL用于更新表和字段说明.
用法:直接运行,在弹出的打开对话框选择定义实体的程序集. (记得启用XML文档生成)
限制:尚不明确.
环境:需要.NET 4.5.2以上, 作为开发者不需要啰嗦更多.


 

扯扯:

 

点击查看原图

 

点击查看原图

 

虽然用上Code-first之后各种便利,然而当需要生成数据库注释用来给运维之类的提供方便时.
咕狗了之后发现并没有现成的工具,懵逼了一会儿. 又查了一下更新数据库注释的方法.
嗯嗯 MSSQL 比 MySQL 做起来方便多了. 于是这个小工具就诞生辣.


首先将打开对话框指定的程序集载入

 遍历所有类 -> 筛选出有[TableAttribute]特性定义的类
  遍历属性 -> 筛选出可读可写的非导航属性
 收集表名,成员名(如果指定了Column特性,将取其指定的列名)

 按对应定义抓取XML文档里的注释

 基于上述信息构建数据库更新SQL脚本. 
  (由于M$SQL新增和更新的分别是两个存储过程, 于是简化处理, 先新增再更新. 
   ((报已存在的错误提示无视掉就可以了 _(:з」∠)_

 将SQL输出到窗体控件

由用户自行丢进SSMS执行,结束.


做这东西过程中遇到了几个有趣的现象, 尽管不是很高深.


0) 嵌套类全名用加号分隔类名
 但是XML文档中仍然是用点分隔类名

1) 基类在不同的程序集
 这时候就要按属性信息的定义类(DeclaringType)去找程序集对应的XML来读取注释了

2) 继承来自泛型的成员
 在XML中泛型以"MyGenericClass`1"的方式表示,
 需要区分泛型然后获取泛型定义(GetGenericTypeDefinition)
 再读取全名才能得到XML中的名字格式,
 如果直接取全名将会得到类似"MyGenericClass[Int32]"的格式.



标签: 软件开发 C# 数据库 ORM

评论(0) 引用(0) 浏览(1515)

Powered by emlog 去你妹的备案 sitemap