职场看什么

这个标题得从一个故事讲起:
我有一个朋友A,认识她从大学没毕业那伙认识起,家里也算殷实,不愁吃穿,但是喜欢交互设计,没毕业就在这行业里折腾,于是乎在一个群里就聊上了,对于喜欢上进的人我还是挺喜欢的,觉得这行业需要就是刚从学校出来没多久,愿意去思考,愿意去做,但这故事的主觉不是她,而是她的一个朋友B,认识她纯粹是偶然,那时我刚回北京没多久,也没决定回公司,而A却要因为爱情要离开北京了,在走之前对我说有一个朋友需要找工作,刚好找的职位也是现公司缺的,所以我当时就答应去一起吃个饭,了解一下想法。初次见面聊的挺好的,主要那场饭局我们都不是主角,在那场饭后,我也就抛之脑后了,没太在意这件事,有一天QQ突然有好友申请,我一看原来是B,互相加了好友。聊了一伙公司缺的职位要求。我记得A说过B想找个稳定点的工作,别天天加班的,刚好我在的公司也算稳定,也不是经常加班。于是乎,我收到B的简历了,当时真的觉得她的作品不错,而且工作也超过5年了,以前做过的产品也在业内有挺大知名度的。我还是决定将她推给我们的部门的负责人,教她对简历进行整理。可还没等到部门HR电话通知,她就问我是否需要薪资证明,我说公司是有这个规定,把工资近几个月的流水账打出来也行,可是她却提供不了。我突然有点纳闷了,按简历上写的薪资提供薪资证明应该不是难事。她问我能不能做假,我说这个不可能吧,一查就知道的事。我当时就对她在前公司的薪资打了个问号,有水平在前公司给的工资就算低也没必经作假啊,也见过番倍跳槽的,加上当时比较忙,就没把这事放在心上了。直到有一天,她问我有某方面的资料没,我才知道她入职了一家业内很知名的互联网公司,拿到了她想要的薪资。我也祝贺她拿到了心目中想要的offer,但与前同事的聊天却让我大跌眼镜。作品是她同事做的,收集了全部门的作品当成了自己的作品,上班淘宝,让同事帮忙抢秒杀商品。拿着作品去某门户说要21K的薪水,最少愿意18K来。还好某门户很聪明的拒绝了,但某互联网公司就接了。事后和那公司的一个朋友聊天说起这事,他提了嘴活该被坑 。
其实这样的事在互联网中特别常见,移动互联网发展快,某些职位的空缺,造成了很多人有了这样的机会。我没对A说起这事,我也没想和A说这事,只是我现在和A的联系更加的少,我也给很多朋友介绍工作,以前同事问过我不怕哪天把不靠谱的人介绍给朋友这样砸到自己吗,其实能介绍的人我觉得可信的,共事过的,但遇到上面这种事却实是因为出于对朋友的信任。其实是一种双方都有利的,在离开X淘时,我就将很多同事推给了朋友公司或介绍去一些公司,帮他们分析行业内的公司的现状,给点指引。
对于一个要在职场中奋斗多年的人,职场看什么?
1.能力
能者居之,这是在很多公司第一看中的要素。公司招一个人一定是想觉得这个人可以胜任该职位,所以将此人招进来。如果达不到公司的要求,或许三个月内这个人就得走人了。拍马屁也是一种能力,把领导拍好了,这种人也可以在公司生存下来,身边不乏这样的人,只是我不喜欢。
2.诚信
这个我一直觉得是在职场中最重要的要素。诚信除了,薪资,职位,更重要的是对人的经历,以及成就。很多人都经过多次跳槽,公司对于这样的其实也很担心,我在面试时也有这样的经历,但我都会将跳槽的原因向HR说清楚。薪资很多时候是对一个人能力最好的衡量,但并不是唯一,所以上面我讲到的B也是这样,高薪低能已经让很多公司失去了一些竞争力。
3.性格
性格的好坏影响的是一个团队。在X淘时,招进来的产品、UI都会见上一面,经常打交道的人,我不希望说不到一起去。所以在X淘时,我们的团队最稳定,薪水不是最高,但却是最高效,最杰出的团队。性格太孤僻的人我都有点陌生,每个人都有自己的性格,只有把握好了,这样的人可以做的更好。
4.好习惯
好习惯需要坚持,比如多问个为什么,坚持每天都看些书籍,关心行业内的信息,多了解行业新鲜事物,新技术。好习惯来源于坚持,需要不断的去努力,我一下觉得30岁前形成一些好习惯是好事,别让自己变懒,别让规矩把你束缚,别让自己局限,因为你还年轻。
5.道德
职业道德,这是工作的底线。我不喜欢把这个公司的故事讲到另一公司,更不喜欢将别人的功劳讲成自己的事,知道的不说,听到的不传,这是职场中坚持的。上面的B姑娘这种行为在我前同事讲完之后我还和前同事说了自己的看法,也不让我前同事这么干,圈子太小,还是要有底线的。
6.担当
人无完人,总得有犯错的时候,很多时候在犯错后,我都会在善尾后第一时间找到领导说说这事,奖惩分明,这相信很多公司的领导都可以做到。除了对自己的行为担当,同样要为自己的下属,同事担当,若你是领导,得为下属扛责任。若为同事,你得一起承担重任。
7.规划
别人不能规划你的职场,你必须自己规划好。我在电商呆了五年后换才了个行业,我喜欢和钱打交道,我喜欢看着自己的产品每天带来的收益,用户量,活跃用户或许是衡量一款产品重要标准,但我更希望自己的产品可以为公司带来效益。我有同事每个行业呆了一二年就跳了,做过电商、音乐、地图,产品多态,但却一直不知道自己喜欢什么。早点规划好自己的职场,这对于很多刚入职场来说很重要。

