Ubuntu初见

Ubuntu初见

11个月前 (12-03) 浏览: 178 评论: 0

一、UI 大一的时候就喜欢装各种系统玩,所以在公司要求体验Ubuntu系统前就尝过鲜。对于一个初级用户来说,对一个操作系统最初的接触便是它的UI,我对Ubuntu系统的第一感觉是比较好看的Linux系统,它和Mac系统有点像,但是没有Mac好看。对于习惯了windows的操作系统的用户来说,我还是比较喜欢Windows7和Windows10的UI。不知道是系统本身的原因还是ubuntu对PC显卡支持的不太好的缘故,总有一种Ubuntu的界面渲染不够细腻的感觉。 不论怎样,Ubuntu在接触到的linux系统中是比较美观的一个,可视化操作的支持也是比较好的。如果你还抱怨Ubuntu不及windows漂亮的话,可以尝试在centos上安装一个KDE或者GNOME的桌面环境,就会发现Ubuntu是一个多么美观的Linux系统啦。 二、Linux的发行版 对Ubuntu的定义,最基本的就是Linux的发行版啦。以前总听说发行版这个词,却从来不知道发行版到底是个什么意思。于是查了一下资料在此和大家分享一下。 就Linux的本质来说,它只是操作系统的核心,负责控制硬件、管理文件系统、程序进程等,并不给用户提供各种工具和应用软件。所谓工欲善其事,被必先利其器,一套在优秀的操作系统核心,若没有强大的应用软件可以使用,如C/C++编译器、C/C++库、系统管理工具、网络工具、办公软件、多媒体软件、绘图软件等,也无法发挥它强大的功能,用户也无法仅仅使用这个系统核心进行工作,因此人们以Linux核心为中心,再集成搭配各种各样的系统管理软件或应用工具软件组成一套完整的操作系统,如此的组合便称为Linux发行版。 个人感觉,Linux和Ubuntu的关系与Android和MIUI的关系有一点像。不过Ubuntu在定制方面做的应该更多一点。纯净的Linux系统内核编译出来网上说只有几M大小,最小的Linux系统ttylinux 是一个只需要8M磁盘空间的小型发行版,最低要求是12M 内存。 三、推荐几个良心的GUI应用 wps wps office LInux版,强大的文字、表格、PPT办公软件。现在Android和Windows平台上的WPS office广告越来越多,而Linux上的却相当纯净。 下载地址:http://community.wps.cn/download/ 网易云音乐 发布不久后我就安装了,和Windows下桌面版和UWP版长得一模一样,支持在线和本地音乐播放,桌面歌词。 下载地址:http://music.163.com/#/download Wine QQ Linux下的QQ客户端,基本功能有的,但是感觉Bug比较多,因为和windows上2012年版的QQ差不多,现在好久没有更新了。 * 下载地址:http://www.ubuntukylin.com/applications/showimg.php?lang=cn&id=23 四、分享几个小技巧 多桌面和热区 下载Unity Tweak Tool,和Mac一样支持将鼠标移到屏幕的边缘显示桌面、窗口平铺、任务切换等。这个在同时打开很多窗口的情况下十分方便用户操作。 调出命令行窗口快捷键 Ctrl + Alt + T 更多使用技巧欢迎大家分享交流!

网站自动跳转到cjb.net的惊险之旅

网站自动跳转到cjb.net的惊险之旅

12个月前 (11-07) 浏览: 373 评论: 1

极客人昨天在访问王柏元的博客时发现,网站时不时地“抽风”地跳转向www.cjb.net这个网址,几乎刚一打开wangbaiyuan.cn就跳,访问其它的网址都没有遇到这等怪事。这种情况最开始只出现在360极速浏览器上,即使我下意识地清除缓存、cookie,依然没有奏效。最后我换了其它的浏览器,才发现就360极速浏览器才遇到这种情况,而且还是偶然出现的;在尝试网上的方法卸载浏览器插件等的方法解决未果的情况下我只得作罢。兴许360极速浏览器中毒了吧,呵呵,360还号称安全呢! 今天晚上,我发现自动跳转到cjb.net的恼火现象再次出现,而且这次不管什么浏览器都是如此,包括Edge、IE。这才让我觉得是不是网站被“入侵”了,而且”入侵“的方式很明显,植入了含有跳转代码的js。因为当我审查元素”禁用js“时跳转情况就不会出现。然后我看了看,王柏元的博客一个文章页就引用30个js,只要其中一个js文件植入了恶意跳转代码就会出现自动跳转,如此盲目地找谈何容易。 由于网址跳转得极为迅速,我相信这个js文件是在html的head 部分,最后发现我的头部引用一个新浪CDN的jquery.min.js,网址为: http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js;这是我的wordpress主题提供的一个Jquery CDN源,当我把Jquery源由 CDN改成使用本地Jquery时,问题解决了,无疑是新浪的Jquery源被劫持了。打开这个js一看,难怪了: 而且lib.sinaapp.com域名下不管什么链接都是这个内容;最后发现网上推荐的Jquery CDN中,使用新浪的CDN还不少,估计这回中招的人应该不止我一个啊。最后我果断换成了百度的Jquery CDN:http://libs.baidu.com/jquery/1.9.1/jquery.min.js;当然,出现自动跳转到cjb.net的情况不一定和我是同一个原因,但是你可以按照我这个思路去找哪个js文件被污染了。    

解决htacess RewriteRule中含有?的问题

解决htacess RewriteRule中含有?的问题

12个月前 (11-07) 浏览: 89 评论: 0

最近分别用PHP和java写个一个IP寻找地理位置的在线API,由于想让自己的URL看起来更加漂亮,便使用了htaccess Rewrite语法对URL进行了重写,其中出现无法匹配“?”的情况,最后解决了,在此给大家分享一下: 我想实现的效果是把 于是很容易写了下面规则: 然后始终无法实现相关效果,初步原因是rewrite不能把带问号的QUERY_STRING进行匹配,最后使用下面的规则成功了: %{变量名}可以获取请求的参数

Android监听底部导航栏展开与隐藏

Android监听底部导航栏展开与隐藏

1年前 (2016-08-12) 浏览: 580 评论: 2

现在有些android手机具有底部虚拟按键的导航栏,这一设计去掉了物理按键,进一步增加了智能手机的屏占比。但这有时带来一些兼容性问题。 为了防止导航栏遮住布局,可以在布局上面添加“fitSystemWindows=true”属性。 如果要想监听导航栏的隐藏与显示,我们可以在布局文件的根节点下添加一个宽度和高度都“match_parent”的空布局,同时在布局上面添加“fitSystemWindows=true”属性,然后监听此布局的onLayoutChange事件,即可监听导航栏。

Gradle下利用配置文件对构建工具版本集中控制

Gradle下利用配置文件对构建工具版本集中控制

1年前 (2016-08-12) 浏览: 129 评论: 0

由于Android studio和Android相关SDK和构建工具具有极快的更新速度。对相关版本的修改有时候是一件比较敏感的事情,尤其是在团队项目中,个人在本地修改了相关工具的版本并且不小心提交到远程代码库,别人更新下来往往出现各种问题。Android studio项目文件中版本字段十分分散,当SDK环境出现改变时,修改起来还是比较麻烦的。本文章利用配置文件对构建工具版本集中控制。 在项目根目录下gradle.properties文件定义版本信息并赋值   在使用版本信息的地方引用gradle变量 Dependencies build.gradle(project) build.gradle(module)

Android webview广告过滤的实现

Android webview广告过滤的实现

1年前 (2016-05-02) 浏览: 4248 评论: 1

现在大部分的android平台的浏览器都具有广告过滤的功能,同时大部分网站都有广告。广告行业是个盈利巨大的产业,就我看来,现在绝大部分的互联网产品,一般有两种营利模式:免费有广告和会员无广告;他们大部分(包括网站和APP等)盈利来源就是广告。作为用户而言,对广告十分反感,但是互联网上的服务我们能免费享受与支撑这些服务得以延续与成长却得益于广告。 百度了一下,网上竟然没有Android浏览器屏蔽广告的代码实现,所以极客人只能自己动手了。网页上的广告一般是站长在网页植入一段js代码,要想屏蔽广告只需要将这些js屏蔽掉即可。 WebViewClient的几个回调函数 要想对Webview实现一些高级操作,首先要学习WebViewClient的用法,这是Webview几个常用回调函数 1、public boolean shouldOverrideUrlLoading(WebView view, String url) : 在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。 2、public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error): 重写此方法可以让webview处理https请求。 3、public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event):重写此方法才能够处理在浏览器中的按键事件。 4、 public void onLoadResource(WebView view, String url) :在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。 5、 public void onPageStarted(WebView view, String url, Bitmap favicon) :在页面加载开始时调用。 6、public void onPageFinished(WebView view, String url) :在页面加载结束时调用。 初看上面的回调函数,极客人发现了一个巨大的坑,拦截广告就是拦截加载广告的js,上面的onLoadResource似乎是很合适的函数,只要判断onLoadResource的参数url是否是加载广告js的即可,如果不是广告相关的url正常加载,如果是则不加载。但是在使用onLoadResource之后才发现根本不行。 这里引用WebViewClient另外一个回调函数:public WebResourceResponse shouldInterceptRequest(WebView view, String url) shouldInterceptRequest有两种重载。 public WebResourceResponse shouldInterceptRequest (WebView view, String url) 从API 11开始引入,API 21弃用 public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request) 从API 21开始引入 这里极客人暂且使用shouldInterceptRequest (WebView view, String url)完成对webview广告的拦截。 拦截广告资源URL 在Webview加载资源时会回调shouldInterceptRequest函数,我们可以通过重写shouldInterceptRequest函数实现对webview的资源请求进行处理。进行处理后返回数据。如果主程序返回的数据为null,WebView会自行请求网络加载资源。这里有个坑:不是shouldInterceptRequest函数返回null就能屏蔽掉请求!正确的屏蔽请求的方式: 下面是极客人写的屏蔽广告的NoAdWebViewClient类: 只需使用webview.setWebViewClient(NoAdWebViewClient webclient)即可屏蔽指定webview的广告。 判断URL是否含广告的ADFilterTool类:该类通过判断url是否包含在广告拦截库中 ADFilterTool.java 广告url资源文件(广告拦截库可自行百度更新):AdUrlString.xml 所谓广告拦截库,实际上是请求广告资源的url合集,网络上有大量的广告拦截库,读者可以定期更新一下文件来实现对广告的高效过滤。本文屏蔽的方式比较粗暴,凡是含有广告资源的域名统统禁止。要想实现更精准的过滤,访友你可以使用通配符匹配url的方式进行拦截,现在PC端的浏览器正是这样做的。    

