[go: up one dir, main page]


Doug Stevenson
Developer Advocate
Ilustrasi logo Firebase Test Lab
Tim Firebase Test Lab dengan bangga mengumumkan bahwa developer sekarang memiliki kemampuan untuk menulis pemicu Cloud Functions yang menerima hasil pengujian dari Firebase Test Lab. Sebelumnya, developer harus memeriksa hasil pengujian secara manual, atau menulis kode untuk memilih hasil pengujian Test Lab API secara berkala. Dengan pemicu Cloud Functions, kita lebih mudah untuk segera tahu kapan pengujian selesai dan mendapatkan ringkasan hasil-hasilnya.
Firebase Test Lab memungkinkan Anda untuk menjalankan pengujian otomatis dan terskrip terhadap aplikasi di berbagai perangkat Android dan iOS yang dihosting di pusat data Google. Cloud Functions sekarang memperluas kemampuan Test Lab dengan menyediakan backend yang terkelola sepenuhnya sehingga memungkinkan developer untuk menulis dan menerapkan kode yang terpicu ketika pengujian selesai. Pemicu Test Lab yang ditulis untuk diterapkan ke Cloud Functions memiliki format berikut saat menggunakan Firebase SDK untuk JavaScript dan diterapkan dengan Firebase CLI:
exports.matrixOnComplete =
functions.testLab.testMatrix().onComplete(testMatrix => {
  const matrixId = testMatrix.testMatrixId;
  switch (testMatrix.state) {
    case 'FINISHED':
      // Test finished with results
      // Check testMatrix.outcomeSummary for pass/fail
      break;
    case 'ERROR':
      // Test completed with an infrastructure error
      break;
    // check other possible status codes...
  }
  return null;
});
Anda bisa menggunakan pemicu ini untuk secara terprogram memberi tahu tim tentang hasil pengujian, misalnya, mengirim email, memposting pesan ke ruang kerja Slack, membuat masalah di JIRA, serta mengintegrasikan dengan fitur alur kerja tim yang lain.
Dukungan Test Lab muncul di versi 3.2.0 dari modul node firebase-functions. Pastikan membaca dokumentasi untuk mendapatkan detail selengkapnya tentang pemicu Test Lab, dan gunakan referensi API untuk menemukan semua informasi yang tersedia di hasil matriks pengujian. Tersedia juga quickstart dan kode contoh di GitHub untuk membantu Anda memulai. Untuk diskusi, bergabunglah dengan tim engineering Test Lab di saluran #test-lab di Firebase Slack.


Ditulis oleh: Sean Morgan (Two Six Labs), Yan Facai (Alibaba), Moritz Kröger (RWTH Aachen University), Tzu-Wei Sung (National Taiwan University), Dheeraj Rajaram Reddy (Manipal University)


Apa yang dimaksud dengan SIG Addons?

Dengan diperkenalkannya TensorFlow 2.0, kami telah membuat Special Interest Group (SIG) baru yang dikenal sebagai TensorFlow Addons. Grup ini mengatur repositori kontribusi yang sesuai dengan pola API yang sudah mapan, tetapi mengimplementasikan fungsionalitas baru yang tidak tersedia di TensorFlow inti. Sebagai contoh, fungsionalitas baru ini bisa berupa algoritme baru dari makalah yang diterbitkan atau fungsionalitas yang hilang untuk prapemrosesan dan pemfilteran data. Lihat di Github: https://github.com/tensorflow/addons
Sebagai SIG yang dikelola komunitas, Addons memungkinkan pengguna untuk memasukkan ekstensi baru ke ekosistem TensorFlow secara berkelanjutan. Repositori mengikuti pendekatan modular dengan subpaket dan submodul yang dikelola oleh anggota komunitas yang ditunjuk. Mulai sekarang, subpaket ini meliputi:
  • tfa.activations
  • tfa.callbacks
  • tfa.image
  • tfa.layers
  • tfa.losses
  • tfa.metrics
  • tfa.optimizers
  • tfa.rnn
  • tfa.seq2seq
  • tfa.text
Tujuan lain dari komunitas TensorFlow Addons adalah menyediakan dokumentasi dan contoh untuk semua fungsionalitas melalui Google Colab Notebooks. Ini akan membantu developer baru dan penggemar machine learning untuk tidak hanya memahami fungsi, tetapi juga akan memberikan pendekatan praktik terbaik dan contoh implementasi.
TensorFlow Addons menggunakan empat platform untuk organisasi dan komunikasi:

Pindah dari tf.contrib

