2019-06-30
행사 참여한 후기 겸 들은 내용을 정리? 해보았다.
-장한보람 (Actwo frontend 개발자)
1. V8 - parsing속도 2배, async/await 속도 11배, 메모리감소 20%
2. native lazy-loading (loading="lazy")
chrome 카나리아 : 개발버전
performance budget (budget.json)
Sensing
Meaning
Rednering
QR코드 감지 - 의미파악 - 사용자에게 렌더
native app에 있는 기능을 웹앱에서 가능
많이 똑똑해졌다고. keynote 25:00에 데모 시연. gmail에 저장돼있다든지, 이미 알고있는 정보를 활용할 수 있음.
개인정보 보호
“sameSite: strict” <- 쿠키 헤더에 넣으면 된다고. (2016년부터 크롬은 지원중. 올해말부터 required될 가능성) 효과: CSRF공격으로부터 보호받는다.
아직은 계획 단계인 것 같다.
native app에선 가능한데 web에선 못하는것: 사용자의 파일시스템에 접근, 연락처목록에 접근 등..
관련 프로젝트가 있다. 복어-잘 요리하면 맛있는데 잘못하면 치명적 즉, 사용자의 보안에 악영향을 주지 않으면서 좋은 기능을 만들겠다는 의도
window.badge. ..
앱의 배지 기능과 같은걸 제공한다.
웹의 큰 단점 : 오프라인 경험 제공 불가. (연결이 끊기면 무한 스피너 혹은 아무것도 없는 빈 화면) pwa는 이걸 해결할 수 있다.
크롬 76부터는 desktop app도 가능하다고
스마트폰이 나오면서 디바이스 사이즈 등에 의존했지만 이제는 단일 코드베이스에서 다양항 기기를 지원하도록 하는 움직임. (flutter, pwa)
-김석용 (RootOne 개발자. GDG 송도 운영)
여러 프레임웤이 나와있다. Kotlin/Native도 있다.
cross flatform은 기존 native앱 유저의 경험을 해칠 수 있는 단점이 있다. (성능도 있고)
Fuchsia 16년 8월에 레포가 생기며 주목받음. 리눅스 커널 os가 아닌 지르콘 사용
18년에 1.0 릴리즈.
빠르고 효과적으로 애니메이션을 그려낼 수 있는 장점. HMR 지원.
Dart 2.1 현재는 2.3버전까지 나옴
SKIA -안드로이드 내부에서 화면을 그릴 때 사용하는 그래픽 엔진
플러터가 과거의 Flash와 비슷하단 인상을 받았다고 하심.
하위 호환성도 지원(안드 젤리빈, v16, 4.1.x 이상, ios 8, iphone 4s이상)
배포 os마다 다른걸 쓰려면 각각 개발해야 함. 물론 platform 구분을 알려줄 수 있고, if else로 한 코드에 넣을수는 있음
위젯 트리구조로 플러터 앱을 구성하게 된다.
복잡한 뷰를 그릴수록 따로 모듈화를 자주 해야한다. (흠. 이건 계층구조 코드는 다 마찬가지 아닐까?) (네이티브 개발할때는 계층구조가 보편적인건 아니었나 봄. 난 근본이 리액트니깐..)
// 작성하신 예제 코드 설명
https://itsallwidgets.com <- 위젯모음 https://pub.dev/ <- 라이브러리들 모음(npm처럼) https://flutter.dev/ <- 공식문서가 잘 돼있다
아직 본격 도입하기엔 약간 문제가 있다고?
Dart언어로 된걸 각 os에 맞는 언어로 변환
dart -> js (html, css, js 모두 dart.js로 작성) 아직은 프리뷰버전.
(멀티플랫폼 관련은 flutter everywhere 레포 참조)
developer’s quest - flutter demo
-조은(네이버 프론트엔드 개발자. Google Developers Experts)
네이버 검색과 관련없다고 하심. medium 개발 블로그 하심. (발표내용도 이미 올라가있다)
googlebot이 데이터 수집. crawler
과거에는 서버에서 완성된 컨텐츠를 내려줬지만, 지금은 js에서 ajax로 데이터를 받아 js가 컨텐츠를 생성한다.
그래서 chrome(41버전)을 사용해 렌더된 내용을 수집하는 변화가 있었다. 버전이 너무 낮아서, puppeteer+node로 headless 크롬 최신버전을 이용해 render. -> googlebot이 최신 SPA 크롤링을 지원한다.
구글 검색이 정확히 어떻게 동작하는가? -백명이 넘는 팀원이 각자의 알고리즘을 붙여 구글 검색을 이룬다. 알 수가 없음.
googlebot이 어디까지만 접근가능한지 명시. 딱히 막을것이 없다면 작성할 필요 없다.
robots에 예를들어 /admin으로 접근하는 관리페이지를 명시해 막는다면, 크롤러는 막겠지만 robots.txt를 일반 유저들이 읽을수도 있고 접근 시도가 발생한다.
검색이 안되어야 한다면
각 페이지마다 컨텐츠를 설명하는 내용을 부여해야 한다. + 현재 사이트를 설명하는 동일한 내용도 필요. 타이틀 하나로 퉁치면 안됨.
ex) 치킨 recipe - 조은의 Recipe
, 냉면 recipe - 조은의 Recipe
SEO를 고려한다면, 서비스명도 너무 길지 않게 하는게 좋다.
너무 긴 title은 구글봇이 알아서 짜름.
description을 선언하지 않는다면, 적당히 긁어온 내용을 검색결과로 노출시킴. (부정확하며 필요없는 데이터 노출 가능성)
opengraph 선언과 content 선언도 같이 잘 해야함. (< .. og:title=.. content=.. ..> 등)
태그를 적절히. (시맨틱하게 ?)
구글봇은 a태그를 보고 다른 페이지의 컨텐츠를 인식함. button이나 div로 하면 크롤링하지 않음.
제목 역시 h1 태그를 긁어감. (h1 ~ h6 모두 보고 페이지의 outline을 그린다. 검색 상위노출 가능성 높아진다.)
모바일을 지원하는 페이지를 우선 노출시킨다.
HTML을 넘어서 이 컨텐츠에 대해 설명하는 요소 및 데이터 . (JSON처럼?) (HTML만으로는 내부 데이터를 설명하기 부족한것이 당연하다)
schema.org 에 되어있는 것 중 골라 사용하면 좋다.
ex) “만개의 레시피” 사이트가 이걸 지원하고있어서 상위노출되고 적절한 UI가 적용되어 노출된다!!
https://developers.google.com/search/docs/data-types/article
웹 페이지를 종합적으로 검사. SEO를 포함.
총 100개가 넘는 항목을 체크해줌.
(PWA 점수는 SEO에 영향 없음
https://web.dev/ 에서 항목들을 알 수 있다
“나무위키”가 항상 검색어 최상위에 노출되는것엔 이유가 있다. 거의 best practice임. (description은 선언 안했지만 잘 나오는 사이트이기도 함) 망고플레이트도 좋다고함
질답)
모바일을 지원한다 의 기준이 무엇인지?
puppeteer가 mobile-agent + 모바일 해상도로 사이트에 접근해서 .. 어쩌구. 정확히는 모르신다고.
url에 포함되는 단어들이 SEO에 영향을 미치는지?
한국어로 되어있다면 영향이 있을 수 있고, url에 외계어가 들어가는건 괜찮다(언어 인코딩 관련). url이 명확하면 좀더 위로 올라갈 수 있다.
구글 검색에 반영되기까지 걸리는 시간은?
알려진 바 없어서 정확히 알 수는 없다. 다만 search console에서 요청하면 좀 줄일 수 있다.
-김준성(스캐터랩 머신러닝엔지니어-pingpong ai research team)
18-19년 구글의 AI, 머신러닝 연구 결과를 소개하는 발표.
문장에서 15%내외 단어를 지워서(마스킹) 맞는 내용을 맞추도록 하는 학습방법. 결과는 사람을 이길 정도의 성능. (대량의 텍스트를 많은 시간을 들여 초기 학습)
깃헙 repo도 있음. google-research/bert
기존 방식의 최적화? (대량의 컴퓨팅 파워 필요. 구글.)
유튭 데이터를 레이블링 없이 모션 트래킹?
tacaron 2
사람의 감정을 담은 보이스를 생성하는것. (억양 추가) (특정 인물의 음성 정보 + 다른 인물의 억양 정보를 합성할 수 있다)
기존 방식: 음성 인식 -> 텍스트 -> 번역 -> 음성
이건 voice-to-voice 번역. (+억양. 모바일 사용)
프로그램 용량 최적화. 2기가 -> 80메가
아.. 머신러닝.. 모든것이 어렵다..
-조환(Hyperconnect)
적은 인력으로 양쪽 플랫폼을 개발 할 목적으로 flutter 사용중.
Dart 언어를 소개하는 시간.
google analytics는 dart로 만들었다고 함.
Dart가 보급률이 안좋아서 구글에서도 다른 언어로 변환 툴같은걸 배포하며 보급률을 신경쓰고 있다고 함.
보완, 성장 중인 언어. (유저 피드백 반영해 nullable / non-nullable 지원 예정)
(smalltalk의 유니크한 기능이었다고)
상속은 상속받은 클래스가 구현하지 않을 부분까지 부모 클래스의 메서드 등을 모두 상속받는것이 경우에 따라 문제가 될 수 있다. (엄청 복잡한 코드를 인수인계 받지않고 유지보수 해야 하는 경우 등)
믹스인은 이런 문제를 해결해준다.
interface는 상태를 표현할 수 없다고. (걷는다 는 가능한데 걸을 때 몇미터 움직이는지는 못한다고 한다)
(mixin이 뭔지 자체는 잘 설명 안해주셔서 아쉽..)
(공식문서에 길고 길게 적혀있다고 함. 관련 질문을 많이 받아서..)
JIT/AOT 모두 지원
dart 2.x 가 되며 좋아지고 있다. 1.0은 구렸다.