技术

发布者 API(Publisher API)

早上简单做了一些调研

1.因为 dup2 一直用的是 Drupal,所以先从它家的BlogAPI看起:https://www.drupal.org/project/blogapi 、https://www.drupal.org/documentation/modules/blogapi(2013年更新) 。BlogAPI Module 支持"Blogger API (outdated), MetaWeblog API, and most of the Movable Type API",基本上可以认为这些 API 对应的 Publisher 也不再推广
2. Drupal 的 Blog API 是基于 XML-RPC 的,安全问题不少。现在的潮流是 OAuth + RESTful API,历史上也有 Content APIRESTful Web Services 这样的项目;到了 D8 时代已经全面在底层支持 RESTful,慢慢的应该会有一些成熟的项目出来
3. WordPress 现在已经有了一套很全面的 API,不错!https://developer.wordpress.com/docs/api/
4. Google Blogger API 升级到了 3.0:https://developers.google.com/blogger/
5. Medium,就在 2 个月前发布了 API!!!The Medium API is now open to everyone
6. 意外的发现了 Apple News 也有了 API,好大的一盘棋:https://developer.apple.com/news-publisher/ ,而 Drupal,则支持了这个 API https://www.drupal.org/project/publish_to_apple_news

7. 国内的博客托管平台,研究了一下 CSDN,发现已经失效,顿时失去了兴趣...有时间再调研国内的各个所谓 Medium Platform 的情况吧。现在的感觉是微信公众号的素材 API 可能还稍微靠点谱

Topic: 技术

调试华为荣耀6 Lollipop(EMUI 3.1)中 framework 相关功能

关于 Lollipop 下如何处理 boot.oat, services.odex, services.jar 的方法可参考上一篇http://dup2.org/node/1625

因为我们没有华为 framework 的源代码,只有 google 自己的 AOSP tree,不过不要紧,只要华为不是丧心病狂的对 AOSP framework 做了大幅度的修改,经过简单的 patch 也能达到我们的目的

首先拿到华为原厂ROM里面的 boot.oat 和 services.odex,在 /system/framework/arm 目录下;经过一番处理,反编译 samli 文件到 services 目录

然后在 AOSP tree 的 5.1.1 最新分支(写作本文的时候用的是 android-5.1.1_r14)编译,按上述步骤换个工作目录同样处理 WORKING_DIRECTORY/out/target/product/generic/system/framework/arm 目录下的 boot.oat 和 services.odex

视需要 patch 原厂的 samli 文件,然后打包成 classes.dex,压缩为 services.jar,覆盖机器上 /system/framework/services.jar,重启

祝你好运

Topic: 技术

工程师的四个层次

1. 执行/代码
2. 业务/模式
3. 工程/项目

4. 技术运用游刃有余,可以分点精力出来做其它事情了

Topic: 技术

PPTP VPN 服务器上需要把 SYN 中的 MSS 调整成 1320 才能顺利上网