一个简单的局域网UDP实时视频

一个简单的局域网UDP实时视频

2年前 (2016-04-12) 浏览: 819 评论: 1

之前一直有打算做一个局域网上基于UDP通信的视频通话软件,一直不知道视频流在网络上以怎样的形式传输,虽然知道几个视频流的编码格式,但是其实一直没有进行付诸实践; 最近在学习安卓手表开发时,在github上看到一个将手机的实时视频传输到手表的项目,发现一个似乎低级但是在局域网应该还是比较实用的局域网视频传输方法:直接将从摄像头获取的图像压缩以后进行发送。本项目GitHub主页:https://github.com/retravel/AndroidRealTimeVideo 获取摄像头实时图片、UDP发送图片  UDP server  

火车局域服务系统

火车局域服务系统

2年前 (2016-03-19) 浏览: 255 评论: 2

长长的火车,长长的旅程,常常长达20多小时的火车行程,令我们疲惫不堪。我们发现,封闭的火车就像一个迷你的大千世界,我们想在火车上建立一个局域网相连的信息“生态系统”。传统的火车订餐,需要乘务员拉着餐车询问乘客,常常无功而返;火车进入隧道时,我们的手机讯号全无,仿佛与世隔绝;有时我们和同道人不在邻座,换座十分麻烦。。。我们可以做一个基于火车环境的局域网信息系统: 在火车每个车厢放一个路由器,将所有路由器进行桥接,建立一个局域网,搭建服务器,提供一下服务: 一、订餐;乘务人员定点送餐,送餐地点为乘客座位号 二、乘客沟通换座与聊天; 三、替代当前的乘务人员对讲机; 四、火车到站提醒; 五、火车到站推送当地风土人情,趁机植入广告; 六、资源共享,乘客访问火车服务器观看上面的电影、听音乐、收听电台等;

【语言-java】1、”==”和”equal”的区别

【语言-java】1、”==”和”equal”的区别

2年前 (2016-03-18) 浏览: 154 评论: 0

对于一些基本数据类型,int,long,bool,还有char!,“==”都是表示值相等的意思,没有equal方法。 equal方法是object对象里面的方法,java中String不是基本数据类型,而是一个类,它们都是继承object类,还有Integer和int的区别也是Integer是一个类! 在object类中,equal方法与“==”是等同的,“==”不是表示值相等,而是比较对象的地址是否相等!Integer和String都重写了(没错!就是重写,重载是写多个函数名相同但参数不同的函数;重写是对父类的方法重新定义,体现了多态性),equal方法经过String、Integer重写后,是比较值而非地址。

百度地图API位置偏移的校准算法

百度地图API位置偏移的校准算法

2年前 (2016-02-17) 浏览: 2315 评论: 0

