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
1AKU, Owaru(i)ÁC, Ốác, xấu, ghét
2ANkura(i)ÁMtối tăm, tối
3IYy học
4IÝý tứ
5Ilấy, tính từ ...
6INhi(ku), hi(keru)DẪNkéo
7INVIỆNhọc viện
8INVIÊNnhân viên
9UNhako(bu)VẬNmang, vận tải
10EIANHđẹp, Anh quốc
11EIutsu(su), he(eru)ÁNH (ẢNH)phản chiếu
12ENtoo(i)VIỄNxa
13OKUyaỐCphòng
14ONoto, neÂMâm thanh
15KAuta, uta(u)CAhát
16KAnatsuHẠmùa hè
17KAie, yaGIAnhà
18GA, KAKUHỌA, HOẠCHvẽ, nét, kế hoạch
19KAIumiHẢIbiển
20KAImawa(su)HỒIlần (số lần)
21KAIa(keru), Hira(ku)KHAImở, khai mạc
22KAIGIỚIthế giới
23GAKU, RAKUtano(shii), tano(shimu)NHẠC, LẠCnhạc, vui
24KANQUÁNsảnh đường
25KANHÁNhán tự, nam tử
26KANsamu(i)HÀNlạnh
27GANkaoNHANgương mặt
28KIkae(ru), kae(su)QUYvề nhà
29KIo(kiru), o(kuro)KHỞIdậy
30KYUUkiwa(meru)CỨUtìm tòi, nghiên #
31KYUUiso(gu)CẤPvội
32GYUUushiNGƯUbò (trâu)
33KYO, KOsa(ru)KHỨđi khỏi
34KYOU, GOUtsuyo(i), tsuyo(maru), shi(iru)CƯỜNG, CƯỠNGmạnh, ép buộc
35KYOUoshi(eru), oso(waru)GIÁOdạy
36KYOUKINHkinh đô
37GYOUwazaNGHIỆPnghề, sự #
38KINchika(i)CẬNgần
39GINNGÂNbạc
40KUKHUquận, # vực
41KEIhaka(ru), haka(rau)KẾđo
42KYOUaniHUYNHanh trai
43KEIkaru(i), karo(yaka)KHINHnhẹ
44KENinuKHUYỂNchó
45KENto(gu)NGHIÊNmài, # cứu
46KENHUYỆNtỉnh
47KENta(teru), ta(su)KIẾNxây
48KENNGHIỆMthí nghiệm
49GEN, GANmotoNGUYÊNgốc
50KOU, KUCÔNGlàm, công việc
51KOUhiro(i), hiro(geru)QUẢNGrộng
52KOUkanga(eru)KHẢOnghĩ
53KOUhikari, hika(ru)QUANGánh sáng
54KOUkono(mu), su(ku)HIẾU, HẢOthích, tốt
55GOU, GAa(waseru), a(u)HỢPphù hợp
56KOKUkuro(i), kuroHẮCmàu đen
57SAInaTHÁIrau
58SAKU, SAtsuku(ru)TÁClàm, tạo
59SANu(mu), u(mareru)SẢNsinh
60SHIkamiCHỈgiấy, báo
61SHIomo(u)TƯ, TỨnghĩ
62SHIaneTỶchị gái
63SHIto(maru), to(meru)CHỈdừng lại
64SHIichiTHỊthành phố, chợ
65SHItsuka(eru)SỸlàm việc
66SHIshi(nu)TỬchết
67使SHItsuka(u)SỬdùng, sử dụng
68SHIhaji(meru/maru)THỦYbắt đầu
69SHIkokoro(miru), tame(su)THÍthử
70SHIwatashitôi, riêng
71JIazaTỰchữ
72JImizuka(ra)TỰtự thân
73JIkotoSỰviệc
74JImo(tsu)TRÌmang, cầm
75SHITSUmuroTHẤTmật thất
76SHITSU, SHICHICHẤTchất lượng
77SHAutsu(su), utsu(ru)TẢsao chép
78SHAmonoGIẢthứ, người
79SHAKUka(riru)mượn
80JAKUyowa(i), yowa(ru), yowa(meru)NHƯỢCyếu
81SHUkubiTHỦcổ, đầu
82SHUnushiCHỦchủ nhân
83SHUUakiTHUmùa thu
84SHUUatsu(maru/meru)TẬPtụ tập
85SHUUnara(u)TẬPhọc
86SHUUo(waru), o(eru)CHUNGkết thúc
87JUUsu(mu), su(mau)TRÚ, TRỤsinh sống
88JUU, CHOUomo(i), kasa(naru), -eTRỌNG, TRÙNGnặng, lặp
89SHUNharuXUÂNmùa xuân
90SHOtokoroSỞnơi, chỗ
91SHOatsu(i)THỬtrời nóng
92JOUbaTRƯỜNGnơi chốn
93JOUno(ru), no(seru)THỪAlên xe
94SHOKUiroSẮCmàu, sắc tình
95SHINmoriSÂMrừng rậm
96SHINkokoroTÂMtâm, lòng
97SHINoya, shita(shii), shita(shimu)THÂNcha, mẹ, thân thiết
98SHINma-CHÂNthật
99SHINsusu(mu), susu(meru)TIẾNtiến lên
100ZU, TOhaka(ru)ĐỒhình vẽ
101SEIao(i), aoTHANHxanh
102SEI, SHOUtada(shii), tada(su), masaCHÍNHđúng
103SEIkoeTHANHgiọng
104SEI, SEyoTHẾđời
105SEKI, SHAKUaka(i), aka(maru), aka(rameru)XÍCHđỏ
106SEKIyuuTỊCHchiều tà
107SETSU, SAIki(ru), ki(reru)THIẾTcắt, tất cả
108SETSUto(ku)THUYẾTnói, thuyết giảng
109SENara(u)TIỂN (TẨY)rửa
110SOU, SAhaya(i), haya(meru/maru)TẢOsớm
111SOUhashi(ru)TẨUchạy
112SOUoku(ru)TỐNGgửi đi
113ZOKUTỘCtộc người
114SONmuraTHÔNlàng
115TAI, TEIkaradaTHỂthân thể
116TAI, TAfuto(i), futo(ru)THÁImập, béo
117TAIma(tsu)ĐÃIđợi
118TAIka(su)THẢIcho vay, cho mượn
119DAI, TAIĐÀI, THAIđài, bục, bệ
120DAI, TAIka(waru), ka(eru), yo, shiroĐẠIthay mặt, tiền trả, thế hệ
121DAIĐỀchủ đề, tiêu đề
122TANmijika(i)ĐOẢNngắn
123CHIshi(ru)TRIbiết
124CHI, JIĐỊAmặt đất
125CHIikeTRÌcái ao
126CHA, SATRÀtrà, nước trà
127CHAKUki(ru), tsu(keru), ki(seru), tsu(ku)TRƯỚCmặc áo, tới nơi
128CHUUhiruTRÚbuổi trưa, ban ngày
129CHUUsoso(gu)CHÚđổ, rót
130CHOUmachiĐINHthị trấn, phố xá
131CHOUtoriĐIỂUchim
132CHOUasaTRIỀUbuổi sáng
133TSUUtou(ru), tou(su), kayo(u)THÔNGđi xuyên qua
134TEIotoutoĐỆem trai
135TEIhiku(i), hiku(meru/maru)ĐÊthấp, kém
136TENkoro(bu), koro(garu/geru), koro(gasu)CHUYỂNlăn
137DENtaĐIỀNruộng
138TO, TSUmiyakoĐÔthủ đô
139DOtabiĐỘđộ, lần, dịp
140TOUkota(e), kota(eru)ĐÁPtrả lời, đáp ứng
141TOUfuyuĐÔNGmùa đông
142TOU, ZUatama, kashiraĐẦUcái đầu, đầu óc
143DOUona(ji)ĐỒNGcùng, giống
144DOUugo(ku), ugo(kasu)ĐỘNGchuyển động
145DOUĐƯỜNGsảnh đường
146DOUhatara(ku)ĐỘNGlao động
147TOKUĐẶCđặc biệt
148NIKUNHỤCthịt
149BAIu(ru), u(reru)MẠIbán hàng
150HATSU, HOTSUPHÁTphát ra, xuất phát
151HANmeshiPHẠNbữa ăn, cơm
152BYOUya(mu), yamaiBỆNHốm, bệnh tật
153HINshinaPHẨMchất, phẩm cách
154FU, BUBẤTkhông
155FUUkazePHONGcơn gió
156FUKUPHỤCquần áo
157BUTSU, MOTSUmonoVẬTđồ, thứ
158BUN, MONfumiVĂNvăn chương
159BETSUwaka(reru)BIỆTchia tay; (cái) khác
160BENMIỄNchịu khó, chăm chỉ
161便BEN, BINtayo(ri)TIỆNtiện lợi; thư từ; chuyến hàng
162HO, BUaru(ku), ayu(mu)BỘđi bộ
163HOUkataPHƯƠNGhướng; cách làm; gọi người (tôn kính)
164MAIimoutoMUỘIem gái
165MIaji, aji(waru)VỊmùi vị, thưởng thức
166MINtamiDÂNngười dân, nhân dân
167MEIa(kari), aka(rui)MINHsáng
168MONkadoMÔNcánh cổng
169MONto(i), to(u)VẤNhỏi, câu hỏi
170YAyoro, yo~DẠban đêm
171YAnocánh đồng, lĩnh vực, đảng đối lập
172YAKUkusuriDƯỢCthuốc
173YUU, Ua(ru)HỮU
174YOUDIỆUthứ trong tuần
175YOUmochi(iru)DỤNGdùng, sử dụng
176YOUDƯƠNGđại dương
177RIlý do, quản lý..
178RYOtabiLỮdu lịch
179RYOULIỆUtiền phí, vật liệu
180RYOKU, RIKIchikaraLỰCsức
181RINhayashiLÂ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
1ANyasu(i)ANyên ổn, an toàn, rẻ
2ICHI, ITSUhito(tsu), hito-NHẤTmột, số một
3INno(mu)ẨMuống
4U, YUUmigiHỮUbên phải
5Uamemưa
6EKIDỊCHtrạm, ga tàu
7ENmaru(i)VIÊNtròn, vòng tròn, tiền Yen
8KAhiHỎAlửa
9KAhanaHOAbông hoa
10KA, GEshimo, sa(geru), o(rosu), ku(daru)HẠbên dưới
11KAnanicái gì
12KAIa(u)HỘIgặp gỡ, hội họp
13GAI, GEsoto, hoka, hazu(reru), hazu(su)NGOẠIbên ngoài, tháo ra
14GAKUmana(bu)HỌChọc tập, môn học
15KAN, KENaidaGIANtrong khoảng, ở giữa
16KI, KEKHÍtinh thần, yêu thích
17KYUU, KUkokono(tsu), kokono-CỬUchín, số chín
18KYUUyasu(mu)HƯUnghỉ ngơi
19GYOsakana, uoNGƯcon cá
20KINkaneKIMvàng, tiền, kim loại
21KUUsora, a(keru), karaKHÔNGkhông khí, bầu trời, rỗng
22GETSU, GATSUtsukiNGUYỆTtháng, mặt trăng
23KENmi(ru), mi(eru), mi(seru)KIẾNnhìn, xem
24GEN, GONi(u)NGÔNnói, ngôn ngữ
25KOfuru(i)CỔcũ, cổ, xưa
26GOitsu(tsu), itsu-NGŨnăm, số năm
27GO, KOUato, oku(reru), nochiHẬUsau, lúc sau, phía sau
28GONGỌtrưa, 12 giờ trưa
29GOkata(ru), kata(rau)NGỮtừ ngữ, kể chuyện
30KOUHIỆUtrường học
31KOU, KUkuchiKHẨUmiệng, cổng
32KOUi(ku), yu(ku), okona(u)HÀNH / HÀNGđi, thực hiện, dòng, ngân hàng
33KOUtaka(i), taka(maru), taka(meru)CAOcao, mắc, tăng, mức
34KOKUkuniQUỐCnước
35KONimaKIMbây giờ, nay
36SAhidariTẢbên trái
37SANmit(tsu), mi-TAMba, số ba
38SANyamaSƠNnúi, đống, gò
39SHIyo(ttsu), yu(tsu), yo-, yon-TỨbốn, số bốn
40SHIkoTỬđứa bé
41JImimiNHĨtai
42JItokiTHỜI (THÌ)thời gian, giờ
43SHICHInana(tsu), nana-, nano-THẤTbảy, số bảy
44SHAkurumaXAxe, xe hơi
45SHAcông ty, đền, xã hội
46SHUteTHỦtay, người
47SHUUCHUtuần (7 ngày)
48JUU, JItoo, to-THẬPmười, đủ
49SHUTSUda(su), de(ru)XUẤTđi ra, cho ra, tham dự
50SHOka(ku)THƯviết, giấy tờ
51JO, NYOonna, meNỮphụ nữ
52SHOUchii(sai), ko-, o-TIỂUnhỏ
53SHOUsuko(shi), suku(nai)THIỂU / THIẾUít, nhỏ tuổi
54JOUue, kami, a(geru), a(garu)THƯỢNGphía trên
55SHOKUta(beru), ku(ru), ku(rau)THỰCăn
56SHINatara(shii), ara(ta), nii-TÂNmới
57JIN, NINhitoNHÂNngười
58SUImizuTHỦYnước
59SEI, SHOUi(kiru), u(mu), ha(yasu), nama, kiSINHsống, sinh ra, tươi sống
60西SEI, SAInishiTÂYphía tây
61SENkawaXUYÊNsông
62SENchiTHIÊNmột ngàn, nhiều
63SENsakiTIÊNlúc trước, tương lai
64ZENmaeTIỀNphía trước
65SOKUashi, ta(riru), ta(su)TÚCchân, đầy đủ, cộng vào
66TAoo(i)ĐAnhiều
67DAI, TAIou(kii), oo(i)ĐẠIto, lớn
68DAN, NANotokoNAMnam, đàn ông
69CHUU, JUUnakaTRUNGbên trong
70CHOUnaga(i)TRƯỜNG / TRƯỞNGdài / người đứng đầu
71TEName, amaTHIÊNtrời, thời tiết
72TENmiseĐIẾMcửa hàng
73DENĐIỆNđiện
74DO, TOtsuchiTHỔđất
75TOUhigashiĐÔNGphía đông
76DOUmichiĐẠOcon đường
77DOKUyo(mu)ĐỘCđọc
78NANminamiNAMphía nam
79NIfuta(tsu), futa-NHỊhai, số hai
80NICHI, JITSUhi, -kaNHẬTngày, mặt trời, Nhật Bản
81NYUUhai(ru), i(ru), i(reru)NHẬPđi vào, cho vào
82NENtoshiNIÊNnăm
83BAIka(u)MÃImua
84HAKU, BYAKUshiro(i), shiroBẠCHmàu trắng
85HACHIyat(tsu), ya(tsu), ya-, you-BÁTtám, số tám
86HANnaka(ba)BÁNmột nửa
87HYAKUBÁCHmột trăm, nhiều
88FUchichiPHỤcha
89BUN, BU, FUNwa(keru), wa(kareru), wa(karu)PHÂN / PHẬNhiểu, phân chia, phút, phần
90BUN, MONki(ku), ki(koeru)VĂNnghe, nghe thấy, hỏi
91BOhahaMẪUmẹ
92HOKUkitaBẮCphía bắc
93BOKU, MOKUki, koMỘCcây, gỗ
94HONmotoBẢNsách, bản chất, đếm cây
95MAIMỖImỗi thứ, mỗi cái, ...
96MAN, BANVẠNvạn, mười ngàn, nhiều
97MEI, MYOUnaDANHtên tuổi
98MOKUmeMỤCmắt, mục kích
99YUUtomoHỮUbạn bè
100RAIku(ru), kita(ru), kita(su)LAItới, tới đây
101RITSUta(tsu), ta(teru)LẬPđứng, thành lập
102ROKUmutt(su), mu(tsu), mu, muiLỤCsáu, số sáu
103WAhanashi, 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