Mắt Bão tuyển dụng Lập trình viên Odoo (OpenERP)

 Tuyển dụng  Chức năng bình luận bị tắt ở Mắt Bão tuyển dụng Lập trình viên Odoo (OpenERP)
Th2 192019
 

Mô tả Công việc

Số lượng cần tuyển: 01

·         Tiếp nhận các yêu cầu về Odoo (OpenERP), phân tích và xây dựng giải pháp, xây dựng chức năng theo yêu cầu của công ty.

·         Hỗ trợ end-users trong quá trình vận hành hệ thống: Hướng dẫn, đào tạo, xử lý các tình huống phát sinh.

·         Cấu hình, chức năng của Odoo (OpenERP) đào tạo hướng dẫn lại trong nội bộ.

Yêu Cầu Công Việc

·         Có hiểu biết căn bản về Linux.

·         Thành thạo ngôn ngữ Python

·         Có hiểu biết về PostgreSQL

·         Có hiểu biết sâu sắc về CSS, XML

Ưu tiên

·         Có kinh nghiệm về Odoo version 10 trở lên.

·         Có kiến thức về sự vận hành và hoạt động của một số module cơ bản như Sales, Inventory,Project, …

·         Có thể làm báo cáo RML và QWEB.

Quyền lợi được hưởng

·         Mức lương: 12.000.000-18.000.000đ

·         Xét tăng lương hàng năm

·         Môi trường làm việc năng động, chuyên nghiệp, có tính thử thách cao, khả năng sáng tạo tối đa, cơ hội phát huy và thể hiện khả năng của mình.

·         Chế độ đãi ngộ đầy đủ theo chính sách công ty và luật lao động.

·         Cơ hội làm việc với các quản lý nhiều kinh nghiệm, tích lũy kinh nghiệm và mở rộng mối quan hệ, nâng cao sự hiểu biết về CNTT, và mang tới cho bạn thành công và hoài bão.

·         Cơ hội thăng tiến cao: Các vị trị quản lý cao cấp.

Địa điểm làm việc: Lô M1-05 Chung cư Carillon, 171A Hoàng Hoa Thám, Phường 13, Quận Tân Bình, TP.HCM

CV xin gửi về: tuyendung@matbao.com

Hạn chót nộp hồ sơ: 31/03/2018

Entrust Tuyển dụng

 Tuyển dụng  Chức năng bình luận bị tắt ở Entrust Tuyển dụng
Th2 192019
 

Công ty TNHH Tư vấn EntrustTuyển Lập trình Dev/Python/Odoo ĐI LÀM LUÔN

Số lượng: 5
Yêu cầu:
– Dựa trên nền tảng Odoo phát triển các công cụ quản trị cho doanh nghiệp như: Quản lý kho, quản lý sản xuất, quản lý nhân sự, quản lý dự án, quản lý khách hàng (CRM), thương mại điện tử,…
– Tích hợp với các hệ thống phụ trợ (Call Center, đơn vị vận chuyển, ngân hàng, SMS, Email…)
– Nghiên cứu và triển khai các giải pháp giúp tối ưu hệ thống và trải nghiệm người dùng

Quyền lợi:
– Lương cạnh tranh, hấp dẫn, thỏa thuận theo năng lực.
– Đóng BHXH, BHYT, BHTN theo quy định.
– Thưởng lương tháng thứ 13 và lễ Tết.
– Hỗ trợ cơm trưa và đồ ăn uống tại văn phòng
Liên hệ: Thông tin CV gửi về: lanluong@entrustlab.com SDT 0989367968
Địa chỉ: Tòa 25T1 Hoàng Đạo Thúy, Cầu Giấy, HN

DCT SOLUTIONS Tuyển dụng

 Tuyển dụng  Chức năng bình luận bị tắt ở DCT SOLUTIONS Tuyển dụng
Th2 182019
 

– Vị trí: Fresher/Part-Time/Intern
      + Nội dung tuyển dụng: Phát triển hệ thống ERP với Odoo. Thông tin như file đính kèm (Fresher Python)
      + Số lượng tuyển dụng: 10.
– Vị trí: Junior/Senior
      + Nội dung tuyển dụng: Phát triển hệ thống ERP với Odoo. 01-03 năm kinh nghiệm. Thông tin như file đính kèm (Junior Python)
      + Số lượng tuyển dụng: 02.
– Người liên hệ: hoang.tran@dctsolution.vn, hoặc hr@dctsolutions.io
– Hạn cuối nhận hồ sơ: 18/03/2019, hoặc khi đã đủ số lượng.

Tidy.vn tuyển dụng

 Tuyển dụng  Chức năng bình luận bị tắt ở Tidy.vn tuyển dụng
Th2 162019
 

www.tidy.vn đang cần tuyển Django backend developer tại Hà Nội.
=> Lương từ 20-30tr.
=> Cần tối thiểu 1 năm kinh nghiệm.

=> Thưởng tết ít nhất 1 tháng lương và thưởng thêm theo doanh thu của công ty (không giới hạn).
Email: info@tidy.vn

Bài 5: Cấu trúc điều khiển If else

 Python Basic  Chức năng bình luận bị tắt ở Bài 5: Cấu trúc điều khiển If else
Th2 132019
 

Cấu trúc câu lệnh điều khiển như sau:

If statement

The syntax looks like

if expression:
do this

Ví dụ: Viết chương trình kiểm tra số nhỏ (lớn) hơn 100 Code tham khảo

#!/usr/bin/env python
number = int(raw_input("Enter a number: "))
if number < 100:
print "The number is less than 100"

Kết quả:

$ ./number100.py
Enter a number: 12
The number is less than 100

Else

Trong trường hợp muốn in ra số đó lớn hơn 100, trường hợp này chúng ta sử dụng else. Nó sẽ thực hiện khi biểu thức if không hoàn thành.

#!/usr/bin/env python
number = int(raw_input("Enter a number: "))
if number < 100:
print "The number is less than 100"
else:
print "The number is greater than 100"

Kết quả :

$ ./number100.py
Enter a number: 345
The number is greater than 100

Ví dụ về cách sử dụng elif

>>> x = int(raw_input("Please enter an integer: "))
>>> if x < 0:
... x = 0
... print 'Negative changed to zero'
... elif x == 0:
... print 'Zero'
... elif x == 1:
... print 'Single'
... else:
... print 'More'

Chúc các bạn thành công !

Bài 4: Toán tử và biểu thức

 Python Basic  Chức năng bình luận bị tắt ở Bài 4: Toán tử và biểu thức
Th2 122019
 

Trong Python bạn có thể thực hiện phép tính từ trên trình thông dịch.

Ví dụ:

>>> 2 + 3
5
>>> 23 - 3
20
>>> 22.0 / 12
1.8333333333333333

Để lấy giá trị thập phân bạn thực hiện như trên. Để lấy giá trị làm trong bạn sử dụng toán tử %

>>> 14 % 
32

Ví dụ về số nguyên

 
#!/usr/bin/env python
days = int(raw_input("Enter days: "))
months = days / 30
days = days % 30
print "Months = %d Days = %d" % (months, days)

Kết quả như sau:

$ ./integer.py
Enter days: 265
Months = 8 Days = 25

Trong dòng đầu tiên chúng ta sẽ lấy số ngày, sau đó lấy số tháng và ngày và cuối cùng là in chúng ra màn hình. Bạn có thể làm chúng một cách dễ dàng.

#!/usr/bin/env python
days = int(raw_input("Enter days: "))
print "Months = %d Days = %d" % (divmod(days, 30))

Hàm divmod(num1, num2) trả về hai giá trị , giá trị thứ 2 là division của num1 và num2 và giá trị thứ 2 là modulo của num1 và num2.

Toán tử quan hệ (Relational Operators)

Bạn cũng có thể sử dụng toán tử quan hệ trong Python như ví dụ dưới đây.

 
>>> 1 < 2
True
>>> 3 > 34
False
>>> 23 == 45
False
>>> 34 != 323
True
>>> 4.0 // 3
1.0
>>> 4.0 / 3
1.3333333333333333

