[Dev tip] Browser extensions to display GitHub code in tree format

https://github.com/buunguyen/octotree

Browser extensions (Chrome, Firefox, Safari and Opera) to display GitHub code in tree format. Useful for developers who frequently read source in GitHub and do not want to download or checkout too many repositories. Features:

  • Easy-to-navigate code tree like IDEs
  • Fast browsing with pjax
  • Support private repositories (require personal access token)

[Dev tip] “An existing connection was forcibly closed by the remote host” error in WCF service

For a difference, a post that has nothing to do with SharePoint, but rather with WCF. In my team today, we had a really strange behavior of one of our web services. Everything was ok, except in one method, which was always on the client side throwing the following exception:

“An error occurred while receiving the HTTP response to http://ServiceHost/ServiceName.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.”

Looking at the inner exceptions, two more levels could be noticed:

The underlying connection was closed: An unexpected error occurred on a receive.

and

An existing connection was forcibly closed by the remote host

Googling it didn’t happen too much – some answers were going into direction that complex objects can not be serialized (which is not true, by the way), and other answers were going into direction that the serialized message length was too large, and that the maxRequestLength should be increased in web.config, something like:

<httpRuntime maxRequestLength=”Xyz”…. />

But hey, we were in the test phase, and our serialized messages were really small, this could not be it…

…or wait, could it be?

I looked again on our objects that we are serializing, and saw something like

1
2
3
4
5
6
7
8
9
10
public class MyClass
{
    public int Id { get; set; }
    
    public string Name { get; set; }
    
    public MyClass Parent { get; set; }
    
    public List<MyClass> Children { get; set; }  
}

OK, that’s it. In an instance of the object, we hold the instance of the parent object, and list of instances of the children objects. And while that’s ok in .NET class, because we are dealing with the “pointers” to the parent and child objects, it looks much different when we serialize it. It serializes the object, then it’s parent object, then the children of the parent object (our starting object is among them), then again the parent… And it serializes infinitely. Until we hit the maximal message size, whatever it would be.

Now, once the problem was diagnosed, the solution was also more than simple – we just put the DataContract attribute on the object, and exclude the “Parent” object property from the contract. Instead, we created a ParentObjectId property, getter only, which only returns the parent’s id.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[DataContract]
public class MyClass
{
    [DataMember]
    public int Id { get; set; }
    
    [DataMember]
    public string Name { get; set; }
    
    //Notice - no [DataMember] here...
    public MyClass Parent { get; set; }
    
    [DataMember]
    public int ParentId
    {
        get
        {
            return this.Parent.id;
        }
    }
    
    [DataMember]
    public List<MyClass> Children { get; set; }
}

And voila – in the .NET libraries, we can still use the beauty of parent and children collection objects, and when we serialize it, we use the parent ids. Works like a champ. Simple problem, simple solution, but it has caused some thinking on our side.

[Dev tip] Cannot consume WCF service. (413) Request Entity Too Large

<bindings>
 <basicHttpBinding>
 <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
 <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
 </binding>
 </basicHttpBinding>
</bindings>

Check IIS uploadreadaheadsize and set to 204800

cscript adsutil.vbs set w3svc/1/uploadreadaheadsize 204800

and increase max buffer size at send and receive port binding Properties . Restart the IIS and Host instance .

[Infographic] Cách kéo dài tuổi thọ của bạn tại nơi làm việc

header. ​


Trong cuộc sống, chắc hẳn ai cũng mong muốn được khỏe mạnh, trường thọ. Người ta làm đủ mọi cách để kéo dài tuổi thọ của mình như ăn uống theo chế độ dinh dưỡng, sử dụng các loại thảo dược quý, các loại thuốc bổ,… Nhưng ít ai biết được những hoạt động hết sức đơn giản có thể thực hiện ngay tại nơi làm việc lại có thể giúp con người sống lâu hơn.

Đứng nhiều hơn, ngồi ít đi là nguyên tắc đầu tiên, kết hợp với các hoạt động khiêu vũ, ngồi bóng Yago, lên xuống cầu thang,… là những bí quyết kéo dài tuổi thọ. Hướng dẫn chi tiết được trình bày trongInfographic dưới đây.

