본문 바로가기
반응형

IT 실무154

Uncaught Error: Error calling method on NPObject. Webview와 Native App의 연동을 위해 JavascriptInterface를 사용할때 발생할 수 있는 에러다. 1. 메서드 내에서 UI를 컨트롤 하려고 할 경우 -> runOnUIThread를 이용한다.2. 파라미터의 잘못된 사용 -> 파라미터의 형태가 맞는지, null값이 전달되진 않는지 확인한다.3. 메서드 내에서의 Exception -> 예를 들면 메서드 내에서 NullPointerException이 발생할 경우 NullPointerException이라고 보여지지 않고 제목과 같은 에러로 출력 될 수 있다. 메서드 내에서 Exception의 발생 가능성에 대해 파악해 본다. 2017. 4. 9.
jQuery Ajax에서 정상적으로 응답이 왔는데 fail 이 호출되는 경우 Your Ajax request contains the following setting:dataType: "json"The documentation states that jQuery:Evaluates the response as JSON and returns a JavaScript object. (...) The JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown.This means that if the server returns invalid JSON with a 200 OK status then jQuery fires the error function and set the te.. 2017. 4. 9.
하이브리드 앱에서의 세션관리(로그인 상태 유지) 100% 웹앱이라면 문제가 없다. 네이티브와 웹의 연동 없이 단순히 웹뷰만 호출하고 모든 걸 다 웹에서 처리 하겠다면 세션 걱정은 크게 하지 않아도 된다. 물론 앱과 달리 로그인이 자주 풀리긴 하겠지만 말이다. 하이브리드앱에서 세션이 문제가 되는 이유는 아래와 같다. 1. 세션은 IP단위로 유지되기 때문에 와이파이 사용 등 IP변경이 잦은 모바일 단말기는 세션이 자주 풀린다.2. 웹뷰 내부에선 세션이 있더라도 RestAPI호출시엔 그 세션정보가 없다. (다른 브라우저처럼 쿠키가 다르다) 그렇다면 각각 해결법은? 1. 세션이 아닌 다른 로그인 유지장치를 사용한다. 이를테면 preference나 sqlite같은 local DB. 또는 fcmKey 등2. CookieManager를 통한 쿠키 공유 1번만 할 .. 2017. 4. 2.
[MySQL] Your password does not satisfy the current policy requirements MySQL의 특정 버전 이상부터는 Password validation 옵션이 default로 들어간다. MySQL을 새로 설치하고 간단한 패스워드로 테스트를 하려고 하다 보면 이와 같은 에러가 나서 막히는 경우가 생긴다. 이럴 땐 적당히 대소문자, 영어, 특수문자를 섞어서 패스워드를 설정하면 되긴 하지만 테스트를 하는 동안 이 패스워드 설정이 성가시다면 수정 할 수도 있다. mysql> show global variables like '%vali%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | query_cache_wlo.. 2017. 1. 1.
클라우드란 무엇인가!? 클라우드 컴퓨팅의 기본적 개념 클라우드란 무엇인가? IT를 전공하거나 IT업계에 종사하는 분들이라면 다들 클라우드라는 말은 지겹도록 들어봤지만 그 개념을 적절하게 정의할 수 있는 사람은 많지 않다. 이를 주제로 포스팅을 한다는 것 자체가 그 개념과 정의가 무척이나 모호하고 광범위하기 때문이다. 하지만, 쉬운 이해를 위한 포스팅이므로 아래와 같이 쉽게 정의 해 보겠다. 네트워크 기술을 활용하여 높은 기능성·확장성을 가진 IT자원을 활용하는 컴퓨팅 방식 여전히 막연한 개념이지만 워낙 많은 범위를 포괄하는 개념이므로 이정도로 막연하게 표현할 수 밖에 없다. 그럼 이제 저 개념을 실무적으로 이해해 보자. 우리에게 가장 널리 알려진 클라우드 서비스는 어떤 것이 있을까? 업계 종사자라면 '아마존 웹서비스(AWS)!'를 외칠수도 있겠으나 더 쉽게.. 2016. 11. 21.
현재 기준으로 등록 가능한 3글자 kr도메인 afb.krafd.krahb.krahf.krajf.krajd.krajb.krakf.krapf.kraqb.kraqd.kraqf.kraqe.krard.krauf.kravb.kravd.kravf.krawb.krawf.kraxb.kraxd.krayb.kraxf.krayf.krazb.krazc.krazd.krbaf.krazf.krbfe.krbhf.krblf.krbpd.krbqa.krbqf.krbqe.krbqd.krbua.krbue.krbva.krbve.krbvf.krbxa.krbxe.krbxf.krbza.krbzd.krbze.krbzf.krcpe.krcud.krcuf.krcva.krcwe.krcxe.krcyf.krczd.krcza.krczb.krcze.krczf.krdfb.krdfe.krdka.krdpf.krdq.. 2016. 8. 19.
개발계와 운영계를 구분하여 안전하게 개발하기 작은 규모의 서비스는 운영 WAS를 직접 건들여 가며 작업을 할 수도 있다. 또는 로컬에서 테스트 하다가 새벽에 살짝 업데이트 할 수도 있다. 현재 접속된 세션만 소실될 뿐 큰 리스크는 없기 때문이다. 하지만 실시간 이용자가 어느 정도 많아지고 규모가 커지면 더 이상 그렇게 무모한 운영은 불가능하다. 이럴 땐 주로 개발계, 운영계를 구분하여 개발계에서 개발/테스트 후 형상관리를 통해 운영계에 배포하는 이중 작업이 필요하다. 이를 도와주는 관련 솔루션도 많지만 우선은 정말 간단히 구별할 수 있는 이론적인 방법을 살펴보자. 우선 작업 폴더를 ctrl+c, ctrl+v하여 복사한다. 특정한 위치에 sysdef.php(아무 이름이나 가능하다. php가 아니라면 sysdef.js, sysdef.java등)라는 파.. 2016. 7. 28.
브라우저 tab에서 notification사용하기 요즘과 같은 비동기, 실시간 웹에서는 웹에서 업데이트된 소식을 사용자에게 바로바로 전달해야 되는 경우가 많다. 예를 들어 페이스북에 새로운 알림이 있다면 사용자가 페이스북을 보고 있지 않더라도 알림이 왔다고 알려줘야 한다. 이럴때 사용 하는 방법 중 Title을 이용한 notification이 있다. 시간 관계상 바로 full source code 올림 var orgnTitle = "U And I Talk"; var count = 0; var onFocus = true; var title = document.title; function increaseNoti() { if(onFocus) return; count++; var newTitle = '(' + count + ') ' + title; docume.. 2016. 4. 5.
[Unitalk.xyz] nodejs를 이용한 랜덤채팅 프로젝트 http://unitalk.xyz/ nodejs, websocket(module), php, mysql을 이용해 만든 간단한 랜덤채팅 프로그램입니다.연습삼아 만들어본게 제일 크구요, 이런 저런 사람이랑 대화하는걸 좋아하는데 기존의 랜덤채팅이 너무 비매너, 광고, 변태들로 난무하는것 같아 깨끗하게 운영되려면 어떻게 하면 좋을까 싶어서 만들어본 실험적인 프로젝트입니다. 기존의 랜덤채팅과 다른게 있다면 성별을 선택해서 진행된다는 것입니다.본인의 성별, 원하는 상대의 성별을 선택하면 그에 맞는 상대와 연결이 됩니다. 물론 여자를 원하는 남자는 많고 남자를 원하는 여자는 적기 때문에 과부화된 쪽에선 순서를 기다려야 합니다. 이 대기열 시스템은 Queue를 통해 구현되었으며 자신이 얼마나 기다려야 하는지도 화면에 .. 2016. 1. 4.
CentOS환경에 phpMyAdmin 설치 epel Repolist 추가 # yum install epel-release# yum repolist..(생략)..epel Extra Packages for Enterprise Linux 6 - x86_64 ..(생략).. 위와 같이 epel이 확인되면 정상적으로 설치 된 것이다. phpMyAdmin 설치 # yum install phpMyAdmin# service httpd reload웹브라우저에서 http://서버주소/phpMyAdmin 으로 접속 확인 403에러가 떨어진다면 conf파일을 수정해 주어야 한다. # vi /etc/httpd/conf.d/phpMyAdmin.conf core와 setup의 접근 권한이 아래와 같이 되어 있을 것이다.Order Deny,AllowDeny from AllA.. 2016. 1. 1.
iptables 가장 간단한 사용법 하나 리눅스 서버에서 가장 흔하게 쓰이는 iptables. 명령어 종류도 많고 명령어를 사용하기도 정말 복잡하다. 하지만 이런 복잡한 명령어에 의해서 생성된 규칙들은 의외로 간단명료하게 아래 파일에 저장돼 있다. 뭔가 복잡한 새로운 규칙을 추가 하려면 iptables의 명령어를 숙지 해야 할테지만 단순히 이미 사용하던 규칙 그대로 포트 하나만 열어주는 등의 간단한 작업이라면 아래의 방법이 가장 사용하기 쉽다. iptables파일을 직접 열고 수정한 뒤 리스타트 시켜 주는것이다. #cd /etc/sysconfig/#vi iptables(iptables 내용)#service iptables restart#/etc/init.d/iptables save 2015. 12. 22.
CentOS 환경에 nodejs 설치하기 1. node 유저 생성# useradd -m node# passwd node 안전하고 원활한 관리를 위해 nodejs의 권한 자체는 별도의 아이디를 만들어서 이양하는 것이 좋다. 설치는 root아이디로 하고 나중에 권한을 변경하도록 한다. 2. nodejs, 뭘 다운 받을 것인가https://nodejs.org/en/ 에 들어가서 기본적인 릴리즈 정보들을 확인해 본다. 다운로드 전용 URL에 대한 안내도 모두 저 메인 홈페이지에서 확인할 수 있다.그냥 최신 버전을 다운받을 생각이거나 설치하고자 하는 특정 버전을 정해두었다면https://nodejs.org/dist/ 로 바로 들어간다. 모든 버전에 대한 다운로드 경로가 있다.2015년 12월 기준으로 안정버전은 v4.2.3, v5.x.x버전은 지속적으로.. 2015. 12. 22.
height 100%가 제대로 적용이 안될 때 html, body에 모두 height:100% 속성을 준다. 작은 사이즈로 열었다 큰 사이즈로 리사이즈 했을때 height가 100%로 안따라 올 경우 min-height:100% 속성을 준다. 참고 : https://csscreator.com/node/12629 2015. 12. 8.
Javascript는 Call by reference인가 Call by value인가 변수를 넘기면 call by value이고오브젝트를 넘기면 call by reference이다. 비슷한 개념으로, 변수에 오브젝트를 할당하면 변수는 그 오브젝터의 레퍼런스(C로 따지면 포인터?)를 가진다. ex)Q = new Queue();var nowQ = Q;nowQ.enqueue('values'); console.log(nowQ.getList());console.log(Q.getList()); 이렇게 하면 두 로그에서 같은 리스트가 출력된다. 즉, nowQ는 단순히 Q를 할당받는 변수였지만, 변수를 오브젝트처럼 사용하면 원본 오브젝트도 바뀌게 된다는 것이다. http://emflant.tistory.com/64 2015. 11. 21.
node js에서 mysql 함수를 동기(sync)로 사용하기 node js의 함수는 기본적으로 async하게 동작한다. 즉 순서대로 실행되길 바라는 함수를 순서대로 나열해 놨다고 해서 이게 순서대로 실행되는게 아니라는 것이다. 아래 코드를 보자 user_no = preFunction(param); afterFunction(user_no); function preFunction(param) { insertQueryExcute(query, function(error, result) { if(error) doSometing; else return result.insertId; } 위 코드를 프로그래밍한 개발자라면 preFunction이라는 함수를 통해서 반환된 insertId를 afterFunction에서 사용하고 싶었을 것이다. 하지만 위와 같은 코드를 실행시키면 a.. 2015. 10. 4.
리눅스 $PATH 추가 설정 많은 프로그램들이 설치만 하면 명령어처럼 바로 실행 가능하나 어떤 프로그램들은 자기들 폴더에 설치만 되고 매번 실행하려면 그 폴더에 찾아 들어가서 실행을 해야 한다. 자주 쓰는 프로그램일 경우 일일히 경로를 입력해 가며 사용하기가 쉽지 않다. 그럴때 PATH를 지정해 주면 명령어처럼 편하게 실행 가능하다. vi ~/.bash_profile 위 명령어를 통해 PATH를 설정할 수 있다. PATH=$PATH:$HOME/bin 위와 같은 라인을 찾아간다. 지금은 $HOME/bin만 PATH로 설정 되어 있는 상태다. 즉 해당 계정의 home/bin폴더에 있는 프로그램들만 별도의 경로 입력 없이 명령어 처럼 사용가능하게 되어 있다는 것이다. 다른 폴더를 추가하려면 아래와 같이 하면 된다. PATH=$PATH:$.. 2015. 10. 1.
MySQL 여러개의 필드를 묶어서 하나의 Primary Key로 만들기 ALTER TABLE table ADD PRIMARY KEY(field1,field2,field3); 만약 이미 키가 지정되어 있는 경우 아래와 같이 한다. ALTER TABLE table DROP PRIMARY KEY, ADD PRIMARY KEY(field1,field2,field3); 2015. 7. 19.
주간, 월간, 실시간 랭킹 구현하기 쉽게 생각하면 랭킹 구현은 어렵지 않다. 그냥 ORDER BY로 줄을 세워주면 그게 랭킹이다. 순위의 기준이 되는 값은 계속 쌓이고 그에 따라 랭킹을 출력해 주는 이런 랭킹을 '누적랭킹' 이라고 할수 있다. 하지만 이런 누적랭킹은 많이 사용되지 않는다. 많이 사용되는 랭킹은 기간별 랭킹과 실시간 랭킹이다. 1. 기간별 랭킹기간별 랭킹은 월간, 주간과 같이 특정 기간동안의 랭킹을 구현하는 것이다. 이 또한 쉽게 생각하자면 아주 쉽다. int key date ref_monthint score 위와 같은 구조의 테이블만 있으면 된다. 예를 들어 어떤 음악이 재생되고 다운받아 지는 횟수에 따라 월간 랭킹을 구현하고 싶다고 가정해 보자. key는 해당 곡의 key값이 된다. foreign key가 될 것이다. *.. 2015. 7. 19.
반응형