Tujuan project ini mungkin terdengar sangat familier, dan Addons memang tempat landing untuk banyak tf.contrib yang telah dipindahkan dari repositori TensorFlow sentral. Dalam beberapa tahun terakhir, banyak kode di tf.contrib menjadi tidak terpakai, tidak terawat, rumit, dan sangat sulit digunakan karena dokumentasinya. Banyak API khusus dibuat di tf.contrib ini sehingga semakin mempersulit integrasi fungsionalitasnya ke dalam kode Anda. Dengan memindahkan algoritme yang paling relevan ke TensorFlow-Addons dan membersihkannya, sebagian besar kode yang Anda gunakan di tf.contrib juga akan tersedia di addons.. Selain itu, banyak fungsionalitas baru sudah menjadi bagian dari TF-Addons dan ada banyak lagi yang direncanakan.

Cara menginstal

TensorFlow Addons menyediakan paket pip untuk macOS dan Linux, dengan rencana untuk mendukung Windows dan Anaconda di masa mendatang. Cobalah sekarang dalam rilis tensorflow-2.0 terbaru:
pip install tensorflow-addons
Untuk menggunakan TensorFlow-addons dalam kode Python, Anda bisa mengimpor paket dengan:
import tensorflow as tf
import tensorflow_addons as tfa

Keberlanjutan Repositori

Untuk memastikan bahwa TensorFlow Addons tidak menjadi kuburan kode tidak terpakai, pengelola subpaket dan submodul dihadirkan untuk mengatur bagian repositori. Pengelola ini memiliki tanggung jawab berikut:
  • Secara berkala meninjau dan membuang kode lama dan tidak terpakai
  • Mengelola kandidat yang lulus untuk TensorFlow Core
  • Memastikan kesesuaian API dan kualitas pengujian/kode
  • Mengelola Masalah
  • Meninjau Perubahan
Informasi lebih lanjut dan detail tentang sistem pengelola proxy bisa dilihat di RFC yang baru saja diterima mengenai keberlanjutan Addons:
https://github.com/tensorflow/community/blob/master/rfcs/20190308-addons-proxy-maintainership.md
Kami berharap bahwa kehadiran pengelola dan tinjauan periodik akan menjaga kualitas repositori ini, menjadikan TensorFlow Addons sebagai bagian dari ekosistem TensorFlow yang penting dan sangat berguna untuk tahun-tahun mendatang.

Cara Berkontribusi

Berkontribusi untuk TensorFlow Addons adalah cara yang bagus untuk membuat Anda familier dengan kemajuan terbaru di bidang ML, serta sarana untuk membiasakan diri dengan praktik terbaik TF2.
Langkah awal yang baik bagi kontributor baru adalah membaca dokumen CONTRIBUTING.md di repositori GitHub TensorFlow Addons. Dokumen ini menjelaskan proses peninjauan, gaya coding, dan cara menyiapkan lingkungan pengembangan Anda. Setelah familier dengan struktur umum repositori ini, Anda bisa melihat ke bagian masalah dan memilih masalah yang ingin Anda selesaikan. Masalah yang diberi label help wanted dan good first issue adalah tempat yang bagus untuk memulai. Kami juga mendorong kontribusi contoh dan praktik terbaik yang bisa dibuat menggunakan Google Colab.

Silakan tulis komentar di masalah yang sesuai atau buka masalah baru sebelum Anda mulai bekerja untuk menghindari beberapa kontribusi atau pekerjaan yang tidak selaras dengan roadmap. Setelah itu, cukup cabangkan repositori Addons, terapkan kode Anda dan buka permintaan pull setelah Anda selesai. Salah satu pengelola akan meninjau perubahan Anda dan menggabungkannya ke cabang master setelah selesai.

Contoh TFA

Lihat cara mengintegrasikan addons secara mulus dengan TensorFlow inti:

https://github.com/tensorflow/addons/blob/master/examples/losses_triplet.ipynb



Siap untuk pengembangan aplikasi web berkualitas

Visi kami untuk Flutter adalah selalu menyediakan toolkit yang cepat, produktif, dan terbuka guna menciptakan pengalaman pengguna yang indah di semua platform. Kami memulai dengan seluler, dengan toolkit yang sudah digunakan untuk puluhan ribu aplikasi, besar dan kecil. Di Google I/O tahun ini, kami mengumumkan pratinjau pertama dukungan Flutter untuk web, yang memungkinkan developer untuk menggunakan kode dan keterampilan yang sama untuk menargetkan browser web, dan kami sudah melihat banyak ketertarikan. Terima kasih kepada Anda semua yang sudah bereksperimen dengan Flutter di web dan memberi kami masukan.




