“微信小程序”将带来什么样的变化?就单单的是一个超级Web app?还是只是为了给大家手机节省一些空间?腾讯想要的是高达70%以上的“无法监测的巨大流量”,称之为“dark social”(暗社交)。
无法监测的流量
其实,无论是淘宝、京东这些电商网站,还是头条、搜狐等内容聚合平台,以及滴滴、美团这样的生活服务网站,都面临一个问题,就是他们的访客到底从哪里来?他们的访客到底是怎么样的?
对内容平台而言,通过在文章底部设置带URL链接的分享按钮,通过流量分析工具(网盟、QLik或自己开发的组件)可以大致描绘他们的内容被谁看了,谁通过这些内容下载了他们。
但实际上,根据RadiumOne的报告显示:全球70%的内容分享都是在“无法监测的”渠道完成的,80%的点击来自于“无法监测的渠道”的信息源,仅有23%是在Facebook、Twitter、Instagram、WeChat等社交平台完成的。
也就是说,头条、搜狐这些国内热门的内容聚合平台,他们所监测到的信息源和内容扩散人群其实是微乎其微的,在2016年Q2微信月活达到8亿后,8亿用户在微信端中对他们内容的交换、扩散,和APP下载的情况更如同未知的冰山底部。
而只有商品页外链的电商平台,更是对这8亿用户的商品页分享行为雾里看花。
但实际上,这8亿用户,乃至整个中国10亿以上的用户分享的内容和他们的行为,正是人口红利消失,互联网进入新常态,所有产品必须关注用户体验升级和深耕细化用户人群的关键所在。
这高达70%以上的“无法监测的巨大流量”,我们称之为“dark social”(暗社交),由Alexis Madrigal在Atlantic的专栏中首次提出。
“微信小程序”的野望应当在此,也必须在此。对于成就第一代互联网超级APP的张小龙来说,“dark social”(暗社交)下依然静寂的流量冰山,正是微信抢占下一代互联网平台流量的重要砝码。
早在3年前,张小龙在接受《商业价值》采访时也曾谈到微信是什么:“你如何使用微信,决定了微信对你而言,它到底是什么。”或许,也能从侧面反映他对微信成为一切的心绪。
微信小程序的遐想
对于“dark social”(暗社交)的挖掘,除了华尔街日报、经济学人等国外的内容平台已经在探索外,Adidas在Facebook Messenger、WhatsApp和Line等社交平台上也成立了所谓的“TangoSquads”社区,每个社区100-250人之间,成员分布在全球15个核心城市,以16-19岁的社交APP活跃用户为主。
此举,也是Adidas对暗社交的探索,通过具体到人的流量单元,它能够了解目标消费群体的主流意识,并从深层社交中,拿到FB、WS平台无法监听到的一手信息(用户对产品的玩法照片、未对外发布的产品评论等),这些信息由于在私密中进行,相比浅层社交的信息更为可靠。
相比,“微信小程序”绝不是就把“链接”放到手机主屏上那么简单,而微信要形成类似TangoSquads社区聚合更是要容易得多。对于电商、内容平台、生活服务,“微信小程序”都有无限遐想的空间。
·对于电商:假设通过“微信小程序”电商平台建立自己的聚合外链,无疑能够极大拓展“用户嗅觉”,通过对8亿用户分享某件商品的行为,预测接下来用户的消费走向,甚至不同年龄层的用户心态,以及他们的消费品位,对电商来说也许是一直无法释怀的打破商品到平台再到人的巨大藩篱的重要手段。
·对于内容平台:对内容平台更为利好的是,伴随着更多的流量被捕获,内容的价值将被放大,曾经被动投放的无用功,将在对用户二次、三次乃至四次分享后得到的曝光数据分享后,成为面向更为精准人群的主动投放。
从海外的情况来看,华尔街日报、经济学人,以及BBC已经意识到这一价值,并在facebook、whatsapp等社交APP中植入了相应的插件,并不断优化内容和投放人群。
·对于生活服务:以滴滴为例通过对点击服务小程序的采样,以及用户对该服务在微信上的分享情况,并把关键词控件整合到分享链接中,也不难得出用户对哪些产品在滴滴上的广告投放感兴趣,并为滴滴品牌合作提供参考范例。
能够给滴滴以启示的是,英国的职业自行车TeamSky也正在利用类似的“小程序”做同样的事,他们把RadiumOne开发的技术网址缩短服务(URLShortner)和分享控件整合到自己的内容后,形成一个检测关键词、短语的“小程序”。
只要受众与内容进行互动就会被记录下来,找不到自己合作伙伴的TeamSky通过分析发现,音乐和汽车是它的受众在暗社交渠道比较热衷的话题,这个发现也最终促使捷豹决定与Team Sky续约。
所以,联想到微信开屏页一个人仰望巨大月亮的正面,“微信小程序”到底能做什么?它的终极目标是什么?或许,那潜藏在月之暗面的“dark social”正是张小龙的下一个目的,也是让微信最终成为一切的目的。
原文在这
Deep Learning of Binary Hash Codes for Fast Image Retrieval 这篇文章发表在2015CVPR workshop
文章链接:http://www.cv-foundation.org/openaccess/content_cvpr_workshops_2015/W03/papers/Lin_Deep_Learning_of_2015_CVPR_paper.pdf
代码链接:https://github.com/kevinlin311tw/caffe-cvprw15
图一 算法框架流程
这篇文章的想法很巧妙,在一个深层CNN的最后一个全连接层(fc8)和倒数第二个全连接层(fc7)之间加了一层全连接隐层,就是图一中绿色的latent layer (H)。这样一来,既可以得到深层的CNN特征,文中主要用的是fc7的特征,还可以得到二分的哈希编码,即来自H。这个隐层H不仅是对fc7的一个特征概括,而且是一个连接CNN网络的中层特征与高层特征的桥梁。
1. Domain Adaption
为了让一个网络能够对某一类物体高鲁棒,即target domain adaption,用一类主题目标数据集来整定(fine-tune)整个网络。fc8的节点数由目标类别数决定,H的节点数在文中有两种尝试:48和128。这两个层在fine-tune时,是随机初始化的,其中H的初始化参考了LSH[1]的方法,即通过随机映射来构造哈希位。通过这样训练,得到的网络能够产生对特定物体的描述子以及对应的哈希编码。
2. Image Retrieval
主要提出了一种从粗糙到细致的检索方案(coarse-to-fine)。H层首先被二值化:
粗糙检索是用H层的二分哈希码,相似性用hamming距离衡量。待检索图像设为I,将I和所有的图像的对应H层编码进行比对后,选择出hamming距离小于一个阈值的m个构成一个池,其中包含了这m个比较相似的图像。
细致检索则用到的是fc7层的特征,相似性用欧氏距离衡量。距离越小,则越相似。从粗糙检索得到的m个图像池中选出最相似的前k个图像作为最后的检索结果。每两张图128维的H层哈希码距离计算速度是0.113ms,4096维的fc7层特征的距离计算需要109.767ms,因此可见二值化哈希码检索的速度优势。
3. 实验结果
作者在MINIST,CIFAR-10,YAHOO-1M三个数据集上做了实验,并且在分类和检索上都做了实验,结果都很不错,特别是在CIFAR-10上图像检索的精度有30%的提升。
(1)MINIST
左边第一列是待检索图像,右边是48和128位H层节点分别得到的结果。可以看到检索出的数字都是正确的,并且在这个数据集上48位的效果更好,128位的太高,容易引起过拟合。
(2)CIFAR-10
在这个数据集上128位的H层节点比48位的效果更好,比如128检索出更多的马头,而48位的更多的全身的马。
(3)YAHOO-1M
作者在这个数据集上比较了只用fc7,只用H和同时用两者(粗糙到细致)的结果,实验结果表明是两者都用的效果更好。
可以看到如果只用alexnet而不进行fine-tune的话,检索出的结果精度很低。
4. 总结
这个方法整篇文章看下来给人的感觉比较工程,全篇讲理论和方法的部分很少,几乎没有什么数学公式,但是效果好,这个最重要。想法很简单,但是很巧妙,值得学习。代码已经开源,准备尝试。
[1] Gionis A, Indyk P, Motwani R. Similarity search in high dimensions via hashing[C]//VLDB. 1999, 99(6): 518-529.
引言 公司中的开发一般是沿着一种核心开发语言如Java、C/C++、PHP进行相关开发。但由于产品新需求、项目新需要,免不了会使用自己不擅长的语言开发。甚至,现在全栈工程师也比比皆是。对于经验不丰富的职场人,如何开展工作呢? 结合我近期的项目经历,我说下我的经验和教训。
1、项目经历 我本人从高校到毕业三年多的时间一直使用C++/C开发,参与过3个版本产品、1个大型项目的开发。而最近由于新团队人员都使用Java,早期项目也都是Java开发的。短期内如何实践、进入项目是值得深思的问题。
2、由框架入口,先熟悉结构。 对于新的语言,难免会有抵触情绪。不熟悉编译环境、不熟悉基本语法结构。但是有一点现实因素是:“你改变不了环境,那就改变自己”。况且,学习一门新语言对程序员也是一件非常快乐的事情。
2.1 了解项目的模块组成 从大的角度出发,知道有哪些模块组成。如果有人讲解,可以了解的更快。如果没有,就自己摸索。先了解相关相关配置,如:数据库连接、依赖库等。搭建Eclipse环境,尝试让程序跑通。 这个阶段发现的问题要先解决掉。如java依赖jar包位置更新,如jdk版本问题jdk1.8, jdk1.7, jdk1.6。
2.2 熟悉模块之间的关系 了解哪个是客服端、哪个是服务端,二者之间的调用、被调用者的关系如何? 1)模块静态结构 模块A:负责从数据库配置表中根据条件,从关联表中读取相关信息。构造成模块B能够读取的a.xml。 模块B:负责读取a.xml,进行xml解析,根据各个不同的字段进行任务处理;并将处理结果存储到b.xml。 模块C:负责读取b.xml,进行xml解析,将结果存储到数据库结果表中。 2.3 尝试理解模块间的动态结构 这里会涉及到任务的调度,如分布式的Zookeeper,模块A的责任是Master,模块B是Client,模块C是Result。 保活连接是通过Socket建立的。
3、通读代码,熟悉大致原理。 前提,已经通过步骤2,知道模块间的调度关系。即便对Java语法、类结构、多线程等不了解,但相信有C、C++的底子,看起来并不复杂。 从大的角度了解有几个类组成。如:数据库连接类、配置读取类、xml解析类、任务传递类、任务采集类、结果存储类等。 就像“剥洋葱一样”,从外层剥起,一层一层深入,这个过程刚开始会流泪,但,熟悉了也就很快搞定了。炒出来还是很好吃的。 最外层,从Main函数入口,知道其对应的外层入口的含义,如:Init()接口、Start()接口、Stop接口()。 中间层, 读取数据库表信息,形成可供下发的任务;任务处理,涉及:xpath内容解析、js解析、分词、content读取、组合结果段。 中间层往往是最复杂的层,涉及的逻辑很复杂,这也是剥洋葱最刺眼、流泪的阶段。 中间层往往是逻辑最复杂,涉及的业务代码最多,新需求的改动往往也发生在这里。 中间层随着业务逻辑的不同,会涉及很多类,不同类实现不同的业务逻辑。 最内层:任务写入到xml中,以便模块间交互;结果存入mysql。
4、由新需求入手,看如何改动。 有了前面的框架基础以及静态、动态大致概念后,再去回过头来看新项目需求是什么?问下以下几个问题: 1)新需求点是什么?能否细分? 2)新需求需要动哪几个模块?动一个模块会不会涉及到关联模块? 尝试改动几个你认为对的入口的地方,打印看输出结果是不是符合预期。
5、着手改动,再学习相关语法。 终究是要动手的,不同点的是老手1-4步骤,可能需要半个小时或者不花时间。而我们非强项语言的尚处于java学习阶段的,可能花1-2天摸清架构、模块间静态、动态关系。 这个时候,可以参考已有代码结构、语法格式、类结构、函数调用、函数重载等。 要实现新的功能需求的时候,需要用到如动态数组arrayList概念可以Google去查,如何存储、如何赋值、如何循环打印等。 因为不熟悉,这个阶段可能会出很多Bug。当不能一眼定位到代码行的时候,需要多加System.println(“”)去打印,定位错误。
6、基础还是必须要学习。 参考网上教程和视频教程,国内和国外的。我是Java初学者,目前仍然处于摸索阶段,不能有很好的推荐。等储备粮丰富了,再做甄别后的推荐。
反观之,很多涉世未深的程序员,包括3年前刚毕业的我,会从步骤6–步骤2去执行,势必花费了更多时间,也不能看到程序的全貌。并且容易陷入bug的泥潭不能自拔。3年前的 PHP项目的“苦逼”经历与思考 : http://blog.csdn.net/laoyang360/article/details/32175701
7、小结 思路是顺出来的,勤思考,不畏难、迎难而上方显英雄风范!
2016-11-19 pm22:19思于家中床前
作者:铭毅天下 转载请标明出处,原文地址: http://blog.csdn.net/laoyang360/article/details/53235663 如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!
点赞 3 收藏 分享 文章举报 铭毅天下
博客专家 发布了373 篇原创文章 ·
好久没写博客了,工作中不断学习新东西,每天都会积累一点点,有时很想将学到的东西整理好,用文字记录并分享出来,即可以加深印象,又可以帮助有需要的朋友。但是工作起来经常身不由己,一年来的996工作制,多多少少有些忙乱,写博客的事自然就一拖再拖。过去一年多时间做了很多图像算法工作,记不清读了多少paper,查阅了多少开源代码,后面会陆续整理成文字及代码片段,就像前面说的,即是对过去一段时间工作的一个记录,又可以帮助做相关工作的朋友。 本文提到的低照度图像增强算法,原理很简单,但是效果尚可。当时在查阅相关资料时,无意中看到一个使用Photoshop拉亮低照度图像的方法,按照教程介绍,自己使用Photoshop操作一遍,觉得效果还可以。对,做图像算法还是要掌握一点Photoshop用法的,因为有时候图像算法就是把Photoshop上面的处理图像步骤程序化一下,比如后面介绍的图像倒影算法。本文介绍的低照度图像增强算法基本可以分2步: 将绿色通道反色后作为系数值,分别与各个通道相乘,得到新图层; 将新图层与原图做一次滤色混合,f(a, b) = 1 – (1 – a)*(1 – b); 如果觉得增强程度不够,可以多做几次图层滤色操作。下面是相关代码: #include #include using namespace cv; using namespace std; #define BLUE 0 #define GREEN 1 #define RED 2 #ifndef SCREEN_XY #define SCREEN_XY(x, y) (255 - ((255 - (x))*(255 - (y)) >> 8)) #endif int main() { char imgfile[256] = "E:\\t11.jpg"; Mat src = imread(imgfile, CV_LOAD_IMAGE_COLOR); imshow("src", src); int size = src.cols * src.rows; uchar r = 0, g = 0, b = 0, g_alpha = 0; uchar *pSrcData = src.
本文由Markdown语法编辑器编辑完成。
作为习惯了使用Google进行资料查询的我来说,如果没有Google,真的感觉很难受。纵使找了一些可以翻墙的软件,但无奈还是经常不稳定,总是时断时续的。Bing和百度搜索出来的东西,距离自己想要的东西,差别比较大。
前段时间在虎嗅上面读到一篇关于搜索引擎的文章,题目叫:《谷歌是最安全的搜索引擎?这家谷歌的竞争对手有话要说》。原文链接:https://www.huxiu.com/article/148190/1.html。
文章首先承认谷歌Google是当今世界搜索引擎的巨无霸,即使微软花了很大的力气研发了Bing搜索,但是在搜索精准度上还是与Google相差甚远。
但是,这两年在搜索引擎领域中却冒出了一匹黑鸭,叫DuckDuckGo (鸭子鸭子跑),它已经成为了Google在搜索领域最小却也是最主要的竞争对手之一。2015年,DuckDuckGo被用户进行了多达30亿次的搜索,虽然这仅仅相当于Google的日搜索量,但是这家公司2011年才仅有3名员工。
DuckDuckGo之所以能在强手如林的搜索引擎市场下,赢得一席之地,必然是有它的独到之处。那就是找准了自己的定位——让用户做私人的、匿名的网络搜索。因为很多用户非常反感Google对他们的搜索信息进行收集和分析。这就是差异化竞争。
搜索引擎公司的一大收入来源是广告收入。针对什么样的用户,投放什么样的广告,被用户点击的机率更大,这是搜索引擎公司一个很重要的工作,不管是Google,还是百度等其他搜索引擎。那么,这些公司在广告投放前,便会根据该用户之前搜索过的信息,来判断该用户的兴趣喜好等。也就是说,我们的每一次检索内容都会被搜索引擎“悄悄地”记录下来,然后对这些记录进行分析,然后再投放具有针对性的广告,增加广告的被点击率,从而为搜索引擎公司带来巨额收入。
DuckDuckGo不会收集用户信息来为广告商提供精准营销,相反地,它加入了微软/Bing/雅虎的广告网络,并且基于一些更普遍的事实推送没有针对性的广告,比如根据你使用英文搜索这一事实推送英文广告。而谷歌可以根据你刚刚搜索“夏天 裙子”,就在你接下来登陆的所有网站推送女装网店广告,这偶尔会让小探觉得毛骨悚然。
好了,大家可以试用一下这个搜索引擎,虽然它可能不像Google那样精准,但是在查找国外的技术资料时,还是要比百度强很多倍的。而且,这个搜索引擎不会收集你的个人信息,而且它目前还没有被政府屏蔽。
以下是这个搜索引擎的访问地址和主页界面: https://duckduckgo.com/ 要想成功,就要敢于创新,就要搞差异化竞争。这家公司做到了,为他点赞!!!
色相:
红 —— 绿 就是色相变化,色相是色彩的首要特征,简单来说就是一眼望去是什么颜色,就是色相。
明度:
黑 —— 白 就是明度变化,就是感官上的比较亮比较暗,除了简单的添加黑白使明度变化外,不同纯色也有明度差异,把不同的纯色去色后,就可以比较明度了。
纯度: 简单来说就是饱和度,颜色越灰,一眼望去色相越不明确,纯度越低。
P.s.色环上的相邻色混合不会降低纯度,比如黄加红得到的橙色,纯度就不降低,色环的相反色混合则会降低纯度,例如红与绿。
H=色相
决定是什么颜色
S=纯度
决定颜色浓淡
B=明度决定照射在颜色上的白光有多亮 RGB: R.红色(Red) G.绿色(Green) B.蓝色(Blue) .RGB是光学三原色,所以普遍用于电视、电脑用来发布在网络
CMYK: C. 青色(Cyan) M. 洋红色(Magenta) Y. 黄色(Yellow) K. 黑色(blacK) .CMYK是印刷用的颜色,印刷RGB会失真。 Lab模式的定义
:Lab模式是由国际照明委员会(CIE)于1976年公布的一种色彩模式。是CIE组织确定的一个理论上包括了人眼可见的所有色彩的色彩模式。Lab模式弥补了 RGB与CMYK两种彩色模式的不足,是Photoshop用来从一种色彩模式向另一种色彩模式转换时使用的一种内部色彩模式。Lab模式也是由三个通道组成,第一个通道是明度,即“L”。a通道的颜色是从红色到深绿;b通道则是从蓝色到黄色。两个分量的变化都是从-120到+120。当a=0、 b=0时显示灰色,同时L=100时为白色,L=0时为黑色。如果一定要用Lab模式来表达颜色,那么R色值为:L=54、a=81、b=70;G色值为:L=88、a=-79、b=81;B色值为:L=29、a=68、b=-112;C色值为:L=62、a=-31、b=-64;M色值为:L=48、 a=83、b=-3;Y色值为:L=94、a=-14、b=100。大致上说:在表达色彩范围上,最全的是Lab模式,其次是RGB模式,最窄的是 CMYK模式。也就是说Lab模式所定义的色彩最多,且与光线及设备无关,并且处理速度与RGB模式同样快,比CMYK模式快数倍。(以上一段能理解就理解吧!)Lab模式的调色原理:LAB 模式大家都知道有三个通道,一个是明度通道另外两个是A和B通道。其中,明度通道就是亮度通道你对它进行调整颜色是不发生变化的!…
WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置 WebStorm是一个捷克公司开发的,功能虽然很强大,但UI貌似一直不是东欧人的强项。WebStorm默认的编辑器颜色搭配不算讲究,我看习惯了VS2012的Dark Theme,再看这个顿觉由奢入俭难,非得改改颜色才行。
新建Scheme + 修改字体 ctrl+alt+s打开Settings界面,Editor > Colors&Fonts > Font。
Default scheme是亮色调,但我想定制一套暗背景的环境,所以在右侧Scheme name下拉框中选择Monokai,以此作为修改的基础,然后点击Save as,给自己新建的Scheme起个名字吧,如下图:
这里面可以设置字体(我一般选择Consolas),字体大小,行间距。
自定义语法高亮 用ctrl+alt+s打开Settings界面,Editor > Colors&Fonts。
不同语言有各自的语法高亮规则,但有一部分是通用的(General),我们首先来设置General,然后再根据需要设置不同语言的语法高亮。
General的设置
普通文本:default text
折叠文本: Folded text
光标: Caret
光标所在行: Caret row
行号: Line number
TODO: TODO default
光标下变量高亮:Search result
搜索结果:Text search result
匹配的括号:Matched brace
不匹配的括号:Unmatched brace
未使用的符号:Unused symbol
左边空隙(行号,断点):Gutter background
选中的文本背景色:Selection background
选中的文本前景色:Selection foreground
区分语言的设置
举例来说,如果要更改Javascript的语法高亮,就在上图中选择Javascript,然后再进行详细设置。具体设置项就不赘述了。
显示行号 + 自动换行 如果用Vim编程,行号是非常必要的辅助。WebStorm默认是不显示行号的,没关系,显示行号非常的容易。
只要在代码左侧的gutter区域点右键,就会出现下图的菜单:勾选上Show Line Numbers即可。
另外,勾选上图中的Use Soft Wraps就启用了WebStorm的自动换行的功能,即过长的代码行不会超出屏幕,不会出现横向的滚动条。
值得一提的是,标准的Vim,jk是移到上一行下一行,如果代码自动换行了,被分割成的两行虽然看起来是两行,但其实是一个逻辑行,这时候用jk是上移下移一个逻辑行。这种情况下,如果要从同一逻辑行的“第一行”移动到“第二行”,需要按gj,即先按g再按方向。虽然Vim提供了这个方法,但还是经常按错。
昨天在画电路图,需要判断太阳能电池有无,当有光照时候比较容易判断,因为有光照太阳能电池有电压,但是当无光照或者暗时,太阳能电池无电压,此时就不好判断太阳能电池有无。所以上网搜索资料后,总结出了一个判断的方法。
如下图一,太阳能电池等效电路图。
实际上太阳能电池可以理解为恒流源和二极管并联,同时还有串联电阻和并联电阻的存在。当无光照时,对太阳能电池加电压,太阳能电池会表现出如下图的二极管特性。
当有电流时,太阳能电池也会有电压出现,并且当电压达到太阳能电池的VF时,电流继续增大电压基本不变。可以利用这个特性,当无光照时,对太阳能电池加电压,同时保证有电流存在(串入限流电阻),可以判断此时太阳能电池两端电压情况,根据此时的电压情况可以判别出有无太阳能电池存在。
一、关闭VmWare虚拟机 二、删除ubuntu目录下.lck文件 三、关闭电脑防火墙(包括家庭网络和共用网络) 四、直接点击ubuntu目录下的.vmx文件
bootstrap3 modal可以通过remote参数加载一个远程页面在.modal-content中,这可以帮助我们解决许多动态内容的问题。但同时它也存在一个问题,就是会缓存页面内容。解决的方法:
//modal初始化和打开之前清除页面内容和缓存数据 $('#myModal .modal-content').empty(); $('#myModal').removeData('bs.modal').modal({ remote: "xxx" }); 这样就能解决缓存问题了。 需要注意的是boostrap4中去掉了modal的remote参数,也就是说不能在modal中load其他页面了,降低了灵活性。