반응형
반응형

1. $(document).ready()

- 외부 리소스. 이미지와는 상관 없이 브라우저가 DOM (document object model) 트리를 생성한 직후 실행
- window.load() 보다 더 빠르게 실행되고 중복 사용하여 실행해도 선언한 순서대로 실행됨
  

2. $(window).load()

- DOM의 standard 이벤트
- html의 로딩이 끝난 후에 시작
- 화면에 필요한 모든 요소(css, js, image, iframe etc..)들이 웹 브라우저 메모리에 모두 올려진 다음에 실행됨
- 화면이 모두 그려진 다음의 메세징이나 이미지가 관련 요소가 모두 올려진 다음의 애니메이션에 적합함
- 전체 페이지의 모든 외부 리소스와 이미지가 브러우저에 불려운 이후 작동하게 되어 이미지가 안뜨너가 딜레이가 생길 때에는 그만큼의 시간을 기다려야 함
- 외부 링크나 파일 인크루트시 그 안에 window.load 스크립트가 있으면 둘 중 하나만 적용됨
- body onload 이벤트와 같이 body에서 onload 이벤트를 쓰게 되면 모든 window.load() 가 실행되지 않는 현상이 발생함
 

* window > document
- document는 window의 자식 객체
  (window의 자식 객체 : document, self, navigator, screen, forms, history, location etc..)
- document : html의 요소들이나 속성들에 접근할 시 사용하는 객체

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(window).load(function() {
    console.log("console> window.onloade() 첫번째");
});
 
$(window).load(function() {
    console.log("console> window.onload() 두번째");
});
 
$(document).ready(function() {
    console.log("console> document.ready() 첫번째");
});
 
$(document).ready(function() {
    console.log("console> document.ready() 두번째");
});
</script>
 
</head>
<body>
 
</body>
</html>
반응형
반응형

월의 마지막 날짜 구하기

SELECT EOMONTH('2020-09-09') AS result

SELECT DATEADD (DAY, -1, DATEADD (MONTH, DATEDIFF (MONTH, 0, '2020-09-09') + 1, 0)) AS result


SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, '2020-09-09') + 1, 0) - 1 AS result
반응형
반응형

DATEDIFF, DATEPART

SELECT DATEDIFF(DAY,   '2021-06-12', '2021-07-13') AS [일차이]
     , DATEDIFF(MONTH, '2021-06-12', '2021-07-13') AS [개월차이] 
     , DATEDIFF(YEAR,  '2021-06-12', '2021-07-13') AS [년차이]

 

LAG, LEAD

https://learn.microsoft.com/en-us/sql/t-sql/functions/lag-transact-sql?view=sql-server-ver16 

 

LAG (Transact-SQL) - SQL Server

LAG (Transact-SQL)

learn.microsoft.com

SELECT empno  
     , ename
     , job
     , sal
     , LAG(sal) OVER(PARTITION BY job ORDER BY job, sal) AS sal_prev
     , LEAD(sal) OVER(PARTITION BY job ORDER BY job, sal) AS sal_next
  FROM emp
 WHERE job IN ('MANAGER', 'ANALYST', 'SALESMAN')
 ORDER BY job, sal
 
 
 CREATE TABLE T (a INT, b INT, c INT);   
GO  
INSERT INTO T VALUES (1, 1, -3), (2, 2, 4), (3, 1, NULL), (4, 3, 1), (5, 2, NULL), (6, 1, 5);   
  
SELECT b, c,   
    LAG(2*c, b*(SELECT MIN(b) FROM T), -c/2.0) OVER (ORDER BY a) AS i  
FROM T;

https://learn.microsoft.com/en-us/sql/t-sql/functions/lead-transact-sql?view=sql-server-ver16 

 

LEAD (Transact-SQL) - SQL Server

LEAD (Transact-SQL)

learn.microsoft.com

CREATE TABLE T (a INT, b INT, c INT);   
GO  
INSERT INTO T VALUES (1, 1, -3), (2, 2, 4), (3, 1, NULL), (4, 3, 1), (5, 2, NULL), (6, 1, 5);   
  