Cach keo dai tuoi tho cua ban tai noi lam viec.

[Discovery] Khoa học công nghệ trong chiến tranh thế giới thứ I: Máy bay

banner. ​


Từ nhiều thế kỷ trước chiến tranh thế giới thứ I, các cuộc chiến vẫn được tiến hành trên đất liền hoặc trên biển. Nhưng đến khi thế chiến thứ I nổ ra vào năm 1914, “những cỗ máy biết bay” đã bắt đầu gây được sự chú ý của toàn thế giới. Bấy giờ, những chiếc máy bay được sử dụng chủ yếu tại chiến trường châu Âu với thiết kế vẫn còn khá thô sơ. Một số nhà quân sự đương thời cho rằng đây là một thiết bị quân sự quá mới lạ, không đáng tin cậy thậm chí bị xem là vô dụng. Tuy nhiên, một số nhà quân sự đã có tầm nhìn xa hơn: Đô đốc hải quân Anh, Jacky Fisher cho rằng “chiến tranh sẽ được chiến thắng bằng những phát minh.” Và lịch sử đã chứng minh cho nhận định của Fisher là hoàn toàn đúng.

Những cuộc đối đầu trên không

Trước chiến tranh thế giới thứ I, máy bay và những phương tiện trên không có thể điều khiển là khinh khí cầu được sử dụng với mục đích trinh sát. Vào năm 1911, lực lượng quân đội Ý đang tham chiến tại chiến trường Thỗ Nhĩ Kỳ đã dùng tay ném những quả lựu đạn về phía đối phương từ trên những chiếc máy bay 1 tầng cánh do Đức sản xuất, đánh dấu cuộc tấn công đầu tiên có sử dụng máy bay trong lịch sử quân sự của con người.

Tuy nhiên, mãi tới những năm 1914 thì một số lượng lớn máy bay được sản xuất vẫn chưa chính thức phục vụ cho mục đích chiến tranh. Thí dụ điển hình là một hạm đội gần 140 máy bay của Pháp đã được sản xuất những vẫn không được thiết kế để tham gia chiến đấu. Hầu hết chỉ có thể bay từ 2 đến 3 giờ trên không và chưa được trang bị vũ khí. Đồng thời, tốc độ vận hành và tác chiến của những chiếc máy bay này vẫn còn khá chậm chạp.


Một bản sao của chiếc chiến đấu cơ B.E.2c thuộc biên chế không quân Anh trong thế chiến thứ I​


Điển hình như chiếc chiến đấu cơ của quân đội Anh: B.E.2c Đây là mẫu máy bay 2 tầng cánh có thể đạt vận tốc cực đại là 116 km/h. Được trang bị động cơ 90 mã lực, tương đương với động cơ trên một chiếc xuồng máy, và thời gian bay không thể vượt quá 3 giờ. Đây không phải là một thứ vũ khí chiến tranh có thể dễ dàng gây khiếp sợ cho đối phương.

Thêm vào đó, do không được trang bị súng máy hay các loại vũ khí khác nên trong giai đoạn đầu, những cuộc đối đầu trên không đúng nghĩa giữa các chiến đấu cơ 1 tầng cánh là điều khá hiếm hoi. Thay vào đó, phi công thường mang theo súng ngắn hoặc súng trường để bắn vào phi công đối phương khi đang đối đầu trên không.

Theo ghi chép, trong một cuộc đối đầu trên không vào năm 1914, một phi công Anh đã ném khẩu súng ngắn hết đạn về phía phi công Đức và tiêu diệt được chiếc máy bay của đối phương. Câu chuyện cho thấy máy bay quân sự trong giai đoạn đầu vẫn còn là một loại khí tài khá đơn sơ và kém phát triển.

Việc ném bom từ máy bay trong giai đoạn đầu của thế chiến thứ I cũng đơn giản tương tự, chủ yếu là theo chiến thuật “hên xui” (hit-or-miss): Một phi công phụ (nếu có) sẽ thực hiện thao tác đơn giản là thả một quả bom nhỏ vào máy bay hoặc cứ địa của đối phương phía bên dưới. Việc ném trúng mục tiêu bằng phương pháp này thật sự có yếu tố may mắn hơn là đòi hỏi có kỹ năng chiến đấu cao.

Không mục tiêu nào là không thể tiếp cận

HP-O-400-D8145.
Hình ảnh chiếc máy bay ném bom Handley Page O/400 đang hạ cánh tại sân bay không lực hoàng gia Anh, Androver (ảnh chụp năm 1918)​


Mặc dù những hạn chế trong giai đoạn ban đầu, các nhà hoạch định quân sự đã nhận thấy những tiềm năng lớn trong việc áp dụng máy bay quân sự vào trong thực hiện tác chiến. Trước đó, chưa bao giờ các tướng lĩnh quân sự có trong tay một phương tiện với khả năng đánh bom các mục tiêu như một nhà máy hay một kho quân nhu cách đó hàng nghìn cây số nơi hậu phương của kẻ thù.

Kể từ lúc đó, những mục tiêu thường bị tấn công bao gồm cầu đường, bệnh viện, trạm xe lửa, các khu thương mại, nhà thờ và kể cả các công trình dân sự đều hứng chịu những đòn tấn công từ trên cao. Các nhà sử học và nghiên cứu quân sự cho rằng, kể từ khi máy bay được sử dụng trong chiến tranh, “không một nơi nào là không thể tiếp cận được” kể cả căn cứ trên những hòn đảo xa xôi và hẻo lánh nhất.

Không dừng lại ở việc trang bị thêm súng ống cho các thế hệ máy bay sẵn có, các nhà hoạch định quân sự và những kỹ sư thời bấy giờ còn liên tục thiết kế, chế tạo thêm nhiều loại máy bay mới để phù hợp với các mục đích cụ thể trong chiến tranh. Những tấm vải căng đã được nhanh chóng thay thế bằng tấm kim loại để chế tạo cánh máy bay.


Video mô phỏng một chiếc Handley Page O/400​


Cho đến khi chiến tranh kết thúc, các kỹ sư đã phát triển nhiều loại máy bay ném bom với khả năng tác chiến vượt trội. Điển hình như Handley Page O/400, chiếc máy bay ném bom lớn nhất của Không lực hoàng gia Anh với sải cánh lên tới 30 mét. Được trang bị 2 động cơ 360 mã lực, mang theo trên mình 1 tấn bom, máy bay ném bom O/400 có thể thực hiện liên tục hơn 8 giờ tác chiến trên không và vận tốc tối đa lên tới 156 km/h.

Vào năm 1917, kỹ sư hàng không người Anh, Geoffrey de Havilland (anh em họ với nữ diễn viên nổi tiếng Olivia de Havilliand và Joan Fortaine) đã thiết kế và chế tạo máy bay DH.5 sử dụng động cơ 250 mã lực của hãng Roll-Royce. Đât là 1 trong những mẫu máy bay ném bom đáng tin cậy nhất trong chiến tranh thế giới thứ I.

800px-Sopwith_F-1_Camel_2_USAF.
Bản sao của chiếc máy bay tim kích một chỗ ngồi Sopwith Camel của không lực hoàng gia Anh​


Lực lượng không quân Anh cũng nhận được danh tiếng khốc liệt nhất với sự ra đời của hàng loạt máy bay tiêm kích, trong đó có mẫu máy bay tiêm kích 1 chỗ ngồi Sopwith Camel. Đây là bước đột phá trong công nghệ máy bay quân sự với 2 súng máy được trang bị phía trước buồng lái. Thành công vượt trội ở đây là chuyển động quay của cánh quạt phía trước được đồng bộ một cách chính xác với từng viên đạn được bắn ra. Điều này khiến chiếc máy bay có thể dễ dàng nhắm bắn và hạ gục mục tiêu một cách chính xác mà những viên đạn không hề bắn trúng cánh quạt phía trước đầu máy bay.

Những mẫu máy bay của Luftstreitkräfte – không quân Đức cũng được trang bị những công nghệ tân tiến nhất thời điểm bấy giờ không kém gì so với chiếc tiêm kích Sopwith của quân đội Anh. Đây là những mẫu máy bay 3 tầng cánh với tính linh động tuyệt vời đã gắn liền với tên tuổi của phi công nổi tiếng Manfred von Richthofen (biệt danh Red Baron – Nam Tước đỏ) từng thực hiện nhiều trận đánh khiến quân thù khiếp sợ.

Hiệp sĩ trên không – Những phi công đã đi vào lịch sử

421px-Manfred_von_Richthofen.
Phi công Manfred von Richthofen (1892-1918) đã được trao tặng huân chương chữ thập xanh, danh hiệu cao quý nhất trong quân đội Đức (Ảnh chụp năm 1917, 1 năm trước khi qua đời)​


Nam Tước đỏ (Red Baron) tên thật là Manfred von Richthofen được sinh ra trong một gia đình quý tộc gốc Phổ. Ông được coi là phi công nổi tiếng nhất trong thế chiến thứ I và còn được gọi là “Ách chủ bài bay”. Trong suốt sự nghiệp chiến đấu, ông đã giành chiến thắng trong hơn 80 cuộc đối đầu trên không trước khi tử nạn bởi một phát đạn vào tim trong trận không chiến tại miền bắc nước Pháp vào năm 1918. Dù vậy, sau khi trúng đạn, ông đã hạ cánh chiếc máy bay của mình an toàn xuống mặt đất và qua đời ngay sau đó.

Một phi công lừng lẫy khác trong thế chiến thứ I cũng nhận được danh tiếng đáng kể còn phải kể đến: phi công René Fonck of France (75 trận thắng) và Billy Bishop đến từ Canada (72 trận thắng), Edward Mannock đến từ Anh với 61 trận thắng và Eddie Rickenbacker thuộc không quân Hoa Kỳ với 26 trận thắng. Tất cả những người đàn ông này và nhiều chiến sĩ khác đã chiến đấu một cách anh hùng trong cuộc chiến tranh tàn bạo bậc nhất lịch sử loài người. Dù được vinh danh nhưng kết quả của những chiến thắng vẫn là máu hòa lẫn với bùn trong những chiến hào cũng như nỗi khiếp sợ từ bầu trời trên khắp châu Âu.

Chiến tranh thế giới thứ I là minh chứng rõ ràng nhất cho tính hữu dụng của máy bay trong chiến đấu. Nhiều mẫu máy bay quân sự sau đó đã được cải tiến bởi các kỹ sư nổi danh và liên tục được cập nhật những công nghệ tối tân nhất. Máy bay và công nghệ chiến tranh tiếp tục được cải thiện và phát triển để tiếp tục phục vụ cho chiến tranh thế giới lần thứ II và nhiều cuộc chiến khác sau này.

[Discovery] Dự án SafeFlame chế tạo thành công thiết bị hàn an toàn, sử dụng nhiên liệu từ điện phân nước

[​IMG]


Mới đây, một máy hàn di động có khả năng tạo ra ngọn lửa từ nước đã được chế tạo thành công trong dự án SafeFlame do các nhà khoa học châu Âu thực hiện. Đây là hệ thống điện phân nước thế hệ mới với chi phí chế tạo rẻ hơn rất nhiều so với trước đây. Đồng thời, với tính an toàn cao, kỹ thuật này mở ra thêm triển vọng khai thác nguồn năng lượng sạch và an toàn từ quá trình điện phân nước nhằm áp dụng cho các ngành công nghiệp, đặc biệt là công nghiệp hàn, thay thế cho việc sử dụng ngọn lửa oxy-axetylen trước đây.

Chuyên gia nghiên cứu trong dự án, kỹ sư công nghệ Andrew Ellis cho biết: “Nói một cách đơn giản, đây là một hệ thống máy điện phân vận hành bằng các nguồn nhiên liệu đầu vào là điện và nước. Nước sẽ tách thành khí Hidro và Oxy. Sau đó, chỉ cần đưa mồi lửa vào là sẽ có một ngọn lửa đủ để hàn sắt hoặc bất kỳ ứng dụng công nghệ nào khác. Về cơ bản, đây là một cỗ máy biến nước thành lửa.”

Trước đây, việc sử dụng thiết bị điện phân bị giới hạn do chi phí chế tạo. Một thiết bị điện phân tiêu chuẩn cần phải có màng lọc chuyên dụng và các chất xúc tác như bạch kim hoặc một số quý kim khác. Do đó, các nhà nghiên cứu muốn làm cho công nghệ này có chi phí hợp lý hơn nhằm có thể phổ biến rộng rãi trên quy mô công nghiệp.

Andrew Ellis cho biết thêm: “Đội ngũ các nhà hóa học của chúng tôi đã nghiên cứu phát triển một công thức chế tạo màng lọc mới nhằm tăng hiệu suất quá trình điện phân. Đồng thời, chúng tôi đã thực hiện rất nhiều nghiên cứu về chất xúc tác điện phân, nhằm tìm cách giảm thiểu số lượng bạch kim và thay thế bằng nhiều loại vật liệu khác rẻ hơn nhưng vẫn đảm bảo được hiệu suất. Và cuối cùng, chúng tôi đã có thể cắt giảm được một lượng lớn chi phí chế tạo cho hệ thống điện phân.”

Trong hệ thống điện phân nước thế hệ mới, Oxy và Hidro sau khi tách sẽ được tái kết hợp tại đầu ra và tạo thành ngọn lửa “mát” và dễ dàng kiểm soát hơn. So với trước đây, các ngọn lửa dùng trong công nghiệp thường sử dụng oxy trong không khí để đốt cháy propan hoặc axetylen. Đối với hệ thống mới, Hidro và Oxy đều được tạo thành và tận dụng tối đa nên có thể cắt giảm được lượng lớn chi phí chất đốt.

Nhà tư vấn công nghệ hàn, Rory Olney cho biết: “Bạn có thể thấy ngọn lửa từ thiết bị này “mát” hơn rất nhiều so với những ngọn lửa Oxy-axetylen trước đây. Đó là do vị trí đầu vòi phun không hề bị làm nóng. Hơn nữa, tại vị trí đầu vòi phun cũng không còn những ánh sáng chói lòa nhằm hạn chế ảnh hưởng xấu của quá trình hàn lên mắt người. Giờ đây, chúng ta chỉ cần mang một chiếc kính thông thường mà không cần các thiết bị bảo hộ mắt chuyên dụng.”

Thêm vào đó, công nghệ hàn trước đây luôn đi kèm với các bình chứa Axetylen, đây công cụ không hề an toàn và có khả năng gây cháy nổ hết sức cao. Thậm chí, một số nơi còn cấm sử dụng công nghệ hàn bằng axetylen do độ an toàn quá thấp. Bên cạnh đó, ngọn lưa từ axetylen cần phải hết sức cẩn trọng khi xử lý các kim loại có tính chất nhạy cảm mà điển hình là nhôm.

Ngoài giải quyết được các vấn đề trên, ngọn lửa hidro còn thể hiện là một phương pháp sạch, thân thiện với môi trường hơn do các nguyên liệu từ đầu vào đến đầu ra hoàn toàn là nước. Theo nhà khoa học vật liệu Nick Ludford, so với phương pháp đốt bằng axetylen vẫn thường được sử dụng trong công nghiệp hàn, phương pháp hidro từ điện phân nước có thể giảm giá thành xuống 20 lần. Đồng thời, phương pháp mới cũng không cần phải tốn thêm chi phí bảo quản, lưu trữ, vận chuyển nhiên liệu để vận hành.

Theo dự kiến trong tương lai gần, kỹ thuật này sẽ thu hút sự quan tâm lớn từ các doanh nghiệp vừa và nhỏ khi các hệ thống đầu tiên chính thức được thương mại hóa. Hiện tại, hệ thống điện phân tiên tiến này đang được kiểm tra chất lượng một cách kỹ lưỡng bởi các chuyên gia hàn tại Anh. Theo các nhà nghiên cứu, đây là một bước đột phá không những tạo ra phương pháp sử dụng ngọn lửa hàn an toàn và sạch hơn mà còn có thể áp dụng vào nhiều ngành công nghiệp khác trong tương lai không xa.