Android 上 pptp 的 MTU 是 1400(https://www.zeitgeist.se/2013/11/26/mtu-woes-in-ipsec-tunnels-how-to-fix/)

因此抓包可以看到 Android 发起的 SYN 都是把 MSS 设置成了 1360

but 服务器上 ppp 设备的 MTU 是 1396,1400的包无法通过这个设备,因此我们需要修改出去的包的 MTU 为1356才能正常工作。网上很多关于 PPTP 的 MSS 设定都提到了 1356 这个数值。

考虑到传输中避免不了本地有POST大量数据的可能,因此还得把3WHS回来的 SYN/ACK 里面的 MSS 值也修改成1356,否则Android自以为双方的min-mss仍然是本地的1360呢

上面说的都是理论,现实则是即使 MSS 设置成了 1356,仍然有些服务是访问不到的,比如 google play。晚上抱着试试看的心情,逐步减少 MSS,最后发现改到 1320 的时候,似乎访问全部正常了。

考虑到 1320 = 1396 - 20(IP Header) - 16(GRE header) - 40(IP+TCP),难道这种算法才是正解?最开始的减40都是错的?对这个问题暂时处于知其然而不知其所以然的状态...

Topic: 技术

再次掉入 MTU 限制的坑

买了一个年费12刀的OpenVZ的主机用于翻墙,ssh/socks5速度飞快,在手机上通过PPTP翻墙的方式却碰到了麻烦:浏览器能上 facebook,访问 twitter 则是白屏。。。而且 Twitter App 访问是没有任何障碍

但是我上一个 VPS 上架设的 PPTP 应该是能工作的...非常不解. 然后在电脑上拨入 PPTP ,打开浏览器的开发者窗口观察到是访问一个 css 文件的时候被阻塞住了..改用socks5 proxy一切顺利,立刻想到了臭名昭著的 MTU 问题

。。。果然一搜索一大堆结果:https://www.google.com.hk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#newwindow=1&safe=strict&q=pptp+vpn+mtu

最终在 VPS 上使用如下命令搞定

iptables -A FORWARD -p tcp --syn -s 192.168.0.192/29 -j TCPMSS --set-mss 1356

192.168.0.192/29 是配置 /etc/pptpd.conf 里指定的分配 IP 段

Topic: 技术

SOHU 企业邮箱目前所使用的 POP/IMAP 反向代理,以及 SMTP 客户端连接代理配置

mail {
    auth_http 127.0.0.1:9999/auth;

    server {
        pop3_capabilities "TOP" "USER" "UIDL";
        listen 110;
        protocol pop3;
        proxy on;
    }

    server {
        listen 995;
        protocol pop3;
        proxy on;
        ssl                  on;
        ssl_certificate      mail.sohu.net.crt;
        ssl_certificate_key  mail.sohu.net.key;
    }

    server {
        xclient on;
        server_name sohu.net;
        listen 25;
        protocol smtp;
        proxy on;
    }

    server {
        listen 465;
        protocol smtp;
        proxy on; 
        ssl                  on;
        ssl_certificate      mail.sohu.net.crt;
        ssl_certificate_key  mail.sohu.net.key;
    }

    server {
        imap_capabilities "IMAP4" "IMAP4rev1" "UIDPLUS" "AUTH=LOGIN" ;
        imap_client_buffer 8K;
        listen 143;
        protocol imap;
        proxy on;
    }

    server {
        listen 993;
        protocol imap;
        proxy on; 
        ssl                  on;
        ssl_certificate      mail.sohu.net.crt;
        ssl_certificate_key  mail.sohu.net.key;
    }
}

开发 Outlook Add-in(二)

Visual Studio Community 2013 内置了 git 支持
参考 http://www.cnblogs.com/TianFang/archive/2013/09/29/3345038.html 很容易就上手

因为 https://bitbucket.org 免费支持私有项目,于是没有用 github

这一阶段主要是在调试 CustomTaskPane
总算明白 VSTO(Visual Studio Tools for Office) 大约相当于一个抽象了 Office Add-in COM 的高级 SDK
比如 CustomTaskPane 就是对 ICustomTaskPaneConsumer 的一个封装

CTP 这个东西应该是从 Outlook 2007 才开始提供,2003 之前是没有的

有牛人在 Outlook 2003 的时代就利用 subclasswindow 生生的挖出一个窗口:http://www.codeproject.com/Articles/27262/Additional-custom-panel-in-Microsoft-Outlook?msg=3491734#xx3491734xx

Add-in Express 则提供了一个收费版本的开发包:Regions for Outlook&VSTO,https://www.add-in-express.com/outlook-regions/index.php

一直没有调出 Xobni 的效果,传说 Xobni 也是用了 subclasswindow.

开发 Outlook Add-in(一)

概述

马上进入2015年,所以只考虑 Office 2007、2010、2013 的开发,Office 2003 以及之前的版本支持从技术上看已经没有研究价值

Microsoft 推荐使用 .NET 进行开发,实践证明,Visual Studio Community 2013 是可以开发 2007/2010/2013 都支持的 Add-in 的。可参考:http://msdn.microsoft.com/en-us/library/bb772080.aspx

测试系统:Visual Studio Community 2013 + Office Developer Tools for Visual Studio 2013 ,outlook 2007

按照 Walkthrough: Creating Your First Application-Level Add-in for Outlook 的教程,可以得到一个每次新建信件时候自动插入 subject/content 内容的 Add-in

订阅 RSS - 技术 | BT的花