koji 積分 0 編輯於

讓我想到之前也查過這幾個檔案

haocheng 積分 0

這倒是,不過現在幾乎都用 Ansible 取代 Scripts 了...

koji 積分 0

這幾天狂發也,內容也短又好讀 :P

koji 積分 0

fish 哪些功能很推薦嗎,我也好想沒用到什麼特別的

IngramChen 積分 0

我的意思是 fish 寫慣了等到真的要寫 bash 就一直卡卡的

haocheng 積分 0

反正 script 都會寫用 bash 執行所以沒差啊,Ubuntu 預設一定有裝 bash

koji 積分 0

以前官方只要提到 EA 都會提到可能的優化有 stack allocation,所以才容易誤會吧

IngramChen 積分 2 編輯於

有關 var ,的確 rust 的做法比較好。不過 kotlin 寫到後來就是 vallateinit var 兩種而已。

Java10 要加入 var ,這點另人傷心,現在的規格是:

   var str1 = "foo"
   final String str2 = "bar"

final 的版本反而很長。應該是倒過來比較理想:

   val str1 = "foo"
   String str2 = "bar"

也就是鼓勵大家偏 final 的設計

IngramChen 積分 0 編輯於

Groovy 和 Scala 都曾挑戰過 Java 的霸權,不過最後的下場都是失敗。其中一項原因就是可讀性比 Java 差。(很奇怪吧?明明是更簡潔的新語言... 但事實就是它們做過頭了)

Kotlin 吸收兩者的教訓,調的剛剛好,讓人愛不釋手。

IngramChen 積分 3
  • Xamarin 是弄給 C# 開發者的
  • React Native 是 Front End 開發者才會去寫
  • Kotlin 是那些 Android/Java 開發者才有興趣
  • Flutter 是 Googler 內部使用

每個跨平台工具都有不同的跨平台的做法,但其實都有強烈的背景在。如果你不是該背景的人,通常不會去選該種特化的工具。

這些工具都各有優缺,但最主要的問題還是市場上人力資源不足,市場上多半還是 native 開發者較多。Mobile 開發者如果決定投入某平台的開發,他/她會投資相關的工具鏈和技能,很難說放棄再學另一套的,尤其是 Mobile 開發現在深似海…

有沒有人學好幾套的?一定有啦,但很多嗎?這位開發者的薪資又會上升到什麼等級?你公司請得起嗎?

kaif 積分 0

(MUST) 使用 UTF-8。 => 這python非ascii使用者蠻需要的,現在python json lib default都會編碼成ascii,不知道之後有沒有機會改變。

IngramChen 積分 0

還有 es5/es61 兩個 parse 出來的結果不太一樣,馬的,JSON 明明就是從 js 生態出來的,自己還搞得不相容

IngramChen 積分 1 編輯於

都用 Z 嗎?那的確是沒問題

但 offset 的 +/-hh:mm 其實也是 local ,但大多數的人把它當做絕對在用

koji 積分 1

我倒是之前就開始全都用 ISO 8601 了,雖然還沒聽到使用的人抱怨..

IngramChen 積分 0 編輯於
  • integer 最大可到 2^53 ,拿來放 unix epoch timestamp 可以放到 5000 年,夠了。時間這個欄位規格和 parser 一直很混亂,時區也難搞,所以我個人最後通通退化成 epoch milli-second 了。

  • 最上層只能是 {}[] 到是第一次注意到,所以單單寫 "foo" 這樣不算個 JSON。

  • JSON 格式很簡單,但難用的是不能寫 comment,還有不允許結尾多個 comma:

{
   "foo":"bar",
}

不接受結尾 comma 很煩

kaif 積分 0

比較精確的說是為了最佳化,值保存在L1 cache,沒有sync回L2/memory。有誤請指正。

另外這應該是比較節儉的語言才會有這種最佳化吧,好像golang python什麼的不會有這種狀況。

IngramChen 積分 0

升到 kotlin 1.2 , android kotlin relfection 好像壞了

Kros 積分 0 編輯於

一般情況多個 subscribeOn 沒有副作用,先搶先贏,Thread 不會改變

但如果有 intermediate operator ,就會有切換 thread 效果

natsu 積分 0 編輯於

這個情境真的很難重現,主要是要讓 thread 夠忙來不及更新資料才會發生 ...

就算只是單純的把 System.out 移到外面來,也會影響執行結果:

public class VolatileTest {
    private static volatile int MY_INT = 0;

    public static void main(String[] args) {
        new ChangeListener().start();
        new ChangeMaker().start();
    }

    static class ChangeListener extends Thread {
        @Override
        public void run() {
            int local_value = MY_INT;
            while ( local_value < 5){
                if( local_value!= MY_INT){
                    //LOGGER.log(Level.INFO,"Got Change for MY_INT : {0}", MY_INT);
                    //System.out.println("Got Change for MY_INT : " + MY_INT);
                    local_value= MY_INT;
                }
                //原本是 local_value != MY_INT 才會印出 Got Change ...
                System.out.println("Got Change for MY_INT : " + MY_INT);
            }
        }
    }

    static class ChangeMaker extends Thread{
        @Override
        public void run() {

            int local_value = MY_INT;
            while (MY_INT <5){
                //LOGGER.log(Level.INFO, "Incrementing MY_INT to {0}", local_value+1);
                System.out.println("Incrementing MY_INT to " + (local_value+1));
                MY_INT = ++local_value;
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) { e.printStackTrace(); }
            }
        }
    }
}