목록분류 전체보기 (109)
Real Vectorism. 훨씬 더 입체적으로...
소스코드 public class MusicBeatSplitting : MonoBehaviour { private double bpm = 95.0; public AudioClip sfx; public AudioClip music; public AudioSource sfxSource; public AudioSource musicSource; private Coroutine beatSplitting; // Start is called before the first frame update void Start() { sfxSource.clip = sfx; musicSource.clip = music; musicSource.Play(); beatSplitting = StartCoroutine(beatSplit())..
나만 몰랐던 람다식 나만 몰랐던 람다식 자바1.8 에서 도입되었지만 아직도 현업에서는 못믿겠다 기술적 이슈가 있다면서 안쓰... blog.naver.com (동일내용입니다.) 나만 몰랐던 람다식 자바1.8 에서 도입되었지만 아직도 현업에서는 못믿겠다 기술적 이슈가 있다면서 안쓰는 람다식... 가장 먼저, stream api 를 사용하게 될 때 마주하기 쉬운 람다식은 stream api 에서 제공되는 map, flatMap, reduce, filter, collect, count 등이 있지만 그 안에서 구현해야 하는 람다식들은 다음과 같다. 람다식 구현해야 할 인터페이스 map Function flatMap Function reduce BinaryOperator filter Predicate colle..
보호되어 있는 글입니다.
오픈소스는 소스코드가 노출되어있다고 보안에 취약하고 해킹당할 위험이 높다고 우긴다 >> 이클립스 쓴다 >> 리눅스 쓴다 >> 논리로 까면 고객방패 올린다 >> 오픈소스 라이선스 표기를 크레딧에 안올린다 >> 다 이미 있는 기능들이다 >> 이거 그거에 있는 기능 아닌가 해서 까고봤더니 이거를 새로 만든게 아니라 그게 내장되어있다 >> 인력상주로 24시간 대응을 강점이라고 올려놨는데 누구보다 퇴근이 빠르다 >> 정작 잘만들고 표준까지 된걸 사용하면 굳이 24시간 대응같은게 필요없는데 이악물고 장점이라 우긴다 >> 표준 웹은 안되는데 우린 되거든: 비표준이다 >> 안전하다: 안뚫린게 아니라 아무도 몰라서 안전하다 >> 프로젝트에서 리포지토리로 넣으면 되는걸 기어이 개발툴에 플러그인으로 넣어서 팔아먹으려 혈안이다
이전에는 @EnableWebflux 어노테이션이 모든 리소스 요청을 application/json 으로 리턴을 시켜주는 문제로 인해 index 페이지를 받을 수 없는 문제를 확인했었다. 결론부터 먼저 말하자면 @EnableWebflux 를 사용하는 상태 그대로 index 페이지를 보여줄 수 있는 방법이 있다. 별도의 처리가 필요한 것이 아니라 MVC처럼 리소스의 경로를 라우터에 컨트롤러처럼 정의하는 방식이다. 그러니까... 난 또 삽질하고 있었던 것이다. @EnableWebflux 를 사용한 상태에서 어노테이션을 삭제하지 않고 처리하는 방법이다. index 페이지를 보여주도록 정의한 라우터에 추가적으로 다음과 같이 작성한다. @Bean public RouterFunction resource() { ret..
Spring Webflux 기반으로 index.html 파일이 보여지도록 작업을 했다. 그 결과로 작성한 index.html 이 / 루트를 통해 라우팅되는 것을 확인을 분명히 했었다. 그런데 어느날부터 계속 index.html 이 뜨지 않게 되었다. 증상은 이러했다. 서버는 정상적으로 띄워진다 라우터 클래스에 작성한 라우팅 함수에 문제는 없다. 즉, 빌드 과정에서 문제가 없다. 크롬에서 url 접근을 시도했을 때 아무런 데이터도 먹히지 않는 html로 시작해서 html로 끝나는 페이지가 나온다. 라우팅 클래스의 문제인지 핸들러 함수에 로그를 찍고 콘솔에 로그가 찍히는지를 확인했다. 정상적으로 로그가 출력된다. 크롬의 개발자도구를 들어가서 확인을 해본 결과, 페이지는 물론이고 css까지 전부 applica..
최대한 간단하게. 단, 정석이라고는 안함. 즉, 책임 안짐 1. properties 정의 spring.r2dbc.url=r2dbc:mariadb://{domain}:{port}/{databases} spring.r2dbc.username={database username} spring.r2dbc.password={database password} mariadb 사용 기준으로 저렇게 작성한다. 평소 사용하는 jdbc와는 달리 driverClassName 을 정의하지 않는데 이래도 되는지는 모르겠다. 프로토콜은 jdbc:mariadb:// 가 아닌 r2dbc:mariadb:// 로 지정해줘야 한다. 2. repository 인터페이스 정의 public interface SampleUserRepository ..
정의 Array.prototype.groupBy = function(mapper = util.mandatory("mapper")) { let keySet = new Set(this.map(mapper)); let groupObj = {}; for(const keyItem of keySet) { groupObj[keyItem] = this.filter(item => mapper(item) == keyItem); } return groupObj; }; IE에서는 사용할 수 없도록 mandatory를 사용한 소스코드. IE는 생각조차도 하지 말것. 사용 const arr = [{ "color": "red", "gender": "female" }, { "color": "red", "gender": "female..
말 그대로 각 패스에 도달할때마다 어떤 페이지를 보여줄 것인지를 결정해주는 분기결정자 역할을 한다. App.svelte svelte-spa-router 를 불러와서 Router 엘리먼트를 사용할 수 있다. prefix는 선택사항이며 없을 경우에는 ""로 디폴트가 되는 특성인 듯 하다. 구체적으로는 더 살펴봐야하는데 계속 볼때마다 헷갈린다. 중첩 라우터 위에서 사용했던 Router 엘리먼트에 prefix 라는 프로퍼티를 하나 더 전달하면 된다. prefix를 추가하면 알아서 prefix + path 형태의 결합으로 라우팅 결과를 보여준다. 그런데 여기에서 뭔가 꼬임이 발생하는것을 확인했다. 꼬임은 아래에서 후술 router.js import Root from "./Root.svelte"; import Ma..
어렵지만 쉬운 derived readable, writable 이 1차 구독변수라면 derived 는 2차 구독변수로 보면 될 것 같다. 상위 구독변수의 변화를 감지해서 값을 알아서 새로 정의해주는 기능이라고 보면 충분할 것 같다. 예를 들어 const subsc1 = writable(""); const subsc2 = derived(subsc1, $subsc1 => { return `derived ${$subsc1}`; }); 이라고 가정할 때 subsc1.set("value01"); console.log("subsc2 value: ", get(subsc2)); subsc1 의 값을 변동한다. subsc2 에는 손을 대지 않아도 콘솔에 값을 직접 찍어보면 subsc2 value: derived valu..
개뻘짓의 결과로 끝내 깨달음을 얻었다... 아무리 스프링 웹플럭스가 반응형으로 데이터를 교환하기 위해 기존의 서블릿이나 mvc과 아예 다른 밑바닥부터 설계가 다른 프레임워크가 되었다고 하더라도 최소한 보여져야 할 웹페이지가 1개가 있는 경우에는 index.html 파일을 구성할 수가 있어야 한다. 커스터마이징을 밥먹듯이 하는 병이 있는 경우에는 필자와 같은 개뻘짓에 굉장히 많이 당황스러울 수도 있다. 일단, src/main/resources 경로 내부에 index.html와 그 구성파일들을 넣을 수는 있다. 이 때 /public /static /resources /META-INF/resources 반드시 경로명을 저 중 하나로 결정을 해야한다. @EnableWebFlux 어노테이션이 붙는 순간 커스터마이..
일단 오라클 (직접 사용해본 적이 없어 될지 안될지 모름) -- 16진수에서 10진수로 TO_NUMBER({varchar2::16진수텍스트}, {varchar2::표현식, 16진수는 X로 표현}) TO_NUMBER('F', 'XX') -- 15 TO_NUMBER('FF', 'XXX') -- 255 -- 10진수에서 16진수로 TO_CHAR({number::10진수리터럴}, {varchar2::표현식, 16진수는 X로 표현}) TO_CHAR(15, 'X') -- F TO_CHAR(15, '0X') -- 0F 마리아DB CONV({int::원본숫자리터럴}, {int::원본숫자진법}, {int::변경숫자진법}) CONV(35, 10, 36) -- 'Z' CONV(15, 10, 16) -- 'F' CONV(12..
자바 class Example { private int idx; private String username; private String password; // 아래로 내려가는 오버로딩 public Example() { this(0); } public Example(int idx) { this(idx, null); } public Example(int idx, String username) { this(idx, username, null); } public Example(int idx, String username, String password) { this.idx = idx; this.username = username; this.password = password; // 생성자 공통기능 영역 } } 씨..

발단 (노마드 코더는 사랑입니다.) polyfill을 쓰면 돌아간다? polyfill 을 쓰면 돌아간다는 저런 무식하고 우매하고 쪽팔리는 댓글러를 위해 직접 한가지를 검증해보겠다. 우선 https://polyfill.io/v3/url-builder/ 으로 들어가서 번들을 생성한다. Polyfill.io polyfill.io 전체 다 체크하고 번들을 생성했을 때 Header Overflow 로 인해 status code 503이 반환되기 때문에 전체 포함을 할 수가 없다. 일단 ES로 시작하는 시리즈들만을 체크하고 확인해보기로 한다. 내 기억이 맞다면 화살표 함수의 추가는 아마도 ES6 시절에 추가되었던걸로 기억한다. (정확한 정보 제보바람) 간단하게 페이지를 만든다. polyfill.io 로부터 스크립트..
2022년 6월 15일자로 Internet Explorer 의 서비스가 종료되었다. (지원종료는 한참 전에 종료되었다.) 그런데도 불구하고 MS는 마지막까지 기업서비스 유지를 변명으로 Edge 안에 IE모드를 기어이 내장시켜 호흡기에 이제는 아예 진통성마약으로 마취를 시키는 지경까지 이르렀다. 그래서 일어날 수 있는 향후 시나리오와 말도 안되는 투정에 기업입장에서도 선을 확실하게 그을 수 있는 나름대로의 변명거리가 필요하다. 기존 서비스가 IE 기반으로 개발되어있기 때문에 IE 기반으로 개발을 해야 한다 더이상 신규 개발이 이루어져서는 안된다. IE는 더이상 일반조건이 아닌 특수조건이 되었고 당연히 단가도 일반 단가를 받아서는 안된다. 특히나 2015년도경부터 국비지원교육에서도 IE를 기반으로 한 서비스..
현재 A 회사(실제로 A로 시작하는 회사)에 시스템 신규구축건으로 투입되었다. 그냥 말이 거창하지 SI 이다. 현재 내 회사에게 퇴사를 고지했다. 환장할 상황 01. 분명히 현장에 같이 투입되었던 이사에게 퇴사한다고 4월 마지막금요일이었던 날 이야기를 했다. 그런데 녹취고 문서고 남겨둔 증거 없이 구두로만 전달된거라 증거가 없는데 하필 이사가 중간에 잘라먹어버린 상황으로 강력히 추정되는 상황이 밝혀짐으로써 사실상 5월 말일로 퇴사를 점 찍어둔 기획이 틀어지기 시작했다. 환장할 상황 02. 퇴사를 결심하게 된 이유가 A회사가 정신상태가 글러쳐먹어서 더이상 일 못해먹겠다고 그만두고 나오려고 한 것이었다. 그런데 회사는 내가 얼마든지 사직서를 제출하면 그날로부터 한달 안에 사직서를 수리를 하거나 한달 이후부터..
6월 15일 익스플로러 강제 엣지전환이 사실이라면 엑스플랫폼 마이플랫폼 넥사크로 개같이 멸망도 이제 곧 한달도 안남게 된다
Shooting Paradigm 2 - Google Play 앱 오브젝트를 움직여 40초간 탄환과 부딛치지 않고 살아남아보세요 play.google.com 1.2.1 버전 업데이트 안내 용량 최적화 아케이드 모드의 전 패턴 대상으로 등록되지 않은 난이도 전체 신규등록 (단, 아케이드 10스테이지의 경우는 노멀 난이도 제외) GOS를 이용한 고의적 프레임드랍 클리어를 방지하기 위해 모든 SAMSUNG Galaxy 기종의 디바이스에서 실행 차단조치