목록전체 글 (389)
만족
ScrollView를 사용해서 스크롤을 구현하고 스크롤의 시작지점이나 끝지점에 hit했을 때, 저런 물결무늬가 나오는데 UI구성에 따라서 저게 상당히 흉해 보일 때가 있다. 이걸 뭐라고 불러야 하는지도 모르겠어서 검색하기도 꽤 난감했었는데 이 effect는 overScroll 할 때 발생한다고 한다. overScroll은 눈치챘겠지만, 끝이나 시작지점에 닿았음에도 같은 방향으로 계속해서 스크롤을 시도할 때를 말한다. 단순히 ScrollView의 옵션에 overScroll= "never" 하면 사라진다.
일단, fragmentTransaction단에서 커밋조차 실패한 경우에는 논외로 한다. xml에서 인플레이션했던, transaction으로 commit했던 간에, getFragmentManager().findFragmentById() 혹은 getFragmentManager().findFragmentByTag()를 분명 일치하게 입력했는데도 null을 return 하는 경우가 있다. Fragment코드를 생성할 때, Fragment클래스를 auto import하면 (alt+enter를 이용한 경우도 마찬가지) import android.support.v4.app.Fragment; 가 자동으로 import된다. 그런데, getFragmentManager().findFragmentById() 는 (getFra..
사이퍼즈 서포터는 다음 정보를 수집합니다. 1. 오류 발생 시 오류 정보(익명)Firebase Crashlytics를 이용하여 자동으로 수집됩니다.해당 정보는 익명으로 수집됩니다. 2. 사용 정보(익명)Firebase Analytics를 이용하여 자동으로 수집됩니다.해당 정보는 익명으로 수집됩니다. 3. 광고 분석Google Admob/Google Adsense 를 이용하여 자동으로 수집됩니다.해당 정보는 익명으로 수집됩니다. 4. 코멘트/문의사항 등록 시 작성자의 IP 및 현재 머무르는 페이지 정보해당 정보는 악성 유저 차단 및 고객 지원에 사용됩니다. 이 외의 정보는 수집하지 않으며, 용도 외에 사용하지 않습니다.
()=> {...} 과 function foo(){...} 은 단순히 텍스트의 길이의 차이만 있는 것은 아니다. 해당 함수를 instance 로써 사용할 때 차이점이 드러나게 된다. this pointer의 가리키는 위치가 서로 다른데 ()=>{...} 에서 this는 자신이 속한 instance를 pointing한다.그러나 function foo(){...} 에서는 자신이 속한 object를 pointing한다 function foo1(){ this.val= 1; return { val: 2, func: function (){ console.log(this.val); } };} function foo2(){ this.val= 1; return{ val: 2, func: ()=>{ console.log(..
O 표기법 Big O 표기법이라고 읽는다. 알고리즘의 Time Complexity를 분석하는 데 가장 많이 쓰이는 표기법이다. O(g(n)) = { f(n) | 충분히 큰 n에 관해서 f(n)
상기 앱에서는 로그인을 통해서만 서비스를 이용할 수 있습니다. 로그인은 '구글'社에서 제공하는 파이어베이스를 이용하여 이루어집니다. 서비스 운영자의 경우 가입자로부터 '이메일 주소'를 제공받습니다. 본 정보의 수집 목적은, 사용자 개개인을 판별함으로써 개인별 통계나 오답노트와 같은 맞춤형 서비스를 제공하기 위함입니다. 제 3자에게 개인정보를 제공하거나, 본 목적 외에 사용되지 않습니다. 개인정보 보관기간은 해당 서비스 종료일까지이며, 회원의 요청시 즉각 삭제를 원칙으로 합니다.
안녕하세요. 제 두 번째 Android App Project, 사이퍼즈 서포터를 소개합니다. 네오플에서 서비스하는 게임인 사이퍼즈를 플레이하는데 필요한 정보들을 한 곳에 모아놓은 앱입니다. 공식 앱으로 사이퍼즈 백과사전이 이미 마켓에 올라가 있고 한동안 저도 그것을 사용했지만인터페이스적인 불편함과 제공되는 정보의 양이 너무 적다고 생각하여 직접 만들게 되었습니다. 많은 유용한 정보들을 사이퍼즈 서포터에서 손쉽게 제공받을 수 있습니다. 첫 페이지에서는 홈페이지의 공지사항, 이벤트, 매거진, 오늘의 사이퍼즈, 웹툰 등을 한눈에 볼 수 있습니다. 아무래도 가장 유저들이 필요로 하는 기능은 랭킹검색 기능이겠지요. 실제로 마켓에서 랭킹 정보만 볼 수 있게 하는 앱이 업로드 되어 있는데, 상당한 인기를 끌고 있습니..
python manage.py runserver [포트번호] 대신에 python manage.py runserver --noreload 를 사용하면 정상작동한다. python 2.x버전에서는 관찰되지 않고 3.x버전에서 나오는 문제라고 한다...
먼저 파이썬을 설치한다. https://www.python.org/downloads/windows/ 여기에서 본인의 컴퓨터 사양에 맞는 설치파일을 사용하여 파이썬을 설치한다. 본인은 Download Windows x86-64 executable installer 을 사용하여 설치하였다. (3.6버전) 파이썬은 커맨드라인을 통한 조작이 빈번하기 때문에 환경 변수를 반드시 설정해주는 것이 좋다. 환경변수의 Path부분에서 새로 만들기 버튼을 눌러서 [설치경로]\Programs\Python\Python36\Scripts\와 [설치경로]\Programs\Python\Python36\을 추가한다. python 설치 시에 지정한 폴더 경로를 [설치경로]에 대입하면 된다. Window PowerShell로 돌아와서,..
바닐라 자바스크립트로도 쿠키를 사용할 수는 있지만, JQuery를 이용하면 아주 간단하게 쿠키를 관리할 수 있다. 쿠키는 특정 정보를 서버에 저장하지 않고 대신에 사용자의 로컬에 저장하는 방법을 말한다. 먼저 Cookie 관련 메소드를 사용하기 위해서는 별도의 jquery-cookie.js 를 임포트 해야 한다. https://github.com/carhartl/jquery-cookie 위의 링크에서 다운로드 받고, 쿠키를 사용할 html에서 로 임포트한다. 먼저 쿠키 생성은 $.cookie(key, value)의 형태로 한다. 생성할 때, 유효기간이나 보안방법 등을 추가로 설정할 수도 있지만, 여기에서는 다루지 않는다. 생성한 쿠키값을 가져오려면 $.cookie(key) 처럼 key를 기반으로 valu..
외부 Library없이 사용하기 // get JSON with using pure javascript var xhr= new XMLHttpRequest(); var paramVal= "paramVal"; var target= "URL"; xhr.open("GET", target+ "?paramName="+ paramVal); xhr.send(); xhr.onreadystatechange= function(){ if(xhr.readyState=== XMLHttpRequest.DONE){ if(xhr.status== 200){ let loadedJSON= JSON.parse(xhr.responseText); $("#content").html("resultCode: "+ loadedJSON.resultCode..
이클립스를 더블클릭해 실행하거나 DOS창에서 실행할 때아무런 에러 창도 없이 로딩화면만 잠깐 나왔다가 사라지는 문제가 발생하였다. 분명 본인은 전날까지 이클립스를 잘 쓰다가 끄고 다음날 켰더니 이런 어이없는 사태가 발생하였다... 두시간 동안 삽질한 끝에 겨우 해결법을 찾았다. 환경 변수 편집으로 들어가서 Path변수의 편집을 눌러 “C:\ProgramData\Oracle\Java\javapath” 을 삭제한 뒤 이클립스를 실행시키면 정상적으로 실행된다. 참조: https://www.quora.com/Why-cant-I-install-Eclipse-IDE-in-Windows-10
https://github.com/anjlab/android-inapp-billing-v3 이곳에서 시키는 대로만 하면 된다. 코드 20줄 내로 인앱 결제 구현을 간단하게 할 수 있다. 사전 준비작업 같은 경우에도 Google Billing Library나 aidl같은거 설치 안하고도 gradle에 한줄만 적어주면 되니Google Android Document보다 훨씬 쉽게 구현 가능하다. 번역이 필요한 경우, https://github.com/NamGungGeon/android-inapp-billing-v3-guide 를 참조하면 된다.(버전이 업데이트되었을 경우 반영이 늦거나 되어있지 않을 수 있다) 가이드 번역 내용해당 컨텐츠가 이상하게 보일 경우 https://github.com/NamGungGe..
컴퓨터에 관심과 이해가 높은 사람이라면 노트북이나 데스크탑을 구매할 때 크게 어려움을 느끼지 않지만 그렇지 않은 사람이라면 매우 힘든 일일 것이다. (전공자라고 해도, 컴퓨터학과에서는 컴퓨터의 원리, 본질을 배우는 것이지 상품을 배우는 것이 아니기 때문에 모르다고 해도 이상하지 않다) 읽기 귀찮다면 두꺼운 글씨와 밑줄을 중심으로 읽으면 된다. 크게 살펴보아야 할 것은 다음과 같다. 1. CPU 2. GPU(VGA) 3. RAM 4. Storage 5. Brand 6. Size/Weight 1. CPU CPU는 사람으로 비유하면 두뇌와 같다. 컴퓨터는 0과 1로 이루어져 있으며, 모든 것은 연산(operation)을 통해 이루어지는데, 그 연산을 담당하는 장치가 CPU이다. CPU를 생산하는 회사는 인텔(..
Early Systems 메모리의 관점에서, 과거의 machine들은 사용자에게 abstraction을 제공하지 못했다. OS는 단순히 메모리의 0번지에 위치하는 library와 같은 routine의 집합체일 뿐이었다. 하나의 machine에서 하나의 program만이 실행가능했으며, 그 당시의 OS는 해야 할 일이 별로 없으니 당연스럽게도 매우 단순했었다. Multiprocessing and Time Sharing 당연히 사용자들은 한개의 machine에서도 한개만이 아닌 여러 가지 작업들을 동시에 처리하길 원했다. 그래서 Time Sharing이라는 개념이 이 때 생겨나게 되었다.(Time Sharing= 어떤 Computer Resource들을 여러 사용자들이나 프로세스들 간에 공유하는 것) 이 T..
우리 주변의 컴퓨터들을 보더라도, 대부분의 컴퓨터들은 듀얼코어 이상의 CPU를 사용하고 있다. 게다가, 요즘에는 일반 데스크탑 용도의 컴퓨터에도 6코어, 8코어 CPU를 사용하고 있으니,단순히 Single core에 대한 scheduling 뿐만 아니라 Multi core에 대한 Scheduling도 교려해야 한다. 먼저 Single Core 환경에 대해 간단히 살펴보면 (CPU - Cache) ------Memory 형태로 되어 있다 Cache는 Main Memory보다 용량은 작지만, 주요 data들을 모아 둔 작고 빠른 임시저장장치이다. 이 Cache를 이용함으로써 CPU와 Memory간의 다소 느린 속도를 보완해줄 수 있다. Cache는 다음과 같은 Idea에서 탄생하였다. 1. temporal ..
Overview 각각의 Level을 갖는 여러 개의 Queue가 존재하며, 새로운 Job이 도착하면 이 Queue 안에서 특정 규칙에 따라 우선순위가 변하면서 여러 가지 Job들 중에 하나를 선정해 실행하는 Scheduling 방법론이다. 아래는 기본적 특징이다. 여러 개의 Queue를 가지며, 각각의 Queue는 Priority를 가진다. 여러 개의 작업들 중, 어떤 작업을 선정하여 실행할 것인지를 결정하기 위해 Priority를 기준으로 사용한다. Job의 Priority는 계속해서 변하며, 그 작업이 CPU를 얼마나 점유하는지를 기반으로 결정된다.(오래 점유할수록 Priority는 밀려난다) Basic Rule 위와 같은 특성으로 보았을 때 우리는 기본적 규칙 몇 가지를 발견할 수 있다. 1. A의..
Modern Scheduling에 대해 알아보기 위해 몇 가지 사전 가정을 해보자. (실제로 그렇지 않다 하더라도) 1. 각각의 Job들은 모두 같은 시간동안 동작한다. 2. 모든 Job들은 같은 시간에 도착한다 3. 모든 Job들은 작업 시간동안 전부 CPU를 사용한다 4. 모든 Job들의 Running-Time은 알려져 있다. Scheduling Metrics 어떤 Scheduling 방법의 효율성을 측정하기 위한 몇 가지 지표가 있는데, 자주 사용되는 두 가지의 지표를 소개하겠다. 1. Turnaround Time Job Complete Time- arrived time in system으로 정의된다. Job이 System에 도착하고 나서 끝날 때 까지 얼마만큼의 시간이 지났는지를 나타내는 지표이다..
왜 Limited 되어야 하는가? Limited되지 않는다면, OS와 Program은 동등한 계층(hierarchy)를 갖는다. 따라서 OS는 Program을 감시하거나 동작을 제어할 수 없다. 만약 Program이 무한히 돌고 있다면(intended하든, unintended하든지간에), OS는 주도권을 갖을 수 없으며 멈추는 방법은 오로지 restart하나 뿐일 것이다. 또한 접근하지 않아야 할 영역에도 무차별적으로 접근하여 Process간 Protection이 전혀 존재하지 않는다. 따라서 OS가 다른 모든 process보다 높은 곳에서 process들을 관리하는 최상위 계층에 존재해서 이들을 제어할 수 있어야 한다. Limited Direct Execution Hardware는 OS에게 두 가지 e..