Sách

Thứ Tư, 3 tháng 7, 2019

20 Website download sách miễn phí cho những người ham mê đọc sách

20 Website download sách miễn phí cho những người ham mê đọc sách

"Sách là nơi lưu giữ nền văn minh, không có sách, lịch sử trầm lặng, văn chương buồn chán".

Dưới đây là một loạt các website Download sách miễn phí hi vọng sẽ giúp bạn tìm thấy được những cuốn sách mà bạn đang cần. 
1. http://www.loyalbooks.com/  : Với hơn 7000 ebook có cả audio để các bạn nghe, đủ các file trên điện thoại.
2. http://downloadsachfree.com : Bạn sẽ tìm được quyển ebook hay thuộc nhiều thể loại. Trang web này luôn cập nhật những sách hay ở nhiểu lĩnh vực, kinh doanh, làm giàu, kỹ năng, phát triển bản thân,...
3. http://www.ebookbkmt.com/  : Download tài liệu về kỹ thuật miễn phí.
20 Website download sách miễn phí cho những người ham mê đọc sách
4. http://avaxhome.ws : Là một trong những trang download sách miễn phí rất lớn. 
5. http://sachvui.com : Thư viện sách miễn phí, Ebook miễn phí, tổng hợp nhiều thể loại với nhiều định dạng file. 
6. http://www.taisachhay.com : Xem, đọc, tải sách hay, sách điện tử miễn phí về cho điện thoại, máy tính, máy tính bảng.
7. http://www.free-ebooks.net/ : Tại web này bạn có thể nhận được các thể loại sách về điện tử, giải trí, viễn tưởng, giáo dục, lãng mạn, phi tiểu thuyết, truyện ngắn… và nhiều hơn thế nữa.
8. http://comicsdownload.org/ : Dành cho các bạn thích đọc truyện tranh.
9http://www.englishtips.org/  : Có rất nhiều tài liệu cho việc học tiếng anh. 
10. http://trangtaiebookfree.blogspot.com/  :  Hãy vào đây để tải cho mình những quyển sách hay được tuyển chọn kỹ lưỡng.
11. https://webtietkiem.com/free/  : Trang web này cũng có rất nhiều sách hay, bạn có thể tải sách chỉ với 1 click.
12www.Beenvn.com :  Trang download sách free toàn link Mediafire. 
20 Website download sách miễn phí cho những người ham mê đọc sách
13. http://www.ebookandyou.com/  : Tiểu thuyết nước ngoài và trong nước rất phong phú.
14. http://tve-4u.org/  : Sách tiếng việt rất đa dạng.
15. http://manybooks.net : Cung cấp hơn 25000 ebook miễn phí các loại. Bạn có thể tìm ebook theo: tên tác giả, nhan đề, thể loại hay ngôn ngữ viết sách, nhưng hiện tại web này chưa có Tiếng Việt. 
16. http://www.docsachtienganh.com/  : Luyện đọc tiếng anh mỗi ngày.
17. http://ebook3000.com/  : Thư viện tải ebook miễn phí cung cấp đa dạng các thể loại sách thuộc nhiều lĩnh vực được sắp xếp riêng biệt như: kinh doanh, thiết kế đồ họa...    
18. https://komo.vn/ : Với hơn 500 quyển tiếng anh miễn phí, đặc biệt hơn là bạn có thể cài app komo reader vào điện thoại để đọc thỏa mái.  
19. https://it-ebooks.info/ : trang web ebook hàng đầu dành cho dân IT. Các sách về lập trình và CNTT nổi tiếng trên thế giới đều được chia sẻ ở đây.     
20http://ikindlebooks.com: Ebook miễn phí, rất nhiều sách về Best Seller.       
Theo YBOX.VN

Thứ Hai, 24 tháng 6, 2019

Đào tạo android

1. Tài liệu tự học:

- Kênh youtube tham khảo:
+ https://www.youtube.com/user/khoazend/playlists
- Lộ trình tự học tham khảo:
+ https://khoapham.vn/khoa-hoc-lap-trinh-android.html
+ http://itplus-academy.edu.vn/Khoa-hoc-lap-trinh-ung-dung-di-dong-Android.html
+ https://techmaster.vn/khoa-hoc/25513/lap-trinhandroid

2. Công việc:
- Xây dựng màn hình tab EDM của app Keeng. Yêu cầu:
+ Hiển thị đầy đủ dữ liệu lên màn hình (giao diện giống hệt tab EDM app Keeng hiện tại)
+ Click vào mỗi item đều có phản hồi
+ Có cache dữ liệu khi mở app lên mà không có mạng
+ Tự động load lại dữ liệu khi từ trạng thái mất mạng -> có mạng
+ Chơi được video và audio.

API lấy dữ liệu: /ws/edm/getHomeEdmV1
Method: GET
Header:
+ version: version name của ứng dụng
+ session_token: t:s:425f539317e5d9c79216ccc1c37954b2d81d9ab5
+ country_code: VN
+ device_id: imei của máy
+ client_type: 1
+ revision: version code của ứng dụng
+ language_code: vi
+ local_code: 84
Param:
+ platform: keeng

