國務院教育督導委員會辦公室:將開展義務教育教師工資待遇落實情況督導_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

新華社北京12月20日電(記者施雨岑)國務院教育督導委員會辦公室近日發出通知,將於2020年開展義務教育教師工資待遇落實情況督導,要求高度重視義務教育教師工資待遇保障工作,義務教育教師平均工資收入水平應當不低於當地公務員平均工資收入水平。

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

通知強調,各地要做好統籌安排,按照國務院關於保障義務教育教師工資待遇的工作部署,加大工作力度。在年終為公務員發放獎勵性補貼及安排下一年度財政預算時,務必統籌考慮義務教育教師待遇保障問題。

通知明確,各省(自治區、直轄市)要結合當地實際,於2020年上半年對本行政區域內義務教育教師工資收入落實情況組織督導檢查。對發現政策落實不到位的,要採取約談、問責等多種措施督促整改。2020年,國務院教育督導委員會辦公室將把義務教育教師工資收入保障情況作為重點內容進行督導。

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

如何利用 Python 爬蟲實現給微信群發新聞早報?(詳細)_台中搬家

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

1. 場景

經常有小夥伴在交流群問我,每天的早報新聞是怎麼獲取的?

其實,早期使用的方案,是利用爬蟲獲取到一些新聞網站的標題,然後做了一些簡單的數據清洗,最後利用 itchat 發送到指定的社群中。

由於爬蟲面對 網站改版的不穩定性及 itchat 不安全性,所以放棄了這種方案

後期更改了一種方案,通過修改爬蟲方案,創建 API 服務,編寫 App 去獲取數據,然後手動發送到微信群

本篇文章將和大家詳細聊聊具體的實現過程

2. 數據爬取

第 1 步,通過 Python 爬蟲獲取數據

獲取方式有 2 種,分別是:已有的新聞早報網站、新聞網站的頭條新聞

選擇一種爬蟲方式,就能很快地爬取到目標網站的數據

第 2 步,數據清洗,排序

將爬取到的數據先進行一次關鍵字篩選,然後按照點贊或者閱讀數按照熱點進行排序

第 3 步,參數化,去重

去掉數據中重複的新聞,然後將最後展示的數目參數化

# 按照點贊數目,降序排列
news_sorted_pro = sorted(news, key=itemgetter('news_approve_num'), reverse=True)
 
result = []
 
for news_sorted_item in news_sorted_pro:
      result.append(news_sorted_item.get('title'))
 
# 去重
result = sorted(set(result), key=result.index)
 
# 只取前12條數據
result = result[:self.news_num] if len(result) >= self.news_num else result

需要注意的是,由於新聞網站會經常改版,建議爬取多個新聞網站,做好異常處理,做一個優先級,如果一個網站爬取數據失敗,切換到下一個級別的網站爬取數據

3. 服務化

將數據服務化,即編寫 API,目的是為了方便終端調用

如果使用 Python 編寫 API,建議使用 FastAPI 或 Flask 框架,因為這兩個框架開發 API 方便快捷,以 FastAPI 為例:

第 1 步,安裝依賴

包含 FastAPI 框架及 hypercorn 依賴,hypercorn 是獨立的 ASGI 服務器,方便 FastAPI 項目的部署

# FastAPI框架
pip3 install fastapi
 
pip3 install hypercorn

第 2 步,編寫 API

使用 FastAPI 很方便,不到 10 行代碼就能編寫一個接口服務

只需要實例化 FastAPI 對象,利用裝飾器指定請求方法和路徑即可,調用上面的爬蟲方法即可。

from fastapi import FastAPI
 
# 實例化
app = FastAPI()
 
# API,Get方式
@app.get("/last_news")
def get_last_news():
    """
    最新的新聞
    :return:
    """
    news = get_news()
 
    data = {
        'code': 0,
        'news': news
    }
 
    # 封裝
    return data

如要想本地調試 API,可以通過 uvicorn 命令運行項目

# 運行項目
uvicorn news:app --reload

然後訪問下面的地址,查看返回的新聞數據

http://127.0.0.1:8000/last_news

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

第 3 步,生成依賴遷移文件

使用 pip freeze 命令將在本地生成依賴遷移文件

# 生成遷移文件
pip freeze > requirements.txt

第 4 步,上傳代碼

將代碼上傳到代碼託管平台,比如:碼雲、GitLab 等

第 5 步,服務器拉取代碼

服務器中通過 git 拉取代碼,並通過依賴文件一鍵安裝所有依賴

# 安裝依賴
pip3 install -r requirements.txt

第 6 步,運行服務

使用 hypercorn 運行 FastAPI 項目,使進程一直在後台運行,並保存運行日誌信息

# 後台運行
# 保存日誌,綁定端口號為:8000
# nohup hypercorn news:app --bind 0.0.0.0:8000 > /news.log 2>&1 &

需要注意的是,項目綁定的端口號需要在防火牆和雲服務器安全組開啟

當然,如果使用 Java 編寫 API,推薦使用 Spring Boot,可以快速開發一個 Restful API 服務

4. 編寫 App

完成 API 服務之後,接下來就是在終端編寫一款 App 去訪問 API,拿到數據並展示出來

以編寫一款 Android 應用為例

首先,我們在界面上放置一個文本显示框和一個按鈕控件

然後,對按鈕控件設置點擊事件的監聽

get_news_btn = findViewById(R.id.get_news_btn);
 
//監聽事件
get_news_btn.setOnClickListener(this);
 
@Override
public void onClick(View v)
{
    switch (v.getId())
    {
        case R.id.get_news_btn:
            news_et.setText("獲取中。。。");
            getNewsMet();
            break;
        }
    }

接着,使用 Android 的網絡請求框架 OkHttp 框架調用 API 獲取數據

/***
* 獲取新聞
*/
private void getNewsMet()
{
     OkHttpClient okHttpClient = new OkHttpClient();
     //構建請求信息:連接請求url 請求方法method 請求頭部headers 請求體body 標籤tag
     Request request = new Request.Builder().url(url).get().build();
//        Call call = okHttpClient.newCall(request);
 
     okHttpClient.newCall(request).enqueue(new Callback()
     {
          @Override
          public void onFailure(Call call, IOException e)
          {
              Log.d("xag", "獲取失敗");
              showResult(false, "");
          }
 
          @Override
          public void onResponse(Call call, final Response response) throws IOException
          {
              Log.d("xag", "獲取成功")
              parseJsonWithJsonObject(response);
          }
      });
}

最後,將新聞數據显示在文本控件中,並複製到系統剪切板

private void copyToClip(String content)
{
     //獲取剪貼板管理器:
     ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
     // 創建普通字符型ClipData
     ClipData mClipData = ClipData.newPlainText("Label", content);
     // 將ClipData內容放到系統剪貼板里。
     if (null != cm)
     {
         cm.setPrimaryClip(mClipData);
     }
}

如果只有 iOS 設備,使用 Xcode 編寫 iOS 應用,建議將 Xcode 升級到 11.0 以上

創建項目的時候,推薦使用 SwiftUI 構建 UI 界面,然後利用 CocoaPods 添加 Alamofire 網絡請求依賴庫,其他操作步驟和 Android 端類似,這裏不展開說明

