Tuesday, December 29, 2015

(CI) Jenkins PMD report for Objective-C with OCLint

OCLint is a static code analysis tool for improving quality and reducing defects by inspecting C, C++ and Objective-C code and looking for potential problems like:
  • Possible bugs - empty if/else/try/catch/finally statements
  • Unused code - unused local variables and parameters
  • Complicated code - high cyclomatic complexity, NPath complexity and high NCSS
  • Redundant code - redundant if statement and useless parentheses
  • Code smells - long method and long parameter list
  • Bad practices - inverted logic and parameter reassignment
  • ...

Installation:

  • Step 1: Download "oclint-0.x.x-x86_64-darwin-15.0.0.tar" from the downloads page. Unzip this file and see as below:

  • Step 2: Copying OCLint to System PATH. Open Terminal prompt, and input some commands lines as follows:
  • $ cd /Downloads/oclint-0.10.x
    $ cp bin/oclint* /usr/local/bin/
    $ cp -rp lib/* /usr/local/lib/
    
    Other option: Directly adding to PATH at here.
  • Checking installation: Open a new terminal prompt, and execute oclint directly from there and expect message similar to below:
  • $ oclint
    oclint: Not enough positional command line arguments specified!
    Must specify at least 1 positional arguments: See: oclint -help
    

Wednesday, December 23, 2015

Improve Unit Test with OCMock

Adding OCMock to your project:

  • Step 1: Download a release from the downloads page.
  • Step 2: Setup OCMock from the iOS page.
  • Step 3: Add an import to your unit tests.
#import <OCMock/OCMock.h>

Contents:

Monday, December 21, 2015

[Tip] Simulate various network conditions with "Network Link Conditioner"

Xcode provides a tool called Network Link Conditioner that can simulate various network conditions, including reduced bandwidth, high latency, DNS delays, packet loss, and so on. Before you ship any software that uses networking, you should install this tool, enable it, then run your software to see how it performs under real-world conditions.
Here are a few things to test:
  • Make sure your software remains usable even with lousy bandwidth. Tune your bandwidth consumption as much as you can.
  • Increase the latency to three or four seconds. Make sure that any user-initiated operation is delayed by only a few seconds, not by a few minutes.
  • When the network connection drops packets, your software should continue to function, just more slowly.

Enabling Network Link Conditioner on iOS device:

- Step 1: Open Settings -> Select Developer -> Select Status in group name (Network link conditioner):


Tuesday, December 15, 2015

[Structural Pattern] Adapter pattern trong Objective C

Khái niệm: chuyển đổi interface của một class thành interface khác mà bạn trông đợi, để có thể tương thích với những interface đã có sẵn trước đó. Adapter cho phép những class hoạt động chung với nhau bất kể những interface của những class không tương thích với nhau.

Cấu trúc lớp: Ví dụ mình có sơ đồ lớp như sau:
- Adapter theo quan hệ Navigability hoặc Aggregation hay Composition như nhau:

- Adapter theo quan hệ kế thừa Generalization hay Realization như sau:

Monday, December 14, 2015

[UML Class relationships] Phân biệt quan hệ Generalization và Realization trong Objective C và Swift

2 quan hệ này tương đối dễ phân biệt và thực thi.

Generalization: 

giống quan hệ kế thừa trong những ngôn ngữ lập trình.


Friday, December 11, 2015

[UML Class relationships] Phân biệt quan hệ Aggregation và Composition trong Objective C và Swift

Aggregation

ClassA có dùng lớp và giữa ClassB nhưng không cho lớp khác truy xuất ClassB thông qua ClassA.  Trong Objective C ta dùng thuộc tính là weak để thể hiện mối quan hệ này, code ví dụ như sau:

[UML Class relationships] Phân biệt quan hệ Association, Dependency và Navigability trong Objective C

Association: 

Miêu tả 1 kết nối đơn giản giữa 2 lớp với nhau. Tuỳ theo từng trường hợp có cách thể hiện sơ đồ khác nhau.

Mối quan hệ bình thường:


Thursday, December 10, 2015

[Structural Pattern] Facade pattern trong Objective C

Khái niệm: Facade pattern cung cấp một interface thống nhất để nhóm những interface khác vào trong một hệ thống con. Facade định nghĩa một interface ở mức độ cao hơn để giúp cho hệ thống con dễ dàng sử dụng, giảm độ phức tạp của hệ thống.
Source from Design Patterns ebook 

[Creational Pattern] Factory method pattern trong Objective C

Tiếp theo bài Abstract factory pattern, bài này mình xin phân tích Factory method pattern. Mọi người thường nhầm 2 loại pattern này. Giờ sẽ đi sơ qua khái niệm của loại pattern này.

Khái niệm: Định nghĩa một interface để khởi tạo một đối tượng đơn, nhưng nó cho phép lớp con quyết định để khởi tạo đối tượng của lớp nào đó.

Cách phân biệt đơn giản giữa Factory method và Abstract factory như: 
- Factory method là một phương thức đơn, dùng để khởi tạo đối tượng. Không nhấn mạnh mối quan hệ gia đình. -> Sơ đồ tương đối nhỏ.
- Abstract factory là một đối tượng. Nhấn mạnh mối quan hệ gia đình. -> sơ đồ tương đối lớn. Trong Abstract factory sẽ chứa Factory method.

Cấu trúc lớp: Dựa vào những yếu tố đó và sơ đồ của abstract factory, mình xin phân tích factory pattern nó nằm ở đâu.

Tuesday, December 8, 2015

[Creational Pattern] Abstract factory pattern trong Objective C

Tiếp theo bài Singleton pattern. Bài này mình xin giới thiệu Abstract factory pattern trong nhóm Creational Pattern.

Khái niệm: Abstract factory pattern cung cấp một interface để tạo những mối quan hệ gia đình giữa những đối tượng liên quan hoặc phụ thuộc, không quy định chi tiết các lớp cụ thể của chúng.

Cấu trúc lớp: Hiện tại theo mình thấy thì có 2 cách để thể hiện Abstract factory như dùng interface hay dùng abstract class. Tuỳ theo cách dùng sẽ có cách vẽ sơ đồ lớp khác nhau.
- Trường hợp dùng Interface làm abstract factory sẽ có sơ đồ như sau:

Thursday, December 3, 2015

[Creational Pattern] Singleton pattern trong Objective C và Swift

Mình dự định viết một loạt bài về những design pattern trong iOS. Hy vọng chúng sẽ giúp ích cho các bạn khi lập trình cũng như phân tích hệ thống.

Software design patterns có 4 nhóm chính là:
  1. Creational patterns: tập hợp những loại pattern khởi tạo đối tượng.
  2. Structural patterns: tập hợp những loại pattern liên quan đến cấu trúc.
  3. Behavioral patterns: tập hợp những loại pattern liên quan đến những hành động giữa những đối tượng.
  4. Concurrency patterns: tập hợp những loại pattern liên quan việc xử lý đồng thời.

Pattern đầu tiên mình muốn giới thiệu với mọi người là Singleton Pattern thuộc Creational pattern. 

Khái niệm: Singleton Pattern dùng để khởi tạo một đối tượng (an instance) trong một lớp (a class).

Cấu trúc lớp:

Tuesday, November 10, 2015

(Unit Test) Những luật cần thiết để viết unit test

Trước giờ mình làm những dự án trên iOS ít khi nào khách hàng đòi hỏi mình phải viết unit test cho họ. Hiện tại mình cũng đang tập viết unit test trên iOS nên có vài kinh nghiệm khi nghiên cứu về nó, nếu bạn nào có kinh nghiệm nào khác xin chia sẻ tại đây để chúng ta có thể tìm ra hướng giải quyết tốt nhất.

- Khái niệm unit test: Unit test là một đơn vị kiểm tra tự động nhỏ, được viết bởi người lập trình viên để kiểm tra những dòng code của ứng dụng thực tế, chúng phải được viết một cách độc lập.

- 5 luật đơn giản nên tuân theo trước khi viết unit test là F.I.R.S.T. Chữ này được viết tắt của những chữ như:
  • Fast — nhanh: Unit test phải chạy thường xuyên, do đó cần phải viết sao cho chạy nhanh.
  • Isolated — tách biệt: Unit test không nên phụ thuộc vào các yếu tố bên ngoài, hoặc kết quả của unit test này phụ thuộc vào kết quả của unit test khác.
  • Repeatable — lặp lại: Unit test phải trả ra cùng kết quả mỗi khi chúng được thực thi.
  • Self-verifying — tự kiểm tra: Unit test phải dùng những hàm tự kiểm tra kết quả, không phụ thuộc vào yếu tố con người.
  • Timely — hợp thời: Unit test nên được viết với code chạy thực tế. Viết test trước hay sau khi viết code thực tế? 
- Trước khi bạn viết 1 hàm hay trước khi viết unit test bạn nên suy nghĩ và viết trước những trường hợp test (Todo list) của hàm này, để có cái nhìn bao quát nhất mỗi khi bạn viết test case và để không bị sót trường hợp nào. Luật như sau: T . S . W
  • Test + tên hàm hay chức năng
  • Should return + true (false), giá trị (value)
  • When input + giá trị
- Những test case nào liên quan đến database hay connection thì gọi là integration testing. Vì thế bạn có thể viết tên hàm test có đánh số thứ tự để có thể chạy test theo mức độ ưu tiên. Nếu bạn test database bạn phải đảm bảo dữ liệu phải rollback trở lại. Ví dụ những hàm như sau:
  • test1CreateDatabase
  • test2InsertItem
  • test3UpdateItem
  • test4DeleteItem

Tài liệu tham khảo:

- https://www.objc.io/issues/15-testing/bad-testing-practices/#good-practices-101
- https://pragprog.com/magazines/2012-01/unit-tests-are-first

Friday, November 6, 2015

Giới thiệu StackView trên iOS 9.0

Trước khi iOS 9.0 ra mắt thì những người lập trình viên trên iOS vẫn còn rất khó dùng constraints để làm auto layout trên nhiều thiết bị của Apple. Vì nó tuỳ biến rất nhiều, và người làm phải hiểu cơ chế của nó thì mới tuỳ chỉnh được, và nếu trên giao diện phức tạp thì cũng rất khó tuỳ chỉnh và bảo trì code đó.

Khi Apple ra mắt iPhone 5 (với kích thước màn hình 4 inch) thì mình có 1 cách để làm giao diện dọc theo trục đứng là dùng TableView và những cell trên table để thiết kế giao diện để khi chạy trên màn hình 3.5 inch và 4 inch đều được. Điểm lợi thứ nhất là nó sẽ tự động thêm xuống và có thể scroll được. Lợi thứ hai là có thể dùng chung thành phần của từng cell riêng biệt đó trên những màn hình khác được. Nhược điểm là code không tường minh cho lắm vì những thành phần của 1 màn hình được chia tách từng phần trên 1 cell của table view. Thực ra cách này mình cũng học theo ý tưởng sắp xếp những control trên giao diện Android.

Vì thế khi Apple ra mắt iOS 9 đã giới thiệu thêm control mới là StackView để giải quyết những vấn đề khó khăn khi làm auto layout trên iOS. Thực ra khái niệm này không lạ, nó cũng gần giống như khái niệm sắp xếp những control trên Android.

EXIF Orientation Handling Is a Ghetto

Mình thấy nội dung này hay nên copy qua trang để lưu trữ và share cho các bạn. Có thể xem nội dung gốc tại đây.

One of my favourite services at the moment is Transloadit, who provide an image processing API that works a treat on top of platforms like Heroku, where there are strict request timeout limits that make large uploads difficult. They handle auto-orientation of images automagically by default, and normally I’m not even aware of it happening during testing since my camera and OSX also handle auto-orientation transparently.
Recently one particular image stuck out on the staging server as un-rotated, while it worked fine locally using ImageMagick/Dragonfly. Not only that, but the width and height seemed to be wrong, warping the image (the app I’m working on uses a tiled layout, and requires the width and height of each image to be explicitly set in CSS).
I put together a few test images, and have been talking it over via email with Transloadit for the last couple of days (who’ve been super-helpful), and just for kicks thought I’d try uploading the test images to a few other sites to see how everyone else handles it. So began a descent into EXIF madness…

Eh? EXIF Orientation?

The EXIF (exchangeable image file format) standard specifies a set of tags that can be embedded in images (among other things). One of these tags specifies the orientation of the photo, and has 8 possible values which cover every possible combination of rotation and mirroring of an image. This enables you to take a picture with your camera sideways or upside-down (or even inside-out), and stand a reasonable chance of having it display properly on your computer.
This diagram from 80sidea explains the 8 orientations pretty succinctly:

Wednesday, November 4, 2015

NGỮ PHÁP N4

Ghi chú: Danh sách dưới đây chỉ để THAM KHẢO, nhiều chỗ sơ sài không chính xác.
Bản đúng và đầy đủ sẽ có tại Lớp học Cú Mèo.

Phiên bản Saromalang 2.0


Điều hướng: Mẫu câu 01-10 | 11-20 | 21-30 | 31-40 | 41-50 | 51-63

NGỮ PHÁP N4: MẪU CÂU 01 ~ 10

1. ~(も)~し、~し~:Đã A lại còn B / vừa A vừa Bwww.saromalang.com

お腹がすいたし、のどが渇いたし、何か食べたい。
Onakagasuita shi, nodo ga kawaitashi, nanika tabetai.
Vừa đói vừa khát nên tôi muốn ăn thứ gì đó.

このシャツは色もきれいですし、デザインもいいですね。
Kono shatsu wa iro mo kireidesu shi, dezain mo īdesu ne.
Cái áo này màu đẹp và thiết kế đẹp.


2. ~によると~そうです: Theo ~ thì nghe nói là ~www.saromalang.com

天気予報によると、明日は晴れるそうです。
Tenkeyohō ni yoru to, ashitahahareru-sōdesu.
Theo dự báo thời tiết thì ngày mai trời đẹp.

彼の話によれば、この茶碗は高価な骨董品だそうだ。
Kare no hanashi ni yoreba, kono chawan wa koukana kottōhin da sōda.
Theo lời anh ấy thì cái chén này là thứ đồ cổ rất đắt tiền.

Kanji N4 181

Bảng Kanji N4 dành cho kỳ thi JLPT N4 phiên bản Saromalang 1.1.

⇒Xem và tải PDF từ Saromalang Slides
⇒Xem và tải PDF từ Saromalang Cloud


本表(ほんぴょう) [BẢN BIỂU] BẢNG CHÍNH

#Hán tựÂm ON (âm)Âm KUN (nghĩa)VIỆTÝ nghĩa
1悪AKU, Owaru(i)ÁC, Ốác, xấu, ghét
2暗ANkura(i)ÁMtối tăm, tối
3医I–Yy học
4意I–Ýý tứ
5以I–DĨlấy, tính từ ...
6引INhi(ku), hi(keru)DẪNkéo
7院IN–VIỆNhọc viện
8員IN–VIÊNnhân viên
9運UNhako(bu)VẬNmang, vận tải
10英EI–ANHđẹp, Anh quốc
11映EIutsu(su), he(eru)ÁNH (ẢNH)phản chiếu
12遠ENtoo(i)VIỄNxa
13屋OKUyaỐCphòng
14音ONoto, neÂMâm thanh
15歌KAuta, uta(u)CAhát
16夏KAnatsuHẠmùa hè
17家KAie, yaGIAnhà
18画GA, KAKU–HỌA, HOẠCHvẽ, nét, kế hoạch
19海KAIumiHẢIbiển
20回KAImawa(su)HỒIlần (số lần)
21開KAIa(keru), Hira(ku)KHAImở, khai mạc
22界KAI–GIỚIthế giới
23楽GAKU, RAKUtano(shii), tano(shimu)NHẠC, LẠCnhạc, vui
24館KAN–QUÁNsảnh đường
25漢KAN–HÁNhán tự, nam tử
26寒KANsamu(i)HÀNlạnh
27顔GANkaoNHANgương mặt
28帰KIkae(ru), kae(su)QUYvề nhà
29起KIo(kiru), o(kuro)KHỞIdậy
30究KYUUkiwa(meru)CỨUtìm tòi, nghiên #
31急KYUUiso(gu)CẤPvội
32牛GYUUushiNGƯUbò (trâu)
33去KYO, KOsa(ru)KHỨđi khỏi
34強KYOU, GOUtsuyo(i), tsuyo(maru), shi(iru)CƯỜNG, CƯỠNGmạnh, ép buộc
35教KYOUoshi(eru), oso(waru)GIÁOdạy
36京KYOU–KINHkinh đô
37業GYOUwazaNGHIỆPnghề, sự #
38近KINchika(i)CẬNgần
39銀GIN–NGÂNbạc
40区KU–KHUquận, # vực
41計KEIhaka(ru), haka(rau)KẾđo
42兄KYOUaniHUYNHanh trai
43軽KEIkaru(i), karo(yaka)KHINHnhẹ
44犬KENinuKHUYỂNchó
45研KENto(gu)NGHIÊNmài, # cứu
46県KEN–HUYỆNtỉnh
47建KENta(teru), ta(su)KIẾNxây
48験KEN–NGHIỆMthí nghiệm
49元GEN, GANmotoNGUYÊNgốc
50工KOU, KU–CÔNGlàm, công việc
51広KOUhiro(i), hiro(geru)QUẢNGrộng
52考KOUkanga(eru)KHẢOnghĩ
53光KOUhikari, hika(ru)QUANGánh sáng
54好KOUkono(mu), su(ku)HIẾU, HẢOthích, tốt
55合GOU, GAa(waseru), a(u)HỢPphù hợp
56黒KOKUkuro(i), kuroHẮCmàu đen
57菜SAInaTHÁIrau
58作SAKU, SAtsuku(ru)TÁClàm, tạo
59産SANu(mu), u(mareru)SẢNsinh
60紙SHIkamiCHỈgiấy, báo
61思SHIomo(u)TƯ, TỨnghĩ
62姉SHIaneTỶchị gái
63止SHIto(maru), to(meru)CHỈdừng lại
64市SHIichiTHỊthành phố, chợ
65仕SHItsuka(eru)SỸlàm việc
66死SHIshi(nu)TỬchết
67使SHItsuka(u)SỬdùng, sử dụng
68始SHIhaji(meru/maru)THỦYbắt đầu
69試SHIkokoro(miru), tame(su)THÍthử
70私SHIwatashiTƯtôi, riêng
71字JIazaTỰchữ
72自JImizuka(ra)TỰtự thân
73事JIkotoSỰviệc
74持JImo(tsu)TRÌmang, cầm
75室SHITSUmuroTHẤTmật thất
76質SHITSU, SHICHI–CHẤTchất lượng
77写SHAutsu(su), utsu(ru)TẢsao chép
78者SHAmonoGIẢthứ, người
79借SHAKUka(riru)TÁmượn
80弱JAKUyowa(i), yowa(ru), yowa(meru)NHƯỢCyếu
81首SHUkubiTHỦcổ, đầu
82主SHUnushiCHỦchủ nhân
83秋SHUUakiTHUmùa thu
84集SHUUatsu(maru/meru)TẬPtụ tập
85習SHUUnara(u)TẬPhọc
86終SHUUo(waru), o(eru)CHUNGkết thúc
87住JUUsu(mu), su(mau)TRÚ, TRỤsinh sống
88重JUU, CHOUomo(i), kasa(naru), -eTRỌNG, TRÙNGnặng, lặp
89春SHUNharuXUÂNmùa xuân
90所SHOtokoroSỞnơi, chỗ
91暑SHOatsu(i)THỬtrời nóng
92場JOUbaTRƯỜNGnơi chốn
93乗JOUno(ru), no(seru)THỪAlên xe
94色SHOKUiroSẮCmàu, sắc tình
95森SHINmoriSÂMrừng rậm
96心SHINkokoroTÂMtâm, lòng
97親SHINoya, shita(shii), shita(shimu)THÂNcha, mẹ, thân thiết
98真SHINma-CHÂNthật
99進SHINsusu(mu), susu(meru)TIẾNtiến lên
100図ZU, TOhaka(ru)ĐỒhình vẽ
101青SEIao(i), aoTHANHxanh
102正SEI, SHOUtada(shii), tada(su), masaCHÍNHđúng
103声SEIkoeTHANHgiọng
104世SEI, SEyoTHẾđời
105赤SEKI, SHAKUaka(i), aka(maru), aka(rameru)XÍCHđỏ
106夕SEKIyuuTỊCHchiều tà
107切SETSU, SAIki(ru), ki(reru)THIẾTcắt, tất cả
108説SETSUto(ku)THUYẾTnói, thuyết giảng
109洗SENara(u)TIỂN (TẨY)rửa
110早SOU, SAhaya(i), haya(meru/maru)TẢOsớm
111走SOUhashi(ru)TẨUchạy
112送SOUoku(ru)TỐNGgửi đi
113族ZOKU–TỘCtộc người
114村SONmuraTHÔNlàng
115体TAI, TEIkaradaTHỂthân thể
116太TAI, TAfuto(i), futo(ru)THÁImập, béo
117待TAIma(tsu)ĐÃIđợi
118貸TAIka(su)THẢIcho vay, cho mượn
119台DAI, TAI–ĐÀI, THAIđài, bục, bệ
120代DAI, TAIka(waru), ka(eru), yo, shiroĐẠIthay mặt, tiền trả, thế hệ
121題DAI–ĐỀchủ đề, tiêu đề
122短TANmijika(i)ĐOẢNngắn
123知CHIshi(ru)TRIbiết
124地CHI, JI–ĐỊAmặt đất
125池CHIikeTRÌcái ao
126茶CHA, SA–TRÀtrà, nước trà
127着CHAKUki(ru), tsu(keru), ki(seru), tsu(ku)TRƯỚCmặc áo, tới nơi
128昼CHUUhiruTRÚbuổi trưa, ban ngày
129注CHUUsoso(gu)CHÚđổ, rót
130町CHOUmachiĐINHthị trấn, phố xá
131鳥CHOUtoriĐIỂUchim
132朝CHOUasaTRIỀUbuổi sáng
133通TSUUtou(ru), tou(su), kayo(u)THÔNGđi xuyên qua
134弟TEIotoutoĐỆem trai
135低TEIhiku(i), hiku(meru/maru)ĐÊthấp, kém
136転TENkoro(bu), koro(garu/geru), koro(gasu)CHUYỂNlăn
137田DENtaĐIỀNruộng
138都TO, TSUmiyakoĐÔthủ đô
139度DOtabiĐỘđộ, lần, dịp
140答TOUkota(e), kota(eru)ĐÁPtrả lời, đáp ứng
141冬TOUfuyuĐÔNGmùa đông
142頭TOU, ZUatama, kashiraĐẦUcái đầu, đầu óc
143同DOUona(ji)ĐỒNGcùng, giống
144動DOUugo(ku), ugo(kasu)ĐỘNGchuyển động
145堂DOU–ĐƯỜNGsảnh đường
146働DOUhatara(ku)ĐỘNGlao động
147特TOKU–ĐẶCđặc biệt
148肉NIKU–NHỤCthịt
149売BAIu(ru), u(reru)MẠIbán hàng
150発HATSU, HOTSU–PHÁTphát ra, xuất phát
151飯HANmeshiPHẠNbữa ăn, cơm
152病BYOUya(mu), yamaiBỆNHốm, bệnh tật
153品HINshinaPHẨMchất, phẩm cách
154不FU, BU–BẤTkhông
155風FUUkazePHONGcơn gió
156服FUKU–PHỤCquần áo
157物BUTSU, MOTSUmonoVẬTđồ, thứ
158文BUN, MONfumiVĂNvăn chương
159別BETSUwaka(reru)BIỆTchia tay; (cái) khác
160勉BEN–MIỄNchịu khó, chăm chỉ
161便BEN, BINtayo(ri)TIỆNtiện lợi; thư từ; chuyến hàng
162歩HO, BUaru(ku), ayu(mu)BỘđi bộ
163方HOUkataPHƯƠNGhướng; cách làm; gọi người (tôn kính)
164妹MAIimoutoMUỘIem gái
165味MIaji, aji(waru)VỊmùi vị, thưởng thức
166民MINtamiDÂNngười dân, nhân dân
167明MEIa(kari), aka(rui)MINHsáng
168門MONkadoMÔNcánh cổng
169問MONto(i), to(u)VẤNhỏi, câu hỏi
170夜YAyoro, yo~DẠban đêm
171野YAnoDÃcánh đồng, lĩnh vực, đảng đối lập
172薬YAKUkusuriDƯỢCthuốc
173有YUU, Ua(ru)HỮUcó
174曜YOU–DIỆUthứ trong tuần
175用YOUmochi(iru)DỤNGdùng, sử dụng
176洋YOU–DƯƠNGđại dương
177理RI–LÝlý do, quản lý..
178旅RYOtabiLỮdu lịch
179料RYOU–LIỆUtiền phí, vật liệu
180力RYOKU, RIKIchikaraLỰCsức
181林RINhayashiLÂMrừng


(C) Saromalang

Nguồn: http://www.saromalang.com/p/kanji-n4-181.html

Wednesday, October 21, 2015

Giới thiệu tổng quan khái niệm về App Thinning

Nếu ứng dụng của bạn hỗ trợ những thiết bị khác nhau như: iPad 1, iPad 2, iPad 3, iPhone 4, iPhone 5, iPhone 6, iPhone 6 plus,... thì dung lượng của nó rất lớn vì bạn phải thêm những hình tuỳ thuộc vào kích thước màn hình của từng thiết bị như @1x, @2x,  @3x.
Ngoài ra nếu ứng dụng của bạn sử dụng những file âm thanh lớn mà phải thêm vào bản build từ đầu, thành ra dung lượng của ứng dụng càng nặng.
Vì thế Apple đã giới thiệu khái niệm App Thinning trong WWDC 2015 nhằm giải quyết vấn đề giảm dung lượng của ứng dụng khi archive bản build.

Bài này mình xin giới thiệu sơ qua những khái niệm trong App Thinning như Slicing, Bitcode, On-Demand resources.

Slicing:

Slicing là một tiến trình tạo và phân phối những gói ứng dụng variant cho những thiết bị khác nhau. Một variant chỉ chứa kiến trúc thực thi và tài nguyên cần thiết cho từng thiết bị. Khi bạn tiếp tục phát triển và tải ứng dụng của bạn với full version lên trên iTunes Connect, thì Store sẽ tạo và phân phối những variant khác nhau dựa trên những thiết bị mà bạn hỗ trợ. Những tài nguyên về hình ảnh hay GPU cũng được chia nhỏ dựa theo độ phân giải, loại thiết bị và dung lượng thiết bị.

XCode giả slicing trong thời gian phát triển ứng dụng, vì thế bạn có thể tạo và kiểm tra những variant ở dưới local. XCode chia nhỏ ứng dụng của bạn khi bạn build và chạy ứng dụng trên một thiết bị. Khi bạn tạo ra một Archive, XCode bao gồm full version ứng dụng của bạn nhưng cho phép bạn export những variant từ archive.

Lưu ý: Sliced App chỉ hỗ trợ những thiết bị chạy từ iOS 9.0 trở về sau. Ứng dụng phải sử dụng Asset Catalog.

NGỮ PHÁP N5

Ghi chú: Danh sách dưới đây chỉ để THAM KHẢO.
Phiên bản tốt hơn sẽ có tại Lớp học Cú Mèo.

Phiên bản Saromalang 2.0

Di chuyển nhanh: Mẫu 01-10 | 11-20 | 21-30 | 31-40 | 41-50 | 51-60

 ♪  BẢNG TRA CỨU NHANH NGỮ PHÁP N5  ♬ 

NGỮ PHÁP N5: MẪU CÂU 01 ~ 10

1 . ~ は~ : thì, là, ở N1は~です là động từ "to be" www.saromalang.com

N1はN2です = N1 là N2
~N1はN2が~[mô tả]
Trợ từ [ は] phát âm là [わ] (phát âm khác cách viết)

私は日本の料理が好きです。
Watashi wa Nihon no ryōri ga sukidesu."
Tôi thích món ăn Nhật

山田さんは日本語が上手です。
Yamada-san wa nihongo ga jōzudesu.
Anh Yamada giỏi tiếng Nhật

この家はドアが大きいです 。
Kono ie wa doa ga ōkii desu
Căn nhà này có cửa lớn

Kanji N5 103

Phiên bản 1.1 gồm có 103 chữ cho hán tự JLPT N5. Hi vọng các bạn sẽ có thể thi tốt kỳ thi năng lực tiếng Nhật N5 sắp tới.
⇒Xem và tải PDF từ Saromalang Slides
⇒Xem và tải PDF từ Saromalang Cloud


本表(ほんぴょう) BẢNG CHÍNH
#Hán tựÂm ON (âm)Âm KUN (nghĩa)VIỆTÝ nghĩa
1安ANyasu(i)ANyên ổn, an toàn, rẻ
2一ICHI, ITSUhito(tsu), hito-NHẤTmột, số một
3飲INno(mu)ẨMuống
4右U, YUUmigiHỮUbên phải
5雨UameVŨmưa
6駅EKI–DỊCHtrạm, ga tàu
7円ENmaru(i)VIÊNtròn, vòng tròn, tiền Yen
8火KAhiHỎAlửa
9花KAhanaHOAbông hoa
10下KA, GEshimo, sa(geru), o(rosu), ku(daru)HẠbên dưới
11何KAnaniHÀcái gì
12会KAIa(u)HỘIgặp gỡ, hội họp
13外GAI, GEsoto, hoka, hazu(reru), hazu(su)NGOẠIbên ngoài, tháo ra
14学GAKUmana(bu)HỌChọc tập, môn học
15間KAN, KENaidaGIANtrong khoảng, ở giữa
16気KI, KE–KHÍtinh thần, yêu thích
17九KYUU, KUkokono(tsu), kokono-CỬUchín, số chín
18休KYUUyasu(mu)HƯUnghỉ ngơi
19魚GYOsakana, uoNGƯcon cá
20金KINkaneKIMvàng, tiền, kim loại
21空KUUsora, a(keru), karaKHÔNGkhông khí, bầu trời, rỗng
22月GETSU, GATSUtsukiNGUYỆTtháng, mặt trăng
23見KENmi(ru), mi(eru), mi(seru)KIẾNnhìn, xem
24言GEN, GONi(u)NGÔNnói, ngôn ngữ
25古KOfuru(i)CỔcũ, cổ, xưa
26五GOitsu(tsu), itsu-NGŨnăm, số năm
27後GO, KOUato, oku(reru), nochiHẬUsau, lúc sau, phía sau
28午GO–NGỌtrưa, 12 giờ trưa
29語GOkata(ru), kata(rau)NGỮtừ ngữ, kể chuyện
30校KOU–HIỆUtrường học
31口KOU, KUkuchiKHẨUmiệng, cổng
32行KOUi(ku), yu(ku), okona(u)HÀNH / HÀNGđi, thực hiện, dòng, ngân hàng
33高KOUtaka(i), taka(maru), taka(meru)CAOcao, mắc, tăng, mức
34国KOKUkuniQUỐCnước
35今KONimaKIMbây giờ, nay
36左SAhidariTẢbên trái
37三SANmit(tsu), mi-TAMba, số ba
38山SANyamaSƠNnúi, đống, gò
39四SHIyo(ttsu), yu(tsu), yo-, yon-TỨbốn, số bốn
40子SHIkoTỬđứa bé
41耳JImimiNHĨtai
42時JItokiTHỜI (THÌ)thời gian, giờ
43七SHICHInana(tsu), nana-, nano-THẤTbảy, số bảy
44車SHAkurumaXAxe, xe hơi
45社SHA–XÃcông ty, đền, xã hội
46手SHUteTHỦtay, người
47週SHUU–CHUtuần (7 ngày)
48十JUU, JItoo, to-THẬPmười, đủ
49出SHUTSUda(su), de(ru)XUẤTđi ra, cho ra, tham dự
50書SHOka(ku)THƯviết, giấy tờ
51女JO, NYOonna, meNỮphụ nữ
52小SHOUchii(sai), ko-, o-TIỂUnhỏ
53少SHOUsuko(shi), suku(nai)THIỂU / THIẾUít, nhỏ tuổi
54上JOUue, kami, a(geru), a(garu)THƯỢNGphía trên
55食SHOKUta(beru), ku(ru), ku(rau)THỰCăn
56新SHINatara(shii), ara(ta), nii-TÂNmới
57人JIN, NINhitoNHÂNngười
58水SUImizuTHỦYnước
59生SEI, SHOUi(kiru), u(mu), ha(yasu), nama, kiSINHsống, sinh ra, tươi sống
60西SEI, SAInishiTÂYphía tây
61川SENkawaXUYÊNsông
62千SENchiTHIÊNmột ngàn, nhiều
63先SENsakiTIÊNlúc trước, tương lai
64前ZENmaeTIỀNphía trước
65足SOKUashi, ta(riru), ta(su)TÚCchân, đầy đủ, cộng vào
66多TAoo(i)ĐAnhiều
67大DAI, TAIou(kii), oo(i)ĐẠIto, lớn
68男DAN, NANotokoNAMnam, đàn ông
69中CHUU, JUUnakaTRUNGbên trong
70長CHOUnaga(i)TRƯỜNG / TRƯỞNGdài / người đứng đầu
71天TEName, amaTHIÊNtrời, thời tiết
72店TENmiseĐIẾMcửa hàng
73電DEN–ĐIỆNđiện
74土DO, TOtsuchiTHỔđất
75東TOUhigashiĐÔNGphía đông
76道DOUmichiĐẠOcon đường
77読DOKUyo(mu)ĐỘCđọc
78南NANminamiNAMphía nam
79ニNIfuta(tsu), futa-NHỊhai, số hai
80日NICHI, JITSUhi, -kaNHẬTngày, mặt trời, Nhật Bản
81入NYUUhai(ru), i(ru), i(reru)NHẬPđi vào, cho vào
82年NENtoshiNIÊNnăm
83買BAIka(u)MÃImua
84白HAKU, BYAKUshiro(i), shiroBẠCHmàu trắng
85八HACHIyat(tsu), ya(tsu), ya-, you-BÁTtám, số tám
86半HANnaka(ba)BÁNmột nửa
87百HYAKU–BÁCHmột trăm, nhiều
88父FUchichiPHỤcha
89分BUN, BU, FUNwa(keru), wa(kareru), wa(karu)PHÂN / PHẬNhiểu, phân chia, phút, phần
90聞BUN, MONki(ku), ki(koeru)VĂNnghe, nghe thấy, hỏi
91母BOhahaMẪUmẹ
92北HOKUkitaBẮCphía bắc
93木BOKU, MOKUki, koMỘCcây, gỗ
94本HONmotoBẢNsách, bản chất, đếm cây
95毎MAI–MỖImỗi thứ, mỗi cái, ...
96万MAN, BAN–VẠNvạn, mười ngàn, nhiều
97名MEI, MYOUnaDANHtên tuổi
98目MOKUmeMỤCmắt, mục kích
99友YUUtomoHỮUbạn bè
100来RAIku(ru), kita(ru), kita(su)LAItới, tới đây
101立RITSUta(tsu), ta(teru)LẬPđứng, thành lập
102六ROKUmutt(su), mu(tsu), mu, muiLỤCsáu, số sáu
103話WAhanashi, hana(su)THOẠInói chuyện, câu chuyện

(C) Saromalang

Nguồn: Saroma Lang

Link: http://www.saromalang.com/p/kanji-n5-103.html