SELECT b, c,   
    LEAD(2*c, b*(SELECT MIN(b) FROM T), -c/2.0) OVER (ORDER BY a) AS i  
FROM T;
반응형
반응형

구글도 캐나다에서 '뉴스 서비스' 중단

https://www.cbc.ca/news/canada/google-facebook-canadian-news-1.6894029

 

When will Canadian news disappear from Google, Facebook? What the Bill C-18 rift means for you | CBC News

How will you get the news now? That’s a question many Canadians may be asking after tech companies Google and Meta, which owns the social media giants Facebook and Instagram, vowed to remove links to Canadian journalism.

www.cbc.ca

이제 어떻게 소식을 접할 수 있습니까?

그것은 많은 캐나다인들이 소셜 미디어 거대 기업인 페이스북과 인스타그램을 소유하고 있는 구글과 메타가 캐나다 저널리즘에 대한 링크를 제거하겠다고 맹세한 후에 물어볼 수 있는 질문일 것입니다. 

Bill C-18로도 알려진 온라인 뉴스법 에 대한 보복으로 뉴스 콘텐츠가 기술 회사의 플랫폼에서 공유될 때 "공정한 보상"을 위해 미디어 매체와 계약을 체결하게 됩니다.

이것이 광고 수익이 감소한 업계를 돕는 최선의 방법이라는 데 모든 사람이 동의하는 것은 아닙니다. 그러나 Bill C-18을 둘러싼 싸움의 중심에는 많은 캐나다인과 마찬가지로 Google과 Facebook에 의존하여 중요한 저널리즘을 찾는 일반 뉴스 소비자가 있습니다. 

다음은 온라인 뉴스법에 대해 알아야 할 사항과 뉴스 소비 습관을 변경해야 하는 경우와 시기입니다.

반응형
반응형

https://medium.com/@TheOlajos/why-not-just-flutter-benefits-and-use-cases-of-flutter-markup-language-5e88aa23aeee

 

Why Not Just Flutter? Benefits and Use Cases of Flutter Markup Language

Just over two weeks ago Flutter Markup Language was released to the public for the first time… and the same question was asked over and…

medium.com

flutter markup language

 

약 2주 전에 Flutter Markup Language가 처음으로 대중에게 공개되었습니다… 그리고 같은 질문이 계속해서 나왔습니다.

 

Flutter 대신 Flutter Markup Language를 사용하는 이유는 무엇입니까?

짧은 대답은 그렇지 않을 것입니다. Flutter Markup Language는 Flutter를 대체하기 위해 설계된 것이 아니라 기술적 배경에 관계없이 모든 플랫폼에서 실행할 수 있고, 컴파일되지 않고 해석되고, 빌드하기 쉽고, 배포하기 쉬운 고품질 애플리케이션을 쉽게 빌드할 수 있는 도구입니다.

FML은 Flutter가 많은 시간, 노력 및 지식 없이는 채우지 못하는 일부 사용 사례를 다룹니다. 뿐만 아니라 전체 애플리케이션, 프로토타입 등을 구축할 수 있는 상당한 시간 절약 기능을 제공합니다. 이 기사에서는 FML이 개발된 이유와 FML이 해결하는 비즈니스 문제에 대해 설명하고 논의합니다.

