'내 폴더/스크랩'에 해당되는 글 88건
- 2008.01.14 PHP Framework
- 2008.01.12 날씨 정보 보여주기
- 2008.01.08 미르야의 경주 불국사 여행~
- 2008.01.06 무료로 사용이 가능한 사이트 디자인 템플릿을 공유해 주는 해외 사이트입니다
- 2007.12.16 [javascript] 심플한 트리메뉴
- 2007.12.14 애용하는 멀티 팝업 소스
- 2007.12.12 IE 전용 이미지 회전 시키기
- 2007.12.07 승진할 수 없는 이유
- 2007.12.02 MySQL UTF-8로 세팅하기 2
- 2007.12.01 넥슨 입사 문제
PHP Framework
http://framework.zend.com/
CakePHP
http://www.cakephp.org/
php.MVC
http://www.phpmvc.net/
CodeIgniter
http://codeigniter.com/
Stratos Framework
http://www.stratosframework.com/
Akelos Framework
http://www.akelos.org/
Qcodo Framework
http://qcodo.com/
Prado Framework
http://www.pradosoft.com/
evoCore
http://evocore.net/
Solar PHP
http://solarphp.com/
Picora Framework
http://livepipe.net/projects/picora/
Jelix
http://jelix.org/
날씨 정보 보여주기
날씨 정보를 보여줘야 되는 부분이랑
HTTP서비스에서 xml 데이터를 불러오는 부분을
공부하면서 찾은 정보이다.
우선 날씨 정보를 제공하는 xml를 뒤지던 중
기상청 (http://www.kma.go.kr/XML/weather/sfc_web_map.xml)
- 전국이 아닌 주요 도시의 날씨만 제공(한국)
구글 (http://www.google.co.kr/ig/api?weather=seoul)
- "seoul" 부분에 우리나라는 물론 세계 각국의 도시명을 적으면 된다
야후 (http://weather.yahooapis.com/forecastxml?p=KSXX0037)
- "KSXX0037" 부분에 세계 각국의 지역코드(?)를 적으면 된다("KSXX0037"는 한국/서울 코드다.)
- rss로 받고 싶으면 "forecastxml" => "forecastrss"로 변경해주면 된다
웨더닷컴(http://xoap.weather.com/weather/local/KSXX0037?cc=*)
- http://xoap.weather.com/weather/local/KSXX0037?cc=*&dayf=8
(8일치꺼 들고오기)
- 역시 "KSXX0037" 부분에 세계 각국의 지역코드(?)를 적으면 된다
을 찾았다.
문제는 이런 open api들이 상용 사이트 및 프로그램에 사용해도 되는가이다.
(아래는 이리저리 돌아다니면서 찾아낸 정보이다.)
기상청
- http://kldp.org/node/76834 (공식적으로 xml형태 및 특정페이지를 제공하지 않는다는 내용)
- 한마디로 상용을 위해 사용불가.
구글, 야후 등
- http://www.zdnet.co.kr/news/internet/search/0,39031339,39137718,00.htm
(구글 지도 api는 상업적/비상업적 모두 공개. 하지만 약간의 제약사항이 있다는 내용)
- http://developer.yahoo.com/weather/ (Terms of use 부분을 읽어보기 바람)
- http://blog.repl.net/index.php/google_naver_apis/2006/03/27/
(검색 api는 횟수제한이 있고 상용으로 사용하려면 회사의 허가가 필요하다는 내용)
- http://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_other&wr_id=92542&page=5
(네이버의 open api의 상용 정책에 관한 내용)
- http://channy.creation.net/blog/?p=359
(다음의 open api의 상용 사용에 대해 담당자와 상의하라는 내용)
- 한마디로 애매모호.
- 야후에서 받은 답변
안녕하세요? j021004 고객님.
클릭 한 번이면 세계가 보인다. 야후! 코리아 고객센터 날씨 담당자 입니다. 야후! 날씨의 어떠한 자료라도(이미지, 뉴스, 기타의 정보) 재배포하는 것은 엄격히 금지되어 있습니다. 오직 야후! 에서만 날씨 데이타를 사용하도록 계약되어 있습니다. 야후! 날씨에 대한 라이센스 정보나 사용허가에 대한 문의는 http://www.kweather.co.kr/(케이웨더)로 직접 문의하여 주시면 감사하겠습니다. |
웨더닷컴
- http://ggaman.com/tt/entry/Open-Source%EB%B3%B4%EB%8B%A4%EB%8A%94-Open-Service ( 자신의 링크를 나타내 주기를 원한다는 내용)
- 공짜라고 알고 있음
무료로 사용이 가능한 사이트 디자인 템플릿을 공유해 주는 해외 사이트입니다
출처 :
http://www.parkoz.com/zboard/view.php?id=my_tips&no=10570
소개 :
무료로 사용이 가능한 사이트 디자인 템플릿을 공유해 주는 해외 사이트입니다
국내의 그래픽 칠갑이나 빼곡한 리스트의 경향과 대조적으로 한가로운 분위기네요?
http://www.opensourcetemplates.org/
http://www.templateworld.com/free_templates.html
http://www.oswd.org/
http://www.free-css-templates.com/free-templates.html
http://www.templatesbox.com/
http://www.freelayouts.com/websites
http://www.ex-designz.net/template/tempcat.asp?cat_id=13
http://www.openwebdesign.org/browse.php
http://www.code-sucks.com/free-css-templates/
http://www.oswt.co.uk/browse_designs.html
http://www.solucija.com/home/css-templates/
http://www.cssfill.com/
http://www.sixshootermedia.com/free-templates/
출처 : http://www.mins01.com
애용하는 멀티 팝업 소스
---board--------
<script language='javascript'>
<!--
function popupOpen8(){
window.open('../view.php?bid=popup&bno=8','popup_view_8','top=50,left=50,width=50,height=73,resizable=0,scrollbars=no');
}
function GetCookie(name){
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while(i < clen)
{
var j = i + alen;
if(document.cookie.substring(i, j) == arg)
return getCookieVal(j)
i = document.cookie.indexOf(" ", i) + 1
if(i == 0) break
}
return null
}
function getCookieVal(offset){
var endstr = document.cookie.indexOf(";", offset)
if(endstr == -1)
endstr = document.cookie.length
return unescape(document.cookie.substring(offset, endstr))
}
function expire()
{
if(GetCookie("Notice8") != "done"){
popupOpen8();
}
}
window.attachEvent('onload', expire);
//-->
</script>
----------------
---popup--------
function closeWin()
{
function setCookie(name,value,expiredays)
{
var todayDate = new Date();
todayDate.setDate(todayDate.getDate() + expiredays);
//alert(todayDate.toGMTString());
document.cookie = name+"="+escape(value)+"; path=/; expires="+todayDate.toGMTString()+";";
//alert(document.cookie);
}
if (document.checkClose.POP<?=$_GET[no]?>.checked)
{
setCookie("POP<?=$_GET[no]?>","done",1); // 여기서 1을 3으로 늘리면 3일간 표시되지 않음.
}
self.close();
}
---------------
IE 전용 이미지 회전 시키기
IE전용 필터를 사용하지만 돌아는 간다.
<SCRIPT LANGUAGE="JavaScript">
<!--
function rotate(name, angle){
//convert angle into radians
var rad = degToRad(angle);
//calculate cos and sin of the angle
costheta = Math.cos(rad);
sintheta = Math.sin(rad);
//create object reference
var el = document.getElementById(name);
if(el) {
//apply the filter
el.style.filter = "progid:DXImageTransform.Microsoft.Matrix()";
//set up the properties
el.filters.item("DXImageTransform.Microsoft.Matrix").SizingMethod = "auto expand";
el.filters.item("DXImageTransform.Microsoft.Matrix").FilterType = "bilinear";
//apply the rotation matrix transformation
el.filters.item("DXImageTransform.Microsoft.Matrix").M11 = costheta;
el.filters.item("DXImageTransform.Microsoft.Matrix").M12 = -sintheta;
el.filters.item("DXImageTransform.Microsoft.Matrix").M21 = sintheta;
el.filters.item("DXImageTransform.Microsoft.Matrix").M22 = costheta;
}
}
var pi = Math.PI;
function degToRad(x) { return ( x/(360/(2*pi)) ); }
function radToDeg(x) { return ( x*(360/(2*pi)) ); }
//-->
</SCRIPT>
<body onload="rotate('img', parseInt('-30'));">
<img id="img" src="http://192.168.10.100/soho/photo/20071116-1004_s.photo">
승진할 수 없는 이유
승진이 너무 늦어 불만이 많던
어느 중학교 선생님이 어느 날
교장선생님에게 이렇게 따졌다.
“제가 이 자리에 몇 년이나
있었는지 아세요?
자그마치 25년이에요.”
교장선생님이 대답했다.
“25년이 아닐세.
그건 자네가 잘못 생각한 거야.
자네는 1년 동안 있었네.
그걸 25번 반복한 것뿐이야.”
- 벤 크로치(연설가) -
MySQL UTF-8로 세팅하기
MySQL UTF-8로 세팅하기
공부하자(smileemaker) 카페매니저 http://cafe.naver.com/painmaster/1158
1. etc/my.cnf (또는 my.ini) 에서 캐릭터셋 수정
[client]
#password = your_password
default-character-set=utf8
[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8
2. 환경변수를 모두 수정후 mysql 서비스 재시작
3. mysql에서 캐릭터셋 확인
# mysql
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test
Database changed
mysql> show variables like 'c%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| concurrent_insert | ON |
| connect_timeout | 5 |
+--------------------------+----------------------------+
12 rows in set (0.00 sec)
* MySql에서 데이터베이스 생성
mysql>CREATE DATABASE PAINBLOG DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
다음 네 문제는 컴퓨터로 알고리즘을 작성하여 풀 수 있는 문제입니다.
(프로그래밍 언어는 C++ 또는 C를 사용하셔야 합니다.)
네 문제 모두 단답형이므로, 풀이 과정이나 설명을 적을 필요는 없고,
답을 적고 작성한 프로그램 소스 파일을 첨부해서 보내주시면 됩니다.
또, 넥슨에서 본 문제 메일을 발송한 시점에서 만 이틀이 지나기 전에
귀하의 답이 넥슨에 도착하지 않으면 불합격이며 보내주신 소스 파일은 채용 과정에서 검토됩니다.
문제의 설명과 예는 답을 구하기에 충분하므로, 추가적인 질문은 받지 않습니다.
1번 설명
어떤 자연수 n이 있을 때, d(n)을 n의 각 자릿수 숫자들과 n 자신을 더한 숫자라고 정의하자.
예를 들어 d(91) = 9 + 1 + 91 = 101
이 때, n을 d(n)의 제네레이터(generator)라고 한다. 위의 예에서 91은 101의 제네레이터이다.
어떤 숫자들은 하나 이상의 제네레이터를 가지고 있는데, 101의 제네레이터는 91 뿐 아니라 100도 있다.
그런데 반대로, 제네레이터가 없는 숫자들도 있으며, 이런 숫자를 인도의 수학자 Kaprekar가
셀프 넘버(self-number)라 이름 붙였다.
예를 들어 1,3,5,7,9,20,31 은 셀프 넘버 들이다.
1번 문제
1 이상이고 5000 보다 작은 모든 셀프 넘버들의 합을 구하라.
1번 답 : ________
2번 설명
가로 세로의 네모 칸들로 이루어진 방에 총잡이들이 있다고 하자.
총잡이들은 가로 혹은 세로 방향으로 다른 총잡이가 보이면 총격전을 벌여 한 쪽만 살아 남는다.
칸 중에는 벽으로 막힌 곳이 있어서 총잡이들이 벽 너머로는 볼 수 없으며, 대각선 방향도 볼 수 없게 되어 있다.
■: 벽
□: 빈 칸
♂: 총잡이
에를 들어, 다음과 같은 가로 세로 네 칸 씩으로 된 방이 있다고 하면,
■■■□
□□□□
□■□□
■■■□
총잡이 세 명을 다음과 같이 배치해볼 수 있을 것이다.
■■■□
□□□♂
♂■♂□
■■■□
가로 혹은 세로 방향에서 다른 총잡이에 노출되는 총잡이는 어느 한쪽이라도 죽게 되므로,
다음과 같은 배치는 할 수 없다.
■■■□
□♂□♂
□■□□
■■■□
위와 같이 생긴 방에 최대한 많은 총잡이를 배치하는 경우, 최대 네 명까지 가능하며,
네 명을 배치하는 경우의 수는 다음과 같은 두 가지 방법이 존재한다.
■■■♂
□♂□□
♂■♂□
■■■□
■■■□
□♂□□
♂■♂□
■■■♂
또 한가지 예로, 만약 벽이 전혀 없는 가로 세로 네 칸씩으로 된 방이 있다면,
최대 네 명의 총잡이를 24 가지의 방법으로 배치할 수 있을 것이다.
2번 문제
다음과 같이 생긴 가로 세로 여덟 칸씩으로 된 방에는 최대 몇 명의 총잡이를 배치할 수 있으며,
그 경우, 몇 가지 방법으로 배치할 수 있겠는가?
□■□■□■□■
□□□□□■□□
■□■□□■□■
□□□□□□□□
□□□■□□□□
□□□□□■□■
□■□□□□□□
□□□□■□■□
2번 답 : 최대 ____ 명, ____ 가지.
3번 설명
RLE(Run Length Encoding)란, 임의의 수열을 (반복 수, 숫자)의 쌍으로 된 수열로 만드는 부호화 방법이다.
예를 들어 다음과 같은 열 개의 숫자로 된 수열이 있다고 할 때,
9, 9, 9, 5, 7, 7, 7, 7, 7, 7
RLE를 이용하여 다음과 같이 여섯 개의 숫자로 부호화할 수 있다.
(3,9), (1,5), (6,7)
해석하면, 9가 세 개 있고, 그 다음에 5가 한 개, 그 다음에 7이 여섯 개 나오는 수열이라는 뜻이다.
이 때, (원래 수열의 갯수) / (부호화 수열의 갯수) 를 압축률이라 하며, 위의 경우에서 압축률은 10 / 6 = 1.666 이다.
이렇게 부호화된 값은 쉽게 원래 값으로 복원할 수 있음을 알 수 있을 것이다.
그런데, 원래 값으로 되돌리는 것을 보장하지 않는 RLE 방법을 '손실 RLE'라 하자.
이 경우는 복원했을 때 오차가 생기게 되는데, 원래 수열과의 RMSE (Root Mean Square Error) 를 오차로서 정의한다.
크기가 n인 A 수열과 B 수열 사이의 RMSE는 다음과 같이 계산한다
RMSE(A,B) = sqrt( ( (A1-B1)^2 + (A2-B2)^2 + ... + (An-Bn)^2 ) / n)
'손실 RLE' 방법은 다양하게 존재하므로, 같은 수열이라도 다양하게 '손실 RLE' 부호화 할 수 있는데,
예를 들어, 위와 같은 수열의 경우
(10,9) 혹은, (10, 7) 혹은 (3, 9), (7, 7) 등으로 '손실 RLE' 부호화할 수 있을 것이다.
만약 (10,9) 으로 부호화했다면, 압축률은 5 이며, RMSE는 2 이다.
(10,7) 로 부호화했다면, 압축률은 5 이며, RMSE는 1.26 이다.
(3,9), (7,7) 로 부호화했다면, 압축률은 2.5 이며, RMSE는 0.63 이다.
3번 문제
다음과 같이 128개의 정수로 된 수열이 있을 때,
49, 49, 50, 52, 49, 47, 47, 46, 44, 42, 42, 38, 38, 38, 36, 34,
33, 33, 33, 32, 34, 38, 42, 41, 42, 42, 40, 41, 40, 38, 38, 37,
37, 39, 41, 40, 40, 40, 40, 42, 45, 47, 47, 46, 46, 46, 47, 47,
47, 47, 46, 44, 43, 39, 36, 34, 34, 32, 30, 29, 30, 31, 31, 31,
30, 28, 25, 23, 24, 22, 22, 25, 25, 27, 31, 33, 35, 37, 38, 39,
39, 40, 40, 41, 40, 40, 40, 40, 39, 38, 37, 35, 35, 34, 33, 32,
31, 30, 30, 29, 29, 28, 27, 27, 28, 27, 25, 26, 0, 0, 90, 90,
90, 90, 90, 91, 90, 88, 87, 84, 80, 78, 83, 89, 91, 90, 89, 92
오차를 가능한 한, 작게 억제하면서 32개의 정수(압축률 4)로 압축하는
자신만의 '손실 RLE' 알고리듬을 만들고, 그 알고리듬에 의한 부호화 결과 수열과 RMSE를 적어라.
(RMSE 가 1.8 미만이면 정답으로 간주하며, RMSE가 1.6보다 작을 수록 가산점 있음.)
주의; 답은 정확히 32개의 정수로 나와야 하며 32개보다 적거나 많으면 오답으로 처리 됩니다.
오답 예 1)
( 8, 49), ( 3, 44), ( 5, 38), ( 5, 33), ( 1, 38), ( 8, 42), ( 6, 38), ( 4, 40),
( 8, 45), ( 4, 47), ( 1, 43), ( 1, 39), ( 3, 36), ( 2, 32), ( 7, 29), ( 3, 25),
( 3, 22), ( 2, 25), ( 2, 31), ( 2, 35), ( 5, 38), ( 7, 41), ( 3, 37), ( 3, 34),
( 5, 31), ( 7, 28), ( 2, 0 ), ( 9, 90), ( 1, 84), ( 2, 80), ( 1, 83), ( 5, 89)
-> 64개의 정수로 오답
오답 예 2)
(8, 47), (7, 38), (6, 33), (8, 42), (11, 40), (14, 47), (12, 31), (8, 24)
(20, 39), (8,30), (6, 26), (2, 0), (9, 90), (1, 84), (8, 83)
-> 30개의 정수로 오답
3번 답
(__, __), (__, __), (__, __), (__, __), (__, __), (__, __), (__, __), (__, __),
(__, __), (__, __), (__, __), (__, __), (__, __), (__, __), (__, __), (__, __)
RMSE = ____
4번 설명
다음과 같은 배열(array)이 있다고 가정할 때
A = { 30, 1, 18, 2, 5, 10, 15, 9, 5, 25, 5 }
B = { 2, 4, 11, 5, 24, 18, 8, 4, 13, 18 }
:*: 는
"A 배열과 B 배열에 동시에 존재하는 수의 갯수를 구하는 연산" 이고
|*| 는
"A 배열과 B 배열에 동시에 존재하는 수의 집합(set)의 크기를 구하는 연산"이라고 정의하면
A :*: B = 9 이고 ( A' = { 18, 2, 5, 5, 5 }, B' = { 2, 5, 18, 18 } )
A |*| B = 3 이다. ( { 2, 5, 18 } )
4번 문제
첨부된 Problem4Data.exe를 실행하면 work folder에 array1.dat, array2.dat 파일이
생성되며 각 파일의 크기는 4GByte 이다. ( 실행 전 디스크 용량 체크 필요 )
각 파일은 64 bit unsigned integer 값이 Little Endian 형식으로 차례로 기록되어
있으며 해당 array 내용은 다음과 같다.
array1.dat =
{
0b9cba234dfa382b, 39a3a0d4d852f190, b9327f793917ff50, 1616a4aabd698224
...
fa042ea941e23e5f, 3b822f8e29debd79, 10c3149ac586d931, ff7010cd11748990
}
array2.dat =
{
c801c1d4fa7aa667, 354950b8ddf236d5, b2cd486f07bf5480, 87bd78f1a50ce1e8
...
751cb8fad5eb894e, b0e9830fdf5b86d4, fc0a9158f62abfc6, 4f178f9413158f9c
}
array1 = A, array2 = B 라고 했을 때
A :*: B 값과
A |*| B 값을 구하여라.
4번 답 : A :*: B 값 __________ , A |*| B 값 __________