Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
我們日常見到的網頁主要由文字、圖像和超鏈接等元素構成。當然,除了這些元素,網頁中還可以包含音頻、視頻以及Flash等。
代碼是如何形成網頁的呢? 那就需要瀏覽器引擎進行解析渲染了。
瀏覽器是網頁運行的平臺,常用的瀏覽器有:
根據市場調查機構 Statcounter 最新公布的數據,2023 年 11 月全球桌面瀏覽器市場份額排名前三名分別是谷歌 Chrome(62.06%)、蘋果 Safari(13.3%)和 Edge 瀏覽器(5.5%)。雖然 Edge 瀏覽器在全球范圍內均有分布,但其份額仍無法超過 Safari 瀏覽器。與上月相比,Chrome 的份額下降了 0.25 個百分點,Safari 的份額增加了 0.07 個百分點。Firefox 在該月的全球份額達到 3.24%,相比上月增長了 0.22 個百分點。
在桌面端瀏覽器市場中,Chrome 繼續穩居第一,市場份額為 62.06%,盡管有所下降但也屬于正常波動范圍。Safari 以 13.3% 的份額緊隨其后,在全球范圍內享有較高的知名度。Edge 的市場份額從上月的 11.8% 下降到 11.23%,仍然保持著良好的增長趨勢。
此外,Firefox 的全球份額也有所上升,達到 6.69%,與其他瀏覽器相比表現強勁。Opera、360 安全瀏覽器、IE 等其他瀏覽器也在全球范圍內占有一定的市場份額。
總體而言,在桌面瀏覽器市場上,Chrome 繼續保持著領先地位,而 Safari 和 Edge 則在市場上展開了激烈的競爭。預計在未來幾個月內,這些產品將繼續保持穩定的增長態勢,并且會繼續影響著用戶的使用習慣和技術趨勢。
瀏覽器內核又可以分成兩部分:【渲染引擎】(layout engineer 或者 Rendering Engine) 和 【JS 引擎】。
內核通常只指渲染引擎:
最開始渲染引擎和 JS 引擎并沒有區分的很明確,后來【JS 引擎越來越獨立,內核就傾向于只指渲染引擎】。有一個網頁標準計劃小組制作了一個 ACID 來測試引擎的兼容性和性能。內核的種類很多,如加上沒什么人使用的非商業的免費內核,可能會有10多種,但是常見的瀏覽器內核可以分這四種:Trident、Gecko、Blink、Webkit。
(1)Trident(IE內核)
Trident [?tra?dn:t]:n. 三叉戟
國內很多的雙核瀏覽器的其中一核便是 Trident,美其名曰 "兼容模式"。
代表: IE、傲游、世界之窗瀏覽器、Avant、騰訊TT、獵豹安全瀏覽器、360極速瀏覽器、百度瀏覽器等(這些國產瀏覽器都是雙內核)。
Window10 發布后,IE 將其內置瀏覽器命名為 Edge,Edge 最顯著的特點就是新內核 EdgeHTML。
(2)Gecko(firefox)
Gecko [?geko?] n. 壁虎
Gecko(Firefox 內核): Mozilla FireFox(火狐瀏覽器) 采用該(渲染引擎),Gecko 的特點是代碼完全公開,因此,其可開發程度很高,全世界的程序員都可以為其編寫代碼,增加功能。 可惜這幾年已經沒落了, 比如 打開速度慢、升級頻繁、豬一樣的隊友flash、神一樣的對手chrome。
(3)webkit(Safari)
Safari 是蘋果公司開發的瀏覽器,所用瀏覽器內核(渲染引擎)的名稱是大名鼎鼎的開源引擎 WebKit。
現在很多人錯誤地把 webkit 叫做 chrome內核(即使 chrome內核已經是 blink 了)。
代表瀏覽器:傲游瀏覽器3、 Apple Safari (Win/Mac/iPhone/iPad)、Symbian手機瀏覽器、Android 4.4之前的默認瀏覽器
(4)Chromium/Bink(chrome)
Blink [bi?k] n. 架子;長凳
在 Chromium 項目中研發 Blink 渲染引擎,內置于 Chrome 瀏覽器之中。Blink 其實是 WebKit 的分支, 也是開源的。 (大名鼎鼎的 V8 是 Chrome 的 JS 引擎)
大部分國產瀏覽器最新版都采用Blink內核。
(5)Presto(Opera)
Presto ['pr?sto] adj. 迅速的
Presto 是挪威產瀏覽器 opera 的 "前任" 內核(渲染引擎),為何說是 "前任",因為最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌懷抱了。
了解一點:
移動端的瀏覽器內核主要說的是系統內置瀏覽器的內核。
目前移動設備瀏覽器上常用的內核有 Webkit,Blink,Trident,Gecko 等,其中 iPhone 和 iPad 等蘋果 iOS 平臺主要是 WebKit,Android 4.4 之前的 Android 系統瀏覽器內核是 WebKit,Android4.4 系統瀏覽器切換到了Chromium,內核是 Webkit 的分支 Blink,Windows Phone 8 系統瀏覽器內核是 Trident。
通過了解以上瀏覽器的內核不同,我們知道他們工作原理、解析肯定不同,顯示就會有差別。
由于不同的瀏覽器解析出來的效果可能不一致,開發中通常需要為同個界面做多版本的開發。
1、讓Web的發展前景更廣闊
2、內容能被更廣泛的設備訪問
3、更容易被搜尋引擎搜索
4、降低網站流量費用
5、使網站更易于維護
6、提高頁面瀏覽速度
Web標準不是某一個標準,而是由W3C和其他標準化組織制定的一系列標準的集合。主要包括結構(Structure)、表現(Presentation)和行為(Behavior)三個方面。
理想狀態下,我們的源碼由3部分組成: .HTML 文件(定義結構) .css 文件(定義樣式) .js 文件(定義行為)
這樣代碼的結構清晰,好維護
打個比方:
作者:youerning 來源:http://youerning.blog.51cto.com/10513771/1733534
言
用 Python 寫安卓 APP 肯定不是最好的選擇,目前用Java和 kotlin 寫的居多,但是肯定也是一個很偷懶的選擇,而且實在不想學習 Java,再者,就編程而言已經會的就 Python與Golang(注:Python,Golang水平都一般),那么久Google了一下Python 寫安卓的 APP 的可能性,還真行。
既然要寫個APP,那么總得要有個想法吧。其實想做兩個APP來著,一個是自己寫著好玩的,一個是關于運維的。關于運維的APP,設計應該如下
可能長這樣
然后設計應該是這樣。
如果覺得可行的話,評論留言一下你覺得應該寫進這個APP的運維常用命令吧^_^,筆者暫時想到的是top,free -m,df –h,uptime,iftop,iotop,如果有什么好的想法就狠狠的砸過來吧,筆者到時應該也會把這個寫成一個項目放到github上,大家一起用嘛,開源才是王道,哈哈。
開發安卓APP
我們使用kivy開發安卓APP,Kivy是一套專門用于跨平臺快速應用開發的開源框架,使用Python和Cython編寫,對于多點觸控有著非常良好的支持,不僅能讓開發者快速完成簡潔的交互原型設計,還支持代碼重用和部署,絕對是一款頗讓人驚艷的NUI框架。
因為跨平臺的,所以只寫一遍代碼,就可以同時生成安卓及IOS的APP,很酷吧。
本文會帶大家寫一個Hello world并瞧一瞧 Python 版的2048的代碼
kivy安裝
環境說明:筆者在用的是Python2.7.10
這里僅介紹windows平臺安裝
所有平臺參考: https://kivy.org/#download
更新pip,setuptools
python -m pip install --upgrade pip wheel setuptools
然后是安裝所需要的依賴
python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/
值得注意的是,上面的安卓需要訪問Google,所以請自備梯子,而且kivy.deps.gstreamer這個包比較大(95MB),可以單獨本地安裝,http://pan.baidu.com/s/1o7mlxNk
然后就是安裝kivy了
python -m pip install kivy
至此,安裝就已經完畢了,值得注意的是64位系統沒有開啟虛擬化支持,在導入kivy的時候會報錯,如果是64位系統就設置一下機器的BIOS,開啟虛擬化支持吧。
注:這里只是kivy的運行環境,這樣我就能直接在windows機器上直接調試了,怎么將代碼編譯成APK文件我們會在后面講到。
如果kivy在python中應該就能導入了。
按照世界慣例,我們”hello”一下吧。
新建一個.py文件
運行
然后會彈出一個框,大概如下,點擊”hello,kivy”會變顏色
點擊窗口并按“F1”會這個窗口的一些屬性
然后我們回過頭看一看代碼。
上面就是我們的Hello了
在windows上運行當然沒有什么太大的意義,怎么在安卓手機上運行才是我們想要的,
這時我們需要一個編譯環境。
官方說明的環境,如下:
You’ll need:
雖然官方提供了一個似乎還不錯的虛擬機鏡像,但是還是有很多內容需要翻出去,所以筆者在這里提供相對而言更加完善的鏡像
下載地址:http://pan.baidu.com/s/1geyAY7x
注:virtualbox,vmware需自行下載
root密碼:kivy
默認使用賬戶kivy,密碼:kivy123
當然你也可以下載官方鏡像,因為第一次編譯需要去國外下一大堆東西,所以請自行去下載。
Virtual Machine
A Virtual Machine with Android SDK and NDK and all otherpre-requisites pre installed to ease apk generation:
在筆者提供的鏡像里,桌面上有一個dev_and,只要將上面寫的代碼,放入這個文件夾即可(當然也可以在其他目錄,后面會講到)。
cd Desktop/dev_and/
初始化會在當前目錄生成一個buildozer.spec文件 用于配置生成的apk相關信息
buildozer init
###修改buildozer.spec文件
vi buildozer.spec
至少修改下面三項
# (str) Title of your applicationtitle = helloworld # (str) Package namepackage.name = helloapp # (str) Package domain (needed for android/ios packaging)package.domain = youer.com
然后注釋
# (str) Application versioning (method 1)#version.regex = __version__ = ['"](.*)['"]#version.filename = %(source.dir)s/main.py
下面這行改為非注釋 version = 1.2.0
最后我們生成我們需要的apk文件
buildozer -v android debug
buildozer.spec更詳細的相關參數配置參考:
http://buildozer.readthedocs.org/en/latest/specifications.html
buildozer命令會在當前文件夾創建一個bin,該文件夾里面有我們想要的apk文件
helloapp-1.2.0-debug.apk
helloapp-1.2.0-debug.apk
安裝以后是這樣:
話說在編譯的時候可能出現空間不足的情況,根據虛擬機的不同(vmware或virtualbox)自行擴容吧。
最后我們來瞧瞧簡易版Python開發的2048這個游戲的源代碼。
代碼:
https://github.com/mvasilkov/kb/tree/master/6_2048
先看效果圖:
試玩了一下,還是蠻流暢的,有興趣的可以下載玩一下。
下載地址:http://pan.baidu.com/s/1eQZACDW
這個游戲代碼雖然不長,但是還是蠻占篇幅的,所以簡要的說明一下流程。
主要由三部分組成,一是素材,圖片音頻之類的文件,二是Python代碼,三是kv文件,這個kv文件有點像 html 中的css。
Python代碼的文件名一般命名為 main.py
然后一定有一個叫做 XXXApp 的類,并繼承 App。
比如該類叫做GameApp,那么該目錄下的kv文件則必須為Game,如上圖所示,如果不是,那么kv文件中的一些設定就不會生效。
比如設定一個標簽
Label: id: time text: 'xxxx' font_size: 60
id為time,text文本內容為'xxxx',然后字體為60
好吧,點到為止吧,不過似乎什么都沒點到。
系列教程致力于可以快速的進行學習安卓開發,按照項目式的方法,通常一篇文章會做一個小程序。提高學習的興趣。
一方面總結自己所得,另一方面可以通過自己的分享幫助更多學習的同仁。
因為知識的連貫性,推薦按照瞬息進行學習。目錄鏈接:http://www.chengxiaoxiao.com/bozhu/1336.html
本教程由-做全棧攻城獅原創首發,轉載請注明出處。
求兼職:請聯系wx:aiquanzhan
頁尾提供github源代碼下載地址。
一、項目描述:
眾所周知,組成網站的每個頁面都是通過HTML進行展示的。我們可以通過在網頁右鍵進行查看源代碼。具體查看html源代碼。而作為安卓,應該如何獲取網頁源代碼呢?容我慢慢道來。
二、所需技術點:
多線程
網絡請求
文件流
三、一起開發
3.1分析:開發網頁源代碼查看器,主要步驟大約為:根據網址發出請求,解析響應流得到網頁源代碼,然后把網頁源代碼顯示出來。
3.2前臺界面:輸入點擊獲取按鈕,自動獲取指定網頁源代碼顯示在下方。
貼個代碼:
ScrollView:這是個設置垂直滾動條的控件。這樣哪怕textView特別大。我們也可以通過向下滑動顯示textView的全部內容了。
3.3初始化數據和控件
3.4獲取網頁源代碼,需要進行網絡請求操作。而網絡請求因網速等原因是非常耗時,安卓在較早版本中支持直接進行網絡請求的。后期版本只能通過開啟另外的線程進行網絡請求了。
所以我們需要。開啟新線程。
如何開啟新線程:
新線程和UI線程的通信:
UI界面所在的線程和本線程不是在相同的線程,兩者不能直接進行通信。必須通過一個Handler進行傳遞。好比老板都需要一個秘書進行上傳下達。Handler就是起了這個作用。
初始化一個Handler:
如何給Handler發送消息?
3.5進行網絡請求:
一切準備就緒:開始的啦:
流對象轉換為字符串:
當然進行網絡請求需要配置權限的:
打開AndroidManifest文件:
最終后臺處理代碼:
效果:
源代碼鏈接:https://github.com/shellcheng/AndroidHTMLViewer
原創:做全棧攻城獅- WX:aiquanzhan
*請認真填寫需求信息,我們會在24小時內與您取得聯系。