FML이 해결하기 위해 구축된 문제의 배경과 세부 정보에 들어가기 전에

 Flutter Markup Language의 TLDR 사용 사례는 다음과 같습니다.

  1. OTA(Over-The-Air), 모든 플랫폼에서 동시에 실시간으로 즉각적인 애플리케이션 업데이트 및 배포. 표준 개발 파이프라인이 필요하지 않습니다. 개별 장치 및 플랫폼에 대해 여러 환경 또는 코드 기반을 관리할 필요가 없습니다.
  2. 모든 플랫폼에서 실시간 통역 언어. 일반적으로 웹 및 html용으로 예약된 이 기능은 위에서 언급한 대로 즉각적인 업데이트를 허용하며 실시간 FML 삽입, 위젯 조작 등을 포함합니다.
  3. 완벽하게 작동하는 크로스 플랫폼 애플리케이션 및 프로토타입을 만들 때 속도가 훨씬 빨라집니다. 이를 통해 개발 비용을 크게 절감하고 개념 증명 및 프로토타입 애플리케이션을 생산에 즉시 활용할 수 있습니다.
  4. 응용 프로그램을 생성, 업데이트 또는 편집하는 데 개발 환경이 필요하지 않습니다. 이를 통해 누구나 IDE를 설정하고 SDK를 다운로드하는 오버헤드 없이 애플리케이션과 해당 구성 요소를 빠르게 수정하고 생성할 수 있습니다.
  5. 모든 플랫폼에서 작동하는 사람이 읽을 수 있는 단일 페이지를 만드는 기능. 단일 코드베이스 교차 플랫폼 애플리케이션, 관리 단순성 및 즉각적인 모든 플랫폼 업데이트를 허용합니다.
  6. 쉽게 이해할 수 있는 구문과 얕은 학습 곡선을 통해 누구나 사전 프로그래밍 경험 없이도 새로운 FML 템플릿과 복잡한 응용 프로그램을 빠르게 이해, 편집, 업데이트 및 생성 할 수 있습니다 .

FML은 기업 수준의 애플리케이션 개발에서 많은 성공을 거두었습니다. 크로스 플랫폼 개발을 위한 추가 비용 없이 단일 플랫폼 애플리케이션으로 개발 일정과 비용이 크게 줄었습니다.

원래의 비즈니스 문제와 모든 것이 시작된 곳…

Flutter Markup Language의 출현은 플래시의 죽음과 함께 시작되었습니다. 그 개념은 여러 플랫폼에서 검사 응용 프로그램을 신속하게 구축하기 위해 대규모 산업 호스트 간에 내부적으로 사용된 유사한 마크업 언어를 대체하기 위해 만들어졌습니다. Flutter Markup 언어의 기술 책임자는 10년 동안 이 소프트웨어를 만들고 전 세계 여러 공장과 기업에 배포했습니다.

초기 엔진 의 목표  해결해야 할 비즈니스 문제는 다음과 같습니다.

  1. 이러한 기업에서 동일한 방식으로 사용했던 모든 플랫폼에서 작동하는 검사 애플리케이션을 보유하십시오.
  2. IT 전문가와 엔지니어는 심도 있는 프로그래밍 지식, 개발 환경 또는 일반적으로 개발 주기와 함께 제공되는 기타 오버헤드 없이 이러한 검사 애플리케이션을 편집할 수 있습니다.
  3. 수행되는 모든 업데이트는 즉각적이고 OTA(Over-The-Air)여야 하며 모든 장치에서 균일해야 합니다. 이것은 중단 시간을 최소화하고 엔터프라이즈 환경의 끊임없이 변화하는 매개변수에 적응하도록 설계되었습니다.
  4. 모든 변경 사항은 컴파일, 설치 또는 일반 개발 파이프라인을 거치지 않고 즉시 모든 장치에 적용되어야 합니다.
  5. 마지막으로 새 응용 프로그램을 만들고 기존 응용 프로그램을 편집하는 것이 빨라야 합니다. 이는 사내 팀이 자신의 애플리케이션을 편집하고 업데이트할 수 있는 능력 외에도 막대한 비용 절감으로 이어집니다.