iOS push服务

Push的原理:

Push 的工作机制可以简单的概括为下图

图中,Provider是指某个iPhone软件的Push服务器,比如我们的应用程序的服务器。
APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。

上图可以分为三个阶段。

第一阶段:Provider把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知

 

 

从上面的图中我们可以看到。

1、 首先是应用程序注册消息推送。

2、 IOS跟APNS Server要deviceToken。应用程序接受deviceToken。

3、 应用程序将deviceToken发送给Push服务端程序。

4、 服务端程序向APNS服务发送消息。

5、APNS服务将消息发送给iPhone应用程序。

 

如果我们的app用到了push服务,就是你新建app ID的时候设置了enable pushnotification那个属性,并且成功生成了ssl证书。

客户端就不说了,主要说下怎么把我们的证书等移到java,php,c/c++等服务端

 

假设我们现在有一下文件

*.certSigningRequest文件   //请求文件

SSL certificate文件             //分为开发和发布2个证书,发布你上传app的时候要用到的

*.p12文件                             //Apple Development IOS Push Services  密钥

 

假设我们这3个文件为

1、Push.certSigningRequest

2、aps_developer_identity.cer

3、PushKey.p12

我们怎么把这些文件应用到服务端呢?

1、将aps_developer_identity.cer转换成 aps_developer_identity.pem格式。

openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM

2、将p12格式的私钥转换成pem。

openssl pkcs12 -inPushKey.p12 -outPushKey.pem -nodes

3、用aps_developer_identity.pem和PushKey.pem,Push.certSigningRequest创建P12格式的文件。

openssl pkcs12 -export  -in aps_developer_identity.pem -inkey   PushKey.pem -certfile Push.certSigningRequest  -name “aps_developer_identity”  -out aps_developer_identity.p12

这样我们就得到了证书文件:aps_developer_identity.p12

 

关于证书

cer后缀的证书文件有两种编码:

DER二进制编码或者BASE64编码(也就是.pem)

 

p7b一般是证书链,里面包括1到多个证书

 

pfx是指以pkcs#12格式存储的证书和相应私钥。

 

在Security编程中,有几种典型的密码交换信息文件格式:
DER-encoded certificate:                                         .cer, .crt

PEM-encoded message:                                          .pem

PKCS#12 Personal Information Exchange:              .pfx, .p12

PKCS#10 Certification Request:                               .p10

PKCS#7 cert request response:                                .p7r

PKCS#7 binary message:                                         .p7b

.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。

.pem跟crt/cer的区别是它以Ascii来表示。

.pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式

.p10是证书请求

.p7r是CA对证书请求的回复,只用于导入

.p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

关于openssl

-in    :(目录名字)  指定输入文件名(路径)

-out  :(目录名字) 指定输出文件名(路径)

-outform:   指定输出文件格式

-inform   :   指定输入文件格式

 

