Friday, April 29, 2016

How to Install and configure Jenkins on CentOS 6.4



you can see this Link:

http://www.linuxfunda.com/2013/11/17/how-to-install-and-configure-jenkins-on-centos-6-4/

如何发布你的项目到Jcenter?


教程:
http://www.cnblogs.com/qianxudetianxia/p/4322331.html

Android apk 是如何加载到内存 运行的?

我有一个问题,application and activity 谁先加载的,如何加载的?

How to use Application:
https://www.mobomo.com/2011/05/how-to-use-application-object-of-android/


How to config hotfix use Nuwa?


1  Root Program
build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0-rc1'
        classpath 'cn.jiajixin.nuwa:gradle:1.2.2'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }
}

allprojects {
    repositories {
        jcenter()
    }
}


2  module   build.gradle

add  apply plugin: "cn.jiajixin.nuwa"

apply plugin: 'com.android.application'apply plugin: "cn.jiajixin.nuwa"


and

dependencies:

dependencies {
    compile 'cn.jiajixin.nuwa:nuwa:1.0.0'

}



Now  I meet this question:

原来是 gradle 版本不支持的原因:

如果用此版本,会报错Error:Cannot get property 'taskDependencies' on null object,乖乖降低到1.2.3,木有此问题

如果,这里的版本修改了话, 对应的这里的版本也要修改:
之前用的是 2.10  改成 2.2


有问题的版本
classpath 'com.android.tools.build:gradle:2.1.0-rc1' 
classpath 'com.android.tools.build:gradle:1.5.0' 

You can see the detail:  how to resolve it?

这个地方要
download the new gradlew version
So it is maybe so slow!





ProGuard
-keep class cn.jiajixin.nuwa.** { *; }

Now  we can  change the code and build the apk:


How to use Nuwa:

1  设置配置信息
   初始化 和 加载路径
 */public class HadesApplication extends Application{


    @Override    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);        Nuwa.init(this);        Nuwa.loadPatch(this,"/sdcard/patch.jar");    }


}


2  运行APK 会在 app/build/output/目录下面自动生成  nuwa 的目录


 将这个目录copy  到 一个指定的目录;
    Documents/Code/nuwa


3  修改你的代码 或者 你的bug  然后执行下面的命令

 ./gradlew clean nuwaDebugPatch -P NuwaDir=/Users/Hades/Documents/Code/nuwa

然后会在  app/build/output/nuwa/debug/目录下面生成 patch.jar  文件
这就是我们的补丁文件,
 这个时候我遇到一个问题:


可是 我明明已经定义了呀:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:nuwaDebugPatch'.
> $ANDROID_HOME is not defined

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED





THanks to:
https://github.com/GeekHades/Nuwa

http://www.jianshu.com/p/72c17fb76f21

Former Tor Developer Created Malware for FBI to Unmask Tor Users Wednesday, April 27, 2016 Swati Khandelwal 1816 342 28 2273 IN BRIEF According to an investigation, Matthew Edman, a cyber security expert and former employee of the Tor Project, helped the FBI with Cornhusker a.k.a Torsploit malware that allowed Feds to hack and unmask Tor users in several high-profile cases, including Operation Torpedo and Silk Road. Do you know who created malware for the FBI that allowed Feds to unmask Tor users? It's an insider's job… A former Tor Project developer. In an investigation conducted by Daily Dot journalists, it turns out that Matthew J. Edman, a former part-time employee of Tor Project, created malware for the Federal Bureau of Investigation (FBI) that has been used by US law enforcement and intelligence agencies in several investigations, including Operation Torpedo. Matthew Edman is a computer scientist who specializes in cyber security and investigations and joined the Tor Project in 2008 to build and enhance Tor software's interactions with Vidalia software, cross-platform GUI for controlling Tor. After 2009, Matthew was hired by a contractor working for defense and intelligence agencies, including the FBI, to develop an anti-Tor malware. The Tor Project has also confirmed the same, saying, "It has come to our attention that Matt Edman, who worked with the Tor Project until 2009, subsequently was employed by a defense contractor working for the FBI to develop anti-Tor malware." Moreover, the team said Edman worked only on the Vidalia project that Tor dropped in 2013 and replaced it with other tools designed to improve the user experience. Also Read: How Hacking Team and FBI planned to Unmask A Tor User. Cases Solved with the Help of Former Tor Developer Matt-Edman-tor-developer Since 2012, Edman has been working at Mitre Corporation as a senior cyber security engineer assigned to the FBI's internal team, dubbed Remote Operations Unit, that develops or purchases exploits and hacking tools for spying on potential targets. Due to his work for the Tor Project, Edman became an FBI contractor assigned a task to hack Tor as part of Operation Torpedo, a sting operation to identify owners and patrons of Dark Net child pornography websites that used Tor. Also Read: How Spies Could Unmask Tor Users without Cracking Encryption. Besides working on Operation Torpedo, Edman also helped the federal agency shut down Silk Road, the first most popular DarkNet drug marketplace, and arrest its convicted creator Ross Ulbricht. According to testimony, it was Edman who did almost everything from tracking $13.4 Million in Bitcoins from Silk Road to tracing Ulbricht's laptop, which played a significant role in Ulbricht being convicted and sentenced to the life term in prison. Cornhusker/Torsploit Malware to Unmask Tor Users To unmask Tor users, Edman worked closely with FBI Special Agent Steven A. Smith to develop and deploy malware, dubbed "Cornhusker" or "Torsploit," that collect identifying information on Tor users. Tor is an anonymity software used by millions of people, including government officials, human rights activists, journalists and, of course, criminals around the world to keep their identity hidden while surfing the Internet. This is why, the Tor software is used by people to visit Dark Net websites, like child pornography sites, which are inaccessible via standard web browsers. The Cornhusker malware exploited vulnerabilities in Adobe Flash Player to reveal Tor users' actual IP address to an FBI servers outside the Tor network. Also Read: FBI paid $1 Million to University Researchers for Unmasking Tor Users. The agency hijacked and placed Cornhusker on three servers that ran multiple anonymous child pornography websites. The malware then targeted the flaws in Flash inside the Tor Browser. Adobe Flash Player has long been considered as unsafe by many security experts, and the Tor Project has long warned against using it. However, many people, including the dozens revealed in Operation Torpedo, make use of Flash inside their Tor Browser. Though, according to court documents, Cornhusker is no longer in use, the FBI is using its own funded "Network Investigative Technique" (NIT) to obtain IP and MAC addresses of Tor users in the course of investigations. However, the so-called network investigative technique has been considered as invalid by the court during a hearing on the burst of the world’s largest dark web child pornography site, PlayPen. On Monday, the opposition lawyers have filed a motion against the FBI to reveal the full source code of the malware it used to hack suspected visitors of PlayPen, or simply drop the case. About the Author: Swati - Hacking News Swati Khandelwal Swati Khandelwal is Senior Technical Writer and Security Analyst at The Hacker News. She is a Technology Enthusiast with a keen eye on the Cyberspace and other tech related developments. AlienVault Subscribe Free and be the first to know Popular Hacking Stories. Latest Stories In-Brief: Telegram Vulnerability, Malware in Nuclear Plant, Anti-Tor Malware and Hotpatching ExploitChild Porn Suspect Held in Jail for 7 Months for refusing to Decrypt Hard DrivesFormer Tor Developer Created Malware for FBI to Unmask Tor UsersPLATINUM Hackers Hijack Windows Hotpatching to Stay HiddenThis Tiny Computer has no Battery, Powered Wirelessly from Radio WavesFor the First time, FBI discloses a Flaw to Apple, but it's already Patched!Pro-ISIS Hackers release 'Kill List' Of 43 United States OfficialsIn-Brief: Spotify Hack, Secret of Chrome OS, MIT Bug Bounty, Nanowire BatteriesLaser Gun to Detect Bombs and Chemical Weapons from 100 Feet AwayDDoS Extortionists made $100,000 without Launching a Single Attack Comments (6) AlienVault TRENDING STORIES Bank with No Firewall. That's How Hackers Managed to Steal $80 Million Bank with No Firewall. That's How Hackers Managed to Steal $80 Million Hacker Installed a Secret Backdoor On Facebook Server to Steal Passwords Hacker Installed a Secret Backdoor On Facebook Server to Steal Passwords How Did Hackers Who Stole $81 Million from Bangladesh Bank Go Undetected? How Did Hackers Who Stole $81 Million from Bangladesh Bank Go Undetected? In-Brief: Spotify Hack, Secret of Chrome OS, MIT Bug Bounty, Nanowire Batteries In-Brief: Spotify Hack, Secret of Chrome OS, MIT Bug Bounty, Nanowire Batteries This Tiny Computer has no Battery, Powered Wirelessly from Radio Waves This Tiny Computer has no Battery, Powered Wirelessly from Radio Waves I keep 200+ Browser Tabs Open, and My Computer Runs Absolutely Fine. Here’s My Secret. I keep 200+ Browser Tabs Open, and My Computer Runs Absolutely Fine. Here’s My Secret. FBI paid Hacker $1.3 Million to Unlock San Bernardino Shooter's iPhone FBI paid Hacker $1.3 Million to Unlock San Bernardino Shooter's iPhone DDoS Extortionists made $100,000 without Launching a Single Attack DDoS Extortionists made $100,000 without Launching a Single Attack Opera Browser Now Offers Free and Unlimited Built-in VPN Service Opera Browser Now Offers Free and Unlimited Built-in VPN Service More than 1 million People now access Facebook Over Tor Network More than 1 million People now access Facebook Over Tor Network

