分类目录归档:不是技术

Notepad++里面的正则

其实用起来还好,唯一需要注意的是对GB*编码的支持不力,最好转成UTF-8再进行操作。

跟以前整理的UE里面的正则是类似的。

学到一些新的技能,因为在文本分词统计中发现一些名词出来的数量太少,于是找了找原文,发现原文里面既有简体也有繁体,另外还有错字别字。哪吒写成那吒之类。于是数据统计出来便失真了。

但不细看原文很难知道它哪里写错了,于是要用正则来检索。

比如我搜“八臂哪吒”要比“八臂”要少很多,但是后者肯定不是一个常用的词语,如果不在原文中查找具体位置中出现的问题,就要这么搜:“八臂(?!哪吒)”

这样就很快定位出不一样的八臂所在。

innerHTML和value

写了一个textarea,用js去提取内容。

开始的demo里面是用getElementById().innerHTML去拿,发现是OK的,后来改写页面,textarea里面的内容由用户自己修改,然后点某个href去触发js函数再去取,就不行了。

而换IE是好的。

查查了一个小时左右,才定位到innerHTML的不足。Chrome里面,这个textarea的innerHTML如果没有触发浏览器的刷新事件,那么不会更新,反复取只得上一个值。

这个刷新发生在什么时候?我估计可以是js内部修改,也可以是浏览器其他事件发生,比如submit等。

回到这个问题本身,如何让js在chrome中及时取到正确的内容,搜了一下,改成用value去取就OK了。

 

用户研究

今天翻CSDI的PPT,看到有产品经理相关的内容,其中一页列举了在对待新技术层面上的五种用户类型。

其中有 技术狂热者,他们一般是创新者,开创一些新的技术并可能产品化,但另一方面,对市场需求并不是那么敏锐,因为注意力集中在技术创新上了。

第二类是有远见者,他们一般是技术的早期采用者。

第三类是实用主义者,他们一般是新技术起来后的早期使用大众。

第四类是保守主义者,他们一般是等新技术已经广泛铺开后的后期使用大众。

最后一类是怀疑者,他们是落后于技术趋势的。

如果一个公司的核心管理层,完全处在保守主义者和怀疑者掌控之中,那么基本上,已经与创新没有多大关系了。此类型公司的策略,更多的是利用后发优势以及平台优势,在市场上陆续消灭那些根基不牢的竞争对手。

 

Soot的过程

soot Phrases

Soot的标准过程无非就是从Classes到Jimple Bodies再到Baf Bodies再到Classes的过程。

先看这个是必要的。理解了Soot的过程,才知道在哪里插入修改,然后又达到些什么目的。

主要参考文章:Packs and phases in Soot(2008) 

从jb开始:所有的非系统方法都有jb,而jb生成的过程是不可修改的,可以理解成这是一个忠于原著的内容翻译过程。

下一步是cg:生成整个调用图。此阶段的修改适用于调用关系分析,以至一些污点传染分析等。

再下一步是whole program:注意到wjtp->wjop->wjap和后面的jtp->jop->jap是类似的,只是前者针对全局进行处理。wjtp的过程的修改适用于加入inter-analysis(全程序范围分析),可用于soot.Main里面修改一些context?猜测的。wjop的过程修改适用于全局替换或插入?wjap,不清楚。

w-*的过程默认是不打开的,要使用的话需要显式指定soot启用w过程(-w)。

而jtp,用于加入intra-analysis,在方法中增加一些锚点等。默认打开。

jop,默认不打开。可用于混淆代码?猜测的。

jap,默认打开,但内部所有过程是关闭的。需要程序中根据需要使能。

 

持续更新。

 

 

在Soot之前有分析过的一些工具

这里列举一下,就当是备份了。

首先看的是QARK,基于python和JRE1.6的一个工具,运行在OSX和*nix上,(值得留意的是,在最近的查找中,windows上的支持越来越少了),主要是漏洞检测工具。类似的Java代码漏洞检测工具不少,但不是我想要的。我想要的是一个容易理解和修改的污点检测工具,用来跟踪敏感数据的流向。

SPARTA/DARPA,一个大学项目,要得到源代码,然后依赖于人工添加注释的方法得到信息流,source(源),sink(流向)的数据。提供一个检查框架,依赖于半自动的方式检查APK里面的malware风险。由于是人工参与,所以成本控制方面并不理想。需要a.训练相关的人检查,b.需要开发者提供代码并有效注释。

继续阅读

Soot初入

很抱歉的是很久很久没有做过Java工程了,加上Soot又是一个历史很悠久的项目,而用者也不多。

这是一个反编译并重新优化/修改/混淆代码的Java分析框架。

以下是一些Java的基础,哭。

JAVA_HOME

CLASSPATH,用于jvm运行时查找相关class的,如果当前路径查找,必须加入”.”。相关的.jar如果不想-cp(classpath的缩写),也必须加入CLASSPATH。

有包路径的class,直接查找是不行的,要构造个包……

继续阅读

自建CA的考虑

从业务闭环的角度思考,需要有CA (Root)的存在,然而使用商业的CA服务,按证书收费,这不是普通体量的公司能承担的,而IoT设备的数量远超网站需要,因此物联网公司直接去买海量的证书也不划算。

因此,必须是自有的CA服务,然而,到底是托管型合适还是自建合适呢?

就目前国内的情况来说,各种托管型的CA产品也有,只是不清楚其质量,以及面向全球访问的能力是否足够?因此自建其实也是合理的。

自建的需要考虑一些规格上的问题,比如:

CA软件系统:自己开发还是OpenCA或其他?

操作系统

服务器配置

数据库的选择,或是否支持多种数据库

目录访问,LDAP?AD?

热备方案

日志方案及多级规格,签名访问

审计的需求

支持何种HSM?

CA业务系统的技术方案

支持的证书量规模。。。。。。这个取决于业务的规模,如果使用可扩展的方案,则技术难度会稍大。

—————-

CA系统的物理环境(机房等)

—————-

CA系统的管理制度,运维规则

about fingerprint scanner

指纹器/模块其实一般是输出一个512×512的点阵图像的,可能是二值的也可能是灰度的。

对于输出的要求一般有认证的标准。目前看到的,FBI PIV IQS(Image Quality Standard),关于图像质量的认证,BSI(British Standards Institution)认证,Indian STQC认证。

从兼容性考虑,也有FIDO方面的规范。

中国国内的是GB/T 26237.8-2014,但估计并不强烈进行推动。

指纹器收集指纹图像后,后台需进行压缩保存,一般是JPEG/WSQ/EZW等格式,WSQ为FBI所用,EZW是中国公安部所用。WSQ这个算法的使用也是需要认证的。

这么看下来,如果是基于二值/灰度图像的格式,指纹模块应该是比较通用的技术才对。

 

2017年第一飞

终于有这些强度不大的出差了。是因为杭州办公室开年会,因而获邀过去参加。是不是已经落到可以刷脸当工作的地步了?慢慢想开了就好了。

杭州办公室,自从我09年参与其技术架构设计以来,已经7年多了。现在的技术还是沿用当年的基础,一方面是当年做得好,另一方面市场日趋成熟,因为对技术革新的要求反而不高,反过来,也对创新人才的需求不足,团队慢下来,也就难以承载革新的任务了。

还是一个技术和市场上不错的范本。

行业店的系统

这两年接触各种行业的软件供应商,有的是零售,有的是餐饮,有的是美容美发,有的的烟酒供应,各有特点。

总的来说,功能点的分类如下:

  1. 预订(Reservation or Booking),一般我们理解的预约,就是某个时间点某个服务资源被某位顾客所占用。由于行业众多,广义的预订服务供应商也出现了,比如美团、移动服务等,所以作为系统的一部分,除了自己通过电话、短信、网站、顾客到店接到的预订需求,也应该对接第三方预订服务供应商的接口(提供API给他们调用)。另外,有些预订会产生周期性的服务(比如订报纸、订牛奶、或者每周六早上订早茶座),是一次预订产生多次记录,还是一个定期任务每周提前产生相关记录,这就是设计上的差异了。有些行业在某些国家是主要依赖于预订,而在某些国家又是主要依赖于walk in的顾客,比如美容。因此预订系统如何平衡这样的差异,是不是一个预订功能也覆盖walk in的需求。
  2. 选购服务(Ordering),这里有只在店内产生的订单,上面预订只是预订了人或资源(比如订了一张四人桌),并未预订具体的服务内容,这里就需要到店后再进行下单了。另外一些针对具体行业的预订服务也会包括有选购服务,这需要店家将自己的服务清单上传,并制定相关的营销策略。而店家提供的网站也可以提供选购服务,而这跟预订服务一样,也会产生运维、内容管理上的开销。
  3. 支付(Payment),一般预订不会产生费用,但选购会,这时候要保证商家的利益,可能需要顾客提前支付订金,或者提供选购服务的第三方平台进行担保。如果是商家自己的网站/App上的选购就需要线上的支付功能,以保证顾客能提前支付订金。而当顾客到店消费结束后,则需要支付全款或者尾款。这时候就需要线下的各种支付方式,比如现金、银行卡、预付卡、手机支付等。
  4. 资源管理(Resource Management),对于有形的资源均应提供管理功能,比如餐饮店的台面、服务员,美发店的洗发工和发型师,以美发店为例,有工作单安排(顾客——发型师——洗发工,服务时间),有人员排期等。而对于一些工作室的管理来说,还需要有Booth Rental的方式,比如顾客约一个独立发型师,租用卡位开展工作。
  5. 忠诚度(Royalty),
  6. 会员(Membership),这两者其实是类似的,为了简化工作,可以为每一个客户建立会员档,以此为基础实现忠诚度管理,会员积分等等。

总的来说,各行各业的适配系统虽然各有各坑,总是可以分解并实现的,一个通杀的系统并不存在也不可能存在,但也不必被行业前辈所吓倒。因为过去所做的很多系统是不合理的,总有被取代的可能。