Flutter 기반 엔진의 알파 단계가 로프를 통과하고 개발 팀이 pre-flutter 시스템의 기본 기능을 충족하는지 확인한 후 원래 범위를 벗어나는 성능과 기능이 크게 향상된 엔진을 만들었습니다. , 그러나 형식은 단순히 현대 응용 프로그램 구축이 요구하는 사용 용이성과 확장성을 충족하지 못했습니다. 클라이언트 요청을 통해 새로운 문제가 제시되었을 때 원래의 flutter 엔진이 처리할 수 없었던 새로운 기능을 계속해서 제공합니다. 재검토가 필요한 이 원래 반복의 주요 단점은 다음과 같습니다.

  • 원래 엔진 잠금 데이터 및 응용 프로그램은 현재 환경 외부에서 사용되지 않는 매우 특정한 수행 방식으로 흐릅니다. 기본적으로 규정된 방식으로 단일 유형의 애플리케이션을 생성하도록 설계되었습니다.
  • 원래 엔진의 규칙과 애드온은 모든 예외, 지나치게 구체적인 위젯, 위젯과 기능이 보다 직관적으로 함께 작동하도록 허용하는 대신 특정 구멍을 패치하는 끝없는 속성을 암기하는 것을 너무 어렵게 만들었습니다.
  • 원래 엔진의 UI는 제한적이고 반응이 없으며 매우 산업적인 미학에 갇혀 있었습니다. 시스템의 기본 동작이 아닌 UI를 구축하려면 상당한 사전 고려와 테스트가 필요했습니다.
  • 비검사 기반 애플리케이션을 생성하는 기능은 표준 양식/양식 필드 템플릿에서 벗어날 때 매우 제한적이고 복잡했습니다.

이러한 모든 문제를 파악한 개발팀은 Flutter Markup Language를 탄생시킨 이 오래된 프레임워크를 완전히 재구축, 재설계 및 재고하기 시작했습니다.

Flutter 마크업 언어의 시작

이 시점에서 Flutter 마크업 언어는 원래의 기본 디자인 사양을 상속하여 해석된 단일 코드베이스로 완벽하게 작동하는 크로스 플랫폼 애플리케이션을 만들 수 있습니다. 이를 통해 온라인과 오프라인 모두에서 앱 스토어 및 데스크톱 애플리케이션 내에서 컴파일되지 않은 애플리케이션 업데이트, 즉각적인 롤아웃 및 OTA 업데이트가 가능합니다. 이러한 개선에도 불구하고 대부분의 애플리케이션 빌더의 요구 사항을 충족하려면 추가 목표를 충족해야 했습니다.

Flutter Markup Language의 주요 추가 목표는 다음과 같습니다.

  1. 이전 반복은 매우 특정한 방식으로 작동하는 건물 검사 소프트웨어로 제한되었지만 FML은 모든 장치에서 모든 응용 프로그램을 빌드할 수 있어야 합니다.
  2. FML은 모든 데이터 소스, 하드웨어 또는 네트워크에 연결할 수 있어야 하며 FML 애플리케이션 내의 모든 구조에서 해당 데이터 소스를 활용할 수 있어야 합니다.
  3. FML은 개발자가 적합하다고 생각하는 방식으로 온라인과 오프라인 모두에서 자체 데이터 흐름, 탐색 및 사용자 흐름을 처리할 수 있어야 합니다.
  4. FML은 직관적이고 사용하기 쉬우며 일반적인 규칙과 원칙을 따라야 합니다.
  5. FML 위젯은 직관적인 방식으로 함께 작동하고 비제한적이어서 사용자가 오류를 일으킬 수 있는 실수를 저지를 가능성을 제한해야 합니다.
  6. FML은 모든 하드웨어를 활용하여 모든 장치에서 수행되어야 합니다.
  7. 간단하고 강력한 방식으로 최신 데이터 바인딩 기술을 구현합니다.

엔터프라이즈 클라이언트 및 모든 유형의 애플리케이션에 대한 광범위한 테스트 및 설계를 통해 이러한 목표를 달성하고 초과 달성했습니다. 상당한 개선 프로세스와 현장 테스트를 거친 후 Flutter Markup Language가 마침내 공개 베타 버전으로 출시되었습니다.

Flutter Markup Language가 제공하는 기능

초기 릴리스에서 Flutter Markup 언어는 전반적으로 약 3년 동안 Flutter에서 현실적으로 개발되었습니다. Flutter와 Flash 모두에서 이전 소프트웨어의 변형을 계산하면 Flutter Markup Language는 10년 이상의 개발, 테스트 및 개선 기간을 거쳤습니다. 이 대규모 수명 주기를 통해 개발 팀은 현장에서 이러한 기능과 개념을 테스트하면서 다양한 기능을 개선, 테스트, 설계 및 재설계할 수 있었습니다.

Flutter에 비해 FML이 제공하는 이점의 대부분은 (컴파일되지 않은) 해석된 언어라는 측면과 사용 및 이해하기 매우 간단한 마크업 언어라는 측면에서 비롯됩니다. FML에 대해 자세히 알아보려면 Wiki 또는 코드 베이스를 방문하십시오 . 높은 수준의 이점에 대해 이야기하기 위해 이전 단락에서보다 각 포인트에 대해 조금 더 자세히 알아볼 수 있습니다.

무컴파일 롤아웃 및 멀티플랫폼 인스턴트 배포

FML을 제쳐두고 있는 첫 번째이자 가장 눈에 띄는 기능 중 하나는 컴파일된 언어가 아닌 해석된 언어로 사용된다는 것입니다. 이를 통해 다양한 사용 사례가 가능하며 가장 눈에 띄는 것은 모든 앱 스토어 또는 OS 내에서 즉각적인 배포입니다. Flutter Markup Language 엔진은 일단 로드되면 개발자가 엔드포인트를 제공합니다. 이 끝점은 FML 템플릿을 가져오고 해석하여 실시간으로 구축합니다.

프로덕션 애플리케이션 내에서 실시간 OTA(Over-The-Air) 업데이트

컴파일되지 않고 해석되는 기능인 FML은 모든 플랫폼에서 동시에 실시간 업데이트를 허용합니다. FML의 초기 사용 사례에서는 여러 장치에서 실행되는 단일 응용 프로그램을 필요에 따라 실행하는 모든 장치에서 실시간으로 업데이트할 수 있다는 점이 중요했습니다. 이를 통해 반복적인 디자인, 사용자 피드백에 대한 신속한 응답 등을 포함한 많은 이점을 얻을 수 있습니다.

완전히 작동하는 애플리케이션에 대한 개발 속도가 훨씬 빨라짐

FML의 가장 큰 과제 중 하나는 개발자가 구현해야 하는 일반적으로 복잡한 모든 시스템을 포함하는 단순화된 시스템을 만들고 애플리케이션 구축 요구의 95% 이상에 매우 유용하게 만드는 것이었습니다. FML을 사용한 개발 시간의 대부분은 모든 플랫폼에서 간단하고 예측 가능하게 사용할 수 있는 시스템을 만드는 것이었습니다. FML을 사용하는 개발자는 단순히 단일 위젯을 사용하고 보는 반면 인터프리터는 상태 관리, 플랫폼 특정성, 데이터 유형 및 사용 등에 대한 모든 논리를 처리합니다.

IDE 없는 스크립팅

모든 FML 파일은 간단한 텍스트 편집기에서 업데이트할 수 있습니다. 코딩을 시작하기 전에 개발자가 환경을 설정하는 데 사용하는 SDK, IDE 또는 기타 일반적인 오버헤드를 다운로드할 필요가 없습니다. 이를 통해 누구나 개발 환경을 설정하고 관리할 필요 없이 FML 애플리케이션 내에서 무엇이든 즉시 편집하고 업데이트할 수 있습니다.

온라인 및 오프라인 데이터 처리

FML은 양식의 복잡성, 온라인 및 오프라인 기능, 연결 처리를 단순화했습니다. FML은 이를 보다 자동화된 방식으로 처리하기 위해 다양한 리소스를 사용하지만 그 중 하나가 POSTMASTER입니다. 이 서비스를 사용하면 연결이 끊길 수 있으며 복구되면 저장하고 게시를 계속 시도합니다.

간단한 데이터 소스 통합

xml 또는 json 형식의 여러 데이터 소스에 연결하는 것이 FML을 사용하여 간소화되었습니다. 사용자는 REST 호출, NFC, CAMERA 등과 같은 하드웨어 특정 데이터에 쉽게 연결하고 바인딩할 수 있습니다. 플랫폼 간 데이터 구조 및 액세스의 모든 특이성이 개발자를 위해 자동으로 처리되므로 개발자는 애플리케이션의 기능과 UI에 집중할 수 있습니다.

