發表文章

設定Linux伺服器不能Ping

設定Linux伺服器不能Ping ping其實就是用icmp封包完成的 系統節點 /proc/sys/net/ipv4/icmp_echo_ignore_all 用bash設定 $ echo 1 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_all 1 用sysctl設定 $ sysctl net.ipv4.icmp_echo_ignore_all 1 上述方法都是暫時性的, 如果系統要在開機時套用,請把設定寫在 /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 Ref: http://ubuntuhandbook.org/index.php/2013/07/disable-ping-response-ubuntu-server/

在Windows 10產生md5,sha1雜湊值

Win10內建的Powershell可產生雜湊值 用法: Get-FileHash 文件路徑 -Algorithm 校驗的Hash值類型| Format-List MD5雜湊值 Get-FileHash "你的檔案路徑" -Algorithm MD5| Format-List SHA1雜湊值 Get-FileHash "你的檔案路徑" -Algorithm MD5| Format-List SHA256雜湊值 Get-FileHash "你的檔案路徑" | Format-List 因為Get-FileHash預設就是用SHA256,所以可不需要參數 ref: https://blog.csdn.net/qikexun/article/details/76401102

AOSP差分OTA中加入前後版MD5和版本號紀錄

--- build/tools/releasetools/ota_from_target_files +++ build/tools/releasetools/ota_from_target_files @@ -642,6 +642,15 @@ def LoadSystemFiles(z):        out[fn] = common.File(fn, data)    return out +def GetMD5(path): +    tp_file = open(path,"r") +    if tp_file == False: +        print("WARNING: cannot generate MD5".path) +        return "NONE" +    re_value = hashlib.md5(tp_file.read()).hexdigest() +    tp_file.close() +    del tp_file +    return re_value  def GetBuildProp(prop, info_dict):    """Return the fingerprint of the build of a given target-files info_dict.""" @@ -665,6 +674,12 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):                                           OPTIONS.source_inf...

抓取主機的IP(含IPv4和IPv6)

抓取主機的IP(IPv4和IPv6) Python部份 import socket addrs = socket.getaddrinfo('www.hinet.net',443) ipv4_addrs = list(set([addr[4][0] for addr in addrs if addr[0] == socket.AF_INET])) ipv6_addrs = list(set([addr[4][0] for addr in addrs if addr[0] == socket.AF_INET6])) print ('first IPv4:', ipv4_addrs[0], ' candidates:', len(ipv4_addrs)) print ('first IPv6:', ipv6_addrs[0], ' candidates:', len(ipv6_addrs)) 以上程式碼測試過python 3.5.2和python 2.7.12 輸出為: first IPv4: 210.61.33.225  candidates: 8 first IPv6: 2001:b000:1e5:1100::8  candidates: 8 BASH部份 $ nslookup -querytype=A www.hinet.net $ nslookup www.hinet.net Server:   127.0.1.1 Address:  127.0.1.1#53 Non-authoritative answer: www.hinet.net canonical name = hinet-hp.cdn.hinet.net. Name: hinet-hp.cdn.hinet.net Address: 210.61.33.229 Name: hinet-hp.cdn.hinet.net Address: 210.61.33.227 Name: hinet-hp.cdn.hinet.net Address: 210.61.33.232 Name: hinet-hp.cdn.hinet.net Address: 210.61.33.231 Name: hinet...

設定TextView當加入文字後會自動捲到最底(Auto-scrolling TextView)

這裡展示的是在android的基本範例碼中加入可以自動捲到最底的TextView, 網路有許多解答關於auto-scrolling的作法,但是總是有缺點,例如透過修改Movement方法來完成,但是對於TextView下方還有其他元件的Layout,總是無法自動捲動顯示最後幾排文字。 在ConstraintLayout中,我們透過設置高度為0dp,讓ConstraintLayout能夠正確將TextView的當前的高度資訊反映在getHeight()函數。隨後再為TextView加入TextChangedListener讓,讓新的文字被append到TextView時,設定gravity的方法,讓TextView會自動捲到最底的文字位置。 若您還希望可以用滑鼠/觸控方式移動到上下部分,只要再加入下面這行即可 txtMsgView.setMovementMethod(new ScrollingMovementMethod());

用Chrome查看遠端伺服器IP

圖片
原來一直都有這功能,只是沒有用過, 你可以... 按F12進開發模式 > Network分頁 > 點擊要看的Request > 右方Header分頁 > General裏面就有"Remote Address" 如果懶得點這麼深,也可以把Remote address直接顯示在Network的每個request裡頭,右鍵點擊標頭"Name",勾選"Remote address"即可。

解決Flutter安裝在Windows上的Android License status unknown(NoClassDefFoundError)問題

基本安裝好flutter使用flutter doctor檢測系統,其中Android SDK部分一直有問題 Android License status unknown 從下面這個討論串得知也有人遭遇相同問題 https://github.com/flutter/flutter/issues/16452 跟隨討論串已確認是sdkmanager的問題 Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema         at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)         at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)         at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)         at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)         at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema         at java.base/jdk.internal.loader.BuiltinClassLoader...

解決Android Studio編譯錯誤:Error: Invoke-customs are only supported starting with Android O (--min-api 26)

Error: Invoke-customs are only supported starting with Android O (--min-api 26) build.gradle文件中android下增加: compileOptions {     sourceCompatibility JavaVersion.VERSION_1_8     targetCompatibility JavaVersion.VERSION_1_8 } https://blog.csdn.net/yinxing2008/article/details/83619313

Apps Script的小程式片斷

返回純文字   return ContentService.createTextOutput('純文字'); 返回純HTML   return HtmlService.createHtmlOutputFromFile("html-name"); 返回沒有帶參數得template   return HtmlService.createTemplateFromFile("template-name").evaluate(); 在template-name.html裏面可以穿插呼叫的程式碼,以 <? 起頭, ?> 結尾;如果要輸出值則是 <?= 起頭, ?> 結尾。通常template只有call函數的會使用這個,不然都會寫成下面的作法。 返回有帶參數得template   var template = HtmlService.createTemplateFromFile("template-name");   template.you_defined_var = 'value1';   template.you_defined_var2 = 'value2';   return template.evaluate(); 這樣在template-name.html內就可以用you_defined_var和you_defined_var2這兩個變數。 返回JSON   var your_json = { 'key1' : 'value1' };   return ContentService.createTextOutput(JSON.stringify(your_json))                      .setMimeType(ContentService.MimeType.JSON); 這個最常做的就是下面取得sheet的資料 返回整個sheet的資料JSON格式   var sheet = SpreadsheetApp.openById(SpreadsheetID).ge...

測試AppsScript使用的python程式

這裡感謝Taylor提供的幫助 python 3.5.2 版本 程式碼如下: #!/usr/bin/python3 # -*- encoding: utf-8 -*- try:     # for python 3.5.2     import urllib.parse     import urllib.request except AttributeError:     import urllib query_method = 0 test_url = "你的測試URL" param_obj = {     "m":"123456", } if 0 == query_method:     # POST method     form_data = urllib.parse.urlencode(param_obj).encode('utf-8')     req = urllib.request.Request(test_url, form_data)     print('query url:', test_url)     with urllib.request.urlopen(req) as f:         status = f.status         resp = f.read().decode('utf-8') elif 1 == query_method:     # GET method     params = urllib.parse.urlencode(param_obj)     req_url = "%s?%s" % (test_url, params)     print('query url:', req_url)     with urllib.request.urlopen(req...