-export: 表示创建pkcs12文件,而不是简单地解读一个pkcs12文件

-inkey: 私钥文件,可选

-certfile: 其他的证书文件,可选

-name: 这个名称只作显示用,导入此文件的软件会显示这个名字

-req: 创建csr

-new: 用于创建csr

-newkey: 创建csr和私钥

-nodes: 无需passphrase

-keyout: 生成私钥文件

-days: 证书有效期

-genrsa: 生成密钥对的算法

-des3: passphrase算法

继续上次的

在工程中

我们首先需要注册一下,得到一个token

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window.rootViewController=self.viewController;
[self.window makeKeyAndVisible];

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];

returnYES;
}

 

如果注册成功的话,我们需要得到这个token

-(void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@” token is: %@”, deviceToken);
}

如果失败的话
-(void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@”Failed ! error is: %@”, error);
}

如果收到消息通知的话

– (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

NSLog(@”userinfor is : %@”, userInfo);

 

关于The Notification Payload

这个payload啊,你可以这样理解:

1.每一个push notification都有一个payload,这个payload指明应该怎么提示用户,是只有声音,或者声音和badge一起等。

2.它不能超过256字节,这说明你需要传输简明信息。

3.它是一个json 字典,同时它必须包含 key 为 “aps” 的另一个字典,因为提示信息在这个字典中。

4.在 key为 “aps”的字典中我们可以 1) 发送一个alert message 2)显示 badge 数目 3)播放一个sound

key 类型 说明
alert string 或者字典 可以是字符串或者字典 看下面
badge number application icon上显示的数目
sound string application bundle中的声音名字

如果你的alert 设置的是字符串,你应该这样

 