http://thehackernews.com/2016/04/tor-unmask-malware.html

Thursday, April 28, 2016

Android 热修复技术

遇到的问题:

为什么只需要将:
adb push app/build/outputs/nuwa/debug/patch.jar /sdcard/

为什么只需要将patch.jar 发布到 sdcard
重新启动app,Bug Fix。   重启的时候,是如何加载的呢?不知道为什么。谁可以为我解答!?

经验点:

1、生成patch,jar,也就是把修改的地方打包成patch.jar(这里的jar不是普通的jar,而是dex的jar);

2、将patch.jar的dex文件放在其他的分dex文件之前。

不错的链接:
https://github.com/supengchao/NuwaDemo/issues/1






Android 是如Compile
http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading





技术点:


HotFix
https://zhuanlan.zhihu.com/p/20308548

DemO;
How to use Nuwa implement Hotfix?
http://www.jianshu.com/p/72c17fb76f21
Demo:
https://github.com/archmages/HotFixSamples




热修复:
http://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a&scene=0#wechat_redirect


android dex分包方案
https://m.oschina.net/blog/308583
简单的概括一下,就是把多个dex文件塞入到app的classloader之中,但是android dex拆包方案中的类是没有重复的,如果classes.dex和classes1.dex中有重复的类
multidex方案实现。然后在插入数组的时候,把补丁包插入到最前面去。

 we realized that we could work around this problem by breaking our app into multiple dex files, using the technique described here 
http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html
It catch me that:  The Dalvik VM provides facilities for developers to perform custom class loading. Instead of loading Dalvik executable (“dex”) files from the default location, an application can load them from alternative locations such as internal storage or over the network.




Build system:
Apk how to create , You can see this link, I think you just see the image  you can
see it.
http://developer.android.com/sdk/installing/studio-build.html






热修复原理介绍:
http://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a&scene=0#wechat_redirect








Nuwa:



感谢:

    刘强 昨天,他跟我提到 热修复技术。我之前从来没有听说到的技术,感觉非常的牛逼,不过,其实 真的是很牛逼!


    JasonRoss
    github:   https://github.com/jasonross


Tor is not sage, I don't believe it,Maybe it just FBI send smoke bomb!

http://thehackernews.com/2016/04/tor-unmask-malware.html

Wednesday, April 27, 2016

Android 如何优化你的colors.xml

因为,一开始命名的不规范。一开始的时候,没有人来给你讲解这个规范的东西,所以,每个人写的代码都各成体系。所以,写的时候也是。各有各的特色,真他妈的牛逼。有的时候,其实自己写的代码,如果不是深思熟虑的代码,就是在给自己挖坑,技术的坑,早晚是要填的,当你填不满的时候,你选择了跳槽。第二个哥们来看到你的代码的时候,就他妈的傻逼了,因为,老板不会给他时间,让他重写代码。重构花费的时间和精力会更大。在一坨屎的代码之上,进行重构完全就是在天方夜谭。你是屎壳郎滚雪球,找死。  重构花费的时间和精力是重写的好几倍! 这个在乎个人的选在。个人觉的重构要比重写难得多。

看看下面的代码的命名:  给你一分钟的思考时间,你能明白她的意思吗?


反正,我看了半天也没有搞明白 1 ,2 ,3 ,4 是什么意思?
这个东西,就是 一开的时候,命名不好,后来,新来的同事,一开始的时候,也会有跟我一样的疑惑,但是,过不了几天,他们就会搞明白,这结果色值分别代表什么意思。但是,they don't 去改的,因为,他们已经习惯了。这里的问题,出在一开始 创建项目 制定规范的老大的身上,他的命名的能力,真的让人 无语。  或者说,他根本就不在乎这个的命名。
有的时候,我宁愿多花的时间,去想一个 简洁的名字。 我觉的起一个好名字,作为一名,牛逼的程序员的基础。


关于:  色值这个东西,一开始的时候,就会定义好的。但是,后来的人,并不知道,所以,又他妈的定义了一大堆的色值,后期维护的就会很麻烦的。我们的项目很大了,我看了一下,我们 colors 里面,大概有他妈的300 多行,然后,我下午有活了,下面是我代码精简之后的 colors.xml





我很开心,I cut down 将近 200 多行,Because 这 88 行里面还有将近 20行的注释。这样,新人来的时候就会可读懂, 这个色值是干嘛的,那个色值是干嘛的!

说实在的,我已经很庆幸了,我的前辈们很给力了。你想想,如果这个地方,很多人用硬编码:就是set 色值,直接写到了layout.xml 布局文件之中,我是没有勇气修改的。除非我是傻逼。但是,硬编码是初学者 很容易犯得错误,为什么呢?因为,硬编码,可以很快的出来,再就是,很多的书籍上因为书本身的限制,还有一些水平很低的人出的视频教程,他们本身就没有什么规范可言的,说白了就是瞎鸡巴写。只要能跑就行!他们不用写出简洁的代码。想要写出简介代码的人是对自己的技术很高的要求的人,我会觉的写出简洁的代码是一种艺术!

下面写一下我的感悟:
1  命名要简短
一开的时候,我只在乎命名的意义了,但是忽略的长度的影响。我不愿阅读很长的代码,至于名字也是一样的。我不喜欢名字很长的变量和引用。因为,他会让你的代码一行里面,变的很长很长
例如:



2  命名要有意义

至少,你看到名字的时候,你要知道他是什么意思,不能,让你的同事,看了半天的名字,不知道什么意思。还要去问你,这样的效率很低很低。
给烂代码添加注释,不如起一个好名字,其实相对而言,起名字的时间会更少的!
如果,你项目已经很大了,修改名字的代价太大了。我建议,你添加一些注释,简要的说明,她的作用就好了


今天,我将 font_black_2 名字改成了, font_base_color. 自己起名的时间花少了。一开始觉的这个不错,但是,我修改引用,改到一半的时候,突然觉的font_normal_color 会更好点!不愿意改了,就为了修个font_black_2 这个无意义的名字,我起名字话了一分钟,但是,修改整个项目中的引用,我花费了2个小时!
她麻痹的,我的手指都他妈的敲疼了~

但是,我看最终的结果,我很开心



以后来的写项目的哥们。不用那么累了, 可以更快的明白,什么意思!

我会告诫他们,
当你想往 colors.xml 里面添加 色值的时候,一定要,先搜索有以下有没有重复的色值,有的话直接用。 但是,有的时候,你会觉的名字起得不贴切。这个时候,你就要有重构代码的勇气。其实,名字起得越抽象越好。 太具体的名字,你自然会知道问题出在哪里!



