Showing posts with label Lập trình. Show all posts
Showing posts with label Lập trình. Show all posts

Tổng quan các thành phần của Salesforce Developer Console

1. Salesforce Developer Console là gì?

Salesforce Developer Console là một môi trường được phát triển tích hợp bao gồm các tool cho phép tạo, debug, test,.. ứng dụng.

Để Open Salesforce Developer Console tiến hành như sau:
B1: Login Salesforce:  https://login.salesforce.com/
B2: Click vào Username => Click Developer Console


B3: Cửa sổ Salesforce Developer Console sẽ xuất hiện như bên dưới

2. Các thành phần trong Salesforce Developer Console

- Thanh Menu bar: bao gồm các chức năng tạo new class (Apex Class, Apex Trigger, Visualforce Page, ...), Open (class, trigger, page, ...), execute Apex code, Run test, ...
- Logs tab: Hiển thị logs khi chạy chương trình: hiển thị debug, SOQL, các biến, ...
- Test tab: Hiển thị trạng thái của test class
- Query Editor tab: Dùng để viết truy vấn và xem kết quả.

3. Thực thi chương trình trong Salesforce Developer Console

B1: Mở Salesforce Developer Console
B2: Đi đến Debug => Open Exevute Anonymous Window
       OR: Ctrl + E


B3: Viết code và nhấn Button Execute


B4: Sau khi excute thì sẽ xuất hiện logs ghi lại quá trình chương trình chạy, để xem log này click vào Logs tab sau đó double click vào dòng log bạn muốn xem


B5: Để xem nhanh kết quả debug chọn vào Debug Only hoặc xử dụng Filter


4. Thực thi SOQL trên Salesforce Developer Console

B1: Mở Salesforce Developer Console
B2: Chọn Query Editor Tab sau đó viết SOQL vào, Sau đó nhấn Excute và xem kết quả


Đọc Tiếp »

Hướng Dẫn tạo tài khoản Saleforce Developer.

Nếu bạn mới bắt đầu học về Salesforce thì cần phải tạo tài khoản Saleforce Developer.
Để tạo account FREE bạn làm theo cách bước sau:

1. Đi đến trang: https://developer.salesforce.com/ sau đó click vào Sign Up .

2. Điền cẩn thận thông tin trong form đăng ký.

Sau khi điền xong Click vào "Sign me up"

3. Đăng nhập mail thực hiện: Verify Account



4. Sau khi Verify Account điền tiếp Password và câu hỏi bảo mật


Sau khi điền xong, click Change Password và quá trình đăng ký hoàn thành.

5. Bây giờ bạn có thể Login Salesforce:  https://login.salesforce.com/ để bắt đầu code được rồi.

Bài tiếp theo mình sẽ hướng dẫn về Salesforce Developer Console. 

Cảm ơn bạn đã đọc bài viết, chúc bạn học tập, làm việc vui vẻ, hiệu quả.
Đọc Tiếp »

Salesforce Là Gì ? Tổng Quan về Lập trình Salesforce.

1. Salesforce là gì ?

Salesforce được thành tháng 3 năm 1999, có trụ sở tai San Fransisco, California. Ngày nay khi nói về điện toán đám mây Salesforce được sắp hàng đầu về giải pháp quản lý quan hệ khách hàng CRM (Customer Relationship Management). Salesforce cung cấp các giải pháp chuyên sâu, toàn diện về bán hàng, quản lý, dịch vụ chăm sóc khách hàng. Có rất nhiều công ty đang sử dụng salesforce bởi tính bảo mật, độ tin cậy cao, chi phí linh hoạt tùy vào quy mô doanh nghiệp.

Các tính năng của Salesforce CRM:
* Chatter: Giao tiếp nội bộ và khách hàng
- Khách hàng có thể kết nối và giao tiếp với theo từng nhóm nhân viên.
- Cập nhật thông tin về khách hàng và các văn bản liên quan theo thời gian thực.
- Tại doanh nghiệp của bạn Salesforce CRM hỗ trợ phân quyền chia sẻ công việc, thông tin và tài liệu giữa các nhóm với nhau.

* Quản lý thông tin khách hàng
- Quản lý thông tin khách hàng bao gồm: thông tin liên lạc, lịch sử giao dịch, lịch sử tương tác của khách hàng với doanh nghiệp,...

* Hỗ trợ người dùng trên smartphone
- Salesforce giúp doanh nghiệp và khách hàng giao tiếp, làm việc ở bất cứ đâu ngay trên di động.

* Kế hoạch marketing và tìm kiếm khách hàng tiềm năng
- Theo dõi các kế hoạch marketing, đánh giá hiệu quả của từng kế hoạch,..
- Có thể tích hợp với quảng cáo Google Adwords, Email Marketing, ...
- Đưa ra mức đánh giá khách hàng tiềm năng.

* Quản lý cơ hội bán hàng hiệu quả
- Đưa ra chi tiết hợp đồng, đối thủ cạnh tranh, cập nhật nhanh, phản ứng linh hoạt với các thay đổi,...

* Phân tích, dự báo xu hướng
- Đưa ra các số liệu doanh số, doanh thu, theo từ các nhân và phòng ban. Từ đó đưa ra xu hướng, kế hoạch cho từng phòng ban...

* Tự động hóa
- Tự động hóa quy trình bán hàng, phân công công việc linh hoạt; phân bổ nguồn lực kinh doanh. Nhờ đó, các thủ tục rườm rà, các công việc giấy tờ sẽ không còn là hạn chế của lực lượng bán hàng trong công ty.

* Thiết lập email và quản lý lịch làm việc
- Saleforce đồng bộ với Microsoft Outlook, Gmail, Microsoft Word/Excel. Giúp xử lý công việc nhanh chóng và thông minh hơn.

* Lưu trữ tài liệu, văn bản, hóa đơn,..
- Lưu trữ thông minh, dễ dàng tìm kiếm, bảo mật cao, ...

* Quản lý đối tác
- Xây dựng và quản lý cộng đồng các đối tác, đại lý trung thành

2. Ứng dụng Salesforce tại Việt Nam.

Salesforce CRM hiện được tin dùng bởi hơn 93.000 doanh nghiệp trên thế giới, với hơn 3 triệu thuê bao đang sử dụng online trên hệ thống của Salesforce.com. Đó là các tập đoàn lớn trên thế giới như: Dell, Synmantec, City Group và hàng chục công ty hàng đầu tại Việt Nam như Capitaland, ANZ, Prudential…

Salesforce.com có các đối tác bán hàng, triển khai và hỗ trợ tại thị trường Việt Nam như là: Accenture, FPT IS, Keizu Việt Nam,...

3. Tổng Quan về Lập trình Salesforce.

Salesforce cung cấp ngôn ngữ lập trình Apex để tương tác với nền tảng force.com thông quá các API.

Apex là ngôn ngữ lập trình hướng đối tượng mạnh mẽ:
- Cú pháp gần giống Java.
- Dễ code
- Dễ dàng thực hiện các thao tác với database
- Dễ test
- ...

Trong nội dung của blog này sẽ lần lượt giới thiệu đến bạn về các thành phần cơ bản của salesforce:
- Cài đặt, cấu hình, ..
- Ngôn ngữ lập trình Apex: Cú pháp Apex và ứng dụng dùng để viết class controller, API, web service, trigger, batch...
- Visualforce Page: user interface component, HTML, CSS, Javascript, ...
- Tương tác với DB thông qua SOQL, SOSL,...
- Hỏi đáp: Tổng hợp các vấn đề thường gặp, và các câu hỏi mà các bạn bình luận bên dưới mỗi bài viết.

Bài tiếp theo mình sẽ viết về: Hướng Dẫn tạo tài khoản Saleforce Developer

Cảm ơn bạn đã đọc bài viết, chúc bạn học tập, làm việc vui vẻ, hiệu quả!!!
Đọc Tiếp »

Câu Hỏi Phỏng Vấn PHP Thường Gặp Phần 1


Câu 1: Mã PHP được chứa trong những cặp thẻ nào?

PHP cũng có thẻ mở đầu và thẻ đóng giống như HTML. Gồm 3 cách:
Cách 1: Cú pháp chính
   <?php 
      // kịch bản php
   ?>
Cách 2: Cú pháp ngắn gọn
   <?
     // kịch bản php
   ?>
