목록전체 글 (156)
김 양의 멋따라 개발따기
1) !와 !!의 의미!value : 부정(논리 NOT)value를 truthy/falsy로 평가한 뒤 결과를 뒤집는다.결과 타입은 항상 boolean이다. !!value : boolean으로 강제 변환(정규화)!를 두 번 적용해서 뒤집고 다시 뒤집음 → “참/거짓 여부만” 남긴다.결과는 무조건 true 또는 false. 2) truthy / falsy 한 번에 정리JS에서 조건문은 boolean이 아니어도 동작하고, 값은 크게 두 종류로 평가된다.falsy (조건문에서 false 취급)false0, -00n (BigInt)"" (빈 문자열)nullundefinedNaNtruthy (그 외 전부 true 취급)"0" (문자열)"false" (문자열)[] (빈 배열){} (빈 객체)function() {..
1. 왜 2.0 + 4.4 + 6.2 + 2.4 이 15.000000000000002가 될까?자바스크립트에서 숫자는 대부분 IEEE 754 64-bit 부동소수점 형식으로 저장돼요.쉽게 말하면:고정된 64개의 비트 안에부호(sign) 1비트지수(exponent) 11비트가수(fraction, mantissa) 52비트이렇게 나눠서 **“2진수 실수”**를 표현합니다.문제는 우리가 사용하는 10진수 소수가**2진수로 “딱 떨어지지 않는 경우가 많다”**는 겁니다.예를 들어:1/10 (0.1)2/10 (0.2)4.4, 6.2, 2.4 …이런 수들은 2진수로 표현하면 무한히 반복되는 소수가 됩니다.10진수에서 1/3 = 0.33333... 끝없이 반복되는 것처럼요.컴퓨터는 52비트까지만 저장할 수 있으니중간에..
1. 문제 상황 페컬티정보조회 faculty_btn.addEventListener("click", ()=>{ //... 동작 })faculty_btn이 변수로 선언하지 않고 스크립트에서 동작하고 있는 걸 발견함.상황이 신기해서 찾아봄 2. 문제 설명1) 메커니즘: 왜 되는가브라우저는 문서를 파싱할 때, id(그리고 일부 태그의 name)가 있는 요소들을 **window 객체의 “이름 있는 프로퍼티(named properties)”**로 노출합니다. 그래서 id="faculty_btn" 이 있으면 window.faculty_btn이 생기고, 일반 스크립트에선 전역 식별자처럼 faculty_btn으로 바로 접근이 됩니다. 이를 **“Named access on the Window object”..
1. 코드
퇴근이 너무 하고 싶어서 만든 18시 퇴근 기준 퇴근 타이머 만들기 퇴근까지 남은 시간 ⏰ 계산 중... 결과물- 아직 한 시간 넘게 남았다....
1. Index DBIndex DB 는 브라우저에 데이터를 로컬 저장할 수 있는 API로, 오프라인 앱, 캐시, 장바구니 데이터 저장, PWA 등에 자주 사용됩니다.IndexedDB는 사용자의 브라우저에 데이터를 영구적으로 저장할 수 있는 방법 중 하나입니다. IndexedDB를 사용하여 네트워크 상태에 상관없이 풍부한 쿼리 기능을 이용할 수 있는 웹 어플리케이션을 만들 수 있기 때문에, 여러분의 웹 어플리케이션은 온라인과 오프라인 환경에서 모두 동작할 수 있습니다. 2. CRUD // 1. DB 생성let db;const request = indexedDB.open("MyAppDB", 1); // name, versionrequest.onupgradeneeded = function (event) { ..
1. 문제 상황CKEDITOR을 사용하던 중 글자 크기 옵션 늘려달라는 요청을 받음그러나 라이브러리 자체에 글자 크기를 직접 입력 받는 방식은 없었음 2. 해결 방법옵션을 추가하여 글자 크기를 선택할 수 있도록 코드를 짬///ckeditor/plugins/fontSizeInput/plugin.jsCKEDITOR.plugins.add('fontSizeInput', { init: function(editor) { editor.ui.addRichCombo('FontSizeInput', { label: '글자 크기', title: '글자 크기', toolbar: 'styles', panel: { ..
1. html 코드 2. JavaScript 코드 function touchInit(targetElement) { zoomStatus = true; let startX = 0, startY = 0; let offsetX = 0, offsetY = 0; let scale = 1; // 초기 스케일 let isDragging = false; let initialDistance = 0; let touchCenterX = 0, touchCenterY = 0; // 터치 중심점 const maxScale = 2; // 최대 확대 배율 설정 // 기준값 설정 const baseTranslateX = 270; const baseT..
1. 문제 상황여러 문서 파일을 하나의 문서 파일로 병합해야 했습니다. 2. 문제 해결PHPWord 라이브러리를 사용했습니다.코드getSections(); // 섹션별로 문서에 추가 foreach ($sections as $section) { $newSection = $phpWord->addSection(); foreach ($section->getElements() as $element) { $newSection->addElement(clone $element); } } } catch (Exception $e) { echo "문서 처리 중 오류 발생: " . $e..
1. 문제상황docx 파일을 입력 받아 저장시키는 상황에서 화면에서 파일을 페이지로 띄워야 했습니다.PHPWord 라이브러리를 알게 되어 적용시켰습니다. 2. 문제 해결1. PHPWord 설치하기composer require phpoffice/phpword 2. 경로 받아와서 화면에 보이기save('php://output'); $htmlContent = ob_get_clean(); ?> PHPWord 변환 중 오류 발생: " . $e->getMessage() . ""; }} else { echo "파..