When asked what is the largest dataset analyzed, data scientists (the people working on analyzing data) respond that a laptop is usually enough for their needs.
2019-10-21
Sự thật về big data (với data scientists)
Chém thì chém ... nhưng sự thật vẫn sẽ rất khác
2019-07-17
Remove PDF password (security) with qpdf
Đôi khi nhận file PDF nhưng bị đóng đấu "SECURED". Mình không thể clear password hay edit được mặc dù biết password. Cũng không thể print thành PDF khác được. Chưa kể trong Foxit không có enable mấy functions cần dùng.
Thực hiện như hướng dẫn ở đây
- Grab https://github.com/qpdf/qpdf/releases
- Unzip/Install and navigate to the bin folder that holds qpdf.exe (or similar for your platform)
- Place the PDF you wish to work on in the same folder
- Run:
qpdf --decrypt InputFile.pdf OutputFile.pdf(use"s if the file name has spaces). - Do what you like with the OutputFile.
If your PDF file is user password protected, change step 4 to
qpdf --decrypt --password=yourpassword InputFile OutputFile
This won't work for Adobe Digital Editions and may have issues with digitally-signed files.
Some discussion on the background of these owner password restrictions at https://lwn.net/Articles/335415/ .
2019-04-30
青春有你 (Qing chun you ni)/To youth/Gửi thanh xuân - 蔡佩軒/Ariel Tsai/Thái Bội Hiên
青春有你 (Qing chun you ni)/To youth/Gửi thanh xuân
藝人/Singer: 蔡佩軒/Ariel Tsai/Thái Bội Hiên
专辑/Album: 《青春有你》
發行月份/Release date: 2018年05月
藝人/Singer: 蔡佩軒/Ariel Tsai/Thái Bội Hiên
专辑/Album: 《青春有你》
發行月份/Release date: 2018年05月
|
|
再次 jiànmiàn
见面 wǒmen
我们 yòu
又 huì
会 zài
在 nǎlǐ
哪里
Lần tới không biết chúng ta sẽ gặp nhau nơi nào?
Where we are when we will meet again?
Where we are when we will meet again?
是否 huì
會 réng
仍 yǒu
有 xiāngtóng
相同 de
的 mòqì
默契
Liệu có còn có thể ngầm hiểu ý nhau?
Will us still have same tacit understanding?
Will us still have same tacit understanding?
教室 lǐ
裡 yǒu
有 wǒmen
我們 qīngchūn
青春 de
的 shēnyǐng
身影
Là hình ảnh của thời thanh xuân của chúng ta trong lớp học ngày ấy
There is our youth shadow in the classroom
There is our youth shadow in the classroom
踏 chū
出 cāochǎng
操場 zǒu
走 jìnle
進了 huíyì
回憶
Cùng bước ra sân trường, và bước vào ký ức
Step out to the field, step in to the memories
Step out to the field, step in to the memories
shíguāng
時光 fēishì
飛逝 zǒng
總 ràng
讓 rén
人 cuòshǒubùjí
措手不及
Thời gian trôi quá nhanh khiến ta không kịp chuẩn bị
Times flies fast, always makes people unprepared
Times flies fast, always makes people unprepared
想 qián
前 xíng
行 xīn
心 què
卻 hái
還 liú
留 zàiyuán
在原 dì
地
Muốn tiến về phía trước nhưng trong lòng vẫn lưu luyến nơi đây
Step forward but heart still stay there
Step forward but heart still stay there
因為 yǒu
有 nǐ
你 qīngchūn
青春 jiù
就 yǒule
有了 yìyì
意義
Bởi vì em nên thanh xuân mới trở nên ý nghĩa
My youth become meaningful because of you
My youth become meaningful because of you
不 huì
會 wàngjì
忘記 zhǐ
只 huì
會 gèng
更 zhēnxī
珍惜
Sẽ không quên chỉ là thêm trân trọng
Never forget but only will cherish more
Never forget but only will cherish more
zhōng
鐘 shēng
聲 xiǎngqǐ
響起 shuí
誰 shuō
說 líbié
離別 shì
是 jiéjú
結局
Ai nói chuông reo lên, ly biệt là kết thúc
The bell clock is rang, who said parting is the end
The bell clock is rang, who said parting is the end
還 yǒu
有 hǎoduō
好多 gùshì
故事 děngzhe
等著 wǒmen
我們 jìxù
繼續
Vẫn còn nhiều câu chuyện chờ chúng ta tiếp tục
There’s still more story waiting for us to continue
There’s still more story waiting for us to continue
你 huítóu
回頭 kàn
看 huì
會 fāxiàn
發現 wǒ
我 yīzhí
一直 zài
在 zhèlǐ
這裡
Khi ngoảnh lại em sẽ thấy tôi luôn ở nơi đây
When you look back, you'll realize that I still here
When you look back, you'll realize that I still here
為 mèngxiǎng
夢想 wǒmen
我們 yīqǐ
一起 nǔlì
努力
Vì ước mơ chúng ta sẽ cùng nỗ lực
We keep fighting for dream
We keep fighting for dream
shíguāng
時光 fēishì
飛逝 zǒng
總 ràng
讓 rén
人 cuòshǒubùjí
措手不及
Thời gian trôi quá nhanh khiến ta không kịp chuẩn bị
Times flies fast, always makes people unprepared
Times flies fast, always makes people unprepared
想 qián
前 xíng
行 xīn
心 què
卻 hái
還 liú
留 zàiyuán
在原 dì
地
Muốn tiến về phía trước nhưng trong lòng vẫn lưu luyến nơi đây
Step forward but heart still stay there
Step forward but heart still stay there
因為 yǒu
有 nǐ
你 qīngchūn
青春 jiù
就 yǒule
有了 yìyì
意義
Bởi vì em nên thanh xuân mới trở nên ý nghĩa
My youth become meaningful because of you
My youth become meaningful because of you
不 huì
會 wàngjì
忘記 zhǐ
只 huì
會 gèng
更 zhēnxī
珍惜
Sẽ không quên chỉ là thêm trân trọng
Never forget but only will cherish more
Never forget but only will cherish more
zhōng
鐘 shēng
聲 xiǎngqǐ
響起 shuí
誰 shuō
說 líbié
離別 shì
是 jiéjú
結局
Ai nói chuông reo lên, ly biệt là kết thúc
The bell clock is rang, who said parting is the end
The bell clock is rang, who said parting is the end
還 yǒu
有 hǎoduō
好多 gùshì
故事 děngzhe
等著 wǒmen
我們 jìxù
繼續
Vẫn còn nhiều câu chuyện chờ chúng ta tiếp tục
There’s still more story waiting for us to continue
There’s still more story waiting for us to continue
你 huítóu
回頭 kàn
看 huì
會 fāxiàn
發現 wǒ
我 yīzhí
一直 zài
在 zhèlǐ
這裡
Khi ngoảnh lại em sẽ thấy tôi luôn ở nơi đây
When you look back, you'll realize that I still here
When you look back, you'll realize that I still here
為 mèngxiǎng
夢想 wǒmen
我們 yīqǐ
一起 nǔlì
努力
Vì ước mơ chúng ta sẽ cùng nỗ lực
We keep fighting for dream
We keep fighting for dream
zhōng
鐘 shēng
聲 xiǎngqǐ
響起 shuí
誰 shuō
說 líbié
離別 shì
是 jiéjú
結局
Ai nói chuông reo lên, ly biệt là kết thúc
The bell clock is rang, who said parting is the end
The bell clock is rang, who said parting is the end
還 yǒu
有 hǎoduō
好多 gùshì
故事 děngzhe
等著 wǒmen
我們 jìxù
繼續
Vẫn còn nhiều câu chuyện chờ chúng ta tiếp tục
There’s still more story waiting for us to continue
There’s still more story waiting for us to continue
你 huítóu
回頭 kàn
看 huì
會 fāxiàn
發現 wǒ
我 yīzhí
一直 zài
在 zhèlǐ
這裡
Khi ngoảnh lại em sẽ thấy tôi luôn ở nơi đây
When you look back, you'll realize that I still here
When you look back, you'll realize that I still here
為 mèngxiǎng
夢想 wǒmen
我們 yīqǐ
一起 nǔlì
努力
Vì ước mơ chúng ta sẽ cùng nỗ lực
We keep fighting for dream
We keep fighting for dream
xièxiè
謝謝 qīngchūn
青春 yǒule
有了 nǐ
你
Cảm ơn vì thanh xuân có em
Thanks my youth has you
Thanks my youth has you
Labels:
Ariel Tsai,
Chinese,
Chinese songs,
music,
Thái Bội Hiên,
蔡佩軒,
青春有你
2018-07-23
What is MVI? Model-View-Intent
Thế là gần 2 năm trôi qua từ lần gần đây nhất mình nói về Android architecture từ tháng 11/2016 Android evolution ... the right architecture?
OK lúc đó Hannes Dorfmann chỉ mới đề cập đến ý tưởng MVI (04 Mar 2016) và muốn chuyển ý tưởng này từ Javascript sang Android. Lúc đó Google còn chưa chính thức ra Android Architecture Components.
Bài viết đầu tiên trong series về MVI của Hannes Dorfmann là vào tháng 01/2017, còn bài viết cuối là vào tháng 05/2018. Nói chung cũng vừa mới đây thôi.
Series của Hannes Dorfmann, tất nhiên là bạn nên đọc hết, đọc một cách kỹ càng
- Reactive apps with MVI Part 1 – Model
- Reactive apps with MVI Part 2 – View and Intent
- Reactive apps with MVI Part 3 – State Reducer
- Reactive apps with MVI Part 4 – Independent UI components
- Reactive apps with MVI Part 5 – Debugging with Ease
- Reactive apps with MVI Part 6 – Restoring state
- Reactive apps with MVI Part 7 – Timing (Single live event problem)
Đầu tiên nói về MVI. Nó là viết tắt của Model-View-Intent. Intent ở đây không phải là Intent của Android (đừng mắc bệnh nghề nghiệp). Phải nói mình rất ấn tượng với lập luận đơn giản của MVI, về unidirectional flow. Muốn tìm về cuội nguồn của MVI thì phải đi từ Cycle.js của André Staltz một framework hướng functional và reactive – A functional and reactive JavaScript framework for predictable code. Một lưu ý thêm ở đây là mục đích framework này nhằm tổ chức code một cách predictable.
Quay lại một chút về trending năm 2017 (development thôi nhé). Đầu năm bên cạnh những thứ liên quan nhiều đến thiết kế như Lottie, motion, onboarding ... sẽ có MVP, MVVM, RxJava (từ v1 sang v2), Dagger2. Chốt lại cuối năm 2017 thì vẫn là sử dụng MVP và MVVM (Google recommended), thêm Kotlin, Android Architecture Components và có thể là Flutter.
Như vậy cả năm 2017 architecture vẫn xoay quanh MVP và MVVM. Tuy nhiên, mình cũng như nhiều developer khác nhận xét thì MVP và MVVM vẫn gây một chút cảm giác thiếu khi không giới thiệu một data flow nào như kiểu Redux. Cái này là điểm mấu chốt để tổ chức predictable code. Dĩ nhiên đó là lý do khi dùng reactive với 2 architecture này, reactive sẽ không phát huy hết khả năng của mình.
Bạn có thể chọn MVP hay MVVM như khuyến khích của Google. Tuy nhiên cá nhân mình thích MVI vì triết lý đơn giản của nó hơn. Ý tưởng của MVI là giao tiếp Human-Computer thể hiển như một vòng tròn, một vòng lặp thì chính xác hơn (cycle).
![]() |
Khi thể hiện dưới dạng chuỗi các function thì như sau:
Đầu tiên hệ thống (computer/app) lấy input có thể từ DB, Restful API để hiển thị theo cách nào đó. Nó là view(model). Sau khi hiển thị xong thì nó là input của người dùng user. User sẽ thao tác trên ứng dụng ví dụ click chẳng hạn.
Function intent() sẽ nhận các input từ user, chuyển nó sang model và function model() nhận các input này để thay đổi trạng thái. Cuối cùng function view() sẽ nhận tham số từ output của model() để cập nhật lại UI, hoàn tất một cycle.
Tới đây có lẽ khá đủ cho một bài giới thiệu. Việc còn lại là bắt tay vào làm thử cái gì đó. Re-factor lại một project đã làm cũng có thể, đọc thêm trên GitHub hay Medium... À nhớ là Mosby đã có implement MVI rồi.
G9
Labels:
Android,
architecture,
mobile dev,
mobile development,
Model-View-Intent,
Mosby,
MVI,
MVP,
MVVM
2018-01-25
Excel: last character/string match in a string
Đôi khi có nhu cầu phải tìm ký tự hay sub-string cuối cùng xuất hiện trong Excel.
Search thì cũng ra nhanh nhưng mình note lại đây tập trung 1 chỗ.
Ví dụ
https://stackoverflow.com/questions/18617349/excel-last-character-string-match-in-a-string
https://www.excel-university.com/find-the-last-occurrence-of-a-delimiter-to-retrieve-the-lowest-sub-account-from-quickbooks-in-excel/
Mình dùng công thức này, ví dụ tìm "\" cuối cùng của cell A1
Search thì cũng ra nhanh nhưng mình note lại đây tập trung 1 chỗ.
Ví dụ
https://stackoverflow.com/questions/18617349/excel-last-character-string-match-in-a-string
https://www.excel-university.com/find-the-last-occurrence-of-a-delimiter-to-retrieve-the-lowest-sub-account-from-quickbooks-in-excel/
=FIND("@",SUBSTITUTE(A1,"\","@",(LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))/LEN("\")))
Mình dùng công thức này, ví dụ tìm "\" cuối cùng của cell A1
=SEARCH("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))
2017-12-30
How to register a Baibu account without a mainland Chinese mobile number
Đăng ký tài khoản Baidu để làm gì
- Để dùng Baidu Wangpan 百度网盘 tức Baidu Web Disk hay Baidu Web Drive, tên trước đó của nó là Baidu Cloud 百度云 https://pan.baidu.com/. Baidu đầu tư cả chục tỷ CNY cho cái đám này :D là ít. Nó cho phép lưu trữ tới 2TB (khởi đầu là 1TB) miễn phí, 2TB nhé quên Dropbox, OneDrive hay Google Drive đi, upload file đến 4GB, tool download/upload, sync. Có tính năng de-duplicate file torrent, có nghĩa là chỉ cần up file torrent lên Wangpan, nếu file torrent này được ghi nhận là đã có trên Wangpan, bạn có thể save về account của mình (resources sharing). Cho phép leech file torrents tức là download torrents online. Có tính năng phân tách "thư mục riêng tư" hay "thư mục ẩn" private zone hay hidden zone "ẩn tàng không gian" 隐藏空间. Nói chung rất rất là TQ và châu Á. Client app thì ngoại trừ tiếng Trung (mình cũng biết đôi chút) là trở ngại còn lại không có gì quá khó khăn để sử dụng.
- Phần thứ 2 là các thứ liên quan đến development http://developer.baidu.com/ không đề cập nhiều ở đây. Baidu có nhiều thứ những cái mình có dùng như Echart https://ecomfe.github.io/echarts-doc/public/en/index.html, http://echarts.baidu.com/ hay push notification ... Gần đây là Baidu AI, mình chưa đụng qua nhưng chắc cũng nên xem. Nó từng mời cả Andrew Ng về làm chief scientist của AI group cơ mà.
- Để TQ nó tốn resource chơi :D, để biết người ta ntn...
Đăng ký như thế nào
Nếu không phải từ TQ thì thực hiện đăng ký từ link sau:https://passport.baidu.com/v2/?reg&overseas=1
Lưu ý là chỉ định từ "hải ngoại" :D overseas=1
Nếu không có chỉ định này tức ngầm định đăng ký từ Trung Quốc đại lục (中国大陆|Mainland China)
Đăng ký phải dùng dùng số di động từ Trung Quốc đại lục. Không có option để chọn nước
Đăng ký từ hải ngoại, có option để chọn nước ví dụ Việt Nam là +84 (+84 越南). Chỉ được đăng ký tài khoản với số di động chưa được đăng ký trước đó.
Labels:
Baidu,
Baidu Cloud,
Baidu Wangpan,
China,
tips,
Trung Quốc
2017-12-28
Windows 10: show This PC icon on desktop, hide HomeGroup icon, hide OneDrive, hide Folders on This PC...
Khi chuyển qua Windows 10 có nhiều thứ không cần thiết thì lại có, những thứ cần thiết thì không thấy đâu.
Mấy thứ này lâu rồi nhưng không note lại. Mỗi lần làm lại đi search 1 vòng.
Mấy thứ này lâu rồi nhưng không note lại. Mỗi lần làm lại đi search 1 vòng.
- Show This PC icon lên desktop: Windows + I » Theme and related settings » Scroll xuống Related settings (hoặc trên PC màn hình lớn thì nằm bên tay phải) » Desktop icon settings » Checked Computer » Có thể rename This PC thành My computer bằng cách chọn và edit.
- Remove HomeGroup icon trong File Exploere: Windows + I » tương tự như trên vào Desktop icon settings » Unchecked Network. Bước tiếp theo vào Windows + E » View » Options hoặc Windows + I » search File Explorer Options » View » Unchecked Use Sharing Wizard (recommended)
- Hide OneDrive icon trong File Explorer: chạy Registry Edit » Windows + R » regedit » search HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6} bằng cách navigate tới HKEY_CLASSES_ROOT\CLSID» Ctrl + F » Find {018D5C66-4533-4307-9B53-224DE2ED1FE6}. Tắt System.IsPinnedToNameSpaceTree bằng cách set giá trị là 0.

- Bỏ các icon trong Folders của This PC trong File Explorer: Windows quản lý bật tắt các folder này trong Registry. Thực hiện navigate tới HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions rồi search. Trong đám này chỉ có Desktop và Download là may ra cần giữ còn lại nên cho đi hết. Thực hiện bật tắt tại key ThisPCPolicy, chuyển thành Hide tại:
Documents Folder:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{f42ee2d3-909f-4907-8871-4c22fc0bf756}\PropertyBag
Pictures Folder:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{0ddd015d-b06c-45d5-8c4c-f59713854639}\PropertyBag
Videos Folder:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag
Downloads Folder:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{7d83ee9b-2244-4e70-b1f5-5393042af1e4}\PropertyBag
Music Folder:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{a0c69a99-21c8-4671-8703-7934162fcf1d}\PropertyBag
Desktop Folder:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\PropertyBag
- Bỏ các icon 3D Object trong Folders của This PC trong File Explorer: navigate tới HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace và HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace rồi xóa {0DB7E03F-FC29-4DC6-9020-FF41B59E513A}. Không cần phải restart máy.
Subscribe to:
Posts (Atom)