Toán tử logic (Logical Operators)

Ví dụ:

>>> 1 and 4
4
>>> 1 or 4
1
>>> -1 or 4
-1
>>> 0 or 4
4

Tính toán

>>> a = 12
>>> a += 13
>>> a
25
>>> a /= 3
>>> a
8
>>> a += (26 * 32)
>>> a
840
#!/usr/bin/env python
N = 100
a = 2
while a < N:
print "%d" % a
a *= a

Kết quả:

$ ./shorthand.py
2
4
16

Biểu thức

Bạn có thể sử dụng như ví dụ dưới đây, để dễ đọc bạn nên có dấu cách.

 a = 234 * (45 - 56.0 / 34) 

Ví dụ:

#!/usr/bin/env python
a = 9
b = 12
c = 3
x = a - b / 3 + c * 2 - 1
y = a - b / (3 + c) * (2 - 1)
z = a - (b / (3 + c) * 2) - 1
print "X = ", x
print "Y = ", y
print "Z = ", z

Kết quả

$ ./evaluationexp.py
X = 10
Y = 7
Z = 4

Chuyển đổi kiểu

Chúng ta có thể thưc hiện chuyển đổi thủ công. Ví dụ như:

float(string) -> float value
int(string) -> integer value
str(integer) or str(float) -> string representation
>>> a = 8.126768
>>> str(a)
'8.126768'

Sau đây là chương trình tính toán giá trị của dãy số 1/x+1/(x+1)+1/(x+2)+ … +1/n với n tăng dần, trong trường hợp x = 1 và n =10

#!/usr/bin/env python
sum = 0.0
for i in range(1, 11):
sum += 1.0 / i
print "%2d %6.4f" % (i , sum)

Kết quả như sau:

$ ./evaluateequ.py
1 1.0000
2 1.5000
3 1.8333
4 2.0833
5 2.2833
6 2.4500
7 2.5929
8 2.7179
9 2.8290
10 2.9290

Dòng code sum += 1.0 / i nó có nghĩa là sum = sum + 1.0 / i.

Sau đây là chương trình giải phương trình bậc 2

#!/usr/bin/env python
import math
a = int(raw_input("Enter value of a: "))
b = int(raw_input("Enter value of b: "))
c = int(raw_input("Enter value of c: "))
d = b * b - 4 * a * c
if d < 0:
print "ROOTS are imaginary"
else:
root1 = (-b + math.sqrt(d)) / (2.0 * a)
root2 = (-b - math.sqrt(d)) / (2.0 * a)
print "Root 1 = ", root1
print "Root 2 = ", root2

Trong ví dụ này chúng ta sẽ thực hiện tính toán lương của một nhân viên kinh doanh camera. Lương cơ bản là 1500, với mỗi một camera bán được anh ấy sẽ có 200 và hoa hồng của nhân viên kinh doanh là 2%. Đầu vào là số camera và tổng số giá của camera.

#!/usr/bin/env python
basic_salary = 1500
bonus_rate = 200
commision_rate = 0.02
numberofcamera = int(raw_input("Enter the number of inputs sold: "))
price = float(raw_input("Enter the total prices: "))
bonus = (bonus_rate * numberofcamera)
commision = (commision_rate * numberofcamera * price)
print "Bonus = %6.2f" % bonus
print "Commision = %6.2f" % commision
print "Gross salary = %6.2f" % (basic_salary + bonus + commision)

Kết quả như sau:

$ ./salesmansalary.py
Enter the number of inputs sold: 5
Enter the total prices: 20450
Bonus = 1000.00
Commision = 2045.00
Gross salary = 4545.00

Chúc các bạn thành công !

Bài 3: Biến và kiểu dữ liệu

 Python Basic  Chức năng bình luận bị tắt ở Bài 3: Biến và kiểu dữ liệu
Th2 112019
 

Từ khóa

Sau đây là danh sách các từ khóa của ngôn ngữ, chúng ta không thể sử dụng chúng như một định danh thông thường. Chúng ta phải dùng chính xác các từ sau đây:

and       del      from      not   while
as elif global or with
assert else if pass yield
break except import print
class exec in raise
continue finally is return
def for lambda try

Trong Python chúng ta không chỉ định một kiểu dữ liệu trong một biến. Tuy nhiên chúng ta có thể viết abc = 1 và abc sẽ trở thành dữ liệu kiểu nguyên. Nếu viết abc = 1.0 thì abc sẽ là kiểu số thực. Sau đây là ví dụ cơ bản về việc gán giá trị cho biến:

>>> a = 13
>>> b = 23
>>> a + b
>>> 36

Trong ví dụ trên bạn đã hiểu cách khai báo biến trong Python, bạn chỉ cần gõ tên và giá trị của biến. Python có thể thao tác trên chuỗi. Chúng được đặt trong dấu ngoặc đơn hoặc ngoặc kép như:

>>> 'India'
'India'
>>> 'India\'s best'
"India's best"
>>> "Hello World!"
'Hello World!'

Nhận dữ liệu từ bàn phím:

Trong Python bạn không cần bước đọc dữ liệu từ bàn phím. Bạn có thể sử dụng hàm raw_input để thực hiện nhập dữ liệu: Ví dụ như:

raw_input("Xin chao Python Viet Nam")

và sẽ trả về chuỗi đầu vào. Chúng ta sẽ thử viết một chương trình đơn giản cho phép đọc số được nhập từ bàn phím sau đó kiểm tra nó lớn hơn 100 hoặc không. Tên chương trình này có tên là testhundred.py:

#!/usr/bin/env python
number = int(raw_input("Enter an integer: "))
if number < 100:
print "Your number is smaller than 100"
else:
print "Your number is greater than 100"

Kết quả sẽ như sau:

$ ./testhundred.p
yEnter an integer: 13
Your number is smaller than 100$
./testhundred.py
Enter an integer: 123
Your number is greater than 100

Trong chương trình tiếp chúng ta sẽ lấy ví dụ về việc tính toán các khoản đầu tư:

#!/usr/bin/env python
amount = float(raw_input("Enter amount: "))
inrate = float(raw_input("Enter Interest rate: "))
period = int(raw_input("Enter period: "))
value = 0
year = 1
while year <= period:
value = amount + (inrate * amount)
print "Year %d Rs. %.2f" % (year, value)
amount = value
year = year + 1

Kết quả như sau:

$ ./investment.py
Enter amount: 10000
Enter Interest rate: 0.14
Enter period: 5
Year 1 Rs. 11400.00
Year 2 Rs. 12996.00
Year 3 Rs. 14815.44
Year 4 Rs. 16889.60
Year 5 Rs. 19254.15

Một vài ví dụ:

Một vài ví dụ về biến và kiểu dữ liệu:

Trung bình của số N

Trong chương trình này chúng ta sẽ tính toán trung bình của số N

#!/usr/bin/env python
N = 10
sum = 0
count = 0
while count < N:
number = float(raw_input(""))
sum = sum + number
count = count + 1
average = float(sum)/N
print "N = %d , Sum = %f" % (N, sum)
print "Average = %f" % average

Kết quả như sau

$ ./averagen.py
1
2.3
4.67
1.42
7
3.67
4.08
2.2
4.25
8.21
N = 10 , Sum = 38.800000
Average = 3.880000

Chuyển đổi nhiệt độ: Chương trình phục vụ việc chuyển đổi từ độ F sang độ C sử dụng công thức: C=(F-32)/1.8

#!/usr/bin/env python
fahrenheit = 0.0
print "Fahrenheit Celsius"
while fahrenheit <= 250:
celsius = ( fahrenheit - 32.0 ) / 1.8 # Here we calculate the Celsius value
print "%5.1f %7.2f" % (fahrenheit , celsius)
fahrenheit = fahrenheit + 25

Kết quả như sau:

 
Fahrenheit Celsius
0.0 -17.78
25.0 -3.89
50.0 10.00
75.0 23.89
100.0 37.78
125.0 51.67
150.0 65.56
175.0 79.44
200.0 93.33
225.0 107.22
250.0 121.11

Gán nhiều giá trị cho biến trên một dòng:

Bạn có thể khai báo nhiều giá trị cho nhiều biến trên một dòng, ví dụ như sau:

>>> a , b = 45, 54
>>> a
45
>>> b
54

Bạn cũng có thể chuyển đổi giữa hai giá trị rất dễ dàng:

>>> a, b = b , a
>>> a
54
>>> b
45

Để hiểu hơn cách làm việc, chúng ta sẽ tìm hiểu về kiểu dữ liệu tuple. Chúng ta sẽ sử dụng dấu phẩy cho việc tạo tuple. Ở bên phải chúng ta sẽ tạo một tuple ( chúng ta gọi chúng là gói tuple) và phía bên trái chúng ta gọi là tuple giải nén cho một tuple mới.

Dưới đây là một ví dụ:

>>> data = ("KhanhNN", "Viet Nam", "Python")
>>> name, country, language = data
>>> name
'KhanhNN'
>>> country
'Viet Nam'
>>> language
'Python'

Chúc các bạn thành công!

Bài 2: Khái niệm cơ bản

 Python Basic  Chức năng bình luận bị tắt ở Bài 2: Khái niệm cơ bản
Th2 112019
 

Python là ngôn ngữ lập trình thông dịch, điều đó có nghĩa là bạn có thể viết code ngay trên trình thông dịch hoặc viết vào file sau đó chạy chúng. Đầu tiên chúng ta sẽ sử dụng trình thông dịch để bắt đầu viết một chương trình đầu tiên (bạn có thể sử dụng shell trên Windows hoặc Terminal trên Linux). Bạn chỉ cần gõ python vào cửa sổ dòng lệnh

Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Để có thể in ra dòng chữ “Xin chào Python Viet Nam” bạn có thể làm như sau:

>>> print "Xin chào Python Viet Nam!"

Bây giờ ta sẽ làm cách mà lập trình viên hay làm, bạn sẽ tạo một file helloworld.py, bạn có thể sử dụng bất cứ một trình soạn thảo mà bạn biết để tạo ra file này. Chú ý đuôi mở rộng là .py

#!/usr/bin/env python
print "Xin chào Python Viet Nam !"

Để thực hiện chạy, bạn cần trao quyền cho file đó được thực thi. Bạn dùng lệnh sau:

$ chmod +x helloworld.py

Sau đó chạy

$ ./helloworld.py
Xin chào Python Viet Nam !

Trong dòng đầu tiên có dấu #!, chúng ta gọi nó là sha-bang. Sử dụng để thông báo cho trình thông dịch Python chạy đoạn code. Dòng tiếp theo trong đoạn code trên chúng ta in ra thông báo. Trong Python chúng ta gọi các dòng văn bản là chuỗi.

Khoảng trắng và thụt đầu dòng

Trong Python khoảng trắng rất quan trọng. Chúng ta phân biệt cách sử dụng dấu khoảng trắng. Khoảng trắng trong dòng đầu tiên được xem như dấu thụt đầu dòng. Nhưng nếu sử dụng sai thì sẽ báo lỗi.

Ví dụ như sau:

>>> a = 12
>>> a = 12
File "<stdin>", line 1
a = 12
IndentationError: unexpected indent
^

Chú ý: Có một dấu cách đầu tiên gây ra lỗi trong đoạn code trên, do đó chúng ta cần đặt dấu thụt đầu dòng thích hợp.

Chúng ta có một số chú ý cho việc sử dụng dấu khoảng trắng và định danh như sau

Sử dụng 4 dấu cách cho thụt đầu dòng.
Không sử dụng tab và dấu cách lẫn nhau.
Cách 1 dòng trắng giữa các hàm.
Cách 2 dòng giữa các class.

Comments là một đoạn văn bản được viết trong code, chúng được sử dụng để giải thích hoặc chú thích cho người khác hiểu về đoạn code đó. Một đoạn comment bắt đầu bằng dấu #, mọi thứ sau dấu comment không được thực thi trong chương trình.

Ví dụ

>>> # This is a comment
>>> # The next line will add two numbers
>>> a = 12 + 34
>>> print c #this is a comment too 🙂

Comments giúp cho lập trình viên dễ dàng cải tiến mã nguồn, ghi chú các chức năng của đoạn code thực hiện, nó có thể là người viết, ngày viết.

# FIXME -- fix these code later
# TODO -- in future you have to do this

Modules trong Python là các tập tin chưa các hàm được định nghĩa sẵn, biến cái mà chúng ta có thể sử dụng lại, nó cũng có đuôi mở rộng là .py. Python đã cung cấp sẵn một số module mặc định. Chúng ta có thể sử dụng chúng. Để sử dụng chúng ta cần dùng lệnh import. Ví dụ như sau:

>>> import math>>> print math.e2.71828182846

Chúng ta sẽ tìm hiểu chi tiết về các Module trong các phần sau. Chúc các bạn thành công!

Check IP spam list

 Python System  Chức năng bình luận bị tắt ở Check IP spam list
Th2 112019
 

Hi bà con,
Hôm nay Hà Nội lạnh, vừa đến cơ quan tránh lạnh thì nghe tin Email liệt vào Spam list. Ngồi check bằng tay lâu quá nên tìm một đoạn tự động check. Share bà con coi thử nhé.

#check email spam 25-01-2016
import dns.resolver
import sys
#danh sach cac ong
bls = ["zen.spamhaus.org", "spam.abuse.ch", "cbl.abuseat.org", "virbl.dnsbl.bit.nl", "dnsbl.inps.de",
    "ix.dnsbl.manitu.net", "dnsbl.sorbs.net", "bl.spamcannibal.org", "bl.spamcop.net",
    "xbl.spamhaus.org", "pbl.spamhaus.org", "dnsbl-1.uceprotect.net", "dnsbl-2.uceprotect.net",
    "dnsbl-3.uceprotect.net", "db.wpbl.info"]
 
if len(sys.argv) != 2:
    print 'Usage: %s <ip>' %(sys.argv[0])
    quit()
 
myIP = sys.argv[1]
 
for bl in bls:
    try:
        my_resolver = dns.resolver.Resolver()
        query = '.'.join(reversed(str(myIP).split("."))) + "." + bl
        answers = my_resolver.query(query, "A")
        answer_txt = my_resolver.query(query, "TXT")
        print 'IP: %s IS listed in %s (%s: %s)' %(myIP, bl, answers[0], answer_txt[0])
    except dns.resolver.NXDOMAIN:
        print 'IP: %s is NOT listed in %s' %(myIP, bl)
alt text

Demo phát

Chúc bạn thành công!

Python for InfoSec Use case: Auto Scanning to SSL Vulnerability

 Python Security  Chức năng bình luận bị tắt ở Python for InfoSec Use case: Auto Scanning to SSL Vulnerability
Th2 112019
 

Giới thiệu công cụ:
Công cụ có tác dụng kiểm tra các lỗi về SSL của hệ thống của bạn như: HeartBleed, CCS Injection, SSLv3 POODLE, FREAK…
Công cụ hỗ trợ các lỗi:
[CVE-2014-0160] CCS Injection
[CVE-2014-0224] HeartBleed
[CVE-2014-3566] SSLv3 POODLE
[CVE-2015-0204] FREAK Attack
[CVE-2015-4000] LOGJAM Attack

Cài đặt

A. Tải về từ git
git clone https://github.com/pythonvietnam/a2sv
cd a2sv
B. Cài đặt Python + OpenSSL

pip install argparse 
pip install netaddr 

apt-get install openssl

C. Chạy công cụ A2SV

python a2sv.py -h

Ví dụ bạn thực hiện kiểm tra bằng lỗi bằng câu lệnh

python a2sv.py -t 127.0.0.1 
python a2sv.py -t 127.0.0.1 -m heartbleed 
python a2sv.py -t 127.0.0.1 -p 8111

Cập nhật bằng lệnh

python a2sv.py -u 
python a2sv.py --update

Chúc các bạn thành công!