Kami gembira bisa mengumumkan bahwa kami sedang bergerak ke fase pengembangan baru saat kami semakin dekat dengan rilis berkualitas produksi dari dukungan web kami. Hari ini, kami membuka program eksklusif untuk perusahaan, agensi desain, dan startup yang sudah siap sungguh-sungguh membangun di Flutter untuk web. Kami menyediakan slot terbatas menurut aplikasi bagi mereka yang siap untuk terlibat dengan kami secara langsung pada gelombang pertama aplikasi web Flutter produksi.
Kami mencari kandidat dengan skenario yang menarik, rencana untuk merilis pengalaman Flutter berbasis web dalam enam hingga dua belas bulan ke depan, serta bersedia ditampilkan pada event-event dalam aktivitas pemasaran dan peluncuran. Seperti semua program pratinjau, jalannya pasti tidak akan mulus, tetapi kami siap memberikan dukungan dan akses awal untuk mengatasi segala hambatan yang Anda alami.
Peserta yang diterima akan menerima dukungan prioritas dan kesempatan untuk menyorot project mereka di media dan acara Google / Flutter.

Cara mendaftar

Silakan mendaftar dengan mengisi formulir ini. Kami akan menerima aplikasi yang memenuhi syarat mulai sekarang hingga akhir Agustus.
Informasi selengkapnya tentang dukungan Flutter untuk web bisa ditemukan di flutter.dev/web. Kami menantikan aplikasi Anda!


Ditulis oleh Florina Muntenescu, Android Developer Advocate
Menampilkan teks adalah tugas penting dalam sebagian besar aplikasi, jadi di Android Q kami terus menghadirkan fitur baru untuk meningkatkan kinerja dan mendukung kebutuhan Anda. Kami secara default menonaktifkan hyphenation, yang memungkinkan pembuatan jenis huruf menggunakan beberapa font atau jenis font, menampilkan daftar font yang terinstal pada perangkat, dan meningkatkan beberapa API penataan gaya teks yang paling sering digunakan.

Hyphenation secara default dinonaktifkan di Android Q dan AppCompat v1.1.0

Pengujian kinerja kami menunjukkan bahwa ketika hyphenation diaktifkan, 70% dari waktu yang dipakai untuk mengukur teks adalah pemrosesan hyphenation.
diagram lingkaran menunjukkan waktu yang dihabiskan CPU untuk membuat StaticLayout: Hyphenation membutuhkan waktu hingga 70% untuk mengukur teks, 30% untuk pemrosesan teks yang lain
Hyphenation membutuhkan waktu hingga 70% untuk mengukur teks
Mengingat bahwa hyphenation sering kali tidak dibutuhkan untuk semua TextViews dalam aplikasi, dan karena dampaknya pada kinerja, kami memutuskan untuk menonaktifkan hyphenation secara default di Android Q dan AppCompat v1.1.0. Jika Anda ingin menggunakan hyphenation, Anda harus mengaktifkannya secara manual di aplikasi dengan menyetel frekuensi hyphenation ke normal. Anda bisa menyetelnya dengan beberapa cara:
Sebagai atribut TextAppearance dalam styles.xml:
<style name="MyTextAppearance" parent="TextAppearance.AppCompat">
    <item name="android:hyphenationFrequency">normal</item>
</style>
Sebagai atribut TextView:
<TextView android:hyphenationFrequency="normal" />
Langsung dalam kode:
textView.hyphenationFrequency = Layout.HYPHENATION_FREQUENCY_NORMAL
Cari tahu selengkapnya tentang cara kerja hyphenation dari pembahasan di Android Dev Summit 2018.

Menggunakan beberapa font khusus dalam TextView yang sama

Pertimbangkan tombol yang memadukan font khusus (Lato dalam contoh ini) dengan font ikon:
Tombol Secure Checkout dengan ikon gembok, ikon dan font latin
Tombol dengan ikon dan font Latin
Class Button hanya menerima satu instance jenis huruf yang akan ditetapkan pada teks. Pra-Android Q, Anda bisa membuat Typeface menggunakan satu jenis font. Android Q memungkinkan pembuatan jenis huruf dari beberapa jenis font dengan API baru, Typeface.CustomFallbackBuilder, yang memungkinkan penambahan hingga 64 jenis font per jenis huruf.
Contoh font ikon kami bisa diimplementasikan seperti ini:
button.typeface = Typeface.CustomFallbackBuilder(
    // add the Latin font
    FontFamily.Builder(
        Font.Builder(assets, "lato.ttf").build()
    ).build()
).addCustomFallback(
    // add the icon font
    FontFamily.Builder(
        Font.Builder(assets, "icon_font.ttf").build()
    ).build()
).build()
Saat membuat jenis font, pastikan Anda tidak memasukkan font dari jenis yang berbeda ke dalam objek jenis font yang sama atau model font yang sama ke dalam jenis font yang sama. Misalnya, memasukkan Lato, Kosugi, dan Material ke dalam jenis font yang sama akan menciptakan konfigurasi yang tidak valid, seperti halnya memasukkan dua font bold ke dalam jenis font yang sama.
Untuk menetapkan jenis font umum (serif, sans-serif, atau monospace) agar digunakan ketika teks dirender menggunakan font sistem, gunakan metode setSystemFallback() untuk menyetel font pengganti sistem:
Typeface.CustomFallbackBuilder(
    FontFamily.Builder(
       ...
    ).build()
).setSystemFallback("sans-serif")
.build()