“aps” : {

“alert” :“hello message”,

“badge” :2,

”sound“:”sound.aiff“

如果你的alert设置的是字典,你因该这样

“aps” : {

“alert” :{

“body”:“your message”,

“launch-image”:“img.png”

},

“badge” :2,

”sound“:”sound.aiff“

 

关于服务器

php                      看这里

java                     看这里

c                          看这里

objective-c        看这里

 

关于本地通知

第一步:创建本地推送
// 创建一个本地推送
UILocalNotification*notification = [[[UILocalNotificationalloc]init]autorelease];
//设置10秒之后
NSDate*pushDate = [NSDatedateWithTimeIntervalSinceNow:10];
if(notification != nil) {
// 设置推送时间
notification.fireDate= pushDate;
// 设置时区
notification.timeZone= [NSTimeZonedefaultTimeZone];
// 设置重复间隔
notification.repeatInterval= kCFCalendarUnitDay;
// 推送声音
notification.soundName= UILocalNotificationDefaultSoundName;
// 推送内容
notification.alertBody= @”推送内容”;
//显示在icon上的红色圈中的数子
notification.applicationIconBadgeNumber= 1;
//设置userinfo 方便在之后需要撤销的时候使用
NSDictionary*info = [NSDictionarydictionaryWithObject:@”name”forKey:@”key”];
notification.userInfo= info;
//添加推送到UIApplication
UIApplication*app = [UIApplicationsharedApplication];
[appscheduleLocalNotification:notification];

}

第二步:接收本地推送
– (void)application:(UIApplication*)application didReceiveLocalNotification:(UILocalNotification*)notification{
UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@”iWeibo”message:notification.alertBodydelegate:nilcancelButtonTitle:@”确定”otherButtonTitles:nil];
[alertshow];
// 图标上的数字减1
application.applicationIconBadgeNumber-= 1;
}

第三步:解除本地推送
// 获得 UIApplication
UIApplication*app = [UIApplicationsharedApplication];
//获取本地推送数组
NSArray*localArray = [app scheduledLocalNotifications];
//声明本地通知对象
UILocalNotification*localNotification;
if(localArray) {
for(UILocalNotification*noti inlocalArray) {
NSDictionary*dict = noti.userInfo;
if(dict) {
NSString*inKey = [dict objectForKey:@”key”];
if([inKey isEqualToString:@”对应的key值”]) {
if(localNotification){
[localNotificationrelease];
localNotification = nil;
}
localNotification = [noti retain];
break;
}
}
}

//判断是否找到已经存在的相同key的推送
if(!localNotification) {
//不存在初始化
localNotification = [[UILocalNotificationalloc]init];
}

if(localNotification) {
//不推送 取消推送
[appcancelLocalNotification:localNotification];
[localNotificationrelease];
return;
}
}

挥手2012

写与不写?

最终决定还是写点什么,虽然是无厘头的2012,但似乎走的挺有故事的。老感觉没有任何成就的走完今年,以至于没有很多回忆。
挑点重点来说吧,工作,这一年遇到了奇葩,让我一度怀疑自己是否还要继续产品。最后我还继续SB的做产品,让那奇葩继续NB吧。这一年很少写博客,特别是后半年,看到同行朋友也减少了博客的输出,都在用不的方式在这行业继续奋斗,更多的是聚在一起聊聊产品,走出户外去享受一下生活。
生活,5月回到厦门时,每天过着简单、缓慢的生活,是一种简单、慢节奏的生活城市,让我一度不能忘记那样的生活,但终归还是放不下工作,这也是我在给自己最后的承诺,到了2013年,我能给的承诺是活在当下。
呆过创业公司、快上市公司、上市公司,只想对自己说一声,有时应该为自己努力一把,为自己吹过的牛B做点什么,迷茫过,痛苦过,失望过,希望过,但都过去了,2013,终来临,会有所改变,为自己,也为自己曾经的诺言。
2012年,我走出了电商,这是这几年来第一次正式的离开吧,挣扎过,但还是得学会放下,收敛了脾气、性格。原来静下心来可以将很多东西看透,看明白,放下虚荣,放下过去。感谢理解的人,为曾经的任性,为曾经的固执,为曾经的狂傲,深深说声谢谢。
喜欢黄家驹的海阔天空–原谅我这一生不羁放纵爱自由,也会怕有一天会跌倒。我受不了框框矩矩的限制,还是一幅运动装的屌丝样。希望2013年屌丝可以逆袭吧。
放下,很多不属于自己的东西要学会放下,希望可以走出去,不论是工作还是生活上的,工作上走出去可以接触更多的人与事,把握一些机会,生活上走出去,可以出国走走,利用好每次的假期。多陪陪家人,多给自己一点空间去想更多的事。
 2012年添了很多设备,也开始支持购买正版软件,做为这行业内一份子,每个工作者都不容易,也对自己提出了更高的要求,希望自己也可以像这行业内的一些人一样一直保持着一份激情,去创造更多,更好的产品。
2013在路上,希望自己的路可以走的更远,更宽……

我该在哪出现

是的,我离开乐淘了,离开澳门中心时我是又蹦又跳,和同事吃着最后的晚餐,带着微醉的心情离开了王府井。而最近我选择了隐身,退出了N个群后,不时的人在QQ上问我现在在哪工作,离开北京了,为什么离开乐淘等一系列问题。其实这已经涉及到了我对工作,爱好的问题了,包括对我自己职业生涯等。
我还在移动互联网。数码产品年年买,手里的手机好几部,这叫我如何放得下对它的感情呢?所以我继续混战在移动互联网。因为我还在MobiUE,一直有一帮好哥们,一起聊行业的动态,一起聊人生,一起线下聚聚,这样的环境如何让我离开移动互联网?
我在哪上班?重要吗?我只选择我开心、感兴趣的行业,我喜欢挑战,我喜欢刺激,我需要伯乐,我更需要赚钱养家糊口。我喜欢鞋子,我去了乐淘,现在我同样因为喜欢这行,我选择了这公司。我老大劝我做过OS,劝我进X米,劝我找一家创业公司继续战斗,但我还是放弃了,除了工作,这半年我还需要把生活继续。
离开北京?我从不觉得北京是我的终点,北漂如果不是因为一些原因,我不会离开上海。选择了就不后悔,至少有一段回忆,在多年之后我还会侃侃而谈北京的移动互联网环境,我还会和他人说起我也曾在北京漂过,当过北漂族,在王府井上过班,挤过地铁、公交,忍受“恶劣”的住宿环境,战斗过,哭过,笑过,累过,夜行过……这已经够了。
我该在哪出现才合适?我真没想过,我只是想找一份我喜欢的工作,我为之而努力,去奋斗,去拼搏,去加班,去疯狂,我需要一帮一起能疯的人,我觉得只有疯的人才可以做出一点事情来,我们不是最强的,但我希望我们是最努力的,趁着这余热还未散去时,我希望可以再拼搏一二年。有梦追寻的日子,是年轻时最快乐的日子,因为年轻的路不再有第二次,我感谢我这五年内走的4座城市,每座城市我都很喜欢,我怀念,我感激,一路陪伴的朋友们永远那么可爱。
在这二个月里,我理了一下行业内的公司,对我感兴趣的太少,我对他们感兴趣的也不多,我一直觉得人活着得有点想法,有点追求,得疯狂一把,最终才会安静的呆在一家公司好好干事。每家公司都有或多或少的问题,外表风光的公司更是如此,选择太多了并不是好事,我喜欢快刀斩乱麻,不让自己有过多的选项,但得有自己的价值,毕竟是每天要向公司领工资的人,不想混着,因为年轻。
这些年,我追过很多公司,一度很多想法让我自己觉得可怕,因为我曾后悔没早些进入某些公司,但这样人生才完美,每天看着不同的人生路,听着不同的小道消息,娱乐别人也娱乐自己,只是多了一份判断的能力,对自己的判断,也对行业的判断,更对人的判断。
我总会在不该出现时出现,但无关紧要,因为我还在这,一直在这……

被“绑架”的产品经理

你是被“绑架”的产品经理吗?

看多了,听多了,对于“绑架”这个词或许更适合很多的产品经理,个性张扬的年代,很多产品经理已经被拘束了,没有了想法,没有了激情,更失去了很多机会,特别是在浮躁的一线城市,当没有足够的时间思考时,你只有被架着走的份,不断变化的需求,繁忙的加班,众人的埋怨,自己也逐渐的迷失了自己谁改变谁已经不再重要,一个产品经理,比专业技能比不上团队中任何一员,那你凭什么在团队中立足,用什么让团队走的更远,变的更强?在这人人都是产品经理的年代,每个人都有自己的产品想法,技术要能实现,UI又想酷、炫,交互又想要好的交互效果,而上级除了要有用户,还得要求加入商务,运营得想如何把产品玩转起来,市场BD得想如何获得更多的合适……这不是一个简单的产品了,产品经理如何驾驭?

为什么会被“绑架”?

谁是产品最有发言权的人?CEO。毫无疑问,这个是最直接的答案,CEO是最大的产品经理,如果不服从只有走人的份,多少人是为了老板做产品,多少产品因为这样而变的“笨重”。
谁是产品最核心的成员?没有。因为团队中每个人都不可或缺。从来不相信一个人可以撑起一个产品,但我更相信一个团队可以将产品做强,做大。
谁最可缺?产品经理。移动互联网时代,最缺的是产品经理,最不缺的还是产品经理,看过太多技术直接替代产品经理的现象,或许有时需要的不是产品经理,而是项目经理。

怎么做到不被“绑架”?
学会say no。拒绝一些不合理的需求,人人都是产品经理,但并不代表谁都有权利决定产品的方向和功能。这是你的强项,这也是你要承受的,会挨批,会有不理解,但请保持一颗强大的内心,产品经理必须要有一颗承受的住打击的内心。
懂点技术。或许你可以不懂写代码,但请懂一点技术,不是要你去写代码,而是你知道某些功能会实现你可以在其它产品上看到。当遇到想做的,去谷歌、百度,去咨询,去探讨,没有实践就没有发言权。实践并不一定是自己的,而可以学习的。
判断力。你必须要有分析判断能力,哪个市场你能进入,哪些产品你不能接,谎言和浮躁已经成为行业的代名词,遇到好的公司是你的幸运,遇到不适合自己的当断则断,有时薪资、机遇会成为影响判断力的因素,请给自己一个冷静的时间。
放下、宽容。产品经理很多时候不会放下,抓着一堆遥不可及的东西,想要让上面高兴,也想让自己得到重视,其实你什么也不是,每个人都有一定的价值,但并不是不可缺,你得学会将自己放下,对别人宽容一点,也对自己宽容一点。

不想继续写下去了,多年之后会感谢这些年被“绑架”,让我走的更远,走的更加坚定。产品经理是服务型的,很多时候为了产品、团队在牺牲自己的利益和方向。只是因为有爱,有想做产品的一颗热诚的心。这也是可以坚持一直走下去的勇气,我们有千万次放弃的机会,但我们没有,因为我们是一名产品经理,我们字典里没有放弃这二个字。