# Uncomment the next line to define a global platform for your project
source 'https://github.com/CocoaPods/Specs.git'
 
platform :ios, '9.0'
 
use_frameworks!
 
target 'news_eve' do
  # Comment the next line if you don't want to use dynamic frameworks
  pod 'Alamofire'
  pod 'SwiftyJSON'
  pod 'HandyJSON'
  # Pods for news_eve
end

最後

上面步驟只需要點擊 App 中的按鈕,早報新聞就複製到系統剪切板了,接着可以轉發到多個微信群了

當然,最後一步也可以利用 SoloPi 或者無障礙,將內容利用自動化操作,一鍵轉發出去

我已經將文中部分源碼上傳到 公眾號 後台,關注公眾號 AirPython 后回復「 早報 」即可獲得全部源碼

如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支持。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

蒙古爆發鼠疫 傳已死2人封城 外國遊客禁離境_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

摘錄自2019年5月5日自由時報報導

蒙古國傳爆發鼠疫,其中傳出鼠疫的烏列蓋市已有2人死亡,全城封閉檢疫,以致在當地旅遊外國遊客全被禁止回國。

《俄羅斯通訊社》報導,最初傳出爆發鼠疫訊息的是一個叫 vesti.ru網站,接著,俄羅斯駐蒙古大使館證實這個訊息。

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

綜合媒體報導,這場瘟疫初步認定是由當地土撥鼠傳播,已有2人死亡,其中,有人在醫院內死亡,以致在4月30日至5月1日夜裡,爆發鼠疫的烏列蓋市全城封閉檢疫,有外國遊客恐慌想要離城返國,即被禁止,也因此外傳鼠疫爆發事件;蒙古國宣布,檢疫將到今天(5月5日),是否繼續封城檢疫,還沒有進一步消息。

西伯利亞媒體也指出,蒙古人有生吃老鼠腎臟的傳統,認為會健康,每年都會發生鼠疫,並非新的疾病。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

據報 Microsoft 也在打造自家 ARM 晶片供 Surface 電腦與雲端伺服器使用_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

Apple 近日推出了自家基於 ARM 架構的 M1 晶片,效能、續航等方面受到許多人的讚揚,現在國外媒體報導指稱 Microsoft 也正在默默地著手設計自家的 ARM 晶片,以供未來的雲端伺服器及 Surface 電腦使用,此舉將直接挑戰 Intel 在電腦處理器領域的優勢地位。

據報 Microsoft 也在打造自家 ARM 晶片供 Surface 電腦與雲端伺服器使用

在過去,Microsoft 曾經與 AMD、高通合作,開發出供 Surface Laptop 3 和 Surface Pro X 配備的訂製款晶片,該公司於 2019 年為 Surface Pro X 打造了基於 ARM 的 SQ1 處理器,隨後於今年 10 月升級推出 SQ2 。然而,SQ1 和 SQ2 處理器只是高通 Snapdragon 8cx 第 1 代和第 2 代電腦處理器的品牌重塑。

根據彭博社報導,Microsoft 正在努力開發自家晶片,為雲端服務的伺服器與自家品牌 Surface 電腦提供動力,並尋求更多創造性的可能。Microsoft 發言人給彭博社的聲明中表示,由於 Silicon 是技術的基礎,他們將繼續投資在設計、製造和工具等領域,同時促進與加強與各種晶片供應商之間的合作夥伴關係。

目前來看,Intel 基本上在伺服器晶片市場擁有壟斷優勢,大多數網路服務的伺服器接採用該品牌旗下產品,也是 Intel 公司最有利可圖的收入來源,據估計, Intel 在伺服器市場約有 90% 的市佔率,擁有絕對的主導地位。如果 Microsoft 真的跟隨 Apple 腳步設計推出自家處理器,也象徵著 Microsoft 希望能放緩對 Intel 的依賴。

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

◎資料來源:彭博社

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

在 MacOS 中使用 multipass 安裝 microk8s 環境_潭子電動車

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污

在 MacOS 中使用 multipass 安裝 microk8s 環境

Multipass & MicroK8S 介紹

Kubernetes 是什麼?

Kubernetes 集群通過可靠和可擴展的方式對容器化應用進行託管,使得在 DevOps 思維和體系中,讓運維服務、系統升級等工作變得超級簡單。

Multipass 是什麼?

Multipass 是一款可運行於 Linux、Windows 和 MacOS 的輕量級虛擬機管理器,它專為希望使用單個命令即可啟動全新 Ubuntu 環境的開發人員而設計。它在 Linux 上使用 KVM、在 Windows 上使用 Hyper-V、在 MacOS 上使用 HyperKit,以便以最小的開銷運行虛擬機。它還可以在 Windows 和 MacOS 上使用 VirtualBox。Multipass 將協助你獲取最新鏡像,並持續保持更新。

MicroK8S 是什麼?

MicroK8S 是 CNCF 認證的 Kubernetes 部署環境,可在工作站或邊緣設備上運行。作為一個 snap 包,它可以原生的運行所有 Kubernetes 服務,如果需要還可以打包類庫和二進制文件。它的安裝僅受限於你的下載速度,而刪除 MicroK8S 后不會留下任何痕迹。

  • 參考:Install MicroK8s on Windows using Multipass
  • 參考:https://microk8s.io/

安裝 multipass & microk8s

安裝 multipass 服務

brew search multipass brew cask info multipass brew cask install multipass multipass version

通過 multipass 安裝和啟動 microk8s 環境

multipass launch –name microk8s-vm –mem 4G –disk 40G multipass list multipass stop microk8s-vm multipass delete microk8s-vm multipass purge

在虛機中安裝 microk8s 服務

multipass exec microk8s-vm — sudo snap install microk8s –classic multipass exec microk8s-vm — sudo iptables -P FORWARD ACCEPT

查看 microk8s 的 snap 包信息,比如版本信息

 multipass exec microk8s-vm — sudo snap info microk8s

增加賬號訪問權限,簡化操作

# 默認 ubuntu 賬號無權限操作集群,均需要 sudo # 可將 ubuntu 賬號加入 microk8s 用戶組以便簡化訪問 multipass exec microk8s-vm — sudo usermod -a -G microk8s ubuntu multipass exec microk8s-vm — sudo sudo chown -f -R ubuntu ~/.kube

增加訪問公鑰,簡化操作

# 在 ~/.ssh/authorized_keys 增加自己的公鑰,則可方便的進行SSH登錄 multipass shell microk8s-vm ssh ubuntu@192.168.64.2

查看磁盤空間

multipass exec microk8s-vm — df -kh

查看 kubeconfig 配置

multipass exec microk8s-vm — /snap/bin/microk8s.config

在 kubeconfig 中可以找到集群信息,可登錄查看

server: https://192.168.64.2:16443 username: admin password: xxx

增加 DNS 插件,必須安裝,多處依賴使用

multipass exec microk8s-vm — /snap/bin/microk8s.enable dns multipass exec microk8s-vm — /snap/bin/microk8s.enable dashboard

嘗試訪問 Grafana 地址

https://192.168.64.2:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy

安裝 Dashboard UI

multipass exec microk8s-vm — /snap/bin/microk8s.kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

使用 Bearer Token 進行鑒權訪問

# 為安全考慮,Dashboard UI 需要使用 Bearer Token 進行鑒權訪問,使用如下命令獲取 Token multipass exec microk8s-vm — /snap/bin/microk8s.kubectl -n kube-system get secret | grep default-token | cut -d ” ” -f1 multipass exec microk8s-vm — /snap/bin/microk8s.kubectl -n kube-system describe secret default-token-qqt75

訪問 Dashboard UI

https://192.168.64.2:16443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

有別於一般網頁架設公司,除了模組化的架站軟體,我們的營業主軸還包含:資料庫程式開發、網站建置、網頁設計、電子商務專案開發、系統整合、APP設計建置、專業網路行銷。

查看集群組件狀態

multipass exec microk8s-vm — /snap/bin/microk8s.status

可通過指定配置文件進行訪問

# 把kubeconfig保存至本地 /Users/xxx/.kube/microk8s-vm.yml,則可通過指定配置文件進行訪問 kubectl –insecure-skip-tls-verify –kubeconfig=”/Users/xxx/.kube/microk8s-vm.yml” get pods –all-namespaces

# 把kubeconfig保存至本地 ~/.kube/config,則可通過指定配置文件進行訪問 kubectl –insecure-skip-tls-verify get pods –all-namespaces

安裝 registry 組件

# The MicroK8s registry will not be enabled by default, so needs run the following to enable it. multipass exec microk8s-vm — /snap/bin/microk8s.enable registry

查看集群內組件狀態

multipass exec microk8s-vm — /snap/bin/microk8s.status | grep enabled

  • 參考:在 MacOS 中使用 multipass 安裝 microk8s 環境

部署業務應用

業務應用 Demo 代碼

urban-iptable-management # 簡單的IP地址查詢服務,服務自治,無外部依賴 urban-district-management # 簡單的省市區查詢服務,服務自治,無外部依賴 urban-traffic-management # 簡單的模擬服務間調用,依賴 district 服務查詢城市信息 urban-gateway-management # 模擬API網關,將訪問轉發至其他服務

  • Github Repo:https://github.com/gaochundong/urbanboot

本地 docker image 構建

cd urbanboot

docker build -t urban-iptable-management-app:latest –file ./urban-iptable-management/docker/Dockerfile . docker build -t urban-district-management-app:latest –file ./urban-district-management/docker/Dockerfile . docker build -t urban-traffic-management-app:latest –file ./urban-traffic-management/docker/Dockerfile . docker build -t urban-gateway-management-app:latest –file ./urban-gateway-management/docker/Dockerfile .

刪除無用鏡像

docker images docker rmi –force $(docker images | grep “^<none>” | awk ‘{print $3}’) docker images

保存本地鏡像至文件

# Save one or more images to a tar archive docker save -o urban-iptable-management-app.tar urban-iptable-management-app:latest docker save -o urban-district-management-app.tar urban-district-management-app:latest docker save -o urban-traffic-management-app.tar urban-traffic-management-app:latest docker save -o urban-gateway-management-app.tar urban-gateway-management-app:latest

  • 參考:Container Runtimes Part 3: High-Level Runtimes

拷貝鏡像文件至 microk8s 機器

scp ./urban-iptable-management-app.tar ubuntu@192.168.64.2:/tmp scp ./urban-district-management-app.tar ubuntu@192.168.64.2:/tmp scp ./urban-traffic-management-app.tar ubuntu@192.168.64.2:/tmp scp ./urban-gateway-management-app.tar ubuntu@192.168.64.2:/tmp

安裝鏡像至 registry

multipass exec microk8s-vm — /snap/bin/microk8s.ctr namespaces list multipass exec microk8s-vm — /snap/bin/microk8s.ctr images list -q

multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-iptable-management-app.tar multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-district-management-app.tar multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-traffic-management-app.tar multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-gateway-management-app.tar

multipass exec microk8s-vm — /snap/bin/microk8s.ctr images list -q | grep urban

刪除鏡像

multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-iptable-management-app:latest multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-district-management-app:latest multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-traffic-management-app:latest multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-gateway-management-app:latest

在部署文件中配置鏡像位置

# 替換deployment.yaml文件中的image路徑 /Users/xxx/g/github/urbanboot/urban-district-management/kubernetes/deployment.yaml

創建 Namespace

kubectl –insecure-skip-tls-verify create namespace urbanboot

部署應用

kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-iptable-management/kubernetes/deployment.yaml -n urbanboot kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-district-management/kubernetes/deployment.yaml -n urbanboot kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-traffic-management/kubernetes/deployment.yaml -n urbanboot kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-gateway-management/kubernetes/deployment.yaml -n urbanboot

查看部署

kubectl –insecure-skip-tls-verify get deployments -n urbanboot kubectl –insecure-skip-tls-verify get pods -n urbanboot

刪除部署,會自動刪除 Pods

kubectl –insecure-skip-tls-verify delete deployment urban-iptable-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete deployment urban-district-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete deployment urban-traffic-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete deployment urban-gateway-management-app -n urbanboot

  • 參考:Build apps locally and Deploy on MicroK8s

創建 Service

kubectl –insecure-skip-tls-verify get services -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose -h

multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-iptable-management-app –type=ClusterIP –port=7200 –name=urban-iptable-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-iptable-management-app –type=NodePort –port=7200 –name=urban-iptable-management-nodeport -n urbanboot

multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-district-management-app –type=ClusterIP –port=7200 –name=urban-district-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-district-management-app –type=NodePort –port=7200 –name=urban-district-management-nodeport -n urbanboot

multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-traffic-management-app –type=ClusterIP –port=7200 –name=urban-traffic-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-traffic-management-app –type=NodePort –port=7200 –name=urban-traffic-management-nodeport -n urbanboot

multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-gateway-management-app –type=ClusterIP –port=7200 –name=urban-gateway-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-gateway-management-app –type=NodePort –port=7200 –name=urban-gateway-management-nodeport -n urbanboot

multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-traffic-management-app –type=LoadBalancer –port=7200 –name=urban-traffic-management-loadbalancer -n urbanboot

  • 參考:Kubernetes NodePort vs LoadBalancer vs Ingress? When should I use what?
  • The big downside is that each service you expose with a LoadBalancer will get its own IP address, and you have to pay for a LoadBalancer per exposed service, which can get expensive!

使用配置文件創建 Service

kubectl –insecure-skip-tls-verify expose -f /Users/xxx/g/github/urbanboot/urban-traffic-management/kubernetes/service.yaml -n urbanboot kubectl –insecure-skip-tls-verify expose -f /Users/xxx/g/github/urbanboot/urban-traffic-management/kubernetes/nodeport.yaml -n urbanboot

刪除 Service

kubectl –insecure-skip-tls-verify delete service urban-iptable-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-iptable-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-district-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-district-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-traffic-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-traffic-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-gateway-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-gateway-management-nodeport -n urbanboot

查一下 TCP 端口監聽

multipass exec microk8s-vm — netstat -nl -t

查看部署事件,按照時間排序

kubectl –insecure-skip-tls-verify get events -n urbanboot –sort-by=.metadata.creationTimestamp

查看 Pod 日誌

kubectl –insecure-skip-tls-verify get pods -n urbanboot kubectl –insecure-skip-tls-verify describe pod urban-traffic-management-app-58d7578547-p277h -n urbanboot kubectl –insecure-skip-tls-verify logs urban-traffic-management-app-58d7578547-p277h -n urbanboot kubectl –insecure-skip-tls-verify logs urban-traffic-management-app-58d7578547-p277h -n urbanboot –tail=20

查看 Endpoint 信息

# Spring Cloud Kubernetes 會通過 API 查詢 Endpoints kubectl –insecure-skip-tls-verify get services -n urbanboot kubectl –insecure-skip-tls-verify get endpoints -n urbanboot kubectl –insecure-skip-tls-verify get all –all-namespaces kubectl –insecure-skip-tls-verify get all -n urbanboot kubectl –insecure-skip-tls-verify describe services urban-traffic-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify describe services urban-traffic-management-app -n urbanboot

訪問 NodePort 端口

curl -s http://192.168.64.2:30211 curl -s http://192.168.64.2:30211 -i curl -s http://192.168.64.2:30211 -v

登錄 Pod 環境

kubectl –insecure-skip-tls-verify exec -it urban-traffic-management-app-58d7578547-p277h -n urbanboot — /bin/bash

查看 Java 進程

java -version env | grep JAVA ps -ef|grep java

版權聲明:本篇文章《在 MacOS 中使用 multipass 安裝 microk8s 環境》由作者 Dennis Gao 發表自博客園個人技術博客,未經作者本人同意禁止以任何的形式轉載,任何自動的或人為的爬蟲轉載行為均為耍流氓。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污

旗艦 5G 新機小米 10T 與小米 10T Pro 年底陸續開賣,速度、攝影與視覺享受一網打盡_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

低調了很久的小米手機趕在年底祭出最壓軸的重磅旗艦新機小米10T Pro 與小米 10T,無論在處理器、相機鏡頭與螢幕,全方位展現這兩款新機突破自我極限的強大能量,展現在 5G 旗艦機市場的強大決心,這兩款新機將從 12 月底開始陸續上市,想要擁有高 CP 的 5G 新機,又想要強大的效能,這兩款機型將滿足你的願望。

旗艦 5G 新機小米 10T 與小米 10T Pro 年底陸續開賣,速度、攝影與視覺享受一網打盡

小米 10T Pro 和小米 10T 搭載 6.67 吋 FHD+ 螢幕,以 P3 廣色域和 TrueColor 技術提供更廣更精準的色彩;閱讀模式 3.0 模式可模擬紙張紋理效果,以保護用戶的眼睛;陽光螢幕 3.0 模式能自動增強對比度並在戶外動態調整色彩飽和度。螢幕支援 144Hz 高螢幕更新率,加上 AdaptiveSync 變速顯示技術,可依照手機上正在觀看、使用的功能來自動調節幀數,舉例來說,在觀看電影時調節為 48Hz,玩遊戲時提升到 144Hz 等,以求確保更流暢的體驗和更高效的電池使用率。

小米 10T Pro 和小米 10T 配備旗艦級 Qualcomm Snapdragon 865 5G 行動平台,提供了強大的效能和 5G 連接技術,手機涵蓋廣闊的 5G 頻段,確保在更多地方有更好的網路相容性。小米 10T 搭載 8GB + 128GB,小米 10T Pro 搭載 8GB + 256GB,兩款手機接配被 5000mAh 大容量電池,並且可支援 33W 高速充電。

小米 10T Pro 為小米於台灣市場首款搭載 1 億像素超高畫質旗艦手機。後置 1 億 800 萬像素超高解析度主鏡頭 + 1300 萬像素超廣角 + 500 萬畫素微距的 AI 三鏡頭組合,將寬廣達 123 度的大景與近至 2 公分的微小靜物都完美補捉。主鏡頭支援 1.6μm 四合一大像素功能,提供高達 30 倍數位變焦並配備 OIS 光學防手震。小米 10T Pro 搭載 2,000 萬像素 AI 前置相機,鏡頭直徑僅 3.8 公分,為迄今前置鏡頭佔據最小正面螢幕空間的小米手機,將螢幕視覺體驗放到最大,讓用戶在自拍的時候,聚焦在最美的自己。

小米 10T 則搭載支援 1.6μm 四合一大像素功能的 6,400 萬像素主鏡頭 ,在暗光環境中也可以拍出畫面細節;同時,也與小米10T Pro相同,擁有 1,300 萬像素超廣角鏡頭和 500 萬像素 2 公分微距鏡頭,讓使用者捕捉每個重要時刻。另外,配備 2,000 萬像素的 AI 前置鏡頭,讓用戶無論自拍或進行視訊通話,皆可展現最佳狀態。兩款手機均支援 8K 錄影,以 7680×4320 超高解析度打造電影等級大片,還能從 8K 影片中拍攝直出 3,300 萬像素相片,讓影像愛好者不漏掉畫面任何細節。

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

小米10T 提供宇宙黑與月光銀共兩種顏色,售價為新台幣 13999 元(8GB + 128GB),自12月28日起在中華電信、遠傳電信、小米專賣店、PChome24h購物小米旗艦館、senaonline 神腦生活與 friDay 購物全面上市;首波購買再贈送小米手環 5,價值新台幣 945 元,數量有限,送完為止。小米 10T Pro 提供宇宙黑與極光藍共兩種顏色,售價為新台幣 15999 元(8GB + 256GB),將於 2021 年 1 月中下旬開放預購。

 

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

那些你不知道的汽車標誌小秘密_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

而這個三叉星的含義,是代表着海、陸、空的机械化,換言之即是要在這三個領域當老大的意思。法拉利是世界頂級的跑車品牌,創始人恩佐法拉利從一個車隊跟班慢慢成長為賽車界的大佬,最後創立經典的法拉利公司,簡直就是一個傳奇。

相信不少朋友都知道汽車標誌這個東西的存在,不過這些汽車標誌的背後到底有什麼來歷,那可能就沒有這麼多人搞清楚了,所以今天給大家簡單說說一些品牌標誌的故事。

阿爾法羅密歐是一個很有歷史的意大利品牌,而它的標誌也非常高大上,內容也相當豐富。其大約來由就是,在1910年阿爾法羅密歐成立的時候,將米蘭城盾形徽章里的紅色十字和吃人的龍形蛇組成到了一塊,象徵著中世紀米蘭領主維斯康泰公爵的祖先擊退使城市人民遭受苦難的“龍蛇”的傳說。而經過一百多年的變遷,其標誌也進行過不同程度的修改,這也紀錄著阿爾法羅密歐的發展歷程。

奧迪作為最為人熟知的德系汽車品牌,其標誌是四個圓環相扣在一起,只比五環少一環。其來歷就是當時在德國的四家汽車車企Audi、Horch、DKW和Wanderer,在二戰前聯合起來成立了一個集團,史稱汽車聯盟。當時的這個汽車聯盟還參加了歐洲不少的汽車賽事,在汽車運動史上留下了深深的足跡,到了後來才演變為現在的奧迪。

寶馬長久以來都是汽車界的豪強品牌,藍白相間的標誌是街知巷聞。最初寶馬是一個紮根在德國巴伐利亞州的發動機製造公司,其創始人決定採用巴伐利亞州的州徽來作為自家品牌的標誌。後來寶馬不論是搞飛機還是汽車摩托車,

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

都造得有聲有色,而這個藍白相間的標誌也就傳遍宇宙了。

奔馳的標誌一直被大家稱為三叉星,世上第一輛汽車就出自奔馳。所以,擁有這個簡單易記的標誌,更是有助於品牌宣傳。而這個三叉星的含義,是代表着海、陸、空的机械化,換言之即是要在這三個領域當老大的意思。

法拉利是世界頂級的跑車品牌,創始人恩佐法拉利從一個車隊跟班慢慢成長為賽車界的大佬,最後創立經典的法拉利公司,簡直就是一個傳奇。其躍馬標誌也成為世上辨識度最高的標誌之一。其來由相信很多人都聽說過了,就是受一位飛行員老媽的建議,將她兒子飛機上的躍馬標誌copy到自家車上,以期帶來好運。後來飛行員是壯烈犧牲了,但法拉利的公司一直發展到現在。

蘭博基尼也是一個很有個性的跑車品牌,創始人Ferruccio Lamborghini靠着造拖拉機起家,還是個金牛座。本來是個法拉利迷,後來因為和法拉利公司結下樑子,毅然創立蘭博基尼跑車公司,推出大量以鬥牛命名的跑車來與法拉利抗衡。

雪佛蘭的logo被大家戲稱為“衛生巾”。沒錯,就因為那個十字形狀的傢伙。其來由也是有各種不同版本的解答,有的說靈感來源於因為看着牆發獃,覺得牆紙好看,就有了靈感;有的說是在吃吃喝喝的湧出靈感;還有的說是因為由瑞士國旗啟發而來。我看完之後決定也去努力吃吃喝喝然後發獃,看會不會突然來什麼靈感,做點什麼事情,然後走上人生巔峰。

本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

移動端適配-rem(新)_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

概念

對於移動端開發來說,無可避免的就是直面各種設備不同分辨率和不同DPR(設備像素比)的問題,在此忽略其他兼容性問題的探討。

移動端像素

  1. 設備像素(dp),也叫物理像素。指設備能控制显示的最小物理單位,意指显示器上一個個的點。從屏幕在工廠生產出的那天起,它上面設備像素點就固定不變了。

  2. 分辨率,屏幕上物理像素的數量。

  3. 設備獨立像素(dip),又稱密度無關像素。可以認為是計算機坐標系統中的一個點,這個點代表一個可以由程序使用並控制的虛擬像素。由相關係統轉化為物理像素在設備上體現。

  4. css像素,web編程中的概念,屬於設備獨立像素中的一種,獨立於設備,屬於邏輯上衡量像素的單位。

  5. 設備像素比(dpr) = 設備像素值(dps) / 設備獨立像素值(dips),代表系統轉化時一個css像素佔有多少個物理像素。

  6. 像素密度(ppi),設備(屏幕)每英寸內有多少個像素點。

移動端三個視口

移動端視口 viewport(div100%時的css大小):移動設備上的 viewport 就是設備的屏幕上能用來显示我們的網頁的那一塊區域,可能與瀏覽器的可視區域不同。默認比瀏覽器可視區域要大(980px),這也是為什麼一般的PC端網頁放在移動端會出現橫向滾動條的原因。

移動端中的三個不同的可視區域大小,來自於ppk關於移動設備的viewport研究:

  1. 布局視口(layout viewport),瀏覽器默認的viewport,一般比瀏覽器可視區域大。

  2. 視覺視口(visual viewport),瀏覽器的可視區域大小(瀏覽器的可見區域css像素值)

  3. 理想視口(ideal viewport),設備的實際物理寬度(device-width),是一種與ppi無關的設備原始的寬度(英寸),例如320px和660px下的iphone的理想視口都是320px。

位圖像素

一個位圖像素是柵格圖像(如:png, jpg, gif等)最小的數據單元。每一個位圖像素都包含着一些自身的显示信息(如:显示位置,顏色值,透明度等)。

理論上,1個位圖像素對應於1個物理像素,圖片才能得到完美清晰的展示。當遇上對應的位圖像素與物理像素不統一的時候。

  1. 位圖像素 < 物理像素。 1個位圖像素對應於多個物理像素,由於單個位圖像素不可以再進一步分割,所以只能就近取色,從而導致圖片模糊。(具體取決於設備系統的圖像算法,並不是簡單的切割圖片)(圖片拉伸)

  2. 位圖像素 > 物理像素。1個物理像素對應多個位圖像素,所以它的取色也只能通過一定的算法(显示結果就是一張位圖像素只有原圖像素總數四分之一的圖片),肉眼看上去雖然圖片不會模糊,但是會覺得圖片缺少一些銳利度,或者是有點色差(但還是可以接受的)(圖片擠壓)

rem適配

什麼是rem

即以根節點(html)的字體大小作為基準值進行長度計算。

假定 html 的 fontSize 為 16px,則 1rem = 16px

如果我們更改 html 的 fontSize,rem 也會更新,總是保持 1rem = 1 fontSize (html)

為什麼使用rem

開發過移動端項目的同學應該都知道,不同手機設備的大小是不一樣的,在進行移動端開發時,我們通常會為 html 加上 viewport meta

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

這裏得結合上面的移動端像素和移動端視口進行分析,width=device-width將此時的頁面寬度設置為設備寬度(理想視口),所以此時頁面寬度等於設備寬度,不同手機的設備寬度是不同的所以頁面寬度也不同

iPhone4 頁面寬度 = window.innerWidth = 設備寬度 = 320px

iPhone6 頁面寬度 = window.innerWidth = 設備寬度 = 375px

所以為了適配不同的設備寬度,我們通常不直接用px來寫css代碼,因為在不同手機中頁面寬度不同,此時px的相對大小也是不同的。如果我們把一個元素設置為375px來達到100%寬度效果的話,在320設備寬度的手機就出問題了。

由此我們引入了 rem 來做適配,在 css 中直接使用 rem 作為計量單位,如果不做些什麼的話,1rem = 16px(瀏覽器默認字體大小),在不同手機上都是一樣,還是無法適配,所以要點在於如何根據設備寬度在做轉化

// 假定設計稿寬度750px
const designWidth = 750;

// 通過設備寬度(window.innerWidth)和設計稿寬度(designWidth)的比例來設置 html fontSize
document.documentElement.style.fontSize =  (window.innerWidth / designWidth) + 'px';

通過上面代碼的設置,我們就可以很輕鬆的適配移動端項目了,假定設計稿上一個元素寬度750px,那我們就在css定義750rem

在設備寬度為320px的手機上

750rem = 750 * 1rem = 750 * (window.innerWidth / designWidth) px = 750 * (320 / 750) px = 320px

同理,在設備寬度為375px的手機上

750rem = 750 * 1rem = 750 * (window.innerWidth / designWidth) px = 750 * (375 / 750) px = 375px

可能還有個問題,為什麼不直接用百分比來適配?因為百分比在很多情況下是除不盡或者帶有小數的,顯然帶有小數點的px會帶來各種各樣的誤差

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

高清適配

如果你覺得移動端適配像上面一樣簡單轉化下就行,那就 too young too sample

1px問題

什麼是 1px 問題?

以 iphone6 為例,大家應該聽過啥視網膜像素之類的,2倍屏之類的吧。其實也就是此時 設備像素比(dpr) = 設備像素值(dps) / 設備獨立像素值(dips),即一個css像素對應兩個物理像素,也就是你在css中寫的1px其實在設備显示的是兩個像素,當你設置 border = 1px 時看起來就沒有那種1px的纖細效果,總感覺不盡如人意,差那麼一點點味道。

你以為的1px

用戶看到的1px(請忽略顏色不同)

追求用戶體驗的公司通常是不能容忍 1px 問題的

圖片的模糊問題

同樣的以 iphone6 為例,我們如果定義一張圖片寬度為375px,如果圖片的像素(位圖像素),此時一個像素的圖片會對應兩個物理像素(參考上面的位圖像素),就會造成圖片模糊的問題了。你可能會問?那我直接加載750px像素的圖片不就好了(位圖像素大於物理像素時很多人是看不出失真的)。

答案當然是可以的,但你覺得追求用戶體驗的公司能容忍無故的流量耗費和性能浪費么?當然不能

解決方案

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

前面也有介紹過這部分代碼,但是沒有說明 initial-scale=1 的作用,initial-scale 定義了頁面的初始縮放,1代表不縮放。initial-scale的值也會影響頁面寬度,即此時的css像素。

前面我們說過,在 viewport meta 的約束下

頁面寬度 = window.innerWidth = 設備寬度,但其實正確的是 頁面寬度 = window.innerWidth = 設備寬度 / scale,為什麼是除呢?大家可以想象一下,當頁面縮放時(例如scale=0.5),是不是會導致更多的內容內容展示在當前可見區域中,css像素(頁面)是變大了。

以 iphone6 為例,當我們設置

<meta name="viewport" content="width=device-width, initial-scale=0.5, user-scalable=no">

此時頁面寬度 = window.innerWidth = 設備寬度 / scale = 375 / 0.5 = 750px,也就是說現在頁面寬度(對應css像素)和物理像素是相等的,所以我們設置的 1px 在手機中將真正显示 1pt(1個物理像素),也就解決了1px的問題。

所以解決方法如下

// 獲取設備dpr
const dpr = window.devicePixelRatio;

// 計算縮放比例
const scale = 1 / dpr;

// 動態設置meta
const metaEl = doc.createElement('meta');
metaEl.setAttribute('name', 'viewport');
metaEl.setAttribute('content', 'width=device-width,initial-scale=' + scale + ', user-scalable=no');

對應圖片而言,要想達到最清晰的显示狀態則要使圖片的位圖像素與設備的物理像素對應,所以可以對圖片做如下適配

[dpr=1] img {
width: 200rem;
background: ‘@1x.png’;
}

[dpr=2] img {
width: 200rem;
background: ‘@2x.png’;
}

此方案的原理就是利用meta來更過css像素(因為css像素是虛擬像素由計算機定義的,見上文),以此達到一個css像素對應一個物理像素的效果,1px == 1pt

rem高清適配

利用上文提供的rem移動端適配思路,加上現在的高清適配思路,就可以完成移動端高清適配啦

直接貼代碼,來自前端:『REM』手機屏幕高清適配方案

(function(designWidth, rem2px) {
  var win = window;
  var doc = win.document;
  var docEl = doc.documentElement;
  var metaEl = doc.querySelector('meta[name="viewport"]');
  var dpr = 0;
  var scale = 0;
  var tid;

  if (!dpr && !scale) {
    var devicePixelRatio = win.devicePixelRatio;
    if (win.navigator.appVersion.match(/iphone/gi)) {
      if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
        dpr = 3;
      } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
        dpr = 2;
      } else {
        dpr = 1;
      }
    } else {
      dpr = 1;
    }
    scale = 1 / dpr;
  }

  docEl.setAttribute('data-dpr', dpr);
  if (!metaEl) {
    metaEl = doc.createElement('meta');
    metaEl.setAttribute('name', 'viewport');
    metaEl.setAttribute('content', 'width=device-width,initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');

    if (docEl.firstElementChild) {
      docEl.firstElementChild.appendChild(metaEl);
    } else {
      var wrap = doc.createElement('div');
      wrap.appendChild(metaEl);
      doc.write(wrap.innerHTML);
    }
  } else {
    metaEl.setAttribute('name', 'viewport');
    metaEl.setAttribute('content', 'width=device-width,initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
  }
  // 以上代碼是對 dpr 和 viewport 的處理,代碼來自 lib-flexible。

  // 一下代碼是處理 rem,來自上篇文章。不同的是獲取屏幕寬度使用的是 
  // document.documentElement.getBoundingClientRect
  // 也是來自 lib-flexible ,tb的技術還是很強啊。
  function refreshRem(_designWidth, _rem2px){
    // 修改viewport后,對網頁寬度的影響,會立刻反應到 
    // document.documentElement.getBoundingClientRect().width
    // 而這個改變反應到 window.innerWidth ,需要等較長的時間
    // 相應的對高度的反應,
    // document.documentElement.getBoundingClientRect().height 
    // 要稍微慢點,沒有準確的數據,應該會受到機器的影響。
    var width = docEl.getBoundingClientRect().width;
    var d = window.document.createElement('div');
    d.style.width = '1rem';
    d.style.display = "none";
    docEl.firstElementChild.appendChild(d);
    var defaultFontSize = parseFloat(window.getComputedStyle(d, null).getPropertyValue('width'));
    // d.remove();
    var portrait = "@media screen and (width: "+ width +"px) {html{font-size:"+ ((width/(_designWidth/_rem2px)/defaultFontSize)*100) +"%;}}";
    var dpStyleEl = doc.getElementById('dpAdapt');
    if(!dpStyleEl) {
      dpStyleEl = document.createElement('style');
      dpStyleEl.id = 'dpAdapt';
      dpStyleEl.innerHTML = portrait;
      docEl.firstElementChild.appendChild(dpStyleEl);
    } else {
      dpStyleEl.innerHTML = portrait;
    }
    // 由於 height 的響應速度比較慢,所以在加個延時處理橫屏的情況。
    setTimeout(function(){
      var height = docEl.getBoundingClientRect().height;
      var landscape = "@media screen and (width: "+ height +"px) {html{font-size:"+ ((height/(_designWidth/_rem2px)/defaultFontSize)*100) +"%;}}"
      var dlStyleEl = doc.getElementById('dlAdapt');
      if(!dlStyleEl) {
        dlStyleEl = document.createElement('style');
        dlStyleEl.id = 'dlAdapt'
        dlStyleEl.innerHTML = landscape;
        docEl.firstElementChild.appendChild(dlStyleEl);
      } else {
        dlStyleEl.innerHTML = landscape;
      }
    },500);
  }

  // 延時,讓瀏覽器處理完viewport造成的影響,然後再計算root font-size。
  setTimeout(function(){
    refreshRem(designWidth, rem2px);
  }, 1);

})(750, 100);

代碼比較多,有興趣的可以直接上github上找到源代碼(https://github.com/hbxeagle/rem/blob/master/HD_ADAPTER.md)

後記

這是一篇很早之前寫的總結了,今天又複習修改了一下,寫的有錯誤或者寫的不清楚的地方請大家多多指正。

這麼多年過去,其實現在已經逐漸流行直接使用 vw vh 來做移動端適配了,因為隨着設備的更新兼容性的問題已經大大減少。但使用 rem 模式還是有一定需求的,畢竟vw還沒有全部兼容,可以參考vw兼容性。還有就是有pc瀏覽器打開並限制最大寬度的需求使用vw就不可以了。

後面有時間將寫寫利用 vw vh 來進行移動端適配的總結,會比這個簡單。

參考

  • meta name=”viewport” content=”width=device-width,initial-scale=1.0″ 解釋

  • CSS像素、物理像素、邏輯像素、設備像素比、PPI、Viewport

  • 前端:『REM』手機屏幕高清適配方案

歡迎到前端學習打卡群一起學習~516913974

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

Elasticsearch到底哪點好?_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

少點代碼,多點頭髮

本文已經收錄至我的GitHub,歡迎大家踴躍star 和 issues。

https://github.com/midou-tech/articles

從今天開始準備給大家帶來全新的一系列文章,Elasticsearch系列

新系列肯定會有很多疑惑,先為大家答疑解惑,下面是今天要講的問題

為什麼寫Elasticsearch系列文章?

之前在文章中也陸陸續續的提到過,龍叔是做搜索引擎的。搜索引擎技術屬於商業技術,大家耳熟能詳的百度搜索,Google搜索,這可都是因為把握核心搜索技術,從而誕生了商業帝國。

每個互聯網大廠都想去分一杯搜索的羹,360搜索、神馬、頭條、搜狗搜索等等,由此可見搜索技術的商業作用和機密性了。

搜索把握用戶的入口

蘑菇街的搜索引擎是一款使用C++開發、完全自研、沒有開源的搜索引擎,沒有開源就是不能隨便寫出來的。

但是現在不一樣了

第一、我離職了,離開了意味着不在持有那些商業機密了,就算不講出來我也沒啥心理負擔(但還是不能講的,離職協議寫的很清楚,不能泄露公司商業機密)。

第二、去新的公司還是在搜索領域,他們用Es Elasticsearch是一個開源搜索,開源的東西可以隨便說,但還是不能說公司的商業數據

自己一直在搜索領域做,輸出搜索相關的文章,第一個可以讓自己更好的學習和總結,第二個可以讓粉絲們了解到搜索這個神秘的技術,增加大家自身的核心競爭力。

後面會說到,Elasticsearch是搜索引擎,但不簡單隻能使用在搜索領域,他可以作用的場景非常多。

Elasticsearch是什麼?

Elasticsearch 是一個分佈式的開源搜索分析引擎,適用於所有類型的數據,包括文本、数字、地理空間、結構化和非結構化數據。

Elasticsearch 在 Apache Lucene 的基礎上開發而成,Elasticsearch 以其簡單的 REST 風格 API、分佈式特性、速度和可擴展性而聞名,是 Elastic Stack 的核心組件。

Elastic Stack 是適用於數據採集、充實、存儲、分析和可視化的一組開源工具。人們通常將 Elastic Stack 稱為 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列豐富的輕量型數據採集代理,這些代理統稱為 Beats,可用來向 Elasticsearch 發送數據。

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

Elasticsearch 的實現原理主要分為以下幾個步驟,首先用戶將數據提交到Elasticsearch 數據中心,再通過分詞控制器去將對應的數據分詞,將其權重和分詞結果一併存入數據,當用戶搜索數據時候,再根據權重將結果排名,打分,再將返回結果呈現給用戶。

是什麼差不多搞清楚了,再說說ES都哪些成熟的應用以及在哪些領域使用。

Elasticsearch在哪些領域使用?

  • 應用程序搜索
  • 網站搜索
  • 企業搜索
  • 日誌處理和分析
  • 基礎設施指標和容器監測
  • 應用程序性能監測
  • 地理空間數據分析和可視化
  • 安全分析
  • 業務分析

Elasticsearch有哪些特點?

Elasticsearch 很快。 由於 Elasticsearch 是在 Lucene 基礎上構建而成的,所以在全文本搜索方面表現十分出色。Elasticsearch 同時還是一個近實時的搜索平台,這意味着從文檔索引操作到文檔變為可搜索狀態之間的延時很短,一般只有一秒。因此,Elasticsearch 非常適用於對時間有嚴苛要求的用例,例如安全分析和基礎設施監測。

Elasticsearch 具有分佈式的本質特徵。 Elasticsearch 中存儲的文檔分佈在不同的容器中,這些容器稱為分片,可以進行複製以提供數據冗餘副本,以防發生硬件故障。Elasticsearch 的分佈式特性使得它可以擴展至數百台(甚至數千台)服務器,並處理 PB 量級的數據。

Elasticsearch 包含一系列廣泛的功能。 除了速度、可擴展性和彈性等優勢以外,Elasticsearch 還有大量強大的內置功能(例如數據匯總和索引生命周期管理),可以方便用戶更加高效地存儲和搜索數據。

Elastic Stack 簡化了數據採集、可視化和報告過程。 通過與 Beats 和 Logstash 進行集成,用戶能夠在向 Elasticsearch 中索引數據之前輕鬆地處理數據。同時,Kibana 不僅可針對 Elasticsearch 數據提供實時可視化,同時還提供 UI 以便用戶快速訪問應用程序性能監測 (APM)、日誌和基礎設施指標等數據。

學習Elasticsearch能提高哪些競爭力?

看到Elasticsearch在這麼多的領域在使用,特點也這麼明顯。看到這裏估計都不用在說什麼核心競爭力,你已經意識到了。

Elastic 於 2018 年 6 月 29 日正式推出 Elastic Certified Engineer 認證考試,認證通過可以獲得官方頒發的證書和徽章,title就是 Elastic認證工程師

具體認證的細節和含金量,沒有具體研究過,但是可以很明顯的感受到官方出了這樣一個認證,表明社會需要大量這樣的人才,而這方面人才的培養和考核指標還欠缺。

有沒有必要一定要考這個認證?

個人覺得,和英語四六級一樣,通過了再說沒用。

如果你是學生,可以考慮去考一個認證,因為你很難有業務場景驅使你去做這方面的成長,認證一定是有難度的,一個一個的困難會驅使你成長,最終這個認證也會成為招聘時一個非常大的亮點。

這個認證會有哪些幫助?

  • 對於快速的構建知識體系幫助。

  • 對於全面的熟悉官方文檔幫助。

  • 對於實戰解決線上問題幫助。(遇到了相關技術問題基本上不需要再求助於社區,80%以上的問題自己基本就能解決。)

  • 對於增強信心、克服英文恐懼幫助。

Elasticsearch 支持哪些編程語言?

  • Java
  • JavaScript (Node.js)
  • Go
  • .NET (C#)
  • PHP
  • Perl
  • Python
  • Ruby

哪裡可以找到有關 Elasticsearch 的更多信息?

  • Elasticsearch GitHub 存儲庫:https://github.com/elastic
  • Elasticsearch 官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  • Elasticsearch中文社區:https://elasticsearch.cn

我是龍叔,一個分享互聯網技術和心路歷程的star。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

豪華車都未必有的高逼格配置,這些十幾萬的車竟然配了!_台中搬家

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

台中搬家公司推薦超過30年經驗,首選台中大展搬家

8T車型為例,最大馬力為163ps,最大扭矩250Nm,與之搭配的是成熟的6AT變速箱。日常使用中,博瑞的油門反饋比較輕鬆有力,動力沒有過多的猶豫,更多地呈現出線性般的動態效果,駕駛風格沉穩厚重。即便是在連續碾過減速帶時,底盤依然能展現出很高級的濾震效果,乘坐舒適度不錯。

前言

HUD抬頭显示系統,相信大家都並不陌生,這項技術曾經被廣泛應用到戰鬥機上。從原理上可以得知,HUD是通過光學原理投射到擋風玻璃上,用來显示車輛的各種行車信息。用戶不再需要低頭反覆的查看儀錶盤,從而避免影響注意力的分散,使得用戶能夠更加專註地觀察前方路況,特別是在夜晚或者高速情況下,HUD抬頭显示對於提升行車安全性有着非常高的實際價值。

當然,在很多消費者眼中,HUD抬頭显示一度認為是豪華車才該有的標籤,而搭載如此高大上配置的車型,少說也得四、五十萬吧。事實上,隨着技術變革和競爭加劇,如今不少的家用車也紛紛將其作為安全配置中的金字招牌,十幾萬出頭就能享受到高逼格又實用的抬頭显示系統。

昂克賽拉當初一經亮相,動感驚艷的外形重新吸引了眾多忠實用戶,馬自達也憑此聚焦了高度的關注度。而最新一代的昂克賽拉得益於“魂動”理念的加持,車身造型如同獵豹般奔跑姿態,着實是令人“魂牽夢繞”。雖然昂克賽拉已經上市有一段時間,但其外觀始終百看不厭,兩廂三廂各有特色,兼具個性與時尚,顏值高度走在同級車的前沿。

昂克賽拉的內飾一樣充滿驚喜,設計路線仍以簡潔為主,內飾採用了碳纖維材質,再配上炮筒式中置儀錶盤,凸顯了整個車廂滿滿的運動風格,狠狠的激發了用戶的駕控慾望。無論是三廂版還是兩廂版均配有抬頭显示,不過只有頂配才配有,視覺體驗一目瞭然,給到駕駛者更充足的操控自信。另外,值得肯定的是昂克賽拉全系都標配了ESp等安全主動配置。但作為運動定位的昂克賽拉,整體空間都要遜色於其它主流家用車,或許這正是馬自達特立獨行的代價吧。

即然說到馬自達,那麼無論如何也繞不開其先進的創馳藍天技術。昂克賽拉提供兩款1.5L和2.0L自吸發動機,其中1.5L排量車型的最大馬力為117ps,最大扭矩148Nm,匹配的是6MT和6AT變速箱。憑藉自身出色的匹配調校,動力的輸出線性平順,與6AT變速箱節奏一致、恰好火候,幾乎感覺不到任何的換擋動作,同時為了滿足用戶不同的操控需求,還提供了手動變速箱與換擋撥片的選擇,駕駛樂趣十足。

國產車也有抬頭显示功能?沒錯,就在這台號稱“最美中級車”的吉利博瑞身上。誠然,國產車的高配置、大空間已經成為不少自主車企慣用的招式。但平心而論,博瑞的綜合實力還是不錯的。外觀方面運用了最新家族化設計元素,並融入了中國傳統文化理念,在保持高大上的車身形象又帶有親切感,整車的辨識度非常高。

博瑞內飾似乎也挑不出毛病,中控台上採用了軟質材料,質感、手感一流。車內線條的細膩處理也能看得出設計師花費了不少時間在構造,造型層次感十足,包括工藝水準也達到一個新台階。高配置、大空間自然是博瑞分內之事,抬頭显示功能具備自動感光調節,非常人性化,

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

而且支持多信息显示,提升了內飾的檔次感和操控的便利性。

以配有HUD的1.8T車型為例,最大馬力為163ps,最大扭矩250Nm,與之搭配的是成熟的6AT變速箱。日常使用中,博瑞的油門反饋比較輕鬆有力,動力沒有過多的猶豫,更多地呈現出線性般的動態效果,駕駛風格沉穩厚重。即便是在連續碾過減速帶時,底盤依然能展現出很高級的濾震效果,乘坐舒適度不錯。

對於法系車,總是對其持有一種特殊的情感。而作為東風標緻的旗艦車型標緻508,改款之後同樣延續了法系車特有的浪漫與不羈,相比之前卻更接地氣,更符合國人的審美口味。外觀風格穩重大氣,特別是針對其前臉部分進行了一番大刀闊斧,鍍鉻圍繞下的格珊條,通過分體式的設計營造出不錯的層次感,線條硬朗又不失圓潤,配合犀利的LED大燈,簡直是讓人眼前一亮。

至於內飾設計,則相對平庸。但好在車廂的做工用料處理得不錯,不惜採用大量的軟材質包裹,這點非常迎合國人的喜好。只是在人體工程學上,法國工程師還是一如既往的固執,操作起來與用戶習慣非常衝突。但是,抬頭显示的功能性還是值得一提,擋風玻璃上的轉速、時速的信息完善度較好,显示效果也比較出色。標緻508配置可謂相當厚道,完全在同級主流之上。

此次標緻508改款,最大的變化要數動力的升級,新增了一台1.8THp發動機,最大馬力204ps,最大扭矩280Nm,動力數據確實可圈可點。實際駕駛過程中,標緻508表現也印證了的推測,在低速區間的動力響應最為积極,動力能夠保持高效的連貫性。6AT變速箱的調校也足夠聰明,底盤懸挂的表現穩重踏實,而且舒適度相當不錯。

與同門兄弟雅閣不同,思鉑睿的產品風格以運動為最大賣點。前臉繼承了最新的家族化臉譜設計,同時誇張的鍍鉻裝飾條激進前衛,全LED大燈的點綴,視覺上富有衝擊力。與前臉相呼應的還有尾部設計,辨識度很高的豎形LED尾燈,雙邊雙出的排氣管布局,搭配出很強烈的設計美感,十分吸睛耐看。

內飾方面則採用本田一貫的設計格調,中控台明顯偏向於駕駛員一側,非對稱的造型充斥着活力的運動氛圍。內飾材質使用了搪塑工藝處理,手感、工藝尚能接受。抬頭显示的效果比較出色,導航、時速、限速等重要行車信息一應俱全,畢竟都達到了20多萬的價位,其餘配置情況則只能說一般般。

思鉑睿全系提供了兩種不同的動力規格,而2.4L地球夢自吸發動機匹配一台8速雙離合變速箱,最大馬力和最大扭矩分別為208ps和247Nm。動力的調校符合運動定位,無論是動力爆發還是換擋快感,思鉑睿都做到了游刃有餘,絲毫沒有一秒的遲疑。紮實硬朗的底盤,可以給到駕駛者一種暢快淋漓的操控體驗,但隔音和濾震依然是本田的一大通病。

總結:綜合這四款車比較下來,昂科賽拉與博瑞的性價比較高,各方面的表現較為滿意,十幾萬就能購入帶抬頭显示功能的車型,應該更值得用戶入手。而標誌508和思鉑睿則由於是合資中級車的身份,價位相對更高一級,但在同級中均有不錯的口碑,也是同價位少有的配置車型。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

台中搬家公司費用怎麼算?

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司