在开始使用百度地图API进行开发时可能会遇到一件相当奇怪的事情,使用百度定位的经纬度在地图上显示相当不准确,这一问题我在微信开发和安卓开始时都遇到过。第一次使用百度地图api获取位置并在地图上显示是在微信开发的时候,那是不知道具体原因无奈在微信获取的地理位置上加了一个偏移量进行校准,虽能勉强解决,但是不太准确。后来在安卓开始也同样遇到了这个问题,才发现百度地图API定位偏移已经不是一个偶然问题了。 百度地图API定位偏移的原因 以下来自互联网: 一、坐标体系 首先我们要明白,开发者能接触到哪些坐标体系呢? 第一种分类: 1、 GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。GPS坐标形式如图,度分秒形式的经纬度:   2、 GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。 3、 其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。 第二种分类: 首先明白,所有坐标体系的原点,都是非洲。 1、 经纬度。这个是球面坐标,对于北京来说,就是(116.38817139.935961)这样的坐标。比如腾讯、高德、百度都是这样的经纬度坐标。谷歌是经纬度顺序写反的经纬度坐标。 如果是度分秒坐标,需要进行转换,才能得到这样的经纬度坐标。详见坐标转换。 2、 墨卡托坐标。平面坐标,相当于是直线距离,数字一般都比较大,像这样的。(215362.00021333335 99526.00034912192) 墨卡托坐标,主要用于程序的后台计算。直线距离嘛,加加减减几乎计算方便。 搜狗地图API就是直接使用的墨卡托坐标。 二、坐标转换 在各种web端平台,或者高德、腾讯、百度上取到的坐标,都不是GPS坐标,都是GCJ-02坐标,或者自己的偏移坐标系。 比如,你在谷歌地图API,高德地图API,腾讯地图API上取到的,都是GCJ-02坐标,他们三家都是通用的,也适用于大部分地图API产品,以及他们的地图产品。 例外,百度API上取到的,是BD-09坐标,只适用于百度地图相关产品。 例外,搜狗API上取到的,是搜狗坐标,只适用于搜狗地图相关产品。 例外,谷歌地球,google earth上取到的,是GPS坐标,而且是度分秒形式的经纬度坐标。在国内不允许使用。必须转换为GCJ-02坐标。 1、度分秒坐标转换为经纬度 比如,在GPS记录仪,或者google earth上采集到的是39°31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。 2、 GPS转换为GCJ-02坐标 谷歌,高德,腾讯的地图API官网上,都不直接提供这样的坐标转换。如果要得到GCJ-02坐标,最好在他们的地图上直接取点,或者通过地址解析得到。(这个工具我后续会贴出来的。我就爱干这样的事情,哈哈。) 不过,在网上搜到了这样的接口,该接口的type=1就是GPS转到GCJ-02的墨卡托坐标。请大家对接口保密,哈哈。详见: http://map.sogou.com/api/documentation/javascript/api2.5/interface_translate.html#late_intro 3、GCJ-02与BD-09之间互转 国测局GCJ-02坐标体系(谷歌、高德、腾讯),与百度坐标BD-09体系的转换,在CSDN上有很详细的讲解: http://blog.csdn.net/coolypf/article/details/8569813 不过也有更简单的算法,线性算法(lat和lng是经纬度,球面坐标): To_B是转到百度,To_G是转到GCJ-02。 var TO_BLNG = function(lng){return lng+0.0065;}; var TO_BLAT = function(lat){return lat+0.0060;}; var TO_GLNG = function(lng){return lng-0.0065;}; var TO_GLAT = function(lat){return lat-0.0060;}; 4、经纬纬度转成墨卡托 网上也有详细讲解: http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=78245 (大家发现没,高德是api,腾讯和百度是mapapi,说明什么?) 三、坐标偏移 如果您的坐标在转换之后,还有偏移,那么考虑以下几个方面。 A、原始坐标系弄错,比如以为自己是GPS坐标,但其实已经是GCJ-02坐标。 解决方案:请确保采集到的数据是哪个坐标体系,需要转换到哪个坐标系,再进行坐标转换。 B、原始坐标准确度不够 解决方案:如果您是GPS坐标,请确保采集GPS数据时,搜到至少4颗以上的卫星。并且GPS数据准不准,还取决于周围建筑物的高度,越高越不准,因为有遮挡。 如果本来就是GCJ-02坐标,在不同地图放大级别的时候,看到的地方可能不一样。比如你在地图级别4(国家)取到的坐标,放大到地图12级(街道)时,坐标就偏了。请确保在地图最大放大级别时,拾取坐标。 C、度分秒的概念混淆 比如,在google earth上采集到的是39°31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。 D、经纬度顺序写反了 有些公司(比如高德,百度,腾讯)是先经度,再纬度,即Point(lng lat)。但谷歌坐标的顺序恰好相反,是(lat lng)。 相关问题的百度解释:http://developer.baidu.com/map/question.htm 百度地图API位置偏移的校准算法 C++算法  

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册