Update API penataan gaya teks

Android Q menghadirkan beberapa update ke berbagai API penataan gaya teks:

Peningkatan dukungan untuk font variabel

TextAppearance sekarang mendukung atribut fontVariationSettings:
<style name="MyTextAppearance" parent="TextAppearance.AppCompat">
    <item name="android:fontVariationSettings">...</item>
</style>
Atribut fontVariationSettings bisa diatur langsung pada TextView di Android Q dan di AppCompatTextView:
<TextView
    ...
    app:fontVariationSettings="..."
/>

Peningkatan API durasi

TextAppearanceSpan sekarang mendukung typeface, setelan shadow, fontFeatureSettings dan fontVariationSettings.
Antarmuka LineBackgroundSpan dan LineHeightSpan sekarang memiliki implementasi standar: LineBackgroundSpan.Standard dan LineHeightSpan.Standard.


Mengakses font sistem

Dengan lebih dari 100 bahasa yang didukung oleh Android, dan dengan berbagai font yang mendukung beragam himpunan karakter, mengetahui font sistem yang bisa merender karakter yang diinginkan tidaklah mudah. Aplikasi yang melakukan perenderan teks sendiri seperti game, penampil dokumen, atau browser memerlukan informasi ini. Di Android Q, Anda bisa mengambil font sistem yang didukung untuk string dengan FontMatcher NDK API.
Font sistem yang bisa merender teks ini
Font sistem yang bisa merender teks ini
Mari perhatikan string penelusuran di atas. FontMatcher API menunjukkan kepada kita objek font dan panjangnya. Contoh pseudocode yang disederhanakan terlihat seperti ini:
// font = NotoSansCJK-Regular.ttc
// length = 2
auto[font, length] = AFontMatcher_match("たすく a.k.a. のな");

// font = Roboto-Regular.ttf
// length = 8
auto[font, length] = AFontMatcher_match(" a.k.a. のな");

// font = NotoSansCJK-Regular.ttc
// length = 2
auto[font, length] = AFontMatcher_match("のな");
FontMatcher API tidak akan menunjukkan nullptr:
  • Jika tidak ada font yang mendukung string yang diberikan, font Tofu (󟿽), simbol hieroglif, yang akan ditampilkan.
  • Jika tidak ditemukan dukungan model yang pas, font dengan model yang paling sesuai dan mirip akan ditampilkan.
Jika Anda ingin mendapatkan semua font sistem yang tersedia, Anda bisa melakukannya dengan API enumerasi font yang baru. Dalam Java, Anda bisa menggunakan SystemFonts.getAvailableFonts, atau di NDK, Anda dapat menggunakan ASystemFontIterator. Hasil enumerasi font hanya bisa diubah oleh update sistem, jadi Anda harus menyimpannya dalam cache.


Update font

Font Myanmar baru

Android menambahkan font Myanmar baru ke Android Q yang kompatibel dengan Unicode dan mampu merender Bahasa Myanmar Unicode dan non-Unicode (yang biasa dikenal sebagai Zawgyi), secara langsung. Ini berarti mulai dari Android Q, Android memudahkan pengguna untuk beralih ke Unicode: sekarang pengguna bisa menggunakan font Unicode untuk membaca teks Unicode dan non-Unicode untuk pertama kalinya. Android juga menambahkan persyaratan baru untuk CDD ekosistem Android yang mengambil posisi lebih kuat terhadap kebutuhan Unicode, termasuk subtag baru "Qaag" yang harus digunakan OEM sebagai lokal yang menandakan Bahasa Myanmar non-Unicode. Semua perubahan ini akan sangat membantu dan mempermudah developer dalam jangka panjang, karena berkurangnya fragmentasi ekosistem membuatnya lebih mudah untuk dikembangkan bagi 50 juta pengguna kami di Myanmar.

Emoji baru

Emoji baru di Android Q
Emoji baru di Android Q
Katakan Halo kepada teman-teman emoji baru Anda! Update terbaru mencakup sejumlah emoji yang berfokus pada disabilitas, 59 desain inklusif gender, pasangan multi-ras, serta beberapa binatang lucu dan barang-barang rumah tangga. Lihat emoji terbaru dan terkeren pada Gboard di perangkat Android Q pilihan Anda.
Teks memainkan peran penting dalam sebagian besar aplikasi, jadi kami terus berinvestasi dalam meningkatkan fitur dan kinerja API teks. Pelajari lebih lanjut tentang API baru di Android Q bersama dengan praktik terbaik saat bekerja dengan teks dalam pembicaraan Google I/O 2019: