Home Blog Page 201

Người khiếm thị làm công nghệ – Điều kỳ diệu trong cuộc sống

Đây là note của anh KHAI Q. TRAN (là một kỹ sư công nghệ đang làm việc lại LinkedIn), TopDev xin chia sẽ lại cộng đồng để lan tỏa năng lượng tích cực.

Thỉnh thoảng những lúc buồn chán, hết động lực tôi thường lôi một vài cuốn sách về các câu chuyện thành công ra đọc để lấy lại cảm hứng. Dù chưa bao giờ thật sự tin vào các câu chuyện đó, nhưng cái chính là nó giúp tôi lấy lại năng lượng và động lực để tiếp tục cố gắng. Thế nhưng có những lúc tôi được tận mắt chứng kiến những câu chuyện mà nếu chỉ nghe kể sẽ khó tin được. Tuần vừa rồi tôi có được một may mắn như thế.

Một trong những công việc của các kỹ sư phần mềm là đi phỏng vấn các ứng viên cho công ty. Nội dung phỏng vấn chủ yếu là các vấn đề kỹ thuật như khả năng sử dụng thuật toán để lập trình, hay thiết kế một hệ thống trên bảng (gọi là whiteboard coding/system design), hoặc có thể chỉ đơn thuần là dẫn ứng viên đi ăn trưa. Tuần vừa qua tôi đã có may mắn được đưa một ứng viên thật đặc biệt đi ăn trưa. Đây là một ứng viên cực kỳ xuất sắc, xuất sắc nhất trong những người từ trước đến này tôi có dịp phỏng vấn. Trong phần thiết kế hệ thống, đồng nghiệp của tôi, một trong những kỹ sư giỏi nhất của LinkedIn, đã cho ứng viên này điểm tuyệt đối 4.0/4.0 cùng với lời nhận xét là chưa bao giờ gặp một ứng viên hiểu biết về hệ thống và cơ sở dữ liệu sâu sắc như thế. Cũng cần biết là trong thang điểm chấm cho ứng viên của LinkedIn, 4.0 là mức được ghi là “Nếu LinkedIn không tuyển người này thì tôi sẽ bỏ công ty”. Bản thân tôi qua cuộc nói chuyện thú vị với ứng viên trong giờ ăn trưa cũng cảm thấy hiểu biết của mình về cơ sở dữ liệu và hệ thống phân tán là quá nhỏ bé so với con người này (mặc dù tôi cũng đã từng làm NCS và có gần 6 năm kinh nghiệm làm về lĩnh vực này). Nhưng đấy không phải là điều đặc biệt nhất, vì người giỏi thì ở thung lũng Silicon nhiều vô kể. Điều đặc biệt là ứng viên này là một người khiếm thị. Nếu bạn quen thuộc với việc lập trình, hãy thử nhắm mắt rồi ngồi viết code, gỡ lỗi bạn sẽ thấy công việc này khó khăn như thế nào.

Một đồng nghiệp khác phỏng vấn phần lập trình đã bình luận là bản thân cảm thấy xấu hổ khi nhìn những dòng code mà ứng viên này viết ra. Dường như là ứng viên này biết rõ tất cả những đoạn code mình viết ra như thế nào, làm gì, thừa thiếu chỗ nào. Điều mà những người sáng cả hai mắt cũng khó làm tốt được.

Tôi nghĩ tôi và các bạn đều khó hình dung điều này, nhưng thực ra nhiều công cụ phần mềm có những hỗ trợ nhất định cho người khuyết tật. Ví dụ như khi lập trình thì ứng viên sử dụng Emacs vì có hỗ trợ screen reader. Ngoài ra ứng viên có thể sử dùng thành thạo Google doc, git vì những hỗ trợ tương tự.

Nhưng dù có hỗ trợ thế nào thì những việc người bình thường làm được khó một thì có lẽ người khiếm thị phải khó mười. Để trở vươn lên thành đỉnh cao trong bất cứ một lĩnh vực nào đã khó, để trở thành một chuyên gia công nghệ hàng đầu với một người khiếm thị thì quả thật là một sự diệu kỳ mà chắc chắn cần có rất nhiều đam mê và nghị lực.

Dù như thế nào thì đây cũng là một câu chuyện xúc động và đầy cảm hứng.

Bài viết gốc tại đây!

Appota: hành trình khởi nghiệp từ con số 0 trở thành 1 trong 3 nhà phát hành game lớn nhất Việt Nam

“Làm startup cũng giống như đi tàu lượn siêu tốc. Lúc nó chậm thì kinh hãi. Lúc nó nhanh mình vừa thích, lại vừa run”. Hành trình khởi nghiệp là hành trình của những thử thách mà thú vị cô cùng, nhưng chắc chắn đó không bao giờ là con đường trải đầy hoa hồng.

Năm 2012, từ 5 thành viên đầu tiên, Appota cùng nhau phát triển sản phẩm appstorevn (kho tải nội địa bên thứ 3) nhận được sự đón nhận nồng nhiệt của người dùng Việt. Tuy nhiên, tại thời điểm đó việc tạo ra lợi nhuận từ mô hình đó không còn mang lại hiệu quả, đảm bảo cho sự duy trì sản phẩm.

Cuối năm 2012 Appota quyết định tìm hướng đi mới cho doanh nghiệp của mình là làm phân phối game, với vô vàn những khó khăn

Đó là thời điểm Appota quyết định tìm hướng đi mới cho doanh nghiệp của mình là làm phân phối game. Phải bắt đầu xây dựng mọi thứ lại từ đầu, thêm vào đó kinh nghiệm về mảng phân phối game của các thành viên lúc đó gần như là con số 0; khó khăn nối tiếp những khó khăn.

Thế nhưng những thành viên của Appota từng bước mày mò, nghiên cứu; vừa học vừa làm xây dựng team. Đến nay Appota tự hào trở thành 1 trong 3 game publisher lớn nhất Việt Nam, và hiện đã phủ sóng lên cả thị trường Indonesia, Malaysia và Thái Lan. Với những tựu game nổi tiếng:  Ỷ Thiên 3D, Kiếm Vũ, Tiểu Ngạo Giang Hồ, Vainglory…

Xem tuyển dụng Game Developer tại các công ty hàng đầu trên TopDev

Appota 1 trong 3 nhà phát hành game lớn nhất Việt Nam hiện nay với các tựu game: Ỷ Thiên 3D, Kiếm Vũ, Tiểu Ngạo Giang Hồ, Vainglory…

Appota có 4 công ty con là Gamota (Phát hành Game), Adsota (Dịch vụ quảng cáo), AppotaPay (Cung cấp giải pháp thanh toán) và Kdata (Dịch vụ trên nền điện toán đám mây). Công ty hiện có hơn 300 nhân viên ở 3 văn phòng tại Hà Nội, HCM và Singapore.

Appota hiện có 300 nhân viên ở 3 văn phòng tại Hà Nội, HCMC và Singapore.

Hiện tại, Mobile platform của Appota có hơn 50 triệu người dùng, đồng hành cùng 15,000 developer, advertiser và doanh nghiệp toàn cầu. Hệ sinh thái sản phẩm mobile của Appota có hơn 7 triệu user hàng tháng, và các hoạt động mới bao gồm Mobile advertising và Mobile Payment cũng từng bước giúp họ mở rộng hệ sinh thái và thị trường mình ra khắp các nhánh. Vào năm 2016, Appota là một trong 4 công ty duy nhất tại châu Á được chọn làm đối tác triển khai mô hình Mobile Ad Exchange mới của Google.

Mobile platform của Appota đồng hành cùng 15,000 developer, advertiser và doanh nghiệp toàn cầu

Với những nỗ lực cải tiến, sáng tạo và phát triển không ngừng, Appota đặt mục tiêu nắm bắt được thị phần của thị trường game mobile tại Việt Nam và đưa nền tảng thanh toán trở thành giải pháp hàng đầu cho các doanh nghiệp và người dùng vào năm 2020.

Đồng hành cùng các chuyên gia và cùng đội ngũ Appota tại sự kiện Vietnam Mobile Day 2018 vào tháng 6 này ngay tại:  https://mobileday.vn/vi/trang-chu/

Topdev

Tìm việc IT lương cao, đãi ngộ tốt trên TopDev ngay!

Tiếp thị trên dị động – thử vàng trong lửa, tìm kiếm cơ hội từ trong thử thách

Tiếp thị trên dị động

Theo Báo cáo Tiếp thị và Truyền thông “This Year Next Year” của GroupM, chi tiêu cho ngành quảng cáo toàn cầu được dự báo sẽ đạt mức 588 tỷ USD vào năm 2018, tăng 23 tỷ USD với tỷ lệ 4.3%. Tính tới đầu năm 2017 Việt Nam hiện đang có 38 triệu người dùng mạng xã hội, trong đó 94% sử dụng mobile để vào mạng xã hội hàng ngày.

Việt Nam đang đứng thứ 16 trong 20 quốc gia có số người sử dụng Internet cao nhất thế giới với 49 triệu người và 131,9 triệu thuê bao di động. Cũng theo một thống kê khác của Google, lượng traffic đến từ các thiết bị Mobile hiện đã vượt qua traffic từ Desktop.

Xu hướng của Tiếp thị trên dị động

Thói quen sử dụng Internet của người Việt đã thay đổi, giờ đây việc quảng cáo trên thiết bị mobile sẽ là một phần cốt lõi trong chiến lược của doanh nghiệp để kết nối và tiếp cận với số lượng đông đảo khách hàng tiềm năng.

Quảng cáo trên di động dễ dàng kích thích người tiêu dùng thực hiện hành động mục tiêu mà doanh nghiệp mong muốn: click vào xem, mua hàng, đăng ký tài khoản, download ứng dụng… Ngay khi nhìn thấy quảng cáo, khách hàng cũng thường có xu hướng ghi nhớ và tìm kiếm những từ khóa về thương hiệu sau đó ngay trên thiết bị di động. Điều này thuận tiện và hiệu quả hơn so với quảng cáo tờ rơi, báo chí, phát thanh truyền hình…

Để tiếp thị số (nói chung) thành công đó là một quá trình liên tục điều chỉnh chiến dịch dựa trên những diễn giải về dữ liệu thực tế nhằm cung cấp nội dung tiếp thị hiệu quả hơn, từ đó gia tăng tỷ lệ chuyển đổi. Nguyên tắc này cũng hoàn toàn chính xác  với các chiến dịch quảng cáo trên di động. Bằng cách sử dụng dữ liệu thực tế và nguồn dữ liệu cung cấp, chúng ta có thể tập trung nỗ lực (và ngân sách tiếp thị) vào nơi có khả năng mang lại kết quả tối đa.