个人的小建议:
1  色值这个东西, 在APP初期的时候,一定要 定好。 修改是不可避免的。但是,大体的框架是要定好的,例如:
背景色值: Activity  Fragment  View CustomerView item
字体的色值:  font_title_color, font_normal_color, font_hint_color
还有主色调和副色调,
primary_color   auxiliary_color

2  硬编码的孩子   直接  辞掉

3  命名简洁

4  布局中,最好多使用 style.
   这种情况,大多是应对 布局很相似的View.   
  如果,你的项目,对style 抽取的好的话,基本上,修改色值的时候,就会变的更加的简单!

   灵活的使用 style 是很好的习惯奥!

但是,不是每个人都会有这种意识,Do the best one!

If you have the heart , You can do it! because clean code is art!


















Tuesday, April 26, 2016

一门新的语言, 入门很难,进去之后就会 感觉 很困难

   最近想学PHP,突然感觉一入豪门深似海呀, 之前是学过PHP, 但是现在也许是写Java写的时间太长了,导致了,自己虽然有学习的心,但是一直行动不起来。
   技术壁垒,感觉自己只要学会了Java,就可以了,没有必要再去学习别的东西,给自己找借口,再说了,这么多东西,你学的过来吗?显然,答案是否定的,很多的时候,我们不能只能满足与现在的状态,现在状态和技术,只是为了活着,为了让自己生存。但是,自己应该有自己的技术追求,不要让技术的壁垒,给局限死!

技术的递归

现在的技术,发展的很快。

很多的时候,我们慢慢的就落后了,如果,自己不积极进取的话。很多的时候,你就会被拍在沙滩上~

Monday, April 25, 2016

代码的惰性

我们一开始在实现功能的时候,一定要记住,尽量的使用最好的方式。当初我做一个功能的时候,打算尽量用最简单的方式实现,当初只是为了方便,而且时间很紧急。所以,就把所有的功能都写到了一个Activity 里面,导致了这个Activity 非常的复杂。所以,在做的时候,一定要用最好的方式实现,不要得过且过。否则,后面代码修改和维护的时候,你就会哭了~

如何设置 AlertDialog.builder 全屏

今天,想实现一个 AlertDialog 沾满全屏的



final AlertDialog dialog = new AlertDialog.Builder(activity).create();dialog.show();  1  这里必须先设置

//2 TODO 自定义View
View dialogView = inflater.inflate(R.layout.dialog_gps_layout, null, false);
View divider = dialogView.findViewById(R.id.divider1);RelativeLayout cancelRL = (RelativeLayout) dialogView
        .findViewById(R.id.cancel_rl);RelativeLayout comfirmRL = (RelativeLayout) dialogView
        .findViewById(R.id.confirm_rl);TextView tvTitle = (TextView) dialogView
        .findViewById(R.id.dialog_title);TextView tvMessage = (TextView) dialogView
        .findViewById(R.id.warning_words);TextView tvConfirm = (TextView) dialogView.findViewById(R.id.confirm);
if (title == null || "".equals(title)) {
    tvTitle.setVisibility(View.GONE);} else {
    tvTitle.setText(title);}
tvMessage.setText(message);tvMessage.setGravity(Gravity.CENTER);cancelRL.setVisibility(View.GONE);
if(set_button_green){
    tvConfirm.setTextColor(activity.getResources().getColor(R.color.primary_color));}else{
    tvConfirm.setTextColor(activity.getResources().getColor(mConfirmBtnColor));}
tvConfirm.setText(confirmBtnText);

//3  设置View 的尺寸WindowManager windowManager = activity.getWindowManager();Display display = windowManager.getDefaultDisplay();WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();lp.width = (int)(display.getWidth());lp.height = (int)(display.getHeight());dialog.getWindow().setAttributes(lp);

//4  设置View dialog.getWindow().setContentView(dialogView);



这种方案可以解决 全屏的显示。



How to study git?



https://git-scm.com/about

How to push local git to server?


I have not find good way to resolve this quesiton!

You can following this way:
FIrst :

You must set up git repo in the server:
git init --bare demo.git

In your client PC or Computer
Second: you just use clone command to clone the code:
git clone ssh:ip/directiry/demo.git

So EASY

Now you just start your work or you copy your had write code to the program! Just so easy!

Now you have done~


I try this way:
http://stackoverflow.com/questions/8978650/how-do-i-move-my-local-git-repository-to-a-remote-git-repository

can not resolve this question



Sunday, April 24, 2016

开发之必备的工具

作为一名开发者,
我觉的应该具备一些基础的技能。作为开发者,工具是最基础的,如果,没有很好的工具,你该如何处理你的工作,你的效率会大打折扣。

我觉的Google 搜索引擎是必备的工具,如果,没有用过Google 在我心目中就没有加分项了。

如果,提问。提问题是很重要的,描述你的问题,只你的问题描述的足够详细的时候,你才可以获得答案。这个世界上,你约到的问题,别人没有遇到的问题,实在是太少了!如果,你在某一领域做的足够深了,我觉的这种人,非常的少! 所以,对于大多说人来说,只要学会用所搜引擎,就可以解决你约到的几乎所有的问题!关键点,在于如何的描述你的问题,只有当你的问题,描述的足够详细的时候,你能距离答案更近!

自我更新,技术是在不断进步的,学如逆水行舟,不进则退! 是的,这个世界上,牛逼的人太多了,所以,只要自己足够的努力的话,你也可以跻身那个领域!

其实,现在,根本不需要拼智商和天赋。仅仅是拼努力,就可以拼掉大多数的人!

学习的水平,正如 正态分布的图一样的,百分之60% 都是平庸的。只要,你自己努力的话,就可以做很多的事情!

Friday, April 22, 2016

写代码的心态

不论做什么。都需要心态来做,如果,你的心态炸掉的话,其实你是在做负功,你会发现,自己的写的这些代码需要,全部改写。很多的东西,都要修改,很多的事情。并不是自己想想的那样子的。

心态炸了时候,什么都不要做了! 然后,在处理你的事情,不然,你其实在做不同的事情!

处理好自己的心态!

Android Studio 查看注释的快捷键

F1

重构代码

我们写的代码 需要不断的更新,不断的重构。

因为,一开始我们写不出来很简洁的代码。因为,我们都是从不知道到知道,但是,这之间的路程,有的人会走几个月,有的走几年,甚至是一辈子,那些一辈子的不是干程序员!

每个人,都有自己的代码洁癖。但是,有洁癖,不一定就会去愿意修改自己的代码。因为,写该代码,意味着 需要改动的不只是一两处,老板不会多给你钱,你完全是免费的义务劳动,很多人都是在这没想的! 
我感觉代码就像是,自己的老婆一样,我是一个欣赏唯美东西的男人,所以,我希望自己的老婆很完美,完美,有带你吹毛求疵了,正如,有些人会笑话我,就你这样的,还想找个完美的女人,做梦吧,癞蛤蟆想吃天鹅肉。 你怎么知道,我吃不着呢?为什么小偷会屡屡的得手?为什么老鼠总能偷到你的东西吃呢?因为,他们够专注,他们花费的时间是你的数倍!所以,他们总得到他们想要的!
我打算至少花费五年的时间,来找到自己的完美的另一半。这个很难,有的时候,有缘无分,有的时候有份无缘。很多东西,都不可以强求,就算你再牛逼,就算你是国家主席,就算你是国民老公王思聪,但是,还是有些马子你泡不到的!因为,她们就是不喜欢你!

自己的代码,就要像对待自己亲爱的老婆一样的呵护备至。只有这样子,你才能够不断的进步!因为,你如果不好好的呵护自己的老婆代码,你会发现,她越来越难看,以至于,到最后,整容整的你自己都不认识了!卧槽了,所以,女人需要保养,代码需要整洁!

我们,一天都在和各种事情打交道,处理不同的事情!晚上自己的技能等等。你会发现当你刚刚到一家公司的时候,你学东西是最快的 ,因为,你有危机的意识,慢慢的就会消磨殆尽的!
还有,你一天的时间是有限的,但是,你会发现,自己一天的时间很多的时候都是在不同的交流,把自己的时间浪费了,你会很头疼的!
当你在处理这个问题的时候,你有发现了别的问题,你就开始处理别的问题,然后,做了好久,你的第一个问题还没有解决!这就是我遇到的现状。所以,我需要学会,选择,选择开始和结束。不要在别的事情 浪费自己宝贵的时间!

ARM 的发展史


Intel以前也搞ARM,比如基于xscale内核的PXA系列。但是Intel觉得不太专注,且做ARM还要购买ARM公司的授权,自己有x86的全部产权,为什么还要用ARM?于是就把xscale卖给Marvell了,自己做基于x86的低功耗方案。他们相信ARM的主要优势是功耗低,如果x86能够达到这一点,且软件兼容性更好,那更具有竞争优势。 
但是x86毕竟是CISC指令集,在降低功耗方面,比起RISC指令集的ARM,具有更大的难度。虽然ATOM的功耗做得很不错,不过,基于ARM的处理器,功耗更令人满意。移动设备上面,功耗毕竟是首要考虑因素! 
在移动设备领域,Intel本来就没有什么优势,它面临更多芯片厂商的挑战。虽然ARM是ARM公司的东西,但是毕竟ARM公司只做IP授权,不自己生产CPU,似乎也不设计最终面向消费者的芯片。移动设备要求芯片的集成度更高,光一个计算核心是远远不够的,往往一块芯片上要集成大量IO控制器,加速指令模块(比如Intel以前在PXA系列中的跑MMX指令的协处理器),甚至GPU什么的。这些都是ARM公司自己不怎么做的,但往往又是众多芯片厂商的强项。因此各大芯片厂商的机会就来了。他们觉得集成了ARM的芯片怎么说都是自己的东西(ARM核心仅仅是一个功能模块),不像用x86那样寄人篱下,所以也都乐意把ARM核心集成进来。因为用ARM的芯片多了,所以基于ARM做东西,软件兼容性也会越来越好,虽然比不上x86,但是怎么都比自建炉灶好上数百倍,因此,ARM也逐渐成为移动芯片的计算核心的唯一选择。 
从架构上来说,也许ARM并不比其他RISC芯片先进很多。但是因为它一直以来就足够简单,足够省电,足够省存储(32位芯片可以用16位的thumb指令集),所以这种简单就造就了它现在的优势。很多年前ARM就针对Java做了优化,所以现在Android大行其道,ARM的这些先见之明就体现出来了。

Thursday, April 21, 2016

Wednesday, April 20, 2016

路漫漫

这条道路还真是,路漫漫呀。

公司招聘我,就是让我做产品,解决bug,  假如没有了Bug, 我不就失业了吗? 这个世界就是这样子,你就是要点,被人做不了的,才能在这个世界 好好的活着。

没有技术的劳动,真的是很低廉,而且 各种的社会的背景在里面,因为这个世界傻逼很多,聪明人也有很多的!

这个世界的傻逼真的是太多了

活着的真的好累呀。 
这个世界太大了,所以,傻逼太多了。真的是醉了,产品的高仿真性,真的很有必要。要不然,后期的版本迭代,真的是好大的问题。今天,老孙突然放了一张傻逼写的bug file! 卧槽,竟然是手写的,卧槽了,看了老半天,也没有看明白啥意思!真他妈的日了狗了!

是啊,真的很想让别人带带我,老司机带带我。

呵呵,
不是针对你,我是说在做的各位,都是傻逼!

1  第一  学会使用高仿真的 产品设计工具

2  第二:  提Bug 的途径,应该讲bug 测试系统,对一部分人开放,仅仅是自己人,是测不完善的。 当然,这样子 程序员会比较类, 这也好过 他妈的看 手写的bug 强呀!真他妈比的日了狗了!

Tuesday, April 19, 2016

Android gradle 如何在打包的时候 动态的添加 debug

buildTypes {

    debug {
        applicationIdSuffix project.APP_IS_DEBUG        multiDexEnabled true        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    }


}





Thanks to
http://www.jayfeng.com/2015/11/07/Android打包的那些事/

关于信用卡的思考

没有信用卡的时候,多么希望拥有一张信用卡,似乎,一旦已有了一张信用卡就已经迎娶白富美,走向人生巅峰了!哈哈,屌屌的,所以,就想方设法的去办理这个东西!

后来,有了一张信用卡之后,开始的时候,特别的新鲜,因为,这个东西可以透支挺好玩的。因为,我从来没有试过这种消费的理念,所以,特别的想尝试一下。所以,各种买,尽管自己的手里面,没有多少钱,但是,我真的买了很多的东西,当初的玩,完全就是一种想为了刷卡消费的里面。完全是为了消费而消费了!那个时候的我,似乎正在乐在其中,根本没有发现,这个是给自己埋下了,很深很深的坑。当初的收到宝贝的时候,是很开心的,因为我很享受拆包装盒的感觉,因为,没有拆开之前,你不知道里面有什么,这种不理智的超前的消费,最终,需要还钱的时候,我发现了,这太他妈的的坑了!我似乎跳进了无尽的深渊。之前的我似乎一点都没有发现,这个问题: 原来我透支的钱是要还的? 似乎,透支的时候,从来没有想过这个问题呢。 真是的醉了,感觉自己就像是一个小孩子一样的幼稚。哈哈

当我的,看到自己的信用卡额度刷光的时候,看到自己的京东白条的额度见底的时候,当看到自己的支付宝的蚂蚁金服没钱的时候,才发现,原来自己已经花了这么多的钱 。而且,这些钱是要还的,这个问题,让我蛋疼了,于是乎,就给自己列了一系列的  还钱的计划。

很久之前,跟超哥讨论过这个问题,到底要不要办理信用卡。超哥的消费理念很保守,我一直不知道为什么。但是,今年开春的时候,我终于知道了为什么,因为,你借银行的钱,他妈的是要还钱的呀!超前消费的理念是很不错的饿。但是,如果你把所有的钱都超前 消费了,那么你过几年之后依然是个穷人。因为,你把所有的钱都花了! 没有自己的理财的计划。你不理财,才不理你。其实,金钱这个东西不是说,你想就可以的,一口吃个胖子,是不可能的。这个就跟自己的技术一样,是需要积累的,而且是漫长的积累,当你有足够的积累之后,才可以厚积薄发,自己想要的东西太多了,但是,你会发现自己的能力查了好多呀!很多的时候,你会发现自己的到底多么的幼稚呀!

我觉的,消费需要理智的消费。不是说,超前消费不好,只是你需要适度的超前消费,这样才可以的。不然,度过的超前消费,会让你背上沉重的资金的压力的。以至于,你不能随便的跳槽,不能有任何想法,很简单,因为你的钱早就已经画出去了,你已经预支了你一年的薪水的时候,你会感觉自己生活的压力好大呀。因为,每个月你的薪水一发出来,除了一点生活费之外,所有的钱都要交给银行。因为你的信用卡需要还钱。所以,导致了,你会觉的自己的薪水发完就没了。因为,你是个月光族!这样子的生活,你的压力好大的。因为,你手里面没有存款,导致了你的生活压力骤增。你不敢自己跳槽,不昂出去旅游,一块钱以上的活动不要叫我,没钱,没钱说话不硬气!就这样子,自己省吃俭用了一年了,终于把信用卡的账单还完了!但是,你手里面依然是一分钱都没有呀!~总之 还是蛋疼。还是,一块钱以上的活动,不要叫我! 因为没钱。