Cách 3: Giống ASP
   <%
     // kịch bản php
   %>

Câu 2: Điểm khác nhau giữa hằng và biến trong PHP?

Một hằng số xác định một giá trị duy nhất trong toàn bộ chương trình. Người ta có thể sử dụng giá trị này thông qua tên của hằng số đó trong chương trình.
   Cú Pháp: $ten_bien = "giá trị cần gán";
Một số hằng số có sẵn:
   + TRUE, FALSE: tương ứng với true(1), false(0).
   + PHP_VERSION: Chỉ ra phiên bản PHP đang dùng.
   + PHP_OS: chỉ ra hệ điều hành mà server PHP đang chạy.
   + Một số hằng thông báo lỗi như: E_ERROR, E_WARNING, E_PARSE, E_NOTICE.
   + ...

Biến số được sử dụng để lưu trữ một giá trị nào đó trong chương trình. Gọi là biến số bởi vì giá trị của nó bị thay đổi thông qua các phép gán khi thực hiện chương trình.
   Cú Pháp: define("ten_hang", "giá trị cần gán");

Lưu ý: Hằng trong PHP chỉ được định nghĩa 1 lần. Khi một hằng số được định nghĩa lần 2 thì sẽ có thông báo lỗi xuất hiện (Notice), chương trình vẫn chạy với giá trị định nghĩa lần đầu tiên.
Tên có thể đặt tên hằng và tên biến giống nhau. Thật ra là khác nhau bởi vì tên biến có $ phía trước.
   VD: $sv = "cntt";
           define("sv", "cong nghe thong tin");

Câu 3: Phân biệt phương thức Get, Post khi xử lý Form trong PHP?

* Phương thức GET:
   Client gửi dữ liệu: Phương thức GET là phương thức mà dữ liệu được gửi thông qua URL. Có thể nhìn thấy dữ liệu được gửi qua URL trên Browser. Server sẽ nhận đường dẫn này phân tích lấy dữ liệu. Phần dữ liệu nằm sau dấu ? của URL. Trên URL có thể chứa nhiều dữ liệu để phân biệt các dữ liệu với nhau dùng dấu &.
   VD: sinhviencntt.com?msnv=19
           sinhviencntt.com?msnv=19&name=cntt
   Server nhận dữ liệu: Tất cả dữ liệu truyền bằng phương thức GET được PHP lưu trong biến toàn cục là $_GET. Biến này là mảng kết hợp lưu trữ dữ liệu thông qua cặp Key => Value.
   VD: Để lấy msnv trong URL: sinhviencntt.com?msnv=19&name=cntt
          $msnv =  $_GET['msnv'];
  * Ưu điểm:
     + Nhanh hơn phương thức POST,
     + Người dùng có thể sửa dữ liệu được truyền để test dữ liệu bằng cách sửa lại giá trị trên URL.
     + Tốt cho SEO.
  * Nhược điểm:
     + Bảo mật kém,
     + Dữ liệu được truyền có giới hạn vì độ dài của URL có giới hạn.

* Phương thức POST:
    Client gửi dữ liệu: Dữ liệu truyền được truyền ngầm, không thấy dữ liệu trên URL. PHP sẽ tạo ra biến ẩn chứa các thành phần input cơ bản của form như textbox, radio, ... và được nhận dạng qua name của input đó.
     Server nhận dữ liệu: Tất cả dữ liệu truyền bằng phương thức POST được PHP lưu trong biến toàn cục là $_POST.
      VD: $msnv =  $_POST['msnv'];
    * Ưu điểm:
      + Bảo mật hơn GET.
      + Không giới hạn độ lớn của dữ liệu.
    * Nhược điểm;
      + Dữ liệu không tường minh,
      + Chậm hơn GET.

GET nhanh hơn POST bởi vì dữ liệu đường truyền với GET có thể được Browser lưu lại trong cache.
Ngoài ra khi chúng ta không rõ form sử dụng phương thức nào POST hay GET thì server có thể nhận dữ liệu nhờ vào $_REQUEST.
Khi select nên dùng GET. Khi insert, update, delete nên dùng POST.

Câu 4: Thế nào là mảng tuần tự, mảng bất tuần tự trong PHP?

Mảng là một thành phần quan trọng trong PHP, mảng lưu trữ nhiều dữ liệu dưới dạng key => value. Mảng cho phép lập trình viên sắp xếp, thêm, sửa, xóa phần tử khỏi mảng 1 cách dễ dàng.

* Mảng tuần tự:
Mảng tuần tự là mảng mà chúng ta không cần chỉ định key. Key sẽ được đánh số từ 0 và theo thứ tự tăng dần.
VD:
    <?php
             $sinhvien = array("sv1", "sv2", "sv3");
             echo $sinhvien[0]; //lấy ra sv1
             echo $sinhvien[1]; //lấy ra sv2
             echo $sinhvien[2]; //lấy ra sv3
    ?>

VD Để thêm phần tử vào mảng $sinhvien
      Cách 1:  $sinhvien[] = "sv4"; //phần tử mới được thêm vào sau cùng, khi đó key của sv4 là 3.
      Cách 2:  $sinhvien[4] = "sv4"; // Phần tử mới được thêm vào vị trí với key = 4. Mảng không còn liên tục vì không có key = 3. Nếu lấy $sinhvien[3] sẽ xuất hiện lỗi. Nếu lấy $sinhvien[4] chương trình hoạt động bình thường.

* Mảng bất tuần tự:
Mảng bất tuần tự là mảng mà chúng ta cần chỉ định rõ key cho chúng. Key có thể là số hoặc string.
 VD:
      <?php
             $sinhvien = array(
                                    "mssv" => "001",
                                    "age"   => "20",
                                    "sex"   => "nam"
                                 );
             echo $sinhvien['mssv']; //lấy ra mssv
             echo $sinhvien['age']; //lấy ra age
             echo $sinhvien['sex']; //lấy ra sex
      ?>

Thêm phần tử vào mảng:
    VD:  $sinhvien["dtb"] = 8;

Để duyệt mảng ta thường dùng for hoặc foreach. Để tăng tốc độ chương trình thông thường khi duyệt mảng để đọc thì nên dùng foreach. Nhưng nếu duyệt để thay đổi giá trị của các phần tử thì nên dùng for.

Đọc Tiếp »

[Java String] Xác Định Vị Trí Xuất Hiện Cuối Cùng Của Một Chuỗi Con

Xem tất cả các bài viết về Java String: Vào Đây

Vấn đề: Làm thế nào để xác định vị trí xuất hiện cuối cùng của một chuỗi con trong một chuỗi với Java

Giải pháp: Để giải quyết vấn đề trên trong Java có hỗ trợ sẵn phương phức lastIndexOf của lớp String. Phương thức lastIndexOf gồm có 4 biến thể sau:





public int lastIndexOf(int ch)

Trả về vị trí cuối của ký tự được truyền vào trong chuỗi. Nếu kí tự đó không tồn tại trong chuỗi trả về -1. Bạn xem ví dụ sau:

package sinhviencntt.com.lastIndexString;

public class lastIndexString {
 
public static void main(String[] args) {
  
  String str = "Hi! Chuc ban vui ve! Hi! Chuc ban vui ve!";

  // 101 là mã của ký tự 'e'. 'e' xuất hiện cuối ở vị trí 39.
  System.out.println(str.lastIndexOf(101));

 }
} 
Kết quả in ra màn hình:
39
public int lastIndexOf(String str)

Trả về vị trí xuất hiện cuối của chuỗi, vị trí này chính là vị trí của chữ cái đầu tiên trong chuỗi đó. Nếu chuỗi không xuất hiện trả về -1;

package sinhviencntt.com.lastIndexString;

public class lastIndexString {

     public static void main(String[] args) {

       String str = "Hi! Chuc ban vui ve! Hi! Chuc ban vui ve!";

       //Vị trí của "vui" cuối cùng chính là 
       //vị trí của ký tự 'v' trong chuỗi đó.
       System.out.println(str.lastIndexOf("vui"));
   }
}
 
Kết quả in ra màn hình:
34
public int lastIndexOf(int ch, int fromIndex)

Tìm vị trí xuất hiện cuối cùng của ký tự trong chuỗi thỏa mãn điều kiện sao cho vị trí đó vừa là ký tự ở sau, vừa phải nhỏ hơn chỉ số fromIndex. Nếu không tìm thấy trả về -1.
package sinhviencntt.com.lastIndexString;

public class lastIndexString {

   public static void main(String[] args) {

      String str = "Hi! Chuc ban vui ve! Hi! Chuc ban vui ve!";
      
      //Chữ "vẻ" cuối nằm vị trí 38, chữ "vui" cuối vị trí 34. 
      //Vậy theo điều kiện thì hàm này sẽ
      // trả về vị trí 'v' và vị trí đó nhỏ hơn 37. Nên nó sẽ chọn 
      //vị trí 'v' của chữ "vui".
      System.out.println(str.lastIndexOf('v', 37));
    }
 }
 
Kết quả in ra màn hình:
34
public int lastIndexOf(String str, int fromIndex)

Tìm vị trí xuất hiện cuối cùng của chuỗi con thỏa mãn điều kiện sao cho vị trí đó vừa là ký tự ở sau, vừa phải nhỏ hơn chỉ số fromIndex. Nếu không tìm thấy trả về -1.
package sinhviencntt.com.lastIndexString;

public class lastIndexString {

   public static void main(String[] args) {

      String str = "Hi! Chuc ban vui ve! Hi! Chuc ban vui ve!";

      System.out.println(str.lastIndexOf("vui", 100));
   }
}
 
Kết quả in ra màn hình:
34
Cảm ơn các bạn đã theo dõi bài viết.

Đọc Tiếp »

[Java String] So Sánh Hai Chuỗi Trong Java

Xem tất cả các bài viết về Java String: Vào Đây

Vấn đề: Làm thế nào để so sánh 2 chuỗi trong Java?


Khi mới lập trình với Java rất dễ nhầm lẫn là sử dụng toán tử == để so sánh xem hai chuỗi có giống nhau không, tuy nhiên đó là không phải là cách làm đúng trong Java.

Trong bài này mình sẽ trình bày đến các bạn các cách so sánh chuỗi đúng trong Java, từ cách phổ biến hay được dùng nhiều nhất. Ở cuối bài mình cũng giải thích tại sao không dùng toán tử == trong so sánh chuỗi với Java.

Lựa chọn 1: So sánh chuỗi trong Java với phương thức: equals

Phần lớn mình sử dụng khoảng 95% phương thức equals của lớp String.

if (string1.equals(string2))
 
Phương thức equals nhìn vào 2 chuỗi, nếu từng ký tự trong chuỗi đó giống nhau thì 2 chuỗi đó giống nhau.

Nhìn vào ví dụ sau, 2 chuỗi sẽ không bằng nhau vì từng ký tự trong chuỗi không bằng nhau (Hàm equals sẽ trả về false). Bạn chú ý ký tự in hoa và in thường là khác nhau nhé.

String string1 = "Sinh Vien CNTT";
String string2 = "sinh vien cntt";
 
if (string1.equals(string2))
{
  // Dòng này sẽ không được in ra vì hai chuỗi không bằng nhau
  System.out.println("Hai chuỗi bằng nhau.")
}
 
Nhưng khi từng ký tự trong hai chuỗi giống nhau thì hàm equals sẽ trả về kết quả true nghĩa là hai chuỗi giống nhau, bạn xem ví dụ sau:

String string1 = "Sinh Vien CNTT";
String string2 = "Sinh Vien CNTT";
 
if (string1.equals(string2))
{
  // Dòng này sẽ được in ra vì hai chuỗi bằng nhau
  System.out.println("Hai chuỗi bằng nhau.");
}
 
Lựa chọn 2: So sánh chuỗi trong Java với phương thức: equalsIgnoreCase

Trong một số trường hợp bạn muốn việc kiểm tra hai chuỗi không kiểm tra ký tự là in hoa hay in thường thì dùng hàm equalsIgnoreCase của lớp String như sau:

String string1 = "Sinh Vien CNTT";
String string2 = "sinh vien cntt";
 
if (string1.equalsIgnoreCase(string2))
{
  // Hai chuỗi bằng nhau vì ký tự in hoa bằng ký tự thường
  // Dòng này sẽ được in ra vì hai chuỗi bằng nhau
  System.out.println("Hai chuỗi bằng nhau.");
}
 
Lựa chọn 3: So sánh chuỗi trong Java với phương thức: compareTo

Ngoài 2 cách trên còn có thể dùng hàm compareTo của lớp String, tuy nhiên cách này ít phổ biến. Nếu hai chuỗi giống nhau hàm compareTo sẽ trả về 0. Cách này cũng phân biệt chữ in hoa và thường.

String string1 = "Sinh Vien CNTT";
String string2 = "sinh vien cntt";
 
if (string1.compareTo(string2) == 0)
{
  // Dòng này không sẽ được in ra vì hai chuỗi không bằng nhau
  System.out.println("Hai chuỗi bằng nhau.");
}
 
Lựa chọn 4: So sánh chuỗi trong Java với phương thức: compareToIgnoreCase

Cách này không phân biệt in hoa và in thường

String string1 = "Sinh Vien CNTT";
String string2 = "sinh vien cntt";
 
if (string1.compareTo(string2) == 0)
{
  // Dòng này sẽ được in ra vì hai chuỗi bằng nhau
  System.out.println("Hai chuỗi bằng nhau.");
}
 
Vì không nên sao sử dụng toán tử == trong so sánh chuỗi Java: Vì == là so sánh địa chỉ 2 đối tượng, còn equals là so sánh giá trị, nên trong trường hợp dưới đây dùng == sẽ không đúng.

String s = new String("231");
if(s == "231") {
   // Dòng này sẽ không được in ra màn hình
   System.out.println("Phuong phap dung ==");
}
if(s.equals("231")) {
   // Dòng này sẽ được in ra màn hình
   System.out.println("Phuong phap dung equals");
} 
 
Cảm ơn các bạn đã theo dõi bài viết, mong nhận được sự góp ý từ các bạn.

Xem tất cả các bài viết về Java String: Vào Đây
Đọc Tiếp »

[Bài Tập Java] Chuyển Đổi Tiếng Việt Có Dấu Thành Không Dấu

Xem tất cả các Bài Tập Java: Vào Đây

Để chuyển đổi tiếng việt có dấu thành không dấu trong Java có cách đơn giản bằng cách gọi và sử dụng các gói đã có sẵn.




* Hàm chuyển đổi:

package sinhviencntt.com.StringUtils;

import java.text.Normalizer;
import java.util.regex.Pattern;

public class StringUtils {
 
 public static String removeAccent(String s) {
  
  String temp = Normalizer.normalize(s, Normalizer.Form.NFD);
  Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
  return pattern.matcher(temp).replaceAll("");
 }
}
 
Normalizer: Class này cung cấp các phương thức để tiêu chuẩn hóa văn bản Unicode thành văn bản tương đương. Nhằm mục đích thuận tiện cho việc sắp xếp và tìm kiếm chuỗi.

String temp = Normalizer.normalize(s, Normalizer.Form.NFD): Tiêu chuẩn hóa chuỗi s được truyền vào theo định dạng NFD. Kết quả trả về là chuỗi đã được tiêu chuẩn hóa.

Lớp Pattern:  Dùng để nhận Regexp (Cấu trúc đại diện hay Regular Expression) vào và kiểm tra những String cho vào dựa trên Regexp đã tạo ra. Thông thường để nhận một Regexp, thì dùng phương thức compile.

matcher: Dùng để so sánh, tìm kiếm những chữ đưa vào dựa trên Regexp đã tạo ra.

* Hàm main:

 
 
package sinhviencntt.com.main;

import sinhviencntt.com.StringUtils.StringUtils;

public class chuyendoitiengviet {
 
 public static void main(String[] args) {
  
  System.out.print(StringUtils.removeAccent("Sinh Viên Công Nghệ Thông Tin"));
 }
}

 
Kết quả in ra màn hình:
Sinh Vien Cong Nghe Thong Tin
Bạn tạo project và run thử nhé! Cảm ơn các bạn đã theo dõi bài viết.  Nếu có gì cần trao đổi bạn Comment bên dưới.

Xem tất cả các Bài Tập Java: Vào Đây
Đọc Tiếp »