Một số các biến thể cần xem xét trong các chiến dịch tiếp thị di động bao gồm:

  • Phân khúc người dùng – hiểu rõ nhóm người dùng nào đang tương tác với chiến dịch của bạn và hành động như bạn muốn là một việc làm rất quan trọng. Có những xu hướng hay mô típ nào dựa trên quốc gia, loại thiết bị, nền tảng hay các yếu tố khác liên quan đến người dùng không?
  • Thời điểm – quan sát thời điểm thực hiện chiến dịch tại các khu vực khác nhau… Liệu có thời điểm nào mang lại lợi nhuận cao hơn so với những thời điểm khác không? Hãy tìm hiểu xem thời điểm nào trong ngày mang lại tỷ lệ chuyển đổi cao hơn trong nhóm khách hàng mục tiêu của bạn.
  • Kênh quảng cáo – dựa trên phân tích, bạn có thể xác định các kênh quảng cáo mang lại kết quả tốt nhất và  tái đầu tư ngân sách cho phù hợp. Chìa khóa ở đây là phải đảm bảo được việc so sánh độc lập và khả thi giữa tất cả các kênh quảng cáo di động của bạn.

Sự phát triển của tiếp thị di động

Có thể thấy tiếp thị trên di động đang phát triển rất nhanh và là xu hướng tất yếu của Marketing hiện đại. Tuy nhiên, việc đo lường hiệu quả quảng cáo trên di động là một rào cản mà các marketer chưa quan tâm đúng mức. Cụ thể theo nghiên cứu của Bango thì có tới 83% các thương hiệu không sử dụng các công cụ đo lường hiệu quả quảng cáo trên di động. Việc đó, vô hình chung khiến các doanh nghiệp đang bỏ phí cơ hội tạo ra những chiến dịch quảng cáo chính xác, toàn diện đi kèm với việc báo cáo hiệu quả sẽ giúp duy trì chiến dịch tập trung, tăng cường ROI và cuối cùng là thúc đẩy các thương hiệu đạt được nhiều thành công hơn với các chiến dịch tiếp thị di động.

Adjust là công ty chuyên phân tích, đo lường hiệu quả quảng cáo trên nền tảng di động có trụ sở tại thành phố Berlin, Đức. Adjust chuyên cung cấp những giải pháp chất lượng cao về: nghiên cứu, đo lường và ngăn chặn lừa đảo dành cho các nhà marketing trong lĩnh vực ứng dụng di động trên toàn thế giới, cho phép họ có những quyết định nhanh chóng và thông minh hơn. Với mã nguồn mở SDK của Adjust, những người làm marketing có thể nghiên cứu, đo lường hành vi, sự tiếp nhận của người tiêu dùng, tỉ lệ thu/chi và nhiều hơn thế nữa.

Được thành lập vào năm 2012 tại Berlin, đến nay Adjust đã có văn phòng toàn cầu ở Bắc Kinh, Istanbul, Jakarta, Moscow, New York, Paris, San Francisco, São Paulo, Seoul, Thượng Hải, Singapore, Sydney và Tokyo,.. là đối tác tin cậy của các nhà phát triển ứng dụng hàng đầu như Momondo Group, HotelTonight và Zynga, cũng như các công ty phần mềm lớn như Salesforce, Microsoft và Yelp và các thương hiệu toàn cầu như Universal Music và Warner Bros. Đến nay, đã có hơn 20.000 ứng dụng triển khai các giải pháp của Adjust cải thiện chiến dịch Marketing. Đăng ký ngay những slot giới hạn tại Vietnam Mobile Day để có cơ hội được gặp gỡ đội ngũ chuyên gia đến từ Adjust ngay hôm nay.

TopDev

Tại sao nên chọn Python để lập trình Web App?

Người đời có câu “The only Constant is Change – Chỉ có thay đổi mới đem lại sự ổn định”, và các trải nghiệm digital thì thay đổi không ngừng theo thời gian. Việc đưa ra các thay đổi tốt hơn về mặt lập trình và trải nghiệm người dùng ấn tượng đòi hỏi một ngôn ngữ lập trình high level cộng thêm có chiều sâu.

PYTHON, được vinh danh là ngôn ngữ lập trình được dev yêu thích nhất vì không chỉ đơn giản, syntax rõ ràng mà có thư viện hỗ trợ rất nhiều. Vì thế, nhờ những tính năng hiệu quả, dễ đọc và có thể develop một Admin panel, đây là ngôn ngữ lập trình được sử dụng rộng rãi nhất để build web app (ở thế giới, còn ở Việt Nam đang chuộng Php). Hãy cũng nhau tìm hiểu sâu hơn về “đứa con cưng” của lập trình này.

Việc làm lập trình python lương cao trên TopDev

Đôi lời mở đầu

Python là một ngôn ngữ lập trình high level được mô phỏng theo rất nhiều ngôn ngữ khác như  Java, C++, FORTRAN, Pascal v.v Ngôn ngữ này được sử dụng chung với nhiều ngôn ngữ khác tập trung vào tính dễ hiểu – dễ đọc.

Về quá trình phát triển 

Python ban đầu được phát triển bởi Guido van Rosssum vào năm 1991 như một ngôn ngữ prototype có thể được biên dịch ra thành C++. Một khi Guido script, đây là một trong những ngôn ngữ đầu tiên được dùng để lập trình web.

Sau khi cũng hiểu sơ nó là cái gì, hãy xem các phiên bản của nó đã trở thành ngôn ngữ lập trình. Tính đến nay nó đã được 27 tuổi và đã thay hình đổi dạng và đi kèm với rất nhiều add-on feature. Bản Python 1.0 đầu tiên có một hệ module Modula-3 bao gồm nhiều feature mới cũng với nhiều tool lập trình hữu ích như Lambda calculus, Map, Filter and Reduce (Fold), sau đó đến một series các phiên bản đến 1.6.1 là một license CNRI.

Bản 2.0 ra mắt năm 2000, sau đó thì Python cho ra mắt ver. 3.0 (gọi là Python 3000) vào năm 2008. Tới thời điểm hiện tại, Python version 3.5.0 được sử dụng rộng rãi nhất trong các công ty.

  Bỏ túi cheatsheet dành cho Python newbie

Điều gì đã giúp Python được các dev và các công ty săn đón như vậy

Có đến gần 75% các developer được ghi nhận dùng Python như ngôn ngữ lập trình chính để phát triển phần mềm web app. Và gần 14% programmer dùng Python trên hầu hết các hệ thống vận hành như Linux, Unix, Mac OS và Windows.

Một số feature nổi bật:

Tương thích cao

Đây là một ngôn ngữ dễ học, một ngôn ngữ mã giả (pseudo-code) là một trong những lợi thế tuyệt vời nhất. Vì ngôn ngư này tương tác tốt hơn bất kì ngôn ngữ nào khác, nó hỗ trợ tập trung vào việc giải pháp giải quyết vấn đề hơn là vào syntax.

Linh hoạt

Python bao gồm việc checking linh hoạt đảm bảo an toàn cho program tại runtime. Nó giúp giải quyết các vấn đề phức tạp bằng cách tách ra thành các vấn đề nhỏ và giải quyết từng cái một.

Gọn nhẹ

Python là nguồn mở, có thể được port qua bất kì platform nào. Mọi chương trình bạn code có thể đem qua rất nhiều platform mà không làm thay đổi gì. Đây là các platform bạn có thể pprt: Linux, Windows, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE và PocketPC.

Biên dịch

Python chuyển source thành bytecodes và chuyển đổi thành ngôn ngữ của bạn mà máy tính bạn chạy. Nó khá giống với các ngôn ngữ lập trình kịch bản khác như Php chẳng hạn…

Ngôn ngữ high-level 

Khi bắt đầu viết bằng Python, nó sẽ không làm phiền bạn bằng những vấn đề của ngôn ngữ low-level cần làm, ví dụ như: memory mà chương trình ngốn bao nhiêu?

Hướng đối tượng

Dù Python là một ngôn ngữ lập trình quyền lực, nó cũng hỗ trợ lập trình theo hướng đối tượng.

Nhiều library mở rộng

Python có nhiều thư viện đa dạng bao gồm việc tạo documentation, expression, unit testing, threading, database, GUI và nhiều cái khác. Những món này có sẵn khi bạn cài Python.

  Top 5 câu hỏi phỏng vấn Python không thể bỏ qua

Thời kì đỉnh cao của Python

Python bắt đầu được “sủng ái” khi Google chọn nó để build một project của mình. Dần dà Python trở thành một xu hướng mà hầu như các ông lớn như Youtube, Instagram và Pinterest đều sử dụng một phần hoặc toàn phần cho các platform hiện có và sắp tới của Product. Các Python dev hầu hết đều sử dụng nó trong cả 3 dạng Web (38%), Mục đích chung (22%) và phân tích data (21%).

Python Popularity graph.png

Kết luận 

Hiện tại, Google đã đưa nó thành một trong nhưng ngôn ngữ chính để build các Official Project, vì thế bạn nên bắt đầu với Python là vừa. Hãy dạo một vòng tìm tòi về Python tại các công ty sử dụng nó hoặc với người đã có kinh nghiệm với Python, chắc chắn sẽ không uổng phí, ngoài Web app thì python còn dùng rất nhiều trong môn Machine learning, AI, Bigdata… với mức lương khá cao, bạn có thể tham khảo mức lương của dev python tại TopDev – Việc làm IT . Bạn có thể bắt đầu với series Python cơ bản thường được sử dụng trong công việc của tác giả Võ Duy Tuấn.

TopDev via Hashnode

Tham khảo việc làm IT mới nhất trên TopDev

Cách học code thông minh nhất

cach-hoc-code-thong-minh-nhat

Có một thứ cứ làm tôi nhọc nhằn suy nghĩ khi tôi mới học code, mà giờ tôi gọi nó là “con đường sương khói”. Nó là một con đường dài và đen tối, nếu rẽ trái thì mọi thứ quá dễ dàng, còn rẽ phải thì mọi thứ quá khó. Vì thế mà bạn bị mắc kẹt giữa lạc loài không biết mình đang làm cái quái gì.

Hầu hết mọi người mới vào nghề đều phải chịu một sự bất lực: không thể tìm một task vừa sức, và không biết tìm đâu nguồn kiến thức để thu hẹp khoảng cách giữa “ma mới” và một coder chân chính. Những ai đã qua được con đường này rồi có lẽ đã phải trải qua vô vàn task lặt vặt và “bán thân” cho những project quá sức với chính mình.

Việc này đã gây ra nhiều khó khăn cho sinh viên và phải từ bỏ quá sớm. Họ kiệt sức. Không phải vì coding quá khó (không hề), mà là vì việc học code quá khó. Đáng lẽ ra không nên thế.

Vậy có cách nào tốt hơn không?

Tôi đã ròng rã đi tìm đáp án cho câu hỏi này suốt một năm vừa qua. Đâu là cách tốt nhất để học code? Nó làm ta tưởng chừng đây là câu hỏi đơn giản, nhưng rồi sẽ giải thích được tại sao học code ngay từ đầu đã khó. Nói cách khác là tại sao khi giải thích cách học cho người khác lại dễ bị hiểu sai lệch.

Nếu bạn hỏi 5 dev cách học lập trình tốt nhất là gì, bạn sẽ nhận được 5 câu trả lời khác nhau. Người sẽ tự tin rằng bạn phải bắt đầu từ build app. Người sẽ cho bạn một list dài ngoằn các bài blog, Youtube video và khóa học online. Có người sẽ gợi ý bạn tham gia bootcamp nào đấy. Một anh dev hơi cổ lỗ sĩ sẽ đưa bạn một link .edu của một khóa học CS, và người còn lại sẽ đưa cho bạn 2 3 tựa sách nào đấy.

Điều bực mình là, cách nào cũng đúng cả (căn bản là vậy)! Vậy tại sao sau tất cả bạn vẫn thấy hụt hẫn và thiếu động lực y như trước khi hỏi?

Đó là bởi học code dễ nhất khi học nó theo một thứ tự nhất định. Khi bạn thử làm gì đó ngẫu nhiên, bạn sẽ rất khó chịu hoặc chán ngay, cứ như học bảng chữ cái khi bạn đã biết đọc biết viết vậy.

Cách tốt nhất để đi là chia nó thành 3 phần riêng thuộc 3 nhóm khác nhau. Xem nó như những ranh giới trên bản đồ. Chúng hỗ trợ navigate nhưng lại không có thật.

  1. Học syntax
  2. Giải quyết vấn đề
  3. Làm thứ này thứ kia

Mỗi phần trước là điều kiện bắt buộc để có cái sau, nhưng mỗi cái thì không “khắc” với nhau. Nói cách khác, đây không nhất thiết là một quá trình quá gắt gao chính xác như vậy. Dù cho phần này ảnh hưởng tới cái khác, bạn chỉ nên tập trung mỗi lần một cái. Có thế bạn mới tiến nhanh hơn dễ hơn và đỡ bị nhức não.

Học syntax

Phần này sẽ cho bạn một dạng tự tin “ảo” mà khi qua giai đoạn xử lý vấn đề sẽ biến mất. Nó gồm một chuỗi vô hạn các sách, video và khóa học. Đoạn này cũng tốn rất nhiều tiền vì hầu hết mọi người học một chút syntax và từ bỏ (đó không phải lỗi của họ, tôi sẽ giải thích sau).

Phần này thật ra không thiếu gì. Tài liệu học căn bản thì vô hạn và không mấy người vượt qua được ải này. Một khi bạn đã đọc được 2 cuốn sách chính chuyên về ngôn ngữ của bạn, hãy hấp thụ nó và chuyển sang bước tiếp.

Giải quyết vấn đề  

Đây là phần cần rất nhiều tâm huyết. Nó hầu như bị bỏ quên vì không mấy người hoàn thành việc học syntax. Họ không có định hướng mà chỉ nghe khuyên răn của người ngoài, kiểu như ráng tập chạy xe mà chưa dùng tay lái an toàn. Nó vẫn khả thi nhưng không phải là cách học tối ưu.

Khi bạn lấy syntax từ đoạn đầu và tự động apply nó, tức là bạn đang ở đoạn giải quyết vấn đề. Đây là chìa khóa đến việc think like a developer, là một trong những bước khó nhất và quan trọng nhất của quá trình. Sự thật là, tôi đã dành 15 tháng qua để làm nó.

Bắt tay vào làm cái gì đó

Hầu như mọi developer mà tôi biết đều đi thẳng từ việc học syntax đến việc tạo lập (hoặc… đang cố làm vậy). Nó khá mệt mỏi vì bạn không chỉ học cách nghĩ như một programmer, bạn còn học về các framework, các quy tắc đi với framework, cách dùng IDE và hàng tá thứ tôi còn chưa được học.

Một khi bạn đã hiểu được syntax và có thể tự giải quyết những vấn đề trong coding, đã đến lúc nên dấn thân vào các project open source hoặc brainstorm ý tưởng mới. Việc này giúp bạn hứng khởi mỗi khi thức dậy và đam mê sẽ đưa bạn vượt qua những phần khó khăn.

Lí do nhiều người từ bỏ là vì quá trình học code gian nan, không phải vì code. Nó rất hỗn loạn và quá tải thông tin. Bạn cần phải học rất nhiều thứ, vì thế, hãy ráng giữ cho quá trình học đơn giản.

  1. Học syntax
  2. Giải quyết vấn đề
  3. Làm thứ này thứ kia

TopDev via Matt MacPherson

Location Based Marketing cá nhân hóa trải nghiệm người dùng theo thời gian thực

91,5% dân số Việt Nam sử dụng điện thoại di động, trong đó, 93% dùng chức năng nhắn tin(*), điều này giúp SMS trở thành công cụ tốt để tiếp cận khách hàng. Tuy nhiên, một thực trạng là khách hàng gần như bị nhấn chìm trong các tin nhắn rác do việc quảng cáo vô tội vạ, vậy làm thế nào để thực hiện một chương trình SMS Marketing có chọn lọc, tiếp cận đúng khách hàng mục tiêu, giảm thiểu tình trạng spam tin nhắn?

Câu trả lời là Location-based SMS Marketing, hình thức tiếp thị bằng tin nhắn dựa trên vị trí của thuê bao. Vẫn tận dụng khả năng tiếp cận và truyền tải thông điệp đến người dùng mọi lúc mọi nơi của tin nhắn (tin nhắn văn bản, MMS, Flash SMS), nhưng với sự hỗ trợ của nhà mạng bạn có thể gửi tin nhắn đến khách hàng mục tiêu tại các khu vực nhất định, dựa trên:

➤Thông tin chủ thuê bao khai báo khi đăng ký sim di động
➤Tần suất xuất hiện của thuê bao di động
➤BTS – trạm phát sóng nơi thuê bao đi ngang

Đồng thời, hãy luôn nhớ rằng, nhà mạng vẫn đang cho phép gửi tin trên database khách hàng đồng ý nhận tin nhắn, hỗ trợ lọc data theo các tiêu chí:

➤Thiết bị 3G
➤Trung bình cước thuê bao hàng tháng
➤Độ tuổi
➤Giới tính

Hình thức này đặc biệt phù hợp và hữu ích đối với các loại hình kinh doanh có cửa hàng hoặc chuỗi cửa hàng. Một tin nhắn thông báo khuyến mãi giảm 50% các mặt hàng thời trang trong vòng 3 giờ chắc hẳn sẽ thu hút ngay sự chú ý của một cô nàng tín đồ thời trang đang uống café tại cửa hàng không xa.

Bên cạnh việc tận dụng ưu thế của dịch vụ và hỗ trợ của nhà mạng, các marketers cũng nên tham khảo các tips dưới đây đây để có một chương trình tiếp thị dựa trên Location-Based SMS Marketing hiệu quả:

➤Gửi tin gần khu vực cửa hàng sẽ góp phần lớn trong việc thu hút khách hàng.
➤Gửi tin nhắn tại nơi tập trung khách hàng mục tiêu: bạn không nhất thiết phải gửi tin tại khu vực xung quanh cửa hàng, gửi tin tại nơi thường tập trung khách hàng mục tiêu có thể đem lại hiệu quả tốt về khả năng tiếp cận và tăng độ nhận diện thương hiệu.
➤Thông điệp là phải mang lại lợi ích cho khách hàng.
➤Thời gian gửi thích hợp sẽ mang lại chiến dịch hoàn hảo.

VIETGUYS – Đơn vị cung cấp dịch vụ Tin nhắn Location Based SMS uy tín

Là một nhà cung cấp dịch vụ Location based SMS Marketing số một Việt Nam hiện nay, VietGuys tự hào là một trong những đơn vị tiên phong tại Việt Nam cung cấp các giải pháp Mobile Marketing cho hơn 600 khách hàng trong và ngoài nước.

Trải qua hơn 10 năm hình thành và phát triển, VietGuys sở hữu những yếu tố nổi bật trên nhiều phương diện:

➤ Kinh nghiệm vượt trội: 1 trong những đơn vị tiên phong tại Việt Nam, mang giải pháp Mobile Marketing đến với hơn 1.200 nhãn hàng trong và ngoài nước.

➤ Bảo mật thông tin: áp dụng những tiêu chuẩn khắt khe về An ninh thông tin theo tiêu chuẩn ISO 27001:2013 do tổ chức SGS của Thuỵ Sỹ đánh giá và UKAS cấp chứng nhận.

➤ Đa dạng dịch vụ: cung cấp tất cả các giải pháp Mobile Marketing như: SMS Brandname, OTT-SMS, Location-based SMS, SMS Gateway, Email Marketing, Dịch vụ về thoại như Call Center, Voice broadcasting, Interactive Voice Response; và đặc biệt là Mobile Solutions – các giải pháp trên nền tảng di động thiết kế riêng cho từng doanh nghiệp

➤ Luôn cải tiến công nghệ: VietGuys vẫn đang tiếp tục khẳng định mình với tinh thần luôn cải tiến, sáng tạo không ngừng nhằm cung cấp các sản phẩm và dịch vụ mới đạt chất lượng cao và đáp ứng nhu cầu của từng khách hàng, doanh nghiệp.

Các ưu điểm khi sử dụng dịch vụ của VIETGUYS

➤Miễn phí khai báo Brand Name
➤Hạ tầng hệ thống hiện đại, ổn định luôn đảm bảo chất lượng tối đa
➤Hỗ trợ kết nối gửi tin nhắn qua API trên website hay ứng dụng của khách hàng
➤Chính sách giá linh hoạt cho nhiều ngành hàng
➤Đội ngũ nhân viên thân thiện, nhiệt tình, luôn hỗ trợ đưa ra các giải pháp tốt nhất cho khách hàng
➤Hỗ trợ kỹ thuật 24/7

Để biết thêm thông tin, bạn đọc có thể liên hệ với chúng tôi qua thông tin sau, hoặc quét QR code dưới đây:

Địa chỉ: tầng 8, toà nhà HBT, 456 Hai Bà Trưng, Tân Định, Quận-1, TPHCM

Điện thoại: (028) 7300 8027           Email:  info@vietguys.biz        Web: www.vietguys.biz

Để tải tài liệu giới thiệu Tiếng Việt về VietGuys, vui lòng quét mã
For-VietGuys-English credentials, please-scan

Chỉ còn 1 tháng nữa thôi, các chuyên gia VietGuys sẽ gặp gỡ người tham dự tại Vietnam Mobile Day 2018. Nhanh tay đăng kí giành lấy tấm vé tham dự sự kiện

TopDev

[Python cơ bản thường dùng trong công việc] Phần 15 : Socket programming

Chương này sẽ ví dụ việc xây dựng một môi trường Client – Server sử dụng Socket. Server sẽ lắng nghe trên một port (12345) và khi client kết nối vào sẽ thông báo hiển thị thông tin của client (IP và Port) và gởi 1 message xuống cho client.

15.1. Server side

Tạo file server.py với nội dung bên dưới.

Got connection
 import socket

s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
s.listen(5)
while True:
     c, addr = s.accept()
     print 'Got connection from', addr c.send('Thank you for connecting') 
     c.close()

Đoạn code trên khi thực thi sẽ chạy và lắng nghe ở port TCP 12345. Mỗi khi có một kết nối từ client sẽ hiện ra thông báo kết nối từ IP và Port nào, ví dụ:

from Got connection from ('192.168.1.104', 60018) .

Sau đó, gởi trả một message với nội dung Thank you for connecting về cho client. Sau đó, đóng kết nối với client.

15.2. Client side

Tạo file client.py với nội dung bên dưới.

import socket
s = socket.socket()
host = '127.0.0.1'
port = 12345
s.connect((host, port))
print s.recv(1024)
s.close

Đoạn code trên sẽ kết nối đến một socket server thông qua hostname lấy được từ phương thức socket.gethostname() và port 12345. Sau khi kết nối, sẽ hiển thị ra kết quả trả về từ server. Sau đó thì đóng kết nối.

<< Phần 14 : Gửi email với SMTP

Xem thêm tuyển dụng python các công ty hot

[Python cơ bản thường dùng trong công việc] Phần 14 : Gửi email với SMTP

SMTP là giao thức gởi mail thông dụng hiện nay. Python hỗ trợ mặc định thư viện smtplib dùng để kết nối đến một SMTP Server và gởi email. Tuy nhiên, việc sử dụng thư viện này sẽ gây khó khăn cho việc định dạng và sử dụng nên chúng ta sẽ sử dụng thư viện sender , là một thư viện giúp định dạng và gởi email đơn giản hơn.

14.1. Cài đặt sender

Cài đặt từ pip như sau:

$ sudo pip install sender

Tuyển dụng lập trình python

14.2. Gởi email đơn giản

Để gởi 1 email với sender , bạn cần có tài khoản và một số thông tin của SMTP Server trước khi gởi. Ví dụ đoạn code để gởi 1 email từ SMTP Server của Amazon.

from sender import Mail, Message

mail = Mail(
     "smtp.gmail.com",
      port = 465,
      username = "example@gmail.com", 
      password = "yourpassword", 
      use_tls = False, 
      use_ssl = True,
      debug_level = False
)

msg = Message("msg subject")
msg.fromaddr = ("Vo Duy Tuan", "example@gmail.com") 
msg.to = "destuser@gmail.com"
msg.body = "this is a msg plain text body"
msg.html = "<b>this is a msg text body</b>"
msg.reply_to = "example@gmail.com"
msg.charset = "utf-8"
msg.extra_headers = {}
msg.mail_options = []
msg.rcpt_options = []

# Send message
mail.send(msg)

14.3. Gởi email có đính kèm file

Bạn cần sử dụng thêm class Attachment để tạo attachment.

from sender import Mail, Message, Attachment
mail = Main(...)
msg = Message(..)
...
# Open attached file and create Attachment object 
with open("photo01.jpg") as f:
       file01 = Attachment("photo01.jpg", "image/jpeg", f.read())

msg.attach(file01)

# Send message

mail.send(msg)

14.4. Tìm hiểu thêm

Bạn có thể tìm hiểu thêm về thư viện sender tại website chính thức tại địa chỉ http://sender.readthedocs.org/

Blockchain, tiền ảo và hơn thế nữa…

Theo báo cáo mới nhất từ trang tuyển dụng IT hàng đầu tại Việt Nam TopDev, tính cho đến tháng 12.2020 mức độ tìm kiếm việc làm liên quan đến lĩnh vực cryptocurrency tại Việt Nam đã tăng gấp đôi so với cùng kỳ năm ngoái. Một sự thật khá thú vị về mức lương trung bình dành cho Nhà phân tích Nghiên cứu – Research Analyst có trình độ chuyên môn về “Blockchain” sẽ từ 30.117 Euro/năm (hơn 830 triệu đồng) và cho một Kiến trúc sư Phần mềm – Software Architect sẽ là 67.209 Euro/năm (hơn 1.8 tỷ đồng). Những số liệu thú vị dưới đây khiến ngành công nghệ blockchain không thể bị xem nhẹ.

Những năm qua blockchain đã làm nên điều gì?

Blockchain có thể hiểu là 1 dạng thức cơ sở dữ liệu hoàn toàn mới và được thiết kế để chống lại sự thay đổi dữ liệu. Blockchain với ưu điểm có khả năng truyền tải dữ liệu bỏ qua đơn vị trung gian, tăng hiệu quả và tốc độ vận hành. Mạng lưới blockchain bao gồm nhiều điểm độc lập có khả năng kết nối thông tin tuy nhiên chỉ được bổ sung thêm khi có sự đồng thuận của tất cả các điểm. Đây là một mạng lưới bảo mật an toàn cao ngay khi có một phần của hệ thống bị sụp đổ.

Tham khảo thêm tuyển dụng Blockchain lương cao

Blockchain hoàn toàn có khả năng trở thành công nghệ có sức ảnh hưởng mạnh mẽ trong tương lai. Chính đặc tính không thể thay đổi giúp công nghệ blockchain tạo ra niềm tin mà không cần đến 1 cơ quan tập trung như 1 công ty hay 1 tổ chức xác lập niềm tin đó. Cùng điểm qua những đóng góp nổi bật của blockchain dưới đây:

  • Trước năm 2015 những doanh nghiệp đề cập đến blockchain, bitcoin, cryptocurrency chỉ dao động nhỏ hay thậm chí chẳng có gì đặc sắc. Nhưng từ năm 2016 trở đi, tỷ lệ này bắt đầu có sự khởi sắc và kết quả là sự biến đổi đột ngột vào năm 2017 (Theo báo cáo từ Cbinsights)
(Hình 01: Biểu đồ độ nhận biết về blockchain)
(Hình 01: Biểu đồ độ nhận biết về blockchain)
  • Hình thức gọi vốn ICO (Initial Coin Offering) ngày càng tăng mạnh so với các cách thức đầu tư truyền thống. ICO nhìn chung vẫn là phương pháp tài chính được lựa chọn cho các startup blockchain, chỉ tính trong năm 2017 ICO đã bùng nổ lớn mạnh với 2 tỷ đô la Mỹ tiền tài trợ.
(Hình 02: Biểu đồ về vốn cổ phần và vốn từ ICO theo quý)
(Hình 02: Biểu đồ về vốn cổ phần và vốn từ ICO theo quý)
  • Theo Cbinsights, tính cho đến nay: tổng vốn trên thị trường dành cho tiền điện tử gần đạt đến con số 150 tỷ đô la Mỹ (với một giao dịch bitcoin lên tới 5000 đô la Mỹ), Walmart và Pfizer đã thành công trong việc thử nghiệm blockchain vào an toàn thực phẩm và theo dõi y học.
  • Ngành Ngân hàng và Thanh toán: năm 2017, 90% ngân hàng lớn ở Bắc Mỹ và Châu Âu bắt đầu nghiên cứu và ứng dụng blockchain và trong 4 năm tới, khoảng 66% các ngân hàng trên thế giới sẽ ứng dụng blockchain để mở rộng dịch vụ thanh toán di động.
  • Xu hướng của công nghệ tương lai blockchain: Bộ Quốc Phòng Hoa Kỳ cân nhắc sử dụng blockchain để bảo vệ an ninh mạng; Châu Á và Trung Đông tích cực đẩy mạnh blockchain; ngành bảo hiểm ứng dụng blockchain vào mảng xử lý yêu cầu bồi thường và các công việc phức tạp có sự tham gia của nhiều bên; blockchain thúc đẩy chuyển đổi kỹ thuật số của doanh nghiệp một cách cụ thể với tự động hoá, số hóa quy trình,…

Blockchain đang khuấy động nền công nghiệp thế giới nhưng theo những thống kê của Google, tại Việt Nam blockchain chỉ được biết và ứng dụng chủ yếu trong lĩnh vực Fintech mà ít ai nhận ra rằng nó còn có khả năng chuyển hóa công nghệ trong nhiều ngành khác nhau.

Viễn cảnh Việt Nam trước thềm cách mạng blockchain được bà Nicole Nguyễn, giám đốc marketing của công ty Infinity Blockchain Labs khẳng định như sau:

Nhờ vào kỹ năng lập trình giỏi và cộng đồng năng động, các startup Việt Nam đang rất quan tâm đến việc xây dựng các ứng dụng blockchain. Điều này về lâu dài sẽ giúp Việt Nam xác định được vị trí chiến lược của mình trên bản đồ blockchain toàn cầu.

Hiện có hơn 20 startup blockchain, 10 sàn giao dịch và dưới 10 ICO đang hoạt động tại Việt Nam. Liệu rằng blockchain có đem lại một cuộc cách mạng như những nước tiên tiến trên thế giới hay dễ dàng bị dập tắt ? Giới công nghệ Việt Nam cần có những startup tiên phong trong lĩnh vực blockchain để nắm bắt rõ và tin tưởng hơn vào công nghệ này ?

Có lẽ không ai không biết đến những cái tên đình đám như Umbala, AgileTech hay Cyradar trong hệ sinh thái blockchain tại Việt Nam. Một điều may mắn là cộng đồng công nghệ Việt Nam sẽ có cơ hội gặp gỡ và trò chuyện cùng với những chuyên gia dày dặn kinh nghiệm đến từ các tên tuổi trên. Các diễn giả sẽ dẫn dắt nhóm chủ đề “BLOCKCHAIN – BONG BÓNG HAY CÁCH MẠNG” tại Vietnam Mobile Day 2021 lần thứ 9 hứa hẹn đem lại những kiến thức, kinh nghiệm thực tế và bổ ích cho cộng đồng quan tâm.

Anh NGUYỄN MINH THẢO – FOUNDER & CEO CỦA UMBALA được biết đến khi nhận được khoản đầu tư 260.000 đô la Mỹ trong chương trình Shark Tank Việt Nam vừa qua.

Anh Nguyễn Minh Thảo - Founder &amp; CEO UMBALA
Anh Nguyễn Minh Thảo – Founder & CEO UMBALA

Anh bắt đầu khởi nghiệp từ năm 2006, trong suốt gần 10 năm qua, anh Minh Thảo còn là Founder của CNC Software, CNC Mobile, đạt rất nhiều giải thưởng không chỉ về khởi nghiệp. Tại Vietnam Mobile Day 2018, anh mang đến cho cộng đồng lập trình topic “Umbala Network – A Blockchain Based Camera Streaming Economy”, anh sẽ trực tiếp chia sẻ những vấn đề xoay quanh blockhain trong tương lai cũng như những kinh nghiệm hữu ích từ mạng lưới Umbala trong suốt thời gian anh dẫn dắt.

ANH PHẠM THANH TÚ – CTO CỦA AGILETECH

Anh Phạm Anh Tú - CTO của AgileTech
Anh Phạm Anh Tú – CTO của AgileTech

Hơn 13 năm lập trình Mobile và Công Nghệ Chuỗi Khối, 7 năm với C#, 8 năm với PHP, 11 năm JavaScript và hơn 1 năm chinh chiến với hệ sinh thái React, anh Thanh Tú hiện đang đảm nhiệm cương vị CTO của AgileTech. Chủ đề “Công Nghệ Chuỗi Khối & Smart Contract – Bắt Đầu Như Thế Nào Và Các Ứng Dụng” sẽ được anh Tú triển khai triệt để về  bản chất và cơ chế hoạt động của Công nghệ chuỗi khối & Smart Contract. .

ANH VŨ CÔNG THÀNH – INTELLIGENT PLATFORM DIRECTOR CỦA CYRADAR

Anh Vũ Công Thành - Intelligent Platform Director của Cyradar
Anh Vũ Công Thành – Intelligent Platform Director của Cyradar

Với vai trò Intelligent Platform Director, anh Công Thành là một trong những gương mặt đã đồng hành cùng CYRADAR từ những ngày đầu tiên ra mắt cộng đồng công nghệ. Anh phụ trách mảng áp dụng kỹ thuật Machine Learning & Big Data vào Security, giúp các doanh nghiệp tránh được các cuộc tấn công từ các phần mềm độc hại, tạo nên một môi trường kinh doanh số an toàn hơn. Tại phiên hội nghị Vietnam Mobile Day 2021, Anh Thành sẽ trình bày chủ đề “Blockchain – Information Security In The Blockchain Era” bao gồm những thông tin, vấn đề mới nhất về bảo mật hiện nay trong thời đại blockchain đang bùng nổ.

Blockchain không chỉ dành riêng cho ngành tài chính vì sự chuyển hóa của Blockchain còn tác động đến nhiều ngành khác như thương mại điện tử, bảo hiểm, chuỗi cung ứng, logistics, điện tử viễn thông, kế toán kiểm toán….Blockchain hứa hẹn sẽ thay đổi ngành công nghiệp trong 5 đến 10 năm tới bởi sự minh bạch, dân chủ, phân cấp, hiệu quả và an toàn của nó.

THÔNG TIN CHI TIẾT VỀ SỰ KIỆN

Fanpage chính thức: https://www.facebook.com/mobiledayevent/

 

[Python cơ bản thường dùng trong công việc] Phần 13 : Restful client

Ngày nay, với sự phong phú của các ứng dụng và nhu cầu kết nối ngày càng lớn thì Restful là một trong những mô hình web service được nhiều công ty sử dụng. Do đó, việc có thể kết nối đến các Restful web service là một kỹ năng cần thiết cho các lập trình viên.

Chương này sẽ giới thiệu về một trong những thư viện nổi tiếng nhất trong Python để làm việc với các Restful web service, đó là requests .

Website chính thức và các mô tả đầy đủ đều được đề cập tại http://www.python-requests.org/

13.1. Cài đặt

Cài đặt nhanh chóng thông qua pip như sau:

$ sudo pip install requests

13.2. Request

Hỗ trợ sẵn các phương thức tương ứng cho Http request như GET, POST, PUT, DELETE…

import requests

r = requests.get('https://api.github.com/events')
r = requests.post("http://httpbin.org/post")
r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")

13.2.1. GET Query string

Đối với các request GET , có thể truyền tham số đường dẫn thông qua tham số params khi gọi phương thức get() . Ví dụ:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.get("http://httpbin.org/get", params = payload)

print(r.url)

(Hiển thị: http://httpbin.org/get?key2=value2&key1= value1)

13.2.2. Request Body

Trong hầu hết trường hợp các request như POST, PUT thương cần truyền dữ liệu khi request, có thể sử dụng tham số data để truyền data lên kèm request. Ví dụ:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data = payload)

Python tuyển dụng nhiều vị trí cần gấp

13.2.3. Upload file

Có thể gởi thêm tham số files để upload file kèm theo request. Ví dụ:

import requests

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

13.3. Response

Sau khi gọi các phương thức tương ứng để request, bạn sẽ có đối tượng thuộc class Response . Đối tượng này có một số thông tin như sau:

  • status_code : HTTP Status server trả về
  • headers : Các thông tin header mà server trả về dưới dạng Dictionary.
  • cookies : Nếu server có trả về cookie thì có thể sử dụng thuộc tính này để lấy các cookie.
  • text : Trả về nội dung response

Tham khảo về các tính năng khác của thư viện requests tại website chính thức: http://docs.python-requests.org

[Python cơ bản thường dùng trong công việc] Phần 12 : Kết nối RabbitMQ

RabbitMQ là gì?

RabbitMQ là một phần mềm cho phép xây dựng Message Queue theo protocol AMQP và khá thông dụng trên thế giới. Để kết nối đến RabbitMQ trên Python, ta sẽ sử dụng thư viện pika.

12.1. Cài đặt

Có thể xem thêm về hướng dẫn cài đặt thư viện này tại https://pika.readthedocs.org/en/0.10.0/

Đơn giản cài thông qua pip là:

$ sudo pip install pika

12.2 Gởi một message đến Server – Provider

Ví dụ để gởi một message đến server

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hel lo', body='Hello World!')
print " [x] Sent 'Hello World!'"

connection.close()

Để gởi một message, chúng ta cần kết nối đến server và khai báo một channel, ở đây là channel có tên là hello . Sau khi khai báo channel, tao tiến hành gởi message có nội dung Hello World! thông qua channel này, kèm theo khai báo routing_keyhello . Routing Key sẽ giúp điều hướng message này đến đúng các worker được khai báo nhận message theo routing key (Consumer)

Tuyển dụng python lương cao

12.3. Nhận message – Consumer

Ở bước trước, ta đã tạo một message lên queue. Ở bước này, ta sẽ khai báo một worker xử lý các message nhận được từ channel hello .

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 
channel = connection.channel()
channel.queue_declare(queue='hello')

print ' [*] Waiting for messages. To exit press CTR L+C'

def callback(ch, method, properties, body):
     print " [x] Received %r" % (body,)

channel.basic_consume(callback, queue='hello', no_a ck=True)
channel.start_consuming()

Đoạn code này cũng có phần khai báo connectionchannel . Tuy nhiên, vì là consumer nên sẽ sử dụng phương thức basic_consume để lắng nghe trên queue hello , khi có message đến sẽ gọi hàm callback() để xử lý. Trong trường hợp ví dụ này thì callback chỉ đơn giản là hiển thị chuỗi thông báo đã nhận được message.

12.4. Tìm hiểu thêm về RabbitMQ và Pika

Nội dung chương này không có ý định giới thiệu tất cả khái niệm của AMQP cũng như RabbitMQ mà chủ yếu giới thiệu thư viện pika để làm việc với RabbitMQ. Bạn có thể tiếp tục theo dõi các hướng dẫn về khái niệm của RabbitMQ và Pika tại website chính thức của RabbitMQ.

https://www.rabbitmq.com/tutorials/tutorial-one-python.html

[Python cơ bản thường dùng trong công việc] Phần 11 : Kết nối Memcached

Memcached là gì?

Memcached là một memory cache server thông dụng hiện nay. Nội dung chương này sẽ hướng dẫn bạn kết nối đến một Memcached server (đã được cài đặt sẵn) thông qua thư viện pylibmc .

11.1. Cài đặt

Có thể xem thêm về hướng dẫn cài đặt thư viện này tại http://sendapatch.se/projects/pylibmc/install.html

Đơn giản cài thông qua pip là:

$ sudo pip install pylibmc

11.2 Kết nối đến Memcached Server

Để kết nối đến Memcached server thì bạn có thể xem ví dụ sau:

import pylibmc

mc = pylibmc.Client(["127.0.0.1"], binary=True, beh aviors={"tcp_nodelay": True, "ketama": True})

Việc làm python lương cao

11.3. Thực hiện lệnh

Thực hiện các lệnh bình thường trên đối tượng memcache.

Ví dụ:

import pylibmc

mc = pylibmc.Client(...)

mc.set('foo', 'bar')

print mc.get('foo')

(Hiển thị 'bar')

[Python cơ bản thường dùng trong công việc] Phần 10 : Kết nối Redis

Redis là gì?

Redis là một memory cache server hỗ trợ persistant data thông dụng nhất hiện nay. Nội dung chương này sẽ hướng dẫn bạn kết nối đến một Redis server (đã được cài đặt sẵn) thông qua thư viện redis-py.

10.1. Cài đặt

Có thể xem thêm về hướng dẫn cài đặt thư viện này tại https://github.com/andymccurdy/redis-py

Đơn giản cài thông qua pip là:

$ sudo pip install redis

10.2 Kết nối đến Redis

Để kết nối đến Redis server thì bạn có thể xem ví dụ sau:

import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)

10.3. Thực hiện lệnh

Thực hiện các lệnh bình thường trên đối tượng redis. Ví dụ:

import redis

r = redis.StrictRedis(...) 
r.set('foo', 'bar') 
print r.get('foo')
(Hiển thị 'bar')

Tìm việc python không cần kinh nghiệm

10.4. Pipeline

Pipeline là kỹ thuật được dùng trong trường hợp bạn muốn tăng performance bởi gộp nhiều lệnh vào một request thay vì mỗi lệnh là một request như thông thường. Xem ví dụ sau để hiểu cách sử dụng pipeline bằng redis-py:

import redis

r = redis.StrictRedis(...) 
r.set('foo', 'bar')
pipe = r.pipeline() 
pipe.set('a', 1) 
pipe.set('b', 2) 
pipe.set('c', 3) 
pipe.get('foo') 
pipe.execute()

Sau khi gọi phương thức execute() thì sẽ trả về List tương ứng với các kết quả của từng lệnh. Ví dụ kết quả từ đoạn code trên:

[True, True, True, 'bar']

[Python cơ bản thường dùng trong công việc] Phần 9 : Kết nối MySQL

MySQL là một hệ cơ sở dữ liệu quan hệ phổ biến nhất hiện nay. Rất nhiều ngôn ngữ có thể kết nối đến MySQL và Python cũng không ngoại lệ.

Mặc định Python không có thư viện để kết nối đến MySQL server. Trong phần này, để kết nối đến MySQL Server từ Python, chúng ta sẽ sử dụng module MySQLdb

9.1. Cài đặt MySQLdb

Cài đặt thông qua pip như sau:

$ sudo pip install MySQL-python

Tham khảo thêm tại: https://pypi.python.org/pypi/MySQL

Khai báo module MySQLdb là có thể sử dụng.

import MySQLdb

Trong một số trường hợp đã cài MySQLdb nhưng import báo lỗi thiếu file libmysqlclient.18.dylib . Nguyên nhân có thể là do hiện tại đường dẫn đến file không tồn tại. Thử tạo symlink hoặc sử dụng câu lệnh sau để tạo symlink từ file libmysqlclient.18.dylib đến thư mục /usr/lib/

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
  20 tài liệu học Python thiết thực để trở thành lập trình viên chuyên nghiệp

9.2. Kết nối đến MySQL Server

Bạn cần có một MySQL server đang chạy và cho kết nối đến. Trong trường hợp này là localhost nên không cần cấu hình đặc biệt, chỉ cần cung cấp username và password là có thể kết nối đến MySQL Server.

Thực hiện gọi hàm như sau để trả về kết nối:

import MySQLdb

dbcon = MySQLdb.connect(host = 'localhost', user = 'myusername', passwd = 'mypassword', db = 'mydbname ')

Nếu kết nối không thành công thì sẽ báo lỗi và ngưng chương trình. Cách kết nối an toàn là đưa vào trong try để bắt lỗi như sau:

import MySQLdb

db = None

try:

db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = 'root', db = 'mysql')

except MySQLdb.Error, e:
      print "Error %d: %s" % (e.args[0],e.args[1])
      sys.exit(1)

if db:
      cur = db.cursor()
      cur.execute("SELECT VERSION()")
      ver = cur.fetchone()
      print "Database version : %s " % ver

9.3. Kết nối với charset utf8

Mặc định kết nối đến MySQL server là charset latin nên khi lấy dữ liệu unicode thì hiển thị Tiếng Việt không đúng, bạn cần phải chọn charset là utf8 khi tạo kết nối. Cú pháp như sau:

...
db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'test', charset = 'utf8')

Tuyển dụng python các vị trí

9.4. Query dữ liệu

Để truy vấn dữ liệu (chạy câu lệnh SQL) thì sử dụng cursor của MySQLdb. Ví dụ:

import MySQLdb

db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'mysql');
cursor = db.cursor()
sql = 'SELECT * FROM user'
cursor.execute(sql)
myusers = cursor.fetchall()

Ví dụ dữ liệu biến myusers là: ((1, 'John'), (2, 'Doe'))

Mặc định, cursor sẽ trả về mỗi dòng dữ liệu từ MySQL theo kiểu tuple , tức là không có key. Nếu bạn muốn trả về kiểu Dictionary thì có thể khai báo:

import MySQLdb

db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'mysql')
cursor = db.cursor(MySQLdb.cursors.DictCursor) ...
  Date & Time trong Python

9.5. Fetch dữ liệu

Có một số cách để fetch dữ liệu thông dụng từ cursor sau khi đã exectute(sql)fetchone()fetchall() .

  • fetchone() : chỉ fetch một dòng dữ liệu. Nếu muốn fetch nhiều dòng dữ liệu thì có thể gọi nhiều lần, mỗi lần sẽ trả về một dòng dữ liệu. Tốt cho trường hợp truy vấn rất nhiều dữ liệu một lúc. Nếu trả về None tức là đã fetch hết dữ liệu từ câu truy vấn.
  • fetchall() : fetch toàn bộ dữ liệu truy vấn được từ câu truy vấn và trả về một tuple chứa các dòng dữ liệu. Mỗi phần tử của Tuple có thể là một Tuple khác hoặc là một Dictionary tùy theo cài đặt ở bước lấy cursor (Xem phần 9.4).
  • fetchmany(size) : nằm ở giữa 2 kiểu fetch trên, có thể quy định số lượng row trong mỗi lần fetch. Nếu fetch hết thì trả về Tuple rỗng.

9.6. Đóng kết nối

Sau khi kết nối và truy vấn thì có thể đóng kết nối theo ví dụ sau:

import MySQLdb
db = MySQLdb.connect(...)
db.close()

Ngoài ra, bạn cũng nên đóng cursor khi không còn sử dụng theo ví dụ:

import MySQLdb
db = MySQLdb.connect(...)
cursor = db.cursor()
cursor.close()
db.close()

9.7. Prepared Statement

Prepared statement là kỹ thuật tham số hóa các dữ liệu truyền vào câu truy vấn thay vì nối chuỗi trực tiếp để xây dựng một chuỗi truy vấn dài. Kỹ thuật này được áp dụng nhiều và giúp tăng hiệu quả và tính bảo mật của câu truy vấn. Ví dụ:

...

cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s", ("John", "4"))

...

Mỗi tham số truy vấn sẽ được thay thế bằng %s và phương thức execute() sẽ có tham số thứ 2 là một Tuple có giá trị tương ứng với thứ tự xuất hiện của các thành phần %s

[Python cơ bản thường dùng trong công việc] Phần 8 : Xử lý file XML

Trong phần này, chúng ta sẽ parsing nội dung XML thành dữ liệu để xử lý. Để xử lý XML, ta sẽ sử dụng thư viện Beautifulsoup 4. Đây là một thư viện giúp việc triển khai việc parsing html, xml được nhanh chóng và tiện lợi.

Tuyển dụng lập trình python lương cao

8.1. Cài đặt Beautifulsoup

Bạn có thể tham khảo hướng dẫn cách cài đặt tại website http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-beautiful-soupc Trên MacOS, có thể cài bằng pip như sau:

$ sudo pip install beautifulsoup4

8.2. Cài đặt lxml parser

Để parsing xml từ beautifulsoup, tao sử dụng bộ parser xml có tên là lxml . Xem hướng dẫn cài đặt tại https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser

Trên MacOS, có thể cài bằng pip như sau:

sudo pip install lxml

8.3. Ví dụ về parsing XML

Cho ví dụ sau:

from bs4 import BeautifulSoup as Soup

note = '''
<?xml version="1.0" encoding="UTF-8"?> 
<breakfast_menu>
     <food>
          <name>Belgian Waffles</name>
          <price>$5.95</price>
          <description>Two of our famous Belgian Waff les with plenty of real maple syrup</description>
          <calories>650</calories>
     </food>
     <food>
          <name>Strawberry Belgian Waffles</name>
          <price>$7.95</price>
          <description>Light Belgian waffles covered with strawberries and whipped cream</description>
          <calories>900</calories>
     </food>
</breakfast_menu>

'''

soup = Soup(note, 'xml')
foods = soup.findAll('food')

for x in foods:
print x.find('name').string, ': ', x.price.string

Khi chạy thì sẽ hiển thị ra màn hình như sau:

Belgian Waffles : $5.95
Strawberry Belgian Waffles : $7.95

Đối tượng thuộc class Soup (BeautifulSoup) sẽ giúp truy xuất các thành phần của file xml nhanh chóng và tiện lợi.

Trong ví dụ có một số cách truy xuất đến các phần tử như:

  • findAll() : trả về mảng các thẻ có tên cần tìm
  • find() : trả về phần tử đầu tiên có tên cần tìm
  • Truy xuất trực tiếp thông qua tên thẻ như x.price.string

8.4. Parsing HTML

Tương tự như xml , BeautifulSoup có thể parsing nội dung HTML thông qua hàm khởi tạo và chọn html ở tham số thứ 2.

...
soup = Soup(websitehtml, 'html')

[Python cơ bản thường dùng trong công việc] Phần 7 : Xử lý file JSON

JSON là gì?

JSON là một trong những định dạng file trao đổi dữ liệu thông dụng nhất hiện nay. Với kiến trúc đơn giản và tương đồng với cấu trúc của Python nên việc thao tác JSON trên Python rất dễ hiểu.

Việc làm python không cần kinh nghiệm

7.1. Load file từ Internet

Thông thường dữ liệu JSON được lấy từ nguồn khác (như file, internet..) nên chương này sẽ bắt đầu bằng cách hướng dẫn download một file JSON từ Internet và sau đó mới parsing nội dung JSON download.

Sử dụng module urllib2 để download file và module json để encode/decode JSON data. Ví dụ:

import urllib2
import json
response = urllib2.urlopen('https://api.github.com/ users/voduytuan/repos')
data = json.load(response)
print data

Ví dụ trên sẽ truy vấn đường dẫn https://api.github.com/users/voduytuan/repos để lấy danh sách Repository trên Github của mình dưới định dạng JSON.

7.2. Parsing JSON Data

Nếu như bạn đã có JSON data dưới dạng chuỗi, muốn parsing chuỗi này thành Data thì sử dụng như cách dưới đây:

import json
mystring = '{"a":1,"b":2,"c":3,"d":4,"e":5}' 
data = json.loads(mystring) 
print data
(Hiển thị: {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4})

7.3. Encoding JSON Data

Nếu như bạn đã có một biến và muốn encode thành JSON string thì có thể dùng theo cách sau:

import json
mydata = {
    'name': 'John',
    'age': 10
}
jsonstring = json.dumps(mydata)print jsonstring

(hiển thị: {"age": 10, "name": "John"})

Quy tắc 333 hay là phiếm đàm về chuyện phỏng vấn Senior Developer

Quy tắc 333 hay là phiếm đàm về chuyện phỏng vấn Senior Developer

Có thể nói vào những năm gần đây, phỏng vấn không còn đơn thuần là hoạt động một chiều, với việc các công ty có toàn quyền đánh giá ứng viên theo các tiêu chí mà mình đưa ra, mà giờ đây các ứng viên thông qua buổi phỏng vấn còn đánh giá ngược lại công ty, xem có đủ tốt, phù hợp để mình quyết định gắn bó không.

Trong phạm vi của bài viết này, tôi cũng cho rằng phỏng vấn lập trình viên senior là một công việc khá thú vị và thách thức. Bởi đó không chỉ là việc đánh giá năng lực của ứng viên xem có đạt được các yêu cầu, tiêu chuẩn mong đợi, mà còn xem xét đến các yếu tố, về sự thích nghi với môi trường, văn hoá, sự phù hợp với đường hướng phát triển trong tương lai của công ty hay không. Thật khó để làm tốt việc này nếu không có sự chuẩn bị chu đáo.

Quy tắc 333

Sau rất nhiều tự đánh giá bản thân, rằng mình đã làm tốt vai trò của một nhà tuyển dụng hay chưa. Tôi phải thú nhận một sự thật là: không ít lần tôi đã làm không tốt. Đôi lần cảm thấy xấu hổ vì những ngớ ngẩn của mình. Liệu có lần nào đó đã đánh giá sai lầm làm tuột mất người giỏi, hoặc là làm ứng viên nghĩ không tốt về công ty.

Đó đã là những áp lực không nhỏ, và sau khoảng thời gian khủng hoảng đó, tôi tạo ra một bộ quy tắc 333 nhằm giúp mình làm tốt việc này.

  • Quy tắc 1, nhằm để định nghĩa, xác định như thế nào là một Senior.
  • Quy tắc 2, nhằm để chứng minh, đánh giá sơ bộ ứng viên có đạt tiêu chuẩn Senior không.
  • Quy tắc 3, nhằm để hiểu một Senior cần gì, mà công ty cần đáp ứng để có được ứng viên.

Mỗi quy tắc như vậy sẽ có 3 yếu tố con để đánh giá, nên tôi gọi là quy tắc 333.

Tất nhiên, trên tất cả mọi quy tắc, có một quy tắc đặc biệt, vượt qua mọi quy tắc, đó là:

Cái gì nếu không thể có được bằng tiền, thì sẽ có được bẳng rất nhiều tiền.

Bài viết này sẽ không có ý phủ định hay bàn về bất kì điều gì có liên quan đến quy tắc đó.

Quy tắc số 1 – Định nghĩa nhanh về một Senior Developer

Nếu không thể trả lời một Senior là một người như thế nào, thì rõ ràng bạn không thể làm tốt công việc tuyển dụng của mình được. Theo tác giả bài viết này, Senior là người cần có ba tiêu chí, có thể khái quát nhanh như sau:

  1. Năng lực
  2. Ảnh hưởng
  3. Tầm nhìn

Về năng lực

 là tổ hợp những thuộc tính độc đáo của cá nhân , phù hợp với những yêu cầu của một hoạt động nhất định, đảm bảo cho hoạt động đó có hiệu quả

Ứng viên được đánh giá là Senior phải có kiến thức sâu rộng trong lĩnh vực mà mình đang làm, đặc biệt là đối với ngành IT không chỉ nhiều về số lượng (công nghệ, ngôn ngữ) đa dạng về lĩnh vực (phần mềm, embedded, network, web, app) mà còn phát triển rất nhanh. Ứng dụng đúng công nghệ, đúng thời điểm, kịp thời nắm bắt xu hướng và nhu cầu của thị trường là yếu tố tiên quyết mang đến lợi thế cạnh tranh cho doanh nghiệp.

Chưa kể trong một công ty các yếu tố về lịch sử, các yếu tố về cá nhân người đứng đầu công ty, văn hoá cũng tác động lên rất nhiều về cách thức phát triển sản phẩm, vận hành và đánh giá. Nên ứng viên phải có khả năng thích nghi, kế thừa phát triển tiếp tục, mang lại hiệu quả cho hoạt động của doanh nghiệp.

  Con đường trở thành một Senior developer đích thực

Về ảnh hưởng

Ứng viên được đánh giá là Senior là người có khả năng hỗ trợ và support các thành viên trong team và tạo ảnh hưởng lên họ, làm họ cảm thấy bị thuyết phục. Điều này đặc biệt quan trọng trong lĩnh vực phát triển phần mềm, vì trong team có các thành viên có tố chất, tài năng thì phần lớn có cá tính muốn thể hiện năng lực dẫn đến một Senior phải làm cho các thành viên nể phục và nghe theo “tâm phục khẩu phục” là điều rất khó.

Thêm vào đó, người được đánh giá là Senior, cần phải có năng lực thật sự, để tạo lên ảnh hưởng thì không thể cứng nhắc theo kiểu tìm mua một vài quyển sách về kỹ năng sống, năng lực lãnh đạo, truyền cảm hứng v.v… rồi áp dụng máy móc, cho rằng như vậy là có thể tác động lên người khác. Khi đó, thành ra giống như mọi người đối phó, dùng thủ thuật với nhau, nhất là khi cả Senior và thành viên trong team đều đọc qua cuốn sách đó, biết cách làm đó.

Về tầm nhìn

Ứng viên được đánh giá là Senior phải có khả năng tư vấn, hỗ trợ quản lý của mình đưa ra các quyết định, các phát ngôn, truyền thông hợp lý, chính xác đối với các bộ phận liên quan hoặc cấp trên của mình.

Hơn nữa, ứng viên phải có khả năng hoạch định công nghệ, giải pháp nhằm giúp cho mọi thành viên trong team được học hỏi và phát triển bản thân, cũng như mang lại lợi ích cạnh tranh cho công ty.

Tìm việc làm senior IT đãi ngộ tốt trên TopDev

Quy tắc số 2 – Chứng minh một ứng viên có phải là Senior không

Để kiểm chứng một Senior có năng lực thật sự, có khả năng truyền cảm hứng, ảnh hưởng tích cực lên team, có tầm nhìn để hỗ trợ cho team phát triển… Những điều đó có thể đánh giá thông qua 3 tiêu chí sau:

  • Quan điểm
  • Kiến thức
  • Kỹ năng

Về quan điểm

Ứng viên đánh giá là Senior có thể được phát hiện thông qua hoạt động phỏng vấn và nhìn nhận dựa trên các quan điểm của ứng viên về các vấn đề như xu hướng công nghệ, cách nhìn nhận một vấn đề…

Phần mở đầu câu chuyện về phỏng vấn, có thể bắt đầu chuyện trò bằng các câu hỏi liên quan đến quan điểm, ý kiến cá nhân để tạo không khí cởi mở, giúp ứng viên thoải mái khi nói ra suy nghĩ của mình. Từ đó hai bên có thể tạo ra được sự tiếp xúc tin cậy đầu tiên.

Về kiến thức

Ứng viên đánh giá là Senior phải có kiến thức sâu rộng về các lĩnh vực phù hợp với lĩnh vực hoạt động và nhu cầu cuả công ty. Ứng viên bắt buộc phải am hiểu tường tận các vấn đề như trong lịch sử nhà tạo ra nó nhằm giải quyết vấn đề gì, công nghệ đó phù hợp cho yêu cầu và mục đích gì…

Ngoài ra cần phải hỏi chuyên sâu về cơ chế hoạt động của từng tính năng, chức năng cụ thể, ví dụ như: hỏi cách sử dụng của một hàm nào đó. Việc làm này đảm bảo ứng viên có kiến thức chuyên sâu, làm việc cẩn trọng và chi tiết.

Về kỹ năng

Sẽ rất là thiếu sót nếu chỉ đơn thuần hỏi về kiến thức và quan điểm của ứng viên. Bởi vì có rất nhiều ứng viên nói rất hay, nhưng thực tế làm việc thì không có kỹ năng và năng lực giải quyết vấn đề thật sự.

Ứng viên được đánh giá là Senior phải nên được đánh giá là có kỹ năng cụ thể, có thể giải quyết một vấn đề cụ thể. Ví dụ như đã từng tự code một chức năng nào đó, biết rõ ràng tường tận đến mức cấu hình chức năng ra sao, các vấn đề cross nền tảng thế nào, đến mức phải phân định rõ ràng được cách thức tổ chức dự án theo nhu cầu của development và production khác nhau ra sao…

  Khi nào bạn đã là Senior dev

Quy tắc số 3 – Hiểu một Senior cần gì

Chúng ta không thể chỉ nói về điều chúng ta muốn và cách chúng ta đánh giá một ứng viên mà không xem xét đến các yếu tố như ứng viên cần những gì.

Nhiều năm phỏng vấn các bạn và rút ra từ bản thân tác giả cho rằng có ba yếu tố lớn tác động lên ứng viên:

  • Môi trường.
  • Động lực
  • Mục tiêu.

Nói một cách đơn giản, việc đi làm giống như chạy xe đi mãi trong cuộc đời, nếu môi trường tốt giống như con đường tốt, còn không thì ổ gà sỏi đá. Động lực thì như động cơ của xe, nếu tốt thì sẽ chạy nhanh, yếu thì sẽ chạy chậm, ì ạch. Còn mục tiêu là nơi mà ứng viên hướng đến, nếu mục tiêu sai không khác gì chạy vào ngõ cục, bế tắc.

Về môi trường

Môi trường là những gì thuộc về văn hoá của công ty, về bàn ghế, trang trí, phòng ốc, thiết bị làm việc, là đồ ăn, nước uống, là trai xinh, gái đẹp, đồng nghiệp hoà đồng, sếp công bằng…

Với sự cạnh tranh và nhu cầu về tuyển dụng nóng sốt vào những năm gần đây thì yếu tố này nhiều công ty đặt lên hàng đầu, nhằm giúp ứng viên cảm thấy ấn tượng ngay khi bước chân vào gặp gỡ lần đầu phỏng vấn.

Về động lực

Ứng viên là Senior sẽ rất cần được công ty nó cho họ biết ở đây có những điều gì nhằm giúp cho họ có động lực làm việc. Rằng sẽ có cơ hội để ứng dụng các công nghệ mới, có cơ hội để kiểm chứng chúng ở thị trường thật sự bằng cách đưa đến tay người dùng cuối cùng.

Ứng viên có thể được tự hào vì sản phẩm mình làm ra, nhằm giúp công ty nâng cao vị thế của mình, nhằm giúp tên tuổi của mình được biết đến trong cộng đồng công nghệ.

Về mục tiêu

Ứng viên Senior nên được cho thấy mục tiêu mà mình sẽ được khi chấp nhận vào làm việc và cống hiến cho công ty.

Đó là về bao lâu sẽ được review để nhìn nhận lại khả năng, được tăng lương, khi nào sẽ được xem xét để cân nhắc các vị trí quan trọng và cao hơn. Và đi đến tận cùng với công ty, ứng viên sẽ có được những gì.

TopDev via TranPhongPhu

Tuyển dụng IT lương cao trên TopDev

Thời kỳ vàng son của Game Việt đã trở lại!

Có lẽ bạn vẫn chìm đắm trong các thể loại siêu anh hùng Avenger, hoặc các bộ comic DC Marvel, thế nhưng lại đang bỏ quên mất ông “trùm cuối” quan trọng nhất và phát triển nhanh nhất của làn sóng giải trí: ngành Games.

Ngành game: Tương lai của ngành Công nghệ Giải trí

Giấc mơ game đã lan tỏa phủ rộng khắp từ Á sang Mỹ, một số franchiser trong thế giới game thu về được những khoảng tiền khổng lồ mà chính các nhà làm phim tại Hollywood cũng phải ao ước. Không ít tựa game khủng được ra lò từ những công ty tên tuổi triệu đô, có nhân viên đến từ mọi ngóc ngách trên thế giới.

Có thể nói, với tiềm năng phát triển vô hạn của công nghệ và ngành thiết kế, trải nghiệm game sẽ gần như chẳng bao giờ chạm được tới giới hạn cuối cùng. Người ta đã từng nghĩ chuyện đổ hàng triệu đô vào phát triển game là điều không thể và lãng phí, nhưng ở thời điểm hiện tại, nó có thể tiêu tốn đến hàng trăm triệu đô và giúp đưa người chơi lên một level mới. Ngành công nghiệp game đang trở nên ngày một phức tạp, và tổng chi phí để tạo nên một game sẽ tăng cao tỉ lệ thuận với độ phức tạp của nó.

Xem tuyển dụng Game Developer tại các công ty hàng đầu trên TopDev

Sự phát triển vượt trội về smartphone, AI, Machine learning, các thiết bị wearable, IoT, AI và VR đã mở ra rất nhiều cơ hội mới phát triển sản phẩm và mở rộng thị trường, chính bởi các loại công nghệ tương lai này đang từng bước tiến sâu vào cuộc sống chúng ta. Games đã thay đổi không ít kiểu dáng hình thức, và chắc chắn chúng không là ngoại lệ.

“Đã đến lúc chúng ta nên ngừng nhìn nhận ngành Game một thứ giải trí dành cho trẻ em nữa, mà hãy thực sự nhìn vào sức mạnh thật sự của nó trong ngành Công nghệ – Giải trí”.

Giấc mơ ngành Game Việt

Có một sự thật đáng buồn đó là chúng ta ở vị trí chủ nhà nhưng đến nay vẫn chưa được các nhà sản xuất game Trung Quốc xem là “đối thủ”. Căn bản là vì khi mang game phát hành tại Việt Nam, họ chẳng gặp phải khó khăn gì từ các sản phẩm trong nước, thậm chí còn được chào đón nồng nhiệt mà chẳng phải tốn mấy công sức quảng bá hình ảnh và xây dựng tên tuổi.

Câu chuyện làm game Việt không phải chưa từng được nhắc đến, nhưng đây chính là thời điểm vàng, thời điểm đỉnh cao phát triển công nghệ để tập trung sản xuất nó. Bản thân chúng ta hiểu rõ được tâm lý các game thủ nước mình, biết họ muốn gì thích gì, muốn có tính năng gì nên sẽ không phải tốn kém đi tìm hiểu thị trường. Rủi ro trong ngành là nhiều và con đường cũng rất chông gai, nhưng lợi ích và những giá trị thu về là không nhỏ và sẽ là xứng đáng với những ai chịu đầu tư và nghiên cứu kĩ lưỡng.

Không hề đứng ngoài nỗ lực mang Game “Made in Vietnam” ra thị trường quốc tế, Gear Inc. là công ty phát triển ứng dụng di động và trò chơi trên nền web hàng đầu Việt Nam hiện nay, dứng sau loạt game mobile đình đám hiện nay như WWE Champions, Final Fortress, Tribal Rivals,…và nhiều tựa game hot khác đang làm mua làm gió trên các bảng xếp hạng của Apple Store và CH Play.

Gear Inc. tự hào là Công ty Công nghệ khổng lồ có gần 10 năm kinh nghiệm trong lĩnh vực phát triển phần mềm với các công ty con chuyên về Thiết kế phần mềm, Phát triển Game di động, Quản lý Chất lượng và Kiểm duyệt Thương hiệu. Gear Inc. luôn hiểu rõ các xu hướng mới nhất trong ngành game để đáp ứng các nhu cầu ngày càng tăng của khách hàng và người dùng, và tự hào với một đội ngũ những người tài năng nhất để mang đến cho khách hàng các trải nghiệm tốt nhất. Những con số ấn tượng có thể kể đến như:

  • Hơn 1000 dự án lớn nhỏ
  • 40+ khách hàng trên toàn cầu
  • 10 năm kinh nghiệm
  • 350+ nhân viên
  • 95% Khách hàng được duy trì

Tháng 6 này Gear Inc. sẽ có mặt tại Vietnam Mobile Day để chia sẻ rõ hơn về những triển vọng và giải pháp cho ngành game Việt

Topdev

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

CDN – Chỉ 1 giây làm đổi thay tâm trí khách hàng

Cuộc chiến tiếp cận khách hàng tiềm năng online ngày càng khốc liệt hơn, và lợi thế cạnh tranh của mỗi doanh nghiệp có thể chêch lệch rất xa nhau chỉ nhờ một yếu tố – độ trễ khi load trang website (latency). Nó là khoảng thời gian được tính từ khi người dùng click vào link website cho tới khi toàn bộ nội dung của trang web gồm chữ, hình ảnh, video được thể hiện đầy đủ. Mỗi website sẽ có độ trễ khác nhau, nhưng trong hầu hết các trường hợp, độ trễ này được quyết định bởi khoảng cách thực giữa địa điểm của người truy cập và nơi đặt server host trang web mà người dùng đang truy cập. Và chính độ trễ này, chỉ 1 giây làm đổi thay quyết định của user có nên ở lại trang web của hoặc thoát ra ngay để tìm đến kết quả khác. Vậy có cách nào để rút ngắn thời gian này và đảm bảo trải nghiệm hài lòng của khách hàng?

Content Delivery Network (CDN) là gì?

Từ chính thực tế quá tải của server chính khi phải truyền trực tiếp đến tất cả client, giải pháp phân chia resource đến client thông qua các host gần client đó nhất. Nó không chỉ có thể giảm tải tối đa cho máy chủ chính, mà còn tăng tốc website gấp nhiều lần không phân biệt vị trí và vùng địa lý của mỗi người truy cập mà không cần phải lo lắng tới việc nâng cấp máy chủ chính quá tốn kém.

Công cụ này được gọi là Content Delivery Network (CDN), tạm dịch là “mạng lưới phân tải nội dung”, là một mạng lưới tập hợp gồm nhiều Server được triển khai tại nhiều data center khác nhau đặt khắp thế giới. Cứ mỗi vị trí khác nhau sẽ có một PoP (Point of Presense) – là một bản “sao lưu” tất cả nội dung trên website, có vai trò truyền tải nó đến người truy cập vào web trong phạm vi của PoP đó.

Một cách dễ hiểu là, nếu user đang ở Mỹ và truy cập website của bạn đặt tại Việt Nam, thì truy cập này sẽ được xử lý bởi một PoP đặt tại Mỹ. Cách xử lý này nhanh hơn rất nhiều so với thông thường – giảm thời gian tải nội dung của web, mà server chính của bạn cũng được giảm tải, không phải chuyển thông tin đi cả một vòng trái đất để đến được với user nữa.

CDN – Chìa khóa vàng cạnh tranh cho doanh nghiệp

Ngày nay, hơn một nửa số traffic trên Internet đều có sử dụng CDN, và con số này không hề có dấu hiệu giảm xuống mỗi năm. Chỉ trừ khi đối tượng phục vụ của bạn không rộng lớn,thì bạn không cần thiết phải dùng CDN. Thực tế thì, nếu doanh nghiệp của bạn đã online rồi thì có rất ít lí do để mà không dùng CDN.

  • Không chỉ bạn có thể tiết kiệm được nhiều chi phí: chi phí băng thông rất vừa túi, không cần thiết phải tốn chi phí nâng cấp máy chủ khi đã có các PoP phấn bố khắp nơi; mà còn giúp bạn mở rộng được đối tượng khách hàng vì website của bạn đã được phân phối đi khắp toàn cầu, gia tăng sự hài lòng dù ở bất kì đâu.
  • Bản thân người dùng cũng nhận được không ít lợi ích từ CDN: tốc độ truy cập và load website mượt mà hơn hẳn, giảm thiểu sự chậm trễ, giật lag của phim, video ảnh, gif,…; tương tác nhanh hơn; cập nhật các sự kiện Live stream qua điện thoại hoặc laptop đều chất lượng hơn mà không phải trang bị thiết bị mắc tiền khác,…

Để tìm kiếm được một nhà cung cấp CDN không khó, đôi khi chỉ cần dành một ít thời gian search Google cũng có thể tìm được một số nhà cung cấp cho Free Trial hoặc có thể cả Free. Tuy nhiên, hầu hết chúng đều không dành cho lâu dài, và không phải dịch vụ nào cũng có các máy chủ PoP ở gần bạn, và ở gần khách hàng; bạn cần có khả năng chủ động xem map của họ xem có máy chủ gần khu vực địa lý bạn mong muốn hay không.

Là một trong những đơn vị tiên phong trong lĩnh vực cung cấp CDN, cũng như cho thuê máy chủ, Cloud VPS, Cloud Server, Dedicated Server… KDATA tự hào với hệ thống máy chủ CDN được đặt tại nhiều nơi trên khắp Việt Nam và nước ngoài, và nhận được sự tin tưởng từ phía khách hàng qua những ưu điểm nối bật nhất của dịch vụ mà KDATA đang phát triển như:

  • Khả năng tự động bảo vệ: tự động cập nhật, hỗ trợ đa nền tảng, sao lưu hằng ngày
  • Khả năng bảo vệ liên tục: quét virus hằng ngày, bảo mật dữ liệu, giám sát máy chủ liên tục
  • Khả năng giám sát liên tục: giám sát mạng liên tục, cảnh báo khi có sự cố, đảm bảo uptime 99,99%
  • Hỗ trợ miễn phí: hỗ trợ miễn phí 24/7, tư vấn miễn phí, hướng dẫn cài đặt.

KDATA đã có kinh nghiệm hơn 6 năm uy tín cung cấp dịch vụ CDN, điện toán đám mây, với mạng lưới hơn 1000 máy chủ, hàng ngàn khách hàng trong và ngoài nước, đồng thời cũng là một trong những đối tác lớn của VNPT, FPT, Viettel…

Trong tháng 6 này, KDATA cùng đội ngũ chuyên gia giàu kinh nghiệm sẽ cùng nhau xuất hiện tại Vietnam Mobile Day 2018. Hãy nhanh tay đăng kí vé để gặp gỡ đội ngũ KDATA chỉ với một click tại mobileday.vn/vi/ve-tham-du/.

Techtalk via Topdev

[Block Chain cơ bản] Vài từ khóa quan trọng để bắt đầu

Blockchain là gì

Đây là một ví dụ sử dụng Smart Contract, Ethereum Blockchain để làm web voting (bỏ phiếu). User sẽ phải dùng Ether để mua 1 số token, sau đó dùng token để bỏ phiếu. Từ đó việc voting là public, minh bạch và không ai có thể can thiệp, sửa đổi được vì lưu trên Blockchain.

Một số từ khóa quan trọng:

Solidity: Ngôn ngữ viết smart contract. Trường hợp này smart contract như 1 class lập trình để xử lý và lưu trữ thông tin vote.

Truffle: Framework giúp deploy SC dễ dàng hơn cũng như tạo web để thao tác với SC.

Geth: command line tool của Ethereum Blockchain, cái này cực kỳ quan trọng vì mình cần chạy 1 node trong blockchain để sync toàn bộ blockchain. Tool này có thể chạy miner Ether, tạo private blockchain (theo Ethereum protocol).

Rinkeby: một testnet để các dev vọc thử, không bị mất Ether thật. Testnet này cung cấp luôn trang etherscan để tra cứu các block và transaction y chang như mainnet không khác gì cả.

Web3: Thư viện JS cung cấp các API tương tác với Smart Contract thông qua 1 RPC run từ lệnh Geth ở trên.

Metamask: một extension trên Chrome, với dev thì công cụ này cung cấp 1 web3 provider link với wallet luôn, thao tác sẽ tiện hơn. Trên thực tế các DWeb dùng cái này rất nhiều.

IPFS: Protocol cung cấp khả năng lưu trữ file vật lý phân tán. File được định danh với mã mQ… Protocol này kết hợp Bitorrent, Git để phân tán file khắp nơi. Cái này thật sự rất hay. Dùng thêm cái này thì toàn bộ website có thể Decentralize 100%.

Tác giả: Việt Trần