저비용 학습 곡선

UI 구축의 단순화, 내장된 자동 상태 관리, 단순화된 데이터 소스 통합 및 이해하기 쉬운 구조는 모두 FML의 진입 비용을 낮고 빠르게 만듭니다. 응용 프로그램 개발의 고도로 기술적인 측면은 모두 인터프리터에 의해 처리되었으며 사용하기 쉽지만 강력한 FML 위젯으로 추상화되었습니다. 이를 통해 몇 분 만에 애플리케이션을 구축하고 편집할 수 있습니다.

크로스 플랫폼 단일 코드베이스

크로스 플랫폼 애플리케이션 개발이 그 어느 때보다 쉬워졌습니다. FML 위젯은 모든 플랫폼에서 반응이 빠르고 예측 가능합니다. 즉, 단일 FML 템플릿과 엔드포인트를 필요한 모든 플랫폼에 사용할 수 있습니다. 데스크톱 애플리케이션, iOS, Android 또는 웹이든 상관 없습니다. 또한 해당 단일 파일을 업데이트하면 모든 장치의 모든 응용 프로그램이 균일하게 즉시 업데이트됩니다.

고성능 애플리케이션

FML 인터프리터는 Flutter에 내장되어 있으며 이는 모든 장치에 대한 네이티브 컴파일을 의미합니다. 해석된 언어는 거의 항상 잘 최적화된 기본 응용 프로그램보다 성능이 떨어지지만 최신 하드웨어를 사용하면 FML이 모든 플랫폼에서 원활하고 성능 있게 실행될 수 있습니다.

유연하고 반응이 빠른 레이아웃

FML의 레이아웃은 일반 규칙 집합, 끝없는 사용자 지정 옵션 및 단일 파일에서 전체 응용 프로그램에 대한 변경을 허용하는 강력한 THEME 레이어로 표준화됩니다. 개발자는 최소한의 노력으로 모든 화면 크기 또는 플랫폼에 맞는 응답성이 뛰어나고 유연한 애플리케이션을 구축할 수 있습니다.

이 주기의 끝에서 Flutter Markup Language의 공개 릴리스와 함께 대중 금융 포털에서 전 세계의 제조 공장 및 기계와 조정되는 검사 시스템에 이르기까지 응용 프로그램을 개발하는 데 Flutter Markup Language가 사용되었습니다. 주요 기업은 Goodyear 고무 및 타이어와 같은 FML을 채택했으며 FML이 제공할 수 있는 비용 이점 및 시간 절약 측면을 확인하면서 더 많은 기업이 테이블에 등장하고 있습니다.

모든 도구와 마찬가지로 FML은 Flutter와 같은 프레임워크에 비해 장단점이 있으며 Flutter 개발자 팀을 포함한 모든 팀에 막대한 비용 및 시간 절약을 제공하는 데 활용할 수 있습니다.

반응형
반응형

*  li에서 텍스트 추출, 공백제거


$(function(){
    var value1 = '      abc     ';
    var value2 = $(":text").val();
    //공백제거 전
    alert("value1 : " + value1+"\n"+"value2 : " + value2);
     
    value1 = $.trim(value1);
    value2 = $.trim(value2);
    //공백제거 후
    alert("value1 : " + value1+"\n"+"value2 : " + value2);
})

<!doctype html>
<html lang="ko">
 <head>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  <meta http-equiv="Content-Type" content="text/html";charset="utf-8"/>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
	ul{list-style-type: none;}
  </style>
 </head>
 <body>

  <ul id="menu1">
	<li>철수1</li>
	<li>영희1</li>
	<li>길동1</li>
	<li>둘리1</li>
  </ul>

  <ul id="menu2">
	<li>철수2</li>
	<li>영희2</li>
	<li>길동2</li>
	<li>둘리2</li>
  </ul>
  

   <script>	
   $("#menu2 li").each(function( index, element ) {
     console.log($(this).text());
   });
  </script>

 </body>
</html>
반응형

+ Recent posts