Thứ Năm, 21 tháng 6, 2018

Big Viking Games lại tiếp tục đặt cược vào HTML5

Big Viking Games, một studio game mobile độc lập và có trụ sở tại Canada và là người dẫn đầu trong sản phẩm trò chơi mobile HTML5, đã nhận được 21,75 triệu đô la (17,4 triệu đô la) từ Ngân hàng Hoàng gia Canada (RBC), Export Development Canada ( EDC) và BDC Capital.

 big-viking-game-tiep-tuc-dau-tu-lon-vao-html5

Gameming house đang tìm phương pháp đảm bảo tài chính nhiều hơn nhằm tăng thêm ít nhất 60 triệu USD - với niềm tin rằng việc đầu tư vào HTML5 sẽ giúp họ mở rộng khoảng cách giữa bản thân và đối thủ cạnh tranh.

 

Kể từ khi sáng lập, tổ chức đã đạt được mức sinh lời cao với 55% CAGR trên doanh thu và 180% trên EBITDA. Đơn vị 05 tuổi này đã tự lớn lên mà không có bất kỳ nguồn vốn đầu tư mạo hiểm hoặc đầu tư cổ phần nào khác cho đến nay.

 

Albert Lai, Co-founder và CEO của Big Viking Games cho biết: “Bắt đầu từ năm 2012, chúng tôi đưa ra quyết định đầu tư đáng kể vào các sản phẩm trò chơi HTML5 ngay lập tức vì chúng tôi thấy tiềm năng của công nghệ và cách xác định tương lai của sản phẩm trò chơi trên thiết bị mobile và giải trí, ”Albert Lai, đồng sáng lập và CEO, Big Viking Games nói. "Những người khác đã rời khỏi HTML5 do đầu tư kỹ thuật cần thiết nhưng chúng tôi tin rằng các tiêu chuẩn mở và các thiết bị tuyệt vời hơn sẽ mở đường cho một sự biến đổi lớn trên smart phone và máy tính bảng."

Xem thêm: Học lập trình cần những gì

Lai cho biết thêm: “Mặc dù chúng tôi tập trung vào HTML5 với các sản phẩm game tức thì Triple-A có thể được phân phối trên nhiều nền tảng mobile mạnh mẽ, chẳng hạn như ứng dụng messenger, chúng tôi không chắc chúng tôi có thể tìm được nhà đầu tư phù hợp những ngày đầu. Bây giờ chúng tôi có nhiều triệu đô la ngân quyển sách trong các tác phẩm để phân phối trên nền tảng mới và sắp tới, nhà đầu tư có thể thấy chiến lược kinh doanh của chúng tôi đang trên đà đổi thay tương lai như thế nào. ”

 

RBC, trong quan hệ đối tác với EDC, đã cung cấp cho Big Viking 18 triệu $ tài trợ, trong khi BDC đóng góp 3,75 triệu $ trong một vòng trước đó đã được trả lại với lợi nhuận của công ty.

Thứ Tư, 20 tháng 6, 2018

Tại sao mình không dùng preprocessors CSS

Bất cứ khi nào mình đề cập đến việc tôi không sử dụng các preprocessors CSS, mình có xu hướng có ngạc nghiên từ những người không thể tưởng tượng được việc viết CSS mà không có Sass. Và vì thế mình phải bảo vệ sự chọn lựa của tôi và giải nghĩa tại sao, hết lần này đến lần khác. Một số người sẽ hiểu, hầu hết sẽ không. Hoặc họ không muốn. Nhưng đây là một nỗ lực để giải thích lý do của mình.

 tai-sao-toi-khong-su-dung-bo-tien-xu-ly-css

Quay lại khi các preprocessors CSS đầu tiên được đưa vào thời trang, mình đã thử sử dụng chúng. Và sau đó vài năm một lần, do áp lực bên ngoài và dai dẳng, tôi đã có diện mạo mới và cho họ cơ hội mới. Nhưng đối với mình, họ luôn cảm thấy như các giải pháp cần xử lý vấn đề. Đó là, mình không thật sự tìm ra được "vấn đề" với CSS mà các nhà tiền xử lý dự định giải quyết các vấn đề. Quy mô của trang web tôi đang xây dựng không trọng điểm, có thể là website nhỏ chỉ với một vài trang tĩnh hoặc mạng nội bộ công ty khổng lồ. mình chỉ ngắn gọn là không bao giờ cảm thấy sự cần thiết cho mixins, làm tổ hoặc mở rộng.

 

Một list các lý do sau đó:

 

mình không cảm thấy các tiền giải quyết CSS "vấn đề" có ý định giải quyết là đủ nghiêm trọng để đảm bảo chi phí, tức là với tôi giải pháp tồi tệ hơn vấn đề.

mình muốn kiểm soát tuyệt đối CSS của mình, có nghĩa rằng tôi muốn làm việc với nó, và tham khảo chính xác những gì sẽ được gửi đến trình duyệt (tuyệt vời, trước khi nó được minified và gzipped, tất nhiên). Nếu điều đó cho thấy nhìn thấy cùng một khai báo lặp đi lặp lại trong một số quy tắc, hoặc phải đọc tiền tố nhà cung cấp trông như thế nào, vì vậy hãy là nó. Đối với tôi, WET CSS dễ hiểu hơn và có thể bảo trì hơn so với hộp giả CSS màu đen DRY.

mình không muốn tìm hiểu và lệ thuộc vào một cú pháp không chuẩn để đóng gói CSS của mình, làm cho nó cần phải biên dịch trước khi các trình duyệt có thể hiểu được nó. mình cũng không muốn đồng nghiệp của tôi phải làm như vậy.

Tôi muốn CSS nguồn của tôi có thể triển khai mọi lúc, mặc dù ở dạng chưa được rút gọn, không được ghép nối. Nếu quá trình xây dựng của mình không thành công, vì bất kỳ lý do gì (như một mô-đun npm chưa được xuất bản), mình có thể open beta CSS nguồn như một giải pháp khẩn cấp. Hiệu suất có thể có thể mất một hit, nhưng một website hơi chậm hơn có khả năng tuyệt vời hơn so với một website bị hỏng hoặc không có CSS ​​cho đến khi quá trình xây dựng có thể được cố định.

mình không muốn phải chờ đợi để biên dịch trước khi nhìn thấy kết quả của những đổi thay CSS của tôi. Thời gian xử lý có thể là bất cứ điều gì từ không đáng kể đến bực bội, rõ ràng, nhưng nếu mất nhiều thời gian hơn để tôi chuyển từ trình chỉnh sửa mã sang browser của mình và load lại trang (≈1s) thì quá chậm.

Tôi hoàn toàn nhận thức được rằng nhiều người sử dụng các bộ tiền xử lý CSS sẽ không đồng ý với hầu hết hoặc tất cả những điều trên. Tôi đã biết rằng vì thế không cần phải nói với tôi :-).

Xem thêm:Học lập trình

Tuy nhiên, mình không sử dụng Sass hoặc các bộ tiền xử lý CSS khác như cssnext không có nghĩa là tôi không sử dụng các bộ giải quyết CSS. Sự khác biệt, như mình thấy, là liệu CSS của bạn có yêu cầu biên dịch hay không trước khi các browser có thể hiểu nó, điều mà mình thực sự muốn tránh.

 

Tôi sử dụng PostCSS (với các plugin của bên thứ ba và những cái tôi đã tự viết) và CSScomb làm người trợ giúp cho những thứ như:

 

- Sắp xếp các khai báo và sửa các vấn đề về kiểu code hóa với CSScomb

- Tự động chèn tiền tố của nhà cung cấp vào bất cứ nơi nào họ cần (hoặc xóa chúng ở bất cứ đâu)

- Chèn dự phòng cho thuộc tính tùy chỉnh

- Iinting CSS

Tôi thiết lập cả CSScomb và PostCSS để làm việc trên CSS nguồn của tôi, có nghĩa rằng tôi luôn thấy kết quả. Không có hộp đen. tôi có thể save tệp của tôi và tải lại ngay lập tức mà không cần phải chờ biên dịch (vì các thay đổi chủ yếu là tiền tố của nhà cung cấp và tiền tố / chỉ có thể được chèn một lần). Nhưng các tool giúp mình tiết kiệm được một số phương pháp gõ và sửa chữa hầu hết các mâu thuẫn kiểu mã hóa đối với tôi. Đó là loại giải quyết CSS của tôi.

Thứ Ba, 19 tháng 6, 2018

Review sách: RESTful Java Web Services Security

RESTful APIs đã là động lực trong vài năm qua để cho phép một loạt ứng dụng khách (di động hoặc web). Với thế giới mà chúng ta đang sống ngày hôm nay, việc bảo đảm các điểm cuối này là rất quan trọng do những thiệt hại tiềm năng mà kẻ tấn công có thể gây ra nếu các điểm cuối không được bảo đảm đủ. Tài liệu về security các dịch vụ REST trên web cực hiếm và xa.

gioi-thieu-sach-hay-ve-java-restful-apis

Cuốn sách của Packt Pub được phục vụ để xử lý chủ đề trọng điểm này về các dịch vụ Web RESTful Java Web an toàn. Dưới đây là những điểm nổi bật của Cuốn sách:

- Quyển sách start bằng phương pháp thiết lập môi trường phát triển và ứng dụng mẫu cơ bản. Nó tập trung vào JBOSS và việc thực hiện RESTEasy và ý tưởng là để có được tính năng và hoạt động của Dịch vụ REST của bạn. Đây là một cách thức tiếp cận đơn giản và hiệu quả theo ý kiến ​​của tôi.


- Chap tiếp theo tập trung vào các vấn đề cơ bản về bảo mật khác nhau bao gồm xác thực, ủy quyền và sau đó xác thực dựa trên cơ sở và chứng chỉ. Nó cũng cung cấp tổng quan về Khóa API để bảo mật.


- 3 Chương tiếp theo tập trung vào RESTEasy và các cơ chế mà nó có để security các điểm cuối API của bạn. Phạm vi bao gồm việc sử dụng chú thích và triển khai bảo mật có lập trình. Các chủ đề khác bao gồm OAuth, Chữ ký số và code hóa nội dung thư.

Xem thêm: Lập trình Java


Mình đặc biệt thích phương pháp tiếp cận có cách thức bao gồm các lĩnh vực an ninh khác nhau. Không phải tất cả các cơ chế này sẽ áp dụng cho việc open beta của bạn và do đó hữu ích nhất là tham khảo xét chúng một cách thức riêng biệt. Nếu bạn đang kiếm tìm một cái nhìn tổng quan tốt về các khái niệm REST Security và nếu JBOSS / RESTEasy là các công cụ chọn lựa của bạn, thì đây là một sách hay.

Thứ Năm, 7 tháng 6, 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 hiểm, do vậy 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, cữ 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ảng giải:

$ 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 sử dụng (sẽ được dùng sau)

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

Tiếp theo, rà 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
bây chừ chúng ta có thể thêm một số hạn chế.

trước tiên, chúng tôi sẽ thẩm tra xem tệp đã tồn tại trong thư mục "tải lên" chưa. Nếu có, thông tin 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. quơ 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 hiện nay 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.";
   

?>

Stack Overflow đã phát hành nghiên cứu hàng năm về ngành công nghiệp lập trình.

Công ty cho biết ấn bản 2018 của nó đại diện cho nghiên cứu 'lớn nhất từng có' về thái độ, lương và nhân khẩu học của nhà phát triển...