哈哈,这种恶性的循环,很差劲的!你应该让自己的生活进入良性的循环。这样子,你会觉的生活是如此的美好,就会有钱去旅游,有钱去孝敬自己的父母,每个月为自己的爸妈买点东西,我觉的这习惯非常的好,因为,很多人根本就没有这个意识的!其实,根本画不了多少钱,就可以让他们很开心的,毕竟爸妈样子自己小半辈子,不容易,一把屎一把尿的吧自己拉扯大了,自己在不孝敬老人,自己还是人吗?老人一般是不愿意,你为他们买很多的东西的,虽然,你买了他们口头上 说说,不要乱花钱,省点钱,以后花钱的地方多着呢! 但是,他们的心里面还是很开的,因为他们会感觉到自己的孩子,很孝,我感觉中国的孝道,是非常值得推崇的!很多人,是自己奋斗了一辈子, 树欲静而风不止,子欲养而亲不在。 我不希望自己这样子。尽管,我的爸妈还不算太老,我要从现在开始,珍惜现在的时光,改善他们的生活,让他们过上幸福的生活,不可能要什么有什么,尽量的让他们衣食无忧。不论爸妈做的错还是对,他们的初心都是好的,因为,他们的初心都是让自己的孩子好!因为,这个世界最伟大的爱,是父母对孩子的爱,孩子对父母的付出,永远也赶不上父母对孩子的爱,我说的大多数的家庭。当然,会有一些奇葩的家庭,我就不说了!


如何,让自己过的更好呢?
自己的工资,不要全部都来还贷款啥的。所以,要克制自己的消费的理念!建立自己的根据地,每个月存1000 元,当做自己的临时资金。可以随时的调用的资金,这部分自己,不要轻易的乱用,这部分钱,是自己遇到紧急的事情的时候,才可以用的钱。比如,住院,自己家里面有紧急的事情需要用。每个月1000,日积月累,也是很大的一笔钱的!这是一种习惯,当你养成一种习惯的时候,你会庆幸自己的这种理财的习惯!

信用卡也是要用的,这是不要乱买东西。买的东西要用得到,信用卡给自己估算一个额度,尽量的不要超多这个额度。到了还款日,直接把钱换上,尽量的不要分期贷款,因为,分期的手续费还是很高的,自己把我尺度的吧!

如果,你还有剩余的钱的话,你可以购买一点基金啥的。可以放在银行里面。自己把握吧。股票的话,风险实在是太高了,看你自己的情况,如果你很喜欢的炒股的话,其实可以的。加油。 可以分一部分钱,买基金, 一部分钱买股票!

前提是你的薪水可以支付你的生活,控制你的欲望。因为你是靠着欲望活着的,当你的欲望越多的时候,你会感觉到自己还活着。当你没有欲望的时候,那个时候,你可能已经不再这个世界上了!

我是一个欲望驱动的孩子!

当你,每个月都有结余的时候,你就觉的自己的生活会越来月好的!

很庆幸自己还单身。

因为,单身的时候,没有那么多的逼事。毕竟,如果,你有了女朋友,她需要花费很多的时间来照顾她的,除了做爱,其他的付出也是很多的,你可能就没有自己的自由,更多的是金钱上的自由,我是一个很喜欢自由的人,不喜欢被束缚。所以,目前的我,暂时不想找一个会管我的女孩子当女朋友!我想要的只一个可以做爱的女孩子!嘿嘿!















how to config alias in mac

我们有一些经常用功能和工具,我们需要配置 一下,方便我们快捷的使用。

语言这种东西,是很完美的,主要的作用就是,让我们生活的更好。

如何配置?  Mac

open teminal  or iterm

cd ~

vim .bash_profile

if file doesn't exits, You can use this command:
touch .bash_profile

click    i

input

alias    github="cd  ~/document/  you want to go to"        no  black space in  "="


Alter all :

You should reload the file use this comand:

source .bash_profile


OK

you in items input

github   you just input github dir~  so fast!


My  shill will change mylife!







Android 反编译工具



Thanks to :  
http://blog.csdn.net/ithomer/article/details/6727581



超牛逼的Tool:    JADX

https://github.com/GeekHades/jadx






Tool download URL:

APKTool
http://ibotpeaches.github.io/Apktool/



If you use windows or linux:
http://download.csdn.net/detail/sunboy_2050/4633436

2016 Years I think myself

I love my life very much!

When I am child, I am poor. So  I can't do things that I want to do. This things is too much. The time is flying. I go to yantai university. I love this city very much! Because I love one girl in this city. I love this beautiful sea and views! 

I remember I just  speed one thousand yuan in one month. I think it is very a lot,That I speed this money. One I want to get some money from ATM, I rank. I same the before beautiful girl is getting some money. I look she get a lot money.  about two thousands. I hear she say that, I  just input more zero. As if she just want get two hungred, But she input more zero. I am thinking myself. Just now.I can't get two thousands without reason. This is background. I am poor, Not in life, also in my heart. I deep love that girl.Yes I love her very much! Because she looks very beautiful. Just so so.Not any more other reasons.

Because I am poor, So I must increase myself! Let grow up to the top of life! I have no much time! I just a farm man. I have  no background. at the same time, I should feel statify. Because I live for what? Money? love? or just for live?

I live just for love. I love this life. I love my life very much. I love anythings in my life.I love any things that beautiful things. I love the world! What I need, I think myself, let me to be better. No one is pretty. We all to grow up for better.













SIna 分享不成功 query other app provider, pkg:com.sina.weibo

com.meiliwu.xiaojialianhang.debug query other app provider, pkg:com.sina.weibo uid:10105








新浪无法分享的根本原因是因为 NDK的无法没有加载的问题:

04-19 18:27:18.575 22788-22788/com.meiliwu.xiaojialianhang.debug I/ActivityThread: com.meiliwu.xiaojialianhang.debug query other app provider, pkg:com.sina.weibo uid:10105
04-19 18:27:18.670 22788-22788/com.meiliwu.xiaojialianhang.debug D/mali_winsys: new_window_surface returns 0x3000
04-19 18:27:18.695 22788-24805/com.meiliwu.xiaojialianhang.debug D/dalvikvm: Trying to load lib /data/app-lib/com.meiliwu.xiaojialianhang.debug-1/libweibosdkcore.so 0x439b8e60
04-19 18:27:18.695 22788-24805/com.meiliwu.xiaojialianhang.debug D/dalvikvm: Added shared lib /data/app-lib/com.meiliwu.xiaojialianhang.debug-1/libweibosdkcore.so 0x439b8e60
04-19 18:27:18.695 22788-24805/com.meiliwu.xiaojialianhang.debug D/dalvikvm: No JNI_OnLoad found in /data/app-lib/com.meiliwu.xiaojialianhang.debug-1/libweibosdkcore.so 0x439b8e60, skipping init
04-19 18:27:18.875 22788-24805/com.meiliwu.xiaojialianhang.debug D/dalvikvm: GC_FOR_ALLOC freed 1103K, 7% free 28627K/30464K, paused 15ms, total 15ms



key:

 No JNI_OnLoad found in /data/app-lib/c


貌似跟NDK  的包名有关系

参考文章:


微信分享不成功

微信开发者平台

其他的配置信息 我就不说了。自己去看文档吧

这里的 MD5 key:

错误配置:


正确配置:

Monday, April 18, 2016

GeekHades HTTP 返回的状态代码 总结

如果向您的服务器发出了某项请求要求显示您网站上的某个网页,那么,您的服务器会返回 HTTP 状态代码以响应该请求。
一些常见的状态代码为:
200 - 服务器成功返回网页 
404 - 请求的网页不存在 
503 - 服务器暂时不可用 

以下提供了 HTTP 状态代码的完整列表。点击链接可了解详细信息。您也可以访问有关 HTTP 状态代码的 W3C 页来了解详细信息。
1xx(临时响应)
用于表示临时响应并需要请求者执行操作才能继续的状态代码。
代码 说明 
100(继续) 请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。 
101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备进行切换。
2xx(成功)
用于表示服务器已成功处理了请求的状态代码。
代码 说明 
200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果您的 robots.txt 文件显示为此状态,那么,这表示 Googlebot 已成功检索到该文件。 
201(已创建) 请求成功且服务器已创建了新的资源。 
202(已接受) 服务器已接受了请求,但尚未对其进行处理。 
203(非授权信息) 服务器已成功处理了请求,但返回了可能来自另一来源的信息。 
204(无内容) 服务器成功处理了请求,但未返回任何内容。 
205(重置内容) 服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。 
206(部分内容) 服务器成功处理了部分 GET 请求。
3xx(已重定向) 
要完成请求,您需要进一步进行操作。通常,这些状态代码是永远重定向的。Google 建议您在每次请求时使用的重定向要少于 5 个。您可以使用网站管理员工具来查看 Googlebot 在抓取您已重定向的网页时是否会遇到问题。诊断下的抓取错误页中列出了 Googlebot 由于重定向错误而无法抓取的网址。
代码 说明 
300(多种选择) 服务器根据请求可执行多种操作。服务器可根据请求者 (User agent) 来选择一项操作,或提供操作列表供请求者选择。 
301(永久移动) 请求的网页已被永久移动到新位置。服务器返回此响应(作为对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。您应使用此代码通知 Googlebot 某个网页或网站已被永久移动到新位置。 
302(临时移动) 服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置。但由于 Googlebot 会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知 Googlebot 某个页面或网站已被移动。 
303(查看其他位置) 当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。对于除 HEAD 请求之外的所有请求,服务器会自动转到其他位置。 
304(未修改) 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。
如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。由于服务器可以告诉 Googlebot 自从上次抓取后网页没有更改过,因此可节省带宽和开销
。 
305(使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。 
307(临时重定向) 服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置。但由于 Googlebot 会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知 Googlebot 某个页面或网站已被移动。
4xx(请求错误) 
这些状态代码表示,请求可能出错,已妨碍了服务器对请求的处理。
代码 说明 
400(错误请求) 服务器不理解请求的语法。 
401(未授权) 请求要求进行身份验证。登录后,服务器可能会返回对页面的此响应。 
403(已禁止) 服务器拒绝请求。如果在 Googlebot 尝试抓取您网站上的有效网页时显示此状态代码(您可在 Google 网站管理员工具中诊 断下的网络抓取页面上看到此状态代码),那么,这可能是您的服务器或主机拒绝 Googlebot 对其进行访问。 
404(未找到) 服务器找不到请求的网页。例如,如果请求是针对服务器上不存在的网页进行的,那么,服务器通常会返回此代码。
如果您的网站上没有 robots.txt 文件,而您在 Google 网站管理员工具" 诊断"标签的 robots.txt 页上发现此状态,那么,这是正确的状态。然而,如果您有 robots.txt 文件而又发现了此状态,那么,这说明您的 robots.txt 文件可能是命名错误或位于错误的位置。(该文件应当位于顶级域名上,且应当名为 robots.txt)。
如果您在 Googlebot 尝试抓取的网址上发现此状态(位于"诊断"标签的 HTTP 错误页上),那么,这表示 Googlebot 所追踪的可能是另一网页中的无效链接(旧链接或输入有误的链接)。

405(方法禁用) 禁用请求中所指定的方法。 
406(不接受) 无法使用请求的内容特性来响应请求的网页。 
407(需要代理授权) 此状态代码与 401(未授权)类似,但却指定了请求者应当使用代理进行授权。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。 
408(请求超时) 服务器等候请求时超时。 
409(冲突) 服务器在完成请求时发生冲突。服务器必须包含有关响应中所发生的冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,同时会提供两个请求的差异列表。 
410(已删除) 如果请求的资源已被永久删除,那么,服务器会返回此响应。该代码与 404(未找到)代码类似,但在资源以前有但现在已经不复存在的情况下,有时会替代 404 代码出现。如果资源已被永久删除,那么,您应当使用 301 代码指定该资源的新位置。 
411(需要有效长度) 服务器不会接受包含无效内容长度标头字段的请求。 
412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。 
413(请求实体过大) 服务器无法处理请求,因为请求实体过大,已超出服务器的处理能力。 
414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法进行处理。 
415(不支持的媒体类型) 请求的格式不受请求页面的支持。 
416(请求范围不符合要求) 如果请求是针对网页的无效范围进行的,那么,服务器会返回此状态代码。 
417(未满足期望值) 服务器未满足"期望"请求标头字段的要求。
5xx(服务器错误)
这些状态代码表示,服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
代码 说明 
500(服务器内部错误) 服务器遇到错误,无法完成请求。 
501(尚未实施) 服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。 
502(错误网关) 服务器作为网关或代理,从上游服务器收到了无效的响应。 
503(服务不可用) 目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。 
504(网关超时) 服务器作为网关或代理,未及时从上游服务器接收请求。 
505(HTTP 版本不受支持)

生活不易,且行且珍惜吧

生活,马罗茨提出的 需求层次理论,个人很喜欢。

生活,不是自己想象的样子,很多的时候,都是自己的内心不一样的实现。自己的想法,不是是个人就可以理解的。

其实,就算是兄弟,你也不一定就能理解。别人心里面所想的,能帮忙的一定帮忙,别想着为了回报。其实,这根本不现实,别人怎么做人,你怎么可以决定呢?

你需要做的就是,维护的自己的利益。

记住,漫漫长夜 除了你的影子,没有人会陪伴着你的。

加油!

Saturday, April 16, 2016

Android 关于重构的思考

今天,想用Android studio 重构一下代码结构,因为,代码里面的写的太多了。东西一多,就会乱的,这是典型的熵增原理。

重构完之后:遇到This question

这种无法继承,是因为,类的包路径换了,原先的抽象类,用的是默认的权限。所有的抽象类的方法,应该用 protected. OK
 You can resolve it By this way.

Friday, April 15, 2016

GeekHades 如何测试?

作为开发者,自己写的代码,Bug 一定是少不了的。我们在估算开发周期的时候,似乎只是估算了,写代码的时间,完全没有把,产品原型,设计和测试的时间,估算进来!

真的是醉了,开发完之后,等了好几天,马上就要发包的,这个时候,测试开始测试,一堆的问题,bug,待优化的问题,再过几个小时就发包了。这种模式,真的是折磨我的意志呀。蛋疼呀。自己的代码,要对自己的代码要负责。

测试的时间,越延迟。后面的问题,就会越多,所以,写完之后,应该尽快的让测试,进行测试,因为,问题,发现的越早越好。

自己写完的代码,就像是++的女人。真的是懒得在看一眼。如果,不是有问题,我是不会回头看的。

代码的余量,代码简洁,每个人写代码的风格是不一样的。所以,代码的风格和代码洁癖,直接导致了,各种的问题!你想重写代码的冲动,但是,代价太大了!有点让人恐惧呀!

测试,以后写完一个功能,需要立马测试,但是,每个人的又都有自己的工作,导致了测试的问题,一直在延迟,一直拖延到最后。这里的问题,从产品到开发,都有问题。最烦的莫过于,照着微信开发,往往不会给你产品原型图。这个时候,作为程序员的我就要开发创造了,不仅仅要胜任,产品经理的角色,还要做一个设计者。还有开发。我真他妈的是天才。写完之后,还要测试,真的是FullStack. 牛逼呀,小伙子!

今天,就吐到这里吧,真的是醉了,以后的问题,还有很多呢。慢慢的解决吧,这也是自己慢慢成长的而一个过程。

给自己,留一个余量。 来思考自己的代码!

今天,又给自己完了一个坑!  妈的上来就写,没有仔细的思考,预览的需求,导致了,实现的方案有问题,现在只能,从新写了,2个小时的时间白费了!

建立自己的工具库!

自己的代码规范!

最好,别让别人碰自己的代码!

思考的时间!

Android Sina oauth2 must use https protocol.?



检查自己的Key  和 包名,一定要 核实,一般都是因为粗心的原因!

再就是,看是否通过了新浪的审核,如果,没有通过的时候,验证不会通过的!


没有解决,我怀疑是 sina的 jar 包的问题,真是的醉了。
不知道  具体的解决方案,已经浪费了两天的时间,难道我要用 ShareSDK ?

真他妈的日了狗饿了!

周末,用它的apk  玩玩!


GeekHades 如何写简历

最近两年几乎每年都能收到四五百封简历,有工作十几年的,也有还没毕业的,大多集中在 2-5 年实际工作经验(可回复 33 查看 codeKK 的订阅用户分布)。
不过 80% 以上简历都是不合格的。

邮件里也答应不少童鞋分享关于简历的写法,拖到今天,抱歉。

简历是自己给对方的第一印象,如果你是面试官,你希望从应聘者简历中了解什么?

另外大家可以把简历当做一个项目,简历的内容模块划分就是项目的整体设计,简历的样式就是你的代码风格。

1. 要
(1) 需要有明确的内容模块划分且每个模块内容精炼
比如常见的划分:必要的个人信息-主要经历(公司及学校)-专业技能-项目经验。

(2) 重点突出工作经历及项目经验
项目经验重点突出项目中你的职责、贡献、突出点。

这是简历的重点,也是面试最主要聊的点。

简历的写法和面试都是有技巧的:要突出你擅长的并且面试官可能感兴趣的,引面试官入瓮。

(3) 用数字说话
比如团队整体业绩提高多少,项目带来什么收益或是节省多少成本;
App 性能提高多少、Crash 率下降多少;
专业排名(2/200),员工考评(10/1000)占比之类。

大多数工程师可能不擅长这点,自己挖挖肯定有的。

(4) PDF 版
Word 版在 Mac 上可能会乱。还收到过有情怀的 Pages 版简历😄
顺便说下
- 很多招聘网站导出来的简历 Mac 上都打不开;
- 猎头会改你简历内容,你要确保他不会删一些东西,比如个人博客、GitHub 等。

(5) 格式整齐,段落有序
这个基本的要求,很多人都做不好。

我有代码洁癖,再者默认觉得 Word 排版不好的,要么不用心要么代码规范烂。

(6) 明确写好在校及各公司的起始年限

(7) 简历保持在两页左右
不至于太短也不至于信息太多,项目经验过多的可压缩,一般面试也就聊一两个主要项目就 ok 了。

当然如果你足够牛逼,给个博客地址或 GitHub 链接也 ok(态度貌似有点傲慢,哈哈),当然尽量重点详细介绍你的项目经验。

(8) 邮件标题及简单问候
邮件及简历附件标题尽量用姓名-原公司-职位。

codeKK 上一些内推职位是我发的,所以有时会收到一个仅含标题和附件的简历。

没有谢谢,没有问候,我的心是冰凉的/(ㄒoㄒ)/~~ 当然大多数情况这些简历的质量都很一般。

我对内推简历的回复率是 100%,而且只要不是太忙,我都会剪短说下简历需要修改的地方。

(9) 简历常更新,常删除
收到过近十页的简历,七八年工作经验,项目一个没落,包括在校的实习经历。

简历内容要精简,最重要的是最近一家公司的经历,很多没必要的简介或是略过就行,两三页不能再多了。

2. 不要
(1) 不要用任何招聘网站的模板、不要 Word 版
尤其是智联招聘、51job 这类该被时代淘汰的站点。

维护一份 Word 版(发送时请用 PDF),每年更新一次,不跳槽,也能梳理下自己。

(2) 不要用“精通”二字
个人简历一直是熟悉 Android xx 部分、熟悉 Java。“精通”真的只能逗逗那些不靠谱公司。

(3) 不要写任何国内培训经历、软件证书
即便你是半路出家也不要写“计算机四级之类的证书”,北大青鸟之流的培训就不说了。

有看到写着“获得教育部颁发的 Android 应用工程师证书”,无证程序员的我吓尿了

(4) 不要写常年混迹于 xxx 社区、xxxx 论坛
什么版主之流那都是小白干的事,别在里面浪费时间了,没事逛逛 GitHub 这类高质清净的网站。

(5) 不要自我评价
因为大多数人都写不好,也容易被某些病态 HR 抓把柄。

(6) 项目经验中不要写软件环境、硬件环境、开发工具之类的

(7) 个人博客、GitHub 如果没有什么内容就别放太显眼位置了
这种情况写自己每天逛 GitHub,对哪些项目有关注之类的反倒更有用。

当然如果博客、GitHub 很有料,请前置并且剪短介绍里面内容。

(8) 头像不用,仅美女除外
(9) 民族、政治面貌、联系地址一般情况都不用

以上适用于技术通用情况,特殊情况请勿参考。

所有举例不针对个人,只是把自己的感受经验分享出来,希望大家都有个靓丽的简历,为一份好的工作开个头。

如果大家觉得有用,并且有必要分享一些不错的模板,可点赞,必要的话我找些不错的模板分享出来。





Thanks To:

https://mp.weixin.qq.com/s?__biz=MzAxNjI3MDkzOQ==&mid=406058545&idx=1&sn=b0a0db5c3280fe9f9a971768939fdd69&scene=1&srcid=0415RmPVNm1I0Wut2yxraiXo&key=b28b03434249256b1392809e732fb53e5f17c6f433fc010aff1c6fa9afffa7f19b1fbd02d915969482bda5394835a504&ascene=0&uin=MTU5Nzc0NTAxNw%3D%3D&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.10.5+build(14F1713)&version=11020201&pass_ticket=BjAxEVJCaLXwOZYe6GfVlFWNUAfRkgBMB%2F4WoJarRzlIjreEbvhVyGguD6LftYDY

Wednesday, April 13, 2016

Android how to change ActionBarActivity to AppCompatActivity?


这里需要修改的东西挺多的,

MyActivity extends AppCompatActivity  


you will meet

Error:(4) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(33) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

Thanks a lot to:
http://stackoverflow.com/questions/32075498/error-retrieving-parent-for-item-no-resource-found-that-matches-the-given-name









Thanks To:

http://stackoverflow.com/questions/29034476/android-studio-sdk-version-22-exception-during-rendering-action-bar

2016 个人计划

2016 年我要做点什么?每个人都要有自己的计划。



1  建一个自己的博客网站


2  在 Google Play 发布一个APP


Tuesday, April 12, 2016

GeekHades 不错手机的socks5

还不错的工具

1  ShadowSocks

Github:




手机端的:
Android:



2  Lantern

Go 语言写的

Github:


you Android APP

But 个人感觉,不是很安全。因为,这个东西涉及的东西比较的 私密。如果,仅仅只是看 youtube 可以使用!


我在用 Mac 端的时候个人感觉交互好差。似乎,只做了几个门户的代理,个人不喜欢。所以卸载了!



3  还有一家不错饿VPN 的代理

个人很喜欢,至于安全,我似乎无所谓了,哈哈!

VPN  代理的可以做全局代理。这个是Socks 和 Lantern 无法比你的,因为,前面介绍的两款都只是代理浏览器的工具!

这个东西,玩的多了自然就知道了。很多人根本就用不到的,只是写给感兴趣的孩子!




Thinking in reading book

I love books, Not only it teach me a lot knowledge. But also make me rich and stronger!

读书不是为了读书而读书,I think reading book not for finish the task, That read the book finish. I like 陶渊明的那种,采菊东篱下,悠然见南山的样子。读书也是,读书是为了丰富自己的见识,不是为了读完这本书,出去炫耀!完全没有必要,有的时候很多,就是喜欢,用最短的时间,把书读完。然后在朋友面前炫耀。我觉的完全没有必要的,当我问他,书中讲的什么的时候,他支支吾吾说不上来。其实,书也有好坏之分。有的书经典,值得花时间去读,短时间读完,你需要反复的多读几遍。因为,一遍你根本无法体会,书中的含义,这种书有很多,别人花十几年,二十几年写的书,我们也应该花点时间来吸取精华。而且,这种书,不是是个人,就可以读的。很多的书,你需要有一定的阅历之后才能够读的懂得。正如,《Refactoring》 如果,你没有一定的代码量的话,你根本不知所云。这个世界上,最难学的语言就是汉语,你连最难学的汉语都学会了,还有什么学不会呢?
    在我看来,有的书,根本就没有必要读。有的书,只适合看看标题。顶多看看目录就可以了。看里面的内容,感觉完全是在浪费自己的宝贵的时间。我建议,这种书你如果买了,赶紧扔掉。
    时间比金钱宝贵。因为,时间可以换来金钱。但是,金钱却换不来时间。所以,任何在浪费你时间的人,完全不需要理他!因为,她相当于是在慢性的他杀!


   这个世界,在自己的世界里面活着,活着本身也成了一种奢侈品了。所以,好好的活着,也是不错的!

   做自己想做的事情,做一个Geek! 不要,被什么,房子,车子呀,女人呀,束缚住了。假如有一天,你犯贱了,也是可以的!我算过一笔账,假如,你一周换一个妓女,周周不重样的换女孩,过五十年,你才不过话240万,你要知道,在北京的房子300 万,起步。!  所以,小伙子,别慌。 以后的路还长呢。女人过了25 就开始走下坡路了。 如果不是考化妆,你都不知道,她们靠什么活着。 然而,越老的男人越有味道!


Thinking in myself

   塞翁失马焉知非福
   这个世界,并不是自己想要什么就可以得到什么的世界,我是一个贫民窟出来的孩子。所以,很多事情我需要知道,很多事情不是你想的样子。
    现在的我有点春风得意马蹄急的感觉,但是,不要太张狂,这个世界,没有你想象的那么简单。很多的时候,往往是事与愿违,因为,我没有办法改变环境,我似乎只能适应环境。所以,在你最得意的时候,千万不要张狂,很多的时候,要注意自己的言行和举止。因为,你不是一个靠老子的人。你更多的时候,是要靠你自己的存在,逐渐的成长。正如: 完美世界中的石昊 一样,主要就是靠自己,自己的天赋。
   做人,要居安思危。要有危机的意识,不要 临渊截鱼,在自己的得意的时候,也是最危险的时候。
   昨天,买了一个电竞的椅子,感人感觉很不错,我很庆幸在一家 创业公司,可以做一些再大公司做不到的事情。这方面的事情,我还是可以说的算的。做人要居安思危。

   很多的时候,自己想的很多,但是真的做的时候很少。要给自己一个余量。 不仅仅是时间上的余量,还有金钱的余量 。 建立自己的革命根据地。如果,不细水长流,那么下个月,我万一被辞职的,我连饭都吃不上了!

   有的时候,做人比做事情难得多呀!

   每天,给自己时间思考,自己要做什么。自己应该做什么?自己的哪方面还应该提高

  吾日三省吾身
 

“Gradle Version 2.10 is required.” Error

You need to change File > Settings > Builds,Execution,Deployment > Build Tools > Gradle >Gradle home path
Or set Use default gradle wrapper and edit Project\gradle\wrapper\gradle-wrapper.propertiesfiles field distributionUrl like this
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip



Thanks To:
http://stackoverflow.com/questions/34814368/gradle-version-2-10-is-required-error

Ubuntu how to config sh file bootstart ?

  1. Open /etc/rc.local file with this command:
vim /etc/rc.local
  1. Add your script that you want to run on boot process there, for example:
sh /home/ivan/iptables.sh echo 'Iptable Configured!'
  1. Review the comments included in that file and make sure a exit 0 is at the end.
  2. Save the files. And your script will run on boot process.



THanks TO:
http://askubuntu.com/questions/9382/how-can-i-configure-a-service-to-run-at-startup

ignore wechat app signature validation 微信不跳转的问题

微信分享的时候,只是闪了一下!无法,分享!


04-12 18:18:19.147 12775-12775/com.meiliwu.avengeragent D/MicroMsg.SDK.WXApiImplV10: ignore wechat app signature validation
04-12 18:18:19.147 12775-12775/com.meiliwu.avengeragent D/MicroMsg.SDK.WXApiImplV10: ignore wechat app signature validation
04-12 18:18:19.362 12775-12775/com.meiliwu.avengeragent D/MicroMsg.SDK.WXApiImplV10: ignore wechat app signature validation

04-12 18:18:19.397 12775-12775/com.meiliwu.avengeragent D/MicroMsg.SDK.MMessageAct: send mm message, intent=Intent { flg=0x18000000 cmp=com.tencent.mm/.plugin.base.stub.WXEntryActivity (has extras) }




微信SDK不跳转的原因:
1.有可能没有审核通过(基本上,填写了就可以使用的)
2.有可能发布的SDK和运行的SDK签名不一致。(没有使用签名打包的APK)


Error:Execution failed for task ':app:transformClassesAndResourcesWithRelease'. > java.io.IOException: Please correct the above warnings first.

奇葩的问题,
debug 的时候,没有问题,但是打release 包的时候,报错,因为proguard.pro 代码混淆的锅



我找到一个关键子:
com.jcraft.jzlib.ZInputStream

原来是XMPP  Smack 搞的鬼。我只需要 不会笑 Smack 就可以了
resolve method:
# XMPP smack start
-keep class org.jivesoftware.smack.** { *; }
-keep class org.jivesoftware.smackx.** { *; }
# XMPP smack end


You can see detail:
http://stackoverflow.com/questions/29678908/what-are-the-recommended-proguard-rules-for-smack-4-1




Android studio 如何实现多版本的处理

这个很蛋疼呀,  现在发现,当你的APP 很多同名的资源的时候, Android Studio 是不会根据不同的环境,进行自动的匹配的。她只是建立所有Image的索引。 所以,导致了这个问题,
对于,一家公司的外包,真的是很蛋疼的一件事情。很多事情,并不是你想象的那么简单的。很多的时候,是你的工具并不支持,你需要做更多的技术上的支持!

解决:
解决原则:
你需要讲   各个 Faver 版本共用的东西提取出来,要不然就会出现混乱!

共用的动心不仅仅是java class.  Image resource, String resource And so on!

Thanks to:
http://developer.android.com/tools/building/configuring-gradle.html#workBuildVariants



很多时候,根本就没有答案,需要自己的去寻找,就算是官方文档,也仅仅只是一个Demo.  在真正的开发展,还是需要自己去思考和探索,举一反三的实践。实践出真知!


我的 Token 问题?

每次登陆,都会重置Token的信息。


我怀疑的是debug环境的问题,然后我用 正式的打包

出现了这个问题:

Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForMseRelease'.
> java.io.IOException: Please correct the above warnings first.

昨天的时候,似乎动了带你IM 的 smack

Monday, April 11, 2016

android adb command to install apk Failure [INSTALL_FAILED_ALREADY_EXISTS]?



adb install -r rent.apk

Thanks To

http://stackoverflow.com/questions/4449540/failure-install-failed-already-exists-when-i-tried-to-update-my-application

Ubuntu how add gradle to PATH

Step-by-step instructions
Gradle is a Java build system. It uses a clean, simple configuration syntax and is used by Android as the default build system. For API development, Gradle is supported by Spring.
Installation is quick and simple. We are going to install a private copy so that root permissions are not required during development.

Download Gradle

mkdir -p ~/opt/packages/gradle && cd $_

wget https://services.gradle.org/distributions/gradle-2.3-bin.zip

unzip gradle-2.3-bin.zip

Install and setup Gradle

Next, we will create a symlink that provides a shorter path to the specific Gradle version. The symlink will allow us to upgrade Gradle later without changing any other configuration.
ln -s ~/opt/packages/gradle/gradle-2.3/ ~/opt/gradle
Open your .profile file in vi, emacs, or gedit.
gedit ~/.profile
Paste the following at the bottom of your .profile file.
# Gradle
if [ -d "$HOME/opt/gradle" ]; then
    export GRADLE_HOME="$HOME/opt/gradle"
    PATH="$PATH:$GRADLE_HOME/bin"
fi
Finally, source your .profile and test gradle.
source ~/.profile

which gradle

gradle -version
Congratulations, you now have a working Gradle installation.




THanks to:
http://exponential.io/blog/2015/03/30/install-gradle-on-ubuntu-linux/

ubuntu how to install gradle

sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle