Thứ Hai, 28 tháng 5, 2018

Tại sao nên học lập trình ngay bây giờ nếu có thể?

(12/9) - ngày 256 của năm cũng là ngày tôn vinh các lập trình viên quốc tế. 256 chính là số lượng các giá trị khác nhau hiện diện trong 1 byte (8-bit).
Nhân ngày Quốc tế Lập trình, ông Vũ Minh Trí, giám đốc điều hành Microsoft Việt Nam chia sẻ 5 lý do khuyến khích mọi người nên thử học lập trình:

Trình độ kỹ thuật số đi đôi với tăng trưởng kinh tế: Theo một nghiên cứu gần đây của Accenture, hiện hơn 1/5 GDP của thế giới được tạo ra bởi các hình thức năng lực khác nhau của kỹ thuật số như kỹ năng, vốn, hàng hóa hoặc dịch vụ số hóa. Công nghệ số hóa có thể tạo ra giá trị 2.000 tỷ USD trong sản lượng kinh tế toàn cầu tính đến năm 2020, chứng minh rõ vai trò của kỹ thuật số trong việc xúc tiến tăng trưởng kinh tế chung. bởi vậy, nhiều quốc gia châu Á như Nhật Bản, Hàn Quốc, Singapore, Malaysia và Việt Nam đã chính thức lên kế hoạch đưa các ngành học hệ trọng đến khoa học máy tính và công nghệ phần mềm vào chương trình giảng dạy.

Lập trình là nguồn dẫn đến sự đổi mới: dù rằng, nghe đâu khái niệm một vận dụng đáp ứng cho toàn bộ nhu cầu hiện đang tồn tại, nhưng thế giới luôn luôn chờ một điều gì đó lớn lao hơn. Những ứng dụng công nghệ dự định ​​sẽ mang lại gấp đôi lợi nhuận, lên đến 101 tỷ USD vào năm 2020, nên chi, nếu có một ý tưởng tiệt và biết lập trình, đó chính là lợi thế trong tương lai.

Theo số liệu mới nhất từ ​​Bloomberg, 5 công ty hàng đầu thế giới về vốn trên thị trường chứng khoán hiện tại là Apple, Alphabet, Microsoft, Amazon và Facebook. Đây chính là phản chiếu rõ rệt rằng, cán cân tăng trưởng đã được chuyển từ các ngành công nghiệp truyền thống là Dầu khí, Ngân hàng và Tự động hóa sang các ngành liên hệ đến Công nghệ.

tiếng nói lập trình là ngoại ngữ: Tương tự như cách chọn một ngoại ngữ để tiếp cận thêm một nền văn hóa mới, tiếng nói lập trình cũng vậy. bây giờ, bốn tiểu bang Mỹ đang mong muốn đưa tiếng nói lập trình vào danh sách các ngoại ngữ bắt của chương trình học. Như vậy khả năng thạo tiếng nói lập trình cũng quan trọng không kém khả năng ngoại ngữ trong thế giới việc làm đầy cạnh tranh hiện tại.

Kỹ năng lập trình giúp bổ sung và củng cố kỹ năng quan yếu như giải quyết vấn đề và làm việc theo nhóm: Lập trình mang lại ích lợi nhiều hơn cho những người muốn đeo đuổi nó một cách chuyên nghiệp. Trong quá trình học tập, người học có thể xây dựng những nguyên tắc cơ bản quan yếu riêng, như cách đơn giản hóa các hệ thống phức tạp. Học lập trình giúp nuôi dưỡng những tư duy sáng tạo, góp phần vào khả năng giải quyết vấn đề, phát triển logic và nuôi dưỡng tiềm năng cá nhân chủ nghĩa, tạo động lực hướng đến nền kinh tế công nghệ.

Thứ Sáu, 25 tháng 5, 2018

Trong hackathon chống buôn bán tình dục của Facebook

Những người khổng lồ công nghệ đã bỏ cuộc cạnh tranh của họ sang một bên trong hai ngày trong tuần để viết mã cho một căn do phổ thông: bảo vệ con trẻ trên internet. Sâu bên trong hội sở Menlo Park của Facebook, các nhóm được rút ra từ Uber, Twitter, Google, Microsoft và Pinterest đã làm việc qua đêm để thí điểm các phương tiện mới được thiết kế để giúp các tổ chức phi lợi nhuận trong cuộc chiến chống buôn bán tình dục trẻ con.

Phần lớn công việc của họ từ hoạt động hackathon an toàn con nít hàng năm của Facebook thực thụ quá nhạy cảm để xuất bản. Để đi trước một bước của bọn phạm nhân, các chi tiết cụ thể về cách các công cụ này theo dõi kẻ buôn người và trẻ thơ bị mất trên các trang web phải được giữ bí ẩn. Nhưng các sản phẩm thu được, tuốt tuột đều được quyên góp cho các tổ chức phi chính phủ như Thorn và Internet Watch Foundation, có thể giúp các công ty công nghệ hội tụ một chiến trận hợp nhất chống lại những người muốn làm tổn thương con trẻ.

Guy Rosen, phó giám đốc quản lý sản phẩm của Facebook và là một trong những giám khảo của sự kiện cho biết: “Điều có liên can đến an toàn và an ninh và chống lạm dụng là một lĩnh vực mà ngành công nghiệp hợp tác. “Hackathons là một cách tuyệt trần để đưa mọi người lại gần nhau để đích thực phát động một số ý tưởng này. . . bảo đảm rằng các kỹ sư có ý tưởng sáng dạ thực sự có thể hiểu được những điểm đau và ứng dụng suy nghĩ đó cho những vấn đề này. ”

 

Người thắng lợi trong cuộc đua Hackathon năm 2016 đã phát triển thành một nguồn tài nguyên vô giá cho các nhóm như trọng tâm quốc gia về trẻ em mất tích và bị bóc lột. công cụ "công cụ tìm người con" khớp với các bức ảnh trực tuyến, như các phương tiện trên danh sách dịch vụ hộ vệ, đến cơ sở dữ liệu của con trẻ mất tích của NCMEC. Nó giúp giảm thời kì phản ứng của cơ quan thực thi pháp luật để họ có thể triển khai các sĩ quan với hy vọng cứu những đứa trẻ này.

 

Phát biểu trong tiếng nói công nghệ của mã máy tính, quản lý kỹ thuật Facebook Cristian Canton Ferrer tả dụng cụ này nói rằng: “Mọi người bị ảnh hưởng = 1; độ lớn của thay đổi = rất lớn; tác động lâu dài của thay đổi = mãi mãi. ”

 

Trong khi Facebook gần đây đã bị chỉ trích vì sự cai trị của nó trong mạng từng lớp và cách tiếp cận quyền riêng tư dữ liệu, thì quy mô của nó đã tạo cho nó nguồn lực cho các dự án mũi nhọn như thế này. Và vày nó đã quen với việc hack các phương tiện được chia tỷ lệ, việc hiệp tác với các tổ chức phi chính phủ và các nền tảng web khác có thể cho phép trái cây của 10 năm cần lao xung quanh an toàn con nít được truyền cho những người chẳng thể tự xây dựng chúng.

 

“Nó không có lợi cho công ty nếu nhận thức chung là Internet không phải là một nơi an toàn,” người đứng đầu toàn cầu của Facebook về an toàn Antigone Davis nói. “tất cả chúng ta đều có sở thích cá nhân cũng như sự quan hoài của ngành trong việc đảm bảo rằng không chỉ mọi người coi đó là một nơi an toàn mà là nơi an toàn.”

 

 

Trong số các dự án tại cuộc đua Hackathon năm nay là một cách để sử dụng tầm nhìn của máy để xác định người và các tính năng phân biệt khác trong ảnh từ các trang web được biết là được dùng để buôn bán dục tình. Trí thông minh nhân tạo có thể giúp một số gánh nặng của các nhà điều tra con người có thể bị đánh thuế tình cảm bằng cách liên tiếp xem hình ảnh của người bị khai khẩn.

 

Dự án thắng lợi, được gọi là "Xu hướng Spotting", sử dụng phân tách phân cụm để theo dõi các kẻ buôn người khi họ di chuyển trên internet. Đề cập đến việc chấm dứt gần đây của một thị trường mại dâm trực tuyến phổ biến, Rosen nói với những người tham dự hackathon rằng "Backpage xuống là một sự kiện lớn, nhưng những kẻ xấu vẫn còn ở ngoài đó."

 

 

Nhóm Spotting Trends đã không được trao một bản soát mới lạ khổng lồ hoặc một số danh hiệu vàng. Thay vào đó, họ sẽ có dịp tả tác phẩm của mình tại Hội nghị chống tù nhân trẻ thơ lớn Dallas, năm ngoái đã cuốn hơn 4.300 chuyên gia từ ngành an toàn.

“Loại người đến đây, họ thực sự có động lực và đích thực kiêu hãnh về công việc bởi các công ty internet chúng tôi hoạt động ở quy mô hàng trăm triệu hoặc hàng tỷ người dùng. Nhưng khi bạn làm công việc này, bạn sẽ nghe những câu chuyện cá nhân đó, ”Rosen giảng giải. "Chỉ cần biết những điều chúng tôi làm việc trên có một tác động thực thụ đến những người đích thực là những gì giữ toàn bộ những người này đến mỗi buổi sáng và thúc đẩy để làm thuê việc thực sự tốt."

 

Davis kết luận: “Tôi nghĩ rằng họ là công việc hậu trường tĩnh mà không được chiến thắng gần như đủ.”

Thứ Năm, 24 tháng 5, 2018

Phát triển tốc độ Facebook với “Máy ảo HipHop”, Trình xử lý PHP nhanh hơn 60%

ảnh minh họa - học lập trình php

“Hãy coi xét rằng nhiều kỹ sư của Facebook dành nhiều ngày để phát triển mã PHP trong một chu trình gỡ rối-tải lại-sửa lỗi bất tận. Sự dị biệt giữa tải lại 8 giây và 5 giây do chuyển từ trình thông dịch HipHop sang Máy ảo HipHop tạo ra sự khác biệt lớn về năng suất. ”Đó là cách Facebook giải thích tầm quan trọng của người thực thi PHP mới của mình, HipHop Virtual Machine, được công bố ngày hôm nay. Nhanh hơn 60% so với thông ngôn viên HipHop mà Facebook hiện đang sử dụng. HHVM sẽ cải thiện hiệu suất của mã Facebook và tăng tốc quá trình phát triển mà không buộc Facebook phải tắt PHP, mà các kỹ sư của nó được đào tạo.

Facebook ban đầu triển khai HipHop nguồn mở của nó cho PHP vào tháng 2 năm 2010 để chuyển đổi PHP thành C ++. Điều này cho phép nó lưu các chu kỳ CPU trên các máy chủ web của nó. Tuy nhiên, nó làm cho nó khó khăn để tối ưu hóa mã và đề nghị một người giảng giải HipHop mà đã "rất nhiều núm để duy trì".

do vậy, trong năm qua nó đã phát triển HHVM để thay thế thông ngôn viên đó. hiện thời, “so với thông ngôn viên HipHop, trình thông dịch bytecode HHVM nhanh hơn khoảng 1,6 lần cho một bộ tiêu chuẩn thực tại trên Facebook thực tiễn.” Tuy nhiên, chúng tôi đã nhận được thông báo rằng phiên dịch viên HipHop cũ của Facebook tương đối chậm để bắt đầu, so với thông ngôn viên PHP gốc.

