THẢO LUẬN

thg 10 25, 2015 5:25 CH

@wow_so_good Cảm ơn bạn đã quan tâm (honho)

0
thg 10 24, 2015 6:24 CH

Bài viết rất hay. Cám ơn bạn!

0
thg 10 23, 2015 4:48 SA

Cảm ơn bài viết của bạn rất nhiều.

0
Avatar
đã bình luận cho bài viết
thg 10 22, 2015 9:21 CH

I like it 😃

0
thg 10 22, 2015 6:09 CH

Hay đấy anh Hoài. Bài tới a hướng dẫn multi-screen đê. He he.

0
Avatar
đã bình luận cho bài viết
thg 10 20, 2015 9:15 CH

@pwkeygen Bàn phím của Thinkpad công nhận là rất tốt 😄 Tuy nhiên nếu có thể bạn cứ hãy thử dùng bàn phím cơ nhé! Không phải tự nhiên mà người ta lại tôn vinh nó nhiều đến vậy (honho)

0
thg 10 14, 2015 1:48 SA

Mình vẫn ko rõ cái token và download

  1. làm sao chứng thực dc token là của đúng người.
  2. làm sao để mọi thực hiện download đều qua download action filter
0
thg 10 13, 2015 6:52 CH

Có áp dụng cho đánh chỉ mục và tìm kiếm bằng Tiếng việt không chủ thớt?

0
thg 10 7, 2015 8:11 SA

A ơi. Sao ảnh hướng dẫn k load được ạ. A chỉnh sửa lại giúp e với.

0
thg 10 6, 2015 8:53 CH

dislike, ko hề đầu tư, chăm chút cho bài viết...

0
thg 10 6, 2015 4:36 CH

@kevin.nguyen.8699 Đây là đoạn code sample thôi bạn ^^. Mình chỉ focus vào phương thức đang được đề cập đến ở Factory và nội dung chính của bài viết, việc implements ai dùng abstract và interface đều hiểu rồi nên không quan trọng trong bài viết này 😄 Hơn nữa các IDE hiện giờ đều báo cần implements các method trong interface và abstract function nếu có 😄

0
thg 10 5, 2015 10:24 CH

@pdling Cảm ơn bạn. Mình mới bổ sung thêm chi tiết hơn về quá trình thống nhất phương pháp mã hoá và giải mã trên client và server.

Để thực hiện cơ chế mã hoá và giải mã giữa client và server, chúng ta cần phải có một cặp khoá chung, cả 2 đều biết nhưng bảo mật, gọi là session key. Để bảo mật session key này, thì chúng ta cần sử dụng phương pháp mã hoá bất đối xứng, hay nói cách khác, chúng ta cần có một cặp khoá private key và public key. Chi tiết về quá trình handshake (bắt tay) trao đổi dữ liệu ban đầu của server và client sẽ diễn ra như sau:

  1. Client sẽ yêu cầu một kết nối bảo mật tới server, và cung cấp cho server danh sách những phương pháp mã hoá (ciphers and hash functions) mà client hỗ trợ.

  2. Từ danh sách đó, server chọn ra cipher và hash function mà nó có và thông báo lại cho client biết.

  3. Cạnh đó, server gửi kèm theo chứng chỉ số (digital certificate) bao gồm các thông tin như server name, đơn vị cung cấp chứng chỉ (CA - Certificate Authorities) và public key.

  4. Client sẽ liên lạc với CA đã cung cấp chứng chỉ cho server trên, và kiểm tra tính hợp lệ của chứng chỉ này.

  5. Sau đó, client sẽ bắt đầu sinh ra một session key, bằng cách sinh ra một số ngẫu nhiên và mã hoá nó bằng public key của server. Sau đó gửi Session Key này đến server. Và server sẽ dùng private key để giải mã nó và lấy được số ngẫu nhiên đó.

  6. Từ số ngẫu nhiên này, server và client sẽ dùng để mã hoá thông tin trao đổi bằng thuật toán khoá đối xứng (symmetric-key algorithm).

0
thg 10 5, 2015 6:25 CH

thanks. This article is very useful.

0
thg 10 5, 2015 4:21 SA

@TrungCr Bạn tham khảo cài đặt trên Windows nhé !

https://github.com/Automattic/node-canvas/wiki/Installation---Windows

0
Avatar
đã bình luận cho bài viết
thg 10 3, 2015 6:31 SA

cho mình hỏi là AnimationDrawable thì file xml chứa các frame được tạo trong thư mục Drawable hay tạo 1 file Anim ngang hàng với file Drawable rồi tạo 1 file xml trong thư mục Anim? mình thấy 2 cách đều được nhưng ko rõ là nên làm theo cách nào?

0
thg 10 3, 2015 4:36 SA

"Server sẽ làm nhiệm vụ giải mã TLS và nhận lại đuợc request HTTP ban đầu, sau đó xử lí và response sẽ lại đuợc mã hoá gửi lại cho browser thông qua TLS" & "Trong đó public key sẽ đuợc server gửi đến browser để mã hoá dữ liệu, còn private key sẽ đuợc server dùng để giải mã" => 1 câu hỏi nhỏ là browser dùng cái gì để giải mã HTTP response khi mà không có private key?

0

lúc đầu tớ làm theo hướng dẫn nhưng đến chỗ chạy lệnh "rails generate i18n:js:config" thì báo lỗi. Sau đó mình search và đã tìm ra cách sửa: thay vì include (gem "i18n-js") mình sẽ include (gem "i18n-js", "3.0.0.rc10"). sau đó mọi thứ chạy bt.

0
thg 10 1, 2015 4:32 CH

vậy với dự án support cả iOS 7 thì nếu muốn dùng tính năng upload from Photoalbum thì lại if else code để sử dụng AssetsLibrary nhỉ?

0
thg 10 1, 2015 1:16 SA

Thank for share 😃 Zsh mạnh ở cái plugin + cộng đồng phát triển nữa, phần sau giới thiệu về cái này nữa đi anh 😉 Có gì thử qua fish shell cũng ok lắm anh ạ. Fish shell hỗ trợ cũng tốt, nhất là về complete, history và color đẹp nữa 😃

0

java web ak mình đang làm chỉ đường mà mình bị đứng lại vì không biết hướng để đi tiếp mình làm theo hướng dẩn của bạn để đưa cái địa điểm vào mà nó không nhận cái input phải o trong maps nó mới hiểu và dánh dấu trên bản đồ còn từ form thì nó không nhận vi dụ nhu thế này:mình dùng css với java lập trình theo mô hình MVC From:

<div class="col-md-3"> <form> <div class="form-group"> <input id="diemdau" class="form-control" type="text" placeholder="Điểm đi">
<input id="" class="form-control" type="text" placeholder="Điểm đến" />
<select class="form-control"> <option><a role="menuitem" tabindex="-1" href="#">Chuyển ít nhất</a></option> <option><a role="menuitem" tabindex="-1" href="#">Trạm xe gần nhất</a></option> <option><a role="menuitem" tabindex="-1" href="#">Quảng đường ngắn nhất</a></option> <option><a role="menuitem" tabindex="-1" href="#">Đi bộ ít nhất</a></option> </select>
<button class="btn btn-block btn-success">Tìm đường</button> <span id="me"></span> </form> </div> <!---/alert("chet roi")--> <!-- map v3-->
</div> Đoạn script: <script>
function initMap() {
	  var map = new google.maps.Map(document.getElementById('map'), {
	    center: {lat:10.016667, lng: 105.783333},
	    zoom: 13
	  });

	  var input = document.getElementById('diemdau');

	  var autocomplete = new google.maps.places.Autocomplete(input);
	  autocomplete.bindTo('bounds', map);


	  var infowindow = new google.maps.InfoWindow();
	  var marker = new google.maps.Marker({
	    map: map
	  });
	  marker.addListener('click', function() {
	    infowindow.open(map, marker);
	  });

	  autocomplete.addListener('place_changed', function() {
	    infowindow.close();
	    var place = autocomplete.getPlace();
	    if (!place.geometry) {
	      return;
	    }

	    if (place.geometry.viewport) {
	      map.fitBounds(place.geometry.viewport);
	    } else {
	      map.setCenter(place.geometry.location);
	      map.setZoom(15);
	      
	    }

	    // Set the position of the marker using the place ID and location.
	    marker.setPlace({
	      placeId: place.place_id,
	      location: place.geometry.location
	    });
	    marker.setVisible(true);

		     infowindow.setContent('<div><strong>' + place.name + '</strong><br>' +
		        place.formatted_address); 
	    infowindow.open(map, marker);
	   }); 
	}
0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí