목록분류 전체보기 (385)
만족
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bvo6A8/btrU2K245tH/PPKvKK3ZcsYoMPr1voh8T1/img.png)
//... const router= useRouter(); useEffect(()=>{ //... }, [router]); //... 이런 코드가 있을 때, bfcache로부터 페이지가 복원된다면 어떻게 될 것 같은가? 내 생각에는 당연히 memory snapshot을 복구했으니 router가 업데이트되지 않을 것이라고 생각했다. 실제로 데스크탑 크롬에서는 그렇게 동작한다. 그런데 모바일/데스크탑 사파리와 모바일 크롬, 삼성 브라우저에서는 router가 업데이트된다. 아래 코드를 기준으로 설명할 것이다. (원본 코드는 https://github.com/NamGungGeon/why-router-is-updated 에서 확인할 수 있다) // page/index.js function Home() { cons..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AHSL2/btrTRBzwbBO/m6oKKugpjzattvsP5RTYn1/img.png)
리액트 프로젝트를 빌드하면 나오는 결과물들을 간단히 다음과 같이 분류할 수 있다. 1. css 2. js 3. html 4. asset (png, svg ...) 이들에 관해 어떻게 캐시 전략을 세울 수 있을까? css, js css와 js는 빌드할때마다 결과물이 변경될 경우 파일네임 중간의 해시값이 바뀌게 된다. 예를 들어 처음 빌드했을 때 다음과 같은 빌드 결과물이 나왔다면, js코드를 일부 수정하고 다시 빌드했을 때 이런 식으로 js가 변경되었으므로 main.[HASH].js 에서 HASH가 업데이트된다. 따라서 같은 이름의 css, js는 다시 로드할 필요가 없고, 영구적으로 캐싱하기로 결정했다. (빌드 결과물에서 직접 코딩하는게 아닌 이상... 어차피 빌드 파일 이름이 변경되므로 영구캐싱이 타당..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sgrI2/btrTjGHRS88/9dSqkWQ8QHqjXEHOI62Cd1/img.png)
이번에 전면 광고의 로딩 시점과 표시 시점을 변경하여, 그렇게 변경한 이유와 장점에 대해 소개한다. 기존 기존에는 스플래시 화면이 초기화될 때(onCreate)에서 로딩을 시작하고, 3초를 기다리거나 그 전에 광고가 로딩된 경우 표시했다. 그러나 admob의 응답 속도는 그다지 빠르지 않으며, 네트워크가 느린 환경에 있는 유저도 꽤나 많았기 때문에 노출률이 그다지 높지 않았다. https://satisfactoryplace.tistory.com/133 [Android] Google Play - 앱, 타사 광고, 기기 기능 방해 정책 위반 갑자기 다음과 같은 메일이 날라오며 앱 업데이트가 거부되었다. 의아한 것은 해당 업데이트 내용은 버그 수정 및 편의성 강화로써 광고 관련 코드는 수정된 바가 전혀 없다는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cIeONx/btrTqfoXAAL/34YSzUFTTDx5yjb2buHEKk/img.png)
현재 시간 기준으로 타겟SDK가 31 미만인 경우 업데이트 제출이 불가능하다. 추후 또 기준이 변경되면 올리고 문제찾고 해야하는데 이것이 귀찮기 때문에.. 이번에 33까지 한번에 올렸다. 아니나다를까 오류가 우수수 쏟아졌는데 하나씩 해결법을 설명하겠다. kaptDefaultsDebugKotlin ... InvocationTargetException Execution failed for task ':app:kaptDefaultsDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction > java.lang.reflect.Inv..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ducaPL/btrRnvhoVet/yKZjpGGqrV8gOKAkA2SVJ1/img.png)
요약 맥에서 mx keys시리즈 키보드에서 f1~f2가 눌리지 않는 현상은 카라비너(karabiner)등의 키 맵핑 유틸리티와 충돌을 일으켜 발생하는 문제다. 해당 유틸리티에서 mx keys mini에 대한 매핑 정보를 날려주면 된다. https://m.blog.naver.com/bzwon/221953747472 로지텍 MX Keys - Karabiner Elements 설정 로지텍 MX Keys 리뷰 포스팅 링크 본 포스팅은 OSX 사용 환경에서 로지텍 MX keys의 한/영 전환 설... blog.naver.com
시간없어서 일단 참고링크만 걸어두고 나중에 작성할 예정 https://medium.com/@niraj_prajapati/automate-android-app-publishing-on-play-store-using-github-actions-554de7801c36 Automate Android App Publishing on Play Store using GitHub Actions In this post, I’ll show how I managed to automate android app publishing on Play Store. medium.com https://github.com/r0adkll/upload-google-play/issues/127 Error: Invalid value at 'tra..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dtL7U6/btrPS1vjaMu/ih17o0y7PJXpt12gTzqah1/img.png)
웹 서버를 구성할 때 가장 간단하면서 흔한 LAMP Stack(Linux, Apache, Mysql, Php)를 사용하고 별다른 설정을 하지 않았다면 이 포스트가 도움이 될 것이다. 기본적으로 prefork기반의 mpm을 사용하게 되는데, prefork방식은 요청 1개가 프로세스 1개에 대응되기 때문에 사용자가 늘어날 수록 메모리 사용량이 급증한다. (30~40%정도의 메모리를 사용하고 프로세스의 갯수도 매우 많다) 나 역시 이 문제를 해결하기 위해 event기반 mpm으로 변경했다. mpm은 어떤 종류가 있을까? 종류별로 어떤 장단점이 있을까? 어떻게 변경할 수 있을까? 한번 알아보자 Apache mpm prefork (기본값) 프리포크 방식은 한 개의 프로세스가 한 개의 연결을 처리한다. 아파치 설치..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3USUZ/btrN49920bB/pfvGLZw8iyWA6PbmsrfeS1/img.png)
2600x+b350m 쓰다가 5600x로 올렸는데 바이오스 업뎃하면서 설정이 날아가가지고 램타이밍값을 다시 잡기 어려웠다. 왜냐면 18년도에 램값개비쌀때 싼거 하나 집어온거라 국민오버도 안먹는 개뿔딱 게일램이기 때문이다. 뭔짓을해도 2933클럭 위로는 먹지를 않는데, 너도 뿔딱이라면 아래 값으로 한번 3200에 도전해보기 바란다. 설정값 램타이밍: 18-20-20-20-40 램클럭: 3200Mhz 램전압: 1.25V 램전압은 맨날 1.3, 1.35주다가 라이젠은 오히려 전압을 낮게 줬을때 오버가 잘먹는다는 글을 봐서 1.25로 해봤더니 잘되더라~