Để biết thêm chi tiết kỹ thuật, hãy xem bài đăng blog chuyên sâu về Máy ảo HipHop. rốt cục, Facebook có thể chạy vơ PHP của nó phê chuẩn HHVM. Đầu tiên, nó đang làm việc ra khỏi dịch giả HipHop. Khi HHVM tích hợp sâu vào mã nguồn của HipHop, có sẵn trên GitHub, Facebook hy vọng “rằng cộng đồng PHP sẽ tìm hhvm hữu dụng khi nó trưởng thành và dự với chúng tôi để mở rộng tính bổ ích của nó chuẩn y các cuộc trao đổi kỹ thuật, báo cáo lỗi và đóng góp mã . ”

Cập nhật: Do lỗi của bộ phận Cơ quan OutCast, cơ quan PR của Facebook, bài viết này ban sơ đã nêu không chính xác rằng HHVM đã cung cấp "giảm 90% hoài bộ nhớ" thông qua trình thông ngôn HipHop hiện có của Facebook. Cơ quan đã gửi cho chúng tôi thông tin không chuẩn xác này dựa trên một bản nháp chưa được xuất bản trước đây của bài đăng trên Facebook về HHVM mà sau đó đã được các kỹ sư của Facebook tu chỉnh.

Thứ Ba, 22 tháng 5, 2018

Chọn một số thông tin chi tiết về tương lai di chuyển với giám đốc điều hành Gett Dave Waiser ở Tel Aviv

 

Dave Waiser đã đi đầu trong cuộc cách mệnh công nghệ di động ở Israel trong tám năm qua, kể từ khi ông ra mắt Gett vào năm 2010.

Một trong những công ty cuối cùng đứng trong thị trường san sớt toàn cầu, siêu cạnh tranh, Gett đã chịu đựng sự cạnh tranh từ Didi Chuxing, Grab, Ola, Lyft và Uber và theo kịp với những đối thủ đó vì nó tuyên bố một phần của một thị trường trên toàn thế giới trị giá hàng tỷ.

phê chuẩn các hoạt động trực tiếp và quan hệ đối tác với các công ty như lái xe và hậu cần kinh dinh Carey International, Gett đã đạt được một dấu chân của 1.000 tỉnh thành trải rộng trên toàn cầu. Nó hoạt động trực tiếp tại 100 tỉnh thành ở bốn nhà nước (bao gồm cả một vị trí cạnh tranh ở New York) và đã huy động được 640 triệu đô la trong kinh phí mạo hiểm - bao gồm khoản đầu tư 300 triệu đô la từ Tập đoàn Volkswagen.

Đối với Waiser, sự thành công của Gett chỉ là thành công mới nhất trong một chuỗi các thay mà thương lái thành đạt đã thực hành từ những ngày đầu của thiên niên kỷ mới. Một trong những công việc trước tiên của Waiser, vào năm 2000, là giới thiệu công ty của Nga, nhà cung cấp phần mềm viễn thông đầu tiên được giao tế công khai, Comverse.

Tại Tel Aviv, Waiser sẽ san sẻ nghĩ suy của mình với chúng tôi về ngày mai của tính di động, các đỉnh và thung lũng của hành trình của doanh gia, và điều tiếp theo cho Gett khi nó tiếp tục xúc tiến trong một thị trường cạnh tranh cao.

Đó là một viễn ảnh mà không ai muốn bỏ lỡ và một cái sẽ dành riêng cho khán giả của chúng tôi ở Tel Aviv. Vé đang được bán ngay hiện giờ.

Thứ Ba, 15 tháng 5, 2018

học tester bắt đầu như thế nào

 

Tôi viết bài này để san sẻ với các bạn sinh viên có dự kiến làm về kiểm thử phần mềm (tester) trong ngày mai, hy vọng sẽ cung cấp thêm thông tin giúp các bạn dễ dàng có được định hướng cho con đường của mình. Để đáp câu hỏi “Học gì để trở thành một Tester?” tôi nghĩ cần phải đi qua các ý sau:

1. Tester sẽ làm những công việc gì?

Nhìn chung công việc chính của tester là đảm bảo chất lượng của phần mềm, rà soát để phát hiện các lỗi đang tồn tại trước khi giao sản phẩn cho khách hàng, tùy thuộc vào dự án cũng như công ty mà vai trò của tester tham dự sâu đến mức nào. Tester thường chia ra làm 2 hướng chính là Manual test và Automation test.
Manual testing: đây là lựa chọn của phần nhiều các bạn bắt đầu làm test, với lựa chọn này bạn không cần nhiều tri thức về lập trình cũng như sẽ ít đụng vào code trong lúc làm, tuy nhiên cần phải nắm khá vừng về các định nghĩa, kỹ thuật test manual và có tư duy tìm lỗi tốt.
Automation testing: đây thường là chọn lọc của các bạn đang làm Developer mà muốn chuyển sang làm Tester, hoặc các bạn làm manual lâu năm muốn học hỏi thêm cái gì đó mới mẻ và nâng cao trình độ của mình. Automation test có thể nói là Dev trong Test, công việc chính là sẽ viết code để thực hành việc soát một cách tự động và phần lớn thời kì sẽ làm việc với code như một developer. Người làm automation sẽ không cấp thiết phải nắm sâu về các tri thức test manual nhưng thay vào đó phải biết rõ về các automation tools & frameworks cũng như có thể làm việc được trên nhiều tiếng nói lập trình khác nhau như Java, C#, AutoIT, Python, C++ v.v, tùy theo đề nghị dự án.

Automation không phải là nâng cao của manual vì nó là hai nhánh khác nhau, cả hai đều quan yếu cũng như có độ khó nhất thiết nếu phải học và tìm hiểu sâu. Người làm manual tốt không chắc có thể viết code được và người làm automation cũng chưa chắc sẽ có được tư duy, khả năng quan sát & tri thức kiểm thử manual nên bạn cứ chọn một hướng hiệp với khả năng và bắt đầu học, không nên tìm hiểu cùng lúc cả hai trong tuổi mới vào sẽ tốn rất nhiều thời gian.


2. Tester cần những tri thức gì?

– trước hết, tester cũng giống như bất cứ ngành nào khác trong lĩnh vực phần mềm là cần một nền tảng căn bản về máy tính. kiến thức cơ bản này bạn có thể học được trong chương trình cao đẳng, đại học. bây chừ giáo trình đào tạo cao đẳng, đại học về công nghệ thông tin của các trường cũng khá đầy đủ, bao quát nhiều tri thức như hệ điều hành, database, lập trình, mạng…. Những tri thức này tuy có vẻ không áp dụng được gì trong lúc học nhưng sẽ rất hữu ích cho việc học test và đi làm sau này, nếu bạn tụ hợp học trong tuổi sinh viên thì sau khi ra trường việc học thêm một khóa về kiểm thử là khá nhanh và đơn giản hơn nhiều.

– Nếu bạn học ngành khác nhưng muốn chuyển sang làm test (chưa học gì nhiều về công nghệ thông báo trong trường) thì sẽ khó khăn và tốn nhiều thời kì hơn vì bạn phải học lại căn bản, cũng như sẽ bị sót nhiều tri thức nếu chỉ đăng ký một khóa học test ngắn hạn. Nhưng nói vậy không có nghĩa là không thể, cũng có nhiều bạn đang làm test và khá thành công nhưng phát xuất từ các ngành khác như sư phạm, kinh tế. Nếu bạn cũng đang học trái ngành thì có 2 bước cần thực hiện đó là dành thời kì học cách sử dụng tốt máy tính, tin học văn phòng, đọc thêm các sách cơ bản về máy tính, lập trình (có thể mượn từ các bạn đang học CNTT). thời đoạn này sẽ tốn khoảng 3 đến 6 tháng (hoặc hơn), tuy hơi dài nhưng sẽ rất có giá trị. Tiếp theo bạn cần học thêm về các tri thức chuyên ngành testing, giai đoạn này sẽ ngắn hơn, thường là khoảng 2 đến 3 tháng, chi tiết học gì tôi sẽ nói ở phần sau.

– Tiếng Anh, cái này không can hệ test nhưng rất quan trọng, tiếng Anh tốt bạn có nhiều dịp để đậu vào các công ty hơn cũng như dễ dàng học thêm về test sau này vì tài liệu đa số là tiếng Anh.

Vậy tóm lược lại, có 3 tri thức tester cần trang bị là nền móng về máy tính + tri thức Test cơ bản + Tiếng Anh


3. Học gì để trở nên tester?

3.1. tri thức chung: (dù bạn chọn theo hướng nào thì cũng nên nắm các kiến thức này).

– kiến thức căn bản về máy tính, tin học văn phòng căn bản, cài đặt phần mềm, sử dụng internet.
– tri thức về lập trình: cơ bản SQL, HTML, CSS. Đây là 3 món tôi nghĩ rất cần thiết khi làm test, bạn không cần phải học sâu để viết code nhưng chí ít phải đọc hiểu được và có thể chỉnh sửa code đơn giản.
– tri thức tổng quan về test, bao gồm việc hiểu các định nghĩa căn bản, các thuật ngữ, quy trình phát triển phần mềm, quy trình test. Bạn có thể học theo cuốn ISTQB Foundation hoặc tham khảo các mục gợi ý sau:
What is Software Testing? – Tìm hiểu phần này để biết được testing là gì? các định nghĩa, khái niệm căn bản về kiểm thử phần mềm.
Why is Software Testing Important? – Tại sao testing lại quan trọng và cấp thiết? nếu không có tester thì sản phẩm sẽ ra sao?
Software Development life cycle: Vòng đời phát triển phần mềm, vị trí của testing trong các thời đoạn phát triển sản phẩm.
Software Test life cycle: Vòng đời của kiểm thử, thứ tự các công việc kiểm thử.
Defect Life Cycle: Vòng đởi của lỗi và trạng thái qua các giai đoạn.
Quality Assurance vs. Quality control, Verification vs Validation: Phân biêt sự giống nhau và khác nhau giữa một số khái niệm.
Software Testing Levels: Các mức độ trong kiểm thử, đi từ nhỏ nhất đến các mức độ cao nhất.
Software Testing types: Các loại testing thư Functional testing, Non-functional testing, Structural testing, Change related testing.

3.2. Phần tri thức riêng:

Manual Test:

Đây là danh sách các kiến thức bạn nên tìm hiểu sâu thêm nếu sẽ làm test theo hướng manual.
Create a Test Plan: Các thành phần cần có trong một test plan căn bản, cách viết test plan.
Design Test case: Cách tạo và viết một testcase thông dụng.
Test Design Techniques: Các kỹ thuật thiết kế testcase, giúp cho testcase hiệu quả và tối ưu hơn.
Test reporting, Daily status reports – cách viết report để thưa kết quả test của mình.
Defect management: Finding defects, Logging defects, Tracking and managing defects – Học cách report & quản lý một bug cũng như sử dụng tools tracking thông dụng như Jira, Mantis, Bugzilla, Application Lifecycle Management (ALM).
Mobile application testing (iOS, Android, Windows Phone): Cách cài đặt và test ứng dụng mobile, cách giả lập thiết bị điện thoại trên máy tính.
Windows, Website testing & Tools support: Cách test một áp dụng desktop, một trang web và giả lập các trình duyệt khác nhau trên máy tính.
Risk based testing process and implementation: Đánh giá rủi ro trong kiểm thử, đây là phần nâng cao nhưng cũng nên tìm hiểu qua.
Coding: SQL, HTML, CSS.

Một số trang để tự học các tri thức về manual testing căn bản, các trang này cung cấp đầy đủ các kiến thức bên trên cũng như mở mang thêm khá nhiều tri thức liên tưởng đến test khác:

 


Automation Test:
Học thêm về lập trình: Java, C# (.Net) là hai ngôn ngữ căn bản mà những người làm automation hay sử dụng, ngoài ra có các tiếng nói khác dùng để tương trợ như AutoIT, Python.
Học về các Automation Tool/Framework phổ biến như: Ranorex, Selenium, Appium, TestComplete.
Các Tools khác như: Jmeter, SoapUI.

Các địa chỉ học về Automation & Lập trình:

 


Nếu chưa biết nên bắt đầu từ đâu tôi gợi ý là bắt đầu vơi bộ tools Selenium (thường dùng Java) hoặc Ranorex (C# hoặc .Net nói chung). Với Selenium (miễn phí) bạn có thể làm được automation cho website còn Ranorex thì có thể làm được trên website, mobile application và desktop application nhưng có tốn phí khá cao.

4. Học test ở đâu?


Có ba cách cơ bản để học test là tự học, học ở trọng tâm và học nhóm. đa số các tester thuộc thế hệ 8x hay 9x đời đầu đều tự học mà làm vì tuổi đó testing chưa phát triển và cũng chưa có trung tâm chuyên đào tạo, các trường đại học cũng chưa đưa vào chương trình dạy. Nhưng tôi thấy đa số tester ở giai đoạn này thường xuất thân từ CNTT nên việc tự học và học thêm về test cũng khá nhanh. Để tự học test bạn có thể vào các nguồn tôi cung cấp ở phần bên trên, nó khá đầy đủ kiến thức căn bản.
Thứ hai là có thể đi học ở trọng điểm hay một nhóm nào đó, các trọng điểm thường có các khóa đào tạo ngắn hạn trong khoảng 3 tháng đỗ lại, một số trọng điểm thì có chương trình dài hơn nhưng thường không quá 6 tháng. Tôi tự học và chưa trải nghiệm qua trọng điểm nào nên cũng không rõ chất lượng ở những nơi đó, nhưng tôi cũng rất vui lòng nếu bạn gởi email cá nhân đến tôi để tham khảo về các trọng tâm bạn đang định học, tôi sẽ ưng chuẩn một số mối quan hệ và bạn bè để hỏi giúp ban chất lượng của những nơi đó.
ngoại giả còn một cách học khác là học nhóm, dạy kèm test, cách này tôi đang áp dụng ở một vài nhóm và thấy khá hiệu quả vì nó vừa linh động về thời gian và số lượng học viên thường giới hạn ít nên sẽ dễ thu nhận hơn, thời kì học khoảng 1 đến 2 tháng. Nếu bạn quan hoài đến những khóa học này cũng có thể email đến tôi, khi nào bắt đầu khóa mới về testing căn bản tôi sẽ cho bạn biết.

5. Tổng kết.

Trong thời đoạn mà chất lượng sẽ quyết định sự tồn vong của sản phẩm phần mềm thì tầm quan trọng của Tester ngày một được nâng cao và đóng vai trò quan yếu, các dự án cũng cần nhiều tester hơn nên trong tương lai nghề test sẽ phát triển mạnh mẽ, việc định hướng và trang bị tri thức sớm từ hiện nay là rất cần thiết. Sau khi nắm được các kiến thức cơ bản, bạn hãy tìm một công ty hay một dự án nào đó để bắt đầu làm, giai đoạn này rất quan trọng vì chỉ có bắt tay vào làm bạn mới hình dong rõ ràng hơn các khái niệm đã đọc cũng như học thêm cái mới trong lúc làm thực tại. Hy vọng bài này sẽ cung cấp những thông báo giúp bạn có thể bắt đầu vào việc học thuận tiện hơn.

Như mọi khi, đừng ngại email đến tôi hoặc comment tại bài này nếu bạn có thắc mắc hay muốn bàn luận thêm điều gì đó trong lúc học, tôi rất vui để san sẻ.

Thứ Sáu, 11 tháng 5, 2018

PHP 5 File Upload

Với PHP, thật dễ dàng để tải các tệp lên máy chủ.

Tuy nhiên, dễ dàng gặp nguy hiểm, nên chi hãy luôn cẩn thận khi cho phép tải lên tệp!

Định cấu hình tệp "php.ini"

trước nhất, hãy đảm bảo rằng trước khi học PHP được định cấu hình để cho phép tải lên tệp.

Trong tệp "php.ini" của bạn, kiếm chỉ thị file_uploads và đặt thành On:
file_uploads = On

Create The HTML Form

Next, create an HTML form that allow users to choose the image file they want to upload:

<!DOCTYPE html>

<html>

<body>

 

<form action="upload.php" method="post" enctype="multipart/form-data">

    Select image to upload:

    <input type="file" name="fileToUpload" id="fileToUpload">

    <input type="submit" value="Upload Image" name="submit">

</form>

 

</body>

</html>

Some rules to follow for the HTML form above:

  • Make sure that the form uses method="post"
  • The form also needs the following attribute: enctype="multipart/form-data". It specifies which content-type to use when submitting the for

Without the requirements above, the file upload will not work.

Other things to notice:

  • The type="file" attribute of the tag shows the input field as a file-select control, with a "Browse" button next to the input control

The form above sends data to a file called "upload.php", which we will create next.

Tạo tập tin tải lên PHP Script

Tệp "upload.php" chứa mã để tải lên tệp:

 

$target_dir = "uploads/";

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$uploadOk = 1;

$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake imageif(isset($_POST["submit"]))

    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);

    if($check !== false)

        echo "File is an image - " . $check["mime"] . ".";

        $uploadOk = 1;

     else 

        echo "File is not an image.";

        $uploadOk = 0;

   

?>

Tập lệnh PHP đã giải thích:

$ target_dir = "uploads /" - chỉ định thư mục nơi tệp sẽ được đặt

$ target_file chỉ định đường dẫn của tệp được tải lên

$ uploadOk = 1 chưa được dùng (sẽ được dùng sau)

$ imageFileType giữ phần mở mang của tệp (trong trường hợp thấp hơn)

Tiếp theo, kiểm tra xem tệp hình ảnh có phải là hình ảnh thực hay hình ảnh giả

thẩm tra xem Tệp đã tồn tại chưa
hiện chúng ta có thể thêm một số hạn chế.

trước nhất, chúng tôi sẽ kiểm tra xem tệp đã tồn tại trong thư mục "tải lên" chưa. Nếu có, thông báo lỗi được hiển thị và $ uploadOk được đặt thành 0:

// Check if file already exists

if (file_exists($target_file))

    echo "Sorry, file already exists.";

    $uploadOk = 0;



Limit File Size

The file input field in our HTML form above is named "fileToUpload".

Now, we want to check the size of the file. If the file is larger than 500KB, an error message is displayed, and $uploadOk is set to 0:

// Check file size

if ($_FILES["fileToUpload"]["size"] > 500000)

    echo "Sorry, your file is too large.";

    $uploadOk = 0;

Loại tệp giới hạn
Mã bên dưới chỉ cho phép người dùng tải lên các tệp JPG, JPEG, PNG và GIF. tất các loại tệp khác cung cấp thông tin lỗi trước khi đặt $ uploadOk thành 0:

// Allow certain file formats

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"

&& $imageFileType != "gif" )

    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";

    $uploadOk = 0;


Hoàn thành tập tin tải lên PHP Script
Tệp "upload.php" hoàn chỉnh bây chừ trông giống như sau:


$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake imageif(isset($_POST["submit"]))
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false)
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
     else 
        echo "File is not an image.";
        $uploadOk = 0;
   

// Check if file already existsif (file_exists($target_file))
    echo "Sorry, file already exists.";
    $uploadOk = 0;

// Check file sizeif ($_FILES["fileToUpload"]["size"] > 500000)
    echo "Sorry, your file is too large.";
    $uploadOk = 0;

// Allow certain file formatsif($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" )
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;

// Check if $uploadOk is set to 0 by an errorif ($uploadOk == 0)
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file else 
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file))
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
     else 
        echo "Sorry, there was an error uploading your file.";
   

?>