API log hành vi click: /ws/social/user/log
Method: POST
Header:
+ version: version name của ứng dụng
+ session_token: t:s:425f539317e5d9c79216ccc1c37954b2d81d9ab5
+ country_code: VN
+ device_id: imei của máy
+ client_type: 1
+ revision: version code của ứng dụng
+ language_code: vi
+ local_code: 84
Param:
+ item_type: item_type của object trong api getHomeEdmV1 trả về
+ is_feed: 1
+ item_id: id của object trong api getHomeEdmV1 trả về
+ action_type: 1

3. Kết quả cần thu được:
- Có hiểu biết xây dựng ứng dụng từ việc tạo project
- Có kiến thức cơ bản về kiến trúc ứng dụng
- Nắm vững các kiến thức về các vòng đời: activity, fragment. Các giao tiếp giữa activity với activity, fragment với fragment, activity với fragment.
- Có kiến thức cơ bản về service, broadcast.
- Biết sử dụng thư viện để load ảnh, cache ảnh
- Biết sử dụng SQLite thiết kế database cho ứng dụng
- Biết sử dụng cache
- Biết sử dựng thư viện để gọi API kết nối với server
- Biết sử dụng thư viện để chơi nhạc, video

Thứ Tư, 6 tháng 3, 2019

[Android] Lấy danh sách tất cả ứng dụng trong thiết bị

public static List<AppInfo> getInstalledPackages(Context context) {
//todo get all applications has installed on device.
PackageManager packageManager = context.getPackageManager();
List<AppInfo> list = new ArrayList<>();
List<PackageInfo> packs = packageManager.getInstalledPackages(0);

for (PackageInfo packageInfo : packs) {
try {
AppInfo item = new AppInfo();
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
item.setName(applicationInfo.loadLabel(packageManager));
item.setPackageName(packageInfo.packageName);
item.setVersionName(packageInfo.versionName);
item.setVersionCode(packageInfo.versionCode);
item.setDescription(applicationInfo.loadDescription(packageManager));
item.setIcon(applicationInfo.loadIcon(packageManager));
//item.setLogo(applicationInfo.loadLogo(packageManager));
//item.setBanner(applicationInfo.loadBanner(packageManager));
item.setSystem(((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0));

//todo get all requested permissions of application
PackageInfo packageInfoPermissions =
packageManager.getPackageInfo(packageInfo.packageName, PackageManager.GET_PERMISSIONS);
if (packageInfoPermissions != null) {
String[] requestedPermissions = packageInfoPermissions.requestedPermissions;
if (requestedPermissions != null) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < requestedPermissions.length; i++) {
sb.append((i + 1));
sb.append(". ");
sb.append(requestedPermissions[i]);
sb.append("\n");
}
item.setPermission(sb.toString());
}
}
list.add(item);
} catch (OutOfMemoryError | Exception e) {
e.printStackTrace();
}
}
if (list.size() > 0) {
Comparator comparator = new Comparator<AppInfo>() {
@Override
public int compare(final AppInfo leftObject, final AppInfo rightObject) {
return leftObject.getName().compareToIgnoreCase(rightObject.getName());
}
};
Collections.sort(list, comparator);
}
Log.i(TAG, "getInstalledPackages: " + list);
return list;
}

public class AppInfo implements Serializable {
String packageName;
String versionName;
int versionCode;
String name;
String description;
Drawable logo;
Drawable icon;
Drawable banner;
boolean isSystem;
String permission;

public AppInfo() {
}

public String getPackageName() {
return packageName;
}

public void setPackageName(final String packageName) {
this.packageName = packageName;
}

public String getVersionName() {
return versionName;
}

public void setVersionName(final String versionName) {
this.versionName = versionName;
}

public int getVersionCode() {
return versionCode;
}

public void setVersionCode(final int versionCode) {
this.versionCode = versionCode;
}

public String getName() {
if (name == null)
name = "";
return name;
}

public void setName(final CharSequence name) {
if (name != null)
this.name = name.toString();
else
this.name = "";
}

public void setName(final String name) {
this.name = name;
}

public String getDescription() {
return description;
}

public void setDescription(final CharSequence description) {
if (description != null)
this.description = description.toString();
else
this.description = "";
}

public void setDescription(final String description) {
this.description = description;
}

public Drawable getLogo() {
return logo;
}

public void setLogo(final Drawable logo) {
this.logo = logo;
}

public Drawable getIcon() {
return icon;
}

public void setIcon(final Drawable icon) {
this.icon = icon;
}

public Drawable getBanner() {
return banner;
}

public void setBanner(final Drawable banner) {
this.banner = banner;
}

public boolean isSystem() {
return isSystem;
}

public void setSystem(final boolean system) {
isSystem = system;
}

public String getPermission() {
return permission;
}

public void setPermission(String permission) {
this.permission = permission;
}

@Override
public String toString() {
return "\n{" +
"packageName='" + packageName + '\'' +
", versionName='" + versionName + '\'' +
", versionCode=" + versionCode +
", name='" + name + '\'' +
", description='" + description + '\'' +
", isSystem=" + isSystem +
'}';
}
}