/** * Observe how the user enters content into the comment form in order to determine whether it's a bot or not. * * Note that no actual input is being saved here, only counts and timings between events. */ ( function() { // Passive event listeners are guaranteed to never call e.preventDefault(), // but they're not supported in all browsers. Use this feature detection // to determine whether they're available for use. var supportsPassive = false; try { var opts = Object.defineProperty( {}, 'passive', { get : function() { supportsPassive = true; } } ); window.addEventListener( 'testPassive', null, opts ); window.removeEventListener( 'testPassive', null, opts ); } catch ( e ) {} function init() { var input_begin = ''; var keydowns = {}; var lastKeyup = null; var lastKeydown = null; var keypresses = []; var modifierKeys = []; var correctionKeys = []; var lastMouseup = null; var lastMousedown = null; var mouseclicks = []; var mousemoveTimer = null; var lastMousemoveX = null; var lastMousemoveY = null; var mousemoveStart = null; var mousemoves = []; var touchmoveCountTimer = null; var touchmoveCount = 0; var lastTouchEnd = null; var lastTouchStart = null; var touchEvents = []; var scrollCountTimer = null; var scrollCount = 0; var correctionKeyCodes = [ 'Backspace', 'Delete', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'PageUp', 'PageDown' ]; var modifierKeyCodes = [ 'Shift', 'CapsLock' ]; var forms = document.querySelectorAll( 'form[method=post]' ); for ( var i = 0; i < forms.length; i++ ) { var form = forms[i]; var formAction = form.getAttribute( 'action' ); // Ignore forms that POST directly to other domains; these could be things like payment forms. if ( formAction ) { // Check that the form is posting to an external URL, not a path. if ( formAction.indexOf( 'http://' ) == 0 || formAction.indexOf( 'https://' ) == 0 ) { if ( formAction.indexOf( 'http://' + window.location.hostname + '/' ) != 0 && formAction.indexOf( 'https://' + window.location.hostname + '/' ) != 0 ) { continue; } } } form.addEventListener( 'submit', function () { var ak_bkp = prepare_timestamp_array_for_request( keypresses ); var ak_bmc = prepare_timestamp_array_for_request( mouseclicks ); var ak_bte = prepare_timestamp_array_for_request( touchEvents ); var ak_bmm = prepare_timestamp_array_for_request( mousemoves ); var input_fields = { // When did the user begin entering any input? 'bib': input_begin, // When was the form submitted? 'bfs': Date.now(), // How many keypresses did they make? 'bkpc': keypresses.length, // How quickly did they press a sample of keys, and how long between them? 'bkp': ak_bkp, // How quickly did they click the mouse, and how long between clicks? 'bmc': ak_bmc, // How many mouseclicks did they make? 'bmcc': mouseclicks.length, // When did they press modifier keys (like Shift or Capslock)? 'bmk': modifierKeys.join( ';' ), // When did they correct themselves? e.g., press Backspace, or use the arrow keys to move the cursor back 'bck': correctionKeys.join( ';' ), // How many times did they move the mouse? 'bmmc': mousemoves.length, // How many times did they move around using a touchscreen? 'btmc': touchmoveCount, // How many times did they scroll? 'bsc': scrollCount, // How quickly did they perform touch events, and how long between them? 'bte': ak_bte, // How many touch events were there? 'btec' : touchEvents.length, // How quickly did they move the mouse, and how long between moves? 'bmm' : ak_bmm }; var akismet_field_prefix = 'ak_'; if ( this.getElementsByClassName ) { // Check to see if we've used an alternate field name prefix. We store this as an attribute of the container around some of the Akismet fields. var possible_akismet_containers = this.getElementsByClassName( 'akismet-fields-container' ); for ( var containerIndex = 0; containerIndex < possible_akismet_containers.length; containerIndex++ ) { var container = possible_akismet_containers.item( containerIndex ); if ( container.getAttribute( 'data-prefix' ) ) { akismet_field_prefix = container.getAttribute( 'data-prefix' ); break; } } } for ( var field_name in input_fields ) { var field = document.createElement( 'input' ); field.setAttribute( 'type', 'hidden' ); field.setAttribute( 'name', akismet_field_prefix + field_name ); field.setAttribute( 'value', input_fields[ field_name ] ); this.appendChild( field ); } }, supportsPassive ? { passive: true } : false ); form.addEventListener( 'keydown', function ( e ) { // If you hold a key down, some browsers send multiple keydown events in a row. // Ignore any keydown events for a key that hasn't come back up yet. if ( e.key in keydowns ) { return; } var keydownTime = ( new Date() ).getTime(); keydowns[ e.key ] = [ keydownTime ]; if ( ! input_begin ) { input_begin = keydownTime; } // In some situations, we don't want to record an interval since the last keypress -- for example, // on the first keypress, or on a keypress after focus has changed to another element. Normally, // we want to record the time between the last keyup and this keydown. But if they press a // key while already pressing a key, we want to record the time between the two keydowns. var lastKeyEvent = Math.max( lastKeydown, lastKeyup ); if ( lastKeyEvent ) { keydowns[ e.key ].push( keydownTime - lastKeyEvent ); } lastKeydown = keydownTime; }, supportsPassive ? { passive: true } : false ); form.addEventListener( 'keyup', function ( e ) { if ( ! ( e.key in keydowns ) ) { // This key was pressed before this script was loaded, or a mouseclick happened during the keypress, or... return; } var keyupTime = ( new Date() ).getTime(); if ( 'TEXTAREA' === e.target.nodeName || 'INPUT' === e.target.nodeName ) { if ( -1 !== modifierKeyCodes.indexOf( e.key ) ) { modifierKeys.push( keypresses.length - 1 ); } else if ( -1 !== correctionKeyCodes.indexOf( e.key ) ) { correctionKeys.push( keypresses.length - 1 ); } else { // ^ Don't record timings for keys like Shift or backspace, since they // typically get held down for longer than regular typing. var keydownTime = keydowns[ e.key ][0]; var keypress = []; // Keypress duration. keypress.push( keyupTime - keydownTime ); // Amount of time between this keypress and the previous keypress. if ( keydowns[ e.key ].length > 1 ) { keypress.push( keydowns[ e.key ][1] ); } keypresses.push( keypress ); } } delete keydowns[ e.key ]; lastKeyup = keyupTime; }, supportsPassive ? { passive: true } : false ); form.addEventListener( "focusin", function ( e ) { lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); form.addEventListener( "focusout", function ( e ) { lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); } document.addEventListener( 'mousedown', function ( e ) { lastMousedown = ( new Date() ).getTime(); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'mouseup', function ( e ) { if ( ! lastMousedown ) { // If the mousedown happened before this script was loaded, but the mouseup happened after... return; } var now = ( new Date() ).getTime(); var mouseclick = []; mouseclick.push( now - lastMousedown ); if ( lastMouseup ) { mouseclick.push( lastMousedown - lastMouseup ); } mouseclicks.push( mouseclick ); lastMouseup = now; // If the mouse has been clicked, don't record this time as an interval between keypresses. lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'mousemove', function ( e ) { if ( mousemoveTimer ) { clearTimeout( mousemoveTimer ); mousemoveTimer = null; } else { mousemoveStart = ( new Date() ).getTime(); lastMousemoveX = e.offsetX; lastMousemoveY = e.offsetY; } mousemoveTimer = setTimeout( function ( theEvent, originalMousemoveStart ) { var now = ( new Date() ).getTime() - 500; // To account for the timer delay. var mousemove = []; mousemove.push( now - originalMousemoveStart ); mousemove.push( Math.round( Math.sqrt( Math.pow( theEvent.offsetX - lastMousemoveX, 2 ) + Math.pow( theEvent.offsetY - lastMousemoveY, 2 ) ) ) ); if ( mousemove[1] > 0 ) { // If there was no measurable distance, then it wasn't really a move. mousemoves.push( mousemove ); } mousemoveStart = null; mousemoveTimer = null; }, 500, e, mousemoveStart ); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchmove', function ( e ) { if ( touchmoveCountTimer ) { clearTimeout( touchmoveCountTimer ); } touchmoveCountTimer = setTimeout( function () { touchmoveCount++; }, 500 ); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchstart', function ( e ) { lastTouchStart = ( new Date() ).getTime(); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchend', function ( e ) { if ( ! lastTouchStart ) { // If the touchstart happened before this script was loaded, but the touchend happened after... return; } var now = ( new Date() ).getTime(); var touchEvent = []; touchEvent.push( now - lastTouchStart ); if ( lastTouchEnd ) { touchEvent.push( lastTouchStart - lastTouchEnd ); } touchEvents.push( touchEvent ); lastTouchEnd = now; // Don't record this time as an interval between keypresses. lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'scroll', function ( e ) { if ( scrollCountTimer ) { clearTimeout( scrollCountTimer ); } scrollCountTimer = setTimeout( function () { scrollCount++; }, 500 ); }, supportsPassive ? { passive: true } : false ); } /** * For the timestamp data that is collected, don't send more than `limit` data points in the request. * Choose a random slice and send those. */ function prepare_timestamp_array_for_request( a, limit ) { if ( ! limit ) { limit = 100; } var rv = ''; if ( a.length > 0 ) { var random_starting_point = Math.max( 0, Math.floor( Math.random() * a.length - limit ) ); for ( var i = 0; i < limit && i < a.length; i++ ) { rv += a[ random_starting_point + i ][0]; if ( a[ random_starting_point + i ].length >= 2 ) { rv += "," + a[ random_starting_point + i ][1]; } rv += ";"; } } return rv; } if ( document.readyState !== 'loading' ) { init(); } else { document.addEventListener( 'DOMContentLoaded', init ); } })(); Hướng dẫn đường đi nghĩa trang Yên Kỳ tại Hà Nội

Hướng dẫn đường đi nghĩa trang Yên Kỳ tại Hà Nội

Nghĩa trang Yên Kỳ thuộc xã Phú Sơn, huyện Ba Vì, thành phố Hà Nội. Nghĩa trang này được thành lập từ năm 1963 có diện tích lên tới 384.000m2. Nghĩa trang cũng được mở rộng thêm với diện tích 203,18ha. Đây có thể coi là nghĩa trang cải táng lớn nhất Hà Nội. Với cách quy hoạch mới tạo cho công viên nghĩa trang xanh hơn, nhiều đường lối hơn thì ngày càng có nhiều người chọn nơi đây làm nơi tổ chức tang lễ và mai táng.

Nghĩa trang Yên Kỳ thuộc huyện Ba Vì, Hà Nội
Nghĩa trang Yên Kỳ thuộc huyện Ba Vì, Hà Nội

Vị trí địa lý của nghĩa trang.

Nghĩa trang Yên Kỳ nằm giữa xã Phú Sơn và xã Thái Hòa thuộc huyện Ba Vì, thành phố Hà Nội. Phía Bắc nghĩa trang giáp với đất nông nghiệp xã Phú Sơn; phía Tây giáp với hành lang bảo vệ sông Đà, khu dân cư Phú Sơn và đất nông nghiệp. Còn phía Đông, Đông Nam giáp với Yên Kỳ cũ cùng tuyến giao thông Quốc lộ 32 đi hồ suối Hai. Phía Nam lại giáp tỉnh lộ 411C và khu dân cư Phú Sơn.

Đường đi đến nghĩa trang cũng không hề khó. Từ Hà Nội bạn đi Đại Lộ Thăng Long, đi tiếp theo quốc lộ 32 sẽ tới nghĩa trang Yên Kỳ. Đường hơi hẹp nên bạn cần cẩn thận khi đi trên đường.

>>> Xem thêm: Giá đất nghĩa trang Vĩnh Hằng Ba Vì chi tết (cập nhật 2021)

Quy hoạch công viên nghĩa trang

Hiện tại nghĩa trang có hơn 100.000 mộ có danh và 20.000 ngôi mộ vô danh đã được cải táng. Hơn 20.000 ngôi mộ này nằm rải rác ở nhiều khu khác nhau nhưng chủ yếu nằm trong khu vực Hà Nội. Mặc dù đã quy hoạch chia hàng lối và đánh số thứ tự rõ ràng nhưng do quản lý lỏng, mỗi ngôi mộ lại xây bè ra khiến lối đi vào ngày càng chật hẹp.

Trong quy hoạch, diện tích công viên nghĩa trang sẽ được mở rộng thêm 203,18ha. Phần đất được mở rộng thêm này thuộc địa bàn xã Phú Sơn và xã Thái Hòa.

Nghĩa trang Yên Kỳ được nhiều người lựa chọn để mai táng người thân.
Nghĩa trang Yên Kỳ được nhiều người lựa chọn để mai táng người thân.

Diện tích phần đất mở rộng được chia là nhiều khu vực khác nhau trong công viên. Trong đó có tới 66,32 ha diện tích đất để trồng cây xanh, xây dựng công viên, cách ly, cây xanh dọc tuyến giao thông và cảnh quan công viên. Còn khoảng 56,68ha ( chiếm 27,9%) là diện tích đất cát táng bao gồm 34 khu và có ký hiệu từ C1 cho đến C3. Diện tích đất hung táng chiếm khoảng 13,29ha bao gồm 6 khu có ký hiệu từ A1 cho đến A6. Còn hơn 5,94ha đất an táng chôn một lần ký hiệu từ B1 đến B3 và có tới 3 khu.

Tổng diện tích quy hoạch của nghĩa trang là 582,91ha. Đây là một loại hình nghĩa trang mới hay còn được gọi là nghĩa trang xanh. Nơi đây được nhiều người lựa chọn để làm nơi an nghỉ cho người thân của mình.

Cảnh quan nghĩa trang.

Toàn bộ khu nghĩa trang là một quần thể tâm linh thông qua các chủ thể là các khu mộ nằm trong không gian xanh tĩnh lặng và vĩnh hằng. Các kiến trúc tại nghĩa trang được thiết kế theo phong cách truyền thống trang nghiêm. Lối kiến trúc được phối hài hòa và hợp lý với khung cảnh chung tạo nên các điểm nhấn đẹp mắt.

Khuôn viên của nghĩa trang.
Khuôn viên của nghĩa trang.

Khung cảnh chung  trong công viên có tỷ lệ cây xanh và mặt nước chiếm một phần quan trọng. Tuy là phần đệm nhưng cây xanh giúp khuôn viên các ngôi mộ không còn lạnh lẽo. Các công trình kiến trúc, đường dạo, các ngôi mộ,… là một yếu tố trong tổng thể khu nghĩa trang công viên. Kiến trúc của các ngôi mộ được nghiên cứu và thiết kế hài hòa với thiên nhiên.

Trên đây là một vài nét về nghĩa trang Yên Kỳ, một nghĩa trang rộng lớn nhất Hà Nội. Ngoài nghĩa trang Yên Kỳ, có rất nhiều người chọn một nghĩa trang khác làm nơi mai táng là công viên nghĩa trang Hòa Bình. Nghĩa trang này nằm trên vị trí hội tụ đủ Long – Ly – Quy – Phượng. Công viên Nghĩa trang Hòa Bình có khung cảnh hữu tình, nên thơ mang dáng dấp của nơi an nghỉ vĩnh hằng thiên thu.

> Xem thêm bảng giá đất nghĩa trang Công viên tâm linh mới cập nhật 2021

>>> Có thể bạn quan tâm: Dịch vụ nhà tang lễ bệnh viện Đức Giang có tốt

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

MR PHƯƠNG 0965.435.666